ng-miam 3.3.2 → 3.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/ng-miam.umd.js +1844 -1111
- package/bundles/ng-miam.umd.js.map +1 -1
- package/bundles/ng-miam.umd.min.js +2 -2
- package/bundles/ng-miam.umd.min.js.map +1 -1
- package/esm2015/lib/_components/abstracts/abstract-recipe-card.component.js +1 -1
- package/esm2015/lib/_components/icon/icon.component.js +23 -6
- package/esm2015/lib/_components/recipe-filters/recipe-filters.component.js +94 -40
- package/esm2015/lib/_components/text-input/text-input.component.js +6 -4
- package/esm2015/lib/_models/article.js +43 -0
- package/esm2015/lib/_models/basket.js +2 -2
- package/esm2015/lib/_models/index.js +4 -1
- package/esm2015/lib/_models/ingredient.js +11 -7
- package/esm2015/lib/_models/package.js +14 -3
- package/esm2015/lib/_models/recipe.js +6 -2
- package/esm2015/lib/_models/user.js +10 -1
- package/esm2015/lib/_services/analytics.service.js +3 -3
- package/esm2015/lib/_services/articles.service.js +21 -0
- package/esm2015/lib/_services/baskets.service.js +2 -2
- package/esm2015/lib/_services/context.service.js +19 -1
- package/esm2015/lib/_services/groceries-lists.service.js +2 -2
- package/esm2015/lib/_services/index.js +3 -1
- package/esm2015/lib/_services/ingredients.service.js +2 -2
- package/esm2015/lib/_services/interceptor.service.js +2 -3
- package/esm2015/lib/_services/package.service.js +32 -9
- package/esm2015/lib/_services/recipe-events.service.js +2 -2
- package/esm2015/lib/_services/recipe-likes.service.js +6 -2
- package/esm2015/lib/_services/recipe-share.service.js +2 -2
- package/esm2015/lib/_services/recipes.service.js +2 -2
- package/esm2015/lib/_services/suppliers.service.js +2 -2
- package/esm2015/lib/_services/toastr.service.js +52 -0
- package/esm2015/lib/_services/user.service.js +64 -21
- package/esm2015/lib/_types/icon.enum.js +2 -1
- package/esm2015/lib/_web-components/catalog-article-card/catalog-article-card.component.js +71 -0
- package/esm2015/lib/_web-components/catalog-category/catalog-category.component.js +134 -92
- package/esm2015/lib/_web-components/catalog-header/catalog-header.component.js +51 -34
- package/esm2015/lib/_web-components/catalog-list/catalog-list.component.js +106 -61
- package/esm2015/lib/_web-components/catalog-recipe-card/catalog-recipe-card.component.js +65 -52
- package/esm2015/lib/_web-components/favorite-page/favorite-page.component.js +8 -6
- package/esm2015/lib/_web-components/index.js +2 -1
- package/esm2015/lib/_web-components/personal-recipes/personal-recipes.component.js +7 -5
- package/esm2015/lib/_web-components/recipe-card/recipe-card.component.js +73 -58
- package/esm2015/lib/_web-components/recipe-catalog/recipe-catalog.component.js +152 -92
- package/esm2015/lib/_web-components/recipe-details/recipe-details.component.js +355 -278
- package/esm2015/lib/_web-components/suggestion-card/suggestion-card.component.js +3 -6
- package/esm2015/lib/_web-components/web-components.module.js +17 -9
- package/esm2015/lib/environments/environment.js +6 -0
- package/esm2015/lib/ng-miam.module.js +4 -4
- package/fesm2015/ng-miam.js +1755 -1140
- package/fesm2015/ng-miam.js.map +1 -1
- package/lib/_components/abstracts/abstract-recipe-card.component.d.ts +1 -1
- package/lib/_components/recipe-filters/recipe-filters.component.d.ts +14 -4
- package/lib/_components/text-input/text-input.component.d.ts +2 -1
- package/lib/_models/article.d.ts +23 -0
- package/lib/_models/basket.d.ts +1 -2
- package/lib/_models/index.d.ts +3 -0
- package/lib/_models/ingredient.d.ts +2 -0
- package/lib/_models/package.d.ts +10 -3
- package/lib/_models/recipe.d.ts +2 -0
- package/lib/_models/user.d.ts +16 -1
- package/lib/_services/articles.service.d.ts +10 -0
- package/lib/_services/context.service.d.ts +14 -6
- package/lib/_services/index.d.ts +2 -0
- package/lib/_services/package.service.d.ts +6 -1
- package/lib/_services/toastr.service.d.ts +10 -0
- package/lib/_services/user.service.d.ts +12 -6
- package/lib/_types/icon.enum.d.ts +2 -1
- package/lib/_web-components/catalog-article-card/catalog-article-card.component.d.ts +8 -0
- package/lib/_web-components/catalog-category/catalog-category.component.d.ts +12 -7
- package/lib/_web-components/catalog-header/catalog-header.component.d.ts +5 -2
- package/lib/_web-components/catalog-list/catalog-list.component.d.ts +13 -6
- package/lib/_web-components/catalog-recipe-card/catalog-recipe-card.component.d.ts +1 -0
- package/lib/_web-components/favorite-page/favorite-page.component.d.ts +0 -1
- package/lib/_web-components/index.d.ts +1 -0
- package/lib/_web-components/personal-recipes/personal-recipes.component.d.ts +0 -1
- package/lib/_web-components/recipe-card/recipe-card.component.d.ts +1 -0
- package/lib/_web-components/recipe-catalog/recipe-catalog.component.d.ts +13 -4
- package/lib/_web-components/recipe-details/recipe-details.component.d.ts +19 -6
- package/lib/_web-components/suggestion-card/suggestion-card.component.d.ts +0 -1
- package/lib/_web-components/web-components.module.d.ts +13 -11
- package/lib/environments/environment.d.ts +5 -0
- package/miam-style.css +1 -1
- package/package.json +1 -1
- package/esm2015/lib/environment.js +0 -18
- package/lib/environment.d.ts +0 -5
|
@@ -1,68 +1,127 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, QueryList, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { forkJoin, of } from 'rxjs';
|
|
3
|
+
import { finalize, map, switchMap } from 'rxjs/operators';
|
|
4
|
+
import { ArticlesService, ContextService, RecipeLikesService, RecipesService } from '../../_services';
|
|
3
5
|
import { Icon } from '../../_types/icon.enum';
|
|
4
6
|
import { CatalogRecipeCardComponent } from '../catalog-recipe-card/catalog-recipe-card.component';
|
|
5
7
|
import * as i0 from "@angular/core";
|
|
6
8
|
import * as i1 from "../../_services";
|
|
7
|
-
import * as i2 from "
|
|
8
|
-
import * as i3 from "
|
|
9
|
+
import * as i2 from "@angular/common";
|
|
10
|
+
import * as i3 from "../../_components/icon/icon.component";
|
|
9
11
|
import * as i4 from "../loader/loader.component";
|
|
10
12
|
import * as i5 from "../catalog-recipe-card/catalog-recipe-card.component";
|
|
13
|
+
import * as i6 from "../catalog-article-card/catalog-article-card.component";
|
|
11
14
|
const _c0 = ["categoryContent"];
|
|
12
15
|
const _c1 = ["categoryCards"];
|
|
13
|
-
function
|
|
14
|
-
i0.ɵɵelementStart(0, "div",
|
|
16
|
+
function CatalogCategoryComponent_div_0_div_11_Template(rf, ctx) { if (rf & 1) {
|
|
17
|
+
i0.ɵɵelementStart(0, "div", 15);
|
|
15
18
|
i0.ɵɵelement(1, "ng-miam-loader");
|
|
16
19
|
i0.ɵɵelementStart(2, "div");
|
|
17
|
-
i0.ɵɵtext(3, " Chargement des
|
|
20
|
+
i0.ɵɵtext(3, " Chargement des r\u00E9sultats... ");
|
|
18
21
|
i0.ɵɵelementEnd();
|
|
19
22
|
i0.ɵɵelementEnd();
|
|
20
23
|
} }
|
|
21
|
-
function
|
|
22
|
-
i0.ɵɵelement(0, "ng-miam-catalog-recipe-card",
|
|
24
|
+
function CatalogCategoryComponent_div_0_ng_miam_catalog_recipe_card_12_Template(rf, ctx) { if (rf & 1) {
|
|
25
|
+
i0.ɵɵelement(0, "ng-miam-catalog-recipe-card", 16);
|
|
23
26
|
} if (rf & 2) {
|
|
24
|
-
const
|
|
25
|
-
i0.ɵɵproperty("recipe",
|
|
27
|
+
const recipe_r8 = ctx.$implicit;
|
|
28
|
+
i0.ɵɵproperty("recipe", recipe_r8);
|
|
26
29
|
} }
|
|
27
|
-
function
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
i0.ɵɵ
|
|
30
|
+
function CatalogCategoryComponent_div_0_ng_miam_catalog_article_card_13_Template(rf, ctx) { if (rf & 1) {
|
|
31
|
+
i0.ɵɵelement(0, "ng-miam-catalog-article-card", 17);
|
|
32
|
+
} if (rf & 2) {
|
|
33
|
+
const article_r9 = ctx.$implicit;
|
|
34
|
+
i0.ɵɵproperty("article", article_r9);
|
|
35
|
+
} }
|
|
36
|
+
function CatalogCategoryComponent_div_0_div_14_Template(rf, ctx) { if (rf & 1) {
|
|
37
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
38
|
+
i0.ɵɵelementStart(0, "div", 18);
|
|
39
|
+
i0.ɵɵlistener("click", function CatalogCategoryComponent_div_0_div_14_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r10 = i0.ɵɵnextContext(2); return ctx_r10.slideLeft(); });
|
|
40
|
+
i0.ɵɵelement(1, "ng-miam-icon", 19);
|
|
32
41
|
i0.ɵɵelementEnd();
|
|
33
42
|
} if (rf & 2) {
|
|
34
|
-
const
|
|
43
|
+
const ctx_r6 = i0.ɵɵnextContext(2);
|
|
35
44
|
i0.ɵɵadvance(1);
|
|
36
|
-
i0.ɵɵproperty("iconName",
|
|
45
|
+
i0.ɵɵproperty("iconName", ctx_r6.icon.ChevronDown);
|
|
37
46
|
} }
|
|
38
|
-
function
|
|
39
|
-
const
|
|
40
|
-
i0.ɵɵelementStart(0, "div",
|
|
41
|
-
i0.ɵɵlistener("click", function
|
|
42
|
-
i0.ɵɵelement(1, "ng-miam-icon",
|
|
47
|
+
function CatalogCategoryComponent_div_0_div_15_Template(rf, ctx) { if (rf & 1) {
|
|
48
|
+
const _r13 = i0.ɵɵgetCurrentView();
|
|
49
|
+
i0.ɵɵelementStart(0, "div", 20);
|
|
50
|
+
i0.ɵɵlistener("click", function CatalogCategoryComponent_div_0_div_15_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r12 = i0.ɵɵnextContext(2); return ctx_r12.slideRight(); });
|
|
51
|
+
i0.ɵɵelement(1, "ng-miam-icon", 19);
|
|
43
52
|
i0.ɵɵelementEnd();
|
|
44
53
|
} if (rf & 2) {
|
|
45
|
-
const
|
|
54
|
+
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
46
55
|
i0.ɵɵadvance(1);
|
|
47
|
-
i0.ɵɵproperty("iconName",
|
|
56
|
+
i0.ɵɵproperty("iconName", ctx_r7.icon.ChevronDown);
|
|
48
57
|
} }
|
|
49
58
|
const _c2 = function (a0) { return { "transform": a0 }; };
|
|
59
|
+
function CatalogCategoryComponent_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
60
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
61
|
+
i0.ɵɵelementStart(0, "div", 1);
|
|
62
|
+
i0.ɵɵelementStart(1, "div", 2);
|
|
63
|
+
i0.ɵɵelementStart(2, "div", 3);
|
|
64
|
+
i0.ɵɵlistener("click", function CatalogCategoryComponent_div_0_Template_div_click_2_listener() { i0.ɵɵrestoreView(_r15); const ctx_r14 = i0.ɵɵnextContext(); return ctx_r14.displayListMode(); });
|
|
65
|
+
i0.ɵɵtext(3);
|
|
66
|
+
i0.ɵɵelementEnd();
|
|
67
|
+
i0.ɵɵelementStart(4, "div", 4);
|
|
68
|
+
i0.ɵɵlistener("click", function CatalogCategoryComponent_div_0_Template_div_click_4_listener() { i0.ɵɵrestoreView(_r15); const ctx_r16 = i0.ɵɵnextContext(); return ctx_r16.displayListMode(); });
|
|
69
|
+
i0.ɵɵtext(5, "Voir tout");
|
|
70
|
+
i0.ɵɵelementEnd();
|
|
71
|
+
i0.ɵɵelementStart(6, "ng-miam-icon", 5);
|
|
72
|
+
i0.ɵɵlistener("click", function CatalogCategoryComponent_div_0_Template_ng_miam_icon_click_6_listener() { i0.ɵɵrestoreView(_r15); const ctx_r17 = i0.ɵɵnextContext(); return ctx_r17.displayListMode(); });
|
|
73
|
+
i0.ɵɵelementEnd();
|
|
74
|
+
i0.ɵɵelementEnd();
|
|
75
|
+
i0.ɵɵelementStart(7, "div", 6, 7);
|
|
76
|
+
i0.ɵɵelementStart(9, "div", 8, 9);
|
|
77
|
+
i0.ɵɵtemplate(11, CatalogCategoryComponent_div_0_div_11_Template, 4, 0, "div", 10);
|
|
78
|
+
i0.ɵɵtemplate(12, CatalogCategoryComponent_div_0_ng_miam_catalog_recipe_card_12_Template, 1, 1, "ng-miam-catalog-recipe-card", 11);
|
|
79
|
+
i0.ɵɵtemplate(13, CatalogCategoryComponent_div_0_ng_miam_catalog_article_card_13_Template, 1, 1, "ng-miam-catalog-article-card", 12);
|
|
80
|
+
i0.ɵɵelementEnd();
|
|
81
|
+
i0.ɵɵtemplate(14, CatalogCategoryComponent_div_0_div_14_Template, 2, 1, "div", 13);
|
|
82
|
+
i0.ɵɵtemplate(15, CatalogCategoryComponent_div_0_div_15_Template, 2, 1, "div", 14);
|
|
83
|
+
i0.ɵɵelementEnd();
|
|
84
|
+
i0.ɵɵelementEnd();
|
|
85
|
+
} if (rf & 2) {
|
|
86
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
87
|
+
i0.ɵɵadvance(3);
|
|
88
|
+
i0.ɵɵtextInterpolate(ctx_r0.title);
|
|
89
|
+
i0.ɵɵadvance(3);
|
|
90
|
+
i0.ɵɵproperty("iconName", ctx_r0.icon.ChevronDown);
|
|
91
|
+
i0.ɵɵadvance(3);
|
|
92
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(8, _c2, "translateX(-" + ctx_r0.xTranslation() + "px)"));
|
|
93
|
+
i0.ɵɵadvance(2);
|
|
94
|
+
i0.ɵɵproperty("ngIf", ctx_r0.isLoading);
|
|
95
|
+
i0.ɵɵadvance(1);
|
|
96
|
+
i0.ɵɵproperty("ngForOf", ctx_r0.recipes);
|
|
97
|
+
i0.ɵɵadvance(1);
|
|
98
|
+
i0.ɵɵproperty("ngForOf", ctx_r0.articles);
|
|
99
|
+
i0.ɵɵadvance(1);
|
|
100
|
+
i0.ɵɵproperty("ngIf", ctx_r0.numberOfSections > 1 && ctx_r0.currentSection != 0);
|
|
101
|
+
i0.ɵɵadvance(1);
|
|
102
|
+
i0.ɵɵproperty("ngIf", ctx_r0.numberOfSections > 1 && ctx_r0.currentSection != ctx_r0.numberOfSections - 1);
|
|
103
|
+
} }
|
|
50
104
|
// miam-catalog-recipe-card : width = 330px + miam-catalog-category__card : margin : 16px
|
|
51
105
|
// we include a margin in the card to get a space this is the card width + the margin
|
|
52
106
|
const CARD_WIDTH = 346;
|
|
53
107
|
const SPACE_BETWEEN_CARD = 16;
|
|
54
108
|
const SLIDER_WIDTH = 48;
|
|
55
109
|
export class CatalogCategoryComponent {
|
|
56
|
-
constructor(recipesService, recipeLikesService, cdr) {
|
|
110
|
+
constructor(recipesService, recipeLikesService, articlesService, context, cdr) {
|
|
57
111
|
this.recipesService = recipesService;
|
|
58
112
|
this.recipeLikesService = recipeLikesService;
|
|
113
|
+
this.articlesService = articlesService;
|
|
114
|
+
this.context = context;
|
|
59
115
|
this.cdr = cdr;
|
|
60
116
|
this.title = '';
|
|
117
|
+
this.recipes = [];
|
|
118
|
+
this.articles = [];
|
|
119
|
+
this.hide = false;
|
|
61
120
|
this.icon = Icon;
|
|
62
|
-
this.
|
|
63
|
-
this.numberOfSections = 1; // number of card group
|
|
121
|
+
this.cardsTotalSize = 0; // native size of the card contain including overflow
|
|
122
|
+
this.numberOfSections = 1; // number of card group that fit in cardsTotalSize
|
|
64
123
|
this.currentSection = 0; // index of the section show on screen
|
|
65
|
-
this.
|
|
124
|
+
this.nbCardsInAnExtremeSection = 0; // nb of card that can fit in screen with one scroll button
|
|
66
125
|
this.nbCardsInAMiddleSection = 0; // nb of card that can fit in screen with two scroll buttons
|
|
67
126
|
this.categoryBandWidth = 0; // native size of visible card container scroll button
|
|
68
127
|
this.displayList = new EventEmitter();
|
|
@@ -71,23 +130,41 @@ export class CatalogCategoryComponent {
|
|
|
71
130
|
this.isLoading = true;
|
|
72
131
|
}
|
|
73
132
|
ngOnChanges() {
|
|
74
|
-
|
|
75
|
-
this.
|
|
76
|
-
|
|
133
|
+
this.subscriptions.push(forkJoin([this.loadRecipes(), this.loadArticles()]).pipe(finalize(() => {
|
|
134
|
+
if (this.recipes.length === 0 && this.articles.length === 0) {
|
|
135
|
+
this.hide = true;
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
this.hide = false;
|
|
139
|
+
this.createSections();
|
|
140
|
+
}
|
|
141
|
+
this.isLoading = false;
|
|
142
|
+
this.cdr.detectChanges();
|
|
143
|
+
})).subscribe());
|
|
77
144
|
}
|
|
78
145
|
loadRecipes() {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
146
|
+
if (!this.filters) {
|
|
147
|
+
return of([]);
|
|
148
|
+
}
|
|
149
|
+
return this.recipesService.getRandom({ size: 20, number: 1 }, this.filters).pipe(switchMap((result) => {
|
|
150
|
+
this.recipes = result;
|
|
151
|
+
return this.recipeLikesService.addLikesToRecipes(result);
|
|
152
|
+
}), map(() => this.recipes));
|
|
153
|
+
}
|
|
154
|
+
loadArticles() {
|
|
155
|
+
var _a;
|
|
156
|
+
// TODO: all contents (recipes, articles...) should be related to packages, to which filters could be attached
|
|
157
|
+
if (!((_a = this.filters) === null || _a === void 0 ? void 0 : _a.packages) || !this.context.articlesInCatalogEnabled) {
|
|
158
|
+
return of([]);
|
|
159
|
+
}
|
|
160
|
+
return this.articlesService.all({ remotefilter: this.filters, sort: ['-date'] }).pipe(map((result) => {
|
|
161
|
+
this.articles = result.data;
|
|
162
|
+
return this.articles;
|
|
87
163
|
}));
|
|
88
164
|
}
|
|
89
165
|
createSections() {
|
|
90
|
-
this.
|
|
166
|
+
this.cdr.detectChanges();
|
|
167
|
+
this.cardsTotalSize = this.categoryCards.nativeElement.scrollWidth; // approx number of recipes * CARD_WIDTH
|
|
91
168
|
this.recalculateSections();
|
|
92
169
|
this.cdr.detectChanges();
|
|
93
170
|
}
|
|
@@ -95,12 +172,12 @@ export class CatalogCategoryComponent {
|
|
|
95
172
|
// the size of the window in which we put recipes and sliders
|
|
96
173
|
this.categoryBandWidth = this.categoryContent.nativeElement.clientWidth;
|
|
97
174
|
// at start we have only one slider, two in the midle so we may not be able to fit same number of cards
|
|
98
|
-
this.
|
|
175
|
+
this.nbCardsInAnExtremeSection = Math.floor((this.categoryBandWidth - SLIDER_WIDTH) / CARD_WIDTH);
|
|
99
176
|
this.nbCardsInAMiddleSection = Math.floor((this.categoryBandWidth - 2 * SLIDER_WIDTH) / CARD_WIDTH);
|
|
100
|
-
const
|
|
177
|
+
const totalWidthOfCardsInAnExtremeSection = this.nbCardsInAnExtremeSection * CARD_WIDTH;
|
|
101
178
|
const totalWidthOfCardsmiddleSection = this.nbCardsInAMiddleSection * CARD_WIDTH;
|
|
102
|
-
const onlyOneSection = this.categoryBandWidth >= this.
|
|
103
|
-
const twoSections =
|
|
179
|
+
const onlyOneSection = this.categoryBandWidth >= this.cardsTotalSize;
|
|
180
|
+
const twoSections = totalWidthOfCardsInAnExtremeSection * 2 >= this.cardsTotalSize;
|
|
104
181
|
if (onlyOneSection) {
|
|
105
182
|
this.numberOfSections = 1;
|
|
106
183
|
}
|
|
@@ -110,8 +187,8 @@ export class CatalogCategoryComponent {
|
|
|
110
187
|
else {
|
|
111
188
|
// in the case we have at least the starting section the ending section and one or more middle section
|
|
112
189
|
// 2 * cardsInAnExtremSections => nb cards in extrem section
|
|
113
|
-
// this.
|
|
114
|
-
this.numberOfSections = 2 + (this.
|
|
190
|
+
// this.cardsTotalSize - 2 * cardsInAnExtremSections => nb card in middle section
|
|
191
|
+
this.numberOfSections = 2 + (this.cardsTotalSize - 2 * totalWidthOfCardsInAnExtremeSection) / totalWidthOfCardsmiddleSection;
|
|
115
192
|
}
|
|
116
193
|
}
|
|
117
194
|
xTranslation() {
|
|
@@ -120,10 +197,10 @@ export class CatalogCategoryComponent {
|
|
|
120
197
|
}
|
|
121
198
|
else if (this.currentSection === (this.numberOfSections - 1)) {
|
|
122
199
|
// the card contain a space of SPACE_BETWEEN_CARD on the LEFT, we a a space at the end for display purpose
|
|
123
|
-
return this.
|
|
200
|
+
return this.cardsTotalSize - this.categoryBandWidth + SPACE_BETWEEN_CARD;
|
|
124
201
|
}
|
|
125
202
|
// we are in the middle
|
|
126
|
-
const firstexternSectionWidth = this.
|
|
203
|
+
const firstexternSectionWidth = this.nbCardsInAnExtremeSection * CARD_WIDTH;
|
|
127
204
|
const middleSectionWidth = (this.currentSection - 1) * this.nbCardsInAMiddleSection * CARD_WIDTH;
|
|
128
205
|
return firstexternSectionWidth + middleSectionWidth - SLIDER_WIDTH;
|
|
129
206
|
}
|
|
@@ -153,7 +230,7 @@ export class CatalogCategoryComponent {
|
|
|
153
230
|
* to call when component resized
|
|
154
231
|
*/
|
|
155
232
|
updateWidth() {
|
|
156
|
-
const oldNbOfCardsInAnExtremSection = this.
|
|
233
|
+
const oldNbOfCardsInAnExtremSection = this.nbCardsInAnExtremeSection;
|
|
157
234
|
const oldNbCardsInAMiddleSection = this.nbCardsInAMiddleSection;
|
|
158
235
|
const currentSectionWasFirst = this.currentSection === 0;
|
|
159
236
|
const currentSectionWasLast = this.currentSection === this.numberOfSections - 1;
|
|
@@ -167,7 +244,7 @@ export class CatalogCategoryComponent {
|
|
|
167
244
|
else {
|
|
168
245
|
// we want oldCardsForFirstSection + oldCardsBySection * currentSection = cardsForFirstSection + cardsBtSection * new_currentSection
|
|
169
246
|
// our goal is to keep the same card at the start of our visible div
|
|
170
|
-
const firstSectionDelta = oldNbOfCardsInAnExtremSection - this.
|
|
247
|
+
const firstSectionDelta = oldNbOfCardsInAnExtremSection - this.nbCardsInAnExtremeSection;
|
|
171
248
|
this.currentSection = (firstSectionDelta + this.currentSection * oldNbCardsInAMiddleSection) / this.nbCardsInAMiddleSection;
|
|
172
249
|
}
|
|
173
250
|
this.cdr.detectChanges();
|
|
@@ -179,7 +256,7 @@ export class CatalogCategoryComponent {
|
|
|
179
256
|
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
180
257
|
}
|
|
181
258
|
}
|
|
182
|
-
CatalogCategoryComponent.ɵfac = function CatalogCategoryComponent_Factory(t) { return new (t || CatalogCategoryComponent)(i0.ɵɵdirectiveInject(i1.RecipesService), i0.ɵɵdirectiveInject(i1.RecipeLikesService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
259
|
+
CatalogCategoryComponent.ɵfac = function CatalogCategoryComponent_Factory(t) { return new (t || CatalogCategoryComponent)(i0.ɵɵdirectiveInject(i1.RecipesService), i0.ɵɵdirectiveInject(i1.RecipeLikesService), i0.ɵɵdirectiveInject(i1.ArticlesService), i0.ɵɵdirectiveInject(i1.ContextService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
183
260
|
CatalogCategoryComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CatalogCategoryComponent, selectors: [["ng-miam-catalog-category"]], viewQuery: function CatalogCategoryComponent_Query(rf, ctx) { if (rf & 1) {
|
|
184
261
|
i0.ɵɵviewQuery(_c0, true);
|
|
185
262
|
i0.ɵɵviewQuery(_c1, true);
|
|
@@ -189,46 +266,11 @@ CatalogCategoryComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CatalogCategoryC
|
|
|
189
266
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.categoryContent = _t.first);
|
|
190
267
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.categoryCards = _t.first);
|
|
191
268
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.recipeCards = _t);
|
|
192
|
-
} }, inputs: { filters: "filters", title: "title" }, outputs: { displayList: "displayList" }, features: [i0.ɵɵNgOnChangesFeature], decls:
|
|
193
|
-
i0.ɵɵ
|
|
194
|
-
i0.ɵɵelementStart(1, "div", 1);
|
|
195
|
-
i0.ɵɵelementStart(2, "div", 2);
|
|
196
|
-
i0.ɵɵlistener("click", function CatalogCategoryComponent_Template_div_click_2_listener() { return ctx.displayListMode(); });
|
|
197
|
-
i0.ɵɵtext(3);
|
|
198
|
-
i0.ɵɵelementEnd();
|
|
199
|
-
i0.ɵɵelementStart(4, "div", 3);
|
|
200
|
-
i0.ɵɵlistener("click", function CatalogCategoryComponent_Template_div_click_4_listener() { return ctx.displayListMode(); });
|
|
201
|
-
i0.ɵɵtext(5, "Voir tout");
|
|
202
|
-
i0.ɵɵelementEnd();
|
|
203
|
-
i0.ɵɵelementStart(6, "ng-miam-icon", 4);
|
|
204
|
-
i0.ɵɵlistener("click", function CatalogCategoryComponent_Template_ng_miam_icon_click_6_listener() { return ctx.displayListMode(); });
|
|
205
|
-
i0.ɵɵelementEnd();
|
|
206
|
-
i0.ɵɵelementEnd();
|
|
207
|
-
i0.ɵɵelementStart(7, "div", 5, 6);
|
|
208
|
-
i0.ɵɵelementStart(9, "div", 7, 8);
|
|
209
|
-
i0.ɵɵtemplate(11, CatalogCategoryComponent_div_11_Template, 4, 0, "div", 9);
|
|
210
|
-
i0.ɵɵtemplate(12, CatalogCategoryComponent_ng_miam_catalog_recipe_card_12_Template, 1, 1, "ng-miam-catalog-recipe-card", 10);
|
|
211
|
-
i0.ɵɵelementEnd();
|
|
212
|
-
i0.ɵɵtemplate(13, CatalogCategoryComponent_div_13_Template, 2, 1, "div", 11);
|
|
213
|
-
i0.ɵɵtemplate(14, CatalogCategoryComponent_div_14_Template, 2, 1, "div", 12);
|
|
214
|
-
i0.ɵɵelementEnd();
|
|
215
|
-
i0.ɵɵelementEnd();
|
|
269
|
+
} }, inputs: { filters: "filters", title: "title" }, outputs: { displayList: "displayList" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [["class", "miam-catalog-category", 4, "ngIf"], [1, "miam-catalog-category"], [1, "miam-catalog-category__header"], [1, "miam-catalog-category__title", 3, "click"], [1, "miam-catalog-category__link", 3, "click"], ["height", "20", "width", "20", "primaryColor", "var(--m-color-grey-text)", 3, "iconName", "click"], [1, "miam-catalog-category__content"], ["categoryContent", ""], [1, "miam-catalog-category__cards", 3, "ngStyle"], ["categoryCards", ""], ["class", "miam-catalog-category__loader", 4, "ngIf"], ["class", "miam-catalog-category__card", 3, "recipe", 4, "ngFor", "ngForOf"], ["class", "miam-catalog-category__card", 3, "article", 4, "ngFor", "ngForOf"], ["class", "miam-catalog-category__slider__left", 3, "click", 4, "ngIf"], ["class", "miam-catalog-category__slider__right", 3, "click", 4, "ngIf"], [1, "miam-catalog-category__loader"], [1, "miam-catalog-category__card", 3, "recipe"], [1, "miam-catalog-category__card", 3, "article"], [1, "miam-catalog-category__slider__left", 3, "click"], ["height", "56", "width", "56", "primaryColor", "var(--m-color-white)", 3, "iconName"], [1, "miam-catalog-category__slider__right", 3, "click"]], template: function CatalogCategoryComponent_Template(rf, ctx) { if (rf & 1) {
|
|
270
|
+
i0.ɵɵtemplate(0, CatalogCategoryComponent_div_0_Template, 16, 10, "div", 0);
|
|
216
271
|
} if (rf & 2) {
|
|
217
|
-
i0.ɵɵ
|
|
218
|
-
|
|
219
|
-
i0.ɵɵadvance(3);
|
|
220
|
-
i0.ɵɵproperty("iconName", ctx.icon.ChevronDown);
|
|
221
|
-
i0.ɵɵadvance(3);
|
|
222
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(7, _c2, "translateX(-" + ctx.xTranslation() + "px)"));
|
|
223
|
-
i0.ɵɵadvance(2);
|
|
224
|
-
i0.ɵɵproperty("ngIf", ctx.isLoading);
|
|
225
|
-
i0.ɵɵadvance(1);
|
|
226
|
-
i0.ɵɵproperty("ngForOf", ctx.recipes);
|
|
227
|
-
i0.ɵɵadvance(1);
|
|
228
|
-
i0.ɵɵproperty("ngIf", ctx.numberOfSections > 1 && ctx.currentSection != 0);
|
|
229
|
-
i0.ɵɵadvance(1);
|
|
230
|
-
i0.ɵɵproperty("ngIf", ctx.numberOfSections > 1 && ctx.currentSection != ctx.numberOfSections - 1);
|
|
231
|
-
} }, directives: [i2.IconComponent, i3.NgStyle, i3.NgIf, i3.NgForOf, i4.LoaderComponent, i5.CatalogRecipeCardComponent], styles: [".miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__left,.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__right,.miam-catalog-category__slider{-webkit-backdrop-filter:blur(12px);align-items:center;backdrop-filter:blur(12px);background-color:rgba(32,32,32,.3);cursor:pointer;display:flex;height:calc(100% - 28px);justify-content:center;margin:12px 0 16px;position:absolute;top:0;width:48px}@media (max-width:1022px){.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__left,.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__right,.miam-catalog-category__slider{display:none}}.miam-catalog-category{display:flex;flex-direction:column}.miam-catalog-category .miam-catalog-category__header{align-items:flex-end;display:flex;flex-direction:row}.miam-catalog-category .miam-catalog-category__header .miam-catalog-category__title{-webkit-tap-highlight-color:transparent;color:var(--m-color-primary);cursor:pointer;font-size:24px;font-weight:700;margin-left:16px}@media (min-width:1022px){.miam-catalog-category .miam-catalog-category__header .miam-catalog-category__title:hover{text-decoration:underline}}.miam-catalog-category .miam-catalog-category__header .miam-catalog-category__link{-webkit-tap-highlight-color:transparent;color:var(--m-color-grey-text);cursor:pointer;font-size:14px;line-height:28px;margin-left:16px}@media (min-width:1022px){.miam-catalog-category .miam-catalog-category__header .miam-catalog-category__link:hover{text-decoration:underline}}.miam-catalog-category .miam-catalog-category__header .icon-container{cursor:pointer;margin-bottom:3px;transform:rotate(-90deg)}.miam-catalog-category .miam-catalog-category__content{height:332px;overflow:hidden;position:relative;width:100%}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__cards{display:flex;flex-direction:row;transition-duration:.5s}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__cards .miam-catalog-category__loader{color:var(--m-color-grey-text);font-size:20px;font-weight:700;text-align:center;width:100%}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__cards .miam-catalog-category__loader .loader{height:80px;margin-bottom:16px;margin-left:calc(50% - 40px);margin-top:80px;width:80px}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__cards .miam-catalog-category__card{margin:12px 0 16px 16px}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__right{border-radius:8px 0 0 8px;right:0}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__right .icon-container{transform:rotate(-90deg)}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__left{border-radius:0 8px 8px 0;left:0}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__left .icon-container{transform:rotate(90deg)}@media (max-width:1022px){.miam-catalog-category .miam-catalog-category__header .miam-catalog-category__title{max-width:70%}.miam-catalog-category .miam-catalog-category__content{overflow:scroll}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__cards .miam-catalog-category__card{display:flex}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__cards .miam-catalog-category__card:last-child:after{content:\"\";width:16px}}"], encapsulation: 2, changeDetection: 0 });
|
|
272
|
+
i0.ɵɵproperty("ngIf", !ctx.hide);
|
|
273
|
+
} }, directives: [i2.NgIf, i3.IconComponent, i2.NgStyle, i2.NgForOf, i4.LoaderComponent, i5.CatalogRecipeCardComponent, i6.CatalogArticleCardComponent], styles: [".miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__left,.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__right,.miam-catalog-category__slider{-webkit-backdrop-filter:blur(12px);align-items:center;backdrop-filter:blur(12px);background-color:rgba(32,32,32,.3);cursor:pointer;display:flex;height:calc(100% - 28px);justify-content:center;margin:12px 0 16px;position:absolute;top:0;width:48px}@media (max-width:1022px){.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__left,.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__right,.miam-catalog-category__slider{display:none}}.miam-catalog-category{display:flex;flex-direction:column}.miam-catalog-category .miam-catalog-category__header{align-items:flex-end;display:flex;flex-direction:row}.miam-catalog-category .miam-catalog-category__header .miam-catalog-category__title{-webkit-tap-highlight-color:transparent;color:var(--m-color-primary);cursor:pointer;font-size:24px;font-weight:700;margin-left:16px}@media (min-width:1022px){.miam-catalog-category .miam-catalog-category__header .miam-catalog-category__title:hover{text-decoration:underline}}.miam-catalog-category .miam-catalog-category__header .miam-catalog-category__link{-webkit-tap-highlight-color:transparent;color:var(--m-color-grey-text);cursor:pointer;font-size:14px;line-height:28px;margin-left:16px}@media (min-width:1022px){.miam-catalog-category .miam-catalog-category__header .miam-catalog-category__link:hover{text-decoration:underline}}.miam-catalog-category .miam-catalog-category__header .icon-container{cursor:pointer;margin-bottom:3px;transform:rotate(-90deg)}.miam-catalog-category .miam-catalog-category__content{height:332px;overflow:hidden;position:relative;width:100%}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__cards{display:flex;flex-direction:row;transition-duration:.5s}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__cards .miam-catalog-category__loader{color:var(--m-color-grey-text);font-size:20px;font-weight:700;text-align:center;width:100%}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__cards .miam-catalog-category__loader .loader{height:80px;margin-bottom:16px;margin-left:calc(50% - 40px);margin-top:80px;width:80px}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__cards .miam-catalog-category__card{margin:12px 0 16px 16px}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__right{border-radius:8px 0 0 8px;right:0}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__right .icon-container{transform:rotate(-90deg)}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__left{border-radius:0 8px 8px 0;left:0}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__slider__left .icon-container{transform:rotate(90deg)}@media (max-width:1022px){.miam-catalog-category .miam-catalog-category__header .miam-catalog-category__title{max-width:70%}.miam-catalog-category .miam-catalog-category__content{overflow:scroll}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__cards .miam-catalog-category__card{display:flex}.miam-catalog-category .miam-catalog-category__content .miam-catalog-category__cards .miam-catalog-category__card:last-child:after{content:\"\";width:16px}}"], encapsulation: 2, changeDetection: 0 });
|
|
232
274
|
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(CatalogCategoryComponent, [{
|
|
233
275
|
type: Component,
|
|
234
276
|
args: [{
|
|
@@ -238,7 +280,7 @@ CatalogCategoryComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CatalogCategoryC
|
|
|
238
280
|
encapsulation: ViewEncapsulation.None,
|
|
239
281
|
changeDetection: ChangeDetectionStrategy.OnPush
|
|
240
282
|
}]
|
|
241
|
-
}], function () { return [{ type: i1.RecipesService }, { type: i1.RecipeLikesService }, { type: i0.ChangeDetectorRef }]; }, { filters: [{
|
|
283
|
+
}], function () { return [{ type: i1.RecipesService }, { type: i1.RecipeLikesService }, { type: i1.ArticlesService }, { type: i1.ContextService }, { type: i0.ChangeDetectorRef }]; }, { filters: [{
|
|
242
284
|
type: Input
|
|
243
285
|
}], title: [{
|
|
244
286
|
type: Input
|
|
@@ -254,4 +296,4 @@ CatalogCategoryComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CatalogCategoryC
|
|
|
254
296
|
type: ViewChildren,
|
|
255
297
|
args: [CatalogRecipeCardComponent]
|
|
256
298
|
}] }); })();
|
|
257
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1jYXRlZ29yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2J1aWxkcy9taWFtL25nLW1pYW0tc2RrL3Byb2plY3RzL25nLW1pYW0vc3JjLyIsInNvdXJjZXMiOlsibGliL193ZWItY29tcG9uZW50cy9jYXRhbG9nLWNhdGVnb3J5L2NhdGFsb2ctY2F0ZWdvcnkuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9jYXRhbG9nLWNhdGVnb3J5L2NhdGFsb2ctY2F0ZWdvcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBd0IsTUFBTSxFQUFFLFNBQVMsRUFDdEksU0FBUyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOzs7Ozs7Ozs7O0lDSzVGLCtCQUNFO0lBQUEsaUNBQWlDO0lBQ2pDLDJCQUNFO0lBQUEsNENBQ0Y7SUFBQSxpQkFBTTtJQUNSLGlCQUFNOzs7SUFDTixrREFBaUo7OztJQUFoRCxrQ0FBaUI7Ozs7SUFFcEgsK0JBQ0U7SUFEdUQseUxBQXFCO0lBQzVFLG1DQUF1SDtJQUN6SCxpQkFBTTs7O0lBRHNFLGVBQTZCO0lBQTdCLGtEQUE2Qjs7OztJQUV6RywrQkFDRTtJQUQ0RSwyTEFBc0I7SUFDbEcsbUNBQXVIO0lBQ3pILGlCQUFNOzs7SUFEc0UsZUFBNkI7SUFBN0Isa0RBQTZCOzs7QURmN0cseUZBQXlGO0FBQ3pGLHFGQUFxRjtBQUNyRixNQUFNLFVBQVUsR0FBRyxHQUFH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SUFBQztRQUV2RyxpQkFBZTtRQUNqQixpQkFBTTtRQUNOLGlDQUNFO1FBQUEsaUNBRUU7UUFBQSwyRUFDRTtRQUtGLDRIQUFtSDtRQUNySCxpQkFBTTtRQUNOLDRFQUNFO1FBRUYsNEVBQ0U7UUFFSixpQkFBTTtRQUNSLGlCQUFNOztRQXhCb0UsZUFBUztRQUFULCtCQUFTO1FBRy9FLGVBQTZCO1FBQTdCLCtDQUE2QjtRQUszQixlQUFrRTtRQUFsRSxpR0FBa0U7UUFDN0QsZUFBaUI7UUFBakIsb0NBQWlCO1FBTTRDLGVBQThCO1FBQTlCLHFDQUE4QjtRQUU3RixlQUFtRDtRQUFuRCwwRUFBbUQ7UUFHbkQsZUFBd0U7UUFBeEUsaUdBQXdFOztrREREcEUsd0JBQXdCO2NBUHBDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsMEJBQTBCO2dCQUNwQyxXQUFXLEVBQUUsbUNBQW1DO2dCQUNoRCxTQUFTLEVBQUUsQ0FBQyxtQ0FBbUMsQ0FBQztnQkFDaEQsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2hEO2tJQUVVLE9BQU87a0JBQWYsS0FBSztZQUNHLEtBQUs7a0JBQWIsS0FBSztZQUNJLFdBQVc7a0JBQXBCLE1BQU07WUFFdUIsZUFBZTtrQkFBNUMsU0FBUzttQkFBQyxpQkFBaUI7WUFDQSxhQUFhO2tCQUF4QyxTQUFTO21CQUFDLGVBQWU7WUFDaUIsV0FBVztrQkFBckQsWUFBWTttQkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE91dHB1dCwgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUmVjaXBlIH0gZnJvbSAnLi4vLi4vX21vZGVscyc7XG5pbXBvcnQgeyBSZWNpcGVMaWtlc1NlcnZpY2UsIFJlY2lwZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuLi8uLi9fdHlwZXMvaWNvbi5lbnVtJztcbmltcG9ydCB7IENhdGFsb2dSZWNpcGVDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vY2F0YWxvZy1yZWNpcGUtY2FyZC9jYXRhbG9nLXJlY2lwZS1jYXJkLmNvbXBvbmVudCc7XG5cbi8vIG1pYW0tY2F0YWxvZy1yZWNpcGUtY2FyZCA6IHdpZHRoID0gMzMwcHggKyBtaWFtLWNhdGFsb2ctY2F0ZWdvcnlfX2NhcmQgOiBtYXJnaW4gOiAxNnB4XG4vLyB3ZSBpbmNsdWRlIGEgbWFyZ2luIGluIHRoZSBjYXJkIHRvIGdldCBhIHNwYWNlIHRoaXMgaXMgdGhlIGNhcmQgd2lkdGggKyB0aGUgbWFyZ2luXG5jb25zdCBDQVJEX1dJRFRIID0gMzQ2O1xuY29uc3QgU1BBQ0VfQkVUV0VFTl9DQVJEID0gMTY7XG5jb25zdCBTTElERVJfV0lEVEggPSA0ODtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctbWlhbS1jYXRhbG9nLWNhdGVnb3J5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhdGFsb2ctY2F0ZWdvcnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXRhbG9nLWNhdGVnb3J5LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIENhdGFsb2dDYXRlZ29yeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgZmlsdGVyczogYW55OyAvLyBSZW1vdGVmaWx0ZXJzIGZvciB0aGUgcmVxdWVzdCAoZXg6IHsgY29zdDogXCIzLGVxXCIsIHNlYXJjaDpcInBvbW1lcyBkZSB0ZXJyZVwifSlcbiAgQElucHV0KCkgdGl0bGUgPSAnJztcbiAgQE91dHB1dCgpIGRpc3BsYXlMaXN0OiBFdmVudEVtaXR0ZXI8YW55PjtcblxuICBAVmlld0NoaWxkKCdjYXRlZ29yeUNvbnRlbnQnKSBjYXRlZ29yeUNvbnRlbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2NhdGVnb3J5Q2FyZHMnKSBjYXRlZ29yeUNhcmRzOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkcmVuKENhdGFsb2dSZWNpcGVDYXJkQ29tcG9uZW50KSAgcmVjaXBlQ2FyZHMhOiBRdWVyeUxpc3Q8Q2F0YWxvZ1JlY2lwZUNhcmRDb21wb25lbnQ+O1xuXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdO1xuICByZWNpcGVzOiBSZWNpcGVbXTtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBpY29uID0gSWNvbjtcblxuICByZWNpcGVDYXJkc1RvdGFsU2l6ZSA9IDA7IC8vIG5hdGl2ZSBzaXplIG9mIHRoZSBjYXJkIGNvbnRhaW4gaW5jbHVkaW5nIG92ZXJmbG93XG4gIG51bWJlck9mU2VjdGlvbnMgPSAxOyAgLy8gbnVtYmVyIG9mIGNhcmQgZ3JvdXAgIHRoYXQgZmVldCBpbiByZWNpcGVDYXJkc1RvdGFsU2l6ZVxuICBjdXJyZW50U2VjdGlvbiA9IDA7IC8vIGluZGV4IG9mIHRoZSBzZWN0aW9uIHNob3cgb24gc2NyZWVuXG4gIG5iQ2FyZHNJbkFuRXh0cmVtU2VjdGlvbnMgPSAwOyAvLyBuYiBvZiBjYXJkIHRoYXQgY2FuIGZpdCBpbiBzY3JlZW4gd2l0aCBvbmUgc2Nyb2xsIGJ1dHRvblxuICBuYkNhcmRzSW5BTWlkZGxlU2VjdGlvbiA9IDA7IC8vIG5iIG9mIGNhcmQgdGhhdCBjYW4gZml0IGluIHNjcmVlbiB3aXRoIHR3byBzY3JvbGwgYnV0dG9uc1xuICBjYXRlZ29yeUJhbmRXaWR0aCA9IDA7IC8vIG5hdGl2ZSBzaXplIG9mIHZpc2libGUgY2FyZCBjb250YWluZXIgc2Nyb2xsIGJ1dHRvblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVjaXBlc1NlcnZpY2U6IFJlY2lwZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVjaXBlTGlrZXNTZXJ2aWNlOiBSZWNpcGVMaWtlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5kaXNwbGF5TGlzdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICB0aGlzLnJlY2lwZXMgPSBbXTtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5maWx0ZXJzKSB7XG4gICAgICB0aGlzLmxvYWRSZWNpcGVzKCk7XG4gICAgfVxuICB9XG5cbiAgbG9hZFJlY2lwZXMoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5yZWNpcGVzU2VydmljZS5nZXRSYW5kb20oeyBzaXplOiAyMCwgbnVtYmVyOiAxIH0sIHRoaXMuZmlsdGVycylcbiAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IFJlY2lwZVtdKSA9PiB7XG4gICAgICB0aGlzLnJlY2lwZUxpa2VzU2VydmljZS5hZGRMaWtlc1RvUmVjaXBlcyhyZXN1bHQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVjaXBlcyA9IHJlc3VsdDtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLmNyZWF0ZVNlY3Rpb25zKCk7XG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBjcmVhdGVTZWN0aW9ucygpIHtcbiAgICB0aGlzLnJlY2lwZUNhcmRzVG90YWxTaXplID0gdGhpcy5jYXRlZ29yeUNhcmRzLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsV2lkdGg7IC8vIGFwcHJveCBudW1iZXIgb2YgcmVjaXBlcyAqIENBUkRfV0lEVEhcbiAgICB0aGlzLnJlY2FsY3VsYXRlU2VjdGlvbnMoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICByZWNhbGN1bGF0ZVNlY3Rpb25zKCl7XG4gICAgLy8gdGhlIHNpemUgb2YgdGhlIHdpbmRvdyBpbiB3aGljaCB3ZSBwdXQgcmVjaXBlcyBhbmQgc2xpZGVyc1xuICAgIHRoaXMuY2F0ZWdvcnlCYW5kV2lkdGggPSB0aGlzLmNhdGVnb3J5Q29udGVudC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgIC8vIGF0IHN0YXJ0IHdlIGhhdmUgb25seSBvbmUgc2xpZGVyLCB0d28gaW4gdGhlIG1pZGxlIHNvIHdlIG1heSBub3QgYmUgYWJsZSB0byBmaXQgc2FtZSBudW1iZXIgb2YgY2FyZHNcbiAgICB0aGlzLm5iQ2FyZHNJbkFuRXh0cmVtU2VjdGlvbnMgPSAgTWF0aC5mbG9vcigodGhpcy5jYXRlZ29yeUJhbmRXaWR0aCAtIFNMSURFUl9XSURUSCkgLyBDQVJEX1dJRFRIKTtcbiAgICB0aGlzLm5iQ2FyZHNJbkFNaWRkbGVTZWN0aW9uID0gTWF0aC5mbG9vcigodGhpcy5jYXRlZ29yeUJhbmRXaWR0aCAtIDIgKiBTTElERVJfV0lEVEgpIC8gQ0FSRF9XSURUSCk7XG5cbiAgICBjb25zdCB0b3RhbFdpZHRoT2ZDYXJkc0luQW5FeHRyZW1TZWN0aW9uID0gdGhpcy5uYkNhcmRzSW5BbkV4dHJlbVNlY3Rpb25zICogQ0FSRF9XSURUSDtcbiAgICBjb25zdCB0b3RhbFdpZHRoT2ZDYXJkc21pZGRsZVNlY3Rpb24gPSB0aGlzLm5iQ2FyZHNJbkFNaWRkbGVTZWN0aW9uICogQ0FSRF9XSURUSDtcblxuICAgIGNvbnN0IG9ubHlPbmVTZWN0aW9uID0gdGhpcy5jYXRlZ29yeUJhbmRXaWR0aCA+PSB0aGlzLnJlY2lwZUNhcmRzVG90YWxTaXplO1xuICAgIGNvbnN0IHR3b1NlY3Rpb25zID0gdG90YWxXaWR0aE9mQ2FyZHNJbkFuRXh0cmVtU2VjdGlvbiAqIDIgPj0gdGhpcy5yZWNpcGVDYXJkc1RvdGFsU2l6ZTtcbiAgICBpZiAob25seU9uZVNlY3Rpb24pIHtcbiAgICAgIHRoaXMubnVtYmVyT2ZTZWN0aW9ucyA9IDE7XG4gICAgfSBlbHNlIGlmICh0d29TZWN0aW9ucykge1xuICAgICAgdGhpcy5udW1iZXJPZlNlY3Rpb25zID0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaW4gdGhlIGNhc2Ugd2UgaGF2ZSBhdCBsZWFzdCB0aGUgc3RhcnRpbmcgc2VjdGlvbiB0aGUgZW5kaW5nIHNlY3Rpb24gYW5kIG9uZSBvciBtb3JlIG1pZGRsZSBzZWN0aW9uXG4gICAgICAvLyAgMiAqIGNhcmRzSW5BbkV4dHJlbVNlY3Rpb25zID0+IG5iIGNhcmRzIGluIGV4dHJlbSBzZWN0aW9uXG4gICAgICAvLyB0aGlzLnJlY2lwZUNhcmRzVG90YWxTaXplIC0gMiAqIGNhcmRzSW5BbkV4dHJlbVNlY3Rpb25zID0+IG5iIGNhcmQgaW4gbWlkZGxlIHNlY3Rpb25cbiAgICAgIHRoaXMubnVtYmVyT2ZTZWN0aW9ucyA9IDIgKyAodGhpcy5yZWNpcGVDYXJkc1RvdGFsU2l6ZSAtIDIgKiB0b3RhbFdpZHRoT2ZDYXJkc0luQW5FeHRyZW1TZWN0aW9uKSAvIHRvdGFsV2lkdGhPZkNhcmRzbWlkZGxlU2VjdGlvbjtcbiAgICB9XG4gIH1cblxuICB4VHJhbnNsYXRpb24oKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFNlY3Rpb24gPT09IDApe1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmN1cnJlbnRTZWN0aW9uID09PSAodGhpcy5udW1iZXJPZlNlY3Rpb25zIC0gMSkpe1xuICAgICAgLy8gdGhlIGNhcmQgY29udGFpbiBhIHNwYWNlIG9mIFNQQUNFX0JFVFdFRU5fQ0FSRCBvbiB0aGUgTEVGVCwgd2UgYSBhIHNwYWNlIGF0IHRoZSBlbmQgZm9yIGRpc3BsYXkgcHVycG9zZVxuICAgICAgcmV0dXJuIHRoaXMucmVjaXBlQ2FyZHNUb3RhbFNpemUgLSB0aGlzLmNhdGVnb3J5QmFuZFdpZHRoICsgU1BBQ0VfQkVUV0VFTl9DQVJEO1xuICAgIH1cbiAgICAvLyB3ZSBhcmUgaW4gdGhlIG1pZGRsZVxuICAgIGNvbnN0IGZpcnN0ZXh0ZXJuU2VjdGlvbldpZHRoID0gdGhpcy5uYkNhcmRzSW5BbkV4dHJlbVNlY3Rpb25zICogQ0FSRF9XSURUSDtcbiAgICBjb25zdCBtaWRkbGVTZWN0aW9uV2lkdGggPSAodGhpcy5jdXJyZW50U2VjdGlvbiAtIDEpICogdGhpcy5uYkNhcmRzSW5BTWlkZGxlU2VjdGlvbiAqIENBUkRfV0lEVEg7XG4gICAgcmV0dXJuIGZpcnN0ZXh0ZXJuU2VjdGlvbldpZHRoICsgbWlkZGxlU2VjdGlvbldpZHRoIC0gU0xJREVSX1dJRFRIIDtcbiAgfVxuXG4gIHNsaWRlTGVmdCgpIHtcbiAgICAvLyBjdXJyZW50IHNlY3Rpb24gY2FuIGJlIGEgZmxvYXQgaWYgc2NyZWVuIGlzIHJlc2l6ZWRcbiAgICB0aGlzLmN1cnJlbnRTZWN0aW9uID0gTWF0aC5tYXgodGhpcy5jdXJyZW50U2VjdGlvbiAtIDEsIDApO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLnNlbmRFdmVudHMoKTtcbiAgfVxuXG4gIHNsaWRlUmlnaHQoKSB7XG4gICAgLy8gY3VycmVudCBzZWN0aW9uIGNhbiBiZSBhIGZsb2F0IGlmIHNjcmVlbiBpcyByZXNpemVkXG4gICAgdGhpcy5jdXJyZW50U2VjdGlvbiA9IE1hdGgubWluKHRoaXMuY3VycmVudFNlY3Rpb24gKyAxLCB0aGlzLm51bWJlck9mU2VjdGlvbnMgLSAxKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5zZW5kRXZlbnRzKCk7XG4gIH1cblxuICBzZW5kRXZlbnRzKCkge1xuICAgIC8vIHNldCBhIGRlYm91bmNlIHRvIGxldCB0aGUgdmlldyB1cGRhdGUgYW5kIHJlY2lwZSB0byBiZSBpbiB2aWV3cG9ydFxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gdGhlIHNlbmQgc2hvdyBldmVudCBjaGVjayBpZiBjYXJkIGlzIGluIHZpZXdcbiAgICAgIHRoaXMucmVjaXBlQ2FyZHMuZm9yRWFjaCggcmVjaXBlQ2FyZCA9PiB7XG4gICAgICAgIHJlY2lwZUNhcmQuc2VuZFNob3dFdmVudCgnc2hvdy1yZWNpcGUtY2FyZC1jYXRhbG9nJyk7XG4gICAgICAgIHJlY2lwZUNhcmQuZGlzcGxheVByaWNlKCk7XG4gICAgICB9KTtcbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB0byBjYWxsIHdoZW4gY29tcG9uZW50IHJlc2l6ZWRcbiAgICovXG4gIHVwZGF0ZVdpZHRoKCl7XG4gICAgY29uc3Qgb2xkTmJPZkNhcmRzSW5BbkV4dHJlbVNlY3Rpb24gPSB0aGlzLm5iQ2FyZHNJbkFuRXh0cmVtU2VjdGlvbnM7XG4gICAgY29uc3Qgb2xkTmJDYXJkc0luQU1pZGRsZVNlY3Rpb24gPSB0aGlzLm5iQ2FyZHNJbkFNaWRkbGVTZWN0aW9uO1xuICAgIGNvbnN0IGN1cnJlbnRTZWN0aW9uV2FzRmlyc3QgPSB0aGlzLmN1cnJlbnRTZWN0aW9uID09PSAwO1xuICAgIGNvbnN0IGN1cnJlbnRTZWN0aW9uV2FzTGFzdCA9IHRoaXMuY3VycmVudFNlY3Rpb24gPT09IHRoaXMubnVtYmVyT2ZTZWN0aW9ucyAtIDE7XG4gICAgdGhpcy5yZWNhbGN1bGF0ZVNlY3Rpb25zKCk7XG4gICAgaWYgKGN1cnJlbnRTZWN0aW9uV2FzRmlyc3QpIHtcbiAgICAgIHRoaXMuY3VycmVudFNlY3Rpb24gPSAwO1xuICAgIH0gZWxzZSBpZiAoY3VycmVudFNlY3Rpb25XYXNMYXN0KSB7XG4gICAgICB0aGlzLmN1cnJlbnRTZWN0aW9uID0gdGhpcy5udW1iZXJPZlNlY3Rpb25zIC0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gd2Ugd2FudCBvbGRDYXJkc0ZvckZpcnN0U2VjdGlvbiArIG9sZENhcmRzQnlTZWN0aW9uICogY3VycmVudFNlY3Rpb24gPSBjYXJkc0ZvckZpcnN0U2VjdGlvbiArIGNhcmRzQnRTZWN0aW9uICogbmV3X2N1cnJlbnRTZWN0aW9uXG4gICAgICAvLyBvdXIgZ29hbCBpcyB0byBrZWVwIHRoZSBzYW1lIGNhcmQgYXQgdGhlIHN0YXJ0IG9mIG91ciB2aXNpYmxlIGRpdlxuICAgICAgY29uc3QgZmlyc3RTZWN0aW9uRGVsdGEgPSBvbGROYk9mQ2FyZHNJbkFuRXh0cmVtU2VjdGlvbiAtIHRoaXMubmJDYXJkc0luQW5FeHRyZW1TZWN0aW9ucztcbiAgICAgIHRoaXMuY3VycmVudFNlY3Rpb24gPSAoZmlyc3RTZWN0aW9uRGVsdGEgKyB0aGlzLmN1cnJlbnRTZWN0aW9uICogb2xkTmJDYXJkc0luQU1pZGRsZVNlY3Rpb24pIC8gdGhpcy5uYkNhcmRzSW5BTWlkZGxlU2VjdGlvbjtcbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZGlzcGxheUxpc3RNb2RlKCkge1xuICAgIHRoaXMuZGlzcGxheUxpc3QuZW1pdCh7dGl0bGU6IHRoaXMudGl0bGUsIGZpbHRlcnM6IHRoaXMuZmlsdGVyc30pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1jYXRlZ29yeVwiPlxuICA8ZGl2IGNsYXNzPVwibWlhbS1jYXRhbG9nLWNhdGVnb3J5X19oZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1jYXRhbG9nLWNhdGVnb3J5X190aXRsZVwiIChjbGljayk9XCJkaXNwbGF5TGlzdE1vZGUoKVwiPnt7dGl0bGV9fTwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLWNhdGFsb2ctY2F0ZWdvcnlfX2xpbmtcIiAoY2xpY2spPVwiZGlzcGxheUxpc3RNb2RlKClcIj5Wb2lyIHRvdXQ8L2Rpdj5cbiAgICA8bmctbWlhbS1pY29uIGhlaWdodD0nMjAnIHdpZHRoPScyMCcgcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci1ncmV5LXRleHQpXCIoY2xpY2spPVwiZGlzcGxheUxpc3RNb2RlKClcIlxuICAgIFtpY29uTmFtZV09XCJpY29uLkNoZXZyb25Eb3duXCI+XG4gICAgPC9uZy1taWFtLWljb24+XG4gIDwvZGl2PlxuICA8ZGl2ICNjYXRlZ29yeUNvbnRlbnQgY2xhc3M9XCJtaWFtLWNhdGFsb2ctY2F0ZWdvcnlfX2NvbnRlbnRcIj5cbiAgICA8ZGl2ICNjYXRlZ29yeUNhcmRzIGNsYXNzPVwibWlhbS1jYXRhbG9nLWNhdGVnb3J5X19jYXJkc1wiIFxuICAgICAgW25nU3R5bGVdPVwieyd0cmFuc2Zvcm0nOiAndHJhbnNsYXRlWCgtJyArIHhUcmFuc2xhdGlvbigpICsgJ3B4KSd9XCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiaXNMb2FkaW5nXCIgY2xhc3M9XCJtaWFtLWNhdGFsb2ctY2F0ZWdvcnlfX2xvYWRlclwiPlxuICAgICAgICA8bmctbWlhbS1sb2FkZXI+PC9uZy1taWFtLWxvYWRlcj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICBDaGFyZ2VtZW50IGRlcyByZWNldHRlcy4uLlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLW1pYW0tY2F0YWxvZy1yZWNpcGUtY2FyZCAgY2xhc3M9XCJtaWFtLWNhdGFsb2ctY2F0ZWdvcnlfX2NhcmRcIiAqbmdGb3I9XCJsZXQgcmVjaXBlIG9mIHJlY2lwZXNcIiBbcmVjaXBlXT0ncmVjaXBlJz48L25nLW1pYW0tY2F0YWxvZy1yZWNpcGUtY2FyZD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwibnVtYmVyT2ZTZWN0aW9ucyA+IDEgJiYgY3VycmVudFNlY3Rpb24gIT0gMFwiIChjbGljayk9XCJzbGlkZUxlZnQoKVwiIGNsYXNzPVwibWlhbS1jYXRhbG9nLWNhdGVnb3J5X19zbGlkZXJfX2xlZnRcIj5cbiAgICAgIDxuZy1taWFtLWljb24gaGVpZ2h0PSc1Nicgd2lkdGg9JzU2JyBwcmltYXJ5Q29sb3I9XCJ2YXIoLS1tLWNvbG9yLXdoaXRlKVwiICBbaWNvbk5hbWVdPVwiaWNvbi5DaGV2cm9uRG93blwiPjwvbmctbWlhbS1pY29uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJudW1iZXJPZlNlY3Rpb25zID4gMSAmJiAoY3VycmVudFNlY3Rpb24gIT0gbnVtYmVyT2ZTZWN0aW9ucyAtIDEpXCIgKGNsaWNrKT1cInNsaWRlUmlnaHQoKVwiIGNsYXNzPVwibWlhbS1jYXRhbG9nLWNhdGVnb3J5X19zbGlkZXJfX3JpZ2h0XCI+XG4gICAgICA8bmctbWlhbS1pY29uIGhlaWdodD0nNTYnIHdpZHRoPSc1NicgcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci13aGl0ZSlcIiAgW2ljb25OYW1lXT1cImljb24uQ2hldnJvbkRvd25cIj48L25nLW1pYW0taWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
299
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1jYXRlZ29yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2J1aWxkcy9taWFtL25nLW1pYW0tc2RrL3Byb2plY3RzL25nLW1pYW0vc3JjLyIsInNvdXJjZXMiOlsibGliL193ZWItY29tcG9uZW50cy9jYXRhbG9nLWNhdGVnb3J5L2NhdGFsb2ctY2F0ZWdvcnkuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9jYXRhbG9nLWNhdGVnb3J5L2NhdGFsb2ctY2F0ZWdvcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBd0IsTUFBTSxFQUFFLFNBQVMsRUFDdEksU0FBUyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwRSxPQUFPLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEcsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOzs7Ozs7Ozs7OztJQ0U1RiwrQkFDRTtJQUFBLGlDQUFpQztJQUNqQywyQkFDRTtJQUFBLGtEQUNGO0lBQUEsaUJBQU07SUFDUixpQkFBTTs7O0lBQ04sa0RBQWdKOzs7SUFBaEQsa0NBQWlCOzs7SUFDakgsbURBQXNKOzs7SUFBbkQsb0NBQW1COzs7O0lBRXhILCtCQUNFO0lBRHVELG1NQUFxQjtJQUM1RSxtQ0FBdUg7SUFDekgs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QkFBQyxlQUFlO1lBQ2lCLFdBQVc7a0JBQXJELFlBQVk7bUJBQUMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPdXRwdXQsIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4sIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb2N1bWVudENvbGxlY3Rpb24gfSBmcm9tICduZ3gtanNvbmFwaSc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmluYWxpemUsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXJ0aWNsZSwgUmVjaXBlIH0gZnJvbSAnLi4vLi4vX21vZGVscyc7XG5pbXBvcnQgeyBBcnRpY2xlc1NlcnZpY2UsIENvbnRleHRTZXJ2aWNlLCBSZWNpcGVMaWtlc1NlcnZpY2UsIFJlY2lwZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuLi8uLi9fdHlwZXMvaWNvbi5lbnVtJztcbmltcG9ydCB7IENhdGFsb2dSZWNpcGVDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vY2F0YWxvZy1yZWNpcGUtY2FyZC9jYXRhbG9nLXJlY2lwZS1jYXJkLmNvbXBvbmVudCc7XG5cbi8vIG1pYW0tY2F0YWxvZy1yZWNpcGUtY2FyZCA6IHdpZHRoID0gMzMwcHggKyBtaWFtLWNhdGFsb2ctY2F0ZWdvcnlfX2NhcmQgOiBtYXJnaW4gOiAxNnB4XG4vLyB3ZSBpbmNsdWRlIGEgbWFyZ2luIGluIHRoZSBjYXJkIHRvIGdldCBhIHNwYWNlIHRoaXMgaXMgdGhlIGNhcmQgd2lkdGggKyB0aGUgbWFyZ2luXG5jb25zdCBDQVJEX1dJRFRIID0gMzQ2O1xuY29uc3QgU1BBQ0VfQkVUV0VFTl9DQVJEID0gMTY7XG5jb25zdCBTTElERVJfV0lEVEggPSA0ODtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctbWlhbS1jYXRhbG9nLWNhdGVnb3J5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhdGFsb2ctY2F0ZWdvcnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXRhbG9nLWNhdGVnb3J5LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIENhdGFsb2dDYXRlZ29yeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgZmlsdGVyczogYW55OyAvLyBSZW1vdGVmaWx0ZXJzIGZvciB0aGUgcmVxdWVzdCAoZXg6IHsgY29zdDogXCIzLGVxXCIsIHNlYXJjaDpcInBvbW1lcyBkZSB0ZXJyZVwifSlcbiAgQElucHV0KCkgdGl0bGUgPSAnJztcbiAgQE91dHB1dCgpIGRpc3BsYXlMaXN0OiBFdmVudEVtaXR0ZXI8YW55PjtcblxuICBAVmlld0NoaWxkKCdjYXRlZ29yeUNvbnRlbnQnKSBjYXRlZ29yeUNvbnRlbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2NhdGVnb3J5Q2FyZHMnKSBjYXRlZ29yeUNhcmRzOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkcmVuKENhdGFsb2dSZWNpcGVDYXJkQ29tcG9uZW50KSAgcmVjaXBlQ2FyZHMhOiBRdWVyeUxpc3Q8Q2F0YWxvZ1JlY2lwZUNhcmRDb21wb25lbnQ+O1xuXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdO1xuICByZWNpcGVzOiBSZWNpcGVbXSA9IFtdO1xuICBhcnRpY2xlczogQXJ0aWNsZVtdID0gW107XG4gIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgaGlkZSA9IGZhbHNlO1xuICBpY29uID0gSWNvbjtcblxuICBjYXJkc1RvdGFsU2l6ZSA9IDA7IC8vIG5hdGl2ZSBzaXplIG9mIHRoZSBjYXJkIGNvbnRhaW4gaW5jbHVkaW5nIG92ZXJmbG93XG4gIG51bWJlck9mU2VjdGlvbnMgPSAxOyAgLy8gbnVtYmVyIG9mIGNhcmQgZ3JvdXAgdGhhdCBmaXQgaW4gY2FyZHNUb3RhbFNpemVcbiAgY3VycmVudFNlY3Rpb24gPSAwOyAvLyBpbmRleCBvZiB0aGUgc2VjdGlvbiBzaG93IG9uIHNjcmVlblxuICBuYkNhcmRzSW5BbkV4dHJlbWVTZWN0aW9uID0gMDsgLy8gbmIgb2YgY2FyZCB0aGF0IGNhbiBmaXQgaW4gc2NyZWVuIHdpdGggb25lIHNjcm9sbCBidXR0b25cbiAgbmJDYXJkc0luQU1pZGRsZVNlY3Rpb24gPSAwOyAvLyBuYiBvZiBjYXJkIHRoYXQgY2FuIGZpdCBpbiBzY3JlZW4gd2l0aCB0d28gc2Nyb2xsIGJ1dHRvbnNcbiAgY2F0ZWdvcnlCYW5kV2lkdGggPSAwOyAvLyBuYXRpdmUgc2l6ZSBvZiB2aXNpYmxlIGNhcmQgY29udGFpbmVyIHNjcm9sbCBidXR0b25cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlY2lwZXNTZXJ2aWNlOiBSZWNpcGVzU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZUxpa2VzU2VydmljZTogUmVjaXBlTGlrZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXJ0aWNsZXNTZXJ2aWNlOiBBcnRpY2xlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0OiBDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy5kaXNwbGF5TGlzdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICB0aGlzLnJlY2lwZXMgPSBbXTtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIGZvcmtKb2luKFt0aGlzLmxvYWRSZWNpcGVzKCksIHRoaXMubG9hZEFydGljbGVzKCldKS5waXBlKFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMucmVjaXBlcy5sZW5ndGggPT09IDAgJiYgdGhpcy5hcnRpY2xlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZSA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVTZWN0aW9ucygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSlcbiAgICAgICkuc3Vic2NyaWJlKClcbiAgICApO1xuICB9XG5cbiAgbG9hZFJlY2lwZXMoKTogT2JzZXJ2YWJsZTxSZWNpcGVbXT4ge1xuICAgIGlmICghdGhpcy5maWx0ZXJzKSB7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlY2lwZXNTZXJ2aWNlLmdldFJhbmRvbSh7IHNpemU6IDIwLCBudW1iZXI6IDEgfSwgdGhpcy5maWx0ZXJzKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChyZXN1bHQ6IFJlY2lwZVtdKSA9PiB7XG4gICAgICAgIHRoaXMucmVjaXBlcyA9IHJlc3VsdDtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVjaXBlTGlrZXNTZXJ2aWNlLmFkZExpa2VzVG9SZWNpcGVzKHJlc3VsdCk7XG4gICAgICB9KSxcbiAgICAgIG1hcCgoKSA9PiB0aGlzLnJlY2lwZXMpXG4gICAgKTtcbiAgfVxuXG4gIGxvYWRBcnRpY2xlcygpOiBPYnNlcnZhYmxlPEFydGljbGVbXT4ge1xuICAgIC8vIFRPRE86IGFsbCBjb250ZW50cyAocmVjaXBlcywgYXJ0aWNsZXMuLi4pIHNob3VsZCBiZSByZWxhdGVkIHRvIHBhY2thZ2VzLCB0byB3aGljaCBmaWx0ZXJzIGNvdWxkIGJlIGF0dGFjaGVkXG4gICAgaWYgKCF0aGlzLmZpbHRlcnM/LnBhY2thZ2VzIHx8ICF0aGlzLmNvbnRleHQuYXJ0aWNsZXNJbkNhdGFsb2dFbmFibGVkKSB7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFydGljbGVzU2VydmljZS5hbGwoeyByZW1vdGVmaWx0ZXI6IHRoaXMuZmlsdGVycywgc29ydDogWyctZGF0ZSddIH0pLnBpcGUoXG4gICAgICBtYXAoKHJlc3VsdDogRG9jdW1lbnRDb2xsZWN0aW9uPEFydGljbGU+KSA9PiB7XG4gICAgICAgIHRoaXMuYXJ0aWNsZXMgPSByZXN1bHQuZGF0YTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXJ0aWNsZXM7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBjcmVhdGVTZWN0aW9ucygpIHtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5jYXJkc1RvdGFsU2l6ZSA9IHRoaXMuY2F0ZWdvcnlDYXJkcy5uYXRpdmVFbGVtZW50LnNjcm9sbFdpZHRoOyAvLyBhcHByb3ggbnVtYmVyIG9mIHJlY2lwZXMgKiBDQVJEX1dJRFRIXG4gICAgdGhpcy5yZWNhbGN1bGF0ZVNlY3Rpb25zKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmVjYWxjdWxhdGVTZWN0aW9ucygpe1xuICAgIC8vIHRoZSBzaXplIG9mIHRoZSB3aW5kb3cgaW4gd2hpY2ggd2UgcHV0IHJlY2lwZXMgYW5kIHNsaWRlcnNcbiAgICB0aGlzLmNhdGVnb3J5QmFuZFdpZHRoID0gdGhpcy5jYXRlZ29yeUNvbnRlbnQubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICAvLyBhdCBzdGFydCB3ZSBoYXZlIG9ubHkgb25lIHNsaWRlciwgdHdvIGluIHRoZSBtaWRsZSBzbyB3ZSBtYXkgbm90IGJlIGFibGUgdG8gZml0IHNhbWUgbnVtYmVyIG9mIGNhcmRzXG4gICAgdGhpcy5uYkNhcmRzSW5BbkV4dHJlbWVTZWN0aW9uID0gIE1hdGguZmxvb3IoKHRoaXMuY2F0ZWdvcnlCYW5kV2lkdGggLSBTTElERVJfV0lEVEgpIC8gQ0FSRF9XSURUSCk7XG4gICAgdGhpcy5uYkNhcmRzSW5BTWlkZGxlU2VjdGlvbiA9IE1hdGguZmxvb3IoKHRoaXMuY2F0ZWdvcnlCYW5kV2lkdGggLSAyICogU0xJREVSX1dJRFRIKSAvIENBUkRfV0lEVEgpO1xuXG4gICAgY29uc3QgdG90YWxXaWR0aE9mQ2FyZHNJbkFuRXh0cmVtZVNlY3Rpb24gPSB0aGlzLm5iQ2FyZHNJbkFuRXh0cmVtZVNlY3Rpb24gKiBDQVJEX1dJRFRIO1xuICAgIGNvbnN0IHRvdGFsV2lkdGhPZkNhcmRzbWlkZGxlU2VjdGlvbiA9IHRoaXMubmJDYXJkc0luQU1pZGRsZVNlY3Rpb24gKiBDQVJEX1dJRFRIO1xuXG4gICAgY29uc3Qgb25seU9uZVNlY3Rpb24gPSB0aGlzLmNhdGVnb3J5QmFuZFdpZHRoID49IHRoaXMuY2FyZHNUb3RhbFNpemU7XG4gICAgY29uc3QgdHdvU2VjdGlvbnMgPSB0b3RhbFdpZHRoT2ZDYXJkc0luQW5FeHRyZW1lU2VjdGlvbiAqIDIgPj0gdGhpcy5jYXJkc1RvdGFsU2l6ZTtcbiAgICBpZiAob25seU9uZVNlY3Rpb24pIHtcbiAgICAgIHRoaXMubnVtYmVyT2ZTZWN0aW9ucyA9IDE7XG4gICAgfSBlbHNlIGlmICh0d29TZWN0aW9ucykge1xuICAgICAgdGhpcy5udW1iZXJPZlNlY3Rpb25zID0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaW4gdGhlIGNhc2Ugd2UgaGF2ZSBhdCBsZWFzdCB0aGUgc3RhcnRpbmcgc2VjdGlvbiB0aGUgZW5kaW5nIHNlY3Rpb24gYW5kIG9uZSBvciBtb3JlIG1pZGRsZSBzZWN0aW9uXG4gICAgICAvLyAgMiAqIGNhcmRzSW5BbkV4dHJlbVNlY3Rpb25zID0+IG5iIGNhcmRzIGluIGV4dHJlbSBzZWN0aW9uXG4gICAgICAvLyB0aGlzLmNhcmRzVG90YWxTaXplIC0gMiAqIGNhcmRzSW5BbkV4dHJlbVNlY3Rpb25zID0+IG5iIGNhcmQgaW4gbWlkZGxlIHNlY3Rpb25cbiAgICAgIHRoaXMubnVtYmVyT2ZTZWN0aW9ucyA9IDIgKyAodGhpcy5jYXJkc1RvdGFsU2l6ZSAtIDIgKiB0b3RhbFdpZHRoT2ZDYXJkc0luQW5FeHRyZW1lU2VjdGlvbikgLyB0b3RhbFdpZHRoT2ZDYXJkc21pZGRsZVNlY3Rpb247XG4gICAgfVxuICB9XG5cbiAgeFRyYW5zbGF0aW9uKCkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRTZWN0aW9uID09PSAwKXtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50U2VjdGlvbiA9PT0gKHRoaXMubnVtYmVyT2ZTZWN0aW9ucyAtIDEpKXtcbiAgICAgIC8vIHRoZSBjYXJkIGNvbnRhaW4gYSBzcGFjZSBvZiBTUEFDRV9CRVRXRUVOX0NBUkQgb24gdGhlIExFRlQsIHdlIGEgYSBzcGFjZSBhdCB0aGUgZW5kIGZvciBkaXNwbGF5IHB1cnBvc2VcbiAgICAgIHJldHVybiB0aGlzLmNhcmRzVG90YWxTaXplIC0gdGhpcy5jYXRlZ29yeUJhbmRXaWR0aCArIFNQQUNFX0JFVFdFRU5fQ0FSRDtcbiAgICB9XG4gICAgLy8gd2UgYXJlIGluIHRoZSBtaWRkbGVcbiAgICBjb25zdCBmaXJzdGV4dGVyblNlY3Rpb25XaWR0aCA9IHRoaXMubmJDYXJkc0luQW5FeHRyZW1lU2VjdGlvbiAqIENBUkRfV0lEVEg7XG4gICAgY29uc3QgbWlkZGxlU2VjdGlvbldpZHRoID0gKHRoaXMuY3VycmVudFNlY3Rpb24gLSAxKSAqIHRoaXMubmJDYXJkc0luQU1pZGRsZVNlY3Rpb24gKiBDQVJEX1dJRFRIO1xuICAgIHJldHVybiBmaXJzdGV4dGVyblNlY3Rpb25XaWR0aCArIG1pZGRsZVNlY3Rpb25XaWR0aCAtIFNMSURFUl9XSURUSCA7XG4gIH1cblxuICBzbGlkZUxlZnQoKSB7XG4gICAgLy8gY3VycmVudCBzZWN0aW9uIGNhbiBiZSBhIGZsb2F0IGlmIHNjcmVlbiBpcyByZXNpemVkXG4gICAgdGhpcy5jdXJyZW50U2VjdGlvbiA9IE1hdGgubWF4KHRoaXMuY3VycmVudFNlY3Rpb24gLSAxLCAwKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5zZW5kRXZlbnRzKCk7XG4gIH1cblxuICBzbGlkZVJpZ2h0KCkge1xuICAgIC8vIGN1cnJlbnQgc2VjdGlvbiBjYW4gYmUgYSBmbG9hdCBpZiBzY3JlZW4gaXMgcmVzaXplZFxuICAgIHRoaXMuY3VycmVudFNlY3Rpb24gPSBNYXRoLm1pbih0aGlzLmN1cnJlbnRTZWN0aW9uICsgMSwgdGhpcy5udW1iZXJPZlNlY3Rpb25zIC0gMSk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuc2VuZEV2ZW50cygpO1xuICB9XG5cbiAgc2VuZEV2ZW50cygpIHtcbiAgICAvLyBzZXQgYSBkZWJvdW5jZSB0byBsZXQgdGhlIHZpZXcgdXBkYXRlIGFuZCByZWNpcGUgdG8gYmUgaW4gdmlld3BvcnRcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vIHRoZSBzZW5kIHNob3cgZXZlbnQgY2hlY2sgaWYgY2FyZCBpcyBpbiB2aWV3XG4gICAgICB0aGlzLnJlY2lwZUNhcmRzLmZvckVhY2goIHJlY2lwZUNhcmQgPT4ge1xuICAgICAgICByZWNpcGVDYXJkLnNlbmRTaG93RXZlbnQoJ3Nob3ctcmVjaXBlLWNhcmQtY2F0YWxvZycpO1xuICAgICAgICByZWNpcGVDYXJkLmRpc3BsYXlQcmljZSgpO1xuICAgICAgfSk7XG4gICAgfSwgMTAwMCk7XG4gIH1cblxuICAvKipcbiAgICogdG8gY2FsbCB3aGVuIGNvbXBvbmVudCByZXNpemVkXG4gICAqL1xuICB1cGRhdGVXaWR0aCgpe1xuICAgIGNvbnN0IG9sZE5iT2ZDYXJkc0luQW5FeHRyZW1TZWN0aW9uID0gdGhpcy5uYkNhcmRzSW5BbkV4dHJlbWVTZWN0aW9uO1xuICAgIGNvbnN0IG9sZE5iQ2FyZHNJbkFNaWRkbGVTZWN0aW9uID0gdGhpcy5uYkNhcmRzSW5BTWlkZGxlU2VjdGlvbjtcbiAgICBjb25zdCBjdXJyZW50U2VjdGlvbldhc0ZpcnN0ID0gdGhpcy5jdXJyZW50U2VjdGlvbiA9PT0gMDtcbiAgICBjb25zdCBjdXJyZW50U2VjdGlvbldhc0xhc3QgPSB0aGlzLmN1cnJlbnRTZWN0aW9uID09PSB0aGlzLm51bWJlck9mU2VjdGlvbnMgLSAxO1xuICAgIHRoaXMucmVjYWxjdWxhdGVTZWN0aW9ucygpO1xuICAgIGlmIChjdXJyZW50U2VjdGlvbldhc0ZpcnN0KSB7XG4gICAgICB0aGlzLmN1cnJlbnRTZWN0aW9uID0gMDtcbiAgICB9IGVsc2UgaWYgKGN1cnJlbnRTZWN0aW9uV2FzTGFzdCkge1xuICAgICAgdGhpcy5jdXJyZW50U2VjdGlvbiA9IHRoaXMubnVtYmVyT2ZTZWN0aW9ucyAtIDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHdlIHdhbnQgb2xkQ2FyZHNGb3JGaXJzdFNlY3Rpb24gKyBvbGRDYXJkc0J5U2VjdGlvbiAqIGN1cnJlbnRTZWN0aW9uID0gY2FyZHNGb3JGaXJzdFNlY3Rpb24gKyBjYXJkc0J0U2VjdGlvbiAqIG5ld19jdXJyZW50U2VjdGlvblxuICAgICAgLy8gb3VyIGdvYWwgaXMgdG8ga2VlcCB0aGUgc2FtZSBjYXJkIGF0IHRoZSBzdGFydCBvZiBvdXIgdmlzaWJsZSBkaXZcbiAgICAgIGNvbnN0IGZpcnN0U2VjdGlvbkRlbHRhID0gb2xkTmJPZkNhcmRzSW5BbkV4dHJlbVNlY3Rpb24gLSB0aGlzLm5iQ2FyZHNJbkFuRXh0cmVtZVNlY3Rpb247XG4gICAgICB0aGlzLmN1cnJlbnRTZWN0aW9uID0gKGZpcnN0U2VjdGlvbkRlbHRhICsgdGhpcy5jdXJyZW50U2VjdGlvbiAqIG9sZE5iQ2FyZHNJbkFNaWRkbGVTZWN0aW9uKSAvIHRoaXMubmJDYXJkc0luQU1pZGRsZVNlY3Rpb247XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGRpc3BsYXlMaXN0TW9kZSgpIHtcbiAgICB0aGlzLmRpc3BsYXlMaXN0LmVtaXQoe3RpdGxlOiB0aGlzLnRpdGxlLCBmaWx0ZXJzOiB0aGlzLmZpbHRlcnN9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtaWFtLWNhdGFsb2ctY2F0ZWdvcnlcIiAqbmdJZj1cIiFoaWRlXCI+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLWNhdGFsb2ctY2F0ZWdvcnlfX2hlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLWNhdGFsb2ctY2F0ZWdvcnlfX3RpdGxlXCIgKGNsaWNrKT1cImRpc3BsYXlMaXN0TW9kZSgpXCI+e3t0aXRsZX19PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1jYXRlZ29yeV9fbGlua1wiIChjbGljayk9XCJkaXNwbGF5TGlzdE1vZGUoKVwiPlZvaXIgdG91dDwvZGl2PlxuICAgIDxuZy1taWFtLWljb24gaGVpZ2h0PScyMCcgd2lkdGg9JzIwJyBwcmltYXJ5Q29sb3I9XCJ2YXIoLS1tLWNvbG9yLWdyZXktdGV4dClcIihjbGljayk9XCJkaXNwbGF5TGlzdE1vZGUoKVwiXG4gICAgW2ljb25OYW1lXT1cImljb24uQ2hldnJvbkRvd25cIj5cbiAgICA8L25nLW1pYW0taWNvbj5cbiAgPC9kaXY+XG4gIDxkaXYgI2NhdGVnb3J5Q29udGVudCBjbGFzcz1cIm1pYW0tY2F0YWxvZy1jYXRlZ29yeV9fY29udGVudFwiPlxuICAgIDxkaXYgI2NhdGVnb3J5Q2FyZHMgY2xhc3M9XCJtaWFtLWNhdGFsb2ctY2F0ZWdvcnlfX2NhcmRzXCIgW25nU3R5bGVdPVwieyd0cmFuc2Zvcm0nOiAndHJhbnNsYXRlWCgtJyArIHhUcmFuc2xhdGlvbigpICsgJ3B4KSd9XCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiaXNMb2FkaW5nXCIgY2xhc3M9XCJtaWFtLWNhdGFsb2ctY2F0ZWdvcnlfX2xvYWRlclwiPlxuICAgICAgICA8bmctbWlhbS1sb2FkZXI+PC9uZy1taWFtLWxvYWRlcj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICBDaGFyZ2VtZW50IGRlcyByw6lzdWx0YXRzLi4uXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctbWlhbS1jYXRhbG9nLXJlY2lwZS1jYXJkIGNsYXNzPVwibWlhbS1jYXRhbG9nLWNhdGVnb3J5X19jYXJkXCIgKm5nRm9yPVwibGV0IHJlY2lwZSBvZiByZWNpcGVzXCIgW3JlY2lwZV09J3JlY2lwZSc+PC9uZy1taWFtLWNhdGFsb2ctcmVjaXBlLWNhcmQ+XG4gICAgICA8bmctbWlhbS1jYXRhbG9nLWFydGljbGUtY2FyZCBjbGFzcz1cIm1pYW0tY2F0YWxvZy1jYXRlZ29yeV9fY2FyZFwiICpuZ0Zvcj1cImxldCBhcnRpY2xlIG9mIGFydGljbGVzXCIgW2FydGljbGVdPVwiYXJ0aWNsZVwiPjwvbmctbWlhbS1jYXRhbG9nLWFydGljbGUtY2FyZD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwibnVtYmVyT2ZTZWN0aW9ucyA+IDEgJiYgY3VycmVudFNlY3Rpb24gIT0gMFwiIChjbGljayk9XCJzbGlkZUxlZnQoKVwiIGNsYXNzPVwibWlhbS1jYXRhbG9nLWNhdGVnb3J5X19zbGlkZXJfX2xlZnRcIj5cbiAgICAgIDxuZy1taWFtLWljb24gaGVpZ2h0PSc1Nicgd2lkdGg9JzU2JyBwcmltYXJ5Q29sb3I9XCJ2YXIoLS1tLWNvbG9yLXdoaXRlKVwiICBbaWNvbk5hbWVdPVwiaWNvbi5DaGV2cm9uRG93blwiPjwvbmctbWlhbS1pY29uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJudW1iZXJPZlNlY3Rpb25zID4gMSAmJiAoY3VycmVudFNlY3Rpb24gIT0gbnVtYmVyT2ZTZWN0aW9ucyAtIDEpXCIgKGNsaWNrKT1cInNsaWRlUmlnaHQoKVwiIGNsYXNzPVwibWlhbS1jYXRhbG9nLWNhdGVnb3J5X19zbGlkZXJfX3JpZ2h0XCI+XG4gICAgICA8bmctbWlhbS1pY29uIGhlaWdodD0nNTYnIHdpZHRoPSc1NicgcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci13aGl0ZSlcIiAgW2ljb25OYW1lXT1cImljb24uQ2hldnJvbkRvd25cIj48L25nLW1pYW0taWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
|