ng-miam 3.7.2 → 3.9.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.
Files changed (70) hide show
  1. package/bundles/ng-miam.umd.js +2183 -1668
  2. package/bundles/ng-miam.umd.js.map +1 -1
  3. package/bundles/ng-miam.umd.min.js +2 -2
  4. package/bundles/ng-miam.umd.min.js.map +1 -1
  5. package/esm2015/lib/_components/addon-link/addon-link.component.js +14 -11
  6. package/esm2015/lib/_components/counter-input/counter-input.component.js +1 -8
  7. package/esm2015/lib/_components/icon/icon.component.js +605 -406
  8. package/esm2015/lib/_components/like-button/like-button.component.js +1 -1
  9. package/esm2015/lib/_components/recipe-filters/recipe-filters.component.js +7 -6
  10. package/esm2015/lib/_components/recipe-pricing/recipe-pricing.component.js +9 -4
  11. package/esm2015/lib/_services/baskets.service.js +7 -3
  12. package/esm2015/lib/_services/context.service.js +14 -1
  13. package/esm2015/lib/_services/groceries-lists.service.js +6 -3
  14. package/esm2015/lib/_services/recipes.service.js +7 -3
  15. package/esm2015/lib/_types/icon.enum.js +5 -2
  16. package/esm2015/lib/_web-components/basket-preview/basket-preview-line/basket-preview-line.component.js +3 -3
  17. package/esm2015/lib/_web-components/catalog-recipe-card/catalog-recipe-card.component.js +3 -3
  18. package/esm2015/lib/_web-components/drawer/drawer.component.js +9 -8
  19. package/esm2015/lib/_web-components/index.js +3 -4
  20. package/esm2015/lib/_web-components/list-scan/basket-preview/basket-preview.component.js +57 -52
  21. package/esm2015/lib/_web-components/list-scan/files-inputs/files-inputs.component.js +142 -0
  22. package/esm2015/lib/_web-components/list-scan/ingredients-list/ingredients-list.component.js +47 -53
  23. package/esm2015/lib/_web-components/list-scan/list-scan.component.js +56 -27
  24. package/esm2015/lib/_web-components/list-scan/list-scan.module.js +13 -6
  25. package/esm2015/lib/_web-components/modal/index.js +3 -0
  26. package/esm2015/lib/_web-components/modal/modal.component.js +18 -15
  27. package/esm2015/lib/_web-components/modal/modal.module.js +43 -0
  28. package/esm2015/lib/_web-components/order-button/order-button.component.js +1 -1
  29. package/esm2015/lib/_web-components/recipe-card/recipe-card.component.js +5 -5
  30. package/esm2015/lib/_web-components/recipe-details/index.js +7 -0
  31. package/esm2015/lib/_web-components/{recipe-addon → recipe-details/recipe-addon}/recipe-addon.component.js +5 -5
  32. package/esm2015/lib/_web-components/recipe-details/recipe-details-infos/recipe-details-infos.component.js +248 -0
  33. package/esm2015/lib/_web-components/recipe-details/recipe-details-ingredients/recipe-details-ingredients.component.js +108 -0
  34. package/esm2015/lib/_web-components/recipe-details/recipe-details-steps/recipe-details-steps.component.js +101 -0
  35. package/esm2015/lib/_web-components/recipe-details/recipe-details.component.js +179 -619
  36. package/esm2015/lib/_web-components/recipe-details/recipe-details.module.js +86 -0
  37. package/esm2015/lib/_web-components/recipe-form/recipe-form.component.js +2 -2
  38. package/esm2015/lib/_web-components/recipe-helper/recipe-helper.component.js +7 -6
  39. package/esm2015/lib/_web-components/recipe-modal/recipe-modal.component.js +22 -38
  40. package/esm2015/lib/_web-components/web-components.module.js +60 -65
  41. package/fesm2015/ng-miam.js +1892 -1420
  42. package/fesm2015/ng-miam.js.map +1 -1
  43. package/lib/_components/counter-input/counter-input.component.d.ts +0 -1
  44. package/lib/_components/recipe-filters/recipe-filters.component.d.ts +3 -2
  45. package/lib/_components/recipe-pricing/recipe-pricing.component.d.ts +2 -1
  46. package/lib/_services/baskets.service.d.ts +1 -0
  47. package/lib/_services/context.service.d.ts +6 -0
  48. package/lib/_services/groceries-lists.service.d.ts +1 -1
  49. package/lib/_types/icon.enum.d.ts +5 -2
  50. package/lib/_web-components/drawer/drawer.component.d.ts +3 -2
  51. package/lib/_web-components/index.d.ts +2 -3
  52. package/lib/_web-components/list-scan/basket-preview/basket-preview.component.d.ts +2 -2
  53. package/lib/_web-components/list-scan/files-inputs/files-inputs.component.d.ts +21 -0
  54. package/lib/_web-components/list-scan/ingredients-list/ingredients-list.component.d.ts +1 -2
  55. package/lib/_web-components/list-scan/list-scan.component.d.ts +5 -2
  56. package/lib/_web-components/list-scan/list-scan.module.d.ts +8 -6
  57. package/lib/_web-components/modal/index.d.ts +2 -0
  58. package/lib/_web-components/modal/modal.component.d.ts +3 -1
  59. package/lib/_web-components/modal/modal.module.d.ts +11 -0
  60. package/lib/_web-components/recipe-details/index.d.ts +6 -0
  61. package/lib/_web-components/{recipe-addon → recipe-details/recipe-addon}/recipe-addon.component.d.ts +2 -2
  62. package/lib/_web-components/recipe-details/recipe-details-infos/recipe-details-infos.component.d.ts +24 -0
  63. package/lib/_web-components/recipe-details/recipe-details-ingredients/recipe-details-ingredients.component.d.ts +18 -0
  64. package/lib/_web-components/recipe-details/recipe-details-steps/recipe-details-steps.component.d.ts +16 -0
  65. package/lib/_web-components/recipe-details/recipe-details.component.d.ts +16 -23
  66. package/lib/_web-components/recipe-details/recipe-details.module.d.ts +18 -0
  67. package/lib/_web-components/recipe-helper/recipe-helper.component.d.ts +3 -2
  68. package/lib/_web-components/recipe-modal/recipe-modal.component.d.ts +0 -3
  69. package/lib/_web-components/web-components.module.d.ts +38 -39
  70. package/package.json +1 -1
@@ -131,9 +131,12 @@ export class GroceriesListsService extends Service {
131
131
  return this.saveList(list);
132
132
  }));
133
133
  }
