aws-sdk-frauddetector 1.36.0 → 1.38.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bbac97c4960580d3a374be2eea25d949b3f52bb2f4ea7eced76e7cb6354f3cd2
4
- data.tar.gz: c943cad9e2a6879a7835acf0ca0d2e202a6a76e314341ae12965bc64c543eb1d
3
+ metadata.gz: b515d5a92ba8893a691ed30d43efcaa213cd5192b72c6737e73e8dc88dcc5162
4
+ data.tar.gz: 4522fa2083643e091dc3cb1dc429d08b44bd697dace87446ebf862e8ebebbf03
5
5
  SHA512:
6
- metadata.gz: 9e04edaa230393214954d5c6a0fcb83c295a4b87284e2f9b3d9bc31818a95d9190e74a34079306cb6e5fd471c0d98e9c3ccfd1b8f0b3285d628020f3c034a0ea
7
- data.tar.gz: 1c6c33cdcda554ac0eabc4c787efb9ad17acf79bd6fea9805bf1b03a63b0348d24e97f8667ca2f65d511cf4974f60abc0804cea91b8a70c630a4bdf7421f3f62
6
+ metadata.gz: 40bbbd230556430db092e0e354f60b5f89bf250f8963bc7401365a0de23f8a229cc7cfdeaa7c358f9cb246eefea7dcf423d970408aaf340dbea3f522bd79f16a
7
+ data.tar.gz: 222e52c158bfcb5d72c812e143eea2e43ee6d12ca6abcf15f84f6974bea57d4ca4a81faa9055634ed592bd6bdd0ba7a7a56366baf7d4a5612dd6f975f73340df
data/CHANGELOG.md CHANGED
@@ -1,6 +1,18 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.38.0 (2023-02-06)
5
+ ------------------
6
+
7
+ * Feature - My AWS Service (Amazon Fraud Detector) - This release introduces Cold Start Model Training which optimizes training for small datasets and adds intelligent methods for treating unlabeled data. You can now train Online Fraud Insights or Transaction Fraud Insights models with minimal historical-data.
8
+
9
+ 1.37.0 (2023-01-18)
10
+ ------------------
11
+
12
+ * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
13
+
14
+ * Issue - Replace runtime endpoint resolution approach with generated ruby code.
15
+
4
16
  1.36.0 (2022-10-25)
5
17
  ------------------
6
18
 
@@ -190,4 +202,4 @@ Unreleased Changes
190
202
  1.0.0 (2019-12-03)
191
203
  ------------------
192
204
 
193
- * Feature - Initial release of `aws-sdk-frauddetector`.
205
+ * Feature - Initial release of `aws-sdk-frauddetector`.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.36.0
1
+ 1.38.0
@@ -817,7 +817,7 @@ module Aws::FraudDetector
817
817
  # label_mapper: {
818
818
  # "string" => ["string"],
819
819
  # },
820
- # unlabeled_events_treatment: "IGNORE", # accepts IGNORE, FRAUD, LEGIT
820
+ # unlabeled_events_treatment: "IGNORE", # accepts IGNORE, FRAUD, LEGIT, AUTO
821
821
  # },
822
822
  # },
823
823
  # external_events_detail: {
@@ -1514,7 +1514,7 @@ module Aws::FraudDetector
1514
1514
  # resp.model_version_details[0].training_data_schema.label_schema.label_mapper #=> Hash
1515
1515
  # resp.model_version_details[0].training_data_schema.label_schema.label_mapper["string"] #=> Array
1516
1516
  # resp.model_version_details[0].training_data_schema.label_schema.label_mapper["string"][0] #=> String
1517
- # resp.model_version_details[0].training_data_schema.label_schema.unlabeled_events_treatment #=> String, one of "IGNORE", "FRAUD", "LEGIT"
1517
+ # resp.model_version_details[0].training_data_schema.label_schema.unlabeled_events_treatment #=> String, one of "IGNORE", "FRAUD", "LEGIT", "AUTO"
1518
1518
  # resp.model_version_details[0].external_events_detail.data_location #=> String
