ng-miam 9.2.0 → 9.2.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.
- package/bundles/ng-miam.umd.js +927 -634
- package/bundles/ng-miam.umd.js.map +1 -1
- package/bundles/ng-miam.umd.min.js +1 -1
- package/bundles/ng-miam.umd.min.js.map +1 -1
- package/esm2015/lib/_components/accordion/accordion.component.js +2 -2
- package/esm2015/lib/_components/addon-link/addon-link.component.js +3 -3
- package/esm2015/lib/_components/counter-input/counter-input.component.js +14 -12
- package/esm2015/lib/_components/guests-dropdown/guests-dropdown.component.js +8 -5
- package/esm2015/lib/_components/icon/icon.component.js +2 -2
- package/esm2015/lib/_components/like-button/like-button.component.js +6 -5
- package/esm2015/lib/_components/modal/modal.component.js +39 -36
- package/esm2015/lib/_components/no-pos-selected/no-pos-selected.component.js +2 -2
- package/esm2015/lib/_components/product-card/out-of-stock-overlay/out-of-stock-overlay.component.js +15 -6
- package/esm2015/lib/_components/product-card/product-card-skeleton/product-card-skeleton.component.js +1 -1
- package/esm2015/lib/_components/product-card/product-card.component.js +25 -7
- package/esm2015/lib/_components/products-picker/products-picker.component.js +2 -2
- package/esm2015/lib/_components/recipe-promotion-badge/recipe-promotion-badge.component.js +2 -2
- package/esm2015/lib/_components/sponsor-blocks/sponsor-image-and-text-block/sponsor-image-and-text-block.component.js +4 -4
- package/esm2015/lib/_components/sponsor-blocks/sponsor-logo-block/sponsor-logo-block.component.js +4 -4
- package/esm2015/lib/_components/sponsor-blocks/sponsor-picture-block/sponsor-picture-block.component.js +3 -3
- package/esm2015/lib/_components/sponsor-blocks/sponsor-small-picture-block/sponsor-small-picture-block.component.js +3 -3
- package/esm2015/lib/_components/sponsor-blocks/sponsor-text-and-image-block/sponsor-text-and-image-block.component.js +4 -4
- package/esm2015/lib/_models/basket-actions/basket-action.js +2 -2
- package/esm2015/lib/_services/basket-recipe-cleanup.service.js +62 -0
- package/esm2015/lib/_services/basket-transfer.service.js +3 -2
- package/esm2015/lib/_services/baskets-synchronizing/baskets-synchronizer.service.js +9 -3
- package/esm2015/lib/_services/context.service.js +17 -13
- package/esm2015/lib/_services/interceptor.service.js +10 -3
- package/esm2015/lib/_services/recipe-details.service.js +22 -7
- package/esm2015/lib/_services/recipes.service.js +5 -5
- package/esm2015/lib/_services/store-locator.service.js +10 -3
- package/esm2015/lib/_services/store-out-of-stock.service.js +57 -0
- package/esm2015/lib/_services/user.service.js +3 -3
- package/esm2015/lib/_types/builded/mealz-interface.js +1 -1
- package/esm2015/lib/_web-components/basket-preview/basket-preview-block/basket-preview-block.component.js +3 -2
- package/esm2015/lib/_web-components/basket-preview/basket-preview-line/basket-preview-line.component.js +130 -122
- package/esm2015/lib/_web-components/basket-preview/basket-preview-product/basket-preview-product.component.js +44 -34
- package/esm2015/lib/_web-components/basket-preview/replace-item/replace-item.component.js +14 -7
- package/esm2015/lib/_web-components/list-scan/files-inputs/files-inputs.component.js +2 -2
- package/esm2015/lib/_web-components/meals-planner/meals-planner-form/meals-planner-form.component.js +13 -13
- package/esm2015/lib/_web-components/no-supplier-onboarding/no-supplier-onboarding.component.js +8 -12
- package/esm2015/lib/_web-components/preferences/preferences-search/preferences-search.component.js +2 -2
- package/esm2015/lib/_web-components/preferences/preferences.component.js +28 -28
- package/esm2015/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.js +118 -97
- package/esm2015/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.js +21 -14
- package/esm2015/lib/_web-components/recipe-catalog/catalog-article-card/catalog-article-card.component.js +9 -8
- package/esm2015/lib/_web-components/recipe-catalog/catalog-category/catalog-category.component.js +10 -8
- package/esm2015/lib/_web-components/recipe-catalog/catalog-header/catalog-header.component.js +3 -3
- package/esm2015/lib/_web-components/recipe-catalog/catalog-toolbar/catalog-toolbar.component.js +14 -10
- package/esm2015/lib/_web-components/recipe-catalog/recipe-catalog.component.js +42 -37
- package/esm2015/lib/_web-components/recipe-details/last-order-modal/last-order-modal.component.js +2 -2
- package/esm2015/lib/_web-components/recipe-details/recipe-addon/recipe-addon.component.js +4 -3
- package/esm2015/lib/_web-components/recipe-details/recipe-details-infos/recipe-details-infos.component.js +16 -13
- package/esm2015/lib/_web-components/recipe-details/recipe-details-ingredients/recipe-details-ingredients.component.js +4 -3
- package/esm2015/lib/_web-components/recipe-details/recipe-details.component.js +98 -103
- package/esm2015/lib/_web-components/recipe-details/store-locator-link/store-locator-link.component.js +8 -7
- package/esm2015/lib/_web-components/recipe-modal/recipe-modal.component.js +7 -2
- package/esm2015/lib/environments/environment.js +2 -2
- package/esm2015/lib/environments/environment.prod.js +2 -2
- package/esm2015/lib/environments/version.js +2 -2
- package/esm2015/lib/ng-miam.module.js +4 -1
- package/fesm2015/ng-miam.js +882 -627
- package/fesm2015/ng-miam.js.map +1 -1
- package/lib/_components/components.module.d.ts +2 -1
- package/lib/_components/components.module.d.ts.map +1 -1
- package/lib/_components/product-card/out-of-stock-overlay/out-of-stock-overlay.component.d.ts +7 -3
- package/lib/_components/product-card/out-of-stock-overlay/out-of-stock-overlay.component.d.ts.map +1 -1
- package/lib/_components/product-card/product-card.component.d.ts +2 -0
- package/lib/_components/product-card/product-card.component.d.ts.map +1 -1
- package/lib/_models/basket-actions/basket-action.d.ts.map +1 -1
- package/lib/_services/basket-recipe-cleanup.service.d.ts +21 -0
- package/lib/_services/basket-recipe-cleanup.service.d.ts.map +1 -0
- package/lib/_services/basket-transfer.service.d.ts.map +1 -1
- package/lib/_services/baskets-synchronizing/baskets-synchronizer.service.d.ts +1 -1
- package/lib/_services/baskets-synchronizing/baskets-synchronizer.service.d.ts.map +1 -1
- package/lib/_services/context.service.d.ts +3 -1
- package/lib/_services/context.service.d.ts.map +1 -1
- package/lib/_services/interceptor.service.d.ts +1 -0
- package/lib/_services/interceptor.service.d.ts.map +1 -1
- package/lib/_services/recipe-details.service.d.ts +8 -2
- package/lib/_services/recipe-details.service.d.ts.map +1 -1
- package/lib/_services/recipes.service.d.ts +2 -6
- package/lib/_services/recipes.service.d.ts.map +1 -1
- package/lib/_services/store-locator.service.d.ts +1 -0
- package/lib/_services/store-locator.service.d.ts.map +1 -1
- package/lib/_services/store-out-of-stock.service.d.ts +13 -0
- package/lib/_services/store-out-of-stock.service.d.ts.map +1 -0
- package/lib/_services/user.service.d.ts +2 -2
- package/lib/_services/user.service.d.ts.map +1 -1
- package/lib/_types/builded/mealz-interface.d.ts +4 -0
- package/lib/_types/builded/mealz-interface.d.ts.map +1 -1
- package/lib/_web-components/basket-preview/replace-item/replace-item.component.d.ts +1 -0
- package/lib/_web-components/basket-preview/replace-item/replace-item.component.d.ts.map +1 -1
- package/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.d.ts +1 -0
- package/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.d.ts.map +1 -1
- package/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.d.ts +1 -1
- package/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.d.ts.map +1 -1
- package/lib/_web-components/recipe-details/recipe-details.component.d.ts +1 -1
- package/lib/_web-components/recipe-details/recipe-details.component.d.ts.map +1 -1
- package/lib/_web-components/recipe-modal/recipe-modal.component.d.ts.map +1 -1
- package/lib/environments/version.d.ts +1 -1
- package/lib/ng-miam.module.d.ts.map +1 -1
- package/miam-style.css +1 -1
- package/package.json +1 -1
|
@@ -5,13 +5,13 @@ export class SponsorSmallPictureBlockComponent {
|
|
|
5
5
|
constructor() { }
|
|
6
6
|
}
|
|
7
7
|
SponsorSmallPictureBlockComponent.ɵfac = function SponsorSmallPictureBlockComponent_Factory(t) { return new (t || SponsorSmallPictureBlockComponent)(); };
|
|
8
|
-
SponsorSmallPictureBlockComponent.ɵcmp = i0.ɵɵdefineComponent({ type: SponsorSmallPictureBlockComponent, selectors: [["ng-miam-sponsor-small-picture-block"]], inputs: { sponsorBlock: "sponsorBlock" }, decls: 2, vars:
|
|
8
|
+
SponsorSmallPictureBlockComponent.ɵcmp = i0.ɵɵdefineComponent({ type: SponsorSmallPictureBlockComponent, selectors: [["ng-miam-sponsor-small-picture-block"]], inputs: { sponsorBlock: "sponsorBlock" }, decls: 2, vars: 2, consts: [[1, "sponsor-small-picture-block"], [1, "sponsor-small-picture-block__picture", 3, "src", "alt"]], template: function SponsorSmallPictureBlockComponent_Template(rf, ctx) { if (rf & 1) {
|
|
9
9
|
i0.ɵɵelementStart(0, "div", 0);
|
|
10
10
|
i0.ɵɵelement(1, "img", 1);
|
|
11
11
|
i0.ɵɵelementEnd();
|
|
12
12
|
} if (rf & 2) {
|
|
13
13
|
i0.ɵɵadvance(1);
|
|
14
|
-
i0.ɵɵproperty("src", ctx.sponsorBlock.pictureUrl, i0.ɵɵsanitizeUrl);
|
|
14
|
+
i0.ɵɵproperty("src", ctx.sponsorBlock.pictureUrl, i0.ɵɵsanitizeUrl)("alt", ctx.sponsorBlock.content || "Image sponsor");
|
|
15
15
|
} }, styles: [".sponsor-small-picture-block[_ngcontent-%COMP%]{width:100%;aspect-ratio:16/9}.sponsor-small-picture-block[_ngcontent-%COMP%] .sponsor-small-picture-block__picture[_ngcontent-%COMP%]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block}"] });
|
|
16
16
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SponsorSmallPictureBlockComponent, [{
|
|
17
17
|
type: Component,
|
|
@@ -23,4 +23,4 @@ SponsorSmallPictureBlockComponent.ɵcmp = i0.ɵɵdefineComponent({ type: Sponsor
|
|
|
23
23
|
}], function () { return []; }, { sponsorBlock: [{
|
|
24
24
|
type: Input
|
|
25
25
|
}] }); })();
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvbnNvci1zbWFsbC1waWN0dXJlLWJsb2NrLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1pYW0vc3JjL2xpYi9fY29tcG9uZW50cy9zcG9uc29yLWJsb2Nrcy9zcG9uc29yLXNtYWxsLXBpY3R1cmUtYmxvY2svc3BvbnNvci1zbWFsbC1waWN0dXJlLWJsb2NrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1pYW0vc3JjL2xpYi9fY29tcG9uZW50cy9zcG9uc29yLWJsb2Nrcy9zcG9uc29yLXNtYWxsLXBpY3R1cmUtYmxvY2svc3BvbnNvci1zbWFsbC1waWN0dXJlLWJsb2NrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFPaEQsTUFBTSxPQUFPLGlDQUFpQztJQUc1QyxnQkFBZ0IsQ0FBQzs7a0hBSE4saUNBQWlDO3NFQUFqQyxpQ0FBaUM7UUNSOUMsOEJBQXlDO1FBQ3ZDLHlCQUFtSTtRQUNySSxpQkFBTTs7UUFEOEMsZUFBK0I7UUFBL0IsbUVBQStCLG9EQUFBOzt1RkRPdEUsaUNBQWlDO2NBTDdDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUscUNBQXFDO2dCQUMvQyxXQUFXLEVBQUUsOENBQThDO2dCQUMzRCxTQUFTLEVBQUUsQ0FBQyw4Q0FBOEMsQ0FBQzthQUM1RDtzQ0FFVSxZQUFZO2tCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3BvbnNvckJsb2NrIH0gZnJvbSAnLi4vLi4vLi4vX21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLW1pYW0tc3BvbnNvci1zbWFsbC1waWN0dXJlLWJsb2NrJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Nwb25zb3Itc21hbGwtcGljdHVyZS1ibG9jay5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Nwb25zb3Itc21hbGwtcGljdHVyZS1ibG9jay5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNwb25zb3JTbWFsbFBpY3R1cmVCbG9ja0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHNwb25zb3JCbG9jazogU3BvbnNvckJsb2NrO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJzcG9uc29yLXNtYWxsLXBpY3R1cmUtYmxvY2tcIj5cbiAgPGltZyBjbGFzcz1cInNwb25zb3Itc21hbGwtcGljdHVyZS1ibG9ja19fcGljdHVyZVwiIFtzcmNdPVwic3BvbnNvckJsb2NrLnBpY3R1cmVVcmxcIiBbYWx0XT1cInNwb25zb3JCbG9jay5jb250ZW50IHx8ICdJbWFnZSBzcG9uc29yJ1wiLz5cbjwvZGl2PlxuIl19
|
|
@@ -7,7 +7,7 @@ export class SponsorTextAndImageBlockComponent {
|
|
|
7
7
|
constructor() { }
|
|
8
8
|
}
|
|
9
9
|
SponsorTextAndImageBlockComponent.ɵfac = function SponsorTextAndImageBlockComponent_Factory(t) { return new (t || SponsorTextAndImageBlockComponent)(); };
|
|
10
|
-
SponsorTextAndImageBlockComponent.ɵcmp = i0.ɵɵdefineComponent({ type: SponsorTextAndImageBlockComponent, selectors: [["ng-miam-sponsor-text-and-image-block"]], inputs: { sponsorBlock: "sponsorBlock" }, decls: 4, vars:
|
|
10
|
+
SponsorTextAndImageBlockComponent.ɵcmp = i0.ɵɵdefineComponent({ type: SponsorTextAndImageBlockComponent, selectors: [["ng-miam-sponsor-text-and-image-block"]], inputs: { sponsorBlock: "sponsorBlock" }, decls: 4, vars: 8, consts: [[1, "sponsor-text-and-image-block"], [1, "sponsor-text-and-image-block__text", 3, "ngStyle"], [1, "sponsor-text-and-image-block__image", 3, "src", "alt"]], template: function SponsorTextAndImageBlockComponent_Template(rf, ctx) { if (rf & 1) {
|
|
11
11
|
i0.ɵɵelementStart(0, "div", 0);
|
|
12
12
|
i0.ɵɵelementStart(1, "span", 1);
|
|
13
13
|
i0.ɵɵtext(2);
|
|
@@ -16,11 +16,11 @@ SponsorTextAndImageBlockComponent.ɵcmp = i0.ɵɵdefineComponent({ type: Sponsor
|
|
|
16
16
|
i0.ɵɵelementEnd();
|
|
17
17
|
} if (rf & 2) {
|
|
18
18
|
i0.ɵɵadvance(1);
|
|
19
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction3(
|
|
19
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction3(4, _c0, ctx.sponsorBlock.backgroundColor || "#FFFFFF", ctx.sponsorBlock.fontSize || 16, ctx.sponsorBlock.fontColor || "#000000"));
|
|
20
20
|
i0.ɵɵadvance(1);
|
|
21
21
|
i0.ɵɵtextInterpolate1(" ", ctx.sponsorBlock.content, " ");
|
|
22
22
|
i0.ɵɵadvance(1);
|
|
23
|
-
i0.ɵɵproperty("src", ctx.sponsorBlock.pictureUrl, i0.ɵɵsanitizeUrl);
|
|
23
|
+
i0.ɵɵproperty("src", ctx.sponsorBlock.pictureUrl, i0.ɵɵsanitizeUrl)("alt", ctx.sponsorBlock.content || "Image sponsor");
|
|
24
24
|
} }, directives: [i1.NgStyle], styles: [".sponsor-text-and-image-block[_ngcontent-%COMP%]{width:100%;aspect-ratio:21/9;display:flex;justify-content:center;align-items:center}.sponsor-text-and-image-block[_ngcontent-%COMP%] .sponsor-text-and-image-block__text[_ngcontent-%COMP%]{right:0;width:50%;max-width:50%;max-height:75%;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;background-color:#fff;padding:12px;text-align:center;font-size:16px;line-height:150%;z-index:2}.sponsor-text-and-image-block[_ngcontent-%COMP%] .sponsor-text-and-image-block__image[_ngcontent-%COMP%]{margin-left:-10%;width:60%;height:100%;-o-object-fit:cover;object-fit:cover;z-index:1}@media (max-width:1023px){.sponsor-text-and-image-block[_ngcontent-%COMP%]{width:100%;height:-moz-fit-content;height:fit-content;display:flex;flex-direction:column;align-items:center}.sponsor-text-and-image-block[_ngcontent-%COMP%] .sponsor-text-and-image-block__text[_ngcontent-%COMP%]{width:100%;max-width:100%;padding:12px;text-align:justify;font-size:16px;line-height:150%}.sponsor-text-and-image-block[_ngcontent-%COMP%] .sponsor-text-and-image-block__image[_ngcontent-%COMP%]{width:100%;aspect-ratio:4/3;-o-object-fit:cover;object-fit:cover;margin-left:unset}}"] });
|
|
25
25
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SponsorTextAndImageBlockComponent, [{
|
|
26
26
|
type: Component,
|
|
@@ -32,4 +32,4 @@ SponsorTextAndImageBlockComponent.ɵcmp = i0.ɵɵdefineComponent({ type: Sponsor
|
|
|
32
32
|
}], function () { return []; }, { sponsorBlock: [{
|
|
33
33
|
type: Input
|
|
34
34
|
}] }); })();
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvbnNvci10ZXh0LWFuZC1pbWFnZS1ibG9jay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1taWFtL3NyYy9saWIvX2NvbXBvbmVudHMvc3BvbnNvci1ibG9ja3Mvc3BvbnNvci10ZXh0LWFuZC1pbWFnZS1ibG9jay9zcG9uc29yLXRleHQtYW5kLWltYWdlLWJsb2NrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1pYW0vc3JjL2xpYi9fY29tcG9uZW50cy9zcG9uc29yLWJsb2Nrcy9zcG9uc29yLXRleHQtYW5kLWltYWdlLWJsb2NrL3Nwb25zb3ItdGV4dC1hbmQtaW1hZ2UtYmxvY2suY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7O0FBT2hELE1BQU0sT0FBTyxpQ0FBaUM7SUFHNUMsZ0JBQWdCLENBQUM7O2tIQUhOLGlDQUFpQztzRUFBakMsaUNBQWlDO1FDUjlDLDhCQUEwQztRQUN4QywrQkFLSztRQUNILFlBQ0Y7UUFBQSxpQkFBTztRQUNQLHlCQUFpSTtRQUNuSSxpQkFBTTs7UUFSRixlQUlFO1FBSkYsNktBSUU7UUFDRixlQUNGO1FBREUseURBQ0Y7UUFDaUQsZUFBK0I7UUFBL0IsbUVBQStCLG9EQUFBOzt1RkREckUsaUNBQWlDO2NBTDdDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsc0NBQXNDO2dCQUNoRCxXQUFXLEVBQUUsK0NBQStDO2dCQUM1RCxTQUFTLEVBQUUsQ0FBQywrQ0FBK0MsQ0FBQzthQUM3RDtzQ0FFVSxZQUFZO2tCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3BvbnNvckJsb2NrIH0gZnJvbSAnLi4vLi4vLi4vX21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLW1pYW0tc3BvbnNvci10ZXh0LWFuZC1pbWFnZS1ibG9jaycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zcG9uc29yLXRleHQtYW5kLWltYWdlLWJsb2NrLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3BvbnNvci10ZXh0LWFuZC1pbWFnZS1ibG9jay5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNwb25zb3JUZXh0QW5kSW1hZ2VCbG9ja0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHNwb25zb3JCbG9jazogU3BvbnNvckJsb2NrO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJzcG9uc29yLXRleHQtYW5kLWltYWdlLWJsb2NrXCI+XG4gIDxzcGFuIGNsYXNzPVwic3BvbnNvci10ZXh0LWFuZC1pbWFnZS1ibG9ja19fdGV4dFwiXG4gICAgW25nU3R5bGVdPVwie1xuICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBzcG9uc29yQmxvY2suYmFja2dyb3VuZENvbG9yIHx8ICcjRkZGRkZGJyxcbiAgICAgICdmb250LXNpemUucHgnOiBzcG9uc29yQmxvY2suZm9udFNpemUgfHwgMTYsXG4gICAgICAnY29sb3InOiBzcG9uc29yQmxvY2suZm9udENvbG9yIHx8ICcjMDAwMDAwJ1xuICAgIH1cIj5cbiAgICB7eyBzcG9uc29yQmxvY2suY29udGVudCB9fVxuICA8L3NwYW4+XG4gIDxpbWcgY2xhc3M9XCJzcG9uc29yLXRleHQtYW5kLWltYWdlLWJsb2NrX19pbWFnZVwiIFtzcmNdPVwic3BvbnNvckJsb2NrLnBpY3R1cmVVcmxcIiBbYWx0XT1cInNwb25zb3JCbG9jay5jb250ZW50IHx8ICdJbWFnZSBzcG9uc29yJ1wiPlxuPC9kaXY+XG4iXX0=
|
|
@@ -89,7 +89,7 @@ export class BasketAction {
|
|
|
89
89
|
}
|
|
90
90
|
getDifferenceFromBasketEntry(toCompare) {
|
|
91
91
|
return this.basketsService.waitForBasketEntries.pipe(map(basket => {
|
|
92
|
-
const entryFromBasket = basket.find(
|
|
92
|
+
const entryFromBasket = basket.filter(be => be.status === 'active').find(be => be.id === toCompare.basketEntry.id && be.selectedItem.extId === toCompare.id);
|
|
93
93
|
return toCompare.quantity - ((entryFromBasket === null || entryFromBasket === void 0 ? void 0 : entryFromBasket.quantity) || 0);
|
|
94
94
|
}));
|
|
95
95
|
}
|
|
@@ -97,4 +97,4 @@ export class BasketAction {
|
|
|
97
97
|
return this.basketsService.waitForBasketEntries.pipe(switchMap((mealzBasket) => of(mealzBasket.find(be => be.id === basketId))));
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFza2V0LWFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1pYW0vc3JjL2xpYi9fbW9kZWxzL2Jhc2tldC1hY3Rpb25zL2Jhc2tldC1hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUErQixFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFNaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXpELE1BQU0sQ0FBTixJQUFZLFlBSVg7QUFKRCxXQUFZLFlBQVk7SUFDdEIsK0NBQStCLENBQUE7SUFDL0IscURBQXFDLENBQUE7SUFDckMsaUVBQWlELENBQUE7QUFDbkQsQ0FBQyxFQUpXLFlBQVksS0FBWixZQUFZLFFBSXZCO0FBV0QsTUFBTSxPQUFPLFlBQVk7SUFXdkIsWUFDUyxXQUF3QixFQUN4QixpQkFBb0MsRUFDcEMsY0FBK0IsRUFDL0Isb0JBQTJDLEVBQzNDLGdCQUFtQztRQUpuQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLG1CQUFjLEdBQWQsY0FBYyxDQUFpQjtRQUMvQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXVCO1FBQzNDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUFkNUMsV0FBTSxHQUFpQixZQUFZLENBQUMsYUFBYSxDQUFDO1FBQ2xELE9BQUUsR0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDakQsYUFBUSxHQUFXLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO1FBRzdDLGNBQVMsR0FBa0IsSUFBSSxP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QUMsUUFBUSxFQUFFO1lBQ2pELElBQUksQ0FBQyxRQUFRLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxDQUFDO1lBQzdDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxHQUFHLG1CQUFtQixDQUFDLFFBQVEsQ0FBQztZQUN6RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDO0lBRUQsNEJBQTRCLENBQUMsU0FBdUI7UUFDbEQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FDbEQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ1gsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQWUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2pHLE9BQU8sU0FBUyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUEsZUFBZSxhQUFmLGVBQWUsdUJBQWYsZUFBZSxDQUFFLFFBQVEsS0FBSSxDQUFDLENBQUMsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLG1CQUFtQixDQUFDLFFBQWdCO1FBQzFDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQ2xELFNBQVMsQ0FBQyxDQUFDLFdBQTBCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQzFGLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJhc2tldEVudHJpZXNTZXJ2aWNlLCBCYXNrZXRzU2VydmljZSwgU3VwcGxpZXJzU2VydmljZSB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcyc7XG5pbXBvcnQgeyBDb21wYXJhYmxlUHJvZHVjdCB9IGZyb20gJy4uLy4uL190eXBlcy9idWlsZGVkL2NvbXBhcmFibGUtcHJvZHVjdCc7XG5pbXBvcnQgeyBFdmVudFRyYWNlIH0gZnJvbSAnLi4vLi4vX3R5cGVzL2V2ZW50LXRyYWNlJztcbmltcG9ydCB7IEJhc2tldEVudHJ5IH0gZnJvbSAnLi4vYmFza2V0LWVudHJ5JztcbmltcG9ydCB7IEl0ZW0gfSBmcm9tICcuLi9pdGVtJztcbmltcG9ydCB7IGRlZXBDbG9uZVdpdGhDbGFzcyB9IGZyb20gJy4uLy4uL191dGlscy9tZXRob2RzL2RlZXBDbG9uZSc7XG5pbXBvcnQgeyBtZWFseldhcm4gfSBmcm9tICcuLi8uLi9fdXRpbHMvbWV0aG9kcy9sb2dnaW5nJztcblxuZXhwb3J0IGVudW0gQWN0aW9uU3RhdHVzIHtcbiAgSU5JVElBTF9TVEFURSA9ICdJTklUSUFMX1NUQVRFJyxcbiAgU0VOVF9UT19SRVRBSUxFUiA9ICdTRU5UX1RPX1JFVEFJTEVSJyxcbiAgUkVUQUlMRVJfUFJPRFVDVF9NQVRDSCA9ICdSRVRBSUxFUl9QUk9EVUNUX01BVENIJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVNZWFselBhcmFtcyB7XG4gIHJlY2lwZUlkPzogc3RyaW5nO1xuICBpbmdyZWRpZW50SWQ/OiBzdHJpbmc7XG4gIGV2ZW50VHJhY2U/OiBFdmVudFRyYWNlO1xuICBpdGVtPzogSXRlbTtcbiAgcHJldmlvdXNJdGVtPzogSXRlbTtcbiAgc2VhcmNoU3RyaW5nPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQmFza2V0QWN0aW9uIHtcblxuICBzdGF0dXM6IEFjdGlvblN0YXR1cyA9IEFjdGlvblN0YXR1cy5JTklUSUFMX1NUQVRFO1xuICBpZDogc3RyaW5nID0gdGhpcy5iYXNrZXRFbnRyeS5zZWxlY3RlZEl0ZW0uZXh0SWQ7XG4gIHF1YW50aXR5OiBudW1iZXIgPSB0aGlzLmJhc2tldEVudHJ5LnF1YW50aXR5O1xuICB1cGRhdGVkRnJvbVJldGFpbGVyOiBib29sZWFuO1xuXG4gIG9uU3VjY2VzczogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gIG9uVGltZW91dDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gIG9uRXJyb3I6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBiYXNrZXRFbnRyeTogQmFza2V0RW50cnksXG4gICAgcHVibGljIHVwZGF0ZU1lYWx6UGFyYW1zOiBVcGRhdGVNZWFselBhcmFtcyxcbiAgICBwdWJsaWMgYmFza2V0c1NlcnZpY2U/OiBCYXNrZXRzU2VydmljZSxcbiAgICBwdWJsaWMgYmFza2V0RW50cmllc1NlcnZpY2U/OiBCYXNrZXRFbnRyaWVzU2VydmljZSxcbiAgICBwdWJsaWMgc3VwcGxpZXJzU2VydmljZT86IFN1cHBsaWVyc1NlcnZpY2VcbiAgKSB7XG4gIH1cblxuICBnZXQgdHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBXZSBkb24ndCBuZWVkIHRvIGxvZyB0aGUgd2hvbGUgYWN0aW9uLCBhIHJlYWRhYmxlIHZlcnNpb24gd2l0aCBvbmx5IHRoZSBuZWNlc3NhcnkgZmllbGRzIGlzIGJldHRlciBzdWl0ZWRcbiAgICovXG4gIGdldCBsb2dnYWJsZSgpOiB7IHR5cGU6IHN0cmluZzsgaWQ6IHN0cmluZzsgcXVhbnRpdHk6IG51bWJlcjsgZnJvbVJldGFpbGVyOiBib29sZWFuIH0ge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIHF1YW50aXR5OiB0aGlzLnF1YW50aXR5LFxuICAgICAgZnJvbVJldGFpbGVyOiB0aGlzLnVwZGF0ZWRGcm9tUmV0YWlsZXJcbiAgICB9O1xuICB9XG5cbiAgdXBkYXRlTWVhbHpCYXNrZXQoKTogdm9pZCB7XG4gICAgbWVhbHpXYXJuKCd1cGRhdGVNZWFsekJhc2tldCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgc2hvdWxkUmVtb3ZlQWN0aW9uKGJhc2tldEVudHJ5Rm91bmQ6IEJhc2tldEVudHJ5KTogYm9vbGVhbiB7XG4gICAgbWVhbHpXYXJuKCdzaG91bGRSZW1vdmVBY3Rpb24gbm90IGltcGxlbWVudGVkJyk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaW5pdFByb2Nlc3MobWVhbHpBY3Rpb25MaXN0OiBCZWhhdmlvclN1YmplY3Q8QmFza2V0QWN0aW9uW10+KTogdm9pZCB7XG4gICAgdGhpcy5zdGF0dXMgPSBBY3Rpb25TdGF0dXMuU0VOVF9UT19SRVRBSUxFUjtcbiAgICBjb25zdCBhdXRvUmVtb3ZlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZm91bmRJbmRleCA9IG1lYWx6QWN0aW9uTGlzdC52YWx1ZS5pbmRleE9mKHRoaXMpO1xuICAgICAgaWYgKGZvdW5kSW5kZXggPCAwKSB7XG4gICAgICAgIGNsZWFyVGltZW91dChhdXRvUmVtb3ZlVGltZW91dCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMub25UaW1lb3V0Lm5leHQoKTtcbiAgICAgIG1lYWx6QWN0aW9uTGlzdC52YWx1ZS5zcGxpY2UoZm91bmRJbmRleCwgMSk7XG4gICAgICBtZWFseldhcm4oJ1tNZWFsel0gQWN0aW9uIGhhcyBub3QgYmVlbiBjb21wbGV0ZWQgYWZ0ZXIgMTAgc2Vjb25kcywgYWJvcnRpbmcnLCB0aGlzLmxvZ2dhYmxlKTtcbiAgICAgIG1lYWx6QWN0aW9uTGlzdC5uZXh0KG1lYWx6QWN0aW9uTGlzdC52YWx1ZSk7XG4gICAgfSwgMTAwMDApO1xuICB9XG5cbiAgdXBkYXRlQmFza2V0RW50cnlRdWFudGl0eSgpOiBPYnNlcnZhYmxlPEJhc2tldEVudHJ5PiB7XG4gICAgaWYgKHRoaXMuYmFza2V0RW50cnkucXVhbnRpdHlUb0FkZCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmluZEJhc2tldEVudHJ5QnlJZCh0aGlzLmJhc2tldEVudHJ5LmlkKS5waXBlKFxuICAgICAgICBtYXAoKGZvdW5kOiBCYXNrZXRFbnRyeSB8IG51bGwpID0+IHtcbiAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgIC8vIENsb25lIHRvIGF2b2lkIGNoYW5naW5nIHRoZSBvcmlnaW5hbCBvYmplY3QgcmVmZXJlbmNlXG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkQmFza2V0RW50cnkgPSBkZWVwQ2xvbmVXaXRoQ2xhc3ModGhpcy5iYXNrZXRFbnRyeSkgYXMgQmFza2V0RW50cnk7XG4gICAgICAgICAgICB1cGRhdGVkQmFza2V0RW50cnkucXVhbnRpdHkgPSBmb3VuZC5xdWFudGl0eSArIHRoaXMuYmFza2V0RW50cnkucXVhbnRpdHlUb0FkZDtcbiAgICAgICAgICAgIHRoaXMucXVhbnRpdHkgPSB1cGRhdGVkQmFza2V0RW50cnkucXVhbnRpdHk7XG4gICAgICAgICAgICByZXR1cm4gdXBkYXRlZEJhc2tldEVudHJ5O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhpcy5iYXNrZXRFbnRyeTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBvZih0aGlzLmJhc2tldEVudHJ5KTtcbiAgfVxuXG4gIGNyZWF0ZUFjdGlvbkZvclJldGFpbGVyKCk6IE9ic2VydmFibGU8Q29tcGFyYWJsZVByb2R1Y3Q+IHtcbiAgICByZXR1cm4gdGhpcy5nZXREaWZmZXJlbmNlRnJvbUJhc2tldEVudHJ5KHRoaXMpLnBpcGUoXG4gICAgICBtYXAocXVhbnRpdHkgPT4gKHtcbiAgICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICAgIHF1YW50aXR5XG4gICAgICB9KSlcbiAgICApO1xuICB9XG5cbiAgc3luY1dpdGhVcGRhdGVGcm9tUmV0YWlsZXIocHJvZHVjdEZyb21SZXRhaWxlcjogQ29tcGFyYWJsZVByb2R1Y3QpOiB2b2lkIHtcbiAgICBpZiAocHJvZHVjdEZyb21SZXRhaWxlcj8ucXVhbnRpdHkgPCB0aGlzLnF1YW50aXR5KSB7XG4gICAgICB0aGlzLnF1YW50aXR5ID0gcHJvZHVjdEZyb21SZXRhaWxlci5xdWFudGl0eTtcbiAgICAgIHRoaXMuYmFza2V0RW50cnkucXVhbnRpdHkgPSBwcm9kdWN0RnJvbVJldGFpbGVyLnF1YW50aXR5O1xuICAgICAgdGhpcy51cGRhdGVkRnJvbVJldGFpbGVyID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVkRnJvbVJldGFpbGVyID0gZmFsc2U7XG4gIH1cblxuICBnZXREaWZmZXJlbmNlRnJvbUJhc2tldEVudHJ5KHRvQ29tcGFyZTogQmFza2V0QWN0aW9uKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNrZXRzU2VydmljZS53YWl0Rm9yQmFza2V0RW50cmllcy5waXBlKFxuICAgICAgbWFwKGJhc2tldCA9PiB7XG4gICAgICAgIGNvbnN0IGVudHJ5RnJvbUJhc2tldCA9IGJhc2tldC5maW5kKChiZTogQmFza2V0RW50cnkpID0+IGJlLnNlbGVjdGVkSXRlbS5leHRJZCA9PT0gdG9Db21wYXJlLmlkKTtcbiAgICAgICAgcmV0dXJuIHRvQ29tcGFyZS5xdWFudGl0eSAtIChlbnRyeUZyb21CYXNrZXQ/LnF1YW50aXR5IHx8IDApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kQmFza2V0RW50cnlCeUlkKGJhc2tldElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEJhc2tldEVudHJ5IHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmJhc2tldHNTZXJ2aWNlLndhaXRGb3JCYXNrZXRFbnRyaWVzLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKG1lYWx6QmFza2V0OiBCYXNrZXRFbnRyeVtdKSA9PiBvZihtZWFsekJhc2tldC5maW5kKGJlID0+IGJlLmlkID09PSBiYXNrZXRJZCkpKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFza2V0LWFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1pYW0vc3JjL2xpYi9fbW9kZWxzL2Jhc2tldC1hY3Rpb25zL2Jhc2tldC1hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUErQixFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFNaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXpELE1BQU0sQ0FBTixJQUFZLFlBSVg7QUFKRCxXQUFZLFlBQVk7SUFDdEIsK0NBQStCLENBQUE7SUFDL0IscURBQXFDLENBQUE7SUFDckMsaUVBQWlELENBQUE7QUFDbkQsQ0FBQyxFQUpXLFlBQVksS0FBWixZQUFZLFFBSXZCO0FBV0QsTUFBTSxPQUFPLFlBQVk7SUFXdkIsWUFDUyxXQUF3QixFQUN4QixpQkFBb0MsRUFDcEMsY0FBK0IsRUFDL0Isb0JBQTJDLEVBQzNDLGdCQUFtQztRQUpuQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLG1CQUFjLEdBQWQsY0FBYyxDQUFpQjtRQUMvQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXVCO1FBQzNDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUFkNUMsV0FBTSxHQUFpQixZQUFZLENBQUMsYUFBYSxDQUFDO1FBQ2xELE9BQUUsR0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDakQsYUFBUSxHQUFXLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO1FBRzdDLGNBQVMsR0FBa0IsSUFBSSxP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O0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJhc2tldEVudHJpZXNTZXJ2aWNlLCBCYXNrZXRzU2VydmljZSwgU3VwcGxpZXJzU2VydmljZSB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcyc7XG5pbXBvcnQgeyBDb21wYXJhYmxlUHJvZHVjdCB9IGZyb20gJy4uLy4uL190eXBlcy9idWlsZGVkL2NvbXBhcmFibGUtcHJvZHVjdCc7XG5pbXBvcnQgeyBFdmVudFRyYWNlIH0gZnJvbSAnLi4vLi4vX3R5cGVzL2V2ZW50LXRyYWNlJztcbmltcG9ydCB7IEJhc2tldEVudHJ5IH0gZnJvbSAnLi4vYmFza2V0LWVudHJ5JztcbmltcG9ydCB7IEl0ZW0gfSBmcm9tICcuLi9pdGVtJztcbmltcG9ydCB7IGRlZXBDbG9uZVdpdGhDbGFzcyB9IGZyb20gJy4uLy4uL191dGlscy9tZXRob2RzL2RlZXBDbG9uZSc7XG5pbXBvcnQgeyBtZWFseldhcm4gfSBmcm9tICcuLi8uLi9fdXRpbHMvbWV0aG9kcy9sb2dnaW5nJztcblxuZXhwb3J0IGVudW0gQWN0aW9uU3RhdHVzIHtcbiAgSU5JVElBTF9TVEFURSA9ICdJTklUSUFMX1NUQVRFJyxcbiAgU0VOVF9UT19SRVRBSUxFUiA9ICdTRU5UX1RPX1JFVEFJTEVSJyxcbiAgUkVUQUlMRVJfUFJPRFVDVF9NQVRDSCA9ICdSRVRBSUxFUl9QUk9EVUNUX01BVENIJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVNZWFselBhcmFtcyB7XG4gIHJlY2lwZUlkPzogc3RyaW5nO1xuICBpbmdyZWRpZW50SWQ/OiBzdHJpbmc7XG4gIGV2ZW50VHJhY2U/OiBFdmVudFRyYWNlO1xuICBpdGVtPzogSXRlbTtcbiAgcHJldmlvdXNJdGVtPzogSXRlbTtcbiAgc2VhcmNoU3RyaW5nPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQmFza2V0QWN0aW9uIHtcblxuICBzdGF0dXM6IEFjdGlvblN0YXR1cyA9IEFjdGlvblN0YXR1cy5JTklUSUFMX1NUQVRFO1xuICBpZDogc3RyaW5nID0gdGhpcy5iYXNrZXRFbnRyeS5zZWxlY3RlZEl0ZW0uZXh0SWQ7XG4gIHF1YW50aXR5OiBudW1iZXIgPSB0aGlzLmJhc2tldEVudHJ5LnF1YW50aXR5O1xuICB1cGRhdGVkRnJvbVJldGFpbGVyOiBib29sZWFuO1xuXG4gIG9uU3VjY2VzczogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gIG9uVGltZW91dDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gIG9uRXJyb3I6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBiYXNrZXRFbnRyeTogQmFza2V0RW50cnksXG4gICAgcHVibGljIHVwZGF0ZU1lYWx6UGFyYW1zOiBVcGRhdGVNZWFselBhcmFtcyxcbiAgICBwdWJsaWMgYmFza2V0c1NlcnZpY2U/OiBCYXNrZXRzU2VydmljZSxcbiAgICBwdWJsaWMgYmFza2V0RW50cmllc1NlcnZpY2U/OiBCYXNrZXRFbnRyaWVzU2VydmljZSxcbiAgICBwdWJsaWMgc3VwcGxpZXJzU2VydmljZT86IFN1cHBsaWVyc1NlcnZpY2VcbiAgKSB7XG4gIH1cblxuICBnZXQgdHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBXZSBkb24ndCBuZWVkIHRvIGxvZyB0aGUgd2hvbGUgYWN0aW9uLCBhIHJlYWRhYmxlIHZlcnNpb24gd2l0aCBvbmx5IHRoZSBuZWNlc3NhcnkgZmllbGRzIGlzIGJldHRlciBzdWl0ZWRcbiAgICovXG4gIGdldCBsb2dnYWJsZSgpOiB7IHR5cGU6IHN0cmluZzsgaWQ6IHN0cmluZzsgcXVhbnRpdHk6IG51bWJlcjsgZnJvbVJldGFpbGVyOiBib29sZWFuIH0ge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIHF1YW50aXR5OiB0aGlzLnF1YW50aXR5LFxuICAgICAgZnJvbVJldGFpbGVyOiB0aGlzLnVwZGF0ZWRGcm9tUmV0YWlsZXJcbiAgICB9O1xuICB9XG5cbiAgdXBkYXRlTWVhbHpCYXNrZXQoKTogdm9pZCB7XG4gICAgbWVhbHpXYXJuKCd1cGRhdGVNZWFsekJhc2tldCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgc2hvdWxkUmVtb3ZlQWN0aW9uKGJhc2tldEVudHJ5Rm91bmQ6IEJhc2tldEVudHJ5KTogYm9vbGVhbiB7XG4gICAgbWVhbHpXYXJuKCdzaG91bGRSZW1vdmVBY3Rpb24gbm90IGltcGxlbWVudGVkJyk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaW5pdFByb2Nlc3MobWVhbHpBY3Rpb25MaXN0OiBCZWhhdmlvclN1YmplY3Q8QmFza2V0QWN0aW9uW10+KTogdm9pZCB7XG4gICAgdGhpcy5zdGF0dXMgPSBBY3Rpb25TdGF0dXMuU0VOVF9UT19SRVRBSUxFUjtcbiAgICBjb25zdCBhdXRvUmVtb3ZlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZm91bmRJbmRleCA9IG1lYWx6QWN0aW9uTGlzdC52YWx1ZS5pbmRleE9mKHRoaXMpO1xuICAgICAgaWYgKGZvdW5kSW5kZXggPCAwKSB7XG4gICAgICAgIGNsZWFyVGltZW91dChhdXRvUmVtb3ZlVGltZW91dCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMub25UaW1lb3V0Lm5leHQoKTtcbiAgICAgIG1lYWx6QWN0aW9uTGlzdC52YWx1ZS5zcGxpY2UoZm91bmRJbmRleCwgMSk7XG4gICAgICBtZWFseldhcm4oJ1tNZWFsel0gQWN0aW9uIGhhcyBub3QgYmVlbiBjb21wbGV0ZWQgYWZ0ZXIgMTAgc2Vjb25kcywgYWJvcnRpbmcnLCB0aGlzLmxvZ2dhYmxlKTtcbiAgICAgIG1lYWx6QWN0aW9uTGlzdC5uZXh0KG1lYWx6QWN0aW9uTGlzdC52YWx1ZSk7XG4gICAgfSwgMTAwMDApO1xuICB9XG5cbiAgdXBkYXRlQmFza2V0RW50cnlRdWFudGl0eSgpOiBPYnNlcnZhYmxlPEJhc2tldEVudHJ5PiB7XG4gICAgaWYgKHRoaXMuYmFza2V0RW50cnkucXVhbnRpdHlUb0FkZCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmluZEJhc2tldEVudHJ5QnlJZCh0aGlzLmJhc2tldEVudHJ5LmlkKS5waXBlKFxuICAgICAgICBtYXAoKGZvdW5kOiBCYXNrZXRFbnRyeSB8IG51bGwpID0+IHtcbiAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgIC8vIENsb25lIHRvIGF2b2lkIGNoYW5naW5nIHRoZSBvcmlnaW5hbCBvYmplY3QgcmVmZXJlbmNlXG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkQmFza2V0RW50cnkgPSBkZWVwQ2xvbmVXaXRoQ2xhc3ModGhpcy5iYXNrZXRFbnRyeSkgYXMgQmFza2V0RW50cnk7XG4gICAgICAgICAgICB1cGRhdGVkQmFza2V0RW50cnkucXVhbnRpdHkgPSBmb3VuZC5xdWFudGl0eSArIHRoaXMuYmFza2V0RW50cnkucXVhbnRpdHlUb0FkZDtcbiAgICAgICAgICAgIHRoaXMucXVhbnRpdHkgPSB1cGRhdGVkQmFza2V0RW50cnkucXVhbnRpdHk7XG4gICAgICAgICAgICByZXR1cm4gdXBkYXRlZEJhc2tldEVudHJ5O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhpcy5iYXNrZXRFbnRyeTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBvZih0aGlzLmJhc2tldEVudHJ5KTtcbiAgfVxuXG4gIGNyZWF0ZUFjdGlvbkZvclJldGFpbGVyKCk6IE9ic2VydmFibGU8Q29tcGFyYWJsZVByb2R1Y3Q+IHtcbiAgICByZXR1cm4gdGhpcy5nZXREaWZmZXJlbmNlRnJvbUJhc2tldEVudHJ5KHRoaXMpLnBpcGUoXG4gICAgICBtYXAocXVhbnRpdHkgPT4gKHtcbiAgICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICAgIHF1YW50aXR5XG4gICAgICB9KSlcbiAgICApO1xuICB9XG5cbiAgc3luY1dpdGhVcGRhdGVGcm9tUmV0YWlsZXIocHJvZHVjdEZyb21SZXRhaWxlcjogQ29tcGFyYWJsZVByb2R1Y3QpOiB2b2lkIHtcbiAgICBpZiAocHJvZHVjdEZyb21SZXRhaWxlcj8ucXVhbnRpdHkgPCB0aGlzLnF1YW50aXR5KSB7XG4gICAgICB0aGlzLnF1YW50aXR5ID0gcHJvZHVjdEZyb21SZXRhaWxlci5xdWFudGl0eTtcbiAgICAgIHRoaXMuYmFza2V0RW50cnkucXVhbnRpdHkgPSBwcm9kdWN0RnJvbVJldGFpbGVyLnF1YW50aXR5O1xuICAgICAgdGhpcy51cGRhdGVkRnJvbVJldGFpbGVyID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVkRnJvbVJldGFpbGVyID0gZmFsc2U7XG4gIH1cblxuICBnZXREaWZmZXJlbmNlRnJvbUJhc2tldEVudHJ5KHRvQ29tcGFyZTogQmFza2V0QWN0aW9uKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNrZXRzU2VydmljZS53YWl0Rm9yQmFza2V0RW50cmllcy5waXBlKFxuICAgICAgbWFwKGJhc2tldCA9PiB7XG4gICAgICAgIGNvbnN0IGVudHJ5RnJvbUJhc2tldCA9IGJhc2tldC5maWx0ZXIoYmUgPT4gYmUuc3RhdHVzID09PSAnYWN0aXZlJykuZmluZChiZSA9PlxuICAgICAgICAgIGJlLmlkID09PSB0b0NvbXBhcmUuYmFza2V0RW50cnkuaWQgJiYgYmUuc2VsZWN0ZWRJdGVtLmV4dElkID09PSB0b0NvbXBhcmUuaWRcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHRvQ29tcGFyZS5xdWFudGl0eSAtIChlbnRyeUZyb21CYXNrZXQ/LnF1YW50aXR5IHx8IDApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kQmFza2V0RW50cnlCeUlkKGJhc2tldElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEJhc2tldEVudHJ5IHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmJhc2tldHNTZXJ2aWNlLndhaXRGb3JCYXNrZXRFbnRyaWVzLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKG1lYWx6QmFza2V0OiBCYXNrZXRFbnRyeVtdKSA9PiBvZihtZWFsekJhc2tldC5maW5kKGJlID0+IGJlLmlkID09PSBiYXNrZXRJZCkpKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BasketsService } from './baskets.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./baskets.service";
|
|
5
|
+
export class BasketRecipeCleanupService {
|
|
6
|
+
constructor(basketsService) {
|
|
7
|
+
this.basketsService = basketsService;
|
|
8
|
+
this.listenBasketEntriesChange();
|
|
9
|
+
}
|
|
10
|
+
listenBasketEntriesChange() {
|
|
11
|
+
this.basketsService.basketEntries()
|
|
12
|
+
.subscribe((entries) => this.cleanupRecipesWithDeletedEntries(entries));
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Cleans up recipes from the basket if all their basket entries have status 'deleted'.
|
|
16
|
+
* @param basketEntries Array of basket entry objects (as received from API)
|
|
17
|
+
*/
|
|
18
|
+
cleanupRecipesWithDeletedEntries(basketEntries) {
|
|
19
|
+
// Map recipeId to all associated basket entries
|
|
20
|
+
const recipeEntryMap = new Map();
|
|
21
|
+
const recipesIdToRemove = [];
|
|
22
|
+
for (const entry of basketEntries) {
|
|
23
|
+
const recipeIds = entry.recipesIds || [];
|
|
24
|
+
for (const recipeId of recipeIds) {
|
|
25
|
+
if (!recipeEntryMap.has(+recipeId)) {
|
|
26
|
+
recipeEntryMap.set(+recipeId, []);
|
|
27
|
+
}
|
|
28
|
+
recipeEntryMap.get(+recipeId).push(entry);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
for (const [recipeId, entries] of recipeEntryMap.entries()) {
|
|
32
|
+
const allDeleted = entries.every(e => e.attributes.status === 'deleted');
|
|
33
|
+
// Filter: only consider recipes still in the basket
|
|
34
|
+
if (allDeleted && this.basketsService.recipeIsInBasket(recipeId.toString())) {
|
|
35
|
+
recipesIdToRemove.push(recipeId.toString());
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (recipesIdToRemove.length > 0) {
|
|
39
|
+
this.removeRecipesFromBasket(recipesIdToRemove);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Placeholder for actual removal logic (API call, state update, etc.)
|
|
44
|
+
* @param recipeIds
|
|
45
|
+
*/
|
|
46
|
+
removeRecipesFromBasket(recipeIds) {
|
|
47
|
+
const eventTrace = {
|
|
48
|
+
originPath: '',
|
|
49
|
+
props: {}
|
|
50
|
+
};
|
|
51
|
+
this.basketsService.removeRecipesFromBasket(recipeIds, eventTrace, false);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
BasketRecipeCleanupService.ɵfac = function BasketRecipeCleanupService_Factory(t) { return new (t || BasketRecipeCleanupService)(i0.ɵɵinject(i1.BasketsService)); };
|
|
55
|
+
BasketRecipeCleanupService.ɵprov = i0.ɵɵdefineInjectable({ token: BasketRecipeCleanupService, factory: BasketRecipeCleanupService.ɵfac, providedIn: 'root' });
|
|
56
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BasketRecipeCleanupService, [{
|
|
57
|
+
type: Injectable,
|
|
58
|
+
args: [{
|
|
59
|
+
providedIn: 'root'
|
|
60
|
+
}]
|
|
61
|
+
}], function () { return [{ type: i1.BasketsService }]; }, null); })();
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFza2V0LXJlY2lwZS1jbGVhbnVwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1taWFtL3NyYy9saWIvX3NlcnZpY2VzL2Jhc2tldC1yZWNpcGUtY2xlYW51cC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7QUFNbkQsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUNVLGNBQThCO1FBQTlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUV0QyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRU8seUJBQXlCO1FBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFO2FBQ2hDLFNBQVMsQ0FBQyxDQUFDLE9BQXNCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRDs7O09BR0c7SUFDSCxnQ0FBZ0MsQ0FBQyxhQUE0QjtRQUMzRCxnREFBZ0Q7UUFDaEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLEVBQWlCLENBQUM7UUFDaEQsTUFBTSxpQkFBaUIsR0FBYSxFQUFFLENBQUM7UUFFdkMsS0FBSyxNQUFNLEtBQUssSUFBSSxhQUFhLEVBQUU7WUFDakMsTUFBTSxTQUFTLEdBQXdCLEtBQUssQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1lBQzlELEtBQUssTUFBTSxRQUFRLElBQUksU0FBUyxFQUFFO2dCQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUNsQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2lCQUNuQztnQkFDRCxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzVDO1NBQ0Y7UUFFRCxLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLElBQUksY0FBYyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzFELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUMsQ0FBQztZQUN6RSxvREFBb0Q7WUFDcEQsSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRTtnQkFDM0UsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2FBQzdDO1NBQ0Y7UUFFRCxJQUFJLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDakQ7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssdUJBQXVCLENBQUMsU0FBbUI7UUFDakQsTUFBTSxVQUFVLEdBQUc7WUFDakIsVUFBVSxFQUFFLEVBQUU7WUFDZCxLQUFLLEVBQUUsRUFBRTtTQUNWLENBQUM7UUFFRixJQUFJLENBQUMsY0FBYyxDQUFDLHVCQUF1QixDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUUsQ0FBQzs7b0dBdkRVLDBCQUEwQjtrRUFBMUIsMEJBQTBCLFdBQTFCLDBCQUEwQixtQkFGekIsTUFBTTt1RkFFUCwwQkFBMEI7Y0FIdEMsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFza2V0c1NlcnZpY2UgfSBmcm9tICcuL2Jhc2tldHMuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNrZXRFbnRyeSB9IGZyb20gJy4uL19tb2RlbHMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBCYXNrZXRSZWNpcGVDbGVhbnVwU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYmFza2V0c1NlcnZpY2U6IEJhc2tldHNTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLmxpc3RlbkJhc2tldEVudHJpZXNDaGFuZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuQmFza2V0RW50cmllc0NoYW5nZSgpIHtcbiAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLmJhc2tldEVudHJpZXMoKVxuICAgICAgLnN1YnNjcmliZSgoZW50cmllczogQmFza2V0RW50cnlbXSkgPT4gdGhpcy5jbGVhbnVwUmVjaXBlc1dpdGhEZWxldGVkRW50cmllcyhlbnRyaWVzKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYW5zIHVwIHJlY2lwZXMgZnJvbSB0aGUgYmFza2V0IGlmIGFsbCB0aGVpciBiYXNrZXQgZW50cmllcyBoYXZlIHN0YXR1cyAnZGVsZXRlZCcuXG4gICAqIEBwYXJhbSBiYXNrZXRFbnRyaWVzIEFycmF5IG9mIGJhc2tldCBlbnRyeSBvYmplY3RzIChhcyByZWNlaXZlZCBmcm9tIEFQSSlcbiAgICovXG4gIGNsZWFudXBSZWNpcGVzV2l0aERlbGV0ZWRFbnRyaWVzKGJhc2tldEVudHJpZXM6IEJhc2tldEVudHJ5W10pOiB2b2lkIHtcbiAgICAvLyBNYXAgcmVjaXBlSWQgdG8gYWxsIGFzc29jaWF0ZWQgYmFza2V0IGVudHJpZXNcbiAgICBjb25zdCByZWNpcGVFbnRyeU1hcCA9IG5ldyBNYXA8bnVtYmVyLCBhbnlbXT4oKTtcbiAgICBjb25zdCByZWNpcGVzSWRUb1JlbW92ZTogc3RyaW5nW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgZW50cnkgb2YgYmFza2V0RW50cmllcykge1xuICAgICAgY29uc3QgcmVjaXBlSWRzOiAoc3RyaW5nIHwgbnVtYmVyKVtdID0gZW50cnkucmVjaXBlc0lkcyB8fCBbXTtcbiAgICAgIGZvciAoY29uc3QgcmVjaXBlSWQgb2YgcmVjaXBlSWRzKSB7XG4gICAgICAgIGlmICghcmVjaXBlRW50cnlNYXAuaGFzKCtyZWNpcGVJZCkpIHtcbiAgICAgICAgICByZWNpcGVFbnRyeU1hcC5zZXQoK3JlY2lwZUlkLCBbXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVjaXBlRW50cnlNYXAuZ2V0KCtyZWNpcGVJZCkhLnB1c2goZW50cnkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgW3JlY2lwZUlkLCBlbnRyaWVzXSBvZiByZWNpcGVFbnRyeU1hcC5lbnRyaWVzKCkpIHtcbiAgICAgIGNvbnN0IGFsbERlbGV0ZWQgPSBlbnRyaWVzLmV2ZXJ5KGUgPT4gZS5hdHRyaWJ1dGVzLnN0YXR1cyA9PT0gJ2RlbGV0ZWQnKTtcbiAgICAgIC8vIEZpbHRlcjogb25seSBjb25zaWRlciByZWNpcGVzIHN0aWxsIGluIHRoZSBiYXNrZXRcbiAgICAgIGlmIChhbGxEZWxldGVkICYmIHRoaXMuYmFza2V0c1NlcnZpY2UucmVjaXBlSXNJbkJhc2tldChyZWNpcGVJZC50b1N0cmluZygpKSkge1xuICAgICAgICByZWNpcGVzSWRUb1JlbW92ZS5wdXNoKHJlY2lwZUlkLnRvU3RyaW5nKCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChyZWNpcGVzSWRUb1JlbW92ZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnJlbW92ZVJlY2lwZXNGcm9tQmFza2V0KHJlY2lwZXNJZFRvUmVtb3ZlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUGxhY2Vob2xkZXIgZm9yIGFjdHVhbCByZW1vdmFsIGxvZ2ljIChBUEkgY2FsbCwgc3RhdGUgdXBkYXRlLCBldGMuKVxuICAgKiBAcGFyYW0gcmVjaXBlSWRzXG4gICAqL1xuICBwcml2YXRlIHJlbW92ZVJlY2lwZXNGcm9tQmFza2V0KHJlY2lwZUlkczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBjb25zdCBldmVudFRyYWNlID0ge1xuICAgICAgb3JpZ2luUGF0aDogJycsXG4gICAgICBwcm9wczoge31cbiAgICB9O1xuXG4gICAgdGhpcy5iYXNrZXRzU2VydmljZS5yZW1vdmVSZWNpcGVzRnJvbUJhc2tldChyZWNpcGVJZHMsIGV2ZW50VHJhY2UsIGZhbHNlKTtcbiAgfVxufVxuIl19
|
|
@@ -97,7 +97,8 @@ export class BasketTransferService {
|
|
|
97
97
|
navigateToTransferUrl() {
|
|
98
98
|
const transferUrl = sessionStorage.getItem('_miam/transferUrl');
|
|
99
99
|
if (transferUrl) {
|
|
100
|
-
window.open(
|
|
100
|
+
// Apparently Safari blocks window.open(..., "_blank") if called in an async function and setTimeout makes it run on the main thread
|
|
101
|
+
setTimeout(() => window.open(transferUrl, '_blank'));
|
|
101
102
|
}
|
|
102
103
|
}
|
|
103
104
|
abortTransfer() {
|
|
@@ -212,4 +213,4 @@ BasketTransferService.ɵprov = i0.ɵɵdefineInjectable({ token: BasketTransferSe
|
|
|
212
213
|
providedIn: 'root'
|
|
213
214
|
}]
|
|
214
215
|
}], function () { return [{ type: i1.AnalyticsService }, { type: i2.BasketsService }, { type: i3.ContextService }, { type: i4.PointOfSalesService }, { type: i5.HttpClient }, { type: i6.UserService }, { type: i7.RecipesService }, { type: i8.SuppliersService }, { type: i9.BasketsSynchronizerService }, { type: i10.StatesService }]; }, null); })();
|
|
215
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFza2V0LXRyYW5zZmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1taWFtL3NyYy9saWIvX3NlcnZpY2VzL2Jhc2tldC10cmFuc2Zlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDOUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRyxPQUFPLEVBQUUsV0FBVyxJQUFJLENBQUMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN4RixPQUFPLEVB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QUFDLENBQUM7WUFDOUIsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM5RyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ2xEO0lBQ0gsQ0FBQzs7MEZBeFJVLHFCQUFxQjs2REFBckIscUJBQXFCLFdBQXJCLHFCQUFxQixtQkFGcEIsTUFBTTt1RkFFUCxxQkFBcUI7Y0FIakMsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBza2lwLCBza2lwV2hpbGUsIHN3aXRjaE1hcCwgdGFrZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCYXNrZXRFbnRyeSwgUG9pbnRPZlNhbGUgfSBmcm9tICcuLi9fbW9kZWxzJztcbmltcG9ydCB7IGVudmlyb25tZW50IGFzIGUgfSBmcm9tICcuLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4vYW5hbHl0aWNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFza2V0c1NlcnZpY2UgfSBmcm9tICcuL2Jhc2tldHMuc2VydmljZSc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSB9IGZyb20gJy4vY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IFBvaW50T2ZTYWxlc1NlcnZpY2UgfSBmcm9tICcuL3BvaW50LW9mLXNhbGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVjaXBlc1NlcnZpY2UgfSBmcm9tICcuL3JlY2lwZXMuc2VydmljZSc7XG5pbXBvcnQgeyBTdXBwbGllcnNTZXJ2aWNlIH0gZnJvbSAnLi9zdXBwbGllcnMuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4vdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2tldHNTeW5jaHJvbml6ZXJTZXJ2aWNlIH0gZnJvbSAnLi9iYXNrZXRzLXN5bmNocm9uaXppbmcnO1xuaW1wb3J0IHsgQmFza2V0VHJhbnNmZXJBY3Rpb24gfSBmcm9tICcuLi9fbW9kZWxzL2Jhc2tldC1hY3Rpb25zL2Jhc2tldC10cmFuc2Zlci1hY3Rpb24nO1xuaW1wb3J0IHsgRXZlbnRUcmFjZSB9IGZyb20gJy4uL190eXBlcy9ldmVudC10cmFjZSc7XG5pbXBvcnQgeyBTdGF0ZXNTZXJ2aWNlIH0gZnJvbSAnLi9zdGF0ZXMuc2VydmljZSc7XG5pbXBvcnQgeyBkZWVwQ2xvbmVXaXRoQ2xhc3MgfSBmcm9tICcuLi9fdXRpbHMvbWV0aG9kcy9kZWVwQ2xvbmUnO1xuXG5pbnRlcmZhY2UgQmFza2V0VHJhbnNmZXJQYXJhbXMge1xuICBiYXNrZXRUb2tlbjogc3RyaW5nO1xuICBwb3NFeHRJZDogc3RyaW5nO1xuICBhZmZpbGlhdGU6IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQmFza2V0VHJhbnNmZXJTZXJ2aWNlIHtcbiAgYmFza2V0SXNCZWluZ1RyYW5zZmVycmVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHRyYW5zZmVyQ29tcGxldGUkID0gbmV3IFN1YmplY3QoKTtcbiAgcHJldmlvdXNCYXNrZXRFbnRyaWVzOiBCYXNrZXRFbnRyeVtdID0gW107XG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFza2V0c1NlcnZpY2U6IEJhc2tldHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9zU2VydmljZTogUG9pbnRPZlNhbGVzU2VydmljZSxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNpcGVzU2VydmljZTogUmVjaXBlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdXBwbGllcnNTZXJ2aWNlOiBTdXBwbGllcnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFza2V0U3luY2hyb1NlcnZpY2U6IEJhc2tldHNTeW5jaHJvbml6ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RhdGVzU2VydmljZTogU3RhdGVzU2VydmljZVxuICApIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuc3RhcnRUcmFuc2Zlck9uU3VwcGxpZXJMb2FkZWQoKSxcbiAgICAgIHRoaXMuY2hlY2tBdXRobGVzc1RyYW5zZmVyKCksXG4gICAgICB0aGlzLmNoZWNrQmFza2V0U3RhdHVzKClcbiAgICApO1xuICB9XG5cbiAgc3RhcnRUcmFuc2Zlck9uU3VwcGxpZXJMb2FkZWQoKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5zdXBwbGllcnNTZXJ2aWNlLnN1cHBsaWVyJC5waXBlKFxuICAgICAgc2tpcFdoaWxlKHMgPT4gIXMpLFxuICAgICAgdGFrZSgxKVxuICAgICkuc3Vic2NyaWJlKCgpID0+XG4gICAgICB0aGlzLmhhbmRsZUJhc2tldFRyYW5zZmVyKClcbiAgICApO1xuICB9XG5cbiAgY2hlY2tBdXRobGVzc1RyYW5zZmVyKCk6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVzU2VydmljZS5jYWxsQXV0aGxlc3NUcmFuc2Zlci5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PlxuICAgICAgdGhpcy51cGRhdGVSZXRhaWxlckJhc2tldCgpXG4gICAgKTtcbiAgfVxuXG4gIGNoZWNrQmFza2V0U3RhdHVzKCk6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuYmFza2V0c1NlcnZpY2UuX2Jhc2tldCQucGlwZShcbiAgICAgIHNraXBXaGlsZShiID0+ICFiKSxcbiAgICAgIG1hcChiYXNrZXQgPT4gYmFza2V0LmF0dHJpYnV0ZXMuc3RhdHVzID09PSAndHJhbnNmZXJyaW5nJylcbiAgICApLnN1YnNjcmliZSh0cmFuc2ZlcnJpbmcgPT4ge1xuICAgICAgdGhpcy5iYXNrZXRJc0JlaW5nVHJhbnNmZXJyZWQubmV4dCh0cmFuc2ZlcnJpbmcpO1xuICAgICAgaWYgKCF0cmFuc2ZlcnJpbmcgJiYgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnX21pYW0vdHJhbnNmZXJVcmwnKSkge1xuICAgICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdfbWlhbS90cmFuc2ZlclVybCcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdW5zdWJzY3JpYmVTZXJ2aWNlKCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIHNldFNlc3Npb25EYXRhKHBhcmFtczogQmFza2V0VHJhbnNmZXJQYXJhbXMpOiB2b2lkIHtcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdfbWlhbS90cmFuc2ZlcnJlZEJhc2tldFRva2VuJywgcGFyYW1zLmJhc2tldFRva2VuKTtcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdfbWlhbS9wb3NPZlNhbGVFeHRJZCcsIHBhcmFtcy5wb3NFeHRJZCk7XG4gIH1cblxuICBjbGVhclRyYW5zZmVyU2Vzc2lvbkRhdGEoKTogdm9pZCB7XG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnX21pYW0vdHJhbnNmZXJyZWRCYXNrZXRUb2tlbicpO1xuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ19taWFtL3BvaW50T2ZTYWxlRXh0SWQnKTtcbiAgfVxuXG4gIGNvbmZpcm1CYXNrZXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnBvc1NlcnZpY2Uud2FpdEZvclBvcy5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBzd2l0Y2hNYXAoKHBvczogUG9pbnRPZlNhbGUpID0+IHtcbiAgICAgICAgICBjb25zdCBzdGFydFRyYW5zZmVyVXJsID0gYCR7ZS5taWFtQVBJfS9hcGkvdjEvYmFza2V0cy9zdGFydF90cmFuc2Zlcj9wb2ludF9vZl9zYWxlX2lkPSR7cG9zLmlkfWA7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaChzdGFydFRyYW5zZmVyVXJsLCB7fSk7XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAoKHRyYW5zZmVyUmVzcG9uc2U6IHsgJ3RyYW5zZmVyX3VybCc6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgICAgY29uc3QgW2Jhc2VVcmwsIHF1ZXJ5UGFyYW1zXSA9IHRyYW5zZmVyUmVzcG9uc2UudHJhbnNmZXJfdXJsLnNwbGl0KCc/Jyk7XG4gICAgICAgICAgdHJhbnNmZXJSZXNwb25zZS50cmFuc2Zlcl91cmwgPVxuICAgICAgICAgICAgKHRoaXMuY29udGV4dFNlcnZpY2UudHJhbnNmZXJVcmxCYXNlT3ZlcnJpZGUgfHwgYmFzZVVybCkgKyAocXVlcnlQYXJhbXMgPyAoJz8nICsgcXVlcnlQYXJhbXMpIDogJycpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmJhc2tldHNTZXJ2aWNlLnJlZnJlc2hDdXJyZW50QmFza2V0KCkucGlwZShcbiAgICAgICAgICAgIHNraXBXaGlsZShiYXNrZXQgPT4gIWJhc2tldCksXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgc3dpdGNoTWFwKGJhc2tldCA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnQoXG4gICAgICAgICAgICAgICAgJ2Jhc2tldC50cmFuc2ZlcicsXG4gICAgICAgICAgICAgICAgJy9iYXNrZXQnLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGJhc2tldF9pZDogYmFza2V0LmlkLFxuICAgICAgICAgICAgICAgICAgbWlhbV9hbW91bnQ6IGJhc2tldC50b3RhbFByaWNlLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICBwb3NfaWQ6IHRoaXMucG9zU2VydmljZS5wb3MkLmdldFZhbHVlKCkuaWQsXG4gICAgICAgICAgICAgICAgICBwb3NfbmFtZTogdGhpcy5wb3NTZXJ2aWNlLnBvcyQuZ2V0VmFsdWUoKS5hdHRyaWJ1dGVzLm5hbWUsXG4gICAgICAgICAgICAgICAgICBzdXBwbGllcl9pZDogdGhpcy5wb3NTZXJ2aWNlLnBvcyQuZ2V0VmFsdWUoKS5yZWxhdGlvbnNoaXBzLnN1cHBsaWVyLmRhdGEuaWRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybiBvZih0cmFuc2ZlclJlc3BvbnNlKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcCh0cmFuc2ZlclJlc3BvbnNlID0+IHtcbiAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdfbWlhbS90cmFuc2ZlclVybCcsIHRyYW5zZmVyUmVzcG9uc2UudHJhbnNmZXJfdXJsKTtcbiAgICAgICAgICB0aGlzLm5hdmlnYXRlVG9UcmFuc2ZlclVybCgpO1xuICAgICAgICAgIHRoaXMucmVjaXBlc1NlcnZpY2UuaGlkZSgpO1xuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSlcbiAgICAgICkuc3Vic2NyaWJlKClcbiAgICApO1xuICB9XG5cbiAgbmF2aWdhdGVUb1RyYW5zZmVyVXJsKCk6IHZvaWQge1xuICAgIGNvbnN0IHRyYW5zZmVyVXJsID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnX21pYW0vdHJhbnNmZXJVcmwnKTtcbiAgICBpZiAodHJhbnNmZXJVcmwpIHtcbiAgICAgIHdpbmRvdy5vcGVuKHRyYW5zZmVyVXJsLCAnX2JsYW5rJyk7XG4gICAgfVxuICB9XG5cbiAgYWJvcnRUcmFuc2ZlcigpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5wb3NTZXJ2aWNlLndhaXRGb3JQb3MucGlwZShcbiAgICAgIHRha2UoMSksXG4gICAgICBzd2l0Y2hNYXAoKHBvczogUG9pbnRPZlNhbGUpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhcnRUcmFuc2ZlclVybCA9IGAke2UubWlhbUFQSX0vYXBpL3YxL2Jhc2tldHMvYWJvcnRfdHJhbnNmZXI/cG9pbnRfb2Zfc2FsZV9pZD0ke3Bvcy5pZH1gO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoKHN0YXJ0VHJhbnNmZXJVcmwsIHt9KTtcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuYmFza2V0c1NlcnZpY2UucmVsb2FkQmFza2V0KCkpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgdGhpcy5iYXNrZXRJc0JlaW5nVHJhbnNmZXJyZWQubmV4dChmYWxzZSk7XG4gICAgICAgIHJldHVybiBvZihudWxsIGFzIHZvaWQpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVCYXNrZXRUcmFuc2ZlcigpOiB2b2lkIHtcbiAgICBjb25zdCB0cmFuc2ZlckRhdGEgPSB0aGlzLmdldFRyYW5zZmVyRGF0YSgpO1xuICAgIGlmICh0cmFuc2ZlckRhdGEpIHtcbiAgICAgIHRoaXMuc2V0U2Vzc2lvbkRhdGEodHJhbnNmZXJEYXRhKTtcbiAgICAgIHRoaXMudHJ5VG9UcmFuc2ZlckJhc2tldCh0cmFuc2ZlckRhdGEpLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmJhc2tldHNTZXJ2aWNlLnJlbG9hZEJhc2tldCgpKVxuICAgICAgKS5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRyeVRvVHJhbnNmZXJCYXNrZXQocGFyYW1zOiBCYXNrZXRUcmFuc2ZlclBhcmFtcyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmNhbGxIb29rYmFja0lmTm90TG9nZ2VkKCkucGlwZShcbiAgICAgIHNraXBXaGlsZShpc0xvZ2dlZCA9PiAhaXNMb2dnZWQpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZm9yY2VQb3NJZlVuc2V0KHBhcmFtcy5wb3NFeHRJZCkpLFxuICAgICAgc2tpcFdoaWxlKGlzUG9zU2V0ID0+ICFpc1Bvc1NldCksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5wb3NTZXJ2aWNlLndhaXRGb3JQb3MucGlwZShcbiAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgIHN3aXRjaE1hcChwb3MgPT4gdGhpcy5iYXNrZXRzU2VydmljZS53YWl0Rm9yQmFza2V0LnBpcGUoXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuYmFza2V0c1NlcnZpY2Uud2FpdEZvckJhc2tldEVudHJpZXMucGlwZShcbiAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgbWFwKChlbnRyaWVzOiBCYXNrZXRFbnRyeVtdKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aW91c0Jhc2tldEVudHJpZXMgPSBkZWVwQ2xvbmVXaXRoQ2xhc3MoZW50cmllcyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBvcztcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICkpXG4gICAgICAgICAgKSksXG4gICAgICAgICAgc3dpdGNoTWFwKHBvcyA9PiB0aGlzLnRyYW5zZmVyQmFza2V0Rm9yUG9zKHBvcywgcGFyYW1zLmJhc2tldFRva2VuKSksXG4gICAgICAgICAgdGFrZSgxKVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmZXJCYXNrZXRGb3JQb3MocG9zOiBQb2ludE9mU2FsZSwgYmFza2V0VG9rZW46IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHBvc0lkID0gcG9zLmlkO1xuICAgIGNvbnN0IHRyYW5zZmVyQmFza2V0VXJsID1cbiAgICAgIGAke2UubWlhbUFQSX0vYXBpL3YxL2Jhc2tldHMvdHJhbnNmZXI/cG9pbnRfb2Zfc2FsZV9pZD0ke3Bvc0lkfSZ0cmFuc2ZlcnJlZF9iYXNrZXRfdG9rZW49JHtiYXNrZXRUb2tlbn1gO1xuICAgIHRoaXMuY2xlYXJUcmFuc2ZlclNlc3Npb25EYXRhKCk7XG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnX21pYW0vYmFza2V0QWN0aW9uSW50ZXJydXB0ZWQnLCAndHJ1ZScpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2godHJhbnNmZXJCYXNrZXRVcmwsIHt9KS5waXBlKFxuICAgICAgLy8gSWYgYmFza2V0IHRyYW5zZmVyIHdhcyBhYm9ydGVkIG9uIGFmZmlsaWF0ZWQgd2Vic2l0ZSwgUEFUQ0ggcmV0dXJucyBhbiBlcnJvciwgYnV0IHdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgYWJvdXQgaXRcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICB0aGlzLnRyYW5zZmVyQ29tcGxldGUkLm5leHQoKTtcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgfSksXG4gICAgICB0YXAoYmFza2V0ID0+IGJhc2tldCAmJiB0aGlzLnJlY2lwZXNTZXJ2aWNlLm9wZW5CYXNrZXQoKSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5iYXNrZXRzU2VydmljZS5yZWZyZXNoQ3VycmVudEJhc2tldCgpLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy50cmFuc2ZlckNvbXBsZXRlJC5uZXh0KCk7XG4gICAgICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnX21pYW0vYmFza2V0QWN0aW9uSW50ZXJydXB0ZWQnKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVJldGFpbGVyQmFza2V0KCk7XG4gICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgICB9KVxuICAgICAgKSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJOZXdBbmRVcGRhdGVkRW50cmllcyhlbnRyaWVzOiBCYXNrZXRFbnRyeVtdKSB7XG4gICAgY29uc3QgbmV3RW50cmllcyA9IGVudHJpZXMuZmlsdGVyKGVudHJ5ID0+XG4gICAgICAhdGhpcy5wcmV2aW91c0Jhc2tldEVudHJpZXMuZmluZChwcmV2RW50cnkgPT4gcHJldkVudHJ5LmlkID09PSBlbnRyeS5pZCkpO1xuICAgIGNvbnN0IHVwZGF0ZWRFbnRyaWVzID0gZW50cmllcy5maWx0ZXIoXG4gICAgICBlbnRyeSA9PiB0aGlzLnByZXZpb3VzQmFza2V0RW50cmllcy5maW5kKFxuICAgICAgICBwcmV2RW50cnkgPT4gcHJldkVudHJ5LmlkID09PSBlbnRyeS5pZCAmJiBwcmV2RW50cnkucXVhbnRpdHkgIT09IGVudHJ5LnF1YW50aXR5XG4gICAgICApXG4gICAgKTtcbiAgICByZXR1cm4gWy4uLm5ld0VudHJpZXMsIC4uLnVwZGF0ZWRFbnRyaWVzXTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUmV0YWlsZXJCYXNrZXQoKTogdm9pZCB7XG4gICAgdGhpcy5iYXNrZXRzU2VydmljZS5hY3RpdmVCYXNrZXRFbnRyaWVzKCkucGlwZShcbiAgICAgIHNraXAoMSksXG4gICAgICB0YWtlKDEpLFxuICAgICAgc3dpdGNoTWFwKChlbnRyaWVzOiBCYXNrZXRFbnRyeVtdKSA9PiB7XG4gICAgICAgIHRoaXMuY3JlYXRlVHJhbnNmZXJBY3Rpb24oZW50cmllcyk7XG4gICAgICAgIHJldHVybiBlbnRyaWVzO1xuICAgICAgfSlcbiAgICApLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgY3JlYXRlVHJhbnNmZXJBY3Rpb24oZW50cmllczogQmFza2V0RW50cnlbXSkge1xuICAgIGNvbnN0IHRyYW5zZmVyQWN0aW9ucyA9IHRoaXMuZmlsdGVyTmV3QW5kVXBkYXRlZEVudHJpZXMoZW50cmllcykubWFwKChiYXNrZXRFbnRyeTogQmFza2V0RW50cnkpID0+IHtcbiAgICAgIGNvbnN0IHRyYW5zZmVyQWN0aW9uID0gbmV3IEJhc2tldFRyYW5zZmVyQWN0aW9uKFxuICAgICAgICBiYXNrZXRFbnRyeSxcbiAgICAgICAge30sXG4gICAgICAgIHRoaXMuYmFza2V0c1NlcnZpY2UsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgdGhpcy5zdXBwbGllcnNTZXJ2aWNlXG4gICAgICApO1xuICAgICAgdGhpcy5oYW5kbGVBY3Rpb25FcnJvcnModHJhbnNmZXJBY3Rpb24pO1xuICAgICAgcmV0dXJuIHRyYW5zZmVyQWN0aW9uO1xuICAgIH0pO1xuICAgIHRoaXMuYmFza2V0U3luY2hyb1NlcnZpY2UuYWRkVG9BY3Rpb25MaXN0KHRyYW5zZmVyQWN0aW9ucyk7XG4gIH1cblxuICBoYW5kbGVBY3Rpb25FcnJvcnMoYWN0aW9uOiBCYXNrZXRUcmFuc2ZlckFjdGlvbikge1xuICAgIGFjdGlvbi5vblRpbWVvdXQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuYmFza2V0c1NlcnZpY2UucmVtb3ZlUHJvZHVjdChhY3Rpb24uYmFza2V0RW50cnksIG5ldyBFdmVudFRyYWNlKCkpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNhbGxIb29rYmFja0lmTm90TG9nZ2VkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJTZXJ2aWNlLmlzTG9nZ2VkJC5waXBlKHRha2UoMSksXG4gICAgICBtYXAoaXNMb2dnZWQgPT4gdGhpcy5jb250ZXh0U2VydmljZS5ob29rQ2FsbGJhY2soaXNMb2dnZWQsIHRydWUpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGZvcmNlUG9zSWZVbnNldCh0cmFuc2ZlclBvc0V4dElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5wb3NTZXJ2aWNlLnBvc1dhc0luaXRpYWxpemVkKCkucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLnRyYW5zZmVyQ29tcGxldGUkKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnBvc1NlcnZpY2UucG9zJC5waXBlKHRha2UoMSkpKSxcbiAgICAgIHN3aXRjaE1hcChwb3MgPT4ge1xuICAgICAgICBjb25zdCBwb3NTZXQgPSBwb3MgJiYgcG9zLmV4dElkID09PSB0cmFuc2ZlclBvc0V4dElkO1xuICAgICAgICBpZiAoIXBvc1NldCkge1xuICAgICAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UuZm9yY2VQb3NDYWxsYmFjayh0cmFuc2ZlclBvc0V4dElkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2YocG9zU2V0KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VHJhbnNmZXJEYXRhKCk6IEJhc2tldFRyYW5zZmVyUGFyYW1zIHwgbnVsbCB7XG4gICAgY29uc3QgY3VycmVudFVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgIGNvbnN0IHVybFBhcmFtcyA9IG5ldyBVUkwoY3VycmVudFVybCkuc2VhcmNoUGFyYW1zO1xuXG4gICAgY29uc3QgYmFza2V0VG9rZW4gPSB1cmxQYXJhbXMuZ2V0KCd0cmFuc2ZlcnJlZF9iYXNrZXRfdG9rZW4nKSB8fCBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdfbWlhbS90cmFuc2ZlcnJlZEJhc2tldFRva2VuJyk7XG4gICAgY29uc3QgcG9zRXh0SWQgPSB1cmxQYXJhbXMuZ2V0KCdwb2ludF9vZl9zYWxlX2V4dF9pZCcpIHx8IHVybFBhcmFtcy5nZXQoJ21hZ2FzaW5faWQnKSB8fCBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdfbWlhbS9wb3NPZlNhbGVFeHRJZCcpO1xuICAgIGNvbnN0IGFmZmlsaWF0ZSA9IHVybFBhcmFtcy5nZXQoJ2FmZmlsaWF0ZScpPy50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKGJhc2tldFRva2VuICYmIHBvc0V4dElkKSB7XG4gICAgICB0aGlzLnJlbW92ZVRyYW5zZmVyUGFyYW1zRnJvbVVybCgpO1xuICAgICAgcmV0dXJuIHsgYmFza2V0VG9rZW4sIHBvc0V4dElkLCBhZmZpbGlhdGUgfSBhcyBCYXNrZXRUcmFuc2ZlclBhcmFtcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVUcmFuc2ZlclBhcmFtc0Zyb21VcmwoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgIGNvbnN0IHVybFF1ZXJ5ID0gY3VycmVudFVybC5zcGxpdCgnPycpWzFdO1xuICAgIGlmICh1cmxRdWVyeSkge1xuICAgICAgY29uc3QgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh1cmxRdWVyeSk7XG4gICAgICB1cmxQYXJhbXMuZGVsZXRlKCd0cmFuc2ZlcnJlZF9iYXNrZXRfdG9rZW4nKTtcbiAgICAgIHVybFBhcmFtcy5kZWxldGUoJ3BvaW50X29mX3NhbGVfZXh0X2lkJyk7XG4gICAgICB1cmxQYXJhbXMuZGVsZXRlKCdtYWdhc2luX2lkJyk7XG4gICAgICB1cmxQYXJhbXMuZGVsZXRlKCdhZmZpbGlhdGUnKTtcbiAgICAgIGNvbnN0IG5ld1VybCA9IGN1cnJlbnRVcmwuc3BsaXQoJz8nKVswXSArICh1cmxQYXJhbXMudG9TdHJpbmcoKS5sZW5ndGggPiAwID8gJz8nICsgdXJsUGFyYW1zLnRvU3RyaW5nKCkgOiAnJyk7XG4gICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSwgZG9jdW1lbnQudGl0bGUsIG5ld1VybCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFza2V0LXRyYW5zZmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1taWFtL3NyYy9saWIvX3NlcnZpY2VzL2Jhc2tldC10cmFuc2Zlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDOUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRyxPQUFPLEVBQUUsV0FBVyxJQUFJLENBQUMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN4RixPQUFPLEVB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LENBQUMsQ0FBQztZQUMvQixTQUFTLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDOUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztTQUNsRDtJQUNILENBQUM7OzBGQXpSVSxxQkFBcUI7NkRBQXJCLHFCQUFxQixXQUFyQixxQkFBcUIsbUJBRnBCLE1BQU07dUZBRVAscUJBQXFCO2NBSGpDLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc2tpcCwgc2tpcFdoaWxlLCBzd2l0Y2hNYXAsIHRha2UsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmFza2V0RW50cnksIFBvaW50T2ZTYWxlIH0gZnJvbSAnLi4vX21vZGVscyc7XG5pbXBvcnQgeyBlbnZpcm9ubWVudCBhcyBlIH0gZnJvbSAnLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuL2FuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2tldHNTZXJ2aWNlIH0gZnJvbSAnLi9iYXNrZXRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBQb2ludE9mU2FsZXNTZXJ2aWNlIH0gZnJvbSAnLi9wb2ludC1vZi1zYWxlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFJlY2lwZXNTZXJ2aWNlIH0gZnJvbSAnLi9yZWNpcGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3VwcGxpZXJzU2VydmljZSB9IGZyb20gJy4vc3VwcGxpZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuL3VzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNrZXRzU3luY2hyb25pemVyU2VydmljZSB9IGZyb20gJy4vYmFza2V0cy1zeW5jaHJvbml6aW5nJztcbmltcG9ydCB7IEJhc2tldFRyYW5zZmVyQWN0aW9uIH0gZnJvbSAnLi4vX21vZGVscy9iYXNrZXQtYWN0aW9ucy9iYXNrZXQtdHJhbnNmZXItYWN0aW9uJztcbmltcG9ydCB7IEV2ZW50VHJhY2UgfSBmcm9tICcuLi9fdHlwZXMvZXZlbnQtdHJhY2UnO1xuaW1wb3J0IHsgU3RhdGVzU2VydmljZSB9IGZyb20gJy4vc3RhdGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgZGVlcENsb25lV2l0aENsYXNzIH0gZnJvbSAnLi4vX3V0aWxzL21ldGhvZHMvZGVlcENsb25lJztcblxuaW50ZXJmYWNlIEJhc2tldFRyYW5zZmVyUGFyYW1zIHtcbiAgYmFza2V0VG9rZW46IHN0cmluZztcbiAgcG9zRXh0SWQ6IHN0cmluZztcbiAgYWZmaWxpYXRlOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEJhc2tldFRyYW5zZmVyU2VydmljZSB7XG4gIGJhc2tldElzQmVpbmdUcmFuc2ZlcnJlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICB0cmFuc2ZlckNvbXBsZXRlJCA9IG5ldyBTdWJqZWN0KCk7XG4gIHByZXZpb3VzQmFza2V0RW50cmllczogQmFza2V0RW50cnlbXSA9IFtdO1xuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSxcbiAgICBwcml2YXRlIGJhc2tldHNTZXJ2aWNlOiBCYXNrZXRzU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIHBvc1NlcnZpY2U6IFBvaW50T2ZTYWxlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVjaXBlc1NlcnZpY2U6IFJlY2lwZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3VwcGxpZXJzU2VydmljZTogU3VwcGxpZXJzU2VydmljZSxcbiAgICBwcml2YXRlIGJhc2tldFN5bmNocm9TZXJ2aWNlOiBCYXNrZXRzU3luY2hyb25pemVyU2VydmljZSxcbiAgICBwcml2YXRlIHN0YXRlc1NlcnZpY2U6IFN0YXRlc1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnN0YXJ0VHJhbnNmZXJPblN1cHBsaWVyTG9hZGVkKCksXG4gICAgICB0aGlzLmNoZWNrQXV0aGxlc3NUcmFuc2ZlcigpLFxuICAgICAgdGhpcy5jaGVja0Jhc2tldFN0YXR1cygpXG4gICAgKTtcbiAgfVxuXG4gIHN0YXJ0VHJhbnNmZXJPblN1cHBsaWVyTG9hZGVkKCk6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuc3VwcGxpZXJzU2VydmljZS5zdXBwbGllciQucGlwZShcbiAgICAgIHNraXBXaGlsZShzID0+ICFzKSxcbiAgICAgIHRha2UoMSlcbiAgICApLnN1YnNjcmliZSgoKSA9PlxuICAgICAgdGhpcy5oYW5kbGVCYXNrZXRUcmFuc2ZlcigpXG4gICAgKTtcbiAgfVxuXG4gIGNoZWNrQXV0aGxlc3NUcmFuc2ZlcigpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlc1NlcnZpY2UuY2FsbEF1dGhsZXNzVHJhbnNmZXIucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT5cbiAgICAgIHRoaXMudXBkYXRlUmV0YWlsZXJCYXNrZXQoKVxuICAgICk7XG4gIH1cblxuICBjaGVja0Jhc2tldFN0YXR1cygpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLmJhc2tldHNTZXJ2aWNlLl9iYXNrZXQkLnBpcGUoXG4gICAgICBza2lwV2hpbGUoYiA9PiAhYiksXG4gICAgICBtYXAoYmFza2V0ID0+IGJhc2tldC5hdHRyaWJ1dGVzLnN0YXR1cyA9PT0gJ3RyYW5zZmVycmluZycpXG4gICAgKS5zdWJzY3JpYmUodHJhbnNmZXJyaW5nID0+IHtcbiAgICAgIHRoaXMuYmFza2V0SXNCZWluZ1RyYW5zZmVycmVkLm5leHQodHJhbnNmZXJyaW5nKTtcbiAgICAgIGlmICghdHJhbnNmZXJyaW5nICYmIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ19taWFtL3RyYW5zZmVyVXJsJykpIHtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnX21pYW0vdHJhbnNmZXJVcmwnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHVuc3Vic2NyaWJlU2VydmljZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBzZXRTZXNzaW9uRGF0YShwYXJhbXM6IEJhc2tldFRyYW5zZmVyUGFyYW1zKTogdm9pZCB7XG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnX21pYW0vdHJhbnNmZXJyZWRCYXNrZXRUb2tlbicsIHBhcmFtcy5iYXNrZXRUb2tlbik7XG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnX21pYW0vcG9zT2ZTYWxlRXh0SWQnLCBwYXJhbXMucG9zRXh0SWQpO1xuICB9XG5cbiAgY2xlYXJUcmFuc2ZlclNlc3Npb25EYXRhKCk6IHZvaWQge1xuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ19taWFtL3RyYW5zZmVycmVkQmFza2V0VG9rZW4nKTtcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdfbWlhbS9wb2ludE9mU2FsZUV4dElkJyk7XG4gIH1cblxuICBjb25maXJtQmFza2V0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5wb3NTZXJ2aWNlLndhaXRGb3JQb3MucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgc3dpdGNoTWFwKChwb3M6IFBvaW50T2ZTYWxlKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhcnRUcmFuc2ZlclVybCA9IGAke2UubWlhbUFQSX0vYXBpL3YxL2Jhc2tldHMvc3RhcnRfdHJhbnNmZXI/cG9pbnRfb2Zfc2FsZV9pZD0ke3Bvcy5pZH1gO1xuICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goc3RhcnRUcmFuc2ZlclVybCwge30pO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKCh0cmFuc2ZlclJlc3BvbnNlOiB7ICd0cmFuc2Zlcl91cmwnOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IFtiYXNlVXJsLCBxdWVyeVBhcmFtc10gPSB0cmFuc2ZlclJlc3BvbnNlLnRyYW5zZmVyX3VybC5zcGxpdCgnPycpO1xuICAgICAgICAgIHRyYW5zZmVyUmVzcG9uc2UudHJhbnNmZXJfdXJsID1cbiAgICAgICAgICAgICh0aGlzLmNvbnRleHRTZXJ2aWNlLnRyYW5zZmVyVXJsQmFzZU92ZXJyaWRlIHx8IGJhc2VVcmwpICsgKHF1ZXJ5UGFyYW1zID8gKCc/JyArIHF1ZXJ5UGFyYW1zKSA6ICcnKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5iYXNrZXRzU2VydmljZS5yZWZyZXNoQ3VycmVudEJhc2tldCgpLnBpcGUoXG4gICAgICAgICAgICBza2lwV2hpbGUoYmFza2V0ID0+ICFiYXNrZXQpLFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcChiYXNrZXQgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2Uuc2VuZEV2ZW50KFxuICAgICAgICAgICAgICAgICdiYXNrZXQudHJhbnNmZXInLFxuICAgICAgICAgICAgICAgICcvYmFza2V0JyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBiYXNrZXRfaWQ6IGJhc2tldC5pZCxcbiAgICAgICAgICAgICAgICAgIG1pYW1fYW1vdW50OiBiYXNrZXQudG90YWxQcmljZS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgcG9zX2lkOiB0aGlzLnBvc1NlcnZpY2UucG9zJC5nZXRWYWx1ZSgpLmlkLFxuICAgICAgICAgICAgICAgICAgcG9zX25hbWU6IHRoaXMucG9zU2VydmljZS5wb3MkLmdldFZhbHVlKCkuYXR0cmlidXRlcy5uYW1lLFxuICAgICAgICAgICAgICAgICAgc3VwcGxpZXJfaWQ6IHRoaXMucG9zU2VydmljZS5wb3MkLmdldFZhbHVlKCkucmVsYXRpb25zaGlwcy5zdXBwbGllci5kYXRhLmlkXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICByZXR1cm4gb2YodHJhbnNmZXJSZXNwb25zZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAodHJhbnNmZXJSZXNwb25zZSA9PiB7XG4gICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnX21pYW0vdHJhbnNmZXJVcmwnLCB0cmFuc2ZlclJlc3BvbnNlLnRyYW5zZmVyX3VybCk7XG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvVHJhbnNmZXJVcmwoKTtcbiAgICAgICAgICB0aGlzLnJlY2lwZXNTZXJ2aWNlLmhpZGUoKTtcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgpXG4gICAgKTtcbiAgfVxuXG4gIG5hdmlnYXRlVG9UcmFuc2ZlclVybCgpOiB2b2lkIHtcbiAgICBjb25zdCB0cmFuc2ZlclVybCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ19taWFtL3RyYW5zZmVyVXJsJyk7XG4gICAgaWYgKHRyYW5zZmVyVXJsKSB7XG4gICAgICAvLyBBcHBhcmVudGx5IFNhZmFyaSBibG9ja3Mgd2luZG93Lm9wZW4oLi4uLCBcIl9ibGFua1wiKSBpZiBjYWxsZWQgaW4gYW4gYXN5bmMgZnVuY3Rpb24gYW5kIHNldFRpbWVvdXQgbWFrZXMgaXQgcnVuIG9uIHRoZSBtYWluIHRocmVhZFxuICAgICAgc2V0VGltZW91dCgoKSA9PiB3aW5kb3cub3Blbih0cmFuc2ZlclVybCwgJ19ibGFuaycpKTtcbiAgICB9XG4gIH1cblxuICBhYm9ydFRyYW5zZmVyKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnBvc1NlcnZpY2Uud2FpdEZvclBvcy5waXBlKFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHN3aXRjaE1hcCgocG9zOiBQb2ludE9mU2FsZSkgPT4ge1xuICAgICAgICBjb25zdCBzdGFydFRyYW5zZmVyVXJsID0gYCR7ZS5taWFtQVBJfS9hcGkvdjEvYmFza2V0cy9hYm9ydF90cmFuc2Zlcj9wb2ludF9vZl9zYWxlX2lkPSR7cG9zLmlkfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goc3RhcnRUcmFuc2ZlclVybCwge30pO1xuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5iYXNrZXRzU2VydmljZS5yZWxvYWRCYXNrZXQoKSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICB0aGlzLmJhc2tldElzQmVpbmdUcmFuc2ZlcnJlZC5uZXh0KGZhbHNlKTtcbiAgICAgICAgcmV0dXJuIG9mKG51bGwgYXMgdm9pZCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUJhc2tldFRyYW5zZmVyKCk6IHZvaWQge1xuICAgIGNvbnN0IHRyYW5zZmVyRGF0YSA9IHRoaXMuZ2V0VHJhbnNmZXJEYXRhKCk7XG4gICAgaWYgKHRyYW5zZmVyRGF0YSkge1xuICAgICAgdGhpcy5zZXRTZXNzaW9uRGF0YSh0cmFuc2ZlckRhdGEpO1xuICAgICAgdGhpcy50cnlUb1RyYW5zZmVyQmFza2V0KHRyYW5zZmVyRGF0YSkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuYmFza2V0c1NlcnZpY2UucmVsb2FkQmFza2V0KCkpXG4gICAgICApLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdHJ5VG9UcmFuc2ZlckJhc2tldChwYXJhbXM6IEJhc2tldFRyYW5zZmVyUGFyYW1zKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbEhvb2tiYWNrSWZOb3RMb2dnZWQoKS5waXBlKFxuICAgICAgc2tpcFdoaWxlKGlzTG9nZ2VkID0+ICFpc0xvZ2dlZCksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5mb3JjZVBvc0lmVW5zZXQocGFyYW1zLnBvc0V4dElkKSksXG4gICAgICBza2lwV2hpbGUoaXNQb3NTZXQgPT4gIWlzUG9zU2V0KSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnBvc1NlcnZpY2Uud2FpdEZvclBvcy5waXBlKFxuICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgc3dpdGNoTWFwKHBvcyA9PiB0aGlzLmJhc2tldHNTZXJ2aWNlLndhaXRGb3JCYXNrZXQucGlwZShcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5iYXNrZXRzU2VydmljZS53YWl0Rm9yQmFza2V0RW50cmllcy5waXBlKFxuICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICBtYXAoKGVudHJpZXM6IEJhc2tldEVudHJ5W10pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpb3VzQmFza2V0RW50cmllcyA9IGRlZXBDbG9uZVdpdGhDbGFzcyhlbnRyaWVzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcG9zO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSlcbiAgICAgICAgICApKSxcbiAgICAgICAgICBzd2l0Y2hNYXAocG9zID0+IHRoaXMudHJhbnNmZXJCYXNrZXRGb3JQb3MocG9zLCBwYXJhbXMuYmFza2V0VG9rZW4pKSxcbiAgICAgICAgICB0YWtlKDEpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc2ZlckJhc2tldEZvclBvcyhwb3M6IFBvaW50T2ZTYWxlLCBiYXNrZXRUb2tlbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgcG9zSWQgPSBwb3MuaWQ7XG4gICAgY29uc3QgdHJhbnNmZXJCYXNrZXRVcmwgPVxuICAgICAgYCR7ZS5taWFtQVBJfS9hcGkvdjEvYmFza2V0cy90cmFuc2Zlcj9wb2ludF9vZl9zYWxlX2lkPSR7cG9zSWR9JnRyYW5zZmVycmVkX2Jhc2tldF90b2tlbj0ke2Jhc2tldFRva2VufWA7XG4gICAgdGhpcy5jbGVhclRyYW5zZmVyU2Vzc2lvbkRhdGEoKTtcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdfbWlhbS9iYXNrZXRBY3Rpb25JbnRlcnJ1cHRlZCcsICd0cnVlJyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaCh0cmFuc2ZlckJhc2tldFVybCwge30pLnBpcGUoXG4gICAgICAvLyBJZiBiYXNrZXQgdHJhbnNmZXIgd2FzIGFib3J0ZWQgb24gYWZmaWxpYXRlZCB3ZWJzaXRlLCBQQVRDSCByZXR1cm5zIGFuIGVycm9yLCBidXQgd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBhYm91dCBpdFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XG4gICAgICAgIHRoaXMudHJhbnNmZXJDb21wbGV0ZSQubmV4dCgpO1xuICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICB9KSxcbiAgICAgIHRhcChiYXNrZXQgPT4gYmFza2V0ICYmIHRoaXMucmVjaXBlc1NlcnZpY2Uub3BlbkJhc2tldCgpKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmJhc2tldHNTZXJ2aWNlLnJlZnJlc2hDdXJyZW50QmFza2V0KCkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnRyYW5zZmVyQ29tcGxldGUkLm5leHQoKTtcbiAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdfbWlhbS9iYXNrZXRBY3Rpb25JbnRlcnJ1cHRlZCcpO1xuICAgICAgICAgIHRoaXMudXBkYXRlUmV0YWlsZXJCYXNrZXQoKTtcbiAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgICAgIH0pXG4gICAgICApKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlck5ld0FuZFVwZGF0ZWRFbnRyaWVzKGVudHJpZXM6IEJhc2tldEVudHJ5W10pIHtcbiAgICBjb25zdCBuZXdFbnRyaWVzID0gZW50cmllcy5maWx0ZXIoZW50cnkgPT5cbiAgICAgICF0aGlzLnByZXZpb3VzQmFza2V0RW50cmllcy5maW5kKHByZXZFbnRyeSA9PiBwcmV2RW50cnkuaWQgPT09IGVudHJ5LmlkKSk7XG4gICAgY29uc3QgdXBkYXRlZEVudHJpZXMgPSBlbnRyaWVzLmZpbHRlcihcbiAgICAgIGVudHJ5ID0+IHRoaXMucHJldmlvdXNCYXNrZXRFbnRyaWVzLmZpbmQoXG4gICAgICAgIHByZXZFbnRyeSA9PiBwcmV2RW50cnkuaWQgPT09IGVudHJ5LmlkICYmIHByZXZFbnRyeS5xdWFudGl0eSAhPT0gZW50cnkucXVhbnRpdHlcbiAgICAgIClcbiAgICApO1xuICAgIHJldHVybiBbLi4ubmV3RW50cmllcywgLi4udXBkYXRlZEVudHJpZXNdO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVSZXRhaWxlckJhc2tldCgpOiB2b2lkIHtcbiAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLmFjdGl2ZUJhc2tldEVudHJpZXMoKS5waXBlKFxuICAgICAgc2tpcCgxKSxcbiAgICAgIHRha2UoMSksXG4gICAgICBzd2l0Y2hNYXAoKGVudHJpZXM6IEJhc2tldEVudHJ5W10pID0+IHtcbiAgICAgICAgdGhpcy5jcmVhdGVUcmFuc2ZlckFjdGlvbihlbnRyaWVzKTtcbiAgICAgICAgcmV0dXJuIGVudHJpZXM7XG4gICAgICB9KVxuICAgICkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBjcmVhdGVUcmFuc2ZlckFjdGlvbihlbnRyaWVzOiBCYXNrZXRFbnRyeVtdKSB7XG4gICAgY29uc3QgdHJhbnNmZXJBY3Rpb25zID0gdGhpcy5maWx0ZXJOZXdBbmRVcGRhdGVkRW50cmllcyhlbnRyaWVzKS5tYXAoKGJhc2tldEVudHJ5OiBCYXNrZXRFbnRyeSkgPT4ge1xuICAgICAgY29uc3QgdHJhbnNmZXJBY3Rpb24gPSBuZXcgQmFza2V0VHJhbnNmZXJBY3Rpb24oXG4gICAgICAgIGJhc2tldEVudHJ5LFxuICAgICAgICB7fSxcbiAgICAgICAgdGhpcy5iYXNrZXRzU2VydmljZSxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICB0aGlzLnN1cHBsaWVyc1NlcnZpY2VcbiAgICAgICk7XG4gICAgICB0aGlzLmhhbmRsZUFjdGlvbkVycm9ycyh0cmFuc2ZlckFjdGlvbik7XG4gICAgICByZXR1cm4gdHJhbnNmZXJBY3Rpb247XG4gICAgfSk7XG4gICAgdGhpcy5iYXNrZXRTeW5jaHJvU2VydmljZS5hZGRUb0FjdGlvbkxpc3QodHJhbnNmZXJBY3Rpb25zKTtcbiAgfVxuXG4gIGhhbmRsZUFjdGlvbkVycm9ycyhhY3Rpb246IEJhc2tldFRyYW5zZmVyQWN0aW9uKSB7XG4gICAgYWN0aW9uLm9uVGltZW91dC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5iYXNrZXRzU2VydmljZS5yZW1vdmVQcm9kdWN0KGFjdGlvbi5iYXNrZXRFbnRyeSwgbmV3IEV2ZW50VHJhY2UoKSk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsbEhvb2tiYWNrSWZOb3RMb2dnZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMudXNlclNlcnZpY2UuaXNMb2dnZWQkLnBpcGUodGFrZSgxKSxcbiAgICAgIG1hcChpc0xvZ2dlZCA9PiB0aGlzLmNvbnRleHRTZXJ2aWNlLmhvb2tDYWxsYmFjayhpc0xvZ2dlZCwgdHJ1ZSkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9yY2VQb3NJZlVuc2V0KHRyYW5zZmVyUG9zRXh0SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnBvc1NlcnZpY2UucG9zV2FzSW5pdGlhbGl6ZWQoKS5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMudHJhbnNmZXJDb21wbGV0ZSQpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMucG9zU2VydmljZS5wb3MkLnBpcGUodGFrZSgxKSkpLFxuICAgICAgc3dpdGNoTWFwKHBvcyA9PiB7XG4gICAgICAgIGNvbnN0IHBvc1NldCA9IHBvcyAmJiBwb3MuZXh0SWQgPT09IHRyYW5zZmVyUG9zRXh0SWQ7XG4gICAgICAgIGlmICghcG9zU2V0KSB7XG4gICAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS5mb3JjZVBvc0NhbGxiYWNrKHRyYW5zZmVyUG9zRXh0SWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZihwb3NTZXQpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUcmFuc2ZlckRhdGEoKTogQmFza2V0VHJhbnNmZXJQYXJhbXMgfCBudWxsIHtcbiAgICBjb25zdCBjdXJyZW50VXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgY29uc3QgdXJsUGFyYW1zID0gbmV3IFVSTChjdXJyZW50VXJsKS5zZWFyY2hQYXJhbXM7XG5cbiAgICBjb25zdCBiYXNrZXRUb2tlbiA9IHVybFBhcmFtcy5nZXQoJ3RyYW5zZmVycmVkX2Jhc2tldF90b2tlbicpIHx8IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ19taWFtL3RyYW5zZmVycmVkQmFza2V0VG9rZW4nKTtcbiAgICBjb25zdCBwb3NFeHRJZCA9IHVybFBhcmFtcy5nZXQoJ3BvaW50X29mX3NhbGVfZXh0X2lkJykgfHwgdXJsUGFyYW1zLmdldCgnbWFnYXNpbl9pZCcpIHx8IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ19taWFtL3Bvc09mU2FsZUV4dElkJyk7XG4gICAgY29uc3QgYWZmaWxpYXRlID0gdXJsUGFyYW1zLmdldCgnYWZmaWxpYXRlJyk/LnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAoYmFza2V0VG9rZW4gJiYgcG9zRXh0SWQpIHtcbiAgICAgIHRoaXMucmVtb3ZlVHJhbnNmZXJQYXJhbXNGcm9tVXJsKCk7XG4gICAgICByZXR1cm4geyBiYXNrZXRUb2tlbiwgcG9zRXh0SWQsIGFmZmlsaWF0ZSB9IGFzIEJhc2tldFRyYW5zZmVyUGFyYW1zO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVRyYW5zZmVyUGFyYW1zRnJvbVVybCgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50VXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgY29uc3QgdXJsUXVlcnkgPSBjdXJyZW50VXJsLnNwbGl0KCc/JylbMV07XG4gICAgaWYgKHVybFF1ZXJ5KSB7XG4gICAgICBjb25zdCB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHVybFF1ZXJ5KTtcbiAgICAgIHVybFBhcmFtcy5kZWxldGUoJ3RyYW5zZmVycmVkX2Jhc2tldF90b2tlbicpO1xuICAgICAgdXJsUGFyYW1zLmRlbGV0ZSgncG9pbnRfb2Zfc2FsZV9leHRfaWQnKTtcbiAgICAgIHVybFBhcmFtcy5kZWxldGUoJ21hZ2FzaW5faWQnKTtcbiAgICAgIHVybFBhcmFtcy5kZWxldGUoJ2FmZmlsaWF0ZScpO1xuICAgICAgY29uc3QgbmV3VXJsID0gY3VycmVudFVybC5zcGxpdCgnPycpWzBdICsgKHVybFBhcmFtcy50b1N0cmluZygpLmxlbmd0aCA+IDAgPyAnPycgKyB1cmxQYXJhbXMudG9TdHJpbmcoKSA6ICcnKTtcbiAgICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LCBkb2N1bWVudC50aXRsZSwgbmV3VXJsKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|