@infrab4a/connect-angular 5.0.0-beta.8 → 5.0.0-beta.9
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/angular-connect.module.d.ts +3 -1
- package/consts/index.d.ts +1 -0
- package/consts/persistence.const.d.ts +1 -0
- package/esm2020/angular-connect.module.mjs +115 -0
- package/esm2020/angular-elastic-search.module.mjs +34 -0
- package/esm2020/angular-firebase-auth.module.mjs +115 -0
- package/esm2020/angular-firestore.module.mjs +502 -0
- package/esm2020/angular-hasura-graphql.module.mjs +265 -0
- package/{esm2022 → esm2020}/consts/category-structure.mjs +1 -1
- package/{esm2022 → esm2020}/consts/default-shop.const.mjs +1 -1
- package/{esm2022 → esm2020}/consts/es-config.const.mjs +1 -1
- package/{esm2022 → esm2020}/consts/firebase-const.mjs +1 -1
- package/{esm2022 → esm2020}/consts/hasura-options.const.mjs +1 -1
- package/{esm2022 → esm2020}/consts/index.mjs +2 -1
- package/esm2020/consts/persistence.const.mjs +2 -0
- package/{esm2022 → esm2020}/consts/storage-base-url.const.mjs +1 -1
- package/{esm2022 → esm2020}/helpers/index.mjs +1 -1
- package/{esm2022 → esm2020}/helpers/mobile-operation-system-checker.helper.mjs +1 -1
- package/{esm2022 → esm2020}/index.mjs +2 -1
- package/esm2020/persistence/cookie-data-persistence.mjs +23 -0
- package/esm2020/persistence/data-persistence.mjs +2 -0
- package/esm2020/persistence/index.mjs +3 -0
- package/{esm2022 → esm2020}/services/auth.service.mjs +6 -6
- package/esm2020/services/cart.service.mjs +281 -0
- package/{esm2022 → esm2020}/services/catalog/adapters/category-structure.adapter.mjs +1 -1
- package/{esm2022 → esm2020}/services/catalog/adapters/index.mjs +1 -1
- package/{esm2022 → esm2020}/services/catalog/adapters/new-category-structure.adapter.mjs +6 -6
- package/{esm2022 → esm2020}/services/catalog/adapters/old-category-structure.adapter.mjs +6 -6
- package/{esm2022 → esm2020}/services/catalog/catalog.service.mjs +6 -6
- package/esm2020/services/catalog/category.service.mjs +51 -0
- package/{esm2022 → esm2020}/services/catalog/enums/index.mjs +1 -1
- package/{esm2022 → esm2020}/services/catalog/enums/product-sorts.enum.mjs +1 -1
- package/{esm2022 → esm2020}/services/catalog/index.mjs +1 -1
- package/{esm2022 → esm2020}/services/catalog/models/category-with-tree.model.mjs +1 -1
- package/{esm2022 → esm2020}/services/catalog/models/index.mjs +1 -1
- package/{esm2022 → esm2020}/services/catalog/types/index.mjs +1 -1
- package/{esm2022 → esm2020}/services/catalog/types/product-sort.type.mjs +1 -1
- package/{esm2022 → esm2020}/services/catalog/wishlist.service.mjs +6 -6
- package/esm2020/services/checkout-subscription.service.mjs +50 -0
- package/esm2020/services/checkout.service.mjs +68 -0
- package/{esm2022 → esm2020}/services/coupon.service.mjs +6 -6
- package/{esm2022 → esm2020}/services/helpers/index.mjs +1 -1
- package/{esm2022 → esm2020}/services/helpers/util.helper.mjs +1 -1
- package/{esm2022 → esm2020}/services/home-shop.service.mjs +6 -6
- package/{esm2022 → esm2020}/services/index.mjs +1 -1
- package/{esm2022 → esm2020}/services/order.service.mjs +6 -6
- package/{esm2022 → esm2020}/services/shipping.service.mjs +6 -6
- package/{esm2022 → esm2020}/services/types/index.mjs +1 -1
- package/{esm2022 → esm2020}/services/types/required-checkout-data.type.mjs +1 -1
- package/{esm2022 → esm2020}/services/types/required-checkout-subscription-data.type.mjs +1 -1
- package/esm2020/services/types/shipping-methods.type.mjs +2 -0
- package/{esm2022 → esm2020}/types/firebase-app-config.type.mjs +1 -1
- package/{esm2022 → esm2020}/types/index.mjs +1 -1
- package/fesm2015/infrab4a-connect-angular.mjs +2408 -0
- package/fesm2015/infrab4a-connect-angular.mjs.map +1 -0
- package/{fesm2022 → fesm2020}/infrab4a-connect-angular.mjs +567 -550
- package/fesm2020/infrab4a-connect-angular.mjs.map +1 -0
- package/index.d.ts +1 -0
- package/package.json +13 -7
- package/persistence/cookie-data-persistence.d.ts +10 -0
- package/persistence/data-persistence.d.ts +6 -0
- package/persistence/index.d.ts +2 -0
- package/services/catalog/category.service.d.ts +6 -1
- package/services/checkout-subscription.service.d.ts +5 -4
- package/services/checkout.service.d.ts +4 -3
- package/esm2022/angular-connect.module.mjs +0 -113
- package/esm2022/angular-elastic-search.module.mjs +0 -34
- package/esm2022/angular-firebase-auth.module.mjs +0 -115
- package/esm2022/angular-firestore.module.mjs +0 -502
- package/esm2022/angular-hasura-graphql.module.mjs +0 -265
- package/esm2022/services/cart.service.mjs +0 -281
- package/esm2022/services/catalog/category.service.mjs +0 -51
- package/esm2022/services/checkout-subscription.service.mjs +0 -53
- package/esm2022/services/checkout.service.mjs +0 -71
- package/esm2022/services/types/shipping-methods.type.mjs +0 -2
- package/fesm2022/infrab4a-connect-angular.mjs.map +0 -1
- /package/{esm2022 → esm2020}/consts/backend-url.const.mjs +0 -0
- /package/{esm2022 → esm2020}/infrab4a-connect-angular.mjs +0 -0
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { Buy2WinFirestoreRepository, Checkout, isNil, LineItem, NotFoundError, RoundProductPricesHelper, Shops, Where, } from '@infrab4a/connect';
|
|
3
|
+
import { from, iif, of, Subject } from 'rxjs';
|
|
4
|
+
import { catchError, concatMap, map, mergeMap, tap } from 'rxjs/operators';
|
|
5
|
+
import { DEFAULT_SHOP } from '../consts';
|
|
6
|
+
import { AuthService } from './auth.service';
|
|
7
|
+
import { CheckoutService } from './checkout.service';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "./auth.service";
|
|
10
|
+
import * as i2 from "./checkout.service";
|
|
11
|
+
import * as i3 from "@infrab4a/connect";
|
|
12
|
+
export class CartService {
|
|
13
|
+
constructor(authService, checkoutService, defaultShop, productRepository, categoryRepository, variantRepository, buy2WinRepository) {
|
|
14
|
+
this.authService = authService;
|
|
15
|
+
this.checkoutService = checkoutService;
|
|
16
|
+
this.defaultShop = defaultShop;
|
|
17
|
+
this.productRepository = productRepository;
|
|
18
|
+
this.categoryRepository = categoryRepository;
|
|
19
|
+
this.variantRepository = variantRepository;
|
|
20
|
+
this.buy2WinRepository = buy2WinRepository;
|
|
21
|
+
this.cartSubject = new Subject();
|
|
22
|
+
this.updateLineItemInCart = (lineItem, quantity, checkout) => (isNil(checkout) ? this.checkoutService.getCheckout() : of(checkout)).pipe(concatMap((checkoutLoaded) => {
|
|
23
|
+
const items = [];
|
|
24
|
+
const index = checkoutLoaded.lineItems?.map((checkoutItem) => checkoutItem.id).indexOf(lineItem.id);
|
|
25
|
+
if (index > -1) {
|
|
26
|
+
checkoutLoaded.lineItems[index].quantity += quantity;
|
|
27
|
+
checkoutLoaded.lineItems[index].pricePaid = lineItem.pricePaid;
|
|
28
|
+
}
|
|
29
|
+
else
|
|
30
|
+
checkoutLoaded.lineItems = items.concat(checkoutLoaded.lineItems ? checkoutLoaded.lineItems.concat([lineItem]) : [lineItem]);
|
|
31
|
+
return this.checkoutService
|
|
32
|
+
.updateCheckoutLineItems(checkoutLoaded)
|
|
33
|
+
.pipe(map((updatedCheckout) => this.generateCartObject(updatedCheckout.lineItems)));
|
|
34
|
+
}));
|
|
35
|
+
this.generateCartObject = (items) => items?.reduce((cart, item) => ({
|
|
36
|
+
...cart,
|
|
37
|
+
[item.id]: LineItem.toInstance({
|
|
38
|
+
...(cart[item.id] || item),
|
|
39
|
+
quantity: (cart[item.id]?.quantity || 0) + (item.quantity ? item.quantity : 1),
|
|
40
|
+
}),
|
|
41
|
+
}), {}) || {};
|
|
42
|
+
this.buildLineItem = async ({ checkout, item, quantity, }) => {
|
|
43
|
+
const product = await this.getProductData(item.id);
|
|
44
|
+
item.quantity = item?.quantity || checkout?.lineItems?.find((lineItem) => lineItem.id === item.id)?.quantity || 0;
|
|
45
|
+
if (this.checkMaxStock(item, quantity || 0))
|
|
46
|
+
throw new Error('Desculpe! Temos apenas ' + item.stock?.quantity + ' em estoque.');
|
|
47
|
+
const image = item.image || item.images?.shift();
|
|
48
|
+
const { id, name, EAN, slug, stock, price, weight, sku, type } = item;
|
|
49
|
+
const isGift = item.isGift || null;
|
|
50
|
+
const pricePaid = this.getProductPrice({
|
|
51
|
+
product: item,
|
|
52
|
+
shop: checkout.shop || this.defaultShop,
|
|
53
|
+
isSubscriber: checkout.user?.isSubscriber,
|
|
54
|
+
});
|
|
55
|
+
RoundProductPricesHelper.roundProductPrices(item);
|
|
56
|
+
return {
|
|
57
|
+
checkout,
|
|
58
|
+
lineItem: LineItem.toInstance({
|
|
59
|
+
id,
|
|
60
|
+
name: name ?? product.name,
|
|
61
|
+
EAN: EAN ?? product.EAN,
|
|
62
|
+
brand: product.brand,
|
|
63
|
+
slug: slug ?? product.slug,
|
|
64
|
+
sku: sku ?? product.sku,
|
|
65
|
+
stock,
|
|
66
|
+
price: this.roundPrice(price),
|
|
67
|
+
image,
|
|
68
|
+
weight: weight ?? product.weight,
|
|
69
|
+
quantity: (item.quantity || 0) + (quantity || 0),
|
|
70
|
+
pricePaid,
|
|
71
|
+
categories: product.categories ?? [],
|
|
72
|
+
isGift: isGift ?? null,
|
|
73
|
+
costPrice: product.costPrice ?? 0,
|
|
74
|
+
type,
|
|
75
|
+
}),
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
this.getProductPrice = ({ product, isSubscriber, }) => {
|
|
79
|
+
const info = product.price;
|
|
80
|
+
if (product.isGift)
|
|
81
|
+
return 0;
|
|
82
|
+
return isSubscriber && info.subscriberPrice > 0
|
|
83
|
+
? Number(info.subscriberPrice.toFixed(2))
|
|
84
|
+
: Number(info.price.toFixed(2));
|
|
85
|
+
};
|
|
86
|
+
this.checkMaxStock = (item, quantity) => {
|
|
87
|
+
const maxStock = item.stock?.quantity || 0;
|
|
88
|
+
const currentItemAmount = item.quantity || 0;
|
|
89
|
+
return currentItemAmount + quantity > maxStock;
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
addItem(item, quantity = 1) {
|
|
93
|
+
return from(this.checkoutService.getCheckout()).pipe(concatMap(async (checkout) => await this.buildLineItem({ checkout, item, quantity: quantity || 1 })), mergeMap(({ checkout, lineItem }) => this.updateLineItemInCart(lineItem, quantity || 1, checkout)), tap((cart) => this.cartSubject.next(cart)));
|
|
94
|
+
}
|
|
95
|
+
decreaseItem(item) {
|
|
96
|
+
return this.checkoutService.getCheckout().pipe(map((checkout) => {
|
|
97
|
+
const checkoutItem = checkout.lineItems?.find((lineItem) => lineItem.id === item.id);
|
|
98
|
+
if (!isNil(checkoutItem))
|
|
99
|
+
checkoutItem.quantity -= checkoutItem.quantity > 1 ? 1 : 0;
|
|
100
|
+
return checkout;
|
|
101
|
+
}), concatMap((checkout) => this.checkoutService.updateCheckoutLineItems(checkout)), map((checkout) => this.generateCartObject(checkout.lineItems)), tap((cart) => this.cartSubject.next(cart)));
|
|
102
|
+
}
|
|
103
|
+
getCart(checkout) {
|
|
104
|
+
this.buildCartFromCheckout(checkout).subscribe((cart) => this.cartSubject.next(cart));
|
|
105
|
+
return this.cartSubject;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* @deprecated The method should not be used
|
|
109
|
+
*/
|
|
110
|
+
getVariantPriceDiscount(item) {
|
|
111
|
+
return this.authService.getUser().pipe(concatMap((user) => iif(() => user.isSubscriber && !!item.price.subscriberPrice, of(item.price.subscriberPrice), of(item.price.price))), catchError(() => of(item.price.price)));
|
|
112
|
+
}
|
|
113
|
+
removeItem(item) {
|
|
114
|
+
return this.checkoutService.getCheckout().pipe(map((checkout) => {
|
|
115
|
+
const index = checkout.lineItems.findIndex((lineItem) => lineItem.id === item.id);
|
|
116
|
+
if (index >= 0)
|
|
117
|
+
checkout.lineItems.splice(index, 1);
|
|
118
|
+
return checkout;
|
|
119
|
+
}), concatMap((checkout) => this.checkoutService.updateCheckoutLineItems(checkout)), map((checkout) => this.generateCartObject(checkout.lineItems)), tap((cart) => this.cartSubject.next(cart)));
|
|
120
|
+
}
|
|
121
|
+
updateUserCart(user) {
|
|
122
|
+
return this.checkoutService.getCheckout().pipe(concatMap((checkout) => this.checkoutService.updateCheckoutUser(Checkout.toInstance({ ...checkout.toPlain(), user }))), concatMap(async (checkout) => await this.checkoutService
|
|
123
|
+
.updateCheckoutLineItems(Checkout.toInstance({
|
|
124
|
+
...checkout.toPlain(),
|
|
125
|
+
lineItems: checkout.lineItems?.length
|
|
126
|
+
? await Promise.all(checkout.lineItems?.map(async (item) => (await this.buildLineItem({ checkout, item })).lineItem))
|
|
127
|
+
: [],
|
|
128
|
+
}))
|
|
129
|
+
.toPromise()), map((checkout) => this.generateCartObject(checkout.lineItems)), tap((cart) => this.cartSubject.next(cart)));
|
|
130
|
+
}
|
|
131
|
+
clearCart() {
|
|
132
|
+
return this.checkoutService.getCheckout().pipe(map((checkout) => {
|
|
133
|
+
this.checkoutService.clearCheckoutFromSession();
|
|
134
|
+
return checkout;
|
|
135
|
+
}), concatMap((oldCheckout) => this.buildCartFromCheckout(oldCheckout)), tap((cart) => this.cartSubject.next(cart)));
|
|
136
|
+
}
|
|
137
|
+
buildCartFromCheckout(checkoutData) {
|
|
138
|
+
return this.checkoutService.getCheckout(checkoutData).pipe(map((checkout) => checkout.lineItems), concatMap((lineItems) => of(this.generateCartObject(lineItems))));
|
|
139
|
+
}
|
|
140
|
+
roundPrice(productPrice) {
|
|
141
|
+
const { price, fullPrice, subscriberPrice } = productPrice;
|
|
142
|
+
return {
|
|
143
|
+
...productPrice,
|
|
144
|
+
price: Number(price.toFixed(2)),
|
|
145
|
+
fullPrice: Number(fullPrice.toFixed(2)),
|
|
146
|
+
...(subscriberPrice && { subscriberPrice: Number(subscriberPrice.toFixed(2)) }),
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
async getProductData(productId) {
|
|
150
|
+
let product;
|
|
151
|
+
let variant;
|
|
152
|
+
try {
|
|
153
|
+
product = await this.productRepository.get({ id: productId });
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
if (!(error instanceof NotFoundError))
|
|
157
|
+
throw error;
|
|
158
|
+
const { data: variants } = await this.variantRepository.find({ filters: { id: productId } });
|
|
159
|
+
variant = variants.shift();
|
|
160
|
+
if (!variant)
|
|
161
|
+
throw error;
|
|
162
|
+
product = await this.productRepository.get({ id: variant.productId });
|
|
163
|
+
}
|
|
164
|
+
return {
|
|
165
|
+
...product.toPlain(),
|
|
166
|
+
...(variant && { ...variant.toPlain() }),
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
getGifts() {
|
|
170
|
+
return this.checkoutService.getCheckout().pipe(mergeMap(async (checkout) => {
|
|
171
|
+
const notGiftItems = checkout.lineItems ? checkout.lineItems.filter((item) => !item.isGift) : [];
|
|
172
|
+
if (!notGiftItems.length)
|
|
173
|
+
return { ...checkout, lineItems: [] };
|
|
174
|
+
const cartTotal = notGiftItems.reduce((a, b) => a + b.pricePaid * b.quantity, 0);
|
|
175
|
+
const campaigns = await this.buy2WinRepository
|
|
176
|
+
.find({
|
|
177
|
+
filters: {
|
|
178
|
+
active: { operator: Where.EQUALS, value: true },
|
|
179
|
+
shop: { operator: Where.EQUALS, value: this.defaultShop },
|
|
180
|
+
},
|
|
181
|
+
})
|
|
182
|
+
.then((data) => data.data);
|
|
183
|
+
if (!campaigns.length)
|
|
184
|
+
return { ...checkout, lineItems: notGiftItems };
|
|
185
|
+
const elegibleCampaigns = [];
|
|
186
|
+
for (const campaign of campaigns) {
|
|
187
|
+
const today = new Date().getTime();
|
|
188
|
+
if (!(campaign.startDate.getTime() <= today) && !(campaign.endDate.getTime() >= today))
|
|
189
|
+
continue;
|
|
190
|
+
if (campaign.activeCategory) {
|
|
191
|
+
const categoriesCampaing = campaign.categories.map((c) => c.id.toString());
|
|
192
|
+
const categoriesCampaingFullTree = [];
|
|
193
|
+
for (const id of categoriesCampaing) {
|
|
194
|
+
const children = await this.categoryRepository.getChildren(parseInt(id));
|
|
195
|
+
categoriesCampaingFullTree.push(id, ...children.map((c) => c.id.toString()));
|
|
196
|
+
}
|
|
197
|
+
const categoriesCampaingTree = [...new Set(categoriesCampaingFullTree)];
|
|
198
|
+
const filterProductsCategories = checkout.lineItems.filter((l) => {
|
|
199
|
+
if (!l.categories || !l.categories?.length)
|
|
200
|
+
return true;
|
|
201
|
+
return l.categories.some((c) => categoriesCampaingTree.some((cat) => cat == c));
|
|
202
|
+
});
|
|
203
|
+
if (filterProductsCategories.length) {
|
|
204
|
+
const cartTotalCategories = filterProductsCategories.reduce((a, b) => a + b.pricePaid * b.quantity, 0);
|
|
205
|
+
if (cartTotalCategories >= campaign.cartValueMin)
|
|
206
|
+
elegibleCampaigns.push(campaign);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
if (campaign.cartValue && campaign.cartValue > 0) {
|
|
211
|
+
if (campaign.cartValue <= cartTotal)
|
|
212
|
+
elegibleCampaigns.push(campaign);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
if (!elegibleCampaigns.length)
|
|
217
|
+
return { ...checkout, lineItems: notGiftItems };
|
|
218
|
+
const campaingnProducts = [];
|
|
219
|
+
for (const campaign of elegibleCampaigns) {
|
|
220
|
+
let elegibleProducts = [];
|
|
221
|
+
for (const product of campaign.products) {
|
|
222
|
+
const { data: productData } = await this.productRepository.find({ filters: { sku: product } });
|
|
223
|
+
if (!productData.length)
|
|
224
|
+
continue;
|
|
225
|
+
const gift = productData.shift();
|
|
226
|
+
if (gift.stock.quantity < 1)
|
|
227
|
+
continue;
|
|
228
|
+
elegibleProducts.push(gift);
|
|
229
|
+
}
|
|
230
|
+
campaingnProducts.push(elegibleProducts);
|
|
231
|
+
}
|
|
232
|
+
if (!campaingnProducts.length)
|
|
233
|
+
return { ...checkout, lineItems: notGiftItems };
|
|
234
|
+
const gifts = this.giftToLineItems([].concat(...campaingnProducts));
|
|
235
|
+
return { ...checkout, lineItems: notGiftItems.concat(gifts) };
|
|
236
|
+
}), concatMap((checkout) => this.checkoutService.updateCheckoutLineItems(checkout)), map((checkout) => this.generateCartObject(checkout.lineItems)), tap((cart) => this.cartSubject.next(cart)));
|
|
237
|
+
}
|
|
238
|
+
giftToLineItems(items) {
|
|
239
|
+
return items.map((item) => {
|
|
240
|
+
const { brand, categories, id, name, price, sku, slug, stock, weight, EAN } = item;
|
|
241
|
+
const image = item?.miniatures?.length ? item.miniatures[0] : item.images[0];
|
|
242
|
+
return LineItem.toInstance({
|
|
243
|
+
brand,
|
|
244
|
+
categories,
|
|
245
|
+
id: id.toString(),
|
|
246
|
+
name,
|
|
247
|
+
price,
|
|
248
|
+
sku,
|
|
249
|
+
slug,
|
|
250
|
+
stock,
|
|
251
|
+
weight,
|
|
252
|
+
EAN,
|
|
253
|
+
image,
|
|
254
|
+
pricePaid: 0,
|
|
255
|
+
quantity: 1,
|
|
256
|
+
isGift: true,
|
|
257
|
+
});
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
CartService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CartService, deps: [{ token: i1.AuthService }, { token: i2.CheckoutService }, { token: DEFAULT_SHOP }, { token: 'ProductRepository' }, { token: 'CategoryRepository' }, { token: 'VariantRepository' }, { token: 'Buy2WinRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
262
|
+
CartService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CartService });
|
|
263
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CartService, decorators: [{
|
|
264
|
+
type: Injectable
|
|
265
|
+
}], ctorParameters: function () { return [{ type: i1.AuthService }, { type: i2.CheckoutService }, { type: i3.Shops, decorators: [{
|
|
266
|
+
type: Inject,
|
|
267
|
+
args: [DEFAULT_SHOP]
|
|
268
|
+
}] }, { type: undefined, decorators: [{
|
|
269
|
+
type: Inject,
|
|
270
|
+
args: ['ProductRepository']
|
|
271
|
+
}] }, { type: undefined, decorators: [{
|
|
272
|
+
type: Inject,
|
|
273
|
+
args: ['CategoryRepository']
|
|
274
|
+
}] }, { type: undefined, decorators: [{
|
|
275
|
+
type: Inject,
|
|
276
|
+
args: ['VariantRepository']
|
|
277
|
+
}] }, { type: i3.Buy2WinFirestoreRepository, decorators: [{
|
|
278
|
+
type: Inject,
|
|
279
|
+
args: ['Buy2WinRepository']
|
|
280
|
+
}] }]; } });
|
|
281
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUVMLDBCQUEwQixFQUUxQixRQUFRLEVBQ1IsS0FBSyxFQUNMLFFBQVEsRUFDUixhQUFhLEVBR2Isd0JBQXdCLEVBRXhCLEtBQUssRUFJTCxLQUFLLEdBQ04sTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFBOzs7OztBQVFwRCxNQUFNLE9BQU8sV0FBVztJQUd0QixZQUNtQixXQUF3QixFQUN4QixlQUFnQyxFQUNWLFdBQWtCLEVBQ1gsaUJBQW9DLEVBQ25DLGtCQUFzQyxFQUN2QyxpQkFBb0MsRUFDcEMsaUJBQTZDO1FBTjFFLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNWLGdCQUFXLEdBQVgsV0FBVyxDQUFPO1FBQ1gsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNuQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3ZDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7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Z0JBQ04sR0FBRztnQkFDSCxLQUFLO2dCQUNMLFNBQVMsRUFBRSxDQUFDO2dCQUNaLFFBQVEsRUFBRSxDQUFDO2dCQUNYLE1BQU0sRUFBRSxJQUFJO2FBQ2IsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDOzt3R0FqWFUsV0FBVyw0RUFNWixZQUFZLGFBQ1osbUJBQW1CLGFBQ25CLG9CQUFvQixhQUNwQixtQkFBbUIsYUFDbkIsbUJBQW1COzRHQVZsQixXQUFXOzJGQUFYLFdBQVc7a0JBRHZCLFVBQVU7OzBCQU9OLE1BQU07MkJBQUMsWUFBWTs7MEJBQ25CLE1BQU07MkJBQUMsbUJBQW1COzswQkFDMUIsTUFBTTsyQkFBQyxvQkFBb0I7OzBCQUMzQixNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQzFCLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIEJ1eTJXaW4sXG4gIEJ1eTJXaW5GaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBDYXRlZ29yeVJlcG9zaXRvcnksXG4gIENoZWNrb3V0LFxuICBpc05pbCxcbiAgTGluZUl0ZW0sXG4gIE5vdEZvdW5kRXJyb3IsXG4gIFByb2R1Y3QsXG4gIFByb2R1Y3RSZXBvc2l0b3J5LFxuICBSb3VuZFByb2R1Y3RQcmljZXNIZWxwZXIsXG4gIFNob3BQcmljZSxcbiAgU2hvcHMsXG4gIFVzZXIsXG4gIFZhcmlhbnQsXG4gIFZhcmlhbnRSZXBvc2l0b3J5LFxuICBXaGVyZSxcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5pbXBvcnQgeyBmcm9tLCBpaWYsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGNvbmNhdE1hcCwgbWFwLCBtZXJnZU1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBERUZBVUxUX1NIT1AgfSBmcm9tICcuLi9jb25zdHMnXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJ1xuaW1wb3J0IHsgQ2hlY2tvdXRTZXJ2aWNlIH0gZnJvbSAnLi9jaGVja291dC5zZXJ2aWNlJ1xuaW1wb3J0IHsgUmVxdWlyZWRDaGVja291dERhdGEgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgdHlwZSBDYXJ0ID0ge1xuICBbaWQ6IHN0cmluZ106IExpbmVJdGVtXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDYXJ0U2VydmljZSB7XG4gIHByaXZhdGUgY2FydFN1YmplY3Q6IFN1YmplY3Q8Q2FydD4gPSBuZXcgU3ViamVjdCgpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGVja291dFNlcnZpY2U6IENoZWNrb3V0U2VydmljZSxcbiAgICBASW5qZWN0KERFRkFVTFRfU0hPUCkgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0U2hvcDogU2hvcHMsXG4gICAgQEluamVjdCgnUHJvZHVjdFJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RSZXBvc2l0b3J5OiBQcm9kdWN0UmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KCdDYXRlZ29yeVJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IGNhdGVnb3J5UmVwb3NpdG9yeTogQ2F0ZWdvcnlSZXBvc2l0b3J5LFxuICAgIEBJbmplY3QoJ1ZhcmlhbnRSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSB2YXJpYW50UmVwb3NpdG9yeTogVmFyaWFudFJlcG9zaXRvcnksXG4gICAgQEluamVjdCgnQnV5MldpblJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IGJ1eTJXaW5SZXBvc2l0b3J5OiBCdXkyV2luRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgKSB7fVxuXG4gIGFkZEl0ZW0oaXRlbTogTGluZUl0ZW0sIHF1YW50aXR5OiBudW1iZXIgPSAxKTogT2JzZXJ2YWJsZTxDYXJ0PiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5jaGVja291dFNlcnZpY2UuZ2V0Q2hlY2tvdXQoKSkucGlwZShcbiAgICAgIGNvbmNhdE1hcChhc3luYyAoY2hlY2tvdXQpID0+IGF3YWl0IHRoaXMuYnVpbGRMaW5lSXRlbSh7IGNoZWNrb3V0LCBpdGVtLCBxdWFudGl0eTogcXVhbnRpdHkgfHwgMSB9KSksXG4gICAgICBtZXJnZU1hcCgoeyBjaGVja291dCwgbGluZUl0ZW0gfSkgPT4gdGhpcy51cGRhdGVMaW5lSXRlbUluQ2FydChsaW5lSXRlbSwgcXVhbnRpdHkgfHwgMSwgY2hlY2tvdXQgYXMgQ2hlY2tvdXQpKSxcbiAgICAgIHRhcCgoY2FydCkgPT4gdGhpcy5jYXJ0U3ViamVjdC5uZXh0KGNhcnQpKSxcbiAgICApXG4gIH1cblxuICBkZWNyZWFzZUl0ZW0oaXRlbTogTGluZUl0ZW0pOiBPYnNlcnZhYmxlPENhcnQ+IHtcbiAgICByZXR1cm4gdGhpcy5jaGVja291dFNlcnZpY2UuZ2V0Q2hlY2tvdXQoKS5waXBlKFxuICAgICAgbWFwKChjaGVja291dCkgPT4ge1xuICAgICAgICBjb25zdCBjaGVja291dEl0ZW0gPSBjaGVja291dC5saW5lSXRlbXM/LmZpbmQoKGxpbmVJdGVtKSA9PiBsaW5lSXRlbS5pZCA9PT0gaXRlbS5pZClcblxuICAgICAgICBpZiAoIWlzTmlsKGNoZWNrb3V0SXRlbSkpIGNoZWNrb3V0SXRlbS5xdWFudGl0eSAtPSBjaGVja291dEl0ZW0ucXVhbnRpdHkgPiAxID8gMSA6IDBcblxuICAgICAgICByZXR1cm4gY2hlY2tvdXRcbiAgICAgIH0pLFxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT4gdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQ2hlY2tvdXRMaW5lSXRlbXMoY2hlY2tvdXQpKSxcbiAgICAgIG1hcCgoY2hlY2tvdXQpID0+IHRoaXMuZ2VuZXJhdGVDYXJ0T2JqZWN0KGNoZWNrb3V0LmxpbmVJdGVtcykpLFxuICAgICAgdGFwKChjYXJ0KSA9PiB0aGlzLmNhcnRTdWJqZWN0Lm5leHQoY2FydCkpLFxuICAgIClcbiAgfVxuXG4gIGdldENhcnQoY2hlY2tvdXQ/OiBSZXF1aXJlZENoZWNrb3V0RGF0YSk6IE9ic2VydmFibGU8Q2FydD4ge1xuICAgIHRoaXMuYnVpbGRDYXJ0RnJvbUNoZWNrb3V0KGNoZWNrb3V0KS5zdWJzY3JpYmUoKGNhcnQpID0+IHRoaXMuY2FydFN1YmplY3QubmV4dChjYXJ0KSlcblxuICAgIHJldHVybiB0aGlzLmNhcnRTdWJqZWN0XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVGhlIG1ldGhvZCBzaG91bGQgbm90IGJlIHVzZWRcbiAgICovXG4gIGdldFZhcmlhbnRQcmljZURpc2NvdW50KGl0ZW06IExpbmVJdGVtKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyKCkucGlwZShcbiAgICAgIGNvbmNhdE1hcCgodXNlcikgPT5cbiAgICAgICAgaWlmKFxuICAgICAgICAgICgpID0+IHVzZXIuaXNTdWJzY3JpYmVyICYmICEhaXRlbS5wcmljZS5zdWJzY3JpYmVyUHJpY2UsXG4gICAgICAgICAgb2YoaXRlbS5wcmljZS5zdWJzY3JpYmVyUHJpY2UpLFxuICAgICAgICAgIG9mKGl0ZW0ucHJpY2UucHJpY2UpLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoaXRlbS5wcmljZS5wcmljZSkpLFxuICAgIClcbiAgfVxuXG4gIHJlbW92ZUl0ZW0oaXRlbTogTGluZUl0ZW0pOiBPYnNlcnZhYmxlPENhcnQ+IHtcbiAgICByZXR1cm4gdGhpcy5jaGVja291dFNlcnZpY2UuZ2V0Q2hlY2tvdXQoKS5waXBlKFxuICAgICAgbWFwKChjaGVja291dCkgPT4ge1xuICAgICAgICBjb25zdCBpbmRleCA9IGNoZWNrb3V0LmxpbmVJdGVtcy5maW5kSW5kZXgoKGxpbmVJdGVtKSA9PiBsaW5lSXRlbS5pZCA9PT0gaXRlbS5pZClcblxuICAgICAgICBpZiAoaW5kZXggPj0gMCkgY2hlY2tvdXQubGluZUl0ZW1zLnNwbGljZShpbmRleCwgMSlcblxuICAgICAgICByZXR1cm4gY2hlY2tvdXRcbiAgICAgIH0pLFxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT4gdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQ2hlY2tvdXRMaW5lSXRlbXMoY2hlY2tvdXQpKSxcbiAgICAgIG1hcCgoY2hlY2tvdXQpID0+IHRoaXMuZ2VuZXJhdGVDYXJ0T2JqZWN0KGNoZWNrb3V0LmxpbmVJdGVtcykpLFxuICAgICAgdGFwKChjYXJ0KSA9PiB0aGlzLmNhcnRTdWJqZWN0Lm5leHQoY2FydCkpLFxuICAgIClcbiAgfVxuXG4gIHVwZGF0ZVVzZXJDYXJ0KHVzZXI6IFVzZXIpOiBPYnNlcnZhYmxlPENhcnQ+IHtcbiAgICByZXR1cm4gdGhpcy5jaGVja291dFNlcnZpY2UuZ2V0Q2hlY2tvdXQoKS5waXBlKFxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT5cbiAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQ2hlY2tvdXRVc2VyKENoZWNrb3V0LnRvSW5zdGFuY2UoeyAuLi5jaGVja291dC50b1BsYWluKCksIHVzZXIgfSkpLFxuICAgICAgKSxcbiAgICAgIGNvbmNhdE1hcChcbiAgICAgICAgYXN5bmMgKGNoZWNrb3V0KSA9PlxuICAgICAgICAgIGF3YWl0IHRoaXMuY2hlY2tvdXRTZXJ2aWNlXG4gICAgICAgICAgICAudXBkYXRlQ2hlY2tvdXRMaW5lSXRlbXMoXG4gICAgICAgICAgICAgIENoZWNrb3V0LnRvSW5zdGFuY2Uoe1xuICAgICAgICAgICAgICAgIC4uLmNoZWNrb3V0LnRvUGxhaW4oKSxcbiAgICAgICAgICAgICAgICBsaW5lSXRlbXM6IGNoZWNrb3V0LmxpbmVJdGVtcz8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICA/IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICAgICAgICAgIGNoZWNrb3V0LmxpbmVJdGVtcz8ubWFwKGFzeW5jIChpdGVtKSA9PiAoYXdhaXQgdGhpcy5idWlsZExpbmVJdGVtKHsgY2hlY2tvdXQsIGl0ZW0gfSkpLmxpbmVJdGVtKSxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAudG9Qcm9taXNlKCksXG4gICAgICApLFxuICAgICAgbWFwKChjaGVja291dCkgPT4gdGhpcy5nZW5lcmF0ZUNhcnRPYmplY3QoY2hlY2tvdXQubGluZUl0ZW1zKSksXG4gICAgICB0YXAoKGNhcnQpID0+IHRoaXMuY2FydFN1YmplY3QubmV4dChjYXJ0KSksXG4gICAgKVxuICB9XG5cbiAgY2xlYXJDYXJ0KCk6IE9ic2VydmFibGU8Q2FydD4ge1xuICAgIHJldHVybiB0aGlzLmNoZWNrb3V0U2VydmljZS5nZXRDaGVja291dCgpLnBpcGUoXG4gICAgICBtYXAoKGNoZWNrb3V0KSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLmNsZWFyQ2hlY2tvdXRGcm9tU2Vzc2lvbigpXG4gICAgICAgIHJldHVybiBjaGVja291dFxuICAgICAgfSksXG4gICAgICBjb25jYXRNYXAoKG9sZENoZWNrb3V0KSA9PiB0aGlzLmJ1aWxkQ2FydEZyb21DaGVja291dChvbGRDaGVja291dCkpLFxuICAgICAgdGFwKChjYXJ0KSA9PiB0aGlzLmNhcnRTdWJqZWN0Lm5leHQoY2FydCkpLFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDYXJ0RnJvbUNoZWNrb3V0KGNoZWNrb3V0RGF0YT86IFJlcXVpcmVkQ2hlY2tvdXREYXRhKTogT2JzZXJ2YWJsZTxDYXJ0PiB7XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLmdldENoZWNrb3V0KGNoZWNrb3V0RGF0YSkucGlwZShcbiAgICAgIG1hcCgoY2hlY2tvdXQpID0+IGNoZWNrb3V0LmxpbmVJdGVtcyksXG4gICAgICBjb25jYXRNYXAoKGxpbmVJdGVtcykgPT4gb2YodGhpcy5nZW5lcmF0ZUNhcnRPYmplY3QobGluZUl0ZW1zKSkpLFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTGluZUl0ZW1JbkNhcnQgPSAobGluZUl0ZW06IExpbmVJdGVtLCBxdWFudGl0eTogbnVtYmVyLCBjaGVja291dD86IENoZWNrb3V0KTogT2JzZXJ2YWJsZTxDYXJ0PiA9PlxuICAgIChpc05pbChjaGVja291dCkgPyB0aGlzLmNoZWNrb3V0U2VydmljZS5nZXRDaGVja291dCgpIDogb2YoY2hlY2tvdXQpKS5waXBlKFxuICAgICAgY29uY2F0TWFwKChjaGVja291dExvYWRlZCkgPT4ge1xuICAgICAgICBjb25zdCBpdGVtczogTGluZUl0ZW1bXSA9IFtdXG4gICAgICAgIGNvbnN0IGluZGV4ID0gY2hlY2tvdXRMb2FkZWQubGluZUl0ZW1zPy5tYXAoKGNoZWNrb3V0SXRlbSkgPT4gY2hlY2tvdXRJdGVtLmlkKS5pbmRleE9mKGxpbmVJdGVtLmlkKVxuXG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgY2hlY2tvdXRMb2FkZWQubGluZUl0ZW1zW2luZGV4XS5xdWFudGl0eSArPSBxdWFudGl0eVxuICAgICAgICAgIGNoZWNrb3V0TG9hZGVkLmxpbmVJdGVtc1tpbmRleF0ucHJpY2VQYWlkID0gbGluZUl0ZW0ucHJpY2VQYWlkXG4gICAgICAgIH0gZWxzZVxuICAgICAgICAgIGNoZWNrb3V0TG9hZGVkLmxpbmVJdGVtcyA9IGl0ZW1zLmNvbmNhdChcbiAgICAgICAgICAgIGNoZWNrb3V0TG9hZGVkLmxpbmVJdGVtcyA/IGNoZWNrb3V0TG9hZGVkLmxpbmVJdGVtcy5jb25jYXQoW2xpbmVJdGVtXSkgOiBbbGluZUl0ZW1dLFxuICAgICAgICAgIClcblxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja291dFNlcnZpY2VcbiAgICAgICAgICAudXBkYXRlQ2hlY2tvdXRMaW5lSXRlbXMoY2hlY2tvdXRMb2FkZWQpXG4gICAgICAgICAgLnBpcGUobWFwKCh1cGRhdGVkQ2hlY2tvdXQpID0+IHRoaXMuZ2VuZXJhdGVDYXJ0T2JqZWN0KHVwZGF0ZWRDaGVja291dC5saW5lSXRlbXMpKSlcbiAgICAgIH0pLFxuICAgIClcblxuICBwcml2YXRlIGdlbmVyYXRlQ2FydE9iamVjdCA9IChpdGVtczogTGluZUl0ZW1bXSk6IENhcnQgPT5cbiAgICBpdGVtcz8ucmVkdWNlKFxuICAgICAgKGNhcnQsIGl0ZW0pID0+ICh7XG4gICAgICAgIC4uLmNhcnQsXG4gICAgICAgIFtpdGVtLmlkXTogTGluZUl0ZW0udG9JbnN0YW5jZSh7XG4gICAgICAgICAgLi4uKGNhcnRbaXRlbS5pZF0gfHwgaXRlbSksXG4gICAgICAgICAgcXVhbnRpdHk6IChjYXJ0W2l0ZW0uaWRdPy5xdWFudGl0eSB8fCAwKSArIChpdGVtLnF1YW50aXR5ID8gaXRlbS5xdWFudGl0eSA6IDEpLFxuICAgICAgICB9KSxcbiAgICAgIH0pLFxuICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgTGluZUl0ZW0+LFxuICAgICkgfHwge31cblxuICBwcml2YXRlIGJ1aWxkTGluZUl0ZW0gPSBhc3luYyAoe1xuICAgIGNoZWNrb3V0LFxuICAgIGl0ZW0sXG4gICAgcXVhbnRpdHksXG4gIH06IHtcbiAgICBjaGVja291dDogUmVxdWlyZWRDaGVja291dERhdGFcbiAgICBpdGVtOiBMaW5lSXRlbVxuICAgIHF1YW50aXR5PzogbnVtYmVyXG4gIH0pOiBQcm9taXNlPHsgY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+OyBsaW5lSXRlbTogTGluZUl0ZW0gfT4gPT4ge1xuICAgIGNvbnN0IHByb2R1Y3QgPSBhd2FpdCB0aGlzLmdldFByb2R1Y3REYXRhKGl0ZW0uaWQpXG5cbiAgICBpdGVtLnF1YW50aXR5ID0gaXRlbT8ucXVhbnRpdHkgfHwgY2hlY2tvdXQ/LmxpbmVJdGVtcz8uZmluZCgobGluZUl0ZW0pID0+IGxpbmVJdGVtLmlkID09PSBpdGVtLmlkKT8ucXVhbnRpdHkgfHwgMFxuXG4gICAgaWYgKHRoaXMuY2hlY2tNYXhTdG9jayhpdGVtLCBxdWFudGl0eSB8fCAwKSlcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGVzY3VscGUhIFRlbW9zIGFwZW5hcyAnICsgaXRlbS5zdG9jaz8ucXVhbnRpdHkgKyAnIGVtIGVzdG9xdWUuJylcblxuICAgIGNvbnN0IGltYWdlID0gaXRlbS5pbWFnZSB8fCBpdGVtLmltYWdlcz8uc2hpZnQoKVxuICAgIGNvbnN0IHsgaWQsIG5hbWUsIEVBTiwgc2x1Zywgc3RvY2ssIHByaWNlLCB3ZWlnaHQsIHNrdSwgdHlwZSB9ID0gaXRlbVxuICAgIGNvbnN0IGlzR2lmdCA9IGl0ZW0uaXNHaWZ0IHx8IG51bGxcbiAgICBjb25zdCBwcmljZVBhaWQgPSB0aGlzLmdldFByb2R1Y3RQcmljZSh7XG4gICAgICBwcm9kdWN0OiBpdGVtLFxuICAgICAgc2hvcDogY2hlY2tvdXQuc2hvcCB8fCB0aGlzLmRlZmF1bHRTaG9wLFxuICAgICAgaXNTdWJzY3JpYmVyOiBjaGVja291dC51c2VyPy5pc1N1YnNjcmliZXIsXG4gICAgfSlcblxuICAgIFJvdW5kUHJvZHVjdFByaWNlc0hlbHBlci5yb3VuZFByb2R1Y3RQcmljZXMoaXRlbSlcblxuICAgIHJldHVybiB7XG4gICAgICBjaGVja291dCxcbiAgICAgIGxpbmVJdGVtOiBMaW5lSXRlbS50b0luc3RhbmNlKHtcbiAgICAgICAgaWQsXG4gICAgICAgIG5hbWU6IG5hbWUgPz8gcHJvZHVjdC5uYW1lLFxuICAgICAgICBFQU46IEVBTiA/PyBwcm9kdWN0LkVBTixcbiAgICAgICAgYnJhbmQ6IHByb2R1Y3QuYnJhbmQsXG4gICAgICAgIHNsdWc6IHNsdWcgPz8gcHJvZHVjdC5zbHVnLFxuICAgICAgICBza3U6IHNrdSA/PyBwcm9kdWN0LnNrdSxcbiAgICAgICAgc3RvY2ssXG4gICAgICAgIHByaWNlOiB0aGlzLnJvdW5kUHJpY2UocHJpY2UpLFxuICAgICAgICBpbWFnZSxcbiAgICAgICAgd2VpZ2h0OiB3ZWlnaHQgPz8gcHJvZHVjdC53ZWlnaHQsXG4gICAgICAgIHF1YW50aXR5OiAoaXRlbS5xdWFudGl0eSB8fCAwKSArIChxdWFudGl0eSB8fCAwKSxcbiAgICAgICAgcHJpY2VQYWlkLFxuICAgICAgICBjYXRlZ29yaWVzOiBwcm9kdWN0LmNhdGVnb3JpZXMgPz8gW10sXG4gICAgICAgIGlzR2lmdDogaXNHaWZ0ID8/IG51bGwsXG4gICAgICAgIGNvc3RQcmljZTogcHJvZHVjdC5jb3N0UHJpY2UgPz8gMCxcbiAgICAgICAgdHlwZSxcbiAgICAgIH0pLFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcm91bmRQcmljZShwcm9kdWN0UHJpY2U6IFNob3BQcmljZSk6IFNob3BQcmljZSB7XG4gICAgY29uc3QgeyBwcmljZSwgZnVsbFByaWNlLCBzdWJzY3JpYmVyUHJpY2UgfSA9IHByb2R1Y3RQcmljZVxuICAgIHJldHVybiB7XG4gICAgICAuLi5wcm9kdWN0UHJpY2UsXG4gICAgICBwcmljZTogTnVtYmVyKHByaWNlLnRvRml4ZWQoMikpLFxuICAgICAgZnVsbFByaWNlOiBOdW1iZXIoZnVsbFByaWNlLnRvRml4ZWQoMikpLFxuICAgICAgLi4uKHN1YnNjcmliZXJQcmljZSAmJiB7IHN1YnNjcmliZXJQcmljZTogTnVtYmVyKHN1YnNjcmliZXJQcmljZS50b0ZpeGVkKDIpKSB9KSxcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFByb2R1Y3REYXRhKHByb2R1Y3RJZDogc3RyaW5nKTogUHJvbWlzZTxQYXJ0aWFsPFByb2R1Y3Q+PiB7XG4gICAgbGV0IHByb2R1Y3Q6IFByb2R1Y3RcbiAgICBsZXQgdmFyaWFudDogVmFyaWFudFxuXG4gICAgdHJ5IHtcbiAgICAgIHByb2R1Y3QgPSBhd2FpdCB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5LmdldCh7IGlkOiBwcm9kdWN0SWQgfSlcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBOb3RGb3VuZEVycm9yKSkgdGhyb3cgZXJyb3JcblxuICAgICAgY29uc3QgeyBkYXRhOiB2YXJpYW50cyB9ID0gYXdhaXQgdGhpcy52YXJpYW50UmVwb3NpdG9yeS5maW5kKHsgZmlsdGVyczogeyBpZDogcHJvZHVjdElkIH0gfSlcblxuICAgICAgdmFyaWFudCA9IHZhcmlhbnRzLnNoaWZ0KClcblxuICAgICAgaWYgKCF2YXJpYW50KSB0aHJvdyBlcnJvclxuXG4gICAgICBwcm9kdWN0ID0gYXdhaXQgdGhpcy5wcm9kdWN0UmVwb3NpdG9yeS5nZXQoeyBpZDogdmFyaWFudC5wcm9kdWN0SWQgfSlcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucHJvZHVjdC50b1BsYWluKCksXG4gICAgICAuLi4odmFyaWFudCAmJiB7IC4uLnZhcmlhbnQudG9QbGFpbigpIH0pLFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UHJvZHVjdFByaWNlID0gKHtcbiAgICBwcm9kdWN0LFxuICAgIGlzU3Vic2NyaWJlcixcbiAgfToge1xuICAgIHByb2R1Y3Q6IExpbmVJdGVtXG4gICAgc2hvcDogU2hvcHNcbiAgICBpc1N1YnNjcmliZXI6IGJvb2xlYW5cbiAgfSk6IG51bWJlciA9PiB7XG4gICAgY29uc3QgaW5mbyA9IHByb2R1Y3QucHJpY2VcblxuICAgIGlmIChwcm9kdWN0LmlzR2lmdCkgcmV0dXJuIDBcblxuICAgIHJldHVybiBpc1N1YnNjcmliZXIgJiYgaW5mby5zdWJzY3JpYmVyUHJpY2UgPiAwXG4gICAgICA/IE51bWJlcihpbmZvLnN1YnNjcmliZXJQcmljZS50b0ZpeGVkKDIpKVxuICAgICAgOiBOdW1iZXIoaW5mby5wcmljZS50b0ZpeGVkKDIpKVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja01heFN0b2NrID0gKGl0ZW06IExpbmVJdGVtLCBxdWFudGl0eTogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgbWF4U3RvY2sgPSBpdGVtLnN0b2NrPy5xdWFudGl0eSB8fCAwXG4gICAgY29uc3QgY3VycmVudEl0ZW1BbW91bnQgPSBpdGVtLnF1YW50aXR5IHx8IDBcblxuICAgIHJldHVybiBjdXJyZW50SXRlbUFtb3VudCArIHF1YW50aXR5ID4gbWF4U3RvY2tcbiAgfVxuXG4gIGdldEdpZnRzKCkge1xuICAgIHJldHVybiB0aGlzLmNoZWNrb3V0U2VydmljZS5nZXRDaGVja291dCgpLnBpcGUoXG4gICAgICBtZXJnZU1hcChhc3luYyAoY2hlY2tvdXQpID0+IHtcbiAgICAgICAgY29uc3Qgbm90R2lmdEl0ZW1zOiBMaW5lSXRlbVtdID0gY2hlY2tvdXQubGluZUl0ZW1zID8gY2hlY2tvdXQubGluZUl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0uaXNHaWZ0KSA6IFtdXG5cbiAgICAgICAgaWYgKCFub3RHaWZ0SXRlbXMubGVuZ3RoKSByZXR1cm4geyAuLi5jaGVja291dCwgbGluZUl0ZW1zOiBbXSB9IGFzIENoZWNrb3V0XG5cbiAgICAgICAgY29uc3QgY2FydFRvdGFsID0gbm90R2lmdEl0ZW1zLnJlZHVjZSgoYSwgYikgPT4gYSArIGIucHJpY2VQYWlkICogYi5xdWFudGl0eSwgMClcblxuICAgICAgICBjb25zdCBjYW1wYWlnbnMgPSBhd2FpdCB0aGlzLmJ1eTJXaW5SZXBvc2l0b3J5XG4gICAgICAgICAgLmZpbmQoe1xuICAgICAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgICAgICBhY3RpdmU6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IHRydWUgfSxcbiAgICAgICAgICAgICAgc2hvcDogeyBvcGVyYXRvcjogV2hlcmUuRVFVQUxTLCB2YWx1ZTogdGhpcy5kZWZhdWx0U2hvcCB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC50aGVuKChkYXRhKSA9PiBkYXRhLmRhdGEpXG5cbiAgICAgICAgaWYgKCFjYW1wYWlnbnMubGVuZ3RoKSByZXR1cm4geyAuLi5jaGVja291dCwgbGluZUl0ZW1zOiBub3RHaWZ0SXRlbXMgfSBhcyBDaGVja291dFxuXG4gICAgICAgIGNvbnN0IGVsZWdpYmxlQ2FtcGFpZ25zOiBCdXkyV2luW10gPSBbXVxuXG4gICAgICAgIGZvciAoY29uc3QgY2FtcGFpZ24gb2YgY2FtcGFpZ25zKSB7XG4gICAgICAgICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKVxuXG4gICAgICAgICAgaWYgKCEoY2FtcGFpZ24uc3RhcnREYXRlLmdldFRpbWUoKSA8PSB0b2RheSkgJiYgIShjYW1wYWlnbi5lbmREYXRlLmdldFRpbWUoKSA+PSB0b2RheSkpIGNvbnRpbnVlXG5cbiAgICAgICAgICBpZiAoY2FtcGFpZ24uYWN0aXZlQ2F0ZWdvcnkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3JpZXNDYW1wYWluZyA9IGNhbXBhaWduLmNhdGVnb3JpZXMubWFwKChjKSA9PiBjLmlkLnRvU3RyaW5nKCkpXG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yaWVzQ2FtcGFpbmdGdWxsVHJlZSA9IFtdXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgaWQgb2YgY2F0ZWdvcmllc0NhbXBhaW5nKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gYXdhaXQgdGhpcy5jYXRlZ29yeVJlcG9zaXRvcnkuZ2V0Q2hpbGRyZW4ocGFyc2VJbnQoaWQpKVxuXG4gICAgICAgICAgICAgIGNhdGVnb3JpZXNDYW1wYWluZ0Z1bGxUcmVlLnB1c2goaWQsIC4uLmNoaWxkcmVuLm1hcCgoYykgPT4gYy5pZC50b1N0cmluZygpKSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcmllc0NhbXBhaW5nVHJlZSA9IFsuLi5uZXcgU2V0KGNhdGVnb3JpZXNDYW1wYWluZ0Z1bGxUcmVlKV1cbiAgICAgICAgICAgIGNvbnN0IGZpbHRlclByb2R1Y3RzQ2F0ZWdvcmllcyA9IGNoZWNrb3V0LmxpbmVJdGVtcy5maWx0ZXIoKGwpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFsLmNhdGVnb3JpZXMgfHwgIWwuY2F0ZWdvcmllcz8ubGVuZ3RoKSByZXR1cm4gdHJ1ZVxuXG4gICAgICAgICAgICAgIHJldHVybiBsLmNhdGVnb3JpZXMuc29tZSgoYykgPT4gY2F0ZWdvcmllc0NhbXBhaW5nVHJlZS5zb21lKChjYXQpID0+IGNhdCA9PSBjKSlcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGlmIChmaWx0ZXJQcm9kdWN0c0NhdGVnb3JpZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNhcnRUb3RhbENhdGVnb3JpZXMgPSBmaWx0ZXJQcm9kdWN0c0NhdGVnb3JpZXMucmVkdWNlKChhLCBiKSA9PiBhICsgYi5wcmljZVBhaWQgKiBiLnF1YW50aXR5LCAwKVxuXG4gICAgICAgICAgICAgIGlmIChjYXJ0VG90YWxDYXRlZ29yaWVzID49IGNhbXBhaWduLmNhcnRWYWx1ZU1pbikgZWxlZ2libGVDYW1wYWlnbnMucHVzaChjYW1wYWlnbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNhbXBhaWduLmNhcnRWYWx1ZSAmJiBjYW1wYWlnbi5jYXJ0VmFsdWUgPiAwKSB7XG4gICAgICAgICAgICAgIGlmIChjYW1wYWlnbi5jYXJ0VmFsdWUgPD0gY2FydFRvdGFsKSBlbGVnaWJsZUNhbXBhaWducy5wdXNoKGNhbXBhaWduKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghZWxlZ2libGVDYW1wYWlnbnMubGVuZ3RoKSByZXR1cm4geyAuLi5jaGVja291dCwgbGluZUl0ZW1zOiBub3RHaWZ0SXRlbXMgfSBhcyBDaGVja291dFxuXG4gICAgICAgIGNvbnN0IGNhbXBhaW5nblByb2R1Y3RzOiBQcm9kdWN0W11bXSA9IFtdXG5cbiAgICAgICAgZm9yIChjb25zdCBjYW1wYWlnbiBvZiBlbGVnaWJsZUNhbXBhaWducykge1xuICAgICAgICAgIGxldCBlbGVnaWJsZVByb2R1Y3RzID0gW11cblxuICAgICAgICAgIGZvciAoY29uc3QgcHJvZHVjdCBvZiBjYW1wYWlnbi5wcm9kdWN0cykge1xuICAgICAgICAgICAgY29uc3QgeyBkYXRhOiBwcm9kdWN0RGF0YSB9ID0gYXdhaXQgdGhpcy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kKHsgZmlsdGVyczogeyBza3U6IHByb2R1Y3QgfSB9KVxuXG4gICAgICAgICAgICBpZiAoIXByb2R1Y3REYXRhLmxlbmd0aCkgY29udGludWVcblxuICAgICAgICAgICAgY29uc3QgZ2lmdCA9IHByb2R1Y3REYXRhLnNoaWZ0KClcblxuICAgICAgICAgICAgaWYgKGdpZnQuc3RvY2sucXVhbnRpdHkgPCAxKSBjb250aW51ZVxuXG4gICAgICAgICAgICBlbGVnaWJsZVByb2R1Y3RzLnB1c2goZ2lmdClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYW1wYWluZ25Qcm9kdWN0cy5wdXNoKGVsZWdpYmxlUHJvZHVjdHMpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWNhbXBhaW5nblByb2R1Y3RzLmxlbmd0aCkgcmV0dXJuIHsgLi4uY2hlY2tvdXQsIGxpbmVJdGVtczogbm90R2lmdEl0ZW1zIH0gYXMgQ2hlY2tvdXRcblxuICAgICAgICBjb25zdCBnaWZ0cyA9IHRoaXMuZ2lmdFRvTGluZUl0ZW1zKFtdLmNvbmNhdCguLi5jYW1wYWluZ25Qcm9kdWN0cykpXG5cbiAgICAgICAgcmV0dXJuIHsgLi4uY2hlY2tvdXQsIGxpbmVJdGVtczogbm90R2lmdEl0ZW1zLmNvbmNhdChnaWZ0cykgfVxuICAgICAgfSksXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PiB0aGlzLmNoZWNrb3V0U2VydmljZS51cGRhdGVDaGVja291dExpbmVJdGVtcyhjaGVja291dCkpLFxuICAgICAgbWFwKChjaGVja291dCkgPT4gdGhpcy5nZW5lcmF0ZUNhcnRPYmplY3QoY2hlY2tvdXQubGluZUl0ZW1zKSksXG4gICAgICB0YXAoKGNhcnQpID0+IHRoaXMuY2FydFN1YmplY3QubmV4dChjYXJ0KSksXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBnaWZ0VG9MaW5lSXRlbXMoaXRlbXM6IFByb2R1Y3RbXSk6IExpbmVJdGVtW10ge1xuICAgIHJldHVybiBpdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IHsgYnJhbmQsIGNhdGVnb3JpZXMsIGlkLCBuYW1lLCBwcmljZSwgc2t1LCBzbHVnLCBzdG9jaywgd2VpZ2h0LCBFQU4gfSA9IGl0ZW1cblxuICAgICAgY29uc3QgaW1hZ2UgPSBpdGVtPy5taW5pYXR1cmVzPy5sZW5ndGggPyBpdGVtLm1pbmlhdHVyZXNbMF0gOiBpdGVtLmltYWdlc1swXVxuXG4gICAgICByZXR1cm4gTGluZUl0ZW0udG9JbnN0YW5jZSh7XG4gICAgICAgIGJyYW5kLFxuICAgICAgICBjYXRlZ29yaWVzLFxuICAgICAgICBpZDogaWQudG9TdHJpbmcoKSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgcHJpY2UsXG4gICAgICAgIHNrdSxcbiAgICAgICAgc2x1ZyxcbiAgICAgICAgc3RvY2ssXG4gICAgICAgIHdlaWdodCxcbiAgICAgICAgRUFOLFxuICAgICAgICBpbWFnZSxcbiAgICAgICAgcHJpY2VQYWlkOiAwLFxuICAgICAgICBxdWFudGl0eTogMSxcbiAgICAgICAgaXNHaWZ0OiB0cnVlLFxuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktc3RydWN0dXJlLmFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NhdGFsb2cvYWRhcHRlcnMvY2F0ZWdvcnktc3RydWN0dXJlLmFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhdGVnb3J5LCBQcm9kdWN0LCBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzIH0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QvJ1xuXG5leHBvcnQgaW50ZXJmYWNlIENhdGVnb3J5U3RydWN0dXJlQWRhcHRlciB7XG4gIGJ1aWxkUHJvZHVjdEZpbHRlckJ5Q2F0ZWdvcnkoY2F0ZWdvcnk6IENhdGVnb3J5KTogUHJvbWlzZTxSZXBvc2l0b3J5RmluZEZpZWx0ZXJzPFByb2R1Y3Q+PlxufVxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export * from './category-structure.adapter';
|
|
2
2
|
export * from './new-category-structure.adapter';
|
|
3
3
|
export * from './old-category-structure.adapter';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NhdGFsb2cvYWRhcHRlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw4QkFBOEIsQ0FBQTtBQUM1QyxjQUFjLGtDQUFrQyxDQUFBO0FBQ2hELGNBQWMsa0NBQWtDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NhdGVnb3J5LXN0cnVjdHVyZS5hZGFwdGVyJ1xuZXhwb3J0ICogZnJvbSAnLi9uZXctY2F0ZWdvcnktc3RydWN0dXJlLmFkYXB0ZXInXG5leHBvcnQgKiBmcm9tICcuL29sZC1jYXRlZ29yeS1zdHJ1Y3R1cmUuYWRhcHRlcidcbiJdfQ==
|
|
@@ -29,13 +29,13 @@ export class NewCategoryStructureAdapter {
|
|
|
29
29
|
? this.categoryRepository.get({ id: category.id })
|
|
30
30
|
: category;
|
|
31
31
|
}
|
|
32
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NewCategoryStructureAdapter, deps: [{ token: 'CategoryRepository' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
33
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NewCategoryStructureAdapter }); }
|
|
34
32
|
}
|
|
35
|
-
i0.ɵɵ
|
|
33
|
+
NewCategoryStructureAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: NewCategoryStructureAdapter, deps: [{ token: 'CategoryRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
34
|
+
NewCategoryStructureAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: NewCategoryStructureAdapter });
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: NewCategoryStructureAdapter, decorators: [{
|
|
36
36
|
type: Injectable
|
|
37
|
-
}], ctorParameters: ()
|
|
37
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
38
38
|
type: Inject,
|
|
39
39
|
args: ['CategoryRepository']
|
|
40
|
-
}] }] });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
}] }]; } });
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWNhdGVnb3J5LXN0cnVjdHVyZS5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXRhbG9nL2FkYXB0ZXJzL25ldy1jYXRlZ29yeS1zdHJ1Y3R1cmUuYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBQWdDLEtBQUssRUFBbUMsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7O0FBSS9HLE1BQU0sT0FBTywyQkFBMkI7SUFDdEMsWUFBMkQsa0JBQXNDO1FBQXRDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7SUFBRyxDQUFDO0lBRXJHLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxRQUFrQjtRQUNuRCxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUE7UUFFdkQsSUFBSSxjQUFjLENBQUMsWUFBWTtZQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsY0FBYyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUE7UUFFdEcsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsOEJBQThCLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7UUFFdEcsT0FBTztZQUNMLFFBQVEsRUFBRTtnQkFDUixFQUFFLEVBQUU7b0JBQ0YsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFO29CQUNsQixLQUFLLEVBQUUsV0FBVztpQkFDbkI7YUFDRjtTQUNGLENBQUE7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLDhCQUE4QixDQUFDLFFBQWtCO1FBQzdELE9BQU8sSUFBSSxDQUFDLGtCQUFrQjthQUMzQixXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2FBQ3pCLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDL0UsQ0FBQztJQUVPLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBa0I7UUFDMUMsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDO1lBQzFGLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNsRCxDQUFDLENBQUMsUUFBUSxDQUFBO0lBQ2QsQ0FBQzs7d0hBOUJVLDJCQUEyQixrQkFDbEIsb0JBQW9COzRIQUQ3QiwyQkFBMkI7MkZBQTNCLDJCQUEyQjtrQkFEdkMsVUFBVTs7MEJBRUksTUFBTTsyQkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ2F0ZWdvcnksIENhdGVnb3J5UmVwb3NpdG9yeSwgaXNOaWwsIFByb2R1Y3QsIFJlcG9zaXRvcnlGaW5kRmllbHRlcnMsIFdoZXJlIH0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5pbXBvcnQgeyBDYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXIgfSBmcm9tICcuL2NhdGVnb3J5LXN0cnVjdHVyZS5hZGFwdGVyJ1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmV3Q2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyIGltcGxlbWVudHMgQ2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyIHtcbiAgY29uc3RydWN0b3IoQEluamVjdCgnQ2F0ZWdvcnlSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVJlcG9zaXRvcnk6IENhdGVnb3J5UmVwb3NpdG9yeSkge31cblxuICBhc3luYyBidWlsZFByb2R1Y3RGaWx0ZXJCeUNhdGVnb3J5KGNhdGVnb3J5OiBDYXRlZ29yeSk6IFByb21pc2U8UmVwb3NpdG9yeUZpbmRGaWVsdGVyczxQcm9kdWN0Pj4ge1xuICAgIGNvbnN0IGxvYWRlZENhdGVnb3J5ID0gYXdhaXQgdGhpcy5nZXRDYXRlZ29yeShjYXRlZ29yeSlcblxuICAgIGlmIChsb2FkZWRDYXRlZ29yeS5pc0NvbGxlY3Rpb24pIHJldHVybiB7IGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IGxvYWRlZENhdGVnb3J5LnByb2R1Y3RzIH0gfVxuXG4gICAgY29uc3QgY2F0ZWdvcnlJZHMgPSBbLi4uKGF3YWl0IHRoaXMuZ2V0QWxsQ2F0ZWdvcmllc0lkRnJvbUNhdGVnb3J5KGNhdGVnb3J5KSksIGNhdGVnb3J5LmlkLnRvU3RyaW5nKCldXG5cbiAgICByZXR1cm4ge1xuICAgICAgY2F0ZWdvcnk6IHtcbiAgICAgICAgaWQ6IHtcbiAgICAgICAgICBvcGVyYXRvcjogV2hlcmUuSU4sXG4gICAgICAgICAgdmFsdWU6IGNhdGVnb3J5SWRzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldEFsbENhdGVnb3JpZXNJZEZyb21DYXRlZ29yeShjYXRlZ29yeTogQ2F0ZWdvcnkpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuY2F0ZWdvcnlSZXBvc2l0b3J5XG4gICAgICAuZ2V0Q2hpbGRyZW4oK2NhdGVnb3J5LmlkKVxuICAgICAgLnRoZW4oKGNhdGVnb3JpZXMpID0+IGNhdGVnb3JpZXMubWFwKChjYXRlZ29yeSkgPT4gY2F0ZWdvcnkuaWQudG9TdHJpbmcoKSkpXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldENhdGVnb3J5KGNhdGVnb3J5OiBDYXRlZ29yeSk6IFByb21pc2U8Q2F0ZWdvcnk+IHtcbiAgICByZXR1cm4gaXNOaWwoY2F0ZWdvcnkuaXNDb2xsZWN0aW9uKSB8fCAoY2F0ZWdvcnkuaXNDb2xsZWN0aW9uICYmICFjYXRlZ29yeS5wcm9kdWN0cz8ubGVuZ3RoKVxuICAgICAgPyB0aGlzLmNhdGVnb3J5UmVwb3NpdG9yeS5nZXQoeyBpZDogY2F0ZWdvcnkuaWQgfSlcbiAgICAgIDogY2F0ZWdvcnlcbiAgfVxufVxuIl19
|
|
@@ -11,13 +11,13 @@ export class OldCategoryStructureAdapter {
|
|
|
11
11
|
: await this.categoryRepository.get({ id: category.id }).then((categoryFound) => categoryFound.products);
|
|
12
12
|
return { id: { operator: Where.IN, value: productsIds } };
|
|
13
13
|
}
|
|
14
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: OldCategoryStructureAdapter, deps: [{ token: 'CategoryRepository' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
15
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: OldCategoryStructureAdapter }); }
|
|
16
14
|
}
|
|
17
|
-
i0.ɵɵ
|
|
15
|
+
OldCategoryStructureAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: OldCategoryStructureAdapter, deps: [{ token: 'CategoryRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
16
|
+
OldCategoryStructureAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: OldCategoryStructureAdapter });
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: OldCategoryStructureAdapter, decorators: [{
|
|
18
18
|
type: Injectable
|
|
19
|
-
}], ctorParameters: ()
|
|
19
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
20
20
|
type: Inject,
|
|
21
21
|
args: ['CategoryRepository']
|
|
22
|
-
}] }] });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
}] }]; } });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2xkLWNhdGVnb3J5LXN0cnVjdHVyZS5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXRhbG9nL2FkYXB0ZXJzL29sZC1jYXRlZ29yeS1zdHJ1Y3R1cmUuYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBQWlFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFBOztBQUl4RyxNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDLFlBQTJELGtCQUFzQztRQUF0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO0lBQUcsQ0FBQztJQUVyRyxLQUFLLENBQUMsNEJBQTRCLENBQUMsUUFBa0I7UUFDbkQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxNQUFNO1lBQzNDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUTtZQUNuQixDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRTFHLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQTtJQUMzRCxDQUFDOzt3SEFUVSwyQkFBMkIsa0JBQ2xCLG9CQUFvQjs0SEFEN0IsMkJBQTJCOzJGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVU7OzBCQUVJLE1BQU07MkJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IENhdGVnb3J5LCBDYXRlZ29yeVJlcG9zaXRvcnksIFByb2R1Y3QsIFJlcG9zaXRvcnlGaW5kRmllbHRlcnMsIFdoZXJlIH0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5pbXBvcnQgeyBDYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXIgfSBmcm9tICcuL2NhdGVnb3J5LXN0cnVjdHVyZS5hZGFwdGVyJ1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT2xkQ2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyIGltcGxlbWVudHMgQ2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyIHtcbiAgY29uc3RydWN0b3IoQEluamVjdCgnQ2F0ZWdvcnlSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVJlcG9zaXRvcnk6IENhdGVnb3J5UmVwb3NpdG9yeSkge31cblxuICBhc3luYyBidWlsZFByb2R1Y3RGaWx0ZXJCeUNhdGVnb3J5KGNhdGVnb3J5OiBDYXRlZ29yeSk6IFByb21pc2U8UmVwb3NpdG9yeUZpbmRGaWVsdGVyczxQcm9kdWN0Pj4ge1xuICAgIGNvbnN0IHByb2R1Y3RzSWRzID0gY2F0ZWdvcnkucHJvZHVjdHM/Lmxlbmd0aFxuICAgICAgPyBjYXRlZ29yeS5wcm9kdWN0c1xuICAgICAgOiBhd2FpdCB0aGlzLmNhdGVnb3J5UmVwb3NpdG9yeS5nZXQoeyBpZDogY2F0ZWdvcnkuaWQgfSkudGhlbigoY2F0ZWdvcnlGb3VuZCkgPT4gY2F0ZWdvcnlGb3VuZC5wcm9kdWN0cylcblxuICAgIHJldHVybiB7IGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IHByb2R1Y3RzSWRzIH0gfVxuICB9XG59XG4iXX0=
|
|
@@ -164,12 +164,12 @@ export class CatalogService {
|
|
|
164
164
|
return [...new Set(sorted.map(({ _source }) => _source.id))];
|
|
165
165
|
}));
|
|
166
166
|
}
|
|
167
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: CatalogService, deps: [{ token: 'ProductRepository' }, { token: 'CategoryRepository' }, { token: CATEGORY_STRUCTURE }, { token: DEFAULT_SHOP }, { token: i1.ProductsIndex }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
168
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: CatalogService }); }
|
|
169
167
|
}
|
|
170
|
-
i0.ɵɵ
|
|
168
|
+
CatalogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CatalogService, deps: [{ token: 'ProductRepository' }, { token: 'CategoryRepository' }, { token: CATEGORY_STRUCTURE }, { token: DEFAULT_SHOP }, { token: i1.ProductsIndex }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
169
|
+
CatalogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CatalogService });
|
|
170
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CatalogService, decorators: [{
|
|
171
171
|
type: Injectable
|
|
172
|
-
}], ctorParameters: ()
|
|
172
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
173
173
|
type: Inject,
|
|
174
174
|
args: ['ProductRepository']
|
|
175
175
|
}] }, { type: undefined, decorators: [{
|
|
@@ -181,5 +181,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
|
|
|
181
181
|
}] }, { type: i1.Shops, decorators: [{
|
|
182
182
|
type: Inject,
|
|
183
183
|
args: [DEFAULT_SHOP]
|
|
184
|
-
}] }, { type: i1.ProductsIndex }] });
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXRhbG9nL2NhdGFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBSUwsb0JBQW9CLEVBSXBCLGFBQWEsRUFJYix3QkFBd0IsRUFDeEIsS0FBSyxFQUNMLEtBQUssRUFDTCxHQUFHLEdBQ0osTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBOzs7QUFzRC9ELE1BQU0sT0FBTyxjQUFjO0lBR3pCLFlBQ2dELGlCQUFvQyxFQUNuQyxrQkFBc0MsRUFDeEMsd0JBQWtELEVBQ3hELElBQVcsRUFDakMsWUFBMkI7UUFKRSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ25DLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDeEMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUN4RCxTQUFJLEdBQUosSUFBSSxDQUFPO1FBQ2pDLGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBUHRDLG1CQUFjLEdBQTZCLEVBQUUsQ0FBQTtRQTZKN0MscUJBQWdCLEdBQUcsQ0FBQyxFQUMxQixZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBQ04sSUFBSSxFQUNKLElBQUksRUFDSixhQUFhLEdBQ1EsRUFBbUMsRUFBRTtZQUMxRCxNQUFNLE9BQU8sR0FBRyxFQUFxQyxDQUFBO1lBRXJELElBQUksWUFBWSxFQUFFLE1BQU07Z0JBQ3RCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFB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QyxrQkFBa0I7OzBCQUN6QixNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQge1xyXG4gIENhdGVnb3J5LFxyXG4gIENhdGVnb3J5UmVwb3NpdG9yeSxcclxuICBGaW5kUmVwb3NpdG9yeVBhcmFtcyxcclxuICBJbnZhbGlkQXJndW1lbnRFcnJvcixcclxuICBQcm9kdWN0LFxyXG4gIFByb2R1Y3RHZW5kZXIsXHJcbiAgUHJvZHVjdFJlcG9zaXRvcnksXHJcbiAgUHJvZHVjdHNJbmRleCxcclxuICBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzLFxyXG4gIFJlcG9zaXRvcnlGaW5kUmVzdWx0LFxyXG4gIFJlcG9zaXRvcnlPcmRlckJ5LFxyXG4gIFJvdW5kUHJvZHVjdFByaWNlc0hlbHBlcixcclxuICBTaG9wcyxcclxuICBXaGVyZSxcclxuICBzZXQsXHJcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXHJcbmltcG9ydCB7IENBVEVHT1JZX1NUUlVDVFVSRSwgREVGQVVMVF9TSE9QIH0gZnJvbSAnLi4vLi4vY29uc3RzJ1xyXG5pbXBvcnQgeyBDYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXIgfSBmcm9tICcuL2FkYXB0ZXJzJ1xyXG5pbXBvcnQgeyBQcm9kdWN0U29ydCB9IGZyb20gJy4vdHlwZXMvcHJvZHVjdC1zb3J0LnR5cGUnXHJcblxyXG50eXBlIEZldGNoUHJvZHVjdHNGaWx0ZXJzID0ge1xyXG4gIGNsdWJEaXNjb3VudD86IG51bWJlcltdXHJcbiAgYnJhbmRzPzogc3RyaW5nW11cclxuICBwcmljZXM/OiB7IG1pbj86IG51bWJlcjsgbWF4PzogbnVtYmVyOyBzdWJzY3JpYmVyUHJpY2U/OiBib29sZWFuIH1cclxuICBnZW5kZXI/OiBQcm9kdWN0R2VuZGVyW11cclxuICByYXRlPzogbnVtYmVyXHJcbiAgY3VzdG9tT3B0aW9ucz86IHN0cmluZ1tdXHJcbiAgdGFncz86IHN0cmluZ1tdXHJcbn1cclxuXHJcbnR5cGUgRmV0Y2hQcm9kdWN0c09wdGlvbnMgPSB7XHJcbiAgcGFnZT86IG51bWJlclxyXG4gIHBlclBhZ2U/OiBudW1iZXJcclxuICBzb3J0PzogUHJvZHVjdFNvcnRcclxuICBtYWluR2VuZGVyPzogUHJvZHVjdEdlbmRlclxyXG59XHJcblxyXG50eXBlIEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQgZXh0ZW5kcyBDYXRlZ29yeT4gPSB7XHJcbiAgY2F0ZWdvcnk/OiBUXHJcbiAgcHJvZmlsZT86IHN0cmluZ1tdXHJcbiAgdGVybT86IHN0cmluZ1xyXG59XHJcblxyXG50eXBlIEZldGNoUHJvZHVjdHNQYXJhbXM8VCBleHRlbmRzIENhdGVnb3J5PiA9IEZldGNoUHJvZHVjdHNPcHRpb25zICZcclxuICAoXHJcbiAgICB8IHtcclxuICAgICAgICBjYXRlZ29yeTogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD5bJ2NhdGVnb3J5J11cclxuICAgICAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlciB9XHJcbiAgICAgIH1cclxuICAgIHwge1xyXG4gICAgICAgIHByb2ZpbGU6IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+Wydwcm9maWxlJ11cclxuICAgICAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlcjsgdGFncz86IG5ldmVyIH1cclxuICAgICAgfVxyXG4gICAgfCB7XHJcbiAgICAgICAgdGVybTogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD5bJ3Rlcm0nXVxyXG4gICAgICAgIGZpbHRlcnM/OiBGZXRjaFByb2R1Y3RzRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyIH1cclxuICAgICAgfVxyXG4gIClcclxuXHJcbnR5cGUgRmV0Y2hQcm9kdWN0c1Jlc3BvbnNlID0ge1xyXG4gIHByb2R1Y3RzOiB7IGRhdGE6IFByb2R1Y3RbXTsgdG90YWw6IG51bWJlciB9XHJcbiAgcGFnZXM6IG51bWJlclxyXG4gIHByaWNlczoge1xyXG4gICAgcHJpY2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH1cclxuICAgIHN1YnNjcmliZXJQcmljZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfVxyXG4gIH1cclxuICBicmFuZHM/OiBzdHJpbmdbXVxyXG59XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDYXRhbG9nU2VydmljZTxUIGV4dGVuZHMgQ2F0ZWdvcnkgPSBDYXRlZ29yeT4ge1xyXG4gIHByaXZhdGUgcHJvZHVjdHNCeVRlcm06IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnUHJvZHVjdFJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RSZXBvc2l0b3J5OiBQcm9kdWN0UmVwb3NpdG9yeSxcclxuICAgIEBJbmplY3QoJ0NhdGVnb3J5UmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgY2F0ZWdvcnlSZXBvc2l0b3J5OiBDYXRlZ29yeVJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KENBVEVHT1JZX1NUUlVDVFVSRSkgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXI6IENhdGVnb3J5U3RydWN0dXJlQWRhcHRlcixcclxuICAgIEBJbmplY3QoREVGQVVMVF9TSE9QKSBwcml2YXRlIHJlYWRvbmx5IHNob3A6IFNob3BzLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9kdWN0SW5kZXg6IFByb2R1Y3RzSW5kZXgsXHJcbiAgKSB7fVxyXG5cclxuICBhc3luYyBmZXRjaFByb2R1Y3RzKG9wdGlvbnM6IEZldGNoUHJvZHVjdHNQYXJhbXM8VD4pOiBQcm9taXNlPEZldGNoUHJvZHVjdHNSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgbGltaXRzID0gdGhpcy5idWlsZExpbWl0UXVlcnkob3B0aW9ucylcclxuXHJcbiAgICBpZiAodGhpcy5oYXNQcm9maWxlKG9wdGlvbnMpICYmIG9wdGlvbnMuZmlsdGVycz8uY3VzdG9tT3B0aW9ucylcclxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKGBJdCBjb3VsZG4ndCBmaWxsZWQgY3VzdG9tT3B0aW9ucyB3aGVuIHByb2ZpbGUgaXMgZ2l2ZW5gKVxyXG4gICAgaWYgKHRoaXMuaGFzUHJvZmlsZShvcHRpb25zKSAmJiBvcHRpb25zLmZpbHRlcnM/LnRhZ3MpXHJcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihgSXQgY291bGRuJ3QgZmlsbGVkIHRhZ3Mgd2hlbiBwcm9maWxlIGlzIGdpdmVuYClcclxuICAgIGlmICh0aGlzLmhhc1Rlcm0ob3B0aW9ucykgJiYgb3B0aW9ucy5maWx0ZXJzPy5jdXN0b21PcHRpb25zKVxyXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoYEl0IGNvdWxkbid0IGZpbGxlZCBjdXN0b21PcHRpb25zIHdoZW4gdGVybSBpcyBnaXZlbmApXHJcblxyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZmluZENhdGFsb2cob3B0aW9ucywgbGltaXRzKS50aGVuKCh7IGRhdGEsIGNvdW50OiB0b3RhbCwgbWF4aW11bSwgbWluaW1hbCwgZGlzdGluY3QgfSkgPT4gKHtcclxuICAgICAgcHJvZHVjdHM6IHsgZGF0YTogZGF0YS5tYXAoKHByb2R1Y3QpID0+IFJvdW5kUHJvZHVjdFByaWNlc0hlbHBlci5yb3VuZFByb2R1Y3RQcmljZXMocHJvZHVjdCkpLCB0b3RhbCB9LFxyXG4gICAgICBwYWdlczogTWF0aC5jZWlsKHRvdGFsIC8gbGltaXRzLmxpbWl0KSxcclxuICAgICAgcHJpY2VzOiB7XHJcbiAgICAgICAgcHJpY2U6IHsgbWluOiArbWluaW1hbD8ucHJpY2U/LnByaWNlPy50b0ZpeGVkKDIpLCBtYXg6ICttYXhpbXVtPy5wcmljZT8ucHJpY2U/LnRvRml4ZWQoMikgfSxcclxuICAgICAgICBzdWJzY3JpYmVyUHJpY2U6IHtcclxuICAgICAgICAgIG1pbjogK21pbmltYWw/LnByaWNlPy5zdWJzY3JpYmVyUHJpY2U/LnRvRml4ZWQoMiksXHJcbiAgICAgICAgICBtYXg6ICttYXhpbXVtPy5wcmljZT8uc3Vic2NyaWJlclByaWNlPy50b0ZpeGVkKDIpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIGJyYW5kczogZGlzdGluY3Q/LmJyYW5kLFxyXG4gICAgfSkpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGZpbmRDYXRhbG9nKFxyXG4gICAgb3B0aW9uczogRmV0Y2hQcm9kdWN0c1BhcmFtczxUPixcclxuICAgIGxpbWl0czoge1xyXG4gICAgICBsaW1pdD86IG51bWJlclxyXG4gICAgICBvZmZzZXQ/OiBudW1iZXJcclxuICAgIH0sXHJcbiAgKTogUHJvbWlzZTxSZXBvc2l0b3J5RmluZFJlc3VsdDxQcm9kdWN0Pj4ge1xyXG4gICAgaWYgKHRoaXMuaGFzVGVybShvcHRpb25zKSAmJiBvcHRpb25zLnNvcnQgPT09ICdtb3N0LXJlbGV2YW50Jykge1xyXG4gICAgICBjb25zdCBwcm9kdWN0c0lkcyA9IGF3YWl0IHRoaXMuZmluZENhdGFsb2dJZHNCeUVsYXN0aWNTZWFyY2gob3B0aW9ucy50ZXJtKVxyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuZmluZENhdGFsb2dBbmRTb3J0QnlNb3N0UmV2ZWxhbnQocHJvZHVjdHNJZHMsIG9wdGlvbnMsIGxpbWl0cylcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5oYXNDYXRlZ29yeShvcHRpb25zKSAmJiBvcHRpb25zLnNvcnQgPT09ICdtb3N0LXJlbGV2YW50Jykge1xyXG4gICAgICBjb25zdCBwcm9kdWN0c0lkcyA9IG9wdGlvbnMuY2F0ZWdvcnkucHJvZHVjdHM/Lmxlbmd0aFxyXG4gICAgICAgID8gb3B0aW9ucy5jYXRlZ29yeS5wcm9kdWN0c1xyXG4gICAgICAgIDogYXdhaXQgdGhpcy5jYXRlZ29yeVJlcG9zaXRvcnkuZ2V0KHsgaWQ6IG9wdGlvbnMuY2F0ZWdvcnkuaWQgfSkudGhlbigoY2F0ZWdvcnlGb3VuZCkgPT4gY2F0ZWdvcnlGb3VuZC5wcm9kdWN0cylcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLmZpbmRDYXRhbG9nQW5kU29ydEJ5TW9zdFJldmVsYW50KHByb2R1Y3RzSWRzLCBvcHRpb25zLCBsaW1pdHMpXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVwb1BhcmFtczogRmluZFJlcG9zaXRvcnlQYXJhbXM8UHJvZHVjdD4gPSB7XHJcbiAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICAuLi4oYXdhaXQgdGhpcy5idWlsZE1haW5GaWx0ZXIob3B0aW9ucykpLFxyXG4gICAgICAgIC4uLnRoaXMuYnVpbGRGaWx0ZXJRdWVyeShvcHRpb25zPy5maWx0ZXJzIHx8IHt9KSxcclxuICAgICAgfSxcclxuICAgICAgLi4uKG9wdGlvbnM/LnNvcnQgPyB7IG9yZGVyQnk6IHRoaXMuYnVpbGRTb3J0UXVlcnkob3B0aW9ucz8uc29ydCkgfSA6IHt9KSxcclxuICAgICAgbGltaXRzLFxyXG4gICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgbWluaW1hbDogWydwcmljZSddLFxyXG4gICAgICAgIG1heGltdW06IFsncHJpY2UnXSxcclxuICAgICAgICAuLi4oIXRoaXMuaGFzQ2F0ZWdvcnkob3B0aW9ucykgPyB7IGRpc3RpbmN0OiBbJ2JyYW5kJ10gfSA6IHt9KSxcclxuICAgICAgfSxcclxuICAgIH1cclxuXHJcbiAgICBpZiAoWydiaWdnZXN0LXByaWNlJywgJ2xvd2VzdC1wcmljZScsICdiaWdnZXN0LWRpc2NvdW50JywgJ2Jlc3QtcmF0aW5nJ10uaW5jbHVkZXMob3B0aW9ucy5zb3J0KSlcclxuICAgICAgcmV0dXJuIHRoaXMucHJvZHVjdFJlcG9zaXRvcnkuZmluZENhdGFsb2cocmVwb1BhcmFtcylcclxuXHJcbiAgICByZXR1cm4gdGhpcy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kQ2F0YWxvZyhcclxuICAgICAgcmVwb1BhcmFtcyxcclxuICAgICAgb3B0aW9ucz8ubWFpbkdlbmRlciB8fCB0aGlzLnNob3AgPT09IFNob3BzLk1FTlNNQVJLRVQgPyAnbWFsZScgOiAnZmVtYWxlJyxcclxuICAgIClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgYnVpbGRNYWluRmlsdGVyKHtcclxuICAgIGNhdGVnb3J5LFxyXG4gICAgcHJvZmlsZSxcclxuICAgIHRlcm0sXHJcbiAgfTogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD4pOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kRmllbHRlcnM8UHJvZHVjdD4+IHtcclxuICAgIGlmIChjYXRlZ29yeSkgcmV0dXJuIHRoaXMuY2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyLmJ1aWxkUHJvZHVjdEZpbHRlckJ5Q2F0ZWdvcnkoY2F0ZWdvcnkpXHJcbiAgICBpZiAocHJvZmlsZSkgcmV0dXJuIHsgdGFnczogeyBvcGVyYXRvcjogV2hlcmUuTElLRSwgdmFsdWU6IHByb2ZpbGUgfSB9XHJcbiAgICBpZiAodGVybSlcclxuICAgICAgcmV0dXJuIHRoaXMucHJvZHVjdEluZGV4XHJcbiAgICAgICAgLnNlYXJjaCh0ZXJtLCA5OTksIHRoaXMuc2hvcClcclxuICAgICAgICAudGhlbigoZGF0YSkgPT4gKHsgaWQ6IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogZGF0YS5oaXRzLm1hcCgoeyBfc291cmNlIH0pID0+IF9zb3VyY2UuaWQpIH0gfSkpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGZpbmRDYXRhbG9nQW5kU29ydEJ5TW9zdFJldmVsYW50KFxyXG4gICAgcHJvZHVjdElkczogc3RyaW5nW10sXHJcbiAgICBvcHRpb25zOiBPbWl0PEZldGNoUHJvZHVjdHNPcHRpb25zLCAnc29ydCc+ICYge1xyXG4gICAgICB0ZXJtPzogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD5bJ3Rlcm0nXVxyXG4gICAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlciB9XHJcbiAgICB9LFxyXG4gICAgbGltaXRzOiB7XHJcbiAgICAgIGxpbWl0PzogbnVtYmVyXHJcbiAgICAgIG9mZnNldD86IG51bWJlclxyXG4gICAgfSxcclxuICApOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kUmVzdWx0PFByb2R1Y3Q+PiB7XHJcbiAgICBjb25zdCB0b3RhbFJlc3VsdCA9IGF3YWl0IHRoaXMucHJvZHVjdFJlcG9zaXRvcnkuZmluZENhdGFsb2coXHJcbiAgICAgIHtcclxuICAgICAgICBmaWVsZHM6IFsnaWQnLCAnc3RvY2snXSxcclxuICAgICAgICBmaWx0ZXJzOiB7XHJcbiAgICAgICAgICBpZDogeyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBwcm9kdWN0SWRzIH0sXHJcbiAgICAgICAgICAuLi50aGlzLmJ1aWxkRmlsdGVyUXVlcnkob3B0aW9ucz8uZmlsdGVycyB8fCB7fSksXHJcbiAgICAgICAgfSxcclxuICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICBtaW5pbWFsOiBbJ3ByaWNlJ10sXHJcbiAgICAgICAgICBtYXhpbXVtOiBbJ3ByaWNlJ10sXHJcbiAgICAgICAgICBkaXN0aW5jdDogWydicmFuZCddLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIG9wdGlvbnM/Lm1haW5HZW5kZXIgfHwgdGhpcy5zaG9wID09PSBTaG9wcy5NRU5TTUFSS0VUID8gJ21hbGUnIDogJ2ZlbWFsZScsXHJcbiAgICApXHJcblxyXG4gICAgY29uc3Qgc3RvY2tEYXRhID0gdG90YWxSZXN1bHQuZGF0YS5maWx0ZXIoKHByb2R1Y3QpID0+IHByb2R1Y3Quc3RvY2sucXVhbnRpdHkgPiAwKVxyXG4gICAgY29uc3Qgc3RvY2tPdXQgPSB0b3RhbFJlc3VsdC5kYXRhLmZpbHRlcigocHJvZHVjdCkgPT4gcHJvZHVjdC5zdG9jay5xdWFudGl0eSA8PSAwKVxyXG4gICAgY29uc3QgcHJvZHVjdElkc1N0b2NrID0gcHJvZHVjdElkcy5maWx0ZXIoKHByb2R1Y3QpID0+IHN0b2NrRGF0YS5zb21lKChyZXN1bHQpID0+IHJlc3VsdC5pZCA9PSBwcm9kdWN0KSlcclxuICAgIGNvbnN0IHByb2R1Y3RJZHNTdG9ja091dCA9IHByb2R1Y3RJZHMuZmlsdGVyKChwcm9kdWN0KSA9PiBzdG9ja091dC5zb21lKChyZXN1bHQpID0+IHJlc3VsdC5pZCA9PSBwcm9kdWN0KSlcclxuXHJcbiAgICBjb25zdCBsaW1pdGVkUHJvZHVjdElkID0gcHJvZHVjdElkc1N0b2NrXHJcbiAgICAgIC5jb25jYXQocHJvZHVjdElkc1N0b2NrT3V0KVxyXG4gICAgICAuc2xpY2UobGltaXRzLm9mZnNldCwgbGltaXRzLm9mZnNldCArIGxpbWl0cy5saW1pdClcclxuXHJcbiAgICBjb25zdCBvcmRlcmVkSWQgPSBwcm9kdWN0SWRzLmZpbHRlcigocHJvZHVjdCkgPT4gbGltaXRlZFByb2R1Y3RJZC5pbmNsdWRlcyhwcm9kdWN0KSlcclxuICAgIGNvbnN0IHByb2R1Y3RSZXN1bHQgPSBhd2FpdCB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5LmZpbmRDYXRhbG9nKHtcclxuICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgIGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IG9yZGVyZWRJZCB9LFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBkYXRhOiBsaW1pdGVkUHJvZHVjdElkLm1hcCgoaWQpID0+IHByb2R1Y3RSZXN1bHQuZGF0YS5maW5kKChwcm9kdWN0KSA9PiBwcm9kdWN0LmlkID09PSBpZCkpLmZpbHRlcihCb29sZWFuKSxcclxuICAgICAgY291bnQ6IHRvdGFsUmVzdWx0LmNvdW50LFxyXG4gICAgICBtYXhpbXVtOiB0b3RhbFJlc3VsdC5tYXhpbXVtLFxyXG4gICAgICBtaW5pbWFsOiB0b3RhbFJlc3VsdC5taW5pbWFsLFxyXG4gICAgICBkaXN0aW5jdDogdG90YWxSZXN1bHQuZGlzdGluY3QsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGZpbmRDYXRhbG9nSWRzQnlFbGFzdGljU2VhcmNoKHRlcm06IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcclxuICAgIGlmICh0aGlzLnByb2R1Y3RzQnlUZXJtW3Rlcm1dKSByZXR1cm4gdGhpcy5wcm9kdWN0c0J5VGVybVt0ZXJtXVxyXG5cclxuICAgIHJldHVybiAodGhpcy5wcm9kdWN0c0J5VGVybVt0ZXJtXSA9IGF3YWl0IHRoaXMucHJvZHVjdEluZGV4XHJcbiAgICAgIC5zZWFyY2godGVybSwgOTk5LCB0aGlzLnNob3ApXHJcbiAgICAgIC50aGVuKCh7IGhpdHM6IHByb2R1Y3RzIH0pID0+IHtcclxuICAgICAgICBjb25zdCB3aXRoU3RvY2sgPSBwcm9kdWN0cy5maWx0ZXIoKHsgX3NvdXJjZSB9KSA9PiBfc291cmNlLnN0b2NrLnF1YW50aXR5ID4gMClcclxuICAgICAgICBjb25zdCB3aXRoT3V0U3RvY2sgPSBwcm9kdWN0cy5maWx0ZXIoKHsgX3NvdXJjZSB9KSA9PiBfc291cmNlLnN0b2NrLnF1YW50aXR5IDw9IDApXHJcbiAgICAgICAgY29uc3Qgc29ydGVkID0gWy4uLndpdGhTdG9jaywgLi4ud2l0aE91dFN0b2NrXVxyXG5cclxuICAgICAgICByZXR1cm4gWy4uLm5ldyBTZXQoc29ydGVkLm1hcCgoeyBfc291cmNlIH0pID0+IF9zb3VyY2UuaWQpKV1cclxuICAgICAgfSkpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkRmlsdGVyUXVlcnkgPSAoe1xyXG4gICAgY2x1YkRpc2NvdW50LFxyXG4gICAgYnJhbmRzLFxyXG4gICAgcHJpY2VzLFxyXG4gICAgZ2VuZGVyLFxyXG4gICAgdGFncyxcclxuICAgIHJhdGUsXHJcbiAgICBjdXN0b21PcHRpb25zLFxyXG4gIH06IEZldGNoUHJvZHVjdHNGaWx0ZXJzKTogUmVwb3NpdG9yeUZpbmRGaWVsdGVyczxQcm9kdWN0PiA9PiB7XHJcbiAgICBjb25zdCBmaWx0ZXJzID0ge30gYXMgUmVwb3NpdG9yeUZpbmRGaWVsdGVyczxQcm9kdWN0PlxyXG5cclxuICAgIGlmIChjbHViRGlzY291bnQ/Lmxlbmd0aClcclxuICAgICAgc2V0KGZpbHRlcnMsICdwcmljZS5zdWJzY3JpYmVyRGlzY291bnRQZXJjZW50YWdlJywgeyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBjbHViRGlzY291bnQgfSlcclxuICAgIGlmIChicmFuZHM/Lmxlbmd0aCkgZmlsdGVycy5icmFuZCA9IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogYnJhbmRzIH1cclxuICAgIGlmIChnZW5kZXI/Lmxlbmd0aCkgZmlsdGVycy5nZW5kZXIgPSB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IGdlbmRlciB9XHJcbiAgICBpZiAocHJpY2VzPy5taW4gfHwgcHJpY2VzPy5tYXgpXHJcbiAgICAgIHNldChmaWx0ZXJzLCBwcmljZXMuc3Vic2NyaWJlclByaWNlID8gJ3ByaWNlLnN1YnNjcmliZXJQcmljZScgOiAncHJpY2UucHJpY2UnLCBbXHJcbiAgICAgICAgLi4uKHByaWNlcy5taW4gPyBbeyBvcGVyYXRvcjogV2hlcmUuR1RFLCB2YWx1ZTogTWF0aC5yb3VuZChwcmljZXMubWluKSB9XSA6IFtdKSxcclxuICAgICAgICAuLi4ocHJpY2VzLm1heCA/IFt7IG9wZXJhdG9yOiBXaGVyZS5MVEUsIHZhbHVlOiBNYXRoLmNlaWwocHJpY2VzLm1heCkgfV0gOiBbXSksXHJcbiAgICAgIF0pXHJcbiAgICBpZiAocmF0ZSkgZmlsdGVycy5yYXRlID0geyBvcGVyYXRvcjogV2hlcmUuR1RFLCB2YWx1ZTogcmF0ZSB9XHJcbiAgICBpZiAodGFncz8ubGVuZ3RoKSBmaWx0ZXJzLnRhZ3MgPSB7IG9wZXJhdG9yOiBXaGVyZS5MSUtFLCB2YWx1ZTogdGFncyB9XHJcbiAgICBpZiAoY3VzdG9tT3B0aW9ucz8ubGVuZ3RoKSBmaWx0ZXJzLmZpbHRlcnMgPSB7IG9wZXJhdG9yOiBXaGVyZS5MSUtFLCB2YWx1ZTogY3VzdG9tT3B0aW9ucyB9XHJcblxyXG4gICAgcmV0dXJuIGZpbHRlcnNcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRTb3J0UXVlcnkgPSAoc29ydDogUHJvZHVjdFNvcnQpOiBSZXBvc2l0b3J5T3JkZXJCeTxQcm9kdWN0PiA9PiB7XHJcbiAgICBpZiAoIXNvcnQgfHwgc29ydCA9PT0gJ21vc3QtcmVsZXZhbnQnKSByZXR1cm4ge31cclxuXHJcbiAgICBpZiAoc29ydCA9PT0gJ2Jlc3Qtc2VsbGVycycpIHJldHVybiB7IHNob3BwaW5nQ291bnQ6ICdkZXNjJyB9XHJcbiAgICBpZiAoc29ydCA9PT0gJ2JpZ2dlc3QtcHJpY2UnKSByZXR1cm4geyBzdWJzY3JpYmVyUHJpY2U6ICdkZXNjJyB9IGFzIGFueVxyXG4gICAgaWYgKHNvcnQgPT09ICdsb3dlc3QtcHJpY2UnKSByZXR1cm4geyBzdWJzY3JpYmVyUHJpY2U6ICdhc2MnIH0gYXMgYW55XHJcbiAgICBpZiAoc29ydCA9PT0gJ2Jlc3QtcmF0aW5nJykgcmV0dXJuIHsgcmF0ZTogJ2Rlc2MnIH1cclxuICAgIGlmIChzb3J0ID09PSAnbmV3cycpIHJldHVybiB7IGNyZWF0ZWRBdDogJ2Rlc2MnIH1cclxuICAgIGlmIChzb3J0ID09PSAnYmlnZ2VzdC1kaXNjb3VudCcpIHJldHVybiB7IHN1YnNjcmliZXJEaXNjb3VudFBlcmNlbnRhZ2U6ICdkZXNjJyB9IGFzIGFueVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZExpbWl0UXVlcnkgPSAob3B0aW9uczogeyBwYWdlPzogbnVtYmVyOyBwZXJQYWdlPzogbnVtYmVyIH0pOiB7IGxpbWl0PzogbnVtYmVyOyBvZmZzZXQ/OiBudW1iZXIgfSA9PiB7XHJcbiAgICBjb25zdCBsaW1pdCA9IG9wdGlvbnM/LnBlclBhZ2UgfHwgMjBcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBsaW1pdCxcclxuICAgICAgb2Zmc2V0OiAoKG9wdGlvbnM/LnBhZ2UgfHwgMSkgLSAxKSAqIGxpbWl0LFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNQcm9maWxlID0gKFxyXG4gICAgb3B0aW9uczogRmV0Y2hQcm9kdWN0c1BhcmFtczxUPixcclxuICApOiBvcHRpb25zIGlzIEZldGNoUHJvZHVjdHNPcHRpb25zICYge1xyXG4gICAgcHJvZmlsZTogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD5bJ3Byb2ZpbGUnXVxyXG4gICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXI7IHRhZ3M/OiBuZXZlciB9XHJcbiAgfSA9PiAncHJvZmlsZScgaW4gb3B0aW9uc1xyXG5cclxuICBwcml2YXRlIGhhc1Rlcm0gPSAoXHJcbiAgICBvcHRpb25zOiBGZXRjaFByb2R1Y3RzUGFyYW1zPFQ+LFxyXG4gICk6IG9wdGlvbnMgaXMgRmV0Y2hQcm9kdWN0c09wdGlvbnMgJiB7XHJcbiAgICB0ZXJtOiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsndGVybSddXHJcbiAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlciB9XHJcbiAgfSA9PiAndGVybScgaW4gb3B0aW9uc1xyXG5cclxuICBwcml2YXRlIGhhc0NhdGVnb3J5ID0gKFxyXG4gICAgb3B0aW9uczogRmV0Y2hQcm9kdWN0c1BhcmFtczxUPixcclxuICApOiBvcHRpb25zIGlzIEZldGNoUHJvZHVjdHNPcHRpb25zICYge1xyXG4gICAgY2F0ZWdvcnk6IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+WydjYXRlZ29yeSddXHJcbiAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlciB9XHJcbiAgfSA9PiAnY2F0ZWdvcnknIGluIG9wdGlvbnNcclxufVxyXG4iXX0=
|
|
184
|
+
}] }, { type: i1.ProductsIndex }]; } });
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXRhbG9nL2NhdGFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBSUwsb0JBQW9CLEVBSXBCLGFBQWEsRUFJYix3QkFBd0IsRUFDeEIsS0FBSyxFQUNMLEtBQUssRUFDTCxHQUFHLEdBQ0osTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBOzs7QUFzRC9ELE1BQU0sT0FBTyxjQUFjO0lBR3pCLFlBQ2dELGlCQUFvQyxFQUNuQyxrQkFBc0MsRUFDeEMsd0JBQWtELEVBQ3hELElBQVcsRUFDakMsWUFBMkI7UUFKRSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ25DLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDeEMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUN4RCxTQUFJLEdBQUosSUFBSSxDQUFPO1FBQ2pDLGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBUHRDLG1CQUFjLEdBQTZCLEVBQUUsQ0FBQTtRQTZKN0MscUJBQWdCLEdBQUcsQ0FBQyxFQUMxQixZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBQ04sSUFBSSxFQUNKLElBQUksRUFDSixhQUFhLEdBQ1EsRUFBbUMsRUFBRTtZQUMxRCxNQUFNLE9BQU8sR0FBRyxFQUFxQyxDQUFBO1lBRXJELElBQUksWUFBWSxFQUFFLE1BQU07Z0JBQ3RCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFB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QyxrQkFBa0I7OzBCQUN6QixNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgQ2F0ZWdvcnksXG4gIENhdGVnb3J5UmVwb3NpdG9yeSxcbiAgRmluZFJlcG9zaXRvcnlQYXJhbXMsXG4gIEludmFsaWRBcmd1bWVudEVycm9yLFxuICBQcm9kdWN0LFxuICBQcm9kdWN0R2VuZGVyLFxuICBQcm9kdWN0UmVwb3NpdG9yeSxcbiAgUHJvZHVjdHNJbmRleCxcbiAgUmVwb3NpdG9yeUZpbmRGaWVsdGVycyxcbiAgUmVwb3NpdG9yeUZpbmRSZXN1bHQsXG4gIFJlcG9zaXRvcnlPcmRlckJ5LFxuICBSb3VuZFByb2R1Y3RQcmljZXNIZWxwZXIsXG4gIFNob3BzLFxuICBXaGVyZSxcbiAgc2V0LFxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcbmltcG9ydCB7IENBVEVHT1JZX1NUUlVDVFVSRSwgREVGQVVMVF9TSE9QIH0gZnJvbSAnLi4vLi4vY29uc3RzJ1xuaW1wb3J0IHsgQ2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyIH0gZnJvbSAnLi9hZGFwdGVycydcbmltcG9ydCB7IFByb2R1Y3RTb3J0IH0gZnJvbSAnLi90eXBlcy9wcm9kdWN0LXNvcnQudHlwZSdcblxudHlwZSBGZXRjaFByb2R1Y3RzRmlsdGVycyA9IHtcbiAgY2x1YkRpc2NvdW50PzogbnVtYmVyW11cbiAgYnJhbmRzPzogc3RyaW5nW11cbiAgcHJpY2VzPzogeyBtaW4/OiBudW1iZXI7IG1heD86IG51bWJlcjsgc3Vic2NyaWJlclByaWNlPzogYm9vbGVhbiB9XG4gIGdlbmRlcj86IFByb2R1Y3RHZW5kZXJbXVxuICByYXRlPzogbnVtYmVyXG4gIGN1c3RvbU9wdGlvbnM/OiBzdHJpbmdbXVxuICB0YWdzPzogc3RyaW5nW11cbn1cblxudHlwZSBGZXRjaFByb2R1Y3RzT3B0aW9ucyA9IHtcbiAgcGFnZT86IG51bWJlclxuICBwZXJQYWdlPzogbnVtYmVyXG4gIHNvcnQ/OiBQcm9kdWN0U29ydFxuICBtYWluR2VuZGVyPzogUHJvZHVjdEdlbmRlclxufVxuXG50eXBlIEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQgZXh0ZW5kcyBDYXRlZ29yeT4gPSB7XG4gIGNhdGVnb3J5PzogVFxuICBwcm9maWxlPzogc3RyaW5nW11cbiAgdGVybT86IHN0cmluZ1xufVxuXG50eXBlIEZldGNoUHJvZHVjdHNQYXJhbXM8VCBleHRlbmRzIENhdGVnb3J5PiA9IEZldGNoUHJvZHVjdHNPcHRpb25zICZcbiAgKFxuICAgIHwge1xuICAgICAgICBjYXRlZ29yeTogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD5bJ2NhdGVnb3J5J11cbiAgICAgICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXIgfVxuICAgICAgfVxuICAgIHwge1xuICAgICAgICBwcm9maWxlOiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsncHJvZmlsZSddXG4gICAgICAgIGZpbHRlcnM/OiBGZXRjaFByb2R1Y3RzRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyOyB0YWdzPzogbmV2ZXIgfVxuICAgICAgfVxuICAgIHwge1xuICAgICAgICB0ZXJtOiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsndGVybSddXG4gICAgICAgIGZpbHRlcnM/OiBGZXRjaFByb2R1Y3RzRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyIH1cbiAgICAgIH1cbiAgKVxuXG50eXBlIEZldGNoUHJvZHVjdHNSZXNwb25zZSA9IHtcbiAgcHJvZHVjdHM6IHsgZGF0YTogUHJvZHVjdFtdOyB0b3RhbDogbnVtYmVyIH1cbiAgcGFnZXM6IG51bWJlclxuICBwcmljZXM6IHtcbiAgICBwcmljZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfVxuICAgIHN1YnNjcmliZXJQcmljZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfVxuICB9XG4gIGJyYW5kcz86IHN0cmluZ1tdXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDYXRhbG9nU2VydmljZTxUIGV4dGVuZHMgQ2F0ZWdvcnkgPSBDYXRlZ29yeT4ge1xuICBwcml2YXRlIHByb2R1Y3RzQnlUZXJtOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoJ1Byb2R1Y3RSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBwcm9kdWN0UmVwb3NpdG9yeTogUHJvZHVjdFJlcG9zaXRvcnksXG4gICAgQEluamVjdCgnQ2F0ZWdvcnlSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVJlcG9zaXRvcnk6IENhdGVnb3J5UmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KENBVEVHT1JZX1NUUlVDVFVSRSkgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXI6IENhdGVnb3J5U3RydWN0dXJlQWRhcHRlcixcbiAgICBASW5qZWN0KERFRkFVTFRfU0hPUCkgcHJpdmF0ZSByZWFkb25seSBzaG9wOiBTaG9wcyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RJbmRleDogUHJvZHVjdHNJbmRleCxcbiAgKSB7fVxuXG4gIGFzeW5jIGZldGNoUHJvZHVjdHMob3B0aW9uczogRmV0Y2hQcm9kdWN0c1BhcmFtczxUPik6IFByb21pc2U8RmV0Y2hQcm9kdWN0c1Jlc3BvbnNlPiB7XG4gICAgY29uc3QgbGltaXRzID0gdGhpcy5idWlsZExpbWl0UXVlcnkob3B0aW9ucylcblxuICAgIGlmICh0aGlzLmhhc1Byb2ZpbGUob3B0aW9ucykgJiYgb3B0aW9ucy5maWx0ZXJzPy5jdXN0b21PcHRpb25zKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKGBJdCBjb3VsZG4ndCBmaWxsZWQgY3VzdG9tT3B0aW9ucyB3aGVuIHByb2ZpbGUgaXMgZ2l2ZW5gKVxuICAgIGlmICh0aGlzLmhhc1Byb2ZpbGUob3B0aW9ucykgJiYgb3B0aW9ucy5maWx0ZXJzPy50YWdzKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKGBJdCBjb3VsZG4ndCBmaWxsZWQgdGFncyB3aGVuIHByb2ZpbGUgaXMgZ2l2ZW5gKVxuICAgIGlmICh0aGlzLmhhc1Rlcm0ob3B0aW9ucykgJiYgb3B0aW9ucy5maWx0ZXJzPy5jdXN0b21PcHRpb25zKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKGBJdCBjb3VsZG4ndCBmaWxsZWQgY3VzdG9tT3B0aW9ucyB3aGVuIHRlcm0gaXMgZ2l2ZW5gKVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZmluZENhdGFsb2cob3B0aW9ucywgbGltaXRzKS50aGVuKCh7IGRhdGEsIGNvdW50OiB0b3RhbCwgbWF4aW11bSwgbWluaW1hbCwgZGlzdGluY3QgfSkgPT4gKHtcbiAgICAgIHByb2R1Y3RzOiB7IGRhdGE6IGRhdGEubWFwKChwcm9kdWN0KSA9PiBSb3VuZFByb2R1Y3RQcmljZXNIZWxwZXIucm91bmRQcm9kdWN0UHJpY2VzKHByb2R1Y3QpKSwgdG90YWwgfSxcbiAgICAgIHBhZ2VzOiBNYXRoLmNlaWwodG90YWwgLyBsaW1pdHMubGltaXQpLFxuICAgICAgcHJpY2VzOiB7XG4gICAgICAgIHByaWNlOiB7IG1pbjogK21pbmltYWw/LnByaWNlPy5wcmljZT8udG9GaXhlZCgyKSwgbWF4OiArbWF4aW11bT8ucHJpY2U/LnByaWNlPy50b0ZpeGVkKDIpIH0sXG4gICAgICAgIHN1YnNjcmliZXJQcmljZToge1xuICAgICAgICAgIG1pbjogK21pbmltYWw/LnByaWNlPy5zdWJzY3JpYmVyUHJpY2U/LnRvRml4ZWQoMiksXG4gICAgICAgICAgbWF4OiArbWF4aW11bT8ucHJpY2U/LnN1YnNjcmliZXJQcmljZT8udG9GaXhlZCgyKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBicmFuZHM6IGRpc3RpbmN0Py5icmFuZCxcbiAgICB9KSlcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmluZENhdGFsb2coXG4gICAgb3B0aW9uczogRmV0Y2hQcm9kdWN0c1BhcmFtczxUPixcbiAgICBsaW1pdHM6IHtcbiAgICAgIGxpbWl0PzogbnVtYmVyXG4gICAgICBvZmZzZXQ/OiBudW1iZXJcbiAgICB9LFxuICApOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kUmVzdWx0PFByb2R1Y3Q+PiB7XG4gICAgaWYgKHRoaXMuaGFzVGVybShvcHRpb25zKSAmJiBvcHRpb25zLnNvcnQgPT09ICdtb3N0LXJlbGV2YW50Jykge1xuICAgICAgY29uc3QgcHJvZHVjdHNJZHMgPSBhd2FpdCB0aGlzLmZpbmRDYXRhbG9nSWRzQnlFbGFzdGljU2VhcmNoKG9wdGlvbnMudGVybSlcblxuICAgICAgcmV0dXJuIHRoaXMuZmluZENhdGFsb2dBbmRTb3J0QnlNb3N0UmV2ZWxhbnQocHJvZHVjdHNJZHMsIG9wdGlvbnMsIGxpbWl0cylcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNDYXRlZ29yeShvcHRpb25zKSAmJiBvcHRpb25zLnNvcnQgPT09ICdtb3N0LXJlbGV2YW50Jykge1xuICAgICAgY29uc3QgcHJvZHVjdHNJZHMgPSBvcHRpb25zLmNhdGVnb3J5LnByb2R1Y3RzPy5sZW5ndGhcbiAgICAgICAgPyBvcHRpb25zLmNhdGVnb3J5LnByb2R1Y3RzXG4gICAgICAgIDogYXdhaXQgdGhpcy5jYXRlZ29yeVJlcG9zaXRvcnkuZ2V0KHsgaWQ6IG9wdGlvbnMuY2F0ZWdvcnkuaWQgfSkudGhlbigoY2F0ZWdvcnlGb3VuZCkgPT4gY2F0ZWdvcnlGb3VuZC5wcm9kdWN0cylcblxuICAgICAgcmV0dXJuIHRoaXMuZmluZENhdGFsb2dBbmRTb3J0QnlNb3N0UmV2ZWxhbnQocHJvZHVjdHNJZHMsIG9wdGlvbnMsIGxpbWl0cylcbiAgICB9XG5cbiAgICBjb25zdCByZXBvUGFyYW1zOiBGaW5kUmVwb3NpdG9yeVBhcmFtczxQcm9kdWN0PiA9IHtcbiAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgLi4uKGF3YWl0IHRoaXMuYnVpbGRNYWluRmlsdGVyKG9wdGlvbnMpKSxcbiAgICAgICAgLi4udGhpcy5idWlsZEZpbHRlclF1ZXJ5KG9wdGlvbnM/LmZpbHRlcnMgfHwge30pLFxuICAgICAgfSxcbiAgICAgIC4uLihvcHRpb25zPy5zb3J0ID8geyBvcmRlckJ5OiB0aGlzLmJ1aWxkU29ydFF1ZXJ5KG9wdGlvbnM/LnNvcnQpIH0gOiB7fSksXG4gICAgICBsaW1pdHMsXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIG1pbmltYWw6IFsncHJpY2UnXSxcbiAgICAgICAgbWF4aW11bTogWydwcmljZSddLFxuICAgICAgICAuLi4oIXRoaXMuaGFzQ2F0ZWdvcnkob3B0aW9ucykgPyB7IGRpc3RpbmN0OiBbJ2JyYW5kJ10gfSA6IHt9KSxcbiAgICAgIH0sXG4gICAgfVxuXG4gICAgaWYgKFsnYmlnZ2VzdC1wcmljZScsICdsb3dlc3QtcHJpY2UnLCAnYmlnZ2VzdC1kaXNjb3VudCcsICdiZXN0LXJhdGluZyddLmluY2x1ZGVzKG9wdGlvbnMuc29ydCkpXG4gICAgICByZXR1cm4gdGhpcy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kQ2F0YWxvZyhyZXBvUGFyYW1zKVxuXG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdFJlcG9zaXRvcnkuZmluZENhdGFsb2coXG4gICAgICByZXBvUGFyYW1zLFxuICAgICAgb3B0aW9ucz8ubWFpbkdlbmRlciB8fCB0aGlzLnNob3AgPT09IFNob3BzLk1FTlNNQVJLRVQgPyAnbWFsZScgOiAnZmVtYWxlJyxcbiAgICApXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGJ1aWxkTWFpbkZpbHRlcih7XG4gICAgY2F0ZWdvcnksXG4gICAgcHJvZmlsZSxcbiAgICB0ZXJtLFxuICB9OiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPik6IFByb21pc2U8UmVwb3NpdG9yeUZpbmRGaWVsdGVyczxQcm9kdWN0Pj4ge1xuICAgIGlmIChjYXRlZ29yeSkgcmV0dXJuIHRoaXMuY2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyLmJ1aWxkUHJvZHVjdEZpbHRlckJ5Q2F0ZWdvcnkoY2F0ZWdvcnkpXG4gICAgaWYgKHByb2ZpbGUpIHJldHVybiB7IHRhZ3M6IHsgb3BlcmF0b3I6IFdoZXJlLkxJS0UsIHZhbHVlOiBwcm9maWxlIH0gfVxuICAgIGlmICh0ZXJtKVxuICAgICAgcmV0dXJuIHRoaXMucHJvZHVjdEluZGV4XG4gICAgICAgIC5zZWFyY2godGVybSwgOTk5LCB0aGlzLnNob3ApXG4gICAgICAgIC50aGVuKChkYXRhKSA9PiAoeyBpZDogeyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBkYXRhLmhpdHMubWFwKCh7IF9zb3VyY2UgfSkgPT4gX3NvdXJjZS5pZCkgfSB9KSlcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmluZENhdGFsb2dBbmRTb3J0QnlNb3N0UmV2ZWxhbnQoXG4gICAgcHJvZHVjdElkczogc3RyaW5nW10sXG4gICAgb3B0aW9uczogT21pdDxGZXRjaFByb2R1Y3RzT3B0aW9ucywgJ3NvcnQnPiAmIHtcbiAgICAgIHRlcm0/OiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsndGVybSddXG4gICAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlciB9XG4gICAgfSxcbiAgICBsaW1pdHM6IHtcbiAgICAgIGxpbWl0PzogbnVtYmVyXG4gICAgICBvZmZzZXQ/OiBudW1iZXJcbiAgICB9LFxuICApOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kUmVzdWx0PFByb2R1Y3Q+PiB7XG4gICAgY29uc3QgdG90YWxSZXN1bHQgPSBhd2FpdCB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5LmZpbmRDYXRhbG9nKFxuICAgICAge1xuICAgICAgICBmaWVsZHM6IFsnaWQnLCAnc3RvY2snXSxcbiAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgIGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IHByb2R1Y3RJZHMgfSxcbiAgICAgICAgICAuLi50aGlzLmJ1aWxkRmlsdGVyUXVlcnkob3B0aW9ucz8uZmlsdGVycyB8fCB7fSksXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBtaW5pbWFsOiBbJ3ByaWNlJ10sXG4gICAgICAgICAgbWF4aW11bTogWydwcmljZSddLFxuICAgICAgICAgIGRpc3RpbmN0OiBbJ2JyYW5kJ10sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgb3B0aW9ucz8ubWFpbkdlbmRlciB8fCB0aGlzLnNob3AgPT09IFNob3BzLk1FTlNNQVJLRVQgPyAnbWFsZScgOiAnZmVtYWxlJyxcbiAgICApXG5cbiAgICBjb25zdCBzdG9ja0RhdGEgPSB0b3RhbFJlc3VsdC5kYXRhLmZpbHRlcigocHJvZHVjdCkgPT4gcHJvZHVjdC5zdG9jay5xdWFudGl0eSA+IDApXG4gICAgY29uc3Qgc3RvY2tPdXQgPSB0b3RhbFJlc3VsdC5kYXRhLmZpbHRlcigocHJvZHVjdCkgPT4gcHJvZHVjdC5zdG9jay5xdWFudGl0eSA8PSAwKVxuICAgIGNvbnN0IHByb2R1Y3RJZHNTdG9jayA9IHByb2R1Y3RJZHMuZmlsdGVyKChwcm9kdWN0KSA9PiBzdG9ja0RhdGEuc29tZSgocmVzdWx0KSA9PiByZXN1bHQuaWQgPT0gcHJvZHVjdCkpXG4gICAgY29uc3QgcHJvZHVjdElkc1N0b2NrT3V0ID0gcHJvZHVjdElkcy5maWx0ZXIoKHByb2R1Y3QpID0+IHN0b2NrT3V0LnNvbWUoKHJlc3VsdCkgPT4gcmVzdWx0LmlkID09IHByb2R1Y3QpKVxuXG4gICAgY29uc3QgbGltaXRlZFByb2R1Y3RJZCA9IHByb2R1Y3RJZHNTdG9ja1xuICAgICAgLmNvbmNhdChwcm9kdWN0SWRzU3RvY2tPdXQpXG4gICAgICAuc2xpY2UobGltaXRzLm9mZnNldCwgbGltaXRzLm9mZnNldCArIGxpbWl0cy5saW1pdClcblxuICAgIGNvbnN0IG9yZGVyZWRJZCA9IHByb2R1Y3RJZHMuZmlsdGVyKChwcm9kdWN0KSA9PiBsaW1pdGVkUHJvZHVjdElkLmluY2x1ZGVzKHByb2R1Y3QpKVxuICAgIGNvbnN0IHByb2R1Y3RSZXN1bHQgPSBhd2FpdCB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5LmZpbmRDYXRhbG9nKHtcbiAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgaWQ6IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogb3JkZXJlZElkIH0sXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogbGltaXRlZFByb2R1Y3RJZC5tYXAoKGlkKSA9PiBwcm9kdWN0UmVzdWx0LmRhdGEuZmluZCgocHJvZHVjdCkgPT4gcHJvZHVjdC5pZCA9PT0gaWQpKS5maWx0ZXIoQm9vbGVhbiksXG4gICAgICBjb3VudDogdG90YWxSZXN1bHQuY291bnQsXG4gICAgICBtYXhpbXVtOiB0b3RhbFJlc3VsdC5tYXhpbXVtLFxuICAgICAgbWluaW1hbDogdG90YWxSZXN1bHQubWluaW1hbCxcbiAgICAgIGRpc3RpbmN0OiB0b3RhbFJlc3VsdC5kaXN0aW5jdCxcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZpbmRDYXRhbG9nSWRzQnlFbGFzdGljU2VhcmNoKHRlcm06IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBpZiAodGhpcy5wcm9kdWN0c0J5VGVybVt0ZXJtXSkgcmV0dXJuIHRoaXMucHJvZHVjdHNCeVRlcm1bdGVybV1cblxuICAgIHJldHVybiAodGhpcy5wcm9kdWN0c0J5VGVybVt0ZXJtXSA9IGF3YWl0IHRoaXMucHJvZHVjdEluZGV4XG4gICAgICAuc2VhcmNoKHRlcm0sIDk5OSwgdGhpcy5zaG9wKVxuICAgICAgLnRoZW4oKHsgaGl0czogcHJvZHVjdHMgfSkgPT4ge1xuICAgICAgICBjb25zdCB3aXRoU3RvY2sgPSBwcm9kdWN0cy5maWx0ZXIoKHsgX3NvdXJjZSB9KSA9PiBfc291cmNlLnN0b2NrLnF1YW50aXR5ID4gMClcbiAgICAgICAgY29uc3Qgd2l0aE91dFN0b2NrID0gcHJvZHVjdHMuZmlsdGVyKCh7IF9zb3VyY2UgfSkgPT4gX3NvdXJjZS5zdG9jay5xdWFudGl0eSA8PSAwKVxuICAgICAgICBjb25zdCBzb3J0ZWQgPSBbLi4ud2l0aFN0b2NrLCAuLi53aXRoT3V0U3RvY2tdXG5cbiAgICAgICAgcmV0dXJuIFsuLi5uZXcgU2V0KHNvcnRlZC5tYXAoKHsgX3NvdXJjZSB9KSA9PiBfc291cmNlLmlkKSldXG4gICAgICB9KSlcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGaWx0ZXJRdWVyeSA9ICh7XG4gICAgY2x1YkRpc2NvdW50LFxuICAgIGJyYW5kcyxcbiAgICBwcmljZXMsXG4gICAgZ2VuZGVyLFxuICAgIHRhZ3MsXG4gICAgcmF0ZSxcbiAgICBjdXN0b21PcHRpb25zLFxuICB9OiBGZXRjaFByb2R1Y3RzRmlsdGVycyk6IFJlcG9zaXRvcnlGaW5kRmllbHRlcnM8UHJvZHVjdD4gPT4ge1xuICAgIGNvbnN0IGZpbHRlcnMgPSB7fSBhcyBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzPFByb2R1Y3Q+XG5cbiAgICBpZiAoY2x1YkRpc2NvdW50Py5sZW5ndGgpXG4gICAgICBzZXQoZmlsdGVycywgJ3ByaWNlLnN1YnNjcmliZXJEaXNjb3VudFBlcmNlbnRhZ2UnLCB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IGNsdWJEaXNjb3VudCB9KVxuICAgIGlmIChicmFuZHM/Lmxlbmd0aCkgZmlsdGVycy5icmFuZCA9IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogYnJhbmRzIH1cbiAgICBpZiAoZ2VuZGVyPy5sZW5ndGgpIGZpbHRlcnMuZ2VuZGVyID0geyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBnZW5kZXIgfVxuICAgIGlmIChwcmljZXM/Lm1pbiB8fCBwcmljZXM/Lm1heClcbiAgICAgIHNldChmaWx0ZXJzLCBwcmljZXMuc3Vic2NyaWJlclByaWNlID8gJ3ByaWNlLnN1YnNjcmliZXJQcmljZScgOiAncHJpY2UucHJpY2UnLCBbXG4gICAgICAgIC4uLihwcmljZXMubWluID8gW3sgb3BlcmF0b3I6IFdoZXJlLkdURSwgdmFsdWU6IE1hdGgucm91bmQocHJpY2VzLm1pbikgfV0gOiBbXSksXG4gICAgICAgIC4uLihwcmljZXMubWF4ID8gW3sgb3BlcmF0b3I6IFdoZXJlLkxURSwgdmFsdWU6IE1hdGguY2VpbChwcmljZXMubWF4KSB9XSA6IFtdKSxcbiAgICAgIF0pXG4gICAgaWYgKHJhdGUpIGZpbHRlcnMucmF0ZSA9IHsgb3BlcmF0b3I6IFdoZXJlLkdURSwgdmFsdWU6IHJhdGUgfVxuICAgIGlmICh0YWdzPy5sZW5ndGgpIGZpbHRlcnMudGFncyA9IHsgb3BlcmF0b3I6IFdoZXJlLkxJS0UsIHZhbHVlOiB0YWdzIH1cbiAgICBpZiAoY3VzdG9tT3B0aW9ucz8ubGVuZ3RoKSBmaWx0ZXJzLmZpbHRlcnMgPSB7IG9wZXJhdG9yOiBXaGVyZS5MSUtFLCB2YWx1ZTogY3VzdG9tT3B0aW9ucyB9XG5cbiAgICByZXR1cm4gZmlsdGVyc1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFNvcnRRdWVyeSA9IChzb3J0OiBQcm9kdWN0U29ydCk6IFJlcG9zaXRvcnlPcmRlckJ5PFByb2R1Y3Q+ID0+IHtcbiAgICBpZiAoIXNvcnQgfHwgc29ydCA9PT0gJ21vc3QtcmVsZXZhbnQnKSByZXR1cm4ge31cblxuICAgIGlmIChzb3J0ID09PSAnYmVzdC1zZWxsZXJzJykgcmV0dXJuIHsgc2hvcHBpbmdDb3VudDogJ2Rlc2MnIH1cbiAgICBpZiAoc29ydCA9PT0gJ2JpZ2dlc3QtcHJpY2UnKSByZXR1cm4geyBzdWJzY3JpYmVyUHJpY2U6ICdkZXNjJyB9IGFzIGFueVxuICAgIGlmIChzb3J0ID09PSAnbG93ZXN0LXByaWNlJykgcmV0dXJuIHsgc3Vic2NyaWJlclByaWNlOiAnYXNjJyB9IGFzIGFueVxuICAgIGlmIChzb3J0ID09PSAnYmVzdC1yYXRpbmcnKSByZXR1cm4geyByYXRlOiAnZGVzYycgfVxuICAgIGlmIChzb3J0ID09PSAnbmV3cycpIHJldHVybiB7IGNyZWF0ZWRBdDogJ2Rlc2MnIH1cbiAgICBpZiAoc29ydCA9PT0gJ2JpZ2dlc3QtZGlzY291bnQnKSByZXR1cm4geyBzdWJzY3JpYmVyRGlzY291bnRQZXJjZW50YWdlOiAnZGVzYycgfSBhcyBhbnlcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRMaW1pdFF1ZXJ5ID0gKG9wdGlvbnM6IHsgcGFnZT86IG51bWJlcjsgcGVyUGFnZT86IG51bWJlciB9KTogeyBsaW1pdD86IG51bWJlcjsgb2Zmc2V0PzogbnVtYmVyIH0gPT4ge1xuICAgIGNvbnN0IGxpbWl0ID0gb3B0aW9ucz8ucGVyUGFnZSB8fCAyMFxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbWl0LFxuICAgICAgb2Zmc2V0OiAoKG9wdGlvbnM/LnBhZ2UgfHwgMSkgLSAxKSAqIGxpbWl0LFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFzUHJvZmlsZSA9IChcbiAgICBvcHRpb25zOiBGZXRjaFByb2R1Y3RzUGFyYW1zPFQ+LFxuICApOiBvcHRpb25zIGlzIEZldGNoUHJvZHVjdHNPcHRpb25zICYge1xuICAgIHByb2ZpbGU6IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+Wydwcm9maWxlJ11cbiAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlcjsgdGFncz86IG5ldmVyIH1cbiAgfSA9PiAncHJvZmlsZScgaW4gb3B0aW9uc1xuXG4gIHByaXZhdGUgaGFzVGVybSA9IChcbiAgICBvcHRpb25zOiBGZXRjaFByb2R1Y3RzUGFyYW1zPFQ+LFxuICApOiBvcHRpb25zIGlzIEZldGNoUHJvZHVjdHNPcHRpb25zICYge1xuICAgIHRlcm06IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+Wyd0ZXJtJ11cbiAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlciB9XG4gIH0gPT4gJ3Rlcm0nIGluIG9wdGlvbnNcblxuICBwcml2YXRlIGhhc0NhdGVnb3J5ID0gKFxuICAgIG9wdGlvbnM6IEZldGNoUHJvZHVjdHNQYXJhbXM8VD4sXG4gICk6IG9wdGlvbnMgaXMgRmV0Y2hQcm9kdWN0c09wdGlvbnMgJiB7XG4gICAgY2F0ZWdvcnk6IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+WydjYXRlZ29yeSddXG4gICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXIgfVxuICB9ID0+ICdjYXRlZ29yeScgaW4gb3B0aW9uc1xufVxuIl19
|