vcomply-workflow-engine 6.1.2 → 6.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.mjs +7 -34
- package/esm2022/lib/constants/api.constants.mjs +6 -1
- package/esm2022/lib/constants/assets.constants.mjs +1 -2
- package/esm2022/lib/interfaces/frequency.interface.mjs +2 -0
- package/esm2022/lib/interfaces/iframe-type.mjs +7 -0
- package/esm2022/lib/interfaces/responsibilty.interface.mjs +1 -1
- package/esm2022/lib/more-option/more-option.component.mjs +26 -191
- package/esm2022/lib/report-a-case/services/report-a-case.service.mjs +3 -2
- package/esm2022/lib/report-a-case/workflow-case/workflow-case.component.mjs +4 -7
- package/esm2022/lib/services/common.service.mjs +40 -1
- package/esm2022/lib/services/iframe.service.mjs +14 -1
- package/esm2022/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.mjs +3 -6
- package/esm2022/lib/sharedComponents/category-list-selection/category-list-selection/category-list-selection.component.mjs +7 -7
- package/esm2022/lib/sharedComponents/category-list-selection/category-list-selection.module.mjs +27 -4
- package/esm2022/lib/sharedComponents/format-and-evidence/format-and-evidence.component.mjs +10 -21
- package/esm2022/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.mjs +5 -1
- package/esm2022/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.mjs +5 -1
- package/esm2022/lib/sharedComponents/frequency/frequency-container/frequency-container.component.mjs +5 -5
- package/esm2022/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.mjs +2 -1
- package/esm2022/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.mjs +6 -2
- package/esm2022/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.mjs +3 -2
- package/esm2022/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.mjs +3 -1
- package/esm2022/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.mjs +5 -1
- package/esm2022/lib/sharedComponents/frequency/frequency-random/frequency-random.component.mjs +9 -2
- package/esm2022/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.mjs +4 -2
- package/esm2022/lib/sharedComponents/frequency/frequency.service.mjs +267 -5
- package/esm2022/lib/sharedComponents/group-users-list/group-users-list.component.mjs +5 -2
- package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.component.mjs +48 -16
- package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.module.mjs +8 -4
- package/esm2022/lib/sharedComponents/list-container/list-container.component.mjs +52 -0
- package/esm2022/lib/sharedComponents/program-list/constant.mjs +27 -0
- package/esm2022/lib/sharedComponents/program-list/interfaces/data-source.interface.mjs +2 -0
- package/esm2022/lib/sharedComponents/program-list/interfaces/list-item.interface.mjs +2 -0
- package/esm2022/lib/sharedComponents/program-list/pipes/check-selected-items.pipes.mjs +23 -0
- package/esm2022/lib/sharedComponents/program-list/program-list/program-list.component.mjs +273 -0
- package/esm2022/lib/sharedComponents/program-list/program-list.module.mjs +51 -0
- package/esm2022/lib/sharedComponents/program-list/services/list-utils.service.mjs +27 -0
- package/esm2022/lib/sharedComponents/program-list/services/program-list-api.service.mjs +32 -0
- package/esm2022/lib/ui-kit/loaders/loaders.module.mjs +24 -0
- package/esm2022/lib/ui-kit/loaders/table-loader/table-loader.component.mjs +19 -0
- package/esm2022/lib/workflow/grc-object/grc-object-container/grc-object-container.component.mjs +45 -17
- package/esm2022/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.mjs +13 -10
- package/esm2022/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.mjs +62 -35
- package/esm2022/lib/workflow/shared/services/grc.service.mjs +15 -2
- package/esm2022/lib/workflow/shared/workflow-pipes/get-user-details.pipe.mjs +26 -0
- package/esm2022/lib/workflow/shared/workflow-pipes/workflow-pipes.module.mjs +8 -3
- package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +294 -453
- package/esm2022/lib/workflow-engine-container/api-constants.mjs +3 -2
- package/esm2022/lib/workflow-engine-container/workflow-engine-container.component.mjs +32 -53
- package/esm2022/lib/workflow-engine.module.mjs +11 -16
- package/esm2022/lib/workflow-policy/workflow-policy.component.mjs +46 -29
- package/esm2022/lib/workflow-program/constants.mjs +3 -11
- package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/pipes/tooltip-message.pipe.mjs +1 -7
- package/esm2022/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.mjs +13 -11
- package/esm2022/lib/workflow-program/workflow-program.component.mjs +340 -311
- package/esm2022/lib/workflow-services/policy.service.mjs +8 -9
- package/esm2022/lib/workflow-services/programs.service.mjs +26 -114
- package/esm2022/lib/workflow-services/responsibility.service.mjs +60 -56
- package/fesm2022/vcomply-workflow-engine.mjs +5848 -5338
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.d.ts +0 -1
- package/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.d.ts +0 -3
- package/lib/add-multiple-risk/add-multiple-risk.component.d.ts +0 -1
- package/lib/constants/api.constants.d.ts +5 -0
- package/lib/constants/assets.constants.d.ts +0 -1
- package/lib/interfaces/frequency.interface.d.ts +37 -0
- package/lib/interfaces/iframe-type.d.ts +5 -0
- package/lib/interfaces/responsibilty.interface.d.ts +13 -13
- package/lib/log-an-issue/log-an-issue.component.d.ts +0 -1
- package/lib/more-option/more-option.component.d.ts +0 -1
- package/lib/report-a-case/components/assignee/assignee.component.d.ts +0 -1
- package/lib/report-a-case/components/case-assignees/case-assignees.component.d.ts +0 -1
- package/lib/report-a-case/components/case-category/case-category.component.d.ts +0 -1
- package/lib/report-a-case/components/case-details/case-details.component.d.ts +0 -1
- package/lib/report-a-case/components/case-owners/case-owners.component.d.ts +0 -1
- package/lib/report-a-case/components/case-priority/case-priority.component.d.ts +0 -1
- package/lib/report-a-case/components/case-resolution-deadline/case-resolution-deadline.component.d.ts +0 -1
- package/lib/report-a-case/components/case-type-dropdown/case-dropdown.component.d.ts +0 -1
- package/lib/report-a-case/components/due-date/due-date.component.d.ts +0 -1
- package/lib/report-a-case/components/field-holder/field-holder.component.d.ts +0 -1
- package/lib/report-a-case/components/linked assessment/linked-assessment.component.d.ts +0 -1
- package/lib/report-a-case/components/linked-responsibilities/linked-responsibilities.component.d.ts +0 -1
- package/lib/report-a-case/components/rc-details/rc-details.component.d.ts +0 -1
- package/lib/report-a-case/components/report-date/report-date.component.d.ts +0 -1
- package/lib/report-a-case/workflow-case/workflow-case.component.d.ts +0 -1
- package/lib/services/common.service.d.ts +28 -0
- package/lib/services/iframe.service.d.ts +6 -0
- package/lib/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.d.ts +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/image-choice/image-choice.component.d.ts +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/thank-you/thank-you.component.d.ts +0 -1
- package/lib/sharedComponents/assessment-editor/components/build/welcome/welcome.component.d.ts +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic/logic.component.d.ts +0 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-image-choice/logic-image-choice.component.d.ts +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/thank-you/thank-you.component.d.ts +0 -1
- package/lib/sharedComponents/assessment-editor/components/preview/welcome/welcome.component.d.ts +0 -1
- package/lib/sharedComponents/assessment-editor/components/welcome-thankyou/welcome-thankyou.component.d.ts +0 -1
- package/lib/sharedComponents/assessment-list/assessment-list.component.d.ts +0 -1
- package/lib/sharedComponents/audit-category-list/audit-category-list.component.d.ts +0 -1
- package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts +0 -6
- package/lib/sharedComponents/category-list/category-list.component.d.ts +0 -1
- package/lib/sharedComponents/category-list-selection/category-list-selection/category-list-selection.component.d.ts +0 -1
- package/lib/sharedComponents/category-list-selection/category-list-selection.module.d.ts +5 -5
- package/lib/sharedComponents/category-multiselect/category-multi-select.component.d.ts +0 -1
- package/lib/sharedComponents/checkbox-list/checkbox-list.component.d.ts +0 -1
- package/lib/sharedComponents/format-and-evidence/format-and-evidence.component.d.ts +1 -5
- package/lib/sharedComponents/framework-list/framework-list.component.d.ts +0 -1
- package/lib/sharedComponents/frequency/frequency-random/frequency-random.component.d.ts +1 -0
- package/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.d.ts +0 -1
- package/lib/sharedComponents/frequency/frequency.service.d.ts +92 -2
- package/lib/sharedComponents/group-users-list/group-users-list.component.d.ts +0 -1
- package/lib/sharedComponents/link-program/link-program/link-program.component.d.ts +0 -1
- package/lib/sharedComponents/link-responsibility/link-responsibility.component.d.ts +2 -1
- package/lib/sharedComponents/link-responsibility/link-responsibility.module.d.ts +2 -1
- package/lib/sharedComponents/list-container/list-container.component.d.ts +9 -0
- package/lib/sharedComponents/owner-list/owner-list.component.d.ts +0 -1
- package/lib/sharedComponents/policy-access/policy-access.component.d.ts +0 -1
- package/lib/sharedComponents/program-list/constant.d.ts +20 -0
- package/lib/sharedComponents/program-list/interfaces/data-source.interface.d.ts +4 -0
- package/lib/sharedComponents/program-list/interfaces/list-item.interface.d.ts +5 -0
- package/lib/sharedComponents/program-list/pipes/check-selected-items.pipes.d.ts +7 -0
- package/lib/sharedComponents/program-list/program-list/program-list.component.d.ts +126 -0
- package/lib/sharedComponents/program-list/program-list.module.d.ts +15 -0
- package/lib/sharedComponents/program-list/services/list-utils.service.d.ts +7 -0
- package/lib/sharedComponents/program-list/services/program-list-api.service.d.ts +14 -0
- package/lib/sharedComponents/program-listing/program-listing.component.d.ts +0 -1
- package/lib/sharedComponents/radio-list/radio-list.component.d.ts +0 -1
- package/lib/sharedComponents/radio-list-with-pagination/radio-list.component.d.ts +0 -1
- package/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.d.ts +0 -1
- package/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.d.ts +0 -1
- package/lib/sharedComponents/review-frequency/review-frequency.component.d.ts +0 -1
- package/lib/sharedComponents/roles-list/roles-list.component.d.ts +0 -1
- package/lib/sharedComponents/select-approvers/select-approvers.component.d.ts +0 -1
- package/lib/sharedComponents/users-radio-list/users-radio-list.component.d.ts +0 -1
- package/lib/ui-kit/loaders/loaders.module.d.ts +8 -0
- package/lib/ui-kit/loaders/table-loader/table-loader.component.d.ts +9 -0
- package/lib/ui-kit/pagination/pagination/pagination.component.d.ts +0 -1
- package/lib/workflow/grc-object/grc-object-container/grc-object-container.component.d.ts +5 -1
- package/lib/workflow/shared/components/attributes/attributes-checkbox/attributes-checkbox.component.d.ts +0 -1
- package/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.d.ts +3 -1
- package/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.d.ts +6 -2
- package/lib/workflow/shared/services/grc.service.d.ts +1 -0
- package/lib/workflow/shared/workflow-pipes/get-user-details.pipe.d.ts +7 -0
- package/lib/workflow/shared/workflow-pipes/workflow-pipes.module.d.ts +3 -2
- package/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.d.ts +0 -1
- package/lib/workflow-assessment/workflow-assessment.component.d.ts +0 -1
- package/lib/workflow-compliance/workflow-compliance.component.d.ts +32 -11
- package/lib/workflow-engine-container/api-constants.d.ts +1 -0
- package/lib/workflow-engine-container/workflow-engine-container.component.d.ts +5 -2
- package/lib/workflow-engine.module.d.ts +3 -2
- package/lib/workflow-policy/workflow-policy.component.d.ts +9 -1
- package/lib/workflow-program/constants.d.ts +0 -3
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.d.ts +0 -1
- package/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.d.ts +0 -1
- package/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.d.ts +0 -1
- package/lib/workflow-program/create-program-ui/role-list/role-list.component.d.ts +0 -1
- package/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.d.ts +0 -1
- package/lib/workflow-program/workflow-program.component.d.ts +9 -11
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -2
- package/lib/workflow-services/policy.service.d.ts +1 -1
- package/lib/workflow-services/programs.service.d.ts +13 -54
- package/lib/workflow-services/responsibility.service.d.ts +17 -4
- package/lib/workflow-survey-form/workflow-survey-form.component.d.ts +0 -1
- package/package.json +1 -1
- package/esm2022/lib/constants/policy.constant.mjs +0 -6
- package/esm2022/lib/constants/regix.constants.mjs +0 -4
- package/esm2022/lib/constants/responsibility.mjs +0 -8
- package/esm2022/lib/interfaces/policy.interface.mjs +0 -2
- package/esm2022/lib/sharedComponents/pipes/risk-class.pipe.mjs +0 -19
- package/lib/constants/policy.constant.d.ts +0 -2
- package/lib/constants/regix.constants.d.ts +0 -3
- package/lib/constants/responsibility.d.ts +0 -7
- package/lib/interfaces/policy.interface.d.ts +0 -5
- package/lib/sharedComponents/pipes/risk-class.pipe.d.ts +0 -7
|
@@ -3,7 +3,6 @@ import { Injectable, Optional } from '@angular/core';
|
|
|
3
3
|
import { catchError, map, retry } from 'rxjs/operators';
|
|
4
4
|
import { BehaviorSubject, of, throwError } from 'rxjs';
|
|
5
5
|
import { API_URLS } from '../workflow-engine-container/api-constants';
|
|
6
|
-
import { FILE_SIZE } from '../constants/policy.constant';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
7
|
import * as i1 from "@angular/common/http";
|
|
9
8
|
import * as i2 from "./auth.service";
|
|
@@ -60,7 +59,7 @@ export class PolicyService {
|
|
|
60
59
|
submitPolicy(payload) {
|
|
61
60
|
const headers = new HttpHeaders().set('token', this.authService.getAuthorizationToken());
|
|
62
61
|
return this.http
|
|
63
|
-
.post(this.env.policyPost + 'policy/add', payload, { headers })
|
|
62
|
+
.post(this.env.policyPost + 'policy/add&serviceType=1', payload, { headers })
|
|
64
63
|
.pipe(retry(2));
|
|
65
64
|
}
|
|
66
65
|
getReviewers(payload) {
|
|
@@ -160,19 +159,15 @@ export class PolicyService {
|
|
|
160
159
|
headers = headers.append('token', this.authService.getAuthorizationToken());
|
|
161
160
|
return this.http.post(this.env.saveDoc + id, payload, { headers });
|
|
162
161
|
}
|
|
163
|
-
fileSizeLimit(file) {
|
|
164
|
-
const sizeInMB = file?.size || 0;
|
|
165
|
-
return sizeInMB <= FILE_SIZE.MAX_SIZE;
|
|
166
|
-
}
|
|
167
162
|
editPolicy(id) {
|
|
168
163
|
const headers = new HttpHeaders().set('token', this.authService.getAuthorizationToken());
|
|
169
164
|
return this.http
|
|
170
|
-
.get(this.env.policyGet + 'policy/list&obj_id=' + id, { headers })
|
|
165
|
+
.get(this.env.policyGet + 'policy/list&obj_id=' + id + '&serviceType=1', { headers })
|
|
171
166
|
.pipe(retry(2));
|
|
172
167
|
}
|
|
173
168
|
updatePolicy(payload, policyId) {
|
|
174
169
|
const headers = new HttpHeaders().set('token', this.authService.getAuthorizationToken());
|
|
175
|
-
return this.http.put(this.env.policyPut + 'policy/update&contractId=' + policyId, payload, { headers });
|
|
170
|
+
return this.http.put(this.env.policyPut + 'policy/update&contractId=' + policyId + '&serviceType=1', payload, { headers });
|
|
176
171
|
}
|
|
177
172
|
extractFile(extension, path, id) {
|
|
178
173
|
const headers = new HttpHeaders().set('token', this.authService.getAuthorizationToken());
|
|
@@ -195,6 +190,10 @@ export class PolicyService {
|
|
|
195
190
|
const headers = new HttpHeaders().set('token', this.authService.getAuthorizationToken());
|
|
196
191
|
return this.http.get(this.env?.policyGet + API_URLS.LINKED_POLICIES + policyId, { headers });
|
|
197
192
|
}
|
|
193
|
+
getLinkedPrograms(policyId) {
|
|
194
|
+
const headers = new HttpHeaders().set('token', this.authService.getAuthorizationToken());
|
|
195
|
+
return this.http.get(this.env?.complianceGet + API_URLS.LINKED_PROGRAMS + policyId, { headers });
|
|
196
|
+
}
|
|
198
197
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PolicyService, deps: [{ token: i1.HttpClient }, { token: i2.AuthService }, { token: i3.Configurations, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
199
198
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PolicyService, providedIn: 'root' }); }
|
|
200
199
|
}
|
|
@@ -206,4 +205,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
206
205
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.AuthService }, { type: i3.Configurations, decorators: [{
|
|
207
206
|
type: Optional
|
|
208
207
|
}] }]; } });
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1zZXJ2aWNlcy9wb2xpY3kuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsV0FBVyxFQUVYLFVBQVUsR0FDWCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7OztBQUl6RCxNQUFNLE9BQU8sYUFBYTtJQU94QixZQUNVLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3BCLE1BQXVCO1FBRjNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFQM0IsdUJBQWtCLEdBQXlCLElBQUksZUFBZSxDQUNuRSxJQUFJLENBQ0wsQ0FBQztRQUNLLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7UUFDakQsdUJBQWtCLEdBQVEsRUFBRSxDQUFDO1FBTWxDLElBQUksTUFBTSxFQUFFO1lBQ1YsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQ3ZDLE9BQU8sRUFBRSxDQUFDLElB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QWUsR0FBRyxRQUFRLEVBQ3pELEVBQUUsT0FBTyxFQUFFLENBQ1osQ0FBQztJQUNKLENBQUM7K0dBelRVLGFBQWE7bUhBQWIsYUFBYSxjQUZaLE1BQU07OzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFXSSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSHR0cENsaWVudCxcbiAgSHR0cEJhY2tlbmQsXG4gIEh0dHBIZWFkZXJzLFxuICBIdHRwRXJyb3JSZXNwb25zZSxcbiAgSHR0cFBhcmFtcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgcmV0cnkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSAnLi4vY29uZmlndXJhdGlvbnMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVBJX1VSTFMgfSBmcm9tICcuLi93b3JrZmxvdy1lbmdpbmUtY29udGFpbmVyL2FwaS1jb25zdGFudHMnO1xuaW1wb3J0IHsgRklMRV9TSVpFIH0gZnJvbSAnLi4vY29uc3RhbnRzL3BvbGljeS5jb25zdGFudCc7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUG9saWN5U2VydmljZSB7XG4gIGVudiE6IGFueTtcbiAgcHVibGljIFBvbGljeUNhdGVnb3J5TGlzdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oXG4gICAgbnVsbFxuICApO1xuICBwdWJsaWMgbGlua2VkUG9saWNpZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuICBwdWJsaWMgbGlua1JlbGF0ZVBvbGljaWVzOiBhbnkgPSB7fTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXG4gICkge1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIHRoaXMuZW52ID0gY29uZmlnLmVudkNvbmZpZztcbiAgICB9XG4gIH1cblxuICBnZXRDYXRlZ29yaWVzTGlzdCgpIHtcbiAgICBpZiAodGhpcy5Qb2xpY3lDYXRlZ29yeUxpc3Q/LmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLlBvbGljeUNhdGVnb3J5TGlzdD8udmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KHRoaXMuZW52LnBvbGljeUdldCArICdjYXRlZ29yeS9kcm9wZG93bkxpc3QmdHlwZT1jb250cmFjdCcsIHtcbiAgICAgICAgaGVhZGVycyxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXMpID0+IHtcbiAgICAgICAgICB0aGlzLlBvbGljeUNhdGVnb3J5TGlzdD8ubmV4dChyZXMpO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIFBvbGljeSBDYXRlZ29yeScsIGVycm9yKTtcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICAvLyBodHRwczovL2RldmFwaS52LWNvbXBseS5jb20vcG9saWN5Lz9tb2RlPWNhdGVnb3J5L2RldGFpbEFsbFxuICBnZXRXb3JrZmxvd0xpc3QocGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdChcbiAgICAgICAgdGhpcy5lbnYucG9saWN5UG9zdCArICdhcHByb3ZhbHdvcmtmbG93L2ZldGNoYWxsJyxcbiAgICAgICAgeyBjYXRlZ29yeV9pZDogcGF5bG9hZCwgc291cmNlX3BhZ2U6ICdXT1JLRkxPV19FTkdJTkUnIH0sXG4gICAgICAgIHsgaGVhZGVycyB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBnZXRQb2xpY3lMaXN0KHJlcTogYW55KSB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5lbnY/LnBvbGljeUdldDtcbiAgICBsZXQgcGFyYW1zID0gcmVxLnBhcmFtcyB8fCBuZXcgSHR0cFBhcmFtcygpO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgc3dpdGNoIChyZXEubWV0aG9kLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ2dldCc6XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAuZ2V0KHVybCArIHJlcS5tb2RlLCB7IGhlYWRlcnMsIHBhcmFtcyB9KVxuICAgICAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgcmVxdWVzdCBtZXRob2QnKSk7XG4gICAgfVxuICB9XG5cbiAgc3VibWl0UG9saWN5KHBheWxvYWQ6IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QodGhpcy5lbnYucG9saWN5UG9zdCArICdwb2xpY3kvYWRkJywgcGF5bG9hZCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBnZXRSZXZpZXdlcnMocGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdChcbiAgICAgICAgdGhpcy5lbnYucG9saWN5UG9zdCArICdjYXRlZ29yeS9kZXRhaWxBbGwnLFxuICAgICAgICB7IGNhdGVnb3J5SWQ6IHBheWxvYWQgfSxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuICBnZXRSQ0xpc3QoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudi5jb21wbGlhbmNlR2V0ICsgJ3Jlc3BvbnNpYmlsaXR5Q2VudGVyVHJlZScsIHtcbiAgICAgICAgaGVhZGVycyxcbiAgICAgIH0pXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICAvLyBnZXRPcmdhbml6YXRpb25Vc2VycygpIHtcbiAgLy8gICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCd0b2tlbicsIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCkpO1xuICAvLyAgIHJldHVybiB0aGlzLmh0dHBcbiAgLy8gICAgIC5nZXQ8YW55W10+KHRoaXMuZW52Lm9yZ2FuaXphdGlvbkdldCArICdvcmdhbml6YXRpb25Vc2VycyZmcm9tPXJpc2snLCB7XG4gIC8vICAgICAgIGhlYWRlcnMsXG4gIC8vICAgICB9KVxuICAvLyAgICAgLnBpcGUocmV0cnkoMikpO1xuICAvLyB9XG4gIGdldE9yZ2FuaXphdGlvblBlb3BsZSgpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KHRoaXMuZW52Lm9yZ2FuaXphdGlvbkdldCArICdwZW9wbGUnLCB7XG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9KVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0Q2F0ZWdvcnlXb3JrRmxvd3MoaWQ6IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4oXG4gICAgICAgIHRoaXMuZW52LnBvbGljeUdldCArICdhcHByb3ZhbHdvcmtmbG93L2ZldGNoYWxsJmNhdGVnb3J5X2lkPScgKyBpZCxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGZpbGVVcGxvYWRXb3Jrcm9vbShwYXlsb2FkOiBhbnksIGRlczogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55Pih0aGlzLmVudi5maWxlVXBsb2FkRW5kUG9pbnQgKyBkZXMsIHBheWxvYWQsIHtcbiAgICAgIGhlYWRlcnMsXG4gICAgfSk7XG4gIH1cblxuICBzYXZlVXBsb2FkZWRGaWxlcyhwYXlsb2FkOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KFxuICAgICAgdGhpcy5lbnYucG9saWN5UG9zdCArICdhdHRhY2htZW50L2NyZWF0ZScsXG4gICAgICBwYXlsb2FkLFxuICAgICAgeyBoZWFkZXJzIH1cbiAgICApO1xuICB9XG4gIHVwbG9hZEZpbGUoZGF0YTogYW55LCBpZDogc3RyaW5nLCBwYXRoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KHRoaXMuZW52LmZpbGVVcGxvYWQgKyAnP2lkPScgKyBpZCArICcmcGF0aD0nICsgcGF0aCwgZGF0YSwge1xuICAgICAgICBoZWFkZXJzLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIHVwbG9hZERvY3hGaWxlKGRhdGE6IGFueSwgaWQ6IHN0cmluZywgcGF0aDogc3RyaW5nKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdChcbiAgICAgICAgdGhpcy5lbnYuZG9jeFVwbG9hZCArXG4gICAgICAgICAgJz9pZD0nICtcbiAgICAgICAgICBpZCArXG4gICAgICAgICAgJyZwYXRoPScgK1xuICAgICAgICAgIHBhdGggK1xuICAgICAgICAgICcmYnlwYXNzLXRva2VuPXRydWUnLFxuICAgICAgICBkYXRhLFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgc2F2ZVBvbGljeURldGFpbHMoXG4gICAgdW5hbWU6IGFueSxcbiAgICB1aWQ6IGFueSxcbiAgICBpZDogYW55LFxuICAgIG5hbWU6IGFueSxcbiAgICBodG1sOiBhbnksXG4gICAgaXNTZW5kRm9yQXBwcm92ZTogYW55XG4gICkge1xuICAgIGNvbnN0IHBheWxvYWQgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBwb2xpY3lMb2dzOiBKU09OLnN0cmluZ2lmeShbXG4gICAgICAgIHtcbiAgICAgICAgICBwb2xpY3lOYW1lOiBuYW1lLFxuICAgICAgICAgIHBvbGljeURlc2M6IGh0bWwsXG4gICAgICAgICAgb2xkUG9saWN5TmFtZTogbmFtZSxcbiAgICAgICAgICB0eXBlOiAyLFxuICAgICAgICAgIGFjdGl2ZV9mbGFnOiAxLFxuICAgICAgICAgIG1vZGlmaWVkX21lbWJlcjogW3sgbW9kaWZpZXJfaWQ6IHVpZCwgbW9kaWZpZXJfbmFtZTogdW5hbWUgfV0sXG4gICAgICAgICAgbW9kaWZpZWRfYnk6IHVuYW1lLFxuICAgICAgICAgIG1vZGlmaWVkX29uOiBuZXcgRGF0ZSgpLFxuICAgICAgICB9LFxuICAgICAgXSksXG4gICAgICBwb2xpY3lEZXNjOiBKU09OLnN0cmluZ2lmeShbXG4gICAgICAgIHtcbiAgICAgICAgICBwb2xpY3lOYW1lOiBuYW1lLFxuICAgICAgICAgIHBvbGljeURlc2M6IGh0bWwsXG4gICAgICAgICAgb2xkUG9saWN5TmFtZTogbmFtZSxcbiAgICAgICAgICB0eXBlOiAyLFxuICAgICAgICAgIGFjdGl2ZV9mbGFnOiAxLFxuICAgICAgICAgIG1vZGlmaWVkX21lbWJlcjogW3sgbW9kaWZpZXJfaWQ6IHVpZCwgbW9kaWZpZXJfbmFtZTogdW5hbWUgfV0sXG4gICAgICAgICAgbW9kaWZpZWRfYnk6IHVuYW1lLFxuICAgICAgICAgIG1vZGlmaWVkX29uOiBuZXcgRGF0ZSgpLFxuICAgICAgICB9LFxuICAgICAgXSksXG4gICAgICBJc19hcHByb3ZhbDogaXNTZW5kRm9yQXBwcm92ZSxcbiAgICB9KTtcblxuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xuICAgIGhlYWRlcnMgPSBoZWFkZXJzLmFwcGVuZCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5lbnYuc2F2ZURvYyArIGlkLCBwYXlsb2FkLCB7IGhlYWRlcnMgfSk7XG4gIH1cblxuICBwdWJsaWMgZmlsZVNpemVMaW1pdChmaWxlOiBGaWxlKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2l6ZUluTUIgPSBmaWxlPy5zaXplIHx8IDA7XG4gICAgcmV0dXJuIHNpemVJbk1CIDw9IEZJTEVfU0laRS5NQVhfU0laRTtcbiAgfVxuXG4gIGVkaXRQb2xpY3koaWQ6IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnYucG9saWN5R2V0ICsgJ3BvbGljeS9saXN0Jm9ial9pZD0nICsgaWQsIHsgaGVhZGVycyB9KVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgdXBkYXRlUG9saWN5KHBheWxvYWQ6IGFueSwgcG9saWN5SWQ6IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8YW55PihcbiAgICAgIHRoaXMuZW52LnBvbGljeVB1dCArICdwb2xpY3kvdXBkYXRlJmNvbnRyYWN0SWQ9JyArIHBvbGljeUlkLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIHsgaGVhZGVycyB9XG4gICAgKTtcbiAgfVxuXG4gIGV4dHJhY3RGaWxlKGV4dGVuc2lvbjogYW55LCBwYXRoOiBhbnksIGlkOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIGlmIChleHRlbnNpb24gPT09ICdwZGYnIHx8IGV4dGVuc2lvbiA9PT0gJ1BERicpIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxuICAgICAgICB0aGlzLmVudi5saW5rUGRmICsgJz9maWxlUGF0aD0nICsgcGF0aCArICcmaWQ9JyArIGlkLFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgICB0aGlzLmVudi5saW5rRG9jLFxuICAgICAgICB7IGZpbGVQYXRoOiBwYXRoLCBpZCB9LFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBjcmVhdGVBcHByb3ZhbFdvcmtmbG93KHBheWxvYWQ6IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oXG4gICAgICB0aGlzLmVudi5wb2xpY3lQb3N0ICsgJ2FwcHJvdmFsd29ya2Zsb3cvY3JlYXRlJyxcbiAgICAgIHBheWxvYWQsXG4gICAgICB7IGhlYWRlcnMgfVxuICAgICk7XG4gIH1cbiAgZWRpdEFwcHJvdmFsV29ya2Zsb3cocGF5bG9hZDogYW55LCBpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihcbiAgICAgIHRoaXMuZW52LnBvbGljeVBvc3QgKyAnYXBwcm92YWx3b3JrZmxvdy91cGRhdGUmd29ya2Zsb3dJZD0nICsgaWQsXG4gICAgICBwYXlsb2FkLFxuICAgICAgeyBoZWFkZXJzIH1cbiAgICApO1xuICB9XG5cbiAgTGlua2VkUG9saWNpZXNMaXN0KHBvbGljeUlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxuICAgICAgdGhpcy5lbnY/LnBvbGljeUdldCArIEFQSV9VUkxTLkxJTktFRF9QT0xJQ0lFUyArIHBvbGljeUlkLFxuICAgICAgeyBoZWFkZXJzIH1cbiAgICApO1xuICB9XG59XG4iXX0=
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1zZXJ2aWNlcy9wb2xpY3kuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsV0FBVyxFQUVYLFVBQVUsR0FDWCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7O0FBSXRFLE1BQU0sT0FBTyxhQUFhO0lBT3hCLFlBQ1UsSUFBZ0IsRUFDaEIsV0FBd0IsRUFDcEIsTUFBdUI7UUFGM0IsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQVAzQix1QkFBa0IsR0FBeUIsSUFBSSxlQUFlLENBQ25FLElBQUksQ0FDTCxDQUFDO1FBQ0ssb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztRQUNqRCx1QkFBa0IsR0FBUSxFQUFFLENBQUM7UUFNbEMsSUFBSSxNQUFNLEVBQUU7WUFDVixJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDdkMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzNDO1FB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QUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQ3pDLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsYUFBYSxHQUFHLFFBQVEsQ0FBQyxlQUFlLEdBQUcsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNuRyxDQUFDOytHQTVUVSxhQUFhO21IQUFiLGFBQWEsY0FGWixNQUFNOzs0RkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBV0ksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEh0dHBDbGllbnQsXG4gIEh0dHBCYWNrZW5kLFxuICBIdHRwSGVhZGVycyxcbiAgSHR0cEVycm9yUmVzcG9uc2UsXG4gIEh0dHBQYXJhbXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHJldHJ5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9ucyB9IGZyb20gJy4uL2NvbmZpZ3VyYXRpb25zJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFQSV9VUkxTIH0gZnJvbSAnLi4vd29ya2Zsb3ctZW5naW5lLWNvbnRhaW5lci9hcGktY29uc3RhbnRzJztcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQb2xpY3lTZXJ2aWNlIHtcbiAgZW52ITogYW55O1xuICBwdWJsaWMgUG9saWN5Q2F0ZWdvcnlMaXN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihcbiAgICBudWxsXG4gICk7XG4gIHB1YmxpYyBsaW5rZWRQb2xpY2llcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gIHB1YmxpYyBsaW5rUmVsYXRlUG9saWNpZXM6IGFueSA9IHt9O1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgY29uZmlnPzogQ29uZmlndXJhdGlvbnNcbiAgKSB7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgdGhpcy5lbnYgPSBjb25maWcuZW52Q29uZmlnO1xuICAgIH1cbiAgfVxuXG4gIGdldENhdGVnb3JpZXNMaXN0KCkge1xuICAgIGlmICh0aGlzLlBvbGljeUNhdGVnb3J5TGlzdD8uZ2V0VmFsdWUoKSkge1xuICAgICAgcmV0dXJuIG9mKHRoaXMuUG9saWN5Q2F0ZWdvcnlMaXN0Py52YWx1ZSk7XG4gICAgfVxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnYucG9saWN5R2V0ICsgJ2NhdGVnb3J5L2Ryb3Bkb3duTGlzdCZ0eXBlPWNvbnRyYWN0Jywge1xuICAgICAgICBoZWFkZXJzLFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlcykgPT4ge1xuICAgICAgICAgIHRoaXMuUG9saWN5Q2F0ZWdvcnlMaXN0Py5uZXh0KHJlcyk7XG4gICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgUG9saWN5IENhdGVnb3J5JywgZXJyb3IpO1xuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIC8vIGh0dHBzOi8vZGV2YXBpLnYtY29tcGx5LmNvbS9wb2xpY3kvP21vZGU9Y2F0ZWdvcnkvZGV0YWlsQWxsXG4gIGdldFdvcmtmbG93TGlzdChwYXlsb2FkOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KFxuICAgICAgICB0aGlzLmVudi5wb2xpY3lQb3N0ICsgJ2FwcHJvdmFsd29ya2Zsb3cvZmV0Y2hhbGwnLFxuICAgICAgICB7IGNhdGVnb3J5X2lkOiBwYXlsb2FkLCBzb3VyY2VfcGFnZTogJ1dPUktGTE9XX0VOR0lORScgfSxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGdldFBvbGljeUxpc3QocmVxOiBhbnkpIHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmVudj8ucG9saWN5R2V0O1xuICAgIGxldCBwYXJhbXMgPSByZXEucGFyYW1zIHx8IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICBzd2l0Y2ggKHJlcS5tZXRob2QudG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSAnZ2V0JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgIC5nZXQodXJsICsgcmVxLm1vZGUsIHsgaGVhZGVycywgcGFyYW1zIH0pXG4gICAgICAgICAgLnBpcGUocmV0cnkoMikpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdVbnN1cHBvcnRlZCByZXF1ZXN0IG1ldGhvZCcpKTtcbiAgICB9XG4gIH1cblxuICBzdWJtaXRQb2xpY3kocGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdCh0aGlzLmVudi5wb2xpY3lQb3N0ICsgJ3BvbGljeS9hZGQmc2VydmljZVR5cGU9MScsIHBheWxvYWQsIHsgaGVhZGVycyB9KVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0UmV2aWV3ZXJzKHBheWxvYWQ6IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QoXG4gICAgICAgIHRoaXMuZW52LnBvbGljeVBvc3QgKyAnY2F0ZWdvcnkvZGV0YWlsQWxsJyxcbiAgICAgICAgeyBjYXRlZ29yeUlkOiBwYXlsb2FkIH0sXG4gICAgICAgIHsgaGVhZGVycyB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cbiAgZ2V0UkNMaXN0KCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnYuY29tcGxpYW5jZUdldCArICdyZXNwb25zaWJpbGl0eUNlbnRlclRyZWUnLCB7XG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9KVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgLy8gZ2V0T3JnYW5pemF0aW9uVXNlcnMoKSB7XG4gIC8vICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKTtcbiAgLy8gICByZXR1cm4gdGhpcy5odHRwXG4gIC8vICAgICAuZ2V0PGFueVtdPih0aGlzLmVudi5vcmdhbml6YXRpb25HZXQgKyAnb3JnYW5pemF0aW9uVXNlcnMmZnJvbT1yaXNrJywge1xuICAvLyAgICAgICBoZWFkZXJzLFxuICAvLyAgICAgfSlcbiAgLy8gICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgLy8gfVxuICBnZXRPcmdhbml6YXRpb25QZW9wbGUoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudi5vcmdhbml6YXRpb25HZXQgKyAncGVvcGxlJywge1xuICAgICAgICBoZWFkZXJzLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGdldENhdGVnb3J5V29ya0Zsb3dzKGlkOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KFxuICAgICAgICB0aGlzLmVudi5wb2xpY3lHZXQgKyAnYXBwcm92YWx3b3JrZmxvdy9mZXRjaGFsbCZjYXRlZ29yeV9pZD0nICsgaWQsXG4gICAgICAgIHsgaGVhZGVycyB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBmaWxlVXBsb2FkV29ya3Jvb20ocGF5bG9hZDogYW55LCBkZXM6IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4odGhpcy5lbnYuZmlsZVVwbG9hZEVuZFBvaW50ICsgZGVzLCBwYXlsb2FkLCB7XG4gICAgICBoZWFkZXJzLFxuICAgIH0pO1xuICB9XG5cbiAgc2F2ZVVwbG9hZGVkRmlsZXMocGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihcbiAgICAgIHRoaXMuZW52LnBvbGljeVBvc3QgKyAnYXR0YWNobWVudC9jcmVhdGUnLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIHsgaGVhZGVycyB9XG4gICAgKTtcbiAgfVxuICB1cGxvYWRGaWxlKGRhdGE6IGFueSwgaWQ6IHN0cmluZywgcGF0aDogc3RyaW5nKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdCh0aGlzLmVudi5maWxlVXBsb2FkICsgJz9pZD0nICsgaWQgKyAnJnBhdGg9JyArIHBhdGgsIGRhdGEsIHtcbiAgICAgICAgaGVhZGVycyxcbiAgICAgIH0pXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICB1cGxvYWREb2N4RmlsZShkYXRhOiBhbnksIGlkOiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QoXG4gICAgICAgIHRoaXMuZW52LmRvY3hVcGxvYWQgK1xuICAgICAgICAgICc/aWQ9JyArXG4gICAgICAgICAgaWQgK1xuICAgICAgICAgICcmcGF0aD0nICtcbiAgICAgICAgICBwYXRoICtcbiAgICAgICAgICAnJmJ5cGFzcy10b2tlbj10cnVlJyxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIHNhdmVQb2xpY3lEZXRhaWxzKFxuICAgIHVuYW1lOiBhbnksXG4gICAgdWlkOiBhbnksXG4gICAgaWQ6IGFueSxcbiAgICBuYW1lOiBhbnksXG4gICAgaHRtbDogYW55LFxuICAgIGlzU2VuZEZvckFwcHJvdmU6IGFueVxuICApIHtcbiAgICBjb25zdCBwYXlsb2FkID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgcG9saWN5TG9nczogSlNPTi5zdHJpbmdpZnkoW1xuICAgICAgICB7XG4gICAgICAgICAgcG9saWN5TmFtZTogbmFtZSxcbiAgICAgICAgICBwb2xpY3lEZXNjOiBodG1sLFxuICAgICAgICAgIG9sZFBvbGljeU5hbWU6IG5hbWUsXG4gICAgICAgICAgdHlwZTogMixcbiAgICAgICAgICBhY3RpdmVfZmxhZzogMSxcbiAgICAgICAgICBtb2RpZmllZF9tZW1iZXI6IFt7IG1vZGlmaWVyX2lkOiB1aWQsIG1vZGlmaWVyX25hbWU6IHVuYW1lIH1dLFxuICAgICAgICAgIG1vZGlmaWVkX2J5OiB1bmFtZSxcbiAgICAgICAgICBtb2RpZmllZF9vbjogbmV3IERhdGUoKSxcbiAgICAgICAgfSxcbiAgICAgIF0pLFxuICAgICAgcG9saWN5RGVzYzogSlNPTi5zdHJpbmdpZnkoW1xuICAgICAgICB7XG4gICAgICAgICAgcG9saWN5TmFtZTogbmFtZSxcbiAgICAgICAgICBwb2xpY3lEZXNjOiBodG1sLFxuICAgICAgICAgIG9sZFBvbGljeU5hbWU6IG5hbWUsXG4gICAgICAgICAgdHlwZTogMixcbiAgICAgICAgICBhY3RpdmVfZmxhZzogMSxcbiAgICAgICAgICBtb2RpZmllZF9tZW1iZXI6IFt7IG1vZGlmaWVyX2lkOiB1aWQsIG1vZGlmaWVyX25hbWU6IHVuYW1lIH1dLFxuICAgICAgICAgIG1vZGlmaWVkX2J5OiB1bmFtZSxcbiAgICAgICAgICBtb2RpZmllZF9vbjogbmV3IERhdGUoKSxcbiAgICAgICAgfSxcbiAgICAgIF0pLFxuICAgICAgSXNfYXBwcm92YWw6IGlzU2VuZEZvckFwcHJvdmUsXG4gICAgfSk7XG5cbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcbiAgICBoZWFkZXJzID0gaGVhZGVycy5hcHBlbmQoJ3Rva2VuJywgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuZW52LnNhdmVEb2MgKyBpZCwgcGF5bG9hZCwgeyBoZWFkZXJzIH0pO1xuICB9XG5cbiAgZWRpdFBvbGljeShpZDogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudi5wb2xpY3lHZXQgKyAncG9saWN5L2xpc3Qmb2JqX2lkPScgKyBpZCArICcmc2VydmljZVR5cGU9MScsIHsgaGVhZGVycyB9KVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgdXBkYXRlUG9saWN5KHBheWxvYWQ6IGFueSwgcG9saWN5SWQ6IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8YW55PihcbiAgICAgIHRoaXMuZW52LnBvbGljeVB1dCArICdwb2xpY3kvdXBkYXRlJmNvbnRyYWN0SWQ9JyArIHBvbGljeUlkICsgJyZzZXJ2aWNlVHlwZT0xJyxcbiAgICAgIHBheWxvYWQsXG4gICAgICB7IGhlYWRlcnMgfVxuICAgICk7XG4gIH1cblxuICBleHRyYWN0RmlsZShleHRlbnNpb246IGFueSwgcGF0aDogYW55LCBpZDogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICBpZiAoZXh0ZW5zaW9uID09PSAncGRmJyB8fCBleHRlbnNpb24gPT09ICdQREYnKSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgICAgdGhpcy5lbnYubGlua1BkZiArICc/ZmlsZVBhdGg9JyArIHBhdGggKyAnJmlkPScgKyBpZCxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcbiAgICAgICAgdGhpcy5lbnYubGlua0RvYyxcbiAgICAgICAgeyBmaWxlUGF0aDogcGF0aCwgaWQgfSxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlQXBwcm92YWxXb3JrZmxvdyhwYXlsb2FkOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KFxuICAgICAgdGhpcy5lbnYucG9saWN5UG9zdCArICdhcHByb3ZhbHdvcmtmbG93L2NyZWF0ZScsXG4gICAgICBwYXlsb2FkLFxuICAgICAgeyBoZWFkZXJzIH1cbiAgICApO1xuICB9XG4gIGVkaXRBcHByb3ZhbFdvcmtmbG93KHBheWxvYWQ6IGFueSwgaWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oXG4gICAgICB0aGlzLmVudi5wb2xpY3lQb3N0ICsgJ2FwcHJvdmFsd29ya2Zsb3cvdXBkYXRlJndvcmtmbG93SWQ9JyArIGlkLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIHsgaGVhZGVycyB9XG4gICAgKTtcbiAgfVxuXG4gIExpbmtlZFBvbGljaWVzTGlzdChwb2xpY3lJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgIHRoaXMuZW52Py5wb2xpY3lHZXQgKyBBUElfVVJMUy5MSU5LRURfUE9MSUNJRVMgKyBwb2xpY3lJZCxcbiAgICAgIHsgaGVhZGVycyB9XG4gICAgKTtcbiAgfVxuXG4gIGdldExpbmtlZFByb2dyYW1zKHBvbGljeUlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuZW52Py5jb21wbGlhbmNlR2V0ICsgQVBJX1VSTFMuTElOS0VEX1BST0dSQU1TICsgcG9saWN5SWQsIHsgaGVhZGVycyB9KTtcbiAgfVxufVxuIl19
|
|
@@ -101,124 +101,28 @@ export class ProgramsService {
|
|
|
101
101
|
const headers = new HttpHeaders()
|
|
102
102
|
.set('token', this.authService.getAuthorizationToken())
|
|
103
103
|
.set('x-business-cycle', JSON.stringify(this.getBusinessCycle()));
|
|
104
|
-
return this.http.post(this.env.programEndpoint + '/category/?isBusinessCycle=true', payload, { headers });
|
|
104
|
+
return this.http.post(this.env.programEndpoint + '/category/?isBusinessCycle=true&serviceType=1', payload, { headers });
|
|
105
105
|
}
|
|
106
106
|
buildPayload(formData, instance) {
|
|
107
107
|
const form = formData?.value;
|
|
108
108
|
const option = instance.additionalOption;
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
description:
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
text: form?.program_objective ?? '',
|
|
119
|
-
attachments: form?.objective_attachment ?? [],
|
|
120
|
-
},
|
|
121
|
-
roles: form.program_roles.map((ele) => {
|
|
122
|
-
return {
|
|
123
|
-
roleId: ele?._id,
|
|
124
|
-
roleName: ele?.roleName,
|
|
125
|
-
licenseType: ele?.licenseType,
|
|
126
|
-
};
|
|
127
|
-
}),
|
|
128
|
-
owners: this.listToId(form?.program_owners, 'member_id') ?? [],
|
|
129
|
-
owners_group: option?.ROLES
|
|
130
|
-
? this.listToId(form?.program_owners_group, 'group_id') ?? []
|
|
131
|
-
: [],
|
|
132
|
-
all_user_in_role: option?.ROLES ? form?.all_user_in_role ?? false : false,
|
|
133
|
-
programType: form?.program_type ?? 0,
|
|
134
|
-
// state:0,
|
|
135
|
-
state: form?.program_state ?? 0,
|
|
136
|
-
approvers: option?.APPROVER || !hasProgramFullPermission
|
|
137
|
-
? this.listToId(form?.program_approver, 'member_id') ?? []
|
|
138
|
-
: [],
|
|
139
|
-
calculate_past_upcoming_event: form?.performance_calculation ?? '',
|
|
140
|
-
program_frequency: option.PROGRAM_FREQUENCY || !hasProgramFullPermission
|
|
141
|
-
? form?.recurring_frequency
|
|
142
|
-
? 1
|
|
143
|
-
: 0
|
|
144
|
-
: 1,
|
|
145
|
-
lock_scope: option.SCOPE_CHANGES || !hasProgramFullPermission
|
|
146
|
-
? form?.lock_scope_change
|
|
147
|
-
? 1
|
|
148
|
-
: 0
|
|
149
|
-
: 0,
|
|
150
|
-
rc_ids: option.RC || !hasProgramFullPermission
|
|
151
|
-
? this.listToId(form?.rc, 'item_id')
|
|
152
|
-
: [],
|
|
153
|
-
assignee_ids: option.ASSIGNEES || !hasProgramFullPermission
|
|
154
|
-
? this.listToId(form?.program_assignee, 'member_id')
|
|
155
|
-
: [],
|
|
156
|
-
assignee_group_ids: option.ASSIGNEES || !hasProgramFullPermission
|
|
157
|
-
? this.listToId(form?.program_assignee_group, 'group_id')
|
|
158
|
-
: [],
|
|
159
|
-
default_assignee_ids: option.ASSIGNEES || !hasProgramFullPermission
|
|
160
|
-
? this.listToId(form?.program_default_assignee, 'member_id')
|
|
161
|
-
: [],
|
|
162
|
-
default_assignee_group_ids: option.ASSIGNEES || !hasProgramFullPermission
|
|
163
|
-
? this.listToId(form?.program_default_assignee_group, 'group_id')
|
|
164
|
-
: [],
|
|
165
|
-
default_assignee_type: option.ASSIGNEES || !hasProgramFullPermission
|
|
166
|
-
? form?.assignee_completion_criteria
|
|
167
|
-
: 'ALL',
|
|
168
|
-
reviewers: option.REVIEWER || !hasProgramFullPermission
|
|
169
|
-
? this.listToId(form?.program_reviewer, 'member_id')
|
|
170
|
-
: [],
|
|
171
|
-
reviewer_group_ids: option.REVIEWER || !hasProgramFullPermission
|
|
172
|
-
? this.listToId(form?.program_reviewer_group, 'group_id')
|
|
173
|
-
: [],
|
|
174
|
-
default_reviewers: option.REVIEWER || !hasProgramFullPermission
|
|
175
|
-
? this.listToId(form?.program_default_reviewer, 'member_id')
|
|
176
|
-
: [],
|
|
177
|
-
default_reviewer_group_ids: option.REVIEWER || !hasProgramFullPermission
|
|
178
|
-
? this.listToId(form?.program_default_reviewer_group, 'group_id')
|
|
179
|
-
: [],
|
|
180
|
-
default_reviewers_type: form?.reviewer_completion_criteria,
|
|
181
|
-
overseers: option.OVERSEER || !hasProgramFullPermission
|
|
182
|
-
? {
|
|
183
|
-
cc_email: this.listToId(form?.program_overseer, 'member_id'),
|
|
184
|
-
cc_email_groups: this.listToId(form?.program_overseer_group, 'group_id'),
|
|
185
|
-
failure_cc_email: [],
|
|
186
|
-
failure_cc_email_groups: [],
|
|
187
|
-
}
|
|
188
|
-
: {
|
|
189
|
-
cc_email: [],
|
|
190
|
-
cc_email_groups: [],
|
|
191
|
-
failure_cc_email: [],
|
|
192
|
-
failure_cc_email_groups: [],
|
|
109
|
+
const type = ["others", "regulations", "standards", "internal_controls"];
|
|
110
|
+
return {
|
|
111
|
+
"name": form?.program_name.trim() ?? '',
|
|
112
|
+
"type": type[form?.program_type] ?? "others",
|
|
113
|
+
"description": form?.program_objective ?? "",
|
|
114
|
+
"owners": {
|
|
115
|
+
"admins": {
|
|
116
|
+
"users": this.listToId(form?.program_owners, 'uid') ?? [],
|
|
117
|
+
userGroups: this.listToId(form?.program_owners_group, 'ugid') ?? []
|
|
193
118
|
},
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
cc_email_groups: this.listToId(form?.program_default_overseer_group, 'group_id'),
|
|
198
|
-
failure_cc_email: this.listToId(form?.program_default_failed_overseer, 'member_id'),
|
|
199
|
-
failure_cc_email_groups: this.listToId(form?.program_default_failed_overseer_group, 'group_id'),
|
|
119
|
+
"managers": {
|
|
120
|
+
"users": this.listToId(form?.collaborators, 'uid') ?? [],
|
|
121
|
+
userGroups: this.listToId(form?.collaborators_group, 'ugid') ?? []
|
|
200
122
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
cc_email_groups: [],
|
|
204
|
-
failure_cc_email: [],
|
|
205
|
-
failure_cc_email_groups: [],
|
|
206
|
-
},
|
|
207
|
-
assessment: option?.ASSESSMENT || !hasProgramFullPermission
|
|
208
|
-
? this.generateAssessment(form.program_assessments)
|
|
209
|
-
: [],
|
|
210
|
-
evidence_upload_flag: option?.FORMATE_EVIDENCE || !hasProgramFullPermission
|
|
211
|
-
? form?.evidence_required
|
|
212
|
-
? 1
|
|
213
|
-
: 0
|
|
214
|
-
: 0,
|
|
215
|
-
is_key_evidence: form?.allow_any_file_key_evidence,
|
|
216
|
-
custom_fields: option?.CUSTOM_FIELDS ? form?.custom_fields ?? [] : [],
|
|
217
|
-
framework: this.getFramework(form?.framework) ?? [],
|
|
218
|
-
collaborators: this.listToId(form?.program_collaborator, 'member_id'),
|
|
219
|
-
_id: instance.mode === 'EDIT' ? instance.programId : undefined,
|
|
123
|
+
},
|
|
124
|
+
"customFields": option?.CUSTOM_FIELDS ? form?.custom_fields ?? [] : [],
|
|
220
125
|
};
|
|
221
|
-
return payload;
|
|
222
126
|
}
|
|
223
127
|
generateAssessment(assessment) {
|
|
224
128
|
if (assessment && assessment?.length) {
|
|
@@ -255,7 +159,8 @@ export class ProgramsService {
|
|
|
255
159
|
}
|
|
256
160
|
listToId(list, key) {
|
|
257
161
|
if (list && list?.length) {
|
|
258
|
-
return list.map((ele) => ele[key])
|
|
162
|
+
return list.map((ele) => ele[key]).filter((ele) => ele)
|
|
163
|
+
.map((ele) => ele);
|
|
259
164
|
}
|
|
260
165
|
else {
|
|
261
166
|
return [];
|
|
@@ -288,7 +193,7 @@ export class ProgramsService {
|
|
|
288
193
|
return this.http.post(this.env.programEndpoint +
|
|
289
194
|
'/category/editCategory/' +
|
|
290
195
|
id +
|
|
291
|
-
'?isBusinessCycle=true&bypass-businessCycle=true', payload, { headers });
|
|
196
|
+
'?isBusinessCycle=true&bypass-businessCycle=true&serviceType=1', payload, { headers });
|
|
292
197
|
}
|
|
293
198
|
getMemeberByIds(ids) {
|
|
294
199
|
const headers = new HttpHeaders().set('token', this.authService.getAuthorizationToken());
|
|
@@ -297,6 +202,13 @@ export class ProgramsService {
|
|
|
297
202
|
'memberDetailsbyIds&bypass-businessCycle=true', { member_id: ids }, { headers })
|
|
298
203
|
.pipe(retry(2));
|
|
299
204
|
}
|
|
205
|
+
getMemeberByUIds(ids) {
|
|
206
|
+
const headers = new HttpHeaders().set('token', this.authService.getAuthorizationToken());
|
|
207
|
+
return this.http
|
|
208
|
+
.post(this.env.organizationPost +
|
|
209
|
+
'memberDetailsbyIdsSails&bypass-businessCycle=true', { member_id: ids }, { headers })
|
|
210
|
+
.pipe(retry(2));
|
|
211
|
+
}
|
|
300
212
|
getMemberByGroups(ids) {
|
|
301
213
|
const headers = new HttpHeaders().set('token', this.authService.getAuthorizationToken());
|
|
302
214
|
return this.http
|
|
@@ -315,4 +227,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
315
227
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.AuthService }, { type: i3.Configurations, decorators: [{
|
|
316
228
|
type: Optional
|
|
317
229
|
}] }]; } });
|
|
318
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXNlcnZpY2VzL3Byb2dyYW1zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBTzdCLE1BQU0sT0FBTyxlQUFlO0lBRTFCLFlBQ1UsSUFBZ0IsRUFDaEIsV0FBd0IsRUFDcEIsTUFBdUI7UUFGM0IsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUdoQyxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQ25DLE9BQU8sRUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQ3pDLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixJQUFJLENBQUMsR0FBRyxFQUFFLGVBQWU7WUFDdkIsaURBQWlELEVBQ25ELEVBQUUsT0FBTyxFQUFFLENBQ1osQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBQyxPQUFZLEVBQUUsSUFBUztRQUNqQyxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FDbkMsT0FBTyxFQUNQLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FDekMsQ0FB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QkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQU1JLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyByZXRyeSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnMgfSBmcm9tICcuLi9jb25maWd1cmF0aW9ucyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFByb2dyYW1zU2VydmljZSB7XG4gIGVudiE6IGFueTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXG4gICkge1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIHRoaXMuZW52ID0gY29uZmlnLmVudkNvbmZpZztcbiAgICB9XG4gIH1cblxuICBnZXRSb2xlcygpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxuICAgICAgdGhpcy5lbnY/Lm9yZ2FuaXphdGlvbkdldCArXG4gICAgICAgICdyb2xlcy9nZXRQcm9ncmFtUm9sZXMmYnlwYXNzLWJ1c2luZXNzQ3ljbGU9dHJ1ZScsXG4gICAgICB7IGhlYWRlcnMgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBsb2FkcyB0aGUgZ2l2ZW4gZmlsZSB0byBzZXJ2ZXJcbiAgICogQHBhcmFtIHBheWxvYWQgcGF5bG9hZCBGaWxlIGRhdGEgdG8gYmUgdXBsb2FkZWRcbiAgICogQHBhcmFtIHBhdGggcGF0aCBQYXRoIG9mIGZpbGUgdG8gYmUgdXBsb2FkZWRcbiAgICogQHJldHVybnMgcmVzcG9uc2UgYWZ0ZXIgdXBsb2FkaW5nIGEgZmlsZVxuICAgKi9cbiAgdXBsb2FkRmlsZXMocGF5bG9hZDogYW55LCBwYXRoOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIGNvbnN0IE9SR19QQVRIID0gYG8vJHtwYXRofWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgdGhpcy5lbnYuZmlsZVVwbG9hZEVuZFBvaW50ICsgT1JHX1BBVEggKyAnJm5nc3ctYnlwYXNzPXRydWUnLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIHsgaGVhZGVycyB9XG4gICAgKTtcbiAgfVxuXG4gIGdldFJlc3BvbnNpYmlsaXR5Q2VudGVyTGlzdCgpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KFxuICAgICAgICB0aGlzLmVudj8uY29tcGxpYW5jZUdldCArXG4gICAgICAgICAgJ3Jlc3BvbnNpYmlsaXR5Q2VudGVyVHJlZSZieXBhc3MtYnVzaW5lc3NDeWNsZT10cnVlJyxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGZldGNoUm9sZVVzZXJzKHJvbGVzOiBhbnksIHBhZ2U/OiBhbnksIHNlYXJjaEtleT86IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgbGV0IHF1ZXJ5U3RyaW5nID0gJyc7XG4gICAgaWYgKHBhZ2UpIHtcbiAgICAgIHF1ZXJ5U3RyaW5nICs9IGAmcGFnZT0ke3BhZ2V9YDtcbiAgICB9XG4gICAgaWYgKHNlYXJjaEtleSkge1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdDxhbnlbXT4oXG4gICAgICAgIHRoaXMuZW52Lm9yZ2FuaXphdGlvblBvc3QgK1xuICAgICAgICAgICdyb2xlcy9nZXRVc2VyRGV0YWlscyZsaW1pdD0zMCZieXBhc3MtYnVzaW5lc3NDeWNsZT10cnVlJyArXG4gICAgICAgICAgcXVlcnlTdHJpbmcsXG4gICAgICAgIHsgcm9sZV9pZHM6IHJvbGVzID8/IFtdIH0sXG4gICAgICAgIHsgaGVhZGVycyB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBmZXRjaEFsbFJvbGVVc2Vycyhyb2xlczogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdDxhbnlbXT4oXG4gICAgICAgIHRoaXMuZW52Py5vcmdhbml6YXRpb25Qb3N0ICtcbiAgICAgICAgICAncm9sZXMvZ2V0VXNlckRldGFpbHMmdHlwZT1hbGwmYnlwYXNzLWJ1c2luZXNzQ3ljbGU9dHJ1ZScsXG4gICAgICAgIHsgcm9sZV9pZHM6IHJvbGVzID8/IFtdIH0sXG4gICAgICAgIHsgaGVhZGVycyB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBmZXRjaEFsbFJvbGVHcm91cHMocm9sZXM6IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8YW55W10+KFxuICAgICAgICB0aGlzLmVudi5vcmdhbml6YXRpb25Qb3N0ICtcbiAgICAgICAgICAncm9sZXMvZ2V0R3JvdXBEZXRhaWxzJnR5cGU9YWxsJmJ5cGFzcy1idXNpbmVzc0N5Y2xlPXRydWUnLFxuICAgICAgICB7IHJvbGVfaWRzOiByb2xlcyA/PyBbXSB9LFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG4gIGZldGNoQWxsT3JnVXNlcigpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIC8vaHR0cHM6Ly9kZXZhcGkudi1jb21wbHkuY29tL29yZ2FuaXphdGlvbi8/bW9kZT1vcmdhbmlzYXRpb25Vc2Vyc0xpc3QmcGFnaW5hdGlvblR5cGU9c21hbGwmYWRtaW49MVxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KFxuICAgICAgICB0aGlzLmVudj8ub3JnYW5pemF0aW9uR2V0ICtcbiAgICAgICAgICAnb3JnYW5pc2F0aW9uVXNlcnNMaXN0JnBhZ2luYXRpb25UeXBlPXNtYWxsJmJ5cGFzcy1idXNpbmVzc0N5Y2xlPXRydWUnLFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG4gIGZldGNoQ29tcGxpYW5jZUdyb3VwcygpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIC8vaHR0cHM6Ly9kZXZhcGkudi1jb21wbHkuY29tL29yZ2FuaXphdGlvbi8/bW9kZT1ncm91cHNMaXN0JnN0YXR1cz0xJnR5cGU9Y29tcGxpYW5jZVxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KFxuICAgICAgICB0aGlzLmVudj8ub3JnYW5pemF0aW9uR2V0ICtcbiAgICAgICAgICAnZ3JvdXBzTGlzdCZzdGF0dXM9MSZ0eXBlPWNvbXBsaWFuY2UmYnlwYXNzLWJ1c2luZXNzQ3ljbGU9dHJ1ZScsXG4gICAgICAgIHsgaGVhZGVycyB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBnZXRCdXNpbmVzc0N5Y2xlKCkge1xuICAgIGNvbnN0IGJ1c2luZXNzQ3ljbGUgPSBKU09OLnBhcnNlKFxuICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2J1c2luZXNzQ3ljbGUnKSA/PyAne30nXG4gICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgc2VsZWN0ZWRfY3ljbGU6IGJ1c2luZXNzQ3ljbGVcbiAgICAgICAgPyBidXNpbmVzc0N5Y2xlPy5zZWxlY3RlZEN5Y2xlPy5zdGFydF9kYXRlICtcbiAgICAgICAgICAnLScgK1xuICAgICAgICAgIGJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkQ3ljbGU/LmVuZF9kYXRlXG4gICAgICAgIDogJycsXG4gICAgICBzdGFydF9kYXRlOiBidXNpbmVzc0N5Y2xlID8gYnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRDeWNsZT8uc3RhcnRfZGF0ZSA6ICcnLFxuICAgICAgZW5kX2RhdGU6IGJ1c2luZXNzQ3ljbGUgPyBidXNpbmVzc0N5Y2xlPy5zZWxlY3RlZEN5Y2xlPy5lbmRfZGF0ZSA6ICcnLFxuICAgICAgc2VsZWN0ZWRfY3ljbGVfYXJyOiBidXNpbmVzc0N5Y2xlXG4gICAgICAgID8gYnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRDeWNsZT8uc2VsZWN0ZWRfY3ljbGVfYXJyXG4gICAgICAgIDogW10sXG4gICAgfTtcbiAgfVxuXG4gIHNhdmVQcm9ncmFtKHBheWxvYWQ6IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKVxuICAgICAgLnNldCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKVxuICAgICAgLnNldCgneC1idXNpbmVzcy1jeWNsZScsIEpTT04uc3RyaW5naWZ5KHRoaXMuZ2V0QnVzaW5lc3NDeWNsZSgpKSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueVtdPihcbiAgICAgIHRoaXMuZW52LnByb2dyYW1FbmRwb2ludCArICcvY2F0ZWdvcnkvP2lzQnVzaW5lc3NDeWNsZT10cnVlJyxcbiAgICAgIHBheWxvYWQsXG4gICAgICB7IGhlYWRlcnMgfVxuICAgICk7XG4gIH1cblxuICBidWlsZFBheWxvYWQoZm9ybURhdGE6IGFueSwgaW5zdGFuY2U6IGFueSkge1xuICAgIGNvbnN0IGZvcm0gPSBmb3JtRGF0YT8udmFsdWU7XG4gICAgY29uc3Qgb3B0aW9uID0gaW5zdGFuY2UuYWRkaXRpb25hbE9wdGlvbjtcbiAgICBjb25zdCBoYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gPVxuICAgICAgaW5zdGFuY2U/Lm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbjtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgbW9kZTogJ3Byb2dyYW0nLFxuICAgICAgbmFtZTogZm9ybT8ucHJvZ3JhbV9uYW1lLnRyaW0oKSA/PyAnJyxcbiAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgIHRleHQ6IGZvcm0/LnByb2dyYW1fZGVzY3JpcHRpb24gPz8gJycsXG4gICAgICAgIGF0dGFjaG1lbnRzOiBmb3JtPy5wcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzID8/IFtdLFxuICAgICAgfSxcbiAgICAgIHByb2dyYW1fb2JqZWN0aXZlOiB7XG4gICAgICAgIHRleHQ6IGZvcm0/LnByb2dyYW1fb2JqZWN0aXZlID8/ICcnLFxuICAgICAgICBhdHRhY2htZW50czogZm9ybT8ub2JqZWN0aXZlX2F0dGFjaG1lbnQgPz8gW10sXG4gICAgICB9LFxuICAgICAgcm9sZXM6IGZvcm0ucHJvZ3JhbV9yb2xlcy5tYXAoKGVsZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcm9sZUlkOiBlbGU/Ll9pZCxcbiAgICAgICAgICByb2xlTmFtZTogZWxlPy5yb2xlTmFtZSxcbiAgICAgICAgICBsaWNlbnNlVHlwZTogZWxlPy5saWNlbnNlVHlwZSxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgICAgb3duZXJzOiB0aGlzLmxpc3RUb0lkKGZvcm0/LnByb2dyYW1fb3duZXJzLCAnbWVtYmVyX2lkJykgPz8gW10sXG4gICAgICBvd25lcnNfZ3JvdXA6IG9wdGlvbj8uUk9MRVNcbiAgICAgICAgPyB0aGlzLmxpc3RUb0lkKGZvcm0/LnByb2dyYW1fb3duZXJzX2dyb3VwLCAnZ3JvdXBfaWQnKSA/PyBbXVxuICAgICAgICA6IFtdLFxuICAgICAgYWxsX3VzZXJfaW5fcm9sZTogb3B0aW9uPy5ST0xFUyA/IGZvcm0/LmFsbF91c2VyX2luX3JvbGUgPz8gZmFsc2UgOiBmYWxzZSxcbiAgICAgIHByb2dyYW1UeXBlOiBmb3JtPy5wcm9ncmFtX3R5cGUgPz8gMCxcbiAgICAgIC8vIHN0YXRlOjAsXG4gICAgICBzdGF0ZTogZm9ybT8ucHJvZ3JhbV9zdGF0ZSA/PyAwLFxuICAgICAgYXBwcm92ZXJzOlxuICAgICAgICBvcHRpb24/LkFQUFJPVkVSIHx8ICFoYXNQcm9ncmFtRnVsbFBlcm1pc3Npb25cbiAgICAgICAgICA/IHRoaXMubGlzdFRvSWQoZm9ybT8ucHJvZ3JhbV9hcHByb3ZlciwgJ21lbWJlcl9pZCcpID8/IFtdXG4gICAgICAgICAgOiBbXSxcbiAgICAgIGNhbGN1bGF0ZV9wYXN0X3VwY29taW5nX2V2ZW50OiBmb3JtPy5wZXJmb3JtYW5jZV9jYWxjdWxhdGlvbiA/PyAnJyxcbiAgICAgIHByb2dyYW1fZnJlcXVlbmN5OlxuICAgICAgICBvcHRpb24uUFJPR1JBTV9GUkVRVUVOQ1kgfHwgIWhhc1Byb2dyYW1GdWxsUGVybWlzc2lvblxuICAgICAgICAgID8gZm9ybT8ucmVjdXJyaW5nX2ZyZXF1ZW5jeVxuICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICA6IDBcbiAgICAgICAgICA6IDEsXG4gICAgICBsb2NrX3Njb3BlOlxuICAgICAgICBvcHRpb24uU0NPUEVfQ0hBTkdFUyB8fCAhaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uXG4gICAgICAgICAgPyBmb3JtPy5sb2NrX3Njb3BlX2NoYW5nZVxuICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICA6IDBcbiAgICAgICAgICA6IDAsXG4gICAgICByY19pZHM6XG4gICAgICAgIG9wdGlvbi5SQyB8fCAhaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uXG4gICAgICAgICAgPyB0aGlzLmxpc3RUb0lkKGZvcm0/LnJjLCAnaXRlbV9pZCcpXG4gICAgICAgICAgOiBbXSxcbiAgICAgIGFzc2lnbmVlX2lkczpcbiAgICAgICAgb3B0aW9uLkFTU0lHTkVFUyB8fCAhaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uXG4gICAgICAgICAgPyB0aGlzLmxpc3RUb0lkKGZvcm0/LnByb2dyYW1fYXNzaWduZWUsICdtZW1iZXJfaWQnKVxuICAgICAgICAgIDogW10sXG4gICAgICBhc3NpZ25lZV9ncm91cF9pZHM6XG4gICAgICAgIG9wdGlvbi5BU1NJR05FRVMgfHwgIWhhc1Byb2dyYW1GdWxsUGVybWlzc2lvblxuICAgICAgICAgID8gdGhpcy5saXN0VG9JZChmb3JtPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwLCAnZ3JvdXBfaWQnKVxuICAgICAgICAgIDogW10sXG4gICAgICBkZWZhdWx0X2Fzc2lnbmVlX2lkczpcbiAgICAgICAgb3B0aW9uLkFTU0lHTkVFUyB8fCAhaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uXG4gICAgICAgICAgPyB0aGlzLmxpc3RUb0lkKGZvcm0/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZSwgJ21lbWJlcl9pZCcpXG4gICAgICAgICAgOiBbXSxcbiAgICAgIGRlZmF1bHRfYXNzaWduZWVfZ3JvdXBfaWRzOlxuICAgICAgICBvcHRpb24uQVNTSUdORUVTIHx8ICFoYXNQcm9ncmFtRnVsbFBlcm1pc3Npb25cbiAgICAgICAgICA/IHRoaXMubGlzdFRvSWQoZm9ybT8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwLCAnZ3JvdXBfaWQnKVxuICAgICAgICAgIDogW10sXG4gICAgICBkZWZhdWx0X2Fzc2lnbmVlX3R5cGU6XG4gICAgICAgIG9wdGlvbi5BU1NJR05FRVMgfHwgIWhhc1Byb2dyYW1GdWxsUGVybWlzc2lvblxuICAgICAgICAgID8gZm9ybT8uYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYVxuICAgICAgICAgIDogJ0FMTCcsXG4gICAgICByZXZpZXdlcnM6XG4gICAgICAgIG9wdGlvbi5SRVZJRVdFUiB8fCAhaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uXG4gICAgICAgICAgPyB0aGlzLmxpc3RUb0lkKGZvcm0/LnByb2dyYW1fcmV2aWV3ZXIsICdtZW1iZXJfaWQnKVxuICAgICAgICAgIDogW10sXG4gICAgICByZXZpZXdlcl9ncm91cF9pZHM6XG4gICAgICAgIG9wdGlvbi5SRVZJRVdFUiB8fCAhaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uXG4gICAgICAgICAgPyB0aGlzLmxpc3RUb0lkKGZvcm0/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXAsICdncm91cF9pZCcpXG4gICAgICAgICAgOiBbXSxcbiAgICAgIGRlZmF1bHRfcmV2aWV3ZXJzOlxuICAgICAgICBvcHRpb24uUkVWSUVXRVIgfHwgIWhhc1Byb2dyYW1GdWxsUGVybWlzc2lvblxuICAgICAgICAgID8gdGhpcy5saXN0VG9JZChmb3JtPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXIsICdtZW1iZXJfaWQnKVxuICAgICAgICAgIDogW10sXG4gICAgICBkZWZhdWx0X3Jldmlld2VyX2dyb3VwX2lkczpcbiAgICAgICAgb3B0aW9uLlJFVklFV0VSIHx8ICFoYXNQcm9ncmFtRnVsbFBlcm1pc3Npb25cbiAgICAgICAgICA/IHRoaXMubGlzdFRvSWQoZm9ybT8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwLCAnZ3JvdXBfaWQnKVxuICAgICAgICAgIDogW10sXG4gICAgICBkZWZhdWx0X3Jldmlld2Vyc190eXBlOiBmb3JtPy5yZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhLFxuICAgICAgb3ZlcnNlZXJzOlxuICAgICAgICBvcHRpb24uT1ZFUlNFRVIgfHwgIWhhc1Byb2dyYW1GdWxsUGVybWlzc2lvblxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBjY19lbWFpbDogdGhpcy5saXN0VG9JZChmb3JtPy5wcm9ncmFtX292ZXJzZWVyLCAnbWVtYmVyX2lkJyksXG4gICAgICAgICAgICAgIGNjX2VtYWlsX2dyb3VwczogdGhpcy5saXN0VG9JZChcbiAgICAgICAgICAgICAgICBmb3JtPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwLFxuICAgICAgICAgICAgICAgICdncm91cF9pZCdcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmFpbHVyZV9jY19lbWFpbDogW10sXG4gICAgICAgICAgICAgIGZhaWx1cmVfY2NfZW1haWxfZ3JvdXBzOiBbXSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgY2NfZW1haWw6IFtdLFxuICAgICAgICAgICAgICBjY19lbWFpbF9ncm91cHM6IFtdLFxuICAgICAgICAgICAgICBmYWlsdXJlX2NjX2VtYWlsOiBbXSxcbiAgICAgICAgICAgICAgZmFpbHVyZV9jY19lbWFpbF9ncm91cHM6IFtdLFxuICAgICAgICAgICAgfSxcblxuICAgICAgZGVmYXVsdF9vdmVyc2VlcnM6XG4gICAgICAgIG9wdGlvbi5PVkVSU0VFUiB8fCAhaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGNjX2VtYWlsOiB0aGlzLmxpc3RUb0lkKFxuICAgICAgICAgICAgICAgIGZvcm0/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2VlcixcbiAgICAgICAgICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBjY19lbWFpbF9ncm91cHM6IHRoaXMubGlzdFRvSWQoXG4gICAgICAgICAgICAgICAgZm9ybT8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwLFxuICAgICAgICAgICAgICAgICdncm91cF9pZCdcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmFpbHVyZV9jY19lbWFpbDogdGhpcy5saXN0VG9JZChcbiAgICAgICAgICAgICAgICBmb3JtPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyLFxuICAgICAgICAgICAgICAgICdtZW1iZXJfaWQnXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZhaWx1cmVfY2NfZW1haWxfZ3JvdXBzOiB0aGlzLmxpc3RUb0lkKFxuICAgICAgICAgICAgICAgIGZvcm0/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXAsXG4gICAgICAgICAgICAgICAgJ2dyb3VwX2lkJ1xuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge1xuICAgICAgICAgICAgICBjY19lbWFpbDogW10sXG4gICAgICAgICAgICAgIGNjX2VtYWlsX2dyb3VwczogW10sXG4gICAgICAgICAgICAgIGZhaWx1cmVfY2NfZW1haWw6IFtdLFxuICAgICAgICAgICAgICBmYWlsdXJlX2NjX2VtYWlsX2dyb3VwczogW10sXG4gICAgICAgICAgICB9LFxuXG4gICAgICBhc3Nlc3NtZW50OlxuICAgICAgICBvcHRpb24/LkFTU0VTU01FTlQgfHwgIWhhc1Byb2dyYW1GdWxsUGVybWlzc2lvblxuICAgICAgICAgID8gdGhpcy5nZW5lcmF0ZUFzc2Vzc21lbnQoZm9ybS5wcm9ncmFtX2Fzc2Vzc21lbnRzKVxuICAgICAgICAgIDogW10sXG4gICAgICBldmlkZW5jZV91cGxvYWRfZmxhZzpcbiAgICAgICAgb3B0aW9uPy5GT1JNQVRFX0VWSURFTkNFIHx8ICFoYXNQcm9ncmFtRnVsbFBlcm1pc3Npb25cbiAgICAgICAgICA/IGZvcm0/LmV2aWRlbmNlX3JlcXVpcmVkXG4gICAgICAgICAgICA/IDFcbiAgICAgICAgICAgIDogMFxuICAgICAgICAgIDogMCxcbiAgICAgIGlzX2tleV9ldmlkZW5jZTogZm9ybT8uYWxsb3dfYW55X2ZpbGVfa2V5X2V2aWRlbmNlLFxuICAgICAgY3VzdG9tX2ZpZWxkczogb3B0aW9uPy5DVVNUT01fRklFTERTID8gZm9ybT8uY3VzdG9tX2ZpZWxkcyA/PyBbXSA6IFtdLFxuICAgICAgZnJhbWV3b3JrOiB0aGlzLmdldEZyYW1ld29yayhmb3JtPy5mcmFtZXdvcmspID8/IFtdLFxuICAgICAgY29sbGFib3JhdG9yczogdGhpcy5saXN0VG9JZChcbiAgICAgICAgZm9ybT8ucHJvZ3JhbV9jb2xsYWJvcmF0b3IsXG4gICAgICAgICdtZW1iZXJfaWQnXG4gICAgICApLFxuICAgICAgX2lkOiBpbnN0YW5jZS5tb2RlID09PSAnRURJVCcgPyBpbnN0YW5jZS5wcm9ncmFtSWQgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgICByZXR1cm4gcGF5bG9hZDtcbiAgfVxuICBnZW5lcmF0ZUFzc2Vzc21lbnQoYXNzZXNzbWVudDogYW55KSB7XG4gICAgaWYgKGFzc2Vzc21lbnQgJiYgYXNzZXNzbWVudD8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gYXNzZXNzbWVudC5tYXAoKGNhdDogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uY2F0LFxuICAgICAgICAgIGFzc2Vzc21lbnRJZHM6IGNhdC5hc3Nlc3NtZW50SWRzPy5tYXAoKGFzc2VzczogYW55KSA9PiBhc3Nlc3MuaWQpLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbiAgZ2V0RnJhbWV3b3JrKGlucHV0OiBhbnkpIHtcbiAgICBpZiAoaW5wdXQpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICBfaWQ6IGlucHV0Py5faWQsXG4gICAgICAgICAgZnJhbWV3b3JrX25hbWU6IGlucHV0Py5uYW1lLFxuICAgICAgICAgIHR5cGU6IGlucHV0Py50eXBlLFxuICAgICAgICAgIGluX3Njb3BlOiBpbnB1dD8uaW5fc2NvcGVcbiAgICAgICAgICAgID8gdGhpcy5saXN0VG9JZChpbnB1dD8uaW5fc2NvcGUsICdfaWQnKVxuICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgICBvdXRfc2NvcGU6IGlucHV0Py5vdXRfc2NvcGVcbiAgICAgICAgICAgID8gdGhpcy5saXN0VG9JZChpbnB1dD8ub3V0X3Njb3BlLCAnX2lkJylcbiAgICAgICAgICAgIDogW10sXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgbGlzdFRvSWQobGlzdDogYW55LCBrZXk6IHN0cmluZykge1xuICAgIGlmIChsaXN0ICYmIGxpc3Q/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGxpc3QubWFwKChlbGU6IGFueSkgPT4gZWxlW2tleV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpZCA6IHByb2dyYW0gb2JqZWN0IGlkXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBnZXRQcm9ncmFtKGlkOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKClcbiAgICAgIC5zZXQoJ3Rva2VuJywgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKSlcbiAgICAgIC5zZXQoJ3gtYnVzaW5lc3MtY3ljbGUnLCBKU09OLnN0cmluZ2lmeSh0aGlzLmdldEJ1c2luZXNzQ3ljbGUoKSkpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueVtdPihcbiAgICAgIHRoaXMuZW52Py5wcm9ncmFtRW5kcG9pbnQgK1xuICAgICAgICAnLycgK1xuICAgICAgICBpZCArXG4gICAgICAgICc/aXNCdXNpbmVzc0N5Y2xlPXRydWUmYnlwYXNzLWJ1c2luZXNzQ3ljbGU9dHJ1ZScsXG4gICAgICB7IGhlYWRlcnMgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHBheWxvYWQgcGF5bG9hZCB3aGljaCBuZWVkIHRvIGJlIHVwZGF0ZWRcbiAgICogQHBhcmFtIGlkIHByb2dyYW0gb2JqZWN0IGlkXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICB1cGRhdGVQcm9ncmFtKHBheWxvYWQ6IGFueSwgaWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKVxuICAgICAgLnNldCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKVxuICAgICAgLnNldCgneC1idXNpbmVzcy1jeWNsZScsIEpTT04uc3RyaW5naWZ5KHRoaXMuZ2V0QnVzaW5lc3NDeWNsZSgpKSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueVtdPihcbiAgICAgIHRoaXMuZW52LnByb2dyYW1FbmRwb2ludCArXG4gICAgICAgICcvY2F0ZWdvcnkvZWRpdENhdGVnb3J5LycgK1xuICAgICAgICBpZCArXG4gICAgICAgICc/aXNCdXNpbmVzc0N5Y2xlPXRydWUmYnlwYXNzLWJ1c2luZXNzQ3ljbGU9dHJ1ZScsXG4gICAgICBwYXlsb2FkLFxuICAgICAgeyBoZWFkZXJzIH1cbiAgICApO1xuICB9XG5cbiAgZ2V0TWVtZWJlckJ5SWRzKGlkczogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdDxhbnlbXT4oXG4gICAgICAgIHRoaXMuZW52Lm9yZ2FuaXphdGlvblBvc3QgK1xuICAgICAgICAgICdtZW1iZXJEZXRhaWxzYnlJZHMmYnlwYXNzLWJ1c2luZXNzQ3ljbGU9dHJ1ZScsXG4gICAgICAgIHsgbWVtYmVyX2lkOiBpZHMgfSxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGdldE1lbWJlckJ5R3JvdXBzKGlkczogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdDxhbnlbXT4oXG4gICAgICAgIHRoaXMuZW52Lm9yZ2FuaXphdGlvblBvc3QgK1xuICAgICAgICAgICdncm91cERldGFpbHNieUlkcyZieXBhc3MtYnVzaW5lc3NDeWNsZT10cnVlJyxcbiAgICAgICAgeyBncm91cF9pZHM6IGlkcyB9LFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG59XG4iXX0=
|
|
230
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXNlcnZpY2VzL3Byb2dyYW1zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBTzdCLE1BQU0sT0FBTyxlQUFlO0lBRTFCLFlBQ1UsSUFBZ0IsRUFDaEIsV0FBd0IsRUFDcEIsTUFBdUI7UUFGM0IsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUdoQyxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQ25DLE9BQU8sRUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQ3pDLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixJQUFJLENBQUMsR0FBRyxFQUFFLGVBQWU7WUFDdkIsaURBQWlELEVBQ25ELEVBQUUsT0FBTyxFQUFFLENBQ1osQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBQyxPQUFZLEVBQUUsSUFBUztRQUNqQyxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FDbkMsT0FBTyxFQUNQLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FDekMsQ0FBQztRQUNGLE1BQU0sUUFBUSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLEdBQUcsbUJBQW1CLEVBQzVELE9BQU8sRUFDUCxFQUFFLE9BQU8sRUFBRSxDQUNaLENBQUM7SUFDSixDQUFDO0lBRUQsMkJBQTJCO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUMsR0FBRyxDQUNuQyxPQUFPLEVBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUN6QyxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FDRixJQUFJLENBQUMsR0FBRyxFQUFFLGFBQWE7WUFDckIsb0RBQW9ELEVBQ3REO1lBQ0UsT0FBTztTQUNSLENBQ0Y7YUFDQSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFVLEVBQUUsSUFBVSxFQUFFLFNBQWU7UUFDcEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQ25DLE9BQU8sRUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQ3pDLENBQUM7UUFDRixJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxJQUFJLEVBQUU7WUFDUixXQUFXLElBQUksU0FBUyxJQUFJLEVBQUUsQ0FBQztTQUNoQztRQUNELElBQUksU0FBUyxFQUFFO1NBQ2Q7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsSUFBSSxDQUNILElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCO1lBQ3ZCLHlEQUF5RDtZQUN6RCxXQUFXLEVBQ2IsRUFBRSxRQUFRLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxFQUN6QixFQUFFLE9BQU8sRUFBRSxDQUNaO2FBQ0EsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFVO1FBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUMsR0FBRyxDQUNuQyxPQUFPLEVBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUN6QyxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLElBQUksQ0FDSCxJQUFJLENBQUMsR0FBRyxFQUFFLGdCQUFnQjtZQUN4Qix5REFBeUQsRUFDM0QsRUFBRSxRQUFRLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxFQUN6QixFQUFFLE9BQU8sRUFBRSxDQUNaO2FBQ0EsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFVO1FBQzNCLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUMsR0FBRyxDQUNuQyxPQUFPLEVBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUN6QyxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLElBQUksQ0FDSCxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQjtZQUN2QiwwREFBMEQsRUFDNUQsRUFBRSxRQUFRLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxFQUN6QixFQUFFLE9BQU8sRUFBRSxDQUNaO2FBQ0EsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxlQUFlO1FBQ2IsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQ25DLE9BQU8sRUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQ3pDLENBQUM7UUFDRixtR0FBbUc7UUFDbkcsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FDRixJQUFJLENBQUMsR0FBRyxFQUFFLGVBQWU7WUFDdkIsc0VBQXNFLEVBQ3hFLEVBQUUsT0FBTyxFQUFFLENBQ1o7YUFDQSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUNELHFCQUFxQjtRQUNuQixNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FDbkMsT0FBTyxFQUNQLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FDekMsQ0FBQztRQUNGLG9GQUFvRjtRQUNwRixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUNGLElBQUksQ0FBQyxHQUFHLEVBQUUsZUFBZTtZQUN2QiwrREFBK0QsRUFDakUsRUFBRSxPQUFPLEVBQUUsQ0FDWjthQUNBLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDOUIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJLENBQzlDLENBQUM7UUFDRixPQUFPO1lBQ0wsY0FBYyxFQUFFLGFBQWE7Z0JBQzNCLENBQUMsQ0FBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLFVBQVU7b0JBQ3hDLEdBQUc7b0JBQ0gsYUFBYSxFQUFFLGFBQWEsRUFBRSxRQUFRO2dCQUN4QyxDQUFDLENBQUMsRUFBRTtZQUNOLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3pFLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3JFLGtCQUFrQixFQUFFLGFBQWE7Z0JBQy9CLENBQUMsQ0FBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLGtCQUFrQjtnQkFDbEQsQ0FBQyxDQUFDLEVBQUU7U0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFZO1FBQ3RCLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFO2FBQzlCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2FBQ3RELEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsR0FBRywrQ0FBK0MsRUFDMUUsT0FBTyxFQUNQLEVBQUUsT0FBTyxFQUFFLENBQ1osQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZLENBQUMsUUFBYSxFQUFFLFFBQWE7UUFDdkMsTUFBTSxJQUFJLEdBQUcsUUFBUSxFQUFFLEtBQUssQ0FBQztRQUM3QixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7UUFDekMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQyxDQUFBO1FBQ3hFLE9BQU87WUFDTCxNQUFNLEVBQUUsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQ3ZDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJLFFBQVE7WUFDNUMsYUFBYSxFQUFFLElBQUksRUFBRSxpQkFBaUIsSUFBSSxFQUFFO1lBQzVDLFFBQVEsRUFBRTtnQkFDUixRQUFRLEVBQUU7b0JBQ1IsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFO29CQUN6RCxVQUFVLEVBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRTtpQkFDbkU7Z0JBQ0QsVUFBVSxFQUFFO29CQUNWLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtvQkFDeEQsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUU7aUJBRW5FO2FBQ0Y7WUFDRCxjQUFjLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7U0FDdkUsQ0FBQTtJQUNILENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxVQUFlO1FBQ2hDLElBQUksVUFBVSxJQUFJLFVBQVUsRUFBRSxNQUFNLEVBQUU7WUFDcEMsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pDLE9BQU87b0JBQ0wsR0FBRyxHQUFHO29CQUNOLGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztpQkFDbEUsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLE9BQU8sRUFBRSxDQUFDO1NBQ1g7SUFDSCxDQUFDO0lBQ0QsWUFBWSxDQUFDLEtBQVU7UUFDckIsSUFBSSxLQUFLLEVBQUU7WUFDVCxPQUFPO2dCQUNMO29CQUNFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRztvQkFDZixjQUFjLEVBQUUsS0FBSyxFQUFFLElBQUk7b0JBQzNCLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSTtvQkFDakIsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRO3dCQUN2QixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQzt3QkFDdkMsQ0FBQyxDQUFDLEVBQUU7b0JBQ04sU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTO3dCQUN6QixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQzt3QkFDeEMsQ0FBQyxDQUFDLEVBQUU7aUJBQ1A7YUFDRixDQUFDO1NBQ0g7YUFBTTtZQUNMLE9BQU8sRUFBRSxDQUFDO1NBQ1g7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVMsRUFBRSxHQUFXO1FBQzdCLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDeEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQztpQkFDaEUsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjthQUFNO1lBQ0wsT0FBTyxFQUFFLENBQUM7U0FDWDtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLEVBQU87UUFDaEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUU7YUFDOUIsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQUM7YUFDdEQsR0FBRyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxHQUFHLEVBQUUsZUFBZTtZQUN2QixHQUFHO1lBQ0gsRUFBRTtZQUNGLGlEQUFpRCxFQUNuRCxFQUFFLE9BQU8sRUFBRSxDQUNaLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxhQUFhLENBQUMsT0FBWSxFQUFFLEVBQVU7UUFDcEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUU7YUFDOUIsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQUM7YUFDdEQsR0FBRyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZTtZQUN0Qix5QkFBeUI7WUFDekIsRUFBRTtZQUNGLCtEQUErRCxFQUNqRSxPQUFPLEVBQ1AsRUFBRSxPQUFPLEVBQUUsQ0FDWixDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWUsQ0FBQyxHQUFRO1FBQ3RCLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUMsR0FBRyxDQUNuQyxPQUFPLEVBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUN6QyxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLElBQUksQ0FDSCxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQjtZQUN2Qiw4Q0FBOEMsRUFDaEQsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEVBQ2xCLEVBQUUsT0FBTyxFQUFFLENBQ1o7YUFDQSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQVE7UUFDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQ25DLE9BQU8sRUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQ3pDLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsSUFBSSxDQUNILElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCO1lBQ3ZCLG1EQUFtRCxFQUNyRCxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsRUFDbEIsRUFBRSxPQUFPLEVBQUUsQ0FDWjthQUNBLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBUTtRQUN4QixNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FDbkMsT0FBTyxFQUNQLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FDekMsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixJQUFJLENBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0I7WUFDdkIsNkNBQTZDLEVBQy9DLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxFQUNsQixFQUFFLE9BQU8sRUFBRSxDQUNaO2FBQ0EsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7K0dBeFRVLGVBQWU7bUhBQWYsZUFBZSxjQUZkLE1BQU07OzRGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFNSSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcmV0cnkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSAnLi4vY29uZmlndXJhdGlvbnMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9ncmFtc1NlcnZpY2Uge1xuICBlbnYhOiBhbnk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBjb25maWc/OiBDb25maWd1cmF0aW9uc1xuICApIHtcbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICB0aGlzLmVudiA9IGNvbmZpZy5lbnZDb25maWc7XG4gICAgfVxuICB9XG5cbiAgZ2V0Um9sZXMoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgIHRoaXMuZW52Py5vcmdhbml6YXRpb25HZXQgK1xuICAgICAgICAncm9sZXMvZ2V0UHJvZ3JhbVJvbGVzJmJ5cGFzcy1idXNpbmVzc0N5Y2xlPXRydWUnLFxuICAgICAgeyBoZWFkZXJzIH1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwbG9hZHMgdGhlIGdpdmVuIGZpbGUgdG8gc2VydmVyXG4gICAqIEBwYXJhbSBwYXlsb2FkIHBheWxvYWQgRmlsZSBkYXRhIHRvIGJlIHVwbG9hZGVkXG4gICAqIEBwYXJhbSBwYXRoIHBhdGggUGF0aCBvZiBmaWxlIHRvIGJlIHVwbG9hZGVkXG4gICAqIEByZXR1cm5zIHJlc3BvbnNlIGFmdGVyIHVwbG9hZGluZyBhIGZpbGVcbiAgICovXG4gIHVwbG9hZEZpbGVzKHBheWxvYWQ6IGFueSwgcGF0aDogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICBjb25zdCBPUkdfUEFUSCA9IGBvLyR7cGF0aH1gO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcbiAgICAgIHRoaXMuZW52LmZpbGVVcGxvYWRFbmRQb2ludCArIE9SR19QQVRIICsgJyZuZ3N3LWJ5cGFzcz10cnVlJyxcbiAgICAgIHBheWxvYWQsXG4gICAgICB7IGhlYWRlcnMgfVxuICAgICk7XG4gIH1cblxuICBnZXRSZXNwb25zaWJpbGl0eUNlbnRlckxpc3QoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPihcbiAgICAgICAgdGhpcy5lbnY/LmNvbXBsaWFuY2VHZXQgK1xuICAgICAgICAgICdyZXNwb25zaWJpbGl0eUNlbnRlclRyZWUmYnlwYXNzLWJ1c2luZXNzQ3ljbGU9dHJ1ZScsXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBmZXRjaFJvbGVVc2Vycyhyb2xlczogYW55LCBwYWdlPzogYW55LCBzZWFyY2hLZXk/OiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIGxldCBxdWVyeVN0cmluZyA9ICcnO1xuICAgIGlmIChwYWdlKSB7XG4gICAgICBxdWVyeVN0cmluZyArPSBgJnBhZ2U9JHtwYWdlfWA7XG4gICAgfVxuICAgIGlmIChzZWFyY2hLZXkpIHtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8YW55W10+KFxuICAgICAgICB0aGlzLmVudi5vcmdhbml6YXRpb25Qb3N0ICtcbiAgICAgICAgICAncm9sZXMvZ2V0VXNlckRldGFpbHMmbGltaXQ9MzAmYnlwYXNzLWJ1c2luZXNzQ3ljbGU9dHJ1ZScgK1xuICAgICAgICAgIHF1ZXJ5U3RyaW5nLFxuICAgICAgICB7IHJvbGVfaWRzOiByb2xlcyA/PyBbXSB9LFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZmV0Y2hBbGxSb2xlVXNlcnMocm9sZXM6IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8YW55W10+KFxuICAgICAgICB0aGlzLmVudj8ub3JnYW5pemF0aW9uUG9zdCArXG4gICAgICAgICAgJ3JvbGVzL2dldFVzZXJEZXRhaWxzJnR5cGU9YWxsJmJ5cGFzcy1idXNpbmVzc0N5Y2xlPXRydWUnLFxuICAgICAgICB7IHJvbGVfaWRzOiByb2xlcyA/PyBbXSB9LFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZmV0Y2hBbGxSb2xlR3JvdXBzKHJvbGVzOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PGFueVtdPihcbiAgICAgICAgdGhpcy5lbnYub3JnYW5pemF0aW9uUG9zdCArXG4gICAgICAgICAgJ3JvbGVzL2dldEdyb3VwRGV0YWlscyZ0eXBlPWFsbCZieXBhc3MtYnVzaW5lc3NDeWNsZT10cnVlJyxcbiAgICAgICAgeyByb2xlX2lkczogcm9sZXMgPz8gW10gfSxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuICBmZXRjaEFsbE9yZ1VzZXIoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICAvL2h0dHBzOi8vZGV2YXBpLnYtY29tcGx5LmNvbS9vcmdhbml6YXRpb24vP21vZGU9b3JnYW5pc2F0aW9uVXNlcnNMaXN0JnBhZ2luYXRpb25UeXBlPXNtYWxsJmFkbWluPTFcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPihcbiAgICAgICAgdGhpcy5lbnY/Lm9yZ2FuaXphdGlvbkdldCArXG4gICAgICAgICAgJ29yZ2FuaXNhdGlvblVzZXJzTGlzdCZwYWdpbmF0aW9uVHlwZT1zbWFsbCZieXBhc3MtYnVzaW5lc3NDeWNsZT10cnVlJyxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuICBmZXRjaENvbXBsaWFuY2VHcm91cHMoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICAvL2h0dHBzOi8vZGV2YXBpLnYtY29tcGx5LmNvbS9vcmdhbml6YXRpb24vP21vZGU9Z3JvdXBzTGlzdCZzdGF0dXM9MSZ0eXBlPWNvbXBsaWFuY2VcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPihcbiAgICAgICAgdGhpcy5lbnY/Lm9yZ2FuaXphdGlvbkdldCArXG4gICAgICAgICAgJ2dyb3Vwc0xpc3Qmc3RhdHVzPTEmdHlwZT1jb21wbGlhbmNlJmJ5cGFzcy1idXNpbmVzc0N5Y2xlPXRydWUnLFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0QnVzaW5lc3NDeWNsZSgpIHtcbiAgICBjb25zdCBidXNpbmVzc0N5Y2xlID0gSlNPTi5wYXJzZShcbiAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0N5Y2xlJykgPz8gJ3t9J1xuICAgICk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbGVjdGVkX2N5Y2xlOiBidXNpbmVzc0N5Y2xlXG4gICAgICAgID8gYnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRDeWNsZT8uc3RhcnRfZGF0ZSArXG4gICAgICAgICAgJy0nICtcbiAgICAgICAgICBidXNpbmVzc0N5Y2xlPy5zZWxlY3RlZEN5Y2xlPy5lbmRfZGF0ZVxuICAgICAgICA6ICcnLFxuICAgICAgc3RhcnRfZGF0ZTogYnVzaW5lc3NDeWNsZSA/IGJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkQ3ljbGU/LnN0YXJ0X2RhdGUgOiAnJyxcbiAgICAgIGVuZF9kYXRlOiBidXNpbmVzc0N5Y2xlID8gYnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRDeWNsZT8uZW5kX2RhdGUgOiAnJyxcbiAgICAgIHNlbGVjdGVkX2N5Y2xlX2FycjogYnVzaW5lc3NDeWNsZVxuICAgICAgICA/IGJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkQ3ljbGU/LnNlbGVjdGVkX2N5Y2xlX2FyclxuICAgICAgICA6IFtdLFxuICAgIH07XG4gIH1cblxuICBzYXZlUHJvZ3JhbShwYXlsb2FkOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKClcbiAgICAgIC5zZXQoJ3Rva2VuJywgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKSlcbiAgICAgIC5zZXQoJ3gtYnVzaW5lc3MtY3ljbGUnLCBKU09OLnN0cmluZ2lmeSh0aGlzLmdldEJ1c2luZXNzQ3ljbGUoKSkpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnlbXT4oXG4gICAgICB0aGlzLmVudi5wcm9ncmFtRW5kcG9pbnQgKyAnL2NhdGVnb3J5Lz9pc0J1c2luZXNzQ3ljbGU9dHJ1ZSZzZXJ2aWNlVHlwZT0xJyxcbiAgICAgIHBheWxvYWQsXG4gICAgICB7IGhlYWRlcnMgfVxuICAgICk7XG4gIH1cblxuICBidWlsZFBheWxvYWQoZm9ybURhdGE6IGFueSwgaW5zdGFuY2U6IGFueSkge1xuICAgIGNvbnN0IGZvcm0gPSBmb3JtRGF0YT8udmFsdWU7XG4gICAgY29uc3Qgb3B0aW9uID0gaW5zdGFuY2UuYWRkaXRpb25hbE9wdGlvbjtcbiAgICBjb25zdCB0eXBlID0gW1wib3RoZXJzXCIsIFwicmVndWxhdGlvbnNcIiwgXCJzdGFuZGFyZHNcIiwgXCJpbnRlcm5hbF9jb250cm9sc1wiXVxuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVcIjogZm9ybT8ucHJvZ3JhbV9uYW1lLnRyaW0oKSA/PyAnJyxcbiAgICAgIFwidHlwZVwiOiB0eXBlW2Zvcm0/LnByb2dyYW1fdHlwZV0gPz8gXCJvdGhlcnNcIixcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogZm9ybT8ucHJvZ3JhbV9vYmplY3RpdmUgPz8gXCJcIixcbiAgICAgIFwib3duZXJzXCI6IHtcbiAgICAgICAgXCJhZG1pbnNcIjogeyAgLy8gT3duZXJzXG4gICAgICAgICAgXCJ1c2Vyc1wiOiB0aGlzLmxpc3RUb0lkKGZvcm0/LnByb2dyYW1fb3duZXJzLCAndWlkJykgPz8gW10sXG4gICAgICAgICAgdXNlckdyb3Vwczp0aGlzLmxpc3RUb0lkKGZvcm0/LnByb2dyYW1fb3duZXJzX2dyb3VwLCAndWdpZCcpID8/IFtdXG4gICAgICAgIH0sXG4gICAgICAgIFwibWFuYWdlcnNcIjogeyAgLy8gQ29sbGFib3JhdG9yc1xuICAgICAgICAgIFwidXNlcnNcIjogdGhpcy5saXN0VG9JZChmb3JtPy5jb2xsYWJvcmF0b3JzLCAndWlkJykgPz8gW10sXG4gICAgICAgICAgdXNlckdyb3VwczogdGhpcy5saXN0VG9JZChmb3JtPy5jb2xsYWJvcmF0b3JzX2dyb3VwLCAndWdpZCcpID8/IFtdXG4gICAgICAgIFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJjdXN0b21GaWVsZHNcIjogb3B0aW9uPy5DVVNUT01fRklFTERTID8gZm9ybT8uY3VzdG9tX2ZpZWxkcyA/PyBbXSA6IFtdLFxuICAgIH1cbiAgfVxuICBnZW5lcmF0ZUFzc2Vzc21lbnQoYXNzZXNzbWVudDogYW55KSB7XG4gICAgaWYgKGFzc2Vzc21lbnQgJiYgYXNzZXNzbWVudD8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gYXNzZXNzbWVudC5tYXAoKGNhdDogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uY2F0LFxuICAgICAgICAgIGFzc2Vzc21lbnRJZHM6IGNhdC5hc3Nlc3NtZW50SWRzPy5tYXAoKGFzc2VzczogYW55KSA9PiBhc3Nlc3MuaWQpLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbiAgZ2V0RnJhbWV3b3JrKGlucHV0OiBhbnkpIHtcbiAgICBpZiAoaW5wdXQpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICBfaWQ6IGlucHV0Py5faWQsXG4gICAgICAgICAgZnJhbWV3b3JrX25hbWU6IGlucHV0Py5uYW1lLFxuICAgICAgICAgIHR5cGU6IGlucHV0Py50eXBlLFxuICAgICAgICAgIGluX3Njb3BlOiBpbnB1dD8uaW5fc2NvcGVcbiAgICAgICAgICAgID8gdGhpcy5saXN0VG9JZChpbnB1dD8uaW5fc2NvcGUsICdfaWQnKVxuICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgICBvdXRfc2NvcGU6IGlucHV0Py5vdXRfc2NvcGVcbiAgICAgICAgICAgID8gdGhpcy5saXN0VG9JZChpbnB1dD8ub3V0X3Njb3BlLCAnX2lkJylcbiAgICAgICAgICAgIDogW10sXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgbGlzdFRvSWQobGlzdDogYW55LCBrZXk6IHN0cmluZykge1xuICAgIGlmIChsaXN0ICYmIGxpc3Q/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGxpc3QubWFwKChlbGU6IGFueSkgPT4gZWxlW2tleV0pLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZSlcbiAgICAgIC5tYXAoKGVsZTogYW55KSA9PiBlbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpZCA6IHByb2dyYW0gb2JqZWN0IGlkXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBnZXRQcm9ncmFtKGlkOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKClcbiAgICAgIC5zZXQoJ3Rva2VuJywgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKSlcbiAgICAgIC5zZXQoJ3gtYnVzaW5lc3MtY3ljbGUnLCBKU09OLnN0cmluZ2lmeSh0aGlzLmdldEJ1c2luZXNzQ3ljbGUoKSkpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueVtdPihcbiAgICAgIHRoaXMuZW52Py5wcm9ncmFtRW5kcG9pbnQgK1xuICAgICAgICAnLycgK1xuICAgICAgICBpZCArXG4gICAgICAgICc/aXNCdXNpbmVzc0N5Y2xlPXRydWUmYnlwYXNzLWJ1c2luZXNzQ3ljbGU9dHJ1ZScsXG4gICAgICB7IGhlYWRlcnMgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHBheWxvYWQgcGF5bG9hZCB3aGljaCBuZWVkIHRvIGJlIHVwZGF0ZWRcbiAgICogQHBhcmFtIGlkIHByb2dyYW0gb2JqZWN0IGlkXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICB1cGRhdGVQcm9ncmFtKHBheWxvYWQ6IGFueSwgaWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKVxuICAgICAgLnNldCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKVxuICAgICAgLnNldCgneC1idXNpbmVzcy1jeWNsZScsIEpTT04uc3RyaW5naWZ5KHRoaXMuZ2V0QnVzaW5lc3NDeWNsZSgpKSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueVtdPihcbiAgICAgIHRoaXMuZW52LnByb2dyYW1FbmRwb2ludCArXG4gICAgICAgICcvY2F0ZWdvcnkvZWRpdENhdGVnb3J5LycgK1xuICAgICAgICBpZCArXG4gICAgICAgICc/aXNCdXNpbmVzc0N5Y2xlPXRydWUmYnlwYXNzLWJ1c2luZXNzQ3ljbGU9dHJ1ZSZzZXJ2aWNlVHlwZT0xJyxcbiAgICAgIHBheWxvYWQsXG4gICAgICB7IGhlYWRlcnMgfVxuICAgICk7XG4gIH1cblxuICBnZXRNZW1lYmVyQnlJZHMoaWRzOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PGFueVtdPihcbiAgICAgICAgdGhpcy5lbnYub3JnYW5pemF0aW9uUG9zdCArXG4gICAgICAgICAgJ21lbWJlckRldGFpbHNieUlkcyZieXBhc3MtYnVzaW5lc3NDeWNsZT10cnVlJyxcbiAgICAgICAgeyBtZW1iZXJfaWQ6IGlkcyB9LFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0TWVtZWJlckJ5VUlkcyhpZHM6IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8YW55W10+KFxuICAgICAgICB0aGlzLmVudi5vcmdhbml6YXRpb25Qb3N0ICtcbiAgICAgICAgICAnbWVtYmVyRGV0YWlsc2J5SWRzU2FpbHMmYnlwYXNzLWJ1c2luZXNzQ3ljbGU9dHJ1ZScsXG4gICAgICAgIHsgbWVtYmVyX2lkOiBpZHMgfSxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGdldE1lbWJlckJ5R3JvdXBzKGlkczogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdDxhbnlbXT4oXG4gICAgICAgIHRoaXMuZW52Lm9yZ2FuaXphdGlvblBvc3QgK1xuICAgICAgICAgICdncm91cERldGFpbHNieUlkcyZieXBhc3MtYnVzaW5lc3NDeWNsZT10cnVlJyxcbiAgICAgICAgeyBncm91cF9pZHM6IGlkcyB9LFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG59XG4iXX0=
|