ng-miam 3.4.6 → 3.5.2

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 (38) hide show
  1. package/bundles/ng-miam.umd.js +844 -668
  2. package/bundles/ng-miam.umd.js.map +1 -1
  3. package/bundles/ng-miam.umd.min.js +1 -1
  4. package/bundles/ng-miam.umd.min.js.map +1 -1
  5. package/esm2015/lib/_components/abstracts/abstract-recipe-card.component.js +13 -3
  6. package/esm2015/lib/_models/index.js +2 -1
  7. package/esm2015/lib/_models/ingredient.js +3 -3
  8. package/esm2015/lib/_models/recipe.js +2 -1
  9. package/esm2015/lib/_models/tag.js +22 -0
  10. package/esm2015/lib/_services/groceries-lists.service.js +10 -13
  11. package/esm2015/lib/_services/index.js +2 -1
  12. package/esm2015/lib/_services/recipes.service.js +13 -8
  13. package/esm2015/lib/_services/tags.service.js +29 -0
  14. package/esm2015/lib/_web-components/basket-preview/basket-preview-block/basket-preview-block.component.js +2 -2
  15. package/esm2015/lib/_web-components/basket-preview/basket-preview-line/basket-preview-line.component.js +162 -172
  16. package/esm2015/lib/_web-components/basket-preview/replace-item/replace-item.component.js +23 -34
  17. package/esm2015/lib/_web-components/catalog-list/catalog-list.component.js +2 -2
  18. package/esm2015/lib/_web-components/catalog-recipe-card/catalog-recipe-card.component.js +97 -85
  19. package/esm2015/lib/_web-components/order-button/order-button.component.js +1 -1
  20. package/esm2015/lib/_web-components/recipe-card/recipe-card.component.js +96 -81
  21. package/esm2015/lib/_web-components/recipe-details/recipe-details.component.js +268 -194
  22. package/esm2015/lib/_web-components/recipe-modal/recipe-modal.component.js +3 -3
  23. package/esm2015/lib/_web-components/recipes-history/recipes-history.component.js +4 -2
  24. package/fesm2015/ng-miam.js +787 -654
  25. package/fesm2015/ng-miam.js.map +1 -1
  26. package/lib/_components/abstracts/abstract-recipe-card.component.d.ts +2 -0
  27. package/lib/_models/index.d.ts +1 -0
  28. package/lib/_models/ingredient.d.ts +1 -1
  29. package/lib/_models/tag.d.ts +15 -0
  30. package/lib/_services/context.service.d.ts +1 -1
  31. package/lib/_services/groceries-lists.service.d.ts +2 -2
  32. package/lib/_services/index.d.ts +1 -0
  33. package/lib/_services/recipes.service.d.ts +4 -2
  34. package/lib/_services/tags.service.d.ts +14 -0
  35. package/lib/_web-components/basket-preview/replace-item/replace-item.component.d.ts +1 -2
  36. package/lib/_web-components/recipe-card/recipe-card.component.d.ts +1 -1
  37. package/lib/_web-components/recipe-details/recipe-details.component.d.ts +6 -2
  38. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, EventEmitter, ElementRef, ViewChild, ChangeDetectorRef } from '@angular/core';
1
+ import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';
2
2
  import { BasketPreviewLine } from '../../../_models/basket-preview-line';
3
3
  import { Icon } from '../../../_types/icon.enum';
4
4
  import { BasketsService } from '../../../_services';
@@ -9,23 +9,22 @@ import * as i1 from "../../../_services";
9
9
  import * as i2 from "../../../_services/analytics.service";
10
10
  import * as i3 from "../../../_components/icon/icon.component";
11
11
  import * as i4 from "@angular/common";
12
- const _c0 = ["itemsList"];
13
- function ReplaceItemComponent_div_24_Template(rf, ctx) { if (rf & 1) {
14
- const _r5 = i0.ɵɵgetCurrentView();
15
- i0.ɵɵelementStart(0, "div", 13);
16
- i0.ɵɵlistener("click", function ReplaceItemComponent_div_24_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r5); const item_r2 = ctx.$implicit; const ctx_r4 = i0.ɵɵnextContext(); return ctx_r4.onSelectItem(item_r2); });
17
- i0.ɵɵelementStart(1, "div", 14);
18
- i0.ɵɵelement(2, "ng-miam-icon", 15);
19
- i0.ɵɵelement(3, "img", 16);
12
+ function ReplaceItemComponent_div_22_Template(rf, ctx) { if (rf & 1) {
13
+ const _r4 = i0.ɵɵgetCurrentView();
14
+ i0.ɵɵelementStart(0, "div", 12);
15
+ i0.ɵɵlistener("click", function ReplaceItemComponent_div_22_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r4); const item_r1 = ctx.$implicit; const ctx_r3 = i0.ɵɵnextContext(); return ctx_r3.onSelectItem(item_r1); });
16
+ i0.ɵɵelementStart(1, "div", 13);
17
+ i0.ɵɵelement(2, "ng-miam-icon", 14);
18
+ i0.ɵɵelement(3, "img", 15);
20
19
  i0.ɵɵelementEnd();
21
- i0.ɵɵelementStart(4, "div", 14);
22
- i0.ɵɵelementStart(5, "div", 17);
20
+ i0.ɵɵelementStart(4, "div", 13);
21
+ i0.ɵɵelementStart(5, "div", 16);
23
22
  i0.ɵɵelementStart(6, "div", 6);
24
23
  i0.ɵɵtext(7);
25
24
  i0.ɵɵelementEnd();
26
25
  i0.ɵɵelementEnd();
27
26
  i0.ɵɵelementEnd();
28
- i0.ɵɵelementStart(8, "div", 14);
27
+ i0.ɵɵelementStart(8, "div", 13);
29
28
  i0.ɵɵelementStart(9, "div", 7);
30
29
  i0.ɵɵelementStart(10, "span");
31
30
  i0.ɵɵtext(11);
@@ -40,18 +39,18 @@ function ReplaceItemComponent_div_24_Template(rf, ctx) { if (rf & 1) {
40
39
  i0.ɵɵelementEnd();
41
40
  i0.ɵɵelementEnd();
42
41
  } if (rf & 2) {
43
- const item_r2 = ctx.$implicit;
44
- const ctx_r1 = i0.ɵɵnextContext();
42
+ const item_r1 = ctx.$implicit;
43
+ const ctx_r0 = i0.ɵɵnextContext();
45
44
  i0.ɵɵadvance(2);
46
- i0.ɵɵproperty("height", 16)("width", 16)("iconName", ctx_r1.icon.Swap);
45
+ i0.ɵɵproperty("height", 16)("width", 16)("iconName", ctx_r0.icon.Swap);
47
46
  i0.ɵɵadvance(1);
48
- i0.ɵɵproperty("src", item_r2 == null ? null : item_r2.attributes == null ? null : item_r2.attributes.image, i0.ɵɵsanitizeUrl);
47
+ i0.ɵɵproperty("src", item_r1 == null ? null : item_r1.attributes == null ? null : item_r1.attributes.image, i0.ɵɵsanitizeUrl);
49
48
  i0.ɵɵadvance(4);
50
- i0.ɵɵtextInterpolate2(" ", item_r2 == null ? null : item_r2.attributes == null ? null : item_r2.attributes.name, " | ", item_r2 == null ? null : item_r2.capacity, " ");
49
+ i0.ɵɵtextInterpolate2(" ", item_r1 == null ? null : item_r1.attributes == null ? null : item_r1.attributes.name, " | ", item_r1 == null ? null : item_r1.capacity, " ");
51
50
  i0.ɵɵadvance(4);
52
- i0.ɵɵtextInterpolate1("", ctx_r1.priceIntegerPart(item_r2 == null ? null : item_r2.attributes["unit-price"]), ",");
51
+ i0.ɵɵtextInterpolate1("", ctx_r0.priceIntegerPart(item_r1 == null ? null : item_r1.attributes["unit-price"]), ",");
53
52
  i0.ɵɵadvance(2);
54
- i0.ɵɵtextInterpolate(ctx_r1.priceDecimalPart(item_r2 == null ? null : item_r2.attributes["unit-price"]));
53
+ i0.ɵɵtextInterpolate(ctx_r0.priceDecimalPart(item_r1 == null ? null : item_r1.attributes["unit-price"]));
55
54
  } }
56
55
  export class ReplaceItemComponent {
57
56
  constructor(cdr, basketsService, analyticsService) {
@@ -93,12 +92,7 @@ export class ReplaceItemComponent {
93
92
  }
94
93
  }
95
94
  ReplaceItemComponent.ɵfac = function ReplaceItemComponent_Factory(t) { return new (t || ReplaceItemComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.BasketsService), i0.ɵɵdirectiveInject(i2.AnalyticsService)); };
