aws-sdk-rekognition 1.72.0 → 1.74.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: 59e3c384ad0740cd57cc26b976cfc30f0b0ed8651a37b8100489e8ce2faedabc
4
- data.tar.gz: 240fc9c7d44843b9c4e2829931f467a6b3a1328352ca6b65453a98cec036094b
3
+ metadata.gz: 512733d3061c637ec9d8f1ad4bac94c75a720a9d8811509f9eac85723878fe76
4
+ data.tar.gz: 9357ddb220c080696544f6465448e90cf6e1176844af79880e15c5d4dc650a53
5
5
  SHA512:
6
- metadata.gz: 417c29e0ef8da4ce0cbe2745a25cf49591719cbbd07aa0f8c2f7bf6eeaed28c06edf1e865af40bf9210525bb7f00c8be63052e87c0aad42e42ede10f63e498f4
7
- data.tar.gz: 78802af11d77ace741a2cce11f5c4673d9a00ea92c5844593f4f9af04cc6d1e61e093a6503a4088ba425aa74b9ba72545fb407ec34a2734a807021a3d2559190
6
+ metadata.gz: 8810485bcaedb2cd1f7d1b7f98a5b43c8be5c7e740aed73003b7e76f581076a2249492be0bf6037e340efc9d6a2d42865864078043996a2eb1a340be1b81c890
7
+ data.tar.gz: 5888ed6816a38179ad172280a7cfcd037cac17cbaa6bbbeaab6a523e6414c8d83555c0e14492435feaf4209e8d605acb63a1023b2018a63b4ca64ffc170ba959
data/CHANGELOG.md CHANGED
@@ -1,6 +1,18 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.74.0 (2023-01-18)
5
+ ------------------
6
+
7
+ * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
8
+
9
+ * Issue - Replace runtime endpoint resolution approach with generated ruby code.
10
+
11
+ 1.73.0 (2022-12-12)
12
+ ------------------
13
+
14
+ * Feature - Adds support for "aliases" and "categories", inclusion and exclusion filters for labels and label categories, and aggregating labels by video segment timestamps for Stored Video Label Detection APIs.
15
+
4
16
  1.72.0 (2022-11-11)
5
17
  ------------------
6
18
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.72.0
1
+ 1.74.0
@@ -2226,7 +2226,7 @@ module Aws::Rekognition
2226
2226
  # * Aliases - Possible Aliases for the label.
2227
2227
  #
2228
2228
  # * Categories - The label categories that the detected label belongs
2229
- # to. A given label can belong to more than one category.
2229
+ # to.
2230
2230
  #
2231
2231
  # * BoundingBox — Bounding boxes are described for all instances of
2232
2232
  # detected common object labels, returned in an array of Instance
@@ -2245,11 +2245,11 @@ module Aws::Rekognition
2245
2245
  #
2246
2246
  # * Dominant Color - An array of the dominant colors in the image.
2247
2247
  #
2248
- # * Foreground - Information about the Sharpness and Brightness of the
2249
- # input image’s foreground.
2248
+ # * Foreground - Information about the sharpness, brightness, and
2249
+ # dominant colors of the input image’s foreground.
2250
2250
  #
2251
- # * Background - Information about the Sharpness and Brightness of the
2252
- # input image’s background.
2251
+ # * Background - Information about the sharpness, brightness, and
2252
+ # dominant colors of the input image’s background.
2253
2253
  #
2254
2254
  # The list of returned labels will include at least one label for every
2255
2255
  # detected object, along with information about that label. In the
@@ -3403,25 +3403,69 @@ module Aws::Rekognition
3403
3403
  # StartLabelDetection which returns a job identifier (`JobId`). When the
3404
3404
  # label detection operation finishes, Amazon Rekognition publishes a
3405
3405
  # completion status to the Amazon Simple Notification Service topic
3406
- # registered in the initial call to `StartlabelDetection`. To get the
3407
- # results of the label detection operation, first check that the status
3408
- # value published to the Amazon SNS topic is `SUCCEEDED`. If so, call
3409
- # GetLabelDetection and pass the job identifier (`JobId`) from the
3410
- # initial call to `StartLabelDetection`.
3406
+ # registered in the initial call to `StartlabelDetection`.
3407
+ #
3408
+ # To get the results of the label detection operation, first check that
3409
+ # the status value published to the Amazon SNS topic is `SUCCEEDED`. If
3410
+ # so, call GetLabelDetection and pass the job identifier (`JobId`) from
3411
+ # the initial call to `StartLabelDetection`.
3411
3412
  #