1519
1519
  # resp.model_version_details[0].external_events_detail.data_access_role_arn #=> String
1520
1520
  # resp.model_version_details[0].ingested_events_detail.ingested_events_time_window.start_time #=> String
@@ -1558,12 +1558,16 @@ module Aws::FraudDetector
1558
1558
  # resp.model_version_details[0].training_result_v2.training_metrics_v2.ofi.metric_data_points[0].tpr #=> Float
1559
1559
  # resp.model_version_details[0].training_result_v2.training_metrics_v2.ofi.metric_data_points[0].threshold #=> Float
1560
1560
  # resp.model_version_details[0].training_result_v2.training_metrics_v2.ofi.model_performance.auc #=> Float
1561
+ # resp.model_version_details[0].training_result_v2.training_metrics_v2.ofi.model_performance.uncertainty_range.lower_bound_value #=> Float
1562
+ # resp.model_version_details[0].training_result_v2.training_metrics_v2.ofi.model_performance.uncertainty_range.upper_bound_value #=> Float
1561
1563
  # resp.model_version_details[0].training_result_v2.training_metrics_v2.tfi.metric_data_points #=> Array
1562
1564
  # resp.model_version_details[0].training_result_v2.training_metrics_v2.tfi.metric_data_points[0].fpr #=> Float
1563
1565
  # resp.model_version_details[0].training_result_v2.training_metrics_v2.tfi.metric_data_points[0].precision #=> Float
1564
1566
  # resp.model_version_details[0].training_result_v2.training_metrics_v2.tfi.metric_data_points[0].tpr #=> Float
1565
1567
  # resp.model_version_details[0].training_result_v2.training_metrics_v2.tfi.metric_data_points[0].threshold #=> Float
1566
1568
  # resp.model_version_details[0].training_result_v2.training_metrics_v2.tfi.model_performance.auc #=> Float
1569
+ # resp.model_version_details[0].training_result_v2.training_metrics_v2.tfi.model_performance.uncertainty_range.lower_bound_value #=> Float
1570
+ # resp.model_version_details[0].training_result_v2.training_metrics_v2.tfi.model_performance.uncertainty_range.upper_bound_value #=> Float
1567
1571
  # resp.model_version_details[0].training_result_v2.training_metrics_v2.ati.metric_data_points #=> Array
1568
1572
  # resp.model_version_details[0].training_result_v2.training_metrics_v2.ati.metric_data_points[0].cr #=> Float
1569
1573
  # resp.model_version_details[0].training_result_v2.training_metrics_v2.ati.metric_data_points[0].adr #=> Float
@@ -2413,7 +2417,7 @@ module Aws::FraudDetector
2413
2417
  # resp.training_data_schema.label_schema.label_mapper #=> Hash
2414
2418
  # resp.training_data_schema.label_schema.label_mapper["string"] #=> Array
2415
2419
  # resp.training_data_schema.label_schema.label_mapper["string"][0] #=> String
2416
- # resp.training_data_schema.label_schema.unlabeled_events_treatment #=> String, one of "IGNORE", "FRAUD", "LEGIT"
2420
+ # resp.training_data_schema.label_schema.unlabeled_events_treatment #=> String, one of "IGNORE", "FRAUD", "LEGIT", "AUTO"
2417
2421
  # resp.external_events_detail.data_location #=> String
2418
2422
  # resp.external_events_detail.data_access_role_arn #=> String
2419
2423
  # resp.ingested_events_detail.ingested_events_time_window.start_time #=> String
@@ -3678,7 +3682,7 @@ module Aws::FraudDetector
3678
3682
  params: params,
3679
3683
  config: config)
3680
3684
  context[:gem_name] = 'aws-sdk-frauddetector'
3681
- context[:gem_version] = '1.36.0'
3685
+ context[:gem_version] = '1.38.0'
3682
3686
  Seahorse::Client::Request.new(handlers, context)
3683
3687
  end
3684
3688
 