96
- ReplaceItemComponent.ɵcmp = i0.ɵɵdefineComponent({ type: ReplaceItemComponent, selectors: [["ng-miam-replace-item"]], viewQuery: function ReplaceItemComponent_Query(rf, ctx) { if (rf & 1) {
97
- i0.ɵɵstaticViewQuery(_c0, true);
98
- } if (rf & 2) {
99
- var _t;
100
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.itemsListElement = _t.first);
101
- } }, inputs: { line: "line" }, outputs: { selected: "selected" }, decls: 25, vars: 7, consts: [[1, "miam-replace-item"], [1, "m-button-secondary", 3, "click"], ["primaryColor", "var(--m-color-primary)", 3, "iconName"], [1, "miam-replace-item__selected"], ["alt", "Image non disponible", 1, "miam-replace-item__selected__picture", 3, "src"], [1, "miam-replace-item__selected__column"], [1, "miam-replace-item__description"], [1, "miam-replace-item__price"], [1, "miam-replace-item__choices"], [1, "miam-replace-item__choices__action"], ["itemsList", ""], [1, "miam-replace-item__choices__list"], ["class", "miam-replace-item__choice", 3, "click", 4, "ngFor", "ngForOf"], [1, "miam-replace-item__choice", 3, "click"], [1, "miam-replace-item__choice__column"], [1, "miam-replace-item__choice__swap", 3, "height", "width", "iconName"], [3, "src"], [1, "miam-replace-item__choice__content"]], template: function ReplaceItemComponent_Template(rf, ctx) { if (rf & 1) {
95
+ ReplaceItemComponent.ɵcmp = i0.ɵɵdefineComponent({ type: ReplaceItemComponent, selectors: [["ng-miam-replace-item"]], inputs: { line: "line" }, outputs: { selected: "selected" }, decls: 23, vars: 7, consts: [[1, "miam-replace-item"], [1, "m-button-secondary", 3, "click"], ["primaryColor", "var(--m-color-primary)", 3, "iconName"], [1, "miam-replace-item__selected"], ["alt", "Image non disponible", 1, "miam-replace-item__selected__picture", 3, "src"], [1, "miam-replace-item__selected__column"], [1, "miam-replace-item__description"], [1, "miam-replace-item__price"], [1, "miam-replace-item__choices"], [1, "miam-replace-item__choices__action"], [1, "miam-replace-item__choices__list"], ["class", "miam-replace-item__choice", 3, "click", 4, "ngFor", "ngForOf"], [1, "miam-replace-item__choice", 3, "click"], [1, "miam-replace-item__choice__column"], [1, "miam-replace-item__choice__swap", 3, "height", "width", "iconName"], [3, "src"], [1, "miam-replace-item__choice__content"]], template: function ReplaceItemComponent_Template(rf, ctx) { if (rf & 1) {
102
96
  i0.ɵɵelementStart(0, "div", 0);
103
97
  i0.ɵɵelementStart(1, "button", 1);
104
98
  i0.ɵɵlistener("click", function ReplaceItemComponent_Template_button_click_1_listener() { return ctx.onClose(); });
@@ -132,10 +126,8 @@ ReplaceItemComponent.ɵcmp = i0.ɵɵdefineComponent({ type: ReplaceItemComponent
132
126
  i0.ɵɵtext(20, "Remplacer cet article par :");
133
127
  i0.ɵɵelementEnd();
134
128
  i0.ɵɵelementEnd();
135
- i0.ɵɵelementStart(21, "div", 8, 10);
136
- i0.ɵɵelementStart(23, "div", 11);
137
- i0.ɵɵtemplate(24, ReplaceItemComponent_div_24_Template, 16, 8, "div", 12);
138
- i0.ɵɵelementEnd();
129
+ i0.ɵɵelementStart(21, "div", 10);
130
+ i0.ɵɵtemplate(22, ReplaceItemComponent_div_22_Template, 16, 8, "div", 11);
139
131
  i0.ɵɵelementEnd();
140
132
  i0.ɵɵelementEnd();
141
133
  i0.ɵɵelementEnd();
@@ -150,7 +142,7 @@ ReplaceItemComponent.ɵcmp = i0.ɵɵdefineComponent({ type: ReplaceItemComponent
150
142
  i0.ɵɵtextInterpolate1("", ctx.priceIntegerPart(ctx.line == null ? null : ctx.line.record == null ? null : ctx.line.record.totalPrice), ",");
151
143
  i0.ɵɵadvance(2);
152
144
  i0.ɵɵtextInterpolate(ctx.priceDecimalPart(ctx.line == null ? null : ctx.line.record == null ? null : ctx.line.record.totalPrice));
153
- i0.ɵɵadvance(10);
145
+ i0.ɵɵadvance(8);
154
146
  i0.ɵɵproperty("ngForOf", ctx.line == null ? null : ctx.line.record == null ? null : ctx.line.record.candidateItems);
155
147
  } }, directives: [i3.IconComponent, i4.NgForOf], styles: [".miam-replace-item{background:var(--m-color-white);height:100%;width:100%}.miam-replace-item button{margin-left:16px;max-width:150px;padding:16px}.miam-replace-item button ng-miam-icon{height:16px;margin-left:0;padding-top:20px;transform:rotate(90deg)}.miam-replace-item button ng-miam-icon svg path:first-of-type{fill:none}.miam-replace-item .miam-replace-item__selected{align-items:center;border:1px solid var(--m-color-primary);border-radius:16px;display:flex;margin:16px;padding:16px}.miam-replace-item .miam-replace-item__selected .miam-replace-item__selected__picture{height:70px;margin:8px}.miam-replace-item .miam-replace-item__selected .miam-replace-item__selected__column{display:flex;flex-direction:column;padding:10px;width:100%}.miam-replace-item .miam-replace-item__selected .miam-replace-item__selected__column .miam-replace-item__description{text-align:left}.miam-replace-item .miam-replace-item__choices{display:flex;flex-direction:column;margin:auto;min-width:100%;padding-bottom:80px;position:relative;width:auto}@media (max-width:475px){.miam-replace-item .miam-replace-item__choices{min-width:unset}}.miam-replace-item .miam-replace-item__choices ::-webkit-scrollbar{cursor:-webkit-grab;height:7px;width:5px}.miam-replace-item .miam-replace-item__choices ::-webkit-scrollbar-track{background:var(--m-color-grey)}.miam-replace-item .miam-replace-item__choices ::-webkit-scrollbar-thumb{background:var(--m-color-primary);border-radius:5px}.miam-replace-item .miam-replace-item__choices .miam-replace-item__choices__action{align-items:center;display:flex;justify-content:space-between;top:0}@media (max-width:475px){.miam-replace-item .miam-replace-item__choices .miam-replace-item__choices__action{margin-left:16px}}.miam-replace-item .miam-replace-item__choices .miam-replace-item__choices__action div{font-size:16px;font-weight:700}.miam-replace-item .miam-replace-item__choices .miam-replace-item__choices__action .miam-replace-item__choices__close{border:none;padding:0}.miam-replace-item .miam-replace-item__choices .miam-replace-item__choices__list{display:flex;flex-wrap:wrap;gap:16px;padding:16px}@media (max-width:475px){.miam-replace-item .miam-replace-item__choices .miam-replace-item__choices__list{display:flex;gap:0;justify-content:space-between;margin:auto;padding:0;width:90vw}}.miam-replace-item .miam-replace-item__choices .miam-replace-item__choices__list .miam-replace-item__choice{-webkit-tap-highlight-color:transparent;border:1px solid var(--m-color-hairlines);border-radius:var(--m-border-radius);cursor:pointer;display:flex;flex-direction:column;width:160px}@media (max-width:475px){.miam-replace-item .miam-replace-item__choices .miam-replace-item__choices__list .miam-replace-item__choice{margin-top:8px;width:40vw}}.miam-replace-item .miam-replace-item__choices .miam-replace-item__choices__list .miam-replace-item__choice .miam-replace-item__choice__column{align-items:center;display:inline-flex;flex-direction:column;gap:8px;margin:8px}.miam-replace-item .miam-replace-item__choices .miam-replace-item__choices__list .miam-replace-item__choice .miam-replace-item__choice__column .miam-replace-item__choice__content{align-items:center;display:flex;flex-direction:column}.miam-replace-item .miam-replace-item__choices .miam-replace-item__choices__list .miam-replace-item__choice .miam-replace-item__choice__column img{-o-object-fit:cover;border-radius:var(--m-border-radius);height:50px;object-fit:cover;width:50px}.miam-replace-item .miam-replace-item__choices .miam-replace-item__choices__list .miam-replace-item__choice .miam-replace-item__choice__swap{background-color:var(--m-color-secondary);border:1px solid var(--m-color-secondary);border-radius:16px;padding:4px;transition:var(--m-default-transition)}.miam-replace-item .miam-replace-item__choices .miam-replace-item__choices__list .miam-replace-item__choice .miam-replace-item__choice__swap .icon-container svg{fill:var(--m-color-white)}.miam-replace-item .miam-replace-item__choices .miam-replace-item__choices__list .miam-replace-item__choice:hover{background-color:var(--m-color-white)}.miam-replace-item .miam-replace-item__choices .miam-replace-item__choices__list .miam-replace-item__choice:hover .miam-replace-item__choice__swap{background-color:#fff;color:var(--m-color-secondary);transform:scale(1.1)}.miam-replace-item .miam-replace-item__choices .miam-replace-item__choices__list .miam-replace-item__choice:hover .miam-replace-item__choice__swap .icon-container svg{fill:var(--m-color-secondary)}.miam-replace-item .miam-replace-item__title{display:inline-block;font-size:16px;font-weight:700;white-space:normal}.miam-replace-item .miam-replace-item__title:first-letter{text-transform:capitalize}.miam-replace-item .miam-replace-item__description{font-size:14px;text-align:center;white-space:normal}.miam-replace-item .miam-replace-item__price{font-size:20px;font-weight:700;text-align:right}"], encapsulation: 2, changeDetection: 0 });
156
148
  /*@__PURE__*/ (function () { i0.ɵsetClassMetadata(ReplaceItemComponent, [{
@@ -166,8 +158,5 @@ ReplaceItemComponent.ɵcmp = i0.ɵɵdefineComponent({ type: ReplaceItemComponent
166
158
  type: Input
167
159
  }], selected: [{
168
160
  type: Output
169
- }], itemsListElement: [{
170
- type: ViewChild,
171
- args: ['itemsList', { static: true }]
172
161
  }] }); })();
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvYnVpbGRzL21pYW0vbmctbWlhbS1zZGsvcHJvamVjdHMvbmctbWlhbS9zcmMvIiwic291cmNlcyI6WyJsaWIvX3dlYi1jb21wb25lbnRzL2Jhc2tldC1wcmV2aWV3L3JlcGxhY2UtaXRlbS9yZXBsYWNlLWl0ZW0uY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9iYXNrZXQtcHJldmlldy9yZXBsYWNlLWl0ZW0vcmVwbGFjZS1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFDeEgsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFekUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7SUNrQmxFLCtCQUNFO0lBRHNHLDhOQUE0QjtJQUNsSSwrQkFDRTtJQUFBLG1DQUthO0lBQ2IsMEJBQ0Y7SUFBQSxpQkFBTTtJQUNOLCtCQUNFO0lBQUEsK0JBQ0U7SUFBQSw4QkFDRztJQUFBLFlBQ0g7SUFBQSxpQkFBTTtJQUNSLGlCQUFNO0lBQ1IsaUJBQU07SUFDTiwrQkFDRTtJQUFBLDhCQUNFO0lBQUEsNkJBQU07SUFBQSxhQUF1RDtJQUFBLGlCQUFPO0lBQ3BFLDZCQUFNO0lBQUEsYUFBc0Q7SUFBQSxpQkFBTztJ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eUJBQ0E7UUFBQSw4QkFDRTtRQUFBLDhCQUNFO1FBQUEsWUFFRjtRQUFBLGlCQUFNO1FBQ04sK0JBQ0U7UUFBQSw2QkFBTTtRQUFBLGFBQWlEO1FBQUEsaUJBQU87UUFDOUQsNkJBQU07UUFBQSxhQUFnRDtRQUFBLGlCQUFPO1FBQzdELDZCQUFPO1FBQUEsd0JBQUM7UUFBQSxpQkFBTztRQUNqQixpQkFBTTtRQUNSLGlCQUFNO1FBQ1IsaUJBQU07UUFDTiwrQkFDRTtRQUFBLCtCQUNFO1FBQUEsNEJBQUs7UUFBQSw0Q0FBMkI7UUFBQSxpQkFBTTtRQUN4QyxpQkFBTTtRQUNOLG1DQUNFO1FBQUEsZ0NBQ0E7UUFBQSx5RUFDRTtRQXdCRixpQkFBTTtRQUNSLGlCQUFNO1FBQ1IsaUJBQU07UUFDUixpQkFBTTs7UUFuRFksZUFBNkI7UUFBN0IsK0NBQTZCO1FBSU8sZUFBcUQ7UUFBckQsdVBBQXFEO1FBR25HLGVBRUY7UUFGRSxpUEFFRjtRQUVRLGVBQWlEO1FBQWpELDJJQUFpRDtRQUNqRCxlQUFnRDtRQUFoRCxpSUFBZ0Q7UUFXakIsZ0JBQWdFO1FBQWhFLG1IQUFnRTs7a0REVGhHLG9CQUFvQjtjQVBoQyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsV0FBVyxFQUFFLCtCQUErQjtnQkFDNUMsU0FBUyxFQUFFLENBQUMsK0JBQStCLENBQUM7Z0JBQzVDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRDtnSUFFVSxJQUFJO2tCQUFaLEtBQUs7WUFDSSxRQUFRO2tCQUFqQixNQUFNO1lBWW1DLGdCQUFnQjtrQkFBekQsU0FBUzttQkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsXG4gIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNrZXRQcmV2aWV3TGluZSB9IGZyb20gJy4uLy4uLy4uL19tb2RlbHMvYmFza2V0LXByZXZpZXctbGluZSc7XG5pbXBvcnQgeyBJdGVtIH0gZnJvbSAnLi4vLi4vLi4vX21vZGVscy9pdGVtJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuLi8uLi8uLi9fdHlwZXMvaWNvbi5lbnVtJztcbmltcG9ydCB7IEJhc2tldHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX3NlcnZpY2VzJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMvYW5hbHl0aWNzLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1taWFtLXJlcGxhY2UtaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXBsYWNlLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yZXBsYWNlLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUmVwbGFjZUl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBsaW5lOiBCYXNrZXRQcmV2aWV3TGluZTtcbiAgQE91dHB1dCgpIHNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgcHVibGljIGl0ZW1zOiBBcnJheTxJdGVtPjtcbiAgcHVibGljIGN1cnJlbnRJdGVtOiBhbnk7XG4gIHB1YmxpYyBpY29uID0gSWNvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBiYXNrZXRzU2VydmljZTogQmFza2V0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlXG4gICkgeyB9XG5cbiAgQFZpZXdDaGlsZCgnaXRlbXNMaXN0JywgeyBzdGF0aWM6IHRydWUgfSkgaXRlbXNMaXN0RWxlbWVudDogRWxlbWVudFJlZjtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRMaW5lKCk7XG4gIH1cblxuICBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0SXRlbShpdGVtOiBJdGVtKSB7XG4gICAgdGhpcy5saW5lLnJlY29yZC5zZWxlY3RJdGVtKGl0ZW0uaWQpO1xuICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnQoJ3JlcGxhY2UtaXRlbScpO1xuICAgIHRoaXMubGluZS5yZWNvcmQuc2F2ZSgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5iYXNrZXRzU2VydmljZS5sb2FkQmFza2V0KCkpLFxuICAgICAgdGFrZSgxKVxuICAgICkuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMubGluZS5pZCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRMaW5lKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudEl0ZW0gPSB0aGlzLmxpbmUucmVjb3JkLmF0dHJpYnV0ZXNbJ2Jhc2tldC1lbnRyaWVzLWl0ZW1zJ11bMF07XG4gICAgdGhpcy5pdGVtcyA9IHRoaXMubGluZS5yZWNvcmQucmVsYXRpb25zaGlwcy5pdGVtcy5kYXRhLmZpbHRlcigoaXRlbTogSXRlbSkgPT4gaXRlbS5pZCA9PT0gdGhpcy5jdXJyZW50SXRlbS5pdGVtX2lkKTtcbiAgfVxuXG4gIHByaWNlSW50ZWdlclBhcnQocHJpY2U6IHN0cmluZyApe1xuICAgIGNvbnN0IHZhbHVlcyA9IHByaWNlLnNwbGl0KCcuJyk7XG4gICAgcmV0dXJuIHZhbHVlc1swXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcHJpY2UgaXRlbT8uYXR0cmlidXRlc1tcInVuaXQtcHJpY2VcIl0gaXMgYSBzdHJpbmdcbiAgICogYW5kIHdlIHdhbiB0d28gZGVjaW1hbCAobm90IDAuOCBvciAwLjgwMCkgXG4gICAqIEByZXR1cm5zIGZpcnN0IHR3byBkZWNpbWFsXG4gICAqL1xuICBwcmljZURlY2ltYWxQYXJ0KHByaWNlOiBzdHJpbmcpe1xuICAgIGNvbnN0IHZhbHVlcyA9IHByaWNlLnNwbGl0KCcuJyk7XG4gICAgLy8gZm9yY2UgMiBkZWNpbWFsc1xuICAgIHJldHVybiB2YWx1ZXM/Lmxlbmd0aCA9PT0gMiA/ICh2YWx1ZXNbMV0gKyAnMDAnKS5zbGljZSgwLCAyKSA6ICcwMCc7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbVwiPlxuICA8YnV0dG9uIGNsYXNzPVwibS1idXR0b24tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiPlxuICAgIDxuZy1taWFtLWljb24gW2ljb25OYW1lXT0naWNvbi5DaGV2cm9uRG93bicgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLXByaW1hcnkpJyA+PC9uZy1taWFtLWljb24+XG4gICA8c3Bhbj5SZXRvdXI8L3NwYW4+IFxuICA8L2J1dHRvbj5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19zZWxlY3RlZFwiPlxuICAgIDxpbWcgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fc2VsZWN0ZWRfX3BpY3R1cmVcIiBbc3JjXT1cImxpbmU/LnJlY29yZD8uc2VsZWN0ZWRJdGVtPy5hdHRyaWJ1dGVzPy5pbWFnZVwiIGFsdD1cIkltYWdlIG5vbiBkaXNwb25pYmxlXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19zZWxlY3RlZF9fY29sdW1uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX2Rlc2NyaXB0aW9uXCI+XG4gICAgICAgIHt7IGxpbmU/LnJlY29yZD8uc2VsZWN0ZWRJdGVtLmF0dHJpYnV0ZXMubmFtZSB9fSB8XG4gICAgICAgICB7eyBsaW5lPy5yZWNvcmQ/LnNlbGVjdGVkSXRlbS5jYXBhY2l0eSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX3ByaWNlXCI+XG4gICAgICAgIDxzcGFuPnt7IHByaWNlSW50ZWdlclBhcnQobGluZT8ucmVjb3JkPy50b3RhbFByaWNlKSB9fSw8L3NwYW4+XG4gICAgICAgIDxzcGFuPnt7IHByaWNlRGVjaW1hbFBhcnQobGluZT8ucmVjb3JkPy50b3RhbFByaWNlKSB9fTwvc3Bhbj4gICBcbiAgICAgICAgPHNwYW4+IOKCrDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19jaG9pY2VzXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19jaG9pY2VzX19hY3Rpb25cIj5cbiAgICAgIDxkaXY+UmVtcGxhY2VyIGNldCBhcnRpY2xlIHBhciA6PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAjaXRlbXNMaXN0IGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX2Nob2ljZXNcIiA+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX2Nob2ljZXNfX2xpc3RcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fY2hvaWNlXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGluZT8ucmVjb3JkPy5jYW5kaWRhdGVJdGVtcywgbGV0IGkgPSBpbmRleFwiIChjbGljayk9XCJvblNlbGVjdEl0ZW0oaXRlbSlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19jaG9pY2VfX2NvbHVtblwiPlxuICAgICAgICAgIDxuZy1taWFtLWljb24gXG4gICAgICAgICAgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fY2hvaWNlX19zd2FwXCIgXG4gICAgICAgICAgW2hlaWdodF09JzE2JyBcbiAgICAgICAgICBbd2lkdGhdPScxNicgXG4gICAgICAgICAgW2ljb25OYW1lXT0naWNvbi5Td2FwJyA+XG4gICAgICAgIDwvbmctbWlhbS1pY29uPlxuICAgICAgICAgIDxpbWcgW3NyY109XCJpdGVtPy5hdHRyaWJ1dGVzPy5pbWFnZVwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19jaG9pY2VfX2NvbHVtblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fY2hvaWNlX19jb250ZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX2Rlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICB7eyBpdGVtPy5hdHRyaWJ1dGVzPy5uYW1lIH19IHwge3tpdGVtPy5jYXBhY2l0eX19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fY2hvaWNlX19jb2x1bW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX3ByaWNlXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyBwcmljZUludGVnZXJQYXJ0KGl0ZW0/LmF0dHJpYnV0ZXNbXCJ1bml0LXByaWNlXCJdKSB9fSw8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj57eyBwcmljZURlY2ltYWxQYXJ0KGl0ZW0/LmF0dHJpYnV0ZXNbXCJ1bml0LXByaWNlXCJdKSB9fTwvc3Bhbj4gICBcbiAgICAgICAgICAgIDxzcGFuPiDigqw8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvYnVpbGRzL21pYW0vbmctbWlhbS1zZGsvcHJvamVjdHMvbmctbWlhbS9zcmMvIiwic291cmNlcyI6WyJsaWIvX3dlYi1jb21wb25lbnRzL2Jhc2tldC1wcmV2aWV3L3JlcGxhY2UtaXRlbS9yZXBsYWNlLWl0ZW0uY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9iYXNrZXQtcHJldmlldy9yZXBsYWNlLWl0ZW0vcmVwbGFjZS1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQ2pHLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7Ozs7SUNpQmxFLCtCQUNFO0lBRHNHLDhOQUE0QjtJQUNsSSwrQkFDRTtJQUFBLG1DQUthO0lBQ2IsMEJBQ0Y7SUFBQSxpQkFBTTtJQUNOLCtCQUNFO0lBQUEsK0JBQ0U7SUFBQSw4QkFDRztJQUFBLFlBQ0g7SUFBQSxpQkFBTTtJQUNSLGlCQUFNO0lBQ1IsaUJBQU07SUFDTiwrQkFDRTtJQUFBLDhCQUNFO0lBQUEsNkJBQU07SUFBQSxhQUF1RDtJQUFBLGlCQUFPO0lBQ3BFLDZCQUFNO0lBQUEsYUFBc0Q7SUFBQSxpQkFBTztJQUNuRSw2QkFBTztJQUFBLHdCQUFD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RTtRQUFBLFlBRUY7UUFBQSxpQkFBTTtRQUNOLCtCQUNFO1FBQUEsNkJBQU07UUFBQSxhQUFpRDtRQUFBLGlCQUFPO1FBQzlELDZCQUFNO1FBQUEsYUFBZ0Q7UUFBQSxpQkFBTztRQUM3RCw2QkFBTztRQUFBLHdCQUFDO1FBQUEsaUJBQU87UUFDakIsaUJBQU07UUFDUixpQkFBTTtRQUNSLGlCQUFNO1FBQ04sK0JBQ0U7UUFBQSwrQkFDRTtRQUFBLDRCQUFLO1FBQUEsNENBQTJCO1FBQUEsaUJBQU07UUFDeEMsaUJBQU07UUFDTixnQ0FDRTtRQUFBLHlFQUNFO1FBd0JKLGlCQUFNO1FBQ1IsaUJBQU07UUFDUixpQkFBTTs7UUFqRFksZUFBNkI7UUFBN0IsK0NBQTZCO1FBSU8sZUFBcUQ7UUFBckQsdVBBQXFEO1FBR25HLGVBRUY7UUFGRSxpUEFFRjtRQUVRLGVBQWlEO1FBQWpELDJJQUFpRDtRQUNqRCxlQUFnRDtRQUFoRCxpSUFBZ0Q7UUFVakIsZUFBZ0U7UUFBaEUsbUhBQWdFOztrRERSaEcsb0JBQW9CO2NBUGhDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsc0JBQXNCO2dCQUNoQyxXQUFXLEVBQUUsK0JBQStCO2dCQUM1QyxTQUFTLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztnQkFDNUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2hEO2dJQUVVLElBQUk7a0JBQVosS0FBSztZQUNJLFFBQVE7a0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2tldFByZXZpZXdMaW5lIH0gZnJvbSAnLi4vLi4vLi4vX21vZGVscy9iYXNrZXQtcHJldmlldy1saW5lJztcbmltcG9ydCB7IEl0ZW0gfSBmcm9tICcuLi8uLi8uLi9fbW9kZWxzL2l0ZW0nO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gJy4uLy4uLy4uL190eXBlcy9pY29uLmVudW0nO1xuaW1wb3J0IHsgQmFza2V0c1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcy9hbmFseXRpY3Muc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLW1pYW0tcmVwbGFjZS1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcGxhY2UtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlcGxhY2UtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBSZXBsYWNlSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGxpbmU6IEJhc2tldFByZXZpZXdMaW5lO1xuICBAT3V0cHV0KCkgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBwdWJsaWMgaXRlbXM6IEFycmF5PEl0ZW0+O1xuICBwdWJsaWMgY3VycmVudEl0ZW06IGFueTtcbiAgcHVibGljIGljb24gPSBJY29uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGJhc2tldHNTZXJ2aWNlOiBCYXNrZXRzU2VydmljZSxcbiAgICBwcml2YXRlIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRMaW5lKCk7XG4gIH1cblxuICBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0SXRlbShpdGVtOiBJdGVtKSB7XG4gICAgdGhpcy5saW5lLnJlY29yZC5zZWxlY3RJdGVtKGl0ZW0uaWQpO1xuICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnQoJ3JlcGxhY2UtaXRlbScpO1xuICAgIHRoaXMubGluZS5yZWNvcmQuc2F2ZSgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5iYXNrZXRzU2VydmljZS5sb2FkQmFza2V0KCkpLFxuICAgICAgdGFrZSgxKVxuICAgICkuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMubGluZS5pZCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRMaW5lKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudEl0ZW0gPSB0aGlzLmxpbmUucmVjb3JkLmF0dHJpYnV0ZXNbJ2Jhc2tldC1lbnRyaWVzLWl0ZW1zJ11bMF07XG4gICAgdGhpcy5pdGVtcyA9IHRoaXMubGluZS5yZWNvcmQucmVsYXRpb25zaGlwcy5pdGVtcy5kYXRhLmZpbHRlcigoaXRlbTogSXRlbSkgPT4gaXRlbS5pZCA9PT0gdGhpcy5jdXJyZW50SXRlbS5pdGVtX2lkKTtcbiAgfVxuXG4gIHByaWNlSW50ZWdlclBhcnQocHJpY2U6IHN0cmluZyApe1xuICAgIGNvbnN0IHZhbHVlcyA9IHByaWNlLnNwbGl0KCcuJyk7XG4gICAgcmV0dXJuIHZhbHVlc1swXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcHJpY2UgaXRlbT8uYXR0cmlidXRlc1tcInVuaXQtcHJpY2VcIl0gaXMgYSBzdHJpbmdcbiAgICogYW5kIHdlIHdhbiB0d28gZGVjaW1hbCAobm90IDAuOCBvciAwLjgwMCkgXG4gICAqIEByZXR1cm5zIGZpcnN0IHR3byBkZWNpbWFsXG4gICAqL1xuICBwcmljZURlY2ltYWxQYXJ0KHByaWNlOiBzdHJpbmcpe1xuICAgIGNvbnN0IHZhbHVlcyA9IHByaWNlLnNwbGl0KCcuJyk7XG4gICAgLy8gZm9yY2UgMiBkZWNpbWFsc1xuICAgIHJldHVybiB2YWx1ZXM/Lmxlbmd0aCA9PT0gMiA/ICh2YWx1ZXNbMV0gKyAnMDAnKS5zbGljZSgwLCAyKSA6ICcwMCc7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbVwiPlxuICA8YnV0dG9uIGNsYXNzPVwibS1idXR0b24tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiPlxuICAgIDxuZy1taWFtLWljb24gW2ljb25OYW1lXT0naWNvbi5DaGV2cm9uRG93bicgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLXByaW1hcnkpJyA+PC9uZy1taWFtLWljb24+XG4gICA8c3Bhbj5SZXRvdXI8L3NwYW4+IFxuICA8L2J1dHRvbj5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19zZWxlY3RlZFwiPlxuICAgIDxpbWcgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fc2VsZWN0ZWRfX3BpY3R1cmVcIiBbc3JjXT1cImxpbmU/LnJlY29yZD8uc2VsZWN0ZWRJdGVtPy5hdHRyaWJ1dGVzPy5pbWFnZVwiIGFsdD1cIkltYWdlIG5vbiBkaXNwb25pYmxlXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19zZWxlY3RlZF9fY29sdW1uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX2Rlc2NyaXB0aW9uXCI+XG4gICAgICAgIHt7IGxpbmU/LnJlY29yZD8uc2VsZWN0ZWRJdGVtLmF0dHJpYnV0ZXMubmFtZSB9fSB8XG4gICAgICAgICB7eyBsaW5lPy5yZWNvcmQ/LnNlbGVjdGVkSXRlbS5jYXBhY2l0eSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX3ByaWNlXCI+XG4gICAgICAgIDxzcGFuPnt7IHByaWNlSW50ZWdlclBhcnQobGluZT8ucmVjb3JkPy50b3RhbFByaWNlKSB9fSw8L3NwYW4+XG4gICAgICAgIDxzcGFuPnt7IHByaWNlRGVjaW1hbFBhcnQobGluZT8ucmVjb3JkPy50b3RhbFByaWNlKSB9fTwvc3Bhbj4gICBcbiAgICAgICAgPHNwYW4+IOKCrDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19jaG9pY2VzXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19jaG9pY2VzX19hY3Rpb25cIj5cbiAgICAgIDxkaXY+UmVtcGxhY2VyIGNldCBhcnRpY2xlIHBhciA6PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19jaG9pY2VzX19saXN0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX2Nob2ljZVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxpbmU/LnJlY29yZD8uY2FuZGlkYXRlSXRlbXMsIGxldCBpID0gaW5kZXhcIiAoY2xpY2spPVwib25TZWxlY3RJdGVtKGl0ZW0pXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fY2hvaWNlX19jb2x1bW5cIj5cbiAgICAgICAgICA8bmctbWlhbS1pY29uIFxuICAgICAgICAgIGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX2Nob2ljZV9fc3dhcFwiIFxuICAgICAgICAgIFtoZWlnaHRdPScxNicgXG4gICAgICAgICAgW3dpZHRoXT0nMTYnIFxuICAgICAgICAgIFtpY29uTmFtZV09J2ljb24uU3dhcCcgPlxuICAgICAgICA8L25nLW1pYW0taWNvbj5cbiAgICAgICAgICA8aW1nIFtzcmNdPVwiaXRlbT8uYXR0cmlidXRlcz8uaW1hZ2VcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fY2hvaWNlX19jb2x1bW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX2Nob2ljZV9fY29udGVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAge3sgaXRlbT8uYXR0cmlidXRlcz8ubmFtZSB9fSB8IHt7aXRlbT8uY2FwYWNpdHl9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX2Nob2ljZV9fY29sdW1uXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19wcmljZVwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgcHJpY2VJbnRlZ2VyUGFydChpdGVtPy5hdHRyaWJ1dGVzW1widW5pdC1wcmljZVwiXSkgfX0sPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+e3sgcHJpY2VEZWNpbWFsUGFydChpdGVtPy5hdHRyaWJ1dGVzW1widW5pdC1wcmljZVwiXSkgfX08L3NwYW4+ICAgXG4gICAgICAgICAgICA8c3Bhbj4g4oKsPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -216,7 +216,7 @@ export class CatalogListComponent {
216
216
  return this.recipesService.all({
217
217
  remotefilter: requestFilters,
218
218
  page: { size: 20, number: page },
219
- include: ['ingredients', 'recipe-steps', 'recipe-type', 'recipe-status', 'sponsors', 'recipe-provider']
219
+ include: ['ingredients', 'recipe-steps', 'recipe-type', 'recipe-status', 'sponsors', 'recipe-provider', 'tags']
220
220
  }).pipe(skipWhile(resp => resp.is_loading), switchMap((result) => this.processResults(result.data, requestFilters, page)));
221
221
  }
222
222
  }
@@ -380,4 +380,4 @@ CatalogListComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CatalogListComponent
380
380
  type: ViewChildren,
381
381
  args: [CatalogRecipeCardComponent]
382
382
  }] }); })();
383
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvYnVpbGRzL21pYW0vbmctbWlhbS1zZGsvcHJvamVjdHMvbmctbWlhbS9zcmMvIiwic291cmNlcyI6WyJsaWIvX3dlYi1jb21wb25lbnRzL2NhdGFsb2ctbGlzdC9jYXRhbG9nLWxpc3QuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9jYXRhbG9nLWxpc3QvY2F0YWxvZy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFHakIsTUFBTSxFQUNOLFlBQVksRUFDWixLQUFLLEVBRUwsWUFBWSxFQUNaLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEcsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlDLE9BQU8sSUFBSSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLElBQUksQ0FBQzs7Ozs7Ozs7Ozs7SUNuQjVDLCtCQUNFO0lBQUEsNEJBQU07SUFBQSxZQUFVO0lBQUEsaUJBQU87SUFDdkIsd0NBS2U7SUFIYixpUEFBOEI7SUFHaEMsaUJBQWU7SUFDakIsaUJBQU07Ozs7SUFQRSxlQUFVO0lBQVYsK0JBQVU7SUFJZCxlQUF1QjtJQUF2Qiw0Q0FBdUI7OztJQVA3Qiw4QkFDRTtJQUFBLDhCQUE4QztJQUFBLDJCQUFXO0lBQUEs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QUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRDs2TEFFVSxPQUFPO2tCQUFmLEtBQUs7WUFDRyxxQkFBcUI7a0JBQTdCLEtBQUs7WUFDRyxzQkFBc0I7a0JBQTlCLEtBQUs7WUFDRyxnQkFBZ0I7a0JBQXhCLEtBQUs7WUFDRyxVQUFVO2tCQUFsQixLQUFLO1lBQ0ksZ0JBQWdCO2tCQUF6QixNQUFNO1lBQ0csYUFBYTtrQkFBdEIsTUFBTTtZQUNHLHFCQUFxQjtrQkFBOUIsTUFBTTtZQWFtQyxXQUFXO2tCQUFwRCxZQUFZO21CQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBWaWV3Q2hpbGRyZW4sXG4gIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvY3VtZW50Q29sbGVjdGlvbiB9IGZyb20gJ25neC1qc29uYXBpJztcbmltcG9ydCB7IGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHNraXBXaGlsZSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXJ0aWNsZSB9IGZyb20gJy4uLy4uL19tb2RlbHMnO1xuaW1wb3J0IHsgUmVjaXBlIH0gZnJvbSAnLi4vLi4vX21vZGVscy9yZWNpcGUnO1xuaW1wb3J0IHsgQXJ0aWNsZXNTZXJ2aWNlLCBDb250ZXh0U2VydmljZSwgUmVjaXBlTGlrZXNTZXJ2aWNlLCBSZWNpcGVzU2VydmljZSB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcyc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vLi4vX3R5cGVzL2ljb24uZW51bSc7XG5pbXBvcnQgeyBSZWNpcGVGaWx0ZXIsIFJlY2lwZUZpbHRlcnMgfSBmcm9tICcuLi8uLi9fdHlwZXMvcmVjaXBlLWZpbHRlcnMnO1xuaW1wb3J0IHBpY2sgZnJvbSAnbG9kYXNoLWVzL3BpY2snO1xuaW1wb3J0IHsgQ2F0YWxvZ1JlY2lwZUNhcmRDb21wb25lbnQgfSBmcm9tICcuLic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLW1pYW0tY2F0YWxvZy1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhdGFsb2ctbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhdGFsb2ctbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDYXRhbG9nTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBmaWx0ZXJzOiBSZWNpcGVGaWx0ZXJzO1xuICBASW5wdXQoKSBub1JlY2lwZVRleHRGaXJzdExpbmU6IHN0cmluZztcbiAgQElucHV0KCkgbm9SZWNpcGVUZXh0U2Vjb25kTGluZTogc3RyaW5nO1xuICBASW5wdXQoKSBpbnNlcnRDcmVhdGVDYXJkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJhbmRvbU1vZGUgPSBmYWxzZTtcbiAgQE91dHB1dCgpIHJldHJpZXZlZFJlY2lwZXMgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY2lwZVtdPigpO1xuICBAT3V0cHV0KCkgZmlsdGVyUmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgcmVjaXBlQWN0aW9uVHJpZ2dlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjx7YWN0aW9uOiBzdHJpbmcsIHJlY2lwZTogUmVjaXBlfT4oKTtcblxuICBjdXJyZW50UmVjaXBlczogUmVjaXBlW10gPSBbXTtcbiAgbGFzdFBhZ2UgPSAwO1xuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXTtcbiAgbG9hZGluZyA9IHRydWU7XG4gIGljb24gPSBJY29uO1xuICBub01vcmVSZWNpcGVzID0gZmFsc2U7XG4gIG5vTW9yZUFydGljbGVzID0gZmFsc2U7XG4gIGJvdHRvbUFuY2hvcjogSFRNTEVsZW1lbnQ7XG4gIGZpbHRlcnNBcmVFbXB0eSA9IHRydWU7XG4gIGZpbHRlcnNUb0Rpc3BsYXkgPSBbXTtcbiAgYXJ0aWNsZXM6IEFydGljbGVbXSA9IFtdO1xuICBAVmlld0NoaWxkcmVuKENhdGFsb2dSZWNpcGVDYXJkQ29tcG9uZW50KSByZWNpcGVDYXJkcyE6IFF1ZXJ5TGlzdDxDYXRhbG9nUmVjaXBlQ2FyZENvbXBvbmVudD47XG5cbiAgcHJpdmF0ZSByZW1vdGVGaWx0ZXJzID0ge307XG4gIHByaXZhdGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyO1xuICBwcml2YXRlIG11dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWNpcGVzU2VydmljZTogUmVjaXBlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNpcGVMaWtlc1NlcnZpY2U6IFJlY2lwZUxpa2VzU2VydmljZSxcbiAgICBwcml2YXRlIGFydGljbGVzU2VydmljZTogQXJ0aWNsZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dDogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IFtdO1xuICAgIHRoaXMuY3VycmVudFJlY2lwZXMgPSBbXTtcbiAgICB0aGlzLmZpbHRlcnMgPSB7IHNlYXJjaDogJycgfTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYm90dG9tQW5jaG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pYW0tY2F0YWxvZy1saXN0X19hbmNob3InKTtcbiAgICB0aGlzLmluaXRMb2FkT25TY3JvbGwoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMucmVtb3RlRmlsdGVycyA9IHRoaXMuYnVpbGRSZW1vdGVGaWx0ZXJzKCk7XG4gICAgdGhpcy5maWx0ZXJzVG9EaXNwbGF5ID0gdGhpcy5idWlsZEZpbHRlcnNBcnJheSgpO1xuICAgIHRoaXMucmVsb2FkUGFnZSgpO1xuICB9XG5cbiAgaW5pdExvYWRPblNjcm9sbCgpIHtcbiAgICAvLyBSZWNlaXZlIGFuIGV2ZW50IGVhY2ggdGltZSB0aGUgYW5jaG9yIGVudGVycy9sZWF2ZXMgdGhlIHZpZXdwb3J0XG4gICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoW2VudHJ5XSkgPT4geyB0aGlzLmF1dG9sb2FkQ29udGVudElmTmVjZXNzYXJ5KCk7IH0sIHt9KTtcbiAgICAvLyBSZWNlaXZlIGFuIGV2ZW50IGVhY2ggdGltZSBhbiBhdHRyaWJ1dGUvY2hpbGQgaXMgYWRkZWQvZGVsZXRlZC91cGRhdGVkIGluIHRoZSBwYXJlbnQgZGl2IG9mIHRoZSByZWNpcGVzXG4gICAgLy8gaS5lLiB3aWxsIGJlIHRyaWdnZXJlZCBlYWNoIHRpbWUgbmV3IHJlY2lwZXMgYXJlIGRpc3BsYXllZFxuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHsgdGhpcy5hdXRvbG9hZENvbnRlbnRJZk5lY2Vzc2FyeSgpOyB9KTtcblxuICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmJvdHRvbUFuY2hvcik7XG4gICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLm9ic2VydmUoXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdtaWFtLWNhdGFsb2ctbGlzdF9fY2FyZHMnKVswXSxcbiAgICAgIHsgYXR0cmlidXRlczogdHJ1ZSwgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiBmYWxzZSB9IC8vIHN1YnRyZWUgZmFsc2UgPT4gY2hhbmdlcyBvbiBjaGlsZHJlbiB3b24ndCB0cmlnZ2VyIHRoZSBjYWxsYmFja1xuICAgICk7XG4gIH1cblxuICBhbmNob3JJc09uU2NyZWVuKCkge1xuICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgY29uc3QgcmVjdCA9IHRoaXMuYm90dG9tQW5jaG9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHJldHVybiAocmVjdC50b3AgPD0gdmlld3BvcnRIZWlnaHQgJiYgcmVjdC5ib3R0b20gPj0gMCk7XG4gIH1cblxuICBhdXRvbG9hZENvbnRlbnRJZk5lY2Vzc2FyeSgpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmFuY2hvcklzT25TY3JlZW4oKSAmJiAhdGhpcy5sb2FkaW5nICYmXG4gICAgICAoKHRoaXMuY3VycmVudFJlY2lwZXMubGVuZ3RoID4gMCAmJiAhdGhpcy5ub01vcmVSZWNpcGVzKSB8fCAodGhpcy5hcnRpY2xlcy5sZW5ndGggPiAwICYmICF0aGlzLm5vTW9yZUFydGljbGVzKSlcbiAgICApIHtcbiAgICAgIHRoaXMubG9hZE1vcmUoKTtcbiAgICB9XG4gIH1cblxuICBsb2FkTW9yZSgpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMubGFzdFBhZ2UrKztcbiAgICB0aGlzLmxvYWRDb250ZW50KCk7XG4gIH1cblxuICBsb2FkUmVjaXBlc1BhZ2UocGFnZTogbnVtYmVyKTogT2JzZXJ2YWJsZTxSZWNpcGVbXT4ge1xuICAgIGlmICh0aGlzLm5vTW9yZVJlY2lwZXMpIHtcbiAgICAgIHJldHVybiBvZihbXSk7XG4gICAgfVxuXG4gICAgLy8ga2VlcCBhIGNvcHkgb2YgdGhlIGZpbHRlcnMgd2hlbiByZXF1ZXN0IGlzIHNlbnQsIHNvIHdlIGNhbiBjaGVjayB0aGV5IGFyZSBzdGlsbCB0aGUgc2FtZSB3aGVuIGl0IGlzIHJlY2VpdmVkXG4gICAgLy8gQmVjYXVzZSBpZiBpdCdzIG5vdCB0aGUgY2FzZSB3ZSBoYXZlIHRvIGluZ29yZSB0aGUgcmVzdWx0XG4gICAgY29uc3QgcmVxdWVzdEZpbHRlcnMgPSB7IC4uLnRoaXMucmVtb3RlRmlsdGVycyB9O1xuICAgIGlmICh0aGlzLnJhbmRvbU1vZGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlY2lwZXNTZXJ2aWNlLmdldFJhbmRvbSh7IHNpemU6IDIwLCBudW1iZXI6IHBhZ2UgfSwgcmVxdWVzdEZpbHRlcnMpLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgocmVzdWx0OiBSZWNpcGVbXSkgPT4gdGhpcy5wcm9jZXNzUmVzdWx0cyhyZXN1bHQsIHJlcXVlc3RGaWx0ZXJzLCBwYWdlKSlcbiAgICAgICk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucmVjaXBlc1NlcnZpY2UuYWxsKHtcbiAgICAgICAgcmVtb3RlZmlsdGVyOiByZXF1ZXN0RmlsdGVycyxcbiAgICAgICAgcGFnZTogeyBzaXplOiAyMCwgbnVtYmVyOiBwYWdlIH0sXG4gICAgICAgIGluY2x1ZGU6IFsnaW5ncmVkaWVudHMnLCAncmVjaXBlLXN0ZXBzJywgJ3JlY2lwZS10eXBlJywgJ3JlY2lwZS1zdGF0dXMnLCAnc3BvbnNvcnMnLCAncmVjaXBlLXByb3ZpZGVyJ11cbiAgICAgIH0pLnBpcGUoXG4gICAgICAgIHNraXBXaGlsZShyZXNwID0+IHJlc3AuaXNfbG9hZGluZyksXG4gICAgICAgIHN3aXRjaE1hcCgocmVzdWx0OiBEb2N1bWVudENvbGxlY3Rpb248UmVjaXBlPikgPT4gdGhpcy5wcm9jZXNzUmVzdWx0cyhyZXN1bHQuZGF0YSwgcmVxdWVzdEZpbHRlcnMsIHBhZ2UpKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcm9jZXNzUmVzdWx0cyhyZXN1bHRzOiBSZWNpcGVbXSwgcmVxdWVzdEZpbHRlcnMsIHBhZ2UpOiBPYnNlcnZhYmxlPFJlY2lwZVtdPiB7XG4gICAgLy8gQmVjYXVzZSBGaWx0ZXIgaXMgYSB0eXBlLCBhdHRyaWJ1dGVzIGFyZSBhbHdheXMgaW4gdGhlIHNhbWUgb3JkZXIsIHNvIHN0cmluZ2lmeSB3b24ndCBiZSBmYWxzZSBmb3Igb2JqZWN0cyB3aXRoIHNhbWUgYXR0cmlidXRlc1xuICAgIGlmIChKU09OLnN0cmluZ2lmeShyZXF1ZXN0RmlsdGVycykgPT09IEpTT04uc3RyaW5naWZ5KHRoaXMucmVtb3RlRmlsdGVycykpIHtcbiAgICAgIC8vIGlmIHlvdSBzcGFtIGNsaWNrIG9uIGZpbHRlcnMsIG11bHRpcGxlIHJlcXVlc3RzIHdpdGggcGFnZSA9PSAxIGNvdWxkIGJlIHNlbnQgZm9yIHRoZSBzYW1lIGZpbHRlcnMgLT4gb25seSBrZWVwIHRoZSBsYXN0IHJlc3VsdFxuICAgICAgdGhpcy5jdXJyZW50UmVjaXBlcyA9IHBhZ2UgPT09IDEgPyByZXN1bHRzIDogWy4uLnRoaXMuY3VycmVudFJlY2lwZXMsIC4uLnJlc3VsdHNdO1xuICAgICAgdGhpcy5ub01vcmVSZWNpcGVzID0gcmVzdWx0cy5sZW5ndGggPT09IDA7XG5cbiAgICAgIC8vIEdldCBhbGwgcmVjaXBlLWxpa2VzIGJlZm9yZSBkaXNwbGF5aW5nXG4gICAgICByZXR1cm4gdGhpcy5yZWNpcGVMaWtlc1NlcnZpY2UuYWRkTGlrZXNUb1JlY2lwZXMocmVzdWx0cykucGlwZShcbiAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJldHJpZXZlZFJlY2lwZXMuZW1pdCh0aGlzLmN1cnJlbnRSZWNpcGVzKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50UmVjaXBlcztcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmRlYnVnKCdGaWx0ZXJpbmcgYWJvcnRlZCA6ICcgKyBKU09OLnN0cmluZ2lmeShyZXF1ZXN0RmlsdGVycykgKyAnYW5kJyArIEpTT04uc3RyaW5naWZ5KHRoaXMucmVtb3RlRmlsdGVycykgKyAnYXJlIGRpZmZlcmVudCcpO1xuICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVGaWx0ZXIoZmlsdGVyTmFtZSkge1xuICAgIHRoaXMuZmlsdGVyUmVtb3ZlZC5lbWl0KGZpbHRlck5hbWUpO1xuICB9XG5cbiAgYnVpbGRSZW1vdGVGaWx0ZXJzKCkge1xuICAgIHRoaXMuZmlsdGVyc0FyZUVtcHR5ID0gISh0aGlzLmZpbHRlcnMuc2VhcmNoICYmIHRoaXMuZmlsdGVycy5zZWFyY2ggIT09ICcnKTtcbiAgICBjb25zdCBkaWZmaWN1bHR5ID0gdGhpcy5idWlsZFJlbW90ZUZpbHRlcih0aGlzLmZpbHRlcnMuZGlmZmljdWx0eSwgJy0nKTtcbiAgICBjb25zdCBjb3N0ID0gdGhpcy5idWlsZFJlbW90ZUZpbHRlcih0aGlzLmZpbHRlcnMuY29zdCwgJy0nKS5zcGxpdCgnLScpO1xuICAgIGNvbnN0IHRvdGFsVGltZSA9IHRoaXMuYnVpbGRSZW1vdGVGaWx0ZXIodGhpcy5maWx0ZXJzLnRpbWUsICcsJyk7XG5cbiAgICBjb25zdCBmaWx0ZXJzID0ge1xuICAgICAgLi4uKGRpZmZpY3VsdHkubGVuZ3RoID4gMCkgPyB7IGRpZmZpY3VsdHk6IGRpZmZpY3VsdHkgKyAnLGVxJyB9IDoge30sIC8vIGV4OiBmaWx0ZXJbZGlmZmljdWx0eV09MS0yLTMsZXEgPT4gYWxsIGNoZWNrZWRcbiAgICAgIC4uLihjb3N0Lmxlbmd0aCA9PT0gMikgPyB7IGNvbXB1dGVkX2Nvc3Q6IGNvc3RbMF0gKyAnLGd0LCcgKyBjb3N0WzFdICsgJyxsdCcgfSA6IHt9LCAvLyBleDogZmlsdGVyW2Nvc3RdPTUsZ3QsMTAsbHQgPT4gNSA8IGNvc3QgPCAxMFxuICAgICAgLi4uKHRvdGFsVGltZS5sZW5ndGggPiAwKSA/IHsgJ3RvdGFsLXRpbWUnOiB0b3RhbFRpbWUgfSA6IHt9LFxuICAgICAgLi4uKHRoaXMuZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycz8uZmlsdGVycykgPyB0aGlzLmZpbHRlcnMuYWRkaXRpb25hbEZpbHRlcnMuZmlsdGVycyA6IHt9LFxuICAgICAgLi4uKHRoaXMuZmlsdGVycy5zZWFyY2gpID8ge3NlYXJjaDogdGhpcy5maWx0ZXJzLnNlYXJjaCB9IDoge31cbiAgICB9O1xuICAgIHJldHVybiBmaWx0ZXJzO1xuICB9XG5cbiAgLy8gUmVhZHMgdGhlIHZhbHVlcyBvZiBhIGZpZWxkIGFuZCBjb252ZXJ0cyBpdCB0byB0aGUgc3RyaW5nIHRvIHBhc3MgaW4gdGhlIHJlbW90ZUZpbHRlcnNcbiAgLy8gZXg6IGJ1aWxkUmVtb3RlRmlsdGVyKHtcbiAgLy8gICB7bmFtZTogJzEnLCB2YWx1ZTogdHJ1ZSwgdGV4dDogJ0ZhY2lsZSd9LFxuICAvLyAgIHtuYW1lOiAnMicsIHZhbHVlOiBmYWxzZSwgdGV4dDogJ01veWVuJ30sXG4gIC8vICAge25hbWU6ICczJywgdmFsdWU6IHRydWUsIHRleHQ6ICdEaWZmaWNpbGUnfVxuICAvLyB9LCAnLScpICA9PT4gJzEtMydcbiAgYnVpbGRSZW1vdGVGaWx0ZXIoZmlsdGVyOiBSZWNpcGVGaWx0ZXJbXSwgc2VwYXJhdG9yOiBzdHJpbmcpIHtcbiAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgZm9yIChjb25zdCBmIG9mIGZpbHRlcikge1xuICAgICAgaWYgKGYudmFsdWUpIHtcbiAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7IHJlc3VsdCArPSBzZXBhcmF0b3I7IH1cbiAgICAgICAgcmVzdWx0ICs9IGYubmFtZTtcbiAgICAgICAgdGhpcy5maWx0ZXJzQXJlRW1wdHkgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGJ1aWxkRmlsdGVyc0FycmF5KCk6IHN0cmluZ1tdIHtcbiAgICBsZXQgZmlsdGVyTmFtZXMgPSBbXTtcbiAgICBmaWx0ZXJOYW1lcyA9IFsuLi5maWx0ZXJOYW1lcywgLi4udGhpcy5nZXRTZWxlY3RlZEZpbHRlcnModGhpcy5maWx0ZXJzLmNvc3QpLCAuLi50aGlzLmdldFNlbGVjdGVkRmlsdGVycyh0aGlzLmZpbHRlcnMuZGlmZmljdWx0eSksXG4gICAgICAuLi50aGlzLmdldFNlbGVjdGVkRmlsdGVycyh0aGlzLmZpbHRlcnMudGltZSldO1xuICAgIGlmICh0aGlzLmZpbHRlcnMuYWRkaXRpb25hbEZpbHRlcnMgJiYgdGhpcy5maWx0ZXJzLmFkZGl0aW9uYWxGaWx0ZXJzLnRpdGxlICE9PSAnJykge1xuICAgICAgZmlsdGVyTmFtZXMgPSBbdGhpcy5maWx0ZXJzLmFkZGl0aW9uYWxGaWx0ZXJzLnRpdGxlXS5jb25jYXQoZmlsdGVyTmFtZXMpO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyTmFtZXM7XG4gIH1cblxuICBnZXRTZWxlY3RlZEZpbHRlcnMoZmlsdGVyc0FycmF5KTogc3RyaW5nW10ge1xuICAgIHJldHVybiBmaWx0ZXJzQXJyYXkuZmlsdGVyKGVsID0+IGVsLnZhbHVlKS5tYXAoZWwgPT4gZWwudGV4dCk7XG4gIH1cblxuICByZWxvYWRQYWdlKCkge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5sYXN0UGFnZSA9IDE7XG4gICAgdGhpcy5ub01vcmVSZWNpcGVzID0gZmFsc2U7XG4gICAgdGhpcy5ub01vcmVBcnRpY2xlcyA9IGZhbHNlO1xuICAgIHRoaXMuY3VycmVudFJlY2lwZXMgPSBbXTtcbiAgICB0aGlzLmFydGljbGVzID0gW107XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMubG9hZENvbnRlbnQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIC8vIEFydGljbGVzIHdpbGwgYmUgbG9hZGVkIG9ubHkgaWYgYSBmaWx0ZXIgaXMgYXBwbGllZCBvbiBwYWNrYWdlc1xuICAvLyBUaGlzIGlzIHRvIGF2b2lkIGFydGljbGVzIGJlaW5nIGxvYWRlZCBpbiBzcGVjaWFsIHBhZ2VzIHdoZXJlIG9ubHkgZmlsdGVycyBvbiByZWNpcGVzIGFyZSBwYXNzZWQgKGZhdm9yaXRlcywgc3VnZ2VzdGVkLCBldGMuKVxuICAvLyA9PiBQYWNrYWdlcyBtaXhpbmcgYXJ0aWNsZXMgd2l0aCByZWNpcGVzIGlzIG5vdCBzdXBwb3J0ZWQgeWV0XG4gIHByaXZhdGUgbG9hZEFydGljbGVzKHBhZ2U6IG51bWJlcik6IE9ic2VydmFibGU8QXJ0aWNsZVtdPiB7XG4gICAgaWYgKCF0aGlzLmNvbnRleHQuYXJ0aWNsZXNJbkNhdGFsb2dFbmFibGVkIHx8IHRoaXMubm9Nb3JlQXJ0aWNsZXMgfHwgIXRoaXMucmVtb3RlRmlsdGVyc1sncGFja2FnZXMnXSkge1xuICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXF1ZXN0RmlsdGVycyA9IHBpY2sodGhpcy5yZW1vdGVGaWx0ZXJzLCAncGFja2FnZXMnLCAnc2VhcmNoJyk7XG4gICAgcmV0dXJuIHRoaXMuYXJ0aWNsZXNTZXJ2aWNlLmFsbCh7XG4gICAgICByZW1vdGVmaWx0ZXI6IHJlcXVlc3RGaWx0ZXJzLFxuICAgICAgcGFnZTogeyBzaXplOiAyMCwgbnVtYmVyOiBwYWdlIH0sXG4gICAgICBzb3J0OiBbJy1kYXRlJ10gfSkucGlwZShcbiAgICAgIG1hcCgocmVzdWx0OiBEb2N1bWVudENvbGxlY3Rpb248QXJ0aWNsZT4pID0+IHtcbiAgICAgICAgdGhpcy5hcnRpY2xlcyA9IHBhZ2UgPT09IDEgPyByZXN1bHQuZGF0YSA6IFsuLi50aGlzLmFydGljbGVzLCAuLi5yZXN1bHQuZGF0YV07XG4gICAgICAgIHRoaXMubm9Nb3JlQXJ0aWNsZXMgPSByZXN1bHQuZGF0YS5sZW5ndGggPT09IDA7XG4gICAgICAgIHJldHVybiB0aGlzLmFydGljbGVzO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkQ29udGVudCgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIGZvcmtKb2luKFt0aGlzLmxvYWRSZWNpcGVzUGFnZSh0aGlzLmxhc3RQYWdlKSwgdGhpcy5sb2FkQXJ0aWNsZXModGhpcy5sYXN0UGFnZSldKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWlhbS1jYXRhbG9nLWxpc3RfX2NhcmRzXCI+XG5cbiAgPGRpdiAqbmdJZj1cImZpbHRlcnNUb0Rpc3BsYXkubGVuZ3RoID4gMFwiIGNsYXNzPVwibWlhbS1jYXRhbG9nLWxpc3RfX2ZpbHRlcnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1jYXRhbG9nLWxpc3RfX2ZpbHRlcl9fdGl0bGVcIj5Wb3MgZmlsdHJlczwvZGl2PlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpbHRlciBvZiBmaWx0ZXJzVG9EaXNwbGF5XCIgY2xhc3M9XCJtaWFtLWNhdGFsb2ctbGlzdF9fZmlsdGVyXCI+XG4gICAgICA8c3Bhbj57e2ZpbHRlcn19PC9zcGFuPlxuICAgICAgPG5nLW1pYW0taWNvbiBcbiAgICAgICAgY2xhc3M9XCJtaWFtLWNhdGFsb2ctbGlzdF9fZmlsdGVyX19pY29uXCIgXG4gICAgICAgIChjbGljayk9XCJyZW1vdmVGaWx0ZXIoZmlsdGVyKVwiIFxuICAgICAgICBbaWNvbk5hbWVdPVwiaWNvbi5DbGVhclwiXG4gICAgICAgIHByaW1hcnlDb2xvcj1cInZhcigtLW0tY29sb3ItcHJpbWFyeSlcIj5cbiAgICAgIDwvbmctbWlhbS1pY29uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwiIWxvYWRpbmcgJiYgY3VycmVudFJlY2lwZXMubGVuZ3RoID09PSAwICYmIGFydGljbGVzLmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwibWlhbS1jYXRhbG9nLWxpc3RfX25vdEZvdW5kXCI+XG4gICAgPG5nLW1pYW0taWNvbiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1saXN0X19ub3RGb3VuZF9faWNvblwiIFt3aWR0aF09XCIyNzlcIiBbaGVpZ2h0XT1cIjI0M1wiIFtpY29uTmFtZV09XCJpY29uLk5vUmVjaXBlRm91bmRcIj48L25nLW1pYW0taWNvbj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1jYXRhbG9nLWxpc3RfX25vdEZvdW5kX190aXRsZTFcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwibm9SZWNpcGVUZXh0Rmlyc3RMaW5lICYmIGZpbHRlcnNBcmVFbXB0eSBlbHNlIGRlZmF1bHRGaXJzdExpbmVcIj5cbiAgICAgICAge3tub1JlY2lwZVRleHRGaXJzdExpbmV9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Rmlyc3RMaW5lPlxuICAgICAgICA8c3Bhbj5Ew6lzb2zDqSwgYXVjdW5lIHByb3Bvc2l0aW9uIHRyb3V2w6llIDwvc3Bhbj4gXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiZmlsdGVycy5zZWFyY2hcIj5wb3VyIFwie3tmaWx0ZXJzLnNlYXJjaH19XCI8L3NwYW4+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLWNhdGFsb2ctbGlzdF9fbm90Rm91bmRfX3RpdGxlMlwiPlxuICAgICAgPHNwYW4gKm5nSWY9XCJub1JlY2lwZVRleHRTZWNvbmRMaW5lICYmIGZpbHRlcnNBcmVFbXB0eSBlbHNlIGRlZmF1bHRTZWNvbmRMaW5lXCI+XG4gICAgICAgIHt7bm9SZWNpcGVUZXh0U2Vjb25kTGluZX19XG4gICAgICA8L3NwYW4+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRTZWNvbmRMaW5lPlxuICAgICAgICBWZXVpbGxleiBtb2RpZmllciBsZXMgdGVybWVzIGRlIHZvdHJlIHJlY2hlcmNoZSBvdSByw6lnbGVyIGxlcyBmaWx0cmVzXG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPG5nLW1pYW0tY2FyZC1jcmVhdGUtcmVjaXBlICpuZ0lmPVwiaW5zZXJ0Q3JlYXRlQ2FyZCAmJiBjdXJyZW50UmVjaXBlcy5sZW5ndGggIT09IDBcIiAoY2xpY2tlZCk9XCJyZWNpcGVBY3Rpb25UcmlnZ2VyZWQuZW1pdCh7YWN0aW9uOiAnQ1JFQVRFJywgcmVjaXBlOiBudWxsfSlcIiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1saXN0X19jYXJkXCI+PC9uZy1taWFtLWNhcmQtY3JlYXRlLXJlY2lwZT5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgcmVjaXBlIG9mIGN1cnJlbnRSZWNpcGVzXCIgY2xhc3M9XCJtaWFtLWNhdGFsb2ctbGlzdF9fY2FyZFwiPlxuICAgIDxuZy1taWFtLWNhdGFsb2ctcmVjaXBlLWNhcmQgW3JlY2lwZV09J3JlY2lwZScgKGFjdGlvblRyaWdnZXJlZCk9XCJyZWNpcGVBY3Rpb25UcmlnZ2VyZWQuZW1pdCh7YWN0aW9uOiAkZXZlbnQsIHJlY2lwZTogcmVjaXBlfSlcIj48L25nLW1pYW0tY2F0YWxvZy1yZWNpcGUtY2FyZD5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nRm9yPVwibGV0IGFydGljbGUgb2YgYXJ0aWNsZXNcIiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1saXN0X19jYXJkXCI+XG4gICAgPG5nLW1pYW0tY2F0YWxvZy1hcnRpY2xlLWNhcmQgW2FydGljbGVdPVwiYXJ0aWNsZVwiPjwvbmctbWlhbS1jYXRhbG9nLWFydGljbGUtY2FyZD5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJtaWFtLWNhdGFsb2ctbGlzdF9fbG9hZGVyXCI+XG4gICAgPG5nLW1pYW0tbG9hZGVyPjwvbmctbWlhbS1sb2FkZXI+XG4gICAgPGRpdj5cbiAgICAgIENoYXJnZW1lbnQgZGVzIHLDqXN1bHRhdHMuLi5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgaWQ9XCJtaWFtLWNhdGFsb2ctbGlzdF9fYW5jaG9yXCI+PC9kaXY+XG48L2Rpdj4iXX0=
383
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvYnVpbGRzL21pYW0vbmctbWlhbS1zZGsvcHJvamVjdHMvbmctbWlhbS9zcmMvIiwic291cmNlcyI6WyJsaWIvX3dlYi1jb21wb25lbnRzL2NhdGFsb2ctbGlzdC9jYXRhbG9nLWxpc3QuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9jYXRhbG9nLWxpc3QvY2F0YWxvZy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFHakIsTUFBTSxFQUNOLFlBQVksRUFDWixLQUFLLEVBRUwsWUFBWSxFQUNaLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEcsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlDLE9BQU8sSUFBSSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLElBQUksQ0FBQzs7Ozs7Ozs7Ozs7SUNuQjVDLCtCQUNFO0lBQUEsNEJBQU07SUFBQSxZQUFVO0lBQUEsaUJBQU87SUFDdkIsd0NBS2U7SUFIYixpUEFBOEI7SUFHaEMsaUJBQWU7SUFDakIsaUJBQU07Ozs7SUFQRSxlQUFVO0lBQVYsK0JBQVU7SUFJZCxlQUF1QjtJQUF2Qiw0Q0FBdUI7OztJQVA3Qiw4QkFDRTtJQUFBLDhCQUE4QztJQUFBLDJCQUFXO0lBQUEs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STtnQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07YUFDaEQ7NkxBRVUsT0FBTztrQkFBZixLQUFLO1lBQ0cscUJBQXFCO2tCQUE3QixLQUFLO1lBQ0csc0JBQXNCO2tCQUE5QixLQUFLO1lBQ0csZ0JBQWdCO2tCQUF4QixLQUFLO1lBQ0csVUFBVTtrQkFBbEIsS0FBSztZQUNJLGdCQUFnQjtrQkFBekIsTUFBTTtZQUNHLGFBQWE7a0JBQXRCLE1BQU07WUFDRyxxQkFBcUI7a0JBQTlCLE1BQU07WUFhbUMsV0FBVztrQkFBcEQsWUFBWTttQkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgVmlld0NoaWxkcmVuLFxuICBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb2N1bWVudENvbGxlY3Rpb24gfSBmcm9tICduZ3gtanNvbmFwaSc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBza2lwV2hpbGUsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFydGljbGUgfSBmcm9tICcuLi8uLi9fbW9kZWxzJztcbmltcG9ydCB7IFJlY2lwZSB9IGZyb20gJy4uLy4uL19tb2RlbHMvcmVjaXBlJztcbmltcG9ydCB7IEFydGljbGVzU2VydmljZSwgQ29udGV4dFNlcnZpY2UsIFJlY2lwZUxpa2VzU2VydmljZSwgUmVjaXBlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9fc2VydmljZXMnO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gJy4uLy4uL190eXBlcy9pY29uLmVudW0nO1xuaW1wb3J0IHsgUmVjaXBlRmlsdGVyLCBSZWNpcGVGaWx0ZXJzIH0gZnJvbSAnLi4vLi4vX3R5cGVzL3JlY2lwZS1maWx0ZXJzJztcbmltcG9ydCBwaWNrIGZyb20gJ2xvZGFzaC1lcy9waWNrJztcbmltcG9ydCB7IENhdGFsb2dSZWNpcGVDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1taWFtLWNhdGFsb2ctbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXRhbG9nLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXRhbG9nLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ2F0YWxvZ0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgZmlsdGVyczogUmVjaXBlRmlsdGVycztcbiAgQElucHV0KCkgbm9SZWNpcGVUZXh0Rmlyc3RMaW5lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG5vUmVjaXBlVGV4dFNlY29uZExpbmU6IHN0cmluZztcbiAgQElucHV0KCkgaW5zZXJ0Q3JlYXRlQ2FyZCA9IGZhbHNlO1xuICBASW5wdXQoKSByYW5kb21Nb2RlID0gZmFsc2U7XG4gIEBPdXRwdXQoKSByZXRyaWV2ZWRSZWNpcGVzID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNpcGVbXT4oKTtcbiAgQE91dHB1dCgpIGZpbHRlclJlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHJlY2lwZUFjdGlvblRyaWdnZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8e2FjdGlvbjogc3RyaW5nLCByZWNpcGU6IFJlY2lwZX0+KCk7XG5cbiAgY3VycmVudFJlY2lwZXM6IFJlY2lwZVtdID0gW107XG4gIGxhc3RQYWdlID0gMDtcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW107XG4gIGxvYWRpbmcgPSB0cnVlO1xuICBpY29uID0gSWNvbjtcbiAgbm9Nb3JlUmVjaXBlcyA9IGZhbHNlO1xuICBub01vcmVBcnRpY2xlcyA9IGZhbHNlO1xuICBib3R0b21BbmNob3I6IEhUTUxFbGVtZW50O1xuICBmaWx0ZXJzQXJlRW1wdHkgPSB0cnVlO1xuICBmaWx0ZXJzVG9EaXNwbGF5ID0gW107XG4gIGFydGljbGVzOiBBcnRpY2xlW10gPSBbXTtcbiAgQFZpZXdDaGlsZHJlbihDYXRhbG9nUmVjaXBlQ2FyZENvbXBvbmVudCkgcmVjaXBlQ2FyZHMhOiBRdWVyeUxpc3Q8Q2F0YWxvZ1JlY2lwZUNhcmRDb21wb25lbnQ+O1xuXG4gIHByaXZhdGUgcmVtb3RlRmlsdGVycyA9IHt9O1xuICBwcml2YXRlIGludGVyc2VjdGlvbk9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlcjtcbiAgcHJpdmF0ZSBtdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVjaXBlc1NlcnZpY2U6IFJlY2lwZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVjaXBlTGlrZXNTZXJ2aWNlOiBSZWNpcGVMaWtlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcnRpY2xlc1NlcnZpY2U6IEFydGljbGVzU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHQ6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICB0aGlzLmN1cnJlbnRSZWNpcGVzID0gW107XG4gICAgdGhpcy5maWx0ZXJzID0geyBzZWFyY2g6ICcnIH07XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmJvdHRvbUFuY2hvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaWFtLWNhdGFsb2ctbGlzdF9fYW5jaG9yJyk7XG4gICAgdGhpcy5pbml0TG9hZE9uU2Nyb2xsKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLnJlbW90ZUZpbHRlcnMgPSB0aGlzLmJ1aWxkUmVtb3RlRmlsdGVycygpO1xuICAgIHRoaXMuZmlsdGVyc1RvRGlzcGxheSA9IHRoaXMuYnVpbGRGaWx0ZXJzQXJyYXkoKTtcbiAgICB0aGlzLnJlbG9hZFBhZ2UoKTtcbiAgfVxuXG4gIGluaXRMb2FkT25TY3JvbGwoKSB7XG4gICAgLy8gUmVjZWl2ZSBhbiBldmVudCBlYWNoIHRpbWUgdGhlIGFuY2hvciBlbnRlcnMvbGVhdmVzIHRoZSB2aWV3cG9ydFxuICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKFtlbnRyeV0pID0+IHsgdGhpcy5hdXRvbG9hZENvbnRlbnRJZk5lY2Vzc2FyeSgpOyB9LCB7fSk7XG4gICAgLy8gUmVjZWl2ZSBhbiBldmVudCBlYWNoIHRpbWUgYW4gYXR0cmlidXRlL2NoaWxkIGlzIGFkZGVkL2RlbGV0ZWQvdXBkYXRlZCBpbiB0aGUgcGFyZW50IGRpdiBvZiB0aGUgcmVjaXBlc1xuICAgIC8vIGkuZS4gd2lsbCBiZSB0cmlnZ2VyZWQgZWFjaCB0aW1lIG5ldyByZWNpcGVzIGFyZSBkaXNwbGF5ZWRcbiAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7IHRoaXMuYXV0b2xvYWRDb250ZW50SWZOZWNlc3NhcnkoKTsgfSk7XG5cbiAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyLm9ic2VydmUodGhpcy5ib3R0b21BbmNob3IpO1xuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKFxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbWlhbS1jYXRhbG9nLWxpc3RfX2NhcmRzJylbMF0sXG4gICAgICB7IGF0dHJpYnV0ZXM6IHRydWUsIGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogZmFsc2UgfSAvLyBzdWJ0cmVlIGZhbHNlID0+IGNoYW5nZXMgb24gY2hpbGRyZW4gd29uJ3QgdHJpZ2dlciB0aGUgY2FsbGJhY2tcbiAgICApO1xuICB9XG5cbiAgYW5jaG9ySXNPblNjcmVlbigpIHtcbiAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgIGNvbnN0IHJlY3QgPSB0aGlzLmJvdHRvbUFuY2hvci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICByZXR1cm4gKHJlY3QudG9wIDw9IHZpZXdwb3J0SGVpZ2h0ICYmIHJlY3QuYm90dG9tID49IDApO1xuICB9XG5cbiAgYXV0b2xvYWRDb250ZW50SWZOZWNlc3NhcnkoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5hbmNob3JJc09uU2NyZWVuKCkgJiYgIXRoaXMubG9hZGluZyAmJlxuICAgICAgKCh0aGlzLmN1cnJlbnRSZWNpcGVzLmxlbmd0aCA+IDAgJiYgIXRoaXMubm9Nb3JlUmVjaXBlcykgfHwgKHRoaXMuYXJ0aWNsZXMubGVuZ3RoID4gMCAmJiAhdGhpcy5ub01vcmVBcnRpY2xlcykpXG4gICAgKSB7XG4gICAgICB0aGlzLmxvYWRNb3JlKCk7XG4gICAgfVxuICB9XG5cbiAgbG9hZE1vcmUoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmxhc3RQYWdlKys7XG4gICAgdGhpcy5sb2FkQ29udGVudCgpO1xuICB9XG5cbiAgbG9hZFJlY2lwZXNQYWdlKHBhZ2U6IG51bWJlcik6IE9ic2VydmFibGU8UmVjaXBlW10+IHtcbiAgICBpZiAodGhpcy5ub01vcmVSZWNpcGVzKSB7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH1cblxuICAgIC8vIGtlZXAgYSBjb3B5IG9mIHRoZSBmaWx0ZXJzIHdoZW4gcmVxdWVzdCBpcyBzZW50LCBzbyB3ZSBjYW4gY2hlY2sgdGhleSBhcmUgc3RpbGwgdGhlIHNhbWUgd2hlbiBpdCBpcyByZWNlaXZlZFxuICAgIC8vIEJlY2F1c2UgaWYgaXQncyBub3QgdGhlIGNhc2Ugd2UgaGF2ZSB0byBpbmdvcmUgdGhlIHJlc3VsdFxuICAgIGNvbnN0IHJlcXVlc3RGaWx0ZXJzID0geyAuLi50aGlzLnJlbW90ZUZpbHRlcnMgfTtcbiAgICBpZiAodGhpcy5yYW5kb21Nb2RlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWNpcGVzU2VydmljZS5nZXRSYW5kb20oeyBzaXplOiAyMCwgbnVtYmVyOiBwYWdlIH0sIHJlcXVlc3RGaWx0ZXJzKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHJlc3VsdDogUmVjaXBlW10pID0+IHRoaXMucHJvY2Vzc1Jlc3VsdHMocmVzdWx0LCByZXF1ZXN0RmlsdGVycywgcGFnZSkpXG4gICAgICApO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnJlY2lwZXNTZXJ2aWNlLmFsbCh7XG4gICAgICAgIHJlbW90ZWZpbHRlcjogcmVxdWVzdEZpbHRlcnMsXG4gICAgICAgIHBhZ2U6IHsgc2l6ZTogMjAsIG51bWJlcjogcGFnZSB9LFxuICAgICAgICBpbmNsdWRlOiBbJ2luZ3JlZGllbnRzJywgJ3JlY2lwZS1zdGVwcycsICdyZWNpcGUtdHlwZScsICdyZWNpcGUtc3RhdHVzJywgJ3Nwb25zb3JzJywgJ3JlY2lwZS1wcm92aWRlcicsICd0YWdzJ11cbiAgICAgIH0pLnBpcGUoXG4gICAgICAgIHNraXBXaGlsZShyZXNwID0+IHJlc3AuaXNfbG9hZGluZyksXG4gICAgICAgIHN3aXRjaE1hcCgocmVzdWx0OiBEb2N1bWVudENvbGxlY3Rpb248UmVjaXBlPikgPT4gdGhpcy5wcm9jZXNzUmVzdWx0cyhyZXN1bHQuZGF0YSwgcmVxdWVzdEZpbHRlcnMsIHBhZ2UpKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcm9jZXNzUmVzdWx0cyhyZXN1bHRzOiBSZWNpcGVbXSwgcmVxdWVzdEZpbHRlcnMsIHBhZ2UpOiBPYnNlcnZhYmxlPFJlY2lwZVtdPiB7XG4gICAgLy8gQmVjYXVzZSBGaWx0ZXIgaXMgYSB0eXBlLCBhdHRyaWJ1dGVzIGFyZSBhbHdheXMgaW4gdGhlIHNhbWUgb3JkZXIsIHNvIHN0cmluZ2lmeSB3b24ndCBiZSBmYWxzZSBmb3Igb2JqZWN0cyB3aXRoIHNhbWUgYXR0cmlidXRlc1xuICAgIGlmIChKU09OLnN0cmluZ2lmeShyZXF1ZXN0RmlsdGVycykgPT09IEpTT04uc3RyaW5naWZ5KHRoaXMucmVtb3RlRmlsdGVycykpIHtcbiAgICAgIC8vIGlmIHlvdSBzcGFtIGNsaWNrIG9uIGZpbHRlcnMsIG11bHRpcGxlIHJlcXVlc3RzIHdpdGggcGFnZSA9PSAxIGNvdWxkIGJlIHNlbnQgZm9yIHRoZSBzYW1lIGZpbHRlcnMgLT4gb25seSBrZWVwIHRoZSBsYXN0IHJlc3VsdFxuICAgICAgdGhpcy5jdXJyZW50UmVjaXBlcyA9IHBhZ2UgPT09IDEgPyByZXN1bHRzIDogWy4uLnRoaXMuY3VycmVudFJlY2lwZXMsIC4uLnJlc3VsdHNdO1xuICAgICAgdGhpcy5ub01vcmVSZWNpcGVzID0gcmVzdWx0cy5sZW5ndGggPT09IDA7XG5cbiAgICAgIC8vIEdldCBhbGwgcmVjaXBlLWxpa2VzIGJlZm9yZSBkaXNwbGF5aW5nXG4gICAgICByZXR1cm4gdGhpcy5yZWNpcGVMaWtlc1NlcnZpY2UuYWRkTGlrZXNUb1JlY2lwZXMocmVzdWx0cykucGlwZShcbiAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJldHJpZXZlZFJlY2lwZXMuZW1pdCh0aGlzLmN1cnJlbnRSZWNpcGVzKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50UmVjaXBlcztcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmRlYnVnKCdGaWx0ZXJpbmcgYWJvcnRlZCA6ICcgKyBKU09OLnN0cmluZ2lmeShyZXF1ZXN0RmlsdGVycykgKyAnYW5kJyArIEpTT04uc3RyaW5naWZ5KHRoaXMucmVtb3RlRmlsdGVycykgKyAnYXJlIGRpZmZlcmVudCcpO1xuICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVGaWx0ZXIoZmlsdGVyTmFtZSkge1xuICAgIHRoaXMuZmlsdGVyUmVtb3ZlZC5lbWl0KGZpbHRlck5hbWUpO1xuICB9XG5cbiAgYnVpbGRSZW1vdGVGaWx0ZXJzKCkge1xuICAgIHRoaXMuZmlsdGVyc0FyZUVtcHR5ID0gISh0aGlzLmZpbHRlcnMuc2VhcmNoICYmIHRoaXMuZmlsdGVycy5zZWFyY2ggIT09ICcnKTtcbiAgICBjb25zdCBkaWZmaWN1bHR5ID0gdGhpcy5idWlsZFJlbW90ZUZpbHRlcih0aGlzLmZpbHRlcnMuZGlmZmljdWx0eSwgJy0nKTtcbiAgICBjb25zdCBjb3N0ID0gdGhpcy5idWlsZFJlbW90ZUZpbHRlcih0aGlzLmZpbHRlcnMuY29zdCwgJy0nKS5zcGxpdCgnLScpO1xuICAgIGNvbnN0IHRvdGFsVGltZSA9IHRoaXMuYnVpbGRSZW1vdGVGaWx0ZXIodGhpcy5maWx0ZXJzLnRpbWUsICcsJyk7XG5cbiAgICBjb25zdCBmaWx0ZXJzID0ge1xuICAgICAgLi4uKGRpZmZpY3VsdHkubGVuZ3RoID4gMCkgPyB7IGRpZmZpY3VsdHk6IGRpZmZpY3VsdHkgKyAnLGVxJyB9IDoge30sIC8vIGV4OiBmaWx0ZXJbZGlmZmljdWx0eV09MS0yLTMsZXEgPT4gYWxsIGNoZWNrZWRcbiAgICAgIC4uLihjb3N0Lmxlbmd0aCA9PT0gMikgPyB7IGNvbXB1dGVkX2Nvc3Q6IGNvc3RbMF0gKyAnLGd0LCcgKyBjb3N0WzFdICsgJyxsdCcgfSA6IHt9LCAvLyBleDogZmlsdGVyW2Nvc3RdPTUsZ3QsMTAsbHQgPT4gNSA8IGNvc3QgPCAxMFxuICAgICAgLi4uKHRvdGFsVGltZS5sZW5ndGggPiAwKSA/IHsgJ3RvdGFsLXRpbWUnOiB0b3RhbFRpbWUgfSA6IHt9LFxuICAgICAgLi4uKHRoaXMuZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycz8uZmlsdGVycykgPyB0aGlzLmZpbHRlcnMuYWRkaXRpb25hbEZpbHRlcnMuZmlsdGVycyA6IHt9LFxuICAgICAgLi4uKHRoaXMuZmlsdGVycy5zZWFyY2gpID8ge3NlYXJjaDogdGhpcy5maWx0ZXJzLnNlYXJjaCB9IDoge31cbiAgICB9O1xuICAgIHJldHVybiBmaWx0ZXJzO1xuICB9XG5cbiAgLy8gUmVhZHMgdGhlIHZhbHVlcyBvZiBhIGZpZWxkIGFuZCBjb252ZXJ0cyBpdCB0byB0aGUgc3RyaW5nIHRvIHBhc3MgaW4gdGhlIHJlbW90ZUZpbHRlcnNcbiAgLy8gZXg6IGJ1aWxkUmVtb3RlRmlsdGVyKHtcbiAgLy8gICB7bmFtZTogJzEnLCB2YWx1ZTogdHJ1ZSwgdGV4dDogJ0ZhY2lsZSd9LFxuICAvLyAgIHtuYW1lOiAnMicsIHZhbHVlOiBmYWxzZSwgdGV4dDogJ01veWVuJ30sXG4gIC8vICAge25hbWU6ICczJywgdmFsdWU6IHRydWUsIHRleHQ6ICdEaWZmaWNpbGUnfVxuICAvLyB9LCAnLScpICA9PT4gJzEtMydcbiAgYnVpbGRSZW1vdGVGaWx0ZXIoZmlsdGVyOiBSZWNpcGVGaWx0ZXJbXSwgc2VwYXJhdG9yOiBzdHJpbmcpIHtcbiAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgZm9yIChjb25zdCBmIG9mIGZpbHRlcikge1xuICAgICAgaWYgKGYudmFsdWUpIHtcbiAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7IHJlc3VsdCArPSBzZXBhcmF0b3I7IH1cbiAgICAgICAgcmVzdWx0ICs9IGYubmFtZTtcbiAgICAgICAgdGhpcy5maWx0ZXJzQXJlRW1wdHkgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGJ1aWxkRmlsdGVyc0FycmF5KCk6IHN0cmluZ1tdIHtcbiAgICBsZXQgZmlsdGVyTmFtZXMgPSBbXTtcbiAgICBmaWx0ZXJOYW1lcyA9IFsuLi5maWx0ZXJOYW1lcywgLi4udGhpcy5nZXRTZWxlY3RlZEZpbHRlcnModGhpcy5maWx0ZXJzLmNvc3QpLCAuLi50aGlzLmdldFNlbGVjdGVkRmlsdGVycyh0aGlzLmZpbHRlcnMuZGlmZmljdWx0eSksXG4gICAgICAuLi50aGlzLmdldFNlbGVjdGVkRmlsdGVycyh0aGlzLmZpbHRlcnMudGltZSldO1xuICAgIGlmICh0aGlzLmZpbHRlcnMuYWRkaXRpb25hbEZpbHRlcnMgJiYgdGhpcy5maWx0ZXJzLmFkZGl0aW9uYWxGaWx0ZXJzLnRpdGxlICE9PSAnJykge1xuICAgICAgZmlsdGVyTmFtZXMgPSBbdGhpcy5maWx0ZXJzLmFkZGl0aW9uYWxGaWx0ZXJzLnRpdGxlXS5jb25jYXQoZmlsdGVyTmFtZXMpO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyTmFtZXM7XG4gIH1cblxuICBnZXRTZWxlY3RlZEZpbHRlcnMoZmlsdGVyc0FycmF5KTogc3RyaW5nW10ge1xuICAgIHJldHVybiBmaWx0ZXJzQXJyYXkuZmlsdGVyKGVsID0+IGVsLnZhbHVlKS5tYXAoZWwgPT4gZWwudGV4dCk7XG4gIH1cblxuICByZWxvYWRQYWdlKCkge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5sYXN0UGFnZSA9IDE7XG4gICAgdGhpcy5ub01vcmVSZWNpcGVzID0gZmFsc2U7XG4gICAgdGhpcy5ub01vcmVBcnRpY2xlcyA9IGZhbHNlO1xuICAgIHRoaXMuY3VycmVudFJlY2lwZXMgPSBbXTtcbiAgICB0aGlzLmFydGljbGVzID0gW107XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMubG9hZENvbnRlbnQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIC8vIEFydGljbGVzIHdpbGwgYmUgbG9hZGVkIG9ubHkgaWYgYSBmaWx0ZXIgaXMgYXBwbGllZCBvbiBwYWNrYWdlc1xuICAvLyBUaGlzIGlzIHRvIGF2b2lkIGFydGljbGVzIGJlaW5nIGxvYWRlZCBpbiBzcGVjaWFsIHBhZ2VzIHdoZXJlIG9ubHkgZmlsdGVycyBvbiByZWNpcGVzIGFyZSBwYXNzZWQgKGZhdm9yaXRlcywgc3VnZ2VzdGVkLCBldGMuKVxuICAvLyA9PiBQYWNrYWdlcyBtaXhpbmcgYXJ0aWNsZXMgd2l0aCByZWNpcGVzIGlzIG5vdCBzdXBwb3J0ZWQgeWV0XG4gIHByaXZhdGUgbG9hZEFydGljbGVzKHBhZ2U6IG51bWJlcik6IE9ic2VydmFibGU8QXJ0aWNsZVtdPiB7XG4gICAgaWYgKCF0aGlzLmNvbnRleHQuYXJ0aWNsZXNJbkNhdGFsb2dFbmFibGVkIHx8IHRoaXMubm9Nb3JlQXJ0aWNsZXMgfHwgIXRoaXMucmVtb3RlRmlsdGVyc1sncGFja2FnZXMnXSkge1xuICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXF1ZXN0RmlsdGVycyA9IHBpY2sodGhpcy5yZW1vdGVGaWx0ZXJzLCAncGFja2FnZXMnLCAnc2VhcmNoJyk7XG4gICAgcmV0dXJuIHRoaXMuYXJ0aWNsZXNTZXJ2aWNlLmFsbCh7XG4gICAgICByZW1vdGVmaWx0ZXI6IHJlcXVlc3RGaWx0ZXJzLFxuICAgICAgcGFnZTogeyBzaXplOiAyMCwgbnVtYmVyOiBwYWdlIH0sXG4gICAgICBzb3J0OiBbJy1kYXRlJ10gfSkucGlwZShcbiAgICAgIG1hcCgocmVzdWx0OiBEb2N1bWVudENvbGxlY3Rpb248QXJ0aWNsZT4pID0+IHtcbiAgICAgICAgdGhpcy5hcnRpY2xlcyA9IHBhZ2UgPT09IDEgPyByZXN1bHQuZGF0YSA6IFsuLi50aGlzLmFydGljbGVzLCAuLi5yZXN1bHQuZGF0YV07XG4gICAgICAgIHRoaXMubm9Nb3JlQXJ0aWNsZXMgPSByZXN1bHQuZGF0YS5sZW5ndGggPT09IDA7XG4gICAgICAgIHJldHVybiB0aGlzLmFydGljbGVzO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkQ29udGVudCgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIGZvcmtKb2luKFt0aGlzLmxvYWRSZWNpcGVzUGFnZSh0aGlzLmxhc3RQYWdlKSwgdGhpcy5sb2FkQXJ0aWNsZXModGhpcy5sYXN0UGFnZSldKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWlhbS1jYXRhbG9nLWxpc3RfX2NhcmRzXCI+XG5cbiAgPGRpdiAqbmdJZj1cImZpbHRlcnNUb0Rpc3BsYXkubGVuZ3RoID4gMFwiIGNsYXNzPVwibWlhbS1jYXRhbG9nLWxpc3RfX2ZpbHRlcnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1jYXRhbG9nLWxpc3RfX2ZpbHRlcl9fdGl0bGVcIj5Wb3MgZmlsdHJlczwvZGl2PlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpbHRlciBvZiBmaWx0ZXJzVG9EaXNwbGF5XCIgY2xhc3M9XCJtaWFtLWNhdGFsb2ctbGlzdF9fZmlsdGVyXCI+XG4gICAgICA8c3Bhbj57e2ZpbHRlcn19PC9zcGFuPlxuICAgICAgPG5nLW1pYW0taWNvbiBcbiAgICAgICAgY2xhc3M9XCJtaWFtLWNhdGFsb2ctbGlzdF9fZmlsdGVyX19pY29uXCIgXG4gICAgICAgIChjbGljayk9XCJyZW1vdmVGaWx0ZXIoZmlsdGVyKVwiIFxuICAgICAgICBbaWNvbk5hbWVdPVwiaWNvbi5DbGVhclwiXG4gICAgICAgIHByaW1hcnlDb2xvcj1cInZhcigtLW0tY29sb3ItcHJpbWFyeSlcIj5cbiAgICAgIDwvbmctbWlhbS1pY29uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwiIWxvYWRpbmcgJiYgY3VycmVudFJlY2lwZXMubGVuZ3RoID09PSAwICYmIGFydGljbGVzLmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwibWlhbS1jYXRhbG9nLWxpc3RfX25vdEZvdW5kXCI+XG4gICAgPG5nLW1pYW0taWNvbiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1saXN0X19ub3RGb3VuZF9faWNvblwiIFt3aWR0aF09XCIyNzlcIiBbaGVpZ2h0XT1cIjI0M1wiIFtpY29uTmFtZV09XCJpY29uLk5vUmVjaXBlRm91bmRcIj48L25nLW1pYW0taWNvbj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1jYXRhbG9nLWxpc3RfX25vdEZvdW5kX190aXRsZTFcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwibm9SZWNpcGVUZXh0Rmlyc3RMaW5lICYmIGZpbHRlcnNBcmVFbXB0eSBlbHNlIGRlZmF1bHRGaXJzdExpbmVcIj5cbiAgICAgICAge3tub1JlY2lwZVRleHRGaXJzdExpbmV9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Rmlyc3RMaW5lPlxuICAgICAgICA8c3Bhbj5Ew6lzb2zDqSwgYXVjdW5lIHByb3Bvc2l0aW9uIHRyb3V2w6llIDwvc3Bhbj4gXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiZmlsdGVycy5zZWFyY2hcIj5wb3VyIFwie3tmaWx0ZXJzLnNlYXJjaH19XCI8L3NwYW4+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLWNhdGFsb2ctbGlzdF9fbm90Rm91bmRfX3RpdGxlMlwiPlxuICAgICAgPHNwYW4gKm5nSWY9XCJub1JlY2lwZVRleHRTZWNvbmRMaW5lICYmIGZpbHRlcnNBcmVFbXB0eSBlbHNlIGRlZmF1bHRTZWNvbmRMaW5lXCI+XG4gICAgICAgIHt7bm9SZWNpcGVUZXh0U2Vjb25kTGluZX19XG4gICAgICA8L3NwYW4+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRTZWNvbmRMaW5lPlxuICAgICAgICBWZXVpbGxleiBtb2RpZmllciBsZXMgdGVybWVzIGRlIHZvdHJlIHJlY2hlcmNoZSBvdSByw6lnbGVyIGxlcyBmaWx0cmVzXG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPG5nLW1pYW0tY2FyZC1jcmVhdGUtcmVjaXBlICpuZ0lmPVwiaW5zZXJ0Q3JlYXRlQ2FyZCAmJiBjdXJyZW50UmVjaXBlcy5sZW5ndGggIT09IDBcIiAoY2xpY2tlZCk9XCJyZWNpcGVBY3Rpb25UcmlnZ2VyZWQuZW1pdCh7YWN0aW9uOiAnQ1JFQVRFJywgcmVjaXBlOiBudWxsfSlcIiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1saXN0X19jYXJkXCI+PC9uZy1taWFtLWNhcmQtY3JlYXRlLXJlY2lwZT5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgcmVjaXBlIG9mIGN1cnJlbnRSZWNpcGVzXCIgY2xhc3M9XCJtaWFtLWNhdGFsb2ctbGlzdF9fY2FyZFwiPlxuICAgIDxuZy1taWFtLWNhdGFsb2ctcmVjaXBlLWNhcmQgW3JlY2lwZV09J3JlY2lwZScgKGFjdGlvblRyaWdnZXJlZCk9XCJyZWNpcGVBY3Rpb25UcmlnZ2VyZWQuZW1pdCh7YWN0aW9uOiAkZXZlbnQsIHJlY2lwZTogcmVjaXBlfSlcIj48L25nLW1pYW0tY2F0YWxvZy1yZWNpcGUtY2FyZD5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nRm9yPVwibGV0IGFydGljbGUgb2YgYXJ0aWNsZXNcIiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1saXN0X19jYXJkXCI+XG4gICAgPG5nLW1pYW0tY2F0YWxvZy1hcnRpY2xlLWNhcmQgW2FydGljbGVdPVwiYXJ0aWNsZVwiPjwvbmctbWlhbS1jYXRhbG9nLWFydGljbGUtY2FyZD5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJtaWFtLWNhdGFsb2ctbGlzdF9fbG9hZGVyXCI+XG4gICAgPG5nLW1pYW0tbG9hZGVyPjwvbmctbWlhbS1sb2FkZXI+XG4gICAgPGRpdj5cbiAgICAgIENoYXJnZW1lbnQgZGVzIHLDqXN1bHRhdHMuLi5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgaWQ9XCJtaWFtLWNhdGFsb2ctbGlzdF9fYW5jaG9yXCI+PC9kaXY+XG48L2Rpdj4iXX0=