UNPKG

cdk-iam-floyd

Version:

AWS IAM policy statement generator with fluent interface for AWS CDK

458 lines 44.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Mechanicalturk = void 0; const shared_1 = require("../../shared"); /** * Statement provider for service [mechanicalturk](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonmechanicalturk.html). * * @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement */ class Mechanicalturk extends shared_1.PolicyStatement { /** * The AcceptQualificationRequest operation grants a Worker's request for a Qualification * * Access Level: Write * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_AcceptQualificationRequestOperation.html */ toAcceptQualificationRequest() { return this.to('AcceptQualificationRequest'); } /** * The ApproveAssignment operation approves the results of a completed assignment * * Access Level: Write * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_ApproveAssignmentOperation.html */ toApproveAssignment() { return this.to('ApproveAssignment'); } /** * The AssociateQualificationWithWorker operation gives a Worker a Qualification * * Access Level: Write * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_AssociateQualificationWithWorkerOperation.html */ toAssociateQualificationWithWorker() { return this.to('AssociateQualificationWithWorker'); } /** * The CreateAdditionalAssignmentsForHIT operation increases the maximum number of assignments of an existing HIT * * Access Level: Write * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_CreateAdditionalAssignmentsForHITOperation.html */ toCreateAdditionalAssignmentsForHIT() { return this.to('CreateAdditionalAssignmentsForHIT'); } /** * The CreateHIT operation creates a new HIT (Human Intelligence Task) * * Access Level: Write * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_CreateHITOperation.html */ toCreateHIT() { return this.to('CreateHIT'); } /** * The CreateHITType operation creates a new HIT type * * Access Level: Write * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_CreateHITTypeOperation.html */ toCreateHITType() { return this.to('CreateHITType'); } /** * The CreateHITWithHITType operation creates a new Human Intelligence Task (HIT) using an existing HITTypeID generated by the CreateHITType operation * * Access Level: Write * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_CreateHITWithHITTypeOperation.html */ toCreateHITWithHITType() { return this.to('CreateHITWithHITType'); } /** * The CreateQualificationType operation creates a new Qualification type, which is represented by a QualificationType data structure * * Access Level: Write * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_CreateQualificationTypeOperation.html */ toCreateQualificationType() { return this.to('CreateQualificationType'); } /** * The CreateWorkerBlock operation allows you to prevent a Worker from working on your HITs * * Access Level: Write * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_CreateWorkerBlockOperation.html */ toCreateWorkerBlock() { return this.to('CreateWorkerBlock'); } /** * The DeleteHIT operation disposes of a HIT that is no longer needed * * Access Level: Write * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_DeleteHITOperation.html */ toDeleteHIT() { return this.to('DeleteHIT'); } /** * The DeleteQualificationType disposes a Qualification type and disposes any HIT types that are associated with the Qualification type * * Access Level: Write * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_DeleteQualificationTypeOperation.html */ toDeleteQualificationType() { return this.to('DeleteQualificationType'); } /** * The DeleteWorkerBlock operation allows you to reinstate a blocked Worker to work on your HITs * * Access Level: Write * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_DeleteWorkerBlockOperation.html */ toDeleteWorkerBlock() { return this.to('DeleteWorkerBlock'); } /** * The DisassociateQualificationFromWorker revokes a previously granted Qualification from a user * * Access Level: Write * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_DisassociateQualificationFromWorkerOperation.html */ toDisassociateQualificationFromWorker() { return this.to('DisassociateQualificationFromWorker'); } /** * The GetAccountBalance operation retrieves the amount of money in your Amazon Mechanical Turk account * * Access Level: Read * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_GetAccountBalanceOperation.html */ toGetAccountBalance() { return this.to('GetAccountBalance'); } /** * The GetAssignment retrieves an assignment with an AssignmentStatus value of Submitted, Approved, or Rejected, using the assignment's ID * * Access Level: Read * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_GetAssignmentOperation.html */ toGetAssignment() { return this.to('GetAssignment'); } /** * The GetFileUploadURL operation generates and returns a temporary URL * * Access Level: Read * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_GetFileUploadURLOperation.html */ toGetFileUploadURL() { return this.to('GetFileUploadURL'); } /** * The GetHIT operation retrieves the details of the specified HIT * * Access Level: Read * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_GetHITOperation.html */ toGetHIT() { return this.to('GetHIT'); } /** * The GetQualificationScore operation returns the value of a Worker's Qualification for a given Qualification type * * Access Level: Read * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_GetQualificationScoreOperation.html */ toGetQualificationScore() { return this.to('GetQualificationScore'); } /** * The GetQualificationType operation retrieves information about a Qualification type using its ID * * Access Level: Read * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_GetQualificationTypeOperation.html */ toGetQualificationType() { return this.to('GetQualificationType'); } /** * The ListAssignmentsForHIT operation retrieves completed assignments for a HIT * * Access Level: List * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_ListAssignmentsForHITOperation.html */ toListAssignmentsForHIT() { return this.to('ListAssignmentsForHIT'); } /** * The ListBonusPayments operation retrieves the amounts of bonuses you have paid to Workers for a given HIT or assignment * * Access Level: List * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_ListBonusPaymentsOperation.html */ toListBonusPayments() { return this.to('ListBonusPayments'); } /** * The ListHITs operation returns all of a Requester's HITs * * Access Level: List * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_ListHITsOperation.html */ toListHITs() { return this.to('ListHITs'); } /** * The ListHITsForQualificationType operation returns the HITs that use the given QualififcationType for a QualificationRequirement * * Access Level: List * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_ListHITsForQualificationTypeOperation.html */ toListHITsForQualificationType() { return this.to('ListHITsForQualificationType'); } /** * The ListQualificationRequests operation retrieves requests for Qualifications of a particular Qualification type * * Access Level: List * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_ListQualificationRequestsOperation.html */ toListQualificationRequests() { return this.to('ListQualificationRequests'); } /** * The ListQualificationTypes operation searches for Qualification types using the specified search query, and returns a list of Qualification types * * Access Level: List * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_ListQualificationTypesOperation.html */ toListQualificationTypes() { return this.to('ListQualificationTypes'); } /** * The ListReviewPolicyResultsForHIT operation retrieves the computed results and the actions taken in the course of executing your Review Policies during a CreateHIT operation * * Access Level: List * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_ListReviewPolicyResultsForHITOperation.html */ toListReviewPolicyResultsForHIT() { return this.to('ListReviewPolicyResultsForHIT'); } /** * The ListReviewableHITs operation returns all of a Requester's HITs that have not been approved or rejected * * Access Level: List * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_ListReviewableHITsOperation.html */ toListReviewableHITs() { return this.to('ListReviewableHITs'); } /** * The ListWorkersBlocks operation retrieves a list of Workers who are blocked from working on your HITs * * Access Level: List * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_ListWorkerBlocksOperation.html */ toListWorkerBlocks() { return this.to('ListWorkerBlocks'); } /** * The ListWorkersWithQualificationType operation returns all of the Workers with a given Qualification type * * Access Level: List * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_ListWorkersWithQualificationTypeOperation.html */ toListWorkersWithQualificationType() { return this.to('ListWorkersWithQualificationType'); } /** * The NotifyWorkers operation sends an email to one or more Workers that you specify with the Worker ID * * Access Level: Write * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_NotifyWorkersOperation.html */ toNotifyWorkers() { return this.to('NotifyWorkers'); } /** * The RejectAssignment operation rejects the results of a completed assignment * * Access Level: Write * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_RejectAssignmentOperation.html */ toRejectAssignment() { return this.to('RejectAssignment'); } /** * The RejectQualificationRequest operation rejects a user's request for a Qualification * * Access Level: Write * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_RejectQualificationRequestOperation.html */ toRejectQualificationRequest() { return this.to('RejectQualificationRequest'); } /** * The SendBonus operation issues a payment of money from your account to a Worker * * Access Level: Write * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_SendBonusOperation.html */ toSendBonus() { return this.to('SendBonus'); } /** * The SendTestEventNotification operation causes Amazon Mechanical Turk to send a notification message as if a HIT event occurred, according to the provided notification specification * * Access Level: Write * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_SendTestEventNotificationOperation.html */ toSendTestEventNotification() { return this.to('SendTestEventNotification'); } /** * The UpdateExpirationForHIT operation allows you extend the expiration time of a HIT beyond is current expiration or expire a HIT immediately * * Access Level: Write * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_UpdateExpirationForHITOperation.html */ toUpdateExpirationForHIT() { return this.to('UpdateExpirationForHIT'); } /** * The UpdateHITReviewStatus operation toggles the status of a HIT * * Access Level: Write * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_UpdateHITReviewStatusOperation.html */ toUpdateHITReviewStatus() { return this.to('UpdateHITReviewStatus'); } /** * The UpdateHITTypeOfHIT operation allows you to change the HITType properties of a HIT * * Access Level: Write * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_UpdateHITTypeOfHITOperation.html */ toUpdateHITTypeOfHIT() { return this.to('UpdateHITTypeOfHIT'); } /** * The UpdateNotificationSettings operation creates, updates, disables or re-enables notifications for a HIT type * * Access Level: Write * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_UpdateNotificationSettingsOperation.html */ toUpdateNotificationSettings() { return this.to('UpdateNotificationSettings'); } /** * The UpdateQualificationType operation modifies the attributes of an existing Qualification type, which is represented by a QualificationType data structure * * Access Level: Write * * https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_UpdateQualificationTypeOperation.html */ toUpdateQualificationType() { return this.to('UpdateQualificationType'); } /** * Statement provider for service [mechanicalturk](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonmechanicalturk.html). * */ constructor(props) { super(props); this.servicePrefix = 'mechanicalturk'; this.accessLevelList = { Write: [ 'AcceptQualificationRequest', 'ApproveAssignment', 'AssociateQualificationWithWorker', 'CreateAdditionalAssignmentsForHIT', 'CreateHIT', 'CreateHITType', 'CreateHITWithHITType', 'CreateQualificationType', 'CreateWorkerBlock', 'DeleteHIT', 'DeleteQualificationType', 'DeleteWorkerBlock', 'DisassociateQualificationFromWorker', 'NotifyWorkers', 'RejectAssignment', 'RejectQualificationRequest', 'SendBonus', 'SendTestEventNotification', 'UpdateExpirationForHIT', 'UpdateHITReviewStatus', 'UpdateHITTypeOfHIT', 'UpdateNotificationSettings', 'UpdateQualificationType' ], Read: [ 'GetAccountBalance', 'GetAssignment', 'GetFileUploadURL', 'GetHIT', 'GetQualificationScore', 'GetQualificationType' ], List: [ 'ListAssignmentsForHIT', 'ListBonusPayments', 'ListHITs', 'ListHITsForQualificationType', 'ListQualificationRequests', 'ListQualificationTypes', 'ListReviewPolicyResultsForHIT', 'ListReviewableHITs', 'ListWorkerBlocks', 'ListWorkersWithQualificationType' ] }; } } exports.Mechanicalturk = Mechanicalturk; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVjaGFuaWNhbHR1cmsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtZWNoYW5pY2FsdHVyay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx5Q0FBK0M7QUFHL0M7Ozs7R0FJRztBQUNILE1BQWEsY0FBZSxTQUFRLHdCQUFlO0lBR2pEOzs7Ozs7T0FNRztJQUNJLDRCQUE0QjtRQUNqQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksbUJBQW1CO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxrQ0FBa0M7UUFDdkMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLG1DQUFtQztRQUN4QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsbUNBQW1DLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGVBQWU7UUFDcEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxzQkFBc0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHlCQUF5QjtRQUM5QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksbUJBQW1CO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLEVBQUUs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LEtBQUssRUFBRTtnQkFDTCw0QkFBNEI7Z0JBQzVCLG1CQUFtQjtnQkFDbkIsa0NBQWtDO2dCQUNsQyxtQ0FBbUM7Z0JBQ25DLFdBQVc7Z0JBQ1gsZUFBZTtnQkFDZixzQkFBc0I7Z0JBQ3RCLHlCQUF5QjtnQkFDekIsbUJBQW1CO2dCQUNuQixXQUFXO2dCQUNYLHlCQUF5QjtnQkFDekIsbUJBQW1CO2dCQUNuQixxQ0FBcUM7Z0JBQ3JDLGVBQWU7Z0JBQ2Ysa0JBQWtCO2dCQUNsQiw0QkFBNEI7Z0JBQzVCLFdBQVc7Z0JBQ1gsMkJBQTJCO2dCQUMzQix3QkFBd0I7Z0JBQ3hCLHVCQUF1QjtnQkFDdkIsb0JBQW9CO2dCQUNwQiw0QkFBNEI7Z0JBQzVCLHlCQUF5QjthQUMxQjtZQUNELElBQUksRUFBRTtnQkFDSixtQkFBbUI7Z0JBQ25CLGVBQWU7Z0JBQ2Ysa0JBQWtCO2dCQUNsQixRQUFRO2dCQUNSLHVCQUF1QjtnQkFDdkIsc0JBQXNCO2FBQ3ZCO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLHVCQUF1QjtnQkFDdkIsbUJBQW1CO2dCQUNuQixVQUFVO2dCQUNWLDhCQUE4QjtnQkFDOUIsMkJBQTJCO2dCQUMzQix3QkFBd0I7Z0JBQ3hCLCtCQUErQjtnQkFDL0Isb0JBQW9CO2dCQUNwQixrQkFBa0I7Z0JBQ2xCLGtDQUFrQzthQUNuQztTQUNGLENBQUM7SUFRRixDQUFDO0NBQ0Y7QUF2ZUQsd0NBdWVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWNjZXNzTGV2ZWxMaXN0IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2FjY2Vzcy1sZXZlbCc7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tICcuLi8uLi9zaGFyZWQnO1xuaW1wb3J0IHsgYXdzX2lhbSBhcyBpYW0gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcblxuLyoqXG4gKiBTdGF0ZW1lbnQgcHJvdmlkZXIgZm9yIHNlcnZpY2UgW21lY2hhbmljYWx0dXJrXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2VydmljZS1hdXRob3JpemF0aW9uL2xhdGVzdC9yZWZlcmVuY2UvbGlzdF9hbWF6b25tZWNoYW5pY2FsdHVyay5odG1sKS5cbiAqXG4gKiBAcGFyYW0gc2lkIFtTSURdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9yZWZlcmVuY2VfcG9saWNpZXNfZWxlbWVudHNfc2lkLmh0bWwpIG9mIHRoZSBzdGF0ZW1lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIE1lY2hhbmljYWx0dXJrIGV4dGVuZHMgUG9saWN5U3RhdGVtZW50IHtcbiAgcHVibGljIHNlcnZpY2VQcmVmaXggPSAnbWVjaGFuaWNhbHR1cmsnO1xuXG4gIC8qKlxuICAgKiBUaGUgQWNjZXB0UXVhbGlmaWNhdGlvblJlcXVlc3Qgb3BlcmF0aW9uIGdyYW50cyBhIFdvcmtlcidzIHJlcXVlc3QgZm9yIGEgUXVhbGlmaWNhdGlvblxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NNZWNoVHVyay9sYXRlc3QvQVdTTXR1cmtBUEkvQXBpUmVmZXJlbmNlX0FjY2VwdFF1YWxpZmljYXRpb25SZXF1ZXN0T3BlcmF0aW9uLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0FjY2VwdFF1YWxpZmljYXRpb25SZXF1ZXN0KCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdBY2NlcHRRdWFsaWZpY2F0aW9uUmVxdWVzdCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBcHByb3ZlQXNzaWdubWVudCBvcGVyYXRpb24gYXBwcm92ZXMgdGhlIHJlc3VsdHMgb2YgYSBjb21wbGV0ZWQgYXNzaWdubWVudFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NNZWNoVHVyay9sYXRlc3QvQVdTTXR1cmtBUEkvQXBpUmVmZXJlbmNlX0FwcHJvdmVBc3NpZ25tZW50T3BlcmF0aW9uLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0FwcHJvdmVBc3NpZ25tZW50KCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdBcHByb3ZlQXNzaWdubWVudCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBc3NvY2lhdGVRdWFsaWZpY2F0aW9uV2l0aFdvcmtlciBvcGVyYXRpb24gZ2l2ZXMgYSBXb3JrZXIgYSBRdWFsaWZpY2F0aW9uXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU01lY2hUdXJrL2xhdGVzdC9BV1NNdHVya0FQSS9BcGlSZWZlcmVuY2VfQXNzb2NpYXRlUXVhbGlmaWNhdGlvbldpdGhXb3JrZXJPcGVyYXRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQXNzb2NpYXRlUXVhbGlmaWNhdGlvbldpdGhXb3JrZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Fzc29jaWF0ZVF1YWxpZmljYXRpb25XaXRoV29ya2VyJyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIENyZWF0ZUFkZGl0aW9uYWxBc3NpZ25tZW50c0ZvckhJVCBvcGVyYXRpb24gaW5jcmVhc2VzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBhc3NpZ25tZW50cyBvZiBhbiBleGlzdGluZyBISVRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTTWVjaFR1cmsvbGF0ZXN0L0FXU010dXJrQVBJL0FwaVJlZmVyZW5jZV9DcmVhdGVBZGRpdGlvbmFsQXNzaWdubWVudHNGb3JISVRPcGVyYXRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ3JlYXRlQWRkaXRpb25hbEFzc2lnbm1lbnRzRm9ySElUKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDcmVhdGVBZGRpdGlvbmFsQXNzaWdubWVudHNGb3JISVQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQ3JlYXRlSElUIG9wZXJhdGlvbiBjcmVhdGVzIGEgbmV3IEhJVCAoSHVtYW4gSW50ZWxsaWdlbmNlIFRhc2spXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU01lY2hUdXJrL2xhdGVzdC9BV1NNdHVya0FQSS9BcGlSZWZlcmVuY2VfQ3JlYXRlSElUT3BlcmF0aW9uLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZUhJVCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlSElUJyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIENyZWF0ZUhJVFR5cGUgb3BlcmF0aW9uIGNyZWF0ZXMgYSBuZXcgSElUIHR5cGVcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTTWVjaFR1cmsvbGF0ZXN0L0FXU010dXJrQVBJL0FwaVJlZmVyZW5jZV9DcmVhdGVISVRUeXBlT3BlcmF0aW9uLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZUhJVFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZUhJVFR5cGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQ3JlYXRlSElUV2l0aEhJVFR5cGUgb3BlcmF0aW9uIGNyZWF0ZXMgYSBuZXcgSHVtYW4gSW50ZWxsaWdlbmNlIFRhc2sgKEhJVCkgdXNpbmcgYW4gZXhpc3RpbmcgSElUVHlwZUlEIGdlbmVyYXRlZCBieSB0aGUgQ3JlYXRlSElUVHlwZSBvcGVyYXRpb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTTWVjaFR1cmsvbGF0ZXN0L0FXU010dXJrQVBJL0FwaVJlZmVyZW5jZV9DcmVhdGVISVRXaXRoSElUVHlwZU9wZXJhdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9DcmVhdGVISVRXaXRoSElUVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlSElUV2l0aEhJVFR5cGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQ3JlYXRlUXVhbGlmaWNhdGlvblR5cGUgb3BlcmF0aW9uIGNyZWF0ZXMgYSBuZXcgUXVhbGlmaWNhdGlvbiB0eXBlLCB3aGljaCBpcyByZXByZXNlbnRlZCBieSBhIFF1YWxpZmljYXRpb25UeXBlIGRhdGEgc3RydWN0dXJlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU01lY2hUdXJrL2xhdGVzdC9BV1NNdHVya0FQSS9BcGlSZWZlcmVuY2VfQ3JlYXRlUXVhbGlmaWNhdGlvblR5cGVPcGVyYXRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ3JlYXRlUXVhbGlmaWNhdGlvblR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZVF1YWxpZmljYXRpb25UeXBlJyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIENyZWF0ZVdvcmtlckJsb2NrIG9wZXJhdGlvbiBhbGxvd3MgeW91IHRvIHByZXZlbnQgYSBXb3JrZXIgZnJvbSB3b3JraW5nIG9uIHlvdXIgSElUc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NNZWNoVHVyay9sYXRlc3QvQVdTTXR1cmtBUEkvQXBpUmVmZXJlbmNlX0NyZWF0ZVdvcmtlckJsb2NrT3BlcmF0aW9uLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZVdvcmtlckJsb2NrKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDcmVhdGVXb3JrZXJCbG9jaycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBEZWxldGVISVQgb3BlcmF0aW9uIGRpc3Bvc2VzIG9mIGEgSElUIHRoYXQgaXMgbm8gbG9uZ2VyIG5lZWRlZFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NNZWNoVHVyay9sYXRlc3QvQVdTTXR1cmtBUEkvQXBpUmVmZXJlbmNlX0RlbGV0ZUhJVE9wZXJhdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZWxldGVISVQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0RlbGV0ZUhJVCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBEZWxldGVRdWFsaWZpY2F0aW9uVHlwZSBkaXNwb3NlcyBhIFF1YWxpZmljYXRpb24gdHlwZSBhbmQgZGlzcG9zZXMgYW55IEhJVCB0eXBlcyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIFF1YWxpZmljYXRpb24gdHlwZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NNZWNoVHVyay9sYXRlc3QvQVdTTXR1cmtBUEkvQXBpUmVmZXJlbmNlX0RlbGV0ZVF1YWxpZmljYXRpb25UeXBlT3BlcmF0aW9uLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0RlbGV0ZVF1YWxpZmljYXRpb25UeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZWxldGVRdWFsaWZpY2F0aW9uVHlwZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBEZWxldGVXb3JrZXJCbG9jayBvcGVyYXRpb24gYWxsb3dzIHlvdSB0byByZWluc3RhdGUgYSBibG9ja2VkIFdvcmtlciB0byB3b3JrIG9uIHlvdXIgSElUc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NNZWNoVHVyay9sYXRlc3QvQVdTTXR1cmtBUEkvQXBpUmVmZXJlbmNlX0RlbGV0ZVdvcmtlckJsb2NrT3BlcmF0aW9uLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0RlbGV0ZVdvcmtlckJsb2NrKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZWxldGVXb3JrZXJCbG9jaycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBEaXNhc3NvY2lhdGVRdWFsaWZpY2F0aW9uRnJvbVdvcmtlciByZXZva2VzIGEgcHJldmlvdXNseSBncmFudGVkIFF1YWxpZmljYXRpb24gZnJvbSBhIHVzZXJcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTTWVjaFR1cmsvbGF0ZXN0L0FXU010dXJrQVBJL0FwaVJlZmVyZW5jZV9EaXNhc3NvY2lhdGVRdWFsaWZpY2F0aW9uRnJvbVdvcmtlck9wZXJhdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EaXNhc3NvY2lhdGVRdWFsaWZpY2F0aW9uRnJvbVdvcmtlcigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGlzYXNzb2NpYXRlUXVhbGlmaWNhdGlvbkZyb21Xb3JrZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgR2V0QWNjb3VudEJhbGFuY2Ugb3BlcmF0aW9uIHJldHJpZXZlcyB0aGUgYW1vdW50IG9mIG1vbmV5IGluIHlvdXIgQW1hem9uIE1lY2hhbmljYWwgVHVyayBhY2NvdW50XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTTWVjaFR1cmsvbGF0ZXN0L0FXU010dXJrQVBJL0FwaVJlZmVyZW5jZV9HZXRBY2NvdW50QmFsYW5jZU9wZXJhdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9HZXRBY2NvdW50QmFsYW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnR2V0QWNjb3VudEJhbGFuY2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgR2V0QXNzaWdubWVudCByZXRyaWV2ZXMgYW4gYXNzaWdubWVudCB3aXRoIGFuIEFzc2lnbm1lbnRTdGF0dXMgdmFsdWUgb2YgU3VibWl0dGVkLCBBcHByb3ZlZCwgb3IgUmVqZWN0ZWQsIHVzaW5nIHRoZSBhc3NpZ25tZW50J3MgSURcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NNZWNoVHVyay9sYXRlc3QvQVdTTXR1cmtBUEkvQXBpUmVmZXJlbmNlX0dldEFzc2lnbm1lbnRPcGVyYXRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvR2V0QXNzaWdubWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnR2V0QXNzaWdubWVudCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBHZXRGaWxlVXBsb2FkVVJMIG9wZXJhdGlvbiBnZW5lcmF0ZXMgYW5kIHJldHVybnMgYSB0ZW1wb3JhcnkgVVJMXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTTWVjaFR1cmsvbGF0ZXN0L0FXU010dXJrQVBJL0FwaVJlZmVyZW5jZV9HZXRGaWxlVXBsb2FkVVJMT3BlcmF0aW9uLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0dldEZpbGVVcGxvYWRVUkwoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0dldEZpbGVVcGxvYWRVUkwnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgR2V0SElUIG9wZXJhdGlvbiByZXRyaWV2ZXMgdGhlIGRldGFpbHMgb2YgdGhlIHNwZWNpZmllZCBISVRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NNZWNoVHVyay9sYXRlc3QvQVdTTXR1cmtBUEkvQXBpUmVmZXJlbmNlX0dldEhJVE9wZXJhdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9HZXRISVQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0dldEhJVCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBHZXRRdWFsaWZpY2F0aW9uU2NvcmUgb3BlcmF0aW9uIHJldHVybnMgdGhlIHZhbHVlIG9mIGEgV29ya2VyJ3MgUXVhbGlmaWNhdGlvbiBmb3IgYSBnaXZlbiBRdWFsaWZpY2F0aW9uIHR5cGVcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NNZWNoVHVyay9sYXRlc3QvQVdTTXR1cmtBUEkvQXBpUmVmZXJlbmNlX0dldFF1YWxpZmljYXRpb25TY29yZU9wZXJhdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9HZXRRdWFsaWZpY2F0aW9uU2NvcmUoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0dldFF1YWxpZmljYXRpb25TY29yZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBHZXRRdWFsaWZpY2F0aW9uVHlwZSBvcGVyYXRpb24gcmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGEgUXVhbGlmaWNhdGlvbiB0eXBlIHVzaW5nIGl0cyBJRFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU01lY2hUdXJrL2xhdGVzdC9BV1NNdHVya0FQSS9BcGlSZWZlcmVuY2VfR2V0UXVhbGlmaWNhdGlvblR5cGVPcGVyYXRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvR2V0UXVhbGlmaWNhdGlvblR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0dldFF1YWxpZmljYXRpb25UeXBlJyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIExpc3RBc3NpZ25tZW50c0ZvckhJVCBvcGVyYXRpb24gcmV0cmlldmVzIGNvbXBsZXRlZCBhc3NpZ25tZW50cyBmb3IgYSBISVRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NNZWNoVHVyay9sYXRlc3QvQVdTTXR1cmtBUEkvQXBpUmVmZXJlbmNlX0xpc3RBc3NpZ25tZW50c0ZvckhJVE9wZXJhdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0QXNzaWdubWVudHNGb3JISVQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0xpc3RBc3NpZ25tZW50c0ZvckhJVCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBMaXN0Qm9udXNQYXltZW50cyBvcGVyYXRpb24gcmV0cmlldmVzIHRoZSBhbW91bnRzIG9mIGJvbnVzZXMgeW91IGhhdmUgcGFpZCB0byBXb3JrZXJzIGZvciBhIGdpdmVuIEhJVCBvciBhc3NpZ25tZW50XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTTWVjaFR1cmsvbGF0ZXN0L0FXU010dXJrQVBJL0FwaVJlZmVyZW5jZV9MaXN0Qm9udXNQYXltZW50c09wZXJhdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0Qm9udXNQYXltZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTGlzdEJvbnVzUGF5bWVudHMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgTGlzdEhJVHMgb3BlcmF0aW9uIHJldHVybnMgYWxsIG9mIGEgUmVxdWVzdGVyJ3MgSElUc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IExpc3RcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU01lY2hUdXJrL2xhdGVzdC9BV1NNdHVya0FQSS9BcGlSZWZlcmVuY2VfTGlzdEhJVHNPcGVyYXRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvTGlzdEhJVHMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0xpc3RISVRzJyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIExpc3RISVRzRm9yUXVhbGlmaWNhdGlvblR5cGUgb3BlcmF0aW9uIHJldHVybnMgdGhlIEhJVHMgdGhhdCB1c2UgdGhlIGdpdmVuIFF1YWxpZmlmY2F0aW9uVHlwZSBmb3IgYSBRdWFsaWZpY2F0aW9uUmVxdWlyZW1lbnRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NNZWNoVHVyay9sYXRlc3QvQVdTTXR1cmtBUEkvQXBpUmVmZXJlbmNlX0xpc3RISVRzRm9yUXVhbGlmaWNhdGlvblR5cGVPcGVyYXRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvTGlzdEhJVHNGb3JRdWFsaWZpY2F0aW9uVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTGlzdEhJVHNGb3JRdWFsaWZpY2F0aW9uVHlwZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBMaXN0UXVhbGlmaWNhdGlvblJlcXVlc3RzIG9wZXJhdGlvbiByZXRyaWV2ZXMgcmVxdWVzdHMgZm9yIFF1YWxpZmljYXRpb25zIG9mIGEgcGFydGljdWxhciBRdWFsaWZpY2F0aW9uIHR5cGVcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NNZWNoVHVyay9sYXRlc3QvQVdTTXR1cmtBUEkvQXBpUmVmZXJlbmNlX0xpc3RRdWFsaWZpY2F0aW9uUmVxdWVzdHNPcGVyYXRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvTGlzdFF1YWxpZmljYXRpb25SZXF1ZXN0cygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTGlzdFF1YWxpZmljYXRpb25SZXF1ZXN0cycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBMaXN0UXVhbGlmaWNhdGlvblR5cGVzIG9wZXJhdGlvbiBzZWFyY2hlcyBmb3IgUXVhbGlmaWNhdGlvbiB0eXBlcyB1c2luZyB0aGUgc3BlY2lmaWVkIHNlYXJjaCBxdWVyeSwgYW5kIHJldHVybnMgYSBsaXN0IG9mIFF1YWxpZmljYXRpb24gdHlwZXNcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NNZWNoVHVyay9sYXRlc3QvQVdTTXR1cmtBUEkvQXBpUmVmZXJlbmNlX0xpc3RRdWFsaWZpY2F0aW9uVHlwZXNPcGVyYXRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvTGlzdFF1YWxpZmljYXRpb25UeXBlcygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTGlzdFF1YWxpZmljYXRpb25UeXBlcycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBMaXN0UmV2aWV3UG9saWN5UmVzdWx0c0ZvckhJVCBvcGVyYXRpb24gcmV0cmlldmVzIHRoZSBjb21wdXRlZCByZXN1bHRzIGFuZCB0aGUgYWN0aW9ucyB0YWtlbiBpbiB0aGUgY291cnNlIG9mIGV4ZWN1dGluZyB5b3VyIFJldmlldyBQb2xpY2llcyBkdXJpbmcgYSBDcmVhdGVISVQgb3BlcmF0aW9uXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTTWVjaFR1cmsvbGF0ZXN0L0FXU010dXJrQVBJL0FwaVJlZmVyZW5jZV9MaXN0UmV2aWV3UG9saWN5UmVzdWx0c0ZvckhJVE9wZXJhdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0UmV2aWV3UG9saWN5UmVzdWx0c0ZvckhJVCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTGlzdFJldmlld1BvbGljeVJlc3VsdHNGb3JISVQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgTGlzdFJldmlld2FibGVISVRzIG9wZXJhdGlvbiByZXR1cm5zIGFsbCBvZiBhIFJlcXVlc3RlcidzIEhJVHMgdGhhdCBoYXZlIG5vdCBiZWVuIGFwcHJvdmVkIG9yIHJlamVjdGVkXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTTWVjaFR1cmsvbGF0ZXN0L0FXU010dXJrQVBJL0FwaVJlZmVyZW5jZV9MaXN0UmV2aWV3YWJsZUhJVHNPcGVyYXRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvTGlzdFJldmlld2FibGVISVRzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdMaXN0UmV2aWV3YWJsZUhJVHMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgTGlzdFdvcmtlcnNCbG9ja3Mgb3BlcmF0aW9uIHJldHJpZXZlcyBhIGxpc3Qgb2YgV29ya2VycyB3aG8gYXJlIGJsb2NrZWQgZnJvbSB3b3JraW5nIG9uIHlvdXIgSElUc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IExpc3RcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU01lY2hUdXJrL2xhdGVzdC9BV1NNdHVya0FQSS9BcGlSZWZlcmVuY2VfTGlzdFdvcmtlckJsb2Nrc09wZXJhdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0V29ya2VyQmxvY2tzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdMaXN0V29ya2VyQmxvY2tzJyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIExpc3RXb3JrZXJzV2l0aFF1YWxpZmljYXRpb25UeXBlIG9wZXJhdGlvbiByZXR1cm5zIGFsbCBvZiB0aGUgV29ya2VycyB3aXRoIGEgZ2l2ZW4gUXVhbGlmaWNhdGlvbiB0eXBlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTTWVjaFR1cmsvbGF0ZXN0L0FXU010dXJrQVBJL0FwaVJlZmVyZW5jZV9MaXN0V29ya2Vyc1dpdGhRdWFsaWZpY2F0aW9uVHlwZU9wZXJhdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0V29ya2Vyc1dpdGhRdWFsaWZpY2F0aW9uVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTGlzdFdvcmtlcnNXaXRoUXVhbGlmaWNhdGlvblR5cGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgTm90aWZ5V29ya2VycyBvcGVyYXRpb24gc2VuZHMgYW4gZW1haWwgdG8gb25lIG9yIG1vcmUgV29ya2VycyB0aGF0IHlvdSBzcGVjaWZ5IHdpdGggdGhlIFdvcmtlciBJRFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NNZWNoVHVyay9sYXRlc3QvQVdTTXR1cmtBUEkvQXBpUmVmZXJlbmNlX05vdGlmeVdvcmtlcnNPcGVyYXRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvTm90aWZ5V29ya2VycygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTm90aWZ5V29ya2VycycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBSZWplY3RBc3NpZ25tZW50IG9wZXJhdGlvbiByZWplY3RzIHRoZSByZXN1bHRzIG9mIGEgY29tcGxldGVkIGFzc2lnbm1lbnRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTTWVjaFR1cmsvbGF0ZXN0L0FXU010dXJrQVBJL0FwaVJlZmVyZW5jZV9SZWplY3RBc3NpZ25tZW50T3BlcmF0aW9uLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1JlamVjdEFzc2lnbm1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1JlamVjdEFzc2lnbm1lbnQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgUmVqZWN0UXVhbGlmaWNhdGlvblJlcXVlc3Qgb3BlcmF0aW9uIHJlamVjdHMgYSB1c2VyJ3MgcmVxdWVzdCBmb3IgYSBRdWFsaWZpY2F0aW9uXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU01lY2hUdXJrL2xhdGVzdC9BV1NNdHVya0FQSS9BcGlSZWZlcmVuY2VfUmVqZWN0UXVhbGlmaWNhdGlvblJlcXVlc3RPcGVyYXRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvUmVqZWN0UXVhbGlmaWNhdGlvblJlcXVlc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1JlamVjdFF1YWxpZmljYXRpb25SZXF1ZXN0Jyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIFNlbmRCb251cyBvcGVyYXRpb24gaXNzdWVzIGEgcGF5bWVudCBvZiBtb25leSBmcm9tIHlvdXIgYWNjb3VudCB0byBhIFdvcmtlclxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NNZWNoVHVyay9sYXRlc3QvQVdTTXR1cmtBUEkvQXBpUmVmZXJlbmNlX1NlbmRCb251c09wZXJhdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9TZW5kQm9udXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1NlbmRCb251cycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBTZW5kVGVzdEV2ZW50Tm90aWZpY2F0aW9uIG9wZXJhdGlvbiBjYXVzZXMgQW1hem9uIE1lY2hhbmljYWwgVHVyayB0byBzZW5kIGEgbm90aWZpY2F0aW9uIG1lc3NhZ2UgYXMgaWYgYSBISVQgZXZlbnQgb2NjdXJyZWQsIGFjY29yZGluZyB0byB0aGUgcHJvdmlkZWQgbm90aWZpY2F0aW9uIHNwZWNpZmljYXRpb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTTWVjaFR1cmsvbGF0ZXN0L0FXU010dXJrQVBJL0FwaVJlZmVyZW5jZV9TZW5kVGVzdEV2ZW50Tm90aWZpY2F0aW9uT3BlcmF0aW9uLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1NlbmRUZXN0RXZlbnROb3RpZmljYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1NlbmRUZXN0RXZlbnROb3RpZmljYXRpb24nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgVXBkYXRlRXhwaXJhdGlvbkZvckhJVCBvcGVyYXRpb24gYWxsb3dzIHlvdSBleHRlbmQgdGhlIGV4cGlyYXRpb24gdGltZSBvZiBhIEhJVCBiZXlvbmQgaXMgY3VycmVudCBleHBpcmF0aW9uIG9yIGV4cGlyZSBhIEhJVCBpbW1lZGlhdGVseVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NNZWNoVHVyay9sYXRlc3QvQVdTTXR1cmtBUEkvQXBpUmVmZXJlbmNlX1VwZGF0ZUV4cGlyYXRpb25Gb3JISVRPcGVyYXRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvVXBkYXRlRXhwaXJhdGlvbkZvckhJVCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnVXBkYXRlRXhwaXJhdGlvbkZvckhJVCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBVcGRhdGVISVRSZXZpZXdTdGF0dXMgb3BlcmF0aW9uIHRvZ2dsZXMgdGhlIHN0YXR1cyBvZiBhIEhJVFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NNZWNoVHVyay9sYXRlc3QvQVdTTXR1cmtBUEkvQXBpUmVmZXJlbmNlX1VwZGF0ZUhJVFJldmlld1N0YXR1c09wZXJhdGlvbi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9VcGRhdGVISVRSZXZpZXdTdGF0dXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1VwZGF0ZUhJVFJldmlld1N0YXR1cycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBVcGRhdGVISVRUeXBlT2ZISVQgb3BlcmF0aW9uIGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBISVRUeXBlIHByb3BlcnRpZXMgb2YgYSBISVRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTTWVjaFR1cmsvbGF0ZXN0L0FXU010dXJrQVBJL0FwaVJlZmVyZW5jZV9VcGRhdGVISVRUeXBlT2ZISVRPcGVyYXRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvVXBkYXRlSElUVHlwZU9mSElUKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdVcGRhdGVISVRUeXBlT2ZISVQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgVXBkYXRlTm90aWZpY2F0aW9uU2V0dGluZ3Mgb3BlcmF0aW9uIGNyZWF0ZXMsIHVwZGF0ZXMsIGRpc2FibGVzIG9yIHJlLWVuYWJsZXMgbm90aWZpY2F0aW9ucyBmb3IgYSBISVQgdHlwZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NNZWNoVHVyay9sYXRlc3QvQVdTTXR1cmtBUEkvQXBpUmVmZXJlbmNlX1VwZGF0ZU5vdGlmaWNhdGlvblNldHRpbmdzT3BlcmF0aW9uLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1VwZGF0ZU5vdGlmaWNhdGlvblNldHRpbmdzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdVcGRhdGVOb3RpZmljYXRpb25TZXR0aW5ncycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBVcGRhdGVRdWFsaWZpY2F0aW9uVHlwZSBvcGVyYXRpb24gbW9kaWZpZXMgdGhlIGF0dHJpYnV0ZXMgb2YgYW4gZXhpc3RpbmcgUXVhbGlmaWNhdGlvbiB0eXBlLCB3aGljaCBpcyByZXByZXNlbnRlZCBieSBhIFF1YWxpZmljYXRpb25UeXBlIGRhdGEgc3RydWN0dXJlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU01lY2hUdXJrL2xhdGVzdC9BV1NNdHVya0FQSS9BcGlSZWZlcmVuY2VfVXBkYXRlUXVhbGlmaWNhdGlvblR5cGVPcGVyYXRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvVXBkYXRlUXVhbGlmaWNhdGlvblR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1VwZGF0ZVF1YWxpZmljYXRpb25UeXBlJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWNjZXNzTGV2ZWxMaXN0OiBBY2Nlc3NMZXZlbExpc3QgPSB7XG4gICAgV3JpdGU6IFtcbiAgICAgICdBY2NlcHRRdWFsaWZpY2F0aW9uUmVxdWVzdCcsXG4gICAgICAnQXBwcm92ZUFzc2lnbm1lbnQnLFxuICAgICAgJ0Fzc29jaWF0ZVF1YWxpZmljYXRpb25XaXRoV29ya2VyJyxcbiAgICAgICdDcmVhdGVBZGRpdGlvbmFsQXNzaWdubWVudHNGb3JISVQnLFxuICAgICAgJ0NyZWF0ZUhJVCcsXG4gICAgICAnQ3JlYXRlSElUVHlwZScsXG4gICAgICAnQ3JlYXRlSElUV2l0aEhJVFR5cGUnLFxuICAgICAgJ0NyZWF0ZVF1YWxpZmljYXRpb25UeXBlJyxcbiAgICAgICdDcmVhdGVXb3JrZXJCbG9jaycsXG4gICAgICAnRGVsZXRlSElUJyxcbiAgICAgICdEZWxldGVRdWFsaWZpY2F0aW9uVHlwZScsXG4gICAgICAnRGVsZXRlV29ya2VyQmxvY2snLFxuICAgICAgJ0Rpc2Fzc29jaWF0ZVF1YWxpZmljYXRpb25Gcm9tV29ya2VyJyxcbiAgICAgICdOb3RpZnlXb3JrZXJzJyxcbiAgICAgICdSZWplY3RBc3NpZ25tZW50JyxcbiAgICAgICdSZWplY3RRdWFsaWZpY2F0aW9uUmVxdWVzdCcsXG4gICAgICAnU2VuZEJvbnVzJyxcbiAgICAgICdTZW5kVGVzdEV2ZW50Tm90aWZpY2F0aW9uJyxcbiAgICAgICdVcGRhdGVFeHBpcmF0aW9uRm9ySElUJyxcbiAgICAgICdVcGRhdGVISVRSZXZpZXdTdGF0dXMnLFxuICAgICAgJ1VwZGF0ZUhJVFR5cGVPZkhJVCcsXG4gICAgICAnVXBkYXRlTm90aWZpY2F0aW9uU2V0dGluZ3MnLFxuICAgICAgJ1VwZGF0ZVF1YWxpZmljYXRpb25UeXBlJ1xuICAgIF0sXG4gICAgUmVhZDogW1xuICAgICAgJ0dldEFjY291bnRCYWxhbmNlJyxcbiAgICAgICdHZXRBc3NpZ25tZW50JyxcbiAgICAgICdHZXRGaWxlVXBsb2FkVVJMJyxcbiAgICAgICdHZXRISVQnLFxuICAgICAgJ0dldFF1YWxpZmljYXRpb25TY29yZScsXG4gICAgICAnR2V0UXVhbGlmaWNhdGlvblR5cGUnXG4gICAgXSxcbiAgICBMaXN0OiBbXG4gICAgICAnTGlzdEFzc2lnbm1lbnRzRm9ySElUJyxcbiAgICAgICdMaXN0Qm9udXNQYXltZW50cycsXG4gICAgICAnTGlzdEhJVHMnLFxuICAgICAgJ0xpc3RISVRzRm9yUXVhbGlmaWNhdGlvblR5cGUnLFxuICAgICAgJ0xpc3RRdWFsaWZpY2F0aW9uUmVxdWVzdHMnLFxuICAgICAgJ0xpc3RRdWFsaWZpY2F0aW9uVHlwZXMnLFxuICAgICAgJ0xpc3RSZXZpZXdQb2xpY3lSZXN1bHRzRm9ySElUJyxcbiAgICAgICdMaXN0UmV2aWV3YWJsZUhJVHMnLFxuICAgICAgJ0xpc3RXb3JrZXJCbG9ja3MnLFxuICAgICAgJ0xpc3RXb3JrZXJzV2l0aFF1YWxpZmljYXRpb25UeXBlJ1xuICAgIF1cbiAgfTtcblxuICAvKipcbiAgICogU3RhdGVtZW50IHByb3ZpZGVyIGZvciBzZXJ2aWNlIFttZWNoYW5pY2FsdHVya10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3NlcnZpY2UtYXV0aG9yaXphdGlvbi9sYXRlc3QvcmVmZXJlbmNlL2xpc3RfYW1hem9ubWVjaGFuaWNhbHR1cmsuaHRtbCkuXG4gICAqXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wcz86IGlhbS5Qb2xpY3lTdGF0ZW1lbnRQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgfVxufVxuIl19