ng-miam 3.2.2 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/bundles/ng-miam.umd.js +7452 -5975
  2. package/bundles/ng-miam.umd.js.map +1 -1
  3. package/bundles/ng-miam.umd.min.js +2 -2
  4. package/bundles/ng-miam.umd.min.js.map +1 -1
  5. package/esm2015/lib/_components/abstracts/abstract-recipe-card.component.js +1 -1
  6. package/esm2015/lib/_components/icon/icon.component.js +65 -6
  7. package/esm2015/lib/_components/recipe-filters/recipe-filters.component.js +94 -40
  8. package/esm2015/lib/_components/recipe-type-chooser/recipe-type-chooser.component.js +23 -30
  9. package/esm2015/lib/_components/text-input/text-input.component.js +6 -4
  10. package/esm2015/lib/_models/article.js +43 -0
  11. package/esm2015/lib/_models/basket.js +2 -2
  12. package/esm2015/lib/_models/groceries-entry.js +23 -2
  13. package/esm2015/lib/_models/groceries-list.js +5 -2
  14. package/esm2015/lib/_models/index.js +4 -1
  15. package/esm2015/lib/_models/package.js +14 -3
  16. package/esm2015/lib/_models/recipe.js +4 -1
  17. package/esm2015/lib/_models/user.js +10 -1
  18. package/esm2015/lib/_services/analytics.service.js +7 -1
  19. package/esm2015/lib/_services/articles.service.js +21 -0
  20. package/esm2015/lib/_services/baskets.service.js +7 -3
  21. package/esm2015/lib/_services/context.service.js +15 -1
  22. package/esm2015/lib/_services/groceries-lists.service.js +23 -6
  23. package/esm2015/lib/_services/index.js +3 -1
  24. package/esm2015/lib/_services/ingredients.service.js +2 -2
  25. package/esm2015/lib/_services/interceptor.service.js +2 -3
  26. package/esm2015/lib/_services/package.service.js +32 -9
  27. package/esm2015/lib/_services/recipe-events.service.js +2 -2
  28. package/esm2015/lib/_services/recipe-likes.service.js +6 -2
  29. package/esm2015/lib/_services/recipe-share.service.js +2 -2
  30. package/esm2015/lib/_services/recipes.service.js +2 -2
  31. package/esm2015/lib/_services/suppliers.service.js +2 -2
  32. package/esm2015/lib/_services/toastr.service.js +52 -0
  33. package/esm2015/lib/_services/user.service.js +64 -21
  34. package/esm2015/lib/_types/icon.enum.js +22 -18
  35. package/esm2015/lib/_web-components/{basket-preview-block → basket-preview/basket-preview-block}/basket-preview-block.component.js +15 -15
  36. package/esm2015/lib/_web-components/{basket-preview-disabled → basket-preview/basket-preview-disabled}/basket-preview-disabled.component.js +3 -3
  37. package/esm2015/lib/_web-components/{basket-preview-line → basket-preview/basket-preview-line}/basket-preview-line.component.js +22 -19
  38. package/esm2015/lib/_web-components/basket-preview/basket-preview.module.js +78 -0
  39. package/esm2015/lib/_web-components/basket-preview/index.js +7 -0
  40. package/esm2015/lib/_web-components/{replace-item → basket-preview/replace-item}/replace-item.component.js +8 -8
  41. package/esm2015/lib/_web-components/catalog-article-card/catalog-article-card.component.js +71 -0
  42. package/esm2015/lib/_web-components/catalog-category/catalog-category.component.js +134 -92
  43. package/esm2015/lib/_web-components/catalog-header/catalog-header.component.js +51 -34
  44. package/esm2015/lib/_web-components/catalog-list/catalog-list.component.js +106 -61
  45. package/esm2015/lib/_web-components/catalog-recipe-card/catalog-recipe-card.component.js +65 -52
  46. package/esm2015/lib/_web-components/drawer/drawer.component.js +1 -1
  47. package/esm2015/lib/_web-components/favorite-page/favorite-page.component.js +8 -6
  48. package/esm2015/lib/_web-components/index.js +5 -6
  49. package/esm2015/lib/_web-components/list-scan/basket-preview/basket-preview.component.js +145 -0
  50. package/esm2015/lib/_web-components/list-scan/index.js +3 -0
  51. package/esm2015/lib/_web-components/list-scan/ingredients-list/ingredients-list.component.js +150 -0
  52. package/esm2015/lib/_web-components/list-scan/list-scan.component.js +87 -0
  53. package/esm2015/lib/_web-components/list-scan/list-scan.module.js +60 -0
  54. package/esm2015/lib/_web-components/list-scan/overlay-button/overlay-button.component.js +104 -0
  55. package/esm2015/lib/_web-components/loader/index.js +3 -0
  56. package/esm2015/lib/_web-components/loader/loader.module.js +39 -0
  57. package/esm2015/lib/_web-components/personal-recipes/personal-recipes.component.js +7 -5
  58. package/esm2015/lib/_web-components/recipe-card/recipe-card.component.js +73 -58
  59. package/esm2015/lib/_web-components/recipe-catalog/recipe-catalog.component.js +152 -92
  60. package/esm2015/lib/_web-components/recipe-details/recipe-details.component.js +307 -270
  61. package/esm2015/lib/_web-components/recipe-modal/recipe-modal.component.js +1 -1
  62. package/esm2015/lib/_web-components/recipe-stepper/recipe-stepper.component.js +1 -1
  63. package/esm2015/lib/_web-components/recipes-history/recipes-history.component.js +1 -1
  64. package/esm2015/lib/_web-components/suggestion-card/suggestion-card.component.js +3 -6
  65. package/esm2015/lib/_web-components/web-components.module.js +35 -65
  66. package/esm2015/lib/environments/environment.js +6 -0
  67. package/esm2015/lib/ng-miam.module.js +4 -4
  68. package/fesm2015/ng-miam.js +6540 -5287
  69. package/fesm2015/ng-miam.js.map +1 -1
  70. package/lib/_components/abstracts/abstract-recipe-card.component.d.ts +1 -1
  71. package/lib/_components/recipe-filters/recipe-filters.component.d.ts +14 -4
  72. package/lib/_components/recipe-type-chooser/recipe-type-chooser.component.d.ts +2 -2
  73. package/lib/_components/text-input/text-input.component.d.ts +2 -1
  74. package/lib/_models/article.d.ts +23 -0
  75. package/lib/_models/basket.d.ts +1 -2
  76. package/lib/_models/groceries-entry.d.ts +8 -1
  77. package/lib/_models/groceries-list.d.ts +4 -3
  78. package/lib/_models/index.d.ts +3 -0
  79. package/lib/_models/package.d.ts +10 -3
  80. package/lib/_models/recipe.d.ts +1 -0
  81. package/lib/_models/user.d.ts +16 -1
  82. package/lib/_services/articles.service.d.ts +10 -0
  83. package/lib/_services/context.service.d.ts +12 -6
  84. package/lib/_services/groceries-lists.service.d.ts +4 -1
  85. package/lib/_services/index.d.ts +2 -0
  86. package/lib/_services/package.service.d.ts +6 -1
  87. package/lib/_services/toastr.service.d.ts +10 -0
  88. package/lib/_services/user.service.d.ts +12 -6
  89. package/lib/_types/icon.enum.d.ts +21 -17
  90. package/lib/_web-components/{basket-preview-block → basket-preview/basket-preview-block}/basket-preview-block.component.d.ts +6 -6
  91. package/lib/_web-components/{basket-preview-disabled → basket-preview/basket-preview-disabled}/basket-preview-disabled.component.d.ts +2 -2
  92. package/lib/_web-components/{basket-preview-line → basket-preview/basket-preview-line}/basket-preview-line.component.d.ts +7 -7
  93. package/lib/_web-components/basket-preview/basket-preview.module.d.ts +16 -0
  94. package/lib/_web-components/basket-preview/index.d.ts +5 -0
  95. package/lib/_web-components/{replace-item → basket-preview/replace-item}/replace-item.component.d.ts +5 -5
  96. package/lib/_web-components/catalog-article-card/catalog-article-card.component.d.ts +8 -0
  97. package/lib/_web-components/catalog-category/catalog-category.component.d.ts +12 -7
  98. package/lib/_web-components/catalog-header/catalog-header.component.d.ts +5 -2
  99. package/lib/_web-components/catalog-list/catalog-list.component.d.ts +13 -6
  100. package/lib/_web-components/catalog-recipe-card/catalog-recipe-card.component.d.ts +1 -0
  101. package/lib/_web-components/favorite-page/favorite-page.component.d.ts +0 -1
  102. package/lib/_web-components/index.d.ts +4 -5
  103. package/lib/_web-components/list-scan/basket-preview/basket-preview.component.d.ts +25 -0
  104. package/lib/_web-components/list-scan/index.d.ts +2 -0
  105. package/lib/_web-components/list-scan/ingredients-list/ingredients-list.component.d.ts +22 -0
  106. package/lib/_web-components/list-scan/list-scan.component.d.ts +17 -0
  107. package/lib/_web-components/list-scan/list-scan.module.d.ts +16 -0
  108. package/lib/_web-components/list-scan/overlay-button/overlay-button.component.d.ts +19 -0
  109. package/lib/_web-components/loader/index.d.ts +2 -0
  110. package/lib/_web-components/loader/loader.module.d.ts +10 -0
  111. package/lib/_web-components/personal-recipes/personal-recipes.component.d.ts +0 -1
  112. package/lib/_web-components/recipe-card/recipe-card.component.d.ts +1 -0
  113. package/lib/_web-components/recipe-catalog/recipe-catalog.component.d.ts +13 -4
  114. package/lib/_web-components/recipe-details/recipe-details.component.d.ts +8 -3
  115. package/lib/_web-components/suggestion-card/suggestion-card.component.d.ts +0 -1
  116. package/lib/_web-components/web-components.module.d.ts +38 -65
  117. package/lib/{environment.d.ts → environments/environment.d.ts} +1 -1
  118. package/miam-style.css +1 -1
  119. package/package.json +1 -1
  120. package/esm2015/lib/environment.js +0 -8
