aws-sdk-workspacesweb 1.5.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6021725633ca1ae7c1dc0358fe31b6a965eaec819fdf053a0d83bc9c48133b5d
4
- data.tar.gz: a799380337e166bf117ae751848eca7539f78df05376c663a20d5f5b1a1e294e
3
+ metadata.gz: 4fcf86aaeffa27b89e493f5e009e7cbdbf5e1e5041f4ccedf216901877bffd6a
4
+ data.tar.gz: 5e9df216e1f1466c1876641fc68a1569167d83a08e83efb37554a9c5897b3180
5
5
  SHA512:
6
- metadata.gz: 7085df3083c3c0fd45626d4e6c8a5920fdb151448405812b166d61694abec15638875d89c983e285135bf8237c482d1c5de0ca99131108015df1be43f71e57c8
7
- data.tar.gz: f57117619ab604960798114f78e8b0f86b4e82e33a66950d95e63f07d94bb27952fbcc044e6c21ecceabe14121a56df44030fbee30638105f21dc53469e1988d
6
+ metadata.gz: ed214ad034e1e1452363d500abcf03df106babc390f116246eed022e66e020e75153d4a1c18e57be51dd5f375f1eeb01aa0525914feab62df6627279c34f24cd
7
+ data.tar.gz: 482e4adef697d70534a901ea05fd2d513c7a1a727137ecc94caecbb470f92d8f83a3577506e65b658cd0c96468e5f3aca118752e578a51b65ed3acabc7d6be6b
data/CHANGELOG.md CHANGED
@@ -1,6 +1,16 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.7.0 (2023-01-09)
5
+ ------------------
6
+
7
+ * Feature - This release adds support for a new portal authentication type: AWS IAM Identity Center (successor to AWS Single Sign-On).
8
+
9
+ 1.6.0 (2022-10-25)
10
+ ------------------
11
+
12
+ * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
13
+
4
14
  1.5.0 (2022-10-19)
5
15
  ------------------
6
16
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.5.0
1
+ 1.7.0
@@ -30,7 +30,7 @@ require 'aws-sdk-core/plugins/http_checksum.rb'
30
30
  require 'aws-sdk-core/plugins/checksum_algorithm.rb'
31
31
  require 'aws-sdk-core/plugins/defaults_mode.rb'
32
32
  require 'aws-sdk-core/plugins/recursion_detection.rb'
33
- require 'aws-sdk-core/plugins/signature_v4.rb'
33
+ require 'aws-sdk-core/plugins/sign.rb'
34
34
  require 'aws-sdk-core/plugins/protocols/rest_json.rb'
35
35
 
36
36
  Aws::Plugins::GlobalConfiguration.add_identifier(:workspacesweb)
@@ -79,8 +79,9 @@ module Aws::WorkSpacesWeb
79
79
  add_plugin(Aws::Plugins::ChecksumAlgorithm)
80
80
  add_plugin(Aws::Plugins::DefaultsMode)
81
81
  add_plugin(Aws::Plugins::RecursionDetection)
82
- add_plugin(Aws::Plugins::SignatureV4)
82
+ add_plugin(Aws::Plugins::Sign)
83
83
  add_plugin(Aws::Plugins::Protocols::RestJson)
84
+ add_plugin(Aws::WorkSpacesWeb::Plugins::Endpoints)
84
85
 
85
86
  # @overload initialize(options)
86
87
  # @param [Hash] options
@@ -287,6 +288,19 @@ module Aws::WorkSpacesWeb
287
288
  # ** Please note ** When response stubbing is enabled, no HTTP
288
289
  # requests are made, and retries are disabled.
289
290
  #