3412
3413
  # `GetLabelDetection` returns an array of detected labels (`Labels`)
3413
3414
  # sorted by the time the labels were detected. You can also sort by the
3414
- # label name by specifying `NAME` for the `SortBy` input parameter.
3415
+ # label name by specifying `NAME` for the `SortBy` input parameter. If
3416
+ # there is no `NAME` specified, the default sort is by timestamp.
3415
3417
  #
3416
- # The labels returned include the label name, the percentage confidence
3417
- # in the accuracy of the detected label, and the time the label was
3418
- # detected in the video.
3418
+ # You can select how results are aggregated by using the `AggregateBy`
3419
+ # input parameter. The default aggregation method is `TIMESTAMPS`. You
3420
+ # can also aggregate by `SEGMENTS`, which aggregates all instances of
3421
+ # labels detected in a given segment.
3419
3422
  #
3420
- # The returned labels also include bounding box information for common
3421
- # objects, a hierarchical taxonomy of detected labels, and the version
3422
- # of the label model used for detection.
3423
+ # The returned Labels array may include the following attributes:
3423
3424
  #
3424
- # Use MaxResults parameter to limit the number of labels returned. If
3425
+ # * Name - The name of the detected label.
3426
+ #
3427
+ # * Confidence - The level of confidence in the label assigned to a
3428
+ # detected object.
3429
+ #
3430
+ # * Parents - The ancestor labels for a detected label.
3431
+ # GetLabelDetection returns a hierarchical taxonomy of detected
3432
+ # labels. For example, a detected car might be assigned the label car.
3433
+ # The label car has two parent labels: Vehicle (its parent) and
3434
+ # Transportation (its grandparent). The response includes the all
3435
+ # ancestors for a label, where every ancestor is a unique label. In
3436
+ # the previous example, Car, Vehicle, and Transportation are returned
3437
+ # as unique labels in the response.
3438
+ #
3439
+ # * Aliases - Possible Aliases for the label.
3440
+ #
3441
+ # * Categories - The label categories that the detected label belongs
3442
+ # to.
3443
+ #
3444
+ # * BoundingBox — Bounding boxes are described for all instances of
3445
+ # detected common object labels, returned in an array of Instance
3446
+ # objects. An Instance object contains a BoundingBox object,
3447
+ # describing the location of the label on the input image. It also
3448
+ # includes the confidence for the accuracy of the detected bounding
3449
+ # box.
3450
+ #
3451
+ # * Timestamp - Time, in milliseconds from the start of the video, that
3452
+ # the label was detected. For aggregation by `SEGMENTS`, the
3453
+ # `StartTimestampMillis`, `EndTimestampMillis`, and `DurationMillis`
3454
+ # structures are what define a segment. Although the “Timestamp”
3455
+ # structure is still returned with each label, its value is set to be
3456
+ # the same as `StartTimestampMillis`.
3457
+ #
3458
+ # Timestamp and Bounding box information are returned for detected
3459
+ # Instances, only if aggregation is done by `TIMESTAMPS`. If aggregating
3460
+ # by `SEGMENTS`, information about detected instances isn’t returned.
3461
+ #
3462
+ # The version of the label model used for the detection is also
3463
+ # returned.
3464
+ #
3465
+ # **Note `DominantColors` isn't returned for `Instances`, although it
3466
+ # is shown as part of the response in the sample seen below.**
3467
+ #
3468
+ # Use `MaxResults` parameter to limit the number of labels returned. If
3425
3469
  # there are more results than specified in `MaxResults`, the value of
3426
3470
  # `NextToken` in the operation response contains a pagination token for
3427
3471
  # getting the next set of results. To get the next page of results, call
@@ -3453,6 +3497,10 @@ module Aws::Rekognition
3453
3497
  # group, the array element are sorted by detection confidence. The
3454
3498
  # default sort is by `TIMESTAMP`.
3455
3499
  #
3500
+ # @option params [String] :aggregate_by
3501
+ # Defines how to aggregate the returned results. Results can be
3502
+ # aggregated by timestamps or segments.
3503
+ #
3456
3504
  # @return [Types::GetLabelDetectionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3457