@@ -258,6 +258,7 @@ module Aws::FraudDetector
258
258
  TrainingMetricsV2 = Shapes::StructureShape.new(name: 'TrainingMetricsV2')
259
259
  TrainingResult = Shapes::StructureShape.new(name: 'TrainingResult')
260
260
  TrainingResultV2 = Shapes::StructureShape.new(name: 'TrainingResultV2')
261
+ UncertaintyRange = Shapes::StructureShape.new(name: 'UncertaintyRange')
261
262
  UnlabeledEventsTreatment = Shapes::StringShape.new(name: 'UnlabeledEventsTreatment')
262
263
  UntagResourceRequest = Shapes::StructureShape.new(name: 'UntagResourceRequest')
263
264
  UntagResourceResult = Shapes::StructureShape.new(name: 'UntagResourceResult')
@@ -1135,6 +1136,7 @@ module Aws::FraudDetector
1135
1136
  OFIMetricDataPointsList.member = Shapes::ShapeRef.new(shape: OFIMetricDataPoint)
1136
1137
 
1137
1138
  OFIModelPerformance.add_member(:auc, Shapes::ShapeRef.new(shape: float, location_name: "auc"))
1139
+ OFIModelPerformance.add_member(:uncertainty_range, Shapes::ShapeRef.new(shape: UncertaintyRange, location_name: "uncertaintyRange"))
1138
1140
  OFIModelPerformance.struct_class = Types::OFIModelPerformance
1139
1141
 
1140
1142
  OFITrainingMetricsValue.add_member(:metric_data_points, Shapes::ShapeRef.new(shape: OFIMetricDataPointsList, location_name: "metricDataPoints"))
@@ -1265,6 +1267,7 @@ module Aws::FraudDetector
1265
1267
  TFIMetricDataPointsList.member = Shapes::ShapeRef.new(shape: TFIMetricDataPoint)
1266
1268
 
1267
1269
  TFIModelPerformance.add_member(:auc, Shapes::ShapeRef.new(shape: float, location_name: "auc"))
1270
+ TFIModelPerformance.add_member(:uncertainty_range, Shapes::ShapeRef.new(shape: UncertaintyRange, location_name: "uncertaintyRange"))
1268
1271
  TFIModelPerformance.struct_class = Types::TFIModelPerformance
1269
1272
 
1270
1273
  TFITrainingMetricsValue.add_member(:metric_data_points, Shapes::ShapeRef.new(shape: TFIMetricDataPointsList, location_name: "metricDataPoints"))
@@ -1308,6 +1311,10 @@ module Aws::FraudDetector
1308
1311
  TrainingResultV2.add_member(:aggregated_variables_importance_metrics, Shapes::ShapeRef.new(shape: AggregatedVariablesImportanceMetrics, location_name: "aggregatedVariablesImportanceMetrics"))
1309
1312
  TrainingResultV2.struct_class = Types::TrainingResultV2
1310
1313
 
1314
+ UncertaintyRange.add_member(:lower_bound_value, Shapes::ShapeRef.new(shape: float, required: true, location_name: "lowerBoundValue"))
1315
+ UncertaintyRange.add_member(:upper_bound_value, Shapes::ShapeRef.new(shape: float, required: true, location_name: "upperBoundValue"))
1316
+ UncertaintyRange.struct_class = Types::UncertaintyRange
1317
+
1311
1318
  UntagResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: fraudDetectorArn, required: true, location_name: "resourceARN"))
1312
1319
  UntagResourceRequest.add_member(:tag_keys, Shapes::ShapeRef.new(shape: tagKeyList, required: true, location_name: "tagKeys"))
1313
1320
  UntagResourceRequest.struct_class = Types::UntagResourceRequest
@@ -9,104 +9,43 @@
9
9
 
10
10
  module Aws::FraudDetector
