ng-miam 6.4.13 → 7.0.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 (208) hide show
  1. package/bundles/ng-miam.umd.js +8539 -10855
  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/event-tracer.component.js +3 -2
  6. package/esm2015/lib/_components/accordion/accordion.component.js +75 -0
  7. package/esm2015/lib/_components/components.module.js +27 -21
  8. package/esm2015/lib/_components/counter-input/counter-input.component.js +86 -76
  9. package/esm2015/lib/_components/icon/icon.component.js +1 -1
  10. package/esm2015/lib/_components/index.js +5 -5
  11. package/esm2015/lib/_components/like-button/like-button.component.js +1 -1
  12. package/esm2015/lib/_components/list-input/list-input.component.js +5 -5
  13. package/esm2015/lib/_components/loader/loader.component.js +1 -1
  14. package/esm2015/lib/_components/meals-planner-link/meals-planner-link.component.js +3 -3
  15. package/esm2015/lib/_components/modal/modal.component.js +155 -137
  16. package/esm2015/lib/_components/product-card/product-card.component.js +333 -0
  17. package/esm2015/lib/_components/products-picker/products-picker.component.js +155 -0
  18. package/esm2015/lib/_components/progress-tracker/progress-tracker.component.js +1 -1
  19. package/esm2015/lib/_components/recipe-filters/recipe-filters.component.js +166 -217
  20. package/esm2015/lib/_components/recipe-pricing/recipe-pricing.component.js +55 -35
  21. package/esm2015/lib/_components/slider-tabs/slider-tabs.component.js +84 -0
  22. package/esm2015/lib/_components/sponsor-blocks/sponsor-image-and-text-block/sponsor-image-and-text-block.component.js +1 -1
  23. package/esm2015/lib/_components/sponsor-blocks/sponsor-text-and-image-block/sponsor-text-and-image-block.component.js +1 -1
  24. package/esm2015/lib/_components/tabs/tabs.component.js +48 -88
  25. package/esm2015/lib/_components/toaster/toaster.component.js +48 -84
  26. package/esm2015/lib/_components/tooltipable-content/tooltipable-content.component.js +1 -1
  27. package/esm2015/lib/_models/basket-entry.js +33 -49
  28. package/esm2015/lib/_models/basket-preview-line.js +5 -5
  29. package/esm2015/lib/_models/basket.js +15 -12
  30. package/esm2015/lib/_models/item.js +2 -2
  31. package/esm2015/lib/_models/recipe.js +2 -15
  32. package/esm2015/lib/_models/user.js +1 -1
  33. package/esm2015/lib/_services/analytics.service.js +24 -5
  34. package/esm2015/lib/_services/baskets-synchronizing/baskets-comparator.service.js +1 -10
  35. package/esm2015/lib/_services/baskets-synchronizing/baskets-synchronizer.service.js +15 -15
  36. package/esm2015/lib/_services/baskets.service.js +478 -60
  37. package/esm2015/lib/_services/context.service.js +22 -35
  38. package/esm2015/lib/_services/index.js +3 -5
  39. package/esm2015/lib/_services/interceptor.service.js +2 -2
  40. package/esm2015/lib/_services/items.service.js +27 -4
  41. package/esm2015/lib/_services/recipe-details.service.js +198 -0
  42. package/esm2015/lib/_services/recipe-likes.service.js +1 -1
  43. package/esm2015/lib/_services/recipes.service.js +24 -53
  44. package/esm2015/lib/_services/scrolling.service.js +17 -0
  45. package/esm2015/lib/_services/toaster.service.js +4 -5
  46. package/esm2015/lib/_services/user.service.js +2 -2
  47. package/esm2015/lib/_types/basket-action-type.enum.js +11 -0
  48. package/esm2015/lib/_types/basket-action.js +2 -0
  49. package/esm2015/lib/_types/basket-stats.js +2 -0
  50. package/esm2015/lib/_types/builded/miam-interface.js +1 -1
  51. package/esm2015/lib/_types/event-trace.js +5 -0
  52. package/esm2015/lib/_types/items-comparator.js +1 -10
  53. package/esm2015/lib/_types/recipe-filters.js +1 -1
  54. package/esm2015/lib/_types/toaster.js +1 -1
  55. package/esm2015/lib/_utils/directives/index.js +2 -1
  56. package/esm2015/lib/_utils/directives/reach-top.directive.js +33 -0
  57. package/esm2015/lib/_utils/pipes/readable-float-number/readable-float-number.pipe.js +8 -2
  58. package/esm2015/lib/_utils/utils.module.js +12 -8
  59. package/esm2015/lib/_web-components/basket-preview/basket-preview-block/basket-preview-block.component.js +140 -118
  60. package/esm2015/lib/_web-components/basket-preview/basket-preview-disabled/basket-preview-disabled.component.js +2 -2
  61. package/esm2015/lib/_web-components/basket-preview/basket-preview-line/basket-preview-line.component.js +125 -444
  62. package/esm2015/lib/_web-components/basket-preview/replace-item/replace-item.component.js +211 -108
  63. package/esm2015/lib/_web-components/index.js +1 -4
  64. package/esm2015/lib/_web-components/list-scan/basket-preview/basket-preview.component.js +11 -14
  65. package/esm2015/lib/_web-components/list-scan/files-inputs/files-inputs.component.js +13 -13
  66. package/esm2015/lib/_web-components/list-scan/ingredients-list/ingredients-list.component.js +6 -6
  67. package/esm2015/lib/_web-components/list-scan/list-scan.component.js +10 -10
  68. package/esm2015/lib/_web-components/list-scan/overlay-button/overlay-button.component.js +23 -11
  69. package/esm2015/lib/_web-components/meals-planner/meals-planner-basket-confirmation/meals-planner-basket-confirmation.component.js +1 -1
  70. package/esm2015/lib/_web-components/meals-planner/meals-planner-catalog/meals-planner-catalog.component.js +1 -1
  71. package/esm2015/lib/_web-components/meals-planner/meals-planner-form/meals-planner-form.component.js +7 -7
  72. package/esm2015/lib/_web-components/meals-planner/meals-planner-result/meals-planner-result.component.js +5 -5
  73. package/esm2015/lib/_web-components/meals-planner/meals-planner.component.js +16 -20
  74. package/esm2015/lib/_web-components/planner-side-menu/planner-side-menu.component.js +4 -53
  75. package/esm2015/lib/_web-components/recipe-cards/add-recipe-card/add-recipe-card.component.js +1 -1
  76. package/esm2015/lib/_web-components/recipe-cards/index.js +1 -3
  77. package/esm2015/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.js +326 -404
  78. package/esm2015/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.js +50 -146
  79. package/esm2015/lib/_web-components/recipe-cards/recipe-cards.module.js +3 -15
  80. package/esm2015/lib/_web-components/recipe-catalog/catalog-article-card/catalog-article-card.component.js +1 -1
  81. package/esm2015/lib/_web-components/recipe-catalog/catalog-category/catalog-category.component.js +35 -29
  82. package/esm2015/lib/_web-components/recipe-catalog/catalog-header/catalog-header.component.js +1 -1
  83. package/esm2015/lib/_web-components/recipe-catalog/catalog-list/catalog-list.component.js +27 -31
  84. package/esm2015/lib/_web-components/recipe-catalog/recipe-catalog.component.js +98 -100
  85. package/esm2015/lib/_web-components/recipe-creation/recipe-form/recipe-form.component.js +2 -2
  86. package/esm2015/lib/_web-components/recipe-creation/recipe-stepper/recipe-stepper.component.js +7 -7
  87. package/esm2015/lib/_web-components/recipe-creation/tags-creator/tags-creator.component.js +4 -4
  88. package/esm2015/lib/_web-components/recipe-creation/tags-selector/tags-selector.component.js +8 -8
  89. package/esm2015/lib/_web-components/recipe-details/recipe-addon/recipe-addon.component.js +7 -3
  90. package/esm2015/lib/_web-components/recipe-details/recipe-details-infos/recipe-details-infos.component.js +57 -358
  91. package/esm2015/lib/_web-components/recipe-details/recipe-details-ingredients/recipe-details-ingredients.component.js +59 -122
  92. package/esm2015/lib/_web-components/recipe-details/recipe-details-steps/recipe-details-steps.component.js +51 -72
  93. package/esm2015/lib/_web-components/recipe-details/recipe-details.component.js +313 -363
  94. package/esm2015/lib/_web-components/recipe-details/recipe-details.module.js +8 -4
  95. package/esm2015/lib/_web-components/recipe-details/sponsor-storytelling/sponsor-storytelling.component.js +1 -1
  96. package/esm2015/lib/_web-components/recipe-helper/recipe-helper.component.js +89 -113
  97. package/esm2015/lib/_web-components/recipe-modal/recipe-modal.component.js +78 -69
  98. package/esm2015/lib/_web-components/recipe-tags/recipe-tags.component.js +5 -5
  99. package/esm2015/lib/_web-components/toaster-stack/toaster-stack.component.js +8 -4
  100. package/esm2015/lib/_web-components/web-components.module.js +3 -19
  101. package/esm2015/lib/ng-miam.module.js +5 -7
  102. package/fesm2015/ng-miam.js +5165 -6973
  103. package/fesm2015/ng-miam.js.map +1 -1
  104. package/lib/_components/abstracts/event-tracer.component.d.ts +2 -1
  105. package/lib/_components/accordion/accordion.component.d.ts +23 -0
  106. package/lib/_components/components.module.d.ts +38 -36
  107. package/lib/_components/counter-input/counter-input.component.d.ts +12 -14
  108. package/lib/_components/index.d.ts +4 -4
  109. package/lib/_components/modal/modal.component.d.ts +18 -18
  110. package/lib/_components/product-card/product-card.component.d.ts +40 -0
  111. package/lib/_components/products-picker/products-picker.component.d.ts +17 -0
  112. package/lib/_components/recipe-pricing/recipe-pricing.component.d.ts +12 -8
  113. package/lib/_components/slider-tabs/slider-tabs.component.d.ts +16 -0
  114. package/lib/_components/tabs/tabs.component.d.ts +11 -11
  115. package/lib/_components/toaster/toaster.component.d.ts +4 -2
  116. package/lib/_models/basket-entry.d.ts +16 -20
  117. package/lib/_models/basket-preview-line.d.ts +1 -0
  118. package/lib/_models/basket.d.ts +12 -5
  119. package/lib/_models/item.d.ts +1 -1
  120. package/lib/_models/recipe.d.ts +0 -5
  121. package/lib/_models/user.d.ts +0 -1
  122. package/lib/_services/analytics.service.d.ts +8 -22
  123. package/lib/_services/baskets-synchronizing/baskets-comparator.service.d.ts +0 -5
  124. package/lib/_services/baskets-synchronizing/baskets-synchronizer.service.d.ts +3 -6
  125. package/lib/_services/baskets.service.d.ts +137 -18
  126. package/lib/_services/context.service.d.ts +2 -4
  127. package/lib/_services/index.d.ts +2 -4
  128. package/lib/_services/items.service.d.ts +9 -2
  129. package/lib/_services/recipe-details.service.d.ts +84 -0
  130. package/lib/_services/recipe-likes.service.d.ts +2 -1
  131. package/lib/_services/recipes.service.d.ts +10 -14
  132. package/lib/_services/scrolling.service.d.ts +8 -0
  133. package/lib/_services/toaster.service.d.ts +1 -1
  134. package/lib/_types/basket-action-type.enum.d.ts +9 -0
  135. package/lib/_types/basket-action.d.ts +14 -0
  136. package/lib/_types/basket-stats.d.ts +5 -0
  137. package/lib/_types/builded/miam-interface.d.ts +16 -25
  138. package/lib/_types/event-trace.d.ts +22 -0
  139. package/lib/_types/items-comparator.d.ts +0 -5
  140. package/lib/_types/recipe-filters.d.ts +0 -2
  141. package/lib/_types/toaster.d.ts +1 -1
  142. package/lib/_utils/directives/index.d.ts +1 -0
  143. package/lib/_utils/directives/reach-top.directive.d.ts +13 -0
  144. package/lib/_utils/pipes/readable-float-number/readable-float-number.pipe.d.ts +1 -1
  145. package/lib/_utils/utils.module.d.ts +2 -2
  146. package/lib/_web-components/basket-preview/basket-preview-block/basket-preview-block.component.d.ts +9 -8
  147. package/lib/_web-components/basket-preview/basket-preview-line/basket-preview-line.component.d.ts +11 -9
  148. package/lib/_web-components/basket-preview/replace-item/replace-item.component.d.ts +27 -20
  149. package/lib/_web-components/index.d.ts +0 -3
  150. package/lib/_web-components/list-scan/basket-preview/basket-preview.component.d.ts +1 -2
  151. package/lib/_web-components/list-scan/files-inputs/files-inputs.component.d.ts +6 -5
  152. package/lib/_web-components/list-scan/ingredients-list/ingredients-list.component.d.ts +3 -3
  153. package/lib/_web-components/list-scan/list-scan.component.d.ts +3 -3
  154. package/lib/_web-components/list-scan/overlay-button/overlay-button.component.d.ts +8 -6
  155. package/lib/_web-components/meals-planner/meals-planner.component.d.ts +2 -3
  156. package/lib/_web-components/recipe-cards/index.d.ts +0 -2
  157. package/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.d.ts +58 -17
  158. package/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.d.ts +5 -12
  159. package/lib/_web-components/recipe-cards/recipe-cards.module.d.ts +7 -9
  160. package/lib/_web-components/recipe-catalog/catalog-category/catalog-category.component.d.ts +8 -6
  161. package/lib/_web-components/recipe-catalog/catalog-list/catalog-list.component.d.ts +7 -4
  162. package/lib/_web-components/recipe-catalog/recipe-catalog.component.d.ts +2 -3
  163. package/lib/_web-components/recipe-details/recipe-addon/recipe-addon.component.d.ts +5 -2
  164. package/lib/_web-components/recipe-details/recipe-details-infos/recipe-details-infos.component.d.ts +6 -18
  165. package/lib/_web-components/recipe-details/recipe-details-ingredients/recipe-details-ingredients.component.d.ts +6 -13
  166. package/lib/_web-components/recipe-details/recipe-details-steps/recipe-details-steps.component.d.ts +2 -10
  167. package/lib/_web-components/recipe-details/recipe-details.component.d.ts +29 -36
  168. package/lib/_web-components/recipe-details/recipe-details.module.d.ts +2 -1
  169. package/lib/_web-components/recipe-helper/recipe-helper.component.d.ts +2 -6
  170. package/lib/_web-components/recipe-modal/recipe-modal.component.d.ts +11 -9
  171. package/lib/_web-components/toaster-stack/toaster-stack.component.d.ts +5 -2
  172. package/lib/_web-components/web-components.module.d.ts +23 -29
  173. package/miam-style.css +1 -1
  174. package/package.json +1 -1
  175. package/esm2015/lib/_components/abstracts/abstract-recipe-card.component.js +0 -130
  176. package/esm2015/lib/_components/skeleton/skeleton.component.js +0 -70
  177. package/esm2015/lib/_components/tabs/tab-body.component.js +0 -30
  178. package/esm2015/lib/_components/tabs/tab-item.component.js +0 -36
  179. package/esm2015/lib/_components/tabs/tab-label.component.js +0 -30
  180. package/esm2015/lib/_models/groceries-entry.js +0 -42
  181. package/esm2015/lib/_models/groceries-list.js +0 -36
  182. package/esm2015/lib/_services/counter.service.js +0 -20
  183. package/esm2015/lib/_services/groceries-entries.service.js +0 -21
  184. package/esm2015/lib/_services/groceries-lists.service.js +0 -240
  185. package/esm2015/lib/_services/recipe-events.service.js +0 -63
  186. package/esm2015/lib/_types/skeleton.enum.js +0 -7
  187. package/esm2015/lib/_web-components/drawer/drawer.component.js +0 -273
  188. package/esm2015/lib/_web-components/pos-card/pos-card.component.js +0 -207
  189. package/esm2015/lib/_web-components/pos-selection/pos-selection.component.js +0 -283
  190. package/esm2015/lib/_web-components/recipe-cards/catalog-recipe-card/catalog-recipe-card.component.js +0 -632
  191. package/esm2015/lib/_web-components/recipe-cards/suggestion-card/suggestion-card.component.js +0 -144
  192. package/lib/_components/abstracts/abstract-recipe-card.component.d.ts +0 -49
  193. package/lib/_components/skeleton/skeleton.component.d.ts +0 -11
  194. package/lib/_components/tabs/tab-body.component.d.ts +0 -8
  195. package/lib/_components/tabs/tab-item.component.d.ts +0 -11
  196. package/lib/_components/tabs/tab-label.component.d.ts +0 -8
  197. package/lib/_models/groceries-entry.d.ts +0 -20
  198. package/lib/_models/groceries-list.d.ts +0 -30
  199. package/lib/_services/counter.service.d.ts +0 -10
  200. package/lib/_services/groceries-entries.service.d.ts +0 -10
  201. package/lib/_services/groceries-lists.service.d.ts +0 -68
  202. package/lib/_services/recipe-events.service.d.ts +0 -23
  203. package/lib/_types/skeleton.enum.d.ts +0 -5
  204. package/lib/_web-components/drawer/drawer.component.d.ts +0 -37
  205. package/lib/_web-components/pos-card/pos-card.component.d.ts +0 -24
  206. package/lib/_web-components/pos-selection/pos-selection.component.d.ts +0 -38
  207. package/lib/_web-components/recipe-cards/catalog-recipe-card/catalog-recipe-card.component.d.ts +0 -49
  208. package/lib/_web-components/recipe-cards/suggestion-card/suggestion-card.component.d.ts +0 -42
@@ -1,402 +1,201 @@
1
1
  import { Component, ViewEncapsulation, ChangeDetectorRef, ChangeDetectionStrategy, Input, Output, EventEmitter, ElementRef } from '@angular/core';
2
- import { AbstractRecipeCardComponent } from '../../../_components/abstracts/abstract-recipe-card.component';
3
- import { Recipe } from '../../../_models';
4
- import { AnalyticsService, ContextService, GroceriesListsService, RecipeEventsService, RecipesService, UserService } from '../../../_services';
5
2
  import { of } from 'rxjs';
6
- import { skipWhile, catchError, switchMap, take } from 'rxjs/operators';
3
+ import { skipWhile, catchError, take } from 'rxjs/operators';
4
+ import { EventTracerComponent } from '../../../_components/abstracts/event-tracer.component';
5
+ import { Recipe } from '../../../_models';
6
+ import { AnalyticsService, BasketsService, ContextService, RecipesService, ScrollingService, UserService } from '../../../_services';
7
+ import { Icon } from '../../../_types/icon.enum';
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "../../../_services";
9
10
  import * as i2 from "@angular/common";
10
11
  import * as i3 from "../../../_components/icon/icon.component";