134
- addEntriesFromPicture(file, include = []) {
134
+ addEntriesFromPicture(file, include = [], disableIngredientsMatching = false) {
135
135
  return this.takeFirstList().pipe(switchMap(list => {
136
- const url = [e.miamAPI, 'api/v1/groceries-lists', list.id, 'add_entries_from_picture'].join('/');
136
+ let url = [e.miamAPI, 'api/v1/groceries-lists', list.id, 'add_entries_from_picture'].join('/');
137
+ if (disableIngredientsMatching) {
138
+ url += '?disable_matching=true';
139
+ }
137
140
  const formData = new FormData();
138
141
  formData.append('picture', file);
139
142
  formData.append('include', include.join(','));
@@ -187,4 +190,4 @@ GroceriesListsService.ɵprov = i0.ɵɵdefineInjectable({ token: GroceriesListsSe
187
190
  type: Inject,
188
191
  args: [MIAM_BASKET_PATH]
189
192
  }] }, { type: i1.HttpClient }, { type: i2.AnalyticsService }]; }, null); })();
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvY2VyaWVzLWxpc3RzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL2J1aWxkcy9taWFtL25nLW1pYW0tc2RrL3Byb2plY3RzL25nLW1pYW0vc3JjLyIsInNvdXJjZXMiOlsibGliL19zZXJ2aWNlcy9ncm9jZXJpZXMtbGlzdHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFvQixPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUFjLGVBQWUsRUFBZ0IsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLElBQUksQ0FBQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBRWxELFdBQVc7QUFJWCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsT0FBc0I7SUFlL0QsWUFDb0MsYUFBcUIsRUFDL0MsSUFBZ0IsRUFDaEIsZ0JBQWtDO1FBRTFDLEtBQUssRUFBRSxDQUFDO1FBSjBCLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBQy9DLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQWhCNUMsYUFB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bnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHcm9jZXJpZXNMaXN0IH0gZnJvbSAnLi4vX21vZGVscy9ncm9jZXJpZXMtbGlzdCc7XG5pbXBvcnQgeyBEb2N1bWVudFJlc291cmNlLCBTZXJ2aWNlIH0gZnJvbSAnbmd4LWpzb25hcGknO1xuaW1wb3J0IHsgbWFwLCBza2lwV2hpbGUsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTUlBTV9CQVNLRVRfUEFUSCB9IGZyb20gJy4uL3Byb3ZpZGVycyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuL2FuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgZW52aXJvbm1lbnQgYXMgZSB9IGZyb20gJy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG4vLyBAZHluYW1pY1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgR3JvY2VyaWVzTGlzdHNTZXJ2aWNlIGV4dGVuZHMgU2VydmljZTxHcm9jZXJpZXNMaXN0PiB7XG5cbiAgcmVzb3VyY2UgPSBHcm9jZXJpZXNMaXN0O1xuICB0eXBlID0gJ2dyb2Nlcmllcy1saXN0cyc7XG4gIC8vIFVudXNlZCBpbiBzZGsgYXQgdGhlIG1vbWVudCBidXQgYW55IGNsaWVudCBhcHAgY2FuIHN1YnNjcmliZSBvbiBpdCB0byBrbm93IHdoZW4gYSByZWNpcGUgaGFzIGJlZW4gYWRkZWRcbiAgcmVjaXBlV2FzQWRkZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IGlkOiBzdHJpbmcsIGd1ZXN0cz86IHN0cmluZyB9W10+KFtdKTtcbiAgLy8gVW51c2VkIGluIHNkayBhdCB0aGUgbW9tZW50IGJ1dCBhbnkgY2xpZW50IGFwcCBjYW4gc3Vic2NyaWJlIG9uIGl0IHRvIGtub3cgd2hlbiBhIHJlY2lwZSBoYXMgYmVlbiBhZGRlZFxuICByZWNpcGVXYXNEZWxldGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBpZDogc3RyaW5nLCBndWVzdHM/OiBzdHJpbmcgfVtdPihbXSk7XG4gIC8vIFNpbmdsZXRvbiBpbnN0YW5jZSBvZiBHcm9jZXJpZXNMaXN0XG4gIHByaXZhdGUgX2xpc3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxHcm9jZXJpZXNMaXN0PihudWxsKTtcbiAgcHJpdmF0ZSBzYXZlT3BlcmF0aW9uVHlwZSA9ICcnO1xuICBwcml2YXRlIGN1cnJlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgLy8gT2JzZXJ2ZSB0aGUgZmV0Y2hpbmcgb2YgdGhlIHJlY2lwZSBzbyBjYWxscyB0byBsaXN0JCBhcmUgZGVsYXllZCBpbnN0ZWFkIG9mIGNhbGxpbmcgcmVmcmVzaEN1cnJlbnRMaXN0IGRvemVucyBvZiB0aW1lc1xuICBwcml2YXRlIGxpc3RJc0ZldGNoaW5nID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChNSUFNX0JBU0tFVF9QQVRIKSBwcml2YXRlIG1pYW1CYXNrZXRVUkw6IHN0cmluZyxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5yZWdpc3RlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdlIHdhbnQgbGlzdCQgdG8gYmUgYSBzaW5nbGV0b24gdGhhdCBhbHdheXMgcmV0dXJucyB0aGUgc2FtZSBsaXN0LCBzbyBpdCBpcyBmZXRjaGVkIG9ubHkgd2hlbiBuZWNlc3NhcnkuXG4gICAqIEF0IGFueSBwb2ludCBpbiB0aW1lIHRoZSBsaXN0IGNhbiBiZSBmZXRjaGVkIHZpYSB0aGUgcmVmcmVzaEN1cnJlbnRMaXN0IGZ1bmN0aW9uIChpZiB3ZSB3YW50IHRvIGZldGNoIGl0IG9uIHN0YXJ0dXAgdG8gc2F2ZSB0aW1lIGxhdGVyKVxuICAgKiBCdXQgaWYgcmVmcmVzaEN1cnJlbnRMaXN0IGlzIG5vdCBjYWxsZWQsIHRoZSBsaXN0IHdpbGwgb25seSBiZSBmZXRjaGVkIHRoZSAxc3QgdGltZSBpdCBpcyBuZWVkZWRcbiAgICovXG4gIGdldCBsaXN0JCgpOiBCZWhhdmlvclN1YmplY3Q8R3JvY2VyaWVzTGlzdD4ge1xuICAgIGlmICh0aGlzLl9saXN0JC52YWx1ZSB8fCB0aGlzLmxpc3RJc0ZldGNoaW5nKSB7IHJldHVybiB0aGlzLl9saXN0JDsgfVxuXG4gICAgcmV0dXJuIHRoaXMucmVmcmVzaEN1cnJlbnRMaXN0KCk7XG4gIH1cblxuICB0YWtlRmlyc3RMaXN0KCk6IE9ic2VydmFibGU8R3JvY2VyaWVzTGlzdD4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QkLnBpcGUoXG4gICAgICAgc2tpcFdoaWxlKGwgPT4gIWwpLFxuICAgICAgIHRha2UoMSlcbiAgICApO1xuICB9XG5cblxuICAvLyBDaGVjayBpZiByZWNpcGUgd2l0aCBpZCA9IHJlY2lwZUlkIGlzIGluIHRoZSBHcm9jZXJpZXNMaXN0XG4gIHJlY2lwZUlzSW5MaXN0KHJlY2lwZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fbGlzdCQucGlwZShcbiAgICAgIHNraXBXaGlsZShsID0+ICFsKSxcbiAgICAgIHRha2UoMSksXG4gICAgICBtYXAobGlzdCA9PiAobGlzdC5oYXNSZWNpcGUocmVjaXBlSWQpKSlcbiAgICApO1xuICB9XG5cbiAgZ3Vlc3RzRm9yUmVjaXBlKHJlY2lwZSkge1xuICAgIHJldHVybiB0aGlzLl9saXN0JC52YWx1ZT8uZ3Vlc3RzRm9yUmVjaXBlKHJlY2lwZSk7XG4gIH1cblxuICByZWZyZXNoQ3VycmVudExpc3QoKTogQmVoYXZpb3JTdWJqZWN0PEdyb2Nlcmllc0xpc3Q+IHtcbiAgICBjb25zb2xlLmxvZygnW01pYW1dIHJlZnJlc2hpbmcgZ2wnKTtcbiAgICB0aGlzLmxpc3RJc0ZldGNoaW5nID0gdHJ1ZTtcbiAgICBjb25zdCBjYWNoZWRMaXN0SWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnX21pYW0vbGlzdElkJyk7XG4gICAgLy8gYWRkaW5nIHRoaXMgdXVpZCB3aWxsIGZvcmNlIHJlcXVlc3QgdG8gYmUgc2VudCBldmVuIGlmIG9uZSBpcyBzdGlsbCBpbiBwcm9jZXNzXG4gICAgLy8gdGhpbmsgYWJvdXQgbWFraW5nIGEgcXVldWUgdG8gcHJvY2VzcyByZXF1ZXN0IGluIG9yZGVyXG4gICAgY29uc3QgYmFzZVJvdXRlID0gJ2N1cnJlbnQ/dW5pcV90b2tlbj0nICsgdXVpZHY0KCk7XG4gICAgY29uc3QgZW5kcG9pbnQgPSBjYWNoZWRMaXN0SWQ/LnRvU3RyaW5nKCkubWF0Y2goL15bMC05XSskLykgPyBiYXNlUm91dGUgKyAnJm1lcmdlX3dpdGg9JyArIGNhY2hlZExpc3RJZCA6IGJhc2VSb3V0ZTtcbiAgICAvLyBhbHdheSBrZWVwIG9ubHkgdGhlIGxhc3Qgc3Vic2NyaXB0aW9uLCB0aGF0IHdpbGwgbWFrZSBmb3JnZXQgdGhlIGxhc3QgY2FsbHNcbiAgICBpZiAodGhpcy5jdXJyZW50U3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmN1cnJlbnRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5jdXJyZW50U3Vic2NyaXB0aW9uID0gdGhpcy5nZXQoZW5kcG9pbnQpLnBpcGUoXG4gICAgICBza2lwV2hpbGUobCA9PiBsLmlzX2xvYWRpbmcpLFxuICAgICAgdGFwKGwgPT4gdGhpcy5hc3NpZ25MaXN0KGwpKVxuICAgICkuc3Vic2NyaWJlKCk7XG5cbiAgICByZXR1cm4gdGhpcy5fbGlzdCQ7XG4gIH1cblxuICByZXNldExpc3QoKTogT2JzZXJ2YWJsZTxHcm9jZXJpZXNMaXN0PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdyZXNldCcpLnBpcGUoXG4gICAgICBza2lwV2hpbGUobCA9PiBsLmlzX2xvYWRpbmcpLFxuICAgICAgdGFwKGwgPT4gdGhpcy5hc3NpZ25MaXN0KGwpKVxuICAgICk7XG4gIH1cblxuICBhcHBlbmRSZWNpcGVUb0xpc3QocmVjaXBlSWQ6IHN0cmluZywgZ3Vlc3RzOiBudW1iZXIsIG9yaWdpbjogc3RyaW5nLCBvcGVuQmFza2V0OiBib29sZWFuID0gZmFsc2UpOiBPYnNlcnZhYmxlPG9iamVjdD4ge1xuICAgIHJldHVybiB0aGlzLnRha2VGaXJzdExpc3QoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKGxpc3QgPT4ge1xuICAgICAgICBpZiAoIWxpc3QuaGFzUmVjaXBlKHJlY2lwZUlkKSkge1xuICAgICAgICAgIC8vIGFwcGVuZCB0byBsaXN0XG4gICAgICAgICAgbGlzdC5hdHRyaWJ1dGVzWydhcHBlbmQtcmVjaXBlcyddID0gdHJ1ZTtcbiAgICAgICAgICBjb25zdCBpbmZvID0geyBpZDogcmVjaXBlSWQgfTtcbiAgICAgICAgICBpZiAoZ3Vlc3RzKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGluZm8sIHsgZ3Vlc3RzIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsaXN0LmF0dHJpYnV0ZXNbJ3JlY2lwZXMtaW5mb3MnXSA9IFtpbmZvXTtcbiAgICAgICAgICB0aGlzLnNhdmVPcGVyYXRpb25UeXBlID0gJ0FERCc7XG4gICAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLnNlbmRFdmVudCgnYWRkLXJlY2lwZScsIG9yaWdpbik7XG4gICAgICAgIH0gZWxzZSBpZiAoZ3Vlc3RzKSB7XG4gICAgICAgICAgLy8gdXBkYXRlIGd1ZXN0cyBudW1iZXJcbiAgICAgICAgICBjb25zdCBpbmZvID0gbGlzdC5yZWNpcGVJbmZvcy5maW5kKGkgPT4gaS5pZCA9PT0gcmVjaXBlSWQpO1xuICAgICAgICAgIGlmIChpbmZvLmd1ZXN0cy50b1N0cmluZygpID09PSBndWVzdHMudG9TdHJpbmcoKSkge1xuICAgICAgICAgICAgLy8gQXZvaWQgc2F2aW5nIHRoZSBsaXN0IGlmIG5vdGhpbmcgY2hhbmdlZFxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xpc3QkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpbmZvLmd1ZXN0cyA9IGd1ZXN0cy50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNhdmVMaXN0KGxpc3QsIG9wZW5CYXNrZXQpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcmVtb3ZlUmVjaXBlRnJvbUxpc3QocmVjaXBlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8R3JvY2VyaWVzTGlzdD4ge1xuICAgIHJldHVybiB0aGlzLnRha2VGaXJzdExpc3QoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKGxpc3QgPT4ge1xuICAgICAgICBpZiAobGlzdC5hdHRyaWJ1dGVzWydyZWNpcGVzLWluZm9zJ10pIHtcbiAgICAgICAgICBsaXN0LmF0dHJpYnV0ZXNbJ3JlY2lwZXMtaW5mb3MnXSA9IGxpc3QuYXR0cmlidXRlc1sncmVjaXBlcy1pbmZvcyddLmZpbHRlcihpbmZvID0+IHtcbiAgICAgICAgICAgIHJldHVybiBpbmZvLmlkICE9PSByZWNpcGVJZDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2Uuc2VuZEV2ZW50KCdyZW1vdmUtcmVjaXBlJyk7XG4gICAgICAgICAgdGhpcy5zYXZlT3BlcmF0aW9uVHlwZSA9ICdSRU1PVkUnO1xuICAgICAgICAgIHJldHVybiB0aGlzLnNhdmVMaXN0KGxpc3QpIGFzIE9ic2VydmFibGU8R3JvY2VyaWVzTGlzdD47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2YobnVsbCkgYXMgT2JzZXJ2YWJsZTxHcm9jZXJpZXNMaXN0PjtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVJlY2lwZUd1ZXN0cyhyZWNpcGVJZDogc3RyaW5nLCBndWVzdHM6IG51bWJlcik6IE9ic2VydmFibGU8R3JvY2VyaWVzTGlzdD4gIHtcbiAgICByZXR1cm4gdGhpcy50YWtlRmlyc3RMaXN0KCkucGlwZShcbiAgICAgIHN3aXRjaE1hcChsaXN0ID0+IHtcbiAgICAgICAgaWYgKGxpc3QuYXR0cmlidXRlc1sncmVjaXBlcy1pbmZvcyddKSB7XG4gICAgICAgICAgY29uc3QgcmVjaXBlSW5mbyA9IGxpc3QuYXR0cmlidXRlc1sncmVjaXBlcy1pbmZvcyddLmZpbmQoaW5mbyA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaW5mby5pZCA9PT0gcmVjaXBlSWQ7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmVjaXBlSW5mby5ndWVzdHMgPSBndWVzdHM7XG4gICAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLnNlbmRFdmVudCgnY2hhbmdlLWd1ZXN0cycpO1xuICAgICAgICAgIHRoaXMuc2F2ZU9wZXJhdGlvblR5cGUgPSAnR1VFU1RTJztcbiAgICAgICAgICByZXR1cm4gdGhpcy5zYXZlTGlzdChsaXN0KSBhcyBPYnNlcnZhYmxlPEdyb2Nlcmllc0xpc3Q+O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2xpc3QkO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcmVtb3ZlUmVjaXBlc0Zyb21MaXN0KCk6IE9ic2VydmFibGU8R3JvY2VyaWVzTGlzdD4ge1xuICAgIHJldHVybiB0aGlzLnRha2VGaXJzdExpc3QoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKGxpc3QgPT4ge1xuICAgICAgICBsaXN0LmF0dHJpYnV0ZXNbJ3JlY2lwZXMtaW5mb3MnXSA9IFtdO1xuICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2Uuc2VuZEV2ZW50KCdyZW1vdmUtYWxsLXJlY2lwZXMnKTtcbiAgICAgICAgdGhpcy5zYXZlT3BlcmF0aW9uVHlwZSA9ICdSRU1PVkUnO1xuICAgICAgICByZXR1cm4gdGhpcy5zYXZlTGlzdChsaXN0KSBhcyBPYnNlcnZhYmxlPEdyb2Nlcmllc0xpc3Q+O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgYWRkRW50cmllc0Zyb21QaWN0dXJlKGZpbGU6IEZpbGUsIGluY2x1ZGUgPSBbXSk6IE9ic2VydmFibGU8R3JvY2VyaWVzTGlzdD4ge1xuICAgIHJldHVybiB0aGlzLnRha2VGaXJzdExpc3QoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKGxpc3QgPT4ge1xuICAgICAgICBjb25zdCB1cmwgPSBbZS5taWFtQVBJLCAnYXBpL3YxL2dyb2Nlcmllcy1saXN0cycsIGxpc3QuaWQsICdhZGRfZW50cmllc19mcm9tX3BpY3R1cmUnXS5qb2luKCcvJyk7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3BpY3R1cmUnLCBmaWxlKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdpbmNsdWRlJywgaW5jbHVkZS5qb2luKCcsJykpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoKHVybCwgZm9ybURhdGEpLnBpcGUoXG4gICAgICAgICAgbWFwKChyZXNwb25zZTogRG9jdW1lbnRSZXNvdXJjZTxHcm9jZXJpZXNMaXN0PikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbCA9IHRoaXMubmV3KCk7XG4gICAgICAgICAgICBsLmZpbGwocmVzcG9uc2UpO1xuICAgICAgICAgICAgdGhpcy5fbGlzdCQubmV4dChsKTtcbiAgICAgICAgICAgIHJldHVybiBsO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNhdmVMaXN0KGxpc3Q6IEdyb2Nlcmllc0xpc3QsIG9wZW5CYXNrZXQ6IGJvb2xlYW4gPSBmYWxzZSk6IE9ic2VydmFibGU8R3JvY2VyaWVzTGlzdD4ge1xuICAgIGRlbGV0ZShsaXN0LmF0dHJpYnV0ZXNbJ3JlY2lwZXMtaWRzJ10pO1xuICAgIHJldHVybiBsaXN0LnNhdmUoKS5waXBlKFxuICAgICAgc2tpcFdoaWxlKGwgPT4gKGwgYXMgR3JvY2VyaWVzTGlzdCkuaXNfbG9hZGluZyksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0aGlzLl9saXN0JC5uZXh0KGxpc3QpO1xuICAgICAgICBpZiAodGhpcy5zYXZlT3BlcmF0aW9uVHlwZSA9PT0gJ0FERCcpIHtcbiAgICAgICAgICB0aGlzLnJlY2lwZVdhc0FkZGVkJC5uZXh0KGxpc3QucmVjaXBlSW5mb3MpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNhdmVPcGVyYXRpb25UeXBlID09PSAnUkVNT1ZFJykge1xuICAgICAgICAgIHRoaXMucmVjaXBlV2FzRGVsZXRlZCQubmV4dChsaXN0LnJlY2lwZUluZm9zKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNhdmVPcGVyYXRpb25UeXBlID0gJyc7XG4gICAgICAgIGlmIChvcGVuQmFza2V0KSB7XG4gICAgICAgICAgd2luZG93Lm9wZW4oYCR7dGhpcy5taWFtQmFza2V0VVJMfS8ke2xpc3QuaWR9YCwgJ19ibGFuaycpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIG1hcChsID0+IChsIGFzIERvY3VtZW50UmVzb3VyY2U8R3JvY2VyaWVzTGlzdD4pLmRhdGEpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXNzaWduTGlzdChsKXtcbiAgICAvLyBXaGVuIGEgQ09SUyBlcnJvciBoYXBwZW5zIHRoZSByZXNwb25zZSBpcyBhIEdMIHdpdGggYW4gaWQgZXF1YWwgdG8gdGhlIHJlcXVlc3QgVVJMXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRvbid0IGNoYW5nZSB0aGUgR0xcbiAgICBpZiAobC5pZC50b1N0cmluZygpLm1hdGNoKC9eWzAtOV0rJC8pKSB7XG4gICAgICBpZiAobC5hdHRyaWJ1dGVzWyd1c2VyLWlkJ10pIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ19taWFtL2xpc3RJZCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ19taWFtL2xpc3RJZCcsIGwuaWQpO1xuICAgICAgfVxuICAgICAgdGhpcy5fbGlzdCQubmV4dChsKTtcbiAgICAgIHRoaXMubGlzdElzRmV0Y2hpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvY2VyaWVzLWxpc3RzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL2J1aWxkcy9taWFtL25nLW1pYW0tc2RrL3Byb2plY3RzL25nLW1pYW0vc3JjLyIsInNvdXJjZXMiOlsibGliL19zZXJ2aWNlcy9ncm9jZXJpZXMtbGlzdHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFvQixPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUFjLGVBQWUsRUFBZ0IsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLElBQUksQ0FBQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBRWxELFdBQVc7QUFJWCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsT0FBc0I7SUFlL0QsWUFDb0MsYUFBcUIsRUFDL0MsSUFBZ0IsRUFDaEIsZ0JBQWtDO1FBRTFDLEtBQUssRUFBRSxDQUFDO1FBSjBCLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBQy9DLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQWhCNUMsYUFB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QyxVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7O3NCQWlCSSxNQUFNO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3JvY2VyaWVzTGlzdCB9IGZyb20gJy4uL19tb2RlbHMvZ3JvY2VyaWVzLWxpc3QnO1xuaW1wb3J0IHsgRG9jdW1lbnRSZXNvdXJjZSwgU2VydmljZSB9IGZyb20gJ25neC1qc29uYXBpJztcbmltcG9ydCB7IG1hcCwgc2tpcFdoaWxlLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1JQU1fQkFTS0VUX1BBVEggfSBmcm9tICcuLi9wcm92aWRlcnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24sIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi9hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IGVudmlyb25tZW50IGFzIGUgfSBmcm9tICcuLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuLy8gQGR5bmFtaWNcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEdyb2Nlcmllc0xpc3RzU2VydmljZSBleHRlbmRzIFNlcnZpY2U8R3JvY2VyaWVzTGlzdD4ge1xuXG4gIHJlc291cmNlID0gR3JvY2VyaWVzTGlzdDtcbiAgdHlwZSA9ICdncm9jZXJpZXMtbGlzdHMnO1xuICAvLyBVbnVzZWQgaW4gc2RrIGF0IHRoZSBtb21lbnQgYnV0IGFueSBjbGllbnQgYXBwIGNhbiBzdWJzY3JpYmUgb24gaXQgdG8ga25vdyB3aGVuIGEgcmVjaXBlIGhhcyBiZWVuIGFkZGVkXG4gIHJlY2lwZVdhc0FkZGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBpZDogc3RyaW5nLCBndWVzdHM/OiBzdHJpbmcgfVtdPihbXSk7XG4gIC8vIFVudXNlZCBpbiBzZGsgYXQgdGhlIG1vbWVudCBidXQgYW55IGNsaWVudCBhcHAgY2FuIHN1YnNjcmliZSBvbiBpdCB0byBrbm93IHdoZW4gYSByZWNpcGUgaGFzIGJlZW4gYWRkZWRcbiAgcmVjaXBlV2FzRGVsZXRlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgaWQ6IHN0cmluZywgZ3Vlc3RzPzogc3RyaW5nIH1bXT4oW10pO1xuICAvLyBTaW5nbGV0b24gaW5zdGFuY2Ugb2YgR3JvY2VyaWVzTGlzdFxuICBwcml2YXRlIF9saXN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8R3JvY2VyaWVzTGlzdD4obnVsbCk7XG4gIHByaXZhdGUgc2F2ZU9wZXJhdGlvblR5cGUgPSAnJztcbiAgcHJpdmF0ZSBjdXJyZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIC8vIE9ic2VydmUgdGhlIGZldGNoaW5nIG9mIHRoZSByZWNpcGUgc28gY2FsbHMgdG8gbGlzdCQgYXJlIGRlbGF5ZWQgaW5zdGVhZCBvZiBjYWxsaW5nIHJlZnJlc2hDdXJyZW50TGlzdCBkb3plbnMgb2YgdGltZXNcbiAgcHJpdmF0ZSBsaXN0SXNGZXRjaGluZyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTUlBTV9CQVNLRVRfUEFUSCkgcHJpdmF0ZSBtaWFtQmFza2V0VVJMOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMucmVnaXN0ZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXZSB3YW50IGxpc3QkIHRvIGJlIGEgc2luZ2xldG9uIHRoYXQgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUgbGlzdCwgc28gaXQgaXMgZmV0Y2hlZCBvbmx5IHdoZW4gbmVjZXNzYXJ5LlxuICAgKiBBdCBhbnkgcG9pbnQgaW4gdGltZSB0aGUgbGlzdCBjYW4gYmUgZmV0Y2hlZCB2aWEgdGhlIHJlZnJlc2hDdXJyZW50TGlzdCBmdW5jdGlvbiAoaWYgd2Ugd2FudCB0byBmZXRjaCBpdCBvbiBzdGFydHVwIHRvIHNhdmUgdGltZSBsYXRlcilcbiAgICogQnV0IGlmIHJlZnJlc2hDdXJyZW50TGlzdCBpcyBub3QgY2FsbGVkLCB0aGUgbGlzdCB3aWxsIG9ubHkgYmUgZmV0Y2hlZCB0aGUgMXN0IHRpbWUgaXQgaXMgbmVlZGVkXG4gICAqL1xuICBnZXQgbGlzdCQoKTogQmVoYXZpb3JTdWJqZWN0PEdyb2Nlcmllc0xpc3Q+IHtcbiAgICBpZiAodGhpcy5fbGlzdCQudmFsdWUgfHwgdGhpcy5saXN0SXNGZXRjaGluZykgeyByZXR1cm4gdGhpcy5fbGlzdCQ7IH1cblxuICAgIHJldHVybiB0aGlzLnJlZnJlc2hDdXJyZW50TGlzdCgpO1xuICB9XG5cbiAgdGFrZUZpcnN0TGlzdCgpOiBPYnNlcnZhYmxlPEdyb2Nlcmllc0xpc3Q+IHtcbiAgICByZXR1cm4gdGhpcy5saXN0JC5waXBlKFxuICAgICAgIHNraXBXaGlsZShsID0+ICFsKSxcbiAgICAgICB0YWtlKDEpXG4gICAgKTtcbiAgfVxuXG5cbiAgLy8gQ2hlY2sgaWYgcmVjaXBlIHdpdGggaWQgPSByZWNpcGVJZCBpcyBpbiB0aGUgR3JvY2VyaWVzTGlzdFxuICByZWNpcGVJc0luTGlzdChyZWNpcGVJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2xpc3QkLnBpcGUoXG4gICAgICBza2lwV2hpbGUobCA9PiAhbCksXG4gICAgICB0YWtlKDEpLFxuICAgICAgbWFwKGxpc3QgPT4gKGxpc3QuaGFzUmVjaXBlKHJlY2lwZUlkKSkpXG4gICAgKTtcbiAgfVxuXG4gIGd1ZXN0c0ZvclJlY2lwZShyZWNpcGUpIHtcbiAgICByZXR1cm4gdGhpcy5fbGlzdCQudmFsdWU/Lmd1ZXN0c0ZvclJlY2lwZShyZWNpcGUpO1xuICB9XG5cbiAgcmVmcmVzaEN1cnJlbnRMaXN0KCk6IEJlaGF2aW9yU3ViamVjdDxHcm9jZXJpZXNMaXN0PiB7XG4gICAgY29uc29sZS5sb2coJ1tNaWFtXSByZWZyZXNoaW5nIGdsJyk7XG4gICAgdGhpcy5saXN0SXNGZXRjaGluZyA9IHRydWU7XG4gICAgY29uc3QgY2FjaGVkTGlzdElkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ19taWFtL2xpc3RJZCcpO1xuICAgIC8vIGFkZGluZyB0aGlzIHV1aWQgd2lsbCBmb3JjZSByZXF1ZXN0IHRvIGJlIHNlbnQgZXZlbiBpZiBvbmUgaXMgc3RpbGwgaW4gcHJvY2Vzc1xuICAgIC8vIHRoaW5rIGFib3V0IG1ha2luZyBhIHF1ZXVlIHRvIHByb2Nlc3MgcmVxdWVzdCBpbiBvcmRlclxuICAgIGNvbnN0IGJhc2VSb3V0ZSA9ICdjdXJyZW50P3VuaXFfdG9rZW49JyArIHV1aWR2NCgpO1xuICAgIGNvbnN0IGVuZHBvaW50ID0gY2FjaGVkTGlzdElkPy50b1N0cmluZygpLm1hdGNoKC9eWzAtOV0rJC8pID8gYmFzZVJvdXRlICsgJyZtZXJnZV93aXRoPScgKyBjYWNoZWRMaXN0SWQgOiBiYXNlUm91dGU7XG4gICAgLy8gYWx3YXkga2VlcCBvbmx5IHRoZSBsYXN0IHN1YnNjcmlwdGlvbiwgdGhhdCB3aWxsIG1ha2UgZm9yZ2V0IHRoZSBsYXN0IGNhbGxzXG4gICAgaWYgKHRoaXMuY3VycmVudFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5jdXJyZW50U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMuY3VycmVudFN1YnNjcmlwdGlvbiA9IHRoaXMuZ2V0KGVuZHBvaW50KS5waXBlKFxuICAgICAgc2tpcFdoaWxlKGwgPT4gbC5pc19sb2FkaW5nKSxcbiAgICAgIHRhcChsID0+IHRoaXMuYXNzaWduTGlzdChsKSlcbiAgICApLnN1YnNjcmliZSgpO1xuXG4gICAgcmV0dXJuIHRoaXMuX2xpc3QkO1xuICB9XG5cbiAgcmVzZXRMaXN0KCk6IE9ic2VydmFibGU8R3JvY2VyaWVzTGlzdD4ge1xuICAgIHJldHVybiB0aGlzLmdldCgncmVzZXQnKS5waXBlKFxuICAgICAgc2tpcFdoaWxlKGwgPT4gbC5pc19sb2FkaW5nKSxcbiAgICAgIHRhcChsID0+IHRoaXMuYXNzaWduTGlzdChsKSlcbiAgICApO1xuICB9XG5cbiAgYXBwZW5kUmVjaXBlVG9MaXN0KHJlY2lwZUlkOiBzdHJpbmcsIGd1ZXN0czogbnVtYmVyLCBvcmlnaW46IHN0cmluZywgb3BlbkJhc2tldDogYm9vbGVhbiA9IGZhbHNlKTogT2JzZXJ2YWJsZTxvYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy50YWtlRmlyc3RMaXN0KCkucGlwZShcbiAgICAgIHN3aXRjaE1hcChsaXN0ID0+IHtcbiAgICAgICAgaWYgKCFsaXN0Lmhhc1JlY2lwZShyZWNpcGVJZCkpIHtcbiAgICAgICAgICAvLyBhcHBlbmQgdG8gbGlzdFxuICAgICAgICAgIGxpc3QuYXR0cmlidXRlc1snYXBwZW5kLXJlY2lwZXMnXSA9IHRydWU7XG4gICAgICAgICAgY29uc3QgaW5mbyA9IHsgaWQ6IHJlY2lwZUlkIH07XG4gICAgICAgICAgaWYgKGd1ZXN0cykge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihpbmZvLCB7IGd1ZXN0cyB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGlzdC5hdHRyaWJ1dGVzWydyZWNpcGVzLWluZm9zJ10gPSBbaW5mb107XG4gICAgICAgICAgdGhpcy5zYXZlT3BlcmF0aW9uVHlwZSA9ICdBREQnO1xuICAgICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnQoJ2FkZC1yZWNpcGUnLCBvcmlnaW4pO1xuICAgICAgICB9IGVsc2UgaWYgKGd1ZXN0cykge1xuICAgICAgICAgIC8vIHVwZGF0ZSBndWVzdHMgbnVtYmVyXG4gICAgICAgICAgY29uc3QgaW5mbyA9IGxpc3QucmVjaXBlSW5mb3MuZmluZChpID0+IGkuaWQgPT09IHJlY2lwZUlkKTtcbiAgICAgICAgICBpZiAoaW5mby5ndWVzdHMudG9TdHJpbmcoKSA9PT0gZ3Vlc3RzLnRvU3RyaW5nKCkpIHtcbiAgICAgICAgICAgIC8vIEF2b2lkIHNhdmluZyB0aGUgbGlzdCBpZiBub3RoaW5nIGNoYW5nZWRcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9saXN0JDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5mby5ndWVzdHMgPSBndWVzdHMudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zYXZlTGlzdChsaXN0LCBvcGVuQmFza2V0KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJlbW92ZVJlY2lwZUZyb21MaXN0KHJlY2lwZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEdyb2Nlcmllc0xpc3Q+IHtcbiAgICByZXR1cm4gdGhpcy50YWtlRmlyc3RMaXN0KCkucGlwZShcbiAgICAgIHN3aXRjaE1hcChsaXN0ID0+IHtcbiAgICAgICAgaWYgKGxpc3QuYXR0cmlidXRlc1sncmVjaXBlcy1pbmZvcyddKSB7XG4gICAgICAgICAgbGlzdC5hdHRyaWJ1dGVzWydyZWNpcGVzLWluZm9zJ10gPSBsaXN0LmF0dHJpYnV0ZXNbJ3JlY2lwZXMtaW5mb3MnXS5maWx0ZXIoaW5mbyA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaW5mby5pZCAhPT0gcmVjaXBlSWQ7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLnNlbmRFdmVudCgncmVtb3ZlLXJlY2lwZScpO1xuICAgICAgICAgIHRoaXMuc2F2ZU9wZXJhdGlvblR5cGUgPSAnUkVNT1ZFJztcbiAgICAgICAgICByZXR1cm4gdGhpcy5zYXZlTGlzdChsaXN0KSBhcyBPYnNlcnZhYmxlPEdyb2Nlcmllc0xpc3Q+O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9mKG51bGwpIGFzIE9ic2VydmFibGU8R3JvY2VyaWVzTGlzdD47XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICB1cGRhdGVSZWNpcGVHdWVzdHMocmVjaXBlSWQ6IHN0cmluZywgZ3Vlc3RzOiBudW1iZXIpOiBPYnNlcnZhYmxlPEdyb2Nlcmllc0xpc3Q+ICB7XG4gICAgcmV0dXJuIHRoaXMudGFrZUZpcnN0TGlzdCgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAobGlzdCA9PiB7XG4gICAgICAgIGlmIChsaXN0LmF0dHJpYnV0ZXNbJ3JlY2lwZXMtaW5mb3MnXSkge1xuICAgICAgICAgIGNvbnN0IHJlY2lwZUluZm8gPSBsaXN0LmF0dHJpYnV0ZXNbJ3JlY2lwZXMtaW5mb3MnXS5maW5kKGluZm8gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGluZm8uaWQgPT09IHJlY2lwZUlkO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJlY2lwZUluZm8uZ3Vlc3RzID0gZ3Vlc3RzO1xuICAgICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnQoJ2NoYW5nZS1ndWVzdHMnKTtcbiAgICAgICAgICB0aGlzLnNhdmVPcGVyYXRpb25UeXBlID0gJ0dVRVNUUyc7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2F2ZUxpc3QobGlzdCkgYXMgT2JzZXJ2YWJsZTxHcm9jZXJpZXNMaXN0PjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9saXN0JDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJlbW92ZVJlY2lwZXNGcm9tTGlzdCgpOiBPYnNlcnZhYmxlPEdyb2Nlcmllc0xpc3Q+IHtcbiAgICByZXR1cm4gdGhpcy50YWtlRmlyc3RMaXN0KCkucGlwZShcbiAgICAgIHN3aXRjaE1hcChsaXN0ID0+IHtcbiAgICAgICAgbGlzdC5hdHRyaWJ1dGVzWydyZWNpcGVzLWluZm9zJ10gPSBbXTtcbiAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLnNlbmRFdmVudCgncmVtb3ZlLWFsbC1yZWNpcGVzJyk7XG4gICAgICAgIHRoaXMuc2F2ZU9wZXJhdGlvblR5cGUgPSAnUkVNT1ZFJztcbiAgICAgICAgcmV0dXJuIHRoaXMuc2F2ZUxpc3QobGlzdCkgYXMgT2JzZXJ2YWJsZTxHcm9jZXJpZXNMaXN0PjtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGFkZEVudHJpZXNGcm9tUGljdHVyZShmaWxlOiBGaWxlLCBpbmNsdWRlID0gW10sIGRpc2FibGVJbmdyZWRpZW50c01hdGNoaW5nID0gZmFsc2UpOiBPYnNlcnZhYmxlPEdyb2Nlcmllc0xpc3Q+IHtcbiAgICByZXR1cm4gdGhpcy50YWtlRmlyc3RMaXN0KCkucGlwZShcbiAgICAgIHN3aXRjaE1hcChsaXN0ID0+IHtcbiAgICAgICAgbGV0IHVybCA9IFtlLm1pYW1BUEksICdhcGkvdjEvZ3JvY2VyaWVzLWxpc3RzJywgbGlzdC5pZCwgJ2FkZF9lbnRyaWVzX2Zyb21fcGljdHVyZSddLmpvaW4oJy8nKTtcbiAgICAgICAgaWYgKGRpc2FibGVJbmdyZWRpZW50c01hdGNoaW5nKSB7XG4gICAgICAgICAgdXJsICs9ICc/ZGlzYWJsZV9tYXRjaGluZz10cnVlJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwaWN0dXJlJywgZmlsZSk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnaW5jbHVkZScsIGluY2x1ZGUuam9pbignLCcpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaCh1cmwsIGZvcm1EYXRhKS5waXBlKFxuICAgICAgICAgIG1hcCgocmVzcG9uc2U6IERvY3VtZW50UmVzb3VyY2U8R3JvY2VyaWVzTGlzdD4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGwgPSB0aGlzLm5ldygpO1xuICAgICAgICAgICAgbC5maWxsKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIHRoaXMuX2xpc3QkLm5leHQobCk7XG4gICAgICAgICAgICByZXR1cm4gbDtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzYXZlTGlzdChsaXN0OiBHcm9jZXJpZXNMaXN0LCBvcGVuQmFza2V0OiBib29sZWFuID0gZmFsc2UpOiBPYnNlcnZhYmxlPEdyb2Nlcmllc0xpc3Q+IHtcbiAgICBkZWxldGUobGlzdC5hdHRyaWJ1dGVzWydyZWNpcGVzLWlkcyddKTtcbiAgICByZXR1cm4gbGlzdC5zYXZlKCkucGlwZShcbiAgICAgIHNraXBXaGlsZShsID0+IChsIGFzIEdyb2Nlcmllc0xpc3QpLmlzX2xvYWRpbmcpLFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgdGhpcy5fbGlzdCQubmV4dChsaXN0KTtcbiAgICAgICAgaWYgKHRoaXMuc2F2ZU9wZXJhdGlvblR5cGUgPT09ICdBREQnKSB7XG4gICAgICAgICAgdGhpcy5yZWNpcGVXYXNBZGRlZCQubmV4dChsaXN0LnJlY2lwZUluZm9zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zYXZlT3BlcmF0aW9uVHlwZSA9PT0gJ1JFTU9WRScpIHtcbiAgICAgICAgICB0aGlzLnJlY2lwZVdhc0RlbGV0ZWQkLm5leHQobGlzdC5yZWNpcGVJbmZvcyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zYXZlT3BlcmF0aW9uVHlwZSA9ICcnO1xuICAgICAgICBpZiAob3BlbkJhc2tldCkge1xuICAgICAgICAgIHdpbmRvdy5vcGVuKGAke3RoaXMubWlhbUJhc2tldFVSTH0vJHtsaXN0LmlkfWAsICdfYmxhbmsnKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBtYXAobCA9PiAobCBhcyBEb2N1bWVudFJlc291cmNlPEdyb2Nlcmllc0xpc3Q+KS5kYXRhKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzc2lnbkxpc3QobCl7XG4gICAgLy8gV2hlbiBhIENPUlMgZXJyb3IgaGFwcGVucyB0aGUgcmVzcG9uc2UgaXMgYSBHTCB3aXRoIGFuIGlkIGVxdWFsIHRvIHRoZSByZXF1ZXN0IFVSTFxuICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBkb24ndCBjaGFuZ2UgdGhlIEdMXG4gICAgaWYgKGwuaWQudG9TdHJpbmcoKS5tYXRjaCgvXlswLTldKyQvKSkge1xuICAgICAgaWYgKGwuYXR0cmlidXRlc1sndXNlci1pZCddKSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdfbWlhbS9saXN0SWQnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdfbWlhbS9saXN0SWQnLCBsLmlkKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2xpc3QkLm5leHQobCk7XG4gICAgICB0aGlzLmxpc3RJc0ZldGNoaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -70,7 +70,10 @@ export class RecipesService extends Service {
70
70
  return of([]);
71
71
  }