11
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
- )
12
+ def resolve_endpoint(parameters)
13
+ region = parameters.region
14
+ use_dual_stack = parameters.use_dual_stack
15
+ use_fips = parameters.use_fips
16
+ endpoint = parameters.endpoint
17
+ if (partition_result = Aws::Endpoints::Matchers.aws_partition(region))
18
+ if Aws::Endpoints::Matchers.set?(endpoint)
19
+ if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
20
+ raise ArgumentError, "Invalid Configuration: FIPS and custom endpoint are not supported"
21
+ end
22
+ if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
23
+ raise ArgumentError, "Invalid Configuration: Dualstack and custom endpoint are not supported"
24
+ end
25
+ return Aws::Endpoints::Endpoint.new(url: endpoint, headers: {}, properties: {})
26
+ end
27
+ if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) && Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
28
+ if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) && Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack"))
29
+ return Aws::Endpoints::Endpoint.new(url: "https://frauddetector-fips.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {})
30
+ end
31
+ raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both"
32
+ end
33
+ if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
34
+ if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"))
35
+ return Aws::Endpoints::Endpoint.new(url: "https://frauddetector-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
36
+ end
37
+ raise ArgumentError, "FIPS is enabled but this partition does not support FIPS"
38
+ end
39
+ if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
40
+ if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack"))
41
+ return Aws::Endpoints::Endpoint.new(url: "https://frauddetector.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {})
42
+ end
43
+ raise ArgumentError, "DualStack is enabled but this partition does not support DualStack"
44
+ end
45
+ return Aws::Endpoints::Endpoint.new(url: "https://frauddetector.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
21
46
  end
22
- @provider = Aws::Endpoints::RulesProvider.new(rule_set || @@rule_set)
23
- end
47
+ raise ArgumentError, 'No endpoint could be resolved'
24
48
 
25
- def resolve_endpoint(parameters)
26
- @provider.resolve_endpoint(parameters)
27
49
  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
- c1NldCIsImFyZ3YiOlt7InJlZiI6IkVuZHBvaW50In1dfSx7ImZuIjoicGFy
54
- c2VVUkwiLCJhcmd2IjpbeyJyZWYiOiJFbmRwb2ludCJ9XSwiYXNzaWduIjoi
55
- dXJsIn1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRpb25zIjpb
56
- eyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VGSVBT
57
- In0sdHJ1ZV19XSwiZXJyb3IiOiJJbnZhbGlkIENvbmZpZ3VyYXRpb246IEZJ
58
- UFMgYW5kIGN1c3RvbSBlbmRwb2ludCBhcmUgbm90IHN1cHBvcnRlZCIsInR5
59
- cGUiOiJlcnJvciJ9LHsiY29uZGl0aW9ucyI6W10sInR5cGUiOiJ0cmVlIiwi
60
- cnVsZXMiOlt7ImNvbmRpdGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIs
61
- ImFyZ3YiOlt7InJlZiI6IlVzZUR1YWxTdGFjayJ9LHRydWVdfV0sImVycm9y
62
- IjoiSW52YWxpZCBDb25maWd1cmF0aW9uOiBEdWFsc3RhY2sgYW5kIGN1c3Rv
63
- bSBlbmRwb2ludCBhcmUgbm90IHN1cHBvcnRlZCIsInR5cGUiOiJlcnJvciJ9
64
- LHsiY29uZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6eyJyZWYiOiJF
65
- bmRwb2ludCJ9LCJwcm9wZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBl
66
- IjoiZW5kcG9pbnQifV19XX0seyJjb25kaXRpb25zIjpbeyJmbiI6ImJvb2xl
67
- YW5FcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VGSVBTIn0sdHJ1ZV19LHsi
68
- Zm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRHVhbFN0
69
- YWNrIn0sdHJ1ZV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0
70
- aW9ucyI6W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3RydWUseyJm
71
- biI6ImdldEF0dHIiLCJhcmd2IjpbeyJyZWYiOiJQYXJ0aXRpb25SZXN1bHQi
72
- fSwic3VwcG9ydHNGSVBTIl19XX0seyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJh
73
- cmd2IjpbdHJ1ZSx7ImZuIjoiZ2V0QXR0ciIsImFyZ3YiOlt7InJlZiI6IlBh
74
- cnRpdGlvblJlc3VsdCJ9LCJzdXBwb3J0c0R1YWxTdGFjayJdfV19XSwidHlw
75
- ZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6W10sImVuZHBvaW50
76
- Ijp7InVybCI6Imh0dHBzOi8vZnJhdWRkZXRlY3Rvci1maXBzLntSZWdpb259
77
- LntQYXJ0aXRpb25SZXN1bHQjZHVhbFN0YWNrRG5zU3VmZml4fSIsInByb3Bl
78
- cnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX0s
79
- eyJjb25kaXRpb25zIjpbXSwiZXJyb3IiOiJGSVBTIGFuZCBEdWFsU3RhY2sg
80
- YXJlIGVuYWJsZWQsIGJ1dCB0aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBzdXBw
81
- b3J0IG9uZSBvciBib3RoIiwidHlwZSI6ImVycm9yIn1dfSx7ImNvbmRpdGlv
82
- bnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt7InJlZiI6IlVz
83
- ZUZJUFMifSx0cnVlXX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25k
84
- aXRpb25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1ZSx7
85
- ImZuIjoiZ2V0QXR0ciIsImFyZ3YiOlt7InJlZiI6IlBhcnRpdGlvblJlc3Vs
86
- dCJ9LCJzdXBwb3J0c0ZJUFMiXX1dfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMi
87
- Olt7ImNvbmRpdGlvbnMiOltdLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJj
88
- b25kaXRpb25zIjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly9mcmF1
89
- ZGRldGVjdG9yLWZpcHMue1JlZ2lvbn0ue1BhcnRpdGlvblJlc3VsdCNkbnNT
90
- dWZmaXh9IiwicHJvcGVydGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlwZSI6
91
- ImVuZHBvaW50In1dfV19LHsiY29uZGl0aW9ucyI6W10sImVycm9yIjoiRklQ
92
- UyBpcyBlbmFibGVkIGJ1dCB0aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBzdXBw
93
- b3J0IEZJUFMiLCJ0eXBlIjoiZXJyb3IifV19LHsiY29uZGl0aW9ucyI6W3si
94
- Zm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRHVhbFN0
95
- YWNrIn0sdHJ1ZV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0
96
- aW9ucyI6W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3RydWUseyJm
97
- biI6ImdldEF0dHIiLCJhcmd2IjpbeyJyZWYiOiJQYXJ0aXRpb25SZXN1bHQi
98
- fSwic3VwcG9ydHNEdWFsU3RhY2siXX1dfV0sInR5cGUiOiJ0cmVlIiwicnVs
99
- ZXMiOlt7ImNvbmRpdGlvbnMiOltdLCJlbmRwb2ludCI6eyJ1cmwiOiJodHRw
100
- czovL2ZyYXVkZGV0ZWN0b3Iue1JlZ2lvbn0ue1BhcnRpdGlvblJlc3VsdCNk
101
- dWFsU3RhY2tEbnNTdWZmaXh9IiwicHJvcGVydGllcyI6e30sImhlYWRlcnMi
102
- Ont9fSwidHlwZSI6ImVuZHBvaW50In1dfSx7ImNvbmRpdGlvbnMiOltdLCJl
103
- cnJvciI6IkR1YWxTdGFjayBpcyBlbmFibGVkIGJ1dCB0aGlzIHBhcnRpdGlv
104
- biBkb2VzIG5vdCBzdXBwb3J0IER1YWxTdGFjayIsInR5cGUiOiJlcnJvciJ9
105
- XX0seyJjb25kaXRpb25zIjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6
106
- Ly9mcmF1ZGRldGVjdG9yLntSZWdpb259LntQYXJ0aXRpb25SZXN1bHQjZG5z
107
- U3VmZml4fSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUi
108
- OiJlbmRwb2ludCJ9XX1dfQ==
109
-
110
- JSON
111
50
  end
112
51
  end