cdk-iam-floyd
Version:
AWS IAM policy statement generator with fluent interface for AWS CDK
1,091 lines • 98 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Deepracer = void 0;
const shared_1 = require("../../shared");
/**
* Statement provider for service [deepracer](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdeepracer.html).
*
* @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement
*/
class Deepracer extends shared_1.PolicyStatement {
/**
* Grants permission to add access for a private leaderboard
*
* Access Level: Write
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-manage-community-races.html
*/
toAddLeaderboardAccessPermission() {
return this.to('AddLeaderboardAccessPermission');
}
/**
* Grants permission to retrieve information of the KMS key that the user currently has assigned to their account
*
* Access Level: Read
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-admin-describe-account-key.html
*/
toAdminDescribeAccountKey() {
return this.to('AdminDescribeAccountKey');
}
/**
* Grants permission to get current admin multiuser configuration for this account
*
* Access Level: Read
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-admin-set-account-config.html
*/
toAdminGetAccountConfig() {
return this.to('AdminGetAccountConfig');
}
/**
* Grants permission to list all deepracer users with their associated resources created under this account
*
* Access Level: Read
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-admin-list-associated-resources.html
*/
toAdminListAssociatedResources() {
return this.to('AdminListAssociatedResources');
}
/**
* Grants permission to list user data for all users associated with this account
*
* Access Level: Read
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-admin-list-associated-users.html
*/
toAdminListAssociatedUsers() {
return this.to('AdminListAssociatedUsers');
}
/**
* Grants permission to manage a user associated with this account
*
* Access Level: Write
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-admin-manage-user.html
*/
toAdminManageUser() {
return this.to('AdminManageUser');
}
/**
* Grants permission to set configuration options for this account
*
* Access Level: Write
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-admin-set-account-config.html
*/
toAdminSetAccountConfig() {
return this.to('AdminSetAccountConfig');
}
/**
* Grants permission to update the KMS key that is assigned to the user's account
*
* Access Level: Write
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-admin-update-account-key.html
*/
toAdminUpdateAccountKey() {
return this.to('AdminUpdateAccountKey');
}
/**
* Grants permission to clone an existing DeepRacer model
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-console-train-evaluate-models.html#deepracer-clone-trained-model
*/
toCloneReinforcementLearningModel() {
return this.to('CloneReinforcementLearningModel');
}
/**
* Grants permission to create a DeepRacer car in your garage
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-choose-race-type.html
*/
toCreateCar() {
return this.to('CreateCar');
}
/**
* Grants permission to create a leaderboard
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-create-community-race.html
*/
toCreateLeaderboard() {
return this.to('CreateLeaderboard');
}
/**
* Grants permission to create an access token for a private leaderboard
*
* Access Level: Write
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-manage-community-races.html
*/
toCreateLeaderboardAccessToken() {
return this.to('CreateLeaderboardAccessToken');
}
/**
* Grants permission to submit a DeepRacer model to be evaluated for leaderboards
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-submit-model-to-leaderboard.html
*/
toCreateLeaderboardSubmission() {
return this.to('CreateLeaderboardSubmission');
}
/**
* Grants permission to create ra einforcement learning model for DeepRacer
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-get-started-training-model.html
*/
toCreateReinforcementLearningModel() {
return this.to('CreateReinforcementLearningModel');
}
/**
* Grants permission to delete a leaderboard
*
* Access Level: Write
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-manage-community-races.html
*/
toDeleteLeaderboard() {
return this.to('DeleteLeaderboard');
}
/**
* Grants permission to delete a DeepRacer model
*
* Access Level: Write
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-get-started-training-model.html
*/
toDeleteModel() {
return this.to('DeleteModel');
}
/**
* Grants permission to edit a leaderboard
*
* Access Level: Write
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-manage-community-races.html
*/
toEditLeaderboard() {
return this.to('EditLeaderboard');
}
/**
* Grants permission to get current multiuser configuration for this account
*
* Access Level: Read
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-admin-set-account-config.html
*/
toGetAccountConfig() {
return this.to('GetAccountConfig');
}
/**
* Grants permission to retrieve the user's alias for submitting a DeepRacer model to leaderboards
*
* Access Level: Read
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-submit-model-to-leaderboard.html
*/
toGetAlias() {
return this.to('GetAlias');
}
/**
* Grants permission to download artifacts for an existing DeepRacer model
*
* Access Level: Read
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-console-train-evaluate-models.html
*/
toGetAssetUrl() {
return this.to('GetAssetUrl');
}
/**
* Grants permission to retrieve a specific DeepRacer car from your garage
*
* Access Level: Read
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-choose-race-type.html
*/
toGetCar() {
return this.to('GetCar');
}
/**
* Grants permission to view all the DeepRacer cars in your garage
*
* Access Level: Read
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-choose-race-type.html
*/
toGetCars() {
return this.to('GetCars');
}
/**
* Grants permission to retrieve information about an existing DeepRacer model's evaluation jobs
*
* Access Level: Read
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-get-started-test-in-simulator.html
*/
toGetEvaluation() {
return this.to('GetEvaluation');
}
/**
* Grants permission to retrieve information about how the latest submitted DeepRacer model for a user performed on a leaderboard
*
* Access Level: Read
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-submit-model-to-leaderboard.html
*/
toGetLatestUserSubmission() {
return this.to('GetLatestUserSubmission');
}
/**
* Grants permission to retrieve information about leaderboards
*
* Access Level: Read
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-submit-model-to-leaderboard.html
*/
toGetLeaderboard() {
return this.to('GetLeaderboard');
}
/**
* Grants permission to retrieve information about an existing DeepRacer model
*
* Access Level: Read
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-get-started-training-model.html
*/
toGetModel() {
return this.to('GetModel');
}
/**
* Grants permission to retrieve information about private leaderboards
*
* Access Level: Read
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-join-community-race.html
*/
toGetPrivateLeaderboard() {
return this.to('GetPrivateLeaderboard');
}
/**
* Grants permission to retrieve information about the performance of a user's DeepRacer model that got placed on a leaderboard
*
* Access Level: Read
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-submit-model-to-leaderboard.html
*/
toGetRankedUserSubmission() {
return this.to('GetRankedUserSubmission');
}
/**
* Grants permission to retrieve information about DeepRacer tracks
*
* Access Level: Read
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-console-train-evaluate-models.html
*/
toGetTrack() {
return this.to('GetTrack');
}
/**
* Grants permission to retrieve information about an existing DeepRacer model's training job
*
* Access Level: Read
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-get-started-training-model.html
*/
toGetTrainingJob() {
return this.to('GetTrainingJob');
}
/**
* Grants permission to import a reinforcement learning model for DeepRacer
*
* Access Level: Write
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-troubleshooting-service-migration-errors.html
*/
toImportModel() {
return this.to('ImportModel');
}
/**
* Grants permission to list a DeepRacer model's evaluation jobs
*
* Access Level: Read
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-get-started-test-in-simulator.html
*/
toListEvaluations() {
return this.to('ListEvaluations');
}
/**
* Grants permission to list all the user's leaderboard evaluation jobs for a leaderboard
*
* Access Level: Read
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-submit-model-to-leaderboard.html
*/
toListLeaderboardEvaluations() {
return this.to('ListLeaderboardEvaluations');
}
/**
* Grants permission to list all the DeepRacer model submissions of a user on a leaderboard
*
* Access Level: Read
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-submit-model-to-leaderboard.html
*/
toListLeaderboardSubmissions() {
return this.to('ListLeaderboardSubmissions');
}
/**
* Grants permission to list all the available leaderboards
*
* Access Level: Read
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-submit-model-to-leaderboard.html
*/
toListLeaderboards() {
return this.to('ListLeaderboards');
}
/**
* Grants permission to list all existing DeepRacer models
*
* Access Level: Read
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-get-started-training-model.html
*/
toListModels() {
return this.to('ListModels');
}
/**
* Grants permission to retrieve participant information about private leaderboards
*
* Access Level: Read
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-join-community-race.html
*/
toListPrivateLeaderboardParticipants() {
return this.to('ListPrivateLeaderboardParticipants');
}
/**
* Grants permission to list all the available private leaderboards
*
* Access Level: Read
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-join-community-race.html
*/
toListPrivateLeaderboards() {
return this.to('ListPrivateLeaderboards');
}
/**
* Grants permission to list all the subscribed private leaderboards
*
* Access Level: Read
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-join-community-race.html
*/
toListSubscribedPrivateLeaderboards() {
return this.to('ListSubscribedPrivateLeaderboards');
}
/**
* Grants permission to lists tag for a resource
*
* Access Level: Read
*
* Possible conditions:
* - .ifAwsResourceTag()
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-tagging.html
*/
toListTagsForResource() {
return this.to('ListTagsForResource');
}
/**
* Grants permission to list all DeepRacer tracks
*
* Access Level: Read
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-console-train-evaluate-models.html
*/
toListTracks() {
return this.to('ListTracks');
}
/**
* Grants permission to list a DeepRacer model's training jobs
*
* Access Level: Read
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-get-started-training-model.html
*/
toListTrainingJobs() {
return this.to('ListTrainingJobs');
}
/**
* Grants permission to migrate previous reinforcement learning models for DeepRacer
*
* Access Level: Write
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-troubleshooting-service-migration-errors.html
*/
toMigrateModels() {
return this.to('MigrateModels');
}
/**
* Grants permission to performs the leaderboard operation mentioned in the operation attribute
*
* Access Level: Write
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-perform-leaderboard-operation.html
*/
toPerformLeaderboardOperation() {
return this.to('PerformLeaderboardOperation');
}
/**
* Grants permission to remove access for a private leaderboard
*
* Access Level: Write
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-manage-community-races.html
*/
toRemoveLeaderboardAccessPermission() {
return this.to('RemoveLeaderboardAccessPermission');
}
/**
* Grants permission to set the user's alias for submitting a DeepRacer model to leaderboards
*
* Access Level: Write
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-submit-model-to-leaderboard.html
*/
toSetAlias() {
return this.to('SetAlias');
}
/**
* Grants permission to evaluate a DeepRacer model in a simulated environment
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-get-started-test-in-simulator.html
*/
toStartEvaluation() {
return this.to('StartEvaluation');
}
/**
* Grants permission to stop DeepRacer model evaluations
*
* Access Level: Write
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-get-started-test-in-simulator.html
*/
toStopEvaluation() {
return this.to('StopEvaluation');
}
/**
* Grants permission to stop training a DeepRacer model
*
* Access Level: Write
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-get-started-training-model.html
*/
toStopTrainingReinforcementLearningModel() {
return this.to('StopTrainingReinforcementLearningModel');
}
/**
* Grants permission to tag a resource
*
* Access Level: Tagging
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
* - .ifAwsResourceTag()
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-tagging.html
*/
toTagResource() {
return this.to('TagResource');
}
/**
* Grants permission to test reward functions for correctness
*
* Access Level: Write
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-console-train-evaluate-models.html#deepracer-train-models-define-reward-function
*/
toTestRewardFunction() {
return this.to('TestRewardFunction');
}
/**
* Grants permission to untag a resource
*
* Access Level: Tagging
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-tagging.html
*/
toUntagResource() {
return this.to('UntagResource');
}
/**
* Grants permission to update a DeepRacer car in your garage
*
* Access Level: Write
*
* Possible conditions:
* - .ifUserToken()
* - .ifMultiUser()
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-choose-race-type.html
*/
toUpdateCar() {
return this.to('UpdateCar');
}
/**
* Adds a resource of type car to the statement
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-choose-race-type.html
*
* @param resourceId - Identifier for the resourceId.
* @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account.
* @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region.
* @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition.
*
* Possible conditions:
* - .ifAwsResourceTag()
*/
onCar(resourceId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:deepracer:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:car/${resourceId}`);
}
/**
* Adds a resource of type evaluation_job to the statement
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-get-started-test-in-simulator.html
*
* @param resourceId - Identifier for the resourceId.
* @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account.
* @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region.
* @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition.
*
* Possible conditions:
* - .ifAwsResourceTag()
*/
onEvaluationJob(resourceId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:deepracer:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:evaluation_job/${resourceId}`);
}
/**
* Adds a resource of type leaderboard to the statement
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-submit-model-to-leaderboard.html
*
* @param resourceId - Identifier for the resourceId.
* @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region.
* @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition.
*
* Possible conditions:
* - .ifAwsResourceTag()
*/
onLeaderboard(resourceId, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:deepracer:${region ?? this.defaultRegion}::leaderboard/${resourceId}`);
}
/**
* Adds a resource of type leaderboard_evaluation_job to the statement
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-submit-model-to-leaderboard.html
*
* @param resourceId - Identifier for the resourceId.
* @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account.
* @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region.
* @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition.
*
* Possible conditions:
* - .ifAwsResourceTag()
*/
onLeaderboardEvaluationJob(resourceId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:deepracer:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:leaderboard_evaluation_job/${resourceId}`);
}
/**
* Adds a resource of type reinforcement_learning_model to the statement
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-get-started-training-model.html
*
* @param resourceId - Identifier for the resourceId.
* @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account.
* @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region.
* @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition.
*
* Possible conditions:
* - .ifAwsResourceTag()
*/
onReinforcementLearningModel(resourceId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:deepracer:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:model/reinforcement_learning/${resourceId}`);
}
/**
* Adds a resource of type track to the statement
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-console-train-evaluate-models.html
*
* @param resourceId - Identifier for the resourceId.
* @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region.
* @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition.
*/
onTrack(resourceId, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:deepracer:${region ?? this.defaultRegion}::track/${resourceId}`);
}
/**
* Adds a resource of type training_job to the statement
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/deepracer-get-started-training-model.html
*
* @param resourceId - Identifier for the resourceId.
* @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account.
* @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region.
* @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition.
*
* Possible conditions:
* - .ifAwsResourceTag()
*/
onTrainingJob(resourceId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:deepracer:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:training_job/${resourceId}`);
}
/**
* Filters access by tag key-value pairs in the request
*
* https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag
*
* Applies to actions:
* - .toCloneReinforcementLearningModel()
* - .toCreateCar()
* - .toCreateLeaderboard()
* - .toCreateLeaderboardSubmission()
* - .toCreateReinforcementLearningModel()
* - .toStartEvaluation()
* - .toTagResource()
*
* @param tagKey The tag key to check
* @param value The value(s) to check
* @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike`
*/
ifAwsRequestTag(tagKey, value, operator) {
return this.if(`aws:RequestTag/${tagKey}`, value, operator ?? 'StringLike');
}
/**
* Filters access by tag key-value pairs attached to the resource
*
* https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag
*
* Applies to actions:
* - .toListTagsForResource()
* - .toTagResource()
*
* Applies to resource types:
* - car
* - evaluation_job
* - leaderboard
* - leaderboard_evaluation_job
* - reinforcement_learning_model
* - training_job
*
* @param tagKey The tag key to check
* @param value The value(s) to check
* @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike`
*/
ifAwsResourceTag(tagKey, value, operator) {
return this.if(`aws:ResourceTag/${tagKey}`, value, operator ?? 'StringLike');
}
/**
* Filters access by tag keys in the request
*
* https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys
*
* Applies to actions:
* - .toCloneReinforcementLearningModel()
* - .toCreateCar()
* - .toCreateLeaderboard()
* - .toCreateLeaderboardSubmission()
* - .toCreateReinforcementLearningModel()
* - .toStartEvaluation()
* - .toTagResource()
* - .toUntagResource()
*
* @param value The value(s) to check
* @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike`
*/
ifAwsTagKeys(value, operator) {
return this.if(`aws:TagKeys`, value, operator ?? 'StringLike');
}
/**
* Filters access by multiuser flag
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/reference_policies_iam-condition-keys.html#condition-keys-multiuser
*
* Applies to actions:
* - .toAddLeaderboardAccessPermission()
* - .toAdminDescribeAccountKey()
* - .toAdminUpdateAccountKey()
* - .toCloneReinforcementLearningModel()
* - .toCreateCar()
* - .toCreateLeaderboard()
* - .toCreateLeaderboardAccessToken()
* - .toCreateLeaderboardSubmission()
* - .toCreateReinforcementLearningModel()
* - .toDeleteLeaderboard()
* - .toDeleteModel()
* - .toEditLeaderboard()
* - .toGetAccountConfig()
* - .toGetAlias()
* - .toGetAssetUrl()
* - .toGetCar()
* - .toGetCars()
* - .toGetEvaluation()
* - .toGetLatestUserSubmission()
* - .toGetLeaderboard()
* - .toGetModel()
* - .toGetPrivateLeaderboard()
* - .toGetRankedUserSubmission()
* - .toGetTrainingJob()
* - .toImportModel()
* - .toListEvaluations()
* - .toListLeaderboardEvaluations()
* - .toListLeaderboardSubmissions()
* - .toListLeaderboards()
* - .toListModels()
* - .toListPrivateLeaderboardParticipants()
* - .toListPrivateLeaderboards()
* - .toListSubscribedPrivateLeaderboards()
* - .toListTagsForResource()
* - .toListTrainingJobs()
* - .toPerformLeaderboardOperation()
* - .toRemoveLeaderboardAccessPermission()
* - .toSetAlias()
* - .toStartEvaluation()
* - .toStopEvaluation()
* - .toStopTrainingReinforcementLearningModel()
* - .toTagResource()
* - .toUntagResource()
* - .toUpdateCar()
*
* @param value `true` or `false`. **Default:** `true`
*/
ifMultiUser(value) {
return this.if(`MultiUser`, (typeof value !== 'undefined' ? value : true), 'Bool');
}
/**
* Filters access by user token in the request
*
* https://docs.aws.amazon.com/deepracer/latest/developerguide/reference_policies_iam-condition-keys.html#condition-keys-usertoken
*
* Applies to actions:
* - .toAddLeaderboardAccessPermission()
* - .toAdminDescribeAccountKey()
* - .toAdminUpdateAccountKey()
* - .toCloneReinforcementLearningModel()
* - .toCreateCar()
* - .toCreateLeaderboard()
* - .toCreateLeaderboardAccessToken()
* - .toCreateLeaderboardSubmission()
* - .toCreateReinforcementLearningModel()
* - .toDeleteLeaderboard()
* - .toDeleteModel()
* - .toEditLeaderboard()
* - .toGetAccountConfig()
* - .toGetAlias()
* - .toGetAssetUrl()
* - .toGetCar()
* - .toGetCars()
* - .toGetEvaluation()
* - .toGetLatestUserSubmission()
* - .toGetLeaderboard()
* - .toGetModel()
* - .toGetPrivateLeaderboard()
* - .toGetRankedUserSubmission()
* - .toGetTrainingJob()
* - .toImportModel()
* - .toListEvaluations()
* - .toListLeaderboardEvaluations()
* - .toListLeaderboardSubmissions()
* - .toListLeaderboards()
* - .toListModels()
* - .toListPrivateLeaderboardParticipants()
* - .toListPrivateLeaderboards()
* - .toListSubscribedPrivateLeaderboards()
* - .toListTagsForResource()
* - .toListTrainingJobs()
* - .toPerformLeaderboardOperation()
* - .toRemoveLeaderboardAccessPermission()
* - .toSetAlias()
* - .toStartEvaluation()
* - .toStopEvaluation()
* - .toStopTrainingReinforcementLearningModel()
* - .toTagResource()
* - .toUntagResource()
* - .toUpdateCar()
*
* @param value The value(s) to check
* @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike`
*/
ifUserToken(value, operator) {
return this.if(`UserToken`, value, operator ?? 'StringLike');
}
/**
* Statement provider for service [deepracer](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdeepracer.html).
*
*/
constructor(props) {
super(props);
this.servicePrefix = 'deepracer';
this.accessLevelList = {
Write: [
'AddLeaderboardAccessPermission',
'AdminManageUser',
'AdminSetAccountConfig',
'AdminUpdateAccountKey',
'CloneReinforcementLearningModel',
'CreateCar',
'CreateLeaderboard',
'CreateLeaderboardAccessToken',
'CreateLeaderboardSubmission',
'CreateReinforcementLearningModel',
'DeleteLeaderboard',
'DeleteModel',
'EditLeaderboard',
'ImportModel',
'MigrateModels',
'PerformLeaderboardOperation',
'RemoveLeaderboardAccessPermission',
'SetAlias',
'StartEvaluation',
'StopEvaluation',
'StopTrainingReinforcementLearningModel',
'TestRewardFunction',
'UpdateCar'
],
Read: [
'AdminDescribeAccountKey',
'AdminGetAccountConfig',
'AdminListAssociatedResources',
'AdminListAssociatedUsers',
'GetAccountConfig',
'GetAlias',
'GetAssetUrl',
'GetCar',
'GetCars',
'GetEvaluation',
'GetLatestUserSubmission',
'GetLeaderboard',
'GetModel',
'GetPrivateLeaderboard',
'GetRankedUserSubmission',
'GetTrack',
'GetTrainingJob',
'ListEvaluations',
'ListLeaderboardEvaluations',
'ListLeaderboardSubmissions',
'ListLeaderboards',
'ListModels',
'ListPrivateLeaderboardParticipants',
'ListPrivateLeaderboards',
'ListSubscribedPrivateLeaderboards',
'ListTagsForResource',
'ListTracks',
'ListTrainingJobs'
],
Tagging: [
'TagResource',
'UntagResource'
]
};
}
}
exports.Deepracer = Deepracer;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcHJhY2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGVlcHJhY2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHlDQUF5RDtBQUd6RDs7OztHQUlHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsd0JBQWU7SUFHNUM7Ozs7Ozs7Ozs7T0FVRztJQUNJLGdDQUFnQztRQUNyQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLHlCQUF5QjtRQUM5QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksdUJBQXVCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSw4QkFBOEI7UUFDbkMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLDBCQUEwQjtRQUMvQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksaUJBQWlCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSx1QkFBdUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSx1QkFBdUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNJLGlDQUFpQztRQUN0QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0ksV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNJLG1CQUFtQjtRQUN4QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLDhCQUE4QjtRQUNuQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0ksNkJBQTZCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSSxrQ0FBa0M7UUFDdkMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxtQkFBbUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLGlCQUFpQjtRQUN0QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLGtCQUFrQjtRQUN2QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksZUFBZTtRQUNwQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSx5QkFBeUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxVQUFVO1FBQ2YsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksdUJBQXVCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0kseUJBQXlCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxVQUFVO1FBQ2YsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxpQkFBaUI7UUFDdEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSw0QkFBNEI7UUFDakMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSw0QkFBNEI7UUFDakMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxZQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLG9DQUFvQztRQUN6QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsb0NBQW9DLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLHlCQUF5QjtRQUM5QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLG1DQUFtQztRQUN4QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsbUNBQW1DLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSSxxQkFBcUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksa0JBQWtCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxlQUFlO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLDZCQUE2QjtRQUNsQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLG1DQUFtQztRQUN4QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsbUNBQW1DLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNJLGlCQUFpQjtRQUN0QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLHdDQUF3QztRQUM3QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsd0NBQXdDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNJLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxvQkFBb0I7UUFDekIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ksZUFBZTtRQUNwQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBZ0VEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNJLEtBQUssQ0FBQyxVQUFrQixFQUFFLE9BQWdCLEVBQUUsTUFBZSxFQUFFLFNBQWtCO1FBQ3BGLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFRLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWlCLGNBQWUsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFjLElBQUssT0FBTyxJQUFJLElBQUksQ0FBQyxjQUFlLFFBQVMsVUFBVyxFQUFFLENBQUMsQ0FBQztJQUNwSyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0ksZUFBZSxDQUFDLFVBQWtCLEVBQUUsT0FBZ0IsRUFBRSxNQUFlLEVBQUUsU0FBa0I7UUFDOUYsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQVEsU0FBUyxJQUFJLElBQUksQ0FBQyxnQkFBaUIsY0FBZSxNQUFNLElBQUksSUFBSSxDQUFDLGFBQWMsSUFBSyxPQUFPLElBQUksSUFBSSxDQUFDLGNBQWUsbUJBQW9CLFVBQVcsRUFBRSxDQUFDLENBQUM7SUFDL0ssQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ksYUFBYSxDQUFDLFVBQWtCLEVBQUUsTUFBZSxFQUFFLFNBQWtCO1FBQzFFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFRLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWlCLGNBQWUsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFjLGlCQUFrQixVQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3pJLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSSwwQkFBMEIsQ0FBQyxVQUFrQixFQUFFLE9BQWdCLEVBQUUsTUFBZSxFQUFFLFNBQWtCO1FBQ3pHLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFRLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWlCLGNBQWUsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFjLElBQUssT0FBTyxJQUFJLElBQUksQ0FBQyxjQUFlLCtCQUFnQyxVQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzNMLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSSw0QkFBNEIsQ0FBQyxVQUFrQixFQUFFLE9BQWdCLEVBQUUsTUFBZSxFQUFFLFNBQWtCO1FBQzNHLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFRLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWlCLGNBQWUsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFjLElBQUssT0FBTyxJQUFJLElBQUksQ0FBQyxjQUFlLGlDQUFrQyxVQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzdMLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLE9BQU8sQ0FBQyxVQUFrQixFQUFFLE1BQWUsRUFBRSxTQUFrQjtRQUNwRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBUSxTQUFTLElBQUksSUFBSSxDQUFDLGdCQUFpQixjQUFlLE1BQU0sSUFBSSxJQUFJLENBQUMsYUFBYyxXQUFZLFVBQVcsRUFBRSxDQUFDLENBQUM7SUFDbkksQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNJLGFBQWEsQ0FBQyxVQUFrQixFQUFFLE9BQWdCLEVBQUUsTUFBZSxFQUFFLFNBQWtCO1FBQzVGLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFRLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWlCLGNBQWUsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFjLElBQUssT0FBTyxJQUFJLElBQUksQ0FBQyxjQUFlLGlCQUFrQixVQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzdLLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FpQkc7SUFDSSxlQUFlLENBQUMsTUFBYyxFQUFFLEtBQXdCLEVBQUUsUUFBNEI7UUFDM0YsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFtQixNQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxJQUFJLFlBQVksQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FvQkc7SUFDSSxnQkFBZ0IsQ0FBQyxNQUFjLEVBQUUsS0FBd0IsRUFBRSxRQUE0QjtRQUM1RixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW9CLE1BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLElBQUksWUFBWSxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7OztPQWlCRztJQUNJLFlBQVksQ0FBQyxLQUF3QixFQUFFLFFBQTRCO1FBQ3hFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLFFBQVEsSUFBSSxZQUFZLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FvREc7SUFDSSxXQUFXLENBQUMsS0FBZTtRQUNoQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxLQUFLLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FxREc7SUFDSSxXQUFXLENBQUMsS0FBd0IsRUFBRSxRQUE0QjtRQUN2RSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLElBQUksWUFBWSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVksS0FBZ0M7UUFDMUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBdm5DUixrQkFBYSxHQUFHLFdBQVcsQ0FBQztRQTB3QnpCLG9CQUFlLEdBQW9CO1lBQzNDLEtBQUssRUFBRTtnQkFDTCxnQ0FBZ0M7Z0JBQ2hDLGlCQUFpQjtnQkFDakIsdUJBQXVCO2dCQUN2Qix1QkFBdUI7Z0JBQ3ZCLGlDQUFpQztnQkFDakMsV0FBVztnQkFDWCxtQkFBbUI7Z0JBQ25CLDhCQUE4QjtnQkFDOUIsNkJBQTZCO2dCQUM3QixrQ0FBa0M7Z0JBQ2xDLG1CQUFtQjtnQkFDbkIsYUFBYTtnQkFDYixpQkFBaUI7Z0JBQ2pCLGFBQWE7Z0JBQ2IsZUFBZTtnQkFDZiw2QkFBNkI7Z0JBQzdCLG1DQUFtQztnQkFDbkMsVUFBVTtnQkFDVixpQkFBaUI7Z0JBQ2pCLGdCQUFnQjtnQkFDaEIsd0NBQXdDO2dCQUN4QyxvQkFBb0I7Z0JBQ3BCLFdBQVc7YUFDWjtZQUNELElBQUksRUFBRTtnQkFDSix5QkFBeUI7Z0JBQ3pCLHVCQUF1QjtnQkFDdkIsOEJBQThCO2dCQUM5QiwwQkFBMEI7Z0JBQzFCLGtCQUFrQjtnQkFDbEIsVUFBVTtnQkFDVixhQUFhO2dCQUNiLFFBQVE7Z0JBQ1IsU0FBUztnQkFDVCxlQUFlO2dCQUNmLHlCQUF5QjtnQkFDekIsZ0JBQWdCO2dCQUNoQixVQUFVO2dCQUNWLHVCQUF1QjtnQkFDdkIseUJBQXlCO2dCQUN6QixVQUFVO2dCQUNWLGdCQUFnQjtnQkFDaEIsaUJBQWlCO2dCQUNqQiw0QkFBNEI7Z0JBQzVCLDRCQUE0QjtnQkFDNUIsa0JBQWtCO2dCQUNsQixZQUFZO2dCQUNaLG9DQUFvQztnQkFDcEMseUJBQXlCO2dCQUN6QixtQ0FBbUM7Z0JBQ25DLHFCQUFxQjtnQkFDckIsWUFBWTtnQkFDWixrQkFBa0I7YUFDbkI7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsYUFBYTtnQkFDYixlQUFlO2FBQ2hCO1NBQ0YsQ0FBQztJQWtURixDQUFDO0NBQ0Y7QUExbkNELDhCQTBuQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY2Nlc3NMZXZlbExpc3QgfSBmcm9tICcuLi8uLi9zaGFyZWQvYWNjZXNzLWxldmVsJztcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCwgT3BlcmF0b3IgfSBmcm9tICcuLi8uLi9zaGFyZWQnO1xuaW1wb3J0IHsgYXdzX2lhbSBhcyBpYW0gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcblxuLyoqXG4gKiBTdGF0ZW1lbnQgcHJvdmlkZXIgZm9yIHNlcnZpY2UgW2RlZXByYWNlcl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3NlcnZpY2UtYXV0aG9yaXphdGlvbi9sYXRlc3QvcmVmZXJlbmNlL2xpc3RfYXdzZGVlcHJhY2VyLmh0bWwpLlxuICpcbiAqIEBwYXJhbSBzaWQgW1NJRF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL3JlZmVyZW5jZV9wb2xpY2llc19lbGVtZW50c19zaWQuaHRtbCkgb2YgdGhlIHN0YXRlbWVudFxuICovXG5leHBvcnQgY2xhc3MgRGVlcHJhY2VyIGV4dGVuZHMgUG9saWN5U3RhdGVtZW50IHtcbiAgcHVibGljIHNlcnZpY2VQcmVmaXggPSAnZGVlcHJhY2VyJztcblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gYWRkIGFjY2VzcyBmb3IgYSBwcml2YXRlIGxlYWRlcmJvYXJkXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZVc2VyVG9rZW4oKVxuICAgKiAtIC5pZk11bHRpVXNlcigpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9kZWVwcmFjZXIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2RlZXByYWNlci1tYW5hZ2UtY29tbXVuaXR5LXJhY2VzLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0FkZExlYWRlcmJvYXJkQWNjZXNzUGVybWlzc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQWRkTGVhZGVyYm9hcmRBY2Nlc3NQZXJtaXNzaW9uJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcmV0cmlldmUgaW5mb3JtYXRpb24gb2YgdGhlIEtNUyBrZXkgdGhhdCB0aGUgdXNlci