3505
  #
3458
3506
  # * {Types::GetLabelDetectionResponse#job_status #job_status} => String
@@ -3471,6 +3519,7 @@ module Aws::Rekognition
3471
3519
  # max_results: 1,
3472
3520
  # next_token: "PaginationToken",
3473
3521
  # sort_by: "NAME", # accepts NAME, TIMESTAMP
3522
+ # aggregate_by: "TIMESTAMPS", # accepts TIMESTAMPS, SEGMENTS
3474
3523
  # })
3475
3524
  #
3476
3525
  # @example Response structure
@@ -3509,6 +3558,9 @@ module Aws::Rekognition
3509
3558
  # resp.labels[0].label.aliases[0].name #=> String
3510
3559
  # resp.labels[0].label.categories #=> Array
3511
3560
  # resp.labels[0].label.categories[0].name #=> String
3561
+ # resp.labels[0].start_timestamp_millis #=> Integer
3562
+ # resp.labels[0].end_timestamp_millis #=> Integer
3563
+ # resp.labels[0].duration_millis #=> Integer
3512
3564
  # resp.label_model_version #=> String
3513
3565
  #
3514
3566
  # @overload get_label_detection(params = {})
@@ -5744,6 +5796,22 @@ module Aws::Rekognition
5744
5796
  # so, call GetLabelDetection and pass the job identifier (`JobId`) from
5745
5797
  # the initial call to `StartLabelDetection`.
5746
5798
  #
5799
+ # *Optional Parameters*
5800
+ #
5801
+ # `StartLabelDetection` has the `GENERAL_LABELS` Feature applied by
5802
+ # default. This feature allows you to provide filtering criteria to the
5803
+ # `Settings` parameter. You can filter with sets of individual labels or
5804
+ # with label categories. You can specify inclusive filters, exclusive
5805
+ # filters, or a combination of inclusive and exclusive filters. For more
5806
+ # information on filtering, see [Detecting labels in a video][1].
5807
+ #
5808
+ # You can specify `MinConfidence` to control the confidence threshold
5809
+ # for the labels returned. The default is 50.
5810
+ #
5811
+ #
5812
+ #
5813
+ # [1]: https://docs.aws.amazon.com/rekognition/latest/dg/labels-detecting-labels-video.html
5814
+ #
5747
5815
  # @option params [required, Types::Video] :video
5748
5816
  # The video in which you want to detect labels. The video must be stored
5749
5817
  # in an Amazon S3 bucket.
@@ -5763,7 +5831,8 @@ module Aws::Rekognition
5763
5831
  # lower than this specified value.
5764
5832
  #
5765
5833
  # If you don't specify `MinConfidence`, the operation returns labels
5766
- # with confidence values greater than or equal to 50 percent.
5834
+ # and bounding boxes (if detected) with confidence values greater than
5835
+ # or equal to 50 percent.
5767
5836
  #
5768
5837
  # @option params [Types::NotificationChannel] :notification_channel
5769
5838
  # The Amazon SNS topic ARN you want Amazon Rekognition Video to publish
@@ -5777,6 +5846,15 @@ module Aws::Rekognition
5777
5846
  # Service topic. For example, you can use `JobTag` to group related jobs
5778
5847
  # and identify them in the completion notification.
5779
5848
  #
5849
+ # @option params [Array<String>] :features
5850
+ # The features to return after video analysis. You can specify that
5851
+ # GENERAL\_LABELS are returned.
5852
+ #
5853
+ # @option params [Types::LabelDetectionSettings] :settings
5854
+ # The settings for a StartLabelDetection request.Contains the specified
5855
+ # parameters for the label detection request of an asynchronous label
5856
+ # analysis operation. Settings can include filters for GENERAL\_LABELS.
5857
+ #
5780
5858
  # @return [Types::StartLabelDetectionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
5781
5859
  #
5782
5860
  # * {Types::StartLabelDetectionResponse#job_id #job_id} => String
@@ -5798,6 +5876,15 @@ module Aws::Rekognition
5798
5876
  # role_arn: "RoleArn", # required
5799
5877
  # },
5800
5878
  # job_tag: "JobTag",