291
+ # @option options [Aws::TokenProvider] :token_provider
292
+ # A Bearer Token Provider. This can be an instance of any one of the
293
+ # following classes:
294
+ #
295
+ # * `Aws::StaticTokenProvider` - Used for configuring static, non-refreshing
296
+ # tokens.
297
+ #
298
+ # * `Aws::SSOTokenProvider` - Used for loading tokens from AWS SSO using an
299
+ # access token generated from `aws login`.
300
+ #
301
+ # When `:token_provider` is not configured directly, the `Aws::TokenProviderChain`
302
+ # will be used to search for tokens configured for your profile in shared configuration files.
303
+ #
290
304
  # @option options [Boolean] :use_dualstack_endpoint
291
305
  # When set to `true`, dualstack enabled endpoints (with `.aws` TLD)
292
306
  # will be used if available.
@@ -300,6 +314,9 @@ module Aws::WorkSpacesWeb
300
314
  # When `true`, request parameters are validated before
301
315
  # sending the request.
302
316
  #
317
+ # @option options [Aws::WorkSpacesWeb::EndpointProvider] :endpoint_provider
318
+ # The endpoint provider used to resolve endpoints. Any object that responds to `#resolve_endpoint(parameters)` where `parameters` is a Struct similar to `Aws::WorkSpacesWeb::EndpointParameters`
319
+ #
303
320
  # @option options [URI::HTTP,String] :http_proxy A proxy to send
304
321
  # requests through. Formatted like 'http://proxy.com:123'.
305
322
  #
@@ -775,6 +792,23 @@ module Aws::WorkSpacesWeb
775
792
  # @option params [Hash<String,String>] :additional_encryption_context
776
793
  # The additional encryption context of the portal.
777
794
  #
795
+ # @option params [String] :authentication_type
796
+ # The type of authentication integration points used when signing into
797
+ # the web portal. Defaults to `Standard`.
798
+ #
799
+ # `Standard` web portals are authenticated directly through your
800
+ # identity provider. You need to call `CreateIdentityProvider` to
801
+ # integrate your identity provider with your web portal. User and group
802
+ # access to your web portal is controlled through your identity
803
+ # provider.
804
+ #
805
+ # `IAM_Identity_Center` web portals are authenticated through AWS IAM
806
+ # Identity Center (successor to AWS Single Sign-On). They provide
807
+ # additional features, such as IdP-initiated authentication. Identity
808
+ # sources (including external identity provider integration), plus user
809
+ # and group access to your web portal, can be configured in the IAM
810
+ # Identity Center.
811
+ #
778
812
  # @option params [String] :client_token
779
813
  # A unique, case-sensitive identifier that you provide to ensure the
780
814
  # idempotency of the request. Idempotency ensures that an API request
@@ -809,6 +843,7 @@ module Aws::WorkSpacesWeb
809
843
  # additional_encryption_context: {
810
844
  # "StringType" => "StringType",
811
845
  # },
846
+ # authentication_type: "Standard", # accepts Standard, IAM_Identity_Center
812
847
  # client_token: "ClientToken",
813
848
  # customer_managed_key: "keyArn",
814
849
  # display_name: "DisplayName",
@@ -1409,6 +1444,7 @@ module Aws::WorkSpacesWeb
1409
1444
  #
1410
1445
  # @example Response structure
1411
1446
  #
1447
+ # resp.portal.authentication_type #=> String, one of "Standard", "IAM_Identity_Center"
1412
1448
  # resp.portal.browser_settings_arn #=> String
1413
1449
  # resp.portal.browser_type #=> String, one of "Chrome"
1414
1450
  # resp.portal.creation_date #=> Time
@@ -1747,6 +1783,7 @@ module Aws::WorkSpacesWeb
1747
1783
  #
1748
1784
  # resp.next_token #=> String
1749
1785
  # resp.portals #=> Array
1786
+ # resp.portals[0].authentication_type #=> String, one of "Standard", "IAM_Identity_Center"
1750
1787
  # resp.portals[0].browser_settings_arn #=> String
1751
1788
  # resp.portals[0].browser_type #=> String, one of "Chrome"
1752
1789
  # resp.portals[0].creation_date #=> Time