72
72
  return forkJoin(list.attributes['recipes-infos'].map(info => {
73
- return this.getOrFetch(info.id).pipe(skipWhile(r => r.is_loading), tap(r => r.modifiedGuests = info.guests));
73
+ return this.getOrFetch(info.id).pipe(tap(r => {
74
+ r.modifiedGuests = info.guests;
75
+ this.recipes.push(r);
76
+ }));
74
77
  }));
75
78
  }));
76
79
  }
@@ -104,7 +107,7 @@ export class RecipesService extends Service {
104
107
  else {
105
108
  return this.get(recipeId, {
106
109
  include: ['ingredients', 'recipe-steps', 'recipe-status', 'recipe-type', 'sponsors', 'tags']
107
- }).pipe(tap(r => this.recipes.push(r)));
110
+ }).pipe(skipWhile(r => r.is_loading));
108
111
  }
109
112
  }
110
113
  // Debounce to let enough time for the pos to be defined
@@ -161,6 +164,7 @@ export class RecipesService extends Service {
161
164
  }
162
165
  }
163
166
  toggleHelper() {
167
+ this.hide();
164
168
  this.displayHelper$.next(!this.displayHelper$.value);
165
169
  }
166
170
  hide() {
@@ -217,4 +221,4 @@ RecipesService.ɵprov = i0.ɵɵdefineInjectable({ token: RecipesService, factory
217
221
  providedIn: 'root'
218
222
  }]
219
223
  }], 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 }]; }, null); })();
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fc2VydmljZXMvcmVjaXBlcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFjLFFBQVEsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxPQUFPLEVBQXNCLE1BQU0sYUFBYSxDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFRLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFF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QUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlpZiwgb2YsIE9ic2VydmFibGUsIGZvcmtKb2luLCBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNlcnZpY2UsIERvY3VtZW50Q29sbGVjdGlvbiB9IGZyb20gJ25neC1qc29uYXBpJztcbmltcG9ydCB7IFJlY2lwZSB9IGZyb20gJy4uL19tb2RlbHMvcmVjaXBlJztcbmltcG9ydCB7IFJlY2lwZVByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vcmVjaXBlLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVjaXBlU3RhdHVzU2VydmljZSB9IGZyb20gJy4vcmVjaXBlLXN0YXR1cy5zZXJ2aWNlJztcbmltcG9ydCB7IFJlY2lwZVR5cGVTZXJ2aWNlIH0gZnJvbSAnLi9yZWNpcGUtdHlwZS5zZXJ2aWNlJztcbmltcG9ydCB7IEdyb2Nlcmllc0xpc3RzU2VydmljZSB9IGZyb20gJy4vZ3JvY2VyaWVzLWxpc3RzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVjaXBlRXZlbnRzU2VydmljZSB9IGZyb20gJy4vcmVjaXBlLWV2ZW50cy5zZXJ2aWNlJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwLCBza2lwV2hpbGUsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEluZ3JlZGllbnRzU2VydmljZSB9IGZyb20gJy4vaW5ncmVkaWVudHMuc2VydmljZSc7XG5pbXBvcnQgeyBSZWNpcGVTdGVwc1NlcnZpY2UgfSBmcm9tICcuL3JlY2lwZS1zdGVwcy5zZXJ2aWNlJztcbmltcG9ydCB7IE1pYW1SZWNpcGUgfSBmcm9tICcuLi9fdHlwZXMvcmVjaXBlJztcbmltcG9ydCB7IFN1cHBsaWVyc1NlcnZpY2UgfSBmcm9tICcuL3N1cHBsaWVycy5zZXJ2aWNlJztcbmltcG9ydCB7IFJlY2lwZVByaWNpbmcgfSBmcm9tICcuLi9fbW9kZWxzL3JlY2lwZS1wcmljaW5nJztcbmltcG9ydCB7IFNwb25zb3JTZXJ2aWNlIH0gZnJvbSAnLi9zcG9uc29yLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9pbnRPZlNhbGVzU2VydmljZSB9IGZyb20gJy4vcG9pbnQtb2Ytc2FsZXMuc2VydmljZSc7XG5pbXBvcnQgeyBQYWNrYWdlU2VydmljZSB9IGZyb20gJy4vcGFja2FnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFRhZ3NTZXJ2aWNlIH0gZnJvbSAnLi90YWdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFnIH0gZnJvbSAnLi4vX21vZGVscyc7XG5cbmNvbnN0IE1JQU1fQVBJX0hPU1QgPSBgJHtlbnZpcm9ubWVudC5taWFtQVBJfS9hcGkvdjEvYDtcblxuaW50ZXJmYWNlIFJlY2lwZURpc3BsYXkge1xuICBwcmV2aWV3QWxsb3dlZDogYm9vbGVhbjtcbiAgcmVjaXBlOiBSZWNpcGU7XG4gIHByZXZpZXdNb2RlOiBib29sZWFuO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBSZWNpcGVzU2VydmljZSBleHRlbmRzIFNlcnZpY2U8UmVjaXBlPiB7XG5cbiAgcmVzb3VyY2UgPSBSZWNpcGU7XG4gIHR5cGUgPSAncmVjaXBlcyc7XG4gIGRpc3BsYXllZFJlY2lwZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJlY2lwZURpc3BsYXk+KG51bGwpO1xuICBkaXNwbGF5SGVscGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBkaXNwbGF5ZWRSZWNpcGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBoaWRkZW4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIHN1Z2dlc3Rpb25zUHJpbWFyeUJ1dHRvbkFjdGlvbnMgPSB7IGRpc3BsYXk6IHRydWUsIGFkZFRvQmFza2V0OiB0cnVlIH07XG5cbiAgcHJpdmF0ZSByYW5kb21TZWVkOiBudW1iZXI7XG4gIHByaXZhdGUgcGFnZU51bWJlciA9IDE7XG4gIHByaXZhdGUgcmVjaXBlczogUmVjaXBlW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBwcm92aWRlclNlcnZpY2U6IFJlY2lwZVByb3ZpZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHN0YXR1c1NlcnZpY2U6IFJlY2lwZVN0YXR1c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0eXBlU2VydmljZTogUmVjaXBlVHlwZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdXBwbGllcnNTZXJ2aWNlOiBTdXBwbGllcnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9zU2VydmljZTogUG9pbnRPZlNhbGVzU2VydmljZSxcbiAgICBwcml2YXRlIGxpc3RzU2VydmljZTogR3JvY2VyaWVzTGlzdHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW5ncmVkaWVudHNTZXJ2aWNlOiBJbmdyZWRpZW50c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNpcGVTdGVwc1NlcnZpY2U6IFJlY2lwZVN0ZXBzU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZUV2ZW50c1NlcnZpY2U6IFJlY2lwZUV2ZW50c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzcG9uc29yU2VydmljZTogU3BvbnNvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwYWNrYWdlU2VydmljZTogUGFja2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0YWdzU2VydmljZTogVGFnc1NlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJlZ2lzdGVyKCk7XG4gICAgdGhpcy5pbnRSYW5kb21TZWVkKCk7XG4gIH1cblxuICBsb2FkUmVjaXBlcygpOiBPYnNlcnZhYmxlPFJlY2lwZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdHNTZXJ2aWNlLnRha2VGaXJzdExpc3QoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKGxpc3QgPT4ge1xuICAgICAgICBpZiAoIWxpc3QpIHtcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH0gZWxzZSBpZiAobGlzdC5hdHRyaWJ1dGVzWydyZWNpcGVzLWluZm9zJ10ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmb3JrSm9pbihsaXN0LmF0dHJpYnV0ZXNbJ3JlY2lwZXMtaW5mb3MnXS5tYXAoaW5mbyA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T3JGZXRjaChpbmZvLmlkKS5waXBlKFxuICAgICAgICAgICAgc2tpcFdoaWxlKHIgPT4gci5pc19sb2FkaW5nKSxcbiAgICAgICAgICAgIHRhcChyID0+IHIubW9kaWZpZWRHdWVzdHMgPSBpbmZvLmd1ZXN0cylcbiAgICAgICAgICApO1xuICAgICAgICB9KSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvLyBUT0RPOiBSRU1PVkUgVU5VU0VEXG4gIC8vIENyZWF0ZSByZWNpcGUgJiBhcHBlbmQgdG8gZ3JvY2VyaWVzIGxpc3RcbiAgZ2V0T3JDcmVhdGUocmVjaXBlLCBvcGVuQmFza2V0OiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBjb25zdCBwcm92aWRlciA9IHRoaXMucHJvdmlkZXJTZXJ2aWNlLmdldENhY2hlZCgpO1xuICAgIGNvbnN0IGV4dElkID0gdGhpcy5jcmVhdGVFeHRJZChyZWNpcGUudGl0bGUpO1xuXG4gICAgLy8gQ2hlY2sgaWYgZXhpc3RzIG9yIGNyZWF0ZSBpdFxuICAgIHJldHVybiB0aGlzLmdldFJlY2lwZShwcm92aWRlci5pZCwgZXh0SWQpLnBpcGUoXG4gICAgICBza2lwV2hpbGUociA9PiByLmlzX2xvYWRpbmcpLFxuICAgICAgLy8gTk9URSA6IGFkZGluZyBvZih2b2lkIDApIGZvciBmYWxzeSBvYnNlcnZhYmxlIChuZ3gtanNvbmFwaSBpcyB0cmlnZ2VyaW5nIGFuIGh0dHAgcmVxdWVzdCB3aGVuIHNhdmUoKSBjYWxsZWQpXG4gICAgICBzd2l0Y2hNYXAoKHIpID0+IGlpZigoKSA9PiAhIXIuZGF0YS5sZW5ndGgsIG9mKHIuZGF0YVswXSksIG9mKHZvaWQgMCkucGlwZShzd2l0Y2hNYXAoXyA9PiB0aGlzLmNyZWF0ZShleHRJZCwgcmVjaXBlKSkpKSksXG4gICAgICAvLyBBcHBlbmQgcmVjaXBlIHRvIGN1cnJlbnQgc2F2ZWQgbGlzdFxuICAgICAgc3dpdGNoTWFwKChyKSA9PiB0aGlzLmxpc3RzU2VydmljZS5hcHBlbmRSZWNpcGVUb0xpc3Qoci5pZCwgci5tb2RpZmllZEd1ZXN0cywgJ29yZGVyLWJ1dHRvbicsIG9wZW5CYXNrZXQpKVxuICAgICk7XG5cbiAgfVxuXG4gIGdldFJhbmRvbShwYWdlID0geyBudW1iZXI6IHRoaXMucGFnZU51bWJlciwgc2l6ZTogMSB9LCBmaWx0ZXJzOiBvYmplY3QgPSB7IHJldmlld2VkOiB0cnVlLCBleGNsdWRlX25vX3BpY3R1cmU6IHRydWUgfSxcbiAgICAgICAgICAgIGNsZWFyID0gZmFsc2UpOiBPYnNlcnZhYmxlPFJlY2lwZVtdPiB7XG4gICAgdGhpcy5wYWdlTnVtYmVyKys7XG4gICAgLy8gRmV0Y2ggcmFuZG9tIHJlY2lwZXNcbiAgICByZXR1cm4gdGhpcy5hbGwoe1xuICAgICAgcGFnZSxcbiAgICAgIHJlbW90ZWZpbHRlcjogT2JqZWN0LmFzc2lnbih7Li4uZmlsdGVyc30sIHsgcmFuZG9tOiB0aGlzLnJhbmRvbVNlZWR9KSxcbiAgICAgIGluY2x1ZGU6IFsnaW5ncmVkaWVudHMnLCAncmVjaXBlLXN0ZXBzJywgJ3JlY2lwZS1zdGF0dXMnLCAncmVjaXBlLXR5cGUnLCAnc3BvbnNvcnMnLCAncmVjaXBlLXByb3ZpZGVyJywgJ3RhZ3MnXVxuICAgIH0pLnBpcGUoXG4gICAgICBza2lwV2hpbGUocmVzdWx0ID0+IHJlc3VsdC5pc19sb2FkaW5nKSxcbiAgICAgIG1hcChyZXN1bHQgPT4gcmVzdWx0LmRhdGEpXG4gICAgKTtcbiAgfVxuXG4gIC8vIERFUFJFQ0FURUQgLyB1c2UgVFRMIGluc3RlYWRcbiAgZ2V0T3JGZXRjaChyZWNpcGVJZCk6IE9ic2VydmFibGU8UmVjaXBlPiB7XG4gICAgY29uc3QgcmVjaXBlID0gdGhpcy5yZWNpcGVzLmZpbmQociA9PiByLmlkID09PSByZWNpcGVJZCk7XG4gICAgaWYgKHJlY2lwZSkge1xuICAgICAgcmV0dXJuIG9mKHJlY2lwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmdldChyZWNpcGVJZCwge1xuICAgICAgICBpbmNsdWRlOiBbJ2luZ3JlZGllbnRzJywgJ3JlY2lwZS1zdGVwcycsICdyZWNpcGUtc3RhdHVzJywgJ3JlY2lwZS10eXBlJywgJ3Nwb25zb3JzJywgJ3RhZ3MnIF1cbiAgICAgIH0pLnBpcGUoXG4gICAgICAgIHRhcChyID0+IHRoaXMucmVjaXBlcy5wdXNoKHIpKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBEZWJvdW5jZSB0byBsZXQgZW5vdWdoIHRpbWUgZm9yIHRoZSBwb3MgdG8gYmUgZGVmaW5lZFxuICBnZXRTdWdnZXN0aW9uKFxuICAgIHNoZWxmX2luZ3JlZGllbnRzX2lkczogc3RyaW5nW10sXG4gICAgY3VycmVudF9pbmdyZWRpZW50c19pZHM6IHN0cmluZ1tdLFxuICAgIGJhc2tldF9pbmdyZWRpZW50c19pZHM6IHN0cmluZ1tdLFxuICAgIGdyb3VwX2lkOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxSZWNpcGVbXT4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLnN1cHBsaWVyc1NlcnZpY2Uuc3VwcGxpZXIkLCB0aGlzLnBvc1NlcnZpY2UucG9zJF0pLnBpcGUoXG4gICAgICBza2lwV2hpbGUocmVzdWx0cyA9PiAhcmVzdWx0c1swXSksXG4gICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcbiAgICAgIHN3aXRjaE1hcChyZXN1bHRzID0+IHtcbiAgICAgICAgY29uc3QgYm9keSA9IHsgc2hlbGZfaW5ncmVkaWVudHNfaWRzLCBjdXJyZW50X2luZ3JlZGllbnRzX2lkcywgYmFza2V0X2luZ3JlZGllbnRzX2lkcywgZ3JvdXBfaWQgfTtcbiAgICAgICAgbGV0IHN1cHBsaWVyRmlsdGVyID0gYHN1cHBsaWVyX2lkPSR7cmVzdWx0c1swXS5pZH1gO1xuICAgICAgICBpZiAocmVzdWx0c1sxXSkge1xuICAgICAgICAgIHN1cHBsaWVyRmlsdGVyID0gYHN1cHBsaWVyX2lkPSR7cmVzdWx0c1swXS5pZH0mcG9zX2lkPSR7cmVzdWx0c1sxXS5pZH1gO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVybCA9IE1JQU1fQVBJX0hPU1QgKyBgcmVjaXBlcy9zdWdnZXN0aW9ucz8ke3N1cHBsaWVyRmlsdGVyfSZpbmNsdWRlPWluZ3JlZGllbnRzLHJlY2lwZS1zdGVwcyxzcG9uc29ycyxyZWNpcGUtdHlwZSx0YWdzYDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHVybCwgYm9keSk7XG4gICAgICB9KSxcbiAgICAgIG1hcCgocmV0dXJuZWRSZWNpcGVzOiBEb2N1bWVudENvbGxlY3Rpb248UmVjaXBlPikgPT4ge1xuICAgICAgICBjb25zdCByZWNpcGVzID0gdGhpcy5uZXdDb2xsZWN0aW9uKCk7XG4gICAgICAgIHJlY2lwZXMuZmlsbChyZXR1cm5lZFJlY2lwZXMpO1xuICAgICAgICByZXR1cm4gcmVjaXBlcy5kYXRhO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0UHJpY2luZyhyZWNpcGVJZCwgcG9zSWQsIHNlcnZlcyA9IG51bGwpOiBPYnNlcnZhYmxlPFJlY2lwZVByaWNpbmc+IHtcbiAgICBpZiAoIXJlY2lwZUlkKSB7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuXG4gICAgbGV0IHVybCA9IE1JQU1fQVBJX0hPU1QgKyBgcmVjaXBlcy8ke3JlY2lwZUlkfS9wcmljaW5nP3BvaW50X29mX3NhbGVfaWQ9JHtwb3NJZH1gO1xuICAgIGlmIChzZXJ2ZXMpIHtcbiAgICAgIHVybCArPSBgJnNlcnZlcz0ke3NlcnZlc31gO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+IG5ldyBSZWNpcGVQcmljaW5nKHJlc3VsdCkpXG4gICAgKTtcbiAgfVxuXG4gIGNyZWF0ZUZyb21Vcmwoc291cmNlOiBzdHJpbmcsIGV4dF9saW5rOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFJlY2lwZT4ge1xuICAgIGlmICghc291cmNlIHx8ICFleHRfbGluaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBzb3VyY2Ugb3IgcmVjaXBlIGxpbmsgcHJvdmlkZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7ZW52aXJvbm1lbnQubWlhbUFQSX0vYXBpL3YxL3JlY2lwZXMvZnJvbV91cmxgLCB7IHNvdXJjZSwgZXh0X2xpbmsgfSkucGlwZShcbiAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHJlc3VsdC5kYXRhIGFzIFJlY2lwZSlcbiAgICApO1xuICB9XG5cbiAgLy8gT3BlbiBtb2RhbCBzaG93aW5nIHJlY2lwZSBkZXRhaWxzXG4gIGRpc3BsYXkocmVjaXBlSWQ6IHN0cmluZywgeyBwcmV2aWV3QWxsb3dlZCA9IHRydWUsIGd1ZXN0cyA9IG51bGwsIHByZXZpZXdNb2RlID0gZmFsc2V9KSB7XG4gICAgaWYgKCFyZWNpcGVJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZ2V0KHJlY2lwZUlkLCB7IGluY2x1ZGU6IFsnaW5ncmVkaWVudHMnLCAncmVjaXBlLXN0ZXBzJywgJ3JlY2lwZS10eXBlJywgJ3Nwb25zb3JzJywgJ3RhZ3MnXSB9KVxuICAgICAgLnBpcGUoc2tpcFdoaWxlKHJlY2lwZSA9PiByZWNpcGUuaXNfbG9hZGluZykpXG4gICAgICAuc3Vic2NyaWJlKHJlY2lwZSA9PiB7XG4gICAgICAgIHRoaXMuZGlzcGxheU9iamVjdChyZWNpcGUsIHtwcmV2aWV3QWxsb3dlZCwgZ3Vlc3RzLCBwcmV2aWV3TW9kZSB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZGlzcGxheU9iamVjdChyZWNpcGU6IFJlY2lwZSwgeyBwcmV2aWV3QWxsb3dlZCA9IHRydWUsIGd1ZXN0cyA9IG51bGwsIHByZXZpZXdNb2RlID0gZmFsc2V9KXtcbiAgICBpZiAoIXJlY2lwZSl7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmVjaXBlLm1vZGlmaWVkR3Vlc3RzID0gZ3Vlc3RzIHx8ICtyZWNpcGUuZ3Vlc3RzO1xuICAgIHRoaXMuZGlzcGxheWVkUmVjaXBlJC5uZXh0KHsgcHJldmlld0FsbG93ZWQgLCByZWNpcGUsIHByZXZpZXdNb2RlIH0pO1xuICAgIGlmICghcHJldmlld01vZGUpIHtcbiAgICAgIHRoaXMucmVjaXBlRXZlbnRzU2VydmljZS5zZW5kRXZlbnQocmVjaXBlLCB0aGlzLnJlY2lwZUV2ZW50c1NlcnZpY2UuQUNUSU9OX0RJU1BMQVlFRCk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlSGVscGVyKCkge1xuICAgIHRoaXMuZGlzcGxheUhlbHBlciQubmV4dCghdGhpcy5kaXNwbGF5SGVscGVyJC52YWx1ZSk7XG4gIH1cblxuICBoaWRlKCkge1xuICAgIHRoaXMuZGlzcGxheWVkUmVjaXBlJC5uZXh0KG51bGwpO1xuICAgIHRoaXMuaGlkZGVuLmVtaXQodHJ1ZSk7XG4gIH1cblxuICByZW1vdmVUYWdGcm9tUmVjaXBlKHJlY2lwZTogUmVjaXBlLCB0YWc6IFRhZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoTUlBTV9BUElfSE9TVCArIGByZWNpcGVzLyR7cmVjaXBlLmlkfS90YWdzLyR7dGFnLmlkfWApO1xuICB9XG5cbiAgYWRkVGFnVG9SZWNpcGUocmVjaXBlOiBSZWNpcGUsIHRhZzogVGFnKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoTUlBTV9BUElfSE9TVCArIGByZWNpcGVzLyR7cmVjaXBlLmlkfS90YWdzLyR7dGFnLmlkfWAsIHt9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlKGV4dElkOiBzdHJpbmcsIHJlY2lwZTogTWlhbVJlY2lwZSkge1xuICAgIGNvbnN0IHIgPSB0aGlzLm5ldygpO1xuICAgIC8vIENvcHkgcmVjaXBlIGludG8gYXR0cmlidXRlc1xuICAgIE9iamVjdC5hc3NpZ24oci5hdHRyaWJ1dGVzLCByZWNpcGUpO1xuICAgIC8vIFNldCBwcm92aWRlciAmIHN0YXR1cyAoY2FjaGVkIGZyb20gaW5pdGlhbGl6ZWQgdmFyIE1JQU1fU1RBVFVTX0lEICYgTUlBTV9QUk9WSURFUl9JRClcbiAgICByLmFkZFJlbGF0aW9uc2hpcCh0aGlzLnByb3ZpZGVyU2VydmljZS5nZXRDYWNoZWQoKSwgJ3JlY2lwZS1wcm92aWRlcicpO1xuICAgIHIuYWRkUmVsYXRpb25zaGlwKHRoaXMuc3RhdHVzU2VydmljZS5nZXRDYWNoZWQoKSwgJ3JlY2lwZS1zdGF0dXMnKTtcbiAgICAvLyBUT0RPIDogaGFyZCBjb2RlZCAocGxhdCBwcmluY2lwYWwgYXMgdHlwZSlcbiAgICByLmFkZFJlbGF0aW9uc2hpcCh0aGlzLnR5cGVTZXJ2aWNlLmdldFR5cGVCeU5hbWUoJ3BsYXQgcHJpbmNpcGFsJyksICdyZWNpcGUtdHlwZScpO1xuICAgIC8vIE92ZXJyaWRlIHNwZWNpZmljIG1pYW0gcmVzZXJ2ZWQgYXR0cmlidXRlc1xuICAgIHIuYXR0cmlidXRlcy5zb3VyY2UgPSBudWxsO1xuICAgIHIuYXR0cmlidXRlcy5kZXNjcmlwdGlvbiA9IG51bGw7XG4gICAgci5hdHRyaWJ1dGVzWydleHQtaWQnXSA9IGV4dElkO1xuICAgIHJldHVybiByLnNhdmUoKS5waXBlKFxuICAgICAgc2tpcFdoaWxlKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0LmlzX2xvYWRpbmcpLFxuICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0LmRhdGEpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRXh0SWQodGl0bGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcHJvdmlkZXIgPSB0aGlzLnByb3ZpZGVyU2VydmljZS5nZXRDYWNoZWQoKTtcbiAgICByZXR1cm4gYCR7cHJvdmlkZXIuYXR0cmlidXRlcy5uYW1lLnNsaWNlKDAsIDMpLnRvVXBwZXJDYXNlKCl9LSR7dGl0bGUucmVwbGFjZSgvXFxzKy9nbSwgJy0nKS50b0xvd2VyQ2FzZSgpfWA7XG4gIH1cblxuICBwcml2YXRlIGdldFJlY2lwZShwcm92aWRlcklkOiBzdHJpbmcsIGV4dElkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hbGwoe1xuICAgICAgYmVmb3JlcGF0aDogYHJlY2lwZS1wcm92aWRlcnMvJHtwcm92aWRlcklkfWAsXG4gICAgICByZW1vdGVmaWx0ZXI6IHtcbiAgICAgICAgJ2V4dC1pZCc6IGV4dElkLFxuICAgICAgICBhY3RpdmU6ICd0cnVlLGZhbHNlJ1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIGhlbHAgdXMgdG8ga2VlcCBhIHRyYWNrIG9mIHJhbmRvbVxuICAgKiBhbmQgYXZvaWQgdG8gc2hvdyBzYW1lIHJlY2lwZSBtdXRpcGxlIHRpbWVzXG4gICAqL1xuICBwcml2YXRlIGludFJhbmRvbVNlZWQoKTogdm9pZCB7XG4gICAgdGhpcy5yYW5kb21TZWVkID0gRGF0ZS5ub3coKTtcbiAgfVxuXG59XG4iXX0=
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fc2VydmljZXMvcmVjaXBlcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFjLFFBQVEsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxPQUFPLEVBQXNCLE1BQU0sYUFBYSxDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFRLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFF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Y0FBYztjQUgxQixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlpZiwgb2YsIE9ic2VydmFibGUsIGZvcmtKb2luLCBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNlcnZpY2UsIERvY3VtZW50Q29sbGVjdGlvbiB9IGZyb20gJ25neC1qc29uYXBpJztcbmltcG9ydCB7IFJlY2lwZSB9IGZyb20gJy4uL19tb2RlbHMvcmVjaXBlJztcbmltcG9ydCB7IFJlY2lwZVByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vcmVjaXBlLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVjaXBlU3RhdHVzU2VydmljZSB9IGZyb20gJy4vcmVjaXBlLXN0YXR1cy5zZXJ2aWNlJztcbmltcG9ydCB7IFJlY2lwZVR5cGVTZXJ2aWNlIH0gZnJvbSAnLi9yZWNpcGUtdHlwZS5zZXJ2aWNlJztcbmltcG9ydCB7IEdyb2Nlcmllc0xpc3RzU2VydmljZSB9IGZyb20gJy4vZ3JvY2VyaWVzLWxpc3RzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVjaXBlRXZlbnRzU2VydmljZSB9IGZyb20gJy4vcmVjaXBlLWV2ZW50cy5zZXJ2aWNlJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwLCBza2lwV2hpbGUsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEluZ3JlZGllbnRzU2VydmljZSB9IGZyb20gJy4vaW5ncmVkaWVudHMuc2VydmljZSc7XG5pbXBvcnQgeyBSZWNpcGVTdGVwc1NlcnZpY2UgfSBmcm9tICcuL3JlY2lwZS1zdGVwcy5zZXJ2aWNlJztcbmltcG9ydCB7IE1pYW1SZWNpcGUgfSBmcm9tICcuLi9fdHlwZXMvcmVjaXBlJztcbmltcG9ydCB7IFN1cHBsaWVyc1NlcnZpY2UgfSBmcm9tICcuL3N1cHBsaWVycy5zZXJ2aWNlJztcbmltcG9ydCB7IFJlY2lwZVByaWNpbmcgfSBmcm9tICcuLi9fbW9kZWxzL3JlY2lwZS1wcmljaW5nJztcbmltcG9ydCB7IFNwb25zb3JTZXJ2aWNlIH0gZnJvbSAnLi9zcG9uc29yLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9pbnRPZlNhbGVzU2VydmljZSB9IGZyb20gJy4vcG9pbnQtb2Ytc2FsZXMuc2VydmljZSc7XG5pbXBvcnQgeyBQYWNrYWdlU2VydmljZSB9IGZyb20gJy4vcGFja2FnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFRhZ3NTZXJ2aWNlIH0gZnJvbSAnLi90YWdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFnIH0gZnJvbSAnLi4vX21vZGVscyc7XG5cbmNvbnN0IE1JQU1fQVBJX0hPU1QgPSBgJHtlbnZpcm9ubWVudC5taWFtQVBJfS9hcGkvdjEvYDtcblxuaW50ZXJmYWNlIFJlY2lwZURpc3BsYXkge1xuICBwcmV2aWV3QWxsb3dlZDogYm9vbGVhbjtcbiAgcmVjaXBlOiBSZWNpcGU7XG4gIHByZXZpZXdNb2RlOiBib29sZWFuO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBSZWNpcGVzU2VydmljZSBleHRlbmRzIFNlcnZpY2U8UmVjaXBlPiB7XG5cbiAgcmVzb3VyY2UgPSBSZWNpcGU7XG4gIHR5cGUgPSAncmVjaXBlcyc7XG4gIGRpc3BsYXllZFJlY2lwZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJlY2lwZURpc3BsYXk+KG51bGwpO1xuICBkaXNwbGF5SGVscGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBkaXNwbGF5ZWRSZWNpcGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBoaWRkZW4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIHN1Z2dlc3Rpb25zUHJpbWFyeUJ1dHRvbkFjdGlvbnMgPSB7IGRpc3BsYXk6IHRydWUsIGFkZFRvQmFza2V0OiB0cnVlIH07XG5cbiAgcHJpdmF0ZSByYW5kb21TZWVkOiBudW1iZXI7XG4gIHByaXZhdGUgcGFnZU51bWJlciA9IDE7XG4gIHByaXZhdGUgcmVjaXBlczogUmVjaXBlW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBwcm92aWRlclNlcnZpY2U6IFJlY2lwZVByb3ZpZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHN0YXR1c1NlcnZpY2U6IFJlY2lwZVN0YXR1c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0eXBlU2VydmljZTogUmVjaXBlVHlwZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdXBwbGllcnNTZXJ2aWNlOiBTdXBwbGllcnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9zU2VydmljZTogUG9pbnRPZlNhbGVzU2VydmljZSxcbiAgICBwcml2YXRlIGxpc3RzU2VydmljZTogR3JvY2VyaWVzTGlzdHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW5ncmVkaWVudHNTZXJ2aWNlOiBJbmdyZWRpZW50c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNpcGVTdGVwc1NlcnZpY2U6IFJlY2lwZVN0ZXBzU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZUV2ZW50c1NlcnZpY2U6IFJlY2lwZUV2ZW50c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzcG9uc29yU2VydmljZTogU3BvbnNvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwYWNrYWdlU2VydmljZTogUGFja2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0YWdzU2VydmljZTogVGFnc1NlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJlZ2lzdGVyKCk7XG4gICAgdGhpcy5pbnRSYW5kb21TZWVkKCk7XG4gIH1cblxuICBsb2FkUmVjaXBlcygpOiBPYnNlcnZhYmxlPFJlY2lwZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdHNTZXJ2aWNlLnRha2VGaXJzdExpc3QoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKGxpc3QgPT4ge1xuICAgICAgICBpZiAoIWxpc3QpIHtcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH0gZWxzZSBpZiAobGlzdC5hdHRyaWJ1dGVzWydyZWNpcGVzLWluZm9zJ10ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmb3JrSm9pbihsaXN0LmF0dHJpYnV0ZXNbJ3JlY2lwZXMtaW5mb3MnXS5tYXAoaW5mbyA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T3JGZXRjaChpbmZvLmlkKS5waXBlKFxuICAgICAgICAgICAgdGFwKHIgPT4ge1xuICAgICAgICAgICAgICByLm1vZGlmaWVkR3Vlc3RzID0gaW5mby5ndWVzdHM7XG4gICAgICAgICAgICAgIHRoaXMucmVjaXBlcy5wdXNoKHIpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9KSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvLyBUT0RPOiBSRU1PVkUgVU5VU0VEXG4gIC8vIENyZWF0ZSByZWNpcGUgJiBhcHBlbmQgdG8gZ3JvY2VyaWVzIGxpc3RcbiAgZ2V0T3JDcmVhdGUocmVjaXBlLCBvcGVuQmFza2V0OiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBjb25zdCBwcm92aWRlciA9IHRoaXMucHJvdmlkZXJTZXJ2aWNlLmdldENhY2hlZCgpO1xuICAgIGNvbnN0IGV4dElkID0gdGhpcy5jcmVhdGVFeHRJZChyZWNpcGUudGl0bGUpO1xuXG4gICAgLy8gQ2hlY2sgaWYgZXhpc3RzIG9yIGNyZWF0ZSBpdFxuICAgIHJldHVybiB0aGlzLmdldFJlY2lwZShwcm92aWRlci5pZCwgZXh0SWQpLnBpcGUoXG4gICAgICBza2lwV2hpbGUociA9PiByLmlzX2xvYWRpbmcpLFxuICAgICAgLy8gTk9URSA6IGFkZGluZyBvZih2b2lkIDApIGZvciBmYWxzeSBvYnNlcnZhYmxlIChuZ3gtanNvbmFwaSBpcyB0cmlnZ2VyaW5nIGFuIGh0dHAgcmVxdWVzdCB3aGVuIHNhdmUoKSBjYWxsZWQpXG4gICAgICBzd2l0Y2hNYXAoKHIpID0+IGlpZigoKSA9PiAhIXIuZGF0YS5sZW5ndGgsIG9mKHIuZGF0YVswXSksIG9mKHZvaWQgMCkucGlwZShzd2l0Y2hNYXAoXyA9PiB0aGlzLmNyZWF0ZShleHRJZCwgcmVjaXBlKSkpKSksXG4gICAgICAvLyBBcHBlbmQgcmVjaXBlIHRvIGN1cnJlbnQgc2F2ZWQgbGlzdFxuICAgICAgc3dpdGNoTWFwKChyKSA9PiB0aGlzLmxpc3RzU2VydmljZS5hcHBlbmRSZWNpcGVUb0xpc3Qoci5pZCwgci5tb2RpZmllZEd1ZXN0cywgJ29yZGVyLWJ1dHRvbicsIG9wZW5CYXNrZXQpKVxuICAgICk7XG5cbiAgfVxuXG4gIGdldFJhbmRvbShwYWdlID0geyBudW1iZXI6IHRoaXMucGFnZU51bWJlciwgc2l6ZTogMSB9LCBmaWx0ZXJzOiBvYmplY3QgPSB7IHJldmlld2VkOiB0cnVlLCBleGNsdWRlX25vX3BpY3R1cmU6IHRydWUgfSxcbiAgICAgICAgICAgIGNsZWFyID0gZmFsc2UpOiBPYnNlcnZhYmxlPFJlY2lwZVtdPiB7XG4gICAgdGhpcy5wYWdlTnVtYmVyKys7XG4gICAgLy8gRmV0Y2ggcmFuZG9tIHJlY2lwZXNcbiAgICByZXR1cm4gdGhpcy5hbGwoe1xuICAgICAgcGFnZSxcbiAgICAgIHJlbW90ZWZpbHRlcjogT2JqZWN0LmFzc2lnbih7Li4uZmlsdGVyc30sIHsgcmFuZG9tOiB0aGlzLnJhbmRvbVNlZWR9KSxcbiAgICAgIGluY2x1ZGU6IFsnaW5ncmVkaWVudHMnLCAncmVjaXBlLXN0ZXBzJywgJ3JlY2lwZS1zdGF0dXMnLCAncmVjaXBlLXR5cGUnLCAnc3BvbnNvcnMnLCAncmVjaXBlLXByb3ZpZGVyJywgJ3RhZ3MnXVxuICAgIH0pLnBpcGUoXG4gICAgICBza2lwV2hpbGUocmVzdWx0ID0+IHJlc3VsdC5pc19sb2FkaW5nKSxcbiAgICAgIG1hcChyZXN1bHQgPT4gcmVzdWx0LmRhdGEpXG4gICAgKTtcbiAgfVxuXG4gIC8vIERFUFJFQ0FURUQgLyB1c2UgVFRMIGluc3RlYWRcbiAgZ2V0T3JGZXRjaChyZWNpcGVJZCk6IE9ic2VydmFibGU8UmVjaXBlPiB7XG4gICAgY29uc3QgcmVjaXBlID0gdGhpcy5yZWNpcGVzLmZpbmQociA9PiByLmlkID09PSByZWNpcGVJZCk7XG4gICAgaWYgKHJlY2lwZSkge1xuICAgICAgcmV0dXJuIG9mKHJlY2lwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmdldChyZWNpcGVJZCwge1xuICAgICAgICBpbmNsdWRlOiBbJ2luZ3JlZGllbnRzJywgJ3JlY2lwZS1zdGVwcycsICdyZWNpcGUtc3RhdHVzJywgJ3JlY2lwZS10eXBlJywgJ3Nwb25zb3JzJywgJ3RhZ3MnIF1cbiAgICAgIH0pLnBpcGUoXG4gICAgICAgIHNraXBXaGlsZShyID0+IHIuaXNfbG9hZGluZylcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gRGVib3VuY2UgdG8gbGV0IGVub3VnaCB0aW1lIGZvciB0aGUgcG9zIHRvIGJlIGRlZmluZWRcbiAgZ2V0U3VnZ2VzdGlvbihcbiAgICBzaGVsZl9pbmdyZWRpZW50c19pZHM6IHN0cmluZ1tdLFxuICAgIGN1cnJlbnRfaW5ncmVkaWVudHNfaWRzOiBzdHJpbmdbXSxcbiAgICBiYXNrZXRfaW5ncmVkaWVudHNfaWRzOiBzdHJpbmdbXSxcbiAgICBncm91cF9pZDogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8UmVjaXBlW10+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5zdXBwbGllcnNTZXJ2aWNlLnN1cHBsaWVyJCwgdGhpcy5wb3NTZXJ2aWNlLnBvcyRdKS5waXBlKFxuICAgICAgc2tpcFdoaWxlKHJlc3VsdHMgPT4gIXJlc3VsdHNbMF0pLFxuICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICBzd2l0Y2hNYXAocmVzdWx0cyA9PiB7XG4gICAgICAgIGNvbnN0IGJvZHkgPSB7IHNoZWxmX2luZ3JlZGllbnRzX2lkcywgY3VycmVudF9pbmdyZWRpZW50c19pZHMsIGJhc2tldF9pbmdyZWRpZW50c19pZHMsIGdyb3VwX2lkIH07XG4gICAgICAgIGxldCBzdXBwbGllckZpbHRlciA9IGBzdXBwbGllcl9pZD0ke3Jlc3VsdHNbMF0uaWR9YDtcbiAgICAgICAgaWYgKHJlc3VsdHNbMV0pIHtcbiAgICAgICAgICBzdXBwbGllckZpbHRlciA9IGBzdXBwbGllcl9pZD0ke3Jlc3VsdHNbMF0uaWR9JnBvc19pZD0ke3Jlc3VsdHNbMV0uaWR9YDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cmwgPSBNSUFNX0FQSV9IT1NUICsgYHJlY2lwZXMvc3VnZ2VzdGlvbnM/JHtzdXBwbGllckZpbHRlcn0maW5jbHVkZT1pbmdyZWRpZW50cyxyZWNpcGUtc3RlcHMsc3BvbnNvcnMscmVjaXBlLXR5cGUsdGFnc2A7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh1cmwsIGJvZHkpO1xuICAgICAgfSksXG4gICAgICBtYXAoKHJldHVybmVkUmVjaXBlczogRG9jdW1lbnRDb2xsZWN0aW9uPFJlY2lwZT4pID0+IHtcbiAgICAgICAgY29uc3QgcmVjaXBlcyA9IHRoaXMubmV3Q29sbGVjdGlvbigpO1xuICAgICAgICByZWNpcGVzLmZpbGwocmV0dXJuZWRSZWNpcGVzKTtcbiAgICAgICAgcmV0dXJuIHJlY2lwZXMuZGF0YTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldFByaWNpbmcocmVjaXBlSWQsIHBvc0lkLCBzZXJ2ZXMgPSBudWxsKTogT2JzZXJ2YWJsZTxSZWNpcGVQcmljaW5nPiB7XG4gICAgaWYgKCFyZWNpcGVJZCkge1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cblxuICAgIGxldCB1cmwgPSBNSUFNX0FQSV9IT1NUICsgYHJlY2lwZXMvJHtyZWNpcGVJZH0vcHJpY2luZz9wb2ludF9vZl9zYWxlX2lkPSR7cG9zSWR9YDtcbiAgICBpZiAoc2VydmVzKSB7XG4gICAgICB1cmwgKz0gYCZzZXJ2ZXM9JHtzZXJ2ZXN9YDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiBuZXcgUmVjaXBlUHJpY2luZyhyZXN1bHQpKVxuICAgICk7XG4gIH1cblxuICBjcmVhdGVGcm9tVXJsKHNvdXJjZTogc3RyaW5nLCBleHRfbGluazogc3RyaW5nKTogT2JzZXJ2YWJsZTxSZWNpcGU+IHtcbiAgICBpZiAoIXNvdXJjZSB8fCAhZXh0X2xpbmspIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gc291cmNlIG9yIHJlY2lwZSBsaW5rIHByb3ZpZGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke2Vudmlyb25tZW50Lm1pYW1BUEl9L2FwaS92MS9yZWNpcGVzL2Zyb21fdXJsYCwgeyBzb3VyY2UsIGV4dF9saW5rIH0pLnBpcGUoXG4gICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiByZXN1bHQuZGF0YSBhcyBSZWNpcGUpXG4gICAgKTtcbiAgfVxuXG4gIC8vIE9wZW4gbW9kYWwgc2hvd2luZyByZWNpcGUgZGV0YWlsc1xuICBkaXNwbGF5KHJlY2lwZUlkOiBzdHJpbmcsIHsgcHJldmlld0FsbG93ZWQgPSB0cnVlLCBndWVzdHMgPSBudWxsLCBwcmV2aWV3TW9kZSA9IGZhbHNlfSkge1xuICAgIGlmICghcmVjaXBlSWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmdldChyZWNpcGVJZCwgeyBpbmNsdWRlOiBbJ2luZ3JlZGllbnRzJywgJ3JlY2lwZS1zdGVwcycsICdyZWNpcGUtdHlwZScsICdzcG9uc29ycycsICd0YWdzJ10gfSlcbiAgICAgIC5waXBlKHNraXBXaGlsZShyZWNpcGUgPT4gcmVjaXBlLmlzX2xvYWRpbmcpKVxuICAgICAgLnN1YnNjcmliZShyZWNpcGUgPT4ge1xuICAgICAgICB0aGlzLmRpc3BsYXlPYmplY3QocmVjaXBlLCB7cHJldmlld0FsbG93ZWQsIGd1ZXN0cywgcHJldmlld01vZGUgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGRpc3BsYXlPYmplY3QocmVjaXBlOiBSZWNpcGUsIHsgcHJldmlld0FsbG93ZWQgPSB0cnVlLCBndWVzdHMgPSBudWxsLCBwcmV2aWV3TW9kZSA9IGZhbHNlfSl7XG4gICAgaWYgKCFyZWNpcGUpe1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJlY2lwZS5tb2RpZmllZEd1ZXN0cyA9IGd1ZXN0cyB8fCArcmVjaXBlLmd1ZXN0cztcbiAgICB0aGlzLmRpc3BsYXllZFJlY2lwZSQubmV4dCh7IHByZXZpZXdBbGxvd2VkICwgcmVjaXBlLCBwcmV2aWV3TW9kZSB9KTtcbiAgICBpZiAoIXByZXZpZXdNb2RlKSB7XG4gICAgICB0aGlzLnJlY2lwZUV2ZW50c1NlcnZpY2Uuc2VuZEV2ZW50KHJlY2lwZSwgdGhpcy5yZWNpcGVFdmVudHNTZXJ2aWNlLkFDVElPTl9ESVNQTEFZRUQpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUhlbHBlcigpIHtcbiAgICB0aGlzLmhpZGUoKTtcbiAgICB0aGlzLmRpc3BsYXlIZWxwZXIkLm5leHQoIXRoaXMuZGlzcGxheUhlbHBlciQudmFsdWUpO1xuICB9XG5cbiAgaGlkZSgpIHtcbiAgICB0aGlzLmRpc3BsYXllZFJlY2lwZSQubmV4dChudWxsKTtcbiAgICB0aGlzLmhpZGRlbi5lbWl0KHRydWUpO1xuICB9XG5cbiAgcmVtb3ZlVGFnRnJvbVJlY2lwZShyZWNpcGU6IFJlY2lwZSwgdGFnOiBUYWcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKE1JQU1fQVBJX0hPU1QgKyBgcmVjaXBlcy8ke3JlY2lwZS5pZH0vdGFncy8ke3RhZy5pZH1gKTtcbiAgfVxuXG4gIGFkZFRhZ1RvUmVjaXBlKHJlY2lwZTogUmVjaXBlLCB0YWc6IFRhZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KE1JQU1fQVBJX0hPU1QgKyBgcmVjaXBlcy8ke3JlY2lwZS5pZH0vdGFncy8ke3RhZy5pZH1gLCB7fSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZShleHRJZDogc3RyaW5nLCByZWNpcGU6IE1pYW1SZWNpcGUpIHtcbiAgICBjb25zdCByID0gdGhpcy5uZXcoKTtcbiAgICAvLyBDb3B5IHJlY2lwZSBpbnRvIGF0dHJpYnV0ZXNcbiAgICBPYmplY3QuYXNzaWduKHIuYXR0cmlidXRlcywgcmVjaXBlKTtcbiAgICAvLyBTZXQgcHJvdmlkZXIgJiBzdGF0dXMgKGNhY2hlZCBmcm9tIGluaXRpYWxpemVkIHZhciBNSUFNX1NUQVRVU19JRCAmIE1JQU1fUFJPVklERVJfSUQpXG4gICAgci5hZGRSZWxhdGlvbnNoaXAodGhpcy5wcm92aWRlclNlcnZpY2UuZ2V0Q2FjaGVkKCksICdyZWNpcGUtcHJvdmlkZXInKTtcbiAgICByLmFkZFJlbGF0aW9uc2hpcCh0aGlzLnN0YXR1c1NlcnZpY2UuZ2V0Q2FjaGVkKCksICdyZWNpcGUtc3RhdHVzJyk7XG4gICAgLy8gVE9ETyA6IGhhcmQgY29kZWQgKHBsYXQgcHJpbmNpcGFsIGFzIHR5cGUpXG4gICAgci5hZGRSZWxhdGlvbnNoaXAodGhpcy50eXBlU2VydmljZS5nZXRUeXBlQnlOYW1lKCdwbGF0IHByaW5jaXBhbCcpLCAncmVjaXBlLXR5cGUnKTtcbiAgICAvLyBPdmVycmlkZSBzcGVjaWZpYyBtaWFtIHJlc2VydmVkIGF0dHJpYnV0ZXNcbiAgICByLmF0dHJpYnV0ZXMuc291cmNlID0gbnVsbDtcbiAgICByLmF0dHJpYnV0ZXMuZGVzY3JpcHRpb24gPSBudWxsO1xuICAgIHIuYXR0cmlidXRlc1snZXh0LWlkJ10gPSBleHRJZDtcbiAgICByZXR1cm4gci5zYXZlKCkucGlwZShcbiAgICAgIHNraXBXaGlsZSgocmVzdWx0OiBhbnkpID0+IHJlc3VsdC5pc19sb2FkaW5nKSxcbiAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHJlc3VsdC5kYXRhKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUV4dElkKHRpdGxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByb3ZpZGVyID0gdGhpcy5wcm92aWRlclNlcnZpY2UuZ2V0Q2FjaGVkKCk7XG4gICAgcmV0dXJuIGAke3Byb3ZpZGVyLmF0dHJpYnV0ZXMubmFtZS5zbGljZSgwLCAzKS50b1VwcGVyQ2FzZSgpfS0ke3RpdGxlLnJlcGxhY2UoL1xccysvZ20sICctJykudG9Mb3dlckNhc2UoKX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZWNpcGUocHJvdmlkZXJJZDogc3RyaW5nLCBleHRJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYWxsKHtcbiAgICAgIGJlZm9yZXBhdGg6IGByZWNpcGUtcHJvdmlkZXJzLyR7cHJvdmlkZXJJZH1gLFxuICAgICAgcmVtb3RlZmlsdGVyOiB7XG4gICAgICAgICdleHQtaWQnOiBleHRJZCxcbiAgICAgICAgYWN0aXZlOiAndHJ1ZSxmYWxzZSdcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBoZWxwIHVzIHRvIGtlZXAgYSB0cmFjayBvZiByYW5kb21cbiAgICogYW5kIGF2b2lkIHRvIHNob3cgc2FtZSByZWNpcGUgbXV0aXBsZSB0aW1lc1xuICAgKi9cbiAgcHJpdmF0ZSBpbnRSYW5kb21TZWVkKCk6IHZvaWQge1xuICAgIHRoaXMucmFuZG9tU2VlZCA9IERhdGUubm93KCk7XG4gIH1cblxufVxuIl19
@@ -6,7 +6,7 @@ export var Icon;
6
6
  Icon[Icon["CostHight"] = 3] = "CostHight";