5879
+ # features: ["GENERAL_LABELS"], # accepts GENERAL_LABELS
5880
+ # settings: {
5881
+ # general_labels: {
5882
+ # label_inclusion_filters: ["GeneralLabelsFilterValue"],
5883
+ # label_exclusion_filters: ["GeneralLabelsFilterValue"],
5884
+ # label_category_inclusion_filters: ["GeneralLabelsFilterValue"],
5885
+ # label_category_exclusion_filters: ["GeneralLabelsFilterValue"],
5886
+ # },
5887
+ # },
5801
5888
  # })
5802
5889
  #
5803
5890
  # @example Response structure
@@ -6469,7 +6556,7 @@ module Aws::Rekognition
6469
6556
  params: params,
6470
6557
  config: config)
6471
6558
  context[:gem_name] = 'aws-sdk-rekognition'
6472
- context[:gem_version] = '1.72.0'
6559
+ context[:gem_version] = '1.74.0'
6473
6560
  Seahorse::Client::Request.new(handlers, context)
6474
6561
  end
6475
6562
 
@@ -242,6 +242,10 @@ module Aws::Rekognition
242
242
  LabelCategories = Shapes::ListShape.new(name: 'LabelCategories')
243
243
  LabelCategory = Shapes::StructureShape.new(name: 'LabelCategory')
244
244
  LabelDetection = Shapes::StructureShape.new(name: 'LabelDetection')
245
+ LabelDetectionAggregateBy = Shapes::StringShape.new(name: 'LabelDetectionAggregateBy')
246
+ LabelDetectionFeatureList = Shapes::ListShape.new(name: 'LabelDetectionFeatureList')
247
+ LabelDetectionFeatureName = Shapes::StringShape.new(name: 'LabelDetectionFeatureName')
248
+ LabelDetectionSettings = Shapes::StructureShape.new(name: 'LabelDetectionSettings')
245
249
  LabelDetectionSortBy = Shapes::StringShape.new(name: 'LabelDetectionSortBy')
246
250
  LabelDetections = Shapes::ListShape.new(name: 'LabelDetections')
247
251
  Labels = Shapes::ListShape.new(name: 'Labels')
@@ -1056,6 +1060,7 @@ module Aws::Rekognition
1056
1060
  GetLabelDetectionRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "MaxResults"))
1057
1061
  GetLabelDetectionRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "NextToken"))
1058
1062
  GetLabelDetectionRequest.add_member(:sort_by, Shapes::ShapeRef.new(shape: LabelDetectionSortBy, location_name: "SortBy"))
1063
+ GetLabelDetectionRequest.add_member(:aggregate_by, Shapes::ShapeRef.new(shape: LabelDetectionAggregateBy, location_name: "AggregateBy"))
1059
1064
  GetLabelDetectionRequest.struct_class = Types::GetLabelDetectionRequest
1060
1065
 
1061
1066
  GetLabelDetectionResponse.add_member(:job_status, Shapes::ShapeRef.new(shape: VideoJobStatus, location_name: "JobStatus"))
@@ -1207,8 +1212,16 @@ module Aws::Rekognition
1207
1212
 
1208
1213
  LabelDetection.add_member(:timestamp, Shapes::ShapeRef.new(shape: Timestamp, location_name: "Timestamp"))
1209
1214
  LabelDetection.add_member(:label, Shapes::ShapeRef.new(shape: Label, location_name: "Label"))
1215
+ LabelDetection.add_member(:start_timestamp_millis, Shapes::ShapeRef.new(shape: ULong, location_name: "StartTimestampMillis"))
1216
+ LabelDetection.add_member(:end_timestamp_millis, Shapes::ShapeRef.new(shape: ULong, location_name: "EndTimestampMillis"))
1217
+ LabelDetection.add_member(:duration_millis, Shapes::ShapeRef.new(shape: ULong, location_name: "DurationMillis"))
1210
1218
  LabelDetection.struct_class = Types::LabelDetection
1211
1219
 
1220
+ LabelDetectionFeatureList.member = Shapes::ShapeRef.new(shape: LabelDetectionFeatureName)
1221
+
1222
+ LabelDetectionSettings.add_member(:general_labels, Shapes::ShapeRef.new(shape: GeneralLabelsSettings, location_name: "GeneralLabels"))
1223
+ LabelDetectionSettings.struct_class = Types::LabelDetectionSettings
1224
+
1212
1225
  LabelDetections.member = Shapes::ShapeRef.new(shape: LabelDetection)