11
- import * as i4 from "../recipe-card-cta/recipe-card-cta.component";
12
- import * as i5 from "../../../_components/like-button/like-button.component";
13
- import * as i6 from "../../../_components/skeleton/skeleton.component";
14
- import * as i7 from "../../../_components/counter-input/counter-input.component";
15
- import * as i8 from "../../../_components/recipe-pricing/recipe-pricing.component";
16
- import * as i9 from "../../../_components/cors-overlay/cors-overlay.component";
17
- function RecipeCardComponent_div_0_div_3_div_2_Template(rf, ctx) { if (rf & 1) {
18
- i0.ɵɵelementStart(0, "div", 32);
19
- i0.ɵɵelement(1, "ng-miam-icon", 33);
12
+ import * as i4 from "../../../_components/like-button/like-button.component";
13
+ import * as i5 from "../../../_components/recipe-pricing/recipe-pricing.component";
14
+ import * as i6 from "../recipe-card-cta/recipe-card-cta.component";
15
+ import * as i7 from "../../../_components/actions-popin/actions-popin.component";
16
+ function RecipeCardComponent_div_1_div_7_Template(rf, ctx) { if (rf & 1) {
17
+ const _r12 = i0.ɵɵgetCurrentView();
18
+ i0.ɵɵelementStart(0, "div", 26);
19
+ i0.ɵɵlistener("click", function RecipeCardComponent_div_1_div_7_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r11 = i0.ɵɵnextContext(2); return ctx_r11.toggleMoreActions($event); });
20
+ i0.ɵɵelement(1, "ng-miam-icon", 27);
20
21
  i0.ɵɵelementEnd();
21
22
  } if (rf & 2) {
22
- const ctx_r18 = i0.ɵɵnextContext(3);
23
+ const ctx_r3 = i0.ɵɵnextContext(2);
23
24
  i0.ɵɵadvance(1);
24
- i0.ɵɵproperty("iconName", ctx_r18.icon.Video)("width", 100)("height", 100);
25
+ i0.ɵɵproperty("iconName", ctx_r3.actionsOpened ? ctx_r3.icon.Clear : ctx_r3.icon.HorizontalDots);
25
26
  } }
26
- function RecipeCardComponent_div_0_div_3_ng_miam_like_button_4_Template(rf, ctx) { if (rf & 1) {
27
- i0.ɵɵelement(0, "ng-miam-like-button", 34);
27
+ function RecipeCardComponent_div_1_ng_template_8_ng_miam_like_button_0_Template(rf, ctx) { if (rf & 1) {
28
+ i0.ɵɵelement(0, "ng-miam-like-button", 29);
28
29
  } if (rf & 2) {
29
- const ctx_r19 = i0.ɵɵnextContext(3);
30
- i0.ɵɵproperty("recipe", ctx_r19.recipe)("originTrace", ctx_r19.eventTrace());
30
+ const ctx_r13 = i0.ɵɵnextContext(3);
31
+ i0.ɵɵproperty("recipe", ctx_r13.recipe)("originTrace", ctx_r13.eventTrace())("width", 24)("height", 24);
31
32
  } }
32
- function RecipeCardComponent_div_0_div_3_div_6_Template(rf, ctx) { if (rf & 1) {
33
- i0.ɵɵelementStart(0, "div", 35);
34
- i0.ɵɵelement(1, "img", 36);
35
- i0.ɵɵelementEnd();
33
+ function RecipeCardComponent_div_1_ng_template_8_Template(rf, ctx) { if (rf & 1) {
34
+ i0.ɵɵtemplate(0, RecipeCardComponent_div_1_ng_template_8_ng_miam_like_button_0_Template, 1, 4, "ng-miam-like-button", 28);
35
+ i0.ɵɵpipe(1, "async");
36
36
  } if (rf & 2) {
37
- const ctx_r20 = i0.ɵɵnextContext(3);
38
- i0.ɵɵadvance(1);
39
- i0.ɵɵproperty("src", ctx_r20.recipe.sponsorLogoUrl, i0.ɵɵsanitizeUrl);
37
+ const ctx_r5 = i0.ɵɵnextContext(2);
38
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(1, 1, ctx_r5.userService.isLogged$));
40
39
  } }
41
- function RecipeCardComponent_div_0_div_3_div_7_Template(rf, ctx) { if (rf & 1) {
42
- i0.ɵɵelementStart(0, "div", 37);
43
- i0.ɵɵelement(1, "img", 36);
40
+ function RecipeCardComponent_div_1_div_19_div_5_Template(rf, ctx) { if (rf & 1) {
41
+ i0.ɵɵelementStart(0, "div", 34);
42
+ i0.ɵɵtext(1);
44
43
  i0.ɵɵelementEnd();
45
44
  } if (rf & 2) {
46
- const ctx_r21 = i0.ɵɵnextContext(3);
45
+ const ctx_r14 = i0.ɵɵnextContext(3);
47
46
  i0.ɵɵadvance(1);
48
- i0.ɵɵproperty("src", ctx_r21.recipe.filigraneLogoUrl, i0.ɵɵsanitizeUrl);
47
+ i0.ɵɵtextInterpolate1(" + ", ctx_r14.recipe.modifiedIngredients.length - 2, " ");
49
48
  } }
50
- function RecipeCardComponent_div_0_div_3_Template(rf, ctx) { if (rf & 1) {
51
- const _r23 = i0.ɵɵgetCurrentView();
52
- i0.ɵɵelementStart(0, "div", 25);
53
- i0.ɵɵlistener("click", function RecipeCardComponent_div_0_div_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r23); const ctx_r22 = i0.ɵɵnextContext(2); return ctx_r22.openRecipe(); });
54
- i0.ɵɵelement(1, "img", 26);
55
- i0.ɵɵtemplate(2, RecipeCardComponent_div_0_div_3_div_2_Template, 2, 3, "div", 27);
56
- i0.ɵɵelementStart(3, "div", 28);
57
- i0.ɵɵtemplate(4, RecipeCardComponent_div_0_div_3_ng_miam_like_button_4_Template, 1, 2, "ng-miam-like-button", 29);
58
- i0.ɵɵpipe(5, "async");
49
+ function RecipeCardComponent_div_1_div_19_Template(rf, ctx) { if (rf & 1) {
50
+ i0.ɵɵelementStart(0, "div", 30);
51
+ i0.ɵɵelementStart(1, "div", 31);
52
+ i0.ɵɵelement(2, "img", 32);
59
53
  i0.ɵɵelementEnd();
60
- i0.ɵɵtemplate(6, RecipeCardComponent_div_0_div_3_div_6_Template, 2, 1, "div", 30);
61
- i0.ɵɵtemplate(7, RecipeCardComponent_div_0_div_3_div_7_Template, 2, 1, "div", 31);
62
- i0.ɵɵelementEnd();
63
- } if (rf & 2) {
64
- const ctx_r3 = i0.ɵɵnextContext(2);
65
- i0.ɵɵadvance(1);
66
- i0.ɵɵproperty("src", ctx_r3.recipe == null ? null : ctx_r3.recipe.attributes["media-url"], i0.ɵɵsanitizeUrl);
67
- i0.ɵɵadvance(1);
68
- i0.ɵɵproperty("ngIf", ctx_r3.contextService.videoRecipesEnabled && (ctx_r3.recipe == null ? null : ctx_r3.recipe.videoId));
69
- i0.ɵɵadvance(2);
70
- i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(5, 5, ctx_r3.userService.isLogged$));
71
- i0.ɵɵadvance(2);
72
- i0.ɵɵproperty("ngIf", ctx_r3.recipe.sponsorLogoUrl);
73
- i0.ɵɵadvance(1);
74
- i0.ɵɵproperty("ngIf", ctx_r3.recipe.filigraneLogoUrl);
75
- } }
76
- function RecipeCardComponent_div_0_ng_template_4_Template(rf, ctx) { if (rf & 1) {
77
- i0.ɵɵelement(0, "ng-miam-skeleton", 38);
78
- } if (rf & 2) {
79
- const ctx_r5 = i0.ɵɵnextContext(2);
80
- i0.ɵɵproperty("type", ctx_r5.skeleton.Picture);
81
- } }
82
- function RecipeCardComponent_div_0_div_7_Template(rf, ctx) { if (rf & 1) {
83
- const _r25 = i0.ɵɵgetCurrentView();
84
- i0.ɵɵelementStart(0, "div");
85
- i0.ɵɵelementStart(1, "div", 39);
86
- i0.ɵɵlistener("click", function RecipeCardComponent_div_0_div_7_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r25); const ctx_r24 = i0.ɵɵnextContext(2); return ctx_r24.openRecipe(); });
87
- i0.ɵɵtext(2);
54
+ i0.ɵɵelementStart(3, "div", 31);
55
+ i0.ɵɵelement(4, "img", 32);
88
56
  i0.ɵɵelementEnd();
57
+ i0.ɵɵtemplate(5, RecipeCardComponent_div_1_div_19_div_5_Template, 2, 1, "div", 33);
89
58
  i0.ɵɵelementEnd();
90
59
  } if (rf & 2) {
91
60
  const ctx_r6 = i0.ɵɵnextContext(2);
92
61
  i0.ɵɵadvance(2);
93
- i0.ɵɵtextInterpolate1(" ", ctx_r6.recipe == null ? null : ctx_r6.recipe.attributes["title"], " ");
94
- } }
95
- function RecipeCardComponent_div_0_ng_template_8_Template(rf, ctx) { if (rf & 1) {
96
- i0.ɵɵelement(0, "ng-miam-skeleton", 38);
97
- } if (rf & 2) {
98
- const ctx_r8 = i0.ɵɵnextContext(2);
99
- i0.ɵɵproperty("type", ctx_r8.skeleton.Text);
100
- } }
101
- function RecipeCardComponent_div_0_div_11_Template(rf, ctx) { if (rf & 1) {
102
- i0.ɵɵelementStart(0, "div", 40);
103
- i0.ɵɵelement(1, "ng-miam-icon", 41);
104
- i0.ɵɵelementStart(2, "span", 42);
105
- i0.ɵɵtext(3);
106
- i0.ɵɵelementEnd();
107
- i0.ɵɵelementEnd();
108
- } if (rf & 2) {
109
- const ctx_r9 = i0.ɵɵnextContext(2);
110
- i0.ɵɵadvance(1);
111
- i0.ɵɵproperty("width", 20)("height", 20)("iconName", ctx_r9.icon.Time);
62
+ i0.ɵɵproperty("src", ctx_r6.ingredientPicture(ctx_r6.recipe.modifiedIngredients[0]), i0.ɵɵsanitizeUrl);
112
63
  i0.ɵɵadvance(2);
113
- i0.ɵɵtextInterpolate(ctx_r9.recipe == null ? null : ctx_r9.recipe.totalTime);
114
- } }
115
- function RecipeCardComponent_div_0_div_12_ng_container_2_Template(rf, ctx) { if (rf & 1) {
116
- i0.ɵɵelementContainerStart(0);
117
- i0.ɵɵelement(1, "ng-miam-icon", 47);
118
- i0.ɵɵelementContainerEnd();
119
- } if (rf & 2) {
120
- const ctx_r26 = i0.ɵɵnextContext(3);
121
- i0.ɵɵadvance(1);
122
- i0.ɵɵproperty("width", 60)("height", 20)("iconName", ctx_r26.icon.DifficultyMedium);
123
- } }
124
- function RecipeCardComponent_div_0_div_12_ng_container_3_Template(rf, ctx) { if (rf & 1) {
125
- i0.ɵɵelementContainerStart(0);
126
- i0.ɵɵelement(1, "ng-miam-icon", 47);
127
- i0.ɵɵelementContainerEnd();
128
- } if (rf & 2) {
129
- const ctx_r27 = i0.ɵɵnextContext(3);
130
- i0.ɵɵadvance(1);
131
- i0.ɵɵproperty("width", 60)("height", 20)("iconName", ctx_r27.icon.DifficultyHigh);
132
- } }
133
- function RecipeCardComponent_div_0_div_12_ng_container_4_Template(rf, ctx) { if (rf & 1) {
134
- i0.ɵɵelementContainerStart(0);
135
- i0.ɵɵelement(1, "ng-miam-icon", 47);
136
- i0.ɵɵelementContainerEnd();
137
- } if (rf & 2) {
138
- const ctx_r28 = i0.ɵɵnextContext(3);
139
- i0.ɵɵadvance(1);
140
- i0.ɵɵproperty("width", 60)("height", 20)("iconName", ctx_r28.icon.DifficultyLow);
141
- } }
142
- function RecipeCardComponent_div_0_div_12_ng_container_6_span_1_Template(rf, ctx) { if (rf & 1) {
143
- i0.ɵɵelementStart(0, "span", 50);
144
- i0.ɵɵtext(1);
145
- i0.ɵɵelementEnd();
146
- } if (rf & 2) {
147
- const ctx_r33 = i0.ɵɵnextContext(4);
64
+ i0.ɵɵproperty("src", ctx_r6.ingredientPicture(ctx_r6.recipe.modifiedIngredients[1]), i0.ɵɵsanitizeUrl);
148
65
  i0.ɵɵadvance(1);
149
- i0.ɵɵtextInterpolate1(" ", ctx_r33.recipeService.difficultyLevels[0].label, " ");
66
+ i0.ɵɵproperty("ngIf", ctx_r6.recipe.modifiedIngredients.length > 2);
150
67
  } }
151
- function RecipeCardComponent_div_0_div_12_ng_container_6_ng_template_2_Template(rf, ctx) { if (rf & 1) {
152
- i0.ɵɵelementStart(0, "span", 50);
153
- i0.ɵɵi18n(1, 51);
68
+ function RecipeCardComponent_div_1_div_21_Template(rf, ctx) { if (rf & 1) {
69
+ i0.ɵɵelementStart(0, "div", 35);
70
+ i0.ɵɵelement(1, "ng-miam-recipe-pricing", 36);
154
71
  i0.ɵɵelementEnd();
155
- } }
156
- function RecipeCardComponent_div_0_div_12_ng_container_6_Template(rf, ctx) { if (rf & 1) {
157
- i0.ɵɵelementContainerStart(0);
158
- i0.ɵɵtemplate(1, RecipeCardComponent_div_0_div_12_ng_container_6_span_1_Template, 2, 1, "span", 48);
159
- i0.ɵɵtemplate(2, RecipeCardComponent_div_0_div_12_ng_container_6_ng_template_2_Template, 2, 0, "ng-template", null, 49, i0.ɵɵtemplateRefExtractor);
160
- i0.ɵɵelementContainerEnd();
161
72
  } if (rf & 2) {
162
- const _r34 = i0.ɵɵreference(3);
163
- const ctx_r29 = i0.ɵɵnextContext(3);
73
+ const ctx_r7 = i0.ɵɵnextContext(2);
164
74
  i0.ɵɵadvance(1);
165
- i0.ɵɵproperty("ngIf", (ctx_r29.recipeService.difficultyLevels[0] == null ? null : ctx_r29.recipeService.difficultyLevels[0].label) !== "Chef d\u00E9butant")("ngIfElse", _r34);
75
+ i0.ɵɵproperty("recipeId", ctx_r7.recipe.id)("serves", ctx_r7.recipe.modifiedGuests);
166
76
  } }
167
- function RecipeCardComponent_div_0_div_12_ng_container_7_span_1_Template(rf, ctx) { if (rf & 1) {
168
- i0.ɵɵelementStart(0, "span", 54);
169
- i0.ɵɵtext(1);
77
+ function RecipeCardComponent_div_1_ng_miam_recipe_card_cta_23_Template(rf, ctx) { if (rf & 1) {
78
+ const _r16 = i0.ɵɵgetCurrentView();
79
+ i0.ɵɵelementStart(0, "ng-miam-recipe-card-cta", 37);
80
+ i0.ɵɵlistener("displayed", function RecipeCardComponent_div_1_ng_miam_recipe_card_cta_23_Template_ng_miam_recipe_card_cta_displayed_0_listener() { i0.ɵɵrestoreView(_r16); const ctx_r15 = i0.ɵɵnextContext(2); return ctx_r15.displayed.emit(); })("clicked", function RecipeCardComponent_div_1_ng_miam_recipe_card_cta_23_Template_ng_miam_recipe_card_cta_clicked_0_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r17 = i0.ɵɵnextContext(2); return ctx_r17.primaryButtonClicked$.emit($event); });
170
81
  i0.ɵɵelementEnd();
171
82
  } if (rf & 2) {
172
- const ctx_r36 = i0.ɵɵnextContext(4);
173
- i0.ɵɵadvance(1);
174
- i0.ɵɵtextInterpolate1(" ", ctx_r36.recipeService.difficultyLevels[1].label, " ");
83
+ const ctx_r8 = i0.ɵɵnextContext(2);
84
+ i0.ɵɵproperty("recipe", ctx_r8.recipe)("previewAllowed", ctx_r8.previewAllowed)("displayGuests", ctx_r8.displayGuests)("helpButtonAllowed", ctx_r8.helpButtonAllowed);
175
85
  } }
176
- function RecipeCardComponent_div_0_div_12_ng_container_7_ng_template_2_Template(rf, ctx) { if (rf & 1) {
177
- i0.ɵɵelementStart(0, "span", 54);
178
- i0.ɵɵi18n(1, 55);
86
+ function RecipeCardComponent_div_1_div_24_Template(rf, ctx) { if (rf & 1) {
87
+ const _r19 = i0.ɵɵgetCurrentView();
88
+ i0.ɵɵelementStart(0, "div", 38);
89
+ i0.ɵɵelementStart(1, "button", 39);
90
+ i0.ɵɵlistener("click", function RecipeCardComponent_div_1_div_24_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r19); const ctx_r18 = i0.ɵɵnextContext(2); return ctx_r18.removeFromMealsPlanner.emit(); });
91
+ i0.ɵɵelement(2, "ng-miam-icon", 27);
179
92
  i0.ɵɵelementEnd();
180
- } }
181
- function RecipeCardComponent_div_0_div_12_ng_container_7_Template(rf, ctx) { if (rf & 1) {
182
- i0.ɵɵelementContainerStart(0);
183
- i0.ɵɵtemplate(1, RecipeCardComponent_div_0_div_12_ng_container_7_span_1_Template, 2, 1, "span", 52);
184
- i0.ɵɵtemplate(2, RecipeCardComponent_div_0_div_12_ng_container_7_ng_template_2_Template, 2, 0, "ng-template", null, 53, i0.ɵɵtemplateRefExtractor);
185
- i0.ɵɵelementContainerEnd();
186
- } if (rf & 2) {
187
- const _r37 = i0.ɵɵreference(3);
188
- const ctx_r30 = i0.ɵɵnextContext(3);
189
- i0.ɵɵadvance(1);
190
- i0.ɵɵproperty("ngIf", (ctx_r30.recipeService.difficultyLevels[1] == null ? null : ctx_r30.recipeService.difficultyLevels[1].label) !== "Chef interm\u00E9diaire")("ngIfElse", _r37);
191
- } }
192
- function RecipeCardComponent_div_0_div_12_ng_container_8_span_1_Template(rf, ctx) { if (rf & 1) {
193
- i0.ɵɵelementStart(0, "span", 58);
194
- i0.ɵɵtext(1);
93
+ i0.ɵɵelementStart(3, "button", 40);
94
+ i0.ɵɵlistener("click", function RecipeCardComponent_div_1_div_24_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r19); const ctx_r20 = i0.ɵɵnextContext(2); return ctx_r20.openCatalog.emit(); });
95
+ i0.ɵɵelementStart(4, "span");
96
+ i0.ɵɵi18n(5, 41);
195
97
  i0.ɵɵelementEnd();
196
- } if (rf & 2) {
197
- const ctx_r39 = i0.ɵɵnextContext(4);
198
- i0.ɵɵadvance(1);
199
- i0.ɵɵtextInterpolate1(" ", ctx_r39.recipeService.difficultyLevels[2].label, " ");
200
- } }
201
- function RecipeCardComponent_div_0_div_12_ng_container_8_ng_template_2_Template(rf, ctx) { if (rf & 1) {
202
- i0.ɵɵelementStart(0, "span", 58);
203
- i0.ɵɵi18n(1, 59);
204
98
  i0.ɵɵelementEnd();
205
- } }
206
- function RecipeCardComponent_div_0_div_12_ng_container_8_Template(rf, ctx) { if (rf & 1) {
207
- i0.ɵɵelementContainerStart(0);
208
- i0.ɵɵtemplate(1, RecipeCardComponent_div_0_div_12_ng_container_8_span_1_Template, 2, 1, "span", 56);
209
- i0.ɵɵtemplate(2, RecipeCardComponent_div_0_div_12_ng_container_8_ng_template_2_Template, 2, 0, "ng-template", null, 57, i0.ɵɵtemplateRefExtractor);
210
- i0.ɵɵelementContainerEnd();
211
- } if (rf & 2) {
212
- const _r40 = i0.ɵɵreference(3);
213
- const ctx_r31 = i0.ɵɵnextContext(3);
214
- i0.ɵɵadvance(1);
215
- i0.ɵɵproperty("ngIf", (ctx_r31.recipeService.difficultyLevels[2] == null ? null : ctx_r31.recipeService.difficultyLevels[2].label) !== "Top chef")("ngIfElse", _r40);
216
- } }
217
- function RecipeCardComponent_div_0_div_12_ng_container_9_span_1_Template(rf, ctx) { if (rf & 1) {
218
- i0.ɵɵelementStart(0, "span", 50);
219
- i0.ɵɵtext(1);
220
- i0.ɵɵelementEnd();
221
- } if (rf & 2) {
222
- const ctx_r42 = i0.ɵɵnextContext(4);
223
- i0.ɵɵadvance(1);
224
- i0.ɵɵtextInterpolate1(" ", ctx_r42.recipeService.difficultyLevels[0].label, " ");
225
- } }
226
- function RecipeCardComponent_div_0_div_12_ng_container_9_ng_template_2_Template(rf, ctx) { if (rf & 1) {
227
- i0.ɵɵelementStart(0, "span", 50);
228
- i0.ɵɵi18n(1, 61);
229
99
  i0.ɵɵelementEnd();
230
- } }
231
- function RecipeCardComponent_div_0_div_12_ng_container_9_Template(rf, ctx) { if (rf & 1) {
232
- i0.ɵɵelementContainerStart(0);
233
- i0.ɵɵtemplate(1, RecipeCardComponent_div_0_div_12_ng_container_9_span_1_Template, 2, 1, "span", 48);
234
- i0.ɵɵtemplate(2, RecipeCardComponent_div_0_div_12_ng_container_9_ng_template_2_Template, 2, 0, "ng-template", null, 60, i0.ɵɵtemplateRefExtractor);
235
- i0.ɵɵelementContainerEnd();
236
100
  } if (rf & 2) {
237
- const _r43 = i0.ɵɵreference(3);
238
- const ctx_r32 = i0.ɵɵnextContext(3);
239
- i0.ɵɵadvance(1);
240
- i0.ɵɵproperty("ngIf", (ctx_r32.recipeService.difficultyLevels[0] == null ? null : ctx_r32.recipeService.difficultyLevels[0].label) !== "Chef d\u00E9butant")("ngIfElse", _r43);
241
- } }
242
- const _c8 = function (a0, a1, a2) { return { "easy": a0, "medium": a1, "hard": a2 }; };
243
- function RecipeCardComponent_div_0_div_12_Template(rf, ctx) { if (rf & 1) {
244
- i0.ɵɵelementStart(0, "div", 43);
245
- i0.ɵɵelementContainerStart(1, 44);
246
- i0.ɵɵtemplate(2, RecipeCardComponent_div_0_div_12_ng_container_2_Template, 2, 3, "ng-container", 45);
247
- i0.ɵɵtemplate(3, RecipeCardComponent_div_0_div_12_ng_container_3_Template, 2, 3, "ng-container", 45);
248
- i0.ɵɵtemplate(4, RecipeCardComponent_div_0_div_12_ng_container_4_Template, 2, 3, "ng-container", 46);
249
- i0.ɵɵelementContainerEnd();
250
- i0.ɵɵelementContainerStart(5, 44);
251
- i0.ɵɵtemplate(6, RecipeCardComponent_div_0_div_12_ng_container_6_Template, 4, 2, "ng-container", 45);
252
- i0.ɵɵtemplate(7, RecipeCardComponent_div_0_div_12_ng_container_7_Template, 4, 2, "ng-container", 45);
253
- i0.ɵɵtemplate(8, RecipeCardComponent_div_0_div_12_ng_container_8_Template, 4, 2, "ng-container", 45);
254
- i0.ɵɵtemplate(9, RecipeCardComponent_div_0_div_12_ng_container_9_Template, 4, 2, "ng-container", 46);
255
- i0.ɵɵelementContainerEnd();
256
- i0.ɵɵelementEnd();
257
- } if (rf & 2) {
258
- const ctx_r10 = i0.ɵɵnextContext(2);
259
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(8, _c8, (ctx_r10.recipe == null ? null : ctx_r10.recipe.difficulty) === 1, (ctx_r10.recipe == null ? null : ctx_r10.recipe.difficulty) === 2, (ctx_r10.recipe == null ? null : ctx_r10.recipe.difficulty) === 3));
260
- i0.ɵɵadvance(1);
261
- i0.ɵɵproperty("ngSwitch", ctx_r10.recipe == null ? null : ctx_r10.recipe.difficulty);
262
- i0.ɵɵadvance(1);
263
- i0.ɵɵproperty("ngSwitchCase", 2);
264
- i0.ɵɵadvance(1);
265
- i0.ɵɵproperty("ngSwitchCase", 3);
101
+ const ctx_r9 = i0.ɵɵnextContext(2);
266
102
  i0.ɵɵadvance(2);
267
- i0.ɵɵproperty("ngSwitch", ctx_r10.recipe == null ? null : ctx_r10.recipe.difficulty);
268
- i0.ɵɵadvance(1);
269
- i0.ɵɵproperty("ngSwitchCase", 1);
270
- i0.ɵɵadvance(1);
271
- i0.ɵɵproperty("ngSwitchCase", 2);
272
- i0.ɵɵadvance(1);
273
- i0.ɵɵproperty("ngSwitchCase", 3);
274
- } }
275
- function RecipeCardComponent_div_0_ng_template_13_Template(rf, ctx) { if (rf & 1) {
276
- i0.ɵɵelement(0, "ng-miam-skeleton", 38);
277
- } if (rf & 2) {
278
- const ctx_r12 = i0.ɵɵnextContext(2);
279
- i0.ɵɵproperty("type", ctx_r12.skeleton == null ? null : ctx_r12.skeleton.IconWithInfo);
280
- } }
281
- function RecipeCardComponent_div_0_div_20_div_5_Template(rf, ctx) { if (rf & 1) {
282
- i0.ɵɵelementStart(0, "div", 65);
283
- i0.ɵɵtext(1);
284
- i0.ɵɵelementEnd();
285
- } if (rf & 2) {
286
- const ctx_r45 = i0.ɵɵnextContext(3);
287
- i0.ɵɵadvance(1);
288
- i0.ɵɵtextInterpolate1(" + ", ctx_r45.recipe.modifiedIngredients.length - 2, " ");
103
+ i0.ɵɵproperty("iconName", ctx_r9.icon.Trash);
289
104
  } }
290
- function RecipeCardComponent_div_0_div_20_Template(rf, ctx) { if (rf & 1) {
291
- i0.ɵɵelementStart(0, "div", 62);
292
- i0.ɵɵelementStart(1, "div", 63);
293
- i0.ɵɵelement(2, "img", 36);
294
- i0.ɵɵelementEnd();
295
- i0.ɵɵelementStart(3, "div", 63);
296
- i0.ɵɵelement(4, "img", 36);
105
+ function RecipeCardComponent_div_1_button_25_Template(rf, ctx) { if (rf & 1) {
106
+ const _r22 = i0.ɵɵgetCurrentView();
107
+ i0.ɵɵelementStart(0, "button", 40);
108
+ i0.ɵɵlistener("click", function RecipeCardComponent_div_1_button_25_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r22); const ctx_r21 = i0.ɵɵnextContext(2); return ctx_r21.addToMealsPlanner.emit(ctx_r21.recipe); });
109
+ i0.ɵɵelementStart(1, "span");
110
+ i0.ɵɵi18n(2, 42);
297
111
  i0.ɵɵelementEnd();
298
- i0.ɵɵtemplate(5, RecipeCardComponent_div_0_div_20_div_5_Template, 2, 1, "div", 64);
299
112
  i0.ɵɵelementEnd();
300
- } if (rf & 2) {
301
- const ctx_r13 = i0.ɵɵnextContext(2);
302
- i0.ɵɵadvance(2);
303
- i0.ɵɵproperty("src", ctx_r13.ingredientPicture(ctx_r13.recipe.modifiedIngredients[0]), i0.ɵɵsanitizeUrl);
304
- i0.ɵɵadvance(2);
305
- i0.ɵɵproperty("src", ctx_r13.ingredientPicture(ctx_r13.recipe.modifiedIngredients[1]), i0.ɵɵsanitizeUrl);
306
- i0.ɵɵadvance(1);
307
- i0.ɵɵproperty("ngIf", ctx_r13.recipe.modifiedIngredients.length > 2);
308
113
  } }
309
- function RecipeCardComponent_div_0_div_21_Template(rf, ctx) { if (rf & 1) {
310
- const _r47 = i0.ɵɵgetCurrentView();
311
- i0.ɵɵelementStart(0, "div", 66);
312
- i0.ɵɵelementStart(1, "ng-miam-counter-input", 67);
313
- i0.ɵɵlistener("counterChange", function RecipeCardComponent_div_0_div_21_Template_ng_miam_counter_input_counterChange_1_listener($event) { i0.ɵɵrestoreView(_r47); const ctx_r46 = i0.ɵɵnextContext(2); return ctx_r46.updateGuests($event); });
114
+ function RecipeCardComponent_div_1_Template(rf, ctx) { if (rf & 1) {
115
+ const _r24 = i0.ɵɵgetCurrentView();
116
+ i0.ɵɵelementStart(0, "div", 4);
117
+ i0.ɵɵelementStart(1, "div", 5);
118
+ i0.ɵɵlistener("click", function RecipeCardComponent_div_1_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r24); const ctx_r23 = i0.ɵɵnextContext(); return ctx_r23.openRecipe(); });
119
+ i0.ɵɵelementStart(2, "div", 6);
120
+ i0.ɵɵelement(3, "img", 7);
314
121
  i0.ɵɵelementEnd();
122
+ i0.ɵɵelement(4, "div", 8);
123
+ i0.ɵɵelementStart(5, "div", 9);
124
+ i0.ɵɵelementStart(6, "div", 10);
125
+ i0.ɵɵtemplate(7, RecipeCardComponent_div_1_div_7_Template, 2, 1, "div", 11);
126
+ i0.ɵɵtemplate(8, RecipeCardComponent_div_1_ng_template_8_Template, 2, 3, "ng-template", null, 12, i0.ɵɵtemplateRefExtractor);
315
127
  i0.ɵɵelementEnd();
316
- } if (rf & 2) {
317
- const ctx_r14 = i0.ɵɵnextContext(2);
318
- i0.ɵɵadvance(1);
319
- i0.ɵɵproperty("counter", ctx_r14.recipe.modifiedGuests);
320
- } }
321
- function RecipeCardComponent_div_0_ng_template_22_Template(rf, ctx) { if (rf & 1) {
322
- i0.ɵɵelement(0, "ng-miam-skeleton", 38);
323
- } if (rf & 2) {
324
- const ctx_r16 = i0.ɵɵnextContext(2);
325
- i0.ɵɵproperty("type", ctx_r16.skeleton == null ? null : ctx_r16.skeleton.IconWithInfo);
326
- } }
327
- function RecipeCardComponent_div_0_div_25_Template(rf, ctx) { if (rf & 1) {
328
- i0.ɵɵelementStart(0, "div", 68);
329
- i0.ɵɵelement(1, "ng-miam-recipe-pricing", 69);
128
+ i0.ɵɵelementStart(10, "div", 13);
129
+ i0.ɵɵelementStart(11, "div", 14);
130
+ i0.ɵɵelementStart(12, "span");
131
+ i0.ɵɵtext(13);
330
132
  i0.ɵɵelementEnd();
331
- } if (rf & 2) {
332
- const ctx_r17 = i0.ɵɵnextContext(2);
333
- i0.ɵɵadvance(1);
334
- i0.ɵɵproperty("recipe", ctx_r17.recipe)("serves", ctx_r17.recipe == null ? null : ctx_r17.recipe.modifiedGuests);
335
- } }
336
- function RecipeCardComponent_div_0_Template(rf, ctx) { if (rf & 1) {
337
- const _r49 = i0.ɵɵgetCurrentView();
338
- i0.ɵɵelementStart(0, "div", 2);
339
- i0.ɵɵelementStart(1, "div", 3);
340
- i0.ɵɵelement(2, "img", 4);
341
133
  i0.ɵɵelementEnd();
342
- i0.ɵɵtemplate(3, RecipeCardComponent_div_0_div_3_Template, 8, 7, "div", 5);
343
- i0.ɵɵtemplate(4, RecipeCardComponent_div_0_ng_template_4_Template, 1, 1, "ng-template", null, 6, i0.ɵɵtemplateRefExtractor);
344
- i0.ɵɵelementStart(6, "div", 7);
345
- i0.ɵɵtemplate(7, RecipeCardComponent_div_0_div_7_Template, 3, 1, "div", 8);
346
- i0.ɵɵtemplate(8, RecipeCardComponent_div_0_ng_template_8_Template, 1, 1, "ng-template", null, 9, i0.ɵɵtemplateRefExtractor);
347
- i0.ɵɵelementStart(10, "div", 10);
348
- i0.ɵɵtemplate(11, RecipeCardComponent_div_0_div_11_Template, 4, 4, "div", 11);
349
- i0.ɵɵtemplate(12, RecipeCardComponent_div_0_div_12_Template, 10, 12, "div", 12);
350
- i0.ɵɵtemplate(13, RecipeCardComponent_div_0_ng_template_13_Template, 1, 1, "ng-template", null, 13, i0.ɵɵtemplateRefExtractor);
134
+ i0.ɵɵelementStart(14, "div", 15);
135
+ i0.ɵɵelementStart(15, "span", 16);
136
+ i0.ɵɵtext(16);
351
137
  i0.ɵɵelementEnd();
352
- i0.ɵɵelementStart(15, "div", 14);
353
- i0.ɵɵelementStart(16, "div", 15);
354
- i0.ɵɵelementStart(17, "div", 16);
355
- i0.ɵɵelementStart(18, "div", 17);
356
- i0.ɵɵlistener("click", function RecipeCardComponent_div_0_Template_div_click_18_listener() { i0.ɵɵrestoreView(_r49); const ctx_r48 = i0.ɵɵnextContext(); return ctx_r48.toggleHelper(); });
357
- i0.ɵɵelement(19, "ng-miam-icon", 18);
138
+ i0.ɵɵelement(17, "img", 17);
358
139
  i0.ɵɵelementEnd();
359
- i0.ɵɵtemplate(20, RecipeCardComponent_div_0_div_20_Template, 6, 3, "div", 19);
360
140
  i0.ɵɵelementEnd();
361
- i0.ɵɵtemplate(21, RecipeCardComponent_div_0_div_21_Template, 2, 1, "div", 20);
362
- i0.ɵɵtemplate(22, RecipeCardComponent_div_0_ng_template_22_Template, 1, 1, "ng-template", null, 21, i0.ɵɵtemplateRefExtractor);
363
141
  i0.ɵɵelementEnd();
364
- i0.ɵɵelementStart(24, "div", 22);
365
- i0.ɵɵtemplate(25, RecipeCardComponent_div_0_div_25_Template, 2, 2, "div", 23);
366
142
  i0.ɵɵelementEnd();
143
+ i0.ɵɵelementStart(18, "div", 18);
144
+ i0.ɵɵlistener("click", function RecipeCardComponent_div_1_Template_div_click_18_listener() { i0.ɵɵrestoreView(_r24); const ctx_r25 = i0.ɵɵnextContext(); return ctx_r25.openRecipe(); });
145
+ i0.ɵɵtemplate(19, RecipeCardComponent_div_1_div_19_Template, 6, 3, "div", 19);
146
+ i0.ɵɵelementStart(20, "div", 20);
147
+ i0.ɵɵtemplate(21, RecipeCardComponent_div_1_div_21_Template, 2, 2, "div", 21);
148
+ i0.ɵɵelementStart(22, "div", 22);
149
+ i0.ɵɵtemplate(23, RecipeCardComponent_div_1_ng_miam_recipe_card_cta_23_Template, 1, 4, "ng-miam-recipe-card-cta", 23);
367
150
  i0.ɵɵelementEnd();
368
- i0.ɵɵelementStart(26, "ng-miam-recipe-card-cta", 24);
369
- i0.ɵɵlistener("displayed", function RecipeCardComponent_div_0_Template_ng_miam_recipe_card_cta_displayed_26_listener() { i0.ɵɵrestoreView(_r49); const ctx_r50 = i0.ɵɵnextContext(); return ctx_r50.displayed.emit(); })("clicked", function RecipeCardComponent_div_0_Template_ng_miam_recipe_card_cta_clicked_26_listener($event) { i0.ɵɵrestoreView(_r49); const ctx_r51 = i0.ɵɵnextContext(); return ctx_r51.primaryButtonClicked$.emit($event); });
151
+ i0.ɵɵtemplate(24, RecipeCardComponent_div_1_div_24_Template, 6, 1, "div", 24);
152
+ i0.ɵɵtemplate(25, RecipeCardComponent_div_1_button_25_Template, 3, 0, "button", 25);
370
153
  i0.ɵɵelementEnd();
371
154
  i0.ɵɵelementEnd();
372
155
  i0.ɵɵelementEnd();
373
156
  } if (rf & 2) {
374
- const _r4 = i0.ɵɵreference(5);
375
- const _r7 = i0.ɵɵreference(9);
376
- const _r11 = i0.ɵɵreference(14);
377
- const _r15 = i0.ɵɵreference(23);
157
+ const _r4 = i0.ɵɵreference(9);
378
158
  const ctx_r0 = i0.ɵɵnextContext();
379
159
  i0.ɵɵadvance(3);
380
- i0.ɵɵproperty("ngIf", ctx_r0.recipe)("ngIfElse", _r4);
381
- i0.ɵɵadvance(4);
382
- i0.ɵɵproperty("ngIf", ctx_r0.recipe)("ngIfElse", _r7);
160
+ i0.ɵɵproperty("src", ctx_r0.recipe == null ? null : ctx_r0.recipe.attributes["media-url"], i0.ɵɵsanitizeUrl);
383
161
  i0.ɵɵadvance(4);
384
- i0.ɵɵproperty("ngIf", ctx_r0.recipe)("ngIfElse", _r11);
385
- i0.ɵɵadvance(1);
386
- i0.ɵɵproperty("ngIf", ctx_r0.recipe)("ngIfElse", _r11);
387
- i0.ɵɵadvance(7);
388
- i0.ɵɵproperty("width", 24)("height", 24)("iconName", ctx_r0.icon.Help);
389
- i0.ɵɵadvance(1);
162
+ i0.ɵɵproperty("ngIf", (ctx_r0.recipe.relationships["recipe-provider"] == null ? null : ctx_r0.recipe.relationships["recipe-provider"].data.id) === "personal")("ngIfElse", _r4);
163
+ i0.ɵɵadvance(6);
164
+ i0.ɵɵtextInterpolate(ctx_r0.recipe.attributes["title"]);
165
+ i0.ɵɵadvance(3);
166
+ i0.ɵɵtextInterpolate(ctx_r0.recipe.modifiedGuests);
167
+ i0.ɵɵadvance(3);
390
168
  i0.ɵɵproperty("ngIf", ctx_r0.contextService.displayIngredientPicturesOnRecipeCards && (ctx_r0.recipe == null ? null : ctx_r0.recipe.modifiedIngredients == null ? null : ctx_r0.recipe.modifiedIngredients.length) > 1);
391
- i0.ɵɵadvance(1);
392
- i0.ɵɵproperty("ngIf", ctx_r0.recipe)("ngIfElse", _r15);
393
- i0.ɵɵadvance(4);
169
+ i0.ɵɵadvance(2);
394
170
  i0.ɵɵproperty("ngIf", ctx_r0.recipe && ctx_r0.displayPricing);
171
+ i0.ɵɵadvance(2);
172
+ i0.ɵɵproperty("ngIf", ctx_r0.previewAllowed && !ctx_r0.addRecipeMode && !ctx_r0.replaceMode);
395
173
  i0.ɵɵadvance(1);
396
- i0.ɵɵproperty("recipe", ctx_r0.recipe)("cardType", ctx_r0.cardType)("previewAllowed", ctx_r0.previewAllowed)("displayGuests", ctx_r0.displayGuests)("helpButtonAllowed", ctx_r0.helpButtonAllowed)("originTrace", ctx_r0.eventTrace());
174
+ i0.ɵɵproperty("ngIf", ctx_r0.replaceMode);
175
+ i0.ɵɵadvance(1);
176
+ i0.ɵɵproperty("ngIf", ctx_r0.addRecipeMode);
397
177
  } }
398
- function RecipeCardComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
399
- i0.ɵɵelement(0, "ng-miam-cors-overlay");
178
+ function RecipeCardComponent_div_2_Template(rf, ctx) { if (rf & 1) {
179
+ i0.ɵɵelementStart(0, "div", 43);
180
+ i0.ɵɵelementStart(1, "div", 44);
181
+ i0.ɵɵelementStart(2, "span");
182
+ i0.ɵɵi18n(3, 45);
183
+ i0.ɵɵelementEnd();
184
+ i0.ɵɵelementEnd();
185
+ i0.ɵɵelementStart(4, "div", 46);
186
+ i0.ɵɵelement(5, "img", 32);
187
+ i0.ɵɵelementEnd();
188
+ i0.ɵɵelementEnd();
189
+ } if (rf & 2) {
190
+ const ctx_r1 = i0.ɵɵnextContext();
191
+ i0.ɵɵadvance(5);
192
+ i0.ɵɵproperty("src", ctx_r1.recipe.sponsorLogoUrl, i0.ɵɵsanitizeUrl);
193
+ } }
194
+ function RecipeCardComponent_ng_miam_actions_popin_3_Template(rf, ctx) { if (rf & 1) {
195
+ const _r27 = i0.ɵɵgetCurrentView();
196
+ i0.ɵɵelementStart(0, "ng-miam-actions-popin", 47);
197
+ i0.ɵɵlistener("close", function RecipeCardComponent_ng_miam_actions_popin_3_Template_ng_miam_actions_popin_close_0_listener() { i0.ɵɵrestoreView(_r27); const ctx_r26 = i0.ɵɵnextContext(); return ctx_r26.closeMoreActions(); })("actionTriggered", function RecipeCardComponent_ng_miam_actions_popin_3_Template_ng_miam_actions_popin_actionTriggered_0_listener($event) { i0.ɵɵrestoreView(_r27); const ctx_r28 = i0.ɵɵnextContext(); return ctx_r28.actionTriggered.emit($event); });
198
+ i0.ɵɵelementEnd();
400
199
  } }
401
200
  const recipeIncludes = ['recipe-provider', 'sponsors'];
402
201
  const recipeSparseFields = {
@@ -414,116 +213,219 @@ const recipeSparseFields = {
414
213
  * and alsow style of the parent aplication that will use it
415
214
  * doc -> https://angular.io/api/core/ViewEncapsulation
416
215
  */
417
- export class RecipeCardComponent extends AbstractRecipeCardComponent {
418
- constructor(cdr, recipeService, recipeEventsService, groceriesListsService, userService, contextService, analyticsService, element) {
419
- super(cdr, recipeService, recipeEventsService, groceriesListsService, contextService, analyticsService, element);
216
+ export class RecipeCardComponent extends EventTracerComponent {
217
+ constructor(cdr, recipeService, basketsService, userService, contextService, analyticsService, element, scrollService) {
218
+ super(analyticsService);
420
219
  this.cdr = cdr;
421
220
  this.recipeService = recipeService;
422
- this.recipeEventsService = recipeEventsService;
423
- this.groceriesListsService = groceriesListsService;
221
+ this.basketsService = basketsService;
424
222
  this.userService = userService;
425
223
  this.contextService = contextService;
426
224
  this.analyticsService = analyticsService;
427
225
  this.element = element;
226
+ this.scrollService = scrollService;
428
227
  this.previewAllowed = true;
429
228
  this.helpButtonAllowed = true;
229
+ this.displayPricing = true;
230
+ this.displayGuests = true;
231
+ this.addRecipeMode = false;
232
+ this.replaceMode = false;
430
233
  this.removedFromFavorite = new EventEmitter();
431
234
  this.displayed = new EventEmitter();
432
- this.guestsChanged = new EventEmitter();
235
+ this.actionTriggered = new EventEmitter();
236
+ this.removeFromMealsPlanner = new EventEmitter();
237
+ this.addToMealsPlanner = new EventEmitter();
238
+ this.openCatalog = new EventEmitter();
239
+ this.hide = new EventEmitter();
240
+ this.icon = Icon;
241
+ this.addButtonLoading = false;
242
+ this.actionsOpened = false;
433
243
  this.isloaded = false;
434
- this.cardType = 'suggestion-card';
244
+ this.analyticsEventSent = false;
245
+ this.sendShowEventsOnScroll = true;
435
246
  this.primaryButtonClicked$ = new EventEmitter();
436
- this.subscriptions.push(this.recipeService.displayedRecipeChanged.subscribe(() => this.cdr.detectChanges()));
247
+ this.subscriptions = [];
248
+ }
249
+ ngOnInit() {
250
+ this.subscriptions.push(this.recipeService.displayedRecipeChanged$.subscribe(() => this.cdr.detectChanges()));
251
+ }
252
+ currentPath() {
253
+ return '';
437
254
  }
438
- ngOnChanges() {
255
+ currentProps() {
256
+ var _a;
257
+ return { recipe_id: (_a = this.recipe) === null || _a === void 0 ? void 0 : _a.id };
258
+ }
259
+ ngOnChanges(simpleChanges) {
439
260
  if (this.recipe) {
440
- this.recipeWasLoaded();
261
+ this.updateGuestsIfNecessary();
262
+ this.isloaded = true;
441
263
  }
442
264
  else if (this.recipeId) {
443
- this.loadRecipe();
265
+ this.loadRecipeFromId();
266
+ }
267
+ if ((simpleChanges.productIds && !this.randomModeEnable) || !this.recipe) {
268
+ this.loadRecipeFromContext();
444
269
  }
445
270
  }
446
- recipeWasLoaded() {
447
- var _a;
448
- (_a = this.recipe).modifiedGuests || (_a.modifiedGuests = +this.recipe.guests);
449
- this.isloaded = true;
450
- this.cdr.detectChanges();
271
+ ngAfterViewInit() {
272
+ this.subscriptions.push(this.scrollService.scroll$.subscribe(() => {
273
+ if (this.sendShowEventsOnScroll) {
274
+ this.sendShowEvent();
275
+ }
276
+ }));
277
+ this.sendShowEvent();
278
+ this.subscriptions.push(this.basketsService.basket$.subscribe(() => this.cdr.detectChanges()));
279
+ this.subscriptions.push(this.recipeService.reloadRecipes$.subscribe(shouldReload => {
280
+ if (shouldReload) {
281
+ this.cdr.detectChanges();
282
+ }
283
+ }));
451
284
  }
452
- removeFromFavorite() {
453
- this.removedFromFavorite.emit(this.recipe);
285
+ ngOnDestroy() {
286
+ this.subscriptions.forEach(sub => sub.unsubscribe());
454
287
  }
288
+ // //////////////////////////////////////// DISPLAY RECIPE DETAILS //////////////////////////////////////// //
455
289
  openRecipe() {
456
- const videoEvent = this.contextService.videoRecipesEnabled && this.recipe.videoId;
457
- this.recipeService.displayObject(this.recipe, { previewAllowed: this.previewAllowed, guests: this.recipe.modifiedGuests, displayGuests: this.displayGuests, helpButtonAllowed: this.helpButtonAllowed }, this.eventTrace());
290
+ // const videoEvent = this.contextService.videoRecipesEnabled && this.recipe.videoId;
291
+ this.recipeService.displayObject(this.recipe, {
292
+ previewAllowed: this.previewAllowed,
293
+ guests: this.recipe.modifiedGuests,
294
+ displayGuests: this.displayGuests,
295
+ helpButtonAllowed: this.helpButtonAllowed
296
+ }, this.eventTrace());
458
297
  this.displayed.emit();
459
298
  }
460
- updateGuests(count) {
461
- this.recipe.modifiedGuests = count;
462
- if (this.recipeId) {
463
- this._updateBasket();
464
- } // If recipe was loaded here, we need to process basket updates here
465
- this.guestsChanged.emit(count);
299
+ // //////////////////////////////////////// DISPLAY RECIPE DETAILS //////////////////////////////////////// //
300
+ ingredientPicture(ingredient) {
301
+ return ingredient.picture || this.contextService.defaultIngredientPicture;
302
+ }
303
+ // //////////////////////////////////////// PERSONAL RECIPES ACTIONS POPUP //////////////////////////////////////// //
304
+ toggleMoreActions(event) {
305
+ var _a;
306
+ event.preventDefault();
307
+ event.stopPropagation();
308
+ if (((_a = this.recipe.relationships['recipe-provider']) === null || _a === void 0 ? void 0 : _a.data.id) === 'personal') {
309
+ this.actionsOpened = !this.actionsOpened;
310
+ this.cdr.detectChanges();
311
+ }
312
+ }
313
+ closeMoreActions() {
314
+ this.actionsOpened = false;
466
315
  this.cdr.detectChanges();
467
316
  }
468
- _updateBasket() {
469
- // If recipe already in basket, update the number of guests so that the pricing gets updated as well
470
- // (display = false so that the recipe details don't show up)
471
- this.subscriptions.push(this.groceriesListsService.recipeIsInList(this.recipe.id).pipe(switchMap(recipeIsInList => {
472
- if (recipeIsInList) {
473
- return this.groceriesListsService.appendRecipeToList(this.recipe.id, this.recipe.modifiedGuests, this.eventTrace())
474
- .pipe(take(1));
475
- }
476
- })).subscribe(() => this.cdr.detectChanges()));
317
+ // //////////////////////////////////////// CHECK IF CARD ENTERS THE VIEWPORT //////////////////////////////////////// //
318
+ isInViewport() {
319
+ const rect = this.element.nativeElement.getBoundingClientRect();
320
+ return (rect.top >= 0 &&
321
+ rect.left >= 0 &&
322
+ rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
323
+ rect.right <= (window.innerWidth || document.documentElement.clientWidth));
477
324
  }
478
- loadRecipe() {
479
- if (this.contextService.displayIngredientPicturesOnRecipeCards && !recipeIncludes.includes('ingredients')) {
480
- recipeIncludes.push('ingredients');
481
- recipeSparseFields.recipes.push('ingredients');
482
- recipeSparseFields['ingredients'] = ['name', 'quantity', 'unit', 'active', 'forced-eans', 'picture-url', 'position'];
325
+ // Send analytics event when :
326
+ // - new recipe is to be displayed AND is already visible in viewport
327
+ // OR
328
+ // - user scrolls and recipe becomes visible in viewport
329
+ sendShowEvent() {
330
+ if (!this.recipe) {
331
+ return false;
483
332
  }
484
- this.recipeService.get(this.recipeId, { include: recipeIncludes, fields: recipeSparseFields }).pipe(skipWhile(result => result.is_loading), catchError(err => {
333
+ if (!this.analyticsEventSent && this.isInViewport()) {
334
+ this.sendEvent(this.analyticsService.EVENT_RECIPE_SHOW);
335
+ this.analyticsEventSent = true;
336
+ }
337
+ }
338
+ // //////////////////////////////////////// FETCH THE RECIPE //////////////////////////////////////// //
339
+ /**
340
+ * Fetch a recipe from its id.
341
+ * Hide the card if none is returned (could be because it does not exists or it is not shared with the supplier)
342
+ */
343
+ loadRecipeFromId() {
344
+ this.subscriptions.push(this.recipeService.get(this.recipeId, { include: recipeIncludes, fields: recipeSparseFields }).pipe(skipWhile(result => result.is_loading), catchError(err => {
485
345
  this.hide.emit();
486
346
  return of(err);
487
- })).subscribe(result => {
347
+ })).subscribe((result) => {
488
348
  this.recipe = result;
489
- if (this.recipe) {
490
- this.recipeWasLoaded();
349
+ this.updateGuestsIfNecessary();
350
+ this.isloaded = true;
351
+ this.cdr.detectChanges();
352
+ }));
353
+ }
354
+ /**
355
+ * Get a suggestion based on context (either productIds or randomMode). Hide the card if none is returned
356
+ */
357
+ loadRecipeFromContext() {
358
+ this.subscriptions.push(this.fetchSuggestionOrRandom().pipe(skipWhile(results => !results), catchError(err => {
359
+ this.hide.emit();
360
+ return of(err);
361
+ })).subscribe((results) => {
362
+ if ((results === null || results === void 0 ? void 0 : results.length) > 0) {
363
+ this.recipe = results[0];
364
+ this.updateGuestsIfNecessary();
365
+ this.isloaded = true;
366
+ }
367
+ else {
368
+ this.hide.emit();
491
369
  }
492
370
  this.cdr.detectChanges();
493
- });
371
+ }));
372
+ }
373
+ fetchSuggestionOrRandom() {
374
+ if (this.randomModeEnable) {
375
+ return this.recipeService.getRandom(recipeIncludes, recipeSparseFields);
376
+ }
377
+ else {
378
+ return this.recipeService.getSuggestion(this.productIds, recipeIncludes, recipeSparseFields);
379
+ }
380
+ }
381
+ /**
382
+ * Update guests from the value in the basket if the recipe is in the basket
383
+ */
384
+ updateGuestsIfNecessary() {
385
+ this.subscriptions.push(this.basketsService.recipeIsInBasket(this.recipe.id).pipe(take(1)).subscribe(isInList => {
386
+ if (isInList) {
387
+ this.recipe.modifiedGuests = this.basketsService.guestsForRecipe(this.recipe.id) || +this.recipe.guests;
388
+ }
389
+ else if (!this.recipe.modifiedGuests) {
390
+ this.recipe.modifiedGuests = +this.recipe.guests;
391
+ }
392
+ this.cdr.detectChanges();
393
+ }));
494
394
  }
495
395
  }
496
- RecipeCardComponent.ɵfac = function RecipeCardComponent_Factory(t) { return new (t || RecipeCardComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.RecipesService), i0.ɵɵdirectiveInject(i1.RecipeEventsService), i0.ɵɵdirectiveInject(i1.GroceriesListsService), i0.ɵɵdirectiveInject(i1.UserService), i0.ɵɵdirectiveInject(i1.ContextService), i0.ɵɵdirectiveInject(i1.AnalyticsService), i0.ɵɵdirectiveInject(i0.ElementRef)); };
497
- RecipeCardComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeCardComponent, selectors: [["ng-miam-recipe-card"]], inputs: { recipeId: "recipeId", recipe: "recipe", previewAllowed: "previewAllowed", helpButtonAllowed: "helpButtonAllowed" }, outputs: { removedFromFavorite: "removedFromFavorite", displayed: "displayed", guestsChanged: "guestsChanged" }, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 3, vars: 1, consts: function () { var i18n_0; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
498
- const MSG_EXTERNAL_3684169623116339825$$LIB__WEB_COMPONENTS_RECIPE_CARDS_RECIPE_CARD_RECIPE_CARD_COMPONENT_TS_____1 = goog.getMsg("Chef d\u00E9butant");
499
- i18n_0 = MSG_EXTERNAL_3684169623116339825$$LIB__WEB_COMPONENTS_RECIPE_CARDS_RECIPE_CARD_RECIPE_CARD_COMPONENT_TS_____1;
396
+ RecipeCardComponent.ɵfac = function RecipeCardComponent_Factory(t) { return new (t || RecipeCardComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.RecipesService), i0.ɵɵdirectiveInject(i1.BasketsService), i0.ɵɵdirectiveInject(i1.UserService), i0.ɵɵdirectiveInject(i1.ContextService), i0.ɵɵdirectiveInject(i1.AnalyticsService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.ScrollingService)); };
397
+ RecipeCardComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeCardComponent, selectors: [["ng-miam-recipe-card"]], inputs: { recipeId: "recipeId", recipe: "recipe", randomModeEnable: "randomModeEnable", productIds: "productIds", previewAllowed: "previewAllowed", helpButtonAllowed: "helpButtonAllowed", displayPricing: "displayPricing", displayGuests: "displayGuests", addRecipeMode: "addRecipeMode", replaceMode: "replaceMode" }, outputs: { removedFromFavorite: "removedFromFavorite", displayed: "displayed", actionTriggered: "actionTriggered", removeFromMealsPlanner: "removeFromMealsPlanner", addToMealsPlanner: "addToMealsPlanner", openCatalog: "openCatalog", hide: "hide" }, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 4, vars: 3, consts: function () { var i18n_0; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
398
+ const MSG_EXTERNAL_4705093661060921903$$LIB__WEB_COMPONENTS_RECIPE_CARDS_RECIPE_CARD_RECIPE_CARD_COMPONENT_TS___1 = goog.getMsg("Remplacer");
399
+ i18n_0 = MSG_EXTERNAL_4705093661060921903$$LIB__WEB_COMPONENTS_RECIPE_CARDS_RECIPE_CARD_RECIPE_CARD_COMPONENT_TS___1;
500
400
  }
501
401
  else {
502
- i18n_0 = $localize `:␟96cca7cb17582a9b01053a242ca907b721fad7fe3684169623116339825:Chef débutant`;
402
+ i18n_0 = $localize `:␟8e4fa20cb8b77c41c980ba077b80bc8ea128239a4705093661060921903:Remplacer`;
503
403
  } var i18n_2; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
504
- const MSG_EXTERNAL_7733455880752157102$$LIB__WEB_COMPONENTS_RECIPE_CARDS_RECIPE_CARD_RECIPE_CARD_COMPONENT_TS_____3 = goog.getMsg("Chef interm\u00E9diaire");
505
- i18n_2 = MSG_EXTERNAL_7733455880752157102$$LIB__WEB_COMPONENTS_RECIPE_CARDS_RECIPE_CARD_RECIPE_CARD_COMPONENT_TS_____3;
404
+ const MSG_EXTERNAL_70397346439942337$$LIB__WEB_COMPONENTS_RECIPE_CARDS_RECIPE_CARD_RECIPE_CARD_COMPONENT_TS___3 = goog.getMsg("Ajouter");
405
+ i18n_2 = MSG_EXTERNAL_70397346439942337$$LIB__WEB_COMPONENTS_RECIPE_CARDS_RECIPE_CARD_RECIPE_CARD_COMPONENT_TS___3;
506
406
  }
507
407
  else {
508
- i18n_2 = $localize `:␟ccfd103e2bbd9a80c6d3a226332a77c93c88d8717733455880752157102:Chef intermédiaire`;
408
+ i18n_2 = $localize `:␟8aa969e69241c7c5838b40348f913519d634937170397346439942337:Ajouter`;
509
409
  } var i18n_4; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
510
- const MSG_EXTERNAL_8735393154824887316$$LIB__WEB_COMPONENTS_RECIPE_CARDS_RECIPE_CARD_RECIPE_CARD_COMPONENT_TS_____5 = goog.getMsg("Top chef");
511
- i18n_4 = MSG_EXTERNAL_8735393154824887316$$LIB__WEB_COMPONENTS_RECIPE_CARDS_RECIPE_CARD_RECIPE_CARD_COMPONENT_TS_____5;
410
+ const MSG_EXTERNAL_2091641344398253510$$LIB__WEB_COMPONENTS_RECIPE_CARDS_RECIPE_CARD_RECIPE_CARD_COMPONENT_TS__5 = goog.getMsg("Une recette propopos\u00E9e par");
411
+ i18n_4 = MSG_EXTERNAL_2091641344398253510$$LIB__WEB_COMPONENTS_RECIPE_CARDS_RECIPE_CARD_RECIPE_CARD_COMPONENT_TS__5;
512
412
  }
513
413
  else {
514
- i18n_4 = $localize `:␟fb603a6dffb1bfa95a9b7eda7e134156ab67f0b38735393154824887316:Top chef`;
515
- } var i18n_6; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
516
- const MSG_EXTERNAL_3684169623116339825$$LIB__WEB_COMPONENTS_RECIPE_CARDS_RECIPE_CARD_RECIPE_CARD_COMPONENT_TS_____7 = goog.getMsg("Chef d\u00E9butant");
517
- i18n_6 = MSG_EXTERNAL_3684169623116339825$$LIB__WEB_COMPONENTS_RECIPE_CARDS_RECIPE_CARD_RECIPE_CARD_COMPONENT_TS_____7;
518
- }
519
- else {
520
- i18n_6 = $localize `:␟96cca7cb17582a9b01053a242ca907b721fad7fe␟3684169623116339825:Chef débutant`;
521
- } return [["class", "miam-recipe-card", 4, "ngIf"], ["cors", ""], [1, "miam-recipe-card"], [1, "miam-recipe-card__bookmark"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/recipe-card/Bookmark.svg", "alt", "Id\u00E9es repas"], ["class", "miam-recipe-card__picture", 3, "click", 4, "ngIf", "ngIfElse"], ["pictSkeleton", ""], [1, "miam-recipe-card__attributes"], [4, "ngIf", "ngIfElse"], ["textSkeleton", ""], [1, "miam-recipe-card__attributes__infos"], ["class", "miam-recipe-card__attributes__info recipe__total__time", 4, "ngIf", "ngIfElse"], ["class", "miam-recipe-card__attributes__info recipe__difficulty", 3, "ngClass", 4, "ngIf", "ngIfElse"], ["skeletonInfo", ""], [1, "miam-recipe-card__attributes__control"], [1, "miam-recipe-card__control__left__col"], [1, "miam-recipe-card__left__col__custom"], [1, "miam-recipe-card__help", 3, "click"], ["primaryColor", "var(--m-color-grey02)", "secondaryColor", "var(--m-color-grey07)", 3, "width", "height", "iconName"], ["class", "miam-recipe-card__ingredients__pictures", 4, "ngIf"], ["class", "miam-recipe-card__left__col__counter", 4, "ngIf", "ngIfElse"], ["skeletoncounter", ""], [1, "miam-recipe-card__control__right__col"], ["class", "miam-recipe-card__right__col__price", 4, "ngIf"], [3, "recipe", "cardType", "previewAllowed", "displayGuests", "helpButtonAllowed", "originTrace", "displayed", "clicked"], [1, "miam-recipe-card__picture", 3, "click"], ["loading", "lazy", 3, "src"], ["class", "miam-recipe-card__picture__video", 4, "ngIf"], [1, "miam-recipe-card__picture__actions"], ["class", "miam-recipe-card__actions__icon", 3, "recipe", "originTrace", 4, "ngIf"], ["class", "miam-recipe-card__picture__sponsor", 4, "ngIf"], ["class", "miam-recipe-card__picture__filigrane", 4, "ngIf"], [1, "miam-recipe-card__picture__video"], ["primaryColor", "black", 3, "iconName", "width", "height"], [1, "miam-recipe-card__actions__icon", 3, "recipe", "originTrace"], [1, "miam-recipe-card__picture__sponsor"], [3, "src"], [1, "miam-recipe-card__picture__filigrane"], [3, "type"], [1, "miam-recipe-card__attributes__title", 3, "click"], [1, "miam-recipe-card__attributes__info", "recipe__total__time"], [3, "width", "height", "iconName"], [1, "miam-recipe-card__info__label"], [1, "miam-recipe-card__attributes__info", "recipe__difficulty", 3, "ngClass"], [3, "ngSwitch"], [4, "ngSwitchCase"], [4, "ngSwitchDefault"], ["primaryColor", "var(--m-color-black)", 3, "width", "height", "iconName"], ["class", "miam-recipe-card__info__label easy", 4, "ngIf", "ngIfElse"], ["difficultyEasyDefault", ""], [1, "miam-recipe-card__info__label", "easy"], i18n_0, ["class", "miam-recipe-card__info__label medium", 4, "ngIf", "ngIfElse"], ["difficultyMediumDefault", ""], [1, "miam-recipe-card__info__label", "medium"], i18n_2, ["class", "miam-recipe-card__info__label hard", 4, "ngIf", "ngIfElse"], ["difficultyHardDefault", ""], [1, "miam-recipe-card__info__label", "hard"], i18n_4, ["difficultyDefault", ""], i18n_6, [1, "miam-recipe-card__ingredients__pictures"], [1, "miam-recipe-card__ingredients__picture"], ["class", "miam-recipe-card__ingredients__more", 4, "ngIf"], [1, "miam-recipe-card__ingredients__more"], [1, "miam-recipe-card__left__col__counter"], [3, "counter", "counterChange"], [1, "miam-recipe-card__right__col__price"], [3, "recipe", "serves"]]; }, template: function RecipeCardComponent_Template(rf, ctx) { if (rf & 1) {
522
- i0.ɵɵtemplate(0, RecipeCardComponent_div_0_Template, 27, 21, "div", 0);
523
- i0.ɵɵtemplate(1, RecipeCardComponent_ng_template_1_Template, 1, 0, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
414
+ i18n_4 = $localize `:␟46efff5fa5083a75f9b3497de381be0182e38fac2091641344398253510:Une recette propoposée par`;
415
+ } return [[1, "miam-recipe-card"], ["class", "miam-recipe-card__container", 4, "ngIf"], ["class", "miam-recipe-card__sponsor", 4, "ngIf"], [3, "close", "actionTriggered", 4, "ngIf"], [1, "miam-recipe-card__container"], [1, "miam-recipe-card__top", 3, "click"], [1, "miam-recipe-card__picture"], ["loading", "lazy", 3, "src"], [1, "miam-recipe-card__gradient"], [1, "miam-recipe-card__content"], [1, "miam-recipe-card__like"], ["class", "miam-recipe-card__actions__icon", 3, "click", 4, "ngIf", "ngIfElse"], ["like", ""], [1, "miam-recipe-card__picture__bottom"], [1, "miam-recipe-card__title", "miam-ds-text", "weight-xxl", "size-m"], [1, "miam-recipe-card__counter"], [1, "miam-ds-text", "weight-xxl", "size-m"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/recipe-counter.svg", "alt", "people"], [1, "miam-recipe-card__bottom", 3, "click"], ["class", "miam-recipe-card__ingredients__pictures", 4, "ngIf"], [1, "miam-recipe-card__actions"], ["class", "miam-recipe-card__price", 4, "ngIf"], [1, "miam-recipe-card__cta"], [3, "recipe", "previewAllowed", "displayGuests", "helpButtonAllowed", "displayed", "clicked", 4, "ngIf"], ["class", "miam-recipe-card__actions__replace", 4, "ngIf"], ["class", "miam-ds-button primary reverse", 3, "click", 4, "ngIf"], [1, "miam-recipe-card__actions__icon", 3, "click"], ["primaryColor", "var(--m-color-primary)", 3, "iconName"], ["class", "miam-recipe-card__actions__icon", 3, "recipe", "originTrace", "width", "height", 4, "ngIf"], [1, "miam-recipe-card__actions__icon", 3, "recipe", "originTrace", "width", "height"], [1, "miam-recipe-card__ingredients__pictures"], [1, "miam-recipe-card__ingredients__picture"], [3, "src"], ["class", "miam-recipe-card__ingredients__more", 4, "ngIf"], [1, "miam-recipe-card__ingredients__more"], [1, "miam-recipe-card__price"], [1, "miam-ds-text", "weight-xxl", 3, "recipeId", "serves"], [3, "recipe", "previewAllowed", "displayGuests", "helpButtonAllowed", "displayed", "clicked"], [1, "miam-recipe-card__actions__replace"], [1, "miam-ds-button", "primary", "reverse", "square", 3, "click"], [1, "miam-ds-button", "primary", "reverse", 3, "click"], i18n_0, i18n_2, [1, "miam-recipe-card__sponsor"], [1, "miam-recipe-card__sponsor__text"], i18n_4, [1, "miam-recipe-card__sponsor__logo"], [3, "close", "actionTriggered"]]; }, template: function RecipeCardComponent_Template(rf, ctx) { if (rf & 1) {
416
+ i0.ɵɵelementStart(0, "div", 0);
417
+ i0.ɵɵtemplate(1, RecipeCardComponent_div_1_Template, 26, 10, "div", 1);
418
+ i0.ɵɵtemplate(2, RecipeCardComponent_div_2_Template, 6, 1, "div", 2);
419
+ i0.ɵɵtemplate(3, RecipeCardComponent_ng_miam_actions_popin_3_Template, 1, 0, "ng-miam-actions-popin", 3);
420
+ i0.ɵɵelementEnd();
524
421
  } if (rf & 2) {
525
- i0.ɵɵproperty("ngIf", ctx.isloaded);
526
- } }, directives: [i2.NgIf, i3.IconComponent, i4.RecipeCardCtaComponent, i5.LikeButtonComponent, i6.SkeletonComponent, i2.NgClass, i2.NgSwitch, i2.NgSwitchCase, i2.NgSwitchDefault, i7.CounterInputComponent, i8.RecipePricingComponent, i9.CORSOverlayComponent], pipes: [i2.AsyncPipe], styles: [".miam-recipe-card{background-color:var(--m-color-white);border-radius:var(--m-border-radius);box-shadow:var(--m-shadow-small);display:flex;flex-direction:column;height:100%;min-height:440px;position:relative;width:320px}.miam-recipe-card .miam-recipe-card__bookmark{filter:drop-shadow(0 6px 8px rgba(0,0,0,.1));left:0;position:absolute;top:10px;z-index:1}.miam-recipe-card .miam-recipe-card__picture{-webkit-tap-highlight-color:transparent;cursor:pointer;height:60%;position:relative}.miam-recipe-card .miam-recipe-card__picture img{-o-object-fit:cover;border-top-left-radius:var(--m-border-radius);border-top-right-radius:var(--m-border-radius);height:100%;object-fit:cover;position:absolute;transition:var(--m-default-transition);width:100%;z-index:var(--m-z-index-position-absolute-low)}.miam-recipe-card .miam-recipe-card__picture .miam-recipe-card__picture__video{left:calc(50% - 50px);position:absolute;top:calc(50% - 50px)}.miam-recipe-card .miam-recipe-card__picture .miam-recipe-card__picture__actions{display:flex;position:absolute;right:16px;top:20px;z-index:var(--m-z-index-position-absolute-high)}.miam-recipe-card .miam-recipe-card__picture .miam-recipe-card__picture__actions ng-miam-like-button.miam-recipe-card__actions__icon{-o-object-fit:contain;background-color:var(--m-color-white);border-radius:var(--m-border-radius-circle);filter:drop-shadow(0 6px 8px rgba(0,0,0,.1));margin:0 0 16px;object-fit:contain;width:-webkit-max-content;width:-moz-max-content;width:max-content}.miam-recipe-card .miam-recipe-card__picture .miam-recipe-card__picture__sponsor{align-items:flex-start;display:flex;height:48px;justify-content:flex-start;left:16px;order:2;position:absolute;top:16px;width:64px}.miam-recipe-card .miam-recipe-card__picture .miam-recipe-card__picture__sponsor img{-o-object-fit:contain;border-radius:0;height:auto;max-height:100%;max-width:100%;object-fit:contain;position:unset;transition:unset;width:auto;z-index:unset}.miam-recipe-card .miam-recipe-card__picture .miam-recipe-card__picture__filigrane{align-items:flex-end;bottom:16px;display:flex;height:48px;justify-content:flex-end;order:2;position:absolute;right:16px;width:72px}.miam-recipe-card .miam-recipe-card__picture .miam-recipe-card__picture__filigrane img{-o-object-fit:contain;border-radius:0;height:auto;max-height:100%;max-width:100%;object-fit:contain;position:unset;transition:unset;width:auto;z-index:unset}.miam-recipe-card .miam-recipe-card__attributes{display:flex;flex:1 1;flex-direction:column;justify-content:space-around;justify-content:space-between;padding:8px 16px 16px}.miam-recipe-card .miam-recipe-card__attributes .miam-recipe-card__attributes__title{-webkit-box-orient:vertical;-webkit-line-clamp:2;-webkit-tap-highlight-color:transparent;color:var(--m-color-slate);cursor:pointer;display:-webkit-box;font-size:20px;font-weight:700;font-weight:500;letter-spacing:normal;line-height:30;line-height:1.5;overflow:hidden;text-align:center;text-overflow:ellipsis;transition:var(--m-default-transition)}.miam-recipe-card .miam-recipe-card__attributes .miam-recipe-card__attributes__title:hover{color:var(--m-color-primary);text-decoration:underline}.miam-recipe-card .miam-recipe-card__attributes .miam-recipe-card__attributes__infos{display:flex;flex-direction:row;justify-content:space-around;padding:8px 0}.miam-recipe-card .miam-recipe-card__attributes .miam-recipe-card__attributes__infos .miam-recipe-card__attributes__info{align-items:center;display:flex;flex-direction:column;width:100%}.miam-recipe-card .miam-recipe-card__attributes .miam-recipe-card__attributes__infos .miam-recipe-card__attributes__info.recipe__total__time{border-right:1px solid #e9e9e9}.miam-recipe-card .miam-recipe-card__attributes .miam-recipe-card__attributes__infos .miam-recipe-card__attributes__info.recipe__price{border-left:1px solid #e9e9e9;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}.miam-recipe-card .miam-recipe-card__attributes .miam-recipe-card__attributes__infos .miam-recipe-card__attributes__info.recipe__price .miam-recipe-pricing__wrapper__price{line-height:20px}.miam-recipe-card .miam-recipe-card__attributes .miam-recipe-card__attributes__infos .miam-recipe-card__attributes__info .miam-recipe-card__info__label{font-size:14px;margin-top:10px;text-transform:capitalize}.miam-recipe-card .miam-recipe-card__attributes .miam-recipe-card__attributes__control{align-items:center;display:flex;justify-content:space-between}.miam-recipe-card .miam-recipe-card__attributes .miam-recipe-card__attributes__control .miam-recipe-card__control__left__col{display:flex;flex-direction:column-reverse}.miam-recipe-card .miam-recipe-card__attributes .miam-recipe-card__attributes__control .miam-recipe-card__control__left__col .miam-recipe-card__left__col__counter{align-items:center;display:none}.miam-recipe-card .miam-recipe-card__attributes .miam-recipe-card__attributes__control .miam-recipe-card__control__left__col .miam-recipe-card__left__col__counter ng-miam-counter-input .miam-counter-input__icon{margin-right:8px}.miam-recipe-card .miam-recipe-card__attributes .miam-recipe-card__attributes__control .miam-recipe-card__control__left__col .miam-recipe-card__left__col__custom{align-items:flex-end;display:flex;justify-content:flex-start}.miam-recipe-card .miam-recipe-card__attributes .miam-recipe-card__attributes__control .miam-recipe-card__control__left__col .miam-recipe-card__left__col__custom .icon-container{cursor:pointer}.miam-recipe-card .miam-recipe-card__attributes .miam-recipe-card__attributes__control .miam-recipe-card__control__left__col .miam-recipe-card__left__col__custom .miam-recipe-card__help,.miam-recipe-card .miam-recipe-card__attributes .miam-recipe-card__attributes__control .miam-recipe-card__control__left__col .miam-recipe-card__left__col__custom .miam-recipe-card__ingredients__pictures{display:none}.miam-recipe-card .miam-recipe-card__attributes .miam-recipe-card__attributes__control .miam-recipe-card__control__right__col{align-items:center;display:flex;flex-direction:column;min-width:60px}.miam-recipe-card .miam-recipe-card__attributes .miam-recipe-card__attributes__control .miam-recipe-card__control__right__col .miam-recipe-card__right__col__price{display:none;height:48px}@media (max-width:1023px){.miam-recipe-card{height:440px}.miam-recipe-card .miam-recipe-card__picture{height:55%}}"], encapsulation: 2, changeDetection: 0 });
422
+ i0.ɵɵadvance(1);
423
+ i0.ɵɵproperty("ngIf", ctx.recipe);
424
+ i0.ɵɵadvance(1);
425
+ i0.ɵɵproperty("ngIf", ctx.recipe == null ? null : ctx.recipe.sponsorLogoUrl);
426
+ i0.ɵɵadvance(1);
427
+ i0.ɵɵproperty("ngIf", ctx.actionsOpened);
428
+ } }, directives: [i2.NgIf, i3.IconComponent, i4.LikeButtonComponent, i5.RecipePricingComponent, i6.RecipeCardCtaComponent, i7.ActionsPopinComponent], pipes: [i2.AsyncPipe], styles: [".miam-recipe-card{align-items:flex-start;border-radius:8px;cursor:pointer;display:flex;flex-direction:column;flex-shrink:0;height:500px;overflow:hidden;position:relative;width:308px}.miam-recipe-card .miam-recipe-card__container{align-self:stretch;display:flex;flex-direction:column;flex-shrink:0;height:100%;width:100%}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top{flex:1;height:calc(100% - 72px);position:relative}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__picture{height:100%;width:100%}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__picture img{-o-object-fit:cover;height:100%;object-fit:cover;width:100%}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__gradient{background:linear-gradient(180deg,transparent 43.67%,rgba(0,0,0,.4) 91.33%);height:100%;left:0;position:absolute;top:0;width:100%}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content{align-items:flex-end;display:flex;flex-direction:column;height:100%;justify-content:space-between;left:0;position:absolute;top:0;width:100%}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__like{margin:16px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__picture__bottom{align-items:flex-end;box-sizing:border-box;display:flex;justify-content:space-between;padding:12px;width:100%}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__picture__bottom .miam-recipe-card__title{-webkit-box-orient:vertical;-webkit-line-clamp:2;color:var(--miam-ds-color-neutral-white,#fff);display:-webkit-box;overflow:hidden;text-overflow:ellipsis;text-shadow:0 2px 8px rgba(0,0,0,.15)}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__picture__bottom .miam-recipe-card__counter{align-items:center;background:var(--miam-ds-color-neutral-white,#fff);border-radius:100px;color:var(--miam-color-neutral-black);display:flex;gap:4px;height:-moz-fit-content;height:fit-content;padding:4px 8px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__picture__bottom .miam-recipe-card__counter span{line-height:100%}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__picture__bottom .miam-recipe-card__counter img{height:16px;width:16px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom{align-items:flex-start;border-bottom:1px solid var(--borders-default,#d9dde1);border-left:1px solid var(--borders-default,#d9dde1);border-radius:0 0 8px 8px;border-right:1px solid var(--borders-default,#d9dde1);box-sizing:border-box;display:flex;flex-direction:column;height:72px;justify-content:center;padding:12px;width:100%}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions{align-items:center;align-self:stretch;display:flex;justify-content:space-between}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__price{color:var(--miam-ds-color-primary);line-height:100%;margin-right:4px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__price .miam-recipe-pricing{max-width:70px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__price .miam-recipe-pricing .miam-recipe-pricing__wrapper .miam-recipe-pricing__wrapper__subline{color:rgba(31,53,67,.5);font-weight:500;line-height:100%}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__actions__replace{align-items:center;display:flex}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__actions__replace button.square{margin-right:24px}"], encapsulation: 2, changeDetection: 0 });
527
429
  /*@__PURE__*/ (function () { i0.ɵsetClassMetadata(RecipeCardComponent, [{
528
430
  type: Component,
529
431
  args: [{
@@ -533,19 +435,39 @@ RecipeCardComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeCardComponent,
533
435
  encapsulation: ViewEncapsulation.None,
534
436
  changeDetection: ChangeDetectionStrategy.OnPush
535
437
  }]
536
- }], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.RecipesService }, { type: i1.RecipeEventsService }, { type: i1.GroceriesListsService }, { type: i1.UserService }, { type: i1.ContextService }, { type: i1.AnalyticsService }, { type: i0.ElementRef }]; }, { recipeId: [{
438
+ }], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.RecipesService }, { type: i1.BasketsService }, { type: i1.UserService }, { type: i1.ContextService }, { type: i1.AnalyticsService }, { type: i0.ElementRef }, { type: i1.ScrollingService }]; }, { recipeId: [{
537
439
  type: Input
538
440
  }], recipe: [{
539
441
  type: Input
442
+ }], randomModeEnable: [{
443
+ type: Input
444
+ }], productIds: [{
445
+ type: Input
540
446
  }], previewAllowed: [{
541
447
  type: Input
542
448
  }], helpButtonAllowed: [{
543
449
  type: Input
450
+ }], displayPricing: [{
451
+ type: Input
452
+ }], displayGuests: [{
453
+ type: Input
454
+ }], addRecipeMode: [{
455
+ type: Input
456
+ }], replaceMode: [{
457
+ type: Input
544
458
  }], removedFromFavorite: [{
545
459
  type: Output
546
460
  }], displayed: [{
547
461
  type: Output
548
- }], guestsChanged: [{
462
+ }], actionTriggered: [{
463
+ type: Output
464
+ }], removeFromMealsPlanner: [{
465
+ type: Output
466
+ }], addToMealsPlanner: [{
467
+ type: Output
468
+ }], openCatalog: [{
469
+ type: Output
470
+ }], hide: [{
549
471
  type: Output
550
472
  }] }); })();
551
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWNhcmRzL3JlY2lwZS1jYXJkL3JlY2lwZS1jYXJkLmNvbXBvbmVudC50cyIsImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWNhcmRzL3JlY2lwZS1jYXJkL3JlY2lwZS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsS0FBSyxFQUVMLE1BQU0sRUFDTixZQUFZLEVBQ1osVUFBVSxFQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQzVHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvSSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFCLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7O0lDTnBFLCtCQUNFO0lBQUEsbUNBQXVHO0lBQ3pHLGlCQUFNOzs7SUFEVSxlQUF1QjtJQUF2Qiw2Q0FBdUIsY0FBQSxlQUFBOzs7SUFJckMsMENBQ3NCOzs7SUFENkUsdUNBQWlCLHFDQUFBOzs7SUFJdEgsK0JBQ0U7SUFBQSwwQkFDRjtJQUFBLGlCQUFNOzs7SUFEQyxlQUE2QjtJQUE3QixxRUFBNkI7OztJQUdwQywr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LENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pCLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDckIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNmLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzthQUN4QjtZQUNELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztzRkFyR1UsbUJBQW1CO3dEQUFuQixtQkFBbUI7Ozs7O2lCQzBCb0MsVUFBQSw4RUFBYTs7Ozs7O2lCQVFYLFVBQUEsbUZBQWtCOzs7Ozs7aUJBUXBCLFVBQUEseUVBQVE7Ozs7OztpQkFRUixVQUFBLDhFQUFhOztRQTVGakYsc0VBQ0U7UUFrSkYscUhBQ0U7O1FBcEpHLG1DQUFnQjs7a0REMENSLG1CQUFtQjtjQVIvQixTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtnQkFDL0IsV0FBVyxFQUFFLDhCQUE4QjtnQkFDM0MsU0FBUyxFQUFFLENBQUMsOEJBQThCLENBQUM7Z0JBQzNDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRDtzUkFHVSxRQUFRO2tCQUFoQixLQUFLO1lBQ0csTUFBTTtrQkFBZCxLQUFLO1lBQ0csY0FBYztrQkFBdEIsS0FBSztZQUNHLGlCQUFpQjtrQkFBekIsS0FBSztZQUNJLG1CQUFtQjtrQkFBNUIsTUFBTTtZQUNHLFNBQVM7a0JBQWxCLE1BQU07WUFDRyxhQUFhO2tCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgRWxlbWVudFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0UmVjaXBlQ2FyZENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19jb21wb25lbnRzL2Fic3RyYWN0cy9hYnN0cmFjdC1yZWNpcGUtY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVjaXBlIH0gZnJvbSAnLi4vLi4vLi4vX21vZGVscyc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlLCBDb250ZXh0U2VydmljZSwgR3JvY2VyaWVzTGlzdHNTZXJ2aWNlLCBSZWNpcGVFdmVudHNTZXJ2aWNlLCBSZWNpcGVzU2VydmljZSwgVXNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNraXBXaGlsZSwgY2F0Y2hFcnJvciwgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5jb25zdCByZWNpcGVJbmNsdWRlcyA9IFsncmVjaXBlLXByb3ZpZGVyJywgJ3Nwb25zb3JzJ107XG5jb25zdCByZWNpcGVTcGFyc2VGaWVsZHMgPSB7XG4gIHJlY2lwZXM6IFsndGl0bGUnLCAnbnVtYmVyLW9mLWd1ZXN0cycsICdtZWRpYS11cmwnLCAndmlkZW8taWQnLCAnZmlsaWdyYW5lLWxvZ28tdXJsJywgJ2RpZmZpY3VsdHknLCAncHJlcGFyYXRpb24tdGltZScsICdjb29raW5nLXRpbWUnLFxuICAgICAgICAgICAgJ3Jlc3RpbmctdGltZScsIC4uLnJlY2lwZUluY2x1ZGVzXSxcbiAgc3BvbnNvcnM6IFsnbG9nby11cmwnXSxcbiAgWydyZWNpcGUtcHJvdmlkZXInXTogWyduYW1lJ11cbn07XG5cbi8qKlxuICogVGhpcyBpcyBhbiBhbmd1bGFyIGNvbXBvbmVudCBkZXNpZ24gdG8gYmUgYSB3ZWIgY29tcG9uZW50XG4gKiB0aGF0J3Mgd2h5IHdlIHVzZSBvblB1c2hTdHJhdGVnaWUgd2l0aCB0aGUgY2hhbmdlRGV0ZXRlY3RvclJlZlxuICogdG8gYXZvaWQgY29tbW9uIGlzc3VlXG4gKiBndWlkZSAtPiBodHRwczovL25ldGJhc2FsLmNvbS9hLWNvbXByZWhlbnNpdmUtZ3VpZGUtdG8tYW5ndWxhci1vbnB1c2gtY2hhbmdlLWRldGVjdGlvbi1zdHJhdGVneS01YmFjNDkzMDc0YTRcbiAqIGFuZCBhbHNvdyB3ZSB1c2UgU2hhZG93RG9tIHRvIHByb3RlY3Qgc3R5bGUgb2Ygb3VyIGNvbXBvbmVudFxuICogYW5kIGFsc293IHN0eWxlIG9mIHRoZSBwYXJlbnQgYXBsaWNhdGlvbiB0aGF0IHdpbGwgdXNlIGl0XG4gKiBkb2MgLT4gaHR0cHM6Ly9hbmd1bGFyLmlvL2FwaS9jb3JlL1ZpZXdFbmNhcHN1bGF0aW9uXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLW1pYW0tcmVjaXBlLWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVjaXBlLWNhcmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yZWNpcGUtY2FyZC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcblxuZXhwb3J0IGNsYXNzIFJlY2lwZUNhcmRDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdFJlY2lwZUNhcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSByZWNpcGVJZDogc3RyaW5nO1xuICBASW5wdXQoKSByZWNpcGU6IFJlY2lwZTtcbiAgQElucHV0KCkgcHJldmlld0FsbG93ZWQgPSB0cnVlO1xuICBASW5wdXQoKSBoZWxwQnV0dG9uQWxsb3dlZCA9IHRydWU7XG4gIEBPdXRwdXQoKSByZW1vdmVkRnJvbUZhdm9yaXRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGRpc3BsYXllZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGd1ZXN0c0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBpc2xvYWRlZCA9IGZhbHNlO1xuICBjYXJkVHlwZSA9ICdzdWdnZXN0aW9uLWNhcmQnO1xuICBwcmltYXJ5QnV0dG9uQ2xpY2tlZCQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHVibGljIHJlY2lwZVNlcnZpY2U6IFJlY2lwZXNTZXJ2aWNlLFxuICAgIHB1YmxpYyByZWNpcGVFdmVudHNTZXJ2aWNlOiBSZWNpcGVFdmVudHNTZXJ2aWNlLFxuICAgIHB1YmxpYyBncm9jZXJpZXNMaXN0c1NlcnZpY2U6IEdyb2Nlcmllc0xpc3RzU2VydmljZSxcbiAgICBwdWJsaWMgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UsXG4gICAgcHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICkge1xuICAgIHN1cGVyKGNkciwgcmVjaXBlU2VydmljZSwgcmVjaXBlRXZlbnRzU2VydmljZSwgZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlLCBjb250ZXh0U2VydmljZSxcbiAgICAgIGFuYWx5dGljc1NlcnZpY2UsIGVsZW1lbnQpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5yZWNpcGVTZXJ2aWNlLmRpc3BsYXllZFJlY2lwZUNoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSkpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgaWYgKHRoaXMucmVjaXBlKSB7XG4gICAgICB0aGlzLnJlY2lwZVdhc0xvYWRlZCgpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0aGlzLnJlY2lwZUlkKSB7XG4gICAgICB0aGlzLmxvYWRSZWNpcGUoKTtcbiAgICB9XG4gIH1cblxuICByZWNpcGVXYXNMb2FkZWQoKSB7XG4gICAgdGhpcy5yZWNpcGUubW9kaWZpZWRHdWVzdHMgfHw9ICt0aGlzLnJlY2lwZS5ndWVzdHM7XG4gICAgdGhpcy5pc2xvYWRlZCA9IHRydWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmVtb3ZlRnJvbUZhdm9yaXRlKCkge1xuICAgIHRoaXMucmVtb3ZlZEZyb21GYXZvcml0ZS5lbWl0KHRoaXMucmVjaXBlKTtcbiAgfVxuXG4gIG9wZW5SZWNpcGUoKSB7XG4gICAgY29uc3QgdmlkZW9FdmVudCA9IHRoaXMuY29udGV4dFNlcnZpY2UudmlkZW9SZWNpcGVzRW5hYmxlZCAmJiB0aGlzLnJlY2lwZS52aWRlb0lkO1xuICAgIHRoaXMucmVjaXBlU2VydmljZS5kaXNwbGF5T2JqZWN0KFxuICAgICAgdGhpcy5yZWNpcGUsXG4gICAgICB7IHByZXZpZXdBbGxvd2VkOiB0aGlzLnByZXZpZXdBbGxvd2VkLCBndWVzdHM6IHRoaXMucmVjaXBlLm1vZGlmaWVkR3Vlc3RzLCBkaXNwbGF5R3Vlc3RzOiB0aGlzLmRpc3BsYXlHdWVzdHMsIGhlbHBCdXR0b25BbGxvd2VkOiB0aGlzLmhlbHBCdXR0b25BbGxvd2VkIH0sXG4gICAgICB0aGlzLmV2ZW50VHJhY2UoKVxuICAgICk7XG4gICAgdGhpcy5kaXNwbGF5ZWQuZW1pdCgpO1xuICB9XG5cbiAgdXBkYXRlR3Vlc3RzKGNvdW50OiBudW1iZXIpIHtcbiAgICB0aGlzLnJlY2lwZS5tb2RpZmllZEd1ZXN0cyA9IGNvdW50O1xuICAgIGlmICh0aGlzLnJlY2lwZUlkKSB7IHRoaXMuX3VwZGF0ZUJhc2tldCgpOyB9IC8vIElmIHJlY2lwZSB3YXMgbG9hZGVkIGhlcmUsIHdlIG5lZWQgdG8gcHJvY2VzcyBiYXNrZXQgdXBkYXRlcyBoZXJlXG4gICAgdGhpcy5ndWVzdHNDaGFuZ2VkLmVtaXQoY291bnQpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIF91cGRhdGVCYXNrZXQoKSB7XG4gICAgLy8gSWYgcmVjaXBlIGFscmVhZHkgaW4gYmFza2V0LCB1cGRhdGUgdGhlIG51bWJlciBvZiBndWVzdHMgc28gdGhhdCB0aGUgcHJpY2luZyBnZXRzIHVwZGF0ZWQgYXMgd2VsbFxuICAgIC8vIChkaXNwbGF5ID0gZmFsc2Ugc28gdGhhdCB0aGUgcmVjaXBlIGRldGFpbHMgZG9uJ3Qgc2hvdyB1cClcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlLnJlY2lwZUlzSW5MaXN0KHRoaXMucmVjaXBlLmlkKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAocmVjaXBlSXNJbkxpc3QgPT4ge1xuICAgICAgICAgIGlmIChyZWNpcGVJc0luTGlzdCl7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ncm9jZXJpZXNMaXN0c1NlcnZpY2UuYXBwZW5kUmVjaXBlVG9MaXN0KHRoaXMucmVjaXBlLmlkLCB0aGlzLnJlY2lwZS5tb2RpZmllZEd1ZXN0cywgdGhpcy5ldmVudFRyYWNlKCkpXG4gICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICkuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkUmVjaXBlKCkge1xuICAgIGlmICh0aGlzLmNvbnRleHRTZXJ2aWNlLmRpc3BsYXlJbmdyZWRpZW50UGljdHVyZXNPblJlY2lwZUNhcmRzICYmICFyZWNpcGVJbmNsdWRlcy5pbmNsdWRlcygnaW5ncmVkaWVudHMnKSkge1xuICAgICAgcmVjaXBlSW5jbHVkZXMucHVzaCgnaW5ncmVkaWVudHMnKTtcbiAgICAgIHJlY2lwZVNwYXJzZUZpZWxkcy5yZWNpcGVzLnB1c2goJ2luZ3JlZGllbnRzJyk7XG4gICAgICByZWNpcGVTcGFyc2VGaWVsZHNbJ2luZ3JlZGllbnRzJ10gPSBbJ25hbWUnLCAncXVhbnRpdHknLCAndW5pdCcsICdhY3RpdmUnLCAnZm9yY2VkLWVhbnMnLCAncGljdHVyZS11cmwnLCAncG9zaXRpb24nXTtcbiAgICB9XG4gICAgdGhpcy5yZWNpcGVTZXJ2aWNlLmdldCh0aGlzLnJlY2lwZUlkLFxuICAgICAgeyBpbmNsdWRlOiByZWNpcGVJbmNsdWRlcywgZmllbGRzOiByZWNpcGVTcGFyc2VGaWVsZHMgfVxuICAgICAgKS5waXBlKFxuICAgIHNraXBXaGlsZShyZXN1bHQgPT4gcmVzdWx0LmlzX2xvYWRpbmcpLFxuICAgIGNhdGNoRXJyb3IoIGVyciA9PiB7XG4gICAgICB0aGlzLmhpZGUuZW1pdCgpO1xuICAgICAgcmV0dXJuIG9mKGVycik7XG4gICAgICB9KSxcbiAgICApLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgdGhpcy5yZWNpcGUgPSByZXN1bHQ7XG4gICAgICBpZiAodGhpcy5yZWNpcGUpIHtcbiAgICAgICAgdGhpcy5yZWNpcGVXYXNMb2FkZWQoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj0naXNsb2FkZWQnIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZFwiPlxuICA8IS0tIEJvb2ttYXJrIC0tPlxuICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fYm9va21hcmtcIj5cbiAgICA8aW1nIHNyYz1cImh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvcmVjaXBlLWNhcmQvQm9va21hcmsuc3ZnXCIgYWx0PVwiSWTDqWVzIHJlcGFzXCI+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwicmVjaXBlIGVsc2UgcGljdFNrZWxldG9uXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19waWN0dXJlXCIgKGNsaWNrKT1cIm9wZW5SZWNpcGUoKVwiPlxuICAgIDwhLS0gUGljdHVyZSAtLT5cbiAgICA8aW1nIFtzcmNdPVwicmVjaXBlPy5hdHRyaWJ1dGVzWydtZWRpYS11cmwnXVwiIGxvYWRpbmc9XCJsYXp5XCI+XG4gICAgPCEtLSBWaWRlbyAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiY29udGV4dFNlcnZpY2UudmlkZW9SZWNpcGVzRW5hYmxlZCAmJiByZWNpcGU/LnZpZGVvSWRcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3BpY3R1cmVfX3ZpZGVvXCI+XG4gICAgICA8bmctbWlhbS1pY29uIFtpY29uTmFtZV09XCJpY29uLlZpZGVvXCIgW3dpZHRoXT1cIjEwMFwiIFtoZWlnaHRdPVwiMTAwXCIgcHJpbWFyeUNvbG9yPSdibGFjayc+PC9uZy1taWFtLWljb24+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBMaWtlIGJ1dHRvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fcGljdHVyZV9fYWN0aW9uc1wiPlxuICAgICAgPG5nLW1pYW0tbGlrZS1idXR0b24gKm5nSWY9XCJ1c2VyU2VydmljZS5pc0xvZ2dlZCQgfCBhc3luY1wiIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fYWN0aW9uc19faWNvblwiIFtyZWNpcGVdPSdyZWNpcGUnIFtvcmlnaW5UcmFjZV09XCJldmVudFRyYWNlKClcIj5cbiAgICAgIDwvbmctbWlhbS1saWtlLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIFNwb25zb3IgbG9nbyAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwicmVjaXBlLnNwb25zb3JMb2dvVXJsXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19waWN0dXJlX19zcG9uc29yXCI+XG4gICAgICA8aW1nIFtzcmNdPVwicmVjaXBlLnNwb25zb3JMb2dvVXJsXCI+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBGaWxpZ3JhbmUgbG9nbyAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwicmVjaXBlLmZpbGlncmFuZUxvZ29VcmxcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3BpY3R1cmVfX2ZpbGlncmFuZVwiPlxuICAgICAgPGltZyBbc3JjXT1cInJlY2lwZS5maWxpZ3JhbmVMb2dvVXJsXCI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8bmctdGVtcGxhdGUgI3BpY3RTa2VsZXRvbj5cbiAgICA8bmctbWlhbS1za2VsZXRvbiBbdHlwZV09J3NrZWxldG9uLlBpY3R1cmUnPjwvbmctbWlhbS1za2VsZXRvbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2F0dHJpYnV0ZXNcIj5cbiAgICA8ZGl2ICpuZ0lmPVwicmVjaXBlIGVsc2UgdGV4dFNrZWxldG9uXCI+XG4gICAgICA8IS0tIFRpdGxlIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2F0dHJpYnV0ZXNfX3RpdGxlXCIgKGNsaWNrKT1cIm9wZW5SZWNpcGUoKVwiPlxuICAgICAgICB7e3JlY2lwZT8uYXR0cmlidXRlc1sndGl0bGUnXX19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgI3RleHRTa2VsZXRvbj5cbiAgICAgIDxuZy1taWFtLXNrZWxldG9uIFt0eXBlXT0nc2tlbGV0b24uVGV4dCc+PC9uZy1taWFtLXNrZWxldG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2F0dHJpYnV0ZXNfX2luZm9zXCI+XG4gICAgICA8IS0tIFRvdGFsIHRpbWUgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPSdyZWNpcGUgZWxzZSBza2VsZXRvbkluZm8nIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fYXR0cmlidXRlc19faW5mbyAgcmVjaXBlX190b3RhbF9fdGltZVwiPlxuICAgICAgICA8bmctbWlhbS1pY29uIFt3aWR0aF09XCIyMFwiIFtoZWlnaHRdPVwiMjBcIiBbaWNvbk5hbWVdPVwiaWNvbi5UaW1lXCI+PC9uZy1taWFtLWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9faW5mb19fbGFiZWxcIj57eyByZWNpcGU/LnRvdGFsVGltZSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBEaWZmaWN1bHR5IC0tPlxuICAgICAgPGRpdiAqbmdJZj0ncmVjaXBlIGVsc2Ugc2tlbGV0b25JbmZvJyBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2F0dHJpYnV0ZXNfX2luZm8gcmVjaXBlX19kaWZmaWN1bHR5XCIgW25nQ2xhc3NdPVwieyAnZWFzeSc6IHJlY2lwZT8uZGlmZmljdWx0eSA9PT0gMSxcbiAgICAgICdtZWRpdW0nOiByZWNpcGU/LmRpZmZpY3VsdHkgPT09IDIsICdoYXJkJzogcmVjaXBlPy5kaWZmaWN1bHR5ID09PSAzIH1cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicmVjaXBlPy5kaWZmaWN1bHR5XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiMlwiPlxuICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBbd2lkdGhdPVwiNjBcIiBbaGVpZ2h0XT1cIjIwXCIgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLWJsYWNrKSdcbiAgICAgICAgICAgICAgW2ljb25OYW1lXT1cImljb24uRGlmZmljdWx0eU1lZGl1bVwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIjNcIj5cbiAgICAgICAgICAgIDxuZy1taWFtLWljb24gW3dpZHRoXT1cIjYwXCIgW2hlaWdodF09XCIyMFwiIHByaW1hcnlDb2xvcj0ndmFyKC0tbS1jb2xvci1ibGFjayknXG4gICAgICAgICAgICAgIFtpY29uTmFtZV09XCJpY29uLkRpZmZpY3VsdHlIaWdoXCI+PC9uZy1taWFtLWljb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBbd2lkdGhdPVwiNjBcIiBbaGVpZ2h0XT1cIjIwXCIgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLWJsYWNrKSdcbiAgICAgICAgICAgICAgW2ljb25OYW1lXT1cImljb24uRGlmZmljdWx0eUxvd1wiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicmVjaXBlPy5kaWZmaWN1bHR5XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiMVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmZvX19sYWJlbCBlYXN5XCIgKm5nSWY9XCJyZWNpcGVTZXJ2aWNlLmRpZmZpY3VsdHlMZXZlbHNbMF0/LmxhYmVsICE9PSAnQ2hlZiBkw6lidXRhbnQnIGVsc2UgZGlmZmljdWx0eUVhc3lEZWZhdWx0XCI+XG4gICAgICAgICAgICAgIHt7cmVjaXBlU2VydmljZS5kaWZmaWN1bHR5TGV2ZWxzWzBdLmxhYmVsfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGlmZmljdWx0eUVhc3lEZWZhdWx0PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2luZm9fX2xhYmVsIGVhc3lcIiBpMThuPkNoZWYgZMOpYnV0YW50PC9zcGFuPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2luZm9fX2xhYmVsIG1lZGl1bVwiICpuZ0lmPVwicmVjaXBlU2VydmljZS5kaWZmaWN1bHR5TGV2ZWxzWzFdPy5sYWJlbCAhPT0gJ0NoZWYgaW50ZXJtw6lkaWFpcmUnIGVsc2UgZGlmZmljdWx0eU1lZGl1bURlZmF1bHRcIj5cbiAgICAgICAgICAgICAge3tyZWNpcGVTZXJ2aWNlLmRpZmZpY3VsdHlMZXZlbHNbMV0ubGFiZWx9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaWZmaWN1bHR5TWVkaXVtRGVmYXVsdD5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmZvX19sYWJlbCBtZWRpdW1cIiBpMThuPkNoZWYgaW50ZXJtw6lkaWFpcmU8L3NwYW4+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIjNcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9faW5mb19fbGFiZWwgaGFyZFwiICpuZ0lmPVwicmVjaXBlU2VydmljZS5kaWZmaWN1bHR5TGV2ZWxzWzJdPy5sYWJlbCAhPT0gJ1RvcCBjaGVmJyBlbHNlIGRpZmZpY3VsdHlIYXJkRGVmYXVsdFwiPlxuICAgICAgICAgICAgICB7e3JlY2lwZVNlcnZpY2UuZGlmZmljdWx0eUxldmVsc1syXS5sYWJlbH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RpZmZpY3VsdHlIYXJkRGVmYXVsdD5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmZvX19sYWJlbCBoYXJkXCIgaTE4bj5Ub3AgY2hlZjwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmZvX19sYWJlbCBlYXN5XCIgKm5nSWY9XCJyZWNpcGVTZXJ2aWNlLmRpZmZpY3VsdHlMZXZlbHNbMF0/LmxhYmVsICE9PSAnQ2hlZiBkw6lidXRhbnQnIGVsc2UgZGlmZmljdWx0eURlZmF1bHRcIj5cbiAgICAgICAgICAgICAge3tyZWNpcGVTZXJ2aWNlLmRpZmZpY3VsdHlMZXZlbHNbMF0ubGFiZWx9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaWZmaWN1bHR5RGVmYXVsdD5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmZvX19sYWJlbCBlYXN5XCIgaTE4bj5DaGVmIGTDqWJ1dGFudDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI3NrZWxldG9uSW5mbz5cbiAgICAgICAgPG5nLW1pYW0tc2tlbGV0b24gW3R5cGVdPSdza2VsZXRvbj8uSWNvbldpdGhJbmZvJz48L25nLW1pYW0tc2tlbGV0b24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19hdHRyaWJ1dGVzX19jb250cm9sXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fY29udHJvbF9fbGVmdF9fY29sXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19sZWZ0X19jb2xfX2N1c3RvbVwiPlxuICAgICAgICAgIDwhLS0gSGVscGVyIC0tPlxuICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInRvZ2dsZUhlbHBlcigpXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19oZWxwXCI+XG4gICAgICAgICAgICA8bmctbWlhbS1pY29uIFt3aWR0aF09XCIyNFwiIFtoZWlnaHRdPVwiMjRcIiBwcmltYXJ5Q29sb3I9J3ZhcigtLW0tY29sb3ItZ3JleTAyKScgc2Vjb25kYXJ5Q29sb3I9J3ZhcigtLW0tY29sb3ItZ3JleTA3KSdcbiAgICAgICAgICAgIFtpY29uTmFtZV09XCJpY29uLkhlbHBcIj48L25nLW1pYW0taWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIEluZ3JlZGllbnQgcGljdHVyZXMgLS0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJjb250ZXh0U2VydmljZS5kaXNwbGF5SW5ncmVkaWVudFBpY3R1cmVzT25SZWNpcGVDYXJkcyAmJiByZWNpcGU/Lm1vZGlmaWVkSW5ncmVkaWVudHM/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmdyZWRpZW50c19fcGljdHVyZXNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmdyZWRpZW50c19fcGljdHVyZVwiPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaW5ncmVkaWVudFBpY3R1cmUocmVjaXBlLm1vZGlmaWVkSW5ncmVkaWVudHNbMF0pXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmdyZWRpZW50c19fcGljdHVyZVwiPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaW5ncmVkaWVudFBpY3R1cmUocmVjaXBlLm1vZGlmaWVkSW5ncmVkaWVudHNbMV0pXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmdyZWRpZW50c19fbW9yZVwiICpuZ0lmPVwicmVjaXBlLm1vZGlmaWVkSW5ncmVkaWVudHMubGVuZ3RoID4gMlwiPlxuICAgICAgICAgICAgICArIHt7cmVjaXBlLm1vZGlmaWVkSW5ncmVkaWVudHMubGVuZ3RoIC0gMn19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gQ291bnRlciBpbnB1dCAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj0ncmVjaXBlIGVsc2Ugc2tlbGV0b25jb3VudGVyJyBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2xlZnRfX2NvbF9fY291bnRlclwiPlxuICAgICAgICAgIDxuZy1taWFtLWNvdW50ZXItaW5wdXQgW2NvdW50ZXJdPVwicmVjaXBlLm1vZGlmaWVkR3Vlc3RzXCIgKGNvdW50ZXJDaGFuZ2UpPVwidXBkYXRlR3Vlc3RzKCRldmVudClcIj48L25nLW1pYW0tY291bnRlci1pbnB1dD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc2tlbGV0b25jb3VudGVyPlxuICAgICAgICAgIDxuZy1taWFtLXNrZWxldG9uIFt0eXBlXT0nc2tlbGV0b24/Lkljb25XaXRoSW5mbyc+PC9uZy1taWFtLXNrZWxldG9uPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fY29udHJvbF9fcmlnaHRfX2NvbFwiPlxuICAgICAgICA8IS0tIFByaWNlIC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicmVjaXBlICYmIGRpc3BsYXlQcmljaW5nXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19yaWdodF9fY29sX19wcmljZVwiPlxuICAgICAgICAgIDxuZy1taWFtLXJlY2lwZS1wcmljaW5nIFtyZWNpcGVdPVwicmVjaXBlXCIgW3NlcnZlc109XCJyZWNpcGU/Lm1vZGlmaWVkR3Vlc3RzXCI+PC9uZy1taWFtLXJlY2lwZS1wcmljaW5nPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gQWRkIHRvIGJhc2tldCAtLT5cbiAgICA8bmctbWlhbS1yZWNpcGUtY2FyZC1jdGEgW3JlY2lwZV09XCJyZWNpcGVcIiBbY2FyZFR5cGVdPVwiY2FyZFR5cGVcIiBbcHJldmlld0FsbG93ZWRdPVwicHJldmlld0FsbG93ZWRcIlxuICAgICAgW2Rpc3BsYXlHdWVzdHNdPVwiZGlzcGxheUd1ZXN0c1wiIFtoZWxwQnV0dG9uQWxsb3dlZF09XCJoZWxwQnV0dG9uQWxsb3dlZFwiIFtvcmlnaW5UcmFjZV09XCJldmVudFRyYWNlKClcIlxuICAgICAgKGRpc3BsYXllZCk9XCJkaXNwbGF5ZWQuZW1pdCgpXCIgKGNsaWNrZWQpPVwicHJpbWFyeUJ1dHRvbkNsaWNrZWQkLmVtaXQoJGV2ZW50KVwiPlxuICAgIDwvbmctbWlhbS1yZWNpcGUtY2FyZC1jdGE+XG4gIDwvZGl2PlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI2NvcnM+XG4gIDxuZy1taWFtLWNvcnMtb3ZlcmxheT48L25nLW1pYW0tY29ycy1vdmVybGF5PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
473
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWNhcmRzL3JlY2lwZS1jYXJkL3JlY2lwZS1jYXJkLmNvbXBvbmVudC50cyIsImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWNhcmRzL3JlY2lwZS1jYXJkL3JlY2lwZS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUNsRixNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQTRCLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsTUFBTSxFQUF3QixNQUFNLGtCQUFrQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVySSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7O0lDb0p2QywrQkFFRTtJQURBLGlOQUFtQztJQUNuQyxtQ0FBaUk7SUFDbkksaUJBQU07OztJQURVLGVBQTZEO0lBQTdELGdHQUE2RDs7O0lBRzNFLDBDQUVzQjs7O0lBRDBELHVDQUFpQixxQ0FBQSxhQUFBLGNBQUE7OztJQURqRyx5SEFFQTs7OztJQURFLHlFQUFx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ZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07YUFDaEQ7NFFBR1UsUUFBUTtrQkFBaEIsS0FBSztZQUNHLE1BQU07a0JBQWQsS0FBSztZQUNHLGdCQUFnQjtrQkFBeEIsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxjQUFjO2tCQUF0QixLQUFLO1lBQ0csaUJBQWlCO2tCQUF6QixLQUFLO1lBQ0csY0FBYztrQkFBdEIsS0FBSztZQUNHLGFBQWE7a0JBQXJCLEtBQUs7WUFDRyxhQUFhO2tCQUFyQixLQUFLO1lBQ0csV0FBVztrQkFBbkIsS0FBSztZQUNJLG1CQUFtQjtrQkFBNUIsTUFBTTtZQUNHLFNBQVM7a0JBQWxCLE1BQU07WUFDRyxlQUFlO2tCQUF4QixNQUFNO1lBQ0csc0JBQXNCO2tCQUEvQixNQUFNO1lBQ0csaUJBQWlCO2tCQUExQixNQUFNO1lBQ0csV0FBVztrQkFBcEIsTUFBTTtZQUNHLElBQUk7a0JBQWIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIENoYW5nZURldGVjdG9yUmVmLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYsXG4gIFNpbXBsZUNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBza2lwV2hpbGUsIGNhdGNoRXJyb3IsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFdmVudFRyYWNlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19jb21wb25lbnRzL2Fic3RyYWN0cy9ldmVudC10cmFjZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFJlY2lwZSwgU2ltcGxpZmllZEluZ3JlZGllbnQgfSBmcm9tICcuLi8uLi8uLi9fbW9kZWxzJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UsIEJhc2tldHNTZXJ2aWNlLCBDb250ZXh0U2VydmljZSwgUmVjaXBlc1NlcnZpY2UsIFNjcm9sbGluZ1NlcnZpY2UsIFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX3NlcnZpY2VzJztcbmltcG9ydCB7IEN1c3RvbVByb3BlcnRpZXMgfSBmcm9tICcuLi8uLi8uLi9fdHlwZXMvZXZlbnQtdHJhY2UnO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gJy4uLy4uLy4uL190eXBlcy9pY29uLmVudW0nO1xuXG5jb25zdCByZWNpcGVJbmNsdWRlcyA9IFsncmVjaXBlLXByb3ZpZGVyJywgJ3Nwb25zb3JzJ107XG5jb25zdCByZWNpcGVTcGFyc2VGaWVsZHMgPSB7XG4gIHJlY2lwZXM6IFsndGl0bGUnLCAnbnVtYmVyLW9mLWd1ZXN0cycsICdtZWRpYS11cmwnLCAndmlkZW8taWQnLCAnZmlsaWdyYW5lLWxvZ28tdXJsJywgJ2RpZmZpY3VsdHknLCAncHJlcGFyYXRpb24tdGltZScsICdjb29raW5nLXRpbWUnLFxuICAgICdyZXN0aW5nLXRpbWUnLCAuLi5yZWNpcGVJbmNsdWRlc10sXG4gIHNwb25zb3JzOiBbJ2xvZ28tdXJsJ10sXG4gIFsncmVjaXBlLXByb3ZpZGVyJ106IFsnbmFtZSddXG59O1xuXG4vKipcbiAqIFRoaXMgaXMgYW4gYW5ndWxhciBjb21wb25lbnQgZGVzaWduIHRvIGJlIGEgd2ViIGNvbXBvbmVudFxuICogdGhhdCdzIHdoeSB3ZSB1c2Ugb25QdXNoU3RyYXRlZ2llIHdpdGggdGhlIGNoYW5nZURldGV0ZWN0b3JSZWZcbiAqIHRvIGF2b2lkIGNvbW1vbiBpc3N1ZVxuICogZ3VpZGUgLT4gaHR0cHM6Ly9uZXRiYXNhbC5jb20vYS1jb21wcmVoZW5zaXZlLWd1aWRlLXRvLWFuZ3VsYXItb25wdXNoLWNoYW5nZS1kZXRlY3Rpb24tc3RyYXRlZ3ktNWJhYzQ5MzA3NGE0XG4gKiBhbmQgYWxzb3cgd2UgdXNlIFNoYWRvd0RvbSB0byBwcm90ZWN0IHN0eWxlIG9mIG91ciBjb21wb25lbnRcbiAqIGFuZCBhbHNvdyBzdHlsZSBvZiB0aGUgcGFyZW50IGFwbGljYXRpb24gdGhhdCB3aWxsIHVzZSBpdFxuICogZG9jIC0+IGh0dHBzOi8vYW5ndWxhci5pby9hcGkvY29yZS9WaWV3RW5jYXBzdWxhdGlvblxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1taWFtLXJlY2lwZS1jYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlY2lwZS1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVjaXBlLWNhcmQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5cbmV4cG9ydCBjbGFzcyBSZWNpcGVDYXJkQ29tcG9uZW50IGV4dGVuZHMgRXZlbnRUcmFjZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcmVjaXBlSWQ6IHN0cmluZztcbiAgQElucHV0KCkgcmVjaXBlOiBSZWNpcGU7XG4gIEBJbnB1dCgpIHJhbmRvbU1vZGVFbmFibGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHByb2R1Y3RJZHM6IHtpZDogc3RyaW5nOyBoYXNIaWdoV2VpZ2h0PzogYm9vbGVhbn1bXTtcbiAgQElucHV0KCkgcHJldmlld0FsbG93ZWQgPSB0cnVlO1xuICBASW5wdXQoKSBoZWxwQnV0dG9uQWxsb3dlZCA9IHRydWU7XG4gIEBJbnB1dCgpIGRpc3BsYXlQcmljaW5nID0gdHJ1ZTtcbiAgQElucHV0KCkgZGlzcGxheUd1ZXN0cyA9IHRydWU7XG4gIEBJbnB1dCgpIGFkZFJlY2lwZU1vZGUgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVwbGFjZU1vZGUgPSBmYWxzZTtcbiAgQE91dHB1dCgpIHJlbW92ZWRGcm9tRmF2b3JpdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZGlzcGxheWVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgYWN0aW9uVHJpZ2dlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSByZW1vdmVGcm9tTWVhbHNQbGFubmVyID0gbmV3IEV2ZW50RW1pdHRlcjxudWxsPigpO1xuICBAT3V0cHV0KCkgYWRkVG9NZWFsc1BsYW5uZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY2lwZT4oKTtcbiAgQE91dHB1dCgpIG9wZW5DYXRhbG9nID0gbmV3IEV2ZW50RW1pdHRlcjxudWxsPigpO1xuICBAT3V0cHV0KCkgaGlkZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBpY29uID0gSWNvbjtcbiAgYWRkQnV0dG9uTG9hZGluZyA9IGZhbHNlO1xuICBhY3Rpb25zT3BlbmVkID0gZmFsc2U7XG4gIGlzbG9hZGVkID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIGFuYWx5dGljc0V2ZW50U2VudCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW107XG4gIHByb3RlY3RlZCBzZW5kU2hvd0V2ZW50c09uU2Nyb2xsID0gdHJ1ZTtcbiAgcHJpdmF0ZSBvYnNlcnZlcjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG4gIHByaW1hcnlCdXR0b25DbGlja2VkJCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgcmVjaXBlU2VydmljZTogUmVjaXBlc1NlcnZpY2UsXG4gICAgcHVibGljIGJhc2tldHNTZXJ2aWNlOiBCYXNrZXRzU2VydmljZSxcbiAgICBwdWJsaWMgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UsXG4gICAgcHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgc2Nyb2xsU2VydmljZTogU2Nyb2xsaW5nU2VydmljZVxuICApIHtcbiAgICBzdXBlcihhbmFseXRpY3NTZXJ2aWNlKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMucmVjaXBlU2VydmljZS5kaXNwbGF5ZWRSZWNpcGVDaGFuZ2VkJC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpKSk7XG4gIH1cblxuICBjdXJyZW50UGF0aCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHByb3RlY3RlZCBjdXJyZW50UHJvcHMoKTogQ3VzdG9tUHJvcGVydGllcyB7XG4gICAgcmV0dXJuIHsgcmVjaXBlX2lkOiB0aGlzLnJlY2lwZT8uaWQgfTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHNpbXBsZUNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNpcGUpIHtcbiAgICAgIHRoaXMudXBkYXRlR3Vlc3RzSWZOZWNlc3NhcnkoKTtcbiAgICAgIHRoaXMuaXNsb2FkZWQgPSB0cnVlO1xuICAgIH1cbiAgICBlbHNlIGlmICh0aGlzLnJlY2lwZUlkKSB7XG4gICAgICB0aGlzLmxvYWRSZWNpcGVGcm9tSWQoKTtcbiAgICB9XG4gICAgaWYgKCggc2ltcGxlQ2hhbmdlcy5wcm9kdWN0SWRzICYmICF0aGlzLnJhbmRvbU1vZGVFbmFibGUpIHx8ICF0aGlzLnJlY2lwZSkge1xuICAgICAgdGhpcy5sb2FkUmVjaXBlRnJvbUNvbnRleHQoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnNjcm9sbFNlcnZpY2Uuc2Nyb2xsJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5zZW5kU2hvd0V2ZW50c09uU2Nyb2xsKSB7IHRoaXMuc2VuZFNob3dFdmVudCgpOyB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnNlbmRTaG93RXZlbnQoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmJhc2tldHNTZXJ2aWNlLmJhc2tldCQuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMucmVjaXBlU2VydmljZS5yZWxvYWRSZWNpcGVzJC5zdWJzY3JpYmUoc2hvdWxkUmVsb2FkID0+IHtcbiAgICAgIGlmIChzaG91bGRSZWxvYWQpIHtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIERJU1BMQVkgUkVDSVBFIERFVEFJTFMgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyAvL1xuXG4gIG9wZW5SZWNpcGUoKTogdm9pZCB7XG4gICAgLy8gY29uc3QgdmlkZW9FdmVudCA9IHRoaXMuY29udGV4dFNlcnZpY2UudmlkZW9SZWNpcGVzRW5hYmxlZCAmJiB0aGlzLnJlY2lwZS52aWRlb0lkO1xuICAgIHRoaXMucmVjaXBlU2VydmljZS5kaXNwbGF5T2JqZWN0KFxuICAgICAgdGhpcy5yZWNpcGUsXG4gICAgICB7XG4gICAgICAgIHByZXZpZXdBbGxvd2VkOiB0aGlzLnByZXZpZXdBbGxvd2VkLFxuICAgICAgICBndWVzdHM6IHRoaXMucmVjaXBlLm1vZGlmaWVkR3Vlc3RzLFxuICAgICAgICBkaXNwbGF5R3Vlc3RzOiB0aGlzLmRpc3BsYXlHdWVzdHMsXG4gICAgICAgIGhlbHBCdXR0b25BbGxvd2VkOiB0aGlzLmhlbHBCdXR0b25BbGxvd2VkXG4gICAgICB9LFxuICAgICAgdGhpcy5ldmVudFRyYWNlKClcbiAgICApO1xuICAgIHRoaXMuZGlzcGxheWVkLmVtaXQoKTtcbiAgfVxuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gRElTUExBWSBSRUNJUEUgREVUQUlMUyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIC8vXG5cbiAgaW5ncmVkaWVudFBpY3R1cmUoaW5ncmVkaWVudDogU2ltcGxpZmllZEluZ3JlZGllbnQpOiBzdHJpbmcge1xuICAgIHJldHVybiBpbmdyZWRpZW50LnBpY3R1cmUgfHwgdGhpcy5jb250ZXh0U2VydmljZS5kZWZhdWx0SW5ncmVkaWVudFBpY3R1cmU7XG4gIH1cblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIFBFUlNPTkFMIFJFQ0lQRVMgQUNUSU9OUyBQT1BVUCAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIC8vXG5cbiAgdG9nZ2xlTW9yZUFjdGlvbnMoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5yZWNpcGUucmVsYXRpb25zaGlwc1sncmVjaXBlLXByb3ZpZGVyJ10/LmRhdGEuaWQgPT09ICdwZXJzb25hbCcpIHtcbiAgICAgIHRoaXMuYWN0aW9uc09wZW5lZCA9ICF0aGlzLmFjdGlvbnNPcGVuZWQ7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VNb3JlQWN0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGlvbnNPcGVuZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIENIRUNLIElGIENBUkQgRU5URVJTIFRIRSBWSUVXUE9SVCAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIC8vXG5cblxuICBwcml2YXRlIGlzSW5WaWV3cG9ydCgpOiBib29sZWFuIHtcbiAgICBjb25zdCByZWN0ID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgcmV0dXJuIChcbiAgICAgIHJlY3QudG9wID49IDAgJiZcbiAgICAgIHJlY3QubGVmdCA+PSAwICYmXG4gICAgICByZWN0LmJvdHRvbSA8PSAod2luZG93LmlubmVySGVpZ2h0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpICYmXG4gICAgICByZWN0LnJpZ2h0IDw9ICh3aW5kb3cuaW5uZXJXaWR0aCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpXG4gICAgKTtcbiAgfVxuXG4gIC8vIFNlbmQgYW5hbHl0aWNzIGV2ZW50IHdoZW4gOlxuICAvLyAtIG5ldyByZWNpcGUgaXMgdG8gYmUgZGlzcGxheWVkIEFORCBpcyBhbHJlYWR5IHZpc2libGUgaW4gdmlld3BvcnRcbiAgLy8gT1JcbiAgLy8gLSB1c2VyIHNjcm9sbHMgYW5kIHJlY2lwZSBiZWNvbWVzIHZpc2libGUgaW4gdmlld3BvcnRcbiAgcHJpdmF0ZSBzZW5kU2hvd0V2ZW50KCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5yZWNpcGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmFuYWx5dGljc0V2ZW50U2VudCAmJiB0aGlzLmlzSW5WaWV3cG9ydCgpKSB7XG4gICAgICB0aGlzLnNlbmRFdmVudCh0aGlzLmFuYWx5dGljc1NlcnZpY2UuRVZFTlRfUkVDSVBFX1NIT1cpO1xuICAgICAgdGhpcy5hbmFseXRpY3NFdmVudFNlbnQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gRkVUQ0ggVEhFIFJFQ0lQRSAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIC8vXG5cbiAgLyoqXG4gICAqIEZldGNoIGEgcmVjaXBlIGZyb20gaXRzIGlkLlxuICAgKiBIaWRlIHRoZSBjYXJkIGlmIG5vbmUgaXMgcmV0dXJuZWQgKGNvdWxkIGJlIGJlY2F1c2UgaXQgZG9lcyBub3QgZXhpc3RzIG9yIGl0IGlzIG5vdCBzaGFyZWQgd2l0aCB0aGUgc3VwcGxpZXIpXG4gICAqL1xuICBwcml2YXRlIGxvYWRSZWNpcGVGcm9tSWQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnJlY2lwZVNlcnZpY2UuZ2V0KHRoaXMucmVjaXBlSWQsIHsgaW5jbHVkZTogcmVjaXBlSW5jbHVkZXMsIGZpZWxkczogcmVjaXBlU3BhcnNlRmllbGRzIH0pLnBpcGUoXG4gICAgICAgIHNraXBXaGlsZShyZXN1bHQgPT4gcmVzdWx0LmlzX2xvYWRpbmcpLFxuICAgICAgICBjYXRjaEVycm9yKCBlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuaGlkZS5lbWl0KCk7XG4gICAgICAgICAgcmV0dXJuIG9mKGVycik7XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgocmVzdWx0OiBSZWNpcGUpID0+IHtcbiAgICAgICAgdGhpcy5yZWNpcGUgPSByZXN1bHQ7XG4gICAgICAgIHRoaXMudXBkYXRlR3Vlc3RzSWZOZWNlc3NhcnkoKTtcbiAgICAgICAgdGhpcy5pc2xvYWRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzdWdnZXN0aW9uIGJhc2VkIG9uIGNvbnRleHQgKGVpdGhlciBwcm9kdWN0SWRzIG9yIHJhbmRvbU1vZGUpLiBIaWRlIHRoZSBjYXJkIGlmIG5vbmUgaXMgcmV0dXJuZWRcbiAgICovXG4gIHByaXZhdGUgbG9hZFJlY2lwZUZyb21Db250ZXh0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5mZXRjaFN1Z2dlc3Rpb25PclJhbmRvbSgpLnBpcGUoXG4gICAgICAgIHNraXBXaGlsZShyZXN1bHRzID0+ICFyZXN1bHRzKSxcbiAgICAgICAgY2F0Y2hFcnJvciggZXJyID0+IHtcbiAgICAgICAgICB0aGlzLmhpZGUuZW1pdCgpO1xuICAgICAgICAgIHJldHVybiBvZihlcnIpO1xuICAgICAgICB9KVxuICAgICAgKS5zdWJzY3JpYmUoKHJlc3VsdHM6IFJlY2lwZVtdKSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5yZWNpcGUgPSByZXN1bHRzWzBdO1xuICAgICAgICAgIHRoaXMudXBkYXRlR3Vlc3RzSWZOZWNlc3NhcnkoKTtcbiAgICAgICAgICB0aGlzLmlzbG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmhpZGUuZW1pdCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hTdWdnZXN0aW9uT3JSYW5kb20oKTogT2JzZXJ2YWJsZTxSZWNpcGVbXT4ge1xuICAgIGlmICh0aGlzLnJhbmRvbU1vZGVFbmFibGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlY2lwZVNlcnZpY2UuZ2V0UmFuZG9tKHJlY2lwZUluY2x1ZGVzLCByZWNpcGVTcGFyc2VGaWVsZHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWNpcGVTZXJ2aWNlLmdldFN1Z2dlc3Rpb24odGhpcy5wcm9kdWN0SWRzLCByZWNpcGVJbmNsdWRlcywgcmVjaXBlU3BhcnNlRmllbGRzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGd1ZXN0cyBmcm9tIHRoZSB2YWx1ZSBpbiB0aGUgYmFza2V0IGlmIHRoZSByZWNpcGUgaXMgaW4gdGhlIGJhc2tldFxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVHdWVzdHNJZk5lY2Vzc2FyeSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmJhc2tldHNTZXJ2aWNlLnJlY2lwZUlzSW5CYXNrZXQodGhpcy5yZWNpcGUuaWQpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGlzSW5MaXN0ID0+IHtcbiAgICAgIGlmIChpc0luTGlzdCkge1xuICAgICAgICB0aGlzLnJlY2lwZS5tb2RpZmllZEd1ZXN0cyA9IHRoaXMuYmFza2V0c1NlcnZpY2UuZ3Vlc3RzRm9yUmVjaXBlKHRoaXMucmVjaXBlLmlkKSB8fCArdGhpcy5yZWNpcGUuZ3Vlc3RzO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoIXRoaXMucmVjaXBlLm1vZGlmaWVkR3Vlc3RzKSB7XG4gICAgICAgIHRoaXMucmVjaXBlLm1vZGlmaWVkR3Vlc3RzID0gK3RoaXMucmVjaXBlLmd1ZXN0cztcbiAgICAgIH1cbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KSk7XG4gIH1cbn1cbiIsIjwhLS0gPGRpdiAqbmdJZj0naXNsb2FkZWQnIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZFwiPlxuICAvLyBCb29rbWFyayBcbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2Jvb2ttYXJrXCI+XG4gICAgPGltZyBzcmM9XCJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL3JlY2lwZS1jYXJkL0Jvb2ttYXJrLnN2Z1wiIGFsdD1cIklkw6llcyByZXBhc1wiPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cInJlY2lwZSBlbHNlIHBpY3RTa2VsZXRvblwiIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fcGljdHVyZVwiIChjbGljayk9XCJvcGVuUmVjaXBlKClcIj5cbiAgICAvLyBQaWN0dXJlIFxuICAgIDxpbWcgW3NyY109XCJyZWNpcGU/LmF0dHJpYnV0ZXNbJ21lZGlhLXVybCddXCIgbG9hZGluZz1cImxhenlcIj5cbiAgICAvLyBWaWRlbyBcbiAgICA8ZGl2ICpuZ0lmPVwiY29udGV4dFNlcnZpY2UudmlkZW9SZWNpcGVzRW5hYmxlZCAmJiByZWNpcGU/LnZpZGVvSWRcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3BpY3R1cmVfX3ZpZGVvXCI+XG4gICAgICA8bmctbWlhbS1pY29uIFtpY29uTmFtZV09XCJpY29uLlZpZGVvXCIgW3dpZHRoXT1cIjEwMFwiIFtoZWlnaHRdPVwiMTAwXCIgcHJpbWFyeUNvbG9yPSdibGFjayc+PC9uZy1taWFtLWljb24+XG4gICAgPC9kaXY+XG4gICAgLy8gTGlrZSBidXR0b24gXG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3BpY3R1cmVfX2FjdGlvbnNcIj5cbiAgICAgIDxuZy1taWFtLWxpa2UtYnV0dG9uICpuZ0lmPVwidXNlclNlcnZpY2UuaXNMb2dnZWQkIHwgYXN5bmNcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2FjdGlvbnNfX2ljb25cIiBbcmVjaXBlXT0ncmVjaXBlJyBbb3JpZ2luVHJhY2VdPVwiZXZlbnRUcmFjZSgpXCI+XG4gICAgICA8L25nLW1pYW0tbGlrZS1idXR0b24+XG4gICAgPC9kaXY+XG4gICAgLy8gU3BvbnNvciBsb2dvIFxuICAgIDxkaXYgKm5nSWY9XCJyZWNpcGUuc3BvbnNvckxvZ29VcmxcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3BpY3R1cmVfX3Nwb25zb3JcIj5cbiAgICAgIDxpbWcgW3NyY109XCJyZWNpcGUuc3BvbnNvckxvZ29VcmxcIj5cbiAgICA8L2Rpdj5cbiAgICAvLyBGaWxpZ3JhbmUgbG9nbyBcbiAgICA8ZGl2ICpuZ0lmPVwicmVjaXBlLmZpbGlncmFuZUxvZ29VcmxcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3BpY3R1cmVfX2ZpbGlncmFuZVwiPlxuICAgICAgPGltZyBbc3JjXT1cInJlY2lwZS5maWxpZ3JhbmVMb2dvVXJsXCI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8bmctdGVtcGxhdGUgI3BpY3RTa2VsZXRvbj5cbiAgICA8bmctbWlhbS1za2VsZXRvbiBbdHlwZV09J3NrZWxldG9uLlBpY3R1cmUnPjwvbmctbWlhbS1za2VsZXRvbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2F0dHJpYnV0ZXNcIj5cbiAgICA8ZGl2ICpuZ0lmPVwicmVjaXBlIGVsc2UgdGV4dFNrZWxldG9uXCI+XG4gICAgICAvLyBUaXRsZSBcbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19hdHRyaWJ1dGVzX190aXRsZVwiIChjbGljayk9XCJvcGVuUmVjaXBlKClcIj5cbiAgICAgICAge3tyZWNpcGU/LmF0dHJpYnV0ZXNbJ3RpdGxlJ119fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG5nLXRlbXBsYXRlICN0ZXh0U2tlbGV0b24+XG4gICAgICA8bmctbWlhbS1za2VsZXRvbiBbdHlwZV09J3NrZWxldG9uLlRleHQnPjwvbmctbWlhbS1za2VsZXRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19hdHRyaWJ1dGVzX19pbmZvc1wiPlxuICAgICAgLy8gVG90YWwgdGltZSBcbiAgICAgIDxkaXYgKm5nSWY9J3JlY2lwZSBlbHNlIHNrZWxldG9uSW5mbycgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19hdHRyaWJ1dGVzX19pbmZvICByZWNpcGVfX3RvdGFsX190aW1lXCI+XG4gICAgICAgIDxuZy1taWFtLWljb24gW3dpZHRoXT1cIjIwXCIgW2hlaWdodF09XCIyMFwiIFtpY29uTmFtZV09XCJpY29uLlRpbWVcIj48L25nLW1pYW0taWNvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmZvX19sYWJlbFwiPnt7IHJlY2lwZT8udG90YWxUaW1lIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICAvLyBEaWZmaWN1bHR5IFxuICAgICAgPGRpdiAqbmdJZj0ncmVjaXBlIGVsc2Ugc2tlbGV0b25JbmZvJyBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2F0dHJpYnV0ZXNfX2luZm8gcmVjaXBlX19kaWZmaWN1bHR5XCIgW25nQ2xhc3NdPVwieyAnZWFzeSc6IHJlY2lwZT8uZGlmZmljdWx0eSA9PT0gMSxcbiAgICAgICdtZWRpdW0nOiByZWNpcGU/LmRpZmZpY3VsdHkgPT09IDIsICdoYXJkJzogcmVjaXBlPy5kaWZmaWN1bHR5ID09PSAzIH1cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicmVjaXBlPy5kaWZmaWN1bHR5XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiMlwiPlxuICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBbd2lkdGhdPVwiNjBcIiBbaGVpZ2h0XT1cIjIwXCIgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLWJsYWNrKSdcbiAgICAgICAgICAgICAgW2ljb25OYW1lXT1cImljb24uRGlmZmljdWx0eU1lZGl1bVwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIjNcIj5cbiAgICAgICAgICAgIDxuZy1taWFtLWljb24gW3dpZHRoXT1cIjYwXCIgW2hlaWdodF09XCIyMFwiIHByaW1hcnlDb2xvcj0ndmFyKC0tbS1jb2xvci1ibGFjayknXG4gICAgICAgICAgICAgIFtpY29uTmFtZV09XCJpY29uLkRpZmZpY3VsdHlIaWdoXCI+PC9uZy1taWFtLWljb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBbd2lkdGhdPVwiNjBcIiBbaGVpZ2h0XT1cIjIwXCIgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLWJsYWNrKSdcbiAgICAgICAgICAgICAgW2ljb25OYW1lXT1cImljb24uRGlmZmljdWx0eUxvd1wiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicmVjaXBlPy5kaWZmaWN1bHR5XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiMVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmZvX19sYWJlbCBlYXN5XCIgKm5nSWY9XCJyZWNpcGVTZXJ2aWNlLmRpZmZpY3VsdHlMZXZlbHNbMF0/LmxhYmVsICE9PSAnQ2hlZiBkw6lidXRhbnQnIGVsc2UgZGlmZmljdWx0eUVhc3lEZWZhdWx0XCI+XG4gICAgICAgICAgICAgIHt7cmVjaXBlU2VydmljZS5kaWZmaWN1bHR5TGV2ZWxzWzBdLmxhYmVsfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGlmZmljdWx0eUVhc3lEZWZhdWx0PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2luZm9fX2xhYmVsIGVhc3lcIiBpMThuPkNoZWYgZMOpYnV0YW50PC9zcGFuPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2luZm9fX2xhYmVsIG1lZGl1bVwiICpuZ0lmPVwicmVjaXBlU2VydmljZS5kaWZmaWN1bHR5TGV2ZWxzWzFdPy5sYWJlbCAhPT0gJ0NoZWYgaW50ZXJtw6lkaWFpcmUnIGVsc2UgZGlmZmljdWx0eU1lZGl1bURlZmF1bHRcIj5cbiAgICAgICAgICAgICAge3tyZWNpcGVTZXJ2aWNlLmRpZmZpY3VsdHlMZXZlbHNbMV0ubGFiZWx9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaWZmaWN1bHR5TWVkaXVtRGVmYXVsdD5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmZvX19sYWJlbCBtZWRpdW1cIiBpMThuPkNoZWYgaW50ZXJtw6lkaWFpcmU8L3NwYW4+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIjNcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9faW5mb19fbGFiZWwgaGFyZFwiICpuZ0lmPVwicmVjaXBlU2VydmljZS5kaWZmaWN1bHR5TGV2ZWxzWzJdPy5sYWJlbCAhPT0gJ1RvcCBjaGVmJyBlbHNlIGRpZmZpY3VsdHlIYXJkRGVmYXVsdFwiPlxuICAgICAgICAgICAgICB7e3JlY2lwZVNlcnZpY2UuZGlmZmljdWx0eUxldmVsc1syXS5sYWJlbH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RpZmZpY3VsdHlIYXJkRGVmYXVsdD5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmZvX19sYWJlbCBoYXJkXCIgaTE4bj5Ub3AgY2hlZjwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmZvX19sYWJlbCBlYXN5XCIgKm5nSWY9XCJyZWNpcGVTZXJ2aWNlLmRpZmZpY3VsdHlMZXZlbHNbMF0/LmxhYmVsICE9PSAnQ2hlZiBkw6lidXRhbnQnIGVsc2UgZGlmZmljdWx0eURlZmF1bHRcIj5cbiAgICAgICAgICAgICAge3tyZWNpcGVTZXJ2aWNlLmRpZmZpY3VsdHlMZXZlbHNbMF0ubGFiZWx9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaWZmaWN1bHR5RGVmYXVsdD5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmZvX19sYWJlbCBlYXN5XCIgaTE4bj5DaGVmIGTDqWJ1dGFudDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI3NrZWxldG9uSW5mbz5cbiAgICAgICAgPG5nLW1pYW0tc2tlbGV0b24gW3R5cGVdPSdza2VsZXRvbj8uSWNvbldpdGhJbmZvJz48L25nLW1pYW0tc2tlbGV0b24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19hdHRyaWJ1dGVzX19jb250cm9sXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fY29udHJvbF9fbGVmdF9fY29sXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19sZWZ0X19jb2xfX2N1c3RvbVwiPlxuICAgICAgICAgIC8vIEhlbHBlciBcbiAgICAgICAgICA8ZGl2IChjbGljayk9XCJ0b2dnbGVIZWxwZXIoKVwiIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9faGVscFwiPlxuICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBbd2lkdGhdPVwiMjRcIiBbaGVpZ2h0XT1cIjI0XCIgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLWdyZXkwMiknIHNlY29uZGFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLWdyZXkwNyknXG4gICAgICAgICAgICBbaWNvbk5hbWVdPVwiaWNvbi5IZWxwXCI+PC9uZy1taWFtLWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgLy8gSW5ncmVkaWVudCBwaWN0dXJlcyBcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cImNvbnRleHRTZXJ2aWNlLmRpc3BsYXlJbmdyZWRpZW50UGljdHVyZXNPblJlY2lwZUNhcmRzICYmIHJlY2lwZT8ubW9kaWZpZWRJbmdyZWRpZW50cz8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2luZ3JlZGllbnRzX19waWN0dXJlc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2luZ3JlZGllbnRzX19waWN0dXJlXCI+XG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbmdyZWRpZW50UGljdHVyZShyZWNpcGUubW9kaWZpZWRJbmdyZWRpZW50c1swXSlcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2luZ3JlZGllbnRzX19waWN0dXJlXCI+XG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbmdyZWRpZW50UGljdHVyZShyZWNpcGUubW9kaWZpZWRJbmdyZWRpZW50c1sxXSlcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2luZ3JlZGllbnRzX19tb3JlXCIgKm5nSWY9XCJyZWNpcGUubW9kaWZpZWRJbmdyZWRpZW50cy5sZW5ndGggPiAyXCI+XG4gICAgICAgICAgICAgICsge3tyZWNpcGUubW9kaWZpZWRJbmdyZWRpZW50cy5sZW5ndGggLSAyfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2NvbnRyb2xfX3JpZ2h0X19jb2xcIj5cbiAgICAgICAgLy8gUHJpY2UgXG4gICAgICAgIDxkaXYgKm5nSWY9XCJyZWNpcGUgJiYgZGlzcGxheVByaWNpbmdcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3JpZ2h0X19jb2xfX3ByaWNlXCI+XG4gICAgICAgICAgPG5nLW1pYW0tcmVjaXBlLXByaWNpbmcgW3JlY2lwZV09XCJyZWNpcGVcIiBbc2VydmVzXT1cInJlY2lwZT8ubW9kaWZpZWRHdWVzdHNcIj48L25nLW1pYW0tcmVjaXBlLXByaWNpbmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgLy8gQWRkIHRvIGJhc2tldCBcbiAgICA8bmctbWlhbS1yZWNpcGUtY2FyZC1jdGEgW3JlY2lwZV09XCJyZWNpcGVcIiBbY2FyZFR5cGVdPVwiY2FyZFR5cGVcIiBbcHJldmlld0FsbG93ZWRdPVwicHJldmlld0FsbG93ZWRcIiBbZGlzcGxheUd1ZXN0c109XCJkaXNwbGF5R3Vlc3RzXCJcbiAgICAgIFtoZWxwQnV0dG9uQWxsb3dlZF09XCJoZWxwQnV0dG9uQWxsb3dlZFwiIChkaXNwbGF5ZWQpPVwiZGlzcGxheWVkLmVtaXQoKVwiIChjbGlja2VkKT1cInByaW1hcnlCdXR0b25DbGlja2VkJC5lbWl0KCRldmVudClcIj5cbiAgICA8L25nLW1pYW0tcmVjaXBlLWNhcmQtY3RhPlxuICA8L2Rpdj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNjb3JzPlxuICA8bmctbWlhbS1jb3JzLW92ZXJsYXk+PC9uZy1taWFtLWNvcnMtb3ZlcmxheT5cbjwvbmctdGVtcGxhdGU+IC0tPlxuXG48ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZFwiPlxuICA8IS0tIE1BSU4gQ09OVEFJTkVSIC0tPlxuICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fY29udGFpbmVyXCIgKm5nSWY9XCJyZWNpcGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fdG9wXCIgKGNsaWNrKT1cIm9wZW5SZWNpcGUoKVwiPlxuICAgICAgPCEtLSBQSUNUVVJFIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3BpY3R1cmVcIj5cbiAgICAgICAgPGltZyBbc3JjXT1cInJlY2lwZT8uYXR0cmlidXRlc1snbWVkaWEtdXJsJ11cIiBsb2FkaW5nPVwibGF6eVwiPlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIEdSQURJRU5UIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2dyYWRpZW50XCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fY29udGVudFwiPlxuICAgICAgICA8IS0tIExJS0UgJiBQRVJTT05BTCBSRUNJUEVTIEFDVElPTlMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19saWtlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2FjdGlvbnNfX2ljb25cIiAqbmdJZj1cInJlY2lwZS5yZWxhdGlvbnNoaXBzWydyZWNpcGUtcHJvdmlkZXInXT8uZGF0YS5pZCA9PT0gJ3BlcnNvbmFsJyBlbHNlIGxpa2VcIlxuICAgICAgICAgICAgKGNsaWNrKT0ndG9nZ2xlTW9yZUFjdGlvbnMoJGV2ZW50KSc+XG4gICAgICAgICAgICA8bmctbWlhbS1pY29uIFtpY29uTmFtZV09XCJhY3Rpb25zT3BlbmVkID8gaWNvbi5DbGVhciA6IGljb24uSG9yaXpvbnRhbERvdHNcIiBwcmltYXJ5Q29sb3I9J3ZhcigtLW0tY29sb3ItcHJpbWFyeSknPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbGlrZT5cbiAgICAgICAgICAgIDxuZy1taWFtLWxpa2UtYnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwidXNlclNlcnZpY2UuaXNMb2dnZWQkIHwgYXN5bmNcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2FjdGlvbnNfX2ljb25cIiBbcmVjaXBlXT0ncmVjaXBlJyBbb3JpZ2luVHJhY2VdPVwiZXZlbnRUcmFjZSgpXCIgW3dpZHRoXT1cIjI0XCIgW2hlaWdodF09XCIyNFwiPlxuICAgICAgICAgICAgPC9uZy1taWFtLWxpa2UtYnV0dG9uPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fcGljdHVyZV9fYm90dG9tXCI+XG4gICAgICAgICAgPCEtLSBUSVRMRSAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fdGl0bGUgbWlhbS1kcy10ZXh0IHdlaWdodC14eGwgc2l6ZS1tXCI+XG4gICAgICAgICAgICA8c3Bhbj57e3JlY2lwZS5hdHRyaWJ1dGVzWyd0aXRsZSddfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSBDT1VOVEVSIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19jb3VudGVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tZHMtdGV4dCB3ZWlnaHQteHhsIHNpemUtbVwiPnt7cmVjaXBlLm1vZGlmaWVkR3Vlc3RzfX08L3NwYW4+XG4gICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvaWNvbnMvcmVjaXBlLWNvdW50ZXIuc3ZnXCIgYWx0PVwicGVvcGxlXCI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2JvdHRvbVwiIChjbGljayk9XCJvcGVuUmVjaXBlKClcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJjb250ZXh0U2VydmljZS5kaXNwbGF5SW5ncmVkaWVudFBpY3R1cmVzT25SZWNpcGVDYXJkcyAmJiByZWNpcGU/Lm1vZGlmaWVkSW5ncmVkaWVudHM/Lmxlbmd0aCA+IDFcIlxuICAgICAgICBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2luZ3JlZGllbnRzX19waWN0dXJlc1wiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmdyZWRpZW50c19fcGljdHVyZVwiPlxuICAgICAgICAgIDxpbWcgW3NyY109XCJpbmdyZWRpZW50UGljdHVyZShyZWNpcGUubW9kaWZpZWRJbmdyZWRpZW50c1swXSlcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmdyZWRpZW50c19fcGljdHVyZVwiPlxuICAgICAgICAgIDxpbWcgW3NyY109XCJpbmdyZWRpZW50UGljdHVyZShyZWNpcGUubW9kaWZpZWRJbmdyZWRpZW50c1sxXSlcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmdyZWRpZW50c19fbW9yZVwiICpuZ0lmPVwicmVjaXBlLm1vZGlmaWVkSW5ncmVkaWVudHMubGVuZ3RoID4gMlwiPlxuICAgICAgICAgICsge3tyZWNpcGUubW9kaWZpZWRJbmdyZWRpZW50cy5sZW5ndGggLSAyfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19hY3Rpb25zXCI+XG4gICAgICAgIDwhLS0gUFJJQ0UgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJyZWNpcGUgJiYgZGlzcGxheVByaWNpbmdcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3ByaWNlXCI+XG4gICAgICAgICAgPG5nLW1pYW0tcmVjaXBlLXByaWNpbmcgY2xhc3M9XCJtaWFtLWRzLXRleHQgd2VpZ2h0LXh4bFwiIFtyZWNpcGVJZF09XCJyZWNpcGUuaWRcIiBbc2VydmVzXT1cInJlY2lwZS5tb2RpZmllZEd1ZXN0c1wiPjwvbmctbWlhbS1yZWNpcGUtcHJpY2luZz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gQ1RBIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fY3RhXCI+XG4gICAgICAgICAgPG5nLW1pYW0tcmVjaXBlLWNhcmQtY3RhIFxuICAgICAgICAgICAgKm5nSWY9XCJwcmV2aWV3QWxsb3dlZCAmJiAhYWRkUmVjaXBlTW9kZSAmJiAhcmVwbGFjZU1vZGVcIlxuICAgICAgICAgICAgW3JlY2lwZV09XCJyZWNpcGVcIlxuICAgICAgICAgICAgW3ByZXZpZXdBbGxvd2VkXT1cInByZXZpZXdBbGxvd2VkXCJcbiAgICAgICAgICAgIFtkaXNwbGF5R3Vlc3RzXT1cImRpc3BsYXlHdWVzdHNcIlxuICAgICAgICAgICAgW2hlbHBCdXR0b25BbGxvd2VkXT1cImhlbHBCdXR0b25BbGxvd2VkXCJcbiAgICAgICAgICAgIChkaXNwbGF5ZWQpPVwiZGlzcGxheWVkLmVtaXQoKVwiXG4gICAgICAgICAgICAoY2xpY2tlZCk9XCJwcmltYXJ5QnV0dG9uQ2xpY2tlZCQuZW1pdCgkZXZlbnQpXCI+XG4gICAgICAgICAgPC9uZy1taWFtLXJlY2lwZS1jYXJkLWN0YT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gT1BUSU9OTkFMIENUQVMgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJyZXBsYWNlTW9kZVwiIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fYWN0aW9uc19fcmVwbGFjZVwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtaWFtLWRzLWJ1dHRvbiBwcmltYXJ5IHJldmVyc2Ugc3F1YXJlXCIgKGNsaWNrKT1cInJlbW92ZUZyb21NZWFsc1BsYW5uZXIuZW1pdCgpXCI+XG4gICAgICAgICAgICA8bmctbWlhbS1pY29uIFtpY29uTmFtZV09XCJpY29uLlRyYXNoXCIgcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci1wcmltYXJ5KVwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtaWFtLWRzLWJ1dHRvbiBwcmltYXJ5IHJldmVyc2VcIiAoY2xpY2spPVwib3BlbkNhdGFsb2cuZW1pdCgpXCI+XG4gICAgICAgICAgICA8c3BhbiBpMThuPlJlbXBsYWNlcjwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJhZGRSZWNpcGVNb2RlXCIgY2xhc3M9XCJtaWFtLWRzLWJ1dHRvbiBwcmltYXJ5IHJldmVyc2VcIiAoY2xpY2spPVwiYWRkVG9NZWFsc1BsYW5uZXIuZW1pdChyZWNpcGUpXCI+XG4gICAgICAgICAgPHNwYW4gaTE4bj5Bam91dGVyPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPCEtLSBTUE9OU09SIC0tPlxuICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fc3BvbnNvclwiICpuZ0lmPVwicmVjaXBlPy5zcG9uc29yTG9nb1VybFwiPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19zcG9uc29yX190ZXh0XCI+XG4gICAgICA8c3BhbiBpMThuPlVuZSByZWNldHRlIHByb3BvcG9zw6llIHBhcjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fc3BvbnNvcl9fbG9nb1wiPlxuICAgICAgPGltZyBbc3JjXT1cInJlY2lwZS5zcG9uc29yTG9nb1VybFwiPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPCEtLSBNb3JlIGFjdGlvbnMgcG9waW4gLS0+XG4gIDxuZy1taWFtLWFjdGlvbnMtcG9waW4gXG4gICAgKm5nSWY9XCJhY3Rpb25zT3BlbmVkXCIgKGNsb3NlKT1cImNsb3NlTW9yZUFjdGlvbnMoKVwiIChhY3Rpb25UcmlnZ2VyZWQpPVwiYWN0aW9uVHJpZ2dlcmVkLmVtaXQoJGV2ZW50KVwiPlxuICA8L25nLW1pYW0tYWN0aW9ucy1wb3Bpbj5cbjwvZGl2PiJdfQ==