7
7
  Icon[Icon["CostMedium"] = 4] = "CostMedium";
8
8
  Icon[Icon["CostLow"] = 5] = "CostLow";
9
- Icon[Icon["DifficultyHight"] = 6] = "DifficultyHight";
9
+ Icon[Icon["DifficultyHigh"] = 6] = "DifficultyHigh";
10
10
  Icon[Icon["DifficultyMedium"] = 7] = "DifficultyMedium";
11
11
  Icon[Icon["DifficultyLow"] = 8] = "DifficultyLow";
12
12
  Icon[Icon["Heart"] = 9] = "Heart";
@@ -57,5 +57,8 @@ export var Icon;
57
57
  Icon[Icon["Video"] = 54] = "Video";
58
58
  Icon[Icon["Cross"] = 55] = "Cross";
59
59
  Icon[Icon["Ingredients"] = 56] = "Ingredients";
60
+ Icon[Icon["CheckboxChecked"] = 57] = "CheckboxChecked";
61
+ Icon[Icon["CheckboxUnchecked"] = 58] = "CheckboxUnchecked";
62
+ Icon[Icon["Upload"] = 59] = "Upload";
60
63
  })(Icon || (Icon = {}));
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5lbnVtLmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fdHlwZXMvaWNvbi5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLElBMERYO0FBMURELFdBQVksSUFBSTtJQUNkLHVDQUFRLENBQUE7SUFDUixxREFBZSxDQUFBO0lBQ2YsaUNBQUssQ0FBQTtJQUNMLHlDQUFTLENBQUE7SUFDVCwyQ0FBVSxDQUFBO0lBQ1YscUNBQU8sQ0FBQTtJQUNQLHFEQUFlLENBQUE7SUFDZix1REFBZ0IsQ0FBQTtJQUNoQixpREFBYSxDQUFBO0lBQ2IsaUNBQUssQ0FBQTtJQUNMLDBDQUFTLENBQUE7SUFDVCxrQ0FBSyxDQUFBO0lBQ0wsZ0NBQUksQ0FBQTtJQUNKLG9DQUFNLENBQUE7SUFDTiwwQ0FBUyxDQUFBO0lBQ1QsZ0NBQUksQ0FBQTtJQUNKLGdDQUFJLENBQUE7SUFDSixvQ0FBTSxDQUFBO0lBQ04sc0NBQU8sQ0FBQTtJQUNQLGtDQUFLLENBQUE7SUFDTCxnQ0FBSSxDQUFBO0lBQ0osZ0NBQUksQ0FBQTtJQUNKLDRDQUFVLENBQUE7SUFDViwwQ0FBUyxDQUFBO0lBQ1Qsa0NBQUssQ0FBQTtJQUNMLDhDQUFXLENBQUE7SUFDWCxzQ0FBTyxDQUFBO0lBQ1AsZ0NBQUksQ0FBQTtJQUNKLDhCQUFHLENBQUE7SUFDSCw0Q0FBVSxDQUFBO0lBQ1YsOENBQVcsQ0FBQTtJQUNYLG9DQUFNLENBQUE7SUFDTixrQ0FBSyxDQUFBO0lBQ0wsZ0NBQUksQ0FBQTtJQUNKLHdDQUFRLENBQUE7SUFDUixnQ0FBSSxDQUFBO0lBQ0osNENBQVUsQ0FBQTtJQUNWLGtDQUFLLENBQUE7SUFDTCxnQ0FBSSxDQUFBO0lBQ0osb0RBQWMsQ0FBQTtJQUNkLGtEQUFhLENBQUE7SUFDYixzQ0FBTyxDQUFBO0lBQ1AsMENBQVMsQ0FBQTtJQUNULGtDQUFLLENBQUE7SUFDTCx3Q0FBUSxDQUFBO0lBQ1IsOENBQVcsQ0FBQTtJQUNYLHdDQUFRLENBQUE7SUFDUixzQ0FBTyxDQUFBO0lBQ1Asc0NBQU8sQ0FBQTtJQUNQLGdDQUFJLENBQUE7SUFDSixzQ0FBTyxDQUFBO0lBQ1AsOENBQVcsQ0FBQTtJQUNYLDhDQUFXLENBQUE7SUFDWCx3RUFBd0IsQ0FBQTtJQUN4QixrQ0FBSyxDQUFBO0lBQ0wsa0NBQUssQ0FBQTtJQUNMLDhDQUFXLENBQUE7QUFDYixDQUFDLEVBMURXLElBQUksS0FBSixJQUFJLFFBMERmIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gSWNvbiB7XG4gIENhbGVuZGFyLFxuICBDaGVja0NpcmNsZUZpbGwsXG4gIENsZWFyLFxuICBDb3N0SGlnaHQsXG4gIENvc3RNZWRpdW0sXG4gIENvc3RMb3csXG4gIERpZmZpY3VsdHlIaWdodCxcbiAgRGlmZmljdWx0eU1lZGl1bSxcbiAgRGlmZmljdWx0eUxvdyxcbiAgSGVhcnQsXG4gIEhlYXJ0RnVsbCxcbiAgU2hhcmUsXG4gIFN3YXAsXG4gIFBlb3BsZSxcbiAgQ2hlY2tMaXN0LFxuICBUaW1lLFxuICBFdXJvLFxuICBCYXNrZXQsXG4gIEdyb2NlcnksXG4gIE1pbnVzLFxuICBQbHVzLFxuICBHcmlwLFxuICBSZXR1cm5MZWZ0LFxuICBBcnJvd0Rvd24sXG4gIFRyYXNoLFxuICBDbG91ZFVwbG9hZCxcbiAgUGljdHVyZSxcbiAgV2FpdCxcbiAgSG90LFxuICBSZWNpcGVCb29rLFxuICBDaGV2cm9uRG93bixcbiAgU2VhcmNoLFxuICBHcm91cCxcbiAgQ2FydCxcbiAgQ2FydFBsdXMsXG4gIEhlbHAsXG4gIFJlY2lwZUhlbHAsXG4gIFByaW50LFxuICBNZWFsLFxuICBIb3Jpem9udGFsRG90cyxcbiAgTm9SZWNpcGVGb3VuZCxcbiAgUHJlaGVhdCxcbiAgY2FyZXREb3duLFxuICBFbXB0eSxcbiAgT3BlbkJvb2ssXG4gIENpcmNsZWRQbHVzLFxuICBNYWluRGlzaCxcbiAgRGVzc2VydCxcbiAgU3RhcnRlcixcbiAgRWRpdCxcbiAgV2FybmluZyxcbiAgUHJlcGFyYXRpb24sXG4gIExpc3RTY2FubmVyLFxuICBEcmF3ZXJIb3Jpem9udGFsQ2xvc2VCYXIsXG4gIFZpZGVvLFxuICBDcm9zcyxcbiAgSW5ncmVkaWVudHNcbn1cbiJdfQ==
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5lbnVtLmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fdHlwZXMvaWNvbi5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLElBNkRYO0FBN0RELFdBQVksSUFBSTtJQUNkLHVDQUFRLENBQUE7SUFDUixxREFBZSxDQUFBO0lBQ2YsaUNBQUssQ0FBQTtJQUNMLHlDQUFTLENBQUE7SUFDVCwyQ0FBVSxDQUFBO0lBQ1YscUNBQU8sQ0FBQTtJQUNQLG1EQUFjLENBQUE7SUFDZCx1REFBZ0IsQ0FBQTtJQUNoQixpREFBYSxDQUFBO0lBQ2IsaUNBQUssQ0FBQTtJQUNMLDBDQUFTLENBQUE7SUFDVCxrQ0FBSyxDQUFBO0lBQ0wsZ0NBQUksQ0FBQTtJQUNKLG9DQUFNLENBQUE7SUFDTiwwQ0FBUyxDQUFBO0lBQ1QsZ0NBQUksQ0FBQTtJQUNKLGdDQUFJLENBQUE7SUFDSixvQ0FBTSxDQUFBO0lBQ04sc0NBQU8sQ0FBQTtJQUNQLGtDQUFLLENBQUE7SUFDTCxnQ0FBSSxDQUFBO0lBQ0osZ0NBQUksQ0FBQTtJQUNKLDRDQUFVLENBQUE7SUFDViwwQ0FBUyxDQUFBO0lBQ1Qsa0NBQUssQ0FBQTtJQUNMLDhDQUFXLENBQUE7SUFDWCxzQ0FBTyxDQUFBO0lBQ1AsZ0NBQUksQ0FBQTtJQUNKLDhCQUFHLENBQUE7SUFDSCw0Q0FBVSxDQUFBO0lBQ1YsOENBQVcsQ0FBQTtJQUNYLG9DQUFNLENBQUE7SUFDTixrQ0FBSyxDQUFBO0lBQ0wsZ0NBQUksQ0FBQTtJQUNKLHdDQUFRLENBQUE7SUFDUixnQ0FBSSxDQUFBO0lBQ0osNENBQVUsQ0FBQTtJQUNWLGtDQUFLLENBQUE7SUFDTCxnQ0FBSSxDQUFBO0lBQ0osb0RBQWMsQ0FBQTtJQUNkLGtEQUFhLENBQUE7SUFDYixzQ0FBTyxDQUFBO0lBQ1AsMENBQVMsQ0FBQTtJQUNULGtDQUFLLENBQUE7SUFDTCx3Q0FBUSxDQUFBO0lBQ1IsOENBQVcsQ0FBQTtJQUNYLHdDQUFRLENBQUE7SUFDUixzQ0FBTyxDQUFBO0lBQ1Asc0NBQU8sQ0FBQTtJQUNQLGdDQUFJLENBQUE7SUFDSixzQ0FBTyxDQUFBO0lBQ1AsOENBQVcsQ0FBQTtJQUNYLDhDQUFXLENBQUE7SUFDWCx3RUFBd0IsQ0FBQTtJQUN4QixrQ0FBSyxDQUFBO0lBQ0wsa0NBQUssQ0FBQTtJQUNMLDhDQUFXLENBQUE7SUFDWCxzREFBZSxDQUFBO0lBQ2YsMERBQWlCLENBQUE7SUFDakIsb0NBQU0sQ0FBQTtBQUNSLENBQUMsRUE3RFcsSUFBSSxLQUFKLElBQUksUUE2RGYiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBJY29uIHtcbiAgQ2FsZW5kYXIsXG4gIENoZWNrQ2lyY2xlRmlsbCxcbiAgQ2xlYXIsXG4gIENvc3RIaWdodCxcbiAgQ29zdE1lZGl1bSxcbiAgQ29zdExvdyxcbiAgRGlmZmljdWx0eUhpZ2gsXG4gIERpZmZpY3VsdHlNZWRpdW0sXG4gIERpZmZpY3VsdHlMb3csXG4gIEhlYXJ0LFxuICBIZWFydEZ1bGwsXG4gIFNoYXJlLFxuICBTd2FwLFxuICBQZW9wbGUsXG4gIENoZWNrTGlzdCxcbiAgVGltZSxcbiAgRXVybyxcbiAgQmFza2V0LFxuICBHcm9jZXJ5LFxuICBNaW51cyxcbiAgUGx1cyxcbiAgR3JpcCxcbiAgUmV0dXJuTGVmdCxcbiAgQXJyb3dEb3duLFxuICBUcmFzaCxcbiAgQ2xvdWRVcGxvYWQsXG4gIFBpY3R1cmUsXG4gIFdhaXQsXG4gIEhvdCxcbiAgUmVjaXBlQm9vayxcbiAgQ2hldnJvbkRvd24sXG4gIFNlYXJjaCxcbiAgR3JvdXAsXG4gIENhcnQsXG4gIENhcnRQbHVzLFxuICBIZWxwLFxuICBSZWNpcGVIZWxwLFxuICBQcmludCxcbiAgTWVhbCxcbiAgSG9yaXpvbnRhbERvdHMsXG4gIE5vUmVjaXBlRm91bmQsXG4gIFByZWhlYXQsXG4gIGNhcmV0RG93bixcbiAgRW1wdHksXG4gIE9wZW5Cb29rLFxuICBDaXJjbGVkUGx1cyxcbiAgTWFpbkRpc2gsXG4gIERlc3NlcnQsXG4gIFN0YXJ0ZXIsXG4gIEVkaXQsXG4gIFdhcm5pbmcsXG4gIFByZXBhcmF0aW9uLFxuICBMaXN0U2Nhbm5lcixcbiAgRHJhd2VySG9yaXpvbnRhbENsb3NlQmFyLFxuICBWaWRlbyxcbiAgQ3Jvc3MsXG4gIEluZ3JlZGllbnRzLFxuICBDaGVja2JveENoZWNrZWQsXG4gIENoZWNrYm94VW5jaGVja2VkLFxuICBVcGxvYWRcbn1cbiJdfQ==
@@ -70,8 +70,8 @@ const _c0 = function (a0) { return { "disable": a0 }; };
70
70
  function BasketPreviewLineComponent_div_15_Template(rf, ctx) { if (rf & 1) {
71
71
  const _r20 = i0.ɵɵgetCurrentView();
72
72
  i0.ɵɵelementStart(0, "div", 29);
73
+ i0.ɵɵlistener("click", function BasketPreviewLineComponent_div_15_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r20); const ctx_r19 = i0.ɵɵnextContext(); return ctx_r19.changeProduct(ctx_r19.line); });
73
74
  i0.ɵɵelementStart(1, "a", 30);