1213
1226
 
1214
1227
  Labels.member = Shapes::ShapeRef.new(shape: Label)
@@ -1557,6 +1570,8 @@ module Aws::Rekognition
1557
1570
  StartLabelDetectionRequest.add_member(:min_confidence, Shapes::ShapeRef.new(shape: Percent, location_name: "MinConfidence"))
1558
1571
  StartLabelDetectionRequest.add_member(:notification_channel, Shapes::ShapeRef.new(shape: NotificationChannel, location_name: "NotificationChannel"))
1559
1572
  StartLabelDetectionRequest.add_member(:job_tag, Shapes::ShapeRef.new(shape: JobTag, location_name: "JobTag"))
1573
+ StartLabelDetectionRequest.add_member(:features, Shapes::ShapeRef.new(shape: LabelDetectionFeatureList, location_name: "Features"))
1574
+ StartLabelDetectionRequest.add_member(:settings, Shapes::ShapeRef.new(shape: LabelDetectionSettings, location_name: "Settings"))
1560
1575
  StartLabelDetectionRequest.struct_class = Types::StartLabelDetectionRequest
1561
1576
 
1562
1577
  StartLabelDetectionResponse.add_member(:job_id, Shapes::ShapeRef.new(shape: JobId, location_name: "JobId"))
@@ -50,6 +50,9 @@ module Aws::Rekognition
50
50
 
51
51
  def initialize(options = {})
52
52
  self[:region] = options[:region]
53
+ if self[:region].nil?
54
+ raise ArgumentError, "Missing required EndpointParameter: :region"
55
+ end
53
56
  self[:use_dual_stack] = options[:use_dual_stack]
54
57
  self[:use_dual_stack] = false if self[:use_dual_stack].nil?
55
58
  if self[:use_dual_stack].nil?
@@ -9,131 +9,61 @@
9
9
 
