@infrab4a/connect 4.0.0-beta.41 → 4.0.0-beta.43

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.
@@ -0,0 +1,29 @@
1
+ import { BaseModel, GenericIdentifier, ModelBaseStructure } from '../../generic/model';
2
+ import { Shops } from './enums';
3
+ import { Filter } from './filter';
4
+ import { CategoryCondition, CategoryMetadata } from './types';
5
+ export declare class CategoryBase<ChildCategory extends ModelBaseStructure<ChildCategory, Identifiers> = ModelBaseStructure<any, any>, Identifiers = ChildCategory['identifiersFields']> extends BaseModel<ChildCategory, Identifiers> {
6
+ id: string;
7
+ brandCategory: boolean;
8
+ brandLogo?: string;
9
+ name: string;
10
+ slug: string;
11
+ image?: string;
12
+ brandCategoryBanner?: string;
13
+ brandCategoryBannerMobile?: string;
14
+ description: string;
15
+ conditions?: CategoryCondition;
16
+ products?: string[];
17
+ createdAt?: Date;
18
+ updatedAt?: Date;
19
+ shop?: Shops;
20
+ shops?: string[];
21
+ published: boolean;
22
+ metadata: CategoryMetadata;
23
+ isCollection?: boolean;
24
+ reference?: string;
25
+ parentId?: number;
26
+ parent?: CategoryBase;
27
+ filters?: Filter[];
28
+ static get identifiersFields(): GenericIdentifier[];
29
+ }
@@ -0,0 +1,5 @@
1
+ import { GenericIdentifier } from '../../generic/model';
2
+ import { CategoryBase } from './category-base';
3
+ export declare class CategoryForProduct extends CategoryBase<CategoryForProduct, GenericIdentifier> {
4
+ static get identifiersFields(): GenericIdentifier[];
5
+ }
@@ -1,31 +1,7 @@
1
- import { BaseModel, GenericIdentifier } from '../../generic/model';
2
- import { Shops } from './enums';
3
- import { Filter } from './filter';
4
- import { Product } from './product';
5
- import { CategoryCondition, CategoryMetadata } from './types';
6
- export declare class Category extends BaseModel<Category> {
7
- id: string;
8
- brandCategory: boolean;
9
- brandLogo?: string;
10
- name: string;
11
- slug: string;
12
- image?: string;
13
- brandCategoryBanner?: string;
14
- brandCategoryBannerMobile?: string;
15
- description: string;
16
- conditions?: CategoryCondition;
17
- products?: string[];
18
- createdAt?: Date;
19
- updatedAt?: Date;
20
- shop?: Shops;
21
- shops?: string[];
22
- published: boolean;
23
- metadata: CategoryMetadata;
24
- isCollection?: boolean;
25
- reference?: string;
26
- parentId?: number;
27
- parent?: Category;
28
- filters?: Filter[];
29
- childrenProducts?: Product[];
1
+ import { GenericIdentifier } from '../../generic/model';
2
+ import { CategoryBase } from './category-base';
3
+ import { ProductForCategory } from './product-for-category';
4
+ export declare class Category extends CategoryBase<Category, GenericIdentifier> {
5
+ childrenProducts?: ProductForCategory[];
30
6
  static get identifiersFields(): GenericIdentifier[];
31
7
  }
@@ -1,12 +1,12 @@
1
1
  import { BaseModel } from '../../generic/model';
2
- import { Product } from './product';
2
+ import { ProductForKit } from './product-for-kit';
3
3
  declare type KitProductIdentifiers = 'productId' | 'kitProductId';
4
4
  export declare class KitProduct extends BaseModel<KitProduct, KitProductIdentifiers> {
5
5
  productId: string;
6
6
  kitProductId: string;
7
7
  quantity: number;
8
- kit: Product;
9
- product: Product;
8
+ kit: ProductForKit;
9
+ product: ProductForKit;
10
10
  static get identifiersFields(): KitProductIdentifiers[];
11
11
  }
12
12
  export {};
@@ -0,0 +1,40 @@
1
+ import { BaseModel, GenericIdentifier, ModelBaseStructure } from '../../generic/model';
2
+ import { ProductEvaluation, ProductGender, ProductMetadata, ProductReview, ShopDescription, ShopPrice, Stock } from './types';
3
+ import { Variant } from './variant';
4
+ export declare class ProductBase<ChildProduct extends ModelBaseStructure<ChildProduct, Identifiers>, Identifiers = ChildProduct['identifiersFields']> extends BaseModel<ChildProduct, Identifiers> {
5
+ id: string;
6
+ name: string;
7
+ slug: string;
8
+ description: ShopDescription;
9
+ sku: string;
10
+ price: ShopPrice;
11
+ hasVariants: boolean;
12
+ NCM: string;
13
+ EAN: string;
14
+ CEST: string;
15
+ weight: number;
16
+ stock: Stock;
17
+ costPrice: number;
18
+ images?: string[];
19
+ miniatures?: string[];
20
+ published: boolean;
21
+ createdAt?: Date;
22
+ updatedAt?: Date;
23
+ brand: string;
24
+ tags?: string[];
25
+ filters?: string[];
26
+ type?: string;
27
+ categories?: string[];
28
+ reviews?: ProductReview[];
29
+ variant?: Variant;
30
+ video?: string;
31
+ isKit?: boolean;
32
+ rate?: number;
33
+ gender?: ProductGender;
34
+ shoppingCount?: number;
35
+ metadata: ProductMetadata;
36
+ private reviewsTotal?;
37
+ get evaluation(): ProductEvaluation;
38
+ set evaluation(evaluation: ProductEvaluation);
39
+ static get identifiersFields(): GenericIdentifier[];
40
+ }
@@ -0,0 +1,7 @@
1
+ import { GenericIdentifier } from '../../generic/model';
2
+ import { KitProduct } from './kit-product';
3
+ import { ProductBase } from './product-base';
4
+ export declare class ProductForCategory extends ProductBase<ProductForCategory, GenericIdentifier> {
5
+ kitProducts?: KitProduct[];
6
+ static get identifiersFields(): GenericIdentifier[];
7
+ }
@@ -0,0 +1,7 @@
1
+ import { GenericIdentifier } from '../../generic/model';
2
+ import { CategoryForProduct } from './category-for-product';
3
+ import { ProductBase } from './product-base';
4
+ export declare class ProductForKit extends ProductBase<ProductForKit, GenericIdentifier> {
5
+ category: CategoryForProduct;
6
+ static get identifiersFields(): GenericIdentifier[];
7
+ }
@@ -1,44 +1,9 @@
1
- import { BaseModel, GenericIdentifier } from '../../generic/model';
2
- import { Category } from './category';
1
+ import { GenericIdentifier } from '../../generic/model';
2
+ import { CategoryForProduct } from './category-for-product';
3
3
  import { KitProduct } from './kit-product';
4
- import { ProductEvaluation, ProductGender, ProductMetadata, ProductReview, ShopDescription, ShopPrice, Stock } from './types';
5
- import { Variant } from './variant';
6
- export declare class Product extends BaseModel<Product> {
7
- id: string;
8
- name: string;
9
- slug: string;
10
- description: ShopDescription;
11
- sku: string;
12
- price: ShopPrice;
13
- hasVariants: boolean;
14
- NCM: string;
15
- EAN: string;
16
- CEST: string;
17
- weight: number;
18
- stock: Stock;
19
- costPrice: number;
20
- images?: string[];
21
- miniatures?: string[];
22
- published: boolean;
23
- createdAt?: Date;
24
- updatedAt?: Date;
25
- brand: string;
26
- tags?: string[];
27
- filters?: string[];
28
- type?: string;
29
- categories?: string[];
30
- reviews?: ProductReview[];
31
- variant?: Variant;
32
- video?: string;
33
- isKit?: boolean;
34
- rate?: number;
35
- gender?: ProductGender;
36
- shoppingCount?: number;
37
- metadata: ProductMetadata;
38
- category: Category;
4
+ import { ProductBase } from './product-base';
5
+ export declare class Product extends ProductBase<Product, GenericIdentifier> {
6
+ category: CategoryForProduct;
39
7
  kitProducts?: KitProduct[];
40
- private reviewsTotal?;
41
- get evaluation(): ProductEvaluation;
42
- set evaluation(evaluation: ProductEvaluation);
43
8
  static get identifiersFields(): GenericIdentifier[];
44
9
  }
@@ -0,0 +1,18 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { Type } from 'class-transformer';
3
+ import { BaseModel } from '../../generic/model';
4
+ import { Filter } from './filter';
5
+ export class CategoryBase extends BaseModel {
6
+ static get identifiersFields() {
7
+ return ['id'];
8
+ }
9
+ }
10
+ __decorate([
11
+ Type(() => CategoryBase),
12
+ __metadata("design:type", CategoryBase)
13
+ ], CategoryBase.prototype, "parent", void 0);
14
+ __decorate([
15
+ Type(() => Filter),
16
+ __metadata("design:type", Array)
17
+ ], CategoryBase.prototype, "filters", void 0);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3Qvc3JjL2RvbWFpbi9jYXRhbG9nL21vZGVscy9jYXRlZ29yeS1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBeUMsTUFBTSxxQkFBcUIsQ0FBQTtBQUV0RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBR2pDLE1BQU0sT0FBTyxZQUdYLFNBQVEsU0FBcUM7SUE0QjdDLE1BQU0sS0FBSyxpQkFBaUI7UUFDMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2YsQ0FBQztDQUNGO0FBVEM7SUFBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDOzhCQUNoQixZQUFZOzRDQUFBO0FBRXJCO0lBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQzs7NkNBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInXG5pbXBvcnQgeyBCYXNlTW9kZWwsIEdlbmVyaWNJZGVudGlmaWVyLCBNb2RlbEJhc2VTdHJ1Y3R1cmUgfSBmcm9tICcuLi8uLi9nZW5lcmljL21vZGVsJ1xuaW1wb3J0IHsgU2hvcHMgfSBmcm9tICcuL2VudW1zJ1xuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi9maWx0ZXInXG5pbXBvcnQgeyBDYXRlZ29yeUNvbmRpdGlvbiwgQ2F0ZWdvcnlNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCBjbGFzcyBDYXRlZ29yeUJhc2U8XG4gIENoaWxkQ2F0ZWdvcnkgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU8Q2hpbGRDYXRlZ29yeSwgSWRlbnRpZmllcnM+ID0gTW9kZWxCYXNlU3RydWN0dXJlPGFueSwgYW55PixcbiAgSWRlbnRpZmllcnMgPSBDaGlsZENhdGVnb3J5WydpZGVudGlmaWVyc0ZpZWxkcyddLFxuPiBleHRlbmRzIEJhc2VNb2RlbDxDaGlsZENhdGVnb3J5LCBJZGVudGlmaWVycz4ge1xuICBpZDogc3RyaW5nXG4gIGJyYW5kQ2F0ZWdvcnk6IGJvb2xlYW5cbiAgYnJhbmRMb2dvPzogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBzbHVnOiBzdHJpbmdcbiAgaW1hZ2U/OiBzdHJpbmdcbiAgYnJhbmRDYXRlZ29yeUJhbm5lcj86IHN0cmluZ1xuICBicmFuZENhdGVnb3J5QmFubmVyTW9iaWxlPzogc3RyaW5nXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmdcbiAgY29uZGl0aW9ucz86IENhdGVnb3J5Q29uZGl0aW9uXG4gIHByb2R1Y3RzPzogc3RyaW5nW11cbiAgY3JlYXRlZEF0PzogRGF0ZVxuICB1cGRhdGVkQXQ/OiBEYXRlXG4gIHNob3A/OiBTaG9wc1xuICBzaG9wcz86IHN0cmluZ1tdXG4gIHB1Ymxpc2hlZDogYm9vbGVhblxuICBtZXRhZGF0YTogQ2F0ZWdvcnlNZXRhZGF0YVxuICBpc0NvbGxlY3Rpb24/OiBib29sZWFuXG4gIHJlZmVyZW5jZT86IHN0cmluZ1xuICBwYXJlbnRJZD86IG51bWJlclxuXG4gIEBUeXBlKCgpID0+IENhdGVnb3J5QmFzZSlcbiAgcGFyZW50PzogQ2F0ZWdvcnlCYXNlXG5cbiAgQFR5cGUoKCkgPT4gRmlsdGVyKVxuICBmaWx0ZXJzPzogRmlsdGVyW11cblxuICBzdGF0aWMgZ2V0IGlkZW50aWZpZXJzRmllbGRzKCk6IEdlbmVyaWNJZGVudGlmaWVyW10ge1xuICAgIHJldHVybiBbJ2lkJ11cbiAgfVxufVxuIl19
@@ -0,0 +1,7 @@
1
+ import { CategoryBase } from './category-base';
2
+ export class CategoryForProduct extends CategoryBase {
3
+ static get identifiersFields() {
4
+ return ['id'];
5
+ }
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktZm9yLXByb2R1Y3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9kb21haW4vY2F0YWxvZy9tb2RlbHMvY2F0ZWdvcnktZm9yLXByb2R1Y3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRTlDLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxZQUFtRDtJQUN6RixNQUFNLEtBQWMsaUJBQWlCO1FBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdlbmVyaWNJZGVudGlmaWVyIH0gZnJvbSAnLi4vLi4vZ2VuZXJpYy9tb2RlbCdcbmltcG9ydCB7IENhdGVnb3J5QmFzZSB9IGZyb20gJy4vY2F0ZWdvcnktYmFzZSdcblxuZXhwb3J0IGNsYXNzIENhdGVnb3J5Rm9yUHJvZHVjdCBleHRlbmRzIENhdGVnb3J5QmFzZTxDYXRlZ29yeUZvclByb2R1Y3QsIEdlbmVyaWNJZGVudGlmaWVyPiB7XG4gIHN0YXRpYyBvdmVycmlkZSBnZXQgaWRlbnRpZmllcnNGaWVsZHMoKTogR2VuZXJpY0lkZW50aWZpZXJbXSB7XG4gICAgcmV0dXJuIFsnaWQnXVxuICB9XG59XG4iXX0=
@@ -1,23 +1,14 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { Type } from 'class-transformer';
3
- import { BaseModel } from '../../generic/model';
4
- import { Filter } from './filter';
5
- import { Product } from './product';
6
- export class Category extends BaseModel {
3
+ import { CategoryBase } from './category-base';
4
+ import { ProductForCategory } from './product-for-category';
5
+ export class Category extends CategoryBase {
7
6
  static get identifiersFields() {
8
7
  return ['id'];
9
8
  }
10
9
  }
11
10
  __decorate([
12
- Type(() => Category),
13
- __metadata("design:type", Category)
14
- ], Category.prototype, "parent", void 0);
15
- __decorate([
16
- Type(() => Filter),
17
- __metadata("design:type", Array)
18
- ], Category.prototype, "filters", void 0);
19
- __decorate([
20
- Type(() => Product),
11
+ Type(() => ProductForCategory),
21
12
  __metadata("design:type", Array)
22
13
  ], Category.prototype, "childrenProducts", void 0);
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9kb21haW4vY2F0YWxvZy9tb2RlbHMvY2F0ZWdvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLHFCQUFxQixDQUFBO0FBRWxFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUduQyxNQUFNLE9BQU8sUUFBUyxTQUFRLFNBQW1CO0lBK0IvQyxNQUFNLEtBQUssaUJBQWlCO1FBQzFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNmLENBQUM7Q0FDRjtBQVpDO0lBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQzs4QkFDWixRQUFRO3dDQUFBO0FBRWpCO0lBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQzs7eUNBQ0Q7QUFFbEI7SUFBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDOztrREFDUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcidcbmltcG9ydCB7IEJhc2VNb2RlbCwgR2VuZXJpY0lkZW50aWZpZXIgfSBmcm9tICcuLi8uLi9nZW5lcmljL21vZGVsJ1xuaW1wb3J0IHsgU2hvcHMgfSBmcm9tICcuL2VudW1zJ1xuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi9maWx0ZXInXG5pbXBvcnQgeyBQcm9kdWN0IH0gZnJvbSAnLi9wcm9kdWN0J1xuaW1wb3J0IHsgQ2F0ZWdvcnlDb25kaXRpb24sIENhdGVnb3J5TWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgY2xhc3MgQ2F0ZWdvcnkgZXh0ZW5kcyBCYXNlTW9kZWw8Q2F0ZWdvcnk+IHtcbiAgaWQ6IHN0cmluZ1xuICBicmFuZENhdGVnb3J5OiBib29sZWFuXG4gIGJyYW5kTG9nbz86IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgc2x1Zzogc3RyaW5nXG4gIGltYWdlPzogc3RyaW5nXG4gIGJyYW5kQ2F0ZWdvcnlCYW5uZXI/OiBzdHJpbmdcbiAgYnJhbmRDYXRlZ29yeUJhbm5lck1vYmlsZT86IHN0cmluZ1xuICBkZXNjcmlwdGlvbjogc3RyaW5nXG4gIGNvbmRpdGlvbnM/OiBDYXRlZ29yeUNvbmRpdGlvblxuICBwcm9kdWN0cz86IHN0cmluZ1tdXG4gIGNyZWF0ZWRBdD86IERhdGVcbiAgdXBkYXRlZEF0PzogRGF0ZVxuICBzaG9wPzogU2hvcHNcbiAgc2hvcHM/OiBzdHJpbmdbXVxuICBwdWJsaXNoZWQ6IGJvb2xlYW5cbiAgbWV0YWRhdGE6IENhdGVnb3J5TWV0YWRhdGFcbiAgaXNDb2xsZWN0aW9uPzogYm9vbGVhblxuICByZWZlcmVuY2U/OiBzdHJpbmdcbiAgcGFyZW50SWQ/OiBudW1iZXJcblxuICBAVHlwZSgoKSA9PiBDYXRlZ29yeSlcbiAgcGFyZW50PzogQ2F0ZWdvcnlcblxuICBAVHlwZSgoKSA9PiBGaWx0ZXIpXG4gIGZpbHRlcnM/OiBGaWx0ZXJbXVxuXG4gIEBUeXBlKCgpID0+IFByb2R1Y3QpXG4gIGNoaWxkcmVuUHJvZHVjdHM/OiBQcm9kdWN0W11cblxuICBzdGF0aWMgZ2V0IGlkZW50aWZpZXJzRmllbGRzKCk6IEdlbmVyaWNJZGVudGlmaWVyW10ge1xuICAgIHJldHVybiBbJ2lkJ11cbiAgfVxufVxuIl19
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9kb21haW4vY2F0YWxvZy9tb2RlbHMvY2F0ZWdvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFM0QsTUFBTSxPQUFPLFFBQVMsU0FBUSxZQUF5QztJQUlyRSxNQUFNLEtBQWMsaUJBQWlCO1FBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNmLENBQUM7Q0FDRjtBQU5DO0lBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDOztrREFDUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcidcbmltcG9ydCB7IEdlbmVyaWNJZGVudGlmaWVyIH0gZnJvbSAnLi4vLi4vZ2VuZXJpYy9tb2RlbCdcbmltcG9ydCB7IENhdGVnb3J5QmFzZSB9IGZyb20gJy4vY2F0ZWdvcnktYmFzZSdcbmltcG9ydCB7IFByb2R1Y3RGb3JDYXRlZ29yeSB9IGZyb20gJy4vcHJvZHVjdC1mb3ItY2F0ZWdvcnknXG5cbmV4cG9ydCBjbGFzcyBDYXRlZ29yeSBleHRlbmRzIENhdGVnb3J5QmFzZTxDYXRlZ29yeSwgR2VuZXJpY0lkZW50aWZpZXI+IHtcbiAgQFR5cGUoKCkgPT4gUHJvZHVjdEZvckNhdGVnb3J5KVxuICBjaGlsZHJlblByb2R1Y3RzPzogUHJvZHVjdEZvckNhdGVnb3J5W11cblxuICBzdGF0aWMgb3ZlcnJpZGUgZ2V0IGlkZW50aWZpZXJzRmllbGRzKCk6IEdlbmVyaWNJZGVudGlmaWVyW10ge1xuICAgIHJldHVybiBbJ2lkJ11cbiAgfVxufVxuIl19
@@ -1,18 +1,18 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { Type } from 'class-transformer';
3
3
  import { BaseModel } from '../../generic/model';
4
- import { Product } from './product';
4
+ import { ProductForKit } from './product-for-kit';
5
5
  export class KitProduct extends BaseModel {
6
6
  static get identifiersFields() {
7
7
  return ['productId', 'kitProductId'];
8
8
  }
9
9
  }
10
10
  __decorate([
11
- Type(() => Product),
12
- __metadata("design:type", Product)
11
+ Type(() => ProductForKit),
12
+ __metadata("design:type", ProductForKit)
13
13
  ], KitProduct.prototype, "kit", void 0);
14
14
  __decorate([
15
- Type(() => Product),
16
- __metadata("design:type", Product)
15
+ Type(() => ProductForKit),
16
+ __metadata("design:type", ProductForKit)
17
17
  ], KitProduct.prototype, "product", void 0);
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2l0LXByb2R1Y3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9kb21haW4vY2F0YWxvZy9tb2RlbHMva2l0LXByb2R1Y3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUluQyxNQUFNLE9BQU8sVUFBVyxTQUFRLFNBQTRDO0lBVzFFLE1BQU0sS0FBSyxpQkFBaUI7UUFDMUIsT0FBTyxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0NBQ0Y7QUFUQztJQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUM7OEJBQ2YsT0FBTzt1Q0FBQTtBQUVaO0lBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQzs4QkFDWCxPQUFPOzJDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJ1xuaW1wb3J0IHsgQmFzZU1vZGVsIH0gZnJvbSAnLi4vLi4vZ2VuZXJpYy9tb2RlbCdcbmltcG9ydCB7IFByb2R1Y3QgfSBmcm9tICcuL3Byb2R1Y3QnXG5cbnR5cGUgS2l0UHJvZHVjdElkZW50aWZpZXJzID0gJ3Byb2R1Y3RJZCcgfCAna2l0UHJvZHVjdElkJ1xuXG5leHBvcnQgY2xhc3MgS2l0UHJvZHVjdCBleHRlbmRzIEJhc2VNb2RlbDxLaXRQcm9kdWN0LCBLaXRQcm9kdWN0SWRlbnRpZmllcnM+IHtcbiAgcHJvZHVjdElkOiBzdHJpbmdcbiAga2l0UHJvZHVjdElkOiBzdHJpbmdcbiAgcXVhbnRpdHk6IG51bWJlclxuXG4gIEBUeXBlKCgpID0+IFByb2R1Y3QpXG4gIGtpdDogUHJvZHVjdFxuXG4gIEBUeXBlKCgpID0+IFByb2R1Y3QpXG4gIHByb2R1Y3Q6IFByb2R1Y3RcblxuICBzdGF0aWMgZ2V0IGlkZW50aWZpZXJzRmllbGRzKCk6IEtpdFByb2R1Y3RJZGVudGlmaWVyc1tdIHtcbiAgICByZXR1cm4gWydwcm9kdWN0SWQnLCAna2l0UHJvZHVjdElkJ11cbiAgfVxufVxuIl19
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2l0LXByb2R1Y3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9kb21haW4vY2F0YWxvZy9tb2RlbHMva2l0LXByb2R1Y3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBSWpELE1BQU0sT0FBTyxVQUFXLFNBQVEsU0FBNEM7SUFXMUUsTUFBTSxLQUFLLGlCQUFpQjtRQUMxQixPQUFPLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFBO0lBQ3RDLENBQUM7Q0FDRjtBQVRDO0lBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQzs4QkFDckIsYUFBYTt1Q0FBQTtBQUVsQjtJQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUM7OEJBQ2pCLGFBQWE7MkNBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInXG5pbXBvcnQgeyBCYXNlTW9kZWwgfSBmcm9tICcuLi8uLi9nZW5lcmljL21vZGVsJ1xuaW1wb3J0IHsgUHJvZHVjdEZvcktpdCB9IGZyb20gJy4vcHJvZHVjdC1mb3Ita2l0J1xuXG50eXBlIEtpdFByb2R1Y3RJZGVudGlmaWVycyA9ICdwcm9kdWN0SWQnIHwgJ2tpdFByb2R1Y3RJZCdcblxuZXhwb3J0IGNsYXNzIEtpdFByb2R1Y3QgZXh0ZW5kcyBCYXNlTW9kZWw8S2l0UHJvZHVjdCwgS2l0UHJvZHVjdElkZW50aWZpZXJzPiB7XG4gIHByb2R1Y3RJZDogc3RyaW5nXG4gIGtpdFByb2R1Y3RJZDogc3RyaW5nXG4gIHF1YW50aXR5OiBudW1iZXJcblxuICBAVHlwZSgoKSA9PiBQcm9kdWN0Rm9yS2l0KVxuICBraXQ6IFByb2R1Y3RGb3JLaXRcblxuICBAVHlwZSgoKSA9PiBQcm9kdWN0Rm9yS2l0KVxuICBwcm9kdWN0OiBQcm9kdWN0Rm9yS2l0XG5cbiAgc3RhdGljIGdldCBpZGVudGlmaWVyc0ZpZWxkcygpOiBLaXRQcm9kdWN0SWRlbnRpZmllcnNbXSB7XG4gICAgcmV0dXJuIFsncHJvZHVjdElkJywgJ2tpdFByb2R1Y3RJZCddXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,25 @@
1
+ import { BaseModel } from '../../generic/model';
2
+ export class ProductBase extends BaseModel {
3
+ get evaluation() {
4
+ return {
5
+ reviews: this.reviews,
6
+ count: this.reviewsTotal,
7
+ rating: this.rate,
8
+ };
9
+ }
10
+ set evaluation(evaluation) {
11
+ if (!evaluation) {
12
+ this.reviews = null;
13
+ this.reviewsTotal = null;
14
+ this.rate = null;
15
+ return;
16
+ }
17
+ this.reviews = evaluation.reviews || this.reviews;
18
+ this.reviewsTotal = evaluation.count || this.reviewsTotal;
19
+ this.rate = evaluation.rating || this.rate;
20
+ }
21
+ static get identifiersFields() {
22
+ return ['id'];
23
+ }
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC9zcmMvZG9tYWluL2NhdGFsb2cvbW9kZWxzL3Byb2R1Y3QtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF5QyxNQUFNLHFCQUFxQixDQUFBO0FBWXRGLE1BQU0sT0FBTyxXQUdYLFNBQVEsU0FBb0M7SUFtQzVDLElBQUksVUFBVTtRQUNaLE9BQU87WUFDTCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQ3hCLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNsQixDQUFBO0lBQ0gsQ0FBQztJQUVELElBQUksVUFBVSxDQUFDLFVBQTZCO1FBQzFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQTtZQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtZQUN4QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtZQUVoQixPQUFNO1NBQ1A7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQTtRQUNqRCxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQTtRQUN6RCxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQTtJQUM1QyxDQUFDO0lBRUQsTUFBTSxLQUFLLGlCQUFpQjtRQUMxQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlTW9kZWwsIEdlbmVyaWNJZGVudGlmaWVyLCBNb2RlbEJhc2VTdHJ1Y3R1cmUgfSBmcm9tICcuLi8uLi9nZW5lcmljL21vZGVsJ1xuaW1wb3J0IHtcbiAgUHJvZHVjdEV2YWx1YXRpb24sXG4gIFByb2R1Y3RHZW5kZXIsXG4gIFByb2R1Y3RNZXRhZGF0YSxcbiAgUHJvZHVjdFJldmlldyxcbiAgU2hvcERlc2NyaXB0aW9uLFxuICBTaG9wUHJpY2UsXG4gIFN0b2NrLFxufSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHsgVmFyaWFudCB9IGZyb20gJy4vdmFyaWFudCdcblxuZXhwb3J0IGNsYXNzIFByb2R1Y3RCYXNlPFxuICBDaGlsZFByb2R1Y3QgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU8Q2hpbGRQcm9kdWN0LCBJZGVudGlmaWVycz4sXG4gIElkZW50aWZpZXJzID0gQ2hpbGRQcm9kdWN0WydpZGVudGlmaWVyc0ZpZWxkcyddLFxuPiBleHRlbmRzIEJhc2VNb2RlbDxDaGlsZFByb2R1Y3QsIElkZW50aWZpZXJzPiB7XG4gIGlkOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIHNsdWc6IHN0cmluZ1xuICBkZXNjcmlwdGlvbjogU2hvcERlc2NyaXB0aW9uXG4gIHNrdTogc3RyaW5nXG4gIHByaWNlOiBTaG9wUHJpY2VcbiAgaGFzVmFyaWFudHM6IGJvb2xlYW5cbiAgTkNNOiBzdHJpbmdcbiAgRUFOOiBzdHJpbmdcbiAgQ0VTVDogc3RyaW5nXG4gIHdlaWdodDogbnVtYmVyXG4gIHN0b2NrOiBTdG9ja1xuICBjb3N0UHJpY2U6IG51bWJlclxuICBpbWFnZXM/OiBzdHJpbmdbXVxuICBtaW5pYXR1cmVzPzogc3RyaW5nW11cbiAgcHVibGlzaGVkOiBib29sZWFuXG4gIGNyZWF0ZWRBdD86IERhdGVcbiAgdXBkYXRlZEF0PzogRGF0ZVxuICBicmFuZDogc3RyaW5nXG4gIHRhZ3M/OiBzdHJpbmdbXVxuICBmaWx0ZXJzPzogc3RyaW5nW11cbiAgdHlwZT86IHN0cmluZ1xuICBjYXRlZ29yaWVzPzogc3RyaW5nW11cbiAgcmV2aWV3cz86IFByb2R1Y3RSZXZpZXdbXVxuICB2YXJpYW50PzogVmFyaWFudFxuICB2aWRlbz86IHN0cmluZ1xuICBpc0tpdD86IGJvb2xlYW5cbiAgcmF0ZT86IG51bWJlclxuICBnZW5kZXI/OiBQcm9kdWN0R2VuZGVyXG4gIHNob3BwaW5nQ291bnQ/OiBudW1iZXJcbiAgbWV0YWRhdGE6IFByb2R1Y3RNZXRhZGF0YVxuXG4gIHByaXZhdGUgcmV2aWV3c1RvdGFsPzogbnVtYmVyXG5cbiAgZ2V0IGV2YWx1YXRpb24oKTogUHJvZHVjdEV2YWx1YXRpb24ge1xuICAgIHJldHVybiB7XG4gICAgICByZXZpZXdzOiB0aGlzLnJldmlld3MsXG4gICAgICBjb3VudDogdGhpcy5yZXZpZXdzVG90YWwsXG4gICAgICByYXRpbmc6IHRoaXMucmF0ZSxcbiAgICB9XG4gIH1cblxuICBzZXQgZXZhbHVhdGlvbihldmFsdWF0aW9uOiBQcm9kdWN0RXZhbHVhdGlvbikge1xuICAgIGlmICghZXZhbHVhdGlvbikge1xuICAgICAgdGhpcy5yZXZpZXdzID0gbnVsbFxuICAgICAgdGhpcy5yZXZpZXdzVG90YWwgPSBudWxsXG4gICAgICB0aGlzLnJhdGUgPSBudWxsXG5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMucmV2aWV3cyA9IGV2YWx1YXRpb24ucmV2aWV3cyB8fCB0aGlzLnJldmlld3NcbiAgICB0aGlzLnJldmlld3NUb3RhbCA9IGV2YWx1YXRpb24uY291bnQgfHwgdGhpcy5yZXZpZXdzVG90YWxcbiAgICB0aGlzLnJhdGUgPSBldmFsdWF0aW9uLnJhdGluZyB8fCB0aGlzLnJhdGVcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaWRlbnRpZmllcnNGaWVsZHMoKTogR2VuZXJpY0lkZW50aWZpZXJbXSB7XG4gICAgcmV0dXJuIFsnaWQnXVxuICB9XG59XG4iXX0=
@@ -0,0 +1,14 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { Type } from 'class-transformer';
3
+ import { KitProduct } from './kit-product';
4
+ import { ProductBase } from './product-base';
5
+ export class ProductForCategory extends ProductBase {
6
+ static get identifiersFields() {
7
+ return ['id'];
8
+ }
9
+ }
10
+ __decorate([
11
+ Type(() => KitProduct),
12
+ __metadata("design:type", Array)
13
+ ], ProductForCategory.prototype, "kitProducts", void 0);
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1mb3ItY2F0ZWdvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9kb21haW4vY2F0YWxvZy9tb2RlbHMvcHJvZHVjdC1mb3ItY2F0ZWdvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUU1QyxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsV0FBa0Q7SUFJeEYsTUFBTSxLQUFjLGlCQUFpQjtRQUNuQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDZixDQUFDO0NBQ0Y7QUFOQztJQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUM7O3VEQUNHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJ1xuaW1wb3J0IHsgR2VuZXJpY0lkZW50aWZpZXIgfSBmcm9tICcuLi8uLi9nZW5lcmljL21vZGVsJ1xuaW1wb3J0IHsgS2l0UHJvZHVjdCB9IGZyb20gJy4va2l0LXByb2R1Y3QnXG5pbXBvcnQgeyBQcm9kdWN0QmFzZSB9IGZyb20gJy4vcHJvZHVjdC1iYXNlJ1xuXG5leHBvcnQgY2xhc3MgUHJvZHVjdEZvckNhdGVnb3J5IGV4dGVuZHMgUHJvZHVjdEJhc2U8UHJvZHVjdEZvckNhdGVnb3J5LCBHZW5lcmljSWRlbnRpZmllcj4ge1xuICBAVHlwZSgoKSA9PiBLaXRQcm9kdWN0KVxuICBraXRQcm9kdWN0cz86IEtpdFByb2R1Y3RbXVxuXG4gIHN0YXRpYyBvdmVycmlkZSBnZXQgaWRlbnRpZmllcnNGaWVsZHMoKTogR2VuZXJpY0lkZW50aWZpZXJbXSB7XG4gICAgcmV0dXJuIFsnaWQnXVxuICB9XG59XG4iXX0=
@@ -0,0 +1,14 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { Type } from 'class-transformer';
3
+ import { CategoryForProduct } from './category-for-product';
4
+ import { ProductBase } from './product-base';
5
+ export class ProductForKit extends ProductBase {
6
+ static get identifiersFields() {
7
+ return ['id'];
8
+ }
9
+ }
10
+ __decorate([
11
+ Type(() => CategoryForProduct),
12
+ __metadata("design:type", CategoryForProduct)
13
+ ], ProductForKit.prototype, "category", void 0);
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1mb3Ita2l0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC9zcmMvZG9tYWluL2NhdGFsb2cvbW9kZWxzL3Byb2R1Y3QtZm9yLWtpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRXhDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUU1QyxNQUFNLE9BQU8sYUFBYyxTQUFRLFdBQTZDO0lBSTlFLE1BQU0sS0FBYyxpQkFBaUI7UUFDbkMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2YsQ0FBQztDQUNGO0FBTkM7SUFBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUM7OEJBQ3JCLGtCQUFrQjsrQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcidcbmltcG9ydCB7IEdlbmVyaWNJZGVudGlmaWVyIH0gZnJvbSAnLi4vLi4vZ2VuZXJpYy9tb2RlbCdcbmltcG9ydCB7IENhdGVnb3J5Rm9yUHJvZHVjdCB9IGZyb20gJy4vY2F0ZWdvcnktZm9yLXByb2R1Y3QnXG5pbXBvcnQgeyBQcm9kdWN0QmFzZSB9IGZyb20gJy4vcHJvZHVjdC1iYXNlJ1xuXG5leHBvcnQgY2xhc3MgUHJvZHVjdEZvcktpdCBleHRlbmRzIFByb2R1Y3RCYXNlPFByb2R1Y3RGb3JLaXQsIEdlbmVyaWNJZGVudGlmaWVyPiB7XG4gIEBUeXBlKCgpID0+IENhdGVnb3J5Rm9yUHJvZHVjdClcbiAgY2F0ZWdvcnk6IENhdGVnb3J5Rm9yUHJvZHVjdFxuXG4gIHN0YXRpYyBvdmVycmlkZSBnZXQgaWRlbnRpZmllcnNGaWVsZHMoKTogR2VuZXJpY0lkZW50aWZpZXJbXSB7XG4gICAgcmV0dXJuIFsnaWQnXVxuICB9XG59XG4iXX0=
@@ -1,37 +1,19 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { Type } from 'class-transformer';
3
- import { BaseModel } from '../../generic/model';
4
- import { Category } from './category';
3
+ import { CategoryForProduct } from './category-for-product';
5
4
  import { KitProduct } from './kit-product';
6
- export class Product extends BaseModel {
7
- get evaluation() {
8
- return {
9
- reviews: this.reviews,
10
- count: this.reviewsTotal,
11
- rating: this.rate,
12
- };
13
- }
14
- set evaluation(evaluation) {
15
- if (!evaluation) {
16
- this.reviews = null;
17
- this.reviewsTotal = null;
18
- this.rate = null;
19
- return;
20
- }
21
- this.reviews = evaluation.reviews || this.reviews;
22
- this.reviewsTotal = evaluation.count || this.reviewsTotal;
23
- this.rate = evaluation.rating || this.rate;
24
- }
5
+ import { ProductBase } from './product-base';
6
+ export class Product extends ProductBase {
25
7
  static get identifiersFields() {
26
8
  return ['id'];
27
9
  }
28
10
  }
29
11
  __decorate([
30
- Type(() => Category),
31
- __metadata("design:type", Category)
12
+ Type(() => CategoryForProduct),
13
+ __metadata("design:type", CategoryForProduct)
32
14
  ], Product.prototype, "category", void 0);
33
15
  __decorate([
34
16
  Type(() => KitProduct),
35
17
  __metadata("design:type", Array)
36
18
  ], Product.prototype, "kitProducts", void 0);
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3Qvc3JjL2RvbWFpbi9jYXRhbG9nL21vZGVscy9wcm9kdWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxxQkFBcUIsQ0FBQTtBQUVsRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFZMUMsTUFBTSxPQUFPLE9BQVEsU0FBUSxTQUFrQjtJQXlDN0MsSUFBSSxVQUFVO1FBQ1osT0FBTztZQUNMLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDeEIsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2xCLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUMsVUFBNkI7UUFDMUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO1lBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFBO1lBQ3hCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1lBRWhCLE9BQU07U0FDUDtRQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFBO1FBQ2pELElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFBO1FBQ3pELElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFBO0lBQzVDLENBQUM7SUFFRCxNQUFNLEtBQUssaUJBQWlCO1FBQzFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNmLENBQUM7Q0FDRjtBQWpDQztJQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUM7OEJBQ1gsUUFBUTt5Q0FBQTtBQUVsQjtJQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUM7OzRDQUNHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJ1xuaW1wb3J0IHsgQmFzZU1vZGVsLCBHZW5lcmljSWRlbnRpZmllciB9IGZyb20gJy4uLy4uL2dlbmVyaWMvbW9kZWwnXG5cbmltcG9ydCB7IENhdGVnb3J5IH0gZnJvbSAnLi9jYXRlZ29yeSdcbmltcG9ydCB7IEtpdFByb2R1Y3QgfSBmcm9tICcuL2tpdC1wcm9kdWN0J1xuaW1wb3J0IHtcbiAgUHJvZHVjdEV2YWx1YXRpb24sXG4gIFByb2R1Y3RHZW5kZXIsXG4gIFByb2R1Y3RNZXRhZGF0YSxcbiAgUHJvZHVjdFJldmlldyxcbiAgU2hvcERlc2NyaXB0aW9uLFxuICBTaG9wUHJpY2UsXG4gIFN0b2NrLFxufSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHsgVmFyaWFudCB9IGZyb20gJy4vdmFyaWFudCdcblxuZXhwb3J0IGNsYXNzIFByb2R1Y3QgZXh0ZW5kcyBCYXNlTW9kZWw8UHJvZHVjdD4ge1xuICBpZDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBzbHVnOiBzdHJpbmdcbiAgZGVzY3JpcHRpb246IFNob3BEZXNjcmlwdGlvblxuICBza3U6IHN0cmluZ1xuICBwcmljZTogU2hvcFByaWNlXG4gIGhhc1ZhcmlhbnRzOiBib29sZWFuXG4gIE5DTTogc3RyaW5nXG4gIEVBTjogc3RyaW5nXG4gIENFU1Q6IHN0cmluZ1xuICB3ZWlnaHQ6IG51bWJlclxuICBzdG9jazogU3RvY2tcbiAgY29zdFByaWNlOiBudW1iZXJcbiAgaW1hZ2VzPzogc3RyaW5nW11cbiAgbWluaWF0dXJlcz86IHN0cmluZ1tdXG4gIHB1Ymxpc2hlZDogYm9vbGVhblxuICBjcmVhdGVkQXQ/OiBEYXRlXG4gIHVwZGF0ZWRBdD86IERhdGVcbiAgYnJhbmQ6IHN0cmluZ1xuICB0YWdzPzogc3RyaW5nW11cbiAgZmlsdGVycz86IHN0cmluZ1tdXG4gIHR5cGU/OiBzdHJpbmdcbiAgY2F0ZWdvcmllcz86IHN0cmluZ1tdXG4gIHJldmlld3M/OiBQcm9kdWN0UmV2aWV3W11cbiAgdmFyaWFudD86IFZhcmlhbnRcbiAgdmlkZW8/OiBzdHJpbmdcbiAgaXNLaXQ/OiBib29sZWFuXG4gIHJhdGU/OiBudW1iZXJcbiAgZ2VuZGVyPzogUHJvZHVjdEdlbmRlclxuICBzaG9wcGluZ0NvdW50PzogbnVtYmVyXG4gIG1ldGFkYXRhOiBQcm9kdWN0TWV0YWRhdGFcblxuICBAVHlwZSgoKSA9PiBDYXRlZ29yeSlcbiAgY2F0ZWdvcnk6IENhdGVnb3J5XG5cbiAgQFR5cGUoKCkgPT4gS2l0UHJvZHVjdClcbiAga2l0UHJvZHVjdHM/OiBLaXRQcm9kdWN0W11cblxuICBwcml2YXRlIHJldmlld3NUb3RhbD86IG51bWJlclxuXG4gIGdldCBldmFsdWF0aW9uKCk6IFByb2R1Y3RFdmFsdWF0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmV2aWV3czogdGhpcy5yZXZpZXdzLFxuICAgICAgY291bnQ6IHRoaXMucmV2aWV3c1RvdGFsLFxuICAgICAgcmF0aW5nOiB0aGlzLnJhdGUsXG4gICAgfVxuICB9XG5cbiAgc2V0IGV2YWx1YXRpb24oZXZhbHVhdGlvbjogUHJvZHVjdEV2YWx1YXRpb24pIHtcbiAgICBpZiAoIWV2YWx1YXRpb24pIHtcbiAgICAgIHRoaXMucmV2aWV3cyA9IG51bGxcbiAgICAgIHRoaXMucmV2aWV3c1RvdGFsID0gbnVsbFxuICAgICAgdGhpcy5yYXRlID0gbnVsbFxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLnJldmlld3MgPSBldmFsdWF0aW9uLnJldmlld3MgfHwgdGhpcy5yZXZpZXdzXG4gICAgdGhpcy5yZXZpZXdzVG90YWwgPSBldmFsdWF0aW9uLmNvdW50IHx8IHRoaXMucmV2aWV3c1RvdGFsXG4gICAgdGhpcy5yYXRlID0gZXZhbHVhdGlvbi5yYXRpbmcgfHwgdGhpcy5yYXRlXG4gIH1cblxuICBzdGF0aWMgZ2V0IGlkZW50aWZpZXJzRmllbGRzKCk6IEdlbmVyaWNJZGVudGlmaWVyW10ge1xuICAgIHJldHVybiBbJ2lkJ11cbiAgfVxufVxuIl19
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3Qvc3JjL2RvbWFpbi9jYXRhbG9nL21vZGVscy9wcm9kdWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFeEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFNUMsTUFBTSxPQUFPLE9BQVEsU0FBUSxXQUF1QztJQU9sRSxNQUFNLEtBQWMsaUJBQWlCO1FBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNmLENBQUM7Q0FDRjtBQVRDO0lBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDOzhCQUNyQixrQkFBa0I7eUNBQUE7QUFFNUI7SUFBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDOzs0Q0FDRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcidcbmltcG9ydCB7IEdlbmVyaWNJZGVudGlmaWVyIH0gZnJvbSAnLi4vLi4vZ2VuZXJpYy9tb2RlbCdcbmltcG9ydCB7IENhdGVnb3J5Rm9yUHJvZHVjdCB9IGZyb20gJy4vY2F0ZWdvcnktZm9yLXByb2R1Y3QnXG5pbXBvcnQgeyBLaXRQcm9kdWN0IH0gZnJvbSAnLi9raXQtcHJvZHVjdCdcbmltcG9ydCB7IFByb2R1Y3RCYXNlIH0gZnJvbSAnLi9wcm9kdWN0LWJhc2UnXG5cbmV4cG9ydCBjbGFzcyBQcm9kdWN0IGV4dGVuZHMgUHJvZHVjdEJhc2U8UHJvZHVjdCwgR2VuZXJpY0lkZW50aWZpZXI+IHtcbiAgQFR5cGUoKCkgPT4gQ2F0ZWdvcnlGb3JQcm9kdWN0KVxuICBjYXRlZ29yeTogQ2F0ZWdvcnlGb3JQcm9kdWN0XG5cbiAgQFR5cGUoKCkgPT4gS2l0UHJvZHVjdClcbiAga2l0UHJvZHVjdHM/OiBLaXRQcm9kdWN0W11cblxuICBzdGF0aWMgb3ZlcnJpZGUgZ2V0IGlkZW50aWZpZXJzRmllbGRzKCk6IEdlbmVyaWNJZGVudGlmaWVyW10ge1xuICAgIHJldHVybiBbJ2lkJ11cbiAgfVxufVxuIl19
@@ -19,7 +19,7 @@ export const withFindFirestore = (MixinBase) => {
19
19
  ], []);
20
20
  this.buildWhereSentence = (fieldName, options) => {
21
21
  if (this.isSubCollection(this) && fieldName === this.parentIdField)
22
- [];
22
+ return [];
23
23
  const value = options?.value || options;
24
24
  const object = {};
25
25
  set(object, fieldName, value);
@@ -107,4 +107,4 @@ export const withFindFirestore = (MixinBase) => {
107
107
  }
108
108
  };
109
109
  };
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1maW5kLWZpcmVzdG9yZS5taXhpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3Qvc3JjL2luZnJhL2ZpcmViYXNlL2ZpcmVzdG9yZS9taXhpbnMvd2l0aC1maW5kLWZpcmVzdG9yZS5taXhpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsR0FBRyxFQUNILE1BQU0sRUFDTixPQUFPLEVBQ1AsS0FBSyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBRUwsVUFBVSxFQUNWLE9BQU8sRUFDUCxLQUFLLEdBRU4sTUFBTSxvQkFBb0IsQ0FBQTtBQUUzQixPQUFPLEVBV0wsS0FBSyxHQUNOLE1BQU0sb0JBQW9CLENBQUE7QUFDM0IsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFhLEdBQUcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ25HLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUc3QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUkvQixTQUFnRixFQUNpQyxFQUFFO0lBQ25ILE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxNQUFXLEVBQXVELEVBQUUsQ0FDakcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBQzFCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxNQUF1QyxFQUFPLEVBQUU7UUFDMUUsT0FBTyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFBO0lBQzlELENBQUMsQ0FBQTtJQUNELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUN2QyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUN6RSxDQUFDLENBQUMsS0FBSztRQUNQLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7SUFFdEMsT0FBTyxNQUFNLGFBQWMsU0FBUSxTQUFTO1FBQXJDOztZQW1DTCx1QkFBa0IsR0FBRyxDQUFDLE1BQXFDLEVBQXFCLEVBQUUsQ0FDaEYsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQ3hCLENBQUMsT0FBMEIsRUFBRSxTQUFpQixFQUFFLEVBQUUsQ0FBQztnQkFDakQsR0FBRyxPQUFPO2dCQUNWLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQTRDLENBQUMsQ0FBQyxDQUFDO2FBQ2hHLEVBQ0QsRUFBRSxDQUNILENBQUE7WUFFSCx1QkFBa0IsR0FBRyxDQUNuQixTQUFtRCxFQUNuRCxPQUE4RSxFQUMzRCxFQUFFO2dCQUNyQixJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxhQUFhO29CQUFFLEVBQUUsQ0FBQTtnQkFFdEUsTUFBTSxLQUFLLEdBQUcsT0FBTyxFQUFFLEtBQUssSUFBSSxPQUFPLENBQUE7Z0JBQ3ZDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQTtnQkFFakIsR0FBRyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUE7Z0JBRTdCLE1BQU0sYUFBYSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtnQkFDdEQsTUFBTSxrQkFBa0IsR0FDdEIsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3BDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFO29CQUN0QixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO2dCQUVsRSxJQUFJLE9BQU8sRUFBRSxRQUFRLEtBQUssS0FBSyxDQUFDLElBQUksRUFBRTtvQkFDcEMsSUFDRSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUM7d0JBQzdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0UsQ0FBQzs0QkFDOUUsa0JBQWtCLENBQUMsS0FBSzs0QkFDeEIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrRSxDQUFDLENBQUM7d0JBRW5GLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7b0JBRXpFLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQTtpQkFDOUc7Z0JBQ0QsSUFDRSxPQUFPLEVBQUUsUUFBUSxLQUFLLEtBQUssQ0FBQyxFQUFFO29CQUM5QixLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUM7b0JBQzdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0UsQ0FBQyxLQUFLLGtCQUFrQixDQUFDLEtBQUs7d0JBQzNHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0UsQ0FBQyxDQUFDO29CQUVuRixPQUFPLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO2dCQUNyRSxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUU7b0JBQzFFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQ2hDLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7d0JBQ2hCLEdBQUcsT0FBTzt3QkFDVixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQXNCLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUNwRyxFQUNELEVBQUUsQ0FDSCxDQUFBO2lCQUNGO2dCQUVELE9BQU8sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUcsT0FBTyxFQUFFLFFBQTBCLElBQUksSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQTtZQUM3RyxDQUFDLENBQUE7WUFFRCx5QkFBb0IsR0FBRyxDQUNyQixPQUFzQyxFQUN0QyxlQUEwQyxFQUN2QixFQUFFO2dCQUNyQixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQTtnQkFFdEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNO29CQUFFLE9BQU8sRUFBRSxDQUFBO2dCQUVsQyxNQUFNLHdCQUF3QixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FDaEUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FDaEQsQ0FBQTtnQkFFRCxJQUFJLHdCQUF3QixDQUFDLE1BQU07b0JBQ2pDLHdCQUF3QixDQUFDLE9BQU8sQ0FDOUIsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUNaLENBQUMsZUFBZSxHQUFHO3dCQUNqQixHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQzFCLEVBQUUsQ0FDQSxPQUFPLENBQUMsU0FBNEMsQ0FBQyxDQUN0RCxDQUFDLFFBQVEsQ0FDWDs0QkFDQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRTs0QkFDeEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDUCxHQUFHLGVBQWU7cUJBQ25CLENBQUMsQ0FDTCxDQUFBO2dCQUVILE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUNwRCxPQUFPLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxTQUE0QyxDQUFDLENBQUMsQ0FDbEYsQ0FBQTtZQUNILENBQUMsQ0FBQTtRQWlDSCxDQUFDO1FBMUpDLEtBQUssQ0FBQyxJQUFJLENBQ1IsT0FLSSxFQUFFO1lBRU4sTUFBTSxVQUFVLEdBQStCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1lBQzdHLE1BQU0sV0FBVyxHQUFHLElBQUksRUFBRSxPQUFPLEVBQUUsV0FBVyxJQUFJLElBQUksQ0FBQTtZQUN0RCxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1lBQ2hFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLFdBQVcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFBO1lBQzdELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUE7WUFDdEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUM5RCxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQ3hELE1BQU0sZUFBZSxHQUFzQixDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUE7WUFDbEYsTUFBTSxJQUFJLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUE7WUFDakUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1lBRS9DLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLElBQUk7Z0JBQ3RFLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRO2FBQ2xFLENBQUE7UUFDSCxDQUFDO1FBRUQsMEJBQTBCLENBQUMsT0FBc0M7WUFDL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO2dCQUFFLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQTtZQUUzRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBNkQsQ0FBQTtZQUN4RixNQUFNLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFBO1lBRTdELE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUE7UUFDckYsQ0FBQztRQTJGRCxLQUFLLENBQUMsWUFBWSxDQUNoQixPQUFzQyxFQUN0QyxNQUFxQztZQUVyQyxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUE7WUFFbEIsSUFBSSxNQUFNLEVBQUUsTUFBTSxFQUFFO2dCQUNsQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7b0JBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQ1YsVUFBVSxDQUNSLE1BQU0sTUFBTSxDQUNWLEdBQUcsQ0FDRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUN6RCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQzVELENBQ0YsQ0FDRixDQUNGLENBQUE7cUJBQ0UsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO29CQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO2FBQ2xHO1lBQ0QsSUFBSSxNQUFNLEVBQUUsS0FBSztnQkFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtZQUVwRCxPQUFPLE9BQU8sQ0FBQTtRQUNoQixDQUFDO1FBRUQsY0FBYyxDQUFDLElBQWEsRUFBRSxNQUFxQztZQUNqRSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQztnQkFBRSxPQUFPLENBQUMsQ0FBQTtZQUM5QixJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLEtBQUs7Z0JBQUUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFBO1lBRW5ELE9BQU8sUUFBUSxDQUFBO1FBQ2pCLENBQUM7S0FDSyxDQUFBO0FBQ1YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29sbGVjdGlvblJlZmVyZW5jZSxcbiAgZG9jLFxuICBnZXREb2MsXG4gIGdldERvY3MsXG4gIGxpbWl0LFxuICBvcmRlckJ5LFxuICBxdWVyeSxcbiAgUXVlcnlDb25zdHJhaW50LFxuICBzdGFydEFmdGVyLFxuICBzdGFydEF0LFxuICB3aGVyZSxcbiAgV2hlcmVGaWx0ZXJPcCxcbn0gZnJvbSAnZmlyZWJhc2UvZmlyZXN0b3JlJ1xuXG5pbXBvcnQge1xuICBGaW5kUmVwb3NpdG9yeSxcbiAgTW9kZWxCYXNlU3RydWN0dXJlLFxuICBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzLFxuICBOb25GdW5jdGlvblByb3BlcnR5TmFtZXMsXG4gIFJlcG9zaXRvcnlGaW5kRmllbGQsXG4gIFJlcG9zaXRvcnlGaW5kRmllbHRlcnMsXG4gIFJlcG9zaXRvcnlGaW5kRmllbHRlcnNPcHRpb25zLFxuICBSZXBvc2l0b3J5RmluZFJlc3VsdCxcbiAgUmVwb3NpdG9yeUxpbWl0T3B0aW9ucyxcbiAgUmVwb3NpdG9yeU9yZGVyQnksXG4gIFdoZXJlLFxufSBmcm9tICcuLi8uLi8uLi8uLi9kb21haW4nXG5pbXBvcnQgeyBpcywgaXNEYXRlLCBpc05pbCwgaXNOdW1iZXIsIGlzT2JqZWN0LCBpc1N0cmluZywgTWl4aW5DdG9yLCBzZXQgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscydcbmltcG9ydCB7IEZpcmVzdG9yZUZpZWxkVHlwZSB9IGZyb20gJy4uL2VudW1zJ1xuaW1wb3J0IHsgRmlyZXN0b3JlSGVscGVycywgRmlyZXN0b3JlUmVwb3NpdG9yeSB9IGZyb20gJy4uL3R5cGVzJ1xuXG5leHBvcnQgY29uc3Qgd2l0aEZpbmRGaXJlc3RvcmUgPSA8XG4gIFRCYXNlIGV4dGVuZHMgTW9kZWxCYXNlU3RydWN0dXJlPFRCYXNlPixcbiAgVE1peGluQmFzZSBleHRlbmRzIE1peGluQ3RvcjxGaXJlc3RvcmVSZXBvc2l0b3J5PFRCYXNlPj4sXG4+KFxuICBNaXhpbkJhc2U6IE1peGluQ3RvcjxGaXJlc3RvcmVSZXBvc2l0b3J5PFRCYXNlPiAmIEZpcmVzdG9yZUhlbHBlcnM+ICYgVE1peGluQmFzZSxcbik6IE1peGluQ3RvcjxGaXJlc3RvcmVSZXBvc2l0b3J5PFRCYXNlPiAmIEluc3RhbmNlVHlwZTxUTWl4aW5CYXNlPiAmIEZpbmRSZXBvc2l0b3J5PFRCYXNlPiAmIEZpcmVzdG9yZUhlbHBlcnMsIFtdPiA9PiB7XG4gIGNvbnN0IGNoZWNrSWZJc0ZpbHRlck9wdGlvbiA9IChmaWx0ZXI6IGFueSk6IGZpbHRlciBpcyBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzT3B0aW9uczxUQmFzZSwgYW55PiA9PlxuICAgICFpc05pbChmaWx0ZXI/Lm9wZXJhdG9yKVxuICBjb25zdCBnZXRWYWx1ZUZyb21GaWx0ZXIgPSAoZmlsdGVyOiBSZXBvc2l0b3J5RmluZEZpZWxkPFRCYXNlLCBhbnk+KTogYW55ID0+IHtcbiAgICByZXR1cm4gY2hlY2tJZklzRmlsdGVyT3B0aW9uKGZpbHRlcikgPyBmaWx0ZXIudmFsdWUgOiBmaWx0ZXJcbiAgfVxuICBjb25zdCBnZXRGaW5hbFZhbHVlRnJvbSA9ICh2YWx1ZTogYW55KSA9PlxuICAgIGlzTnVtYmVyKHZhbHVlKSB8fCBpc1N0cmluZyh2YWx1ZSkgfHwgaXNEYXRlKHZhbHVlKSB8fCBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgPyB2YWx1ZVxuICAgICAgOiBPYmplY3QudmFsdWVzKGdldEZpbmFsVmFsdWVGcm9tKVxuXG4gIHJldHVybiBjbGFzcyBGaW5kRmlyZXN0b3JlIGV4dGVuZHMgTWl4aW5CYXNlIGltcGxlbWVudHMgRmluZFJlcG9zaXRvcnk8VEJhc2U+IHtcbiAgICBhc3luYyBmaW5kKFxuICAgICAgZmluZDoge1xuICAgICAgICBmaWx0ZXJzPzogUmVwb3NpdG9yeUZpbmRGaWVsdGVyczxUQmFzZT5cbiAgICAgICAgbGltaXRzPzogUmVwb3NpdG9yeUxpbWl0T3B0aW9uczxUQmFzZT5cbiAgICAgICAgb3JkZXJCeT86IFJlcG9zaXRvcnlPcmRlckJ5PFRCYXNlPlxuICAgICAgICBvcHRpb25zPzogeyBlbmFibGVDb3VudD86IGJvb2xlYW4gfVxuICAgICAgfSA9IHt9LFxuICAgICk6IFByb21pc2U8UmVwb3NpdG9yeUZpbmRSZXN1bHQ8VEJhc2U+PiB7XG4gICAgICBjb25zdCBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uUmVmZXJlbmNlPFRCYXNlPiA9IHRoaXMuY29sbGVjdGlvbih0aGlzLmJ1aWxkQ29sbGVjdGlvblBhdGhGb3JGaW5kKGZpbmQuZmlsdGVycykpXG4gICAgICBjb25zdCBlbmFibGVDb3VudCA9IGZpbmQ/Lm9wdGlvbnM/LmVuYWJsZUNvdW50ID8/IHRydWVcbiAgICAgIGNvbnN0IGludGVyY2VwdGVkID0gYXdhaXQgdGhpcy5pbnRlcmNlcHRvcnM/LnJlcXVlc3Q/Lih7IGZpbmQgfSlcbiAgICAgIGNvbnN0IHsgZmlsdGVycywgbGltaXRzLCBvcmRlckJ5IH0gPSBpbnRlcmNlcHRlZC5maW5kIHx8IGZpbmRcbiAgICAgIGNvbnN0IHF1ZXJpZXMgPSB0aGlzLm1ha2VGaXJlc3RvcmVXaGVyZShmaWx0ZXJzIHx8IHt9KVxuICAgICAgY29uc3Qgb3JkaW5hdGlvbiA9IHRoaXMubWFrZUZpcmVzdG9yZU9yZGVyQnkoZmlsdGVycywgb3JkZXJCeSlcbiAgICAgIGNvbnN0IG9mZnNldHMgPSBhd2FpdCB0aGlzLmRlZmluZUxpbWl0cyhmaWx0ZXJzLCBsaW1pdHMpXG4gICAgICBjb25zdCBxdWVyeUFyZ3VtbWVudHM6IFF1ZXJ5Q29uc3RyYWludFtdID0gWy4uLnF1ZXJpZXMsIC4uLm9yZGluYXRpb24sIC4uLm9mZnNldHNdXG4gICAgICBjb25zdCBkb2NzID0gYXdhaXQgZ2V0RG9jcyhxdWVyeShjb2xsZWN0aW9uLCAuLi5xdWVyeUFyZ3VtbWVudHMpKVxuICAgICAgY29uc3QgZGF0YSA9IGRvY3MuZG9jcy5tYXAoKGRvYykgPT4gZG9jLmRhdGEoKSlcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YTogKGF3YWl0IHRoaXMuaW50ZXJjZXB0b3JzPy5yZXNwb25zZT8uKGRhdGEsIGludGVyY2VwdGVkKSkgfHwgZGF0YSxcbiAgICAgICAgY291bnQ6IGVuYWJsZUNvdW50ID8gdGhpcy5jYWxjdWxhdGVDb3VudChkYXRhLCBsaW1pdHMpIDogSW5maW5pdHksXG4gICAgICB9XG4gICAgfVxuXG4gICAgYnVpbGRDb2xsZWN0aW9uUGF0aEZvckZpbmQoZmlsdGVyczogUmVwb3NpdG9yeUZpbmRGaWVsdGVyczxUQmFzZT4pOiBzdHJpbmcge1xuICAgICAgaWYgKCF0aGlzLmlzU3ViQ29sbGVjdGlvbih0aGlzKSkgcmV0dXJuIHRoaXMuY29sbGVjdGlvbk5hbWVcblxuICAgICAgY29uc3QgcGFyZW50SWRGaWVsZCA9IHRoaXMucGFyZW50SWRGaWVsZCBhcyBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPFRCYXNlPlxuICAgICAgY29uc3QgcGFyZW50SWQgPSBnZXRWYWx1ZUZyb21GaWx0ZXIoZmlsdGVycz8uW3BhcmVudElkRmllbGRdKVxuXG4gICAgICByZXR1cm4gYCR7dGhpcy5wYXJlbnRSZXBvc2l0b3J5LmNvbGxlY3Rpb25OYW1lfS8ke3BhcmVudElkfS8ke3RoaXMuY29sbGVjdGlvbk5hbWV9YFxuICAgIH1cblxuICAgIG1ha2VGaXJlc3RvcmVXaGVyZSA9IChmaWx0ZXI6IFJlcG9zaXRvcnlGaW5kRmllbHRlcnM8VEJhc2U+KTogUXVlcnlDb25zdHJhaW50W10gPT5cbiAgICAgIE9iamVjdC5rZXlzKGZpbHRlcikucmVkdWNlKFxuICAgICAgICAocXVlcmllczogUXVlcnlDb25zdHJhaW50W10sIGZpZWxkTmFtZTogc3RyaW5nKSA9PiBbXG4gICAgICAgICAgLi4ucXVlcmllcyxcbiAgICAgICAgICAuLi50aGlzLmJ1aWxkV2hlcmVTZW50ZW5jZShmaWVsZE5hbWUsIGlzKGZpbHRlcltmaWVsZE5hbWUgYXMgTm9uRnVuY3Rpb25Qcm9wZXJ0eU5hbWVzPFRCYXNlPl0pKSxcbiAgICAgICAgXSxcbiAgICAgICAgW10sXG4gICAgICApXG5cbiAgICBidWlsZFdoZXJlU2VudGVuY2UgPSAoXG4gICAgICBmaWVsZE5hbWU6IE5vbkZ1bmN0aW9uUHJvcGVydHlOYW1lczxUQmFzZT4gfCBzdHJpbmcsXG4gICAgICBvcHRpb25zOiBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzT3B0aW9uczxUQmFzZSwgTm9uRnVuY3Rpb25Qcm9wZXJ0eU5hbWVzPFRCYXNlPj4sXG4gICAgKTogUXVlcnlDb25zdHJhaW50W10gPT4ge1xuICAgICAgaWYgKHRoaXMuaXNTdWJDb2xsZWN0aW9uKHRoaXMpICYmIGZpZWxkTmFtZSA9PT0gdGhpcy5wYXJlbnRJZEZpZWxkKSBbXVxuXG4gICAgICBjb25zdCB2YWx1ZSA9IG9wdGlvbnM/LnZhbHVlIHx8IG9wdGlvbnNcbiAgICAgIGNvbnN0IG9iamVjdCA9IHt9XG5cbiAgICAgIHNldChvYmplY3QsIGZpZWxkTmFtZSwgdmFsdWUpXG5cbiAgICAgIGNvbnN0IHBsYWluSW5zdGFuY2UgPSBuZXcgdGhpcy5tb2RlbChvYmplY3QpLnRvUGxhaW4oKVxuICAgICAgY29uc3QgZmlyZXN0b3JlRmllbGROYW1lID1cbiAgICAgICAgZmllbGROYW1lLnRvU3RyaW5nKCkuaW5kZXhPZignLicpID4gLTFcbiAgICAgICAgICA/IGZpZWxkTmFtZS50b1N0cmluZygpXG4gICAgICAgICAgOiBPYmplY3Qua2V5cyhwbGFpbkluc3RhbmNlKS5maW5kKChrZXkpID0+IHBsYWluSW5zdGFuY2Vba2V5XSlcblxuICAgICAgaWYgKG9wdGlvbnM/Lm9wZXJhdG9yID09PSBXaGVyZS5MSUtFKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBBcnJheS5pc0FycmF5KG9wdGlvbnM/LnZhbHVlKSAmJlxuICAgICAgICAgICh0aGlzLmZpZWxkc1tmaXJlc3RvcmVGaWVsZE5hbWUgYXMgTm9uRnVuY3Rpb25BbmRJZGVudGlmaWVyUHJvcGVydHlOYW1lczxUQmFzZT5dID09PVxuICAgICAgICAgICAgRmlyZXN0b3JlRmllbGRUeXBlLkFycmF5IHx8XG4gICAgICAgICAgICAhdGhpcy5maWVsZHNbZmlyZXN0b3JlRmllbGROYW1lIGFzIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8VEJhc2U+XSlcbiAgICAgICAgKVxuICAgICAgICAgIHJldHVybiBbd2hlcmUoZmlyZXN0b3JlRmllbGROYW1lLCAnYXJyYXktY29udGFpbnMtYW55Jywgb3B0aW9ucy52YWx1ZSldXG5cbiAgICAgICAgcmV0dXJuIFt3aGVyZShmaXJlc3RvcmVGaWVsZE5hbWUsICc+PScsIG9wdGlvbnMudmFsdWUpLCB3aGVyZShmaXJlc3RvcmVGaWVsZE5hbWUsICc8PScsIGAke29wdGlvbnMudmFsdWV9fmApXVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBvcHRpb25zPy5vcGVyYXRvciA9PT0gV2hlcmUuSU4gJiZcbiAgICAgICAgQXJyYXkuaXNBcnJheShvcHRpb25zPy52YWx1ZSkgJiZcbiAgICAgICAgKHRoaXMuZmllbGRzW2ZpcmVzdG9yZUZpZWxkTmFtZSBhcyBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPFRCYXNlPl0gPT09IEZpcmVzdG9yZUZpZWxkVHlwZS5BcnJheSB8fFxuICAgICAgICAgICF0aGlzLmZpZWxkc1tmaXJlc3RvcmVGaWVsZE5hbWUgYXMgTm9uRnVuY3Rpb25BbmRJZGVudGlmaWVyUHJvcGVydHlOYW1lczxUQmFzZT5dKVxuICAgICAgKVxuICAgICAgICByZXR1cm4gW3doZXJlKGZpcmVzdG9yZUZpZWxkTmFtZSwgJ2FycmF5LWNvbnRhaW5zJywgb3B0aW9ucy52YWx1ZSldXG4gICAgICBpZiAoaXNPYmplY3Qob3B0aW9ucykgJiYgaXNOaWwob3B0aW9ucz8ub3BlcmF0b3IpICYmIGlzTmlsKG9wdGlvbnM/LnZhbHVlKSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMob3B0aW9ucykucmVkdWNlKFxuICAgICAgICAgIChxdWVyaWVzLCBrZXkpID0+IFtcbiAgICAgICAgICAgIC4uLnF1ZXJpZXMsXG4gICAgICAgICAgICAuLi50aGlzLmJ1aWxkV2hlcmVTZW50ZW5jZShgJHtmaWVsZE5hbWUudG9TdHJpbmcoKX0uJHtrZXl9YCwgaXM8UmVjb3JkPHN0cmluZywgYW55Pj4ob3B0aW9ucylba2V5XSksXG4gICAgICAgICAgXSxcbiAgICAgICAgICBbXSxcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gW3doZXJlKGZpcmVzdG9yZUZpZWxkTmFtZSwgKG9wdGlvbnM/Lm9wZXJhdG9yIGFzIFdoZXJlRmlsdGVyT3ApIHx8ICc9PScsIG9wdGlvbnM/LnZhbHVlIHx8IG9wdGlvbnMpXVxuICAgIH1cblxuICAgIG1ha2VGaXJlc3RvcmVPcmRlckJ5ID0gKFxuICAgICAgZmlsdGVyczogUmVwb3NpdG9yeUZpbmRGaWVsdGVyczxUQmFzZT4sXG4gICAgICBmaWVsZHNUb09yZGVyQnk/OiBSZXBvc2l0b3J5T3JkZXJCeTxUQmFzZT4sXG4gICAgKTogUXVlcnlDb25zdHJhaW50W10gPT4ge1xuICAgICAgY29uc3Qgb3JkZXJCeUtleXMgPSBPYmplY3Qua2V5cyhmaWVsZHNUb09yZGVyQnkgfHwge30pXG5cbiAgICAgIGlmICghb3JkZXJCeUtleXMubGVuZ3RoKSByZXR1cm4gW11cblxuICAgICAgY29uc3QgZmlsdGVyc0tleXNXaXRoVW5vcmRlcmVkID0gT2JqZWN0LmtleXMoZmlsdGVycyB8fCB7fSkuZmlsdGVyKFxuICAgICAgICAoZmlsdGVyS2V5KSA9PiAhb3JkZXJCeUtleXMuaW5jbHVkZXMoZmlsdGVyS2V5KSxcbiAgICAgIClcblxuICAgICAgaWYgKGZpbHRlcnNLZXlzV2l0aFVub3JkZXJlZC5sZW5ndGgpXG4gICAgICAgIGZpbHRlcnNLZXlzV2l0aFVub3JkZXJlZC5mb3JFYWNoKFxuICAgICAgICAgIChmaWx0ZXJLZXkpID0+XG4gICAgICAgICAgICAoZmllbGRzVG9PcmRlckJ5ID0ge1xuICAgICAgICAgICAgICAuLi4oIVtXaGVyZS5FUVVBTFNdLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgIGlzPFJlcG9zaXRvcnlGaW5kRmllbHRlcnNPcHRpb25zPFRCYXNlLCBOb25GdW5jdGlvblByb3BlcnR5TmFtZXM8VEJhc2U+Pj4oXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJzW2ZpbHRlcktleSBhcyBOb25GdW5jdGlvblByb3BlcnR5TmFtZXM8VEJhc2U+XSxcbiAgICAgICAgICAgICAgICApLm9wZXJhdG9yLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgPyB7IFtmaWx0ZXJLZXldOiAnYXNjJyB9XG4gICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgIC4uLmZpZWxkc1RvT3JkZXJCeSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApXG5cbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhmaWVsZHNUb09yZGVyQnkpLm1hcCgoZmllbGROYW1lKSA9PlxuICAgICAgICBvcmRlckJ5KGZpZWxkTmFtZSwgZmllbGRzVG9PcmRlckJ5W2ZpZWxkTmFtZSBhcyBOb25GdW5jdGlvblByb3BlcnR5TmFtZXM8VEJhc2U+XSksXG4gICAgICApXG4gICAgfVxuXG4gICAgYXN5bmMgZGVmaW5lTGltaXRzKFxuICAgICAgZmlsdGVyczogUmVwb3NpdG9yeUZpbmRGaWVsdGVyczxUQmFzZT4sXG4gICAgICBsaW1pdHM6IFJlcG9zaXRvcnlMaW1pdE9wdGlvbnM8VEJhc2U+LFxuICAgICk6IFByb21pc2U8UXVlcnlDb25zdHJhaW50W10+IHtcbiAgICAgIGNvbnN0IHF1ZXJpZXMgPSBbXVxuXG4gICAgICBpZiAobGltaXRzPy5vZmZzZXQpIHtcbiAgICAgICAgaWYgKHRoaXMubW9kZWwuaXNNb2RlbChsaW1pdHMub2Zmc2V0KSlcbiAgICAgICAgICBxdWVyaWVzLnB1c2goXG4gICAgICAgICAgICBzdGFydEFmdGVyKFxuICAgICAgICAgICAgICBhd2FpdCBnZXREb2MoXG4gICAgICAgICAgICAgICAgZG9jKFxuICAgICAgICAgICAgICAgICAgdGhpcy5jb2xsZWN0aW9uKHRoaXMuYnVpbGRDb2xsZWN0aW9uUGF0aEZvckZpbmQoZmlsdGVycykpLFxuICAgICAgICAgICAgICAgICAgT2JqZWN0LnZhbHVlcyhsaW1pdHMub2Zmc2V0LmlkZW50aWZpZXIpLnNoaWZ0KCk/LnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKVxuICAgICAgICBlbHNlIGlmIChpc051bWJlcihsaW1pdHMub2Zmc2V0KSB8fCBpc1N0cmluZyhsaW1pdHMub2Zmc2V0KSkgcXVlcmllcy5wdXNoKHN0YXJ0QXQobGltaXRzLm9mZnNldCkpXG4gICAgICB9XG4gICAgICBpZiAobGltaXRzPy5saW1pdCkgcXVlcmllcy5wdXNoKGxpbWl0KGxpbWl0cy5saW1pdCkpXG5cbiAgICAgIHJldHVybiBxdWVyaWVzXG4gICAgfVxuXG4gICAgY2FsY3VsYXRlQ291bnQoZGF0YTogVEJhc2VbXSwgbGltaXRzOiBSZXBvc2l0b3J5TGltaXRPcHRpb25zPFRCYXNlPik6IG51bWJlciB7XG4gICAgICBpZiAoZGF0YS5sZW5ndGggPD0gMCkgcmV0dXJuIDBcbiAgICAgIGlmIChkYXRhLmxlbmd0aCA8IGxpbWl0cz8ubGltaXQpIHJldHVybiBkYXRhLmxlbmd0aFxuXG4gICAgICByZXR1cm4gSW5maW5pdHlcbiAgICB9XG4gIH0gYXMgYW55XG59XG4iXX0=
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1maW5kLWZpcmVzdG9yZS5taXhpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3Qvc3JjL2luZnJhL2ZpcmViYXNlL2ZpcmVzdG9yZS9taXhpbnMvd2l0aC1maW5kLWZpcmVzdG9yZS5taXhpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsR0FBRyxFQUNILE1BQU0sRUFDTixPQUFPLEVBQ1AsS0FBSyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBRUwsVUFBVSxFQUNWLE9BQU8sRUFDUCxLQUFLLEdBRU4sTUFBTSxvQkFBb0IsQ0FBQTtBQUUzQixPQUFPLEVBV0wsS0FBSyxHQUNOLE1BQU0sb0JBQW9CLENBQUE7QUFDM0IsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFhLEdBQUcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ25HLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUc3QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUkvQixTQUFnRixFQUNpQyxFQUFFO0lBQ25ILE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxNQUFXLEVBQXVELEVBQUUsQ0FDakcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBQzFCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxNQUF1QyxFQUFPLEVBQUU7UUFDMUUsT0FBTyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFBO0lBQzlELENBQUMsQ0FBQTtJQUNELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUN2QyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUss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dERvYyxcbiAgZ2V0RG9jcyxcbiAgbGltaXQsXG4gIG9yZGVyQnksXG4gIHF1ZXJ5LFxuICBRdWVyeUNvbnN0cmFpbnQsXG4gIHN0YXJ0QWZ0ZXIsXG4gIHN0YXJ0QXQsXG4gIHdoZXJlLFxuICBXaGVyZUZpbHRlck9wLFxufSBmcm9tICdmaXJlYmFzZS9maXJlc3RvcmUnXG5cbmltcG9ydCB7XG4gIEZpbmRSZXBvc2l0b3J5LFxuICBNb2RlbEJhc2VTdHJ1Y3R1cmUsXG4gIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXMsXG4gIE5vbkZ1bmN0aW9uUHJvcGVydHlOYW1lcyxcbiAgUmVwb3NpdG9yeUZpbmRGaWVsZCxcbiAgUmVwb3NpdG9yeUZpbmRGaWVsdGVycyxcbiAgUmVwb3NpdG9yeUZpbmRGaWVsdGVyc09wdGlvbnMsXG4gIFJlcG9zaXRvcnlGaW5kUmVzdWx0LFxuICBSZXBvc2l0b3J5TGltaXRPcHRpb25zLFxuICBSZXBvc2l0b3J5T3JkZXJCeSxcbiAgV2hlcmUsXG59IGZyb20gJy4uLy4uLy4uLy4uL2RvbWFpbidcbmltcG9ydCB7IGlzLCBpc0RhdGUsIGlzTmlsLCBpc051bWJlciwgaXNPYmplY3QsIGlzU3RyaW5nLCBNaXhpbkN0b3IsIHNldCB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgRmlyZXN0b3JlRmllbGRUeXBlIH0gZnJvbSAnLi4vZW51bXMnXG5pbXBvcnQgeyBGaXJlc3RvcmVIZWxwZXJzLCBGaXJlc3RvcmVSZXBvc2l0b3J5IH0gZnJvbSAnLi4vdHlwZXMnXG5cbmV4cG9ydCBjb25zdCB3aXRoRmluZEZpcmVzdG9yZSA9IDxcbiAgVEJhc2UgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU8VEJhc2U+LFxuICBUTWl4aW5CYXNlIGV4dGVuZHMgTWl4aW5DdG9yPEZpcmVzdG9yZVJlcG9zaXRvcnk8VEJhc2U+Pixcbj4oXG4gIE1peGluQmFzZTogTWl4aW5DdG9yPEZpcmVzdG9yZVJlcG9zaXRvcnk8VEJhc2U+ICYgRmlyZXN0b3JlSGVscGVycz4gJiBUTWl4aW5CYXNlLFxuKTogTWl4aW5DdG9yPEZpcmVzdG9yZVJlcG9zaXRvcnk8VEJhc2U+ICYgSW5zdGFuY2VUeXBlPFRNaXhpbkJhc2U+ICYgRmluZFJlcG9zaXRvcnk8VEJhc2U+ICYgRmlyZXN0b3JlSGVscGVycywgW10+ID0+IHtcbiAgY29uc3QgY2hlY2tJZklzRmlsdGVyT3B0aW9uID0gKGZpbHRlcjogYW55KTogZmlsdGVyIGlzIFJlcG9zaXRvcnlGaW5kRmllbHRlcnNPcHRpb25zPFRCYXNlLCBhbnk+ID0+XG4gICAgIWlzTmlsKGZpbHRlcj8ub3BlcmF0b3IpXG4gIGNvbnN0IGdldFZhbHVlRnJvbUZpbHRlciA9IChmaWx0ZXI6IFJlcG9zaXRvcnlGaW5kRmllbGQ8VEJhc2UsIGFueT4pOiBhbnkgPT4ge1xuICAgIHJldHVybiBjaGVja0lmSXNGaWx0ZXJPcHRpb24oZmlsdGVyKSA/IGZpbHRlci52YWx1ZSA6IGZpbHRlclxuICB9XG4gIGNvbnN0IGdldEZpbmFsVmFsdWVGcm9tID0gKHZhbHVlOiBhbnkpID0+XG4gICAgaXNOdW1iZXIodmFsdWUpIHx8IGlzU3RyaW5nKHZhbHVlKSB8fCBpc0RhdGUodmFsdWUpIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICA/IHZhbHVlXG4gICAgICA6IE9iamVjdC52YWx1ZXMoZ2V0RmluYWxWYWx1ZUZyb20pXG5cbiAgcmV0dXJuIGNsYXNzIEZpbmRGaXJlc3RvcmUgZXh0ZW5kcyBNaXhpbkJhc2UgaW1wbGVtZW50cyBGaW5kUmVwb3NpdG9yeTxUQmFzZT4ge1xuICAgIGFzeW5jIGZpbmQoXG4gICAgICBmaW5kOiB7XG4gICAgICAgIGZpbHRlcnM/OiBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzPFRCYXNlPlxuICAgICAgICBsaW1pdHM/OiBSZXBvc2l0b3J5TGltaXRPcHRpb25zPFRCYXNlPlxuICAgICAgICBvcmRlckJ5PzogUmVwb3NpdG9yeU9yZGVyQnk8VEJhc2U+XG4gICAgICAgIG9wdGlvbnM/OiB7IGVuYWJsZUNvdW50PzogYm9vbGVhbiB9XG4gICAgICB9ID0ge30sXG4gICAgKTogUHJvbWlzZTxSZXBvc2l0b3J5RmluZFJlc3VsdDxUQmFzZT4+IHtcbiAgICAgIGNvbnN0IGNvbGxlY3Rpb246IENvbGxlY3Rpb25SZWZlcmVuY2U8VEJhc2U+ID0gdGhpcy5jb2xsZWN0aW9uKHRoaXMuYnVpbGRDb2xsZWN0aW9uUGF0aEZvckZpbmQoZmluZC5maWx0ZXJzKSlcbiAgICAgIGNvbnN0IGVuYWJsZUNvdW50ID0gZmluZD8ub3B0aW9ucz8uZW5hYmxlQ291bnQgPz8gdHJ1ZVxuICAgICAgY29uc3QgaW50ZXJjZXB0ZWQgPSBhd2FpdCB0aGlzLmludGVyY2VwdG9ycz8ucmVxdWVzdD8uKHsgZmluZCB9KVxuICAgICAgY29uc3QgeyBmaWx0ZXJzLCBsaW1pdHMsIG9yZGVyQnkgfSA9IGludGVyY2VwdGVkLmZpbmQgfHwgZmluZFxuICAgICAgY29uc3QgcXVlcmllcyA9IHRoaXMubWFrZUZpcmVzdG9yZVdoZXJlKGZpbHRlcnMgfHwge30pXG4gICAgICBjb25zdCBvcmRpbmF0aW9uID0gdGhpcy5tYWtlRmlyZXN0b3JlT3JkZXJCeShmaWx0ZXJzLCBvcmRlckJ5KVxuICAgICAgY29uc3Qgb2Zmc2V0cyA9IGF3YWl0IHRoaXMuZGVmaW5lTGltaXRzKGZpbHRlcnMsIGxpbWl0cylcbiAgICAgIGNvbnN0IHF1ZXJ5QXJndW1tZW50czogUXVlcnlDb25zdHJhaW50W10gPSBbLi4ucXVlcmllcywgLi4ub3JkaW5hdGlvbiwgLi4ub2Zmc2V0c11cbiAgICAgIGNvbnN0IGRvY3MgPSBhd2FpdCBnZXREb2NzKHF1ZXJ5KGNvbGxlY3Rpb24sIC4uLnF1ZXJ5QXJndW1tZW50cykpXG4gICAgICBjb25zdCBkYXRhID0gZG9jcy5kb2NzLm1hcCgoZG9jKSA9PiBkb2MuZGF0YSgpKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhOiAoYXdhaXQgdGhpcy5pbnRlcmNlcHRvcnM/LnJlc3BvbnNlPy4oZGF0YSwgaW50ZXJjZXB0ZWQpKSB8fCBkYXRhLFxuICAgICAgICBjb3VudDogZW5hYmxlQ291bnQgPyB0aGlzLmNhbGN1bGF0ZUNvdW50KGRhdGEsIGxpbWl0cykgOiBJbmZpbml0eSxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBidWlsZENvbGxlY3Rpb25QYXRoRm9yRmluZChmaWx0ZXJzOiBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzPFRCYXNlPik6IHN0cmluZyB7XG4gICAgICBpZiAoIXRoaXMuaXNTdWJDb2xsZWN0aW9uKHRoaXMpKSByZXR1cm4gdGhpcy5jb2xsZWN0aW9uTmFtZVxuXG4gICAgICBjb25zdCBwYXJlbnRJZEZpZWxkID0gdGhpcy5wYXJlbnRJZEZpZWxkIGFzIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8VEJhc2U+XG4gICAgICBjb25zdCBwYXJlbnRJZCA9IGdldFZhbHVlRnJvbUZpbHRlcihmaWx0ZXJzPy5bcGFyZW50SWRGaWVsZF0pXG5cbiAgICAgIHJldHVybiBgJHt0aGlzLnBhcmVudFJlcG9zaXRvcnkuY29sbGVjdGlvbk5hbWV9LyR7cGFyZW50SWR9LyR7dGhpcy5jb2xsZWN0aW9uTmFtZX1gXG4gICAgfVxuXG4gICAgbWFrZUZpcmVzdG9yZVdoZXJlID0gKGZpbHRlcjogUmVwb3NpdG9yeUZpbmRGaWVsdGVyczxUQmFzZT4pOiBRdWVyeUNvbnN0cmFpbnRbXSA9PlxuICAgICAgT2JqZWN0LmtleXMoZmlsdGVyKS5yZWR1Y2UoXG4gICAgICAgIChxdWVyaWVzOiBRdWVyeUNvbnN0cmFpbnRbXSwgZmllbGROYW1lOiBzdHJpbmcpID0+IFtcbiAgICAgICAgICAuLi5xdWVyaWVzLFxuICAgICAgICAgIC4uLnRoaXMuYnVpbGRXaGVyZVNlbnRlbmNlKGZpZWxkTmFtZSwgaXMoZmlsdGVyW2ZpZWxkTmFtZSBhcyBOb25GdW5jdGlvblByb3BlcnR5TmFtZXM8VEJhc2U+XSkpLFxuICAgICAgICBdLFxuICAgICAgICBbXSxcbiAgICAgIClcblxuICAgIGJ1aWxkV2hlcmVTZW50ZW5jZSA9IChcbiAgICAgIGZpZWxkTmFtZTogTm9uRnVuY3Rpb25Qcm9wZXJ0eU5hbWVzPFRCYXNlPiB8IHN0cmluZyxcbiAgICAgIG9wdGlvbnM6IFJlcG9zaXRvcnlGaW5kRmllbHRlcnNPcHRpb25zPFRCYXNlLCBOb25GdW5jdGlvblByb3BlcnR5TmFtZXM8VEJhc2U+PixcbiAgICApOiBRdWVyeUNvbnN0cmFpbnRbXSA9PiB7XG4gICAgICBpZiAodGhpcy5pc1N1YkNvbGxlY3Rpb24odGhpcykgJiYgZmllbGROYW1lID09PSB0aGlzLnBhcmVudElkRmllbGQpIHJldHVybiBbXVxuXG4gICAgICBjb25zdCB2YWx1ZSA9IG9wdGlvbnM/LnZhbHVlIHx8IG9wdGlvbnNcbiAgICAgIGNvbnN0IG9iamVjdCA9IHt9XG5cbiAgICAgIHNldChvYmplY3QsIGZpZWxkTmFtZSwgdmFsdWUpXG5cbiAgICAgIGNvbnN0IHBsYWluSW5zdGFuY2UgPSBuZXcgdGhpcy5tb2RlbChvYmplY3QpLnRvUGxhaW4oKVxuICAgICAgY29uc3QgZmlyZXN0b3JlRmllbGROYW1lID1cbiAgICAgICAgZmllbGROYW1lLnRvU3RyaW5nKCkuaW5kZXhPZignLicpID4gLTFcbiAgICAgICAgICA/IGZpZWxkTmFtZS50b1N0cmluZygpXG4gICAgICAgICAgOiBPYmplY3Qua2V5cyhwbGFpbkluc3RhbmNlKS5maW5kKChrZXkpID0+IHBsYWluSW5zdGFuY2Vba2V5XSlcblxuICAgICAgaWYgKG9wdGlvbnM/Lm9wZXJhdG9yID09PSBXaGVyZS5MSUtFKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBBcnJheS5pc0FycmF5KG9wdGlvbnM/LnZhbHVlKSAmJlxuICAgICAgICAgICh0aGlzLmZpZWxkc1tmaXJlc3RvcmVGaWVsZE5hbWUgYXMgTm9uRnVuY3Rpb25BbmRJZGVudGlmaWVyUHJvcGVydHlOYW1lczxUQmFzZT5dID09PVxuICAgICAgICAgICAgRmlyZXN0b3JlRmllbGRUeXBlLkFycmF5IHx8XG4gICAgICAgICAgICAhdGhpcy5maWVsZHNbZmlyZXN0b3JlRmllbGROYW1lIGFzIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8VEJhc2U+XSlcbiAgICAgICAgKVxuICAgICAgICAgIHJldHVybiBbd2hlcmUoZmlyZXN0b3JlRmllbGROYW1lLCAnYXJyYXktY29udGFpbnMtYW55Jywgb3B0aW9ucy52YWx1ZSldXG5cbiAgICAgICAgcmV0dXJuIFt3aGVyZShmaXJlc3RvcmVGaWVsZE5hbWUsICc+PScsIG9wdGlvbnMudmFsdWUpLCB3aGVyZShmaXJlc3RvcmVGaWVsZE5hbWUsICc8PScsIGAke29wdGlvbnMudmFsdWV9fmApXVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBvcHRpb25zPy5vcGVyYXRvciA9PT0gV2hlcmUuSU4gJiZcbiAgICAgICAgQXJyYXkuaXNBcnJheShvcHRpb25zPy52YWx1ZSkgJiZcbiAgICAgICAgKHRoaXMuZmllbGRzW2ZpcmVzdG9yZUZpZWxkTmFtZSBhcyBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPFRCYXNlPl0gPT09IEZpcmVzdG9yZUZpZWxkVHlwZS5BcnJheSB8fFxuICAgICAgICAgICF0aGlzLmZpZWxkc1tmaXJlc3RvcmVGaWVsZE5hbWUgYXMgTm9uRnVuY3Rpb25BbmRJZGVudGlmaWVyUHJvcGVydHlOYW1lczxUQmFzZT5dKVxuICAgICAgKVxuICAgICAgICByZXR1cm4gW3doZXJlKGZpcmVzdG9yZUZpZWxkTmFtZSwgJ2FycmF5LWNvbnRhaW5zJywgb3B0aW9ucy52YWx1ZSldXG4gICAgICBpZiAoaXNPYmplY3Qob3B0aW9ucykgJiYgaXNOaWwob3B0aW9ucz8ub3BlcmF0b3IpICYmIGlzTmlsKG9wdGlvbnM/LnZhbHVlKSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMob3B0aW9ucykucmVkdWNlKFxuICAgICAgICAgIChxdWVyaWVzLCBrZXkpID0+IFtcbiAgICAgICAgICAgIC4uLnF1ZXJpZXMsXG4gICAgICAgICAgICAuLi50aGlzLmJ1aWxkV2hlcmVTZW50ZW5jZShgJHtmaWVsZE5hbWUudG9TdHJpbmcoKX0uJHtrZXl9YCwgaXM8UmVjb3JkPHN0cmluZywgYW55Pj4ob3B0aW9ucylba2V5XSksXG4gICAgICAgICAgXSxcbiAgICAgICAgICBbXSxcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gW3doZXJlKGZpcmVzdG9yZUZpZWxkTmFtZSwgKG9wdGlvbnM/Lm9wZXJhdG9yIGFzIFdoZXJlRmlsdGVyT3ApIHx8ICc9PScsIG9wdGlvbnM/LnZhbHVlIHx8IG9wdGlvbnMpXVxuICAgIH1cblxuICAgIG1ha2VGaXJlc3RvcmVPcmRlckJ5ID0gKFxuICAgICAgZmlsdGVyczogUmVwb3NpdG9yeUZpbmRGaWVsdGVyczxUQmFzZT4sXG4gICAgICBmaWVsZHNUb09yZGVyQnk/OiBSZXBvc2l0b3J5T3JkZXJCeTxUQmFzZT4sXG4gICAgKTogUXVlcnlDb25zdHJhaW50W10gPT4ge1xuICAgICAgY29uc3Qgb3JkZXJCeUtleXMgPSBPYmplY3Qua2V5cyhmaWVsZHNUb09yZGVyQnkgfHwge30pXG5cbiAgICAgIGlmICghb3JkZXJCeUtleXMubGVuZ3RoKSByZXR1cm4gW11cblxuICAgICAgY29uc3QgZmlsdGVyc0tleXNXaXRoVW5vcmRlcmVkID0gT2JqZWN0LmtleXMoZmlsdGVycyB8fCB7fSkuZmlsdGVyKFxuICAgICAgICAoZmlsdGVyS2V5KSA9PiAhb3JkZXJCeUtleXMuaW5jbHVkZXMoZmlsdGVyS2V5KSxcbiAgICAgIClcblxuICAgICAgaWYgKGZpbHRlcnNLZXlzV2l0aFVub3JkZXJlZC5sZW5ndGgpXG4gICAgICAgIGZpbHRlcnNLZXlzV2l0aFVub3JkZXJlZC5mb3JFYWNoKFxuICAgICAgICAgIChmaWx0ZXJLZXkpID0+XG4gICAgICAgICAgICAoZmllbGRzVG9PcmRlckJ5ID0ge1xuICAgICAgICAgICAgICAuLi4oIVtXaGVyZS5FUVVBTFNdLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgIGlzPFJlcG9zaXRvcnlGaW5kRmllbHRlcnNPcHRpb25zPFRCYXNlLCBOb25GdW5jdGlvblByb3BlcnR5TmFtZXM8VEJhc2U+Pj4oXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJzW2ZpbHRlcktleSBhcyBOb25GdW5jdGlvblByb3BlcnR5TmFtZXM8VEJhc2U+XSxcbiAgICAgICAgICAgICAgICApLm9wZXJhdG9yLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgPyB7IFtmaWx0ZXJLZXldOiAnYXNjJyB9XG4gICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgIC4uLmZpZWxkc1RvT3JkZXJCeSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApXG5cbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhmaWVsZHNUb09yZGVyQnkpLm1hcCgoZmllbGROYW1lKSA9PlxuICAgICAgICBvcmRlckJ5KGZpZWxkTmFtZSwgZmllbGRzVG9PcmRlckJ5W2ZpZWxkTmFtZSBhcyBOb25GdW5jdGlvblByb3BlcnR5TmFtZXM8VEJhc2U+XSksXG4gICAgICApXG4gICAgfVxuXG4gICAgYXN5bmMgZGVmaW5lTGltaXRzKFxuICAgICAgZmlsdGVyczogUmVwb3NpdG9yeUZpbmRGaWVsdGVyczxUQmFzZT4sXG4gICAgICBsaW1pdHM6IFJlcG9zaXRvcnlMaW1pdE9wdGlvbnM8VEJhc2U+LFxuICAgICk6IFByb21pc2U8UXVlcnlDb25zdHJhaW50W10+IHtcbiAgICAgIGNvbnN0IHF1ZXJpZXMgPSBbXVxuXG4gICAgICBpZiAobGltaXRzPy5vZmZzZXQpIHtcbiAgICAgICAgaWYgKHRoaXMubW9kZWwuaXNNb2RlbChsaW1pdHMub2Zmc2V0KSlcbiAgICAgICAgICBxdWVyaWVzLnB1c2goXG4gICAgICAgICAgICBzdGFydEFmdGVyKFxuICAgICAgICAgICAgICBhd2FpdCBnZXREb2MoXG4gICAgICAgICAgICAgICAgZG9jKFxuICAgICAgICAgICAgICAgICAgdGhpcy5jb2xsZWN0aW9uKHRoaXMuYnVpbGRDb2xsZWN0aW9uUGF0aEZvckZpbmQoZmlsdGVycykpLFxuICAgICAgICAgICAgICAgICAgT2JqZWN0LnZhbHVlcyhsaW1pdHMub2Zmc2V0LmlkZW50aWZpZXIpLnNoaWZ0KCk/LnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKVxuICAgICAgICBlbHNlIGlmIChpc051bWJlcihsaW1pdHMub2Zmc2V0KSB8fCBpc1N0cmluZyhsaW1pdHMub2Zmc2V0KSkgcXVlcmllcy5wdXNoKHN0YXJ0QXQobGltaXRzLm9mZnNldCkpXG4gICAgICB9XG4gICAgICBpZiAobGltaXRzPy5saW1pdCkgcXVlcmllcy5wdXNoKGxpbWl0KGxpbWl0cy5saW1pdCkpXG5cbiAgICAgIHJldHVybiBxdWVyaWVzXG4gICAgfVxuXG4gICAgY2FsY3VsYXRlQ291bnQoZGF0YTogVEJhc2VbXSwgbGltaXRzOiBSZXBvc2l0b3J5TGltaXRPcHRpb25zPFRCYXNlPik6IG51bWJlciB7XG4gICAgICBpZiAoZGF0YS5sZW5ndGggPD0gMCkgcmV0dXJuIDBcbiAgICAgIGlmIChkYXRhLmxlbmd0aCA8IGxpbWl0cz8ubGltaXQpIHJldHVybiBkYXRhLmxlbmd0aFxuXG4gICAgICByZXR1cm4gSW5maW5pdHlcbiAgICB9XG4gIH0gYXMgYW55XG59XG4iXX0=