74
- i0.ɵɵlistener("click", function BasketPreviewLineComponent_div_15_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r20); const ctx_r19 = i0.ɵɵnextContext(); return ctx_r19.changeProduct(ctx_r19.line); });
75
75
  i0.ɵɵtext(2, "Changer d'article");
76
76
  i0.ɵɵelementEnd();
77
77
  i0.ɵɵelementEnd();
@@ -393,7 +393,7 @@ export class BasketPreviewLineComponent {
393
393
  }
394
394
  }
395
395
  BasketPreviewLineComponent.ɵfac = function BasketPreviewLineComponent_Factory(t) { return new (t || BasketPreviewLineComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.RecipesService), i0.ɵɵdirectiveInject(i2.GroceriesListsService), i0.ɵɵdirectiveInject(i1.BasketsService), i0.ɵɵdirectiveInject(i3.AnalyticsService), i0.ɵɵdirectiveInject(i1.PointOfSalesService), i0.ɵɵdirectiveInject(i1.UserService), i0.ɵɵdirectiveInject(i1.ContextService), i0.ɵɵdirectiveInject(i0.ElementRef)); };
396
- BasketPreviewLineComponent.ɵcmp = i0.ɵɵdefineComponent({ type: BasketPreviewLineComponent, selectors: [["ng-miam-basket-preview-line"]], inputs: { line: "line", uniqueLine: "uniqueLine", blockStates: "blockStates", displayTotalPricing: "displayTotalPricing", recipesAlwaysExpanded: "recipesAlwaysExpanded", itemsAlwaysExpanded: "itemsAlwaysExpanded", displayItemsUnitaryPrice: "displayItemsUnitaryPrice" }, outputs: { removed: "removed", countChanged: "countChanged", replaceItem: "replaceItem", showRecipe: "showRecipe" }, decls: 27, vars: 24, consts: [[1, "miam-basket-preview-line", 3, "id", "ngClass", "click"], [1, "miam-basket-preview-line__item"], [1, "miam-basket-preview-line__item__left"], ["class", "miam-basket-preview-line__item__remove", 3, "click", 4, "ngIf"], [1, "miam-basket-preview-line__item__picture"], [3, "src", "click"], [1, "miam-basket-preview-line__item__details"], [1, "miam-basket-preview-line__item__title", 3, "click"], [1, "miam-basket-preview-line__item__description"], [4, "ngFor", "ngForOf"], [1, "miam-basket-preview-line__item__actions"], ["class", "miam-basket-preview-line__item__showDetails", 4, "ngIf"], ["class", "miam-basket-preview-line__item__change", 4, "ngIf"], ["class", "miam-basket-preview-line__item__inlineTag__container", 4, "ngIf"], [1, "miam-basket-preview-line__item__right"], ["class", "miam-basket-preview-line__item__price", 4, "ngIf", "ngIfElse"], ["pricePerguest", ""], [1, "miam-basket-preview-line__item__count"], ["class", "miam-basket-preview-line__item__count__for", 4, "ngIf"], [3, "counter", "minRange", "counterChange"], ["class", "miam-basket-preview-line__item__count__people", 4, "ngIf"], ["class", "miam-basket-preview-line__add__button", 4, "ngIf"], ["class", "miam-basket-preview-lines", 4, "ngIf"], [1, "miam-basket-preview-line__item__remove", 3, "click"], ["height", "24", "width", "24", "primaryColor", "var(--m-color-grey-text-dark)", 3, "iconName", 4, "ngIf", "ngIfElse"], ["addLoader", ""], ["height", "24", "width", "24", "primaryColor", "var(--m-color-grey-text-dark)", 3, "iconName"], [1, "icon-container"], [1, "miam-basket-preview-line__item__showDetails"], [1, "miam-basket-preview-line__item__change"], [1, "miam-basket-preview-line__item__change__link", 3, "ngClass", "click"], [1, "miam-basket-preview-line__item__inlineTag__container"], [1, "miam-basket-preview-line__item__inlineTag"], [1, "miam-basket-preview-line__item__price"], [3, "recipe", "serves"], [1, "miam-basket-preview-line__item__count__for"], [1, "miam-basket-preview-line__item__count__people"], [1, "miam-basket-preview-line__add__button"], [1, "m-button-fab-primary", 3, "click"], ["primaryColor", "#fff", 3, "width", "height", "iconName"], [1, "miam-basket-preview-lines"], [4, "ngIf", "ngIfElse"], ["loader", ""], [3, "line", "displayItemsUnitaryPrice", "blockStates", "removed", "replaceItem", 4, "ngFor", "ngForOf"], ["mode", "unavailable", 3, "entries", "alwaysExpanded", 4, "ngIf"], ["mode", "oftenDeleted", 3, "entries", "alwaysExpanded", "entryAdded", 4, "ngIf"], ["mode", "removed", 3, "entries", "alwaysExpanded", "reduced", "entryAdded", 4, "ngIf"], [3, "line", "displayItemsUnitaryPrice", "blockStates", "removed", "replaceItem"], ["mode", "unavailable", 3, "entries", "alwaysExpanded"], ["mode", "oftenDeleted", 3, "entries", "alwaysExpanded", "entryAdded"], ["mode", "removed", 3, "entries", "alwaysExpanded", "reduced", "entryAdded"], [1, "miam-basket-preview-line__loader-container"]], template: function BasketPreviewLineComponent_Template(rf, ctx) { if (rf & 1) {
396
+ BasketPreviewLineComponent.ɵcmp = i0.ɵɵdefineComponent({ type: BasketPreviewLineComponent, selectors: [["ng-miam-basket-preview-line"]], inputs: { line: "line", uniqueLine: "uniqueLine", blockStates: "blockStates", displayTotalPricing: "displayTotalPricing", recipesAlwaysExpanded: "recipesAlwaysExpanded", itemsAlwaysExpanded: "itemsAlwaysExpanded", displayItemsUnitaryPrice: "displayItemsUnitaryPrice" }, outputs: { removed: "removed", countChanged: "countChanged", replaceItem: "replaceItem", showRecipe: "showRecipe" }, decls: 27, vars: 24, consts: [[1, "miam-basket-preview-line", 3, "id", "ngClass", "click"], [1, "miam-basket-preview-line__item"], [1, "miam-basket-preview-line__item__left"], ["class", "miam-basket-preview-line__item__remove", 3, "click", 4, "ngIf"], [1, "miam-basket-preview-line__item__picture"], [3, "src", "click"], [1, "miam-basket-preview-line__item__details"], [1, "miam-basket-preview-line__item__title", 3, "click"], [1, "miam-basket-preview-line__item__description"], [4, "ngFor", "ngForOf"], [1, "miam-basket-preview-line__item__actions"], ["class", "miam-basket-preview-line__item__showDetails", 4, "ngIf"], ["class", "miam-basket-preview-line__item__change", 3, "click", 4, "ngIf"], ["class", "miam-basket-preview-line__item__inlineTag__container", 4, "ngIf"], [1, "miam-basket-preview-line__item__right"], ["class", "miam-basket-preview-line__item__price", 4, "ngIf", "ngIfElse"], ["pricePerguest", ""], [1, "miam-basket-preview-line__item__count"], ["class", "miam-basket-preview-line__item__count__for", 4, "ngIf"], [3, "counter", "minRange", "counterChange"], ["class", "miam-basket-preview-line__item__count__people", 4, "ngIf"], ["class", "miam-basket-preview-line__add__button", 4, "ngIf"], ["class", "miam-basket-preview-lines", 4, "ngIf"], [1, "miam-basket-preview-line__item__remove", 3, "click"], ["height", "24", "width", "24", "primaryColor", "var(--m-color-grey-text-dark)", 3, "iconName", 4, "ngIf", "ngIfElse"], ["addLoader", ""], ["height", "24", "width", "24", "primaryColor", "var(--m-color-grey-text-dark)", 3, "iconName"], [1, "icon-container"], [1, "miam-basket-preview-line__item__showDetails"], [1, "miam-basket-preview-line__item__change", 3, "click"], [1, "miam-basket-preview-line__item__change__link", 3, "ngClass"], [1, "miam-basket-preview-line__item__inlineTag__container"], [1, "miam-basket-preview-line__item__inlineTag"], [1, "miam-basket-preview-line__item__price"], [3, "recipe", "serves"], [1, "miam-basket-preview-line__item__count__for"], [1, "miam-basket-preview-line__item__count__people"], [1, "miam-basket-preview-line__add__button"], [1, "m-button-fab-primary", 3, "click"], ["primaryColor", "#fff", 3, "width", "height", "iconName"], [1, "miam-basket-preview-lines"], [4, "ngIf", "ngIfElse"], ["loader", ""], [3, "line", "displayItemsUnitaryPrice", "blockStates", "removed", "replaceItem", 4, "ngFor", "ngForOf"], ["mode", "unavailable", 3, "entries", "alwaysExpanded", 4, "ngIf"], ["mode", "oftenDeleted", 3, "entries", "alwaysExpanded", "entryAdded", 4, "ngIf"], ["mode", "removed", 3, "entries", "alwaysExpanded", "reduced", "entryAdded", 4, "ngIf"], [3, "line", "displayItemsUnitaryPrice", "blockStates", "removed", "replaceItem"], ["mode", "unavailable", 3, "entries", "alwaysExpanded"], ["mode", "oftenDeleted", 3, "entries", "alwaysExpanded", "entryAdded"], ["mode", "removed", 3, "entries", "alwaysExpanded", "reduced", "entryAdded"], [1, "miam-basket-preview-line__loader-container"]], template: function BasketPreviewLineComponent_Template(rf, ctx) { if (rf & 1) {
397
397
  i0.ɵɵelementStart(0, "div", 0);
398
398
  i0.ɵɵlistener("click", function BasketPreviewLineComponent_Template_div_click_0_listener($event) { return ctx.line.displayMode ? ctx.toggleRecipeDisplay($event) : ctx.toggleExpanded($event); });
399
399
  i0.ɵɵelementStart(1, "div", 1);
@@ -501,4 +501,4 @@ BasketPreviewLineComponent.ɵcmp = i0.ɵɵdefineComponent({ type: BasketPreviewL
501
501
  }], showRecipe: [{
502
502
  type: Output
503
503
  }] }); })();
504
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFza2V0LXByZXZpZXctbGluZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2J1aWxkcy9taWFtL25nLW1pYW0tc2RrL3Byb2plY3RzL25nLW1pYW0vc3JjLyIsInNvdXJjZXMiOlsibGliL193ZWItY29tcG9uZW50cy9iYXNrZXQtcHJldmlldy9iYXNrZXQtcHJldmlldy1saW5lL2Jhc2tldC1wcmV2aWV3LWxpbmUuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9iYXNrZXQtcHJldmlldy9iYXNrZXQtcHJldmlldy1saW5lL2Jhc2tldC1wcmV2aWV3LWxpbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsRUFFakIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUVqQixVQUFVLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRS9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0SCxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNuRSxPQUFPLE1BQU0sTUFBTSxrQkFBa0IsQ0FBQzs7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O2tCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBPbkRlc3Ryb3ksXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT25Jbml0LFxuICBFbGVtZW50UmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFza2V0UHJldmlld0xpbmUgfSBmcm9tICcuLi8uLi8uLi9fbW9kZWxzL2Jhc2tldC1wcmV2aWV3LWxpbmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmb3JrSm9pbiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCYXNrZXRFbnRyeSB9IGZyb20gJy4uLy4uLy4uL19tb2RlbHMvYmFza2V0LWVudHJ5JztcbmltcG9ydCB7IEdyb2Nlcmllc0xpc3RzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcy9ncm9jZXJpZXMtbGlzdHMuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNrZXRzU2VydmljZSwgQ29udGV4dFNlcnZpY2UsIFBvaW50T2ZTYWxlc1NlcnZpY2UsIFJlY2lwZXNTZXJ2aWNlLCBVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX3NlcnZpY2VzL2FuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuLi8uLi8uLi9fdHlwZXMvaWNvbi5lbnVtJztcbmltcG9ydCB7IHN0b3BFdmVudFByb3BhZ2F0aW9uIH0gZnJvbSAnLi4vLi4vLi4vX3V0aWxzL2V2ZW50LnV0aWxzJztcbmltcG9ydCByZW1vdmUgZnJvbSAnbG9kYXNoLWVzL3JlbW92ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLW1pYW0tYmFza2V0LXByZXZpZXctbGluZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9iYXNrZXQtcHJldmlldy1saW5lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYmFza2V0LXByZXZpZXctbGluZS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBCYXNrZXRQcmV2aWV3TGluZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgbGluZTogQmFza2V0UHJldmlld0xpbmU7XG4gIEBJbnB1dCgpIHVuaXF1ZUxpbmU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGJsb2NrU3RhdGVzOiBCZWhhdmlvclN1YmplY3Q8eyBjdXJyZW50T3BlbkxpbmU6IHN0cmluZywgb3ZlcmxheU9wZW46IGJvb2xlYW4sIGxpbmVDb21wb25lbnQ6IEJhc2tldFByZXZpZXdMaW5lQ29tcG9uZW50IH0+O1xuICBASW5wdXQoKSBkaXNwbGF5VG90YWxQcmljaW5nID0gdHJ1ZTtcbiAgQElucHV0KCkgcmVjaXBlc0Fsd2F5c0V4cGFuZGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGl0ZW1zQWx3YXlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzcGxheUl0ZW1zVW5pdGFyeVByaWNlID0gZmFsc2U7XG4gIEBPdXRwdXQoKSByZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxCYXNrZXRQcmV2aWV3TGluZT4oKTtcbiAgQE91dHB1dCgpIGNvdW50Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QmFza2V0UHJldmlld0xpbmU+KCk7XG4gIEBPdXRwdXQoKSByZXBsYWNlSXRlbSA9IG5ldyBFdmVudEVtaXR0ZXI8QmFza2V0UHJldmlld0xpbmU+KCk7XG4gIEBPdXRwdXQoKSBzaG93UmVjaXBlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGlkOiBzdHJpbmcsIGd1ZXN0czogbnVtYmVyIH0+KCk7XG5cbiAgZW50cmllc0xpbmVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QmFza2V0UHJldmlld0xpbmVbXT4obnVsbCk7XG4gIGV4cGFuZGVkID0gZmFsc2U7XG4gIGxvYWRpbmcgPSB0cnVlO1xuICBkaXNhYmxlSXRlbVNlbGVjdG9yID0gZmFsc2U7XG4gIHNlbGVjdEl0ZW0gPSBmYWxzZTtcbiAgaWNvbiA9IEljb247XG4gIHJlbW92aW5nID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyByZWNpcGVzU2VydmljZTogUmVjaXBlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBsaXN0c1NlcnZpY2U6IEdyb2Nlcmllc0xpc3RzU2VydmljZSxcbiAgICBwcml2YXRlIGJhc2tldHNTZXJ2aWNlOiBCYXNrZXRzU2VydmljZSxcbiAgICBwcml2YXRlIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHBvc1NlcnZpY2U6IFBvaW50T2ZTYWxlc1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZSxcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICApIHsgfVxuXG4gIC8vIFRPRE86IGNhbiB3ZSByZW1vdmUgdGhlIGNvbmRpdGlvbiBvbiB1bmlxdWVMaW5lP1xuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy51bmlxdWVMaW5lKSB7XG4gICAgICB0aGlzLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuYnVpbGRFbnRyaWVzTGluZXMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViOiBTdWJzY3JpcHRpb24pID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIGNoYW5nZUNvdW50KGNvdW50OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5saW5lLmNvdW50ID09PSBjb3VudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubGluZS5jb3VudCA9IGNvdW50O1xuICAgIGlmICh0aGlzLmxpbmUuaGFzRW50cmllcygpIHx8IHRoaXMubGluZS5kaXNwbGF5TW9kZSkge1xuICAgICAgdGhpcy5jb3VudENoYW5nZWQuZW1pdCh0aGlzLmxpbmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhhbmRsZVN1YmxpbmVDb3VudENoYW5nZShjb3VudCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlU3VibGluZUNvdW50Q2hhbmdlKGNvdW50OiBudW1iZXIpIHtcbiAgICBpZiAoY291bnQgPT09IDApIHtcbiAgICAgIHRoaXMucmVtb3ZlZC5lbWl0KHRoaXMubGluZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubGluZS5yZWNvcmQuYXR0cmlidXRlcy5xdWFudGl0eSA9IGNvdW50O1xuICAgIHRoaXMubGluZS5yZWNvcmQudXBkYXRlVG90YWxQcmljZSgpO1xuICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnQoJ2NoYW5nZS1pdGVtLXF1YW50aXR5Jyk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5saW5lLnJlY29yZC5zYXZlKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmJhc2tldHNTZXJ2aWNlLnJlbG9hZEJhc2tldCgpKVxuICAgICkuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgdG9nZ2xlRXhwYW5kZWQoZXZlbnQpIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5saW5lLmhhc0VudHJpZXMoKSB8fFxuICAgICAgdGhpcy51bmlxdWVMaW5lIHx8XG4gICAgICBldmVudC50YXJnZXQucGFyZW50RWxlbWVudC5jbGFzc05hbWUgPT09ICdpbnB1dC1jb250YWluZXInIHx8XG4gICAgICBldmVudC50YXJnZXQucGFyZW50RWxlbWVudC5jbGFzc05hbWUgPT09ICdyZW1vdmUnIHx8XG4gICAgICBldmVudC50YXJnZXQucGFyZW50RWxlbWVudC5ub2RlTmFtZSA9PT0gJ3N2ZydcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmV4cGFuZGVkID0gdGhpcy5yZWNpcGVzQWx3YXlzRXhwYW5kZWQgPyB0cnVlIDogIXRoaXMuZXhwYW5kZWQ7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGlmICghdGhpcy5lbnRyaWVzTGluZXMkLnZhbHVlKSB7XG4gICAgICB0aGlzLmJ1aWxkRW50cmllc0xpbmVzKCk7XG4gICAgfVxuICB9XG5cbiAgZGVsZXRlRW50cnkoZW50cnk6IEJhc2tldEVudHJ5KSB7XG4gICAgLy8gUmVtb3ZlIGVudHJ5IGZyb20gbGluZSBlbnRyaWVzIGFycmF5XG4gICAgLy8gVE9ETzogaGFuZGxlIG90aGVyIHRoYW4gZm91bmRcbiAgICByZW1vdmUodGhpcy5saW5lLmVudHJpZXMuZm91bmQsIGUgPT4gZS5pZCA9PT0gZW50cnkuaWQpO1xuICAgIHRoaXMuYnVpbGRFbnRyaWVzTGluZXMoKTtcblxuICAgIC8vIFJlbW92ZSByZWxhdGVkIGdyb2NlcmllcyBlbnRyeSAodXBkYXRlIHN0YXR1cyB0byBcImRlbGV0ZWRcIikgYW5kIHJlbG9hZCBsaXN0XG4gICAgY29uc3QgZ0VudHJ5ID0gZW50cnkucmVsYXRpb25zaGlwc1snZ3JvY2VyaWVzLWVudHJ5J10uZGF0YTtcbiAgICBnRW50cnkuYXR0cmlidXRlcy5zdGF0dXMgPSAnZGVsZXRlZCc7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goZ0VudHJ5LnNhdmUoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuYmFza2V0c1NlcnZpY2UucmVsb2FkQmFza2V0KCkpXG4gICAgKS5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBjaGFuZ2VQcm9kdWN0KGxpbmU6IEJhc2tldFByZXZpZXdMaW5lKSB7XG4gICAgdGhpcy5ibG9ja1N0YXRlcz8ubmV4dCh7IGN1cnJlbnRPcGVuTGluZTogbGluZS5pZCwgb3ZlcmxheU9wZW46IHRydWUsIGxpbmVDb21wb25lbnQ6IHRoaXMgfSk7XG4gICAgdGhpcy5zZWxlY3RJdGVtID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5yZXBsYWNlSXRlbS5lbWl0KGxpbmUpO1xuICB9XG5cbiAgLy8gVE9ETzogcmVtb3ZlZCAtIG5ldmVyIGNhbGxlZCA/XG4gIHByb2R1Y3RDaG9zZW4obGluZT86IEJhc2tldFByZXZpZXdMaW5lKSB7XG4gICAgdGhpcy5zZWxlY3RJdGVtID0gZmFsc2U7XG4gICAgaWYgKGxpbmUpIHsgdGhpcy5kaXNhYmxlSXRlbVNlbGVjdG9yID0gdHJ1ZTsgfVxuICAgIHRoaXMuYmxvY2tTdGF0ZXM/Lm5leHQoeyBjdXJyZW50T3BlbkxpbmU6IG51bGwsIG92ZXJsYXlPcGVuOiBmYWxzZSwgbGluZUNvbXBvbmVudDogbnVsbCB9KTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoZmFsc2UpO1xuICB9XG5cbiAgYnVpbGRFbnRyaWVzTGluZXMoKSB7XG4gICAgY29uc3QgZW50cmllcyA9IFtcbiAgICAgIC4uLnRoaXMubGluZS5lbnRyaWVzLmZvdW5kLFxuICAgICAgLi4udGhpcy5saW5lLmVudHJpZXMubm90Rm91bmQsXG4gICAgICAuLi50aGlzLmxpbmUuZW50cmllcy5vZnRlbkRlbGV0ZWQsXG4gICAgICAuLi50aGlzLmxpbmUuZW50cmllcy5yZW1vdmVkXTtcbiAgICBlbnRyaWVzLm1hcCgoZW50cnk6IEJhc2tldEVudHJ5KSA9PiB7XG4gICAgICBlbnRyeS5zZXRJdGVtc1NlbGVjdGlvbigpO1xuICAgICAgZW50cnkudXBkYXRlVG90YWxQcmljZSgpO1xuICAgIH0pO1xuICAgIHRoaXMuZW50cmllc0xpbmVzJC5uZXh0KFxuICAgICAgZW50cmllc1xuICAgICAgICAuZmlsdGVyKGVudHJ5ID0+IHRoaXMubGluZS5lbnRyaWVzLmZvdW5kLm1hcChlID0+IGUuaWQpLmluY2x1ZGVzKGVudHJ5LmlkKSlcbiAgICAgICAgLm1hcChlbnRyeSA9PiBCYXNrZXRQcmV2aWV3TGluZS5mcm9tQmFza2V0RW50cnkoZW50cnkpKVxuICAgICk7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgYWRkRW50cnkoZW50cnk6IEJhc2tldEVudHJ5KSB7XG4gICAgY29uc3QgZ0VudHJ5ID0gZW50cnkucmVsYXRpb25zaGlwc1snZ3JvY2VyaWVzLWVudHJ5J10uZGF0YTtcbiAgICBnRW50cnkuYXR0cmlidXRlcy5zdGF0dXMgPSAnYWN0aXZlJztcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChnRW50cnkuc2F2ZSgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5iYXNrZXRzU2VydmljZS5yZWxvYWRCYXNrZXQoKSlcbiAgICApLnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIHRyYWNrQnlJdGVtSWQoaW5kZXg6IG51bWJlciwgbGluZTogQmFza2V0UHJldmlld0xpbmUpIHtcbiAgICByZXR1cm4gbGluZSA/IGxpbmUucmVjb3JkWydzZWxlY3RlZC1pdGVtLWlkJ10gKyAnLScgKyBsaW5lLnJlY29yZC5hdHRyaWJ1dGVzLnF1YW50aXR5IDogbnVsbDtcbiAgfVxuXG4gIHRvZ2dsZVJlY2lwZURpc3BsYXkoZXZlbnQsIGFkZFJlY2lwZSA9IGZhbHNlKSB7XG4gICAgaWYgKCF0aGlzLmxpbmUuaXNSZWNpcGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFkZFJlY2lwZSkge1xuICAgICAgZm9ya0pvaW4oW1xuICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLmlzTG9nZ2VkJC5hc09ic2VydmFibGUoKS5waXBlKHRha2UoMSkpLFxuICAgICAgICB0aGlzLnBvc1NlcnZpY2UuaXNQb3NWYWxpZCgpLnBpcGUodGFrZSgxKSlcbiAgICAgIF0pLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICBjb25zdCBpc0hvb2tPayA9IHRoaXMuY29udGV4dFNlcnZpY2UuaG9va0NhbGxiYWNrKHJlc1swXSwgcmVzWzFdKTtcbiAgICAgICAgaWYgKGlzSG9va09rKSB7XG4gICAgICAgICAgdGhpcy5hZGRSZWNpcGVBY3Rpb25PSygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZWNpcGVzU2VydmljZS5kaXNwbGF5KHRoaXMubGluZS5pZCwge2d1ZXN0czogdGhpcy5saW5lLmNvdW50fSk7XG4gICAgfVxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgYWRkUmVjaXBlQWN0aW9uT0soKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5saXN0c1NlcnZpY2UuYXBwZW5kUmVjaXBlVG9MaXN0KHRoaXMubGluZS5pZCwgdGhpcy5saW5lLmNvdW50LCAncmVjaXBlLWhpc3RvcnknKS5zdWJzY3JpYmUoKSk7XG4gICAgdGhpcy5yZWNpcGVzU2VydmljZS5kaXNwbGF5KHRoaXMubGluZS5pZCwge2d1ZXN0czogdGhpcy5saW5lLmNvdW50LCBwcmV2aWV3TW9kZTogdHJ1ZX0pO1xuICB9XG5cbiAgcmVtb3ZlTGluZShldmVudCkge1xuICAgIHRoaXMucmVtb3ZpbmcgPSB0cnVlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICBzdG9wRXZlbnRQcm9wYWdhdGlvbihldmVudCk7XG4gICAgdGhpcy5yZW1vdmVkLmVtaXQodGhpcy5saW5lKTtcbiAgfVxuXG4gIHByaWNlSW50ZWdlclBhcnQoKXtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnByaWNlVG9EaXNwbGF5KCk/LnRvU3RyaW5nKCkuc3BsaXQoJy4nKTtcbiAgICByZXR1cm4gdmFsdWVzPy5sZW5ndGggPiAwID8gdmFsdWVzWzBdIDogJzAnO1xuICB9XG5cbiAgcHJpY2VEZWNpbWFsUGFydCgpe1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMucHJpY2VUb0Rpc3BsYXkoKT8udG9TdHJpbmcoKS5zcGxpdCgnLicpO1xuICAgIHJldHVybiB2YWx1ZXM/Lmxlbmd0aCA9PT0gMiA/IHZhbHVlc1sxXSA6ICcwMCc7XG4gIH1cblxuICBwcml2YXRlIHByaWNlVG9EaXNwbGF5KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMubGluZS5pc1JlY2lwZSB8fCAhdGhpcy5kaXNwbGF5SXRlbXNVbml0YXJ5UHJpY2UgfHwgdGhpcy5saW5lLnByaWNlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5saW5lLnByaWNlO1xuICAgIH1cbiAgICBjb25zdCBiZUl0ZW0gPSAgdGhpcy5saW5lLnJlY29yZC5hdHRyaWJ1dGVzWydiYXNrZXQtZW50cmllcy1pdGVtcyddLmZpbmQoaSA9PiBpLml0ZW1faWQgPT09IHRoaXMubGluZS5yZWNvcmQuYXR0cmlidXRlc1snc2VsZWN0ZWQtaXRlbS1pZCddKTtcbiAgICByZXR1cm4gcGFyc2VGbG9hdChiZUl0ZW1bJ3VuaXQtcHJpY2UnXSkudG9GaXhlZCgyKTtcbiAgfVxufVxuIiwiPGRpdlxuICBpZD1cInt7bGluZS5pZH19XCJcbiAgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LWxpbmVcIlxuICBbbmdDbGFzc109XCJ7Y2xpY2thYmxlOiBsaW5lLmhhc0VudHJpZXMoKSB8fCBsaW5lLmRpc3BsYXlNb2RlLCBleHBhbmRlZDogZXhwYW5kZWQsIGVsZXZhdGUgOiBzZWxlY3RJdGVtfVwiXG4gIChjbGljayk9XCJsaW5lLmRpc3BsYXlNb2RlID8gdG9nZ2xlUmVjaXBlRGlzcGxheSgkZXZlbnQpIDogdG9nZ2xlRXhwYW5kZWQoJGV2ZW50KVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LWxpbmVfX2l0ZW1cIj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1iYXNrZXQtcHJldmlldy1saW5lX19pdGVtX19sZWZ0XCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiIXVuaXF1ZUxpbmUgJiYgIWxpbmUuZGlzcGxheU1vZGVcIiBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctbGluZV9faXRlbV9fcmVtb3ZlXCIgKGNsaWNrKT1cInJlbW92ZUxpbmUoJGV2ZW50KVwiPlxuICAgICAgICA8bmctbWlhbS1pY29uICpuZ0lmPVwiIXJlbW92aW5nIGVsc2UgYWRkTG9hZGVyXCIgW2ljb25OYW1lXT0naWNvbi5UcmFzaCcgaGVpZ2h0PScyNCcgd2lkdGg9JzI0JyBwcmltYXJ5Q29sb3I9J3ZhcigtLW0tY29sb3ItZ3JleS10ZXh0LWRhcmspJz48L25nLW1pYW0taWNvbj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNhZGRMb2FkZXI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8bmctbWlhbS1sb2FkZXI+PC9uZy1taWFtLWxvYWRlcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctbGluZV9faXRlbV9fcGljdHVyZVwiPlxuICAgICAgICA8aW1nIChjbGljayk9XCJ0b2dnbGVSZWNpcGVEaXNwbGF5KCRldmVudClcIiBbc3JjXT1cImxpbmUucGljdHVyZVwiPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1iYXNrZXQtcHJldmlldy1saW5lX19pdGVtX19kZXRhaWxzXCI+XG4gICAgICAgIDxzdHJvbmcgKGNsaWNrKT1cInRvZ2dsZVJlY2lwZURpc3BsYXkoJGV2ZW50KVwiIGNsYXNzPVwibWlhbS1iYXNrZXQtcHJldmlldy1saW5lX19pdGVtX190aXRsZVwiPlxuICAgICAgICAgIHt7IGxpbmUudGl0bGUgfCBjYXBpdGFsaXplRmlyc3RMZXR0ZXIgfX1cbiAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LWxpbmVfX2l0ZW1fX2Rlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsaW5lLmRlc2NyaXB0aW9uXCI+e3sgaXRlbSB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctbGluZV9faXRlbV9fYWN0aW9uc1wiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIobGluZS5oYXNFbnRyaWVzKCkgJiYgIXVuaXF1ZUxpbmUpXCIgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LWxpbmVfX2l0ZW1fX3Nob3dEZXRhaWxzXCI+XG4gICAgICAgICAgICB7eyBleHBhbmRlZCA/ICdNYXNxdWVyJyA6ICdWb2lyJyB9fSBsZSBkw6l0YWlsXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImxpbmUuZGlzcGxheU1vZGVcIiBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctbGluZV9faXRlbV9fc2hvd0RldGFpbHNcIj5cbiAgICAgICAgICAgIFZvaXIgbGEgcmVjZXR0ZVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbGluZS5pc1JlY2lwZSAmJiBsaW5lPy5yZWNvcmQ/LmNhbmRpZGF0ZUl0ZW1zPy5sZW5ndGggPiAwXCIgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LWxpbmVfX2l0ZW1fX2NoYW5nZVwiPlxuICAgICAgICAgICAgPGEgKGNsaWNrKT1cImNoYW5nZVByb2R1Y3QobGluZSlcIiBbbmdDbGFzc109XCJ7J2Rpc2FibGUnOiBkaXNhYmxlSXRlbVNlbGVjdG9yfVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibWlhbS1iYXNrZXQtcHJldmlldy1saW5lX19pdGVtX19jaGFuZ2VfX2xpbmtcIj5DaGFuZ2VyIGQnYXJ0aWNsZTwvYT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwibGluZS5pbmxpbmVUYWdcIiBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctbGluZV9faXRlbV9faW5saW5lVGFnX19jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1iYXNrZXQtcHJldmlldy1saW5lX19pdGVtX19pbmxpbmVUYWdcIj57eyBsaW5lLmlubGluZVRhZyB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1iYXNrZXQtcHJldmlldy1saW5lX19pdGVtX19yaWdodFwiPlxuICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXlUb3RhbFByaWNpbmcgfHwgIWxpbmUuaXNSZWNpcGUgZWxzZSBwcmljZVBlcmd1ZXN0XCIgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LWxpbmVfX2l0ZW1fX3ByaWNlXCI+XG4gICAgICAgIDxzcGFuPnt7IHByaWNlSW50ZWdlclBhcnQoKSB9fSw8L3NwYW4+XG4gICAgICAgIDxzcGFuPnt7IHByaWNlRGVjaW1hbFBhcnQoKSB9fTwvc3Bhbj4gICBcbiAgICAgICAgPHNwYW4+IOKCrDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLXRlbXBsYXRlICNwcmljZVBlcmd1ZXN0PlxuICAgICAgICA8bmctbWlhbS1yZWNpcGUtcHJpY2luZyBbcmVjaXBlXT1cInJlY2lwZXNTZXJ2aWNlLmdldChsaW5lLmlkKSB8IGFzeW5jXCIgW3NlcnZlc109XCJsaW5lLmNvdW50XCI+PC9uZy1taWFtLXJlY2lwZS1wcmljaW5nPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LWxpbmVfX2l0ZW1fX2NvdW50XCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJsaW5lLmlzUmVjaXBlXCIgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LWxpbmVfX2l0ZW1fX2NvdW50X19mb3JcIj5wb3VyPC9kaXY+XG4gICAgICAgIDxuZy1taWFtLWNvdW50ZXItaW5wdXQgW2NvdW50ZXJdPVwibGluZS5jb3VudFwiIChjb3VudGVyQ2hhbmdlKT1cImNoYW5nZUNvdW50KCRldmVudClcIiBbbWluUmFuZ2VdPVwibGluZS5pc1JlY2lwZSA/IDEgOiAwXCI+XG4gICAgICAgIDwvbmctbWlhbS1jb3VudGVyLWlucHV0PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwibGluZS5pc1JlY2lwZVwiIGNsYXNzPVwibWlhbS1iYXNrZXQtcHJldmlldy1saW5lX19pdGVtX19jb3VudF9fcGVvcGxlXCI+cGVyc29ubmV7eyBsaW5lLmNvdW50ID4gMSA/ICdzJyA6ICcnIH19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJsaW5lLmRpc3BsYXlNb2RlXCIgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LWxpbmVfX2FkZF9fYnV0dG9uXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJtLWJ1dHRvbi1mYWItcHJpbWFyeVwiIChjbGljayk9XCJ0b2dnbGVSZWNpcGVEaXNwbGF5KCRldmVudCwgdHJ1ZSlcIj5cbiAgICAgICAgICA8bmctbWlhbS1pY29uIFt3aWR0aF09XCIyNFwiIFtoZWlnaHRdPVwiMjRcIiBwcmltYXJ5Q29sb3I9JyNmZmYnIFtpY29uTmFtZV09XCJpY29uLkNhcnRcIj48L25nLW1pYW0taWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctbGluZXNcIiAqbmdJZj1cImV4cGFuZGVkXCI+XG4gIDxkaXYgKm5nSWY9XCIhbG9hZGluZyBlbHNlIGxvYWRlclwiPlxuICAgIDxuZy1taWFtLWJhc2tldC1wcmV2aWV3LWxpbmUgKm5nRm9yPVwibGV0IGVudHJ5TGluZSBvZiBlbnRyaWVzTGluZXMkIHwgYXN5bmNcIiBbbGluZV09XCJlbnRyeUxpbmVcIiBbZGlzcGxheUl0ZW1zVW5pdGFyeVByaWNlXT1cImRpc3BsYXlJdGVtc1VuaXRhcnlQcmljZVwiXG4gICAgICAocmVtb3ZlZCk9XCJkZWxldGVFbnRyeSgkZXZlbnQucmVjb3JkKVwiIChyZXBsYWNlSXRlbSk9J3JlcGxhY2VJdGVtLmVtaXQobGluZSknIFtibG9ja1N0YXRlc109J2Jsb2NrU3RhdGVzJz48L25nLW1pYW0tYmFza2V0LXByZXZpZXctbGluZT5cbiAgICA8bmctbWlhbS1iYXNrZXQtcHJldmlldy1kaXNhYmxlZCAqbmdJZj1cImxpbmUuZW50cmllcy5ub3RGb3VuZC5sZW5ndGggPiAwXCIgW2VudHJpZXNdPVwibGluZS5lbnRyaWVzLm5vdEZvdW5kXCIgW2Fsd2F5c0V4cGFuZGVkXT1cIml0ZW1zQWx3YXlzRXhwYW5kZWRcIlxuICAgICAgbW9kZT1cInVuYXZhaWxhYmxlXCI+PC9uZy1taWFtLWJhc2tldC1wcmV2aWV3LWRpc2FibGVkPlxuICAgIDxuZy1taWFtLWJhc2tldC1wcmV2aWV3LWRpc2FibGVkICpuZ0lmPVwibGluZS5lbnRyaWVzLm9mdGVuRGVsZXRlZC5sZW5ndGggPiAwXCIgW2VudHJpZXNdPVwibGluZS5lbnRyaWVzLm9mdGVuRGVsZXRlZFwiIFthbHdheXNFeHBhbmRlZF09XCJpdGVtc0Fsd2F5c0V4cGFuZGVkXCJcbiAgICAgIG1vZGU9XCJvZnRlbkRlbGV0ZWRcIiAoZW50cnlBZGRlZCk9XCJhZGRFbnRyeSgkZXZlbnQpXCI+PC9uZy1taWFtLWJhc2tldC1wcmV2aWV3LWRpc2FibGVkPlxuICAgIDxuZy1taWFtLWJhc2tldC1wcmV2aWV3LWRpc2FibGVkICpuZ0lmPVwibGluZS5lbnRyaWVzLnJlbW92ZWQubGVuZ3RoID4gMFwiIFtlbnRyaWVzXT1cImxpbmUuZW50cmllcy5yZW1vdmVkXCIgW2Fsd2F5c0V4cGFuZGVkXT1cIml0ZW1zQWx3YXlzRXhwYW5kZWRcIlxuICAgICAgbW9kZT1cInJlbW92ZWRcIiBbcmVkdWNlZF09XCJ0cnVlXCIgKGVudHJ5QWRkZWQpPVwiYWRkRW50cnkoJGV2ZW50KVwiPjwvbmctbWlhbS1iYXNrZXQtcHJldmlldy1kaXNhYmxlZD5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjbG9hZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LWxpbmVfX2xvYWRlci1jb250YWluZXJcIiA+XG4gICAgICA8bmctbWlhbS1sb2FkZXI+PC9uZy1taWFtLWxvYWRlcj5cbiAgICAgIDxkaXY+Q2FsY3VsIGRlcyBpbmdyw6lkaWVudHMuLi48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PiJdfQ==
504
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFza2V0LXByZXZpZXctbGluZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2J1aWxkcy9taWFtL25nLW1pYW0tc2RrL3Byb2plY3RzL25nLW1pYW0vc3JjLyIsInNvdXJjZXMiOlsibGliL193ZWItY29tcG9uZW50cy9iYXNrZXQtcHJldmlldy9iYXNrZXQtcHJldmlldy1saW5lL2Jhc2tldC1wcmV2aWV3LWxpbmUuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9iYXNrZXQtcHJldmlldy9iYXNrZXQtcHJldmlldy1saW5lL2Jhc2tldC1wcmV2aWV3LWxpbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsRUFFakIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUVqQixVQUFVLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRS9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0SCxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNuRSxPQUFPLE1BQU0sTUFBTSxrQkFBa0IsQ0FBQzs7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QkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgT25EZXN0cm95LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE9uSW5pdCxcbiAgRWxlbWVudFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2tldFByZXZpZXdMaW5lIH0gZnJvbSAnLi4vLi4vLi4vX21vZGVscy9iYXNrZXQtcHJldmlldy1saW5lJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZm9ya0pvaW4sIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmFza2V0RW50cnkgfSBmcm9tICcuLi8uLi8uLi9fbW9kZWxzL2Jhc2tldC1lbnRyeSc7XG5pbXBvcnQgeyBHcm9jZXJpZXNMaXN0c1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMvZ3JvY2VyaWVzLWxpc3RzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFza2V0c1NlcnZpY2UsIENvbnRleHRTZXJ2aWNlLCBQb2ludE9mU2FsZXNTZXJ2aWNlLCBSZWNpcGVzU2VydmljZSwgVXNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcy9hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vLi4vLi4vX3R5cGVzL2ljb24uZW51bSc7XG5pbXBvcnQgeyBzdG9wRXZlbnRQcm9wYWdhdGlvbiB9IGZyb20gJy4uLy4uLy4uL191dGlscy9ldmVudC51dGlscyc7XG5pbXBvcnQgcmVtb3ZlIGZyb20gJ2xvZGFzaC1lcy9yZW1vdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1taWFtLWJhc2tldC1wcmV2aWV3LWxpbmUnLFxuICB0ZW1wbGF0ZVVybDogJy4vYmFza2V0LXByZXZpZXctbGluZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Jhc2tldC1wcmV2aWV3LWxpbmUuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQmFza2V0UHJldmlld0xpbmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGxpbmU6IEJhc2tldFByZXZpZXdMaW5lO1xuICBASW5wdXQoKSB1bmlxdWVMaW5lOiBib29sZWFuO1xuICBASW5wdXQoKSBibG9ja1N0YXRlczogQmVoYXZpb3JTdWJqZWN0PHsgY3VycmVudE9wZW5MaW5lOiBzdHJpbmcsIG92ZXJsYXlPcGVuOiBib29sZWFuLCBsaW5lQ29tcG9uZW50OiBCYXNrZXRQcmV2aWV3TGluZUNvbXBvbmVudCB9PjtcbiAgQElucHV0KCkgZGlzcGxheVRvdGFsUHJpY2luZyA9IHRydWU7XG4gIEBJbnB1dCgpIHJlY2lwZXNBbHdheXNFeHBhbmRlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBpdGVtc0Fsd2F5c0V4cGFuZGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc3BsYXlJdGVtc1VuaXRhcnlQcmljZSA9IGZhbHNlO1xuICBAT3V0cHV0KCkgcmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QmFza2V0UHJldmlld0xpbmU+KCk7XG4gIEBPdXRwdXQoKSBjb3VudENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEJhc2tldFByZXZpZXdMaW5lPigpO1xuICBAT3V0cHV0KCkgcmVwbGFjZUl0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyPEJhc2tldFByZXZpZXdMaW5lPigpO1xuICBAT3V0cHV0KCkgc2hvd1JlY2lwZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpZDogc3RyaW5nLCBndWVzdHM6IG51bWJlciB9PigpO1xuXG4gIGVudHJpZXNMaW5lcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJhc2tldFByZXZpZXdMaW5lW10+KG51bGwpO1xuICBleHBhbmRlZCA9IGZhbHNlO1xuICBsb2FkaW5nID0gdHJ1ZTtcbiAgZGlzYWJsZUl0ZW1TZWxlY3RvciA9IGZhbHNlO1xuICBzZWxlY3RJdGVtID0gZmFsc2U7XG4gIGljb24gPSBJY29uO1xuICByZW1vdmluZyA9IGZhbHNlO1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgcmVjaXBlc1NlcnZpY2U6IFJlY2lwZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGlzdHNTZXJ2aWNlOiBHcm9jZXJpZXNMaXN0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYXNrZXRzU2VydmljZTogQmFza2V0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBwb3NTZXJ2aWNlOiBQb2ludE9mU2FsZXNTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKSB7IH1cblxuICAvLyBUT0RPOiBjYW4gd2UgcmVtb3ZlIHRoZSBjb25kaXRpb24gb24gdW5pcXVlTGluZT9cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMudW5pcXVlTGluZSkge1xuICAgICAgdGhpcy5leHBhbmRlZCA9IHRydWU7XG4gICAgICB0aGlzLmJ1aWxkRW50cmllc0xpbmVzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHN1YjogU3Vic2NyaXB0aW9uKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBjaGFuZ2VDb3VudChjb3VudDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMubGluZS5jb3VudCA9PT0gY291bnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxpbmUuY291bnQgPSBjb3VudDtcbiAgICBpZiAodGhpcy5saW5lLmhhc0VudHJpZXMoKSB8fCB0aGlzLmxpbmUuZGlzcGxheU1vZGUpIHtcbiAgICAgIHRoaXMuY291bnRDaGFuZ2VkLmVtaXQodGhpcy5saW5lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oYW5kbGVTdWJsaW5lQ291bnRDaGFuZ2UoY291bnQpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVN1YmxpbmVDb3VudENoYW5nZShjb3VudDogbnVtYmVyKSB7XG4gICAgaWYgKGNvdW50ID09PSAwKSB7XG4gICAgICB0aGlzLnJlbW92ZWQuZW1pdCh0aGlzLmxpbmUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmxpbmUucmVjb3JkLmF0dHJpYnV0ZXMucXVhbnRpdHkgPSBjb3VudDtcbiAgICB0aGlzLmxpbmUucmVjb3JkLnVwZGF0ZVRvdGFsUHJpY2UoKTtcbiAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2Uuc2VuZEV2ZW50KCdjaGFuZ2UtaXRlbS1xdWFudGl0eScpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubGluZS5yZWNvcmQuc2F2ZSgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5iYXNrZXRzU2VydmljZS5yZWxvYWRCYXNrZXQoKSlcbiAgICApLnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIHRvZ2dsZUV4cGFuZGVkKGV2ZW50KSB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMubGluZS5oYXNFbnRyaWVzKCkgfHxcbiAgICAgIHRoaXMudW5pcXVlTGluZSB8fFxuICAgICAgZXZlbnQudGFyZ2V0LnBhcmVudEVsZW1lbnQuY2xhc3NOYW1lID09PSAnaW5wdXQtY29udGFpbmVyJyB8fFxuICAgICAgZXZlbnQudGFyZ2V0LnBhcmVudEVsZW1lbnQuY2xhc3NOYW1lID09PSAncmVtb3ZlJyB8fFxuICAgICAgZXZlbnQudGFyZ2V0LnBhcmVudEVsZW1lbnQubm9kZU5hbWUgPT09ICdzdmcnXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5leHBhbmRlZCA9IHRoaXMucmVjaXBlc0Fsd2F5c0V4cGFuZGVkID8gdHJ1ZSA6ICF0aGlzLmV4cGFuZGVkO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICBpZiAoIXRoaXMuZW50cmllc0xpbmVzJC52YWx1ZSkge1xuICAgICAgdGhpcy5idWlsZEVudHJpZXNMaW5lcygpO1xuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZUVudHJ5KGVudHJ5OiBCYXNrZXRFbnRyeSkge1xuICAgIC8vIFJlbW92ZSBlbnRyeSBmcm9tIGxpbmUgZW50cmllcyBhcnJheVxuICAgIC8vIFRPRE86IGhhbmRsZSBvdGhlciB0aGFuIGZvdW5kXG4gICAgcmVtb3ZlKHRoaXMubGluZS5lbnRyaWVzLmZvdW5kLCBlID0+IGUuaWQgPT09IGVudHJ5LmlkKTtcbiAgICB0aGlzLmJ1aWxkRW50cmllc0xpbmVzKCk7XG5cbiAgICAvLyBSZW1vdmUgcmVsYXRlZCBncm9jZXJpZXMgZW50cnkgKHVwZGF0ZSBzdGF0dXMgdG8gXCJkZWxldGVkXCIpIGFuZCByZWxvYWQgbGlzdFxuICAgIGNvbnN0IGdFbnRyeSA9IGVudHJ5LnJlbGF0aW9uc2hpcHNbJ2dyb2Nlcmllcy1lbnRyeSddLmRhdGE7XG4gICAgZ0VudHJ5LmF0dHJpYnV0ZXMuc3RhdHVzID0gJ2RlbGV0ZWQnO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGdFbnRyeS5zYXZlKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmJhc2tldHNTZXJ2aWNlLnJlbG9hZEJhc2tldCgpKVxuICAgICkuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgY2hhbmdlUHJvZHVjdChsaW5lOiBCYXNrZXRQcmV2aWV3TGluZSkge1xuICAgIHRoaXMuYmxvY2tTdGF0ZXM/Lm5leHQoeyBjdXJyZW50T3BlbkxpbmU6IGxpbmUuaWQsIG92ZXJsYXlPcGVuOiB0cnVlLCBsaW5lQ29tcG9uZW50OiB0aGlzIH0pO1xuICAgIHRoaXMuc2VsZWN0SXRlbSA9IHRydWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMucmVwbGFjZUl0ZW0uZW1pdChsaW5lKTtcbiAgfVxuXG4gIC8vIFRPRE86IHJlbW92ZWQgLSBuZXZlciBjYWxsZWQgP1xuICBwcm9kdWN0Q2hvc2VuKGxpbmU/OiBCYXNrZXRQcmV2aWV3TGluZSkge1xuICAgIHRoaXMuc2VsZWN0SXRlbSA9IGZhbHNlO1xuICAgIGlmIChsaW5lKSB7IHRoaXMuZGlzYWJsZUl0ZW1TZWxlY3RvciA9IHRydWU7IH1cbiAgICB0aGlzLmJsb2NrU3RhdGVzPy5uZXh0KHsgY3VycmVudE9wZW5MaW5lOiBudWxsLCBvdmVybGF5T3BlbjogZmFsc2UsIGxpbmVDb21wb25lbnQ6IG51bGwgfSk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KGZhbHNlKTtcbiAgfVxuXG4gIGJ1aWxkRW50cmllc0xpbmVzKCkge1xuICAgIGNvbnN0IGVudHJpZXMgPSBbXG4gICAgICAuLi50aGlzLmxpbmUuZW50cmllcy5mb3VuZCxcbiAgICAgIC4uLnRoaXMubGluZS5lbnRyaWVzLm5vdEZvdW5kLFxuICAgICAgLi4udGhpcy5saW5lLmVudHJpZXMub2Z0ZW5EZWxldGVkLFxuICAgICAgLi4udGhpcy5saW5lLmVudHJpZXMucmVtb3ZlZF07XG4gICAgZW50cmllcy5tYXAoKGVudHJ5OiBCYXNrZXRFbnRyeSkgPT4ge1xuICAgICAgZW50cnkuc2V0SXRlbXNTZWxlY3Rpb24oKTtcbiAgICAgIGVudHJ5LnVwZGF0ZVRvdGFsUHJpY2UoKTtcbiAgICB9KTtcbiAgICB0aGlzLmVudHJpZXNMaW5lcyQubmV4dChcbiAgICAgIGVudHJpZXNcbiAgICAgICAgLmZpbHRlcihlbnRyeSA9PiB0aGlzLmxpbmUuZW50cmllcy5mb3VuZC5tYXAoZSA9PiBlLmlkKS5pbmNsdWRlcyhlbnRyeS5pZCkpXG4gICAgICAgIC5tYXAoZW50cnkgPT4gQmFza2V0UHJldmlld0xpbmUuZnJvbUJhc2tldEVudHJ5KGVudHJ5KSlcbiAgICApO1xuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGFkZEVudHJ5KGVudHJ5OiBCYXNrZXRFbnRyeSkge1xuICAgIGNvbnN0IGdFbnRyeSA9IGVudHJ5LnJlbGF0aW9uc2hpcHNbJ2dyb2Nlcmllcy1lbnRyeSddLmRhdGE7XG4gICAgZ0VudHJ5LmF0dHJpYnV0ZXMuc3RhdHVzID0gJ2FjdGl2ZSc7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goZ0VudHJ5LnNhdmUoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuYmFza2V0c1NlcnZpY2UucmVsb2FkQmFza2V0KCkpXG4gICAgKS5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICB0cmFja0J5SXRlbUlkKGluZGV4OiBudW1iZXIsIGxpbmU6IEJhc2tldFByZXZpZXdMaW5lKSB7XG4gICAgcmV0dXJuIGxpbmUgPyBsaW5lLnJlY29yZFsnc2VsZWN0ZWQtaXRlbS1pZCddICsgJy0nICsgbGluZS5yZWNvcmQuYXR0cmlidXRlcy5xdWFudGl0eSA6IG51bGw7XG4gIH1cblxuICB0b2dnbGVSZWNpcGVEaXNwbGF5KGV2ZW50LCBhZGRSZWNpcGUgPSBmYWxzZSkge1xuICAgIGlmICghdGhpcy5saW5lLmlzUmVjaXBlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhZGRSZWNpcGUpIHtcbiAgICAgIGZvcmtKb2luKFtcbiAgICAgICAgdGhpcy51c2VyU2VydmljZS5pc0xvZ2dlZCQuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlKDEpKSxcbiAgICAgICAgdGhpcy5wb3NTZXJ2aWNlLmlzUG9zVmFsaWQoKS5waXBlKHRha2UoMSkpXG4gICAgICBdKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgY29uc3QgaXNIb29rT2sgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmhvb2tDYWxsYmFjayhyZXNbMF0sIHJlc1sxXSk7XG4gICAgICAgIGlmIChpc0hvb2tPaykge1xuICAgICAgICAgIHRoaXMuYWRkUmVjaXBlQWN0aW9uT0soKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVjaXBlc1NlcnZpY2UuZGlzcGxheSh0aGlzLmxpbmUuaWQsIHtndWVzdHM6IHRoaXMubGluZS5jb3VudH0pO1xuICAgIH1cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIGFkZFJlY2lwZUFjdGlvbk9LKCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubGlzdHNTZXJ2aWNlLmFwcGVuZFJlY2lwZVRvTGlzdCh0aGlzLmxpbmUuaWQsIHRoaXMubGluZS5jb3VudCwgJ3JlY2lwZS1oaXN0b3J5Jykuc3Vic2NyaWJlKCkpO1xuICAgIHRoaXMucmVjaXBlc1NlcnZpY2UuZGlzcGxheSh0aGlzLmxpbmUuaWQsIHtndWVzdHM6IHRoaXMubGluZS5jb3VudCwgcHJldmlld01vZGU6IHRydWV9KTtcbiAgfVxuXG4gIHJlbW92ZUxpbmUoZXZlbnQpIHtcbiAgICB0aGlzLnJlbW92aW5nID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgc3RvcEV2ZW50UHJvcGFnYXRpb24oZXZlbnQpO1xuICAgIHRoaXMucmVtb3ZlZC5lbWl0KHRoaXMubGluZSk7XG4gIH1cblxuICBwcmljZUludGVnZXJQYXJ0KCl7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5wcmljZVRvRGlzcGxheSgpPy50b1N0cmluZygpLnNwbGl0KCcuJyk7XG4gICAgcmV0dXJuIHZhbHVlcz8ubGVuZ3RoID4gMCA/IHZhbHVlc1swXSA6ICcwJztcbiAgfVxuXG4gIHByaWNlRGVjaW1hbFBhcnQoKXtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnByaWNlVG9EaXNwbGF5KCk/LnRvU3RyaW5nKCkuc3BsaXQoJy4nKTtcbiAgICByZXR1cm4gdmFsdWVzPy5sZW5ndGggPT09IDIgPyB2YWx1ZXNbMV0gOiAnMDAnO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmljZVRvRGlzcGxheSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmxpbmUuaXNSZWNpcGUgfHwgIXRoaXMuZGlzcGxheUl0ZW1zVW5pdGFyeVByaWNlIHx8IHRoaXMubGluZS5wcmljZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMubGluZS5wcmljZTtcbiAgICB9XG4gICAgY29uc3QgYmVJdGVtID0gIHRoaXMubGluZS5yZWNvcmQuYXR0cmlidXRlc1snYmFza2V0LWVudHJpZXMtaXRlbXMnXS5maW5kKGkgPT4gaS5pdGVtX2lkID09PSB0aGlzLmxpbmUucmVjb3JkLmF0dHJpYnV0ZXNbJ3NlbGVjdGVkLWl0ZW0taWQnXSk7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoYmVJdGVtWyd1bml0LXByaWNlJ10pLnRvRml4ZWQoMik7XG4gIH1cbn1cbiIsIjxkaXZcbiAgaWQ9XCJ7e2xpbmUuaWR9fVwiXG4gIGNsYXNzPVwibWlhbS1iYXNrZXQtcHJldmlldy1saW5lXCJcbiAgW25nQ2xhc3NdPVwie2NsaWNrYWJsZTogbGluZS5oYXNFbnRyaWVzKCkgfHwgbGluZS5kaXNwbGF5TW9kZSwgZXhwYW5kZWQ6IGV4cGFuZGVkLCBlbGV2YXRlIDogc2VsZWN0SXRlbX1cIlxuICAoY2xpY2spPVwibGluZS5kaXNwbGF5TW9kZSA/IHRvZ2dsZVJlY2lwZURpc3BsYXkoJGV2ZW50KSA6IHRvZ2dsZUV4cGFuZGVkKCRldmVudClcIlxuPlxuICA8ZGl2IGNsYXNzPVwibWlhbS1iYXNrZXQtcHJldmlldy1saW5lX19pdGVtXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctbGluZV9faXRlbV9fbGVmdFwiPlxuICAgICAgPGRpdiAqbmdJZj1cIiF1bmlxdWVMaW5lICYmICFsaW5lLmRpc3BsYXlNb2RlXCIgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LWxpbmVfX2l0ZW1fX3JlbW92ZVwiIChjbGljayk9XCJyZW1vdmVMaW5lKCRldmVudClcIj5cbiAgICAgICAgPG5nLW1pYW0taWNvbiAqbmdJZj1cIiFyZW1vdmluZyBlbHNlIGFkZExvYWRlclwiIFtpY29uTmFtZV09J2ljb24uVHJhc2gnIGhlaWdodD0nMjQnIHdpZHRoPScyNCcgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLWdyZXktdGV4dC1kYXJrKSc+PC9uZy1taWFtLWljb24+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjYWRkTG9hZGVyPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPG5nLW1pYW0tbG9hZGVyPjwvbmctbWlhbS1sb2FkZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LWxpbmVfX2l0ZW1fX3BpY3R1cmVcIj5cbiAgICAgICAgPGltZyAoY2xpY2spPVwidG9nZ2xlUmVjaXBlRGlzcGxheSgkZXZlbnQpXCIgW3NyY109XCJsaW5lLnBpY3R1cmVcIj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctbGluZV9faXRlbV9fZGV0YWlsc1wiPlxuICAgICAgICA8c3Ryb25nIChjbGljayk9XCJ0b2dnbGVSZWNpcGVEaXNwbGF5KCRldmVudClcIiBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctbGluZV9faXRlbV9fdGl0bGVcIj5cbiAgICAgICAgICB7eyBsaW5lLnRpdGxlIHwgY2FwaXRhbGl6ZUZpcnN0TGV0dGVyIH19XG4gICAgICAgIDwvc3Ryb25nPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1iYXNrZXQtcHJldmlldy1saW5lX19pdGVtX19kZXNjcmlwdGlvblwiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGluZS5kZXNjcmlwdGlvblwiPnt7IGl0ZW0gfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LWxpbmVfX2l0ZW1fX2FjdGlvbnNcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGxpbmUuaGFzRW50cmllcygpICYmICF1bmlxdWVMaW5lKVwiIGNsYXNzPVwibWlhbS1iYXNrZXQtcHJldmlldy1saW5lX19pdGVtX19zaG93RGV0YWlsc1wiPlxuICAgICAgICAgICAge3sgZXhwYW5kZWQgPyAnTWFzcXVlcicgOiAnVm9pcicgfX0gbGUgZMOpdGFpbFxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJsaW5lLmRpc3BsYXlNb2RlXCIgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LWxpbmVfX2l0ZW1fX3Nob3dEZXRhaWxzXCI+XG4gICAgICAgICAgICBWb2lyIGxhIHJlY2V0dGVcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWxpbmUuaXNSZWNpcGUgJiYgbGluZT8ucmVjb3JkPy5jYW5kaWRhdGVJdGVtcz8ubGVuZ3RoID4gMFwiIGNsYXNzPVwibWlhbS1iYXNrZXQtcHJldmlldy1saW5lX19pdGVtX19jaGFuZ2VcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVByb2R1Y3QobGluZSlcIj5cbiAgICAgICAgICAgIDxhIFtuZ0NsYXNzXT1cInsnZGlzYWJsZSc6IGRpc2FibGVJdGVtU2VsZWN0b3J9XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LWxpbmVfX2l0ZW1fX2NoYW5nZV9fbGlua1wiPkNoYW5nZXIgZCdhcnRpY2xlPC9hPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJsaW5lLmlubGluZVRhZ1wiIGNsYXNzPVwibWlhbS1iYXNrZXQtcHJldmlldy1saW5lX19pdGVtX19pbmxpbmVUYWdfX2NvbnRhaW5lclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LWxpbmVfX2l0ZW1fX2lubGluZVRhZ1wiPnt7IGxpbmUuaW5saW5lVGFnIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LWxpbmVfX2l0ZW1fX3JpZ2h0XCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZGlzcGxheVRvdGFsUHJpY2luZyB8fCAhbGluZS5pc1JlY2lwZSBlbHNlIHByaWNlUGVyZ3Vlc3RcIiBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctbGluZV9faXRlbV9fcHJpY2VcIj5cbiAgICAgICAgPHNwYW4+e3sgcHJpY2VJbnRlZ2VyUGFydCgpIH19LDwvc3Bhbj5cbiAgICAgICAgPHNwYW4+e3sgcHJpY2VEZWNpbWFsUGFydCgpIH19PC9zcGFuPiAgIFxuICAgICAgICA8c3Bhbj4g4oKsPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI3ByaWNlUGVyZ3Vlc3Q+XG4gICAgICAgIDxuZy1taWFtLXJlY2lwZS1wcmljaW5nIFtyZWNpcGVdPVwicmVjaXBlc1NlcnZpY2UuZ2V0KGxpbmUuaWQpIHwgYXN5bmNcIiBbc2VydmVzXT1cImxpbmUuY291bnRcIj48L25nLW1pYW0tcmVjaXBlLXByaWNpbmc+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctbGluZV9faXRlbV9fY291bnRcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImxpbmUuaXNSZWNpcGVcIiBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctbGluZV9faXRlbV9fY291bnRfX2ZvclwiPnBvdXI8L2Rpdj5cbiAgICAgICAgPG5nLW1pYW0tY291bnRlci1pbnB1dCBbY291bnRlcl09XCJsaW5lLmNvdW50XCIgKGNvdW50ZXJDaGFuZ2UpPVwiY2hhbmdlQ291bnQoJGV2ZW50KVwiIFttaW5SYW5nZV09XCJsaW5lLmlzUmVjaXBlID8gMSA6IDBcIj5cbiAgICAgICAgPC9uZy1taWFtLWNvdW50ZXItaW5wdXQ+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJsaW5lLmlzUmVjaXBlXCIgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LWxpbmVfX2l0ZW1fX2NvdW50X19wZW9wbGVcIj5wZXJzb25uZXt7IGxpbmUuY291bnQgPiAxID8gJ3MnIDogJycgfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImxpbmUuZGlzcGxheU1vZGVcIiBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctbGluZV9fYWRkX19idXR0b25cIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm0tYnV0dG9uLWZhYi1wcmltYXJ5XCIgKGNsaWNrKT1cInRvZ2dsZVJlY2lwZURpc3BsYXkoJGV2ZW50LCB0cnVlKVwiPlxuICAgICAgICAgIDxuZy1taWFtLWljb24gW3dpZHRoXT1cIjI0XCIgW2hlaWdodF09XCIyNFwiIHByaW1hcnlDb2xvcj0nI2ZmZicgW2ljb25OYW1lXT1cImljb24uQ2FydFwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwibWlhbS1iYXNrZXQtcHJldmlldy1saW5lc1wiICpuZ0lmPVwiZXhwYW5kZWRcIj5cbiAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nIGVsc2UgbG9hZGVyXCI+XG4gICAgPG5nLW1pYW0tYmFza2V0LXByZXZpZXctbGluZSAqbmdGb3I9XCJsZXQgZW50cnlMaW5lIG9mIGVudHJpZXNMaW5lcyQgfCBhc3luY1wiIFtsaW5lXT1cImVudHJ5TGluZVwiIFtkaXNwbGF5SXRlbXNVbml0YXJ5UHJpY2VdPVwiZGlzcGxheUl0ZW1zVW5pdGFyeVByaWNlXCJcbiAgICAgIChyZW1vdmVkKT1cImRlbGV0ZUVudHJ5KCRldmVudC5yZWNvcmQpXCIgKHJlcGxhY2VJdGVtKT0ncmVwbGFjZUl0ZW0uZW1pdChsaW5lKScgW2Jsb2NrU3RhdGVzXT0nYmxvY2tTdGF0ZXMnPjwvbmctbWlhbS1iYXNrZXQtcHJldmlldy1saW5lPlxuICAgIDxuZy1taWFtLWJhc2tldC1wcmV2aWV3LWRpc2FibGVkICpuZ0lmPVwibGluZS5lbnRyaWVzLm5vdEZvdW5kLmxlbmd0aCA+IDBcIiBbZW50cmllc109XCJsaW5lLmVudHJpZXMubm90Rm91bmRcIiBbYWx3YXlzRXhwYW5kZWRdPVwiaXRlbXNBbHdheXNFeHBhbmRlZFwiXG4gICAgICBtb2RlPVwidW5hdmFpbGFibGVcIj48L25nLW1pYW0tYmFza2V0LXByZXZpZXctZGlzYWJsZWQ+XG4gICAgPG5nLW1pYW0tYmFza2V0LXByZXZpZXctZGlzYWJsZWQgKm5nSWY9XCJsaW5lLmVudHJpZXMub2Z0ZW5EZWxldGVkLmxlbmd0aCA+IDBcIiBbZW50cmllc109XCJsaW5lLmVudHJpZXMub2Z0ZW5EZWxldGVkXCIgW2Fsd2F5c0V4cGFuZGVkXT1cIml0ZW1zQWx3YXlzRXhwYW5kZWRcIlxuICAgICAgbW9kZT1cIm9mdGVuRGVsZXRlZFwiIChlbnRyeUFkZGVkKT1cImFkZEVudHJ5KCRldmVudClcIj48L25nLW1pYW0tYmFza2V0LXByZXZpZXctZGlzYWJsZWQ+XG4gICAgPG5nLW1pYW0tYmFza2V0LXByZXZpZXctZGlzYWJsZWQgKm5nSWY9XCJsaW5lLmVudHJpZXMucmVtb3ZlZC5sZW5ndGggPiAwXCIgW2VudHJpZXNdPVwibGluZS5lbnRyaWVzLnJlbW92ZWRcIiBbYWx3YXlzRXhwYW5kZWRdPVwiaXRlbXNBbHdheXNFeHBhbmRlZFwiXG4gICAgICBtb2RlPVwicmVtb3ZlZFwiIFtyZWR1Y2VkXT1cInRydWVcIiAoZW50cnlBZGRlZCk9XCJhZGRFbnRyeSgkZXZlbnQpXCI+PC9uZy1taWFtLWJhc2tldC1wcmV2aWV3LWRpc2FibGVkPlxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlICNsb2FkZXI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctbGluZV9fbG9hZGVyLWNvbnRhaW5lclwiID5cbiAgICAgIDxuZy1taWFtLWxvYWRlcj48L25nLW1pYW0tbG9hZGVyPlxuICAgICAgPGRpdj5DYWxjdWwgZGVzIGluZ3LDqWRpZW50cy4uLjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+Il19