10
10
  module Aws::Rekognition
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://rekognition-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
+ if Aws::Endpoints::Matchers.string_equals?(region, "rekognition.ca-central-1")
36
+ return Aws::Endpoints::Endpoint.new(url: "https://rekognition-fips.ca-central-1.amazonaws.com", headers: {}, properties: {})
37
+ end
38
+ if Aws::Endpoints::Matchers.string_equals?(region, "rekognition.us-east-1")
39
+ return Aws::Endpoints::Endpoint.new(url: "https://rekognition-fips.us-east-1.amazonaws.com", headers: {}, properties: {})
40
+ end
41
+ if Aws::Endpoints::Matchers.string_equals?(region, "rekognition.us-east-2")
42
+ return Aws::Endpoints::Endpoint.new(url: "https://rekognition-fips.us-east-2.amazonaws.com", headers: {}, properties: {})
43
+ end
44
+ if Aws::Endpoints::Matchers.string_equals?(region, "rekognition.us-west-1")
45
+ return Aws::Endpoints::Endpoint.new(url: "https://rekognition-fips.us-west-1.amazonaws.com", headers: {}, properties: {})
46
+ end
47
+ if Aws::Endpoints::Matchers.string_equals?(region, "rekognition.us-west-2")
48
+ return Aws::Endpoints::Endpoint.new(url: "https://rekognition-fips.us-west-2.amazonaws.com", headers: {}, properties: {})
49
+ end
50
+ if Aws::Endpoints::Matchers.string_equals?(region, "rekognition.us-gov-west-1")
51
+ return Aws::Endpoints::Endpoint.new(url: "https://rekognition-fips.us-gov-west-1.amazonaws.com", headers: {}, properties: {})
52
+ end
53
+ return Aws::Endpoints::Endpoint.new(url: "https://rekognition-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
54
+ end
55
+ raise ArgumentError, "FIPS is enabled but this partition does not support FIPS"
56
+ end
57
+ if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
58
+ if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack"))
59
+ return Aws::Endpoints::Endpoint.new(url: "https://rekognition.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {})
60
+ end
61
+ raise ArgumentError, "DualStack is enabled but this partition does not support DualStack"
62
+ end
63
+ return Aws::Endpoints::Endpoint.new(url: "https://rekognition.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
21
64
  end
22
- @provider = Aws::Endpoints::RulesProvider.new(rule_set || @@rule_set)
23
- end
65
+ raise ArgumentError, 'No endpoint could be resolved'
24
66
 
25
- def resolve_endpoint(parameters)
26
- @provider.resolve_endpoint(parameters)
27
67
  end
28
-
29
- # @api private
30
- RULES = <<-JSON
31
- eyJ2ZXJzaW9uIjoiMS4wIiwicGFyYW1ldGVycyI6eyJSZWdpb24iOnsiYnVp
32
- bHRJbiI6IkFXUzo6UmVnaW9uIiwicmVxdWlyZWQiOmZhbHNlLCJkb2N1bWVu
33
- dGF0aW9uIjoiVGhlIEFXUyByZWdpb24gdXNlZCB0byBkaXNwYXRjaCB0aGUg
34
- cmVxdWVzdC4iLCJ0eXBlIjoiU3RyaW5nIn0sIlVzZUR1YWxTdGFjayI6eyJi
35
- dWlsdEluIjoiQVdTOjpVc2VEdWFsU3RhY2siLCJyZXF1aXJlZCI6dHJ1ZSwi
36
- ZGVmYXVsdCI6ZmFsc2UsImRvY3VtZW50YXRpb24iOiJXaGVuIHRydWUsIHVz
37
- ZSB0aGUgZHVhbC1zdGFjayBlbmRwb2ludC4gSWYgdGhlIGNvbmZpZ3VyZWQg
38
- ZW5kcG9pbnQgZG9lcyBub3Qgc3VwcG9ydCBkdWFsLXN0YWNrLCBkaXNwYXRj
39
- aGluZyB0aGUgcmVxdWVzdCBNQVkgcmV0dXJuIGFuIGVycm9yLiIsInR5cGUi
40
- OiJCb29sZWFuIn0sIlVzZUZJUFMiOnsiYnVpbHRJbiI6IkFXUzo6VXNlRklQ
41
- UyIsInJlcXVpcmVkIjp0cnVlLCJkZWZhdWx0IjpmYWxzZSwiZG9jdW1lbnRh
42
- dGlvbiI6IldoZW4gdHJ1ZSwgc2VuZCB0aGlzIHJlcXVlc3QgdG8gdGhlIEZJ
43
- UFMtY29tcGxpYW50IHJlZ2lvbmFsIGVuZHBvaW50LiBJZiB0aGUgY29uZmln
44
- dXJlZCBlbmRwb2ludCBkb2VzIG5vdCBoYXZlIGEgRklQUyBjb21wbGlhbnQg
45
- ZW5kcG9pbnQsIGRpc3BhdGNoaW5nIHRoZSByZXF1ZXN0IHdpbGwgcmV0dXJu
46
- IGFuIGVycm9yLiIsInR5cGUiOiJCb29sZWFuIn0sIkVuZHBvaW50Ijp7ImJ1
47
- aWx0SW4iOiJTREs6OkVuZHBvaW50IiwicmVxdWlyZWQiOmZhbHNlLCJkb2N1
48
- bWVudGF0aW9uIjoiT3ZlcnJpZGUgdGhlIGVuZHBvaW50IHVzZWQgdG8gc2Vu
49
- ZCB0aGlzIHJlcXVlc3QiLCJ0eXBlIjoiU3RyaW5nIn19LCJydWxlcyI6W3si
50
- Y29uZGl0aW9ucyI6W3siZm4iOiJhd3MucGFydGl0aW9uIiwiYXJndiI6W3si
51
- cmVmIjoiUmVnaW9uIn1dLCJhc3NpZ24iOiJQYXJ0aXRpb25SZXN1bHQifV0s
52
- InR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOlt7ImZuIjoi
53
- aXNTZXQiLCJhcmd2IjpbeyJyZWYiOiJFbmRwb2ludCJ9XX0seyJmbiI6InBh
54
- cnNlVVJMIiwiYXJndiI6W3sicmVmIjoiRW5kcG9pbnQifV0sImFzc2lnbiI6
55
- InVybCJ9XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6
56
- W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRklQ
57
- UyJ9LHRydWVdfV0sImVycm9yIjoiSW52YWxpZCBDb25maWd1cmF0aW9uOiBG
58
- SVBTIGFuZCBjdXN0b20gZW5kcG9pbnQgYXJlIG5vdCBzdXBwb3J0ZWQiLCJ0
59
- eXBlIjoiZXJyb3IifSx7ImNvbmRpdGlvbnMiOltdLCJ0eXBlIjoidHJlZSIs
60
- InJ1bGVzIjpbeyJjb25kaXRpb25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMi
61
- LCJhcmd2IjpbeyJyZWYiOiJVc2VEdWFsU3RhY2sifSx0cnVlXX1dLCJlcnJv
62
- ciI6IkludmFsaWQgQ29uZmlndXJhdGlvbjogRHVhbHN0YWNrIGFuZCBjdXN0
63
- b20gZW5kcG9pbnQgYXJlIG5vdCBzdXBwb3J0ZWQiLCJ0eXBlIjoiZXJyb3Ii
64
- fSx7ImNvbmRpdGlvbnMiOltdLCJlbmRwb2ludCI6eyJ1cmwiOnsicmVmIjoi
65
- RW5kcG9pbnQifSwicHJvcGVydGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlw
66
- ZSI6ImVuZHBvaW50In1dfV19LHsiY29uZGl0aW9ucyI6W3siZm4iOiJib29s
67
- ZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRklQUyJ9LHRydWVdfSx7
68
- ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt7InJlZiI6IlVzZUR1YWxT
69
- dGFjayJ9LHRydWVdfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRp
70
- dGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsi
71
- Zm4iOiJnZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0
72
- In0sInN1cHBvcnRzRklQUyJdfV19LHsiZm4iOiJib29sZWFuRXF1YWxzIiwi
73
- YXJndiI6W3RydWUseyJmbiI6ImdldEF0dHIiLCJhcmd2IjpbeyJyZWYiOiJQ
74
- YXJ0aXRpb25SZXN1bHQifSwic3VwcG9ydHNEdWFsU3RhY2siXX1dfV0sInR5
75
- cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOltdLCJlbmRwb2lu
76
- dCI6eyJ1cmwiOiJodHRwczovL3Jla29nbml0aW9uLWZpcHMue1JlZ2lvbn0u
77
- e1BhcnRpdGlvblJlc3VsdCNkdWFsU3RhY2tEbnNTdWZmaXh9IiwicHJvcGVy
78
- dGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVuZHBvaW50In1dfSx7
79
- ImNvbmRpdGlvbnMiOltdLCJlcnJvciI6IkZJUFMgYW5kIER1YWxTdGFjayBh
80
- cmUgZW5hYmxlZCwgYnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90IHN1cHBv
81
- cnQgb25lIG9yIGJvdGgiLCJ0eXBlIjoiZXJyb3IifV19LHsiY29uZGl0aW9u
82
- cyI6W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNl
83
- RklQUyJ9LHRydWVdfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRp
84
- dGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsi
85
- Zm4iOiJnZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0
86
- In0sInN1cHBvcnRzRklQUyJdfV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6
87
- W3siY29uZGl0aW9ucyI6W10sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNv
88
- bmRpdGlvbnMiOlt7ImZuIjoic3RyaW5nRXF1YWxzIiwiYXJndiI6W3sicmVm
89
- IjoiUmVnaW9uIn0sInJla29nbml0aW9uLmNhLWNlbnRyYWwtMSJdfV0sImVu
90
- ZHBvaW50Ijp7InVybCI6Imh0dHBzOi8vcmVrb2duaXRpb24tZmlwcy5jYS1j
91
- ZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsInByb3BlcnRpZXMiOnt9LCJoZWFk
92
- ZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9LHsiY29uZGl0aW9ucyI6W3si
93
- Zm4iOiJzdHJpbmdFcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJSZWdpb24ifSwi
94
- cmVrb2duaXRpb24udXMtZWFzdC0xIl19XSwiZW5kcG9pbnQiOnsidXJsIjoi
95
- aHR0cHM6Ly9yZWtvZ25pdGlvbi1maXBzLnVzLWVhc3QtMS5hbWF6b25hd3Mu
96
- Y29tIiwicHJvcGVydGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVu
97
- ZHBvaW50In0seyJjb25kaXRpb25zIjpbeyJmbiI6InN0cmluZ0VxdWFscyIs
98
- ImFyZ3YiOlt7InJlZiI6IlJlZ2lvbiJ9LCJyZWtvZ25pdGlvbi51cy1lYXN0
99
- LTIiXX1dLCJlbmRwb2ludCI6eyJ1cmwiOiJodHRwczovL3Jla29nbml0aW9u
100
- LWZpcHMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20iLCJwcm9wZXJ0aWVzIjp7
101
- fSwiaGVhZGVycyI6e319LCJ0eXBlIjoiZW5kcG9pbnQifSx7ImNvbmRpdGlv
102
- bnMiOlt7ImZuIjoic3RyaW5nRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiUmVn
103
- aW9uIn0sInJla29nbml0aW9uLnVzLXdlc3QtMSJdfV0sImVuZHBvaW50Ijp7
104
- InVybCI6Imh0dHBzOi8vcmVrb2duaXRpb24tZmlwcy51cy13ZXN0LTEuYW1h
105
- em9uYXdzLmNvbSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5
106
- cGUiOiJlbmRwb2ludCJ9LHsiY29uZGl0aW9ucyI6W3siZm4iOiJzdHJpbmdF
107
- cXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJSZWdpb24ifSwicmVrb2duaXRpb24u
108
- dXMtd2VzdC0yIl19XSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly9yZWtv
109
- Z25pdGlvbi1maXBzLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tIiwicHJvcGVy
110
- dGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVuZHBvaW50In0seyJj
111
- b25kaXRpb25zIjpbeyJmbiI6InN0cmluZ0VxdWFscyIsImFyZ3YiOlt7InJl
112
- ZiI6IlJlZ2lvbiJ9LCJyZWtvZ25pdGlvbi51cy1nb3Ytd2VzdC0xIl19XSwi
113
- ZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly9yZWtvZ25pdGlvbi1maXBzLnVz
114
- LWdvdi13ZXN0LTEuYW1hem9uYXdzLmNvbSIsInByb3BlcnRpZXMiOnt9LCJo
115
- ZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9LHsiY29uZGl0aW9ucyI6
116
- W10sImVuZHBvaW50Ijp7InVybCI6Imh0dHBzOi8vcmVrb2duaXRpb24tZmlw
117
- cy57UmVnaW9ufS57UGFydGl0aW9uUmVzdWx0I2Ruc1N1ZmZpeH0iLCJwcm9w
118
- ZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBlIjoiZW5kcG9pbnQifV19
119
- XX0seyJjb25kaXRpb25zIjpbXSwiZXJyb3IiOiJGSVBTIGlzIGVuYWJsZWQg
120
- YnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90IHN1cHBvcnQgRklQUyIsInR5
121
- cGUiOiJlcnJvciJ9XX0seyJjb25kaXRpb25zIjpbeyJmbiI6ImJvb2xlYW5F
122
- cXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VEdWFsU3RhY2sifSx0cnVlXX1d
123
- LCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRpb25zIjpbeyJmbiI6
124
- ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1ZSx7ImZuIjoiZ2V0QXR0ciIs
125
- ImFyZ3YiOlt7InJlZiI6IlBhcnRpdGlvblJlc3VsdCJ9LCJzdXBwb3J0c0R1
126
- YWxTdGFjayJdfV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0
127
- aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6Imh0dHBzOi8vcmVrb2duaXRp
128
- b24ue1JlZ2lvbn0ue1BhcnRpdGlvblJlc3VsdCNkdWFsU3RhY2tEbnNTdWZm
129
- aXh9IiwicHJvcGVydGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVu
130
- ZHBvaW50In1dfSx7ImNvbmRpdGlvbnMiOltdLCJlcnJvciI6IkR1YWxTdGFj
131
- ayBpcyBlbmFibGVkIGJ1dCB0aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBzdXBw
132
- b3J0IER1YWxTdGFjayIsInR5cGUiOiJlcnJvciJ9XX0seyJjb25kaXRpb25z
133
- IjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly9yZWtvZ25pdGlvbi57
134
- UmVnaW9ufS57UGFydGl0aW9uUmVzdWx0I2Ruc1N1ZmZpeH0iLCJwcm9wZXJ0
135
- aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBlIjoiZW5kcG9pbnQifV19XX0=
136
-
137
- JSON
138
68
  end
139
69
  end