@@ -2277,6 +2314,23 @@ module Aws::WorkSpacesWeb
2277
2314
 
2278
2315
  # Updates a web portal.
2279
2316
  #
2317
+ # @option params [String] :authentication_type
2318
+ # The type of authentication integration points used when signing into
2319
+ # the web portal. Defaults to `Standard`.
2320
+ #
2321
+ # `Standard` web portals are authenticated directly through your
2322
+ # identity provider. You need to call `CreateIdentityProvider` to
2323
+ # integrate your identity provider with your web portal. User and group
2324
+ # access to your web portal is controlled through your identity
2325
+ # provider.
2326
+ #
2327
+ # `IAM_Identity_Center` web portals are authenticated through AWS IAM
2328
+ # Identity Center (successor to AWS Single Sign-On). They provide
2329
+ # additional features, such as IdP-initiated authentication. Identity
2330
+ # sources (including external identity provider integration), plus user
2331
+ # and group access to your web portal, can be configured in the IAM
2332
+ # Identity Center.
2333
+ #
2280
2334
  # @option params [String] :display_name
2281
2335
  # The name of the web portal. This is not visible to users who log into
2282
2336
  # the web portal.
@@ -2291,12 +2345,14 @@ module Aws::WorkSpacesWeb
2291
2345
  # @example Request syntax with placeholder values
2292
2346
  #
2293
2347
  # resp = client.update_portal({
2348
+ # authentication_type: "Standard", # accepts Standard, IAM_Identity_Center
2294
2349
  # display_name: "DisplayName",
2295
2350
  # portal_arn: "ARN", # required
2296
2351
  # })
2297
2352
  #
2298
2353
  # @example Response structure
2299
2354
  #
2355
+ # resp.portal.authentication_type #=> String, one of "Standard", "IAM_Identity_Center"
2300
2356
  # resp.portal.browser_settings_arn #=> String
2301
2357
  # resp.portal.browser_type #=> String, one of "Chrome"
2302
2358
  # resp.portal.creation_date #=> Time
@@ -2518,7 +2574,7 @@ module Aws::WorkSpacesWeb
2518
2574
  params: params,
2519
2575
  config: config)
2520
2576
  context[:gem_name] = 'aws-sdk-workspacesweb'
2521
- context[:gem_version] = '1.5.0'
2577
+ context[:gem_version] = '1.7.0'
2522
2578
  Seahorse::Client::Request.new(handlers, context)
2523
2579
  end
2524
2580
 
@@ -26,6 +26,7 @@ module Aws::WorkSpacesWeb
26
26
  AssociateUserAccessLoggingSettingsResponse = Shapes::StructureShape.new(name: 'AssociateUserAccessLoggingSettingsResponse')
27
27
  AssociateUserSettingsRequest = Shapes::StructureShape.new(name: 'AssociateUserSettingsRequest')
28
28
  AssociateUserSettingsResponse = Shapes::StructureShape.new(name: 'AssociateUserSettingsResponse')
29
+ AuthenticationType = Shapes::StringShape.new(name: 'AuthenticationType')
29
30
  BrowserPolicy = Shapes::StringShape.new(name: 'BrowserPolicy')
30
31
  BrowserSettings = Shapes::StructureShape.new(name: 'BrowserSettings')
31
32
  BrowserSettingsList = Shapes::ListShape.new(name: 'BrowserSettingsList')
@@ -310,6 +311,7 @@ module Aws::WorkSpacesWeb
310
311
  CreateNetworkSettingsResponse.struct_class = Types::CreateNetworkSettingsResponse
311
312
 
312
313
  CreatePortalRequest.add_member(:additional_encryption_context, Shapes::ShapeRef.new(shape: EncryptionContextMap, location_name: "additionalEncryptionContext"))
314
+ CreatePortalRequest.add_member(:authentication_type, Shapes::ShapeRef.new(shape: AuthenticationType, location_name: "authenticationType"))
313
315
  CreatePortalRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: ClientToken, location_name: "clientToken", metadata: {"idempotencyToken"=>true}))
