ng-miam 4.1.2 → 4.2.0
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/bundles/ng-miam.umd.js +324 -97
- package/bundles/ng-miam.umd.js.map +1 -1
- package/bundles/ng-miam.umd.min.js +1 -1
- package/bundles/ng-miam.umd.min.js.map +1 -1
- package/esm2015/lib/_components/abstracts/abstract-recipe-card.component.js +4 -3
- package/esm2015/lib/_services/context.service.js +12 -2
- package/esm2015/lib/_services/groceries-lists.service.js +25 -3
- package/esm2015/lib/_services/recipes.service.js +3 -3
- package/esm2015/lib/_utils/synchro-basket/basket-handler.js +4 -1
- package/esm2015/lib/_utils/synchro-basket/basket-handling/baskets-comparator.js +4 -1
- package/esm2015/lib/_utils/synchro-basket/basket-handling/comparison-map.js +7 -1
- package/esm2015/lib/_web-components/basket-preview/basket-preview-block/basket-preview-block.component.js +14 -5
- package/esm2015/lib/_web-components/catalog-category/catalog-category.component.js +1 -1
- package/esm2015/lib/_web-components/catalog-header/catalog-header.component.js +20 -20
- package/esm2015/lib/_web-components/list-scan/files-inputs/files-inputs.component.js +2 -2
- package/esm2015/lib/_web-components/modal/modal.component.js +57 -16
- package/esm2015/lib/_web-components/modal/modal.module.js +6 -2
- package/esm2015/lib/_web-components/recipe-details/recipe-details.component.js +2 -2
- package/esm2015/lib/_web-components/recipe-modal/recipe-modal.component.js +51 -18
- package/esm2015/lib/_web-components/recipe-tags/recipe-tags.component.js +108 -36
- package/fesm2015/ng-miam.js +299 -98
- package/fesm2015/ng-miam.js.map +1 -1
- package/lib/_services/context.service.d.ts +3 -0
- package/lib/_services/groceries-lists.service.d.ts +11 -0
- package/lib/_services/recipes.service.d.ts +3 -1
- package/lib/_utils/synchro-basket/basket-handler.d.ts +1 -0
- package/lib/_utils/synchro-basket/basket-handling/baskets-comparator.d.ts +1 -0
- package/lib/_utils/synchro-basket/basket-handling/comparison-map.d.ts +1 -0
- package/lib/_web-components/basket-preview/basket-preview-block/basket-preview-block.component.d.ts +3 -2
- package/lib/_web-components/modal/modal.component.d.ts +5 -1
- package/lib/_web-components/modal/modal.module.d.ts +2 -1
- package/lib/_web-components/recipe-modal/recipe-modal.component.d.ts +14 -4
- package/lib/_web-components/recipe-tags/recipe-tags.component.d.ts +5 -1
- package/package.json +1 -1
|
@@ -54,7 +54,8 @@ export class AbstractRecipeCardComponent {
|
|
|
54
54
|
}
|
|
55
55
|
addRecipeActionOK(display) {
|
|
56
56
|
this.subscriptions.push(this.groceriesListsService.recipeIsInList(this.recipe.id).subscribe(recipeIsInList => {
|
|
57
|
-
|
|
57
|
+
const recipeWasAdded = !recipeIsInList;
|
|
58
|
+
if (recipeWasAdded) {
|
|
58
59
|
this.recipeEventsService.sendEvent(this.recipe, this.recipeEventsService.ACTION_ADDED);
|
|
59
60
|
}
|
|
60
61
|
this.subscriptions.push(this.groceriesListsService.appendRecipeToList(this.recipe.id, this.recipe.modifiedGuests, this.cardType)
|
|
@@ -62,7 +63,7 @@ export class AbstractRecipeCardComponent {
|
|
|
62
63
|
this.toggleButtonLoader(false);
|
|
63
64
|
}));
|
|
64
65
|
if (display) {
|
|
65
|
-
this.recipeService.displayObject(this.recipe, { guests: +this.recipe.modifiedGuests, previewMode: true });
|
|
66
|
+
this.recipeService.displayObject(this.recipe, { guests: +this.recipe.modifiedGuests, previewMode: true, wasAdded: recipeWasAdded });
|
|
66
67
|
}
|
|
67
68
|
}));
|
|
68
69
|
}
|
|
@@ -142,4 +143,4 @@ AbstractRecipeCardComponent.ɵcmp = i0.ɵɵdefineComponent({ type: AbstractRecip
|
|
|
142
143
|
}], hide: [{
|
|
143
144
|
type: Output
|
|
144
145
|
}] }); })();
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtcmVjaXBlLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fY29tcG9uZW50cy9hYnN0cmFjdHMvYWJzdHJhY3QtcmVjaXBlLWNhcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWMsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9JLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUl0QyxNQUFNLE9BQWdCLDJCQUEyQjtJQWlCL0MsWUFDUyxHQUFzQixFQUN0QixhQUE2QixFQUM3QixtQkFBd0MsRUFDeEMscUJBQTRDLEVBQzVDLFdBQXdCLEVBQ3JCLFVBQStCLEVBQ2xDLGNBQThCLEVBQzNCLGdCQUFrQyxFQUNsQyxPQUFtQjtRQVJ0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFDN0Isd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4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LENBQUE7WUFDekYsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztTQUNoQztJQUNILENBQUM7SUFFTSxZQUFZO1FBRWpCLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFDO1lBQ2hELE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsVUFBZ0M7UUFDaEQsT0FBTyxVQUFVLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLENBQUM7SUFDNUUsQ0FBQzs7c0dBOUltQiwyQkFBMkI7Z0VBQTNCLDJCQUEyQjtrREFBM0IsMkJBQTJCO2NBRGhELFNBQVM7ZUFBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7d1RBRWhCLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxjQUFjO2tCQUF0QixLQUFLO1lBQ0cscUJBQXFCO2tCQUE3QixLQUFLO1lBQ0ksSUFBSTtrQkFBYixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCAgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbmdyZWRpZW50LCBTaW1wbGlmaWVkSW5ncmVkaWVudCB9IGZyb20gJy4uLy4uL19tb2RlbHMnO1xuaW1wb3J0IHsgUmVjaXBlIH0gZnJvbSAnLi4vLi4vX21vZGVscy9yZWNpcGUnO1xuaW1wb3J0IHsgUmVjaXBlc1NlcnZpY2UsIEdyb2Nlcmllc0xpc3RzU2VydmljZSwgUG9pbnRPZlNhbGVzU2VydmljZSwgQ29udGV4dFNlcnZpY2UsIFJlY2lwZUV2ZW50c1NlcnZpY2UsIFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzJztcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSAnLi4vLi4vX3R5cGVzL3NrZWxldG9uLmVudW0nO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gJy4uLy4uL190eXBlcy9pY29uLmVudW0nO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy9hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBzdG9wRXZlbnRQcm9wYWdhdGlvbiB9IGZyb20gJy4uLy4uL191dGlscyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5cbkBDb21wb25lbnQoeyB0ZW1wbGF0ZTogJycgfSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFJlY2lwZUNhcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBoZWFkZXJUZXh0ID0gJyc7XG4gIEBJbnB1dCgpIGRpc3BsYXlQcmljaW5nID0gdHJ1ZTtcbiAgQElucHV0KCkgZGlzcGxheUFkZGVkT25QaWN0dXJlID0gdHJ1ZTtcbiAgQE91dHB1dCgpIGhpZGU6IEV2ZW50RW1pdHRlcjx2b2lkPjtcblxuICByZWNpcGU6IFJlY2lwZTtcbiAgaG92ZXJlZCA9IGZhbHNlO1xuICBpbmdyZWRpZW50c0NvbmNhdE5hbWU6IHN0cmluZztcbiAgaWNvbiA9IEljb247XG4gIHNrZWxldG9uID0gU2tlbGV0b247XG4gIGlzUHJpY2VEaXNwbGF5ZWQgPSB0cnVlO1xuICBhZGRCdXR0b25Mb2FkaW5nID0gZmFsc2U7XG4gIGNhcmRUeXBlID0gJ3JlY2lwZS1jYXJkJzsgLy8gb3ZlcnJpZGRlbiBpbiBhbGwgY2hpbGRyZW4sIGJ1dCBzdGlsbCBoYXMgYSBkZWZhdWx0IHZhbHVlO1xuICBwcm90ZWN0ZWQgYW5hbHl0aWNzRXZlbnRTZW50ID0gZmFsc2U7XG4gIHByb3RlY3RlZCBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgcmVjaXBlU2VydmljZTogUmVjaXBlc1NlcnZpY2UsXG4gICAgcHVibGljIHJlY2lwZUV2ZW50c1NlcnZpY2U6IFJlY2lwZUV2ZW50c1NlcnZpY2UsXG4gICAgcHVibGljIGdyb2Nlcmllc0xpc3RzU2VydmljZTogR3JvY2VyaWVzTGlzdHNTZXJ2aWNlLFxuICAgIHB1YmxpYyB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHBvc1NlcnZpY2U6IFBvaW50T2ZTYWxlc1NlcnZpY2UsXG4gICAgcHVibGljIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZWxlbWVudDogRWxlbWVudFJlZlxuICAgICkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IFtdO1xuICAgIHRoaXMuaGlkZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBhZGRSZWNpcGUoZGlzcGxheSA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZUJ1dHRvbkxvYWRlcih0cnVlKTtcbiAgICBmb3JrSm9pbihbXG4gICAgICB0aGlzLnVzZXJTZXJ2aWNlLmlzTG9nZ2VkJC5hc09ic2VydmFibGUoKS5waXBlKHRha2UoMSkpLFxuICAgICAgdGhpcy5wb3NTZXJ2aWNlLmlzUG9zVmFsaWQoKS5waXBlKHRha2UoMSkpXG4gICAgXSlcbiAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICBjb25zdCBpc0hvb2tPayA9IHRoaXMuY29udGV4dFNlcnZpY2UuaG9va0NhbGxiYWNrKHJlc1swXSwgcmVzWzFdKTtcbiAgICAgIGlmIChpc0hvb2tPaykge1xuICAgICAgICB0aGlzLmFkZFJlY2lwZUFjdGlvbk9LKGRpc3BsYXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hZGRSZWNpcGVBY3Rpb25LTygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYWRkUmVjaXBlQWN0aW9uT0soZGlzcGxheSkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5ncm9jZXJpZXNMaXN0c1NlcnZpY2UucmVjaXBlSXNJbkxpc3QodGhpcy5yZWNpcGUuaWQpLnN1YnNjcmliZShyZWNpcGVJc0luTGlzdCA9PiB7XG4gICAgICAgIGlmICghcmVjaXBlSXNJbkxpc3Qpe1xuICAgICAgICAgIHRoaXMucmVjaXBlRXZlbnRzU2VydmljZS5zZW5kRXZlbnQodGhpcy5yZWNpcGUsIHRoaXMucmVjaXBlRXZlbnRzU2VydmljZS5BQ1RJT05fQURERUQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgIHRoaXMuZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlLmFwcGVuZFJlY2lwZVRvTGlzdCh0aGlzLnJlY2lwZS5pZCwgdGhpcy5yZWNpcGUubW9kaWZpZWRHdWVzdHMsIHRoaXMuY2FyZFR5cGUpXG4gICAgICAgICAgLnN1YnNjcmliZShsID0+IHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlQnV0dG9uTG9hZGVyKGZhbHNlKTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICBpZiAoZGlzcGxheSkge1xuICAgICAgICAgIHRoaXMucmVjaXBlU2VydmljZS5kaXNwbGF5T2JqZWN0KHRoaXMucmVjaXBlLCB7IGd1ZXN0cyA6ICt0aGlzLnJlY2lwZS5tb2RpZmllZEd1ZXN0cywgcHJldmlld01vZGU6IHRydWV9KTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgYWRkUmVjaXBlQWN0aW9uS08oKSB7XG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnX21pYW0vY2FjaGVkLXJlY2lwZScsIEpTT04uc3RyaW5naWZ5KHRoaXMucmVjaXBlKSk7XG4gICAgdGhpcy50b2dnbGVCdXR0b25Mb2FkZXIoZmFsc2UpO1xuICB9XG5cbiAgdG9nZ2xlSGVscGVyKCkge1xuICAgIHRoaXMucmVjaXBlU2VydmljZS50b2dnbGVIZWxwZXIoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBvcGVuQ2FsZW5kYXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgc3RvcEV2ZW50UHJvcGFnYXRpb24oZXZlbnQpO1xuICAgIC8vIFRPRE8gaW1wbGVtZW50XG4gIH1cblxuICBzaGFyZVJlY2lwZShldmVudDogRXZlbnQpIHtcbiAgICBzdG9wRXZlbnRQcm9wYWdhdGlvbihldmVudCk7XG4gICAgLy8gVE9ETyBpbXBsZW1lbnRcbiAgfVxuXG4gIHRvZ2dsZUJ1dHRvbkxvYWRlcih2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuYWRkQnV0dG9uTG9hZGluZyA9IHZhbHVlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0SW5ncmVkaWVudHNTdHJpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5pbmdyZWRpZW50c0NvbmNhdE5hbWUgPSAnJztcbiAgICBpZiAodGhpcz8ucmVjaXBlPy5yZWxhdGlvbnNoaXBzKSB7XG4gICAgICB0aGlzLnJlY2lwZS5yZWxhdGlvbnNoaXBzW2BpbmdyZWRpZW50c2BdLmRhdGEuZm9yRWFjaCgoaW5ncmVkaWVudDogSW5ncmVkaWVudCwgaTogbnVtYmVyKSA9PiB7XG4gICAgICAgIHRoaXMuaW5ncmVkaWVudHNDb25jYXROYW1lICs9ICcnICsgaW5ncmVkaWVudC5hdHRyaWJ1dGVzLm5hbWU7XG4gICAgICAgIHRoaXMuaW5ncmVkaWVudHNDb25jYXROYW1lICs9IChpICsgMSA9PT0gdGhpcy5yZWNpcGUucmVsYXRpb25zaGlwc1tgaW5ncmVkaWVudHNgXS5kYXRhLmxlbmd0aCkgPyAnJyA6ICcsICc7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNJblZpZXdwb3J0KCkge1xuICAgIGNvbnN0IHJlY3QgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICByZXR1cm4gKFxuICAgICAgICByZWN0LnRvcCA+PSAwICYmXG4gICAgICAgIHJlY3QubGVmdCA+PSAwICYmXG4gICAgICAgIHJlY3QuYm90dG9tIDw9ICh3aW5kb3cuaW5uZXJIZWlnaHQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCkgJiZcbiAgICAgICAgcmVjdC5yaWdodCA8PSAod2luZG93LmlubmVyV2lkdGggfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoKVxuICAgICk7XG4gIH1cblxuICAvLyBTZW5kIGFuYWx5dGljcyBldmVudCB3aGVuIDpcbiAgLy8gLSBuZXcgcmVjaXBlIGlzIHRvIGJlIGRpc3BsYXllZCBBTkQgaXMgYWxyZWFkeSB2aXNpYmxlIGluIHZpZXdwb3J0XG4gIC8vIE9SXG4gIC8vIC0gdXNlciBzY3JvbGxzIGFuZCByZWNpcGUgYmVjb21lcyB2aXNpYmxlIGluIHZpZXdwb3J0XG4gIHB1YmxpYyBzZW5kU2hvd0V2ZW50KGV2ZW50VHlwZSA9ICdzaG93LXJlY2lwZS1jYXJkJykge1xuICAgIGlmICghdGhpcy5yZWNpcGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmFuYWx5dGljc0V2ZW50U2VudCAmJiB0aGlzLmlzSW5WaWV3cG9ydCgpKSB7XG4gICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2Uuc2VuZEV2ZW50KGV2ZW50VHlwZSk7XG4gICAgICB0aGlzLnJlY2lwZUV2ZW50c1NlcnZpY2UuZW5xdWV1ZUV2ZW50KHRoaXMucmVjaXBlLCB0aGlzLnJlY2lwZUV2ZW50c1NlcnZpY2UuQUNUSU9OX1NIT1dOKVxuICAgICAgdGhpcy5hbmFseXRpY3NFdmVudFNlbnQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkaXNwbGF5UHJpY2UoKXtcblxuICAgIGlmICh0aGlzLmlzUHJpY2VEaXNwbGF5ZWQgfHwgIXRoaXMuaXNJblZpZXdwb3J0KCkpe1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzUHJpY2VEaXNwbGF5ZWQgPSB0cnVlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGluZ3JlZGllbnRQaWN0dXJlKGluZ3JlZGllbnQ6IFNpbXBsaWZpZWRJbmdyZWRpZW50KTogc3RyaW5nIHtcbiAgICByZXR1cm4gaW5ncmVkaWVudC5waWN0dXJlIHx8IHRoaXMuY29udGV4dFNlcnZpY2UuZGVmYXVsdEluZ3JlZGllbnRQaWN0dXJlO1xuICB9XG59XG4iXX0=
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtcmVjaXBlLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fY29tcG9uZW50cy9hYnN0cmFjdHMvYWJzdHJhY3QtcmVjaXBlLWNhcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWMsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9JLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUl0QyxNQUFNLE9BQWdCLDJCQUEyQjtJQWlCL0MsWUFDUyxHQUFzQixFQUN0QixhQUE2QixFQUM3QixtQkFBd0MsRUFDeEMscUJBQTRDLEVBQzVDLFdBQXdCLEVBQ3JCLFVBQStCLEVBQ2xDLGNBQThCLEVBQzNCLGdCQUFrQyxFQUNsQyxPQUFtQjtRQVJ0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFDN0Isd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4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LElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFBO1lBQ3pGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRU0sWUFBWTtRQUVqQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBQztZQUNoRCxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGlCQUFpQixDQUFDLFVBQWdDO1FBQ2hELE9BQU8sVUFBVSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLHdCQUF3QixDQUFDO0lBQzVFLENBQUM7O3NHQWpKbUIsMkJBQTJCO2dFQUEzQiwyQkFBMkI7a0RBQTNCLDJCQUEyQjtjQURoRCxTQUFTO2VBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO3dUQUVoQixVQUFVO2tCQUFsQixLQUFLO1lBQ0csY0FBYztrQkFBdEIsS0FBSztZQUNHLHFCQUFxQjtrQkFBN0IsS0FBSztZQUNJLElBQUk7a0JBQWIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW5ncmVkaWVudCwgU2ltcGxpZmllZEluZ3JlZGllbnQgfSBmcm9tICcuLi8uLi9fbW9kZWxzJztcbmltcG9ydCB7IFJlY2lwZSB9IGZyb20gJy4uLy4uL19tb2RlbHMvcmVjaXBlJztcbmltcG9ydCB7IFJlY2lwZXNTZXJ2aWNlLCBHcm9jZXJpZXNMaXN0c1NlcnZpY2UsIFBvaW50T2ZTYWxlc1NlcnZpY2UsIENvbnRleHRTZXJ2aWNlLCBSZWNpcGVFdmVudHNTZXJ2aWNlLCBVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcyc7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uLy4uL190eXBlcy9za2VsZXRvbi5lbnVtJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuLi8uLi9fdHlwZXMvaWNvbi5lbnVtJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9fc2VydmljZXMvYW5hbHl0aWNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgc3RvcEV2ZW50UHJvcGFnYXRpb24gfSBmcm9tICcuLi8uLi9fdXRpbHMnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuXG5AQ29tcG9uZW50KHsgdGVtcGxhdGU6ICcnIH0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RSZWNpcGVDYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQElucHV0KCkgaGVhZGVyVGV4dCA9ICcnO1xuICBASW5wdXQoKSBkaXNwbGF5UHJpY2luZyA9IHRydWU7XG4gIEBJbnB1dCgpIGRpc3BsYXlBZGRlZE9uUGljdHVyZSA9IHRydWU7XG4gIEBPdXRwdXQoKSBoaWRlOiBFdmVudEVtaXR0ZXI8dm9pZD47XG5cbiAgcmVjaXBlOiBSZWNpcGU7XG4gIGhvdmVyZWQgPSBmYWxzZTtcbiAgaW5ncmVkaWVudHNDb25jYXROYW1lOiBzdHJpbmc7XG4gIGljb24gPSBJY29uO1xuICBza2VsZXRvbiA9IFNrZWxldG9uO1xuICBpc1ByaWNlRGlzcGxheWVkID0gdHJ1ZTtcbiAgYWRkQnV0dG9uTG9hZGluZyA9IGZhbHNlO1xuICBjYXJkVHlwZSA9ICdyZWNpcGUtY2FyZCc7IC8vIG92ZXJyaWRkZW4gaW4gYWxsIGNoaWxkcmVuLCBidXQgc3RpbGwgaGFzIGEgZGVmYXVsdCB2YWx1ZTtcbiAgcHJvdGVjdGVkIGFuYWx5dGljc0V2ZW50U2VudCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHVibGljIHJlY2lwZVNlcnZpY2U6IFJlY2lwZXNTZXJ2aWNlLFxuICAgIHB1YmxpYyByZWNpcGVFdmVudHNTZXJ2aWNlOiBSZWNpcGVFdmVudHNTZXJ2aWNlLFxuICAgIHB1YmxpYyBncm9jZXJpZXNMaXN0c1NlcnZpY2U6IEdyb2Nlcmllc0xpc3RzU2VydmljZSxcbiAgICBwdWJsaWMgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBwb3NTZXJ2aWNlOiBQb2ludE9mU2FsZXNTZXJ2aWNlLFxuICAgIHB1YmxpYyBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGVsZW1lbnQ6IEVsZW1lbnRSZWZcbiAgICApIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICB0aGlzLmhpZGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgYWRkUmVjaXBlKGRpc3BsYXkgPSB0cnVlKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVCdXR0b25Mb2FkZXIodHJ1ZSk7XG4gICAgZm9ya0pvaW4oW1xuICAgICAgdGhpcy51c2VyU2VydmljZS5pc0xvZ2dlZCQuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlKDEpKSxcbiAgICAgIHRoaXMucG9zU2VydmljZS5pc1Bvc1ZhbGlkKCkucGlwZSh0YWtlKDEpKVxuICAgIF0pXG4gICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgY29uc3QgaXNIb29rT2sgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmhvb2tDYWxsYmFjayhyZXNbMF0sIHJlc1sxXSk7XG4gICAgICBpZiAoaXNIb29rT2spIHtcbiAgICAgICAgdGhpcy5hZGRSZWNpcGVBY3Rpb25PSyhkaXNwbGF5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWRkUmVjaXBlQWN0aW9uS08oKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFkZFJlY2lwZUFjdGlvbk9LKGRpc3BsYXkpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlLnJlY2lwZUlzSW5MaXN0KHRoaXMucmVjaXBlLmlkKS5zdWJzY3JpYmUocmVjaXBlSXNJbkxpc3QgPT4ge1xuICAgICAgICBjb25zdCByZWNpcGVXYXNBZGRlZCA9ICFyZWNpcGVJc0luTGlzdDtcbiAgICAgICAgaWYgKHJlY2lwZVdhc0FkZGVkKXtcbiAgICAgICAgICB0aGlzLnJlY2lwZUV2ZW50c1NlcnZpY2Uuc2VuZEV2ZW50KHRoaXMucmVjaXBlLCB0aGlzLnJlY2lwZUV2ZW50c1NlcnZpY2UuQUNUSU9OX0FEREVEKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICB0aGlzLmdyb2Nlcmllc0xpc3RzU2VydmljZS5hcHBlbmRSZWNpcGVUb0xpc3QodGhpcy5yZWNpcGUuaWQsIHRoaXMucmVjaXBlLm1vZGlmaWVkR3Vlc3RzLCB0aGlzLmNhcmRUeXBlKVxuICAgICAgICAgIC5zdWJzY3JpYmUobCA9PiB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZUJ1dHRvbkxvYWRlcihmYWxzZSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGRpc3BsYXkpIHtcbiAgICAgICAgICB0aGlzLnJlY2lwZVNlcnZpY2UuZGlzcGxheU9iamVjdChcbiAgICAgICAgICAgIHRoaXMucmVjaXBlLCB7IGd1ZXN0cyA6ICt0aGlzLnJlY2lwZS5tb2RpZmllZEd1ZXN0cywgcHJldmlld01vZGU6IHRydWUsIHdhc0FkZGVkOiByZWNpcGVXYXNBZGRlZH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBhZGRSZWNpcGVBY3Rpb25LTygpIHtcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdfbWlhbS9jYWNoZWQtcmVjaXBlJywgSlNPTi5zdHJpbmdpZnkodGhpcy5yZWNpcGUpKTtcbiAgICB0aGlzLnRvZ2dsZUJ1dHRvbkxvYWRlcihmYWxzZSk7XG4gIH1cblxuICB0b2dnbGVIZWxwZXIoKSB7XG4gICAgdGhpcy5yZWNpcGVTZXJ2aWNlLnRvZ2dsZUhlbHBlcigpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG9wZW5DYWxlbmRhcihldmVudDogRXZlbnQpIHtcbiAgICBzdG9wRXZlbnRQcm9wYWdhdGlvbihldmVudCk7XG4gICAgLy8gVE9ETyBpbXBsZW1lbnRcbiAgfVxuXG4gIHNoYXJlUmVjaXBlKGV2ZW50OiBFdmVudCkge1xuICAgIHN0b3BFdmVudFByb3BhZ2F0aW9uKGV2ZW50KTtcbiAgICAvLyBUT0RPIGltcGxlbWVudFxuICB9XG5cbiAgdG9nZ2xlQnV0dG9uTG9hZGVyKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5hZGRCdXR0b25Mb2FkaW5nID0gdmFsdWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRJbmdyZWRpZW50c1N0cmluZygpOiB2b2lkIHtcbiAgICB0aGlzLmluZ3JlZGllbnRzQ29uY2F0TmFtZSA9ICcnO1xuICAgIGlmICh0aGlzPy5yZWNpcGU/LnJlbGF0aW9uc2hpcHMpIHtcbiAgICAgIHRoaXMucmVjaXBlLnJlbGF0aW9uc2hpcHNbYGluZ3JlZGllbnRzYF0uZGF0YS5mb3JFYWNoKChpbmdyZWRpZW50OiBJbmdyZWRpZW50LCBpOiBudW1iZXIpID0+IHtcbiAgICAgICAgdGhpcy5pbmdyZWRpZW50c0NvbmNhdE5hbWUgKz0gJycgKyBpbmdyZWRpZW50LmF0dHJpYnV0ZXMubmFtZTtcbiAgICAgICAgdGhpcy5pbmdyZWRpZW50c0NvbmNhdE5hbWUgKz0gKGkgKyAxID09PSB0aGlzLnJlY2lwZS5yZWxhdGlvbnNoaXBzW2BpbmdyZWRpZW50c2BdLmRhdGEubGVuZ3RoKSA/ICcnIDogJywgJztcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0luVmlld3BvcnQoKSB7XG4gICAgY29uc3QgcmVjdCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHJldHVybiAoXG4gICAgICAgIHJlY3QudG9wID49IDAgJiZcbiAgICAgICAgcmVjdC5sZWZ0ID49IDAgJiZcbiAgICAgICAgcmVjdC5ib3R0b20gPD0gKHdpbmRvdy5pbm5lckhlaWdodCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KSAmJlxuICAgICAgICByZWN0LnJpZ2h0IDw9ICh3aW5kb3cuaW5uZXJXaWR0aCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpXG4gICAgKTtcbiAgfVxuXG4gIC8vIFNlbmQgYW5hbHl0aWNzIGV2ZW50IHdoZW4gOlxuICAvLyAtIG5ldyByZWNpcGUgaXMgdG8gYmUgZGlzcGxheWVkIEFORCBpcyBhbHJlYWR5IHZpc2libGUgaW4gdmlld3BvcnRcbiAgLy8gT1JcbiAgLy8gLSB1c2VyIHNjcm9sbHMgYW5kIHJlY2lwZSBiZWNvbWVzIHZpc2libGUgaW4gdmlld3BvcnRcbiAgcHVibGljIHNlbmRTaG93RXZlbnQoZXZlbnRUeXBlID0gJ3Nob3ctcmVjaXBlLWNhcmQnKSB7XG4gICAgaWYgKCF0aGlzLnJlY2lwZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuYW5hbHl0aWNzRXZlbnRTZW50ICYmIHRoaXMuaXNJblZpZXdwb3J0KCkpIHtcbiAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnQoZXZlbnRUeXBlKTtcbiAgICAgIHRoaXMucmVjaXBlRXZlbnRzU2VydmljZS5lbnF1ZXVlRXZlbnQodGhpcy5yZWNpcGUsIHRoaXMucmVjaXBlRXZlbnRzU2VydmljZS5BQ1RJT05fU0hPV04pXG4gICAgICB0aGlzLmFuYWx5dGljc0V2ZW50U2VudCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRpc3BsYXlQcmljZSgpe1xuXG4gICAgaWYgKHRoaXMuaXNQcmljZURpc3BsYXllZCB8fCAhdGhpcy5pc0luVmlld3BvcnQoKSl7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNQcmljZURpc3BsYXllZCA9IHRydWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgaW5ncmVkaWVudFBpY3R1cmUoaW5ncmVkaWVudDogU2ltcGxpZmllZEluZ3JlZGllbnQpOiBzdHJpbmcge1xuICAgIHJldHVybiBpbmdyZWRpZW50LnBpY3R1cmUgfHwgdGhpcy5jb250ZXh0U2VydmljZS5kZWZhdWx0SW5ncmVkaWVudFBpY3R1cmU7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -61,8 +61,16 @@ export class ContextService {
|
|
|
61
61
|
},
|
|
62
62
|
removeEntries: (entries) => this.basketsService.removeBasketEntries(entries),
|
|
63
63
|
initBasketSynchro: () => {
|
|
64
|
+
// We need to initialise the basket and list or the basketSync might not work
|
|
65
|
+
this.basketsService.initBasket();
|
|
64
66
|
this.basketHandler = new BasketHandler(this.basketWrapper);
|
|
65
67
|
this.basketHandler.initBasketProcess();
|
|
68
|
+
},
|
|
69
|
+
// Modify the comparion-map to make it as is all products were added by the retailer. Useful to reset the list without emptying the retailer's basket
|
|
70
|
+
setAllProductsAsRetailers: () => {
|
|
71
|
+
if (this.basketHandler) {
|
|
72
|
+
this.basketHandler.setAllProductsAsRetailers();
|
|
73
|
+
}
|
|
66
74
|
}
|
|
67
75
|
},
|
|
68
76
|
basketMapper: {
|
|
@@ -103,7 +111,9 @@ export class ContextService {
|
|
|
103
111
|
list: {
|
|
104
112
|
reset: () => this.listsService.resetList().subscribe(),
|
|
105
113
|
addRecipe: (recipeId, guests) => this.listsService.appendRecipeToList(recipeId, guests, 'client'),
|
|
106
|
-
hasRecipe: (recipeId) => this.listsService.recipeIsInList(recipeId)
|
|
114
|
+
hasRecipe: (recipeId) => this.listsService.recipeIsInList(recipeId),
|
|
115
|
+
createTemporaryList: () => this.listsService.createTemporaryList(),
|
|
116
|
+
refresh: () => this.listsService.refreshCurrentList()
|
|
107
117
|
},
|
|
108
118
|
pos: {
|
|
109
119
|
load: (posId) => {
|
|
@@ -226,4 +236,4 @@ ContextService.ɵprov = i0.ɵɵdefineInjectable({ token: ContextService, factory
|
|
|
226
236
|
providedIn: 'root'
|
|
227
237
|
}]
|
|
228
238
|
}], function () { return [{ type: i1.PointOfSalesService }, { type: i2.GroceriesListsService }, { type: i3.BasketsService }, { type: i4.UserService }, { type: i5.RecipeProviderService }, { type: i6.AnalyticsService }, { type: i7.RecipesService }, { type: i8.MediaMatcher }, { type: i9.SuppliersService }, { type: i8.BreakpointObserver }]; }, null); })();
|
|
229
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fc2VydmljZXMvY29udGV4dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXZELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQXFCLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7O0FBRTNGLE1BQU0sZUFBZSxHQUFHLHFCQUFxQixDQUFDO0FBTzlDLDZDQUE2QztBQUk3QyxNQUFNLE9BQU8sY0FBYztJQTBLekIsWUFD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QUFFLENBQUMsQ0FBQywyREFBMkQ7U0FDOUY7UUFDRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7OzRFQWxOVSxjQUFjO3NEQUFkLGNBQWMsV0FBZCxjQUFjLG1CQUZiLE1BQU07a0RBRVAsY0FBYztjQUgxQixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHcm9jZXJpZXNMaXN0c1NlcnZpY2UgfSBmcm9tICcuL2dyb2Nlcmllcy1saXN0cy5zZXJ2aWNlJztcbmltcG9ydCB7IFBvaW50T2ZTYWxlc1NlcnZpY2UgfSBmcm9tICcuL3BvaW50LW9mLXNhbGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFza2V0c1NlcnZpY2UgfSBmcm9tICcuL2Jhc2tldHMuc2VydmljZSc7XG5pbXBvcnQgeyBSZWNpcGVQcm92aWRlclNlcnZpY2UgfSBmcm9tICcuL3JlY2lwZS1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4vYW5hbHl0aWNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuL3VzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vX3R5cGVzL2ljb24uZW51bSc7XG5pbXBvcnQgeyBSZWNpcGVzU2VydmljZSB9IGZyb20gJy4vcmVjaXBlcy5zZXJ2aWNlJztcbmltcG9ydCB7IE1lZGlhTWF0Y2hlciwgQnJlYWtwb2ludE9ic2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBTdXBwbGllcnNTZXJ2aWNlIH0gZnJvbSAnLi9zdXBwbGllcnMuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vX21vZGVscyc7XG5pbXBvcnQgeyBtYXAsIHNraXBXaGlsZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJhc2tldEhhbmRsZXIsIEJhc2tldFdyYXBwZXIsIENvbXBhcmFibGVQcm9kdWN0IH0gZnJvbSAnLi4vX3V0aWxzL3N5bmNocm8tYmFza2V0JztcblxuY29uc3QgU01BTExfU0NSRUVOX0JQID0gJyhtaW4td2lkdGg6IDEwMjNweCknO1xuXG5pbnRlcmZhY2UgSWNvbk92ZXJyaWRlIHtcbiAgaWNvbjogSWNvbjtcbiAgdXJsOiBzdHJpbmc7XG59XG5cbi8vIENvbnRleHQgc2hhcmVkIGJldHdlZW4gTWlhbSBTREsgJiBob3N0IGFwcFxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ29udGV4dFNlcnZpY2Uge1xuICB1c2VySW5mbzogVXNlcjtcbiAgaWNvbnM6IEljb25PdmVycmlkZVtdO1xuICB2aWRlb1JlY2lwZXNFbmFibGVkID0gZmFsc2U7XG4gIGFydGljbGVzSW5DYXRhbG9nRW5hYmxlZCA9IGZhbHNlO1xuICB0YWdzT25SZWNpcGVzRW5hYmxlZCA9IGZhbHNlO1xuICBob29rQ2FsbGJhY2s6IChpc0xvZ2dlZCwgaXNQb3NWYWxpZCkgPT4gYm9vbGVhbjtcbiAgZGlzcGxheUluZ3JlZGllbnRQaWN0dXJlc09uUmVjaXBlQ2FyZHMgPSBmYWxzZTtcbiAgZGVmYXVsdEluZ3JlZGllbnRQaWN0dXJlID0gJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvaW1hZ2VzL2RlZmF1bHQtaW5ncmVkaWVudC1waWN0dXJlLnN2Zyc7XG4gIGdsb2JhbFNjcm9sbGFibGVFbGVtZW50OiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LmJvZHk7XG5cbiAgcHJpdmF0ZSBDT1JTSXNzdWVzOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgaXNTbWFsbFNjcmVlbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBiYXNrZXRXcmFwcGVyID0gbmV3IEJhc2tldFdyYXBwZXIoKTtcbiAgcHJpdmF0ZSBiYXNrZXRIYW5kbGVyOiBCYXNrZXRIYW5kbGVyO1xuXG4gIG1pYW0gPSB7XG4gICAgYW5hbHl0aWNzOiB7XG4gICAgICBpbml0OiAoZ2FLZXk6IHN0cmluZywgb3B0aW1pemVLZXk6IHN0cmluZyA9IG51bGwpID0+IHRoaXMuYW5hbHl0aWNzU2VydmljZS5pbml0KGdhS2V5LCBvcHRpbWl6ZUtleSksXG4gICAgICBzZXRBYlRlc3RLZXk6IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuYWJUZXN0a2V5ID0ga2V5O1xuICAgICAgfVxuICAgIH0sXG4gICAgYmFza2V0OiB7XG4gICAgICBzdGF0cyQ6IHRoaXMuYmFza2V0c1NlcnZpY2UuYmFza2V0U3RhdHMkLFxuICAgICAgZW50cmllcyQ6IHRoaXMuYmFza2V0c1NlcnZpY2UuYWN0aXZlQmFza2V0RW50cmllcygpLFxuICAgICAgY29uZmlybTogKCkgPT4gdGhpcy5iYXNrZXRzU2VydmljZS5jb25maXJtQmFza2V0KCksXG4gICAgICBwYWlkOiAocHJpY2UgPSAwKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdbTWlhbV0gc2VuZCBwYXltZW50IGFuYWx5dGljcyBldmVudCcpO1xuICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2Uuc2VuZEV2ZW50KCdwYXktYmFza2V0JywgbnVsbCwgcHJpY2UpO1xuICAgICAgfSxcbiAgICAgIHJlbW92ZUVudHJpZXM6IChlbnRyaWVzOiB7IGlkOiBzdHJpbmcsIHF0eTogbnVtYmVyIH1bXSkgPT4gdGhpcy5iYXNrZXRzU2VydmljZS5yZW1vdmVCYXNrZXRFbnRyaWVzKGVudHJpZXMpLFxuICAgICAgaW5pdEJhc2tldFN5bmNocm86ICgpID0+IHtcbiAgICAgICAgdGhpcy5iYXNrZXRIYW5kbGVyID0gbmV3IEJhc2tldEhhbmRsZXIodGhpcy5iYXNrZXRXcmFwcGVyKTtcbiAgICAgICAgdGhpcy5iYXNrZXRIYW5kbGVyLmluaXRCYXNrZXRQcm9jZXNzKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBiYXNrZXRNYXBwZXI6IHtcbiAgICAgIGhhc1BheW1lbnQ6IChjYWxsYmFjazogKCkgPT4gYm9vbGVhbikgPT4gdGhpcy5iYXNrZXRXcmFwcGVyLmhhc1BheW1lbnQgPSBjYWxsYmFjayxcbiAgICAgIHBheW1lbnRUb3RhbDogKGNhbGxiYWNrOiAoKSA9PiBudW1iZXIpID0+IHRoaXMuYmFza2V0V3JhcHBlci5wYXltZW50VG90YWwgPSBjYWxsYmFjayxcbiAgICAgIGxpc3RlblRvUmV0YWlsZXJCYXNrZXQ6IChjYWxsYmFjazogKGJhc2tldENoYW5nZWRDYWxsQmFjazogKHByb2R1Y3RzOiBDb21wYXJhYmxlUHJvZHVjdFtdKSA9PiB2b2lkKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgIHRoaXMuYmFza2V0V3JhcHBlci5saXN0ZW5Ub1JldGFpbGVyQmFza2V0ID0gY2FsbGJhY2s7XG4gICAgICB9LFxuICAgICAgZ2V0QmFza2V0UHJvZHVjdHM6IChjYWxsYmFjazogKCkgPT4gQ29tcGFyYWJsZVByb2R1Y3RbXSkgPT4gdGhpcy5iYXNrZXRXcmFwcGVyLmdldEJhc2tldFByb2R1Y3RzID0gY2FsbGJhY2ssXG4gICAgICBwdXNoUHJvZHVjdHNUb0Jhc2tldDogKGNhbGxiYWNrOiAocHJvZHVjdHM6IGFueVtdKSA9PiB2b2lkKSA9PiB0aGlzLmJhc2tldFdyYXBwZXIucHVzaFByb2R1Y3RzVG9CYXNrZXQgPSBjYWxsYmFjayxcbiAgICAgIG1hcENvbXBhcmFibGVQcm9kdWN0VG9Qcm9kdWN0OiAoY2FsbGJhY2s6IChjb21wYXJhYmxlUHJvZHVjdDogQ29tcGFyYWJsZVByb2R1Y3QpID0+IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmJhc2tldFdyYXBwZXIubWFwQ29tcGFyYWJsZVByb2R1Y3RUb1Byb2R1Y3QgPSBjYWxsYmFjaztcbiAgICAgIH0sXG4gICAgfSxcbiAgICBmZWF0dXJlczoge1xuICAgICAgZW5hYmxlVmlkZW9SZWNpcGVzOiAoKSA9PiB7XG4gICAgICAgIHRoaXMudmlkZW9SZWNpcGVzRW5hYmxlZCA9IHRydWU7XG4gICAgICAgIC8vIEluamVjdCB5b3V0dWJlIHNjcmlwdFxuICAgICAgICBjb25zdCB0YWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgICAgdGFnLnNyYyA9ICdodHRwczovL3d3dy55b3V0dWJlLmNvbS9pZnJhbWVfYXBpJztcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0YWcpO1xuICAgICAgfSxcbiAgICAgIGVuYWJsZUFydGljbGVzSW5DYXRhbG9nOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuYXJ0aWNsZXNJbkNhdGFsb2dFbmFibGVkID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICBlbmFibGVVc2VyUHJlZmVyZW5jZXM6ICgpID0+IHtcbiAgICAgICAgdGhpcy51c2VyU2VydmljZS5wcmVmZXJlbmNlc0FjdGl2YXRlZCQubmV4dCh0cnVlKTtcbiAgICAgIH0sXG4gICAgICBlbmFibGVUYWdzT25SZWNpcGVzOiAoKSA9PiB7XG4gICAgICAgIHRoaXMudGFnc09uUmVjaXBlc0VuYWJsZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0sXG4gICAgaG9vazoge1xuICAgICAgc2V0SG9va0NhbGxiYWNrOiAoY2FsbGJhY2s6IChpc0xvZ2dlZCwgaXNQb3NWYWxpZCkgPT4gYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLmhvb2tDYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgICAgfVxuICAgIH0sXG4gICAgbGlzdDoge1xuICAgICAgcmVzZXQ6ICgpID0+IHRoaXMubGlzdHNTZXJ2aWNlLnJlc2V0TGlzdCgpLnN1YnNjcmliZSgpLFxuICAgICAgYWRkUmVjaXBlOiAocmVjaXBlSWQsIGd1ZXN0cykgPT4gdGhpcy5saXN0c1NlcnZpY2UuYXBwZW5kUmVjaXBlVG9MaXN0KHJlY2lwZUlkLCBndWVzdHMsICdjbGllbnQnKSxcbiAgICAgIGhhc1JlY2lwZTogKHJlY2lwZUlkKSA9PiB0aGlzLmxpc3RzU2VydmljZS5yZWNpcGVJc0luTGlzdChyZWNpcGVJZClcbiAgICB9LFxuICAgIHBvczoge1xuICAgICAgbG9hZDogKHBvc0lkKSA9PiB7XG4gICAgICAgIHRoaXMucG9zU2VydmljZS5sb2FkUG9zKHBvc0lkKTtcbiAgICAgIH0sXG4gICAgICBsb2FkV2l0aEV4dElkOiAoZXh0SWQsIHN1cHBsaWVySWQpID0+IHtcbiAgICAgICAgdGhpcy5wb3NTZXJ2aWNlLmxvYWRQb3NXaXRoRXh0SWQoZXh0SWQsIHN1cHBsaWVySWQpO1xuICAgICAgfSxcbiAgICAgIHBvcyQ6IHRoaXMucG9zU2VydmljZS5wb3MkXG4gICAgfSxcbiAgICByZWNpcGVzOiB7XG4gICAgICBkaXNwbGF5OiAoaWQsIHByZXZpZXdBbGxvd2VkID0gdHJ1ZSwgcHJldmlld01vZGUgPSBmYWxzZSkgPT4gdGhpcy5yZWNpcGVzU2VydmljZS5kaXNwbGF5KGlkLCB7cHJldmlld0FsbG93ZWQsIHByZXZpZXdNb2RlfSksXG4gICAgICBoaWRkZW46IHRoaXMucmVjaXBlc1NlcnZpY2UuaGlkZGVuLFxuICAgICAgc2VhcmNoOiAocHJvdmlkZXIsIHF1ZXJ5KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlY2lwZXNTZXJ2aWNlLmFsbChcbiAgICAgICAgICB7IHJlbW90ZWZpbHRlcjogeyByZWNpcGVfcHJvdmlkZXJfaWQ6IHByb3ZpZGVyLCBzZWFyY2g6IHF1ZXJ5IH0gfVxuICAgICAgICApLnBpcGUoXG4gICAgICAgICAgc2tpcFdoaWxlKHJlc3VsdCA9PiAhcmVzdWx0KSxcbiAgICAgICAgICBtYXAocmVzcG9uc2UgPT4gcmVzcG9uc2VbJ2RhdGEnXSlcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICBzaG91bGREaXNwbGF5SW5ncmVkaWVudFBpY3R1cmVzT25SZWNpcGVDYXJkczogKHNob3VsZDogYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLmRpc3BsYXlJbmdyZWRpZW50UGljdHVyZXNPblJlY2lwZUNhcmRzID0gc2hvdWxkO1xuICAgICAgfSxcbiAgICAgIHNldERlZmF1bHRJbmdyZWRpZW50UGljdHVyZTogKHVybDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuZGVmYXVsdEluZ3JlZGllbnRQaWN0dXJlID0gdXJsO1xuICAgICAgfSxcbiAgICAgIHNldFN1Z2dlc3Rpb25zUHJpbWFyeUJ1dHRvbkFjdGlvbnM6IChkaXNwbGF5ID0gdHJ1ZSwgYWRkVG9CYXNrZXQgPSB0cnVlKSA9PiB7XG4gICAgICAgIHRoaXMucmVjaXBlc1NlcnZpY2Uuc3VnZ2VzdGlvbnNQcmltYXJ5QnV0dG9uQWN0aW9ucyA9IHsgZGlzcGxheSwgYWRkVG9CYXNrZXQgfTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJvdXRlcjoge1xuICAgICAgc2V0UmVjaXBlQ2F0YWxvZ1VybDogKHVybCA9ICcnKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMubWlhbS5yb3V0ZXIuY2F0YWxvZyA9IHVybDtcbiAgICAgIH0sXG4gICAgICBjYXRhbG9nOiAnJ1xuICAgIH0sXG4gICAgc3VwcGxpZXI6IHtcbiAgICAgIGxvYWQ6IChzdXBwbGllcklkOiBudW1iZXIgfCBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5zdXBwbGllcnNTZXJ2aWNlLmxvYWRTdXBwbGllcihzdXBwbGllcklkLnRvU3RyaW5nKCkpO1xuICAgICAgfSxcbiAgICAgIG5vdGlmeUJhc2tldFVwZGF0ZWQ6IChiYXNrZXRUb2tlbjogc3RyaW5nLCBzdGF0dXM6IHN0cmluZywgcHJpY2U6IG51bWJlciB8IHN0cmluZyA9IG51bGwpID0+IHtcbiAgICAgICAgdGhpcy5zdXBwbGllcnNTZXJ2aWNlLm5vdGlmeUJhc2tldFVwZGF0ZWQoYmFza2V0VG9rZW4sIHN0YXR1cywgcHJpY2UpLnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgdXNlcjoge1xuICAgICAgc2V0VG9rZW46ICh0b2tlbiwgZm9yYmlkUHJvZmlsaW5nID0gZmFsc2UsIGluaXRCYXNrZXQgPSBmYWxzZSkgPT4ge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnX21pYW0vdXNlclRva2VuJywgdG9rZW4pO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnX21pYW0vdXNlcklkJyk7XG4gICAgICAgIHJldHVybiB0aGlzLmxvZ1VzZXIoZm9yYmlkUHJvZmlsaW5nLCBpbml0QmFza2V0KTtcbiAgICAgIH0sXG4gICAgICBsb2FkV2l0aEV4dElkOiAoaWQsIGZvcmJpZFByb2ZpbGluZyA9IGZhbHNlLCBpbml0QmFza2V0ID0gZmFsc2UpID0+IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ19taWFtL3VzZXJJZCcsIGlkKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ19taWFtL3VzZXJUb2tlbicpO1xuICAgICAgICByZXR1cm4gdGhpcy5sb2dVc2VyKGZvcmJpZFByb2ZpbGluZywgaW5pdEJhc2tldCk7XG4gICAgICB9LFxuICAgICAgcmVzZXQ6ICgpID0+IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ19taWFtL3VzZXJUb2tlbicpO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnX21pYW0vdXNlcklkJyk7XG4gICAgICAgIHRoaXMudXNlclNlcnZpY2UudG9nZ2xlSXNMb2dnZWQoZmFsc2UpO1xuICAgICAgICBjb25zb2xlLmxvZygnW01pYW1dIHdpbGwgcmVmcmVzaCBsaXN0IGFmdGVyIHJlc2V0Jyk7XG4gICAgICAgIHRoaXMubGlzdHNTZXJ2aWNlLnJlZnJlc2hDdXJyZW50TGlzdCgpO1xuICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLnJlc2V0VXNlckluZm8oKTtcbiAgICAgIH0sXG4gICAgICBzZXRGYXZvcml0ZUl0ZW1zOiAoZmF2b3JpdGVQcm9kdWN0SWRzKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVzZXJTZXJ2aWNlLnNldEZhdm9yaXRlSXRlbXMoZmF2b3JpdGVQcm9kdWN0SWRzKTtcbiAgICAgIH0sXG4gICAgICBkZXZpY2U6IHRoaXMubWVkaWFNYXRjaGVyLFxuICAgICAgaXNTbWFsbFNjcmVlbiQ6IHRoaXMuaXNTbWFsbFNjcmVlbiQuYXNPYnNlcnZhYmxlKClcbiAgICB9LFxuICAgIHZpZXc6IHtcbiAgICAgIC8vIFNldCB0aGUgbWFpbiBzY3JvbGxpbmcgSFRNTEVsZW1lbnQgb2YgdGhlIHdlYnNpdGUgc28gd2UgY2FuIGRpc2FibGUgc2Nyb2xsIHdoZW4gYSBtb2RhbC9kcmF3ZXIvcG9wdXAgaXMgb3BlblxuICAgICAgc2V0R2xvYmFsU2Nyb2xsYWJsZUVsZW1lbnQ6IChlbGVtZW50OiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoZWxlbWVudCAmJiB0aGlzLmdsb2JhbFNjcm9sbGFibGVFbGVtZW50ICE9PSBlbGVtZW50KSB7XG4gICAgICAgICAgdGhpcy5nbG9iYWxTY3JvbGxhYmxlRWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGUgdHdvIHRpbWVzICdsbCBub3QgYmUgY29uc2lkZXJlZFxuICAgICAqIEBwYXJhbSBpY29uIGhhdmUgdG8gYmUgYSBrbm93ZWQgaWNvbiBuYW1lIHNlZSBzZWN0aW9uICdDdXN0b20gaWNvbnMnIGluIHJlYWQgbWVcbiAgICAgKiBAcGFyYW0gdXJsIG9mIHRoZSBuZXcgaWNvblxuICAgICAqL1xuICAgIG92ZXJyaWRlSWNvbjogKGljb24sIHVybCkgPT4geyAvLyBUT0RPOiBNT1ZFIFRPIGNvbnRlbnRcbiAgICAgIGlmICghdGhpcy5pY29ucykgeyB0aGlzLmljb25zID0gW107IH1cbiAgICAgIGNvbnN0IGV4aXN0aW5nSWNvbiA9IHRoaXMuaWNvbnMuZmluZCgoaTogSWNvbk92ZXJyaWRlKSA9PiBpLmljb24udG9TdHJpbmcoKSA9PT0gaWNvbik7XG4gICAgICBpZiAoZXhpc3RpbmdJY29uKSB7XG4gICAgICAgIHRoaXMuaWNvbnMuc3BsaWNlKHRoaXMuaWNvbnMuaW5kZXhPZihleGlzdGluZ0ljb24pLCAxKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaWNvbnMucHVzaCh7IGljb24sIHVybCB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwb3NTZXJ2aWNlOiBQb2ludE9mU2FsZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGlzdHNTZXJ2aWNlOiBHcm9jZXJpZXNMaXN0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYXNrZXRzU2VydmljZTogQmFza2V0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNpcGVzUHJvdmlkZXJzU2VydmljZTogUmVjaXBlUHJvdmlkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZXNTZXJ2aWNlOiBSZWNpcGVzU2VydmljZSxcbiAgICBwcml2YXRlIG1lZGlhTWF0Y2hlcjogTWVkaWFNYXRjaGVyLFxuICAgIHByaXZhdGUgc3VwcGxpZXJzU2VydmljZTogU3VwcGxpZXJzU2VydmljZSxcbiAgICBwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyXG4gICkge1xuICAgIHRoaXMuaXNTbWFsbFNjcmVlbiQubmV4dCghdGhpcy5tZWRpYU1hdGNoZXIubWF0Y2hNZWRpYShTTUFMTF9TQ1JFRU5fQlApLm1hdGNoZXMpO1xuICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLm9ic2VydmUoU01BTExfU0NSRUVOX0JQKS5zdWJzY3JpYmUoQlBDaGFuZ2UgPT4gdGhpcy5pc1NtYWxsU2NyZWVuJC5uZXh0KCFCUENoYW5nZS5tYXRjaGVzKSk7XG4gICAgdGhpcy5pY29ucyA9IFtdO1xuICAgIHRoaXMuQ09SU0lzc3VlcyA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICAgIE9iamVjdC5hc3NpZ24od2luZG93LCB7IG1pYW06IHRoaXMubWlhbSB9KTtcblxuICB9XG5cbiAgc2V0Q09SU0lzc3VlU3RhdGUodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLkNPUlNJc3N1ZXMubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBnZXRDT1JTSXNzdWVzU3RhdGUoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuQ09SU0lzc3Vlcy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldE92ZXJyaWRlSWNvblVybChpY29uOiBJY29uKTogc3RyaW5nIHtcbiAgICBjb25zdCBmaW5kaWNvbiA9IHRoaXMuaWNvbnMuZmluZChlbCA9PiBlbC5pY29uLnRvU3RyaW5nKCkgPT09IEljb25baWNvbl0pO1xuICAgIHJldHVybiBmaW5kaWNvbiA/IGZpbmRpY29uLnVybCA6ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2dVc2VyKGZvcmJpZFByb2ZpbGluZzogYm9vbGVhbiwgaW5pdEJhc2tldDogYm9vbGVhbikge1xuICAgIHRoaXMudXNlclNlcnZpY2UudG9nZ2xlSXNMb2dnZWQodHJ1ZSk7XG4gICAgLy8gaWYgaW5pdEJhc2tldCBpcyBzZXQgdG8gZmFsc2UsIHRoZSBiYXNrZXQgJiBsaXN0IHdpbGwgbm90IGJlIGluaXRpYWxpc2VkIHVudGlsIHRoZSBmaXJzdCB0aW1lIHRoZXkgYXJlIG5lZWRlZFxuICAgIGlmIChpbml0QmFza2V0KSB7XG4gICAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLmluaXRCYXNrZXQoKTsgLy8gVGhlIGJhc2tldCBuZWVkcyB0aGUgR0wgc28gYm90aCB3aWxsIGJlIGluaXRpYWxpemVkIGhlcmVcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudXNlclNlcnZpY2Uuc2V0VXNlckluZm8oZm9yYmlkUHJvZmlsaW5nKTtcbiAgfVxufVxuIl19
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fc2VydmljZXMvY29udGV4dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXZELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQXFCLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7O0FBRTNGLE1BQU0sZUFBZSxHQUFHLHFCQUFxQixDQUFDO0FBTzlDLDZDQUE2QztBQUk3QyxNQUFNLE9BQU8sY0FBYztJQW9MekIsWUFD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SSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxRSxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFTyxPQUFPLENBQUMsZUFBd0IsRUFBRSxVQUFtQjtRQUMzRCxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxnSEFBZ0g7UUFDaEgsSUFBSSxVQUFVLEVBQUU7WUFDZCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsMkRBQTJEO1NBQzlGO1FBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN2RCxDQUFDOzs0RUE1TlUsY0FBYztzREFBZCxjQUFjLFdBQWQsY0FBYyxtQkFGYixNQUFNO2tEQUVQLGNBQWM7Y0FIMUIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3JvY2VyaWVzTGlzdHNTZXJ2aWNlIH0gZnJvbSAnLi9ncm9jZXJpZXMtbGlzdHMuc2VydmljZSc7XG5pbXBvcnQgeyBQb2ludE9mU2FsZXNTZXJ2aWNlIH0gZnJvbSAnLi9wb2ludC1vZi1zYWxlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2tldHNTZXJ2aWNlIH0gZnJvbSAnLi9iYXNrZXRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVjaXBlUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi9yZWNpcGUtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuL2FuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gJy4uL190eXBlcy9pY29uLmVudW0nO1xuaW1wb3J0IHsgUmVjaXBlc1NlcnZpY2UgfSBmcm9tICcuL3JlY2lwZXMuc2VydmljZSc7XG5pbXBvcnQgeyBNZWRpYU1hdGNoZXIsIEJyZWFrcG9pbnRPYnNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgU3VwcGxpZXJzU2VydmljZSB9IGZyb20gJy4vc3VwcGxpZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uL19tb2RlbHMnO1xuaW1wb3J0IHsgbWFwLCBza2lwV2hpbGUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCYXNrZXRIYW5kbGVyLCBCYXNrZXRXcmFwcGVyLCBDb21wYXJhYmxlUHJvZHVjdCB9IGZyb20gJy4uL191dGlscy9zeW5jaHJvLWJhc2tldCc7XG5cbmNvbnN0IFNNQUxMX1NDUkVFTl9CUCA9ICcobWluLXdpZHRoOiAxMDIzcHgpJztcblxuaW50ZXJmYWNlIEljb25PdmVycmlkZSB7XG4gIGljb246IEljb247XG4gIHVybDogc3RyaW5nO1xufVxuXG4vLyBDb250ZXh0IHNoYXJlZCBiZXR3ZWVuIE1pYW0gU0RLICYgaG9zdCBhcHBcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHRTZXJ2aWNlIHtcbiAgdXNlckluZm86IFVzZXI7XG4gIGljb25zOiBJY29uT3ZlcnJpZGVbXTtcbiAgdmlkZW9SZWNpcGVzRW5hYmxlZCA9IGZhbHNlO1xuICBhcnRpY2xlc0luQ2F0YWxvZ0VuYWJsZWQgPSBmYWxzZTtcbiAgdGFnc09uUmVjaXBlc0VuYWJsZWQgPSBmYWxzZTtcbiAgaG9va0NhbGxiYWNrOiAoaXNMb2dnZWQsIGlzUG9zVmFsaWQpID0+IGJvb2xlYW47XG4gIGRpc3BsYXlJbmdyZWRpZW50UGljdHVyZXNPblJlY2lwZUNhcmRzID0gZmFsc2U7XG4gIGRlZmF1bHRJbmdyZWRpZW50UGljdHVyZSA9ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL2ltYWdlcy9kZWZhdWx0LWluZ3JlZGllbnQtcGljdHVyZS5zdmcnO1xuICBnbG9iYWxTY3JvbGxhYmxlRWxlbWVudDogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5ib2R5O1xuXG4gIHByaXZhdGUgQ09SU0lzc3VlczogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIGlzU21hbGxTY3JlZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgYmFza2V0V3JhcHBlciA9IG5ldyBCYXNrZXRXcmFwcGVyKCk7XG4gIHByaXZhdGUgYmFza2V0SGFuZGxlcjogQmFza2V0SGFuZGxlcjtcblxuICBtaWFtID0ge1xuICAgIGFuYWx5dGljczoge1xuICAgICAgaW5pdDogKGdhS2V5OiBzdHJpbmcsIG9wdGltaXplS2V5OiBzdHJpbmcgPSBudWxsKSA9PiB0aGlzLmFuYWx5dGljc1NlcnZpY2UuaW5pdChnYUtleSwgb3B0aW1pemVLZXkpLFxuICAgICAgc2V0QWJUZXN0S2V5OiAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmFiVGVzdGtleSA9IGtleTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGJhc2tldDoge1xuICAgICAgc3RhdHMkOiB0aGlzLmJhc2tldHNTZXJ2aWNlLmJhc2tldFN0YXRzJCxcbiAgICAgIGVudHJpZXMkOiB0aGlzLmJhc2tldHNTZXJ2aWNlLmFjdGl2ZUJhc2tldEVudHJpZXMoKSxcbiAgICAgIGNvbmZpcm06ICgpID0+IHRoaXMuYmFza2V0c1NlcnZpY2UuY29uZmlybUJhc2tldCgpLFxuICAgICAgcGFpZDogKHByaWNlID0gMCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnW01pYW1dIHNlbmQgcGF5bWVudCBhbmFseXRpY3MgZXZlbnQnKTtcbiAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLnNlbmRFdmVudCgncGF5LWJhc2tldCcsIG51bGwsIHByaWNlKTtcbiAgICAgIH0sXG4gICAgICByZW1vdmVFbnRyaWVzOiAoZW50cmllczogeyBpZDogc3RyaW5nLCBxdHk6IG51bWJlciB9W10pID0+IHRoaXMuYmFza2V0c1NlcnZpY2UucmVtb3ZlQmFza2V0RW50cmllcyhlbnRyaWVzKSxcbiAgICAgIGluaXRCYXNrZXRTeW5jaHJvOiAoKSA9PiB7XG4gICAgICAgIC8vIFdlIG5lZWQgdG8gaW5pdGlhbGlzZSB0aGUgYmFza2V0IGFuZCBsaXN0IG9yIHRoZSBiYXNrZXRTeW5jIG1pZ2h0IG5vdCB3b3JrXG4gICAgICAgIHRoaXMuYmFza2V0c1NlcnZpY2UuaW5pdEJhc2tldCgpO1xuICAgICAgICB0aGlzLmJhc2tldEhhbmRsZXIgPSBuZXcgQmFza2V0SGFuZGxlcih0aGlzLmJhc2tldFdyYXBwZXIpO1xuICAgICAgICB0aGlzLmJhc2tldEhhbmRsZXIuaW5pdEJhc2tldFByb2Nlc3MoKTtcbiAgICAgIH0sXG4gICAgICAvLyBNb2RpZnkgdGhlIGNvbXBhcmlvbi1tYXAgdG8gbWFrZSBpdCBhcyBpcyBhbGwgcHJvZHVjdHMgd2VyZSBhZGRlZCBieSB0aGUgcmV0YWlsZXIuIFVzZWZ1bCB0byByZXNldCB0aGUgbGlzdCB3aXRob3V0IGVtcHR5aW5nIHRoZSByZXRhaWxlcidzIGJhc2tldFxuICAgICAgc2V0QWxsUHJvZHVjdHNBc1JldGFpbGVyczogKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5iYXNrZXRIYW5kbGVyKSB7XG4gICAgICAgICAgdGhpcy5iYXNrZXRIYW5kbGVyLnNldEFsbFByb2R1Y3RzQXNSZXRhaWxlcnMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgYmFza2V0TWFwcGVyOiB7XG4gICAgICBoYXNQYXltZW50OiAoY2FsbGJhY2s6ICgpID0+IGJvb2xlYW4pID0+IHRoaXMuYmFza2V0V3JhcHBlci5oYXNQYXltZW50ID0gY2FsbGJhY2ssXG4gICAgICBwYXltZW50VG90YWw6IChjYWxsYmFjazogKCkgPT4gbnVtYmVyKSA9PiB0aGlzLmJhc2tldFdyYXBwZXIucGF5bWVudFRvdGFsID0gY2FsbGJhY2ssXG4gICAgICBsaXN0ZW5Ub1JldGFpbGVyQmFza2V0OiAoY2FsbGJhY2s6IChiYXNrZXRDaGFuZ2VkQ2FsbEJhY2s6IChwcm9kdWN0czogQ29tcGFyYWJsZVByb2R1Y3RbXSkgPT4gdm9pZCkgPT4gdm9pZCkgPT4ge1xuICAgICAgICB0aGlzLmJhc2tldFdyYXBwZXIubGlzdGVuVG9SZXRhaWxlckJhc2tldCA9IGNhbGxiYWNrO1xuICAgICAgfSxcbiAgICAgIGdldEJhc2tldFByb2R1Y3RzOiAoY2FsbGJhY2s6ICgpID0+IENvbXBhcmFibGVQcm9kdWN0W10pID0+IHRoaXMuYmFza2V0V3JhcHBlci5nZXRCYXNrZXRQcm9kdWN0cyA9IGNhbGxiYWNrLFxuICAgICAgcHVzaFByb2R1Y3RzVG9CYXNrZXQ6IChjYWxsYmFjazogKHByb2R1Y3RzOiBhbnlbXSkgPT4gdm9pZCkgPT4gdGhpcy5iYXNrZXRXcmFwcGVyLnB1c2hQcm9kdWN0c1RvQmFza2V0ID0gY2FsbGJhY2ssXG4gICAgICBtYXBDb21wYXJhYmxlUHJvZHVjdFRvUHJvZHVjdDogKGNhbGxiYWNrOiAoY29tcGFyYWJsZVByb2R1Y3Q6IENvbXBhcmFibGVQcm9kdWN0KSA9PiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5iYXNrZXRXcmFwcGVyLm1hcENvbXBhcmFibGVQcm9kdWN0VG9Qcm9kdWN0ID0gY2FsbGJhY2s7XG4gICAgICB9LFxuICAgIH0sXG4gICAgZmVhdHVyZXM6IHtcbiAgICAgIGVuYWJsZVZpZGVvUmVjaXBlczogKCkgPT4ge1xuICAgICAgICB0aGlzLnZpZGVvUmVjaXBlc0VuYWJsZWQgPSB0cnVlO1xuICAgICAgICAvLyBJbmplY3QgeW91dHViZSBzY3JpcHRcbiAgICAgICAgY29uc3QgdGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICAgIHRhZy5zcmMgPSAnaHR0cHM6Ly93d3cueW91dHViZS5jb20vaWZyYW1lX2FwaSc7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGFnKTtcbiAgICAgIH0sXG4gICAgICBlbmFibGVBcnRpY2xlc0luQ2F0YWxvZzogKCkgPT4ge1xuICAgICAgICB0aGlzLmFydGljbGVzSW5DYXRhbG9nRW5hYmxlZCA9IHRydWU7XG4gICAgICB9LFxuICAgICAgZW5hYmxlVXNlclByZWZlcmVuY2VzOiAoKSA9PiB7XG4gICAgICAgIHRoaXMudXNlclNlcnZpY2UucHJlZmVyZW5jZXNBY3RpdmF0ZWQkLm5leHQodHJ1ZSk7XG4gICAgICB9LFxuICAgICAgZW5hYmxlVGFnc09uUmVjaXBlczogKCkgPT4ge1xuICAgICAgICB0aGlzLnRhZ3NPblJlY2lwZXNFbmFibGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhvb2s6IHtcbiAgICAgIHNldEhvb2tDYWxsYmFjazogKGNhbGxiYWNrOiAoaXNMb2dnZWQsIGlzUG9zVmFsaWQpID0+IGJvb2xlYW4pID0+IHtcbiAgICAgICAgdGhpcy5ob29rQ2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICAgIH1cbiAgICB9LFxuICAgIGxpc3Q6IHtcbiAgICAgIHJlc2V0OiAoKSA9PiB0aGlzLmxpc3RzU2VydmljZS5yZXNldExpc3QoKS5zdWJzY3JpYmUoKSxcbiAgICAgIGFkZFJlY2lwZTogKHJlY2lwZUlkLCBndWVzdHMpID0+IHRoaXMubGlzdHNTZXJ2aWNlLmFwcGVuZFJlY2lwZVRvTGlzdChyZWNpcGVJZCwgZ3Vlc3RzLCAnY2xpZW50JyksXG4gICAgICBoYXNSZWNpcGU6IChyZWNpcGVJZCkgPT4gdGhpcy5saXN0c1NlcnZpY2UucmVjaXBlSXNJbkxpc3QocmVjaXBlSWQpLFxuICAgICAgY3JlYXRlVGVtcG9yYXJ5TGlzdDogKCkgPT4gdGhpcy5saXN0c1NlcnZpY2UuY3JlYXRlVGVtcG9yYXJ5TGlzdCgpLFxuICAgICAgcmVmcmVzaDogKCkgPT4gdGhpcy5saXN0c1NlcnZpY2UucmVmcmVzaEN1cnJlbnRMaXN0KClcbiAgICB9LFxuICAgIHBvczoge1xuICAgICAgbG9hZDogKHBvc0lkKSA9PiB7XG4gICAgICAgIHRoaXMucG9zU2VydmljZS5sb2FkUG9zKHBvc0lkKTtcbiAgICAgIH0sXG4gICAgICBsb2FkV2l0aEV4dElkOiAoZXh0SWQsIHN1cHBsaWVySWQpID0+IHtcbiAgICAgICAgdGhpcy5wb3NTZXJ2aWNlLmxvYWRQb3NXaXRoRXh0SWQoZXh0SWQsIHN1cHBsaWVySWQpO1xuICAgICAgfSxcbiAgICAgIHBvcyQ6IHRoaXMucG9zU2VydmljZS5wb3MkXG4gICAgfSxcbiAgICByZWNpcGVzOiB7XG4gICAgICBkaXNwbGF5OiAoaWQsIHByZXZpZXdBbGxvd2VkID0gdHJ1ZSwgcHJldmlld01vZGUgPSBmYWxzZSkgPT4gdGhpcy5yZWNpcGVzU2VydmljZS5kaXNwbGF5KGlkLCB7cHJldmlld0FsbG93ZWQsIHByZXZpZXdNb2RlfSksXG4gICAgICBoaWRkZW46IHRoaXMucmVjaXBlc1NlcnZpY2UuaGlkZGVuLFxuICAgICAgc2VhcmNoOiAocHJvdmlkZXIsIHF1ZXJ5KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlY2lwZXNTZXJ2aWNlLmFsbChcbiAgICAgICAgICB7IHJlbW90ZWZpbHRlcjogeyByZWNpcGVfcHJvdmlkZXJfaWQ6IHByb3ZpZGVyLCBzZWFyY2g6IHF1ZXJ5IH0gfVxuICAgICAgICApLnBpcGUoXG4gICAgICAgICAgc2tpcFdoaWxlKHJlc3VsdCA9PiAhcmVzdWx0KSxcbiAgICAgICAgICBtYXAocmVzcG9uc2UgPT4gcmVzcG9uc2VbJ2RhdGEnXSlcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICBzaG91bGREaXNwbGF5SW5ncmVkaWVudFBpY3R1cmVzT25SZWNpcGVDYXJkczogKHNob3VsZDogYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLmRpc3BsYXlJbmdyZWRpZW50UGljdHVyZXNPblJlY2lwZUNhcmRzID0gc2hvdWxkO1xuICAgICAgfSxcbiAgICAgIHNldERlZmF1bHRJbmdyZWRpZW50UGljdHVyZTogKHVybDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuZGVmYXVsdEluZ3JlZGllbnRQaWN0dXJlID0gdXJsO1xuICAgICAgfSxcbiAgICAgIHNldFN1Z2dlc3Rpb25zUHJpbWFyeUJ1dHRvbkFjdGlvbnM6IChkaXNwbGF5ID0gdHJ1ZSwgYWRkVG9CYXNrZXQgPSB0cnVlKSA9PiB7XG4gICAgICAgIHRoaXMucmVjaXBlc1NlcnZpY2Uuc3VnZ2VzdGlvbnNQcmltYXJ5QnV0dG9uQWN0aW9ucyA9IHsgZGlzcGxheSwgYWRkVG9CYXNrZXQgfTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJvdXRlcjoge1xuICAgICAgc2V0UmVjaXBlQ2F0YWxvZ1VybDogKHVybCA9ICcnKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMubWlhbS5yb3V0ZXIuY2F0YWxvZyA9IHVybDtcbiAgICAgIH0sXG4gICAgICBjYXRhbG9nOiAnJ1xuICAgIH0sXG4gICAgc3VwcGxpZXI6IHtcbiAgICAgIGxvYWQ6IChzdXBwbGllcklkOiBudW1iZXIgfCBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5zdXBwbGllcnNTZXJ2aWNlLmxvYWRTdXBwbGllcihzdXBwbGllcklkLnRvU3RyaW5nKCkpO1xuICAgICAgfSxcbiAgICAgIG5vdGlmeUJhc2tldFVwZGF0ZWQ6IChiYXNrZXRUb2tlbjogc3RyaW5nLCBzdGF0dXM6IHN0cmluZywgcHJpY2U6IG51bWJlciB8IHN0cmluZyA9IG51bGwpID0+IHtcbiAgICAgICAgdGhpcy5zdXBwbGllcnNTZXJ2aWNlLm5vdGlmeUJhc2tldFVwZGF0ZWQoYmFza2V0VG9rZW4sIHN0YXR1cywgcHJpY2UpLnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgdXNlcjoge1xuICAgICAgc2V0VG9rZW46ICh0b2tlbiwgZm9yYmlkUHJvZmlsaW5nID0gZmFsc2UsIGluaXRCYXNrZXQgPSBmYWxzZSkgPT4ge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnX21pYW0vdXNlclRva2VuJywgdG9rZW4pO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnX21pYW0vdXNlcklkJyk7XG4gICAgICAgIHJldHVybiB0aGlzLmxvZ1VzZXIoZm9yYmlkUHJvZmlsaW5nLCBpbml0QmFza2V0KTtcbiAgICAgIH0sXG4gICAgICBsb2FkV2l0aEV4dElkOiAoaWQsIGZvcmJpZFByb2ZpbGluZyA9IGZhbHNlLCBpbml0QmFza2V0ID0gZmFsc2UpID0+IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ19taWFtL3VzZXJJZCcsIGlkKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ19taWFtL3VzZXJUb2tlbicpO1xuICAgICAgICByZXR1cm4gdGhpcy5sb2dVc2VyKGZvcmJpZFByb2ZpbGluZywgaW5pdEJhc2tldCk7XG4gICAgICB9LFxuICAgICAgcmVzZXQ6ICgpID0+IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ19taWFtL3VzZXJUb2tlbicpO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnX21pYW0vdXNlcklkJyk7XG4gICAgICAgIHRoaXMudXNlclNlcnZpY2UudG9nZ2xlSXNMb2dnZWQoZmFsc2UpO1xuICAgICAgICBjb25zb2xlLmxvZygnW01pYW1dIHdpbGwgcmVmcmVzaCBsaXN0IGFmdGVyIHJlc2V0Jyk7XG4gICAgICAgIHRoaXMubGlzdHNTZXJ2aWNlLnJlZnJlc2hDdXJyZW50TGlzdCgpO1xuICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLnJlc2V0VXNlckluZm8oKTtcbiAgICAgIH0sXG4gICAgICBzZXRGYXZvcml0ZUl0ZW1zOiAoZmF2b3JpdGVQcm9kdWN0SWRzKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVzZXJTZXJ2aWNlLnNldEZhdm9yaXRlSXRlbXMoZmF2b3JpdGVQcm9kdWN0SWRzKTtcbiAgICAgIH0sXG4gICAgICBkZXZpY2U6IHRoaXMubWVkaWFNYXRjaGVyLFxuICAgICAgaXNTbWFsbFNjcmVlbiQ6IHRoaXMuaXNTbWFsbFNjcmVlbiQuYXNPYnNlcnZhYmxlKClcbiAgICB9LFxuICAgIHZpZXc6IHtcbiAgICAgIC8vIFNldCB0aGUgbWFpbiBzY3JvbGxpbmcgSFRNTEVsZW1lbnQgb2YgdGhlIHdlYnNpdGUgc28gd2UgY2FuIGRpc2FibGUgc2Nyb2xsIHdoZW4gYSBtb2RhbC9kcmF3ZXIvcG9wdXAgaXMgb3BlblxuICAgICAgc2V0R2xvYmFsU2Nyb2xsYWJsZUVsZW1lbnQ6IChlbGVtZW50OiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoZWxlbWVudCAmJiB0aGlzLmdsb2JhbFNjcm9sbGFibGVFbGVtZW50ICE9PSBlbGVtZW50KSB7XG4gICAgICAgICAgdGhpcy5nbG9iYWxTY3JvbGxhYmxlRWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGUgdHdvIHRpbWVzICdsbCBub3QgYmUgY29uc2lkZXJlZFxuICAgICAqIEBwYXJhbSBpY29uIGhhdmUgdG8gYmUgYSBrbm93ZWQgaWNvbiBuYW1lIHNlZSBzZWN0aW9uICdDdXN0b20gaWNvbnMnIGluIHJlYWQgbWVcbiAgICAgKiBAcGFyYW0gdXJsIG9mIHRoZSBuZXcgaWNvblxuICAgICAqL1xuICAgIG92ZXJyaWRlSWNvbjogKGljb24sIHVybCkgPT4geyAvLyBUT0RPOiBNT1ZFIFRPIGNvbnRlbnRcbiAgICAgIGlmICghdGhpcy5pY29ucykgeyB0aGlzLmljb25zID0gW107IH1cbiAgICAgIGNvbnN0IGV4aXN0aW5nSWNvbiA9IHRoaXMuaWNvbnMuZmluZCgoaTogSWNvbk92ZXJyaWRlKSA9PiBpLmljb24udG9TdHJpbmcoKSA9PT0gaWNvbik7XG4gICAgICBpZiAoZXhpc3RpbmdJY29uKSB7XG4gICAgICAgIHRoaXMuaWNvbnMuc3BsaWNlKHRoaXMuaWNvbnMuaW5kZXhPZihleGlzdGluZ0ljb24pLCAxKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaWNvbnMucHVzaCh7IGljb24sIHVybCB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwb3NTZXJ2aWNlOiBQb2ludE9mU2FsZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGlzdHNTZXJ2aWNlOiBHcm9jZXJpZXNMaXN0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYXNrZXRzU2VydmljZTogQmFza2V0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNpcGVzUHJvdmlkZXJzU2VydmljZTogUmVjaXBlUHJvdmlkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZXNTZXJ2aWNlOiBSZWNpcGVzU2VydmljZSxcbiAgICBwcml2YXRlIG1lZGlhTWF0Y2hlcjogTWVkaWFNYXRjaGVyLFxuICAgIHByaXZhdGUgc3VwcGxpZXJzU2VydmljZTogU3VwcGxpZXJzU2VydmljZSxcbiAgICBwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyXG4gICkge1xuICAgIHRoaXMuaXNTbWFsbFNjcmVlbiQubmV4dCghdGhpcy5tZWRpYU1hdGNoZXIubWF0Y2hNZWRpYShTTUFMTF9TQ1JFRU5fQlApLm1hdGNoZXMpO1xuICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLm9ic2VydmUoU01BTExfU0NSRUVOX0JQKS5zdWJzY3JpYmUoQlBDaGFuZ2UgPT4gdGhpcy5pc1NtYWxsU2NyZWVuJC5uZXh0KCFCUENoYW5nZS5tYXRjaGVzKSk7XG4gICAgdGhpcy5pY29ucyA9IFtdO1xuICAgIHRoaXMuQ09SU0lzc3VlcyA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICAgIE9iamVjdC5hc3NpZ24od2luZG93LCB7IG1pYW06IHRoaXMubWlhbSB9KTtcblxuICB9XG5cbiAgc2V0Q09SU0lzc3VlU3RhdGUodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLkNPUlNJc3N1ZXMubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBnZXRDT1JTSXNzdWVzU3RhdGUoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuQ09SU0lzc3Vlcy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldE92ZXJyaWRlSWNvblVybChpY29uOiBJY29uKTogc3RyaW5nIHtcbiAgICBjb25zdCBmaW5kaWNvbiA9IHRoaXMuaWNvbnMuZmluZChlbCA9PiBlbC5pY29uLnRvU3RyaW5nKCkgPT09IEljb25baWNvbl0pO1xuICAgIHJldHVybiBmaW5kaWNvbiA/IGZpbmRpY29uLnVybCA6ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2dVc2VyKGZvcmJpZFByb2ZpbGluZzogYm9vbGVhbiwgaW5pdEJhc2tldDogYm9vbGVhbikge1xuICAgIHRoaXMudXNlclNlcnZpY2UudG9nZ2xlSXNMb2dnZWQodHJ1ZSk7XG4gICAgLy8gaWYgaW5pdEJhc2tldCBpcyBzZXQgdG8gZmFsc2UsIHRoZSBiYXNrZXQgJiBsaXN0IHdpbGwgbm90IGJlIGluaXRpYWxpc2VkIHVudGlsIHRoZSBmaXJzdCB0aW1lIHRoZXkgYXJlIG5lZWRlZFxuICAgIGlmIChpbml0QmFza2V0KSB7XG4gICAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLmluaXRCYXNrZXQoKTsgLy8gVGhlIGJhc2tldCBuZWVkcyB0aGUgR0wgc28gYm90aCB3aWxsIGJlIGluaXRpYWxpemVkIGhlcmVcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudXNlclNlcnZpY2Uuc2V0VXNlckluZm8oZm9yYmlkUHJvZmlsaW5nKTtcbiAgfVxufVxuIl19
|
|
@@ -148,10 +148,32 @@ export class GroceriesListsService extends Service {
|
|
|
148
148
|
}));
|
|
149
149
|
}));
|
|
150
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Will create a temporary list and set it in _list$. The list won't be marked as current and thus
|
|
153
|
+
* will not be reused
|
|
154
|
+
*/
|
|
155
|
+
createTemporaryList() {
|
|
156
|
+
this.listIsFetching = true;
|
|
157
|
+
this.new().save({ include: ['groceries-entries'] }).subscribe((temporaryList) => {
|
|
158
|
+
this._list$.next(this.afterSave(temporaryList));
|
|
159
|
+
this.listIsFetching = false;
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* save() returns an object that isn't a resource so methods aren't attached, so we have to do a little trick
|
|
164
|
+
* @param res result of the save
|
|
165
|
+
* @returns correct GroceriesList with the right attributes & methods
|
|
166
|
+
*/
|
|
167
|
+
afterSave(res) {
|
|
168
|
+
const list = this.new();
|
|
169
|
+
list.fill(res);
|
|
170
|
+
return list;
|
|
171
|
+
}
|
|
151
172
|
saveList(list, openBasket = false) {
|
|
152
173
|
delete (list.attributes['recipes-ids']);
|
|
153
|
-
|
|
154
|
-
|
|
174
|
+
delete (list.relationships['groceries-entries']);
|
|
175
|
+
return list.save({ include: ['groceries-entries'] }).pipe(skipWhile((l) => l.is_loading), tap(l => {
|
|
176
|
+
this._list$.next(this.afterSave(l));
|
|
155
177
|
if (this.saveOperationType === 'ADD') {
|
|
156
178
|
this.recipeWasAdded$.next(list.recipeInfos);
|
|
157
179
|
}
|
|
@@ -190,4 +212,4 @@ GroceriesListsService.ɵprov = i0.ɵɵdefineInjectable({ token: GroceriesListsSe
|
|
|
190
212
|
type: Inject,
|
|
191
213
|
args: [MIAM_BASKET_PATH]
|
|
192
214
|
}] }, { type: i1.HttpClient }, { type: i2.AnalyticsService }]; }, null); })();
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvY2VyaWVzLWxpc3RzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL2J1aWxkcy9taWFtL25nLW1pYW0tc2RrL3Byb2plY3RzL25nLW1pYW0vc3JjLyIsInNvdXJjZXMiOlsibGliL19zZXJ2aWNlcy9ncm9jZXJpZXMtbGlzdHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFvQixPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUFjLGVBQWUsRUFBZ0IsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLElBQUksQ0FBQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBRWxELFdBQVc7QUFJWCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsT0FBc0I7SUFlL0QsWUFDb0MsYUFBcUIsRUFDL0MsSUFBZ0IsRUFDaEIsZ0JBQWtDO1FBRTFDLEtBQUssRUFBRSxDQUFDO1FBSjBCLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBQy9DLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQWhCNUMsYUFB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SGpDLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7c0JBaUJJLE1BQU07dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHcm9jZXJpZXNMaXN0IH0gZnJvbSAnLi4vX21vZGVscy9ncm9jZXJpZXMtbGlzdCc7XG5pbXBvcnQgeyBEb2N1bWVudFJlc291cmNlLCBTZXJ2aWNlIH0gZnJvbSAnbmd4LWpzb25hcGknO1xuaW1wb3J0IHsgbWFwLCBza2lwV2hpbGUsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTUlBTV9CQVNLRVRfUEFUSCB9IGZyb20gJy4uL3Byb3ZpZGVycyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuL2FuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgZW52aXJvbm1lbnQgYXMgZSB9IGZyb20gJy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG4vLyBAZHluYW1pY1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgR3JvY2VyaWVzTGlzdHNTZXJ2aWNlIGV4dGVuZHMgU2VydmljZTxHcm9jZXJpZXNMaXN0PiB7XG5cbiAgcmVzb3VyY2UgPSBHcm9jZXJpZXNMaXN0O1xuICB0eXBlID0gJ2dyb2Nlcmllcy1saXN0cyc7XG4gIC8vIFVudXNlZCBpbiBzZGsgYXQgdGhlIG1vbWVudCBidXQgYW55IGNsaWVudCBhcHAgY2FuIHN1YnNjcmliZSBvbiBpdCB0byBrbm93IHdoZW4gYSByZWNpcGUgaGFzIGJlZW4gYWRkZWRcbiAgcmVjaXBlV2FzQWRkZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IGlkOiBzdHJpbmcsIGd1ZXN0cz86IHN0cmluZyB9W10+KFtdKTtcbiAgLy8gVW51c2VkIGluIHNkayBhdCB0aGUgbW9tZW50IGJ1dCBhbnkgY2xpZW50IGFwcCBjYW4gc3Vic2NyaWJlIG9uIGl0IHRvIGtub3cgd2hlbiBhIHJlY2lwZSBoYXMgYmVlbiBhZGRlZFxuICByZWNpcGVXYXNEZWxldGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBpZDogc3RyaW5nLCBndWVzdHM/OiBzdHJpbmcgfVtdPihbXSk7XG4gIC8vIFNpbmdsZXRvbiBpbnN0YW5jZSBvZiBHcm9jZXJpZXNMaXN0XG4gIHByaXZhdGUgX2xpc3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxHcm9jZXJpZXNMaXN0PihudWxsKTtcbiAgcHJpdmF0ZSBzYXZlT3BlcmF0aW9uVHlwZSA9ICcnO1xuICBwcml2YXRlIGN1cnJlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgLy8gT2JzZXJ2ZSB0aGUgZmV0Y2hpbmcgb2YgdGhlIHJlY2lwZSBzbyBjYWxscyB0byBsaXN0JCBhcmUgZGVsYXllZCBpbnN0ZWFkIG9mIGNhbGxpbmcgcmVmcmVzaEN1cnJlbnRMaXN0IGRvemVucyBvZiB0aW1lc1xuICBwcml2YXRlIGxpc3RJc0ZldGNoaW5nID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChNSUFNX0JBU0tFVF9QQVRIKSBwcml2YXRlIG1pYW1CYXNrZXRVUkw6IHN0cmluZyxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5yZWdpc3RlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdlIHdhbnQgbGlzdCQgdG8gYmUgYSBzaW5nbGV0b24gdGhhdCBhbHdheXMgcmV0dXJucyB0aGUgc2FtZSBsaXN0LCBzbyBpdCBpcyBmZXRjaGVkIG9ubHkgd2hlbiBuZWNlc3NhcnkuXG4gICAqIEF0IGFueSBwb2ludCBpbiB0aW1lIHRoZSBsaXN0IGNhbiBiZSBmZXRjaGVkIHZpYSB0aGUgcmVmcmVzaEN1cnJlbnRMaXN0IGZ1bmN0aW9uIChpZiB3ZSB3YW50IHRvIGZldGNoIGl0IG9uIHN0YXJ0dXAgdG8gc2F2ZSB0aW1lIGxhdGVyKVxuICAgKiBCdXQgaWYgcmVmcmVzaEN1cnJlbnRMaXN0IGlzIG5vdCBjYWxsZWQsIHRoZSBsaXN0IHdpbGwgb25seSBiZSBmZXRjaGVkIHRoZSAxc3QgdGltZSBpdCBpcyBuZWVkZWRcbiAgICovXG4gIGdldCBsaXN0JCgpOiBCZWhhdmlvclN1YmplY3Q8R3JvY2VyaWVzTGlzdD4ge1xuICAgIGlmICh0aGlzLl9saXN0JC52YWx1ZSB8fCB0aGlzLmxpc3RJc0ZldGNoaW5nKSB7IHJldHVybiB0aGlzLl9saXN0JDsgfVxuXG4gICAgcmV0dXJuIHRoaXMucmVmcmVzaEN1cnJlbnRMaXN0KCk7XG4gIH1cblxuICB0YWtlRmlyc3RMaXN0KCk6IE9ic2VydmFibGU8R3JvY2VyaWVzTGlzdD4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QkLnBpcGUoXG4gICAgICAgc2tpcFdoaWxlKGwgPT4gIWwpLFxuICAgICAgIHRha2UoMSlcbiAgICApO1xuICB9XG5cblxuICAvLyBDaGVjayBpZiByZWNpcGUgd2l0aCBpZCA9IHJlY2lwZUlkIGlzIGluIHRoZSBHcm9jZXJpZXNMaXN0XG4gIHJlY2lwZUlzSW5MaXN0KHJlY2lwZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fbGlzdCQucGlwZShcbiAgICAgIHNraXBXaGlsZShsID0+ICFsKSxcbiAgICAgIHRha2UoMSksXG4gICAgICBtYXAobGlzdCA9PiBsaXN0Lmhhc1JlY2lwZShyZWNpcGVJZCkpXG4gICAgKTtcbiAgfVxuXG4gIGd1ZXN0c0ZvclJlY2lwZShyZWNpcGUpIHtcbiAgICByZXR1cm4gdGhpcy5fbGlzdCQudmFsdWU/Lmd1ZXN0c0ZvclJlY2lwZShyZWNpcGUpO1xuICB9XG5cbiAgcmVmcmVzaEN1cnJlbnRMaXN0KCk6IEJlaGF2aW9yU3ViamVjdDxHcm9jZXJpZXNMaXN0PiB7XG4gICAgY29uc29sZS5sb2coJ1tNaWFtXSByZWZyZXNoaW5nIGdsJyk7XG4gICAgdGhpcy5saXN0SXNGZXRjaGluZyA9IHRydWU7XG4gICAgY29uc3QgY2FjaGVkTGlzdElkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ19taWFtL2xpc3RJZCcpO1xuICAgIC8vIGFkZGluZyB0aGlzIHV1aWQgd2lsbCBmb3JjZSByZXF1ZXN0IHRvIGJlIHNlbnQgZXZlbiBpZiBvbmUgaXMgc3RpbGwgaW4gcHJvY2Vzc1xuICAgIC8vIHRoaW5rIGFib3V0IG1ha2luZyBhIHF1ZXVlIHRvIHByb2Nlc3MgcmVxdWVzdCBpbiBvcmRlclxuICAgIGNvbnN0IGJhc2VSb3V0ZSA9ICdjdXJyZW50P3VuaXFfdG9rZW49JyArIHV1aWR2NCgpO1xuICAgIGNvbnN0IGVuZHBvaW50ID0gY2FjaGVkTGlzdElkPy50b1N0cmluZygpLm1hdGNoKC9eWzAtOV0rJC8pID8gYmFzZVJvdXRlICsgJyZtZXJnZV93aXRoPScgKyBjYWNoZWRMaXN0SWQgOiBiYXNlUm91dGU7XG4gICAgLy8gYWx3YXkga2VlcCBvbmx5IHRoZSBsYXN0IHN1YnNjcmlwdGlvbiwgdGhhdCB3aWxsIG1ha2UgZm9yZ2V0IHRoZSBsYXN0IGNhbGxzXG4gICAgaWYgKHRoaXMuY3VycmVudFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5jdXJyZW50U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMuY3VycmVudFN1YnNjcmlwdGlvbiA9IHRoaXMuZ2V0KGVuZHBvaW50ICsgJyZpbmNsdWRlPWdyb2Nlcmllcy1lbnRyaWVzJykucGlwZShcbiAgICAgIHNraXBXaGlsZShsID0+IGwuaXNfbG9hZGluZyksXG4gICAgICB0YXAobCA9PiB0aGlzLmFzc2lnbkxpc3QobCkpXG4gICAgKS5zdWJzY3JpYmUoKTtcblxuICAgIHJldHVybiB0aGlzLl9saXN0JDtcbiAgfVxuXG4gIHJlc2V0TGlzdCgpOiBPYnNlcnZhYmxlPEdyb2Nlcmllc0xpc3Q+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ3Jlc2V0JykucGlwZShcbiAgICAgIHNraXBXaGlsZShsID0+IGwuaXNfbG9hZGluZyksXG4gICAgICB0YXAobCA9PiB0aGlzLmFzc2lnbkxpc3QobCkpXG4gICAgKTtcbiAgfVxuXG4gIGFwcGVuZFJlY2lwZVRvTGlzdChyZWNpcGVJZDogc3RyaW5nLCBndWVzdHM6IG51bWJlciwgb3JpZ2luOiBzdHJpbmcsIG9wZW5CYXNrZXQ6IGJvb2xlYW4gPSBmYWxzZSk6IE9ic2VydmFibGU8b2JqZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMudGFrZUZpcnN0TGlzdCgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAobGlzdCA9PiB7XG4gICAgICAgIGlmICghbGlzdC5oYXNSZWNpcGUocmVjaXBlSWQpKSB7XG4gICAgICAgICAgLy8gYXBwZW5kIHRvIGxpc3RcbiAgICAgICAgICBsaXN0LmF0dHJpYnV0ZXNbJ2FwcGVuZC1yZWNpcGVzJ10gPSB0cnVlO1xuICAgICAgICAgIGNvbnN0IGluZm8gPSB7IGlkOiByZWNpcGVJZCB9O1xuICAgICAgICAgIGlmIChndWVzdHMpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oaW5mbywgeyBndWVzdHMgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxpc3QuYXR0cmlidXRlc1sncmVjaXBlcy1pbmZvcyddID0gW2luZm9dO1xuICAgICAgICAgIHRoaXMuc2F2ZU9wZXJhdGlvblR5cGUgPSAnQUREJztcbiAgICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2Uuc2VuZEV2ZW50KCdhZGQtcmVjaXBlJywgb3JpZ2luKTtcbiAgICAgICAgfSBlbHNlIGlmIChndWVzdHMpIHtcbiAgICAgICAgICAvLyB1cGRhdGUgZ3Vlc3RzIG51bWJlclxuICAgICAgICAgIGNvbnN0IGluZm8gPSBsaXN0LnJlY2lwZUluZm9zLmZpbmQoaSA9PiBpLmlkID09PSByZWNpcGVJZCk7XG4gICAgICAgICAgaWYgKGluZm8uZ3Vlc3RzLnRvU3RyaW5nKCkgPT09IGd1ZXN0cy50b1N0cmluZygpKSB7XG4gICAgICAgICAgICAvLyBBdm9pZCBzYXZpbmcgdGhlIGxpc3QgaWYgbm90aGluZyBjaGFuZ2VkXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbGlzdCQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGluZm8uZ3Vlc3RzID0gZ3Vlc3RzLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc2F2ZUxpc3QobGlzdCwgb3BlbkJhc2tldCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICByZW1vdmVSZWNpcGVGcm9tTGlzdChyZWNpcGVJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxHcm9jZXJpZXNMaXN0PiB7XG4gICAgcmV0dXJuIHRoaXMudGFrZUZpcnN0TGlzdCgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAobGlzdCA9PiB7XG4gICAgICAgIGlmIChsaXN0LmF0dHJpYnV0ZXNbJ3JlY2lwZXMtaW5mb3MnXSkge1xuICAgICAgICAgIGxpc3QuYXR0cmlidXRlc1sncmVjaXBlcy1pbmZvcyddID0gbGlzdC5hdHRyaWJ1dGVzWydyZWNpcGVzLWluZm9zJ10uZmlsdGVyKGluZm8gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGluZm8uaWQgIT09IHJlY2lwZUlkO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnQoJ3JlbW92ZS1yZWNpcGUnKTtcbiAgICAgICAgICB0aGlzLnNhdmVPcGVyYXRpb25UeXBlID0gJ1JFTU9WRSc7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2F2ZUxpc3QobGlzdCkgYXMgT2JzZXJ2YWJsZTxHcm9jZXJpZXNMaXN0PjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvZihudWxsKSBhcyBPYnNlcnZhYmxlPEdyb2Nlcmllc0xpc3Q+O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgdXBkYXRlUmVjaXBlR3Vlc3RzKHJlY2lwZUlkOiBzdHJpbmcsIGd1ZXN0czogbnVtYmVyKTogT2JzZXJ2YWJsZTxHcm9jZXJpZXNMaXN0PiAge1xuICAgIHJldHVybiB0aGlzLnRha2VGaXJzdExpc3QoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKGxpc3QgPT4ge1xuICAgICAgICBpZiAobGlzdC5hdHRyaWJ1dGVzWydyZWNpcGVzLWluZm9zJ10pIHtcbiAgICAgICAgICBjb25zdCByZWNpcGVJbmZvID0gbGlzdC5hdHRyaWJ1dGVzWydyZWNpcGVzLWluZm9zJ10uZmluZChpbmZvID0+IHtcbiAgICAgICAgICAgIHJldHVybiBpbmZvLmlkID09PSByZWNpcGVJZDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZWNpcGVJbmZvLmd1ZXN0cyA9IGd1ZXN0cztcbiAgICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2Uuc2VuZEV2ZW50KCdjaGFuZ2UtZ3Vlc3RzJyk7XG4gICAgICAgICAgdGhpcy5zYXZlT3BlcmF0aW9uVHlwZSA9ICdHVUVTVFMnO1xuICAgICAgICAgIHJldHVybiB0aGlzLnNhdmVMaXN0KGxpc3QpIGFzIE9ic2VydmFibGU8R3JvY2VyaWVzTGlzdD47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fbGlzdCQ7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICByZW1vdmVSZWNpcGVzRnJvbUxpc3QoKTogT2JzZXJ2YWJsZTxHcm9jZXJpZXNMaXN0PiB7XG4gICAgcmV0dXJuIHRoaXMudGFrZUZpcnN0TGlzdCgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAobGlzdCA9PiB7XG4gICAgICAgIGxpc3QuYXR0cmlidXRlc1sncmVjaXBlcy1pbmZvcyddID0gW107XG4gICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnQoJ3JlbW92ZS1hbGwtcmVjaXBlcycpO1xuICAgICAgICB0aGlzLnNhdmVPcGVyYXRpb25UeXBlID0gJ1JFTU9WRSc7XG4gICAgICAgIHJldHVybiB0aGlzLnNhdmVMaXN0KGxpc3QpIGFzIE9ic2VydmFibGU8R3JvY2VyaWVzTGlzdD47XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBhZGRFbnRyaWVzRnJvbVBpY3R1cmUoZmlsZTogRmlsZSwgaW5jbHVkZSA9IFtdLCBkaXNhYmxlSW5ncmVkaWVudHNNYXRjaGluZyA9IGZhbHNlKTogT2JzZXJ2YWJsZTxHcm9jZXJpZXNMaXN0PiB7XG4gICAgcmV0dXJuIHRoaXMudGFrZUZpcnN0TGlzdCgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAobGlzdCA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBbZS5taWFtQVBJLCAnYXBpL3YxL2dyb2Nlcmllcy1saXN0cycsIGxpc3QuaWQsICdhZGRfZW50cmllc19mcm9tX3BpY3R1cmUnXS5qb2luKCcvJyk7XG4gICAgICAgIGlmIChkaXNhYmxlSW5ncmVkaWVudHNNYXRjaGluZykge1xuICAgICAgICAgIHVybCArPSAnP2Rpc2FibGVfbWF0Y2hpbmc9dHJ1ZSc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncGljdHVyZScsIGZpbGUpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2luY2x1ZGUnLCBpbmNsdWRlLmpvaW4oJywnKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2godXJsLCBmb3JtRGF0YSkucGlwZShcbiAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBEb2N1bWVudFJlc291cmNlPEdyb2Nlcmllc0xpc3Q+KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsID0gdGhpcy5uZXcoKTtcbiAgICAgICAgICAgIGwuZmlsbChyZXNwb25zZSk7XG4gICAgICAgICAgICB0aGlzLl9saXN0JC5uZXh0KGwpO1xuICAgICAgICAgICAgcmV0dXJuIGw7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2F2ZUxpc3QobGlzdDogR3JvY2VyaWVzTGlzdCwgb3BlbkJhc2tldDogYm9vbGVhbiA9IGZhbHNlKTogT2JzZXJ2YWJsZTxHcm9jZXJpZXNMaXN0PiB7XG4gICAgZGVsZXRlKGxpc3QuYXR0cmlidXRlc1sncmVjaXBlcy1pZHMnXSk7XG4gICAgcmV0dXJuIGxpc3Quc2F2ZSgpLnBpcGUoXG4gICAgICBza2lwV2hpbGUobCA9PiAobCBhcyBHcm9jZXJpZXNMaXN0KS5pc19sb2FkaW5nKSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2xpc3QkLm5leHQobGlzdCk7XG4gICAgICAgIGlmICh0aGlzLnNhdmVPcGVyYXRpb25UeXBlID09PSAnQUREJykge1xuICAgICAgICAgIHRoaXMucmVjaXBlV2FzQWRkZWQkLm5leHQobGlzdC5yZWNpcGVJbmZvcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2F2ZU9wZXJhdGlvblR5cGUgPT09ICdSRU1PVkUnKSB7XG4gICAgICAgICAgdGhpcy5yZWNpcGVXYXNEZWxldGVkJC5uZXh0KGxpc3QucmVjaXBlSW5mb3MpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2F2ZU9wZXJhdGlvblR5cGUgPSAnJztcbiAgICAgICAgaWYgKG9wZW5CYXNrZXQpIHtcbiAgICAgICAgICB3aW5kb3cub3BlbihgJHt0aGlzLm1pYW1CYXNrZXRVUkx9LyR7bGlzdC5pZH1gLCAnX2JsYW5rJyk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgbWFwKGwgPT4gKGwgYXMgRG9jdW1lbnRSZXNvdXJjZTxHcm9jZXJpZXNMaXN0PikuZGF0YSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3NpZ25MaXN0KGwpe1xuICAgIC8vIFdoZW4gYSBDT1JTIGVycm9yIGhhcHBlbnMgdGhlIHJlc3BvbnNlIGlzIGEgR0wgd2l0aCBhbiBpZCBlcXVhbCB0byB0aGUgcmVxdWVzdCBVUkxcbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZG9uJ3QgY2hhbmdlIHRoZSBHTFxuICAgIGlmIChsLmlkLnRvU3RyaW5nKCkubWF0Y2goL15bMC05XSskLykpIHtcbiAgICAgIGlmIChsLmF0dHJpYnV0ZXNbJ3VzZXItaWQnXSkge1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnX21pYW0vbGlzdElkJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnX21pYW0vbGlzdElkJywgbC5pZCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9saXN0JC5uZXh0KGwpO1xuICAgICAgdGhpcy5saXN0SXNGZXRjaGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvY2VyaWVzLWxpc3RzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL2J1aWxkcy9taWFtL25nLW1pYW0tc2RrL3Byb2plY3RzL25nLW1pYW0vc3JjLyIsInNvdXJjZXMiOlsibGliL19zZXJ2aWNlcy9ncm9jZXJpZXMtbGlzdHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFvQixPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUFjLGVBQWUsRUFBZ0IsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLElBQUksQ0FBQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBRWxELFdBQVc7QUFJWCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsT0FBc0I7SUFlL0QsWUFDb0MsYUFBcUIsRUFDL0MsSUFBZ0IsRUFDaEIsZ0JBQWtDO1FBRTFDLEtBQUssRUFBRSxDQUFDO1FBSjBCLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBQy9DLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQWhCNUMsYUFB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QUksSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQzNEO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUNqQixDQUFDO0lBQ0osQ0FBQztJQUVPLFVBQVUsQ0FBQyxDQUFDO1FBQ2xCLHFGQUFxRjtRQUNyRixzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNyQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQzNCLFlBQVksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDekM7aUJBQU07Z0JBQ0wsWUFBWSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQzVDO1lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7U0FDN0I7SUFDSCxDQUFDOzswRkEzT1UscUJBQXFCLGNBZ0J0QixnQkFBZ0I7NkRBaEJmLHFCQUFxQixXQUFyQixxQkFBcUIsbUJBRnBCLE1BQU07a0RBRVAscUJBQXFCO2NBSGpDLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7c0JBaUJJLE1BQU07dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHcm9jZXJpZXNMaXN0IH0gZnJvbSAnLi4vX21vZGVscy9ncm9jZXJpZXMtbGlzdCc7XG5pbXBvcnQgeyBEb2N1bWVudFJlc291cmNlLCBTZXJ2aWNlIH0gZnJvbSAnbmd4LWpzb25hcGknO1xuaW1wb3J0IHsgbWFwLCBza2lwV2hpbGUsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTUlBTV9CQVNLRVRfUEFUSCB9IGZyb20gJy4uL3Byb3ZpZGVycyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuL2FuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgZW52aXJvbm1lbnQgYXMgZSB9IGZyb20gJy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG4vLyBAZHluYW1pY1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgR3JvY2VyaWVzTGlzdHNTZXJ2aWNlIGV4dGVuZHMgU2VydmljZTxHcm9jZXJpZXNMaXN0PiB7XG5cbiAgcmVzb3VyY2UgPSBHcm9jZXJpZXNMaXN0O1xuICB0eXBlID0gJ2dyb2Nlcmllcy1saXN0cyc7XG4gIC8vIFVudXNlZCBpbiBzZGsgYXQgdGhlIG1vbWVudCBidXQgYW55IGNsaWVudCBhcHAgY2FuIHN1YnNjcmliZSBvbiBpdCB0byBrbm93IHdoZW4gYSByZWNpcGUgaGFzIGJlZW4gYWRkZWRcbiAgcmVjaXBlV2FzQWRkZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IGlkOiBzdHJpbmcsIGd1ZXN0cz86IHN0cmluZyB9W10+KFtdKTtcbiAgLy8gVW51c2VkIGluIHNkayBhdCB0aGUgbW9tZW50IGJ1dCBhbnkgY2xpZW50IGFwcCBjYW4gc3Vic2NyaWJlIG9uIGl0IHRvIGtub3cgd2hlbiBhIHJlY2lwZSBoYXMgYmVlbiBhZGRlZFxuICByZWNpcGVXYXNEZWxldGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBpZDogc3RyaW5nLCBndWVzdHM/OiBzdHJpbmcgfVtdPihbXSk7XG4gIC8vIFNpbmdsZXRvbiBpbnN0YW5jZSBvZiBHcm9jZXJpZXNMaXN0XG4gIHByaXZhdGUgX2xpc3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxHcm9jZXJpZXNMaXN0PihudWxsKTtcbiAgcHJpdmF0ZSBzYXZlT3BlcmF0aW9uVHlwZSA9ICcnO1xuICBwcml2YXRlIGN1cnJlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgLy8gT2JzZXJ2ZSB0aGUgZmV0Y2hpbmcgb2YgdGhlIHJlY2lwZSBzbyBjYWxscyB0byBsaXN0JCBhcmUgZGVsYXllZCBpbnN0ZWFkIG9mIGNhbGxpbmcgcmVmcmVzaEN1cnJlbnRMaXN0IGRvemVucyBvZiB0aW1lc1xuICBwcml2YXRlIGxpc3RJc0ZldGNoaW5nID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChNSUFNX0JBU0tFVF9QQVRIKSBwcml2YXRlIG1pYW1CYXNrZXRVUkw6IHN0cmluZyxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5yZWdpc3RlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdlIHdhbnQgbGlzdCQgdG8gYmUgYSBzaW5nbGV0b24gdGhhdCBhbHdheXMgcmV0dXJucyB0aGUgc2FtZSBsaXN0LCBzbyBpdCBpcyBmZXRjaGVkIG9ubHkgd2hlbiBuZWNlc3NhcnkuXG4gICAqIEF0IGFueSBwb2ludCBpbiB0aW1lIHRoZSBsaXN0IGNhbiBiZSBmZXRjaGVkIHZpYSB0aGUgcmVmcmVzaEN1cnJlbnRMaXN0IGZ1bmN0aW9uIChpZiB3ZSB3YW50IHRvIGZldGNoIGl0IG9uIHN0YXJ0dXAgdG8gc2F2ZSB0aW1lIGxhdGVyKVxuICAgKiBCdXQgaWYgcmVmcmVzaEN1cnJlbnRMaXN0IGlzIG5vdCBjYWxsZWQsIHRoZSBsaXN0IHdpbGwgb25seSBiZSBmZXRjaGVkIHRoZSAxc3QgdGltZSBpdCBpcyBuZWVkZWRcbiAgICovXG4gIGdldCBsaXN0JCgpOiBCZWhhdmlvclN1YmplY3Q8R3JvY2VyaWVzTGlzdD4ge1xuICAgIGlmICh0aGlzLl9saXN0JC52YWx1ZSB8fCB0aGlzLmxpc3RJc0ZldGNoaW5nKSB7IHJldHVybiB0aGlzLl9saXN0JDsgfVxuXG4gICAgcmV0dXJuIHRoaXMucmVmcmVzaEN1cnJlbnRMaXN0KCk7XG4gIH1cblxuICB0YWtlRmlyc3RMaXN0KCk6IE9ic2VydmFibGU8R3JvY2VyaWVzTGlzdD4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QkLnBpcGUoXG4gICAgICAgc2tpcFdoaWxlKGwgPT4gIWwpLFxuICAgICAgIHRha2UoMSlcbiAgICApO1xuICB9XG5cblxuICAvLyBDaGVjayBpZiByZWNpcGUgd2l0aCBpZCA9IHJlY2lwZUlkIGlzIGluIHRoZSBHcm9jZXJpZXNMaXN0XG4gIHJlY2lwZUlzSW5MaXN0KHJlY2lwZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fbGlzdCQucGlwZShcbiAgICAgIHNraXBXaGlsZShsID0+ICFsKSxcbiAgICAgIHRha2UoMSksXG4gICAgICBtYXAobGlzdCA9PiBsaXN0Lmhhc1JlY2lwZShyZWNpcGVJZCkpXG4gICAgKTtcbiAgfVxuXG4gIGd1ZXN0c0ZvclJlY2lwZShyZWNpcGUpIHtcbiAgICByZXR1cm4gdGhpcy5fbGlzdCQudmFsdWU/Lmd1ZXN0c0ZvclJlY2lwZShyZWNpcGUpO1xuICB9XG5cbiAgcmVmcmVzaEN1cnJlbnRMaXN0KCk6IEJlaGF2aW9yU3ViamVjdDxHcm9jZXJpZXNMaXN0PiB7XG4gICAgY29uc29sZS5sb2coJ1tNaWFtXSByZWZyZXNoaW5nIGdsJyk7XG4gICAgdGhpcy5saXN0SXNGZXRjaGluZyA9IHRydWU7XG4gICAgY29uc3QgY2FjaGVkTGlzdElkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ19taWFtL2xpc3RJZCcpO1xuICAgIC8vIGFkZGluZyB0aGlzIHV1aWQgd2lsbCBmb3JjZSByZXF1ZXN0IHRvIGJlIHNlbnQgZXZlbiBpZiBvbmUgaXMgc3RpbGwgaW4gcHJvY2Vzc1xuICAgIC8vIHRoaW5rIGFib3V0IG1ha2luZyBhIHF1ZXVlIHRvIHByb2Nlc3MgcmVxdWVzdCBpbiBvcmRlclxuICAgIGNvbnN0IGJhc2VSb3V0ZSA9ICdjdXJyZW50P3VuaXFfdG9rZW49JyArIHV1aWR2NCgpO1xuICAgIGNvbnN0IGVuZHBvaW50ID0gY2FjaGVkTGlzdElkPy50b1N0cmluZygpLm1hdGNoKC9eWzAtOV0rJC8pID8gYmFzZVJvdXRlICsgJyZtZXJnZV93aXRoPScgKyBjYWNoZWRMaXN0SWQgOiBiYXNlUm91dGU7XG4gICAgLy8gYWx3YXkga2VlcCBvbmx5IHRoZSBsYXN0IHN1YnNjcmlwdGlvbiwgdGhhdCB3aWxsIG1ha2UgZm9yZ2V0IHRoZSBsYXN0IGNhbGxzXG4gICAgaWYgKHRoaXMuY3VycmVudFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5jdXJyZW50U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMuY3VycmVudFN1YnNjcmlwdGlvbiA9IHRoaXMuZ2V0KGVuZHBvaW50ICsgJyZpbmNsdWRlPWdyb2Nlcmllcy1lbnRyaWVzJykucGlwZShcbiAgICAgIHNraXBXaGlsZShsID0+IGwuaXNfbG9hZGluZyksXG4gICAgICB0YXAobCA9PiB0aGlzLmFzc2lnbkxpc3QobCkpXG4gICAgKS5zdWJzY3JpYmUoKTtcblxuICAgIHJldHVybiB0aGlzLl9saXN0JDtcbiAgfVxuXG4gIHJlc2V0TGlzdCgpOiBPYnNlcnZhYmxlPEdyb2Nlcmllc0xpc3Q+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ3Jlc2V0JykucGlwZShcbiAgICAgIHNraXBXaGlsZShsID0+IGwuaXNfbG9hZGluZyksXG4gICAgICB0YXAobCA9PiB0aGlzLmFzc2lnbkxpc3QobCkpXG4gICAgKTtcbiAgfVxuXG4gIGFwcGVuZFJlY2lwZVRvTGlzdChyZWNpcGVJZDogc3RyaW5nLCBndWVzdHM6IG51bWJlciwgb3JpZ2luOiBzdHJpbmcsIG9wZW5CYXNrZXQ6IGJvb2xlYW4gPSBmYWxzZSk6IE9ic2VydmFibGU8b2JqZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMudGFrZUZpcnN0TGlzdCgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAobGlzdCA9PiB7XG4gICAgICAgIGlmICghbGlzdC5oYXNSZWNpcGUocmVjaXBlSWQpKSB7XG4gICAgICAgICAgLy8gYXBwZW5kIHRvIGxpc3RcbiAgICAgICAgICBsaXN0LmF0dHJpYnV0ZXNbJ2FwcGVuZC1yZWNpcGVzJ10gPSB0cnVlO1xuICAgICAgICAgIGNvbnN0IGluZm8gPSB7IGlkOiByZWNpcGVJZCB9O1xuICAgICAgICAgIGlmIChndWVzdHMpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oaW5mbywgeyBndWVzdHMgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxpc3QuYXR0cmlidXRlc1sncmVjaXBlcy1pbmZvcyddID0gW2luZm9dO1xuICAgICAgICAgIHRoaXMuc2F2ZU9wZXJhdGlvblR5cGUgPSAnQUREJztcbiAgICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2Uuc2VuZEV2ZW50KCdhZGQtcmVjaXBlJywgb3JpZ2luKTtcbiAgICAgICAgfSBlbHNlIGlmIChndWVzdHMpIHtcbiAgICAgICAgICAvLyB1cGRhdGUgZ3Vlc3RzIG51bWJlclxuICAgICAgICAgIGNvbnN0IGluZm8gPSBsaXN0LnJlY2lwZUluZm9zLmZpbmQoaSA9PiBpLmlkID09PSByZWNpcGVJZCk7XG4gICAgICAgICAgaWYgKGluZm8uZ3Vlc3RzLnRvU3RyaW5nKCkgPT09IGd1ZXN0cy50b1N0cmluZygpKSB7XG4gICAgICAgICAgICAvLyBBdm9pZCBzYXZpbmcgdGhlIGxpc3QgaWYgbm90aGluZyBjaGFuZ2VkXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbGlzdCQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGluZm8uZ3Vlc3RzID0gZ3Vlc3RzLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc2F2ZUxpc3QobGlzdCwgb3BlbkJhc2tldCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICByZW1vdmVSZWNpcGVGcm9tTGlzdChyZWNpcGVJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxHcm9jZXJpZXNMaXN0PiB7XG4gICAgcmV0dXJuIHRoaXMudGFrZUZpcnN0TGlzdCgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAobGlzdCA9PiB7XG4gICAgICAgIGlmIChsaXN0LmF0dHJpYnV0ZXNbJ3JlY2lwZXMtaW5mb3MnXSkge1xuICAgICAgICAgIGxpc3QuYXR0cmlidXRlc1sncmVjaXBlcy1pbmZvcyddID0gbGlzdC5hdHRyaWJ1dGVzWydyZWNpcGVzLWluZm9zJ10uZmlsdGVyKGluZm8gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGluZm8uaWQgIT09IHJlY2lwZUlkO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnQoJ3JlbW92ZS1yZWNpcGUnKTtcbiAgICAgICAgICB0aGlzLnNhdmVPcGVyYXRpb25UeXBlID0gJ1JFTU9WRSc7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2F2ZUxpc3QobGlzdCkgYXMgT2JzZXJ2YWJsZTxHcm9jZXJpZXNMaXN0PjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvZihudWxsKSBhcyBPYnNlcnZhYmxlPEdyb2Nlcmllc0xpc3Q+O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgdXBkYXRlUmVjaXBlR3Vlc3RzKHJlY2lwZUlkOiBzdHJpbmcsIGd1ZXN0czogbnVtYmVyKTogT2JzZXJ2YWJsZTxHcm9jZXJpZXNMaXN0PiAge1xuICAgIHJldHVybiB0aGlzLnRha2VGaXJzdExpc3QoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKGxpc3QgPT4ge1xuICAgICAgICBpZiAobGlzdC5hdHRyaWJ1dGVzWydyZWNpcGVzLWluZm9zJ10pIHtcbiAgICAgICAgICBjb25zdCByZWNpcGVJbmZvID0gbGlzdC5hdHRyaWJ1dGVzWydyZWNpcGVzLWluZm9zJ10uZmluZChpbmZvID0+IHtcbiAgICAgICAgICAgIHJldHVybiBpbmZvLmlkID09PSByZWNpcGVJZDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZWNpcGVJbmZvLmd1ZXN0cyA9IGd1ZXN0cztcbiAgICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2Uuc2VuZEV2ZW50KCdjaGFuZ2UtZ3Vlc3RzJyk7XG4gICAgICAgICAgdGhpcy5zYXZlT3BlcmF0aW9uVHlwZSA9ICdHVUVTVFMnO1xuICAgICAgICAgIHJldHVybiB0aGlzLnNhdmVMaXN0KGxpc3QpIGFzIE9ic2VydmFibGU8R3JvY2VyaWVzTGlzdD47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fbGlzdCQ7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICByZW1vdmVSZWNpcGVzRnJvbUxpc3QoKTogT2JzZXJ2YWJsZTxHcm9jZXJpZXNMaXN0PiB7XG4gICAgcmV0dXJuIHRoaXMudGFrZUZpcnN0TGlzdCgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAobGlzdCA9PiB7XG4gICAgICAgIGxpc3QuYXR0cmlidXRlc1sncmVjaXBlcy1pbmZvcyddID0gW107XG4gICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnQoJ3JlbW92ZS1hbGwtcmVjaXBlcycpO1xuICAgICAgICB0aGlzLnNhdmVPcGVyYXRpb25UeXBlID0gJ1JFTU9WRSc7XG4gICAgICAgIHJldHVybiB0aGlzLnNhdmVMaXN0KGxpc3QpIGFzIE9ic2VydmFibGU8R3JvY2VyaWVzTGlzdD47XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBhZGRFbnRyaWVzRnJvbVBpY3R1cmUoZmlsZTogRmlsZSwgaW5jbHVkZSA9IFtdLCBkaXNhYmxlSW5ncmVkaWVudHNNYXRjaGluZyA9IGZhbHNlKTogT2JzZXJ2YWJsZTxHcm9jZXJpZXNMaXN0PiB7XG4gICAgcmV0dXJuIHRoaXMudGFrZUZpcnN0TGlzdCgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAobGlzdCA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBbZS5taWFtQVBJLCAnYXBpL3YxL2dyb2Nlcmllcy1saXN0cycsIGxpc3QuaWQsICdhZGRfZW50cmllc19mcm9tX3BpY3R1cmUnXS5qb2luKCcvJyk7XG4gICAgICAgIGlmIChkaXNhYmxlSW5ncmVkaWVudHNNYXRjaGluZykge1xuICAgICAgICAgIHVybCArPSAnP2Rpc2FibGVfbWF0Y2hpbmc9dHJ1ZSc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncGljdHVyZScsIGZpbGUpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2luY2x1ZGUnLCBpbmNsdWRlLmpvaW4oJywnKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2godXJsLCBmb3JtRGF0YSkucGlwZShcbiAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBEb2N1bWVudFJlc291cmNlPEdyb2Nlcmllc0xpc3Q+KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsID0gdGhpcy5uZXcoKTtcbiAgICAgICAgICAgIGwuZmlsbChyZXNwb25zZSk7XG4gICAgICAgICAgICB0aGlzLl9saXN0JC5uZXh0KGwpO1xuICAgICAgICAgICAgcmV0dXJuIGw7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaWxsIGNyZWF0ZSBhIHRlbXBvcmFyeSBsaXN0IGFuZCBzZXQgaXQgaW4gX2xpc3QkLiBUaGUgbGlzdCB3b24ndCBiZSBtYXJrZWQgYXMgY3VycmVudCBhbmQgdGh1c1xuICAgKiB3aWxsIG5vdCBiZSByZXVzZWRcbiAgICovXG4gIGNyZWF0ZVRlbXBvcmFyeUxpc3QoKSB7XG4gICAgdGhpcy5saXN0SXNGZXRjaGluZyA9IHRydWU7XG4gICAgdGhpcy5uZXcoKS5zYXZlKHtpbmNsdWRlOiBbJ2dyb2Nlcmllcy1lbnRyaWVzJ119KS5zdWJzY3JpYmUoKHRlbXBvcmFyeUxpc3Q6IERvY3VtZW50UmVzb3VyY2U8R3JvY2VyaWVzTGlzdD4pID0+IHtcbiAgICAgIHRoaXMuX2xpc3QkLm5leHQodGhpcy5hZnRlclNhdmUodGVtcG9yYXJ5TGlzdCkpO1xuICAgICAgdGhpcy5saXN0SXNGZXRjaGluZyA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIHNhdmUoKSByZXR1cm5zIGFuIG9iamVjdCB0aGF0IGlzbid0IGEgcmVzb3VyY2Ugc28gbWV0aG9kcyBhcmVuJ3QgYXR0YWNoZWQsIHNvIHdlIGhhdmUgdG8gZG8gYSBsaXR0bGUgdHJpY2tcbiAgICogQHBhcmFtIHJlcyByZXN1bHQgb2YgdGhlIHNhdmVcbiAgICogQHJldHVybnMgY29ycmVjdCBHcm9jZXJpZXNMaXN0IHdpdGggdGhlIHJpZ2h0IGF0dHJpYnV0ZXMgJiBtZXRob2RzXG4gICAqL1xuICBwcml2YXRlIGFmdGVyU2F2ZShyZXM6IERvY3VtZW50UmVzb3VyY2U8R3JvY2VyaWVzTGlzdD4pIHtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5uZXcoKTtcbiAgICBsaXN0LmZpbGwocmVzKTtcbiAgICByZXR1cm4gbGlzdCBhcyBHcm9jZXJpZXNMaXN0O1xuICB9XG5cbiAgcHJpdmF0ZSBzYXZlTGlzdChsaXN0OiBHcm9jZXJpZXNMaXN0LCBvcGVuQmFza2V0OiBib29sZWFuID0gZmFsc2UpOiBPYnNlcnZhYmxlPEdyb2Nlcmllc0xpc3Q+IHtcbiAgICBkZWxldGUobGlzdC5hdHRyaWJ1dGVzWydyZWNpcGVzLWlkcyddKTtcbiAgICBkZWxldGUobGlzdC5yZWxhdGlvbnNoaXBzWydncm9jZXJpZXMtZW50cmllcyddKTtcbiAgICByZXR1cm4gbGlzdC5zYXZlKHtpbmNsdWRlOiBbJ2dyb2Nlcmllcy1lbnRyaWVzJ119KS5waXBlKFxuICAgICAgc2tpcFdoaWxlKChsOiBEb2N1bWVudFJlc291cmNlPEdyb2Nlcmllc0xpc3Q+KSA9PiBsLmlzX2xvYWRpbmcpLFxuICAgICAgdGFwKGwgPT4ge1xuICAgICAgICB0aGlzLl9saXN0JC5uZXh0KHRoaXMuYWZ0ZXJTYXZlKGwpKTtcbiAgICAgICAgaWYgKHRoaXMuc2F2ZU9wZXJhdGlvblR5cGUgPT09ICdBREQnKSB7XG4gICAgICAgICAgdGhpcy5yZWNpcGVXYXNBZGRlZCQubmV4dChsaXN0LnJlY2lwZUluZm9zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zYXZlT3BlcmF0aW9uVHlwZSA9PT0gJ1JFTU9WRScpIHtcbiAgICAgICAgICB0aGlzLnJlY2lwZVdhc0RlbGV0ZWQkLm5leHQobGlzdC5yZWNpcGVJbmZvcyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zYXZlT3BlcmF0aW9uVHlwZSA9ICcnO1xuICAgICAgICBpZiAob3BlbkJhc2tldCkge1xuICAgICAgICAgIHdpbmRvdy5vcGVuKGAke3RoaXMubWlhbUJhc2tldFVSTH0vJHtsaXN0LmlkfWAsICdfYmxhbmsnKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBtYXAobCA9PiBsLmRhdGEpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXNzaWduTGlzdChsKXtcbiAgICAvLyBXaGVuIGEgQ09SUyBlcnJvciBoYXBwZW5zIHRoZSByZXNwb25zZSBpcyBhIEdMIHdpdGggYW4gaWQgZXF1YWwgdG8gdGhlIHJlcXVlc3QgVVJMXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRvbid0IGNoYW5nZSB0aGUgR0xcbiAgICBpZiAobC5pZC50b1N0cmluZygpLm1hdGNoKC9eWzAtOV0rJC8pKSB7XG4gICAgICBpZiAobC5hdHRyaWJ1dGVzWyd1c2VyLWlkJ10pIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ19taWFtL2xpc3RJZCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ19taWFtL2xpc3RJZCcsIGwuaWQpO1xuICAgICAgfVxuICAgICAgdGhpcy5fbGlzdCQubmV4dChsKTtcbiAgICAgIHRoaXMubGlzdElzRmV0Y2hpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -194,12 +194,12 @@ export class RecipesService extends Service {
|
|
|
194
194
|
this.displayObject(recipe, { previewAllowed, guests, previewMode });
|
|
195
195
|
});
|
|
196
196
|
}
|
|
197
|
-
displayObject(recipe, { previewAllowed = true, guests = null, previewMode = false }) {
|
|
197
|
+
displayObject(recipe, { previewAllowed = true, guests = null, previewMode = false, wasAdded = false }) {
|
|
198
198
|
if (!recipe) {
|
|
199
199
|
return;
|
|
200
200
|
}
|
|
201
201
|
recipe.modifiedGuests = guests || +recipe.guests;
|
|
202
|
-
this.displayedRecipe$.next({ previewAllowed, recipe, previewMode });
|
|
202
|
+
this.displayedRecipe$.next({ previewAllowed, recipe, previewMode, wasAdded });
|
|
203
203
|
if (!previewMode) {
|
|
204
204
|
this.recipeEventsService.sendEvent(recipe, this.recipeEventsService.ACTION_DISPLAYED);
|
|
205
205
|
}
|
|
@@ -272,4 +272,4 @@ RecipesService.ɵprov = i0.ɵɵdefineInjectable({ token: RecipesService, factory
|
|
|
272
272
|
providedIn: 'root'
|
|
273
273
|
}]
|
|
274
274
|
}], function () { return [{ type: i1.HttpClient }, { type: i2.RecipeProviderService }, { type: i3.RecipeStatusService }, { type: i4.RecipeTypeService }, { type: i5.SuppliersService }, { type: i6.PointOfSalesService }, { type: i7.GroceriesListsService }, { type: i8.IngredientsService }, { type: i9.RecipeStepsService }, { type: i10.RecipeEventsService }, { type: i11.SponsorService }, { type: i12.PackageService }, { type: i13.TagsService }, { type: i14.RecipeLikesService }]; }, null); })();
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fc2VydmljZXMvcmVjaXBlcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFjLFFBQVEsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxPQUFPLEVBQXNCLE1BQU0sYUFBYSxDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFF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Q0FBQyxFQUM3QyxHQUFHLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDbEMsQ0FBQztJQUNKLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBYTtRQUMvQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2xELE9BQU8sR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7SUFDOUcsQ0FBQztJQUVPLFNBQVMsQ0FBQyxVQUFrQixFQUFFLEtBQWE7UUFDakQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ2QsVUFBVSxFQUFFLG9CQUFvQixVQUFVLEVBQUU7WUFDNUMsWUFBWSxFQUFFO2dCQUNaLFFBQVEsRUFBRSxLQUFLO2dCQUNmLE1BQU0sRUFBRSxZQUFZO2FBQ3JCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGFBQWE7UUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDL0IsQ0FBQzs7NEVBalRVLGNBQWM7c0RBQWQsY0FBYyxXQUFkLGNBQWMsbUJBRmIsTUFBTTtrREFFUCxjQUFjO2NBSDFCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaWlmLCBvZiwgT2JzZXJ2YWJsZSwgZm9ya0pvaW4sIEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2VydmljZSwgRG9jdW1lbnRDb2xsZWN0aW9uIH0gZnJvbSAnbmd4LWpzb25hcGknO1xuaW1wb3J0IHsgUmVjaXBlIH0gZnJvbSAnLi4vX21vZGVscy9yZWNpcGUnO1xuaW1wb3J0IHsgUmVjaXBlUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi9yZWNpcGUtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBSZWNpcGVTdGF0dXNTZXJ2aWNlIH0gZnJvbSAnLi9yZWNpcGUtc3RhdHVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVjaXBlVHlwZVNlcnZpY2UgfSBmcm9tICcuL3JlY2lwZS10eXBlLnNlcnZpY2UnO1xuaW1wb3J0IHsgR3JvY2VyaWVzTGlzdHNTZXJ2aWNlIH0gZnJvbSAnLi9ncm9jZXJpZXMtbGlzdHMuc2VydmljZSc7XG5pbXBvcnQgeyBSZWNpcGVFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi9yZWNpcGUtZXZlbnRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHNraXBXaGlsZSwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgSW5ncmVkaWVudHNTZXJ2aWNlIH0gZnJvbSAnLi9pbmdyZWRpZW50cy5zZXJ2aWNlJztcbmltcG9ydCB7IFJlY2lwZVN0ZXBzU2VydmljZSB9IGZyb20gJy4vcmVjaXBlLXN0ZXBzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWlhbVJlY2lwZSB9IGZyb20gJy4uL190eXBlcy9yZWNpcGUnO1xuaW1wb3J0IHsgU3VwcGxpZXJzU2VydmljZSB9IGZyb20gJy4vc3VwcGxpZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVjaXBlUHJpY2luZyB9IGZyb20gJy4uL19tb2RlbHMvcmVjaXBlLXByaWNpbmcnO1xuaW1wb3J0IHsgU3BvbnNvclNlcnZpY2UgfSBmcm9tICcuL3Nwb25zb3Iuc2VydmljZSc7XG5pbXBvcnQgeyBQb2ludE9mU2FsZXNTZXJ2aWNlIH0gZnJvbSAnLi9wb2ludC1vZi1zYWxlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFBhY2thZ2VTZXJ2aWNlIH0gZnJvbSAnLi9wYWNrYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFnc1NlcnZpY2UgfSBmcm9tICcuL3RhZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBUYWcgfSBmcm9tICcuLi9fbW9kZWxzJztcbmltcG9ydCB7IFJlY2lwZUZpbHRlciwgUmVjaXBlRmlsdGVycyB9IGZyb20gJy4uL190eXBlcy9yZWNpcGUtZmlsdGVycyc7XG5pbXBvcnQgeyBSZWNpcGVMaWtlc1NlcnZpY2UgfSBmcm9tICcuL3JlY2lwZS1saWtlcy5zZXJ2aWNlJztcblxuY29uc3QgTUlBTV9BUElfSE9TVCA9IGAke2Vudmlyb25tZW50Lm1pYW1BUEl9L2FwaS92MS9gO1xuXG5pbnRlcmZhY2UgUmVjaXBlRGlzcGxheSB7XG4gIHByZXZpZXdBbGxvd2VkOiBib29sZWFuO1xuICByZWNpcGU6IFJlY2lwZTtcbiAgcHJldmlld01vZGU6IGJvb2xlYW47XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFJlY2lwZXNTZXJ2aWNlIGV4dGVuZHMgU2VydmljZTxSZWNpcGU+IHtcblxuICByZXNvdXJjZSA9IFJlY2lwZTtcbiAgdHlwZSA9ICdyZWNpcGVzJztcbiAgZGlzcGxheWVkUmVjaXBlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UmVjaXBlRGlzcGxheT4obnVsbCk7XG4gIGRpc3BsYXlIZWxwZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIGRpc3BsYXllZFJlY2lwZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIGhpZGRlbiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgc3VnZ2VzdGlvbnNQcmltYXJ5QnV0dG9uQWN0aW9ucyA9IHsgZGlzcGxheTogdHJ1ZSwgYWRkVG9CYXNrZXQ6IHRydWUgfTtcblxuICBwcml2YXRlIGluY2x1c2lvbnMgPSBbJ2luZ3JlZGllbnRzJywgJ3JlY2lwZS1zdGVwcycsICdyZWNpcGUtc3RhdHVzJywgJ3JlY2lwZS10eXBlJywgJ3Nwb25zb3JzJywgJ3JlY2lwZS1wcm92aWRlcicsICd0YWdzJ107XG4gIHByaXZhdGUgcmFuZG9tU2VlZDogbnVtYmVyO1xuICBwcml2YXRlIHJhbmRvbVJlY2lwZUNvdW50ID0gMTtcbiAgcHJpdmF0ZSByZWNpcGVzOiBSZWNpcGVbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIHByb3ZpZGVyU2VydmljZTogUmVjaXBlUHJvdmlkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RhdHVzU2VydmljZTogUmVjaXBlU3RhdHVzU2VydmljZSxcbiAgICBwcml2YXRlIHR5cGVTZXJ2aWNlOiBSZWNpcGVUeXBlU2VydmljZSxcbiAgICBwcml2YXRlIHN1cHBsaWVyc1NlcnZpY2U6IFN1cHBsaWVyc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb3NTZXJ2aWNlOiBQb2ludE9mU2FsZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGlzdHNTZXJ2aWNlOiBHcm9jZXJpZXNMaXN0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbmdyZWRpZW50c1NlcnZpY2U6IEluZ3JlZGllbnRzU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZVN0ZXBzU2VydmljZTogUmVjaXBlU3RlcHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVjaXBlRXZlbnRzU2VydmljZTogUmVjaXBlRXZlbnRzU2VydmljZSxcbiAgICBwcml2YXRlIHNwb25zb3JTZXJ2aWNlOiBTcG9uc29yU2VydmljZSxcbiAgICBwcml2YXRlIHBhY2thZ2VTZXJ2aWNlOiBQYWNrYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHRhZ3NTZXJ2aWNlOiBUYWdzU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZUxpa2VzU2VydmljZTogUmVjaXBlTGlrZXNTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5yZWdpc3RlcigpO1xuICAgIHRoaXMuaW50UmFuZG9tU2VlZCgpO1xuICB9XG5cbiAgbG9hZFJlY2lwZXMoKTogT2JzZXJ2YWJsZTxSZWNpcGVbXT4ge1xuICAgIHJldHVybiB0aGlzLmxpc3RzU2VydmljZS50YWtlRmlyc3RMaXN0KCkucGlwZShcbiAgICAgIHN3aXRjaE1hcChsaXN0ID0+IHtcbiAgICAgICAgaWYgKCFsaXN0KSB7XG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9IGVsc2UgaWYgKGxpc3QuYXR0cmlidXRlc1sncmVjaXBlcy1pbmZvcyddLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm9ya0pvaW4obGlzdC5hdHRyaWJ1dGVzWydyZWNpcGVzLWluZm9zJ10ubWFwKGluZm8gPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldE9yRmV0Y2goaW5mby5pZCkucGlwZShcbiAgICAgICAgICAgIHRhcChyID0+IHtcbiAgICAgICAgICAgICAgci5tb2RpZmllZEd1ZXN0cyA9IGluZm8uZ3Vlc3RzO1xuICAgICAgICAgICAgICB0aGlzLnJlY2lwZXMucHVzaChyKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSkpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLy8gQ3JlYXRlIHJlY2lwZSAmIGFwcGVuZCB0byBncm9jZXJpZXMgbGlzdFxuICBnZXRPckNyZWF0ZShyZWNpcGUsIG9wZW5CYXNrZXQ6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGNvbnN0IHByb3ZpZGVyID0gdGhpcy5wcm92aWRlclNlcnZpY2UuZ2V0Q2FjaGVkKCk7XG4gICAgY29uc3QgZXh0SWQgPSB0aGlzLmNyZWF0ZUV4dElkKHJlY2lwZS50aXRsZSk7XG5cbiAgICAvLyBDaGVjayBpZiBleGlzdHMgb3IgY3JlYXRlIGl0XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVjaXBlKHByb3ZpZGVyLmlkLCBleHRJZCkucGlwZShcbiAgICAgIHNraXBXaGlsZShyID0+IHIuaXNfbG9hZGluZyksXG4gICAgICAvLyBOT1RFIDogYWRkaW5nIG9mKHZvaWQgMCkgZm9yIGZhbHN5IG9ic2VydmFibGUgKG5neC1qc29uYXBpIGlzIHRyaWdnZXJpbmcgYW4gaHR0cCByZXF1ZXN0IHdoZW4gc2F2ZSgpIGNhbGxlZClcbiAgICAgIHN3aXRjaE1hcCgocikgPT4gaWlmKCgpID0+ICEhci5kYXRhLmxlbmd0aCwgb2Yoci5kYXRhWzBdKSwgb2Yodm9pZCAwKS5waXBlKHN3aXRjaE1hcChfID0+IHRoaXMuY3JlYXRlKGV4dElkLCByZWNpcGUpKSkpKSxcbiAgICAgIC8vIEFwcGVuZCByZWNpcGUgdG8gY3VycmVudCBzYXZlZCBsaXN0XG4gICAgICBzd2l0Y2hNYXAoKHIpID0+IHRoaXMubGlzdHNTZXJ2aWNlLmFwcGVuZFJlY2lwZVRvTGlzdChyLmlkLCByLm1vZGlmaWVkR3Vlc3RzLCAnb3JkZXItYnV0dG9uJywgb3BlbkJhc2tldCkpXG4gICAgKTtcblxuICB9XG5cbiAgLy8gUmV0dXJucyBsaXN0IG9mIGZpbHRlcmVkIHJlY2lwZXMuXG4gIC8vIEZpbHRlcnMgYW5kIHBhZ2UgcGFyYW1ldGVycyBhcmUgbWFuZGF0b3J5LlxuICAvLyBOdW1iZXIgb2YgZ3Vlc3RzIGFuZCByYW5kb21pemF0aW9uIGFyZSBvcHRpb25hbCBwYXJhbWV0ZXJzXG4gIGZpbHRlcihcbiAgICBmaWx0ZXJzOiBSZWNpcGVGaWx0ZXJzLFxuICAgIHBhZ2U6IHsgbnVtYmVyOiBudW1iZXIsIHNpemU6IG51bWJlciB9LFxuICAgIGd1ZXN0czogbnVtYmVyID0gbnVsbCxcbiAgICByYW5kb206IGJvb2xlYW4gPSBmYWxzZVxuICApOiBPYnNlcnZhYmxlPFJlY2lwZVtdPiB7XG4gICAgbGV0IHJlY2lwZXM6IFJlY2lwZVtdO1xuICAgIGNvbnN0IGYgPSB7IC4uLnRoaXMuYnVpbGRSZW1vdGVGaWx0ZXJzKGZpbHRlcnMpIH07XG4gICAgaWYgKHJhbmRvbSkgeyBPYmplY3QuYXNzaWduKGYsIHsgcmFuZG9tOiB0aGlzLnJhbmRvbVNlZWQgfSk7IH1cblxuICAgIHJldHVybiB0aGlzLmFsbCh7IHBhZ2UsIHJlbW90ZWZpbHRlcjogZiwgaW5jbHVkZTogdGhpcy5pbmNsdXNpb25zIH0pLnBpcGUoXG4gICAgICBza2lwV2hpbGUocmVzdWx0ID0+IHJlc3VsdC5pc19sb2FkaW5nKSxcbiAgICAgIHN3aXRjaE1hcCgocmVzdWx0OiBEb2N1bWVudENvbGxlY3Rpb248UmVjaXBlPikgPT4gIHtcbiAgICAgICAgcmVjaXBlcyA9IHJlc3VsdC5kYXRhO1xuICAgICAgICBpZiAoZ3Vlc3RzICYmIGd1ZXN0cyA+IDApIHsgcmVjaXBlcy5mb3JFYWNoKHIgPT4gci5tb2RpZmllZEd1ZXN0cyA9IGd1ZXN0cyk7IH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVjaXBlTGlrZXNTZXJ2aWNlLmFkZExpa2VzVG9SZWNpcGVzKHJlY2lwZXMpO1xuICAgICAgfSksXG4gICAgICBtYXAoKCkgPT4gcmVjaXBlcylcbiAgICApO1xuICB9XG5cbiAgLy8gRmV0Y2hlcyByZWNpcGVzIGNvcnJlc3BvbmRpbmcgdG8gZmlsdGVycywgYW5kIHJldHVybiB0b3RhbCByZWNpcGVzIGNvdW50XG4gIGZpbHRlckNvdW50KGZpbHRlcnM6IFJlY2lwZUZpbHRlcnMpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIGNvbnN0IGYgPSB7IC4uLnRoaXMuYnVpbGRSZW1vdGVGaWx0ZXJzKGZpbHRlcnMpIH07XG5cbiAgICByZXR1cm4gdGhpcy5hbGwoeyByZW1vdGVmaWx0ZXI6IGYsIHBhZ2U6IHsgbnVtYmVyOiAxLCBzaXplOiAxIH0gfSkucGlwZShcbiAgICAgIHNraXBXaGlsZShyZXN1bHQgPT4gcmVzdWx0LmlzX2xvYWRpbmcpLFxuICAgICAgbWFwKChyZXN1bHQ6IERvY3VtZW50Q29sbGVjdGlvbjxSZWNpcGU+KSA9PiAge1xuICAgICAgICAvLyBBcHBhcmVudGx5IHRvdGFsX3Jlc291cmNlID0gMSBldmVuIGlmIG5vIHJlc3VsdCB3YXMgZm91bmQgc28gd2UgaGF2ZSB0byBjaGVja1xuICAgICAgICByZXR1cm4gcmVzdWx0LmRhdGEubGVuZ3RoID8gcmVzdWx0Py5tZXRhPy50b3RhbF9yZXNvdXJjZXMgOiAwO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFJlbW90ZUZpbHRlcnMoZmlsdGVyczogUmVjaXBlRmlsdGVycyk6IHtcbiAgICBzZWFyY2g/OiBzdHJpbmc7XG4gICAgJ3RvdGFsLXRpbWUnPzogc3RyaW5nO1xuICAgIGNvbXB1dGVkX2Nvc3Q/OiBzdHJpbmc7XG4gICAgZGlmZmljdWx0eT86IHN0cmluZztcbiAgfSB7XG4gICAgY29uc3QgZGlmZmljdWx0eSA9IHRoaXMuYnVpbGRSZW1vdGVGaWx0ZXIoZmlsdGVycy5kaWZmaWN1bHR5LCAnLScpO1xuICAgIGNvbnN0IGNvc3QgPSB0aGlzLmJ1aWxkUmVtb3RlRmlsdGVyKGZpbHRlcnMuY29zdCwgJy0nKT8uc3BsaXQoJy0nKTtcbiAgICBjb25zdCB0b3RhbFRpbWUgPSB0aGlzLmJ1aWxkUmVtb3RlRmlsdGVyKGZpbHRlcnMudGltZSwgJywnKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi4oZGlmZmljdWx0eT8ubGVuZ3RoID4gMCkgPyB7IGRpZmZpY3VsdHk6IGRpZmZpY3VsdHkgKyAnLGVxJyB9IDoge30sIC8vIGV4OiBmaWx0ZXJbZGlmZmljdWx0eV09MS0yLTMsZXEgPT4gYWxsIGNoZWNrZWRcbiAgICAgIC4uLihjb3N0Py5sZW5ndGggPT09IDIpID8geyBjb21wdXRlZF9jb3N0OiBjb3N0WzBdICsgJyxndCwnICsgY29zdFsxXSArICcsbHQnIH0gOiB7fSwgLy8gZXg6IGZpbHRlcltjb3N0XT01LGd0LDEwLGx0ID0+IDUgPCBjb3N0IDwgMTBcbiAgICAgIC4uLih0b3RhbFRpbWU/Lmxlbmd0aCA+IDApID8geyAndG90YWwtdGltZSc6IHRvdGFsVGltZSB9IDoge30sXG4gICAgICAuLi4oZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycz8uZmlsdGVycykgPyBmaWx0ZXJzLmFkZGl0aW9uYWxGaWx0ZXJzLmZpbHRlcnMgOiB7fSxcbiAgICAgIC4uLihmaWx0ZXJzLnNlYXJjaCkgPyB7c2VhcmNoOiBmaWx0ZXJzLnNlYXJjaCB9IDoge31cbiAgICB9O1xuICB9XG5cbiAgLy8gUmVhZHMgdGhlIHZhbHVlcyBvZiBhIGZpZWxkIGFuZCBjb252ZXJ0cyBpdCB0byB0aGUgc3RyaW5nIHRvIHBhc3MgaW4gdGhlIHJlbW90ZUZpbHRlcnNcbiAgLy8gZXg6IGJ1aWxkUmVtb3RlRmlsdGVyKHtcbiAgLy8gICB7bmFtZTogJzEnLCB2YWx1ZTogdHJ1ZSwgdGV4dDogJ0ZhY2lsZSd9LFxuICAvLyAgIHtuYW1lOiAnMicsIHZhbHVlOiBmYWxzZSwgdGV4dDogJ01veWVuJ30sXG4gIC8vICAge25hbWU6ICczJywgdmFsdWU6IHRydWUsIHRleHQ6ICdEaWZmaWNpbGUnfVxuICAvLyB9LCAnLScpICA9PT4gJzEtMydcbiAgcHJpdmF0ZSBidWlsZFJlbW90ZUZpbHRlcihmaWx0ZXI6IFJlY2lwZUZpbHRlcltdLCBzZXBhcmF0b3I6IHN0cmluZykge1xuICAgIGlmICghZmlsdGVyKSB7IHJldHVybjsgfVxuXG4gICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgIGZvciAoY29uc3QgZiBvZiBmaWx0ZXIpIHtcbiAgICAgIGlmIChmLnZhbHVlKSB7XG4gICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMCkgeyByZXN1bHQgKz0gc2VwYXJhdG9yOyB9XG4gICAgICAgIHJlc3VsdCArPSBmLm5hbWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBGZXRjaCBvbmUgcmFuZG9tIHJlY2lwZVxuICBnZXRSYW5kb20oKTogT2JzZXJ2YWJsZTxSZWNpcGVbXT4ge1xuICAgIHRoaXMucmFuZG9tUmVjaXBlQ291bnQrKztcbiAgICByZXR1cm4gdGhpcy5maWx0ZXIoXG4gICAgICB7IHJldmlld2VkOiB0cnVlLCBleGNsdWRlX25vX3BpY3R1cmU6IHRydWUgfSBhcyBSZWNpcGVGaWx0ZXJzLFxuICAgICAgeyBudW1iZXI6IHRoaXMucmFuZG9tUmVjaXBlQ291bnQsIHNpemU6IDEgfSxcbiAgICAgIG51bGwsXG4gICAgICB0cnVlXG4gICAgKTtcbiAgfVxuXG4gIC8vIERlYm91bmNlIHRvIGxldCBlbm91Z2ggdGltZSBmb3IgdGhlIHBvcyB0byBiZSBkZWZpbmVkXG4gIGdldFN1Z2dlc3Rpb24oXG4gICAgc2hlbGZfaW5ncmVkaWVudHNfaWRzOiBzdHJpbmdbXSxcbiAgICBjdXJyZW50X2luZ3JlZGllbnRzX2lkczogc3RyaW5nW10sXG4gICAgYmFza2V0X2luZ3JlZGllbnRzX2lkczogc3RyaW5nW10sXG4gICAgZ3JvdXBfaWQ6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPFJlY2lwZVtdPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW3RoaXMuc3VwcGxpZXJzU2VydmljZS5zdXBwbGllciQsIHRoaXMucG9zU2VydmljZS5wb3MkXSkucGlwZShcbiAgICAgIHNraXBXaGlsZShyZXN1bHRzID0+ICFyZXN1bHRzWzBdKSxcbiAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgc3dpdGNoTWFwKHJlc3VsdHMgPT4ge1xuICAgICAgICBjb25zdCBib2R5ID0geyBzaGVsZl9pbmdyZWRpZW50c19pZHMsIGN1cnJlbnRfaW5ncmVkaWVudHNfaWRzLCBiYXNrZXRfaW5ncmVkaWVudHNfaWRzLCBncm91cF9pZCB9O1xuICAgICAgICBsZXQgc3VwcGxpZXJGaWx0ZXIgPSBgc3VwcGxpZXJfaWQ9JHtyZXN1bHRzWzBdLmlkfWA7XG4gICAgICAgIGlmIChyZXN1bHRzWzFdKSB7XG4gICAgICAgICAgc3VwcGxpZXJGaWx0ZXIgPSBgc3VwcGxpZXJfaWQ9JHtyZXN1bHRzWzBdLmlkfSZwb3NfaWQ9JHtyZXN1bHRzWzFdLmlkfWA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXJsID0gTUlBTV9BUElfSE9TVCArIGByZWNpcGVzL3N1Z2dlc3Rpb25zPyR7c3VwcGxpZXJGaWx0ZXJ9JmluY2x1ZGU9aW5ncmVkaWVudHMscmVjaXBlLXN0ZXBzLHNwb25zb3JzLHJlY2lwZS10eXBlLHRhZ3NgO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodXJsLCBib2R5KTtcbiAgICAgIH0pLFxuICAgICAgbWFwKChyZXR1cm5lZFJlY2lwZXM6IERvY3VtZW50Q29sbGVjdGlvbjxSZWNpcGU+KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlY2lwZXMgPSB0aGlzLm5ld0NvbGxlY3Rpb24oKTtcbiAgICAgICAgcmVjaXBlcy5maWxsKHJldHVybmVkUmVjaXBlcyk7XG4gICAgICAgIHJldHVybiByZWNpcGVzLmRhdGE7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBnZXRQcmljaW5nKHJlY2lwZUlkLCBwb3NJZCwgc2VydmVzID0gbnVsbCk6IE9ic2VydmFibGU8UmVjaXBlUHJpY2luZz4ge1xuICAgIGlmICghcmVjaXBlSWQpIHtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG5cbiAgICBsZXQgdXJsID0gTUlBTV9BUElfSE9TVCArIGByZWNpcGVzLyR7cmVjaXBlSWR9L3ByaWNpbmc/cG9pbnRfb2Zfc2FsZV9pZD0ke3Bvc0lkfWA7XG4gICAgaWYgKHNlcnZlcykge1xuICAgICAgdXJsICs9IGAmc2VydmVzPSR7c2VydmVzfWA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gbmV3IFJlY2lwZVByaWNpbmcocmVzdWx0KSlcbiAgICApO1xuICB9XG5cbiAgY3JlYXRlRnJvbVVybChzb3VyY2U6IHN0cmluZywgZXh0X2xpbms6IHN0cmluZyk6IE9ic2VydmFibGU8UmVjaXBlPiB7XG4gICAgaWYgKCFzb3VyY2UgfHwgIWV4dF9saW5rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHNvdXJjZSBvciByZWNpcGUgbGluayBwcm92aWRlZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHtlbnZpcm9ubWVudC5taWFtQVBJfS9hcGkvdjEvcmVjaXBlcy9mcm9tX3VybGAsIHsgc291cmNlLCBleHRfbGluayB9KS5waXBlKFxuICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0LmRhdGEgYXMgUmVjaXBlKVxuICAgICk7XG4gIH1cblxuICAvLyBPcGVuIG1vZGFsIHNob3dpbmcgcmVjaXBlIGRldGFpbHNcbiAgZGlzcGxheShyZWNpcGVJZDogc3RyaW5nLCB7IHByZXZpZXdBbGxvd2VkID0gdHJ1ZSwgZ3Vlc3RzID0gbnVsbCwgcHJldmlld01vZGUgPSBmYWxzZX0pIHtcbiAgICBpZiAoIXJlY2lwZUlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5nZXQocmVjaXBlSWQsIHsgaW5jbHVkZTogWydpbmdyZWRpZW50cycsICdyZWNpcGUtc3RlcHMnLCAncmVjaXBlLXR5cGUnLCAnc3BvbnNvcnMnLCAndGFncyddIH0pXG4gICAgICAucGlwZShza2lwV2hpbGUocmVjaXBlID0+IHJlY2lwZS5pc19sb2FkaW5nKSlcbiAgICAgIC5zdWJzY3JpYmUocmVjaXBlID0+IHtcbiAgICAgICAgdGhpcy5kaXNwbGF5T2JqZWN0KHJlY2lwZSwge3ByZXZpZXdBbGxvd2VkLCBndWVzdHMsIHByZXZpZXdNb2RlIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBkaXNwbGF5T2JqZWN0KHJlY2lwZTogUmVjaXBlLCB7IHByZXZpZXdBbGxvd2VkID0gdHJ1ZSwgZ3Vlc3RzID0gbnVsbCwgcHJldmlld01vZGUgPSBmYWxzZX0pe1xuICAgIGlmICghcmVjaXBlKXtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZWNpcGUubW9kaWZpZWRHdWVzdHMgPSBndWVzdHMgfHwgK3JlY2lwZS5ndWVzdHM7XG4gICAgdGhpcy5kaXNwbGF5ZWRSZWNpcGUkLm5leHQoeyBwcmV2aWV3QWxsb3dlZCAsIHJlY2lwZSwgcHJldmlld01vZGUgfSk7XG4gICAgaWYgKCFwcmV2aWV3TW9kZSkge1xuICAgICAgdGhpcy5yZWNpcGVFdmVudHNTZXJ2aWNlLnNlbmRFdmVudChyZWNpcGUsIHRoaXMucmVjaXBlRXZlbnRzU2VydmljZS5BQ1RJT05fRElTUExBWUVEKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVIZWxwZXIoKSB7XG4gICAgdGhpcy5oaWRlKCk7XG4gICAgdGhpcy5kaXNwbGF5SGVscGVyJC5uZXh0KCF0aGlzLmRpc3BsYXlIZWxwZXIkLnZhbHVlKTtcbiAgfVxuXG4gIGhpZGUoKSB7XG4gICAgdGhpcy5kaXNwbGF5ZWRSZWNpcGUkLm5leHQobnVsbCk7XG4gICAgdGhpcy5oaWRkZW4uZW1pdCh0cnVlKTtcbiAgfVxuXG4gIHJlbW92ZVRhZ0Zyb21SZWNpcGUocmVjaXBlOiBSZWNpcGUsIHRhZzogVGFnKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShNSUFNX0FQSV9IT1NUICsgYHJlY2lwZXMvJHtyZWNpcGUuaWR9L3RhZ3MvJHt0YWcuaWR9YCk7XG4gIH1cblxuICBhZGRUYWdUb1JlY2lwZShyZWNpcGU6IFJlY2lwZSwgdGFnOiBUYWcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChNSUFNX0FQSV9IT1NUICsgYHJlY2lwZXMvJHtyZWNpcGUuaWR9L3RhZ3MvJHt0YWcuaWR9YCwge30pO1xuICB9XG5cbiAgLy8gREVQUkVDQVRFRCAvIHVzZSBUVEwgaW5zdGVhZFxuICBwcml2YXRlIGdldE9yRmV0Y2gocmVjaXBlSWQpOiBPYnNlcnZhYmxlPFJlY2lwZT4ge1xuICAgIGNvbnN0IHJlY2lwZSA9IHRoaXMucmVjaXBlcy5maW5kKHIgPT4gci5pZCA9PT0gcmVjaXBlSWQpO1xuICAgIGlmIChyZWNpcGUpIHtcbiAgICAgIHJldHVybiBvZihyZWNpcGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXQocmVjaXBlSWQsIHsgaW5jbHVkZTogdGhpcy5pbmNsdXNpb25zIH0pLnBpcGUoXG4gICAgICAgIHNraXBXaGlsZShyID0+IHIuaXNfbG9hZGluZylcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGUoZXh0SWQ6IHN0cmluZywgcmVjaXBlOiBNaWFtUmVjaXBlKSB7XG4gICAgY29uc3QgciA9IHRoaXMubmV3KCk7XG4gICAgLy8gQ29weSByZWNpcGUgaW50byBhdHRyaWJ1dGVzXG4gICAgT2JqZWN0LmFzc2lnbihyLmF0dHJpYnV0ZXMsIHJlY2lwZSk7XG4gICAgLy8gU2V0IHByb3ZpZGVyICYgc3RhdHVzIChjYWNoZWQgZnJvbSBpbml0aWFsaXplZCB2YXIgTUlBTV9TVEFUVVNfSUQgJiBNSUFNX1BST1ZJREVSX0lEKVxuICAgIHIuYWRkUmVsYXRpb25zaGlwKHRoaXMucHJvdmlkZXJTZXJ2aWNlLmdldENhY2hlZCgpLCAncmVjaXBlLXByb3ZpZGVyJyk7XG4gICAgci5hZGRSZWxhdGlvbnNoaXAodGhpcy5zdGF0dXNTZXJ2aWNlLmdldENhY2hlZCgpLCAncmVjaXBlLXN0YXR1cycpO1xuICAgIC8vIFRPRE8gOiBoYXJkIGNvZGVkIChwbGF0IHByaW5jaXBhbCBhcyB0eXBlKVxuICAgIHIuYWRkUmVsYXRpb25zaGlwKHRoaXMudHlwZVNlcnZpY2UuZ2V0VHlwZUJ5TmFtZSgncGxhdCBwcmluY2lwYWwnKSwgJ3JlY2lwZS10eXBlJyk7XG4gICAgLy8gT3ZlcnJpZGUgc3BlY2lmaWMgbWlhbSByZXNlcnZlZCBhdHRyaWJ1dGVzXG4gICAgci5hdHRyaWJ1dGVzLnNvdXJjZSA9IG51bGw7XG4gICAgci5hdHRyaWJ1dGVzLmRlc2NyaXB0aW9uID0gbnVsbDtcbiAgICByLmF0dHJpYnV0ZXNbJ2V4dC1pZCddID0gZXh0SWQ7XG4gICAgcmV0dXJuIHIuc2F2ZSgpLnBpcGUoXG4gICAgICBza2lwV2hpbGUoKHJlc3VsdDogYW55KSA9PiByZXN1bHQuaXNfbG9hZGluZyksXG4gICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiByZXN1bHQuZGF0YSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVFeHRJZCh0aXRsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBwcm92aWRlciA9IHRoaXMucHJvdmlkZXJTZXJ2aWNlLmdldENhY2hlZCgpO1xuICAgIHJldHVybiBgJHtwcm92aWRlci5hdHRyaWJ1dGVzLm5hbWUuc2xpY2UoMCwgMykudG9VcHBlckNhc2UoKX0tJHt0aXRsZS5yZXBsYWNlKC9cXHMrL2dtLCAnLScpLnRvTG93ZXJDYXNlKCl9YDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVjaXBlKHByb3ZpZGVySWQ6IHN0cmluZywgZXh0SWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFsbCh7XG4gICAgICBiZWZvcmVwYXRoOiBgcmVjaXBlLXByb3ZpZGVycy8ke3Byb3ZpZGVySWR9YCxcbiAgICAgIHJlbW90ZWZpbHRlcjoge1xuICAgICAgICAnZXh0LWlkJzogZXh0SWQsXG4gICAgICAgIGFjdGl2ZTogJ3RydWUsZmFsc2UnXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogaGVscCB1cyB0byBrZWVwIGEgdHJhY2sgb2YgcmFuZG9tXG4gICAqIGFuZCBhdm9pZCB0byBzaG93IHNhbWUgcmVjaXBlIG11dGlwbGUgdGltZXNcbiAgICovXG4gIHByaXZhdGUgaW50UmFuZG9tU2VlZCgpOiB2b2lkIHtcbiAgICB0aGlzLnJhbmRvbVNlZWQgPSBEYXRlLm5vdygpO1xuICB9XG5cbn1cbiJdfQ==
|
|
275
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fc2VydmljZXMvcmVjaXBlcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFjLFFBQVEsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxPQUFPLEVBQXNCLE1BQU0sYUFBYSxDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFF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RUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUM3QyxHQUFHLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDbEMsQ0FBQztJQUNKLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBYTtRQUMvQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2xELE9BQU8sR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7SUFDOUcsQ0FBQztJQUVPLFNBQVMsQ0FBQyxVQUFrQixFQUFFLEtBQWE7UUFDakQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ2QsVUFBVSxFQUFFLG9CQUFvQixVQUFVLEVBQUU7WUFDNUMsWUFBWSxFQUFFO2dCQUNaLFFBQVEsRUFBRSxLQUFLO2dCQUNmLE1BQU0sRUFBRSxZQUFZO2FBQ3JCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGFBQWE7UUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDL0IsQ0FBQzs7NEVBalRVLGNBQWM7c0RBQWQsY0FBYyxXQUFkLGNBQWMsbUJBRmIsTUFBTTtrREFFUCxjQUFjO2NBSDFCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaWlmLCBvZiwgT2JzZXJ2YWJsZSwgZm9ya0pvaW4sIEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2VydmljZSwgRG9jdW1lbnRDb2xsZWN0aW9uIH0gZnJvbSAnbmd4LWpzb25hcGknO1xuaW1wb3J0IHsgUmVjaXBlIH0gZnJvbSAnLi4vX21vZGVscy9yZWNpcGUnO1xuaW1wb3J0IHsgUmVjaXBlUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi9yZWNpcGUtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBSZWNpcGVTdGF0dXNTZXJ2aWNlIH0gZnJvbSAnLi9yZWNpcGUtc3RhdHVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVjaXBlVHlwZVNlcnZpY2UgfSBmcm9tICcuL3JlY2lwZS10eXBlLnNlcnZpY2UnO1xuaW1wb3J0IHsgR3JvY2VyaWVzTGlzdHNTZXJ2aWNlIH0gZnJvbSAnLi9ncm9jZXJpZXMtbGlzdHMuc2VydmljZSc7XG5pbXBvcnQgeyBSZWNpcGVFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi9yZWNpcGUtZXZlbnRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHNraXBXaGlsZSwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgSW5ncmVkaWVudHNTZXJ2aWNlIH0gZnJvbSAnLi9pbmdyZWRpZW50cy5zZXJ2aWNlJztcbmltcG9ydCB7IFJlY2lwZVN0ZXBzU2VydmljZSB9IGZyb20gJy4vcmVjaXBlLXN0ZXBzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWlhbVJlY2lwZSB9IGZyb20gJy4uL190eXBlcy9yZWNpcGUnO1xuaW1wb3J0IHsgU3VwcGxpZXJzU2VydmljZSB9IGZyb20gJy4vc3VwcGxpZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVjaXBlUHJpY2luZyB9IGZyb20gJy4uL19tb2RlbHMvcmVjaXBlLXByaWNpbmcnO1xuaW1wb3J0IHsgU3BvbnNvclNlcnZpY2UgfSBmcm9tICcuL3Nwb25zb3Iuc2VydmljZSc7XG5pbXBvcnQgeyBQb2ludE9mU2FsZXNTZXJ2aWNlIH0gZnJvbSAnLi9wb2ludC1vZi1zYWxlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFBhY2thZ2VTZXJ2aWNlIH0gZnJvbSAnLi9wYWNrYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFnc1NlcnZpY2UgfSBmcm9tICcuL3RhZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBUYWcgfSBmcm9tICcuLi9fbW9kZWxzJztcbmltcG9ydCB7IFJlY2lwZUZpbHRlciwgUmVjaXBlRmlsdGVycyB9IGZyb20gJy4uL190eXBlcy9yZWNpcGUtZmlsdGVycyc7XG5pbXBvcnQgeyBSZWNpcGVMaWtlc1NlcnZpY2UgfSBmcm9tICcuL3JlY2lwZS1saWtlcy5zZXJ2aWNlJztcblxuY29uc3QgTUlBTV9BUElfSE9TVCA9IGAke2Vudmlyb25tZW50Lm1pYW1BUEl9L2FwaS92MS9gO1xuXG5pbnRlcmZhY2UgUmVjaXBlRGlzcGxheSB7XG4gIHByZXZpZXdBbGxvd2VkOiBib29sZWFuO1xuICByZWNpcGU6IFJlY2lwZTtcbiAgcHJldmlld01vZGU6IGJvb2xlYW47XG4gIHdhc0FkZGVkOiBib29sZWFuO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBSZWNpcGVzU2VydmljZSBleHRlbmRzIFNlcnZpY2U8UmVjaXBlPiB7XG5cbiAgcmVzb3VyY2UgPSBSZWNpcGU7XG4gIHR5cGUgPSAncmVjaXBlcyc7XG4gIGRpc3BsYXllZFJlY2lwZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJlY2lwZURpc3BsYXk+KG51bGwpO1xuICBkaXNwbGF5SGVscGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBkaXNwbGF5ZWRSZWNpcGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBoaWRkZW4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIHN1Z2dlc3Rpb25zUHJpbWFyeUJ1dHRvbkFjdGlvbnMgPSB7IGRpc3BsYXk6IHRydWUsIGFkZFRvQmFza2V0OiB0cnVlIH07XG5cbiAgcHJpdmF0ZSBpbmNsdXNpb25zID0gWydpbmdyZWRpZW50cycsICdyZWNpcGUtc3RlcHMnLCAncmVjaXBlLXN0YXR1cycsICdyZWNpcGUtdHlwZScsICdzcG9uc29ycycsICdyZWNpcGUtcHJvdmlkZXInLCAndGFncyddO1xuICBwcml2YXRlIHJhbmRvbVNlZWQ6IG51bWJlcjtcbiAgcHJpdmF0ZSByYW5kb21SZWNpcGVDb3VudCA9IDE7XG4gIHByaXZhdGUgcmVjaXBlczogUmVjaXBlW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBwcm92aWRlclNlcnZpY2U6IFJlY2lwZVByb3ZpZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHN0YXR1c1NlcnZpY2U6IFJlY2lwZVN0YXR1c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0eXBlU2VydmljZTogUmVjaXBlVHlwZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdXBwbGllcnNTZXJ2aWNlOiBTdXBwbGllcnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9zU2VydmljZTogUG9pbnRPZlNhbGVzU2VydmljZSxcbiAgICBwcml2YXRlIGxpc3RzU2VydmljZTogR3JvY2VyaWVzTGlzdHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW5ncmVkaWVudHNTZXJ2aWNlOiBJbmdyZWRpZW50c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNpcGVTdGVwc1NlcnZpY2U6IFJlY2lwZVN0ZXBzU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZUV2ZW50c1NlcnZpY2U6IFJlY2lwZUV2ZW50c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzcG9uc29yU2VydmljZTogU3BvbnNvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwYWNrYWdlU2VydmljZTogUGFja2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0YWdzU2VydmljZTogVGFnc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNpcGVMaWtlc1NlcnZpY2U6IFJlY2lwZUxpa2VzU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMucmVnaXN0ZXIoKTtcbiAgICB0aGlzLmludFJhbmRvbVNlZWQoKTtcbiAgfVxuXG4gIGxvYWRSZWNpcGVzKCk6IE9ic2VydmFibGU8UmVjaXBlW10+IHtcbiAgICByZXR1cm4gdGhpcy5saXN0c1NlcnZpY2UudGFrZUZpcnN0TGlzdCgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAobGlzdCA9PiB7XG4gICAgICAgIGlmICghbGlzdCkge1xuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSBlbHNlIGlmIChsaXN0LmF0dHJpYnV0ZXNbJ3JlY2lwZXMtaW5mb3MnXS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZvcmtKb2luKGxpc3QuYXR0cmlidXRlc1sncmVjaXBlcy1pbmZvcyddLm1hcChpbmZvID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRPckZldGNoKGluZm8uaWQpLnBpcGUoXG4gICAgICAgICAgICB0YXAociA9PiB7XG4gICAgICAgICAgICAgIHIubW9kaWZpZWRHdWVzdHMgPSBpbmZvLmd1ZXN0cztcbiAgICAgICAgICAgICAgdGhpcy5yZWNpcGVzLnB1c2gocik7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0pKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8vIENyZWF0ZSByZWNpcGUgJiBhcHBlbmQgdG8gZ3JvY2VyaWVzIGxpc3RcbiAgZ2V0T3JDcmVhdGUocmVjaXBlLCBvcGVuQmFza2V0OiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBjb25zdCBwcm92aWRlciA9IHRoaXMucHJvdmlkZXJTZXJ2aWNlLmdldENhY2hlZCgpO1xuICAgIGNvbnN0IGV4dElkID0gdGhpcy5jcmVhdGVFeHRJZChyZWNpcGUudGl0bGUpO1xuXG4gICAgLy8gQ2hlY2sgaWYgZXhpc3RzIG9yIGNyZWF0ZSBpdFxuICAgIHJldHVybiB0aGlzLmdldFJlY2lwZShwcm92aWRlci5pZCwgZXh0SWQpLnBpcGUoXG4gICAgICBza2lwV2hpbGUociA9PiByLmlzX2xvYWRpbmcpLFxuICAgICAgLy8gTk9URSA6IGFkZGluZyBvZih2b2lkIDApIGZvciBmYWxzeSBvYnNlcnZhYmxlIChuZ3gtanNvbmFwaSBpcyB0cmlnZ2VyaW5nIGFuIGh0dHAgcmVxdWVzdCB3aGVuIHNhdmUoKSBjYWxsZWQpXG4gICAgICBzd2l0Y2hNYXAoKHIpID0+IGlpZigoKSA9PiAhIXIuZGF0YS5sZW5ndGgsIG9mKHIuZGF0YVswXSksIG9mKHZvaWQgMCkucGlwZShzd2l0Y2hNYXAoXyA9PiB0aGlzLmNyZWF0ZShleHRJZCwgcmVjaXBlKSkpKSksXG4gICAgICAvLyBBcHBlbmQgcmVjaXBlIHRvIGN1cnJlbnQgc2F2ZWQgbGlzdFxuICAgICAgc3dpdGNoTWFwKChyKSA9PiB0aGlzLmxpc3RzU2VydmljZS5hcHBlbmRSZWNpcGVUb0xpc3Qoci5pZCwgci5tb2RpZmllZEd1ZXN0cywgJ29yZGVyLWJ1dHRvbicsIG9wZW5CYXNrZXQpKVxuICAgICk7XG5cbiAgfVxuXG4gIC8vIFJldHVybnMgbGlzdCBvZiBmaWx0ZXJlZCByZWNpcGVzLlxuICAvLyBGaWx0ZXJzIGFuZCBwYWdlIHBhcmFtZXRlcnMgYXJlIG1hbmRhdG9yeS5cbiAgLy8gTnVtYmVyIG9mIGd1ZXN0cyBhbmQgcmFuZG9taXphdGlvbiBhcmUgb3B0aW9uYWwgcGFyYW1ldGVyc1xuICBmaWx0ZXIoXG4gICAgZmlsdGVyczogUmVjaXBlRmlsdGVycyxcbiAgICBwYWdlOiB7IG51bWJlcjogbnVtYmVyLCBzaXplOiBudW1iZXIgfSxcbiAgICBndWVzdHM6IG51bWJlciA9IG51bGwsXG4gICAgcmFuZG9tOiBib29sZWFuID0gZmFsc2VcbiAgKTogT2JzZXJ2YWJsZTxSZWNpcGVbXT4ge1xuICAgIGxldCByZWNpcGVzOiBSZWNpcGVbXTtcbiAgICBjb25zdCBmID0geyAuLi50aGlzLmJ1aWxkUmVtb3RlRmlsdGVycyhmaWx0ZXJzKSB9O1xuICAgIGlmIChyYW5kb20pIHsgT2JqZWN0LmFzc2lnbihmLCB7IHJhbmRvbTogdGhpcy5yYW5kb21TZWVkIH0pOyB9XG5cbiAgICByZXR1cm4gdGhpcy5hbGwoeyBwYWdlLCByZW1vdGVmaWx0ZXI6IGYsIGluY2x1ZGU6IHRoaXMuaW5jbHVzaW9ucyB9KS5waXBlKFxuICAgICAgc2tpcFdoaWxlKHJlc3VsdCA9PiByZXN1bHQuaXNfbG9hZGluZyksXG4gICAgICBzd2l0Y2hNYXAoKHJlc3VsdDogRG9jdW1lbnRDb2xsZWN0aW9uPFJlY2lwZT4pID0+ICB7XG4gICAgICAgIHJlY2lwZXMgPSByZXN1bHQuZGF0YTtcbiAgICAgICAgaWYgKGd1ZXN0cyAmJiBndWVzdHMgPiAwKSB7IHJlY2lwZXMuZm9yRWFjaChyID0+IHIubW9kaWZpZWRHdWVzdHMgPSBndWVzdHMpOyB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlY2lwZUxpa2VzU2VydmljZS5hZGRMaWtlc1RvUmVjaXBlcyhyZWNpcGVzKTtcbiAgICAgIH0pLFxuICAgICAgbWFwKCgpID0+IHJlY2lwZXMpXG4gICAgKTtcbiAgfVxuXG4gIC8vIEZldGNoZXMgcmVjaXBlcyBjb3JyZXNwb25kaW5nIHRvIGZpbHRlcnMsIGFuZCByZXR1cm4gdG90YWwgcmVjaXBlcyBjb3VudFxuICBmaWx0ZXJDb3VudChmaWx0ZXJzOiBSZWNpcGVGaWx0ZXJzKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICBjb25zdCBmID0geyAuLi50aGlzLmJ1aWxkUmVtb3RlRmlsdGVycyhmaWx0ZXJzKSB9O1xuXG4gICAgcmV0dXJuIHRoaXMuYWxsKHsgcmVtb3RlZmlsdGVyOiBmLCBwYWdlOiB7IG51bWJlcjogMSwgc2l6ZTogMSB9IH0pLnBpcGUoXG4gICAgICBza2lwV2hpbGUocmVzdWx0ID0+IHJlc3VsdC5pc19sb2FkaW5nKSxcbiAgICAgIG1hcCgocmVzdWx0OiBEb2N1bWVudENvbGxlY3Rpb248UmVjaXBlPikgPT4gIHtcbiAgICAgICAgLy8gQXBwYXJlbnRseSB0b3RhbF9yZXNvdXJjZSA9IDEgZXZlbiBpZiBubyByZXN1bHQgd2FzIGZvdW5kIHNvIHdlIGhhdmUgdG8gY2hlY2tcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhLmxlbmd0aCA/IHJlc3VsdD8ubWV0YT8udG90YWxfcmVzb3VyY2VzIDogMDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRSZW1vdGVGaWx0ZXJzKGZpbHRlcnM6IFJlY2lwZUZpbHRlcnMpOiB7XG4gICAgc2VhcmNoPzogc3RyaW5nO1xuICAgICd0b3RhbC10aW1lJz86IHN0cmluZztcbiAgICBjb21wdXRlZF9jb3N0Pzogc3RyaW5nO1xuICAgIGRpZmZpY3VsdHk/OiBzdHJpbmc7XG4gIH0ge1xuICAgIGNvbnN0IGRpZmZpY3VsdHkgPSB0aGlzLmJ1aWxkUmVtb3RlRmlsdGVyKGZpbHRlcnMuZGlmZmljdWx0eSwgJy0nKTtcbiAgICBjb25zdCBjb3N0ID0gdGhpcy5idWlsZFJlbW90ZUZpbHRlcihmaWx0ZXJzLmNvc3QsICctJyk/LnNwbGl0KCctJyk7XG4gICAgY29uc3QgdG90YWxUaW1lID0gdGhpcy5idWlsZFJlbW90ZUZpbHRlcihmaWx0ZXJzLnRpbWUsICcsJyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uKGRpZmZpY3VsdHk/Lmxlbmd0aCA+IDApID8geyBkaWZmaWN1bHR5OiBkaWZmaWN1bHR5ICsgJyxlcScgfSA6IHt9LCAvLyBleDogZmlsdGVyW2RpZmZpY3VsdHldPTEtMi0zLGVxID0+IGFsbCBjaGVja2VkXG4gICAgICAuLi4oY29zdD8ubGVuZ3RoID09PSAyKSA/IHsgY29tcHV0ZWRfY29zdDogY29zdFswXSArICcsZ3QsJyArIGNvc3RbMV0gKyAnLGx0JyB9IDoge30sIC8vIGV4OiBmaWx0ZXJbY29zdF09NSxndCwxMCxsdCA9PiA1IDwgY29zdCA8IDEwXG4gICAgICAuLi4odG90YWxUaW1lPy5sZW5ndGggPiAwKSA/IHsgJ3RvdGFsLXRpbWUnOiB0b3RhbFRpbWUgfSA6IHt9LFxuICAgICAgLi4uKGZpbHRlcnMuYWRkaXRpb25hbEZpbHRlcnM/LmZpbHRlcnMpID8gZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycy5maWx0ZXJzIDoge30sXG4gICAgICAuLi4oZmlsdGVycy5zZWFyY2gpID8ge3NlYXJjaDogZmlsdGVycy5zZWFyY2ggfSA6IHt9XG4gICAgfTtcbiAgfVxuXG4gIC8vIFJlYWRzIHRoZSB2YWx1ZXMgb2YgYSBmaWVsZCBhbmQgY29udmVydHMgaXQgdG8gdGhlIHN0cmluZyB0byBwYXNzIGluIHRoZSByZW1vdGVGaWx0ZXJzXG4gIC8vIGV4OiBidWlsZFJlbW90ZUZpbHRlcih7XG4gIC8vICAge25hbWU6ICcxJywgdmFsdWU6IHRydWUsIHRleHQ6ICdGYWNpbGUnfSxcbiAgLy8gICB7bmFtZTogJzInLCB2YWx1ZTogZmFsc2UsIHRleHQ6ICdNb3llbid9LFxuICAvLyAgIHtuYW1lOiAnMycsIHZhbHVlOiB0cnVlLCB0ZXh0OiAnRGlmZmljaWxlJ31cbiAgLy8gfSwgJy0nKSAgPT0+ICcxLTMnXG4gIHByaXZhdGUgYnVpbGRSZW1vdGVGaWx0ZXIoZmlsdGVyOiBSZWNpcGVGaWx0ZXJbXSwgc2VwYXJhdG9yOiBzdHJpbmcpIHtcbiAgICBpZiAoIWZpbHRlcikgeyByZXR1cm47IH1cblxuICAgIGxldCByZXN1bHQgPSAnJztcbiAgICBmb3IgKGNvbnN0IGYgb2YgZmlsdGVyKSB7XG4gICAgICBpZiAoZi52YWx1ZSkge1xuICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA+IDApIHsgcmVzdWx0ICs9IHNlcGFyYXRvcjsgfVxuICAgICAgICByZXN1bHQgKz0gZi5uYW1lO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gRmV0Y2ggb25lIHJhbmRvbSByZWNpcGVcbiAgZ2V0UmFuZG9tKCk6IE9ic2VydmFibGU8UmVjaXBlW10+IHtcbiAgICB0aGlzLnJhbmRvbVJlY2lwZUNvdW50Kys7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyKFxuICAgICAgeyByZXZpZXdlZDogdHJ1ZSwgZXhjbHVkZV9ub19waWN0dXJlOiB0cnVlIH0gYXMgUmVjaXBlRmlsdGVycyxcbiAgICAgIHsgbnVtYmVyOiB0aGlzLnJhbmRvbVJlY2lwZUNvdW50LCBzaXplOiAxIH0sXG4gICAgICBudWxsLFxuICAgICAgdHJ1ZVxuICAgICk7XG4gIH1cblxuICAvLyBEZWJvdW5jZSB0byBsZXQgZW5vdWdoIHRpbWUgZm9yIHRoZSBwb3MgdG8gYmUgZGVmaW5lZFxuICBnZXRTdWdnZXN0aW9uKFxuICAgIHNoZWxmX2luZ3JlZGllbnRzX2lkczogc3RyaW5nW10sXG4gICAgY3VycmVudF9pbmdyZWRpZW50c19pZHM6IHN0cmluZ1tdLFxuICAgIGJhc2tldF9pbmdyZWRpZW50c19pZHM6IHN0cmluZ1tdLFxuICAgIGdyb3VwX2lkOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxSZWNpcGVbXT4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLnN1cHBsaWVyc1NlcnZpY2Uuc3VwcGxpZXIkLCB0aGlzLnBvc1NlcnZpY2UucG9zJF0pLnBpcGUoXG4gICAgICBza2lwV2hpbGUocmVzdWx0cyA9PiAhcmVzdWx0c1swXSksXG4gICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcbiAgICAgIHN3aXRjaE1hcChyZXN1bHRzID0+IHtcbiAgICAgICAgY29uc3QgYm9keSA9IHsgc2hlbGZfaW5ncmVkaWVudHNfaWRzLCBjdXJyZW50X2luZ3JlZGllbnRzX2lkcywgYmFza2V0X2luZ3JlZGllbnRzX2lkcywgZ3JvdXBfaWQgfTtcbiAgICAgICAgbGV0IHN1cHBsaWVyRmlsdGVyID0gYHN1cHBsaWVyX2lkPSR7cmVzdWx0c1swXS5pZH1gO1xuICAgICAgICBpZiAocmVzdWx0c1sxXSkge1xuICAgICAgICAgIHN1cHBsaWVyRmlsdGVyID0gYHN1cHBsaWVyX2lkPSR7cmVzdWx0c1swXS5pZH0mcG9zX2lkPSR7cmVzdWx0c1sxXS5pZH1gO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVybCA9IE1JQU1fQVBJX0hPU1QgKyBgcmVjaXBlcy9zdWdnZXN0aW9ucz8ke3N1cHBsaWVyRmlsdGVyfSZpbmNsdWRlPWluZ3JlZGllbnRzLHJlY2lwZS1zdGVwcyxzcG9uc29ycyxyZWNpcGUtdHlwZSx0YWdzYDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHVybCwgYm9keSk7XG4gICAgICB9KSxcbiAgICAgIG1hcCgocmV0dXJuZWRSZWNpcGVzOiBEb2N1bWVudENvbGxlY3Rpb248UmVjaXBlPikgPT4ge1xuICAgICAgICBjb25zdCByZWNpcGVzID0gdGhpcy5uZXdDb2xsZWN0aW9uKCk7XG4gICAgICAgIHJlY2lwZXMuZmlsbChyZXR1cm5lZFJlY2lwZXMpO1xuICAgICAgICByZXR1cm4gcmVjaXBlcy5kYXRhO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0UHJpY2luZyhyZWNpcGVJZCwgcG9zSWQsIHNlcnZlcyA9IG51bGwpOiBPYnNlcnZhYmxlPFJlY2lwZVByaWNpbmc+IHtcbiAgICBpZiAoIXJlY2lwZUlkKSB7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuXG4gICAgbGV0IHVybCA9IE1JQU1fQVBJX0hPU1QgKyBgcmVjaXBlcy8ke3JlY2lwZUlkfS9wcmljaW5nP3BvaW50X29mX3NhbGVfaWQ9JHtwb3NJZH1gO1xuICAgIGlmIChzZXJ2ZXMpIHtcbiAgICAgIHVybCArPSBgJnNlcnZlcz0ke3NlcnZlc31gO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+IG5ldyBSZWNpcGVQcmljaW5nKHJlc3VsdCkpXG4gICAgKTtcbiAgfVxuXG4gIGNyZWF0ZUZyb21Vcmwoc291cmNlOiBzdHJpbmcsIGV4dF9saW5rOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFJlY2lwZT4ge1xuICAgIGlmICghc291cmNlIHx8ICFleHRfbGluaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBzb3VyY2Ugb3IgcmVjaXBlIGxpbmsgcHJvdmlkZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7ZW52aXJvbm1lbnQubWlhbUFQSX0vYXBpL3YxL3JlY2lwZXMvZnJvbV91cmxgLCB7IHNvdXJjZSwgZXh0X2xpbmsgfSkucGlwZShcbiAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHJlc3VsdC5kYXRhIGFzIFJlY2lwZSlcbiAgICApO1xuICB9XG5cbiAgLy8gT3BlbiBtb2RhbCBzaG93aW5nIHJlY2lwZSBkZXRhaWxzXG4gIGRpc3BsYXkocmVjaXBlSWQ6IHN0cmluZywgeyBwcmV2aWV3QWxsb3dlZCA9IHRydWUsIGd1ZXN0cyA9IG51bGwsIHByZXZpZXdNb2RlID0gZmFsc2V9KSB7XG4gICAgaWYgKCFyZWNpcGVJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZ2V0KHJlY2lwZUlkLCB7IGluY2x1ZGU6IFsnaW5ncmVkaWVudHMnLCAncmVjaXBlLXN0ZXBzJywgJ3JlY2lwZS10eXBlJywgJ3Nwb25zb3JzJywgJ3RhZ3MnXSB9KVxuICAgICAgLnBpcGUoc2tpcFdoaWxlKHJlY2lwZSA9PiByZWNpcGUuaXNfbG9hZGluZykpXG4gICAgICAuc3Vic2NyaWJlKHJlY2lwZSA9PiB7XG4gICAgICAgIHRoaXMuZGlzcGxheU9iamVjdChyZWNpcGUsIHtwcmV2aWV3QWxsb3dlZCwgZ3Vlc3RzLCBwcmV2aWV3TW9kZSB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZGlzcGxheU9iamVjdChyZWNpcGU6IFJlY2lwZSwgeyBwcmV2aWV3QWxsb3dlZCA9IHRydWUsIGd1ZXN0cyA9IG51bGwsIHByZXZpZXdNb2RlID0gZmFsc2UsIHdhc0FkZGVkID0gZmFsc2V9KXtcbiAgICBpZiAoIXJlY2lwZSl7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmVjaXBlLm1vZGlmaWVkR3Vlc3RzID0gZ3Vlc3RzIHx8ICtyZWNpcGUuZ3Vlc3RzO1xuICAgIHRoaXMuZGlzcGxheWVkUmVjaXBlJC5uZXh0KHsgcHJldmlld0FsbG93ZWQgLCByZWNpcGUsIHByZXZpZXdNb2RlLCB3YXNBZGRlZCB9KTtcbiAgICBpZiAoIXByZXZpZXdNb2RlKSB7XG4gICAgICB0aGlzLnJlY2lwZUV2ZW50c1NlcnZpY2Uuc2VuZEV2ZW50KHJlY2lwZSwgdGhpcy5yZWNpcGVFdmVudHNTZXJ2aWNlLkFDVElPTl9ESVNQTEFZRUQpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUhlbHBlcigpIHtcbiAgICB0aGlzLmhpZGUoKTtcbiAgICB0aGlzLmRpc3BsYXlIZWxwZXIkLm5leHQoIXRoaXMuZGlzcGxheUhlbHBlciQudmFsdWUpO1xuICB9XG5cbiAgaGlkZSgpIHtcbiAgICB0aGlzLmRpc3BsYXllZFJlY2lwZSQubmV4dChudWxsKTtcbiAgICB0aGlzLmhpZGRlbi5lbWl0KHRydWUpO1xuICB9XG5cbiAgcmVtb3ZlVGFnRnJvbVJlY2lwZShyZWNpcGU6IFJlY2lwZSwgdGFnOiBUYWcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKE1JQU1fQVBJX0hPU1QgKyBgcmVjaXBlcy8ke3JlY2lwZS5pZH0vdGFncy8ke3RhZy5pZH1gKTtcbiAgfVxuXG4gIGFkZFRhZ1RvUmVjaXBlKHJlY2lwZTogUmVjaXBlLCB0YWc6IFRhZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KE1JQU1fQVBJX0hPU1QgKyBgcmVjaXBlcy8ke3JlY2lwZS5pZH0vdGFncy8ke3RhZy5pZH1gLCB7fSk7XG4gIH1cblxuICAvLyBERVBSRUNBVEVEIC8gdXNlIFRUTCBpbnN0ZWFkXG4gIHByaXZhdGUgZ2V0T3JGZXRjaChyZWNpcGVJZCk6IE9ic2VydmFibGU8UmVjaXBlPiB7XG4gICAgY29uc3QgcmVjaXBlID0gdGhpcy5yZWNpcGVzLmZpbmQociA9PiByLmlkID09PSByZWNpcGVJZCk7XG4gICAgaWYgKHJlY2lwZSkge1xuICAgICAgcmV0dXJuIG9mKHJlY2lwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmdldChyZWNpcGVJZCwgeyBpbmNsdWRlOiB0aGlzLmluY2x1c2lvbnMgfSkucGlwZShcbiAgICAgICAgc2tpcFdoaWxlKHIgPT4gci5pc19sb2FkaW5nKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZShleHRJZDogc3RyaW5nLCByZWNpcGU6IE1pYW1SZWNpcGUpIHtcbiAgICBjb25zdCByID0gdGhpcy5uZXcoKTtcbiAgICAvLyBDb3B5IHJlY2lwZSBpbnRvIGF0dHJpYnV0ZXNcbiAgICBPYmplY3QuYXNzaWduKHIuYXR0cmlidXRlcywgcmVjaXBlKTtcbiAgICAvLyBTZXQgcHJvdmlkZXIgJiBzdGF0dXMgKGNhY2hlZCBmcm9tIGluaXRpYWxpemVkIHZhciBNSUFNX1NUQVRVU19JRCAmIE1JQU1fUFJPVklERVJfSUQpXG4gICAgci5hZGRSZWxhdGlvbnNoaXAodGhpcy5wcm92aWRlclNlcnZpY2UuZ2V0Q2FjaGVkKCksICdyZWNpcGUtcHJvdmlkZXInKTtcbiAgICByLmFkZFJlbGF0aW9uc2hpcCh0aGlzLnN0YXR1c1NlcnZpY2UuZ2V0Q2FjaGVkKCksICdyZWNpcGUtc3RhdHVzJyk7XG4gICAgLy8gVE9ETyA6IGhhcmQgY29kZWQgKHBsYXQgcHJpbmNpcGFsIGFzIHR5cGUpXG4gICAgci5hZGRSZWxhdGlvbnNoaXAodGhpcy50eXBlU2VydmljZS5nZXRUeXBlQnlOYW1lKCdwbGF0IHByaW5jaXBhbCcpLCAncmVjaXBlLXR5cGUnKTtcbiAgICAvLyBPdmVycmlkZSBzcGVjaWZpYyBtaWFtIHJlc2VydmVkIGF0dHJpYnV0ZXNcbiAgICByLmF0dHJpYnV0ZXMuc291cmNlID0gbnVsbDtcbiAgICByLmF0dHJpYnV0ZXMuZGVzY3JpcHRpb24gPSBudWxsO1xuICAgIHIuYXR0cmlidXRlc1snZXh0LWlkJ10gPSBleHRJZDtcbiAgICByZXR1cm4gci5zYXZlKCkucGlwZShcbiAgICAgIHNraXBXaGlsZSgocmVzdWx0OiBhbnkpID0+IHJlc3VsdC5pc19sb2FkaW5nKSxcbiAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHJlc3VsdC5kYXRhKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUV4dElkKHRpdGxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByb3ZpZGVyID0gdGhpcy5wcm92aWRlclNlcnZpY2UuZ2V0Q2FjaGVkKCk7XG4gICAgcmV0dXJuIGAke3Byb3ZpZGVyLmF0dHJpYnV0ZXMubmFtZS5zbGljZSgwLCAzKS50b1VwcGVyQ2FzZSgpfS0ke3RpdGxlLnJlcGxhY2UoL1xccysvZ20sICctJykudG9Mb3dlckNhc2UoKX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZWNpcGUocHJvdmlkZXJJZDogc3RyaW5nLCBleHRJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYWxsKHtcbiAgICAgIGJlZm9yZXBhdGg6IGByZWNpcGUtcHJvdmlkZXJzLyR7cHJvdmlkZXJJZH1gLFxuICAgICAgcmVtb3RlZmlsdGVyOiB7XG4gICAgICAgICdleHQtaWQnOiBleHRJZCxcbiAgICAgICAgYWN0aXZlOiAndHJ1ZSxmYWxzZSdcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBoZWxwIHVzIHRvIGtlZXAgYSB0cmFjayBvZiByYW5kb21cbiAgICogYW5kIGF2b2lkIHRvIHNob3cgc2FtZSByZWNpcGUgbXV0aXBsZSB0aW1lc1xuICAgKi9cbiAgcHJpdmF0ZSBpbnRSYW5kb21TZWVkKCk6IHZvaWQge1xuICAgIHRoaXMucmFuZG9tU2VlZCA9IERhdGUubm93KCk7XG4gIH1cblxufVxuIl19
|