@@ -0,0 +1,71 @@
1
+ import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';
2
+ import { Article } from '../../_models';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "../../_utils/pipes/ellipsis/ellipsis.pipe";
6
+ function CatalogArticleCardComponent_img_4_Template(rf, ctx) { if (rf & 1) {
7
+ i0.ɵɵelement(0, "img", 11);
8
+ } if (rf & 2) {
9
+ const ctx_r0 = i0.ɵɵnextContext();
10
+ i0.ɵɵproperty("src", ctx_r0.article.logo, i0.ɵɵsanitizeUrl);
11
+ } }
12
+ export class CatalogArticleCardComponent {
13
+ showArticle() {
14
+ window.open(this.article.url, '_blank');
15
+ }
16
+ }
17
+ CatalogArticleCardComponent.ɵfac = function CatalogArticleCardComponent_Factory(t) { return new (t || CatalogArticleCardComponent)(); };
18
+ CatalogArticleCardComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CatalogArticleCardComponent, selectors: [["ng-miam-catalog-article-card"]], inputs: { article: "article" }, decls: 17, vars: 10, consts: [[1, "miam-catalog-article-card", 3, "click"], [1, "miam-catalog-card__picture"], [1, "miam-catalog-card__picture__gradient"], ["loading", "lazy", 1, "miam-catalog-card__picture__img", 3, "src"], ["class", "miam-catalog-card__picture__sponsor", 3, "src", 4, "ngIf"], [1, "miam-catalog-card__attributes"], [1, "miam-catalog-article-card__attributes__title"], [1, "miam-catalog-card__attributes__infos"], [1, "miam-catalog-card__attributes__info"], [1, "miam-catalog-card__info__label"], ["target", "_blank", 3, "href"], [1, "miam-catalog-card__picture__sponsor", 3, "src"]], template: function CatalogArticleCardComponent_Template(rf, ctx) { if (rf & 1) {
19
+ i0.ɵɵelementStart(0, "div", 0);
20
+ i0.ɵɵlistener("click", function CatalogArticleCardComponent_Template_div_click_0_listener() { return ctx.showArticle(); });
21
+ i0.ɵɵelementStart(1, "div", 1);
22
+ i0.ɵɵelementStart(2, "div", 2);
23
+ i0.ɵɵelement(3, "img", 3);
24
+ i0.ɵɵtemplate(4, CatalogArticleCardComponent_img_4_Template, 1, 1, "img", 4);
25
+ i0.ɵɵelementEnd();
26
+ i0.ɵɵelementEnd();
27
+ i0.ɵɵelementStart(5, "div", 5);
28
+ i0.ɵɵelementStart(6, "h4", 6);
29
+ i0.ɵɵtext(7);
30
+ i0.ɵɵpipe(8, "ellipsis");
31
+ i0.ɵɵelementEnd();
32
+ i0.ɵɵelementStart(9, "div", 7);
33
+ i0.ɵɵelementStart(10, "div", 8);
34
+ i0.ɵɵelementStart(11, "span", 9);
35
+ i0.ɵɵtext(12);
36
+ i0.ɵɵpipe(13, "date");
37
+ i0.ɵɵelementEnd();
38
+ i0.ɵɵelementEnd();
39
+ i0.ɵɵelementStart(14, "div", 8);
40
+ i0.ɵɵelementStart(15, "a", 10);
41
+ i0.ɵɵtext(16, "Voir l'article");
42
+ i0.ɵɵelementEnd();
43
+ i0.ɵɵelementEnd();
44
+ i0.ɵɵelementEnd();
45
+ i0.ɵɵelementEnd();
46
+ i0.ɵɵelementEnd();
47
+ } if (rf & 2) {
48
+ i0.ɵɵadvance(3);
49
+ i0.ɵɵproperty("src", ctx.article.image, i0.ɵɵsanitizeUrl);
50
+ i0.ɵɵadvance(1);
51
+ i0.ɵɵproperty("ngIf", ctx.article.logo);
52
+ i0.ɵɵadvance(3);
53
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(8, 5, ctx.article.title || "", 12));
54
+ i0.ɵɵadvance(5);
55
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(13, 8, ctx.article.date || ""));
56
+ i0.ɵɵadvance(3);
57
+ i0.ɵɵproperty("href", ctx.article.url, i0.ɵɵsanitizeUrl);
58
+ } }, directives: [i1.NgIf], pipes: [i2.EllipsisPipe, i1.DatePipe], styles: [".cal-month-view .cal-header{font-weight:bolder;text-align:center}.cal-month-view .cal-header .cal-cell{display:block;overflow:hidden;padding:5px 0;text-overflow:ellipsis;white-space:nowrap}.cal-month-view .cal-days{border:1px solid;border-bottom:0}.cal-month-view .cal-cell-top{flex:1;min-height:78px}.cal-month-view .cal-cell-row{display:flex}.cal-month-view .cal-cell{align-items:stretch;display:flex;flex:1;flex-direction:column;float:left}.cal-month-view .cal-cell .cal-event{pointer-events:all!important}.cal-month-view .cal-day-cell{min-height:100px}@media (-ms-high-contrast:none){.cal-month-view .cal-day-cell{display:block}}.cal-month-view .cal-day-cell:not(:last-child){border-right:1px solid}.cal-month-view .cal-days .cal-cell-row{border-bottom:1px solid}.cal-month-view .cal-day-badge{border-radius:10px;display:inline-block;font-size:12px;font-weight:700;line-height:1;margin-left:10px;margin-top:18px;min-width:10px;padding:3px 7px;text-align:center;vertical-align:middle;white-space:nowrap}.cal-month-view .cal-day-number{float:right;font-size:1.2em;font-weight:400;margin-bottom:10px;margin-right:15px;margin-top:15px;opacity:.5}.cal-month-view .cal-events{align-items:flex-end;display:flex;flex:1;flex-wrap:wrap;line-height:10px;margin:3px}.cal-month-view .cal-event{border-radius:50%;display:inline-block;height:10px;margin:2px;width:10px}.cal-month-view .cal-day-cell.cal-in-month.cal-has-events{cursor:pointer}.cal-month-view .cal-day-cell.cal-out-month .cal-day-number{cursor:default;opacity:.1}.cal-month-view .cal-day-cell.cal-today .cal-day-number{font-size:1.9em}.cal-month-view .cal-open-day-events{padding:15px}.cal-month-view .cal-open-day-events .cal-event{position:relative;top:2px}.cal-month-view .cal-out-month .cal-day-badge,.cal-month-view .cal-out-month .cal-event{opacity:.3}.cal-month-view .cal-draggable{cursor:move}.cal-month-view .cal-drag-active *{pointer-events:none}.cal-month-view .cal-event-title{cursor:pointer}.cal-month-view .cal-event-title:hover{text-decoration:underline}.cal-month-view{background-color:#fff}.cal-month-view .cal-cell-row:hover{background-color:#fafafa}.cal-month-view .cal-cell-row .cal-cell:hover,.cal-month-view .cal-cell.cal-has-events.cal-open{background-color:#ededed}.cal-month-view .cal-days{border-color:#e1e1e1}.cal-month-view .cal-day-cell:not(:last-child){border-right-color:#e1e1e1}.cal-month-view .cal-days .cal-cell-row{border-bottom-color:#e1e1e1}.cal-month-view .cal-day-badge{background-color:#b94a48;color:#fff}.cal-month-view .cal-event{background-color:#1e90ff;border-color:#d1e8ff;color:#fff}.cal-month-view .cal-day-cell.cal-weekend .cal-day-number{color:#8b0000}.cal-month-view .cal-day-cell.cal-today{background-color:#e8fde7}.cal-month-view .cal-day-cell.cal-drag-over{background-color:#e0e0e0!important}.cal-month-view .cal-open-day-events{background-color:#555;box-shadow:inset 0 0 15px 0 rgba(0,0,0,.5);color:#fff}.cal-week-view *{box-sizing:border-box}.cal-week-view .cal-day-headers{border:1px solid;display:flex;padding-left:70px}.cal-week-view .cal-day-headers .cal-header{flex:1;padding:5px;text-align:center}.cal-week-view .cal-day-headers .cal-header:not(:last-child){border-right:1px solid}.cal-week-view .cal-day-headers .cal-header:first-child{border-left:1px solid}.cal-week-view .cal-day-headers span{font-weight:400;opacity:.5}.cal-week-view .cal-day-column{border-left:1px solid;flex-grow:1}.cal-week-view .cal-event{border:1px solid;font-size:12px}.cal-week-view .cal-time-label-column{height:100%;width:70px}.cal-week-view .cal-current-time-marker{height:2px;position:absolute;width:100%;z-index:2}.cal-week-view .cal-all-day-events{border-bottom:3px solid;border-left:1px solid;border-right:1px solid;border-top:0;padding-top:3px;position:relative}.cal-week-view .cal-all-day-events .cal-day-columns{display:flex;height:100%;position:absolute;top:0;width:100%;z-index:0}.cal-week-view .cal-all-day-events .cal-events-row{height:31px;margin-left:70px;position:relative}.cal-week-view .cal-all-day-events .cal-event-container{display:inline-block;position:absolute}.cal-week-view .cal-all-day-events .cal-event-container.resize-active{pointer-events:none;z-index:1}.cal-week-view .cal-all-day-events .cal-event{height:28px;line-height:28px;margin-left:2px;margin-right:2px;padding:0 5px}.cal-week-view .cal-all-day-events .cal-starts-within-week .cal-event{border-bottom-left-radius:5px;border-top-left-radius:5px}.cal-week-view .cal-all-day-events .cal-ends-within-week .cal-event{border-bottom-right-radius:5px;border-top-right-radius:5px}.cal-week-view .cal-all-day-events .cal-time-label-column{align-items:center;display:flex;font-size:14px;justify-content:center}.cal-week-view .cal-all-day-events .cal-resize-handle{cursor:col-resize;height:100%;position:absolute;top:0;width:6px}.cal-week-view .cal-all-day-events .cal-resize-handle.cal-resize-handle-after-end{right:0}.cal-week-view .cal-event,.cal-week-view .cal-header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-week-view .cal-drag-active{pointer-events:none;z-index:1}.cal-week-view .cal-drag-active *{pointer-events:none}.cal-week-view .cal-time-events{border:1px solid;border-top:0;display:flex;position:relative}.cal-week-view .cal-time-events .cal-day-columns{display:flex;flex-grow:1}.cal-week-view .cal-time-events .cal-day-column,.cal-week-view .cal-time-events .cal-events-container{position:relative}.cal-week-view .cal-time-events .cal-event-container{position:absolute;z-index:1}.cal-week-view .cal-time-events .cal-event{height:calc(100% - 2px);line-height:25px;margin:1px;padding:0 5px;width:calc(100% - 2px)}.cal-week-view .cal-time-events .cal-resize-handle{cursor:row-resize;height:4px;position:absolute;width:100%}.cal-week-view .cal-time-events .cal-resize-handle.cal-resize-handle-after-end{bottom:0}.cal-week-view .cal-hour-segment{position:relative}.cal-week-view .cal-hour-segment:after{content:\"\\00a0\"}.cal-week-view .cal-event-container:not(.cal-draggable){cursor:pointer}.cal-week-view .cal-draggable{cursor:move}.cal-week-view .cal-hour-segment,.cal-week-view mwl-calendar-week-view-hour-segment{display:block}.cal-week-view .cal-hour:last-child :not(:last-child) .cal-hour-segment,.cal-week-view .cal-hour:not(:last-child) .cal-hour-segment{border-bottom:thin dashed}.cal-week-view .cal-time{font-weight:700;padding-top:5px;text-align:center;width:70px}.cal-week-view .cal-hour-segment.cal-after-hour-start .cal-time{display:none}.cal-week-view .cal-starts-within-day .cal-event{border-top-left-radius:5px;border-top-right-radius:5px}.cal-week-view .cal-ends-within-day .cal-event{border-bottom-left-radius:5px;border-bottom-right-radius:5px}.cal-week-view{background-color:#fff;border-top:1px solid #e1e1e1}.cal-week-view .cal-day-headers{border-color:#e1e1e1;border-top:0}.cal-week-view .cal-day-headers .cal-header:not(:last-child){border-right-color:#e1e1e1}.cal-week-view .cal-day-headers .cal-header:first-child{border-left-color:#e1e1e1}.cal-week-view .cal-day-headers .cal-drag-over,.cal-week-view .cal-day-headers .cal-header:hover{background-color:#ededed}.cal-week-view .cal-day-column{border-left-color:#e1e1e1}.cal-week-view .cal-event{background-color:#d1e8ff;border-color:#1e90ff;color:#1e90ff}.cal-week-view .cal-all-day-events{border-color:#e1e1e1}.cal-week-view .cal-header.cal-today{background-color:#e8fde7}.cal-week-view .cal-header.cal-weekend span{color:#8b0000}.cal-week-view .cal-time-events{border-color:#e1e1e1}.cal-week-view .cal-time-events .cal-day-columns:not(.cal-resize-active) .cal-hour-segment:hover{background-color:#ededed}.cal-week-view .cal-hour-odd{background-color:#fafafa}.cal-week-view .cal-drag-over .cal-hour-segment{background-color:#ededed}.cal-week-view .cal-hour:last-child :not(:last-child) .cal-hour-segment,.cal-week-view .cal-hour:not(:last-child) .cal-hour-segment{border-bottom-color:#e1e1e1}.cal-week-view .cal-current-time-marker{background-color:#ea4334}.cal-day-view mwl-calendar-week-view-header{display:none}.cal-day-view .cal-events-container{margin-left:70px}.cal-day-view .cal-day-column{border-left:0}.cal-day-view .cal-current-time-marker{margin-left:70px;width:calc(100% - 70px)}.cal-tooltip{display:block;font-size:11px;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;line-height:1.5;opacity:.9;position:absolute;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:break-word;z-index:1070}.cal-tooltip.cal-tooltip-top{margin-top:-3px;padding:5px 0}.cal-tooltip.cal-tooltip-top .cal-tooltip-arrow{border-width:5px 5px 0;bottom:0;left:50%;margin-left:-5px}.cal-tooltip.cal-tooltip-right{margin-left:3px;padding:0 5px}.cal-tooltip.cal-tooltip-right .cal-tooltip-arrow{border-width:5px 5px 5px 0;left:0;margin-top:-5px;top:50%}.cal-tooltip.cal-tooltip-bottom{margin-top:3px;padding:5px 0}.cal-tooltip.cal-tooltip-bottom .cal-tooltip-arrow{border-width:0 5px 5px;left:50%;margin-left:-5px;top:0}.cal-tooltip.cal-tooltip-left{margin-left:-3px;padding:0 5px}.cal-tooltip.cal-tooltip-left .cal-tooltip-arrow{border-width:5px 0 5px 5px;margin-top:-5px;right:0;top:50%}.cal-tooltip-inner{border-radius:.25rem;max-width:200px;padding:3px 8px;text-align:center}.cal-tooltip-arrow{border-color:transparent;border-style:solid;height:0;position:absolute;width:0}.cal-tooltip.cal-tooltip-top .cal-tooltip-arrow{border-top-color:#000}.cal-tooltip.cal-tooltip-right .cal-tooltip-arrow{border-right-color:#000}.cal-tooltip.cal-tooltip-bottom .cal-tooltip-arrow{border-bottom-color:#000}.cal-tooltip.cal-tooltip-left .cal-tooltip-arrow{border-left-color:#000}.cal-tooltip-inner{background-color:#000;color:#fff}.m-button,.m-button-fab,.m-button-fab-grey,.m-button-fab-primary,.m-button-fab-secondary,.m-button-grey,.m-button-link,.m-button-primary,.m-button-secondary{-moz-user-select:none;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;align-items:center;border-radius:var(--m-border-radius);cursor:pointer;display:flex;justify-content:center;min-width:152px;outline:0;padding:16px 32px;transition:.3s ease-in-out;user-select:none}.m-button-fab-grey ng-miam-icon,.m-button-fab-primary ng-miam-icon,.m-button-fab-secondary ng-miam-icon,.m-button-fab ng-miam-icon,.m-button-grey ng-miam-icon,.m-button-link ng-miam-icon,.m-button-primary ng-miam-icon,.m-button-secondary ng-miam-icon,.m-button ng-miam-icon{margin-left:20px;padding:0}.m-button-fab-grey:disabled,.m-button-fab-primary:disabled,.m-button-fab-secondary:disabled,.m-button-fab:disabled,.m-button-grey:disabled,.m-button-link:disabled,.m-button-primary:disabled,.m-button-secondary:disabled,.m-button:disabled{background-color:var(--m-color-grey06);color:var(--m-color-grey03);min-height:42px}.m-button-fab-grey:disabled ng-miam-icon svg,.m-button-fab-primary:disabled ng-miam-icon svg,.m-button-fab-secondary:disabled ng-miam-icon svg,.m-button-fab:disabled ng-miam-icon svg,.m-button-grey:disabled ng-miam-icon svg,.m-button-link:disabled ng-miam-icon svg,.m-button-primary:disabled ng-miam-icon svg,.m-button-secondary:disabled ng-miam-icon svg,.m-button:disabled ng-miam-icon svg{fill:var(--m-color-grey03)}@media (min-width:1022px){.m-button-fab-grey:disabled:hover,.m-button-fab-primary:disabled:hover,.m-button-fab-secondary:disabled:hover,.m-button-fab:disabled:hover,.m-button-grey:disabled:hover,.m-button-link:disabled:hover,.m-button-primary:disabled:hover,.m-button-secondary:disabled:hover,.m-button:disabled:hover{background-color:var(--m-color-grey06);color:var(--m-color-grey03);cursor:default}}.m-button-fab-grey:focus,.m-button-fab-primary:focus,.m-button-fab-secondary:focus,.m-button-fab:focus,.m-button-grey:focus,.m-button-link:focus,.m-button-primary:focus,.m-button-secondary:focus,.m-button:focus{box-shadow:0 0 0 4px #c1f0ec}.m-button-primary{background-color:var(--m-color-primary);border:1px solid transparent;color:var(--m-color-unpure-white)}.m-button-primary ng-miam-icon svg path{fill:var(--m-color-unpure-white)}@media (min-width:1022px){.m-button-primary:hover{background-color:var(--m-color-primary-dark)}}.m-button-secondary{background-color:var(--m-color-unpure-white);border:1px solid var(--m-color-primary);color:var(--m-color-primary)}.m-button-secondary ng-miam-icon svg path{fill:var(--m-color-primary)}@media (min-width:1022px){.m-button-secondary:hover{background-color:var(--m-color-primary-light)}}.m-button-link{background-color:var(--m-color-primary);border:1px solid transparent;color:var(--m-color-unpure-white)}.m-button-link ng-miam-icon svg path{fill:var(--m-color-unpure-white)}@media (min-width:1022px){.m-button-link:hover{background-color:var(--m-color-secondary-dark)}}.m-button-fab-grey,.m-button-grey{background-color:var(--m-color-unpure-white);border:1px solid var(--m-color-grey03);color:var(--m-color-grey03)}.m-button-fab-grey ng-miam-icon svg path,.m-button-grey ng-miam-icon svg path{fill:var(--m-color-grey03)}@media (min-width:1022px){.m-button-fab-grey:hover,.m-button-grey:hover{background-color:var(--m-color-hairlines)}}.m-button-fab,.m-button-fab-grey,.m-button-fab-primary,.m-button-fab-secondary{border-radius:var(--m-border-radius-circle);min-width:unset;outline:0;padding:8px}.m-button-fab-grey ng-miam-icon,.m-button-fab-primary ng-miam-icon,.m-button-fab-secondary ng-miam-icon,.m-button-fab ng-miam-icon{margin-left:0}.m-button-fab-grey:disabled,.m-button-fab-primary:disabled,.m-button-fab-secondary:disabled,.m-button-fab:disabled{fill:var(--m-color-grey-text-dark)}@media (min-width:1022px){.m-button-fab-grey:disabled:hover,.m-button-fab-primary:disabled:hover,.m-button-fab-secondary:disabled:hover,.m-button-fab:disabled:hover{fill:var(--m-color-grey-text-dark)}}.m-button-fab-primary{background-color:var(--m-color-primary);border:1px solid transparent;fill:var(--m-color-primary-text)}@media (min-width:1022px){.m-button-fab-primary:hover{background-color:var(--m-color-primary-text);border:1px solid var(--m-color-primary-text)}.m-button-fab-primary:hover path{fill:var(--m-color-primary)}}.m-button-fab-secondary{background-color:var(--m-color-secondary-text);border:1px solid var(--m-color-secondary);fill:var(--m-color-secondary)}@media (min-width:1022px){.m-button-fab-secondary:hover{background-color:var(--m-color-secondary);fill:var(--m-color-secondary-text)}}.m-button-fab-grey{background-color:#fff;border:none}.m-input{align-items:center;border:1px solid var(--m-color-grey06);border-radius:5px;display:flex;justify-content:space-between;margin-top:16px;max-width:320px;min-width:200px;outline:none;padding:8px 16px}.m-input:focus-within{border:1px solid var(--m-color-primary)}@media (max-width:1023px){.m-input{padding:8px}}.m-title-text-input .miam-text-input{max-width:565px}.miam-catalog-article-card .miam-catalog-card__attributes,.miam-flex-column{display:flex;flex-direction:column;justify-content:space-around}.miam-flex-row{align-items:center;display:flex;flex-direction:row;justify-content:space-between;margin:auto}.m-default-card{background-color:var(--m-color-unpure-white);border-radius:8px;box-shadow:var(--m-shadow-small);padding:16px}@media (max-width:1023px){.m-default-card{margin-bottom:8px;padding:8px}}#toast-container>div{opacity:.95!important}#toast-container>div:hover{opacity:1!important}@-webkit-keyframes jiggle{0%{transform:none}25%{transform:rotate(5deg)}75%{transform:rotate(-5deg)}to{transform:none}}@keyframes jiggle{0%{transform:none}25%{transform:rotate(5deg)}75%{transform:rotate(-5deg)}to{transform:none}}:root{--m-border-radius:var(--miam-border-radius,8px);--m-border-radius-circle:50%;--m-border-radius-pill:25px;--m-color-black:var(--miam-color-black,#0e0e2c);--m-color-card-shadow:var(--miam-color-card-shadow,#eaf2fb);--m-color-danger:var(--miam-color-danger,#f97d7d);--m-color-danger-text:var(--miam-color-danger-text,#700505);--m-color-grey:var(--miam-color-grey,#f5f5f5);--m-color-grey-text:var(--miam-color-grey-text,#acb0b9);--m-color-grey-text-dark:var(--miam-color-grey-text-dark,#757575);--m-color-grey01:var(--miam-color-grey01,#505062);--m-color-grey02:var(--miam-color-grey02,#67677e);--m-color-grey03:var(--miam-color-grey03,#818198);--m-color-grey04:var(--miam-color-grey04,#9d9daf);--m-color-grey05:var(--miam-color-grey05,#b9b9c6);--m-color-grey06:var(--miam-color-grey06,#d5d5dd);--m-color-grey07:var(--miam-color-grey07,#e3e3e8);--m-color-hairlines:var(--miam-color-hairlines,#ecf1f4);--m-color-info:var(--miam-color-info,#8cd4eb);--m-color-info-text:var(--miam-color-info-text,#125368);--m-color-light-slate:var(--miam-color-light-slate,#8c8ca1);--m-color-onyx:var(--miam-color-onyx,#0e0e2c);--m-color-primary:var(--miam-color-primary,#2bb6aa);--m-color-primary-dark:var(--miam-color-primary-dark,#419f97);--m-color-primary-light:var(--miam-color-primary-light,#eafaf9);--m-color-primary-text:var(--miam-color-primary-text,#fff);--m-color-secondary:var(--miam-color-secondary,#ef760f);--m-color-secondary-dark:var(--miam-color-secondary-dark,#ef7711);--m-color-secondary-light:var(--miam-color-secondary-light,#faebd7);--m-color-secondary-text:var(--miam-color-secondary-text,#fff);--m-color-slate:var(--miam-color-slate,#4a4a68);--m-color-success:var(--miam-color-success,#44d6b3);--m-color-success-text:var(--miam-color-success-text,#135344);--m-color-ternary:var(--miam-color-ternary,#1accf8);--m-color-ternary-dark:var(--miam-color-ternary-dark,#057894);--m-color-ternary-light:var(--miam-color-ternary-light,#cef4fd);--m-color-ternary-text:var(--miam-color-ternary-text,#fff);--m-color-unpure-white:var(--miam-color-unpure-white,#fefefe);--m-color-warning:var(--miam-color-warning,#ffdaa3);--m-color-warning-text:var(--miam-color-warning-text,#f90);--m-color-white:var(--miam-color-white,#fafcfe);--m-default-transition:var(--miam-default-transition,all 0.3s ease-in-out);--m-font-size-Xlarge:var(--miam-font-size-Xlarge,24px);--m-font-size-large:var(--miam-font-size-large,20px);--m-font-size-medium:var(--miam-font-size-medium,16px);--m-font-size-small:var(--miam-font-size-small,14px);--m-shadow-small:var(--miam-shadow-small,0px 3px 4px var(--m-color-card-shadow));--m-z-index-drawer-container:var(--miam-z-index-drawer-container,5000002);--m-z-index-drawer-overlay:var(--miam-z-index-drawer-overlay,5000001);--m-z-index-loader:var(--miam-z-index-loader,2);--m-z-index-modal:var(--miam-z-index-modal,6001);--m-z-index-modal-overlay:var(--miam-z-index-modal-overlay,6000);--m-z-index-position-absolute-high:var(--miam-z-index-position-absolute-high,1);--m-z-index-position-absolute-low:var(--miam-z-index-position-absolute-low,0)}.m-title-text-input:focus-within :root .miam-text-input__label,.m-title-text-input :root input,.m-title-text-input :root label:not(.miam-text-input__label__top),:root .m-body-typo,:root .m-h1-typo,:root .m-input,:root .m-input>*,:root .m-small-typo,:root .m-title-text-input:focus-within .miam-text-input__label,:root .m-title-text-input input,:root .m-title-text-input label:not(.miam-text-input__label__top){color:var(--m-color-slate);font-family:Work Sans;font-size:var(--m-font-size-medium);font-style:normal;font-weight:500;line-height:24px}.m-title-text-input :root input,.m-title-text-input :root label:not(.miam-text-input__label__top),:root .m-h1-typo,:root .m-title-text-input input,:root .m-title-text-input label:not(.miam-text-input__label__top){font-size:40px;font-weight:700;line-height:48px}:root .m-button,:root .m-button-fab,:root .m-button-fab-grey,:root .m-button-fab-primary,:root .m-button-fab-secondary,:root .m-button-grey,:root .m-button-link,:root .m-button-primary,:root .m-button-secondary,:root .m-button-typo{font-family:Work Sans;font-size:var(--m-font-size-medium);font-size:14px;font-style:normal;font-weight:700;letter-spacing:.5px;line-height:16px}:root .m-small-typo{font-size:var(--m-font-size-small);line-height:16px}@media print{:root .miam-not-printable{display:none}:root:last-child{page-break-after:auto}}:root .miam-print-only{display:none}@media print{:root .miam-print-only{display:block}}.miam-catalog-article-card{background-color:#fff;border-radius:var(--m-border-radius);box-shadow:var(--m-shadow-small);cursor:pointer;display:flex;flex-direction:column;height:304px;position:relative;width:330px}.miam-catalog-article-card .miam-catalog-card__picture{-webkit-tap-highlight-color:transparent;cursor:pointer;height:169px;position:relative}.miam-catalog-article-card .miam-catalog-card__picture .miam-catalog-card__picture__gradient{height:169px}.miam-catalog-article-card .miam-catalog-card__picture .miam-catalog-card__picture__gradient .miam-catalog-card__picture__img{-o-object-fit:cover;border-top-left-radius:var(--m-border-radius);border-top-right-radius:var(--m-border-radius);height:169px;object-fit:cover;position:absolute;transition:var(--m-default-transition);width:100%;z-index:var(--m-z-index-position-absolute-low)}.miam-catalog-article-card .miam-catalog-card__picture .miam-catalog-card__picture__gradient .miam-catalog-card__picture__sponsor{-o-object-fit:contain;height:auto;left:16px;max-height:48px;max-width:64px;object-fit:contain;position:absolute;top:16px;transform:none;width:auto;z-index:var(--m-z-index-position-absolute-low)}.miam-catalog-article-card .miam-catalog-card__picture .miam-catalog-card__picture__gradient:after{background:linear-gradient(180deg,rgba(0,0,0,.1) 50.52%,rgba(32,32,32,.85) 88.54%);border-top-left-radius:var(--m-border-radius);border-top-right-radius:var(--m-border-radius);content:\"\";height:100%;position:absolute;width:100%}.miam-catalog-article-card .miam-catalog-card__attributes{flex:1 1;justify-content:space-between;padding:24px 16px}.miam-catalog-article-card .miam-catalog-card__attributes .miam-catalog-card__attributes__infos{display:flex;flex-direction:row;justify-content:center}.miam-catalog-article-card .miam-catalog-card__attributes .miam-catalog-card__attributes__infos .miam-catalog-card__attributes__info{display:flex;flex-direction:row}.miam-catalog-article-card .miam-catalog-card__attributes .miam-catalog-card__attributes__infos .miam-catalog-card__attributes__info .miam-catalog-card__info__label{color:var(--m-color-grey-text);font-size:15px;margin-left:8px}.miam-catalog-article-card .miam-catalog-card__attributes .miam-catalog-card__attributes__infos .miam-catalog-card__attributes__info .miam-catalog-card__info__label:first-letter{text-transform:capitalize}@media (max-width:1022px){.miam-catalog-article-card{border-radius:24px;width:272px}.miam-catalog-article-card .miam-catalog-card__picture .miam-catalog-card__picture__gradient .miam-catalog-card__picture__img,.miam-catalog-article-card .miam-catalog-card__picture .miam-catalog-card__picture__gradient:after{border-radius:24px 24px 0 0}.miam-catalog-article-card .miam-catalog-card__attributes{padding:16px}.miam-catalog-article-card .miam-catalog-card__attributes .miam-catalog-recipe-card__attributes__infos{bottom:16px;position:absolute}}.miam-catalog-article-card:hover .miam-catalog-card__picture .miam-catalog-card__picture__gradient .miam-catalog-card__picture__img{transform:scale(1.1)}.miam-catalog-article-card:hover .miam-catalog-card__attributes .miam-catalog-card__attributes__info a,.miam-catalog-article-card:hover .miam-catalog-card__attributes h4.miam-catalog-article-card__attributes__title{color:var(--m-color-primary)}.miam-catalog-article-card .miam-catalog-card__picture .miam-catalog-card__picture__gradient{overflow:hidden}.miam-catalog-article-card .miam-catalog-card__picture .miam-catalog-card__picture__gradient:after{display:none}.miam-catalog-article-card .miam-catalog-card__picture .miam-catalog-card__picture__gradient .miam-catalog-card__picture__img{position:relative;transition:all .3s ease}.miam-catalog-article-card .miam-catalog-card__attributes{align-items:center}.miam-catalog-article-card .miam-catalog-card__attributes h4.miam-catalog-article-card__attributes__title{font-weight:700;line-height:1.3;margin:0;max-height:50px;overflow:hidden;text-align:center;transition:all .3s ease}.miam-catalog-article-card .miam-catalog-card__attributes .miam-catalog-card__attributes__infos{justify-content:space-between;width:100%}.miam-catalog-article-card .miam-catalog-card__attributes .miam-catalog-card__attributes__infos .miam-catalog-card__attributes__info a{transition:all .3s ease}"], encapsulation: 2, changeDetection: 0 });
59
+ /*@__PURE__*/ (function () { i0.ɵsetClassMetadata(CatalogArticleCardComponent, [{
60
+ type: Component,
61
+ args: [{
62
+ selector: 'ng-miam-catalog-article-card',
63
+ templateUrl: './catalog-article-card.component.html',
64
+ styleUrls: ['./catalog-article-card.component.scss'],
65
+ encapsulation: ViewEncapsulation.None,
66
+ changeDetection: ChangeDetectionStrategy.OnPush
67
+ }]
68
+ }], null, { article: [{
69
+ type: Input
70
+ }] }); })();
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1hcnRpY2xlLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvY2F0YWxvZy1hcnRpY2xlLWNhcmQvY2F0YWxvZy1hcnRpY2xlLWNhcmQuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9jYXRhbG9nLWFydGljbGUtY2FyZC9jYXRhbG9nLWFydGljbGUtY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztJQ0dsQywwQkFDRjs7O0lBRHdFLDJEQUFvQjs7QURNaEcsTUFBTSxPQUFPLDJCQUEyQjtJQUd0QyxXQUFXO1FBQ1QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDOztzR0FMVSwyQkFBMkI7Z0VBQTNCLDJCQUEyQjtRQ1Z4Qyw4QkFDRTtRQURxQyxxR0FBUyxpQkFBYSxJQUFDO1FBQzVELDhCQUNFO1FBQUEsOEJBQ0U7UUFBQSx5QkFDQTtRQUFBLDRFQUNGO1FBQUEsaUJBQU07UUFDUixpQkFBTTtRQUNOLDhCQUNFO1FBQUEsNkJBQTBEO1FBQUEsWUFBMkM7O1FBQUEsaUJBQUs7UUFDMUcsOEJBQ0U7UUFBQSwrQkFDRTtRQUFBLGdDQUE2QztRQUFBLGFBQWlDOztRQUFBLGlCQUFPO1FBQ3ZGLGlCQUFNO1FBQ04sK0JBQ0U7UUFBQSw4QkFBd0M7UUFBQSwrQkFBYztRQUFBLGlCQUFJO1FBQzVELGlCQUFNO1FBQ1IsaUJBQU07UUFDUixpQkFBTTtRQUNSLGlCQUFNOztRQWY0RCxlQUFxQjtRQUFyQix5REFBcUI7UUFDNUUsZUFBb0I7UUFBcEIsdUNBQW9CO1FBSStCLGVBQTJDO1FBQTNDLHVFQUEyQztRQUdwRCxlQUFpQztRQUFqQyxtRUFBaUM7UUFHM0UsZUFBb0I7UUFBcEIsd0RBQW9COztrRERKbEIsMkJBQTJCO2NBUHZDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsOEJBQThCO2dCQUN4QyxXQUFXLEVBQUUsdUNBQXVDO2dCQUNwRCxTQUFTLEVBQUUsQ0FBQyx1Q0FBdUMsQ0FBQztnQkFDcEQsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2hEO2dCQUVVLE9BQU87a0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXJ0aWNsZSB9IGZyb20gJy4uLy4uL19tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1taWFtLWNhdGFsb2ctYXJ0aWNsZS1jYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhdGFsb2ctYXJ0aWNsZS1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2F0YWxvZy1hcnRpY2xlLWNhcmQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ2F0YWxvZ0FydGljbGVDYXJkQ29tcG9uZW50IHtcbiAgQElucHV0KCkgYXJ0aWNsZTogQXJ0aWNsZTtcblxuICBzaG93QXJ0aWNsZSgpIHtcbiAgICB3aW5kb3cub3Blbih0aGlzLmFydGljbGUudXJsLCAnX2JsYW5rJyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtaWFtLWNhdGFsb2ctYXJ0aWNsZS1jYXJkXCIgKGNsaWNrKT1cInNob3dBcnRpY2xlKClcIj5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1jYXJkX19waWN0dXJlXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1jYXJkX19waWN0dXJlX19ncmFkaWVudFwiPlxuICAgICAgPGltZyBjbGFzcz1cIm1pYW0tY2F0YWxvZy1jYXJkX19waWN0dXJlX19pbWdcIiBsb2FkaW5nPVwibGF6eVwiIFtzcmNdPVwiYXJ0aWNsZS5pbWFnZVwiPlxuICAgICAgPGltZyAqbmdJZj1cImFydGljbGUubG9nb1wiIGNsYXNzPVwibWlhbS1jYXRhbG9nLWNhcmRfX3BpY3R1cmVfX3Nwb25zb3JcIiBbc3JjXT1cImFydGljbGUubG9nb1wiPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1jYXJkX19hdHRyaWJ1dGVzXCI+XG4gICAgPGg0IGNsYXNzPVwibWlhbS1jYXRhbG9nLWFydGljbGUtY2FyZF9fYXR0cmlidXRlc19fdGl0bGVcIiA+e3sgKGFydGljbGUudGl0bGUgfHwgJycpIHwgZWxsaXBzaXMgOiAxMiB9fTwvaDQ+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1jYXJkX19hdHRyaWJ1dGVzX19pbmZvc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1jYXJkX19hdHRyaWJ1dGVzX19pbmZvXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1jYXRhbG9nLWNhcmRfX2luZm9fX2xhYmVsXCI+e3sgKGFydGljbGUuZGF0ZSB8fCAnJykgfCBkYXRlIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1jYXRhbG9nLWNhcmRfX2F0dHJpYnV0ZXNfX2luZm9cIj5cbiAgICAgICAgPGEgW2hyZWZdPVwiYXJ0aWNsZS51cmxcIiB0YXJnZXQ9XCJfYmxhbmtcIj5Wb2lyIGwnYXJ0aWNsZTwvYT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
@@ -1,68 +1,127 @@
1
1
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, QueryList, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';
2
- import { RecipeLikesService, RecipesService } from '../../_services';
2
+ import { forkJoin, of } from 'rxjs';
3
+ import { finalize, map, switchMap } from 'rxjs/operators';
4
+ import { ArticlesService, ContextService, RecipeLikesService, RecipesService } from '../../_services';
3
5
  import { Icon } from '../../_types/icon.enum';