314
316
  CreatePortalRequest.add_member(:customer_managed_key, Shapes::ShapeRef.new(shape: keyArn, location_name: "customerManagedKey"))
315
317
  CreatePortalRequest.add_member(:display_name, Shapes::ShapeRef.new(shape: DisplayName, location_name: "displayName"))
@@ -576,6 +578,7 @@ module Aws::WorkSpacesWeb
576
578
  NetworkSettingsSummary.add_member(:vpc_id, Shapes::ShapeRef.new(shape: VpcId, location_name: "vpcId"))
577
579
  NetworkSettingsSummary.struct_class = Types::NetworkSettingsSummary
578
580
 
581
+ Portal.add_member(:authentication_type, Shapes::ShapeRef.new(shape: AuthenticationType, location_name: "authenticationType"))
579
582
  Portal.add_member(:browser_settings_arn, Shapes::ShapeRef.new(shape: ARN, location_name: "browserSettingsArn"))
580
583
  Portal.add_member(:browser_type, Shapes::ShapeRef.new(shape: BrowserType, location_name: "browserType"))
581
584
  Portal.add_member(:creation_date, Shapes::ShapeRef.new(shape: Timestamp, location_name: "creationDate"))
@@ -593,6 +596,7 @@ module Aws::WorkSpacesWeb
593
596
 
594
597
  PortalList.member = Shapes::ShapeRef.new(shape: PortalSummary)
595
598
 
599
+ PortalSummary.add_member(:authentication_type, Shapes::ShapeRef.new(shape: AuthenticationType, location_name: "authenticationType"))
596
600
  PortalSummary.add_member(:browser_settings_arn, Shapes::ShapeRef.new(shape: ARN, location_name: "browserSettingsArn"))
597
601
  PortalSummary.add_member(:browser_type, Shapes::ShapeRef.new(shape: BrowserType, location_name: "browserType"))
598
602
  PortalSummary.add_member(:creation_date, Shapes::ShapeRef.new(shape: Timestamp, location_name: "creationDate"))
@@ -691,6 +695,7 @@ module Aws::WorkSpacesWeb
691
695
  UpdateNetworkSettingsResponse.add_member(:network_settings, Shapes::ShapeRef.new(shape: NetworkSettings, required: true, location_name: "networkSettings"))
692
696
  UpdateNetworkSettingsResponse.struct_class = Types::UpdateNetworkSettingsResponse
693
697
 
698
+ UpdatePortalRequest.add_member(:authentication_type, Shapes::ShapeRef.new(shape: AuthenticationType, location_name: "authenticationType"))
694
699
  UpdatePortalRequest.add_member(:display_name, Shapes::ShapeRef.new(shape: DisplayName, location_name: "displayName"))
695
700
  UpdatePortalRequest.add_member(:portal_arn, Shapes::ShapeRef.new(shape: ARN, required: true, location: "uri", location_name: "portalArn"))
