ng-miam 9.2.0 → 9.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/ng-miam.umd.js +927 -634
- package/bundles/ng-miam.umd.js.map +1 -1
- package/bundles/ng-miam.umd.min.js +1 -1
- package/bundles/ng-miam.umd.min.js.map +1 -1
- package/esm2015/lib/_components/accordion/accordion.component.js +2 -2
- package/esm2015/lib/_components/addon-link/addon-link.component.js +3 -3
- package/esm2015/lib/_components/counter-input/counter-input.component.js +14 -12
- package/esm2015/lib/_components/guests-dropdown/guests-dropdown.component.js +8 -5
- package/esm2015/lib/_components/icon/icon.component.js +2 -2
- package/esm2015/lib/_components/like-button/like-button.component.js +6 -5
- package/esm2015/lib/_components/modal/modal.component.js +39 -36
- package/esm2015/lib/_components/no-pos-selected/no-pos-selected.component.js +2 -2
- package/esm2015/lib/_components/product-card/out-of-stock-overlay/out-of-stock-overlay.component.js +15 -6
- package/esm2015/lib/_components/product-card/product-card-skeleton/product-card-skeleton.component.js +1 -1
- package/esm2015/lib/_components/product-card/product-card.component.js +25 -7
- package/esm2015/lib/_components/products-picker/products-picker.component.js +2 -2
- package/esm2015/lib/_components/recipe-promotion-badge/recipe-promotion-badge.component.js +2 -2
- package/esm2015/lib/_components/sponsor-blocks/sponsor-image-and-text-block/sponsor-image-and-text-block.component.js +4 -4
- package/esm2015/lib/_components/sponsor-blocks/sponsor-logo-block/sponsor-logo-block.component.js +4 -4
- package/esm2015/lib/_components/sponsor-blocks/sponsor-picture-block/sponsor-picture-block.component.js +3 -3
- package/esm2015/lib/_components/sponsor-blocks/sponsor-small-picture-block/sponsor-small-picture-block.component.js +3 -3
- package/esm2015/lib/_components/sponsor-blocks/sponsor-text-and-image-block/sponsor-text-and-image-block.component.js +4 -4
- package/esm2015/lib/_models/basket-actions/basket-action.js +2 -2
- package/esm2015/lib/_services/basket-recipe-cleanup.service.js +62 -0
- package/esm2015/lib/_services/basket-transfer.service.js +3 -2
- package/esm2015/lib/_services/baskets-synchronizing/baskets-synchronizer.service.js +9 -3
- package/esm2015/lib/_services/context.service.js +17 -13
- package/esm2015/lib/_services/interceptor.service.js +10 -3
- package/esm2015/lib/_services/recipe-details.service.js +22 -7
- package/esm2015/lib/_services/recipes.service.js +5 -5
- package/esm2015/lib/_services/store-locator.service.js +10 -3
- package/esm2015/lib/_services/store-out-of-stock.service.js +57 -0
- package/esm2015/lib/_services/user.service.js +3 -3
- package/esm2015/lib/_types/builded/mealz-interface.js +1 -1
- package/esm2015/lib/_web-components/basket-preview/basket-preview-block/basket-preview-block.component.js +3 -2
- package/esm2015/lib/_web-components/basket-preview/basket-preview-line/basket-preview-line.component.js +130 -122
- package/esm2015/lib/_web-components/basket-preview/basket-preview-product/basket-preview-product.component.js +44 -34
- package/esm2015/lib/_web-components/basket-preview/replace-item/replace-item.component.js +14 -7
- package/esm2015/lib/_web-components/list-scan/files-inputs/files-inputs.component.js +2 -2
- package/esm2015/lib/_web-components/meals-planner/meals-planner-form/meals-planner-form.component.js +13 -13
- package/esm2015/lib/_web-components/no-supplier-onboarding/no-supplier-onboarding.component.js +8 -12
- package/esm2015/lib/_web-components/preferences/preferences-search/preferences-search.component.js +2 -2
- package/esm2015/lib/_web-components/preferences/preferences.component.js +28 -28
- package/esm2015/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.js +118 -97
- package/esm2015/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.js +21 -14
- package/esm2015/lib/_web-components/recipe-catalog/catalog-article-card/catalog-article-card.component.js +9 -8
- package/esm2015/lib/_web-components/recipe-catalog/catalog-category/catalog-category.component.js +10 -8
- package/esm2015/lib/_web-components/recipe-catalog/catalog-header/catalog-header.component.js +3 -3
- package/esm2015/lib/_web-components/recipe-catalog/catalog-toolbar/catalog-toolbar.component.js +14 -10
- package/esm2015/lib/_web-components/recipe-catalog/recipe-catalog.component.js +42 -37
- package/esm2015/lib/_web-components/recipe-details/last-order-modal/last-order-modal.component.js +2 -2
- package/esm2015/lib/_web-components/recipe-details/recipe-addon/recipe-addon.component.js +4 -3
- package/esm2015/lib/_web-components/recipe-details/recipe-details-infos/recipe-details-infos.component.js +16 -13
- package/esm2015/lib/_web-components/recipe-details/recipe-details-ingredients/recipe-details-ingredients.component.js +4 -3
- package/esm2015/lib/_web-components/recipe-details/recipe-details.component.js +98 -103
- package/esm2015/lib/_web-components/recipe-details/store-locator-link/store-locator-link.component.js +8 -7
- package/esm2015/lib/_web-components/recipe-modal/recipe-modal.component.js +7 -2
- package/esm2015/lib/environments/environment.js +2 -2
- package/esm2015/lib/environments/environment.prod.js +2 -2
- package/esm2015/lib/environments/version.js +2 -2
- package/esm2015/lib/ng-miam.module.js +4 -1
- package/fesm2015/ng-miam.js +882 -627
- package/fesm2015/ng-miam.js.map +1 -1
- package/lib/_components/components.module.d.ts +2 -1
- package/lib/_components/components.module.d.ts.map +1 -1
- package/lib/_components/product-card/out-of-stock-overlay/out-of-stock-overlay.component.d.ts +7 -3
- package/lib/_components/product-card/out-of-stock-overlay/out-of-stock-overlay.component.d.ts.map +1 -1
- package/lib/_components/product-card/product-card.component.d.ts +2 -0
- package/lib/_components/product-card/product-card.component.d.ts.map +1 -1
- package/lib/_models/basket-actions/basket-action.d.ts.map +1 -1
- package/lib/_services/basket-recipe-cleanup.service.d.ts +21 -0
- package/lib/_services/basket-recipe-cleanup.service.d.ts.map +1 -0
- package/lib/_services/basket-transfer.service.d.ts.map +1 -1
- package/lib/_services/baskets-synchronizing/baskets-synchronizer.service.d.ts +1 -1
- package/lib/_services/baskets-synchronizing/baskets-synchronizer.service.d.ts.map +1 -1
- package/lib/_services/context.service.d.ts +3 -1
- package/lib/_services/context.service.d.ts.map +1 -1
- package/lib/_services/interceptor.service.d.ts +1 -0
- package/lib/_services/interceptor.service.d.ts.map +1 -1
- package/lib/_services/recipe-details.service.d.ts +8 -2
- package/lib/_services/recipe-details.service.d.ts.map +1 -1
- package/lib/_services/recipes.service.d.ts +2 -6
- package/lib/_services/recipes.service.d.ts.map +1 -1
- package/lib/_services/store-locator.service.d.ts +1 -0
- package/lib/_services/store-locator.service.d.ts.map +1 -1
- package/lib/_services/store-out-of-stock.service.d.ts +13 -0
- package/lib/_services/store-out-of-stock.service.d.ts.map +1 -0
- package/lib/_services/user.service.d.ts +2 -2
- package/lib/_services/user.service.d.ts.map +1 -1
- package/lib/_types/builded/mealz-interface.d.ts +4 -0
- package/lib/_types/builded/mealz-interface.d.ts.map +1 -1
- package/lib/_web-components/basket-preview/replace-item/replace-item.component.d.ts +1 -0
- package/lib/_web-components/basket-preview/replace-item/replace-item.component.d.ts.map +1 -1
- package/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.d.ts +1 -0
- package/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.d.ts.map +1 -1
- package/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.d.ts +1 -1
- package/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.d.ts.map +1 -1
- package/lib/_web-components/recipe-details/recipe-details.component.d.ts +1 -1
- package/lib/_web-components/recipe-details/recipe-details.component.d.ts.map +1 -1
- package/lib/_web-components/recipe-modal/recipe-modal.component.d.ts.map +1 -1
- package/lib/environments/version.d.ts +1 -1
- package/lib/ng-miam.module.d.ts.map +1 -1
- package/miam-style.css +1 -1
- package/package.json +1 -1
|
@@ -50,10 +50,10 @@ function RecipeCatalogComponent_div_2_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
|
50
50
|
i0.ɵɵelementEnd();
|
|
51
51
|
i0.ɵɵelementEnd();
|
|
52
52
|
} }
|
|
53
|
-
function
|
|
53
|
+
function RecipeCatalogComponent_div_2_button_6_Template(rf, ctx) { if (rf & 1) {
|
|
54
54
|
const _r19 = i0.ɵɵgetCurrentView();
|
|
55
|
-
i0.ɵɵelementStart(0, "
|
|
56
|
-
i0.ɵɵlistener("click", function
|
|
55
|
+
i0.ɵɵelementStart(0, "button", 20);
|
|
56
|
+
i0.ɵɵlistener("click", function RecipeCatalogComponent_div_2_button_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r18 = i0.ɵɵnextContext(2); return ctx_r18.toggleMyMealDrawer(); });
|
|
57
57
|
i0.ɵɵelement(1, "img", 21);
|
|
58
58
|
i0.ɵɵelementStart(2, "span", 22);
|
|
59
59
|
i0.ɵɵelementStart(3, "span");
|
|
@@ -67,6 +67,7 @@ function RecipeCatalogComponent_div_2_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
|
67
67
|
i0.ɵɵelementEnd();
|
|
68
68
|
} if (rf & 2) {
|
|
69
69
|
const ctx_r5 = i0.ɵɵnextContext(2);
|
|
70
|
+
i0.ɵɵattribute("aria-label", "Voir votre panier avec " + ctx_r5.recipeCount + " repas");
|
|
70
71
|
i0.ɵɵadvance(4);
|
|
71
72
|
i0.ɵɵtextInterpolate(ctx_r5.recipeCount);
|
|
72
73
|
} }
|
|
@@ -147,18 +148,18 @@ function RecipeCatalogComponent_div_2_div_7_span_9_Template(rf, ctx) { if (rf &
|
|
|
147
148
|
function RecipeCatalogComponent_div_2_div_7_div_11_Template(rf, ctx) { if (rf & 1) {
|
|
148
149
|
const _r34 = i0.ɵɵgetCurrentView();
|
|
149
150
|
i0.ɵɵelementStart(0, "div", 55);
|
|
150
|
-
i0.ɵɵelementStart(1, "
|
|
151
|
-
i0.ɵɵlistener("click", function
|
|
151
|
+
i0.ɵɵelementStart(1, "button", 56);
|
|
152
|
+
i0.ɵɵlistener("click", function RecipeCatalogComponent_div_2_div_7_div_11_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r34); const ctx_r33 = i0.ɵɵnextContext(3); return ctx_r33.toggleHistory(false); });
|
|
152
153
|
i0.ɵɵelement(2, "img", 57);
|
|
153
154
|
i0.ɵɵelementStart(3, "span");
|
|
154
155
|
i0.ɵɵi18n(4, 58);
|
|
155
156
|
i0.ɵɵelementEnd();
|
|
156
157
|
i0.ɵɵelementEnd();
|
|
157
|
-
i0.ɵɵelementStart(5, "
|
|
158
|
-
i0.ɵɵlistener("click", function
|
|
159
|
-
i0.ɵɵelement(6, "img",
|
|
158
|
+
i0.ɵɵelementStart(5, "button", 59);
|
|
159
|
+
i0.ɵɵlistener("click", function RecipeCatalogComponent_div_2_div_7_div_11_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r34); const ctx_r35 = i0.ɵɵnextContext(3); return ctx_r35.toggleHistory(true); });
|
|
160
|
+
i0.ɵɵelement(6, "img", 57);
|
|
160
161
|
i0.ɵɵelementStart(7, "span");
|
|
161
|
-
i0.ɵɵi18n(8,
|
|
162
|
+
i0.ɵɵi18n(8, 60);
|
|
162
163
|
i0.ɵɵelementEnd();
|
|
163
164
|
i0.ɵɵelementEnd();
|
|
164
165
|
i0.ɵɵelementEnd();
|
|
@@ -166,38 +167,42 @@ function RecipeCatalogComponent_div_2_div_7_div_11_Template(rf, ctx) { if (rf &
|
|
|
166
167
|
const ctx_r26 = i0.ɵɵnextContext(3);
|
|
167
168
|
i0.ɵɵadvance(1);
|
|
168
169
|
i0.ɵɵclassProp("active", !ctx_r26.historyDisplayed)("inactive", ctx_r26.historyDisplayed);
|
|
170
|
+
i0.ɵɵattribute("aria-selected", !ctx_r26.historyDisplayed);
|
|
169
171
|
i0.ɵɵadvance(1);
|
|
170
172
|
i0.ɵɵproperty("src", !ctx_r26.historyDisplayed ? "https://storage.googleapis.com/assets.miam.tech/generic/icons/Heart.svg" : "https://storage.googleapis.com/assets.miam.tech/generic/icons/Heart_Grey.svg", i0.ɵɵsanitizeUrl);
|
|
171
173
|
i0.ɵɵadvance(3);
|
|
172
174
|
i0.ɵɵclassProp("active", ctx_r26.historyDisplayed)("inactive", !ctx_r26.historyDisplayed);
|
|
175
|
+
i0.ɵɵattribute("aria-selected", ctx_r26.historyDisplayed);
|
|
173
176
|
i0.ɵɵadvance(1);
|
|
174
177
|
i0.ɵɵproperty("src", ctx_r26.historyDisplayed ? "https://storage.googleapis.com/assets.miam.tech/generic/icons/History.svg" : "https://storage.googleapis.com/assets.miam.tech/generic/icons/History_Grey.svg", i0.ɵɵsanitizeUrl);
|
|
175
178
|
} }
|
|
176
179
|
const _c20 = function (a0, a1, a2, a3, a4) { return { "miam-recipe-catalog__favorites-list": a0, "miam-recipe-catalog__search-list": a1, "miam-recipe-catalog__all-recipes-list": a2, "miam-recipe-catalog__category-list": a3, "miam-recipe-catalog__default-list": a4 }; };
|
|
177
180
|
function RecipeCatalogComponent_div_2_div_7_ng_miam_catalog_list_15_Template(rf, ctx) { if (rf & 1) {
|
|
178
181
|
const _r37 = i0.ɵɵgetCurrentView();
|
|
179
|
-
i0.ɵɵelementStart(0, "ng-miam-catalog-list",
|
|
182
|
+
i0.ɵɵelementStart(0, "ng-miam-catalog-list", 61);
|
|
180
183
|
i0.ɵɵlistener("filterRemoved", function RecipeCatalogComponent_div_2_div_7_ng_miam_catalog_list_15_Template_ng_miam_catalog_list_filterRemoved_0_listener($event) { i0.ɵɵrestoreView(_r37); const ctx_r36 = i0.ɵɵnextContext(3); return ctx_r36.removeFilter($event); });
|
|
181
184
|
i0.ɵɵelementEnd();
|
|
182
185
|
} if (rf & 2) {
|
|
183
186
|
const ctx_r28 = i0.ɵɵnextContext(3);
|
|
184
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction5(
|
|
187
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction5(8, _c20, ctx_r28.isFavoritesPage(), ctx_r28.isSearchPage(), ctx_r28.isAllRecipesPage(), ctx_r28.isCategoryPage(), ctx_r28.isDefaultPage()))("filters", ctx_r28.filters)("originTrace", ctx_r28.eventTrace)("displayPricing", ctx_r28.displayPricing)("displayInfos", ctx_r28.displayInfos)("modifiedGuests", ctx_r28.guests)("displayRecipeVariant", ctx_r28.displayRecipeVariant);
|
|
188
|
+
i0.ɵɵattribute("aria-labelledby", ctx_r28.isFavoritesPage() && ctx_r28.contextService.orderHistoryEnabled ? "favorites-tab" : null);
|
|
185
189
|
} }
|
|
186
190
|
function RecipeCatalogComponent_div_2_div_7_div_16_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
187
|
-
i0.ɵɵelementStart(0, "div",
|
|
191
|
+
i0.ɵɵelementStart(0, "div", 65);
|
|
188
192
|
i0.ɵɵelement(1, "ng-miam-loader");
|
|
189
193
|
i0.ɵɵelementStart(2, "span");
|
|
190
|
-
i0.ɵɵi18n(3,
|
|
194
|
+
i0.ɵɵi18n(3, 66);
|
|
191
195
|
i0.ɵɵelementEnd();
|
|
192
196
|
i0.ɵɵelementEnd();
|
|
193
197
|
} }
|
|
194
198
|
function RecipeCatalogComponent_div_2_div_7_div_16_Template(rf, ctx) { if (rf & 1) {
|
|
195
|
-
i0.ɵɵelementStart(0, "div",
|
|
196
|
-
i0.ɵɵtemplate(1, RecipeCatalogComponent_div_2_div_7_div_16_div_1_Template, 4, 0, "div",
|
|
197
|
-
i0.ɵɵelement(2, "div",
|
|
199
|
+
i0.ɵɵelementStart(0, "div", 62);
|
|
200
|
+
i0.ɵɵtemplate(1, RecipeCatalogComponent_div_2_div_7_div_16_div_1_Template, 4, 0, "div", 63);
|
|
201
|
+
i0.ɵɵelement(2, "div", 64);
|
|
198
202
|
i0.ɵɵelementEnd();
|
|
199
203
|
} if (rf & 2) {
|
|
200
204
|
const ctx_r29 = i0.ɵɵnextContext(3);
|
|
205
|
+
i0.ɵɵattribute("aria-labelledby", "history-tab");
|
|
201
206
|
i0.ɵɵadvance(1);
|
|
202
207
|
i0.ɵɵproperty("ngIf", ctx_r29.historyService.fetchingHTMLLoader$.value);
|
|
203
208
|
i0.ɵɵadvance(1);
|
|
@@ -219,14 +224,14 @@ function RecipeCatalogComponent_div_2_div_7_Template(rf, ctx) { if (rf & 1) {
|
|
|
219
224
|
i0.ɵɵtemplate(9, RecipeCatalogComponent_div_2_div_7_span_9_Template, 2, 0, "span", 34);
|
|
220
225
|
i0.ɵɵelementEnd();
|
|
221
226
|
i0.ɵɵelement(10, "div", 14);
|
|
222
|
-
i0.ɵɵtemplate(11, RecipeCatalogComponent_div_2_div_7_div_11_Template, 9,
|
|
227
|
+
i0.ɵɵtemplate(11, RecipeCatalogComponent_div_2_div_7_div_11_Template, 9, 12, "div", 35);
|
|
223
228
|
i0.ɵɵelementStart(12, "div", 15, 36);
|
|
224
229
|
i0.ɵɵelementStart(14, "ng-miam-catalog-toolbar", 17);
|
|
225
230
|
i0.ɵɵlistener("filterButtonPressed", function RecipeCatalogComponent_div_2_div_7_Template_ng_miam_catalog_toolbar_filterButtonPressed_14_listener() { i0.ɵɵrestoreView(_r40); const ctx_r41 = i0.ɵɵnextContext(2); return ctx_r41.onFilterCollapsed(); })("preferencesButtonPressed", function RecipeCatalogComponent_div_2_div_7_Template_ng_miam_catalog_toolbar_preferencesButtonPressed_14_listener() { i0.ɵɵrestoreView(_r40); const ctx_r42 = i0.ɵɵnextContext(2); return ctx_r42.isPreferenceModalOpen = !ctx_r42.isPreferenceModalOpen; })("searchStringChanged", function RecipeCatalogComponent_div_2_div_7_Template_ng_miam_catalog_toolbar_searchStringChanged_14_listener($event) { i0.ɵɵrestoreView(_r40); const ctx_r43 = i0.ɵɵnextContext(2); return ctx_r43.updateSearch($event); })("favoritesButtonPressed", function RecipeCatalogComponent_div_2_div_7_Template_ng_miam_catalog_toolbar_favoritesButtonPressed_14_listener() { i0.ɵɵrestoreView(_r40); const ctx_r44 = i0.ɵɵnextContext(2); return ctx_r44.checkAndSetFavoritesFilter(); })("returnHomePressed", function RecipeCatalogComponent_div_2_div_7_Template_ng_miam_catalog_toolbar_returnHomePressed_14_listener() { i0.ɵɵrestoreView(_r40); const ctx_r45 = i0.ɵɵnextContext(2); return ctx_r45.returnToHomePage(); });
|
|
226
231
|
i0.ɵɵelementEnd();
|
|
227
232
|
i0.ɵɵelementEnd();
|
|
228
|
-
i0.ɵɵtemplate(15, RecipeCatalogComponent_div_2_div_7_ng_miam_catalog_list_15_Template, 1,
|
|
229
|
-
i0.ɵɵtemplate(16, RecipeCatalogComponent_div_2_div_7_div_16_Template, 3,
|
|
233
|
+
i0.ɵɵtemplate(15, RecipeCatalogComponent_div_2_div_7_ng_miam_catalog_list_15_Template, 1, 14, "ng-miam-catalog-list", 37);
|
|
234
|
+
i0.ɵɵtemplate(16, RecipeCatalogComponent_div_2_div_7_div_16_Template, 3, 3, "div", 38);
|
|
230
235
|
i0.ɵɵelementEnd();
|
|
231
236
|
} if (rf & 2) {
|
|
232
237
|
const _r27 = i0.ɵɵreference(13);
|
|
@@ -255,7 +260,7 @@ function RecipeCatalogComponent_div_2_div_7_Template(rf, ctx) { if (rf & 1) {
|
|
|
255
260
|
function RecipeCatalogComponent_div_2_ng_template_10_div_0_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
256
261
|
const _r54 = i0.ɵɵgetCurrentView();
|
|
257
262
|
i0.ɵɵelementContainerStart(0);
|
|
258
|
-
i0.ɵɵelementStart(1, "ng-miam-catalog-category",
|
|
263
|
+
i0.ɵɵelementStart(1, "ng-miam-catalog-category", 72);
|
|
259
264
|
i0.ɵɵlistener("displayList", function RecipeCatalogComponent_div_2_ng_template_10_div_0_ng_container_1_ng_container_1_Template_ng_miam_catalog_category_displayList_1_listener($event) { i0.ɵɵrestoreView(_r54); const ctx_r53 = i0.ɵɵnextContext(5); return ctx_r53.categoryTitleClicked($event); });
|
|
260
265
|
i0.ɵɵelementEnd();
|
|
261
266
|
i0.ɵɵelementContainerEnd();
|
|
@@ -270,20 +275,20 @@ function RecipeCatalogComponent_div_2_ng_template_10_div_0_ng_container_1_ng_tem
|
|
|
270
275
|
} }
|
|
271
276
|
function RecipeCatalogComponent_div_2_ng_template_10_div_0_ng_container_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
272
277
|
const _r58 = i0.ɵɵgetCurrentView();
|
|
273
|
-
i0.ɵɵelementStart(0, "div",
|
|
278
|
+
i0.ɵɵelementStart(0, "div", 73);
|
|
274
279
|
i0.ɵɵtemplate(1, RecipeCatalogComponent_div_2_ng_template_10_div_0_ng_container_1_ng_template_2_ng_miam_meals_planner_link_1_Template, 1, 0, "ng-miam-meals-planner-link", 42);
|
|
275
280
|
i0.ɵɵpipe(2, "async");
|
|
276
|
-
i0.ɵɵelementStart(3, "ng-miam-catalog-category",
|
|
281
|
+
i0.ɵɵelementStart(3, "ng-miam-catalog-category", 74);
|
|
277
282
|
i0.ɵɵlistener("displayList", function RecipeCatalogComponent_div_2_ng_template_10_div_0_ng_container_1_ng_template_2_Template_ng_miam_catalog_category_displayList_3_listener($event) { i0.ɵɵrestoreView(_r58); const ctx_r57 = i0.ɵɵnextContext(5); return ctx_r57.categoryTitleClicked($event); })("isHidden", function RecipeCatalogComponent_div_2_ng_template_10_div_0_ng_container_1_ng_template_2_Template_ng_miam_catalog_category_isHidden_3_listener($event) { i0.ɵɵrestoreView(_r58); const ctx_r59 = i0.ɵɵnextContext(5); return ctx_r59.categoryHidden($event); });
|
|
278
283
|
i0.ɵɵelementEnd();
|
|
279
284
|
i0.ɵɵelementEnd();
|
|
280
|
-
i0.ɵɵelementStart(4, "
|
|
281
|
-
i0.ɵɵlistener("click", function
|
|
282
|
-
i0.ɵɵelementStart(5, "div",
|
|
283
|
-
i0.ɵɵi18n(6,
|
|
285
|
+
i0.ɵɵelementStart(4, "button", 75);
|
|
286
|
+
i0.ɵɵlistener("click", function RecipeCatalogComponent_div_2_ng_template_10_div_0_ng_container_1_ng_template_2_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r58); const ctx_r60 = i0.ɵɵnextContext(5); return ctx_r60.seeAllRecipes(); });
|
|
287
|
+
i0.ɵɵelementStart(5, "div", 76);
|
|
288
|
+
i0.ɵɵi18n(6, 77);
|
|
284
289
|
i0.ɵɵelementEnd();
|
|
285
|
-
i0.ɵɵelementStart(7, "div",
|
|
286
|
-
i0.ɵɵelement(8, "img",
|
|
290
|
+
i0.ɵɵelementStart(7, "div", 78);
|
|
291
|
+
i0.ɵɵelement(8, "img", 79);
|
|
287
292
|
i0.ɵɵelementEnd();
|
|
288
293
|
i0.ɵɵelementEnd();
|
|
289
294
|
} if (rf & 2) {
|
|
@@ -296,8 +301,8 @@ function RecipeCatalogComponent_div_2_ng_template_10_div_0_ng_container_1_ng_tem
|
|
|
296
301
|
} }
|
|
297
302
|
function RecipeCatalogComponent_div_2_ng_template_10_div_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
298
303
|
i0.ɵɵelementContainerStart(0);
|
|
299
|
-
i0.ɵɵtemplate(1, RecipeCatalogComponent_div_2_ng_template_10_div_0_ng_container_1_ng_container_1_Template, 2, 9, "ng-container",
|
|
300
|
-
i0.ɵɵtemplate(2, RecipeCatalogComponent_div_2_ng_template_10_div_0_ng_container_1_ng_template_2_Template, 9, 12, "ng-template", null,
|
|
304
|
+
i0.ɵɵtemplate(1, RecipeCatalogComponent_div_2_ng_template_10_div_0_ng_container_1_ng_container_1_Template, 2, 9, "ng-container", 70);
|
|
305
|
+
i0.ɵɵtemplate(2, RecipeCatalogComponent_div_2_ng_template_10_div_0_ng_container_1_ng_template_2_Template, 9, 12, "ng-template", null, 71, i0.ɵɵtemplateRefExtractor);
|
|
301
306
|
i0.ɵɵelementContainerEnd();
|
|
302
307
|
} if (rf & 2) {
|
|
303
308
|
const i_r49 = ctx.index;
|
|
@@ -306,8 +311,8 @@ function RecipeCatalogComponent_div_2_ng_template_10_div_0_ng_container_1_Templa
|
|
|
306
311
|
i0.ɵɵproperty("ngIf", i_r49 !== 0)("ngIfElse", _r51);
|
|
307
312
|
} }
|
|
308
313
|
function RecipeCatalogComponent_div_2_ng_template_10_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
309
|
-
i0.ɵɵelementStart(0, "div",
|
|
310
|
-
i0.ɵɵtemplate(1, RecipeCatalogComponent_div_2_ng_template_10_div_0_ng_container_1_Template, 4, 2, "ng-container",
|
|
314
|
+
i0.ɵɵelementStart(0, "div", 68);
|
|
315
|
+
i0.ɵɵtemplate(1, RecipeCatalogComponent_div_2_ng_template_10_div_0_ng_container_1_Template, 4, 2, "ng-container", 69);
|
|
311
316
|
i0.ɵɵelementEnd();
|
|
312
317
|
} if (rf & 2) {
|
|
313
318
|
const ctx_r46 = i0.ɵɵnextContext(3);
|
|
@@ -315,7 +320,7 @@ function RecipeCatalogComponent_div_2_ng_template_10_div_0_Template(rf, ctx) { i
|
|
|
315
320
|
i0.ɵɵproperty("ngForOf", ctx_r46.categories);
|
|
316
321
|
} }
|
|
317
322
|
function RecipeCatalogComponent_div_2_ng_template_10_Template(rf, ctx) { if (rf & 1) {
|
|
318
|
-
i0.ɵɵtemplate(0, RecipeCatalogComponent_div_2_ng_template_10_div_0_Template, 2, 1, "div",
|
|
323
|
+
i0.ɵɵtemplate(0, RecipeCatalogComponent_div_2_ng_template_10_div_0_Template, 2, 1, "div", 67);
|
|
319
324
|
} if (rf & 2) {
|
|
320
325
|
const ctx_r8 = i0.ɵɵnextContext(2);
|
|
321
326
|
i0.ɵɵproperty("ngIf", ctx_r8.categories.length > 0);
|
|
@@ -330,7 +335,7 @@ function RecipeCatalogComponent_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
|
330
335
|
i0.ɵɵtemplate(3, RecipeCatalogComponent_div_2_div_3_Template, 1, 0, "div", 6);
|
|
331
336
|
i0.ɵɵtemplate(4, RecipeCatalogComponent_div_2_div_4_Template, 3, 7, "div", 7);
|
|
332
337
|
i0.ɵɵtemplate(5, RecipeCatalogComponent_div_2_div_5_Template, 2, 0, "div", 8);
|
|
333
|
-
i0.ɵɵtemplate(6,
|
|
338
|
+
i0.ɵɵtemplate(6, RecipeCatalogComponent_div_2_button_6_Template, 8, 2, "button", 9);
|
|
334
339
|
i0.ɵɵtemplate(7, RecipeCatalogComponent_div_2_div_7_Template, 17, 16, "div", 10);
|
|
335
340
|
i0.ɵɵelementEnd();
|
|
336
341
|
i0.ɵɵelementStart(8, "ng-miam-recipe-filters", 11);
|
|
@@ -869,13 +874,13 @@ RecipeCatalogComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeCatalogCompo
|
|
|
869
874
|
}
|
|
870
875
|
else {
|
|
871
876
|
i18n_23 = $localize `:␟6a492aeb2aa6401461c8cc248fff941988ab5dda␟371620413575748610:Toutes nos recettes`;
|
|
872
|
-
} return [[1, "miam-catalog-anchor"], ["miamCatalogTopAnchor", ""], ["class", "miam-recipe-catalog", 4, "ngIf"], [1, "miam-recipe-catalog"], [1, "miam-recipe-catalog__content"], [3, "home", "history", "searchTerm", "additionalFiltersTitle", "homeLabel", "pictureUrl", "catalogSetting", "returnButtonPressed"], ["class", "miam-recipe-catalog__toolbar-container-anchor", 4, "ngIf"], ["class", "miam-recipe-catalog__toolbar-container", 4, "ngIf"], ["class", "miam-recipe-catalog__promotions-banner", 4, "ngIf"], ["class", "miam-recipe-catalog__content__myMeal__button", 3, "click", 4, "ngIf"], ["class", "miam-recipe-catalog__list", 4, "ngIf", "ngIfElse"], [3, "filters", "isFilterCollapsed", "filterToRemove", "position", "filterChanged", "filterCollapsed", "preferencesChanged"], [3, "isOpen", "filters", "isOpenChange", "preferencesChanged"], ["categoriesComponents", ""], [1, "miam-recipe-catalog__toolbar-container-anchor"], [1, "miam-recipe-catalog__toolbar-container"], ["stickyToolbar", ""], [3, "home", "history", "searchTerm", "additionalFiltersTitle", "hideButtons", "filterBadgeCount", "reduced", "filterButtonPressed", "preferencesButtonPressed", "searchStringChanged", "favoritesButtonPressed", "returnHomePressed"], [1, "miam-recipe-catalog__promotions-banner"], [3, "clicked"], [1, "miam-recipe-catalog__content__myMeal__button", 3, "click"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/cutlery-white.svg", "alt", "
|
|
877
|
+
} return [[1, "miam-catalog-anchor"], ["miamCatalogTopAnchor", ""], ["class", "miam-recipe-catalog", 4, "ngIf"], [1, "miam-recipe-catalog"], [1, "miam-recipe-catalog__content"], [3, "home", "history", "searchTerm", "additionalFiltersTitle", "homeLabel", "pictureUrl", "catalogSetting", "returnButtonPressed"], ["class", "miam-recipe-catalog__toolbar-container-anchor", 4, "ngIf"], ["class", "miam-recipe-catalog__toolbar-container", 4, "ngIf"], ["class", "miam-recipe-catalog__promotions-banner", 4, "ngIf"], ["class", "miam-recipe-catalog__content__myMeal__button", 3, "click", 4, "ngIf"], ["class", "miam-recipe-catalog__list", 4, "ngIf", "ngIfElse"], [3, "filters", "isFilterCollapsed", "filterToRemove", "position", "filterChanged", "filterCollapsed", "preferencesChanged"], [3, "isOpen", "filters", "isOpenChange", "preferencesChanged"], ["categoriesComponents", ""], [1, "miam-recipe-catalog__toolbar-container-anchor"], [1, "miam-recipe-catalog__toolbar-container"], ["stickyToolbar", ""], [3, "home", "history", "searchTerm", "additionalFiltersTitle", "hideButtons", "filterBadgeCount", "reduced", "filterButtonPressed", "preferencesButtonPressed", "searchStringChanged", "favoritesButtonPressed", "returnHomePressed"], [1, "miam-recipe-catalog__promotions-banner"], [3, "clicked"], [1, "miam-recipe-catalog__content__myMeal__button", 3, "click"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/cutlery-white.svg", "alt", "", "aria-hidden", "true", 1, "miam-recipe-catalog__myMeal__first__icon"], [1, "miam-recipe-catalog__myMeal__button__text", "miam-ds-text", "weight-xl"], i18n_2, ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/chevron-down-white.svg", "alt", "", "aria-hidden", "true", 1, "miam-recipe-catalog__myMeal__second__icon"], [1, "miam-recipe-catalog__list"], [1, "miam-recipe-catalog__content__title"], ["aria-label", "Retour \u00E0 la page d'accueil", 1, "miam-recipe-catalog__content__title-icon", "miam-ds-button", "primary", "square", 3, "click"], ["alt", "", "aria-hidden", "true", "src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/ArrowLeft_white.svg"], ["class", "miam-recipe-catalog__content__title__search__text", 4, "ngIf"], ["class", "miam-recipe-catalog__content__title__favorites__text", 4, "ngIf"], ["class", "miam-recipe-catalog__content__title__promotions__text", 4, "ngIf"], ["class", "miam-recipe-catalog__content__title__all-recipes__text", 4, "ngIf"], ["class", "miam-recipe-catalog__content__title__category", 4, "ngIf"], ["class", "miam-recipe-catalog__content__default__text", 4, "ngIf"], ["class", "miam-catalog-tabs miam-ds-tabs", "role", "tablist", "aria-label", "Options de favoris", 4, "ngIf"], ["stickyToolbarCollection", ""], ["id", "favorites-panel", 3, "ngClass", "filters", "originTrace", "displayPricing", "displayInfos", "modifiedGuests", "displayRecipeVariant", "filterRemoved", 4, "ngIf"], ["class", "miam-recipe-catalog__history-container", "id", "history-panel", 4, "ngIf"], [1, "miam-recipe-catalog__content__title__search__text"], i18n_4, [1, "miam-recipe-catalog__content__title__favorites__text"], [4, "ngIf"], i18n_6, i18n_8, [1, "miam-recipe-catalog__content__title__promotions__text"], i18n_10, [1, "miam-recipe-catalog__content__title__all-recipes__text"], i18n_12, [1, "miam-recipe-catalog__content__title__category"], [1, "miam-ds-text", "size-l", "weight-xxl"], ["class", "miam-ds-text size-s weight-l", 4, "ngIf"], [1, "miam-ds-text", "size-s", "weight-l"], [1, "miam-recipe-catalog__content__default__text"], i18n_14, ["role", "tablist", "aria-label", "Options de favoris", 1, "miam-catalog-tabs", "miam-ds-tabs"], ["role", "tab", "id", "favorites-tab", "aria-controls", "favorites-panel", 1, "miam-catalog-tabs__item", "miam-ds-tab-item", "miam-ds-text", 3, "click"], ["alt", "", "aria-hidden", "true", 3, "src"], i18n_16, ["role", "tab", "id", "history-tab", "aria-controls", "history-panel", 1, "miam-catalog-tabs__item", "miam-ds-tab-item", "miam-ds-text", 3, "click"], i18n_18, ["id", "favorites-panel", 3, "ngClass", "filters", "originTrace", "displayPricing", "displayInfos", "modifiedGuests", "displayRecipeVariant", "filterRemoved"], ["id", "history-panel", 1, "miam-recipe-catalog__history-container"], ["class", "miam-recipe-catalog__history-loader", "aria-live", "polite", 4, "ngIf"], [3, "innerHTML"], ["aria-live", "polite", 1, "miam-recipe-catalog__history-loader"], i18n_21, ["class", "miam-recipe-catalog__categories", 4, "ngIf"], [1, "miam-recipe-catalog__categories"], [4, "ngFor", "ngForOf"], [4, "ngIf", "ngIfElse"], ["firstCategory", ""], [3, "title", "subtitle", "filters", "maxRecipeNumber", "displayInfos", "displayPricing", "originTrace", "modifiedGuests", "displayRecipeVariant", "displayList"], [1, "miam-recipe-catalog__first-category"], [3, "title", "subtitle", "filters", "displayInfos", "displayPricing", "maxRecipeNumber", "modifiedGuests", "displayRecipeVariant", "originTrace", "displayList", "isHidden"], [1, "miam-recipe-catalog__all-banner", 3, "click"], [1, "miam-recipe-catalog__all-banner__text", "miam-ds-text", "size-m", "weight-xl"], i18n_23, [1, "miam-recipe-catalog__all-banner__icon"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/ArrowLeft_black.svg", "alt", "", "aria-hidden", "true"]]; }, template: function RecipeCatalogComponent_Template(rf, ctx) { if (rf & 1) {
|
|
873
878
|
i0.ɵɵelement(0, "div", 0, 1);
|
|
874
879
|
i0.ɵɵtemplate(2, RecipeCatalogComponent_div_2_Template, 12, 19, "div", 2);
|
|
875
880
|
} if (rf & 2) {
|
|
876
881
|
i0.ɵɵadvance(2);
|
|
877
882
|
i0.ɵɵproperty("ngIf", ctx.catalogSettingHasLoaded);
|
|
878
|
-
} }, directives: [i4.NgIf, i5.CatalogHeaderComponent, i6.RecipeFiltersComponent, i7.PreferencesComponent, i8.CatalogToolbarComponent, i9.PromotionsBannerComponent, i10.CatalogListComponent, i4.NgClass, i11.LoaderComponent, i4.NgForOf, i12.CatalogCategoryComponent, i13.MealsPlannerLinkComponent], pipes: [i4.AsyncPipe], styles: [".miam-recipe-catalog{display:flex;justify-content:space-between;width:100%;position:relative;background-color:var(--miam-ds-color-neutral-white)}.miam-recipe-catalog .miam-recipe-catalog__toolbar-container-anchor{width:100%}.miam-recipe-catalog .miam-recipe-catalog__toolbar-container{width:-moz-available;width:-webkit-fill-available;width:fill-available;padding:33px 80px 0;box-sizing:border-box;background-color:var(--miam-ds-color-neutral-white);transition:padding .3s ease}.miam-recipe-catalog .miam-recipe-catalog__toolbar-container.sticking{position:fixed;top:0;z-index:10;border-bottom:1px solid var(--miam-ds-color-neutral-200,#d9dde1);padding:16px 40px}@media (max-width:1023px){.miam-recipe-catalog .miam-recipe-catalog__toolbar-container{padding:24px 16px 0}.miam-recipe-catalog .miam-recipe-catalog__toolbar-container.sticking{padding:8px}}.miam-recipe-catalog .miam-recipe-catalog__content{width:100%;position:relative}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__content__title{width:100%;padding:0 80px;font-size:20px;line-height:34px;font-weight:900;display:flex;align-items:center;gap:16px;color:var(--miam-ds-color-neutral-black,#0f191f);box-sizing:border-box}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__content__title .miam-recipe-catalog__content__title__search__text{display:flex;flex-wrap:wrap;gap:6px}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__content__title .miam-recipe-catalog__content__title-icon{width:32px;height:32px}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__content__title .miam-recipe-catalog__content__title-icon img{cursor:pointer;width:13px;height:13px}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__content__title .miam-recipe-catalog__content__title__category{display:flex;flex-direction:column;gap:4px}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__content__title .miam-recipe-catalog__content__title__category .size-s{color:var(--miam-ds-color-neutral-500)}@media (max-width:1023px){.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__content__title{width:100%;padding:0 24px;box-sizing:border-box}}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__promotions-banner{display:none;justify-content:center;margin-top:36px}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories{display:flex;flex-direction:column;width:100%;padding:4px 80px 48px;box-sizing:border-box}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__first-category{display:flex;flex-direction:row;width:100%;align-items:flex-end}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__first-category ng-miam-meals-planner-link{margin:0 16px 36px 0}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__first-category ng-miam-catalog-category{flex:1}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__all-banner{display:flex;padding:24px 0;justify-content:center;align-items:center;gap:8px;align-self:stretch;border-radius:8px;background:var(--miam-ds-color-neutral-100,#eff1f3);cursor:pointer}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__all-banner .miam-recipe-catalog__all-banner__text{color:var(--miam-ds-color-neutral-black,#0f191f)}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__all-banner .miam-recipe-catalog__all-banner__icon{transform:rotate(-180deg);height:24px}@media (max-width:1023px){.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories{padding:24px 0 48px}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__first-category{flex-direction:column;align-items:flex-start}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__first-category ng-miam-catalog-category{width:100%}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__first-category ng-miam-meals-planner-link{width:100%;padding:0 24px 24px;box-sizing:border-box;margin:unset}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__all-banner{margin:0 24px}}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__list{width:100%;padding:24px 0;box-sizing:border-box}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__list .miam-recipe-catalog__toolbar-container:not(.sticking){padding-bottom:24px}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__list .miam-recipe-catalog__toolbar-container.sticking{padding:8px 24px}@media (max-width:1023px){.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__list .miam-recipe-catalog__toolbar-container .sticking{padding:8px}}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__list .miam-recipe-catalog__history-container .miam-recipe-catalog__history-loader{width:100%;font-size:20px;font-weight:700;color:var(--m-color-grey-text);text-align:center}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__list .miam-recipe-catalog__history-container .miam-recipe-catalog__history-loader .miam-loader{margin-top:80px;margin-bottom:16px;margin-left:calc(50% - 40px);height:80px;width:80px}.miam-recipe-catalog .miam-recipe-catalog__content .miam-catalog-tabs{position:relative;display:flex;box-sizing:border-box;width:100%;padding:24px 80px 0;background-color:var(--miam-ds-color-neutral-white,#fff);transition:padding .3s ease}.miam-recipe-catalog .miam-recipe-catalog__content .miam-catalog-tabs .miam-catalog-tabs__item{display:flex;align-items:center;gap:4px;text-decoration:none}.miam-recipe-catalog .miam-recipe-catalog__content .miam-catalog-tabs .miam-catalog-tabs__item.inactive span{color:var(--miam-ds-color-neutral-black,#0f191f);opacity:.7}@media (max-width:1023px){.miam-recipe-catalog .miam-recipe-catalog__content .miam-catalog-tabs{padding:24px 24px 0}}@media (max-width:700px){.miam-recipe-catalog .miam-recipe-catalog__content .miam-catalog-tabs{padding:24px 0 0}.miam-recipe-catalog .miam-recipe-catalog__content .miam-catalog-tabs .miam-catalog-tabs__item{width:100%;justify-content:center;display:flex}}.miam-recipe-catalog .miam-recipe-
|
|
883
|
+
} }, directives: [i4.NgIf, i5.CatalogHeaderComponent, i6.RecipeFiltersComponent, i7.PreferencesComponent, i8.CatalogToolbarComponent, i9.PromotionsBannerComponent, i10.CatalogListComponent, i4.NgClass, i11.LoaderComponent, i4.NgForOf, i12.CatalogCategoryComponent, i13.MealsPlannerLinkComponent], pipes: [i4.AsyncPipe], styles: [".miam-recipe-catalog{display:flex;justify-content:space-between;width:100%;position:relative;background-color:var(--miam-ds-color-neutral-white)}.miam-recipe-catalog .miam-recipe-catalog__toolbar-container-anchor{width:100%}.miam-recipe-catalog .miam-recipe-catalog__toolbar-container{width:-moz-available;width:-webkit-fill-available;width:fill-available;padding:33px 80px 0;box-sizing:border-box;background-color:var(--miam-ds-color-neutral-white);transition:padding .3s ease}.miam-recipe-catalog .miam-recipe-catalog__toolbar-container.sticking{position:fixed;top:0;z-index:10;border-bottom:1px solid var(--miam-ds-color-neutral-200,#d9dde1);padding:16px 40px}@media (max-width:1023px){.miam-recipe-catalog .miam-recipe-catalog__toolbar-container{padding:24px 16px 0}.miam-recipe-catalog .miam-recipe-catalog__toolbar-container.sticking{padding:8px}}.miam-recipe-catalog .miam-recipe-catalog__content{width:100%;position:relative}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__content__title{width:100%;padding:0 80px;font-size:20px;line-height:34px;font-weight:900;display:flex;align-items:center;gap:16px;color:var(--miam-ds-color-neutral-black,#0f191f);box-sizing:border-box}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__content__title .miam-recipe-catalog__content__title__search__text{display:flex;flex-wrap:wrap;gap:6px}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__content__title .miam-recipe-catalog__content__title-icon{width:32px;height:32px}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__content__title .miam-recipe-catalog__content__title-icon img{cursor:pointer;width:13px;height:13px}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__content__title .miam-recipe-catalog__content__title__category{display:flex;flex-direction:column;gap:4px}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__content__title .miam-recipe-catalog__content__title__category .size-s{color:var(--miam-ds-color-neutral-500)}@media (max-width:1023px){.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__content__title{width:100%;padding:0 24px;box-sizing:border-box}}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__promotions-banner{display:none;justify-content:center;margin-top:36px}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories{display:flex;flex-direction:column;width:100%;padding:4px 80px 48px;box-sizing:border-box}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__first-category{display:flex;flex-direction:row;width:100%;align-items:flex-end}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__first-category ng-miam-meals-planner-link{margin:0 16px 36px 0}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__first-category ng-miam-catalog-category{flex:1}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__all-banner{border:none;display:flex;padding:24px 0;justify-content:center;align-items:center;gap:8px;align-self:stretch;border-radius:8px;background:var(--miam-ds-color-neutral-100,#eff1f3);cursor:pointer}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__all-banner .miam-recipe-catalog__all-banner__text{color:var(--miam-ds-color-neutral-black,#0f191f)}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__all-banner .miam-recipe-catalog__all-banner__icon{transform:rotate(-180deg);height:24px}@media (max-width:1023px){.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories{padding:24px 0 48px}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__first-category{flex-direction:column;align-items:flex-start}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__first-category ng-miam-catalog-category{width:100%}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__first-category ng-miam-meals-planner-link{width:100%;padding:0 24px 24px;box-sizing:border-box;margin:unset}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__all-banner{margin:0 24px}}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__list{width:100%;padding:24px 0;box-sizing:border-box}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__list .miam-recipe-catalog__toolbar-container:not(.sticking){padding-bottom:24px}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__list .miam-recipe-catalog__toolbar-container.sticking{padding:8px 24px}@media (max-width:1023px){.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__list .miam-recipe-catalog__toolbar-container .sticking{padding:8px}}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__list .miam-recipe-catalog__history-container .miam-recipe-catalog__history-loader{width:100%;font-size:20px;font-weight:700;color:var(--m-color-grey-text);text-align:center}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__list .miam-recipe-catalog__history-container .miam-recipe-catalog__history-loader .miam-loader{margin-top:80px;margin-bottom:16px;margin-left:calc(50% - 40px);height:80px;width:80px}.miam-recipe-catalog .miam-recipe-catalog__content .miam-catalog-tabs{position:relative;display:flex;box-sizing:border-box;width:100%;padding:24px 80px 0;background-color:var(--miam-ds-color-neutral-white,#fff);transition:padding .3s ease}.miam-recipe-catalog .miam-recipe-catalog__content .miam-catalog-tabs button.miam-catalog-tabs__item{background:none;border:none;border-bottom:2px solid var(--miam-ds-color-border);display:flex;align-items:center;gap:4px;text-decoration:none}.miam-recipe-catalog .miam-recipe-catalog__content .miam-catalog-tabs button.miam-catalog-tabs__item.active{border-bottom:2px solid var(--miam-ds-color-primary)}.miam-recipe-catalog .miam-recipe-catalog__content .miam-catalog-tabs button.miam-catalog-tabs__item.inactive span{color:var(--miam-ds-color-neutral-black,#0f191f);opacity:.7}@media (max-width:1023px){.miam-recipe-catalog .miam-recipe-catalog__content .miam-catalog-tabs{padding:24px 24px 0}}@media (max-width:700px){.miam-recipe-catalog .miam-recipe-catalog__content .miam-catalog-tabs{padding:24px 0 0}.miam-recipe-catalog .miam-recipe-catalog__content .miam-catalog-tabs .miam-catalog-tabs__item{width:100%;justify-content:center;display:flex}}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__all-banner{background:none;border:none;padding:0;margin:0;width:100%;text-align:left;cursor:pointer;font-family:inherit;font-size:inherit;outline:none}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__content__myMeal__button{border:none;display:flex;align-items:center;justify-content:space-between;width:400px;position:fixed;left:50%;bottom:16px;transform:translate(-50%);z-index:1;min-height:48px;padding:0 16px;border-radius:1000px;background:var(--miam-color-primary-900,#10323f);box-shadow:0 8px 16px 0 rgba(0,0,0,.2)}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__content__myMeal__button>:not(:last-child){margin-right:12px}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__content__myMeal__button .miam-recipe-catalog__myMeal__button__text{font-weight:700;color:var(--miam-ds-color-neutral-white,#fff);white-space:nowrap}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__content__myMeal__button .miam-recipe-catalog__myMeal__second__icon{transform:rotate(-90deg)}@media (max-width:607px){.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__content__myMeal__button{width:auto;z-index:2}}.miam-recipe-catalog ng-miam-recipe-card .miam-recipe-card{height:var(--m-catalog-card-height);width:var(--m-catalog-card-width)}"], encapsulation: 2, changeDetection: 0 });
|
|
879
884
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RecipeCatalogComponent, [{
|
|
880
885
|
type: Component,
|
|
881
886
|
args: [{
|
|
@@ -919,4 +924,4 @@ RecipeCatalogComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeCatalogCompo
|
|
|
919
924
|
}], customFilters: [{
|
|
920
925
|
type: Input
|
|
921
926
|
}] }); })();
|
|
922
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLWNhdGFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWlhbS9zcmMvbGliL193ZWItY29tcG9uZW50cy9yZWNpcGUtY2F0YWxvZy9yZWNpcGUtY2F0YWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1taWFtL3NyYy9saWIvX3dlYi1jb21wb25lbnRzL3JlY2lwZS1jYXRhbG9nL3JlY2lwZS1jYXRhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFHTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBRW5FLE9BQU8sRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRTFGLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLHNCQUFzQixFQUN0QixjQUFjLEVBQ2QsY0FBYyxFQUNkLGNBQWMsRUFDZCxjQUFjLEVBQ2QsY0FBYyxFQUNkLGdCQUFnQixFQUNoQixXQUFXLEVBQ1osTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7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QkFBQyx1QkFBdUI7WUFDQyxTQUFTO2tCQUEzQyxTQUFTO21CQUFDLHNCQUFzQjtZQUNGLGdCQUFnQjtrQkFBOUMsU0FBUzttQkFBQyxrQkFBa0I7WUFDVyxjQUFjO2tCQUFyRCxZQUFZO21CQUFDLHdCQUF3QjtZQUU3QixnQkFBZ0I7a0JBQXhCLEtBQUs7WUFDRyxZQUFZO2tCQUFwQixLQUFLO1lBQ0csZUFBZTtrQkFBdkIsS0FBSztZQUNHLFNBQVM7a0JBQWpCLEtBQUs7WUFDRyxZQUFZO2tCQUFwQixLQUFLO1lBQ0csY0FBYztrQkFBdEIsS0FBSztZQUNHLG9CQUFvQjtrQkFBNUIsS0FBSztZQUNHLHFCQUFxQjtrQkFBN0IsS0FBSztZQUNHLGFBQWE7a0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZWRpYU1hdGNoZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgRG9jdW1lbnRDb2xsZWN0aW9uIH0gZnJvbSAnbWlhbS1qc29uYXBpJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc2tpcFdoaWxlLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEV2ZW50VHJhY2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vX2NvbXBvbmVudHMvYWJzdHJhY3RzL2V2ZW50LXRyYWNlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2F0YWxvZ1NldHRpbmcsIFBhY2thZ2UsIFJlY2lwZSwgU3VwcGxpZXIgfSBmcm9tICcuLi8uLi9fbW9kZWxzJztcbmltcG9ydCB7XG4gIEFuYWx5dGljc1NlcnZpY2UsXG4gIEJhc2tldHNTZXJ2aWNlLFxuICBDYXRhbG9nU2V0dGluZ3NTZXJ2aWNlLFxuICBDb250ZXh0U2VydmljZSxcbiAgSGlzdG9yeVNlcnZpY2UsXG4gIFBhY2thZ2VTZXJ2aWNlLFxuICBSZWNpcGVzU2VydmljZSxcbiAgU3BvbnNvclNlcnZpY2UsXG4gIFN1cHBsaWVyc1NlcnZpY2UsXG4gIFVzZXJTZXJ2aWNlXG59IGZyb20gJy4uLy4uL19zZXJ2aWNlcyc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vLi4vX3R5cGVzL2ljb24uZW51bSc7XG5pbXBvcnQgeyBJQWRkaXRpb25uYWxGaWx0ZXJzLCBSZWNpcGVGaWx0ZXIsIFJlY2lwZUZpbHRlcnMgfSBmcm9tICcuLi8uLi9fdHlwZXMvcmVjaXBlLWZpbHRlcnMnO1xuaW1wb3J0IHsgQ2F0YWxvZ0NhdGVnb3J5Q29tcG9uZW50IH0gZnJvbSAnLi9jYXRhbG9nLWNhdGVnb3J5L2NhdGFsb2ctY2F0ZWdvcnkuY29tcG9uZW50JztcbmltcG9ydCB7IENhdGFsb2dIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2NhdGFsb2ctaGVhZGVyL2NhdGFsb2ctaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYXRhbG9nVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vY2F0YWxvZy10b29sYmFyL2NhdGFsb2ctdG9vbGJhci5jb21wb25lbnQnO1xuXG5pbnRlcmZhY2UgQ2F0ZWdvcnkge1xuICBrZXk6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgc3VidGl0bGU6IHN0cmluZztcbiAgZmlsdGVyczogUmVjaXBlRmlsdGVycztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctbWlhbS1yZWNpcGUtY2F0YWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWNpcGUtY2F0YWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlY2lwZS1jYXRhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFJlY2lwZUNhdGFsb2dDb21wb25lbnQgZXh0ZW5kcyBFdmVudFRyYWNlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZChDYXRhbG9nSGVhZGVyQ29tcG9uZW50KSBjYXRhbG9nSGVhZGVyOiBDYXRhbG9nSGVhZGVyQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKENhdGFsb2dUb29sYmFyQ29tcG9uZW50KSBjYXRhbG9nVG9vbGJhcjogQ2F0YWxvZ1Rvb2xiYXJDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ21pYW1DYXRhbG9nVG9wQW5jaG9yJykgdG9wQW5jaG9yOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgncmV0dXJuSG9tZUJ1dHRvbicpIHJldHVybkhvbWVCdXR0b246IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkcmVuKENhdGFsb2dDYXRlZ29yeUNvbXBvbmVudCkgY2F0ZWdvcmllc0NvbXAhOiBRdWVyeUxpc3Q8Q2F0YWxvZ0NhdGVnb3J5Q29tcG9uZW50PjtcblxuICBASW5wdXQoKSBoZWFkZXJQaWN0dXJlVXJsID0gJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvaW1hZ2VzL2RlZmF1bHQtY2F0YWxvZy1waWN0dXJlLnBuZyc7XG4gIEBJbnB1dCgpIGluaXRpYWxSb3V0ZSA9ICcnO1xuICBASW5wdXQoKSBmaWx0ZXJzUG9zaXRpb24gPSAncmlnaHQnO1xuICBASW5wdXQoKSBob21lTGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgZGlzcGxheUluZm9zID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc3BsYXlQcmljaW5nID0gdHJ1ZTtcbiAgQElucHV0KCkgZGlzcGxheVJlY2lwZVZhcmlhbnQgPSAxO1xuICBASW5wdXQoKSBtYXhSZWNpcGVzUGVyQ2F0ZWdvcnkgPSAyMDtcbiAgQElucHV0KCkgY3VzdG9tRmlsdGVyczogeyBkaWZmaWN1bHR5PzogUmVjaXBlRmlsdGVyW107IGNvc3Q/OiBSZWNpcGVGaWx0ZXJbXTsgdGltZT86IFJlY2lwZUZpbHRlcltdIH07XG5cbiAgZmlsdGVyczogUmVjaXBlRmlsdGVycztcbiAgaXNGaWx0ZXJDb2xsYXBzZWQgPSB0cnVlO1xuICBpY29uID0gSWNvbjtcbiAgY2F0ZWdvcmllczogQ2F0ZWdvcnlbXSA9IFtdO1xuICByZWNpcGVUb1VwZGF0ZTogUmVjaXBlO1xuICBmaWx0ZXJUb1JlbW92ZTogc3RyaW5nO1xuICBpc01vYmlsZSA9IGZhbHNlO1xuICBzaG93VXNlckZlZWRiYWNrID0gZmFsc2U7XG4gIHJlY2lwZUNvdW50ID0gMDtcbiAgdG90YWxQcmljZSA9IDA7XG4gIGlzTXlNZWFsQ2xvc2UgPSB0cnVlO1xuICBjYXRhbG9nU2V0dGluZzogQ2F0YWxvZ1NldHRpbmc7XG4gIGNhdGFsb2dTZXR0aW5nSGFzTG9hZGVkID0gZmFsc2U7XG4gIGd1ZXN0cyA9ICtsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnX21pYW0vcHJlZmVyZW5jZXMvZ3Vlc3RzJyk7XG4gIGZvcmNlTGlzdFZpZXcgPSBmYWxzZTtcbiAgaGlzdG9yeURpc3BsYXllZCA9IGZhbHNlO1xuICBoaXN0b3J5SFRNTDogU2FmZUh0bWw7XG4gIGhpc3RvcnlTZWFyY2g6IHN0cmluZztcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgaGVhZGVySGVpZ2h0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgc3VwcGxpZXJJZDtcbiAgcHJpdmF0ZSBfaXNQcmVmZXJlbmNlTW9kYWxPcGVuOiBib29sZWFuO1xuICBwcml2YXRlIHN0aWNreVRvb2xiYXJPYnNlcnZlcjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSxcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgc3BvbnNvclNlcnZpY2U6IFNwb25zb3JTZXJ2aWNlLFxuICAgIHB1YmxpYyBzdXBwbGllclNlcnZpY2U6IFN1cHBsaWVyc1NlcnZpY2UsXG4gICAgcHVibGljIHBhY2thZ2VTZXJ2aWNlOiBQYWNrYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZXNTZXJ2aWNlOiBSZWNpcGVzU2VydmljZSxcbiAgICBwdWJsaWMgbWVkaWFNYXRjaGVyOiBNZWRpYU1hdGNoZXIsXG4gICAgcHVibGljIHVzZXJzU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHVibGljIGNhdGFsb2dTZXR0aW5nU2VydmljZTogQ2F0YWxvZ1NldHRpbmdzU2VydmljZSxcbiAgICBwdWJsaWMgYmFza2V0c1NlcnZpY2U6IEJhc2tldHNTZXJ2aWNlLFxuICAgIHB1YmxpYyBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHVibGljIGhpc3RvcnlTZXJ2aWNlOiBIaXN0b3J5U2VydmljZSxcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyXG4gICkge1xuICAgIHN1cGVyKGFuYWx5dGljc1NlcnZpY2UpO1xuICAgIHRoaXMuaXNNb2JpbGUgPSBtZWRpYU1hdGNoZXIubWF0Y2hNZWRpYSgnKG1heC13aWR0aDogMTAyMnB4KScpLm1hdGNoZXM7XG4gICAgdGhpcy5oaXN0b3J5U2VydmljZS5sb2FkSGlzdG9yeVNjcmlwdHMoKTtcbiAgfVxuXG4gIHNldCBpc1ByZWZlcmVuY2VNb2RhbE9wZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc1ByZWZlcmVuY2VNb2RhbE9wZW4gPSB2YWx1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBnZXQgaXNQcmVmZXJlbmNlTW9kYWxPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1ByZWZlcmVuY2VNb2RhbE9wZW47XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuaXNNZWFselBhZ2UgPSB0cnVlO1xuICAgIHRoaXMucGFnZXZpZXcoKTtcbiAgICB0aGlzLmluaXRGaWx0ZXJzKCk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuc3VwcGxpZXJTZXJ2aWNlLnN1cHBsaWVyJC5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgICBza2lwV2hpbGUoc3VwcCA9PiBzdXBwID09PSB1bmRlZmluZWQgfHwgc3VwcCA9PSBudWxsKSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgc3dpdGNoTWFwKHN1cHBsaWVyID0+IHtcbiAgICAgICAgICB0aGlzLnN1cHBsaWVySWQgPSBzdXBwbGllci5pZDtcbiAgICAgICAgICB0aGlzLmluaXRDYXRhbG9nSGVhZGVyKHN1cHBsaWVyKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkUGFja2FnZXMoKTtcbiAgICAgICAgfSlcbiAgICAgICkuc3Vic2NyaWJlKCksXG4gICAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLmJhc2tldFN0YXRzJC5waXBlKHNraXBXaGlsZShicyA9PiAhYnMpKS5zdWJzY3JpYmUoYnMgPT4ge1xuICAgICAgICB0aGlzLnJlY2lwZUNvdW50ID0gYnMucmVjaXBlc0NvdW50O1xuICAgICAgICB0aGlzLnRvdGFsUHJpY2UgPSBicy50b3RhbFByaWNlO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KSxcbiAgICAgIHRoaXMuaGlzdG9yeVNlcnZpY2UuZmV0Y2hpbmdIVE1MTG9hZGVyJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KSxcbiAgICAgIHRoaXMuYXNzZXNzU2hvd1VzZXJGZWVkYmFjaygpLFxuICAgICAgdGhpcy5leGVjdXRlU3RvcmVkTWV0aG9kSWZMb2dnZWRJbigpLnN1YnNjcmliZSgpXG4gICAgKTtcblxuICAgIHRoaXMuc2V0RGlyZWN0QWNjZXNzKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuRmVhdHVyZXNGcm9tVVJMKCk7XG4gICAgdGhpcy5pbml0SGVhZGVySGVpZ2h0TGlzdGVuZXIoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuaXNNZWFselBhZ2UgPSBmYWxzZTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgdGhpcy5oZWFkZXJIZWlnaHRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zdGlja3lUb29sYmFyT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIGN1cnJlbnRQYXRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdyZWNpcGVzJztcbiAgfVxuXG4gIG9wZW5GZWF0dXJlc0Zyb21VUkwoKTogdm9pZCB7XG4gICAgY29uc3QgcGFyYW1zQXJyYXkgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgIGlmIChwYXJhbXNBcnJheS5nZXQoJ29wZW5CYXNrZXQnKSA9PT0gJ3RydWUnKSB7XG4gICAgICB0aGlzLnRvZ2dsZU15TWVhbERyYXdlcigpO1xuICAgIH1cbiAgICBjb25zdCBjb3N0ID0gcGFyYW1zQXJyYXkuZ2V0KCdjb3N0Jyk/LnNwbGl0KCcsJyk7XG4gICAgaWYgKGNvc3Q/Lmxlbmd0aCA9PT0gMikge1xuICAgICAgdGhpcy5zZXRQcmljZUZpbHRlcnMoY29zdCk7XG4gICAgfVxuICB9XG5cbiAgZGlzcGxheUhvbWVQYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpbHRlcnMuaXNFbXB0eSgpICYmICF0aGlzLmZvcmNlTGlzdFZpZXc7XG4gIH1cblxuICB0b2dnbGVIaXN0b3J5KGRpc3BsYXk6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoZGlzcGxheSkge1xuICAgICAgdGhpcy5sb2FkSGlzdG9yeUNvbnRlbnQoKTtcbiAgICB9XG4gICAgdGhpcy5oaXN0b3J5RGlzcGxheWVkID0gZGlzcGxheTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICAvLyBpbml0IHRoZSB2YWx1ZSBvZiB0aGUgaW1hZ2UgYW5kIHRoZSB0ZXh0IGZvciB0aGUgY2F0YWxvZyBoZWFkZXIsIHVzaW5nIHRoZSBjYXRhbG9nIHNldHRpbmcgb2YgdGhlIHN1cHBsaWVyXG4gIGluaXRDYXRhbG9nSGVhZGVyKHN1cHBsaWVyOiBTdXBwbGllcik6IHZvaWQge1xuICAgIGlmIChzdXBwbGllci5yZWxhdGlvbnNoaXBzWydjYXRhbG9nLXNldHRpbmcnXT8uZGF0YSkge1xuICAgICAgY29uc3QgaWQgPSBzdXBwbGllci5yZWxhdGlvbnNoaXBzWydjYXRhbG9nLXNldHRpbmcnXT8uZGF0YT8uaWQ7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgdGhpcy5jYXRhbG9nU2V0dGluZ1NlcnZpY2UuZ2V0KGlkKS5waXBlKFxuICAgICAgICAgIHNraXBXaGlsZShjID0+IGMuaXNfbG9hZGluZyksXG4gICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICB0YXAoY2F0YWxvZyA9PiB7XG4gICAgICAgICAgICB0aGlzLmNhdGFsb2dTZXR0aW5nID0gY2F0YWxvZztcbiAgICAgICAgICAgIHRoaXMuY2F0YWxvZ1NldHRpbmdIYXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5zZXRTdGlja3lPYnNlcnZlcigpO1xuICAgICAgICAgIH0pXG4gICAgICAgICkuc3Vic2NyaWJlKClcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vIGNhdGFsb2cgc2V0dGluZyByZXR1cm5lZCBieSBhcGkgPT4gbG9hZCBjYXRhbG9nIGhlYWRlciBuZXZlcnRoZWxlc3MgaW4gZGVmYXVsdCBtb2RlXG4gICAgICB0aGlzLmNhdGFsb2dTZXR0aW5nSGFzTG9hZGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHRoaXMuc2V0U3RpY2t5T2JzZXJ2ZXIoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRlZXBDbG9uZUFuZFJlc2V0VmFsdWVzKGZpbHRlcnM6IFJlY2lwZUZpbHRlcltdKTogUmVjaXBlRmlsdGVyW10ge1xuICAgIHJldHVybiBmaWx0ZXJzLm1hcChmaWx0ZXIgPT4gKHsgLi4uZmlsdGVyLCB2YWx1ZTogZmFsc2UgfSkpO1xuICB9XG5cbiAgLy8gVXNlZCBvbiBsb2FkIHRvIGJ1aWxkIHRoZSBmaWx0ZXJzIGF0dHJpYnV0ZSwgYW5kIG9uIGNsaWNrIG9uIHRoZSBsaW5rIHRvIHJlc2V0IHRoZSBmaWx0ZXJzXG4gIGluaXRGaWx0ZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuZm9yY2VMaXN0VmlldyA9IGZhbHNlO1xuICAgIHRoaXMuZmlsdGVycyA9IG5ldyBSZWNpcGVGaWx0ZXJzKFxuICAgICAge1xuICAgICAgICBkaWZmaWN1bHR5OiB0aGlzLnJlY2lwZXNTZXJ2aWNlLmRpZmZpY3VsdHlMZXZlbHMubWFwKGYgPT4gKHsgbmFtZTogZi52YWx1ZS50b1N0cmluZygpLCB0ZXh0OiBmLmxhYmVsLCB2YWx1ZTogZmFsc2UgfSkpLFxuICAgICAgICBjb3N0OiBbXG4gICAgICAgICAgeyBuYW1lOiAnMC01JywgdmFsdWU6IGZhbHNlIH0sXG4gICAgICAgICAgeyBuYW1lOiAnNS0xMCcsIHZhbHVlOiBmYWxzZSB9LFxuICAgICAgICAgIHsgbmFtZTogJzEwLTEwMDAnLCB2YWx1ZTogZmFsc2UgfVxuICAgICAgICAgIC8vIHdlIHNldCBhIGxpbWl0IGF0IDEwMDDigqwgbWF4LCBpZiBhIHJlY2lwZSBjb3N0IG1vcmUgc2hvdWxkIGJlIG5vbiBzZW5zZSBhbnl3YXlcbiAgICAgICAgXSxcbiAgICAgICAgdGltZTogW1xuICAgICAgICAgIHsgbmFtZTogJzE1JywgdmFsdWU6IGZhbHNlIH0sXG4gICAgICAgICAgeyBuYW1lOiAnMzAnLCB2YWx1ZTogZmFsc2UgfSxcbiAgICAgICAgICB7IG5hbWU6ICc2MCcsIHZhbHVlOiBmYWxzZSB9LFxuICAgICAgICAgIHsgbmFtZTogJzEyMCcsIHZhbHVlOiBmYWxzZSB9XG5cbiAgICAgICAgXVxuICAgICAgfVxuICAgICk7XG4gICAgaWYgKHRoaXMuY3VzdG9tRmlsdGVycykge1xuICAgICAgT2JqZWN0LmtleXModGhpcy5jdXN0b21GaWx0ZXJzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIHRoaXMuZmlsdGVyc1trZXldID0gdGhpcy5kZWVwQ2xvbmVBbmRSZXNldFZhbHVlcyh0aGlzLmN1c3RvbUZpbHRlcnNba2V5XSBhcyBSZWNpcGVGaWx0ZXJbXSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY2F0YWxvZ1Rvb2xiYXIpIHtcbiAgICAgIHRoaXMuY2F0YWxvZ1Rvb2xiYXIucmVzZXRTZWFyY2hTdHJpbmcoKTtcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJzLnNlYXJjaCA9ICcnO1xuICAgIHRoaXMuZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycyA9IG51bGw7XG4gIH1cblxuICB1cGRhdGVGaWx0ZXJzKGZpbHRlcnM6IFJlY2lwZUZpbHRlcnMsIGZvcmNlTGlzdFZpZXcgPSB0cnVlKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJzID0gZmlsdGVycy5jb3B5KCk7IC8vIG5lY2Vzc2FyeSB0byB0cmlnZ2VyIGNoaWxkIGNvbXBvbmVudCBjaGFuZ2VcbiAgICB0aGlzLmZvcmNlTGlzdFZpZXcgPSBmb3JjZUxpc3RWaWV3O1xuICAgIHRoaXMuZmlsdGVyVG9SZW1vdmUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuc2V0U3RpY2t5T2JzZXJ2ZXIoKTtcbiAgICB0aGlzLnJldHVyblRvVG9wKCk7XG4gIH1cblxuICBzZWVBbGxSZWNpcGVzKCk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycyA9IHsgdGl0bGU6ICdUb3V0ZXMgbm9zIHJlY2V0dGVzJywgZmlsdGVyczoge30gfTtcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcnModGhpcy5maWx0ZXJzKTtcbiAgfVxuXG4gIHVwZGF0ZVNlYXJjaChzZWFyY2g6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhpc3RvcnlEaXNwbGF5ZWQgJiYgc2VhcmNoICE9PSB0aGlzLmhpc3RvcnlTZWFyY2gpIHtcbiAgICAgIHRoaXMubG9hZEhpc3RvcnlDb250ZW50KHNlYXJjaCk7XG4gICAgfSBlbHNlIGlmIChzZWFyY2ggIT09IHRoaXMuZmlsdGVycy5zZWFyY2gpIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBPYmplY3QuYXNzaWduKHRoaXMuZmlsdGVycywgeyBzZWFyY2ggfSk7XG4gICAgICB0aGlzLnVwZGF0ZUZpbHRlcnMoZmlsdGVycyk7XG4gICAgfVxuICB9XG5cbiAgY2F0ZWdvcnlIaWRkZW4oaGlkZGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKCFoaWRkZW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jYXRlZ29yaWVzLnNwbGljZSgwLCAxKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBjYXRlZ29yeVRpdGxlQ2xpY2tlZChldmVudDogeyB0aXRsZTogc3RyaW5nOyBzdWJ0aXRsZTogc3RyaW5nOyBmaWx0ZXJzOiBJQWRkaXRpb25uYWxGaWx0ZXJzIH0pOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJzID0gT2JqZWN0LmFzc2lnbih0aGlzLmZpbHRlcnMsIHtcbiAgICAgIGFkZGl0aW9uYWxGaWx0ZXJzOiB7IGZpbHRlcnM6IGV2ZW50LmZpbHRlcnMsIHRpdGxlOiBldmVudC50aXRsZSwgc3VidGl0bGU6IGV2ZW50LnN1YnRpdGxlIH1cbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcnMoZmlsdGVycyk7XG4gIH1cblxuICBnb1RvUHJvbW90aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLnNldFByb21vdGlvbnNGaWx0ZXIoKTtcbiAgfVxuXG4gIGNoZWNrQW5kU2V0RmF2b3JpdGVzRmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcmVNZXRob2RJZkNhbGxiYWNrTmVlZGVkKCdzZXRGYXZvcml0ZXNGaWx0ZXInKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRGYXZvcml0ZXNGaWx0ZXIoKTtcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgfSlcbiAgICApLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgc2V0UHJvbW90aW9uc0ZpbHRlcigpIHtcbiAgICB0aGlzLmluaXRGaWx0ZXJzKCk7XG4gICAgY29uc3QgZmlsdGVycyA9IE9iamVjdC5hc3NpZ24odGhpcy5maWx0ZXJzLCB7XG4gICAgICBhZGRpdGlvbmFsRmlsdGVyczoge1xuICAgICAgICBmaWx0ZXJzOiB7IGRpc2NvdW50ZWRfaW5ncmVkaWVudHNfY291bnQ6IDEgfSxcbiAgICAgICAgdGl0bGU6ICdQcm9tb3MnXG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVGaWx0ZXJzKGZpbHRlcnMpO1xuICB9XG5cbiAgc2V0RmF2b3JpdGVzRmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdEZpbHRlcnMoKTtcbiAgICBjb25zdCBmaWx0ZXJzID0gT2JqZWN0LmFzc2lnbih0aGlzLmZpbHRlcnMsIHtcbiAgICAgIGFkZGl0aW9uYWxGaWx0ZXJzOiB7XG4gICAgICAgIGZpbHRlcnM6IHsgbGlrZWQ6IHRydWUgfSxcbiAgICAgICAgdGl0bGU6ICdNZXMgaWTDqWVzIHJlcGFzJ1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlRmlsdGVycyhmaWx0ZXJzKTtcbiAgfVxuXG4gIHN0b3JlTWV0aG9kSWZDYWxsYmFja05lZWRlZChtZXRob2Q6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzVXNlckxvZ2dlZEluKCkucGlwZShcbiAgICAgIHRha2UoMSksXG4gICAgICBtYXAoaXNMb2dnZWRJbiA9PiB7XG4gICAgICAgIGlmICghaXNMb2dnZWRJbikge1xuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdfbWlhbS9zdG9yZUNhbGxiYWNrTWV0aG9kJywgbWV0aG9kKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0U2VydmljZS5ob29rQ2FsbGJhY2soaXNMb2dnZWRJbiwgdHJ1ZSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGlzVXNlckxvZ2dlZEluKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJzU2VydmljZS5pc0xvZ2dlZCQ7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVTdG9yZWRNZXRob2RJZkxvZ2dlZEluKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaXNVc2VyTG9nZ2VkSW4oKS5waXBlKFxuICAgICAgc2tpcFdoaWxlKGlzTG9nZ2VkSW4gPT4gIWlzTG9nZ2VkSW4pLFxuICAgICAgdGFrZSgxKSxcbiAgICAgIG1hcCgoKSA9PiB0aGlzLmdldFN0b3JlZE1ldGhvZCgpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFN0b3JlZE1ldGhvZCgpOiB2b2lkIHtcbiAgICBjb25zdCBtZXRob2QgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnX21pYW0vc3RvcmVDYWxsYmFja01ldGhvZCcpO1xuICAgIGlmIChtZXRob2QgPT09ICdzZXRGYXZvcml0ZXNGaWx0ZXInKSB7XG4gICAgICB0aGlzLnNldEZhdm9yaXRlc0ZpbHRlcigpO1xuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ19taWFtL3N0b3JlQ2FsbGJhY2tNZXRob2QnKTtcbiAgICB9XG4gIH1cblxuICBzZXRQcmljZUZpbHRlcnMoY29zdDogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJzID0gT2JqZWN0LmFzc2lnbih0aGlzLmZpbHRlcnMsIHtcbiAgICAgIGFkZGl0aW9uYWxGaWx0ZXJzOiB7XG4gICAgICAgIGZpbHRlcnM6IHsgY29tcHV0ZWRfY29zdDogY29zdFswXSArICcsZ3QsJyArIGNvc3RbMV0gKyAnLGx0JywgcmVjaXBlX3R5cGVfaWQ6ICdtYWluLWRpc2gnIH0sXG4gICAgICAgIHRpdGxlOiBgUmVjZXR0ZXMgw6AgbW9pbnMgZGUgJHtjb3N0WzFdfeKCrGBcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcnMoZmlsdGVycyk7XG4gIH1cblxuICByZW1vdmVGaWx0ZXIoZmlsdGVyVGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIGZ1bmN0aW9uIGlzIGJyb2tlbiwgdXNlIGhhcyBiZWVuIGNvbW1lbnRhdGVkLCByZXBhaXIgaXQgaWYgeW91IHdhbnQgdG8gdXNlIGl0IGFnYWluJyk7XG4gICAgdGhpcy5maWx0ZXJUb1JlbW92ZSA9IGZpbHRlclRleHQ7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmV0dXJuVG9Ub3AoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudG9wQW5jaG9yKSB7XG4gICAgICB0aGlzLnRvcEFuY2hvci5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuVG9Ib21lUGFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2V2aWV3KCk7XG4gICAgLy8gZWl0aGVyIHlvdSBoYXZlIGZpbHRlcnMgZWl0aGVyIHlvdSBhcmUgb24gaG9tZSBwYWdlLiBUaGF0IG1lYW4gaWYgeW91IGdvIG9uIGhvbWUgcGFnZSB5b3UgZG9uJ3Qgd2FudCBBTlkgZmlsdGVyXG4gICAgdGhpcy5pbml0RmlsdGVycygpO1xuICAgIHRoaXMuaGlzdG9yeURpc3BsYXllZCA9IGZhbHNlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLnNldFN0aWNreU9ic2VydmVyKCk7XG4gICAgdGhpcy5yZXR1cm5Ub1RvcCgpO1xuICB9XG5cbiAgb25GaWx0ZXJDb2xsYXBzZWQoKTogdm9pZCB7XG4gICAgdGhpcy5pc0ZpbHRlckNvbGxhcHNlZCA9ICF0aGlzLmlzRmlsdGVyQ29sbGFwc2VkO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHJlbG9hZFBhY2thZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuZ3Vlc3RzID0gK2xvY2FsU3RvcmFnZS5nZXRJdGVtKCdfbWlhbS9wcmVmZXJlbmNlcy9ndWVzdHMnKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMubG9hZFBhY2thZ2VzKCkuc3Vic2NyaWJlKClcbiAgICApO1xuICB9XG5cbiAgaXNTZWFyY2hQYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5kaXNwbGF5SG9tZVBhZ2UoKSAmJiAhdGhpcy5oaXN0b3J5RGlzcGxheWVkICYmIHRoaXMuZmlsdGVycy5zZWFyY2ggJiYgdGhpcy5maWx0ZXJzLnNlYXJjaC5sZW5ndGggPiAwO1xuICB9XG5cbiAgaXNGYXZvcml0ZXNQYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5kaXNwbGF5SG9tZVBhZ2UoKSAmJiAhdGhpcy5pc1NlYXJjaFBhZ2UoKSAmJiB0aGlzLmZpbHRlcnM/LmFkZGl0aW9uYWxGaWx0ZXJzPy50aXRsZSA9PT0gJ01lcyBpZMOpZXMgcmVwYXMnO1xuICB9XG5cbiAgaXNQcm9tb3Rpb25zUGFnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuZGlzcGxheUhvbWVQYWdlKCkgJiYgIXRoaXMuaXNTZWFyY2hQYWdlKCkgJiYgdGhpcy5maWx0ZXJzPy5hZGRpdGlvbmFsRmlsdGVycz8udGl0bGUgPT09ICdQcm9tb3MnO1xuICB9XG5cbiAgaXNBbGxSZWNpcGVzUGFnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgIXRoaXMuZGlzcGxheUhvbWVQYWdlKCkgJiZcbiAgICAgICF0aGlzLmlzU2VhcmNoUGFnZSgpICYmXG4gICAgICAhdGhpcy5pc0Zhdm9yaXRlc1BhZ2UoKSAmJlxuICAgICAgIXRoaXMuaXNQcm9tb3Rpb25zUGFnZSgpICYmXG4gICAgICB0aGlzLmZpbHRlcnM/LmFkZGl0aW9uYWxGaWx0ZXJzPy50aXRsZSA9PT0gJ1RvdXRlcyBub3MgcmVjZXR0ZXMnXG4gICAgKTtcbiAgfVxuXG4gIGlzQ2F0ZWdvcnlQYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAhdGhpcy5kaXNwbGF5SG9tZVBhZ2UoKSAmJlxuICAgICAgIXRoaXMuaXNTZWFyY2hQYWdlKCkgJiZcbiAgICAgICF0aGlzLmlzRmF2b3JpdGVzUGFnZSgpICYmXG4gICAgICAhdGhpcy5pc1Byb21vdGlvbnNQYWdlKCkgJiZcbiAgICAgICF0aGlzLmlzQWxsUmVjaXBlc1BhZ2UoKSAmJlxuICAgICAgdGhpcy5maWx0ZXJzPy5hZGRpdGlvbmFsRmlsdGVycz8udGl0bGU/Lmxlbmd0aCA+IDBcbiAgICApO1xuICB9XG5cbiAgaXNEZWZhdWx0UGFnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgIXRoaXMuZGlzcGxheUhvbWVQYWdlKCkgJiZcbiAgICAgICF0aGlzLmlzU2VhcmNoUGFnZSgpICYmXG4gICAgICAhdGhpcy5pc0Zhdm9yaXRlc1BhZ2UoKSAmJlxuICAgICAgIXRoaXMuaXNQcm9tb3Rpb25zUGFnZSgpICYmXG4gICAgICAhdGhpcy5pc0FsbFJlY2lwZXNQYWdlKCkgJiZcbiAgICAgICF0aGlzLmlzQ2F0ZWdvcnlQYWdlKCkpO1xuICB9XG5cbiAgdG9nZ2xlTXlNZWFsRHJhd2VyKCk6IHZvaWQge1xuICAgIHRoaXMucmVjaXBlc1NlcnZpY2Uub3BlbkJhc2tldCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkUGFja2FnZXMoKTogT2JzZXJ2YWJsZTxEb2N1bWVudENvbGxlY3Rpb248UGFja2FnZT4+IHtcbiAgICByZXR1cm4gdGhpcy5wYWNrYWdlU2VydmljZS5jYXRlZ29yaWVzX2ZvcihbdGhpcy5zdXBwbGllcklkXSBhcyBzdHJpbmdbXSkucGlwZShcbiAgICAgIHNraXBXaGlsZShwYWNrYWdlcyA9PiBwYWNrYWdlcy5pc19sb2FkaW5nKSxcbiAgICAgIHRhcCgocGFja2FnZXM6IERvY3VtZW50Q29sbGVjdGlvbjxQYWNrYWdlPikgPT4ge1xuICAgICAgICB0aGlzLmluaXRDYXRlZ29yaWVzKHBhY2thZ2VzKTtcbiAgICAgICAgdGhpcy5zZWxlY3RDYXRlZ29yeUZyb21VcmwoKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkSGlzdG9yeUNvbnRlbnQoc2VhcmNoID0gJycpOiB2b2lkIHtcbiAgICBpZiAoc2VhcmNoICE9PSAnJykge1xuICAgICAgdGhpcy5oaXN0b3J5SFRNTCA9IG51bGw7XG4gICAgfVxuICAgIGlmICh0aGlzLmhpc3RvcnlIVE1MKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5oaXN0b3J5U2VydmljZS5kaXNwbGF5SGlzdG9yeShzZWFyY2gpLnN1YnNjcmliZShoaXN0b3J5SFRNTCA9PiB7XG4gICAgICB0aGlzLmhpc3RvcnlTZWFyY2ggPSBzZWFyY2g7XG4gICAgICAgIHRoaXMuaGlzdG9yeUhUTUwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChoaXN0b3J5SFRNTCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHRoaXMuaGlzdG9yeVNlcnZpY2UucmVwbGFjZU5vSGlzdG9yeVJlZGlyZWN0aW9uKHRoaXMuY29udGV4dFNlcnZpY2UuY2F0YWxvZ1VybCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXRDYXRlZ29yaWVzKHBhY2thZ2VzOiBEb2N1bWVudENvbGxlY3Rpb248UGFja2FnZT4pOiB2b2lkIHtcbiAgICB0aGlzLmNhdGVnb3JpZXMgPSBwYWNrYWdlcy5kYXRhLm1hcChjYXRlZ29yeVBhY2thZ2UgPT4gKHtcbiAgICAgIGtleTogY2F0ZWdvcnlQYWNrYWdlLnRpdGxlLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teYS16QS1aMC05IC1dLywgJycpLnJlcGxhY2UoL1xccy9nLCAnLScpLFxuICAgICAgdGl0bGU6IGNhdGVnb3J5UGFja2FnZS50aXRsZSxcbiAgICAgIHN1YnRpdGxlOiBjYXRlZ29yeVBhY2thZ2Uuc3VidGl0bGUsXG4gICAgICBmaWx0ZXJzOiBuZXcgUmVjaXBlRmlsdGVycyh7XG4gICAgICAgIGFkZGl0aW9uYWxGaWx0ZXJzOiB7XG4gICAgICAgICAgZmlsdGVyczogeyBwYWNrYWdlczogY2F0ZWdvcnlQYWNrYWdlLmlkIH0sXG4gICAgICAgICAgdGl0bGU6ICcnXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RDYXRlZ29yeUZyb21VcmwoKTogdm9pZCB7XG4gICAgY29uc3QgcGFyYW1zQXJyYXkgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgIGlmIChwYXJhbXNBcnJheS5nZXQoJ2NhdGFsb2dDYXRlZ29yeScpID09PSAnZmF2b3JpdGVzJykge1xuICAgICAgcmV0dXJuIHRoaXMuY2hlY2tBbmRTZXRGYXZvcml0ZXNGaWx0ZXIoKTtcbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0ZWRDYXRlZ29yeSA9IHRoaXMuY2F0ZWdvcmllcy5maW5kKGNhdCA9PiBjYXQua2V5ID09PSBwYXJhbXNBcnJheS5nZXQoJ2NhdGFsb2dDYXRlZ29yeScpKTtcbiAgICBpZiAoc2VsZWN0ZWRDYXRlZ29yeSkge1xuICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcnlUaXRsZUNsaWNrZWQoe1xuICAgICAgICB0aXRsZTogc2VsZWN0ZWRDYXRlZ29yeS50aXRsZSxcbiAgICAgICAgc3VidGl0bGU6IHNlbGVjdGVkQ2F0ZWdvcnkuc3VidGl0bGUsXG4gICAgICAgIGZpbHRlcnM6IHNlbGVjdGVkQ2F0ZWdvcnkuZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycy5maWx0ZXJzXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBTaG93IGZlZWRiYWNrIGJsb2NrIG9ubHkgaWYgdXNlciBpcyBsb2dnZWQgYW5kIHRoZSBjaGlsZHJlbiBwcmVmZXJlbmNlIGlzIHVua25vd25cbiAgcHJpdmF0ZSBhc3Nlc3NTaG93VXNlckZlZWRiYWNrKCk6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy51c2Vyc1NlcnZpY2UuaXNMb2dnZWQkLFxuICAgICAgdGhpcy51c2Vyc1NlcnZpY2UuaGFzUHJlZmVyZW5jZSgnaGFzX2NoaWxkcmVuJyksXG4gICAgICB0aGlzLnVzZXJzU2VydmljZS5wcmVmZXJlbmNlc0FjdGl2YXRlZCRcbiAgICBdKS5zdWJzY3JpYmUocmVzdWx0cyA9PiB7XG4gICAgICBjb25zdCBsb2dnZWQgPSByZXN1bHRzWzBdO1xuICAgICAgY29uc3QgcHJlZmVyZW5jZURlZmluZWQgPSByZXN1bHRzWzFdO1xuICAgICAgY29uc3QgcHJlZmVyZW5jZXNBY3RpdmF0ZWQgPSByZXN1bHRzWzJdO1xuICAgICAgdGhpcy5zaG93VXNlckZlZWRiYWNrID0gbG9nZ2VkICYmICFwcmVmZXJlbmNlRGVmaW5lZCAmJiBwcmVmZXJlbmNlc0FjdGl2YXRlZDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGlyZWN0QWNjZXNzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmluaXRpYWxSb3V0ZSAhPT0gJycpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5pbml0aWFsUm91dGUpIHtcbiAgICAgICAgY2FzZSAnbWVzLXJlcGFzJzpcbiAgICAgICAgICB0aGlzLnRvZ2dsZU15TWVhbERyYXdlcigpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyZWNldHRlcy1mYXZvcml0ZXMnOlxuICAgICAgICAgIHRoaXMuY2hlY2tBbmRTZXRGYXZvcml0ZXNGaWx0ZXIoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGhlYWRlciBoZWlnaHQgbGlzdGVuZXIgYW5kIHN1YnNjcmliZXMgdG8gY2hhbmdlcyBpbiB0aGUgc3VwcGxpZXIgaGVhZGVyIGhlaWdodC5cbiAgICovXG4gIHByaXZhdGUgaW5pdEhlYWRlckhlaWdodExpc3RlbmVyKCk6IHZvaWQge1xuICAgIHRoaXMuaGVhZGVySGVpZ2h0U3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2Uuc3VwcGxpZXJIZWFkZXJIZWlnaHQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGFuY2hvckVsbTogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubWlhbS1yZWNpcGUtY2F0YWxvZ19fdG9vbGJhci1jb250YWluZXItYW5jaG9yJyk7XG4gICAgICAgIGlmIChhbmNob3JFbG0pIHtcbiAgICAgICAgICAvLyBSZXNldCBzdGlja3lPYnNlcnZlciBlYWNoIHRpbWUgdGhlIGhlYWRlciBoZWlnaHQgY2hhbmdlcyBzbyB0aGF0IHJvb3RNYXJnaW4gd291bGQgdXBkYXRlXG4gICAgICAgICAgdGhpcy5zZXRTdGlja3lPYnNlcnZlcigpO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc3RpY2t5IG9ic2VydmVyIGZvciB0aGUgdG9vbGJhci5cbiAgICovXG4gIHByaXZhdGUgc2V0U3RpY2t5T2JzZXJ2ZXIoKTogdm9pZCB7XG4gICAgY29uc3QgYW5jaG9yRWxtOiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5taWFtLXJlY2lwZS1jYXRhbG9nX190b29sYmFyLWNvbnRhaW5lci1hbmNob3InKTtcbiAgICBjb25zdCB0b29sYmFyRWxtOiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5taWFtLXJlY2lwZS1jYXRhbG9nX190b29sYmFyLWNvbnRhaW5lcicpO1xuICAgIGlmICghYW5jaG9yRWxtIHx8ICF0b29sYmFyRWxtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3RNYXJnaW46IGAtJHt0aGlzLmNvbnRleHRTZXJ2aWNlLnN1cHBsaWVySGVhZGVySGVpZ2h0JC52YWx1ZX1weCAwcHggMHB4IDBweGAsXG4gICAgICB0aHJlc2hvbGQ6IDFcbiAgICB9O1xuICAgIC8vIFN0b3Agb2JzZXJ2aW5nIHRoZSBwcmV2aW91cyBhbmNob3IgZWxlbWVudFxuICAgIHRoaXMuc3RpY2t5VG9vbGJhck9ic2VydmVyPy51bm9ic2VydmUoYW5jaG9yRWxtKTtcbiAgICB0aGlzLnN0aWNreVRvb2xiYXJPYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRTdGlja3lUb29sYmFyU3R5bGUoYW5jaG9yRWxtLCB0b29sYmFyRWxtKTtcbiAgICAgIH0sXG4gICAgICBvcHRpb25zXG4gICAgKTtcbiAgICB0aGlzLnN0aWNreVRvb2xiYXJPYnNlcnZlci5vYnNlcnZlKGFuY2hvckVsbSk7XG4gIH1cblxuICBwcml2YXRlIHNldFN0aWNreVRvb2xiYXJTdHlsZShhbmNob3JFbG06IEhUTUxFbGVtZW50LCB0b29sYmFyRWxtOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IHJlY3QgPSBhbmNob3JFbG0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3Qgc3VwcGxpZXJIZWFkZXJIZWlnaHQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLnN1cHBsaWVySGVhZGVySGVpZ2h0JC52YWx1ZTtcbiAgICBjb25zdCBhY3RpdmF0ZWQgPSB0b29sYmFyRWxtLmNsYXNzTGlzdC50b2dnbGUoJ3N0aWNraW5nJywgcmVjdC50b3AgPCBzdXBwbGllckhlYWRlckhlaWdodCk7XG4gICAgLy8gU2V0IHRoZSBoZWlnaHQgb2YgdGhlIHRhcmdldCBlbGVtZW50XG4gICAgYW5jaG9yRWxtLnN0eWxlLmhlaWdodCA9IGFjdGl2YXRlZCA/IHRvb2xiYXJFbG0uY2xpZW50SGVpZ2h0ICsgJ3B4JyA6ICcwcHgnO1xuICAgIC8vIFNldCB0aGUgdG9wIHBvc2l0aW9uIG9mIHRoZSB0b29sYmFyXG4gICAgdG9vbGJhckVsbS5zdHlsZS50b3AgPSBzdXBwbGllckhlYWRlckhlaWdodCArICdweCc7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG4iLCI8ZGl2ICNtaWFtQ2F0YWxvZ1RvcEFuY2hvciBjbGFzcz1cIm1pYW0tY2F0YWxvZy1hbmNob3JcIj48L2Rpdj5cbjxkaXYgKm5nSWY9XCJjYXRhbG9nU2V0dGluZ0hhc0xvYWRlZFwiIGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ1wiPlxuICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fY29udGVudFwiPlxuICAgIDxuZy1taWFtLWNhdGFsb2ctaGVhZGVyXG4gICAgICBbaG9tZV09XCJkaXNwbGF5SG9tZVBhZ2UoKVwiXG4gICAgICBbaGlzdG9yeV09XCJoaXN0b3J5RGlzcGxheWVkXCJcbiAgICAgIFtzZWFyY2hUZXJtXT1cImZpbHRlcnM/LnNlYXJjaFwiXG4gICAgICBbYWRkaXRpb25hbEZpbHRlcnNUaXRsZV09XCJmaWx0ZXJzPy5hZGRpdGlvbmFsRmlsdGVycz8udGl0bGVcIlxuICAgICAgW2hvbWVMYWJlbF09XCJob21lTGFiZWxcIlxuICAgICAgW3BpY3R1cmVVcmxdPVwiZGlzcGxheUhvbWVQYWdlKCkgPyBoZWFkZXJQaWN0dXJlVXJsIDogbnVsbFwiXG4gICAgICBbY2F0YWxvZ1NldHRpbmddPVwiY2F0YWxvZ1NldHRpbmdcIlxuICAgICAgKHJldHVybkJ1dHRvblByZXNzZWQpPVwicmV0dXJuVG9Ib21lUGFnZSgpXCI+XG4gICAgPC9uZy1taWFtLWNhdGFsb2ctaGVhZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX190b29sYmFyLWNvbnRhaW5lci1hbmNob3JcIiAqbmdJZj1cImRpc3BsYXlIb21lUGFnZSgpXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX3Rvb2xiYXItY29udGFpbmVyXCIgKm5nSWY9XCJkaXNwbGF5SG9tZVBhZ2UoKVwiICNzdGlja3lUb29sYmFyPlxuICAgICAgPG5nLW1pYW0tY2F0YWxvZy10b29sYmFyXG4gICAgICAgIFtob21lXT1cImRpc3BsYXlIb21lUGFnZSgpXCJcbiAgICAgICAgW2hpc3RvcnldPVwiaGlzdG9yeURpc3BsYXllZFwiXG4gICAgICAgIFtzZWFyY2hUZXJtXT1cImZpbHRlcnM/LnNlYXJjaFwiXG4gICAgICAgIFthZGRpdGlvbmFsRmlsdGVyc1RpdGxlXT1cImZpbHRlcnM/LmFkZGl0aW9uYWxGaWx0ZXJzPy50aXRsZVwiXG4gICAgICAgIFtoaWRlQnV0dG9uc109XCJpc0Zhdm9yaXRlc1BhZ2UoKVwiXG4gICAgICAgIFtmaWx0ZXJCYWRnZUNvdW50XT1cImZpbHRlcnMuc2VsZWN0YWJsZUZpbHRlcnNDb3VudCgpXCJcbiAgICAgICAgKGZpbHRlckJ1dHRvblByZXNzZWQpPVwib25GaWx0ZXJDb2xsYXBzZWQoKVwiXG4gICAgICAgIFtyZWR1Y2VkXT1cInN0aWNreVRvb2xiYXIuY2xhc3NMaXN0LmNvbnRhaW5zKCdzdGlja2luZycpXCJcbiAgICAgICAgKHByZWZlcmVuY2VzQnV0dG9uUHJlc3NlZCk9XCJpc1ByZWZlcmVuY2VNb2RhbE9wZW4gPSAhaXNQcmVmZXJlbmNlTW9kYWxPcGVuXCJcbiAgICAgICAgKHNlYXJjaFN0cmluZ0NoYW5nZWQpPVwidXBkYXRlU2VhcmNoKCRldmVudClcIlxuICAgICAgICAoZmF2b3JpdGVzQnV0dG9uUHJlc3NlZCk9XCJjaGVja0FuZFNldEZhdm9yaXRlc0ZpbHRlcigpXCJcbiAgICAgICAgKHJldHVybkhvbWVQcmVzc2VkKT1cInJldHVyblRvSG9tZVBhZ2UoKVwiPlxuICAgICAgPC9uZy1taWFtLWNhdGFsb2ctdG9vbGJhcj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIFByb21vdGlvbnMgYmFubmVyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19wcm9tb3Rpb25zLWJhbm5lclwiICpuZ0lmPVwiZGlzcGxheUhvbWVQYWdlKClcIj5cbiAgICAgIDxuZy1taWFtLXByb21vdGlvbnMtYmFubmVyIChjbGlja2VkKT1cImdvVG9Qcm9tb3Rpb25zKClcIj48L25nLW1pYW0tcHJvbW90aW9ucy1iYW5uZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInJlY2lwZUNvdW50ID4gMFwiIGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fY29udGVudF9fbXlNZWFsX19idXR0b25cIiAoY2xpY2spPVwidG9nZ2xlTXlNZWFsRHJhd2VyKClcIj5cbiAgICAgIDxpbWdcbiAgICAgICAgc3JjPVwiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Fzc2V0cy5taWFtLnRlY2gvZ2VuZXJpYy9pY29ucy9jdXRsZXJ5LXdoaXRlLnN2Z1wiXG4gICAgICAgIGFsdD1cIkN1dGxlcnlcIlxuICAgICAgICBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX215TWVhbF9fZmlyc3RfX2ljb25cIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fbXlNZWFsX19idXR0b25fX3RleHQgbWlhbS1kcy10ZXh0IHdlaWdodC14bFwiPlxuICAgICAgICA8c3Bhbj57eyByZWNpcGVDb3VudCB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gaTE4bj4gcmVwYXMgZGFucyB2b3RyZSBwYW5pZXI8L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8aW1nXG4gICAgICAgIHNyYz1cImh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvaWNvbnMvY2hldnJvbi1kb3duLXdoaXRlLnN2Z1wiXG4gICAgICAgIGFsdD1cIkNhcmV0XCJcbiAgICAgICAgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19teU1lYWxfX3NlY29uZF9faWNvblwiPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBVc2VyIGZlZWRiYWNrIGJhbm5lciAodW51c2VkIGZvciBub3cgLyBtYXliZSByZWFjdGl2YXRlZCBsYXRlcikgLS0+XG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fY29udGVudF9fdXNlci1mZWVkYmFja19fbW9kYWxcIiAqbmdJZj1cInNob3dVc2VyRmVlZGJhY2tcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50X191c2VyLWZlZWRiYWNrXCI+XG4gICAgICAgIDxuZy1taWFtLWljb24gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50X191c2VyLWZlZWRiYWNrX19pY29uLWNyb3NzXCIgKGNsaWNrKT1cImNsb3NlTW9kYWwoKVwiIFtpY29uTmFtZV09XCJpY29uLkNyb3NzXCIgW3dpZHRoXT1cIjMwXCIgW2hlaWdodF09XCIzMFwiIHByaW1hcnlDb2xvcj1cIm5vbmVcIj48L25nLW1pYW0taWNvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NvbnRlbnRfX3VzZXItZmVlZGJhY2tfX3RpdGxlXCI+XG4gICAgICAgICAgICA8c3Bhbj5Qb3VyIG1pZXV4IHZvdXMgY29ubmHDrnRyZTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50X191c2VyLWZlZWRiYWNrX19xdWVzdGlvblwiPlxuICAgICAgICAgICAgPHNwYW4+QXZlei12b3VzIGwnaGFiaXR1ZGUgZGUgY3Vpc2luZXIgcG91ciBvdSBhdmVjIGRlcyBlbmZhbnRzID88L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50X191c2VyLWZlZWRiYWNrX19hY3Rpb25zXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm0tZmVlZGJhY2stYnV0dG9uXCIgKGNsaWNrKT1cInNldFVzZXJQcmVmZXJlbmNlKCdoYXNfY2hpbGRyZW4nLCBmYWxzZSlcIj5Ob248L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibS1mZWVkYmFjay1idXR0b25cIiAoY2xpY2spPVwic2V0VXNlclByZWZlcmVuY2UoJ2hhc19jaGlsZHJlbicsIHRydWUpXCI+T3VpPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+IC0tPlxuXG4gICAgPCEtLSBDYXRhbG9nIHBhZ2UgY29udGVudCB3aGVuIGZpbHRlcnMgYXBwbGllZCAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiKCFkaXNwbGF5SG9tZVBhZ2UoKSB8fCBmb3JjZUxpc3RWaWV3KSBlbHNlIGNhdGVnb3JpZXNDb21wb25lbnRzXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19saXN0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fY29udGVudF9fdGl0bGVcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fY29udGVudF9fdGl0bGUtaWNvbiBtaWFtLWRzLWJ1dHRvbiBwcmltYXJ5IHNxdWFyZVwiXG4gICAgICAgICAgKGNsaWNrKT1cInJldHVyblRvSG9tZVBhZ2UoKVwiPlxuICAgICAgICAgIDxpbWcgYWx0PVwicmV0dXJuXCIgc3JjPVwiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Fzc2V0cy5taWFtLnRlY2gvZ2VuZXJpYy9pY29ucy9BcnJvd0xlZnRfd2hpdGUuc3ZnXCI+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fY29udGVudF9fdGl0bGVfX3NlYXJjaF9fdGV4dFwiICpuZ0lmPVwiaXNTZWFyY2hQYWdlKClcIj5cbiAgICAgICAgICA8c3BhbiBpMThuPlZvdHJlIHJlY2hlcmNoZSA6IDwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj57eyBmaWx0ZXJzLnNlYXJjaCB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50X190aXRsZV9fZmF2b3JpdGVzX190ZXh0XCIgKm5nSWY9XCJpc0Zhdm9yaXRlc1BhZ2UoKVwiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udGV4dFNlcnZpY2Uub3JkZXJIaXN0b3J5RW5hYmxlZFwiIGkxOG4+TW9uIGNhcm5ldDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjb250ZXh0U2VydmljZS5vcmRlckhpc3RvcnlFbmFibGVkXCIgaTE4bj5GYXZvcmlzPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50X190aXRsZV9fcHJvbW90aW9uc19fdGV4dFwiICpuZ0lmPVwiaXNQcm9tb3Rpb25zUGFnZSgpXCIgaTE4bj5Qcm9tb3M8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fY29udGVudF9fdGl0bGVfX2FsbC1yZWNpcGVzX190ZXh0XCIgKm5nSWY9XCJpc0FsbFJlY2lwZXNQYWdlKClcIiBpMThuPlRvdXRlcyBub3MgcmVjZXR0ZXM8L3NwYW4+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50X190aXRsZV9fY2F0ZWdvcnlcIiAqbmdJZj1cImlzQ2F0ZWdvcnlQYWdlKClcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tZHMtdGV4dCBzaXplLWwgd2VpZ2h0LXh4bFwiPnt7IGZpbHRlcnMuYWRkaXRpb25hbEZpbHRlcnMudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWx0ZXJzLmFkZGl0aW9uYWxGaWx0ZXJzLnN1YnRpdGxlPy5sZW5ndGggPiAwXCIgY2xhc3M9XCJtaWFtLWRzLXRleHQgc2l6ZS1zIHdlaWdodC1sXCI+XG4gICAgICAgICAgICB7eyBmaWx0ZXJzLmFkZGl0aW9uYWxGaWx0ZXJzLnN1YnRpdGxlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50X19kZWZhdWx0X190ZXh0XCIgKm5nSWY9XCJpc0RlZmF1bHRQYWdlKClcIiBpMThuPlZvdHJlIHPDqWxlY3Rpb248L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX190b29sYmFyLWNvbnRhaW5lci1hbmNob3JcIj48L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJpc0Zhdm9yaXRlc1BhZ2UoKSAmJiBjb250ZXh0U2VydmljZS5vcmRlckhpc3RvcnlFbmFibGVkXCIgY2xhc3M9XCJtaWFtLWNhdGFsb2ctdGFicyBtaWFtLWRzLXRhYnNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tY2F0YWxvZy10YWJzX19pdGVtIG1pYW0tZHMtdGFiLWl0ZW0gbWlhbS1kcy10ZXh0IGFjdGl2ZVwiXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCIhaGlzdG9yeURpc3BsYXllZFwiXG4gICAgICAgICAgW2NsYXNzLmluYWN0aXZlXT1cImhpc3RvcnlEaXNwbGF5ZWRcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVIaXN0b3J5KGZhbHNlKVwiPlxuICAgICAgICAgIDxpbWcgW3NyY109XCIhaGlzdG9yeURpc3BsYXllZFxuICAgICAgICAgICAgPyAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Fzc2V0cy5taWFtLnRlY2gvZ2VuZXJpYy9pY29ucy9IZWFydC5zdmcnXG4gICAgICAgICAgICA6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL2ljb25zL0hlYXJ0X0dyZXkuc3ZnJ1wiXG4gICAgICAgICAgICBhbHQ9XCJoZWFydCBpY29uXCI+XG4gICAgICAgICAgPHNwYW4gaTE4bj5GYXZvcmlzPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tY2F0YWxvZy10YWJzX19pdGVtIG1pYW0tZHMtdGFiLWl0ZW0gbWlhbS1kcy10ZXh0IGluYWN0aXZlXCJcbiAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImhpc3RvcnlEaXNwbGF5ZWRcIlxuICAgICAgICAgIFtjbGFzcy5pbmFjdGl2ZV09XCIhaGlzdG9yeURpc3BsYXllZFwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUhpc3RvcnkodHJ1ZSlcIj5cbiAgICAgICAgICA8aW1nIFtzcmNdPVwiaGlzdG9yeURpc3BsYXllZFxuICAgICAgICAgICAgPyAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Fzc2V0cy5taWFtLnRlY2gvZ2VuZXJpYy9pY29ucy9IaXN0b3J5LnN2ZydcbiAgICAgICAgICAgIDogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvaWNvbnMvSGlzdG9yeV9HcmV5LnN2ZydcIlxuICAgICAgICAgICAgYWx0PVwiaGlzdG9yeSBpY29uXCI+XG4gICAgICAgICAgPHNwYW4gaTE4bj5IaXN0b3JpcXVlPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX3Rvb2xiYXItY29udGFpbmVyXCIgI3N0aWNreVRvb2xiYXJDb2xsZWN0aW9uPlxuICAgICAgICA8bmctbWlhbS1jYXRhbG9nLXRvb2xiYXJcbiAgICAgICAgICBbaG9tZV09XCJkaXNwbGF5SG9tZVBhZ2UoKVwiXG4gICAgICAgICAgW2hpc3RvcnldPVwiaGlzdG9yeURpc3BsYXllZFwiXG4gICAgICAgICAgW3NlYXJjaFRlcm1dPVwiZmlsdGVycz8uc2VhcmNoXCJcbiAgICAgICAgICBbYWRkaXRpb25hbEZpbHRlcnNUaXRsZV09XCJmaWx0ZXJzPy5hZGRpdGlvbmFsRmlsdGVycz8udGl0bGVcIlxuICAgICAgICAgIFtoaWRlQnV0dG9uc109XCJpc0Zhdm9yaXRlc1BhZ2UoKVwiXG4gICAgICAgICAgW2ZpbHRlckJhZGdlQ291bnRdPVwiZmlsdGVycy5zZWxlY3RhYmxlRmlsdGVyc0NvdW50KClcIlxuICAgICAgICAgIFtyZWR1Y2VkXT1cInN0aWNreVRvb2xiYXJDb2xsZWN0aW9uLmNsYXNzTGlzdC5jb250YWlucygnc3RpY2tpbmcnKVwiXG4gICAgICAgICAgKGZpbHRlckJ1dHRvblByZXNzZWQpPVwib25GaWx0ZXJDb2xsYXBzZWQoKVwiXG4gICAgICAgICAgKHByZWZlcmVuY2VzQnV0dG9uUHJlc3NlZCk9XCJpc1ByZWZlcmVuY2VNb2RhbE9wZW4gPSAhaXNQcmVmZXJlbmNlTW9kYWxPcGVuXCJcbiAgICAgICAgICAoc2VhcmNoU3RyaW5nQ2hhbmdlZCk9XCJ1cGRhdGVTZWFyY2goJGV2ZW50KVwiXG4gICAgICAgICAgKGZhdm9yaXRlc0J1dHRvblByZXNzZWQpPVwiY2hlY2tBbmRTZXRGYXZvcml0ZXNGaWx0ZXIoKVwiXG4gICAgICAgICAgKHJldHVybkhvbWVQcmVzc2VkKT1cInJldHVyblRvSG9tZVBhZ2UoKVwiPlxuICAgICAgICA8L25nLW1pYW0tY2F0YWxvZy10b29sYmFyPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctbWlhbS1jYXRhbG9nLWxpc3RcbiAgICAgICAgKm5nSWY9XCIhaGlzdG9yeURpc3BsYXllZFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ21pYW0tcmVjaXBlLWNhdGFsb2dfX2Zhdm9yaXRlcy1saXN0JzogaXNGYXZvcml0ZXNQYWdlKCksXG4gICAgICAgICdtaWFtLXJlY2lwZS1jYXRhbG9nX19zZWFyY2gtbGlzdCc6IGlzU2VhcmNoUGFnZSgpLFxuICAgICAgICAnbWlhbS1yZWNpcGUtY2F0YWxvZ19fYWxsLXJlY2lwZXMtbGlzdCc6IGlzQWxsUmVjaXBlc1BhZ2UoKSxcbiAgICAgICAgJ21pYW0tcmVjaXBlLWNhdGFsb2dfX2NhdGVnb3J5LWxpc3QnOiBpc0NhdGVnb3J5UGFnZSgpLFxuICAgICAgICAnbWlhbS1yZWNpcGUtY2F0YWxvZ19fZGVmYXVsdC1saXN0JzogaXNEZWZhdWx0UGFnZSgpXG4gICAgICAgIH1cIlxuICAgICAgICBbZmlsdGVyc109XCJmaWx0ZXJzXCJcbiAgICAgICAgW29yaWdpblRyYWNlXT1cImV2ZW50VHJhY2VcIlxuICAgICAgICBbZGlzcGxheVByaWNpbmddPVwiZGlzcGxheVByaWNpbmdcIlxuICAgICAgICBbZGlzcGxheUluZm9zXT1cImRpc3BsYXlJbmZvc1wiXG4gICAgICAgIChmaWx0ZXJSZW1vdmVkKT1cInJlbW92ZUZpbHRlcigkZXZlbnQpXCJcbiAgICAgICAgW21vZGlmaWVkR3Vlc3RzXT1cImd1ZXN0c1wiXG4gICAgICAgIFtkaXNwbGF5UmVjaXBlVmFyaWFudF09XCJkaXNwbGF5UmVjaXBlVmFyaWFudFwiPlxuICAgICAgPC9uZy1taWFtLWNhdGFsb2ctbGlzdD5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19oaXN0b3J5LWNvbnRhaW5lclwiICpuZ0lmPVwiY29udGV4dFNlcnZpY2Uub3JkZXJIaXN0b3J5RW5hYmxlZCAmJiBoaXN0b3J5RGlzcGxheWVkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19oaXN0b3J5LWxvYWRlclwiICpuZ0lmPVwiaGlzdG9yeVNlcnZpY2UuZmV0Y2hpbmdIVE1MTG9hZGVyJC52YWx1ZVwiID5cbiAgICAgICAgICA8bmctbWlhbS1sb2FkZXI+PC9uZy1taWFtLWxvYWRlcj5cbiAgICAgICAgICA8c3BhbiBpMThuPlxuICAgICAgICAgICAgQ2hhcmdlbWVudCBkZXMgcsOpc3VsdGF0cy4uLlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJoaXN0b3J5SFRNTFwiPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxuZy1taWFtLXJlY2lwZS1maWx0ZXJzXG4gICAgW2ZpbHRlcnNdPVwiZmlsdGVyc1wiXG4gICAgW2lzRmlsdGVyQ29sbGFwc2VkXT1cImlzRmlsdGVyQ29sbGFwc2VkXCJcbiAgICBbZmlsdGVyVG9SZW1vdmVdPVwiZmlsdGVyVG9SZW1vdmVcIlxuICAgIFtwb3NpdGlvbl09XCJmaWx0ZXJzUG9zaXRpb25cIlxuICAgIChmaWx0ZXJDaGFuZ2VkKT1cInVwZGF0ZUZpbHRlcnMoJGV2ZW50KVwiXG4gICAgKGZpbHRlckNvbGxhcHNlZCk9XCJvbkZpbHRlckNvbGxhcHNlZCgpXCJcbiAgICAocHJlZmVyZW5jZXNDaGFuZ2VkKT1cInJlbG9hZFBhY2thZ2VzKClcIlxuICA+XG4gIDwvbmctbWlhbS1yZWNpcGUtZmlsdGVycz5cbiAgPG5nLW1pYW0tcHJlZmVyZW5jZXNcbiAgICBbKGlzT3BlbildPVwiaXNQcmVmZXJlbmNlTW9kYWxPcGVuXCJcbiAgICBbZmlsdGVyc109XCJmaWx0ZXJzXCJcbiAgICAocHJlZmVyZW5jZXNDaGFuZ2VkKT1cInVwZGF0ZUZpbHRlcnMoZmlsdGVycywgZmFsc2UpOyByZWxvYWRQYWNrYWdlcygpXCJcbiAgPlxuICA8L25nLW1pYW0tcHJlZmVyZW5jZXM+XG5cbiAgPCEtLSBDYXRhbG9nIGhvbWUgcGFnZSBjb250ZW50IC0tPlxuICA8bmctdGVtcGxhdGUgI2NhdGVnb3JpZXNDb21wb25lbnRzPlxuICAgIDxkaXYgKm5nSWY9XCJjYXRlZ29yaWVzLmxlbmd0aCA+IDBcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NhdGVnb3JpZXNcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXMgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaSAhPT0gMCBlbHNlIGZpcnN0Q2F0ZWdvcnlcIj5cbiAgICAgICAgICA8bmctbWlhbS1jYXRhbG9nLWNhdGVnb3J5XG4gICAgICAgICAgICBbdGl0bGVdPVwiY2F0ZWdvcnkudGl0bGVcIlxuICAgICAgICAgICAgW3N1YnRpdGxlXT1cImNhdGVnb3J5LnN1YnRpdGxlXCJcbiAgICAgICAgICAgIFtmaWx0ZXJzXT1cImNhdGVnb3J5LmZpbHRlcnNcIlxuICAgICAgICAgICAgW21heFJlY2lwZU51bWJlcl09XCJtYXhSZWNpcGVzUGVyQ2F0ZWdvcnlcIlxuICAgICAgICAgICAgW2Rpc3BsYXlJbmZvc109XCJkaXNwbGF5SW5mb3NcIlxuICAgICAgICAgICAgW2Rpc3BsYXlQcmljaW5nXT1cImRpc3BsYXlQcmljaW5nXCJcbiAgICAgICAgICAgIFtvcmlnaW5UcmFjZV09XCJldmVudFRyYWNlXCJcbiAgICAgICAgICAgIFttb2RpZmllZEd1ZXN0c109XCJndWVzdHNcIlxuICAgICAgICAgICAgW2Rpc3BsYXlSZWNpcGVWYXJpYW50XT1cImRpc3BsYXlSZWNpcGVWYXJpYW50XCJcbiAgICAgICAgICAgIChkaXNwbGF5TGlzdCk9XCJjYXRlZ29yeVRpdGxlQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9uZy1taWFtLWNhdGFsb2ctY2F0ZWdvcnk+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2ZpcnN0Q2F0ZWdvcnk+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2ZpcnN0LWNhdGVnb3J5XCI+XG4gICAgICAgICAgICA8bmctbWlhbS1tZWFscy1wbGFubmVyLWxpbmsgKm5nSWY9XCJjb250ZXh0U2VydmljZS5lbmFibGVNZWFsc1BsYW5uZXIkIHwgYXN5bmNcIj48L25nLW1pYW0tbWVhbHMtcGxhbm5lci1saW5rPlxuICAgICAgICAgICAgPG5nLW1pYW0tY2F0YWxvZy1jYXRlZ29yeVxuICAgICAgICAgICAgICBbdGl0bGVdPVwiY2F0ZWdvcnkudGl0bGVcIlxuICAgICAgICAgICAgICBbc3VidGl0bGVdPVwiY2F0ZWdvcnkuc3VidGl0bGVcIlxuICAgICAgICAgICAgICBbZmlsdGVyc109XCJjYXRlZ29yeS5maWx0ZXJzXCJcbiAgICAgICAgICAgICAgW2Rpc3BsYXlJbmZvc109XCJkaXNwbGF5SW5mb3NcIlxuICAgICAgICAgICAgICBbZGlzcGxheVByaWNpbmddPVwiZGlzcGxheVByaWNpbmdcIlxuICAgICAgICAgICAgICBbbWF4UmVjaXBlTnVtYmVyXT1cIm1heFJlY2lwZXNQZXJDYXRlZ29yeVwiXG4gICAgICAgICAgICAgIFttb2RpZmllZEd1ZXN0c109XCJndWVzdHNcIlxuICAgICAgICAgICAgICBbZGlzcGxheVJlY2lwZVZhcmlhbnRdPVwiZGlzcGxheVJlY2lwZVZhcmlhbnRcIlxuICAgICAgICAgICAgICBbb3JpZ2luVHJhY2VdPVwiZXZlbnRUcmFjZVwiXG4gICAgICAgICAgICAgIChkaXNwbGF5TGlzdCk9XCJjYXRlZ29yeVRpdGxlQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKGlzSGlkZGVuKT1cImNhdGVnb3J5SGlkZGVuKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy1taWFtLWNhdGFsb2ctY2F0ZWdvcnk+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2FsbC1iYW5uZXJcIiAoY2xpY2spPVwic2VlQWxsUmVjaXBlcygpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fYWxsLWJhbm5lcl9fdGV4dCBtaWFtLWRzLXRleHQgc2l6ZS1tIHdlaWdodC14bFwiIGkxOG4+VG91dGVzIG5vcyByZWNldHRlczwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2FsbC1iYW5uZXJfX2ljb25cIj5cbiAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL2ljb25zL0Fycm93TGVmdF9ibGFjay5zdmdcIiBhbHQ9XCJhcnJvdyByaWdodFwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
|
|
927
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLWNhdGFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWlhbS9zcmMvbGliL193ZWItY29tcG9uZW50cy9yZWNpcGUtY2F0YWxvZy9yZWNpcGUtY2F0YWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1taWFtL3NyYy9saWIvX3dlYi1jb21wb25lbnRzL3JlY2lwZS1jYXRhbG9nL3JlY2lwZS1jYXRhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFHTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBRW5FLE9BQU8sRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRTFGLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLHNCQUFzQixFQUN0QixjQUFjLEVBQ2QsY0FBYyxFQUNkLGNBQWMsRUFDZCxjQUFjLEVBQ2QsY0FBYyxFQUNkLGdCQUFnQixFQUNoQixXQUFXLEVBQ1osTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7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QU07YUFDaEQ7cWFBRW9DLGFBQWE7a0JBQS9DLFNBQVM7bUJBQUMsc0JBQXNCO1lBQ0csY0FBYztrQkFBakQsU0FBUzttQkFBQyx1QkFBdUI7WUFDQyxTQUFTO2tCQUEzQyxTQUFTO21CQUFDLHNCQUFzQjtZQUNGLGdCQUFnQjtrQkFBOUMsU0FBUzttQkFBQyxrQkFBa0I7WUFDVyxjQUFjO2tCQUFyRCxZQUFZO21CQUFDLHdCQUF3QjtZQUU3QixnQkFBZ0I7a0JBQXhCLEtBQUs7WUFDRyxZQUFZO2tCQUFwQixLQUFLO1lBQ0csZUFBZTtrQkFBdkIsS0FBSztZQUNHLFNBQVM7a0JBQWpCLEtBQUs7WUFDRyxZQUFZO2tCQUFwQixLQUFLO1lBQ0csY0FBYztrQkFBdEIsS0FBSztZQUNHLG9CQUFvQjtrQkFBNUIsS0FBSztZQUNHLHFCQUFxQjtrQkFBN0IsS0FBSztZQUNHLGFBQWE7a0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZWRpYU1hdGNoZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgRG9jdW1lbnRDb2xsZWN0aW9uIH0gZnJvbSAnbWlhbS1qc29uYXBpJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc2tpcFdoaWxlLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEV2ZW50VHJhY2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vX2NvbXBvbmVudHMvYWJzdHJhY3RzL2V2ZW50LXRyYWNlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2F0YWxvZ1NldHRpbmcsIFBhY2thZ2UsIFJlY2lwZSwgU3VwcGxpZXIgfSBmcm9tICcuLi8uLi9fbW9kZWxzJztcbmltcG9ydCB7XG4gIEFuYWx5dGljc1NlcnZpY2UsXG4gIEJhc2tldHNTZXJ2aWNlLFxuICBDYXRhbG9nU2V0dGluZ3NTZXJ2aWNlLFxuICBDb250ZXh0U2VydmljZSxcbiAgSGlzdG9yeVNlcnZpY2UsXG4gIFBhY2thZ2VTZXJ2aWNlLFxuICBSZWNpcGVzU2VydmljZSxcbiAgU3BvbnNvclNlcnZpY2UsXG4gIFN1cHBsaWVyc1NlcnZpY2UsXG4gIFVzZXJTZXJ2aWNlXG59IGZyb20gJy4uLy4uL19zZXJ2aWNlcyc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vLi4vX3R5cGVzL2ljb24uZW51bSc7XG5pbXBvcnQgeyBJQWRkaXRpb25uYWxGaWx0ZXJzLCBSZWNpcGVGaWx0ZXIsIFJlY2lwZUZpbHRlcnMgfSBmcm9tICcuLi8uLi9fdHlwZXMvcmVjaXBlLWZpbHRlcnMnO1xuaW1wb3J0IHsgQ2F0YWxvZ0NhdGVnb3J5Q29tcG9uZW50IH0gZnJvbSAnLi9jYXRhbG9nLWNhdGVnb3J5L2NhdGFsb2ctY2F0ZWdvcnkuY29tcG9uZW50JztcbmltcG9ydCB7IENhdGFsb2dIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2NhdGFsb2ctaGVhZGVyL2NhdGFsb2ctaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYXRhbG9nVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vY2F0YWxvZy10b29sYmFyL2NhdGFsb2ctdG9vbGJhci5jb21wb25lbnQnO1xuXG5pbnRlcmZhY2UgQ2F0ZWdvcnkge1xuICBrZXk6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgc3VidGl0bGU6IHN0cmluZztcbiAgZmlsdGVyczogUmVjaXBlRmlsdGVycztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctbWlhbS1yZWNpcGUtY2F0YWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWNpcGUtY2F0YWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlY2lwZS1jYXRhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFJlY2lwZUNhdGFsb2dDb21wb25lbnQgZXh0ZW5kcyBFdmVudFRyYWNlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZChDYXRhbG9nSGVhZGVyQ29tcG9uZW50KSBjYXRhbG9nSGVhZGVyOiBDYXRhbG9nSGVhZGVyQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKENhdGFsb2dUb29sYmFyQ29tcG9uZW50KSBjYXRhbG9nVG9vbGJhcjogQ2F0YWxvZ1Rvb2xiYXJDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ21pYW1DYXRhbG9nVG9wQW5jaG9yJykgdG9wQW5jaG9yOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgncmV0dXJuSG9tZUJ1dHRvbicpIHJldHVybkhvbWVCdXR0b246IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkcmVuKENhdGFsb2dDYXRlZ29yeUNvbXBvbmVudCkgY2F0ZWdvcmllc0NvbXAhOiBRdWVyeUxpc3Q8Q2F0YWxvZ0NhdGVnb3J5Q29tcG9uZW50PjtcblxuICBASW5wdXQoKSBoZWFkZXJQaWN0dXJlVXJsID0gJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvaW1hZ2VzL2RlZmF1bHQtY2F0YWxvZy1waWN0dXJlLnBuZyc7XG4gIEBJbnB1dCgpIGluaXRpYWxSb3V0ZSA9ICcnO1xuICBASW5wdXQoKSBmaWx0ZXJzUG9zaXRpb24gPSAncmlnaHQnO1xuICBASW5wdXQoKSBob21lTGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgZGlzcGxheUluZm9zID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc3BsYXlQcmljaW5nID0gdHJ1ZTtcbiAgQElucHV0KCkgZGlzcGxheVJlY2lwZVZhcmlhbnQgPSAxO1xuICBASW5wdXQoKSBtYXhSZWNpcGVzUGVyQ2F0ZWdvcnkgPSAyMDtcbiAgQElucHV0KCkgY3VzdG9tRmlsdGVyczogeyBkaWZmaWN1bHR5PzogUmVjaXBlRmlsdGVyW107IGNvc3Q/OiBSZWNpcGVGaWx0ZXJbXTsgdGltZT86IFJlY2lwZUZpbHRlcltdIH07XG5cbiAgZmlsdGVyczogUmVjaXBlRmlsdGVycztcbiAgaXNGaWx0ZXJDb2xsYXBzZWQgPSB0cnVlO1xuICBpY29uID0gSWNvbjtcbiAgY2F0ZWdvcmllczogQ2F0ZWdvcnlbXSA9IFtdO1xuICByZWNpcGVUb1VwZGF0ZTogUmVjaXBlO1xuICBmaWx0ZXJUb1JlbW92ZTogc3RyaW5nO1xuICBpc01vYmlsZSA9IGZhbHNlO1xuICBzaG93VXNlckZlZWRiYWNrID0gZmFsc2U7XG4gIHJlY2lwZUNvdW50ID0gMDtcbiAgdG90YWxQcmljZSA9IDA7XG4gIGlzTXlNZWFsQ2xvc2UgPSB0cnVlO1xuICBjYXRhbG9nU2V0dGluZzogQ2F0YWxvZ1NldHRpbmc7XG4gIGNhdGFsb2dTZXR0aW5nSGFzTG9hZGVkID0gZmFsc2U7XG4gIGd1ZXN0cyA9ICtsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnX21pYW0vcHJlZmVyZW5jZXMvZ3Vlc3RzJyk7XG4gIGZvcmNlTGlzdFZpZXcgPSBmYWxzZTtcbiAgaGlzdG9yeURpc3BsYXllZCA9IGZhbHNlO1xuICBoaXN0b3J5SFRNTDogU2FmZUh0bWw7XG4gIGhpc3RvcnlTZWFyY2g6IHN0cmluZztcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgaGVhZGVySGVpZ2h0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgc3VwcGxpZXJJZDtcbiAgcHJpdmF0ZSBfaXNQcmVmZXJlbmNlTW9kYWxPcGVuOiBib29sZWFuO1xuICBwcml2YXRlIHN0aWNreVRvb2xiYXJPYnNlcnZlcjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSxcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgc3BvbnNvclNlcnZpY2U6IFNwb25zb3JTZXJ2aWNlLFxuICAgIHB1YmxpYyBzdXBwbGllclNlcnZpY2U6IFN1cHBsaWVyc1NlcnZpY2UsXG4gICAgcHVibGljIHBhY2thZ2VTZXJ2aWNlOiBQYWNrYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZXNTZXJ2aWNlOiBSZWNpcGVzU2VydmljZSxcbiAgICBwdWJsaWMgbWVkaWFNYXRjaGVyOiBNZWRpYU1hdGNoZXIsXG4gICAgcHVibGljIHVzZXJzU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHVibGljIGNhdGFsb2dTZXR0aW5nU2VydmljZTogQ2F0YWxvZ1NldHRpbmdzU2VydmljZSxcbiAgICBwdWJsaWMgYmFza2V0c1NlcnZpY2U6IEJhc2tldHNTZXJ2aWNlLFxuICAgIHB1YmxpYyBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHVibGljIGhpc3RvcnlTZXJ2aWNlOiBIaXN0b3J5U2VydmljZSxcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyXG4gICkge1xuICAgIHN1cGVyKGFuYWx5dGljc1NlcnZpY2UpO1xuICAgIHRoaXMuaXNNb2JpbGUgPSBtZWRpYU1hdGNoZXIubWF0Y2hNZWRpYSgnKG1heC13aWR0aDogMTAyMnB4KScpLm1hdGNoZXM7XG4gICAgdGhpcy5oaXN0b3J5U2VydmljZS5sb2FkSGlzdG9yeVNjcmlwdHMoKTtcbiAgfVxuXG4gIHNldCBpc1ByZWZlcmVuY2VNb2RhbE9wZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc1ByZWZlcmVuY2VNb2RhbE9wZW4gPSB2YWx1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBnZXQgaXNQcmVmZXJlbmNlTW9kYWxPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1ByZWZlcmVuY2VNb2RhbE9wZW47XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuaXNNZWFselBhZ2UgPSB0cnVlO1xuICAgIHRoaXMucGFnZXZpZXcoKTtcbiAgICB0aGlzLmluaXRGaWx0ZXJzKCk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuc3VwcGxpZXJTZXJ2aWNlLnN1cHBsaWVyJC5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgICBza2lwV2hpbGUoc3VwcCA9PiBzdXBwID09PSB1bmRlZmluZWQgfHwgc3VwcCA9PSBudWxsKSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgc3dpdGNoTWFwKHN1cHBsaWVyID0+IHtcbiAgICAgICAgICB0aGlzLnN1cHBsaWVySWQgPSBzdXBwbGllci5pZDtcbiAgICAgICAgICB0aGlzLmluaXRDYXRhbG9nSGVhZGVyKHN1cHBsaWVyKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkUGFja2FnZXMoKTtcbiAgICAgICAgfSlcbiAgICAgICkuc3Vic2NyaWJlKCksXG4gICAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLmJhc2tldFN0YXRzJC5waXBlKHNraXBXaGlsZShicyA9PiAhYnMpKS5zdWJzY3JpYmUoYnMgPT4ge1xuICAgICAgICB0aGlzLnJlY2lwZUNvdW50ID0gYnMucmVjaXBlc0NvdW50O1xuICAgICAgICB0aGlzLnRvdGFsUHJpY2UgPSBicy50b3RhbFByaWNlO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KSxcbiAgICAgIHRoaXMuaGlzdG9yeVNlcnZpY2UuZmV0Y2hpbmdIVE1MTG9hZGVyJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KSxcbiAgICAgIHRoaXMuYXNzZXNzU2hvd1VzZXJGZWVkYmFjaygpLFxuICAgICAgdGhpcy5leGVjdXRlU3RvcmVkTWV0aG9kSWZMb2dnZWRJbigpLnN1YnNjcmliZSgpXG4gICAgKTtcblxuICAgIHRoaXMuc2V0RGlyZWN0QWNjZXNzKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuRmVhdHVyZXNGcm9tVVJMKCk7XG4gICAgdGhpcy5pbml0SGVhZGVySGVpZ2h0TGlzdGVuZXIoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuaXNNZWFselBhZ2UgPSBmYWxzZTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgdGhpcy5oZWFkZXJIZWlnaHRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zdGlja3lUb29sYmFyT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIGN1cnJlbnRQYXRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdyZWNpcGVzJztcbiAgfVxuXG4gIG9wZW5GZWF0dXJlc0Zyb21VUkwoKTogdm9pZCB7XG4gICAgY29uc3QgcGFyYW1zQXJyYXkgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgIGlmIChwYXJhbXNBcnJheS5nZXQoJ29wZW5CYXNrZXQnKSA9PT0gJ3RydWUnKSB7XG4gICAgICB0aGlzLnRvZ2dsZU15TWVhbERyYXdlcigpO1xuICAgIH1cbiAgICBjb25zdCBjb3N0ID0gcGFyYW1zQXJyYXkuZ2V0KCdjb3N0Jyk/LnNwbGl0KCcsJyk7XG4gICAgaWYgKGNvc3Q/Lmxlbmd0aCA9PT0gMikge1xuICAgICAgdGhpcy5zZXRQcmljZUZpbHRlcnMoY29zdCk7XG4gICAgfVxuICB9XG5cbiAgZGlzcGxheUhvbWVQYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpbHRlcnMuaXNFbXB0eSgpICYmICF0aGlzLmZvcmNlTGlzdFZpZXc7XG4gIH1cblxuICB0b2dnbGVIaXN0b3J5KGRpc3BsYXk6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoZGlzcGxheSkge1xuICAgICAgdGhpcy5sb2FkSGlzdG9yeUNvbnRlbnQoKTtcbiAgICB9XG4gICAgdGhpcy5oaXN0b3J5RGlzcGxheWVkID0gZGlzcGxheTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICAvLyBpbml0IHRoZSB2YWx1ZSBvZiB0aGUgaW1hZ2UgYW5kIHRoZSB0ZXh0IGZvciB0aGUgY2F0YWxvZyBoZWFkZXIsIHVzaW5nIHRoZSBjYXRhbG9nIHNldHRpbmcgb2YgdGhlIHN1cHBsaWVyXG4gIGluaXRDYXRhbG9nSGVhZGVyKHN1cHBsaWVyOiBTdXBwbGllcik6IHZvaWQge1xuICAgIGlmIChzdXBwbGllci5yZWxhdGlvbnNoaXBzWydjYXRhbG9nLXNldHRpbmcnXT8uZGF0YSkge1xuICAgICAgY29uc3QgaWQgPSBzdXBwbGllci5yZWxhdGlvbnNoaXBzWydjYXRhbG9nLXNldHRpbmcnXT8uZGF0YT8uaWQ7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgdGhpcy5jYXRhbG9nU2V0dGluZ1NlcnZpY2UuZ2V0KGlkKS5waXBlKFxuICAgICAgICAgIHNraXBXaGlsZShjID0+IGMuaXNfbG9hZGluZyksXG4gICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICB0YXAoY2F0YWxvZyA9PiB7XG4gICAgICAgICAgICB0aGlzLmNhdGFsb2dTZXR0aW5nID0gY2F0YWxvZztcbiAgICAgICAgICAgIHRoaXMuY2F0YWxvZ1NldHRpbmdIYXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5zZXRTdGlja3lPYnNlcnZlcigpO1xuICAgICAgICAgIH0pXG4gICAgICAgICkuc3Vic2NyaWJlKClcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vIGNhdGFsb2cgc2V0dGluZyByZXR1cm5lZCBieSBhcGkgPT4gbG9hZCBjYXRhbG9nIGhlYWRlciBuZXZlcnRoZWxlc3MgaW4gZGVmYXVsdCBtb2RlXG4gICAgICB0aGlzLmNhdGFsb2dTZXR0aW5nSGFzTG9hZGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHRoaXMuc2V0U3RpY2t5T2JzZXJ2ZXIoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRlZXBDbG9uZUFuZFJlc2V0VmFsdWVzKGZpbHRlcnM6IFJlY2lwZUZpbHRlcltdKTogUmVjaXBlRmlsdGVyW10ge1xuICAgIHJldHVybiBmaWx0ZXJzLm1hcChmaWx0ZXIgPT4gKHsgLi4uZmlsdGVyLCB2YWx1ZTogZmFsc2UgfSkpO1xuICB9XG5cbiAgLy8gVXNlZCBvbiBsb2FkIHRvIGJ1aWxkIHRoZSBmaWx0ZXJzIGF0dHJpYnV0ZSwgYW5kIG9uIGNsaWNrIG9uIHRoZSBsaW5rIHRvIHJlc2V0IHRoZSBmaWx0ZXJzXG4gIGluaXRGaWx0ZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuZm9yY2VMaXN0VmlldyA9IGZhbHNlO1xuICAgIHRoaXMuZmlsdGVycyA9IG5ldyBSZWNpcGVGaWx0ZXJzKFxuICAgICAge1xuICAgICAgICBkaWZmaWN1bHR5OiB0aGlzLnJlY2lwZXNTZXJ2aWNlLmRpZmZpY3VsdHlMZXZlbHMubWFwKGYgPT4gKHsgbmFtZTogZi52YWx1ZS50b1N0cmluZygpLCB0ZXh0OiBmLmxhYmVsLCB2YWx1ZTogZmFsc2UgfSkpLFxuICAgICAgICBjb3N0OiBbXG4gICAgICAgICAgeyBuYW1lOiAnMC01JywgdmFsdWU6IGZhbHNlIH0sXG4gICAgICAgICAgeyBuYW1lOiAnNS0xMCcsIHZhbHVlOiBmYWxzZSB9LFxuICAgICAgICAgIHsgbmFtZTogJzEwLTEwMDAnLCB2YWx1ZTogZmFsc2UgfVxuICAgICAgICAgIC8vIHdlIHNldCBhIGxpbWl0IGF0IDEwMDDigqwgbWF4LCBpZiBhIHJlY2lwZSBjb3N0IG1vcmUgc2hvdWxkIGJlIG5vbiBzZW5zZSBhbnl3YXlcbiAgICAgICAgXSxcbiAgICAgICAgdGltZTogW1xuICAgICAgICAgIHsgbmFtZTogJzE1JywgdmFsdWU6IGZhbHNlIH0sXG4gICAgICAgICAgeyBuYW1lOiAnMzAnLCB2YWx1ZTogZmFsc2UgfSxcbiAgICAgICAgICB7IG5hbWU6ICc2MCcsIHZhbHVlOiBmYWxzZSB9LFxuICAgICAgICAgIHsgbmFtZTogJzEyMCcsIHZhbHVlOiBmYWxzZSB9XG5cbiAgICAgICAgXVxuICAgICAgfVxuICAgICk7XG4gICAgaWYgKHRoaXMuY3VzdG9tRmlsdGVycykge1xuICAgICAgT2JqZWN0LmtleXModGhpcy5jdXN0b21GaWx0ZXJzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIHRoaXMuZmlsdGVyc1trZXldID0gdGhpcy5kZWVwQ2xvbmVBbmRSZXNldFZhbHVlcyh0aGlzLmN1c3RvbUZpbHRlcnNba2V5XSBhcyBSZWNpcGVGaWx0ZXJbXSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY2F0YWxvZ1Rvb2xiYXIpIHtcbiAgICAgIHRoaXMuY2F0YWxvZ1Rvb2xiYXIucmVzZXRTZWFyY2hTdHJpbmcoKTtcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJzLnNlYXJjaCA9ICcnO1xuICAgIHRoaXMuZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycyA9IG51bGw7XG4gIH1cblxuICB1cGRhdGVGaWx0ZXJzKGZpbHRlcnM6IFJlY2lwZUZpbHRlcnMsIGZvcmNlTGlzdFZpZXcgPSB0cnVlKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJzID0gZmlsdGVycy5jb3B5KCk7IC8vIG5lY2Vzc2FyeSB0byB0cmlnZ2VyIGNoaWxkIGNvbXBvbmVudCBjaGFuZ2VcbiAgICB0aGlzLmZvcmNlTGlzdFZpZXcgPSBmb3JjZUxpc3RWaWV3O1xuICAgIHRoaXMuZmlsdGVyVG9SZW1vdmUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuc2V0U3RpY2t5T2JzZXJ2ZXIoKTtcbiAgICB0aGlzLnJldHVyblRvVG9wKCk7XG4gIH1cblxuICBzZWVBbGxSZWNpcGVzKCk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycyA9IHsgdGl0bGU6ICdUb3V0ZXMgbm9zIHJlY2V0dGVzJywgZmlsdGVyczoge30gfTtcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcnModGhpcy5maWx0ZXJzKTtcbiAgfVxuXG4gIHVwZGF0ZVNlYXJjaChzZWFyY2g6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhpc3RvcnlEaXNwbGF5ZWQgJiYgc2VhcmNoICE9PSB0aGlzLmhpc3RvcnlTZWFyY2gpIHtcbiAgICAgIHRoaXMubG9hZEhpc3RvcnlDb250ZW50KHNlYXJjaCk7XG4gICAgfSBlbHNlIGlmIChzZWFyY2ggIT09IHRoaXMuZmlsdGVycy5zZWFyY2gpIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBPYmplY3QuYXNzaWduKHRoaXMuZmlsdGVycywgeyBzZWFyY2ggfSk7XG4gICAgICB0aGlzLnVwZGF0ZUZpbHRlcnMoZmlsdGVycyk7XG4gICAgfVxuICB9XG5cbiAgY2F0ZWdvcnlIaWRkZW4oaGlkZGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKCFoaWRkZW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jYXRlZ29yaWVzLnNwbGljZSgwLCAxKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBjYXRlZ29yeVRpdGxlQ2xpY2tlZChldmVudDogeyB0aXRsZTogc3RyaW5nOyBzdWJ0aXRsZTogc3RyaW5nOyBmaWx0ZXJzOiBJQWRkaXRpb25uYWxGaWx0ZXJzIH0pOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJzID0gT2JqZWN0LmFzc2lnbih0aGlzLmZpbHRlcnMsIHtcbiAgICAgIGFkZGl0aW9uYWxGaWx0ZXJzOiB7IGZpbHRlcnM6IGV2ZW50LmZpbHRlcnMsIHRpdGxlOiBldmVudC50aXRsZSwgc3VidGl0bGU6IGV2ZW50LnN1YnRpdGxlIH1cbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcnMoZmlsdGVycyk7XG4gIH1cblxuICBnb1RvUHJvbW90aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLnNldFByb21vdGlvbnNGaWx0ZXIoKTtcbiAgfVxuXG4gIGNoZWNrQW5kU2V0RmF2b3JpdGVzRmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcmVNZXRob2RJZkNhbGxiYWNrTmVlZGVkKCdzZXRGYXZvcml0ZXNGaWx0ZXInKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRGYXZvcml0ZXNGaWx0ZXIoKTtcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgfSlcbiAgICApLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgc2V0UHJvbW90aW9uc0ZpbHRlcigpIHtcbiAgICB0aGlzLmluaXRGaWx0ZXJzKCk7XG4gICAgY29uc3QgZmlsdGVycyA9IE9iamVjdC5hc3NpZ24odGhpcy5maWx0ZXJzLCB7XG4gICAgICBhZGRpdGlvbmFsRmlsdGVyczoge1xuICAgICAgICBmaWx0ZXJzOiB7IGRpc2NvdW50ZWRfaW5ncmVkaWVudHNfY291bnQ6IDEgfSxcbiAgICAgICAgdGl0bGU6ICdQcm9tb3MnXG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVGaWx0ZXJzKGZpbHRlcnMpO1xuICB9XG5cbiAgc2V0RmF2b3JpdGVzRmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdEZpbHRlcnMoKTtcbiAgICBjb25zdCBmaWx0ZXJzID0gT2JqZWN0LmFzc2lnbih0aGlzLmZpbHRlcnMsIHtcbiAgICAgIGFkZGl0aW9uYWxGaWx0ZXJzOiB7XG4gICAgICAgIGZpbHRlcnM6IHsgbGlrZWQ6IHRydWUgfSxcbiAgICAgICAgdGl0bGU6ICdNZXMgaWTDqWVzIHJlcGFzJ1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlRmlsdGVycyhmaWx0ZXJzKTtcbiAgfVxuXG4gIHN0b3JlTWV0aG9kSWZDYWxsYmFja05lZWRlZChtZXRob2Q6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzVXNlckxvZ2dlZEluKCkucGlwZShcbiAgICAgIHRha2UoMSksXG4gICAgICBtYXAoaXNMb2dnZWRJbiA9PiB7XG4gICAgICAgIGlmICghaXNMb2dnZWRJbikge1xuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdfbWlhbS9zdG9yZUNhbGxiYWNrTWV0aG9kJywgbWV0aG9kKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0U2VydmljZS5ob29rQ2FsbGJhY2soaXNMb2dnZWRJbiwgdHJ1ZSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGlzVXNlckxvZ2dlZEluKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJzU2VydmljZS5pc0xvZ2dlZCQ7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVTdG9yZWRNZXRob2RJZkxvZ2dlZEluKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaXNVc2VyTG9nZ2VkSW4oKS5waXBlKFxuICAgICAgc2tpcFdoaWxlKGlzTG9nZ2VkSW4gPT4gIWlzTG9nZ2VkSW4pLFxuICAgICAgdGFrZSgxKSxcbiAgICAgIG1hcCgoKSA9PiB0aGlzLmdldFN0b3JlZE1ldGhvZCgpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFN0b3JlZE1ldGhvZCgpOiB2b2lkIHtcbiAgICBjb25zdCBtZXRob2QgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnX21pYW0vc3RvcmVDYWxsYmFja01ldGhvZCcpO1xuICAgIGlmIChtZXRob2QgPT09ICdzZXRGYXZvcml0ZXNGaWx0ZXInKSB7XG4gICAgICB0aGlzLnNldEZhdm9yaXRlc0ZpbHRlcigpO1xuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ19taWFtL3N0b3JlQ2FsbGJhY2tNZXRob2QnKTtcbiAgICB9XG4gIH1cblxuICBzZXRQcmljZUZpbHRlcnMoY29zdDogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJzID0gT2JqZWN0LmFzc2lnbih0aGlzLmZpbHRlcnMsIHtcbiAgICAgIGFkZGl0aW9uYWxGaWx0ZXJzOiB7XG4gICAgICAgIGZpbHRlcnM6IHsgY29tcHV0ZWRfY29zdDogY29zdFswXSArICcsZ3QsJyArIGNvc3RbMV0gKyAnLGx0JywgcmVjaXBlX3R5cGVfaWQ6ICdtYWluLWRpc2gnIH0sXG4gICAgICAgIHRpdGxlOiBgUmVjZXR0ZXMgw6AgbW9pbnMgZGUgJHtjb3N0WzFdfeKCrGBcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcnMoZmlsdGVycyk7XG4gIH1cblxuICByZW1vdmVGaWx0ZXIoZmlsdGVyVGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIGZ1bmN0aW9uIGlzIGJyb2tlbiwgdXNlIGhhcyBiZWVuIGNvbW1lbnRhdGVkLCByZXBhaXIgaXQgaWYgeW91IHdhbnQgdG8gdXNlIGl0IGFnYWluJyk7XG4gICAgdGhpcy5maWx0ZXJUb1JlbW92ZSA9IGZpbHRlclRleHQ7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmV0dXJuVG9Ub3AoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudG9wQW5jaG9yKSB7XG4gICAgICB0aGlzLnRvcEFuY2hvci5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuVG9Ib21lUGFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2V2aWV3KCk7XG4gICAgLy8gZWl0aGVyIHlvdSBoYXZlIGZpbHRlcnMgZWl0aGVyIHlvdSBhcmUgb24gaG9tZSBwYWdlLiBUaGF0IG1lYW4gaWYgeW91IGdvIG9uIGhvbWUgcGFnZSB5b3UgZG9uJ3Qgd2FudCBBTlkgZmlsdGVyXG4gICAgdGhpcy5pbml0RmlsdGVycygpO1xuICAgIHRoaXMuaGlzdG9yeURpc3BsYXllZCA9IGZhbHNlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLnNldFN0aWNreU9ic2VydmVyKCk7XG4gICAgdGhpcy5yZXR1cm5Ub1RvcCgpO1xuICB9XG5cbiAgb25GaWx0ZXJDb2xsYXBzZWQoKTogdm9pZCB7XG4gICAgdGhpcy5pc0ZpbHRlckNvbGxhcHNlZCA9ICF0aGlzLmlzRmlsdGVyQ29sbGFwc2VkO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHJlbG9hZFBhY2thZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuZ3Vlc3RzID0gK2xvY2FsU3RvcmFnZS5nZXRJdGVtKCdfbWlhbS9wcmVmZXJlbmNlcy9ndWVzdHMnKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMubG9hZFBhY2thZ2VzKCkuc3Vic2NyaWJlKClcbiAgICApO1xuICB9XG5cbiAgaXNTZWFyY2hQYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5kaXNwbGF5SG9tZVBhZ2UoKSAmJiAhdGhpcy5oaXN0b3J5RGlzcGxheWVkICYmIHRoaXMuZmlsdGVycy5zZWFyY2ggJiYgdGhpcy5maWx0ZXJzLnNlYXJjaC5sZW5ndGggPiAwO1xuICB9XG5cbiAgaXNGYXZvcml0ZXNQYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5kaXNwbGF5SG9tZVBhZ2UoKSAmJiAhdGhpcy5pc1NlYXJjaFBhZ2UoKSAmJiB0aGlzLmZpbHRlcnM/LmFkZGl0aW9uYWxGaWx0ZXJzPy50aXRsZSA9PT0gJ01lcyBpZMOpZXMgcmVwYXMnO1xuICB9XG5cbiAgaXNQcm9tb3Rpb25zUGFnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuZGlzcGxheUhvbWVQYWdlKCkgJiYgIXRoaXMuaXNTZWFyY2hQYWdlKCkgJiYgdGhpcy5maWx0ZXJzPy5hZGRpdGlvbmFsRmlsdGVycz8udGl0bGUgPT09ICdQcm9tb3MnO1xuICB9XG5cbiAgaXNBbGxSZWNpcGVzUGFnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgIXRoaXMuZGlzcGxheUhvbWVQYWdlKCkgJiZcbiAgICAgICF0aGlzLmlzU2VhcmNoUGFnZSgpICYmXG4gICAgICAhdGhpcy5pc0Zhdm9yaXRlc1BhZ2UoKSAmJlxuICAgICAgIXRoaXMuaXNQcm9tb3Rpb25zUGFnZSgpICYmXG4gICAgICB0aGlzLmZpbHRlcnM/LmFkZGl0aW9uYWxGaWx0ZXJzPy50aXRsZSA9PT0gJ1RvdXRlcyBub3MgcmVjZXR0ZXMnXG4gICAgKTtcbiAgfVxuXG4gIGlzQ2F0ZWdvcnlQYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAhdGhpcy5kaXNwbGF5SG9tZVBhZ2UoKSAmJlxuICAgICAgIXRoaXMuaXNTZWFyY2hQYWdlKCkgJiZcbiAgICAgICF0aGlzLmlzRmF2b3JpdGVzUGFnZSgpICYmXG4gICAgICAhdGhpcy5pc1Byb21vdGlvbnNQYWdlKCkgJiZcbiAgICAgICF0aGlzLmlzQWxsUmVjaXBlc1BhZ2UoKSAmJlxuICAgICAgdGhpcy5maWx0ZXJzPy5hZGRpdGlvbmFsRmlsdGVycz8udGl0bGU/Lmxlbmd0aCA+IDBcbiAgICApO1xuICB9XG5cbiAgaXNEZWZhdWx0UGFnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgIXRoaXMuZGlzcGxheUhvbWVQYWdlKCkgJiZcbiAgICAgICF0aGlzLmlzU2VhcmNoUGFnZSgpICYmXG4gICAgICAhdGhpcy5pc0Zhdm9yaXRlc1BhZ2UoKSAmJlxuICAgICAgIXRoaXMuaXNQcm9tb3Rpb25zUGFnZSgpICYmXG4gICAgICAhdGhpcy5pc0FsbFJlY2lwZXNQYWdlKCkgJiZcbiAgICAgICF0aGlzLmlzQ2F0ZWdvcnlQYWdlKCkpO1xuICB9XG5cbiAgdG9nZ2xlTXlNZWFsRHJhd2VyKCk6IHZvaWQge1xuICAgIHRoaXMucmVjaXBlc1NlcnZpY2Uub3BlbkJhc2tldCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkUGFja2FnZXMoKTogT2JzZXJ2YWJsZTxEb2N1bWVudENvbGxlY3Rpb248UGFja2FnZT4+IHtcbiAgICByZXR1cm4gdGhpcy5wYWNrYWdlU2VydmljZS5jYXRlZ29yaWVzX2ZvcihbdGhpcy5zdXBwbGllcklkXSBhcyBzdHJpbmdbXSkucGlwZShcbiAgICAgIHNraXBXaGlsZShwYWNrYWdlcyA9PiBwYWNrYWdlcy5pc19sb2FkaW5nKSxcbiAgICAgIHRhcCgocGFja2FnZXM6IERvY3VtZW50Q29sbGVjdGlvbjxQYWNrYWdlPikgPT4ge1xuICAgICAgICB0aGlzLmluaXRDYXRlZ29yaWVzKHBhY2thZ2VzKTtcbiAgICAgICAgdGhpcy5zZWxlY3RDYXRlZ29yeUZyb21VcmwoKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkSGlzdG9yeUNvbnRlbnQoc2VhcmNoID0gJycpOiB2b2lkIHtcbiAgICBpZiAoc2VhcmNoICE9PSAnJykge1xuICAgICAgdGhpcy5oaXN0b3J5SFRNTCA9IG51bGw7XG4gICAgfVxuICAgIGlmICh0aGlzLmhpc3RvcnlIVE1MKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5oaXN0b3J5U2VydmljZS5kaXNwbGF5SGlzdG9yeShzZWFyY2gpLnN1YnNjcmliZShoaXN0b3J5SFRNTCA9PiB7XG4gICAgICB0aGlzLmhpc3RvcnlTZWFyY2ggPSBzZWFyY2g7XG4gICAgICAgIHRoaXMuaGlzdG9yeUhUTUwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChoaXN0b3J5SFRNTCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHRoaXMuaGlzdG9yeVNlcnZpY2UucmVwbGFjZU5vSGlzdG9yeVJlZGlyZWN0aW9uKHRoaXMuY29udGV4dFNlcnZpY2UuY2F0YWxvZ1VybCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXRDYXRlZ29yaWVzKHBhY2thZ2VzOiBEb2N1bWVudENvbGxlY3Rpb248UGFja2FnZT4pOiB2b2lkIHtcbiAgICB0aGlzLmNhdGVnb3JpZXMgPSBwYWNrYWdlcy5kYXRhLm1hcChjYXRlZ29yeVBhY2thZ2UgPT4gKHtcbiAgICAgIGtleTogY2F0ZWdvcnlQYWNrYWdlLnRpdGxlLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teYS16QS1aMC05IC1dLywgJycpLnJlcGxhY2UoL1xccy9nLCAnLScpLFxuICAgICAgdGl0bGU6IGNhdGVnb3J5UGFja2FnZS50aXRsZSxcbiAgICAgIHN1YnRpdGxlOiBjYXRlZ29yeVBhY2thZ2Uuc3VidGl0bGUsXG4gICAgICBmaWx0ZXJzOiBuZXcgUmVjaXBlRmlsdGVycyh7XG4gICAgICAgIGFkZGl0aW9uYWxGaWx0ZXJzOiB7XG4gICAgICAgICAgZmlsdGVyczogeyBwYWNrYWdlczogY2F0ZWdvcnlQYWNrYWdlLmlkIH0sXG4gICAgICAgICAgdGl0bGU6ICcnXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RDYXRlZ29yeUZyb21VcmwoKTogdm9pZCB7XG4gICAgY29uc3QgcGFyYW1zQXJyYXkgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgIGlmIChwYXJhbXNBcnJheS5nZXQoJ2NhdGFsb2dDYXRlZ29yeScpID09PSAnZmF2b3JpdGVzJykge1xuICAgICAgcmV0dXJuIHRoaXMuY2hlY2tBbmRTZXRGYXZvcml0ZXNGaWx0ZXIoKTtcbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0ZWRDYXRlZ29yeSA9IHRoaXMuY2F0ZWdvcmllcy5maW5kKGNhdCA9PiBjYXQua2V5ID09PSBwYXJhbXNBcnJheS5nZXQoJ2NhdGFsb2dDYXRlZ29yeScpKTtcbiAgICBpZiAoc2VsZWN0ZWRDYXRlZ29yeSkge1xuICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcnlUaXRsZUNsaWNrZWQoe1xuICAgICAgICB0aXRsZTogc2VsZWN0ZWRDYXRlZ29yeS50aXRsZSxcbiAgICAgICAgc3VidGl0bGU6IHNlbGVjdGVkQ2F0ZWdvcnkuc3VidGl0bGUsXG4gICAgICAgIGZpbHRlcnM6IHNlbGVjdGVkQ2F0ZWdvcnkuZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycy5maWx0ZXJzXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBTaG93IGZlZWRiYWNrIGJsb2NrIG9ubHkgaWYgdXNlciBpcyBsb2dnZWQgYW5kIHRoZSBjaGlsZHJlbiBwcmVmZXJlbmNlIGlzIHVua25vd25cbiAgcHJpdmF0ZSBhc3Nlc3NTaG93VXNlckZlZWRiYWNrKCk6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy51c2Vyc1NlcnZpY2UuaXNMb2dnZWQkLFxuICAgICAgdGhpcy51c2Vyc1NlcnZpY2UuaGFzUHJlZmVyZW5jZSgnaGFzX2NoaWxkcmVuJyksXG4gICAgICB0aGlzLnVzZXJzU2VydmljZS5wcmVmZXJlbmNlc0FjdGl2YXRlZCRcbiAgICBdKS5zdWJzY3JpYmUocmVzdWx0cyA9PiB7XG4gICAgICBjb25zdCBsb2dnZWQgPSByZXN1bHRzWzBdO1xuICAgICAgY29uc3QgcHJlZmVyZW5jZURlZmluZWQgPSByZXN1bHRzWzFdO1xuICAgICAgY29uc3QgcHJlZmVyZW5jZXNBY3RpdmF0ZWQgPSByZXN1bHRzWzJdO1xuICAgICAgdGhpcy5zaG93VXNlckZlZWRiYWNrID0gbG9nZ2VkICYmICFwcmVmZXJlbmNlRGVmaW5lZCAmJiBwcmVmZXJlbmNlc0FjdGl2YXRlZDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGlyZWN0QWNjZXNzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmluaXRpYWxSb3V0ZSAhPT0gJycpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5pbml0aWFsUm91dGUpIHtcbiAgICAgICAgY2FzZSAnbWVzLXJlcGFzJzpcbiAgICAgICAgICB0aGlzLnRvZ2dsZU15TWVhbERyYXdlcigpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyZWNldHRlcy1mYXZvcml0ZXMnOlxuICAgICAgICAgIHRoaXMuY2hlY2tBbmRTZXRGYXZvcml0ZXNGaWx0ZXIoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGhlYWRlciBoZWlnaHQgbGlzdGVuZXIgYW5kIHN1YnNjcmliZXMgdG8gY2hhbmdlcyBpbiB0aGUgc3VwcGxpZXIgaGVhZGVyIGhlaWdodC5cbiAgICovXG4gIHByaXZhdGUgaW5pdEhlYWRlckhlaWdodExpc3RlbmVyKCk6IHZvaWQge1xuICAgIHRoaXMuaGVhZGVySGVpZ2h0U3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2Uuc3VwcGxpZXJIZWFkZXJIZWlnaHQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGFuY2hvckVsbTogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubWlhbS1yZWNpcGUtY2F0YWxvZ19fdG9vbGJhci1jb250YWluZXItYW5jaG9yJyk7XG4gICAgICAgIGlmIChhbmNob3JFbG0pIHtcbiAgICAgICAgICAvLyBSZXNldCBzdGlja3lPYnNlcnZlciBlYWNoIHRpbWUgdGhlIGhlYWRlciBoZWlnaHQgY2hhbmdlcyBzbyB0aGF0IHJvb3RNYXJnaW4gd291bGQgdXBkYXRlXG4gICAgICAgICAgdGhpcy5zZXRTdGlja3lPYnNlcnZlcigpO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc3RpY2t5IG9ic2VydmVyIGZvciB0aGUgdG9vbGJhci5cbiAgICovXG4gIHByaXZhdGUgc2V0U3RpY2t5T2JzZXJ2ZXIoKTogdm9pZCB7XG4gICAgY29uc3QgYW5jaG9yRWxtOiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5taWFtLXJlY2lwZS1jYXRhbG9nX190b29sYmFyLWNvbnRhaW5lci1hbmNob3InKTtcbiAgICBjb25zdCB0b29sYmFyRWxtOiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5taWFtLXJlY2lwZS1jYXRhbG9nX190b29sYmFyLWNvbnRhaW5lcicpO1xuICAgIGlmICghYW5jaG9yRWxtIHx8ICF0b29sYmFyRWxtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3RNYXJnaW46IGAtJHt0aGlzLmNvbnRleHRTZXJ2aWNlLnN1cHBsaWVySGVhZGVySGVpZ2h0JC52YWx1ZX1weCAwcHggMHB4IDBweGAsXG4gICAgICB0aHJlc2hvbGQ6IDFcbiAgICB9O1xuICAgIC8vIFN0b3Agb2JzZXJ2aW5nIHRoZSBwcmV2aW91cyBhbmNob3IgZWxlbWVudFxuICAgIHRoaXMuc3RpY2t5VG9vbGJhck9ic2VydmVyPy51bm9ic2VydmUoYW5jaG9yRWxtKTtcbiAgICB0aGlzLnN0aWNreVRvb2xiYXJPYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRTdGlja3lUb29sYmFyU3R5bGUoYW5jaG9yRWxtLCB0b29sYmFyRWxtKTtcbiAgICAgIH0sXG4gICAgICBvcHRpb25zXG4gICAgKTtcbiAgICB0aGlzLnN0aWNreVRvb2xiYXJPYnNlcnZlci5vYnNlcnZlKGFuY2hvckVsbSk7XG4gIH1cblxuICBwcml2YXRlIHNldFN0aWNreVRvb2xiYXJTdHlsZShhbmNob3JFbG06IEhUTUxFbGVtZW50LCB0b29sYmFyRWxtOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IHJlY3QgPSBhbmNob3JFbG0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3Qgc3VwcGxpZXJIZWFkZXJIZWlnaHQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLnN1cHBsaWVySGVhZGVySGVpZ2h0JC52YWx1ZTtcbiAgICBjb25zdCBhY3RpdmF0ZWQgPSB0b29sYmFyRWxtLmNsYXNzTGlzdC50b2dnbGUoJ3N0aWNraW5nJywgcmVjdC50b3AgPCBzdXBwbGllckhlYWRlckhlaWdodCk7XG4gICAgLy8gU2V0IHRoZSBoZWlnaHQgb2YgdGhlIHRhcmdldCBlbGVtZW50XG4gICAgYW5jaG9yRWxtLnN0eWxlLmhlaWdodCA9IGFjdGl2YXRlZCA/IHRvb2xiYXJFbG0uY2xpZW50SGVpZ2h0ICsgJ3B4JyA6ICcwcHgnO1xuICAgIC8vIFNldCB0aGUgdG9wIHBvc2l0aW9uIG9mIHRoZSB0b29sYmFyXG4gICAgdG9vbGJhckVsbS5zdHlsZS50b3AgPSBzdXBwbGllckhlYWRlckhlaWdodCArICdweCc7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG4iLCI8ZGl2ICNtaWFtQ2F0YWxvZ1RvcEFuY2hvciBjbGFzcz1cIm1pYW0tY2F0YWxvZy1hbmNob3JcIj48L2Rpdj5cbjxkaXYgKm5nSWY9XCJjYXRhbG9nU2V0dGluZ0hhc0xvYWRlZFwiIGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ1wiPlxuICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fY29udGVudFwiPlxuICAgIDxuZy1taWFtLWNhdGFsb2ctaGVhZGVyXG4gICAgICBbaG9tZV09XCJkaXNwbGF5SG9tZVBhZ2UoKVwiXG4gICAgICBbaGlzdG9yeV09XCJoaXN0b3J5RGlzcGxheWVkXCJcbiAgICAgIFtzZWFyY2hUZXJtXT1cImZpbHRlcnM/LnNlYXJjaFwiXG4gICAgICBbYWRkaXRpb25hbEZpbHRlcnNUaXRsZV09XCJmaWx0ZXJzPy5hZGRpdGlvbmFsRmlsdGVycz8udGl0bGVcIlxuICAgICAgW2hvbWVMYWJlbF09XCJob21lTGFiZWxcIlxuICAgICAgW3BpY3R1cmVVcmxdPVwiZGlzcGxheUhvbWVQYWdlKCkgPyBoZWFkZXJQaWN0dXJlVXJsIDogbnVsbFwiXG4gICAgICBbY2F0YWxvZ1NldHRpbmddPVwiY2F0YWxvZ1NldHRpbmdcIlxuICAgICAgKHJldHVybkJ1dHRvblByZXNzZWQpPVwicmV0dXJuVG9Ib21lUGFnZSgpXCI+XG4gICAgPC9uZy1taWFtLWNhdGFsb2ctaGVhZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX190b29sYmFyLWNvbnRhaW5lci1hbmNob3JcIiAqbmdJZj1cImRpc3BsYXlIb21lUGFnZSgpXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX3Rvb2xiYXItY29udGFpbmVyXCIgKm5nSWY9XCJkaXNwbGF5SG9tZVBhZ2UoKVwiICNzdGlja3lUb29sYmFyPlxuICAgICAgPG5nLW1pYW0tY2F0YWxvZy10b29sYmFyXG4gICAgICAgIFtob21lXT1cImRpc3BsYXlIb21lUGFnZSgpXCJcbiAgICAgICAgW2hpc3RvcnldPVwiaGlzdG9yeURpc3BsYXllZFwiXG4gICAgICAgIFtzZWFyY2hUZXJtXT1cImZpbHRlcnM/LnNlYXJjaFwiXG4gICAgICAgIFthZGRpdGlvbmFsRmlsdGVyc1RpdGxlXT1cImZpbHRlcnM/LmFkZGl0aW9uYWxGaWx0ZXJzPy50aXRsZVwiXG4gICAgICAgIFtoaWRlQnV0dG9uc109XCJpc0Zhdm9yaXRlc1BhZ2UoKVwiXG4gICAgICAgIFtmaWx0ZXJCYWRnZUNvdW50XT1cImZpbHRlcnMuc2VsZWN0YWJsZUZpbHRlcnNDb3VudCgpXCJcbiAgICAgICAgW3JlZHVjZWRdPVwic3RpY2t5VG9vbGJhci5jbGFzc0xpc3QuY29udGFpbnMoJ3N0aWNraW5nJylcIlxuICAgICAgICAoZmlsdGVyQnV0dG9uUHJlc3NlZCk9XCJvbkZpbHRlckNvbGxhcHNlZCgpXCJcbiAgICAgICAgKHByZWZlcmVuY2VzQnV0dG9uUHJlc3NlZCk9XCJpc1ByZWZlcmVuY2VNb2RhbE9wZW4gPSAhaXNQcmVmZXJlbmNlTW9kYWxPcGVuXCJcbiAgICAgICAgKHNlYXJjaFN0cmluZ0NoYW5nZWQpPVwidXBkYXRlU2VhcmNoKCRldmVudClcIlxuICAgICAgICAoZmF2b3JpdGVzQnV0dG9uUHJlc3NlZCk9XCJjaGVja0FuZFNldEZhdm9yaXRlc0ZpbHRlcigpXCJcbiAgICAgICAgKHJldHVybkhvbWVQcmVzc2VkKT1cInJldHVyblRvSG9tZVBhZ2UoKVwiPlxuICAgICAgPC9uZy1taWFtLWNhdGFsb2ctdG9vbGJhcj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIFByb21vdGlvbnMgYmFubmVyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19wcm9tb3Rpb25zLWJhbm5lclwiICpuZ0lmPVwiZGlzcGxheUhvbWVQYWdlKClcIj5cbiAgICA8bmctbWlhbS1wcm9tb3Rpb25zLWJhbm5lciAoY2xpY2tlZCk9XCJnb1RvUHJvbW90aW9ucygpXCI+PC9uZy1taWFtLXByb21vdGlvbnMtYmFubmVyPlxuICAgIDwvZGl2PlxuICAgIDxidXR0b24gKm5nSWY9XCJyZWNpcGVDb3VudCA+IDBcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NvbnRlbnRfX215TWVhbF9fYnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZU15TWVhbERyYXdlcigpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInVm9pciB2b3RyZSBwYW5pZXIgYXZlYyAnICsgcmVjaXBlQ291bnQgKyAnIHJlcGFzJ1wiPlxuICAgICAgPGltZ1xuICAgICAgICBzcmM9XCJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL2ljb25zL2N1dGxlcnktd2hpdGUuc3ZnXCJcbiAgICAgICAgYWx0PVwiXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19teU1lYWxfX2ZpcnN0X19pY29uXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX215TWVhbF9fYnV0dG9uX190ZXh0IG1pYW0tZHMtdGV4dCB3ZWlnaHQteGxcIj5cbiAgICAgICAgPHNwYW4+e3sgcmVjaXBlQ291bnQgfX08L3NwYW4+XG4gICAgICAgIDxzcGFuIGkxOG4+IHJlcGFzIGRhbnMgdm90cmUgcGFuaWVyPC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgPGltZ1xuICAgICAgICBzcmM9XCJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL2ljb25zL2NoZXZyb24tZG93bi13aGl0ZS5zdmdcIlxuICAgICAgICBhbHQ9XCJcIiBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX215TWVhbF9fc2Vjb25kX19pY29uXCI+XG4gICAgPC9idXR0b24+XG5cbiAgICA8IS0tIFVzZXIgZmVlZGJhY2sgYmFubmVyICh1bnVzZWQgZm9yIG5vdyAvIG1heWJlIHJlYWN0aXZhdGVkIGxhdGVyKSAtLT5cbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50X191c2VyLWZlZWRiYWNrX19tb2RhbFwiICpuZ0lmPVwic2hvd1VzZXJGZWVkYmFja1wiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NvbnRlbnRfX3VzZXItZmVlZGJhY2tcIj5cbiAgICAgICAgPG5nLW1pYW0taWNvbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NvbnRlbnRfX3VzZXItZmVlZGJhY2tfX2ljb24tY3Jvc3NcIiAoY2xpY2spPVwiY2xvc2VNb2RhbCgpXCIgW2ljb25OYW1lXT1cImljb24uQ3Jvc3NcIiBbd2lkdGhdPVwiMzBcIiBbaGVpZ2h0XT1cIjMwXCIgcHJpbWFyeUNvbG9yPVwibm9uZVwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fY29udGVudF9fdXNlci1mZWVkYmFja19fdGl0bGVcIj5cbiAgICAgICAgICAgIDxzcGFuPlBvdXIgbWlldXggdm91cyBjb25uYcOudHJlPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NvbnRlbnRfX3VzZXItZmVlZGJhY2tfX3F1ZXN0aW9uXCI+XG4gICAgICAgICAgICA8c3Bhbj5BdmV6LXZvdXMgbCdoYWJpdHVkZSBkZSBjdWlzaW5lciBwb3VyIG91IGF2ZWMgZGVzIGVuZmFudHMgPzwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NvbnRlbnRfX3VzZXItZmVlZGJhY2tfX2FjdGlvbnNcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibS1mZWVkYmFjay1idXR0b25cIiAoY2xpY2spPVwic2V0VXNlclByZWZlcmVuY2UoJ2hhc19jaGlsZHJlbicsIGZhbHNlKVwiPk5vbjwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtLWZlZWRiYWNrLWJ1dHRvblwiIChjbGljayk9XCJzZXRVc2VyUHJlZmVyZW5jZSgnaGFzX2NoaWxkcmVuJywgdHJ1ZSlcIj5PdWk8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj4gLS0+XG5cbiAgICA8IS0tIENhdGFsb2cgcGFnZSBjb250ZW50IHdoZW4gZmlsdGVycyBhcHBsaWVkIC0tPlxuICAgIDxkaXYgKm5nSWY9XCIoIWRpc3BsYXlIb21lUGFnZSgpIHx8IGZvcmNlTGlzdFZpZXcpIGVsc2UgY2F0ZWdvcmllc0NvbXBvbmVudHNcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2xpc3RcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50X190aXRsZVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50X190aXRsZS1pY29uIG1pYW0tZHMtYnV0dG9uIHByaW1hcnkgc3F1YXJlXCJcbiAgICAgICAgICAoY2xpY2spPVwicmV0dXJuVG9Ib21lUGFnZSgpXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiUmV0b3VyIMOgIGxhIHBhZ2UgZCdhY2N1ZWlsXCI+XG4gICAgICAgICAgPGltZyBhbHQ9XCJcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBzcmM9XCJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL2ljb25zL0Fycm93TGVmdF93aGl0ZS5zdmdcIj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50X190aXRsZV9fc2VhcmNoX190ZXh0XCIgKm5nSWY9XCJpc1NlYXJjaFBhZ2UoKVwiPlxuICAgICAgICAgIDxzcGFuIGkxOG4+Vm90cmUgcmVjaGVyY2hlIDogPC9zcGFuPlxuICAgICAgICAgIDxzcGFuPnt7IGZpbHRlcnMuc2VhcmNoIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NvbnRlbnRfX3RpdGxlX19mYXZvcml0ZXNfX3RleHRcIiAqbmdJZj1cImlzRmF2b3JpdGVzUGFnZSgpXCI+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb250ZXh0U2VydmljZS5vcmRlckhpc3RvcnlFbmFibGVkXCIgaTE4bj5Nb24gY2FybmV0PC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbnRleHRTZXJ2aWNlLm9yZGVySGlzdG9yeUVuYWJsZWRcIiBpMThuPkZhdm9yaXM8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NvbnRlbnRfX3RpdGxlX19wcm9tb3Rpb25zX190ZXh0XCIgKm5nSWY9XCJpc1Byb21vdGlvbnNQYWdlKClcIiBpMThuPlByb21vczwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50X190aXRsZV9fYWxsLXJlY2lwZXNfX3RleHRcIiAqbmdJZj1cImlzQWxsUmVjaXBlc1BhZ2UoKVwiIGkxOG4+VG91dGVzIG5vcyByZWNldHRlczwvc3Bhbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NvbnRlbnRfX3RpdGxlX19jYXRlZ29yeVwiICpuZ0lmPVwiaXNDYXRlZ29yeVBhZ2UoKVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1kcy10ZXh0IHNpemUtbCB3ZWlnaHQteHhsXCI+e3sgZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycy50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpbHRlcnMuYWRkaXRpb25hbEZpbHRlcnMuc3VidGl0bGU/Lmxlbmd0aCA+IDBcIiBjbGFzcz1cIm1pYW0tZHMtdGV4dCBzaXplLXMgd2VpZ2h0LWxcIj5cbiAgICAgICAgICAgIHt7IGZpbHRlcnMuYWRkaXRpb25hbEZpbHRlcnMuc3VidGl0bGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NvbnRlbnRfX2RlZmF1bHRfX3RleHRcIiAqbmdJZj1cImlzRGVmYXVsdFBhZ2UoKVwiIGkxOG4+Vm90cmUgc8OpbGVjdGlvbjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX3Rvb2xiYXItY29udGFpbmVyLWFuY2hvclwiPjwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImlzRmF2b3JpdGVzUGFnZSgpICYmIGNvbnRleHRTZXJ2aWNlLm9yZGVySGlzdG9yeUVuYWJsZWRcIiBjbGFzcz1cIm1pYW0tY2F0YWxvZy10YWJzIG1pYW0tZHMtdGFic1wiIHJvbGU9XCJ0YWJsaXN0XCIgYXJpYS1sYWJlbD1cIk9wdGlvbnMgZGUgZmF2b3Jpc1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJtaWFtLWNhdGFsb2ctdGFic19faXRlbSBtaWFtLWRzLXRhYi1pdGVtIG1pYW0tZHMtdGV4dFwiXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCIhaGlzdG9yeURpc3BsYXllZFwiXG4gICAgICAgICAgW2NsYXNzLmluYWN0aXZlXT1cImhpc3RvcnlEaXNwbGF5ZWRcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVIaXN0b3J5KGZhbHNlKVwiXG4gICAgICAgICAgcm9sZT1cInRhYlwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCIhaGlzdG9yeURpc3BsYXllZFwiXG4gICAgICAgICAgaWQ9XCJmYXZvcml0ZXMtdGFiXCJcbiAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwiZmF2b3JpdGVzLXBhbmVsXCI+XG4gICAgICAgICAgPGltZyBbc3JjXT1cIiFoaXN0b3J5RGlzcGxheWVkXG4gICAgICAgICAgICA/ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL2ljb25zL0hlYXJ0LnN2ZydcbiAgICAgICAgICAgIDogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvaWNvbnMvSGVhcnRfR3JleS5zdmcnXCJcbiAgICAgICAgICAgIGFsdD1cIlwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgIDxzcGFuIGkxOG4+RmF2b3Jpczwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cIm1pYW0tY2F0YWxvZy10YWJzX19pdGVtIG1pYW0tZHMtdGFiLWl0ZW0gbWlhbS1kcy10ZXh0XCJcbiAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImhpc3RvcnlEaXNwbGF5ZWRcIlxuICAgICAgICAgIFtjbGFzcy5pbmFjdGl2ZV09XCIhaGlzdG9yeURpc3BsYXllZFwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUhpc3RvcnkodHJ1ZSlcIlxuICAgICAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaGlzdG9yeURpc3BsYXllZFwiXG4gICAgICAgICAgaWQ9XCJoaXN0b3J5LXRhYlwiXG4gICAgICAgICAgYXJpYS1jb250cm9scz1cImhpc3RvcnktcGFuZWxcIj5cbiAgICAgICAgICA8aW1nIFtzcmNdPVwiaGlzdG9yeURpc3BsYXllZFxuICAgICAgICAgICAgPyAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Fzc2V0cy5taWFtLnRlY2gvZ2VuZXJpYy9pY29ucy9IaXN0b3J5LnN2ZydcbiAgICAgICAgICAgIDogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvaWNvbnMvSGlzdG9yeV9HcmV5LnN2ZydcIlxuICAgICAgICAgICAgYWx0PVwiXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgPHNwYW4gaTE4bj5IaXN0b3JpcXVlPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX3Rvb2xiYXItY29udGFpbmVyXCIgI3N0aWNreVRvb2xiYXJDb2xsZWN0aW9uPlxuICAgICAgICA8bmctbWlhbS1jYXRhbG9nLXRvb2xiYXJcbiAgICAgICAgICBbaG9tZV09XCJkaXNwbGF5SG9tZVBhZ2UoKVwiXG4gICAgICAgICAgW2hpc3RvcnldPVwiaGlzdG9yeURpc3BsYXllZFwiXG4gICAgICAgICAgW3NlYXJjaFRlcm1dPVwiZmlsdGVycz8uc2VhcmNoXCJcbiAgICAgICAgICBbYWRkaXRpb25hbEZpbHRlcnNUaXRsZV09XCJmaWx0ZXJzPy5hZGRpdGlvbmFsRmlsdGVycz8udGl0bGVcIlxuICAgICAgICAgIFtoaWRlQnV0dG9uc109XCJpc0Zhdm9yaXRlc1BhZ2UoKVwiXG4gICAgICAgICAgW2ZpbHRlckJhZGdlQ291bnRdPVwiZmlsdGVycy5zZWxlY3RhYmxlRmlsdGVyc0NvdW50KClcIlxuICAgICAgICAgIFtyZWR1Y2VkXT1cInN0aWNreVRvb2xiYXJDb2xsZWN0aW9uLmNsYXNzTGlzdC5jb250YWlucygnc3RpY2tpbmcnKVwiXG4gICAgICAgICAgKGZpbHRlckJ1dHRvblByZXNzZWQpPVwib25GaWx0ZXJDb2xsYXBzZWQoKVwiXG4gICAgICAgICAgKHByZWZlcmVuY2VzQnV0dG9uUHJlc3NlZCk9XCJpc1ByZWZlcmVuY2VNb2RhbE9wZW4gPSAhaXNQcmVmZXJlbmNlTW9kYWxPcGVuXCJcbiAgICAgICAgICAoc2VhcmNoU3RyaW5nQ2hhbmdlZCk9XCJ1cGRhdGVTZWFyY2goJGV2ZW50KVwiXG4gICAgICAgICAgKGZhdm9yaXRlc0J1dHRvblByZXNzZWQpPVwiY2hlY2tBbmRTZXRGYXZvcml0ZXNGaWx0ZXIoKVwiXG4gICAgICAgICAgKHJldHVybkhvbWVQcmVzc2VkKT1cInJldHVyblRvSG9tZVBhZ2UoKVwiPlxuICAgICAgICA8L25nLW1pYW0tY2F0YWxvZy10b29sYmFyPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctbWlhbS1jYXRhbG9nLWxpc3RcbiAgICAgICAgKm5nSWY9XCIhaGlzdG9yeURpc3BsYXllZFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ21pYW0tcmVjaXBlLWNhdGFsb2dfX2Zhdm9yaXRlcy1saXN0JzogaXNGYXZvcml0ZXNQYWdlKCksXG4gICAgICAgICdtaWFtLXJlY2lwZS1jYXRhbG9nX19zZWFyY2gtbGlzdCc6IGlzU2VhcmNoUGFnZSgpLFxuICAgICAgICAnbWlhbS1yZWNpcGUtY2F0YWxvZ19fYWxsLXJlY2lwZXMtbGlzdCc6IGlzQWxsUmVjaXBlc1BhZ2UoKSxcbiAgICAgICAgJ21pYW0tcmVjaXBlLWNhdGFsb2dfX2NhdGVnb3J5LWxpc3QnOiBpc0NhdGVnb3J5UGFnZSgpLFxuICAgICAgICAnbWlhbS1yZWNpcGUtY2F0YWxvZ19fZGVmYXVsdC1saXN0JzogaXNEZWZhdWx0UGFnZSgpXG4gICAgICAgIH1cIlxuICAgICAgICBbZmlsdGVyc109XCJmaWx0ZXJzXCJcbiAgICAgICAgW29yaWdpblRyYWNlXT1cImV2ZW50VHJhY2VcIlxuICAgICAgICBbZGlzcGxheVByaWNpbmddPVwiZGlzcGxheVByaWNpbmdcIlxuICAgICAgICBbZGlzcGxheUluZm9zXT1cImRpc3BsYXlJbmZvc1wiXG4gICAgICAgIChmaWx0ZXJSZW1vdmVkKT1cInJlbW92ZUZpbHRlcigkZXZlbnQpXCJcbiAgICAgICAgW21vZGlmaWVkR3Vlc3RzXT1cImd1ZXN0c1wiXG4gICAgICAgIFtkaXNwbGF5UmVjaXBlVmFyaWFudF09XCJkaXNwbGF5UmVjaXBlVmFyaWFudFwiXG4gICAgICAgIGlkPVwiZmF2b3JpdGVzLXBhbmVsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImlzRmF2b3JpdGVzUGFnZSgpICYmIGNvbnRleHRTZXJ2aWNlLm9yZGVySGlzdG9yeUVuYWJsZWQgPyAnZmF2b3JpdGVzLXRhYicgOiBudWxsXCI+XG4gICAgICA8L25nLW1pYW0tY2F0YWxvZy1saXN0PlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2hpc3RvcnktY29udGFpbmVyXCJcbiAgICAgICAgICAgKm5nSWY9XCJjb250ZXh0U2VydmljZS5vcmRlckhpc3RvcnlFbmFibGVkICYmIGhpc3RvcnlEaXNwbGF5ZWRcIlxuICAgICAgICAgICBpZD1cImhpc3RvcnktcGFuZWxcIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2hpc3RvcnktdGFiJ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19faGlzdG9yeS1sb2FkZXJcIiAqbmdJZj1cImhpc3RvcnlTZXJ2aWNlLmZldGNoaW5nSFRNTExvYWRlciQudmFsdWVcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICA8bmctbWlhbS1sb2FkZXI+PC9uZy1taWFtLWxvYWRlcj5cbiAgICAgICAgICA8c3BhbiBpMThuPlxuICAgICAgICAgICAgQ2hhcmdlbWVudCBkZXMgcsOpc3VsdGF0cy4uLlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJoaXN0b3J5SFRNTFwiPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxuZy1taWFtLXJlY2lwZS1maWx0ZXJzXG4gICAgW2ZpbHRlcnNdPVwiZmlsdGVyc1wiXG4gICAgW2lzRmlsdGVyQ29sbGFwc2VkXT1cImlzRmlsdGVyQ29sbGFwc2VkXCJcbiAgICBbZmlsdGVyVG9SZW1vdmVdPVwiZmlsdGVyVG9SZW1vdmVcIlxuICAgIFtwb3NpdGlvbl09XCJmaWx0ZXJzUG9zaXRpb25cIlxuICAgIChmaWx0ZXJDaGFuZ2VkKT1cInVwZGF0ZUZpbHRlcnMoJGV2ZW50KVwiXG4gICAgKGZpbHRlckNvbGxhcHNlZCk9XCJvbkZpbHRlckNvbGxhcHNlZCgpXCJcbiAgICAocHJlZmVyZW5jZXNDaGFuZ2VkKT1cInJlbG9hZFBhY2thZ2VzKClcIj5cbiAgPC9uZy1taWFtLXJlY2lwZS1maWx0ZXJzPlxuICA8bmctbWlhbS1wcmVmZXJlbmNlc1xuICAgIFsoaXNPcGVuKV09XCJpc1ByZWZlcmVuY2VNb2RhbE9wZW5cIlxuICAgIFtmaWx0ZXJzXT1cImZpbHRlcnNcIlxuICAgIChwcmVmZXJlbmNlc0NoYW5nZWQpPVwidXBkYXRlRmlsdGVycyhmaWx0ZXJzLCBmYWxzZSk7IHJlbG9hZFBhY2thZ2VzKClcIlxuICA+XG4gIDwvbmctbWlhbS1wcmVmZXJlbmNlcz5cblxuICA8IS0tIENhdGFsb2cgaG9tZSBwYWdlIGNvbnRlbnQgLS0+XG4gIDxuZy10ZW1wbGF0ZSAjY2F0ZWdvcmllc0NvbXBvbmVudHM+XG4gICAgPGRpdiAqbmdJZj1cImNhdGVnb3JpZXMubGVuZ3RoID4gMFwiIGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fY2F0ZWdvcmllc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2F0ZWdvcnkgb2YgY2F0ZWdvcmllcyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpICE9PSAwIGVsc2UgZmlyc3RDYXRlZ29yeVwiPlxuICAgICAgICAgIDxuZy1taWFtLWNhdGFsb2ctY2F0ZWdvcnlcbiAgICAgICAgICAgIFt0aXRsZV09XCJjYXRlZ29yeS50aXRsZVwiXG4gICAgICAgICAgICBbc3VidGl0bGVdPVwiY2F0ZWdvcnkuc3VidGl0bGVcIlxuICAgICAgICAgICAgW2ZpbHRlcnNdPVwiY2F0ZWdvcnkuZmlsdGVyc1wiXG4gICAgICAgICAgICBbbWF4UmVjaXBlTnVtYmVyXT1cIm1heFJlY2lwZXNQZXJDYXRlZ29yeVwiXG4gICAgICAgICAgICBbZGlzcGxheUluZm9zXT1cImRpc3BsYXlJbmZvc1wiXG4gICAgICAgICAgICBbZGlzcGxheVByaWNpbmddPVwiZGlzcGxheVByaWNpbmdcIlxuICAgICAgICAgICAgW29yaWdpblRyYWNlXT1cImV2ZW50VHJhY2VcIlxuICAgICAgICAgICAgW21vZGlmaWVkR3Vlc3RzXT1cImd1ZXN0c1wiXG4gICAgICAgICAgICBbZGlzcGxheVJlY2lwZVZhcmlhbnRdPVwiZGlzcGxheVJlY2lwZVZhcmlhbnRcIlxuICAgICAgICAgICAgKGRpc3BsYXlMaXN0KT1cImNhdGVnb3J5VGl0bGVDbGlja2VkKCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L25nLW1pYW0tY2F0YWxvZy1jYXRlZ29yeT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZmlyc3RDYXRlZ29yeT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fZmlyc3QtY2F0ZWdvcnlcIj5cbiAgICAgICAgICAgIDxuZy1taWFtLW1lYWxzLXBsYW5uZXItbGluayAqbmdJZj1cImNvbnRleHRTZXJ2aWNlLmVuYWJsZU1lYWxzUGxhbm5lciQgfCBhc3luY1wiPjwvbmctbWlhbS1tZWFscy1wbGFubmVyLWxpbms+XG4gICAgICAgICAgICA8bmctbWlhbS1jYXRhbG9nLWNhdGVnb3J5XG4gICAgICAgICAgICAgIFt0aXRsZV09XCJjYXRlZ29yeS50aXRsZVwiXG4gICAgICAgICAgICAgIFtzdWJ0aXRsZV09XCJjYXRlZ29yeS5zdWJ0aXRsZVwiXG4gICAgICAgICAgICAgIFtmaWx0ZXJzXT1cImNhdGVnb3J5LmZpbHRlcnNcIlxuICAgICAgICAgICAgICBbZGlzcGxheUluZm9zXT1cImRpc3BsYXlJbmZvc1wiXG4gICAgICAgICAgICAgIFtkaXNwbGF5UHJpY2luZ109XCJkaXNwbGF5UHJpY2luZ1wiXG4gICAgICAgICAgICAgIFttYXhSZWNpcGVOdW1iZXJdPVwibWF4UmVjaXBlc1BlckNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgW21vZGlmaWVkR3Vlc3RzXT1cImd1ZXN0c1wiXG4gICAgICAgICAgICAgIFtkaXNwbGF5UmVjaXBlVmFyaWFudF09XCJkaXNwbGF5UmVjaXBlVmFyaWFudFwiXG4gICAgICAgICAgICAgIFtvcmlnaW5UcmFjZV09XCJldmVudFRyYWNlXCJcbiAgICAgICAgICAgICAgKGRpc3BsYXlMaXN0KT1cImNhdGVnb3J5VGl0bGVDbGlja2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAoaXNIaWRkZW4pPVwiY2F0ZWdvcnlIaWRkZW4oJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLW1pYW0tY2F0YWxvZy1jYXRlZ29yeT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fYWxsLWJhbm5lclwiIChjbGljayk9XCJzZWVBbGxSZWNpcGVzKClcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19hbGwtYmFubmVyX190ZXh0IG1pYW0tZHMtdGV4dCBzaXplLW0gd2VpZ2h0LXhsXCIgaTE4bj5Ub3V0ZXMgbm9zIHJlY2V0dGVzPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fYWxsLWJhbm5lcl9faWNvblwiPlxuICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvaWNvbnMvQXJyb3dMZWZ0X2JsYWNrLnN2Z1wiIGFsdD1cIlwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
|