4
6
  import { CatalogRecipeCardComponent } from '../catalog-recipe-card/catalog-recipe-card.component';
5
7
  import * as i0 from "@angular/core";
6
8
  import * as i1 from "../../_services";
7
- import * as i2 from "../../_components/icon/icon.component";
8
- import * as i3 from "@angular/common";
9
+ import * as i2 from "@angular/common";
10
+ import * as i3 from "../../_components/icon/icon.component";
9
11
  import * as i4 from "../loader/loader.component";
10
12
  import * as i5 from "../catalog-recipe-card/catalog-recipe-card.component";
13
+ import * as i6 from "../catalog-article-card/catalog-article-card.component";
11
14
  const _c0 = ["categoryContent"];
12
15
  const _c1 = ["categoryCards"];
13
- function CatalogCategoryComponent_div_11_Template(rf, ctx) { if (rf & 1) {
14
- i0.ɵɵelementStart(0, "div", 13);
16
+ function CatalogCategoryComponent_div_0_div_11_Template(rf, ctx) { if (rf & 1) {
17
+ i0.ɵɵelementStart(0, "div", 15);
15
18
  i0.ɵɵelement(1, "ng-miam-loader");
16
19
  i0.ɵɵelementStart(2, "div");
17
- i0.ɵɵtext(3, " Chargement des recettes... ");
20
+ i0.ɵɵtext(3, " Chargement des r\u00E9sultats... ");
18
21
  i0.ɵɵelementEnd();
19
22
  i0.ɵɵelementEnd();
20
23
  } }
21
- function CatalogCategoryComponent_ng_miam_catalog_recipe_card_12_Template(rf, ctx) { if (rf & 1) {
22
- i0.ɵɵelement(0, "ng-miam-catalog-recipe-card", 14);
24
+ function CatalogCategoryComponent_div_0_ng_miam_catalog_recipe_card_12_Template(rf, ctx) { if (rf & 1) {
25
+ i0.ɵɵelement(0, "ng-miam-catalog-recipe-card", 16);
23
26
  } if (rf & 2) {
24
- const recipe_r6 = ctx.$implicit;
25
- i0.ɵɵproperty("recipe", recipe_r6);
27
+ const recipe_r8 = ctx.$implicit;
28
+ i0.ɵɵproperty("recipe", recipe_r8);
26
29
  } }
27
- function CatalogCategoryComponent_div_13_Template(rf, ctx) { if (rf & 1) {
28
- const _r8 = i0.ɵɵgetCurrentView();
29
- i0.ɵɵelementStart(0, "div", 15);
30
- i0.ɵɵlistener("click", function CatalogCategoryComponent_div_13_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r7 = i0.ɵɵnextContext(); return ctx_r7.slideLeft(); });
31
- i0.ɵɵelement(1, "ng-miam-icon", 16);
30
+ function CatalogCategoryComponent_div_0_ng_miam_catalog_article_card_13_Template(rf, ctx) { if (rf & 1) {
31
+ i0.ɵɵelement(0, "ng-miam-catalog-article-card", 17);
32
+ } if (rf & 2) {
33
+ const article_r9 = ctx.$implicit;
34
+ i0.ɵɵproperty("article", article_r9);
35
+ } }
36
+ function CatalogCategoryComponent_div_0_div_14_Template(rf, ctx) { if (rf & 1) {
37
+ const _r11 = i0.ɵɵgetCurrentView();
38
+ i0.ɵɵelementStart(0, "div", 18);
39
+ i0.ɵɵlistener("click", function CatalogCategoryComponent_div_0_div_14_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r10 = i0.ɵɵnextContext(2); return ctx_r10.slideLeft(); });
40
+ i0.ɵɵelement(1, "ng-miam-icon", 19);
32
41
  i0.ɵɵelementEnd();
33
42
  } if (rf & 2) {
34
- const ctx_r4 = i0.ɵɵnextContext();
43
+ const ctx_r6 = i0.ɵɵnextContext(2);
35
44
  i0.ɵɵadvance(1);
36
- i0.ɵɵproperty("iconName", ctx_r4.icon.ChevronDown);
45
+ i0.ɵɵproperty("iconName", ctx_r6.icon.ChevronDown);
37
46
  } }
38
- function CatalogCategoryComponent_div_14_Template(rf, ctx) { if (rf & 1) {
39
- const _r10 = i0.ɵɵgetCurrentView();
40
- i0.ɵɵelementStart(0, "div", 17);
41
- i0.ɵɵlistener("click", function CatalogCategoryComponent_div_14_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r9 = i0.ɵɵnextContext(); return ctx_r9.slideRight(); });
42
- i0.ɵɵelement(1, "ng-miam-icon", 16);
47
+ function CatalogCategoryComponent_div_0_div_15_Template(rf, ctx) { if (rf & 1) {
48
+ const _r13 = i0.ɵɵgetCurrentView();
49
+ i0.ɵɵelementStart(0, "div", 20);
50
+ i0.ɵɵlistener("click", function CatalogCategoryComponent_div_0_div_15_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r12 = i0.ɵɵnextContext(2); return ctx_r12.slideRight(); });
51
+ i0.ɵɵelement(1, "ng-miam-icon", 19);
43
52
  i0.ɵɵelementEnd();
44
53
  } if (rf & 2) {
45
- const ctx_r5 = i0.ɵɵnextContext();
54
+ const ctx_r7 = i0.ɵɵnextContext(2);
46
55
  i0.ɵɵadvance(1);
47
- i0.ɵɵproperty("iconName", ctx_r5.icon.ChevronDown);
56
+ i0.ɵɵproperty("iconName", ctx_r7.icon.ChevronDown);
48
57
  } }
49
58
  const _c2 = function (a0) { return { "transform": a0 }; };
59
+ function CatalogCategoryComponent_div_0_Template(rf, ctx) { if (rf & 1) {
60
+ const _r15 = i0.ɵɵgetCurrentView();
61
+ i0.ɵɵelementStart(0, "div", 1);
62
+ i0.ɵɵelementStart(1, "div", 2);
63
+ i0.ɵɵelementStart(2, "div", 3);
64
+ i0.ɵɵlistener("click", function CatalogCategoryComponent_div_0_Template_div_click_2_listener() { i0.ɵɵrestoreView(_r15); const ctx_r14 = i0.ɵɵnextContext(); return ctx_r14.displayListMode(); });
65
+ i0.ɵɵtext(3);
66
+ i0.ɵɵelementEnd();
67
+ i0.ɵɵelementStart(4, "div", 4);
68
+ i0.ɵɵlistener("click", function CatalogCategoryComponent_div_0_Template_div_click_4_listener() { i0.ɵɵrestoreView(_r15); const ctx_r16 = i0.ɵɵnextContext(); return ctx_r16.displayListMode(); });
69
+ i0.ɵɵtext(5, "Voir tout");
70
+ i0.ɵɵelementEnd();
71
+ i0.ɵɵelementStart(6, "ng-miam-icon", 5);
72
+ i0.ɵɵlistener("click", function CatalogCategoryComponent_div_0_Template_ng_miam_icon_click_6_listener() { i0.ɵɵrestoreView(_r15); const ctx_r17 = i0.ɵɵnextContext(); return ctx_r17.displayListMode(); });
73
+ i0.ɵɵelementEnd();
74
+ i0.ɵɵelementEnd();
75
+ i0.ɵɵelementStart(7, "div", 6, 7);
76
+ i0.ɵɵelementStart(9, "div", 8, 9);
77
+ i0.ɵɵtemplate(11, CatalogCategoryComponent_div_0_div_11_Template, 4, 0, "div", 10);
78
+ i0.ɵɵtemplate(12, CatalogCategoryComponent_div_0_ng_miam_catalog_recipe_card_12_Template, 1, 1, "ng-miam-catalog-recipe-card", 11);
79
+ i0.ɵɵtemplate(13, CatalogCategoryComponent_div_0_ng_miam_catalog_article_card_13_Template, 1, 1, "ng-miam-catalog-article-card", 12);
80
+ i0.ɵɵelementEnd();
81
+ i0.ɵɵtemplate(14, CatalogCategoryComponent_div_0_div_14_Template, 2, 1, "div", 13);
82
+ i0.ɵɵtemplate(15, CatalogCategoryComponent_div_0_div_15_Template, 2, 1, "div", 14);
83
+ i0.ɵɵelementEnd();
84
+ i0.ɵɵelementEnd();
85
+ } if (rf & 2) {
86
+ const ctx_r0 = i0.ɵɵnextContext();
87
+ i0.ɵɵadvance(3);
88
+ i0.ɵɵtextInterpolate(ctx_r0.title);
89
+ i0.ɵɵadvance(3);
90
+ i0.ɵɵproperty("iconName", ctx_r0.icon.ChevronDown);
91
+ i0.ɵɵadvance(3);
92
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(8, _c2, "translateX(-" + ctx_r0.xTranslation() + "px)"));
93
+ i0.ɵɵadvance(2);
94
+ i0.ɵɵproperty("ngIf", ctx_r0.isLoading);
95
+ i0.ɵɵadvance(1);
96
+ i0.ɵɵproperty("ngForOf", ctx_r0.recipes);
97
+ i0.ɵɵadvance(1);
98
+ i0.ɵɵproperty("ngForOf", ctx_r0.articles);
99
+ i0.ɵɵadvance(1);
100
+ i0.ɵɵproperty("ngIf", ctx_r0.numberOfSections > 1 && ctx_r0.currentSection != 0);
101
+ i0.ɵɵadvance(1);
102
+ i0.ɵɵproperty("ngIf", ctx_r0.numberOfSections > 1 && ctx_r0.currentSection != ctx_r0.numberOfSections - 1);
103
+ } }
50
104
  // miam-catalog-recipe-card : width = 330px + miam-catalog-category__card : margin : 16px
51
105
  // we include a margin in the card to get a space this is the card width + the margin
52
106
  const CARD_WIDTH = 346;
53
107
  const SPACE_BETWEEN_CARD = 16;
54
108
  const SLIDER_WIDTH = 48;
55
109
  export class CatalogCategoryComponent {
56
- constructor(recipesService, recipeLikesService, cdr) {
110
+ constructor(recipesService, recipeLikesService, articlesService, context, cdr) {
57
111
  this.recipesService = recipesService;
58
112
  this.recipeLikesService = recipeLikesService;
113
+ this.articlesService = articlesService;
114
+ this.context = context;
59
115
  this.cdr = cdr;
60
116
  this.title = '';
117
+ this.recipes = [];
118
+ this.articles = [];
119
+ this.hide = false;
61
120
  this.icon = Icon;
62
- this.recipeCardsTotalSize = 0; // native size of the card contain including overflow
63
- this.numberOfSections = 1; // number of card group that feet in recipeCardsTotalSize
121
+ this.cardsTotalSize = 0; // native size of the card contain including overflow
122
+ this.numberOfSections = 1; // number of card group that fit in cardsTotalSize
64
123
  this.currentSection = 0; // index of the section show on screen
65
- this.nbCardsInAnExtremSections = 0; // nb of card that can fit in screen with one scroll button
124
+ this.nbCardsInAnExtremeSection = 0; // nb of card that can fit in screen with one scroll button
66
125
  this.nbCardsInAMiddleSection = 0; // nb of card that can fit in screen with two scroll buttons
67
126
  this.categoryBandWidth = 0; // native size of visible card container scroll button
68
127
  this.displayList = new EventEmitter();
@@ -71,23 +130,41 @@ export class CatalogCategoryComponent {
71
130
  this.isLoading = true;
72
131
  }
73
132
  ngOnChanges() {
74
- if (this.filters) {
75
- this.loadRecipes();
76
- }
133
+ this.subscriptions.push(forkJoin([this.loadRecipes(), this.loadArticles()]).pipe(finalize(() => {
134
+ if (this.recipes.length === 0 && this.articles.length === 0) {
135
+ this.hide = true;
136
+ }
137
+ else {
138
+ this.hide = false;
139
+ this.createSections();
140
+ }
141
+ this.isLoading = false;
142
+ this.cdr.detectChanges();
143
+ })).subscribe());
77
144
  }
78
145
  loadRecipes() {
79
- this.subscriptions.push(this.recipesService.getRandom({ size: 20, number: 1 }, this.filters)
80
- .subscribe((result) => {
81
- this.recipeLikesService.addLikesToRecipes(result).subscribe(() => {
82
- this.recipes = result;
83
- this.isLoading = false;
84
- this.cdr.detectChanges();
85
- this.createSections();
86
- });
146
+ if (!this.filters) {
147
+ return of([]);
148
+ }
149
+ return this.recipesService.getRandom({ size: 20, number: 1 }, this.filters).pipe(switchMap((result) => {
150
+ this.recipes = result;
151
+ return this.recipeLikesService.addLikesToRecipes(result);
152
+ }), map(() => this.recipes));
153
+ }
154
+ loadArticles() {
155
+ var _a;
156
+ // TODO: all contents (recipes, articles...) should be related to packages, to which filters could be attached
157
+ if (!((_a = this.filters) === null || _a === void 0 ? void 0 : _a.packages) || !this.context.articlesInCatalogEnabled) {
158
+ return of([]);
159
+ }
160
+ return this.articlesService.all({ remotefilter: this.filters, sort: ['-date'] }).pipe(map((result) => {
161
+ this.articles = result.data;
162
+ return this.articles;
87
163
  }));
88
164
  }
89
165
  createSections() {
90
- this.recipeCardsTotalSize = this.categoryCards.nativeElement.scrollWidth; // approx number of recipes * CARD_WIDTH
166
+ this.cdr.detectChanges();
167
+ this.cardsTotalSize = this.categoryCards.nativeElement.scrollWidth; // approx number of recipes * CARD_WIDTH
91
168
  this.recalculateSections();
92
169
  this.cdr.detectChanges();
93
170
  }
@@ -95,12 +172,12 @@ export class CatalogCategoryComponent {
95
172
  // the size of the window in which we put recipes and sliders
96
173
  this.categoryBandWidth = this.categoryContent.nativeElement.clientWidth;
97
174
  // at start we have only one slider, two in the midle so we may not be able to fit same number of cards
98
- this.nbCardsInAnExtremSections = Math.floor((this.categoryBandWidth - SLIDER_WIDTH) / CARD_WIDTH);
175
+ this.nbCardsInAnExtremeSection = Math.floor((this.categoryBandWidth - SLIDER_WIDTH) / CARD_WIDTH);
99
176
  this.nbCardsInAMiddleSection = Math.floor((this.categoryBandWidth - 2 * SLIDER_WIDTH) / CARD_WIDTH);
100
- const totalWidthOfCardsInAnExtremSection = this.nbCardsInAnExtremSections * CARD_WIDTH;
177
+ const totalWidthOfCardsInAnExtremeSection = this.nbCardsInAnExtremeSection * CARD_WIDTH;
101
178
  const totalWidthOfCardsmiddleSection = this.nbCardsInAMiddleSection * CARD_WIDTH;
102
- const onlyOneSection = this.categoryBandWidth >= this.recipeCardsTotalSize;
103
- const twoSections = totalWidthOfCardsInAnExtremSection * 2 >= this.recipeCardsTotalSize;
179
+ const onlyOneSection = this.categoryBandWidth >= this.cardsTotalSize;
180
+ const twoSections = totalWidthOfCardsInAnExtremeSection * 2 >= this.cardsTotalSize;
104
181
  if (onlyOneSection) {
105
182
  this.numberOfSections = 1;
106
183
  }
@@ -110,8 +187,8 @@ export class CatalogCategoryComponent {
110
187
  else {
111
188
  // in the case we have at least the starting section the ending section and one or more middle section
112
189
  // 2 * cardsInAnExtremSections => nb cards in extrem section
113
- // this.recipeCardsTotalSize - 2 * cardsInAnExtremSections => nb card in middle section
114
- this.numberOfSections = 2 + (this.recipeCardsTotalSize - 2 * totalWidthOfCardsInAnExtremSection) / totalWidthOfCardsmiddleSection;
190
+ // this.cardsTotalSize - 2 * cardsInAnExtremSections => nb card in middle section
191
+ this.numberOfSections = 2 + (this.cardsTotalSize - 2 * totalWidthOfCardsInAnExtremeSection) / totalWidthOfCardsmiddleSection;
115
192
  }
116
193
  }
117
194
  xTranslation() {
@@ -120,10 +197,10 @@ export class CatalogCategoryComponent {
120
197
  }
121
198
  else if (this.currentSection === (this.numberOfSections - 1)) {
122
199
  // the card contain a space of SPACE_BETWEEN_CARD on the LEFT, we a a space at the end for display purpose
123
- return this.recipeCardsTotalSize - this.categoryBandWidth + SPACE_BETWEEN_CARD;
200
+ return this.cardsTotalSize - this.categoryBandWidth + SPACE_BETWEEN_CARD;
124
201
  }
125
202
  // we are in the middle
126
- const firstexternSectionWidth = this.nbCardsInAnExtremSections * CARD_WIDTH;
203
+ const firstexternSectionWidth = this.nbCardsInAnExtremeSection * CARD_WIDTH;
127
204
  const middleSectionWidth = (this.currentSection - 1) * this.nbCardsInAMiddleSection * CARD_WIDTH;
128
205
  return firstexternSectionWidth + middleSectionWidth - SLIDER_WIDTH;
129
206
  }
@@ -153,7 +230,7 @@ export class CatalogCategoryComponent {
153
230
  * to call when component resized
154
231
  */
155
232
  updateWidth() {
156
- const oldNbOfCardsInAnExtremSection = this.nbCardsInAnExtremSections;
233
+ const oldNbOfCardsInAnExtremSection = this.nbCardsInAnExtremeSection;
157
234
  const oldNbCardsInAMiddleSection = this.nbCardsInAMiddleSection;
158
235
  const currentSectionWasFirst = this.currentSection === 0;
159
236
  const currentSectionWasLast = this.currentSection === this.numberOfSections - 1;
@@ -167,7 +244,7 @@ export class CatalogCategoryComponent {
167
244
  else {
168
245
  // we want oldCardsForFirstSection + oldCardsBySection * currentSection = cardsForFirstSection + cardsBtSection * new_currentSection
169
246
  // our goal is to keep the same card at the start of our visible div
170
- const firstSectionDelta = oldNbOfCardsInAnExtremSection - this.nbCardsInAnExtremSections;
247
+ const firstSectionDelta = oldNbOfCardsInAnExtremSection - this.nbCardsInAnExtremeSection;
171
248
  this.currentSection = (firstSectionDelta + this.currentSection * oldNbCardsInAMiddleSection) / this.nbCardsInAMiddleSection;
172
249
  }
173
250
  this.cdr.detectChanges();
@@ -179,7 +256,7 @@ export class CatalogCategoryComponent {
179
256
  this.subscriptions.forEach(sub => sub.unsubscribe());
180
257
  }
181
258
  }
182
- CatalogCategoryComponent.ɵfac = function CatalogCategoryComponent_Factory(t) { return new (t || CatalogCategoryComponent)(i0.ɵɵdirectiveInject(i1.RecipesService), i0.ɵɵdirectiveInject(i1.RecipeLikesService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
259
+ CatalogCategoryComponent.ɵfac = function CatalogCategoryComponent_Factory(t) { return new (t || CatalogCategoryComponent)(i0.ɵɵdirectiveInject(i1.RecipesService), i0.ɵɵdirectiveInject(i1.RecipeLikesService), i0.ɵɵdirectiveInject(i1.ArticlesService), i0.ɵɵdirectiveInject(i1.ContextService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
183
260
  CatalogCategoryComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CatalogCategoryComponent, selectors: [["ng-miam-catalog-category"]], viewQuery: function CatalogCategoryComponent_Query(rf, ctx) { if (rf & 1) {
184
261
  i0.ɵɵviewQuery(_c0, true);
185
262
  i0.ɵɵviewQuery(_c1, true);
@@ -189,46 +266,11 @@ CatalogCategoryComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CatalogCategoryC
189
266
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.categoryContent = _t.first);
190
267
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.categoryCards = _t.first);
191
268
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.recipeCards = _t);
192
- } }, inputs: { filters: "filters", title: "title" }, outputs: { displayList: "displayList" }, features: [i0.ɵɵNgOnChangesFeature], decls: 15, vars: 9, consts: [[1, "miam-catalog-category"], [1, "miam-catalog-category__header"], [1, "miam-catalog-category__title", 3, "click"], [1, "miam-catalog-category__link", 3, "click"], ["height", "20", "width", "20", "primaryColor", "var(--m-color-grey-text)", 3, "iconName", "click"], [1, "miam-catalog-category__content"], ["categoryContent", ""], [1, "miam-catalog-category__cards", 3, "ngStyle"], ["categoryCards", ""], ["class", "miam-catalog-category__loader", 4, "ngIf"], ["class", "miam-catalog-category__card", 3, "recipe", 4, "ngFor", "ngForOf"], ["class", "miam-catalog-category__slider__left", 3, "click", 4, "ngIf"], ["class", "miam-catalog-category__slider__right", 3, "click", 4, "ngIf"], [1, "miam-catalog-category__loader"], [1, "miam-catalog-category__card", 3, "recipe"], [1, "miam-catalog-category__slider__left", 3, "click"], ["height", "56", "width", "56", "primaryColor", "var(--m-color-white)", 3, "iconName"], [1, "miam-catalog-category__slider__right", 3, "click"]], template: function CatalogCategoryComponent_Template(rf, ctx) { if (rf & 1) {
193
- i0.ɵɵelementStart(0, "div", 0);
194
- i0.ɵɵelementStart(1, "div", 1);
195
- i0.ɵɵelementStart(2, "div", 2);
196
- i0.ɵɵlistener("click", function CatalogCategoryComponent_Template_div_click_2_listener() { return ctx.displayListMode(); });
197
- i0.ɵɵtext(3);
198
- i0.ɵɵelementEnd();
199
- i0.ɵɵelementStart(4, "div", 3);
200
- i0.ɵɵlistener("click", function CatalogCategoryComponent_Template_div_click_4_listener() { return ctx.displayListMode(); });
201
- i0.ɵɵtext(5, "Voir tout");
202
- i0.ɵɵelementEnd();
203
- i0.ɵɵelementStart(6, "ng-miam-icon", 4);
204
- i0.ɵɵlistener("click", function CatalogCategoryComponent_Template_ng_miam_icon_click_6_listener() { return ctx.displayListMode(); });
205
- i0.ɵɵelementEnd();
206
- i0.ɵɵelementEnd();
207
- i0.ɵɵelementStart(7, "div", 5, 6);
208
- i0.ɵɵelementStart(9, "div", 7, 8);
209
- i0.ɵɵtemplate(11, CatalogCategoryComponent_div_11_Template, 4, 0, "div", 9);
210
- i0.ɵɵtemplate(12, CatalogCategoryComponent_ng_miam_catalog_recipe_card_12_Template, 1, 1, "ng-miam-catalog-recipe-card", 10);
211
- i0.ɵɵelementEnd();
212
- i0.ɵɵtemplate(13, CatalogCategoryComponent_div_13_Template, 2, 1, "div", 11);
213
- i0.ɵɵtemplate(14, CatalogCategoryComponent_div_14_Template, 2, 1, "div", 12);
214
- i0.ɵɵelementEnd();
215
- i0.ɵɵelementEnd();
269
+ } }, inputs: { filters: "filters", title: "title" }, outputs: { displayList: "displayList" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [["class", "miam-catalog-category", 4, "ngIf"], [1, "miam-catalog-category"], [1, "miam-catalog-category__header"], [1, "miam-catalog-category__title", 3, "click"], [1, "miam-catalog-category__link", 3, "click"], ["height", "20", "width", "20", "primaryColor", "var(--m-color-grey-text)", 3, "iconName", "click"], [1, "miam-catalog-category__content"], ["categoryContent", ""], [1, "miam-catalog-category__cards", 3, "ngStyle"], ["categoryCards", ""], ["class", "miam-catalog-category__loader", 4, "ngIf"], ["class", "miam-catalog-category__card", 3, "recipe", 4, "ngFor", "ngForOf"], ["class", "miam-catalog-category__card", 3, "article", 4, "ngFor", "ngForOf"], ["class", "miam-catalog-category__slider__left", 3, "click", 4, "ngIf"], ["class", "miam-catalog-category__slider__right", 3, "click", 4, "ngIf"], [1, "miam-catalog-category__loader"], [1, "miam-catalog-category__card", 3, "recipe"], [1, "miam-catalog-category__card", 3, "article"], [1, "miam-catalog-category__slider__left", 3, "click"], ["height", "56", "width", "56", "primaryColor", "var(--m-color-white)", 3, "iconName"], [1, "miam-catalog-category__slider__right", 3, "click"]], template: function CatalogCategoryComponent_Template(rf, ctx) { if (rf & 1) {
270
+ i0.ɵɵtemplate(0, CatalogCategoryComponent_div_0_Template, 16, 10, "div", 0);
216
271
  } if (rf & 2) {
217
- i0.ɵɵadvance(3);
218
- i0.ɵɵtextInterpolate(ctx.title);
219
- i0.ɵɵadvance(3);
220
- i0.ɵɵproperty("iconName", ctx.icon.ChevronDown);
221
- i0.ɵɵadvance(3);
222
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(7, _c2, "translateX(-" + ctx.xTranslation() + "px)"));
223
- i0.ɵɵadvance(2);
224
- i0.ɵɵproperty("ngIf", ctx.isLoading);
225
- i0.ɵɵadvance(1);
226
- i0.ɵɵproperty("ngForOf", ctx.recipes);
227
- i0.ɵɵadvance(1);
228
- i0.ɵɵproperty("ngIf", ctx.numberOfSections > 1 && ctx.currentSection != 0);
229
- i0.ɵɵadvance(1);
230
- i0.ɵɵproperty("ngIf", ctx.numberOfSections > 1 && ctx.currentSection != ctx.numberOfSections - 1);
231
- } }, directives: [i2.IconComponent, i3.NgStyle, i3.NgIf, i3.NgForOf, i4.LoaderComponent, i5.CatalogRecipeCardComponent], styles: [".miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__left,.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__right,.miam-catalog-category__slider{-webkit-backdrop-filter:blur(12px);align-items:center;backdrop-filter:blur(12px);background-color:rgba(32,32,32,.3);cursor:pointer;display:flex;height:calc(100% - 28px);justify-content:center;margin:12px 0 16px;position:absolute;top:0;width:48px}@media (max-width:1022px){.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__left,.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__right,.miam-catalog-category__slider{display:none}}.miam-catalog-category{display:flex;flex-direction:column}.miam-catalog-category .miam-catalog-category__header{align-items:flex-end;display:flex;flex-direction:row}.miam-catalog-category .miam-catalog-category__header .miam-catalog-category__title{-webkit-tap-highlight-color:transparent;color:var(--m-color-primary);cursor:pointer;font-size:24px;font-weight:700;margin-left:16px}@media (min-width:1022px){.miam-catalog-category .miam-catalog-category__header .miam-catalog-category__title:hover{text-decoration:underline}}.miam-catalog-category .miam-catalog-category__header .miam-catalog-category__link{-webkit-tap-highlight-color:transparent;color:var(--m-color-grey-text);cursor:pointer;font-size:14px;line-height:28px;margin-left:16px}@media (min-width:1022px){.miam-catalog-category .miam-catalog-category__header .miam-catalog-category__link:hover{text-decoration:underline}}.miam-catalog-category .miam-catalog-category__header .icon-container{cursor:pointer;margin-bottom:3px;transform:rotate(-90deg)}.miam-catalog-category .miam-catalog-category__content{height:332px;overflow:hidden;position:relative;width:100%}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__cards{display:flex;flex-direction:row;transition-duration:.5s}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__cards .miam-catalog-category__loader{color:var(--m-color-grey-text);font-size:20px;font-weight:700;text-align:center;width:100%}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__cards .miam-catalog-category__loader .loader{height:80px;margin-bottom:16px;margin-left:calc(50% - 40px);margin-top:80px;width:80px}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__cards .miam-catalog-category__card{margin:12px 0 16px 16px}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__right{border-radius:8px 0 0 8px;right:0}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__right .icon-container{transform:rotate(-90deg)}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__left{border-radius:0 8px 8px 0;left:0}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__left .icon-container{transform:rotate(90deg)}@media (max-width:1022px){.miam-catalog-category .miam-catalog-category__header .miam-catalog-category__title{max-width:70%}.miam-catalog-category .miam-catalog-category__content{overflow:scroll}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__cards .miam-catalog-category__card{display:flex}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__cards .miam-catalog-category__card:last-child:after{content:\"\";width:16px}}"], encapsulation: 2, changeDetection: 0 });
272
+ i0.ɵɵproperty("ngIf", !ctx.hide);
273
+ } }, directives: [i2.NgIf, i3.IconComponent, i2.NgStyle, i2.NgForOf, i4.LoaderComponent, i5.CatalogRecipeCardComponent, i6.CatalogArticleCardComponent], styles: [".miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__left,.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__right,.miam-catalog-category__slider{-webkit-backdrop-filter:blur(12px);align-items:center;backdrop-filter:blur(12px);background-color:rgba(32,32,32,.3);cursor:pointer;display:flex;height:calc(100% - 28px);justify-content:center;margin:12px 0 16px;position:absolute;top:0;width:48px}@media (max-width:1022px){.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__left,.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__right,.miam-catalog-category__slider{display:none}}.miam-catalog-category{display:flex;flex-direction:column}.miam-catalog-category .miam-catalog-category__header{align-items:flex-end;display:flex;flex-direction:row}.miam-catalog-category .miam-catalog-category__header .miam-catalog-category__title{-webkit-tap-highlight-color:transparent;color:var(--m-color-primary);cursor:pointer;font-size:24px;font-weight:700;margin-left:16px}@media (min-width:1022px){.miam-catalog-category .miam-catalog-category__header .miam-catalog-category__title:hover{text-decoration:underline}}.miam-catalog-category .miam-catalog-category__header .miam-catalog-category__link{-webkit-tap-highlight-color:transparent;color:var(--m-color-grey-text);cursor:pointer;font-size:14px;line-height:28px;margin-left:16px}@media (min-width:1022px){.miam-catalog-category .miam-catalog-category__header .miam-catalog-category__link:hover{text-decoration:underline}}.miam-catalog-category .miam-catalog-category__header .icon-container{cursor:pointer;margin-bottom:3px;transform:rotate(-90deg)}.miam-catalog-category .miam-catalog-category__content{height:332px;overflow:hidden;position:relative;width:100%}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__cards{display:flex;flex-direction:row;transition-duration:.5s}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__cards .miam-catalog-category__loader{color:var(--m-color-grey-text);font-size:20px;font-weight:700;text-align:center;width:100%}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__cards .miam-catalog-category__loader .loader{height:80px;margin-bottom:16px;margin-left:calc(50% - 40px);margin-top:80px;width:80px}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__cards .miam-catalog-category__card{margin:12px 0 16px 16px}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__right{border-radius:8px 0 0 8px;right:0}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__right .icon-container{transform:rotate(-90deg)}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__left{border-radius:0 8px 8px 0;left:0}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__left .icon-container{transform:rotate(90deg)}@media (max-width:1022px){.miam-catalog-category .miam-catalog-category__header .miam-catalog-category__title{max-width:70%}.miam-catalog-category .miam-catalog-category__content{overflow:scroll}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__cards .miam-catalog-category__card{display:flex}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__cards .miam-catalog-category__card:last-child:after{content:\"\";width:16px}}"], encapsulation: 2, changeDetection: 0 });
232
274
  /*@__PURE__*/ (function () { i0.ɵsetClassMetadata(CatalogCategoryComponent, [{
233
275
  type: Component,
234
276
  args: [{
@@ -238,7 +280,7 @@ CatalogCategoryComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CatalogCategoryC
238
280
  encapsulation: ViewEncapsulation.None,
239
281
  changeDetection: ChangeDetectionStrategy.OnPush
240
282
  }]
241
- }], function () { return [{ type: i1.RecipesService }, { type: i1.RecipeLikesService }, { type: i0.ChangeDetectorRef }]; }, { filters: [{
283
+ }], function () { return [{ type: i1.RecipesService }, { type: i1.RecipeLikesService }, { type: i1.ArticlesService }, { type: i1.ContextService }, { type: i0.ChangeDetectorRef }]; }, { filters: [{
242
284
  type: Input
243
285
  }], title: [{
244
286
  type: Input
@@ -254,4 +296,4 @@ CatalogCategoryComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CatalogCategoryC
254
296
  type: ViewChildren,
255
297
  args: [CatalogRecipeCardComponent]
256
298
  }] }); })();
257
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1jYXRlZ29yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2J1aWxkcy9taWFtL25nLW1pYW0tc2RrL3Byb2plY3RzL25nLW1pYW0vc3JjLyIsInNvdXJjZXMiOlsibGliL193ZWItY29tcG9uZW50cy9jYXRhbG9nLWNhdGVnb3J5L2NhdGFsb2ctY2F0ZWdvcnkuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9jYXRhbG9nLWNhdGVnb3J5L2NhdGFsb2ctY2F0ZWdvcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBd0IsTUFBTSxFQUFFLFNBQVMsRUFDdEksU0FBUyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOzs7Ozs7Ozs7O0lDSzVGLCtCQUNFO0lBQUEsaUNBQWlDO0lBQ2pDLDJCQUNFO0lBQUEsNENBQ0Y7SUFBQSxpQkFBTTtJQUNSLGlCQUFNOzs7SUFDTixrREFBaUo7OztJQUFoRCxrQ0FBaUI7Ozs7SUFFcEgsK0JBQ0U7SUFEdUQseUxBQXFCO0lBQzVFLG1DQUF1SDtJQUN6SCxpQkFBTTs7O0lBRHNFLGVBQTZCO0lBQTdCLGtEQUE2Qjs7OztJQUV6RywrQkFDRTtJQUQ0RSwyTEFBc0I7SUFDbEcsbUNBQXVIO0lBQ3pILGlCQUFNOzs7SUFEc0UsZUFBNkI7SUFBN0Isa0RBQTZCOzs7QURmN0cseUZBQXlGO0FBQ3pGLHFGQUFxRjtBQUNyRixNQUFNLFVBQVUsR0FBRyxHQUFH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SUFBQztRQUV2RyxpQkFBZTtRQUNqQixpQkFBTTtRQUNOLGlDQUNFO1FBQUEsaUNBRUU7UUFBQSwyRUFDRTtRQUtGLDRIQUFtSDtRQUNySCxpQkFBTTtRQUNOLDRFQUNFO1FBRUYsNEVBQ0U7UUFFSixpQkFBTTtRQUNSLGlCQUFNOztRQXhCb0UsZUFBUztRQUFULCtCQUFTO1FBRy9FLGVBQTZCO1FBQTdCLCtDQUE2QjtRQUszQixlQUFrRTtRQUFsRSxpR0FBa0U7UUFDN0QsZUFBaUI7UUFBakIsb0NBQWlCO1FBTTRDLGVBQThCO1FBQTlCLHFDQUE4QjtRQUU3RixlQUFtRDtRQUFuRCwwRUFBbUQ7UUFHbkQsZUFBd0U7UUFBeEUsaUdBQXdFOztrREREcEUsd0JBQXdCO2NBUHBDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsMEJBQTBCO2dCQUNwQyxXQUFXLEVBQUUsbUNBQW1DO2dCQUNoRCxTQUFTLEVBQUUsQ0FBQyxtQ0FBbUMsQ0FBQztnQkFDaEQsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2hEO2tJQUVVLE9BQU87a0JBQWYsS0FBSztZQUNHLEtBQUs7a0JBQWIsS0FBSztZQUNJLFdBQVc7a0JBQXBCLE1BQU07WUFFdUIsZUFBZTtrQkFBNUMsU0FBUzttQkFBQyxpQkFBaUI7WUFDQSxhQUFhO2tCQUF4QyxTQUFTO21CQUFDLGVBQWU7WUFDaUIsV0FBVztrQkFBckQsWUFBWTttQkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE91dHB1dCwgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUmVjaXBlIH0gZnJvbSAnLi4vLi4vX21vZGVscyc7XG5pbXBvcnQgeyBSZWNpcGVMaWtlc1NlcnZpY2UsIFJlY2lwZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuLi8uLi9fdHlwZXMvaWNvbi5lbnVtJztcbmltcG9ydCB7IENhdGFsb2dSZWNpcGVDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vY2F0YWxvZy1yZWNpcGUtY2FyZC9jYXRhbG9nLXJlY2lwZS1jYXJkLmNvbXBvbmVudCc7XG5cbi8vIG1pYW0tY2F0YWxvZy1yZWNpcGUtY2FyZCA6IHdpZHRoID0gMzMwcHggKyBtaWFtLWNhdGFsb2ctY2F0ZWdvcnlfX2NhcmQgOiBtYXJnaW4gOiAxNnB4XG4vLyB3ZSBpbmNsdWRlIGEgbWFyZ2luIGluIHRoZSBjYXJkIHRvIGdldCBhIHNwYWNlIHRoaXMgaXMgdGhlIGNhcmQgd2lkdGggKyB0aGUgbWFyZ2luXG5jb25zdCBDQVJEX1dJRFRIID0gMzQ2O1xuY29uc3QgU1BBQ0VfQkVUV0VFTl9DQVJEID0gMTY7XG5jb25zdCBTTElERVJfV0lEVEggPSA0ODtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctbWlhbS1jYXRhbG9nLWNhdGVnb3J5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhdGFsb2ctY2F0ZWdvcnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXRhbG9nLWNhdGVnb3J5LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIENhdGFsb2dDYXRlZ29yeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgZmlsdGVyczogYW55OyAvLyBSZW1vdGVmaWx0ZXJzIGZvciB0aGUgcmVxdWVzdCAoZXg6IHsgY29zdDogXCIzLGVxXCIsIHNlYXJjaDpcInBvbW1lcyBkZSB0ZXJyZVwifSlcbiAgQElucHV0KCkgdGl0bGUgPSAnJztcbiAgQE91dHB1dCgpIGRpc3BsYXlMaXN0OiBFdmVudEVtaXR0ZXI8YW55PjtcblxuICBAVmlld0NoaWxkKCdjYXRlZ29yeUNvbnRlbnQnKSBjYXRlZ29yeUNvbnRlbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2NhdGVnb3J5Q2FyZHMnKSBjYXRlZ29yeUNhcmRzOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkcmVuKENhdGFsb2dSZWNpcGVDYXJkQ29tcG9uZW50KSAgcmVjaXBlQ2FyZHMhOiBRdWVyeUxpc3Q8Q2F0YWxvZ1JlY2lwZUNhcmRDb21wb25lbnQ+O1xuXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdO1xuICByZWNpcGVzOiBSZWNpcGVbXTtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBpY29uID0gSWNvbjtcblxuICByZWNpcGVDYXJkc1RvdGFsU2l6ZSA9IDA7IC8vIG5hdGl2ZSBzaXplIG9mIHRoZSBjYXJkIGNvbnRhaW4gaW5jbHVkaW5nIG92ZXJmbG93XG4gIG51bWJlck9mU2VjdGlvbnMgPSAxOyAgLy8gbnVtYmVyIG9mIGNhcmQgZ3JvdXAgIHRoYXQgZmVldCBpbiByZWNpcGVDYXJkc1RvdGFsU2l6ZVxuICBjdXJyZW50U2VjdGlvbiA9IDA7IC8vIGluZGV4IG9mIHRoZSBzZWN0aW9uIHNob3cgb24gc2NyZWVuXG4gIG5iQ2FyZHNJbkFuRXh0cmVtU2VjdGlvbnMgPSAwOyAvLyBuYiBvZiBjYXJkIHRoYXQgY2FuIGZpdCBpbiBzY3JlZW4gd2l0aCBvbmUgc2Nyb2xsIGJ1dHRvblxuICBuYkNhcmRzSW5BTWlkZGxlU2VjdGlvbiA9IDA7IC8vIG5iIG9mIGNhcmQgdGhhdCBjYW4gZml0IGluIHNjcmVlbiB3aXRoIHR3byBzY3JvbGwgYnV0dG9uc1xuICBjYXRlZ29yeUJhbmRXaWR0aCA9IDA7IC8vIG5hdGl2ZSBzaXplIG9mIHZpc2libGUgY2FyZCBjb250YWluZXIgc2Nyb2xsIGJ1dHRvblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVjaXBlc1NlcnZpY2U6IFJlY2lwZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVjaXBlTGlrZXNTZXJ2aWNlOiBSZWNpcGVMaWtlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5kaXNwbGF5TGlzdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICB0aGlzLnJlY2lwZXMgPSBbXTtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5maWx0ZXJzKSB7XG4gICAgICB0aGlzLmxvYWRSZWNpcGVzKCk7XG4gICAgfVxuICB9XG5cbiAgbG9hZFJlY2lwZXMoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5yZWNpcGVzU2VydmljZS5nZXRSYW5kb20oeyBzaXplOiAyMCwgbnVtYmVyOiAxIH0sIHRoaXMuZmlsdGVycylcbiAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IFJlY2lwZVtdKSA9PiB7XG4gICAgICB0aGlzLnJlY2lwZUxpa2VzU2VydmljZS5hZGRMaWtlc1RvUmVjaXBlcyhyZXN1bHQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVjaXBlcyA9IHJlc3VsdDtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLmNyZWF0ZVNlY3Rpb25zKCk7XG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBjcmVhdGVTZWN0aW9ucygpIHtcbiAgICB0aGlzLnJlY2lwZUNhcmRzVG90YWxTaXplID0gdGhpcy5jYXRlZ29yeUNhcmRzLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsV2lkdGg7IC8vIGFwcHJveCBudW1iZXIgb2YgcmVjaXBlcyAqIENBUkRfV0lEVEhcbiAgICB0aGlzLnJlY2FsY3VsYXRlU2VjdGlvbnMoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICByZWNhbGN1bGF0ZVNlY3Rpb25zKCl7XG4gICAgLy8gdGhlIHNpemUgb2YgdGhlIHdpbmRvdyBpbiB3aGljaCB3ZSBwdXQgcmVjaXBlcyBhbmQgc2xpZGVyc1xuICAgIHRoaXMuY2F0ZWdvcnlCYW5kV2lkdGggPSB0aGlzLmNhdGVnb3J5Q29udGVudC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgIC8vIGF0IHN0YXJ0IHdlIGhhdmUgb25seSBvbmUgc2xpZGVyLCB0d28gaW4gdGhlIG1pZGxlIHNvIHdlIG1heSBub3QgYmUgYWJsZSB0byBmaXQgc2FtZSBudW1iZXIgb2YgY2FyZHNcbiAgICB0aGlzLm5iQ2FyZHNJbkFuRXh0cmVtU2VjdGlvbnMgPSAgTWF0aC5mbG9vcigodGhpcy5jYXRlZ29yeUJhbmRXaWR0aCAtIFNMSURFUl9XSURUSCkgLyBDQVJEX1dJRFRIKTtcbiAgICB0aGlzLm5iQ2FyZHNJbkFNaWRkbGVTZWN0aW9uID0gTWF0aC5mbG9vcigodGhpcy5jYXRlZ29yeUJhbmRXaWR0aCAtIDIgKiBTTElERVJfV0lEVEgpIC8gQ0FSRF9XSURUSCk7XG5cbiAgICBjb25zdCB0b3RhbFdpZHRoT2ZDYXJkc0luQW5FeHRyZW1TZWN0aW9uID0gdGhpcy5uYkNhcmRzSW5BbkV4dHJlbVNlY3Rpb25zICogQ0FSRF9XSURUSDtcbiAgICBjb25zdCB0b3RhbFdpZHRoT2ZDYXJkc21pZGRsZVNlY3Rpb24gPSB0aGlzLm5iQ2FyZHNJbkFNaWRkbGVTZWN0aW9uICogQ0FSRF9XSURUSDtcblxuICAgIGNvbnN0IG9ubHlPbmVTZWN0aW9uID0gdGhpcy5jYXRlZ29yeUJhbmRXaWR0aCA+PSB0aGlzLnJlY2lwZUNhcmRzVG90YWxTaXplO1xuICAgIGNvbnN0IHR3b1NlY3Rpb25zID0gdG90YWxXaWR0aE9mQ2FyZHNJbkFuRXh0cmVtU2VjdGlvbiAqIDIgPj0gdGhpcy5yZWNpcGVDYXJkc1RvdGFsU2l6ZTtcbiAgICBpZiAob25seU9uZVNlY3Rpb24pIHtcbiAgICAgIHRoaXMubnVtYmVyT2ZTZWN0aW9ucyA9IDE7XG4gICAgfSBlbHNlIGlmICh0d29TZWN0aW9ucykge1xuICAgICAgdGhpcy5udW1iZXJPZlNlY3Rpb25zID0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaW4gdGhlIGNhc2Ugd2UgaGF2ZSBhdCBsZWFzdCB0aGUgc3RhcnRpbmcgc2VjdGlvbiB0aGUgZW5kaW5nIHNlY3Rpb24gYW5kIG9uZSBvciBtb3JlIG1pZGRsZSBzZWN0aW9uXG4gICAgICAvLyAgMiAqIGNhcmRzSW5BbkV4dHJlbVNlY3Rpb25zID0+IG5iIGNhcmRzIGluIGV4dHJlbSBzZWN0aW9uXG4gICAgICAvLyB0aGlzLnJlY2lwZUNhcmRzVG90YWxTaXplIC0gMiAqIGNhcmRzSW5BbkV4dHJlbVNlY3Rpb25zID0+IG5iIGNhcmQgaW4gbWlkZGxlIHNlY3Rpb25cbiAgICAgIHRoaXMubnVtYmVyT2ZTZWN0aW9ucyA9IDIgKyAodGhpcy5yZWNpcGVDYXJkc1RvdGFsU2l6ZSAtIDIgKiB0b3RhbFdpZHRoT2ZDYXJkc0luQW5FeHRyZW1TZWN0aW9uKSAvIHRvdGFsV2lkdGhPZkNhcmRzbWlkZGxlU2VjdGlvbjtcbiAgICB9XG4gIH1cblxuICB4VHJhbnNsYXRpb24oKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFNlY3Rpb24gPT09IDApe1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmN1cnJlbnRTZWN0aW9uID09PSAodGhpcy5udW1iZXJPZlNlY3Rpb25zIC0gMSkpe1xuICAgICAgLy8gdGhlIGNhcmQgY29udGFpbiBhIHNwYWNlIG9mIFNQQUNFX0JFVFdFRU5fQ0FSRCBvbiB0aGUgTEVGVCwgd2UgYSBhIHNwYWNlIGF0IHRoZSBlbmQgZm9yIGRpc3BsYXkgcHVycG9zZVxuICAgICAgcmV0dXJuIHRoaXMucmVjaXBlQ2FyZHNUb3RhbFNpemUgLSB0aGlzLmNhdGVnb3J5QmFuZFdpZHRoICsgU1BBQ0VfQkVUV0VFTl9DQVJEO1xuICAgIH1cbiAgICAvLyB3ZSBhcmUgaW4gdGhlIG1pZGRsZVxuICAgIGNvbnN0IGZpcnN0ZXh0ZXJuU2VjdGlvbldpZHRoID0gdGhpcy5uYkNhcmRzSW5BbkV4dHJlbVNlY3Rpb25zICogQ0FSRF9XSURUSDtcbiAgICBjb25zdCBtaWRkbGVTZWN0aW9uV2lkdGggPSAodGhpcy5jdXJyZW50U2VjdGlvbiAtIDEpICogdGhpcy5uYkNhcmRzSW5BTWlkZGxlU2VjdGlvbiAqIENBUkRfV0lEVEg7XG4gICAgcmV0dXJuIGZpcnN0ZXh0ZXJuU2VjdGlvbldpZHRoICsgbWlkZGxlU2VjdGlvbldpZHRoIC0gU0xJREVSX1dJRFRIIDtcbiAgfVxuXG4gIHNsaWRlTGVmdCgpIHtcbiAgICAvLyBjdXJyZW50IHNlY3Rpb24gY2FuIGJlIGEgZmxvYXQgaWYgc2NyZWVuIGlzIHJlc2l6ZWRcbiAgICB0aGlzLmN1cnJlbnRTZWN0aW9uID0gTWF0aC5tYXgodGhpcy5jdXJyZW50U2VjdGlvbiAtIDEsIDApO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLnNlbmRFdmVudHMoKTtcbiAgfVxuXG4gIHNsaWRlUmlnaHQoKSB7XG4gICAgLy8gY3VycmVudCBzZWN0aW9uIGNhbiBiZSBhIGZsb2F0IGlmIHNjcmVlbiBpcyByZXNpemVkXG4gICAgdGhpcy5jdXJyZW50U2VjdGlvbiA9IE1hdGgubWluKHRoaXMuY3VycmVudFNlY3Rpb24gKyAxLCB0aGlzLm51bWJlck9mU2VjdGlvbnMgLSAxKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5zZW5kRXZlbnRzKCk7XG4gIH1cblxuICBzZW5kRXZlbnRzKCkge1xuICAgIC8vIHNldCBhIGRlYm91bmNlIHRvIGxldCB0aGUgdmlldyB1cGRhdGUgYW5kIHJlY2lwZSB0byBiZSBpbiB2aWV3cG9ydFxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gdGhlIHNlbmQgc2hvdyBldmVudCBjaGVjayBpZiBjYXJkIGlzIGluIHZpZXdcbiAgICAgIHRoaXMucmVjaXBlQ2FyZHMuZm9yRWFjaCggcmVjaXBlQ2FyZCA9PiB7XG4gICAgICAgIHJlY2lwZUNhcmQuc2VuZFNob3dFdmVudCgnc2hvdy1yZWNpcGUtY2FyZC1jYXRhbG9nJyk7XG4gICAgICAgIHJlY2lwZUNhcmQuZGlzcGxheVByaWNlKCk7XG4gICAgICB9KTtcbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB0byBjYWxsIHdoZW4gY29tcG9uZW50IHJlc2l6ZWRcbiAgICovXG4gIHVwZGF0ZVdpZHRoKCl7XG4gICAgY29uc3Qgb2xkTmJPZkNhcmRzSW5BbkV4dHJlbVNlY3Rpb24gPSB0aGlzLm5iQ2FyZHNJbkFuRXh0cmVtU2VjdGlvbnM7XG4gICAgY29uc3Qgb2xkTmJDYXJkc0luQU1pZGRsZVNlY3Rpb24gPSB0aGlzLm5iQ2FyZHNJbkFNaWRkbGVTZWN0aW9uO1xuICAgIGNvbnN0IGN1cnJlbnRTZWN0aW9uV2FzRmlyc3QgPSB0aGlzLmN1cnJlbnRTZWN0aW9uID09PSAwO1xuICAgIGNvbnN0IGN1cnJlbnRTZWN0aW9uV2FzTGFzdCA9IHRoaXMuY3VycmVudFNlY3Rpb24gPT09IHRoaXMubnVtYmVyT2ZTZWN0aW9ucyAtIDE7XG4gICAgdGhpcy5yZWNhbGN1bGF0ZVNlY3Rpb25zKCk7XG4gICAgaWYgKGN1cnJlbnRTZWN0aW9uV2FzRmlyc3QpIHtcbiAgICAgIHRoaXMuY3VycmVudFNlY3Rpb24gPSAwO1xuICAgIH0gZWxzZSBpZiAoY3VycmVudFNlY3Rpb25XYXNMYXN0KSB7XG4gICAgICB0aGlzLmN1cnJlbnRTZWN0aW9uID0gdGhpcy5udW1iZXJPZlNlY3Rpb25zIC0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gd2Ugd2FudCBvbGRDYXJkc0ZvckZpcnN0U2VjdGlvbiArIG9sZENhcmRzQnlTZWN0aW9uICogY3VycmVudFNlY3Rpb24gPSBjYXJkc0ZvckZpcnN0U2VjdGlvbiArIGNhcmRzQnRTZWN0aW9uICogbmV3X2N1cnJlbnRTZWN0aW9uXG4gICAgICAvLyBvdXIgZ29hbCBpcyB0byBrZWVwIHRoZSBzYW1lIGNhcmQgYXQgdGhlIHN0YXJ0IG9mIG91ciB2aXNpYmxlIGRpdlxuICAgICAgY29uc3QgZmlyc3RTZWN0aW9uRGVsdGEgPSBvbGROYk9mQ2FyZHNJbkFuRXh0cmVtU2VjdGlvbiAtIHRoaXMubmJDYXJkc0luQW5FeHRyZW1TZWN0aW9ucztcbiAgICAgIHRoaXMuY3VycmVudFNlY3Rpb24gPSAoZmlyc3RTZWN0aW9uRGVsdGEgKyB0aGlzLmN1cnJlbnRTZWN0aW9uICogb2xkTmJDYXJkc0luQU1pZGRsZVNlY3Rpb24pIC8gdGhpcy5uYkNhcmRzSW5BTWlkZGxlU2VjdGlvbjtcbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZGlzcGxheUxpc3RNb2RlKCkge1xuICAgIHRoaXMuZGlzcGxheUxpc3QuZW1pdCh7dGl0bGU6IHRoaXMudGl0bGUsIGZpbHRlcnM6IHRoaXMuZmlsdGVyc30pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1jYXRlZ29yeVwiPlxuICA8ZGl2IGNsYXNzPVwibWlhbS1jYXRhbG9nLWNhdGVnb3J5X19oZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1jYXRhbG9nLWNhdGVnb3J5X190aXRsZVwiIChjbGljayk9XCJkaXNwbGF5TGlzdE1vZGUoKVwiPnt7dGl0bGV9fTwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLWNhdGFsb2ctY2F0ZWdvcnlfX2xpbmtcIiAoY2xpY2spPVwiZGlzcGxheUxpc3RNb2RlKClcIj5Wb2lyIHRvdXQ8L2Rpdj5cbiAgICA8bmctbWlhbS1pY29uIGhlaWdodD0nMjAnIHdpZHRoPScyMCcgcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci1ncmV5LXRleHQpXCIoY2xpY2spPVwiZGlzcGxheUxpc3RNb2RlKClcIlxuICAgIFtpY29uTmFtZV09XCJpY29uLkNoZXZyb25Eb3duXCI+XG4gICAgPC9uZy1taWFtLWljb24+XG4gIDwvZGl2PlxuICA8ZGl2ICNjYXRlZ29yeUNvbnRlbnQgY2xhc3M9XCJtaWFtLWNhdGFsb2ctY2F0ZWdvcnlfX2NvbnRlbnRcIj5cbiAgICA8ZGl2ICNjYXRlZ29yeUNhcmRzIGNsYXNzPVwibWlhbS1jYXRhbG9nLWNhdGVnb3J5X19jYXJkc1wiIFxuICAgICAgW25nU3R5bGVdPVwieyd0cmFuc2Zvcm0nOiAndHJhbnNsYXRlWCgtJyArIHhUcmFuc2xhdGlvbigpICsgJ3B4KSd9XCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiaXNMb2FkaW5nXCIgY2xhc3M9XCJtaWFtLWNhdGFsb2ctY2F0ZWdvcnlfX2xvYWRlclwiPlxuICAgICAgICA8bmctbWlhbS1sb2FkZXI+PC9uZy1taWFtLWxvYWRlcj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICBDaGFyZ2VtZW50IGRlcyByZWNldHRlcy4uLlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLW1pYW0tY2F0YWxvZy1yZWNpcGUtY2FyZCAgY2xhc3M9XCJtaWFtLWNhdGFsb2ctY2F0ZWdvcnlfX2NhcmRcIiAqbmdGb3I9XCJsZXQgcmVjaXBlIG9mIHJlY2lwZXNcIiBbcmVjaXBlXT0ncmVjaXBlJz48L25nLW1pYW0tY2F0YWxvZy1yZWNpcGUtY2FyZD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwibnVtYmVyT2ZTZWN0aW9ucyA+IDEgJiYgY3VycmVudFNlY3Rpb24gIT0gMFwiIChjbGljayk9XCJzbGlkZUxlZnQoKVwiIGNsYXNzPVwibWlhbS1jYXRhbG9nLWNhdGVnb3J5X19zbGlkZXJfX2xlZnRcIj5cbiAgICAgIDxuZy1taWFtLWljb24gaGVpZ2h0PSc1Nicgd2lkdGg9JzU2JyBwcmltYXJ5Q29sb3I9XCJ2YXIoLS1tLWNvbG9yLXdoaXRlKVwiICBbaWNvbk5hbWVdPVwiaWNvbi5DaGV2cm9uRG93blwiPjwvbmctbWlhbS1pY29uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJudW1iZXJPZlNlY3Rpb25zID4gMSAmJiAoY3VycmVudFNlY3Rpb24gIT0gbnVtYmVyT2ZTZWN0aW9ucyAtIDEpXCIgKGNsaWNrKT1cInNsaWRlUmlnaHQoKVwiIGNsYXNzPVwibWlhbS1jYXRhbG9nLWNhdGVnb3J5X19zbGlkZXJfX3JpZ2h0XCI+XG4gICAgICA8bmctbWlhbS1pY29uIGhlaWdodD0nNTYnIHdpZHRoPSc1NicgcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci13aGl0ZSlcIiAgW2ljb25OYW1lXT1cImljb24uQ2hldnJvbkRvd25cIj48L25nLW1pYW0taWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
299
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1jYXRlZ29yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2J1aWxkcy9taWFtL25nLW1pYW0tc2RrL3Byb2plY3RzL25nLW1pYW0vc3JjLyIsInNvdXJjZXMiOlsibGliL193ZWItY29tcG9uZW50cy9jYXRhbG9nLWNhdGVnb3J5L2NhdGFsb2ctY2F0ZWdvcnkuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9jYXRhbG9nLWNhdGVnb3J5L2NhdGFsb2ctY2F0ZWdvcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBd0IsTUFBTSxFQUFFLFNBQVMsRUFDdEksU0FBUyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwRSxPQUFPLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEcsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOzs7Ozs7Ozs7OztJQ0U1RiwrQkFDRTtJQUFBLGlDQUFpQztJQUNqQywyQkFDRTtJQUFBLGtEQUNGO0lBQUEsaUJBQU07SUFDUixpQkFBTTs7O0lBQ04sa0RBQWdKOzs7SUFBaEQsa0NBQWlCOzs7SUFDakgsbURBQXNKOzs7SUFBbkQsb0NBQW1COzs7O0lBRXhILCtCQUNFO0lBRHVELG1NQUFxQjtJQUM1RSxtQ0FBdUg7SUFDekgs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QkFBQyxlQUFlO1lBQ2lCLFdBQVc7a0JBQXJELFlBQVk7bUJBQUMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPdXRwdXQsIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4sIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb2N1bWVudENvbGxlY3Rpb24gfSBmcm9tICduZ3gtanNvbmFwaSc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmluYWxpemUsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXJ0aWNsZSwgUmVjaXBlIH0gZnJvbSAnLi4vLi4vX21vZGVscyc7XG5pbXBvcnQgeyBBcnRpY2xlc1NlcnZpY2UsIENvbnRleHRTZXJ2aWNlLCBSZWNpcGVMaWtlc1NlcnZpY2UsIFJlY2lwZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuLi8uLi9fdHlwZXMvaWNvbi5lbnVtJztcbmltcG9ydCB7IENhdGFsb2dSZWNpcGVDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vY2F0YWxvZy1yZWNpcGUtY2FyZC9jYXRhbG9nLXJlY2lwZS1jYXJkLmNvbXBvbmVudCc7XG5cbi8vIG1pYW0tY2F0YWxvZy1yZWNpcGUtY2FyZCA6IHdpZHRoID0gMzMwcHggKyBtaWFtLWNhdGFsb2ctY2F0ZWdvcnlfX2NhcmQgOiBtYXJnaW4gOiAxNnB4XG4vLyB3ZSBpbmNsdWRlIGEgbWFyZ2luIGluIHRoZSBjYXJkIHRvIGdldCBhIHNwYWNlIHRoaXMgaXMgdGhlIGNhcmQgd2lkdGggKyB0aGUgbWFyZ2luXG5jb25zdCBDQVJEX1dJRFRIID0gMzQ2O1xuY29uc3QgU1BBQ0VfQkVUV0VFTl9DQVJEID0gMTY7XG5jb25zdCBTTElERVJfV0lEVEggPSA0ODtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctbWlhbS1jYXRhbG9nLWNhdGVnb3J5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhdGFsb2ctY2F0ZWdvcnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXRhbG9nLWNhdGVnb3J5LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIENhdGFsb2dDYXRlZ29yeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgZmlsdGVyczogYW55OyAvLyBSZW1vdGVmaWx0ZXJzIGZvciB0aGUgcmVxdWVzdCAoZXg6IHsgY29zdDogXCIzLGVxXCIsIHNlYXJjaDpcInBvbW1lcyBkZSB0ZXJyZVwifSlcbiAgQElucHV0KCkgdGl0bGUgPSAnJztcbiAgQE91dHB1dCgpIGRpc3BsYXlMaXN0OiBFdmVudEVtaXR0ZXI8YW55PjtcblxuICBAVmlld0NoaWxkKCdjYXRlZ29yeUNvbnRlbnQnKSBjYXRlZ29yeUNvbnRlbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2NhdGVnb3J5Q2FyZHMnKSBjYXRlZ29yeUNhcmRzOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkcmVuKENhdGFsb2dSZWNpcGVDYXJkQ29tcG9uZW50KSAgcmVjaXBlQ2FyZHMhOiBRdWVyeUxpc3Q8Q2F0YWxvZ1JlY2lwZUNhcmRDb21wb25lbnQ+O1xuXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdO1xuICByZWNpcGVzOiBSZWNpcGVbXSA9IFtdO1xuICBhcnRpY2xlczogQXJ0aWNsZVtdID0gW107XG4gIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgaGlkZSA9IGZhbHNlO1xuICBpY29uID0gSWNvbjtcblxuICBjYXJkc1RvdGFsU2l6ZSA9IDA7IC8vIG5hdGl2ZSBzaXplIG9mIHRoZSBjYXJkIGNvbnRhaW4gaW5jbHVkaW5nIG92ZXJmbG93XG4gIG51bWJlck9mU2VjdGlvbnMgPSAxOyAgLy8gbnVtYmVyIG9mIGNhcmQgZ3JvdXAgdGhhdCBmaXQgaW4gY2FyZHNUb3RhbFNpemVcbiAgY3VycmVudFNlY3Rpb24gPSAwOyAvLyBpbmRleCBvZiB0aGUgc2VjdGlvbiBzaG93IG9uIHNjcmVlblxuICBuYkNhcmRzSW5BbkV4dHJlbWVTZWN0aW9uID0gMDsgLy8gbmIgb2YgY2FyZCB0aGF0IGNhbiBmaXQgaW4gc2NyZWVuIHdpdGggb25lIHNjcm9sbCBidXR0b25cbiAgbmJDYXJkc0luQU1pZGRsZVNlY3Rpb24gPSAwOyAvLyBuYiBvZiBjYXJkIHRoYXQgY2FuIGZpdCBpbiBzY3JlZW4gd2l0aCB0d28gc2Nyb2xsIGJ1dHRvbnNcbiAgY2F0ZWdvcnlCYW5kV2lkdGggPSAwOyAvLyBuYXRpdmUgc2l6ZSBvZiB2aXNpYmxlIGNhcmQgY29udGFpbmVyIHNjcm9sbCBidXR0b25cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlY2lwZXNTZXJ2aWNlOiBSZWNpcGVzU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZUxpa2VzU2VydmljZTogUmVjaXBlTGlrZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXJ0aWNsZXNTZXJ2aWNlOiBBcnRpY2xlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0OiBDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy5kaXNwbGF5TGlzdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICB0aGlzLnJlY2lwZXMgPSBbXTtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIGZvcmtKb2luKFt0aGlzLmxvYWRSZWNpcGVzKCksIHRoaXMubG9hZEFydGljbGVzKCldKS5waXBlKFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMucmVjaXBlcy5sZW5ndGggPT09IDAgJiYgdGhpcy5hcnRpY2xlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZSA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVTZWN0aW9ucygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSlcbiAgICAgICkuc3Vic2NyaWJlKClcbiAgICApO1xuICB9XG5cbiAgbG9hZFJlY2lwZXMoKTogT2JzZXJ2YWJsZTxSZWNpcGVbXT4ge1xuICAgIGlmICghdGhpcy5maWx0ZXJzKSB7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlY2lwZXNTZXJ2aWNlLmdldFJhbmRvbSh7IHNpemU6IDIwLCBudW1iZXI6IDEgfSwgdGhpcy5maWx0ZXJzKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChyZXN1bHQ6IFJlY2lwZVtdKSA9PiB7XG4gICAgICAgIHRoaXMucmVjaXBlcyA9IHJlc3VsdDtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVjaXBlTGlrZXNTZXJ2aWNlLmFkZExpa2VzVG9SZWNpcGVzKHJlc3VsdCk7XG4gICAgICB9KSxcbiAgICAgIG1hcCgoKSA9PiB0aGlzLnJlY2lwZXMpXG4gICAgKTtcbiAgfVxuXG4gIGxvYWRBcnRpY2xlcygpOiBPYnNlcnZhYmxlPEFydGljbGVbXT4ge1xuICAgIC8vIFRPRE86IGFsbCBjb250ZW50cyAocmVjaXBlcywgYXJ0aWNsZXMuLi4pIHNob3VsZCBiZSByZWxhdGVkIHRvIHBhY2thZ2VzLCB0byB3aGljaCBmaWx0ZXJzIGNvdWxkIGJlIGF0dGFjaGVkXG4gICAgaWYgKCF0aGlzLmZpbHRlcnM/LnBhY2thZ2VzIHx8ICF0aGlzLmNvbnRleHQuYXJ0aWNsZXNJbkNhdGFsb2dFbmFibGVkKSB7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFydGljbGVzU2VydmljZS5hbGwoeyByZW1vdGVmaWx0ZXI6IHRoaXMuZmlsdGVycywgc29ydDogWyctZGF0ZSddIH0pLnBpcGUoXG4gICAgICBtYXAoKHJlc3VsdDogRG9jdW1lbnRDb2xsZWN0aW9uPEFydGljbGU+KSA9PiB7XG4gICAgICAgIHRoaXMuYXJ0aWNsZXMgPSByZXN1bHQuZGF0YTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXJ0aWNsZXM7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBjcmVhdGVTZWN0aW9ucygpIHtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5jYXJkc1RvdGFsU2l6ZSA9IHRoaXMuY2F0ZWdvcnlDYXJkcy5uYXRpdmVFbGVtZW50LnNjcm9sbFdpZHRoOyAvLyBhcHByb3ggbnVtYmVyIG9mIHJlY2lwZXMgKiBDQVJEX1dJRFRIXG4gICAgdGhpcy5yZWNhbGN1bGF0ZVNlY3Rpb25zKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmVjYWxjdWxhdGVTZWN0aW9ucygpe1xuICAgIC8vIHRoZSBzaXplIG9mIHRoZSB3aW5kb3cgaW4gd2hpY2ggd2UgcHV0IHJlY2lwZXMgYW5kIHNsaWRlcnNcbiAgICB0aGlzLmNhdGVnb3J5QmFuZFdpZHRoID0gdGhpcy5jYXRlZ29yeUNvbnRlbnQubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICAvLyBhdCBzdGFydCB3ZSBoYXZlIG9ubHkgb25lIHNsaWRlciwgdHdvIGluIHRoZSBtaWRsZSBzbyB3ZSBtYXkgbm90IGJlIGFibGUgdG8gZml0IHNhbWUgbnVtYmVyIG9mIGNhcmRzXG4gICAgdGhpcy5uYkNhcmRzSW5BbkV4dHJlbWVTZWN0aW9uID0gIE1hdGguZmxvb3IoKHRoaXMuY2F0ZWdvcnlCYW5kV2lkdGggLSBTTElERVJfV0lEVEgpIC8gQ0FSRF9XSURUSCk7XG4gICAgdGhpcy5uYkNhcmRzSW5BTWlkZGxlU2VjdGlvbiA9IE1hdGguZmxvb3IoKHRoaXMuY2F0ZWdvcnlCYW5kV2lkdGggLSAyICogU0xJREVSX1dJRFRIKSAvIENBUkRfV0lEVEgpO1xuXG4gICAgY29uc3QgdG90YWxXaWR0aE9mQ2FyZHNJbkFuRXh0cmVtZVNlY3Rpb24gPSB0aGlzLm5iQ2FyZHNJbkFuRXh0cmVtZVNlY3Rpb24gKiBDQVJEX1dJRFRIO1xuICAgIGNvbnN0IHRvdGFsV2lkdGhPZkNhcmRzbWlkZGxlU2VjdGlvbiA9IHRoaXMubmJDYXJkc0luQU1pZGRsZVNlY3Rpb24gKiBDQVJEX1dJRFRIO1xuXG4gICAgY29uc3Qgb25seU9uZVNlY3Rpb24gPSB0aGlzLmNhdGVnb3J5QmFuZFdpZHRoID49IHRoaXMuY2FyZHNUb3RhbFNpemU7XG4gICAgY29uc3QgdHdvU2VjdGlvbnMgPSB0b3RhbFdpZHRoT2ZDYXJkc0luQW5FeHRyZW1lU2VjdGlvbiAqIDIgPj0gdGhpcy5jYXJkc1RvdGFsU2l6ZTtcbiAgICBpZiAob25seU9uZVNlY3Rpb24pIHtcbiAgICAgIHRoaXMubnVtYmVyT2ZTZWN0aW9ucyA9IDE7XG4gICAgfSBlbHNlIGlmICh0d29TZWN0aW9ucykge1xuICAgICAgdGhpcy5udW1iZXJPZlNlY3Rpb25zID0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaW4gdGhlIGNhc2Ugd2UgaGF2ZSBhdCBsZWFzdCB0aGUgc3RhcnRpbmcgc2VjdGlvbiB0aGUgZW5kaW5nIHNlY3Rpb24gYW5kIG9uZSBvciBtb3JlIG1pZGRsZSBzZWN0aW9uXG4gICAgICAvLyAgMiAqIGNhcmRzSW5BbkV4dHJlbVNlY3Rpb25zID0+IG5iIGNhcmRzIGluIGV4dHJlbSBzZWN0aW9uXG4gICAgICAvLyB0aGlzLmNhcmRzVG90YWxTaXplIC0gMiAqIGNhcmRzSW5BbkV4dHJlbVNlY3Rpb25zID0+IG5iIGNhcmQgaW4gbWlkZGxlIHNlY3Rpb25cbiAgICAgIHRoaXMubnVtYmVyT2ZTZWN0aW9ucyA9IDIgKyAodGhpcy5jYXJkc1RvdGFsU2l6ZSAtIDIgKiB0b3RhbFdpZHRoT2ZDYXJkc0luQW5FeHRyZW1lU2VjdGlvbikgLyB0b3RhbFdpZHRoT2ZDYXJkc21pZGRsZVNlY3Rpb247XG4gICAgfVxuICB9XG5cbiAgeFRyYW5zbGF0aW9uKCkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRTZWN0aW9uID09PSAwKXtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50U2VjdGlvbiA9PT0gKHRoaXMubnVtYmVyT2ZTZWN0aW9ucyAtIDEpKXtcbiAgICAgIC8vIHRoZSBjYXJkIGNvbnRhaW4gYSBzcGFjZSBvZiBTUEFDRV9CRVRXRUVOX0NBUkQgb24gdGhlIExFRlQsIHdlIGEgYSBzcGFjZSBhdCB0aGUgZW5kIGZvciBkaXNwbGF5IHB1cnBvc2VcbiAgICAgIHJldHVybiB0aGlzLmNhcmRzVG90YWxTaXplIC0gdGhpcy5jYXRlZ29yeUJhbmRXaWR0aCArIFNQQUNFX0JFVFdFRU5fQ0FSRDtcbiAgICB9XG4gICAgLy8gd2UgYXJlIGluIHRoZSBtaWRkbGVcbiAgICBjb25zdCBmaXJzdGV4dGVyblNlY3Rpb25XaWR0aCA9IHRoaXMubmJDYXJkc0luQW5FeHRyZW1lU2VjdGlvbiAqIENBUkRfV0lEVEg7XG4gICAgY29uc3QgbWlkZGxlU2VjdGlvbldpZHRoID0gKHRoaXMuY3VycmVudFNlY3Rpb24gLSAxKSAqIHRoaXMubmJDYXJkc0luQU1pZGRsZVNlY3Rpb24gKiBDQVJEX1dJRFRIO1xuICAgIHJldHVybiBmaXJzdGV4dGVyblNlY3Rpb25XaWR0aCArIG1pZGRsZVNlY3Rpb25XaWR0aCAtIFNMSURFUl9XSURUSCA7XG4gIH1cblxuICBzbGlkZUxlZnQoKSB7XG4gICAgLy8gY3VycmVudCBzZWN0aW9uIGNhbiBiZSBhIGZsb2F0IGlmIHNjcmVlbiBpcyByZXNpemVkXG4gICAgdGhpcy5jdXJyZW50U2VjdGlvbiA9IE1hdGgubWF4KHRoaXMuY3VycmVudFNlY3Rpb24gLSAxLCAwKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5zZW5kRXZlbnRzKCk7XG4gIH1cblxuICBzbGlkZVJpZ2h0KCkge1xuICAgIC8vIGN1cnJlbnQgc2VjdGlvbiBjYW4gYmUgYSBmbG9hdCBpZiBzY3JlZW4gaXMgcmVzaXplZFxuICAgIHRoaXMuY3VycmVudFNlY3Rpb24gPSBNYXRoLm1pbih0aGlzLmN1cnJlbnRTZWN0aW9uICsgMSwgdGhpcy5udW1iZXJPZlNlY3Rpb25zIC0gMSk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuc2VuZEV2ZW50cygpO1xuICB9XG5cbiAgc2VuZEV2ZW50cygpIHtcbiAgICAvLyBzZXQgYSBkZWJvdW5jZSB0byBsZXQgdGhlIHZpZXcgdXBkYXRlIGFuZCByZWNpcGUgdG8gYmUgaW4gdmlld3BvcnRcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vIHRoZSBzZW5kIHNob3cgZXZlbnQgY2hlY2sgaWYgY2FyZCBpcyBpbiB2aWV3XG4gICAgICB0aGlzLnJlY2lwZUNhcmRzLmZvckVhY2goIHJlY2lwZUNhcmQgPT4ge1xuICAgICAgICByZWNpcGVDYXJkLnNlbmRTaG93RXZlbnQoJ3Nob3ctcmVjaXBlLWNhcmQtY2F0YWxvZycpO1xuICAgICAgICByZWNpcGVDYXJkLmRpc3BsYXlQcmljZSgpO1xuICAgICAgfSk7XG4gICAgfSwgMTAwMCk7XG4gIH1cblxuICAvKipcbiAgICogdG8gY2FsbCB3aGVuIGNvbXBvbmVudCByZXNpemVkXG4gICAqL1xuICB1cGRhdGVXaWR0aCgpe1xuICAgIGNvbnN0IG9sZE5iT2ZDYXJkc0luQW5FeHRyZW1TZWN0aW9uID0gdGhpcy5uYkNhcmRzSW5BbkV4dHJlbWVTZWN0aW9uO1xuICAgIGNvbnN0IG9sZE5iQ2FyZHNJbkFNaWRkbGVTZWN0aW9uID0gdGhpcy5uYkNhcmRzSW5BTWlkZGxlU2VjdGlvbjtcbiAgICBjb25zdCBjdXJyZW50U2VjdGlvbldhc0ZpcnN0ID0gdGhpcy5jdXJyZW50U2VjdGlvbiA9PT0gMDtcbiAgICBjb25zdCBjdXJyZW50U2VjdGlvbldhc0xhc3QgPSB0aGlzLmN1cnJlbnRTZWN0aW9uID09PSB0aGlzLm51bWJlck9mU2VjdGlvbnMgLSAxO1xuICAgIHRoaXMucmVjYWxjdWxhdGVTZWN0aW9ucygpO1xuICAgIGlmIChjdXJyZW50U2VjdGlvbldhc0ZpcnN0KSB7XG4gICAgICB0aGlzLmN1cnJlbnRTZWN0aW9uID0gMDtcbiAgICB9IGVsc2UgaWYgKGN1cnJlbnRTZWN0aW9uV2FzTGFzdCkge1xuICAgICAgdGhpcy5jdXJyZW50U2VjdGlvbiA9IHRoaXMubnVtYmVyT2ZTZWN0aW9ucyAtIDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHdlIHdhbnQgb2xkQ2FyZHNGb3JGaXJzdFNlY3Rpb24gKyBvbGRDYXJkc0J5U2VjdGlvbiAqIGN1cnJlbnRTZWN0aW9uID0gY2FyZHNGb3JGaXJzdFNlY3Rpb24gKyBjYXJkc0J0U2VjdGlvbiAqIG5ld19jdXJyZW50U2VjdGlvblxuICAgICAgLy8gb3VyIGdvYWwgaXMgdG8ga2VlcCB0aGUgc2FtZSBjYXJkIGF0IHRoZSBzdGFydCBvZiBvdXIgdmlzaWJsZSBkaXZcbiAgICAgIGNvbnN0IGZpcnN0U2VjdGlvbkRlbHRhID0gb2xkTmJPZkNhcmRzSW5BbkV4dHJlbVNlY3Rpb24gLSB0aGlzLm5iQ2FyZHNJbkFuRXh0cmVtZVNlY3Rpb247XG4gICAgICB0aGlzLmN1cnJlbnRTZWN0aW9uID0gKGZpcnN0U2VjdGlvbkRlbHRhICsgdGhpcy5jdXJyZW50U2VjdGlvbiAqIG9sZE5iQ2FyZHNJbkFNaWRkbGVTZWN0aW9uKSAvIHRoaXMubmJDYXJkc0luQU1pZGRsZVNlY3Rpb247XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGRpc3BsYXlMaXN0TW9kZSgpIHtcbiAgICB0aGlzLmRpc3BsYXlMaXN0LmVtaXQoe3RpdGxlOiB0aGlzLnRpdGxlLCBmaWx0ZXJzOiB0aGlzLmZpbHRlcnN9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtaWFtLWNhdGFsb2ctY2F0ZWdvcnlcIiAqbmdJZj1cIiFoaWRlXCI+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLWNhdGFsb2ctY2F0ZWdvcnlfX2hlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLWNhdGFsb2ctY2F0ZWdvcnlfX3RpdGxlXCIgKGNsaWNrKT1cImRpc3BsYXlMaXN0TW9kZSgpXCI+e3t0aXRsZX19PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1jYXRlZ29yeV9fbGlua1wiIChjbGljayk9XCJkaXNwbGF5TGlzdE1vZGUoKVwiPlZvaXIgdG91dDwvZGl2PlxuICAgIDxuZy1taWFtLWljb24gaGVpZ2h0PScyMCcgd2lkdGg9JzIwJyBwcmltYXJ5Q29sb3I9XCJ2YXIoLS1tLWNvbG9yLWdyZXktdGV4dClcIihjbGljayk9XCJkaXNwbGF5TGlzdE1vZGUoKVwiXG4gICAgW2ljb25OYW1lXT1cImljb24uQ2hldnJvbkRvd25cIj5cbiAgICA8L25nLW1pYW0taWNvbj5cbiAgPC9kaXY+XG4gIDxkaXYgI2NhdGVnb3J5Q29udGVudCBjbGFzcz1cIm1pYW0tY2F0YWxvZy1jYXRlZ29yeV9fY29udGVudFwiPlxuICAgIDxkaXYgI2NhdGVnb3J5Q2FyZHMgY2xhc3M9XCJtaWFtLWNhdGFsb2ctY2F0ZWdvcnlfX2NhcmRzXCIgW25nU3R5bGVdPVwieyd0cmFuc2Zvcm0nOiAndHJhbnNsYXRlWCgtJyArIHhUcmFuc2xhdGlvbigpICsgJ3B4KSd9XCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiaXNMb2FkaW5nXCIgY2xhc3M9XCJtaWFtLWNhdGFsb2ctY2F0ZWdvcnlfX2xvYWRlclwiPlxuICAgICAgICA8bmctbWlhbS1sb2FkZXI+PC9uZy1taWFtLWxvYWRlcj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICBDaGFyZ2VtZW50IGRlcyByw6lzdWx0YXRzLi4uXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctbWlhbS1jYXRhbG9nLXJlY2lwZS1jYXJkIGNsYXNzPVwibWlhbS1jYXRhbG9nLWNhdGVnb3J5X19jYXJkXCIgKm5nRm9yPVwibGV0IHJlY2lwZSBvZiByZWNpcGVzXCIgW3JlY2lwZV09J3JlY2lwZSc+PC9uZy1taWFtLWNhdGFsb2ctcmVjaXBlLWNhcmQ+XG4gICAgICA8bmctbWlhbS1jYXRhbG9nLWFydGljbGUtY2FyZCBjbGFzcz1cIm1pYW0tY2F0YWxvZy1jYXRlZ29yeV9fY2FyZFwiICpuZ0Zvcj1cImxldCBhcnRpY2xlIG9mIGFydGljbGVzXCIgW2FydGljbGVdPVwiYXJ0aWNsZVwiPjwvbmctbWlhbS1jYXRhbG9nLWFydGljbGUtY2FyZD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwibnVtYmVyT2ZTZWN0aW9ucyA+IDEgJiYgY3VycmVudFNlY3Rpb24gIT0gMFwiIChjbGljayk9XCJzbGlkZUxlZnQoKVwiIGNsYXNzPVwibWlhbS1jYXRhbG9nLWNhdGVnb3J5X19zbGlkZXJfX2xlZnRcIj5cbiAgICAgIDxuZy1taWFtLWljb24gaGVpZ2h0PSc1Nicgd2lkdGg9JzU2JyBwcmltYXJ5Q29sb3I9XCJ2YXIoLS1tLWNvbG9yLXdoaXRlKVwiICBbaWNvbk5hbWVdPVwiaWNvbi5DaGV2cm9uRG93blwiPjwvbmctbWlhbS1pY29uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJudW1iZXJPZlNlY3Rpb25zID4gMSAmJiAoY3VycmVudFNlY3Rpb24gIT0gbnVtYmVyT2ZTZWN0aW9ucyAtIDEpXCIgKGNsaWNrKT1cInNsaWRlUmlnaHQoKVwiIGNsYXNzPVwibWlhbS1jYXRhbG9nLWNhdGVnb3J5X19zbGlkZXJfX3JpZ2h0XCI+XG4gICAgICA8bmctbWlhbS1pY29uIGhlaWdodD0nNTYnIHdpZHRoPSc1NicgcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci13aGl0ZSlcIiAgW2ljb25OYW1lXT1cImljb24uQ2hldnJvbkRvd25cIj48L25nLW1pYW0taWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=