696
701
  UpdatePortalRequest.struct_class = Types::UpdatePortalRequest
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ # WARNING ABOUT GENERATED CODE
4
+ #
5
+ # This file is generated. See the contributing guide for more information:
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
7
+ #
8
+ # WARNING ABOUT GENERATED CODE
9
+
10
+ module Aws::WorkSpacesWeb
11
+ # Endpoint parameters used to influence endpoints per request.
12
+ #
13
+ # @!attribute region
14
+ # The AWS region used to dispatch the request.
15
+ #
16
+ # @return [String]
17
+ #
18
+ # @!attribute use_dual_stack
19
+ # When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
20
+ #
21
+ # @return [Boolean]
22
+ #
23
+ # @!attribute use_fips
24
+ # When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.
25
+ #
26
+ # @return [Boolean]
27
+ #
28
+ # @!attribute endpoint
29
+ # Override the endpoint used to send this request
30
+ #
31
+ # @return [String]
32
+ #
33
+ EndpointParameters = Struct.new(
34
+ :region,
35
+ :use_dual_stack,
36
+ :use_fips,
37
+ :endpoint,
38
+ ) do
39
+ include Aws::Structure
40
+
41
+ # @api private
42
+ class << self
43
+ PARAM_MAP = {
44
+ 'Region' => :region,
45
+ 'UseDualStack' => :use_dual_stack,
46
+ 'UseFIPS' => :use_fips,
47
+ 'Endpoint' => :endpoint,
48
+ }.freeze
49
+ end
50
+
51
+ def initialize(options = {})
52
+ self[:region] = options[:region]
53
+ if self[:region].nil?
54
+ raise ArgumentError, "Missing required EndpointParameter: :region"
55
+ end
56
+ self[:use_dual_stack] = options[:use_dual_stack]
57
+ self[:use_dual_stack] = false if self[:use_dual_stack].nil?
58
+ if self[:use_dual_stack].nil?
59
+ raise ArgumentError, "Missing required EndpointParameter: :use_dual_stack"
60
+ end
61
+ self[:use_fips] = options[:use_fips]
62
+ self[:use_fips] = false if self[:use_fips].nil?
63
+ if self[:use_fips].nil?
64
+ raise ArgumentError, "Missing required EndpointParameter: :use_fips"
65
+ end
66
+ self[:endpoint] = options[:endpoint]
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,111 @@
1
+ # frozen_string_literal: true
2
+
3
+ # WARNING ABOUT GENERATED CODE
4
+ #
5
+ # This file is generated. See the contributing guide for more information:
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
7
+ #
8
+ # WARNING ABOUT GENERATED CODE
9
+
10
+ module Aws::WorkSpacesWeb
11
+ class EndpointProvider
12
+ def initialize(rule_set = nil)
13
+ @@rule_set ||= begin
14
+ endpoint_rules = Aws::Json.load(Base64.decode64(RULES))
15
+ Aws::Endpoints::RuleSet.new(
16
+ version: endpoint_rules['version'],
17
+ service_id: endpoint_rules['serviceId'],
18
+ parameters: endpoint_rules['parameters'],
19
+ rules: endpoint_rules['rules']
20
+ )
21
+ end
22
+ @provider = Aws::Endpoints::RulesProvider.new(rule_set || @@rule_set)
23
+ end
24
+
25
+ def resolve_endpoint(parameters)
26
+ @provider.resolve_endpoint(parameters)
27
+ end
28
+
29
+ # @api private
30
+ RULES = <<-JSON
31
+ eyJ2ZXJzaW9uIjoiMS4wIiwicGFyYW1ldGVycyI6eyJSZWdpb24iOnsiYnVp
32
+ bHRJbiI6IkFXUzo6UmVnaW9uIiwicmVxdWlyZWQiOnRydWUsImRvY3VtZW50
33
+ YXRpb24iOiJUaGUgQVdTIHJlZ2lvbiB1c2VkIHRvIGRpc3BhdGNoIHRoZSBy
34
+ ZXF1ZXN0LiIsInR5cGUiOiJTdHJpbmcifSwiVXNlRHVhbFN0YWNrIjp7ImJ1
35
+ aWx0SW4iOiJBV1M6OlVzZUR1YWxTdGFjayIsInJlcXVpcmVkIjp0cnVlLCJk
36
+ ZWZhdWx0IjpmYWxzZSwiZG9jdW1lbnRhdGlvbiI6IldoZW4gdHJ1ZSwgdXNl
37
+ IHRoZSBkdWFsLXN0YWNrIGVuZHBvaW50LiBJZiB0aGUgY29uZmlndXJlZCBl
38
+ bmRwb2ludCBkb2VzIG5vdCBzdXBwb3J0IGR1YWwtc3RhY2ssIGRpc3BhdGNo
39
+ aW5nIHRoZSByZXF1ZXN0IE1BWSByZXR1cm4gYW4gZXJyb3IuIiwidHlwZSI6
40
+ IkJvb2xlYW4ifSwiVXNlRklQUyI6eyJidWlsdEluIjoiQVdTOjpVc2VGSVBT
41
+ IiwicmVxdWlyZWQiOnRydWUsImRlZmF1bHQiOmZhbHNlLCJkb2N1bWVudGF0
42
+ aW9uIjoiV2hlbiB0cnVlLCBzZW5kIHRoaXMgcmVxdWVzdCB0byB0aGUgRklQ
43
+ Uy1jb21wbGlhbnQgcmVnaW9uYWwgZW5kcG9pbnQuIElmIHRoZSBjb25maWd1
44
+ cmVkIGVuZHBvaW50IGRvZXMgbm90IGhhdmUgYSBGSVBTIGNvbXBsaWFudCBl
45
+ bmRwb2ludCwgZGlzcGF0Y2hpbmcgdGhlIHJlcXVlc3Qgd2lsbCByZXR1cm4g
46
+ YW4gZXJyb3IuIiwidHlwZSI6IkJvb2xlYW4ifSwiRW5kcG9pbnQiOnsiYnVp
47
+ bHRJbiI6IlNESzo6RW5kcG9pbnQiLCJyZXF1aXJlZCI6ZmFsc2UsImRvY3Vt
48
+ ZW50YXRpb24iOiJPdmVycmlkZSB0aGUgZW5kcG9pbnQgdXNlZCB0byBzZW5k
49
+ IHRoaXMgcmVxdWVzdCIsInR5cGUiOiJTdHJpbmcifX0sInJ1bGVzIjpbeyJj
50
+ b25kaXRpb25zIjpbeyJmbiI6ImF3cy5wYXJ0aXRpb24iLCJhcmd2IjpbeyJy
51
+ ZWYiOiJSZWdpb24ifV0sImFzc2lnbiI6IlBhcnRpdGlvblJlc3VsdCJ9XSwi
52
+ dHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6W3siZm4iOiJp
53
+ c1NldCIsImFyZ3YiOlt7InJlZiI6IkVuZHBvaW50In1dfV0sInR5cGUiOiJ0
54
+ cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVx
55
+ dWFscyIsImFyZ3YiOlt7InJlZiI6IlVzZUZJUFMifSx0cnVlXX1dLCJlcnJv
56
+ ciI6IkludmFsaWQgQ29uZmlndXJhdGlvbjogRklQUyBhbmQgY3VzdG9tIGVu
57
+ ZHBvaW50IGFyZSBub3Qgc3VwcG9ydGVkIiwidHlwZSI6ImVycm9yIn0seyJj
58
+ b25kaXRpb25zIjpbXSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0
59
+ aW9ucyI6W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoi
60
+ VXNlRHVhbFN0YWNrIn0sdHJ1ZV19XSwiZXJyb3IiOiJJbnZhbGlkIENvbmZp
61
+ Z3VyYXRpb246IER1YWxzdGFjayBhbmQgY3VzdG9tIGVuZHBvaW50IGFyZSBu
62
+ b3Qgc3VwcG9ydGVkIiwidHlwZSI6ImVycm9yIn0seyJjb25kaXRpb25zIjpb
63
+ XSwiZW5kcG9pbnQiOnsidXJsIjp7InJlZiI6IkVuZHBvaW50In0sInByb3Bl
64
+ cnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX1d
65
+ fSx7ImNvbmRpdGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3Yi
66
+ Olt7InJlZiI6IlVzZUZJUFMifSx0cnVlXX0seyJmbiI6ImJvb2xlYW5FcXVh
67
+ bHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VEdWFsU3RhY2sifSx0cnVlXX1dLCJ0
68
+ eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRpb25zIjpbeyJmbiI6ImJv
69
+ b2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1ZSx7ImZuIjoiZ2V0QXR0ciIsImFy
70
+ Z3YiOlt7InJlZiI6IlBhcnRpdGlvblJlc3VsdCJ9LCJzdXBwb3J0c0ZJUFMi
71
+ XX1dfSx7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsiZm4i
72
+ OiJnZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0In0s
73
+ InN1cHBvcnRzRHVhbFN0YWNrIl19XX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVz
74
+ IjpbeyJjb25kaXRpb25zIjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6
75
+ Ly93b3Jrc3BhY2VzLXdlYi1maXBzLntSZWdpb259LntQYXJ0aXRpb25SZXN1
76
+ bHQjZHVhbFN0YWNrRG5zU3VmZml4fSIsInByb3BlcnRpZXMiOnt9LCJoZWFk
77
+ ZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX0seyJjb25kaXRpb25zIjpb
78
+ XSwiZXJyb3IiOiJGSVBTIGFuZCBEdWFsU3RhY2sgYXJlIGVuYWJsZWQsIGJ1
79
+ dCB0aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBzdXBwb3J0IG9uZSBvciBib3Ro
80
+ IiwidHlwZSI6ImVycm9yIn1dfSx7ImNvbmRpdGlvbnMiOlt7ImZuIjoiYm9v
81
+ bGVhbkVxdWFscyIsImFyZ3YiOlt7InJlZiI6IlVzZUZJUFMifSx0cnVlXX1d
82
+ LCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRpb25zIjpbeyJmbiI6
83
+ ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1ZSx7ImZuIjoiZ2V0QXR0ciIs
84
+ ImFyZ3YiOlt7InJlZiI6IlBhcnRpdGlvblJlc3VsdCJ9LCJzdXBwb3J0c0ZJ
85
+ UFMiXX1dfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMi
86
+ OltdLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRpb25zIjpbXSwi
87
+ ZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly93b3Jrc3BhY2VzLXdlYi1maXBz
88
+ LntSZWdpb259LntQYXJ0aXRpb25SZXN1bHQjZG5zU3VmZml4fSIsInByb3Bl
89
+ cnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX1d
90
+ fSx7ImNvbmRpdGlvbnMiOltdLCJlcnJvciI6IkZJUFMgaXMgZW5hYmxlZCBi
91
+ dXQgdGhpcyBwYXJ0aXRpb24gZG9lcyBub3Qgc3VwcG9ydCBGSVBTIiwidHlw
92
+ ZSI6ImVycm9yIn1dfSx7ImNvbmRpdGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVx
93
+ dWFscyIsImFyZ3YiOlt7InJlZiI6IlVzZUR1YWxTdGFjayJ9LHRydWVdfV0s
94
+ InR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOlt7ImZuIjoi
95
+ Ym9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsiZm4iOiJnZXRBdHRyIiwi
96
+ YXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0In0sInN1cHBvcnRzRHVh
97
+ bFN0YWNrIl19XX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRp
98
+ b25zIjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly93b3Jrc3BhY2Vz
99
+ LXdlYi57UmVnaW9ufS57UGFydGl0aW9uUmVzdWx0I2R1YWxTdGFja0Ruc1N1
100
+ ZmZpeH0iLCJwcm9wZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBlIjoi
101
+ ZW5kcG9pbnQifV19LHsiY29uZGl0aW9ucyI6W10sImVycm9yIjoiRHVhbFN0
102
+ YWNrIGlzIGVuYWJsZWQgYnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90IHN1
103
+ cHBvcnQgRHVhbFN0YWNrIiwidHlwZSI6ImVycm9yIn1dfSx7ImNvbmRpdGlv
104
+ bnMiOltdLCJlbmRwb2ludCI6eyJ1cmwiOiJodHRwczovL3dvcmtzcGFjZXMt
105
+ d2ViLntSZWdpb259LntQYXJ0aXRpb25SZXN1bHQjZG5zU3VmZml4fSIsInBy
106
+ b3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9
107
+ XX1dfQ==
108
+
109
+ JSON
110
+ end
111
+ end