@infrab4a/connect-angular 5.7.3 → 5.7.5-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/{fesm2020 → fesm2022}/infrab4a-connect-angular.mjs +3384 -3433
  2. package/fesm2022/infrab4a-connect-angular.mjs.map +1 -0
  3. package/package.json +12 -19
  4. package/types/infrab4a-connect-angular.d.ts +758 -0
  5. package/angular-connect.module.d.ts +0 -36
  6. package/angular-elastic-search.module.d.ts +0 -9
  7. package/angular-firebase-auth.module.d.ts +0 -11
  8. package/angular-firestore.module.d.ts +0 -17
  9. package/angular-hasura-graphql.module.d.ts +0 -14
  10. package/angular-vertex-search.module.d.ts +0 -9
  11. package/consts/backend-url.const.d.ts +0 -1
  12. package/consts/category-structure.d.ts +0 -1
  13. package/consts/default-shop.const.d.ts +0 -1
  14. package/consts/es-config.const.d.ts +0 -1
  15. package/consts/firebase-const.d.ts +0 -4
  16. package/consts/hasura-options.const.d.ts +0 -1
  17. package/consts/index.d.ts +0 -8
  18. package/consts/persistence.const.d.ts +0 -1
  19. package/consts/storage-base-url.const.d.ts +0 -1
  20. package/consts/vertex-config.const.d.ts +0 -1
  21. package/esm2020/angular-connect.module.mjs +0 -291
  22. package/esm2020/angular-elastic-search.module.mjs +0 -34
  23. package/esm2020/angular-firebase-auth.module.mjs +0 -141
  24. package/esm2020/angular-firestore.module.mjs +0 -569
  25. package/esm2020/angular-hasura-graphql.module.mjs +0 -421
  26. package/esm2020/angular-vertex-search.module.mjs +0 -34
  27. package/esm2020/consts/backend-url.const.mjs +0 -2
  28. package/esm2020/consts/category-structure.mjs +0 -2
  29. package/esm2020/consts/default-shop.const.mjs +0 -2
  30. package/esm2020/consts/es-config.const.mjs +0 -2
  31. package/esm2020/consts/firebase-const.mjs +0 -5
  32. package/esm2020/consts/hasura-options.const.mjs +0 -2
  33. package/esm2020/consts/index.mjs +0 -9
  34. package/esm2020/consts/persistence.const.mjs +0 -2
  35. package/esm2020/consts/storage-base-url.const.mjs +0 -2
  36. package/esm2020/consts/vertex-config.const.mjs +0 -2
  37. package/esm2020/helpers/index.mjs +0 -2
  38. package/esm2020/helpers/mobile-operation-system-checker.helper.mjs +0 -7
  39. package/esm2020/index.mjs +0 -7
  40. package/esm2020/infrab4a-connect-angular.mjs +0 -5
  41. package/esm2020/interfaces/catalog-strategies.interface.mjs +0 -2
  42. package/esm2020/interfaces/category-facades.interface.mjs +0 -2
  43. package/esm2020/interfaces/index.mjs +0 -3
  44. package/esm2020/persistence/cookie-data-persistence.mjs +0 -22
  45. package/esm2020/persistence/data-persistence.mjs +0 -2
  46. package/esm2020/persistence/index.mjs +0 -3
  47. package/esm2020/services/auth.service.mjs +0 -37
  48. package/esm2020/services/cart/cart-services.facade.mjs +0 -21
  49. package/esm2020/services/cart/index.mjs +0 -2
  50. package/esm2020/services/cart.service.mjs +0 -73
  51. package/esm2020/services/catalog/adapters/category-structure.adapter.mjs +0 -2
  52. package/esm2020/services/catalog/adapters/index.mjs +0 -4
  53. package/esm2020/services/catalog/adapters/new-category-structure.adapter.mjs +0 -43
  54. package/esm2020/services/catalog/adapters/old-category-structure.adapter.mjs +0 -23
  55. package/esm2020/services/catalog/catalog.service.mjs +0 -111
  56. package/esm2020/services/catalog/category.service.mjs +0 -42
  57. package/esm2020/services/catalog/context/catalog-search.context.mjs +0 -40
  58. package/esm2020/services/catalog/enums/index.mjs +0 -2
  59. package/esm2020/services/catalog/enums/product-sorts.enum.mjs +0 -11
  60. package/esm2020/services/catalog/facades/catalog-service.facade.mjs +0 -32
  61. package/esm2020/services/catalog/facades/catalog-strategies.facade.mjs +0 -17
  62. package/esm2020/services/catalog/facades/category-repository.facade.mjs +0 -20
  63. package/esm2020/services/catalog/facades/category-service.facade.mjs +0 -30
  64. package/esm2020/services/catalog/facades/index.mjs +0 -6
  65. package/esm2020/services/catalog/facades/product-catalog.facade.mjs +0 -21
  66. package/esm2020/services/catalog/helpers/brand-manager.helper.mjs +0 -62
  67. package/esm2020/services/catalog/helpers/catalog-filter.helper.mjs +0 -44
  68. package/esm2020/services/catalog/helpers/catalog-sort.helper.mjs +0 -52
  69. package/esm2020/services/catalog/helpers/index.mjs +0 -5
  70. package/esm2020/services/catalog/helpers/product-fields.helper.mjs +0 -43
  71. package/esm2020/services/catalog/index.mjs +0 -8
  72. package/esm2020/services/catalog/models/category-with-tree.model.mjs +0 -10
  73. package/esm2020/services/catalog/models/index.mjs +0 -2
  74. package/esm2020/services/catalog/services/catalog-helpers.service.mjs +0 -33
  75. package/esm2020/services/catalog/services/catalog-operations.facade.mjs +0 -26
  76. package/esm2020/services/catalog/services/catalog-repository.service.mjs +0 -25
  77. package/esm2020/services/catalog/services/index.mjs +0 -5
  78. package/esm2020/services/catalog/services/product-management.facade.mjs +0 -25
  79. package/esm2020/services/catalog/strategies/category-search.strategy.mjs +0 -133
  80. package/esm2020/services/catalog/strategies/index.mjs +0 -4
  81. package/esm2020/services/catalog/strategies/profile-search.strategy.mjs +0 -42
  82. package/esm2020/services/catalog/strategies/term-search.strategy.mjs +0 -126
  83. package/esm2020/services/catalog/strategies/types/strategy-params.type.mjs +0 -2
  84. package/esm2020/services/catalog/types/fetch-products-options.type.mjs +0 -2
  85. package/esm2020/services/catalog/types/fetch-products-params.type.mjs +0 -2
  86. package/esm2020/services/catalog/types/fetch-products-response.type.mjs +0 -2
  87. package/esm2020/services/catalog/types/index.mjs +0 -6
  88. package/esm2020/services/catalog/types/method-params.type.mjs +0 -2
  89. package/esm2020/services/catalog/types/product-sort.type.mjs +0 -2
  90. package/esm2020/services/catalog/wishlist.service.mjs +0 -258
  91. package/esm2020/services/checkout/checkout-dependencies.facade.mjs +0 -20
  92. package/esm2020/services/checkout/checkout-repositories.facade.mjs +0 -20
  93. package/esm2020/services/checkout/index.mjs +0 -3
  94. package/esm2020/services/checkout-subscription.service.mjs +0 -55
  95. package/esm2020/services/checkout.service.mjs +0 -106
  96. package/esm2020/services/coupon/coupon-repositories.facade.mjs +0 -24
  97. package/esm2020/services/coupon/index.mjs +0 -2
  98. package/esm2020/services/coupon/types/coupon-params.type.mjs +0 -2
  99. package/esm2020/services/coupon.service.mjs +0 -248
  100. package/esm2020/services/helpers/index.mjs +0 -2
  101. package/esm2020/services/helpers/util.helper.mjs +0 -18
  102. package/esm2020/services/home-shop/home-shop-repositories.facade.mjs +0 -24
  103. package/esm2020/services/home-shop/index.mjs +0 -2
  104. package/esm2020/services/home-shop.service.mjs +0 -119
  105. package/esm2020/services/index.mjs +0 -11
  106. package/esm2020/services/order-product-review.service.mjs +0 -126
  107. package/esm2020/services/order.service.mjs +0 -30
  108. package/esm2020/services/shared/configuration.facade.mjs +0 -29
  109. package/esm2020/services/shared/index.mjs +0 -2
  110. package/esm2020/services/types/index.mjs +0 -5
  111. package/esm2020/services/types/pending-product-review.type.mjs +0 -2
  112. package/esm2020/services/types/product-review-create.type.mjs +0 -2
  113. package/esm2020/services/types/required-checkout-data.type.mjs +0 -2
  114. package/esm2020/services/types/required-checkout-subscription-data.type.mjs +0 -2
  115. package/esm2020/types/firebase-app-config.type.mjs +0 -2
  116. package/esm2020/types/index.mjs +0 -2
  117. package/fesm2015/infrab4a-connect-angular.mjs +0 -3630
  118. package/fesm2015/infrab4a-connect-angular.mjs.map +0 -1
  119. package/fesm2020/infrab4a-connect-angular.mjs.map +0 -1
  120. package/helpers/index.d.ts +0 -1
  121. package/helpers/mobile-operation-system-checker.helper.d.ts +0 -3
  122. package/index.d.ts +0 -6
  123. package/interfaces/catalog-strategies.interface.d.ts +0 -31
  124. package/interfaces/category-facades.interface.d.ts +0 -6
  125. package/interfaces/index.d.ts +0 -2
  126. package/persistence/cookie-data-persistence.d.ts +0 -10
  127. package/persistence/data-persistence.d.ts +0 -6
  128. package/persistence/index.d.ts +0 -2
  129. package/services/auth.service.d.ts +0 -18
  130. package/services/cart/cart-services.facade.d.ts +0 -12
  131. package/services/cart/index.d.ts +0 -1
  132. package/services/cart.service.d.ts +0 -26
  133. package/services/catalog/adapters/category-structure.adapter.d.ts +0 -4
  134. package/services/catalog/adapters/index.d.ts +0 -3
  135. package/services/catalog/adapters/new-category-structure.adapter.d.ts +0 -12
  136. package/services/catalog/adapters/old-category-structure.adapter.d.ts +0 -10
  137. package/services/catalog/catalog.service.d.ts +0 -24
  138. package/services/catalog/category.service.d.ts +0 -23
  139. package/services/catalog/context/catalog-search.context.d.ts +0 -14
  140. package/services/catalog/enums/index.d.ts +0 -1
  141. package/services/catalog/enums/product-sorts.enum.d.ts +0 -9
  142. package/services/catalog/facades/catalog-service.facade.d.ts +0 -15
  143. package/services/catalog/facades/catalog-strategies.facade.d.ts +0 -10
  144. package/services/catalog/facades/category-repository.facade.d.ts +0 -9
  145. package/services/catalog/facades/category-service.facade.d.ts +0 -15
  146. package/services/catalog/facades/index.d.ts +0 -5
  147. package/services/catalog/facades/product-catalog.facade.d.ts +0 -10
  148. package/services/catalog/helpers/brand-manager.helper.d.ts +0 -14
  149. package/services/catalog/helpers/catalog-filter.helper.d.ts +0 -8
  150. package/services/catalog/helpers/catalog-sort.helper.d.ts +0 -7
  151. package/services/catalog/helpers/index.d.ts +0 -4
  152. package/services/catalog/helpers/product-fields.helper.d.ts +0 -7
  153. package/services/catalog/index.d.ts +0 -7
  154. package/services/catalog/models/category-with-tree.model.d.ts +0 -4
  155. package/services/catalog/models/index.d.ts +0 -1
  156. package/services/catalog/services/catalog-helpers.service.d.ts +0 -17
  157. package/services/catalog/services/catalog-operations.facade.d.ts +0 -13
  158. package/services/catalog/services/catalog-repository.service.d.ts +0 -12
  159. package/services/catalog/services/index.d.ts +0 -4
  160. package/services/catalog/services/product-management.facade.d.ts +0 -12
  161. package/services/catalog/strategies/category-search.strategy.d.ts +0 -19
  162. package/services/catalog/strategies/index.d.ts +0 -3
  163. package/services/catalog/strategies/profile-search.strategy.d.ts +0 -14
  164. package/services/catalog/strategies/term-search.strategy.d.ts +0 -20
  165. package/services/catalog/strategies/types/strategy-params.type.d.ts +0 -59
  166. package/services/catalog/types/fetch-products-options.type.d.ts +0 -8
  167. package/services/catalog/types/fetch-products-params.type.d.ts +0 -25
  168. package/services/catalog/types/fetch-products-response.type.d.ts +0 -19
  169. package/services/catalog/types/index.d.ts +0 -5
  170. package/services/catalog/types/method-params.type.d.ts +0 -17
  171. package/services/catalog/types/product-sort.type.d.ts +0 -2
  172. package/services/catalog/wishlist.service.d.ts +0 -60
  173. package/services/checkout/checkout-dependencies.facade.d.ts +0 -10
  174. package/services/checkout/checkout-repositories.facade.d.ts +0 -9
  175. package/services/checkout/index.d.ts +0 -2
  176. package/services/checkout-subscription.service.d.ts +0 -19
  177. package/services/checkout.service.d.ts +0 -30
  178. package/services/coupon/coupon-repositories.facade.d.ts +0 -10
  179. package/services/coupon/index.d.ts +0 -1
  180. package/services/coupon/types/coupon-params.type.d.ts +0 -13
  181. package/services/coupon.service.d.ts +0 -36
  182. package/services/helpers/index.d.ts +0 -1
  183. package/services/helpers/util.helper.d.ts +0 -3
  184. package/services/home-shop/home-shop-repositories.facade.d.ts +0 -10
  185. package/services/home-shop/index.d.ts +0 -1
  186. package/services/home-shop.service.d.ts +0 -26
  187. package/services/index.d.ts +0 -10
  188. package/services/order-product-review.service.d.ts +0 -18
  189. package/services/order.service.d.ts +0 -13
  190. package/services/shared/configuration.facade.d.ts +0 -12
  191. package/services/shared/index.d.ts +0 -1
  192. package/services/types/index.d.ts +0 -4
  193. package/services/types/pending-product-review.type.d.ts +0 -12
  194. package/services/types/product-review-create.type.d.ts +0 -14
  195. package/services/types/required-checkout-data.type.d.ts +0 -2
  196. package/services/types/required-checkout-subscription-data.type.d.ts +0 -2
  197. package/types/firebase-app-config.type.d.ts +0 -1
  198. package/types/index.d.ts +0 -1
@@ -1,258 +0,0 @@
1
- import { Inject, Injectable } from '@angular/core';
2
- import { PersonTypes, Shops, Wishlist, WishlistLogType, } from '@infrab4a/connect';
3
- import { DEFAULT_SHOP } from '../../consts';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@infrab4a/connect";
6
- export class WishlistService {
7
- constructor(wishlistRepository, productRepository, productCatalogRepository, logRepository, shop) {
8
- this.wishlistRepository = wishlistRepository;
9
- this.productRepository = productRepository;
10
- this.productCatalogRepository = productCatalogRepository;
11
- this.logRepository = logRepository;
12
- this.shop = shop;
13
- }
14
- initializeServices(catalogServiceFacade, categoryServiceFacade) {
15
- this.catalogService = catalogServiceFacade.getCatalogService();
16
- this.categoryService = categoryServiceFacade.getCategoryService();
17
- }
18
- getCatalogService() {
19
- return this.catalogService;
20
- }
21
- getCategoryService() {
22
- return this.categoryService;
23
- }
24
- async create({ personId, title, description, published, userFullName, userPhoto, theme, bannerUrl, personType, personIsSubscriber, }) {
25
- const wishlistData = this.buildWishlistData({
26
- title,
27
- description,
28
- published,
29
- userFullName,
30
- userPhoto,
31
- theme,
32
- bannerUrl,
33
- personType,
34
- personIsSubscriber,
35
- personId,
36
- });
37
- const existingWishlist = await this.findExistingWishlistByPersonId(personId);
38
- await this.createWishlistLog(WishlistLogType.CREATE, wishlistData);
39
- if (existingWishlist)
40
- return existingWishlist;
41
- return this.createNewWishlist(wishlistData);
42
- }
43
- buildWishlistData({ title, description, published, userFullName, userPhoto, theme, bannerUrl, personType, personIsSubscriber, personId, }) {
44
- return {
45
- slug: '',
46
- name: title,
47
- description,
48
- metadatas: [
49
- {
50
- shop: this.shop,
51
- title: `${userFullName} - ${title}`,
52
- description: `${userFullName} - ${description}`,
53
- },
54
- ],
55
- shop: this.shop,
56
- shops: [this.shop],
57
- personId,
58
- personName: userFullName,
59
- personPhoto: userPhoto,
60
- brandCategory: false,
61
- published,
62
- theme,
63
- bannerUrl,
64
- personType: personType ?? PersonTypes.NONE,
65
- personIsSubscriber: personIsSubscriber ?? false,
66
- };
67
- }
68
- async findExistingWishlistByPersonId(personId) {
69
- const hasWishlist = await this.wishlistRepository
70
- .find({
71
- filters: {
72
- personId,
73
- },
74
- options: {
75
- enableCount: false,
76
- },
77
- orderBy: {
78
- id: 'asc',
79
- },
80
- })
81
- .then((res) => res.data);
82
- return hasWishlist.length ? hasWishlist.at(0) : null;
83
- }
84
- async createNewWishlist(data) {
85
- const newWishlist = await this.wishlistRepository.create(data);
86
- await this.wishlistRepository.update({ id: newWishlist.id, slug: newWishlist.id });
87
- return Wishlist.toInstance({ ...newWishlist.toPlain(), slug: newWishlist.id });
88
- }
89
- async update({ id, title, description, published, userFullName, userPhoto, theme, bannerUrl, personType, personIsSubscriber, }) {
90
- const data = {
91
- id,
92
- name: title,
93
- description,
94
- published,
95
- metadatas: [
96
- {
97
- shop: this.shop,
98
- title: `${userFullName} - ${title}`,
99
- description: `${userFullName} - ${description}`,
100
- },
101
- ],
102
- personName: userFullName,
103
- personPhoto: userPhoto,
104
- theme,
105
- bannerUrl,
106
- personType: personType ?? PersonTypes.NONE,
107
- personIsSubscriber: personIsSubscriber ?? false,
108
- };
109
- await this.createWishlistLog(WishlistLogType.UPDATE, data);
110
- return this.wishlistRepository.update(data);
111
- }
112
- async delete(wishlistId) {
113
- const wishlist = await this.findById(wishlistId);
114
- await this.createWishlistLog(WishlistLogType.DELETE, wishlist);
115
- return this.wishlistRepository.delete({ id: wishlistId });
116
- }
117
- getWishlistBySlug(slug) {
118
- const [id] = slug.split('-');
119
- if (+id)
120
- return this.wishlistRepository.get({ id });
121
- return this.wishlistRepository.getWishlistBySlug(slug);
122
- }
123
- getWishlistsByPerson(personId) {
124
- return this.wishlistRepository.getWishlistByPerson(personId);
125
- }
126
- async addProduct(wishlistId, productId) {
127
- const wishlist = await this.wishlistRepository.get({ id: wishlistId });
128
- const hasProduct = wishlist.products.some((p) => p == productId);
129
- const wishlistData = await this.findById(wishlistId);
130
- const productData = await this.findProductById(productId);
131
- await this.createWishlistLog(WishlistLogType.ADD_PRODUCT, wishlistData, productData);
132
- if (!hasProduct) {
133
- wishlist.products = [...wishlist.products, productId];
134
- await this.wishlistRepository.addProduct(wishlistId, productId);
135
- }
136
- return wishlist;
137
- }
138
- async removeProduct(wishlistId, productId) {
139
- const wishlist = await this.wishlistRepository.get({ id: wishlistId });
140
- const productIndex = wishlist.products.findIndex((p) => p == productId);
141
- if (productIndex != -1) {
142
- wishlist.products.splice(productIndex, 1);
143
- const wishlistData = await this.findById(wishlistId);
144
- const productData = await this.findProductById(productId);
145
- await this.createWishlistLog(WishlistLogType.REMOVE_PRODUCT, wishlistData, productData);
146
- await this.wishlistRepository.removeProduct(wishlistId, productId);
147
- }
148
- return wishlist;
149
- }
150
- async findById(id) {
151
- return this.wishlistRepository
152
- .find({
153
- fields: ['id', 'name', 'description', 'personId', 'personIsSubscriber', 'personType', 'personName'],
154
- filters: {
155
- id,
156
- },
157
- })
158
- .then((res) => res.data.at(0));
159
- }
160
- async findProductById(id) {
161
- return this.productCatalogRepository
162
- .find({
163
- fields: ['id', 'sku', 'EAN', 'name', 'brand'],
164
- filters: {
165
- id,
166
- },
167
- })
168
- .then((res) => res.data.at(0));
169
- }
170
- async createWishlistLog(type, wishlist, product) {
171
- switch (type) {
172
- case WishlistLogType.CREATE:
173
- case WishlistLogType.UPDATE:
174
- case WishlistLogType.DELETE:
175
- await this.createWishlistOperationLog(type, wishlist);
176
- break;
177
- case WishlistLogType.ADD_PRODUCT:
178
- case WishlistLogType.REMOVE_PRODUCT:
179
- await this.createWishlistProductLog(type, wishlist, product);
180
- break;
181
- default:
182
- break;
183
- }
184
- }
185
- async createWishlistOperationLog(type, wishlist) {
186
- const operation = this.getOperationTypeFromWishlistLogType(type);
187
- await this.logRepository.create({
188
- collection: 'wishlist',
189
- date: new Date(),
190
- operation,
191
- documentId: wishlist.id,
192
- document: this.buildWishlistLogDocument(wishlist, type),
193
- });
194
- }
195
- async createWishlistProductLog(type, wishlist, product) {
196
- await this.logRepository.create({
197
- collection: 'wishlist',
198
- date: new Date(),
199
- operation: 'UPDATE',
200
- documentId: wishlist.id,
201
- document: {
202
- ...this.buildWishlistLogDocument(wishlist, type),
203
- ...this.buildProductLogData(product),
204
- },
205
- });
206
- }
207
- getOperationTypeFromWishlistLogType(type) {
208
- if (type === WishlistLogType.CREATE)
209
- return 'CREATE';
210
- if (type === WishlistLogType.UPDATE)
211
- return 'UPDATE';
212
- return 'DELETE';
213
- }
214
- buildWishlistLogDocument(wishlist, type) {
215
- return {
216
- id: wishlist.id,
217
- shop: this.shop,
218
- name: wishlist.name,
219
- description: wishlist.description,
220
- published: wishlist.published,
221
- type: type,
222
- personType: wishlist.personType,
223
- personId: wishlist.personId,
224
- personName: wishlist.personName,
225
- personIsSubscriber: wishlist.personIsSubscriber,
226
- };
227
- }
228
- buildProductLogData(product) {
229
- return {
230
- productId: product.id,
231
- productEAN: product.EAN,
232
- productSKU: product.sku,
233
- productName: product.name,
234
- productBrand: product.brand,
235
- };
236
- }
237
- }
238
- WishlistService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: WishlistService, deps: [{ token: 'WishlistRepository' }, { token: 'ProductRepository' }, { token: 'ProductCatalogRepository' }, { token: 'LogRepository' }, { token: DEFAULT_SHOP }], target: i0.ɵɵFactoryTarget.Injectable });
239
- WishlistService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: WishlistService });
240
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: WishlistService, decorators: [{
241
- type: Injectable
242
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
243
- type: Inject,
244
- args: ['WishlistRepository']
245
- }] }, { type: undefined, decorators: [{
246
- type: Inject,
247
- args: ['ProductRepository']
248
- }] }, { type: undefined, decorators: [{
249
- type: Inject,
250
- args: ['ProductCatalogRepository']
251
- }] }, { type: undefined, decorators: [{
252
- type: Inject,
253
- args: ['LogRepository']
254
- }] }, { type: i1.Shops, decorators: [{
255
- type: Inject,
256
- args: [DEFAULT_SHOP]
257
- }] }]; } });
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lzaGxpc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2F0YWxvZy93aXNobGlzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFHTCxXQUFXLEVBSVgsS0FBSyxFQUNMLFFBQVEsRUFDUixlQUFlLEdBRWhCLE1BQU0sbUJBQW1CLENBQUE7QUFFMUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQTs7O0FBTzNDLE1BQU0sT0FBTyxlQUFlO0lBSTFCLFlBQ2lELGtCQUFzQyxFQUN2QyxpQkFBb0MsRUFDN0Isd0JBQWtELEVBQzdELGFBQTRCLEVBQy9CLElBQVc7UUFKSCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3ZDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDN0IsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUM3RCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMvQixTQUFJLEdBQUosSUFBSSxDQUFPO0lBQ2pELENBQUM7SUFFSixrQkFBa0IsQ0FBQyxvQkFBMEMsRUFBRSxxQkFBNEM7UUFDekcsSUFBSSxDQUFDLGNBQWMsR0FBRyxvQkFBb0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO1FBQzlELElBQUksQ0FBQyxlQUFlLEdBQUcscUJBQXFCLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtJQUNuRSxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFBO0lBQzVCLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFBO0lBQzdCLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQ1gsUUFBUSxFQUNSLEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLEVBQ1QsS0FBSyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1Ysa0JBQWtCLEdBWW5CO1FBQ0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQzFDLEtBQUs7WUFDTCxXQUFXO1lBQ1gsU0FBUztZQUNULFlBQVk7WUFDWixTQUFTO1lBQ1QsS0FBSztZQUNMLFNBQVM7WUFDVCxVQUFVO1lBQ1Ysa0JBQWtCO1lBQ2xCLFFBQVE7U0FDVCxDQUFDLENBQUE7UUFFRixNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLDhCQUE4QixDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRTVFLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsWUFBd0IsQ0FBQyxDQUFBO1FBRTlFLElBQUksZ0JBQWdCO1lBQUUsT0FBTyxnQkFBZ0IsQ0FBQTtRQUU3QyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBRU8saUJBQWlCLENBQUMsRUFDeEIsS0FBSyxFQUNMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsUUFBUSxHQVlUO1FBQ0MsT0FBTztZQUNMLElBQUksRUFBRSxFQUFFO1lBQ1IsSUFBSSxFQUFFLEtBQUs7WUFDWCxXQUFXO1lBQ1gsU0FBUyxFQUFFO2dCQUNUO29CQUNFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtvQkFDZixLQUFLLEVBQUUsR0FBRyxZQUFZLE1BQU0sS0FBSyxFQUFFO29CQUNuQyxXQUFXLEVBQUUsR0FBRyxZQUFZLE1BQU0sV0FBVyxFQUFFO2lCQUNoRDthQUNGO1lBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNsQixRQUFRO1lBQ1IsVUFBVSxFQUFFLFlBQVk7WUFDeEIsV0FBVyxFQUFFLFNBQVM7WUFDdEIsYUFBYSxFQUFFLEtBQUs7WUFDcEIsU0FBUztZQUNULEtBQUs7WUFDTCxTQUFTO1lBQ1QsVUFBVSxFQUFFLFVBQVUsSUFBSSxXQUFXLENBQUMsSUFBSTtZQUMxQyxrQkFBa0IsRUFBRSxrQkFBa0IsSUFBSSxLQUFLO1NBQ2hELENBQUE7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLDhCQUE4QixDQUFDLFFBQWdCO1FBQzNELE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQjthQUM5QyxJQUFJLENBQUM7WUFDSixPQUFPLEVBQUU7Z0JBQ1AsUUFBUTthQUNUO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLFdBQVcsRUFBRSxLQUFLO2FBQ25CO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLEVBQUUsRUFBRSxLQUFLO2FBQ1Y7U0FDRixDQUFDO2FBQ0QsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFMUIsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFDdEQsQ0FBQztJQUVPLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFTO1FBQ3ZDLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUU5RCxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFbEYsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ2hGLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQ1gsRUFBRSxFQUNGLEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLEVBQ1QsS0FBSyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1Ysa0JBQWtCLEdBWW5CO1FBQ0MsTUFBTSxJQUFJLEdBQUc7WUFDWCxFQUFFO1lBQ0YsSUFBSSxFQUFFLEtBQUs7WUFDWCxXQUFXO1lBQ1gsU0FBUztZQUNULFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7b0JBQ2YsS0FBSyxFQUFFLEdBQUcsWUFBWSxNQUFNLEtBQUssRUFBRTtvQkFDbkMsV0FBVyxFQUFFLEdBQUcsWUFBWSxNQUFNLFdBQVcsRUFBRTtpQkFDaEQ7YUFDRjtZQUNELFVBQVUsRUFBRSxZQUFZO1lBQ3hCLFdBQVcsRUFBRSxTQUFTO1lBQ3RCLEtBQUs7WUFDTCxTQUFTO1lBQ1QsVUFBVSxFQUFFLFVBQVUsSUFBSSxXQUFXLENBQUMsSUFBSTtZQUMxQyxrQkFBa0IsRUFBRSxrQkFBa0IsSUFBSSxLQUFLO1NBQ2hELENBQUE7UUFFRCxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLElBQWdCLENBQUMsQ0FBQTtRQUV0RSxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDN0MsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBa0I7UUFDN0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBRWhELE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFFOUQsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUE7SUFDM0QsQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQVk7UUFDNUIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7UUFFNUIsSUFBSSxDQUFDLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRW5ELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3hELENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxRQUFnQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM5RCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxVQUFrQixFQUFFLFNBQWlCO1FBQ3BELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFBO1FBQ3RFLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUE7UUFFaEUsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ3BELE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUV6RCxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQTtRQUVwRixJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2YsUUFBUSxDQUFDLFFBQVEsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQTtZQUNyRCxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFBO1NBQ2hFO1FBRUQsT0FBTyxRQUFRLENBQUE7SUFDakIsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQUMsVUFBa0IsRUFBRSxTQUFpQjtRQUN2RCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQTtRQUN0RSxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFBO1FBRXZFLElBQUksWUFBWSxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ3RCLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUN6QyxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDcEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBRXpELE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxjQUFjLEVBQUUsWUFBWSxFQUFFLFdBQVcsQ0FBQyxDQUFBO1lBQ3ZGLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUE7U0FDbkU7UUFFRCxPQUFPLFFBQVEsQ0FBQTtJQUNqQixDQUFDO0lBRU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFVO1FBQy9CLE9BQU8sSUFBSSxDQUFDLGtCQUFrQjthQUMzQixJQUFJLENBQUM7WUFDSixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQztZQUNuRyxPQUFPLEVBQUU7Z0JBQ1AsRUFBRTthQUNIO1NBQ0YsQ0FBQzthQUNELElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRU8sS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUFVO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLHdCQUF3QjthQUNqQyxJQUFJLENBQUM7WUFDSixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDO1lBQzdDLE9BQU8sRUFBRTtnQkFDUCxFQUFFO2FBQ0g7U0FDRixDQUFDO2FBQ0QsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFTyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBcUIsRUFBRSxRQUFrQixFQUFFLE9BQWlCO1FBQzFGLFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxlQUFlLENBQUMsTUFBTSxDQUFDO1lBQzVCLEtBQUssZUFBZSxDQUFDLE1BQU0sQ0FBQztZQUM1QixLQUFLLGVBQWUsQ0FBQyxNQUFNO2dCQUN6QixNQUFNLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUE7Z0JBQ3JELE1BQUs7WUFFUCxLQUFLLGVBQWUsQ0FBQyxXQUFXLENBQUM7WUFDakMsS0FBSyxlQUFlLENBQUMsY0FBYztnQkFDakMsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQTtnQkFDNUQsTUFBSztZQUVQO2dCQUNFLE1BQUs7U0FDUjtJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsMEJBQTBCLENBQUMsSUFBcUIsRUFBRSxRQUFrQjtRQUNoRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsbUNBQW1DLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFaEUsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztZQUM5QixVQUFVLEVBQUUsVUFBVTtZQUN0QixJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDaEIsU0FBUztZQUNULFVBQVUsRUFBRSxRQUFRLENBQUMsRUFBRTtZQUN2QixRQUFRLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUM7U0FDeEQsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxJQUFxQixFQUFFLFFBQWtCLEVBQUUsT0FBZ0I7UUFDaEcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztZQUM5QixVQUFVLEVBQUUsVUFBVTtZQUN0QixJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDaEIsU0FBUyxFQUFFLFFBQVE7WUFDbkIsVUFBVSxFQUFFLFFBQVEsQ0FBQyxFQUFFO1lBQ3ZCLFFBQVEsRUFBRTtnQkFDUixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDO2dCQUNoRCxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUM7YUFDckM7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBRU8sbUNBQW1DLENBQUMsSUFBcUI7UUFDL0QsSUFBSSxJQUFJLEtBQUssZUFBZSxDQUFDLE1BQU07WUFBRSxPQUFPLFFBQVEsQ0FBQTtRQUVwRCxJQUFJLElBQUksS0FBSyxlQUFlLENBQUMsTUFBTTtZQUFFLE9BQU8sUUFBUSxDQUFBO1FBRXBELE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxRQUFrQixFQUFFLElBQXFCO1FBQ3hFLE9BQU87WUFDTCxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUU7WUFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUk7WUFDbkIsV0FBVyxFQUFFLFFBQVEsQ0FBQyxXQUFXO1lBQ2pDLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUztZQUM3QixJQUFJLEVBQUUsSUFBSTtZQUNWLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtZQUMvQixRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVE7WUFDM0IsVUFBVSxFQUFFLFFBQVEsQ0FBQyxVQUFVO1lBQy9CLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxrQkFBa0I7U0FDaEQsQ0FBQTtJQUNILENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxPQUFnQjtRQUMxQyxPQUFPO1lBQ0wsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFFO1lBQ3JCLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRztZQUN2QixVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUc7WUFDdkIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxJQUFJO1lBQ3pCLFlBQVksRUFBRSxPQUFPLENBQUMsS0FBSztTQUM1QixDQUFBO0lBQ0gsQ0FBQzs7NEdBclZVLGVBQWUsa0JBS2hCLG9CQUFvQixhQUNwQixtQkFBbUIsYUFDbkIsMEJBQTBCLGFBQzFCLGVBQWUsYUFDZixZQUFZO2dIQVRYLGVBQWU7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVTs7MEJBTU4sTUFBTTsyQkFBQyxvQkFBb0I7OzBCQUMzQixNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQzFCLE1BQU07MkJBQUMsMEJBQTBCOzswQkFDakMsTUFBTTsyQkFBQyxlQUFlOzswQkFDdEIsTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHtcclxuICBMb2dSZXBvc2l0b3J5LFxyXG4gIFBlcnNvblR5cGUsXHJcbiAgUGVyc29uVHlwZXMsXHJcbiAgUHJvZHVjdCxcclxuICBQcm9kdWN0Q2F0YWxvZ1JlcG9zaXRvcnksXHJcbiAgUHJvZHVjdFJlcG9zaXRvcnksXHJcbiAgU2hvcHMsXHJcbiAgV2lzaGxpc3QsXHJcbiAgV2lzaGxpc3RMb2dUeXBlLFxyXG4gIFdpc2hsaXN0UmVwb3NpdG9yeSxcclxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcclxuXHJcbmltcG9ydCB7IERFRkFVTFRfU0hPUCB9IGZyb20gJy4uLy4uL2NvbnN0cydcclxuXHJcbmltcG9ydCB7IENhdGFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9jYXRhbG9nLnNlcnZpY2UnXHJcbmltcG9ydCB7IENhdGVnb3J5U2VydmljZSB9IGZyb20gJy4vY2F0ZWdvcnkuc2VydmljZSdcclxuaW1wb3J0IHsgQ2F0YWxvZ1NlcnZpY2VGYWNhZGUsIENhdGVnb3J5U2VydmljZUZhY2FkZSB9IGZyb20gJy4vZmFjYWRlcydcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFdpc2hsaXN0U2VydmljZSB7XHJcbiAgcHJpdmF0ZSBjYXRhbG9nU2VydmljZTogQ2F0YWxvZ1NlcnZpY2VcclxuICBwcml2YXRlIGNhdGVnb3J5U2VydmljZTogQ2F0ZWdvcnlTZXJ2aWNlXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnV2lzaGxpc3RSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSB3aXNobGlzdFJlcG9zaXRvcnk6IFdpc2hsaXN0UmVwb3NpdG9yeSxcclxuICAgIEBJbmplY3QoJ1Byb2R1Y3RSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBwcm9kdWN0UmVwb3NpdG9yeTogUHJvZHVjdFJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KCdQcm9kdWN0Q2F0YWxvZ1JlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RDYXRhbG9nUmVwb3NpdG9yeTogUHJvZHVjdENhdGFsb2dSZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdCgnTG9nUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgbG9nUmVwb3NpdG9yeTogTG9nUmVwb3NpdG9yeSxcclxuICAgIEBJbmplY3QoREVGQVVMVF9TSE9QKSBwcml2YXRlIHJlYWRvbmx5IHNob3A6IFNob3BzLFxyXG4gICkge31cclxuXHJcbiAgaW5pdGlhbGl6ZVNlcnZpY2VzKGNhdGFsb2dTZXJ2aWNlRmFjYWRlOiBDYXRhbG9nU2VydmljZUZhY2FkZSwgY2F0ZWdvcnlTZXJ2aWNlRmFjYWRlOiBDYXRlZ29yeVNlcnZpY2VGYWNhZGUpOiB2b2lkIHtcclxuICAgIHRoaXMuY2F0YWxvZ1NlcnZpY2UgPSBjYXRhbG9nU2VydmljZUZhY2FkZS5nZXRDYXRhbG9nU2VydmljZSgpXHJcbiAgICB0aGlzLmNhdGVnb3J5U2VydmljZSA9IGNhdGVnb3J5U2VydmljZUZhY2FkZS5nZXRDYXRlZ29yeVNlcnZpY2UoKVxyXG4gIH1cclxuXHJcbiAgZ2V0Q2F0YWxvZ1NlcnZpY2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jYXRhbG9nU2VydmljZVxyXG4gIH1cclxuXHJcbiAgZ2V0Q2F0ZWdvcnlTZXJ2aWNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY2F0ZWdvcnlTZXJ2aWNlXHJcbiAgfVxyXG5cclxuICBhc3luYyBjcmVhdGUoe1xyXG4gICAgcGVyc29uSWQsXHJcbiAgICB0aXRsZSxcclxuICAgIGRlc2NyaXB0aW9uLFxyXG4gICAgcHVibGlzaGVkLFxyXG4gICAgdXNlckZ1bGxOYW1lLFxyXG4gICAgdXNlclBob3RvLFxyXG4gICAgdGhlbWUsXHJcbiAgICBiYW5uZXJVcmwsXHJcbiAgICBwZXJzb25UeXBlLFxyXG4gICAgcGVyc29uSXNTdWJzY3JpYmVyLFxyXG4gIH06IHtcclxuICAgIHBlcnNvbklkOiBzdHJpbmdcclxuICAgIHRpdGxlOiBzdHJpbmdcclxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmdcclxuICAgIHB1Ymxpc2hlZDogYm9vbGVhblxyXG4gICAgdXNlckZ1bGxOYW1lOiBzdHJpbmdcclxuICAgIHVzZXJQaG90bz86IHN0cmluZ1xyXG4gICAgdGhlbWU/OiBzdHJpbmdcclxuICAgIGJhbm5lclVybD86IHN0cmluZ1xyXG4gICAgcGVyc29uVHlwZT86IFBlcnNvblR5cGVcclxuICAgIHBlcnNvbklzU3Vic2NyaWJlcj86IGJvb2xlYW5cclxuICB9KTogUHJvbWlzZTxXaXNobGlzdD4ge1xyXG4gICAgY29uc3Qgd2lzaGxpc3REYXRhID0gdGhpcy5idWlsZFdpc2hsaXN0RGF0YSh7XHJcbiAgICAgIHRpdGxlLFxyXG4gICAgICBkZXNjcmlwdGlvbixcclxuICAgICAgcHVibGlzaGVkLFxyXG4gICAgICB1c2VyRnVsbE5hbWUsXHJcbiAgICAgIHVzZXJQaG90byxcclxuICAgICAgdGhlbWUsXHJcbiAgICAgIGJhbm5lclVybCxcclxuICAgICAgcGVyc29uVHlwZSxcclxuICAgICAgcGVyc29uSXNTdWJzY3JpYmVyLFxyXG4gICAgICBwZXJzb25JZCxcclxuICAgIH0pXHJcblxyXG4gICAgY29uc3QgZXhpc3RpbmdXaXNobGlzdCA9IGF3YWl0IHRoaXMuZmluZEV4aXN0aW5nV2lzaGxpc3RCeVBlcnNvbklkKHBlcnNvbklkKVxyXG5cclxuICAgIGF3YWl0IHRoaXMuY3JlYXRlV2lzaGxpc3RMb2coV2lzaGxpc3RMb2dUeXBlLkNSRUFURSwgd2lzaGxpc3REYXRhIGFzIFdpc2hsaXN0KVxyXG5cclxuICAgIGlmIChleGlzdGluZ1dpc2hsaXN0KSByZXR1cm4gZXhpc3RpbmdXaXNobGlzdFxyXG5cclxuICAgIHJldHVybiB0aGlzLmNyZWF0ZU5ld1dpc2hsaXN0KHdpc2hsaXN0RGF0YSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRXaXNobGlzdERhdGEoe1xyXG4gICAgdGl0bGUsXHJcbiAgICBkZXNjcmlwdGlvbixcclxuICAgIHB1Ymxpc2hlZCxcclxuICAgIHVzZXJGdWxsTmFtZSxcclxuICAgIHVzZXJQaG90byxcclxuICAgIHRoZW1lLFxyXG4gICAgYmFubmVyVXJsLFxyXG4gICAgcGVyc29uVHlwZSxcclxuICAgIHBlcnNvbklzU3Vic2NyaWJlcixcclxuICAgIHBlcnNvbklkLFxyXG4gIH06IHtcclxuICAgIHRpdGxlOiBzdHJpbmdcclxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmdcclxuICAgIHB1Ymxpc2hlZDogYm9vbGVhblxyXG4gICAgdXNlckZ1bGxOYW1lOiBzdHJpbmdcclxuICAgIHVzZXJQaG90bz86IHN0cmluZ1xyXG4gICAgdGhlbWU/OiBzdHJpbmdcclxuICAgIGJhbm5lclVybD86IHN0cmluZ1xyXG4gICAgcGVyc29uVHlwZT86IFBlcnNvblR5cGVcclxuICAgIHBlcnNvbklzU3Vic2NyaWJlcj86IGJvb2xlYW5cclxuICAgIHBlcnNvbklkOiBzdHJpbmdcclxuICB9KSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBzbHVnOiAnJyxcclxuICAgICAgbmFtZTogdGl0bGUsXHJcbiAgICAgIGRlc2NyaXB0aW9uLFxyXG4gICAgICBtZXRhZGF0YXM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBzaG9wOiB0aGlzLnNob3AsXHJcbiAgICAgICAgICB0aXRsZTogYCR7dXNlckZ1bGxOYW1lfSAtICR7dGl0bGV9YCxcclxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgJHt1c2VyRnVsbE5hbWV9IC0gJHtkZXNjcmlwdGlvbn1gLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICAgIHNob3A6IHRoaXMuc2hvcCxcclxuICAgICAgc2hvcHM6IFt0aGlzLnNob3BdLFxyXG4gICAgICBwZXJzb25JZCxcclxuICAgICAgcGVyc29uTmFtZTogdXNlckZ1bGxOYW1lLFxyXG4gICAgICBwZXJzb25QaG90bzogdXNlclBob3RvLFxyXG4gICAgICBicmFuZENhdGVnb3J5OiBmYWxzZSxcclxuICAgICAgcHVibGlzaGVkLFxyXG4gICAgICB0aGVtZSxcclxuICAgICAgYmFubmVyVXJsLFxyXG4gICAgICBwZXJzb25UeXBlOiBwZXJzb25UeXBlID8/IFBlcnNvblR5cGVzLk5PTkUsXHJcbiAgICAgIHBlcnNvbklzU3Vic2NyaWJlcjogcGVyc29uSXNTdWJzY3JpYmVyID8/IGZhbHNlLFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBmaW5kRXhpc3RpbmdXaXNobGlzdEJ5UGVyc29uSWQocGVyc29uSWQ6IHN0cmluZyk6IFByb21pc2U8V2lzaGxpc3QgfCBudWxsPiB7XHJcbiAgICBjb25zdCBoYXNXaXNobGlzdCA9IGF3YWl0IHRoaXMud2lzaGxpc3RSZXBvc2l0b3J5XHJcbiAgICAgIC5maW5kKHtcclxuICAgICAgICBmaWx0ZXJzOiB7XHJcbiAgICAgICAgICBwZXJzb25JZCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgIGVuYWJsZUNvdW50OiBmYWxzZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9yZGVyQnk6IHtcclxuICAgICAgICAgIGlkOiAnYXNjJyxcclxuICAgICAgICB9LFxyXG4gICAgICB9KVxyXG4gICAgICAudGhlbigocmVzKSA9PiByZXMuZGF0YSlcclxuXHJcbiAgICByZXR1cm4gaGFzV2lzaGxpc3QubGVuZ3RoID8gaGFzV2lzaGxpc3QuYXQoMCkgOiBudWxsXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZU5ld1dpc2hsaXN0KGRhdGE6IGFueSk6IFByb21pc2U8V2lzaGxpc3Q+IHtcclxuICAgIGNvbnN0IG5ld1dpc2hsaXN0ID0gYXdhaXQgdGhpcy53aXNobGlzdFJlcG9zaXRvcnkuY3JlYXRlKGRhdGEpXHJcblxyXG4gICAgYXdhaXQgdGhpcy53aXNobGlzdFJlcG9zaXRvcnkudXBkYXRlKHsgaWQ6IG5ld1dpc2hsaXN0LmlkLCBzbHVnOiBuZXdXaXNobGlzdC5pZCB9KVxyXG5cclxuICAgIHJldHVybiBXaXNobGlzdC50b0luc3RhbmNlKHsgLi4ubmV3V2lzaGxpc3QudG9QbGFpbigpLCBzbHVnOiBuZXdXaXNobGlzdC5pZCB9KVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlKHtcclxuICAgIGlkLFxyXG4gICAgdGl0bGUsXHJcbiAgICBkZXNjcmlwdGlvbixcclxuICAgIHB1Ymxpc2hlZCxcclxuICAgIHVzZXJGdWxsTmFtZSxcclxuICAgIHVzZXJQaG90byxcclxuICAgIHRoZW1lLFxyXG4gICAgYmFubmVyVXJsLFxyXG4gICAgcGVyc29uVHlwZSxcclxuICAgIHBlcnNvbklzU3Vic2NyaWJlcixcclxuICB9OiB7XHJcbiAgICBpZDogc3RyaW5nXHJcbiAgICB0aXRsZTogc3RyaW5nXHJcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nXHJcbiAgICBwdWJsaXNoZWQ6IGJvb2xlYW5cclxuICAgIHVzZXJGdWxsTmFtZTogc3RyaW5nXHJcbiAgICB1c2VyUGhvdG8/OiBzdHJpbmdcclxuICAgIHRoZW1lPzogc3RyaW5nXHJcbiAgICBiYW5uZXJVcmw/OiBzdHJpbmdcclxuICAgIHBlcnNvblR5cGU/OiBQZXJzb25UeXBlXHJcbiAgICBwZXJzb25Jc1N1YnNjcmliZXI/OiBib29sZWFuXHJcbiAgfSk6IFByb21pc2U8V2lzaGxpc3Q+IHtcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIGlkLFxyXG4gICAgICBuYW1lOiB0aXRsZSxcclxuICAgICAgZGVzY3JpcHRpb24sXHJcbiAgICAgIHB1Ymxpc2hlZCxcclxuICAgICAgbWV0YWRhdGFzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgc2hvcDogdGhpcy5zaG9wLFxyXG4gICAgICAgICAgdGl0bGU6IGAke3VzZXJGdWxsTmFtZX0gLSAke3RpdGxlfWAsXHJcbiAgICAgICAgICBkZXNjcmlwdGlvbjogYCR7dXNlckZ1bGxOYW1lfSAtICR7ZGVzY3JpcHRpb259YCxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgICBwZXJzb25OYW1lOiB1c2VyRnVsbE5hbWUsXHJcbiAgICAgIHBlcnNvblBob3RvOiB1c2VyUGhvdG8sXHJcbiAgICAgIHRoZW1lLFxyXG4gICAgICBiYW5uZXJVcmwsXHJcbiAgICAgIHBlcnNvblR5cGU6IHBlcnNvblR5cGUgPz8gUGVyc29uVHlwZXMuTk9ORSxcclxuICAgICAgcGVyc29uSXNTdWJzY3JpYmVyOiBwZXJzb25Jc1N1YnNjcmliZXIgPz8gZmFsc2UsXHJcbiAgICB9XHJcblxyXG4gICAgYXdhaXQgdGhpcy5jcmVhdGVXaXNobGlzdExvZyhXaXNobGlzdExvZ1R5cGUuVVBEQVRFLCBkYXRhIGFzIFdpc2hsaXN0KVxyXG5cclxuICAgIHJldHVybiB0aGlzLndpc2hsaXN0UmVwb3NpdG9yeS51cGRhdGUoZGF0YSlcclxuICB9XHJcblxyXG4gIGFzeW5jIGRlbGV0ZSh3aXNobGlzdElkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHdpc2hsaXN0ID0gYXdhaXQgdGhpcy5maW5kQnlJZCh3aXNobGlzdElkKVxyXG5cclxuICAgIGF3YWl0IHRoaXMuY3JlYXRlV2lzaGxpc3RMb2coV2lzaGxpc3RMb2dUeXBlLkRFTEVURSwgd2lzaGxpc3QpXHJcblxyXG4gICAgcmV0dXJuIHRoaXMud2lzaGxpc3RSZXBvc2l0b3J5LmRlbGV0ZSh7IGlkOiB3aXNobGlzdElkIH0pXHJcbiAgfVxyXG5cclxuICBnZXRXaXNobGlzdEJ5U2x1ZyhzbHVnOiBzdHJpbmcpOiBQcm9taXNlPFdpc2hsaXN0PiB7XHJcbiAgICBjb25zdCBbaWRdID0gc2x1Zy5zcGxpdCgnLScpXHJcblxyXG4gICAgaWYgKCtpZCkgcmV0dXJuIHRoaXMud2lzaGxpc3RSZXBvc2l0b3J5LmdldCh7IGlkIH0pXHJcblxyXG4gICAgcmV0dXJuIHRoaXMud2lzaGxpc3RSZXBvc2l0b3J5LmdldFdpc2hsaXN0QnlTbHVnKHNsdWcpXHJcbiAgfVxyXG5cclxuICBnZXRXaXNobGlzdHNCeVBlcnNvbihwZXJzb25JZDogc3RyaW5nKTogUHJvbWlzZTxXaXNobGlzdFtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy53aXNobGlzdFJlcG9zaXRvcnkuZ2V0V2lzaGxpc3RCeVBlcnNvbihwZXJzb25JZClcclxuICB9XHJcblxyXG4gIGFzeW5jIGFkZFByb2R1Y3Qod2lzaGxpc3RJZDogc3RyaW5nLCBwcm9kdWN0SWQ6IHN0cmluZyk6IFByb21pc2U8V2lzaGxpc3Q+IHtcclxuICAgIGNvbnN0IHdpc2hsaXN0ID0gYXdhaXQgdGhpcy53aXNobGlzdFJlcG9zaXRvcnkuZ2V0KHsgaWQ6IHdpc2hsaXN0SWQgfSlcclxuICAgIGNvbnN0IGhhc1Byb2R1Y3QgPSB3aXNobGlzdC5wcm9kdWN0cy5zb21lKChwKSA9PiBwID09IHByb2R1Y3RJZClcclxuXHJcbiAgICBjb25zdCB3aXNobGlzdERhdGEgPSBhd2FpdCB0aGlzLmZpbmRCeUlkKHdpc2hsaXN0SWQpXHJcbiAgICBjb25zdCBwcm9kdWN0RGF0YSA9IGF3YWl0IHRoaXMuZmluZFByb2R1Y3RCeUlkKHByb2R1Y3RJZClcclxuXHJcbiAgICBhd2FpdCB0aGlzLmNyZWF0ZVdpc2hsaXN0TG9nKFdpc2hsaXN0TG9nVHlwZS5BRERfUFJPRFVDVCwgd2lzaGxpc3REYXRhLCBwcm9kdWN0RGF0YSlcclxuXHJcbiAgICBpZiAoIWhhc1Byb2R1Y3QpIHtcclxuICAgICAgd2lzaGxpc3QucHJvZHVjdHMgPSBbLi4ud2lzaGxpc3QucHJvZHVjdHMsIHByb2R1Y3RJZF1cclxuICAgICAgYXdhaXQgdGhpcy53aXNobGlzdFJlcG9zaXRvcnkuYWRkUHJvZHVjdCh3aXNobGlzdElkLCBwcm9kdWN0SWQpXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHdpc2hsaXN0XHJcbiAgfVxyXG5cclxuICBhc3luYyByZW1vdmVQcm9kdWN0KHdpc2hsaXN0SWQ6IHN0cmluZywgcHJvZHVjdElkOiBzdHJpbmcpOiBQcm9taXNlPFdpc2hsaXN0PiB7XHJcbiAgICBjb25zdCB3aXNobGlzdCA9IGF3YWl0IHRoaXMud2lzaGxpc3RSZXBvc2l0b3J5LmdldCh7IGlkOiB3aXNobGlzdElkIH0pXHJcbiAgICBjb25zdCBwcm9kdWN0SW5kZXggPSB3aXNobGlzdC5wcm9kdWN0cy5maW5kSW5kZXgoKHApID0+IHAgPT0gcHJvZHVjdElkKVxyXG5cclxuICAgIGlmIChwcm9kdWN0SW5kZXggIT0gLTEpIHtcclxuICAgICAgd2lzaGxpc3QucHJvZHVjdHMuc3BsaWNlKHByb2R1Y3RJbmRleCwgMSlcclxuICAgICAgY29uc3Qgd2lzaGxpc3REYXRhID0gYXdhaXQgdGhpcy5maW5kQnlJZCh3aXNobGlzdElkKVxyXG4gICAgICBjb25zdCBwcm9kdWN0RGF0YSA9IGF3YWl0IHRoaXMuZmluZFByb2R1Y3RCeUlkKHByb2R1Y3RJZClcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMuY3JlYXRlV2lzaGxpc3RMb2coV2lzaGxpc3RMb2dUeXBlLlJFTU9WRV9QUk9EVUNULCB3aXNobGlzdERhdGEsIHByb2R1Y3REYXRhKVxyXG4gICAgICBhd2FpdCB0aGlzLndpc2hsaXN0UmVwb3NpdG9yeS5yZW1vdmVQcm9kdWN0KHdpc2hsaXN0SWQsIHByb2R1Y3RJZClcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gd2lzaGxpc3RcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZmluZEJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8V2lzaGxpc3Q+IHtcclxuICAgIHJldHVybiB0aGlzLndpc2hsaXN0UmVwb3NpdG9yeVxyXG4gICAgICAuZmluZCh7XHJcbiAgICAgICAgZmllbGRzOiBbJ2lkJywgJ25hbWUnLCAnZGVzY3JpcHRpb24nLCAncGVyc29uSWQnLCAncGVyc29uSXNTdWJzY3JpYmVyJywgJ3BlcnNvblR5cGUnLCAncGVyc29uTmFtZSddLFxyXG4gICAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICAgIGlkLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICAgIC50aGVuKChyZXMpID0+IHJlcy5kYXRhLmF0KDApKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBmaW5kUHJvZHVjdEJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8UHJvZHVjdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdENhdGFsb2dSZXBvc2l0b3J5XHJcbiAgICAgIC5maW5kKHtcclxuICAgICAgICBmaWVsZHM6IFsnaWQnLCAnc2t1JywgJ0VBTicsICduYW1lJywgJ2JyYW5kJ10sXHJcbiAgICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgICAgaWQsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgICAgLnRoZW4oKHJlcykgPT4gcmVzLmRhdGEuYXQoMCkpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZVdpc2hsaXN0TG9nKHR5cGU6IFdpc2hsaXN0TG9nVHlwZSwgd2lzaGxpc3Q6IFdpc2hsaXN0LCBwcm9kdWN0PzogUHJvZHVjdCkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgV2lzaGxpc3RMb2dUeXBlLkNSRUFURTpcclxuICAgICAgY2FzZSBXaXNobGlzdExvZ1R5cGUuVVBEQVRFOlxyXG4gICAgICBjYXNlIFdpc2hsaXN0TG9nVHlwZS5ERUxFVEU6XHJcbiAgICAgICAgYXdhaXQgdGhpcy5jcmVhdGVXaXNobGlzdE9wZXJhdGlvbkxvZyh0eXBlLCB3aXNobGlzdClcclxuICAgICAgICBicmVha1xyXG5cclxuICAgICAgY2FzZSBXaXNobGlzdExvZ1R5cGUuQUREX1BST0RVQ1Q6XHJcbiAgICAgIGNhc2UgV2lzaGxpc3RMb2dUeXBlLlJFTU9WRV9QUk9EVUNUOlxyXG4gICAgICAgIGF3YWl0IHRoaXMuY3JlYXRlV2lzaGxpc3RQcm9kdWN0TG9nKHR5cGUsIHdpc2hsaXN0LCBwcm9kdWN0KVxyXG4gICAgICAgIGJyZWFrXHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZVdpc2hsaXN0T3BlcmF0aW9uTG9nKHR5cGU6IFdpc2hsaXN0TG9nVHlwZSwgd2lzaGxpc3Q6IFdpc2hsaXN0KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBvcGVyYXRpb24gPSB0aGlzLmdldE9wZXJhdGlvblR5cGVGcm9tV2lzaGxpc3RMb2dUeXBlKHR5cGUpXHJcblxyXG4gICAgYXdhaXQgdGhpcy5sb2dSZXBvc2l0b3J5LmNyZWF0ZSh7XHJcbiAgICAgIGNvbGxlY3Rpb246ICd3aXNobGlzdCcsXHJcbiAgICAgIGRhdGU6IG5ldyBEYXRlKCksXHJcbiAgICAgIG9wZXJhdGlvbixcclxuICAgICAgZG9jdW1lbnRJZDogd2lzaGxpc3QuaWQsXHJcbiAgICAgIGRvY3VtZW50OiB0aGlzLmJ1aWxkV2lzaGxpc3RMb2dEb2N1bWVudCh3aXNobGlzdCwgdHlwZSksXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVXaXNobGlzdFByb2R1Y3RMb2codHlwZTogV2lzaGxpc3RMb2dUeXBlLCB3aXNobGlzdDogV2lzaGxpc3QsIHByb2R1Y3Q6IFByb2R1Y3QpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMubG9nUmVwb3NpdG9yeS5jcmVhdGUoe1xyXG4gICAgICBjb2xsZWN0aW9uOiAnd2lzaGxpc3QnLFxyXG4gICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxyXG4gICAgICBvcGVyYXRpb246ICdVUERBVEUnLFxyXG4gICAgICBkb2N1bWVudElkOiB3aXNobGlzdC5pZCxcclxuICAgICAgZG9jdW1lbnQ6IHtcclxuICAgICAgICAuLi50aGlzLmJ1aWxkV2lzaGxpc3RMb2dEb2N1bWVudCh3aXNobGlzdCwgdHlwZSksXHJcbiAgICAgICAgLi4udGhpcy5idWlsZFByb2R1Y3RMb2dEYXRhKHByb2R1Y3QpLFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0T3BlcmF0aW9uVHlwZUZyb21XaXNobGlzdExvZ1R5cGUodHlwZTogV2lzaGxpc3RMb2dUeXBlKTogJ0NSRUFURScgfCAnVVBEQVRFJyB8ICdERUxFVEUnIHtcclxuICAgIGlmICh0eXBlID09PSBXaXNobGlzdExvZ1R5cGUuQ1JFQVRFKSByZXR1cm4gJ0NSRUFURSdcclxuXHJcbiAgICBpZiAodHlwZSA9PT0gV2lzaGxpc3RMb2dUeXBlLlVQREFURSkgcmV0dXJuICdVUERBVEUnXHJcblxyXG4gICAgcmV0dXJuICdERUxFVEUnXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkV2lzaGxpc3RMb2dEb2N1bWVudCh3aXNobGlzdDogV2lzaGxpc3QsIHR5cGU6IFdpc2hsaXN0TG9nVHlwZSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaWQ6IHdpc2hsaXN0LmlkLFxyXG4gICAgICBzaG9wOiB0aGlzLnNob3AsXHJcbiAgICAgIG5hbWU6IHdpc2hsaXN0Lm5hbWUsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiB3aXNobGlzdC5kZXNjcmlwdGlvbixcclxuICAgICAgcHVibGlzaGVkOiB3aXNobGlzdC5wdWJsaXNoZWQsXHJcbiAgICAgIHR5cGU6IHR5cGUsXHJcbiAgICAgIHBlcnNvblR5cGU6IHdpc2hsaXN0LnBlcnNvblR5cGUsXHJcbiAgICAgIHBlcnNvbklkOiB3aXNobGlzdC5wZXJzb25JZCxcclxuICAgICAgcGVyc29uTmFtZTogd2lzaGxpc3QucGVyc29uTmFtZSxcclxuICAgICAgcGVyc29uSXNTdWJzY3JpYmVyOiB3aXNobGlzdC5wZXJzb25Jc1N1YnNjcmliZXIsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkUHJvZHVjdExvZ0RhdGEocHJvZHVjdDogUHJvZHVjdCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcHJvZHVjdElkOiBwcm9kdWN0LmlkLFxyXG4gICAgICBwcm9kdWN0RUFOOiBwcm9kdWN0LkVBTixcclxuICAgICAgcHJvZHVjdFNLVTogcHJvZHVjdC5za3UsXHJcbiAgICAgIHByb2R1Y3ROYW1lOiBwcm9kdWN0Lm5hbWUsXHJcbiAgICAgIHByb2R1Y3RCcmFuZDogcHJvZHVjdC5icmFuZCxcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -1,20 +0,0 @@
1
- import { HttpClient } from '@angular/common/http';
2
- import { Inject, Injectable } from '@angular/core';
3
- import { PERSISTENCE_PROVIDER } from '../../consts';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common/http";
6
- export class CheckoutDependenciesFacade {
7
- constructor(dataPersistence, httpClient) {
8
- this.dataPersistence = dataPersistence;
9
- this.httpClient = httpClient;
10
- }
11
- }
12
- CheckoutDependenciesFacade.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutDependenciesFacade, deps: [{ token: PERSISTENCE_PROVIDER }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
13
- CheckoutDependenciesFacade.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutDependenciesFacade });
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutDependenciesFacade, decorators: [{
15
- type: Injectable
16
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
17
- type: Inject,
18
- args: [PERSISTENCE_PROVIDER]
19
- }] }, { type: i1.HttpClient }]; } });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtZGVwZW5kZW5jaWVzLmZhY2FkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2hlY2tvdXQvY2hlY2tvdXQtZGVwZW5kZW5jaWVzLmZhY2FkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFBOzs7QUFJbkQsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUNnRCxlQUFnQyxFQUM5RCxVQUFzQjtRQURRLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUM5RCxlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQ3JDLENBQUM7O3VIQUpPLDBCQUEwQixrQkFFM0Isb0JBQW9COzJIQUZuQiwwQkFBMEI7MkZBQTFCLDBCQUEwQjtrQkFEdEMsVUFBVTs7MEJBR04sTUFBTTsyQkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcblxyXG5pbXBvcnQgeyBQRVJTSVNURU5DRV9QUk9WSURFUiB9IGZyb20gJy4uLy4uL2NvbnN0cydcclxuaW1wb3J0IHsgRGF0YVBlcnNpc3RlbmNlIH0gZnJvbSAnLi4vLi4vcGVyc2lzdGVuY2UnXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDaGVja291dERlcGVuZGVuY2llc0ZhY2FkZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KFBFUlNJU1RFTkNFX1BST1ZJREVSKSBwdWJsaWMgcmVhZG9ubHkgZGF0YVBlcnNpc3RlbmNlOiBEYXRhUGVyc2lzdGVuY2UsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuICApIHt9XHJcbn1cclxuIl19
@@ -1,20 +0,0 @@
1
- import { Inject, Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class CheckoutRepositoriesFacade {
4
- constructor(checkoutRepository, userRepository) {
5
- this.checkoutRepository = checkoutRepository;
6
- this.userRepository = userRepository;
7
- }
8
- }
9
- CheckoutRepositoriesFacade.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutRepositoriesFacade, deps: [{ token: 'CheckoutRepository' }, { token: 'UserRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
10
- CheckoutRepositoriesFacade.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutRepositoriesFacade });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutRepositoriesFacade, decorators: [{
12
- type: Injectable
13
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
14
- type: Inject,
15
- args: ['CheckoutRepository']
16
- }] }, { type: undefined, decorators: [{
17
- type: Inject,
18
- args: ['UserRepository']
19
- }] }]; } });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtcmVwb3NpdG9yaWVzLmZhY2FkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2hlY2tvdXQvY2hlY2tvdXQtcmVwb3NpdG9yaWVzLmZhY2FkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTs7QUFJbEQsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUNnRCxrQkFBc0MsRUFDMUMsY0FBOEI7UUFEMUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUMxQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFDdkUsQ0FBQzs7dUhBSk8sMEJBQTBCLGtCQUUzQixvQkFBb0IsYUFDcEIsZ0JBQWdCOzJIQUhmLDBCQUEwQjsyRkFBMUIsMEJBQTBCO2tCQUR0QyxVQUFVOzswQkFHTixNQUFNOzJCQUFDLG9CQUFvQjs7MEJBQzNCLE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgQ2hlY2tvdXRSZXBvc2l0b3J5LCBVc2VyUmVwb3NpdG9yeSB9IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ2hlY2tvdXRSZXBvc2l0b3JpZXNGYWNhZGUge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnQ2hlY2tvdXRSZXBvc2l0b3J5JykgcHVibGljIHJlYWRvbmx5IGNoZWNrb3V0UmVwb3NpdG9yeTogQ2hlY2tvdXRSZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdCgnVXNlclJlcG9zaXRvcnknKSBwdWJsaWMgcmVhZG9ubHkgdXNlclJlcG9zaXRvcnk6IFVzZXJSZXBvc2l0b3J5LFxyXG4gICkge31cclxufVxyXG4iXX0=
@@ -1,3 +0,0 @@
1
- export { CheckoutRepositoriesFacade } from './checkout-repositories.facade';
2
- export { CheckoutDependenciesFacade } from './checkout-dependencies.facade';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NoZWNrb3V0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBQzNFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQ2hlY2tvdXRSZXBvc2l0b3JpZXNGYWNhZGUgfSBmcm9tICcuL2NoZWNrb3V0LXJlcG9zaXRvcmllcy5mYWNhZGUnXHJcbmV4cG9ydCB7IENoZWNrb3V0RGVwZW5kZW5jaWVzRmFjYWRlIH0gZnJvbSAnLi9jaGVja291dC1kZXBlbmRlbmNpZXMuZmFjYWRlJ1xyXG4iXX0=
@@ -1,55 +0,0 @@
1
- import { Inject, Injectable } from '@angular/core';
2
- import { CheckoutSubscription, CheckoutTypes, isNil, pick, } from '@infrab4a/connect';
3
- import { concatMap } from 'rxjs/operators';
4
- import { PERSISTENCE_PROVIDER } from '../consts';
5
- import { CouponService } from './coupon.service';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "./coupon.service";
8
- export class CheckoutSubscriptionService {
9
- constructor(checkoutSubscriptionRepository, dataPersistence, couponService) {
10
- this.checkoutSubscriptionRepository = checkoutSubscriptionRepository;
11
- this.dataPersistence = dataPersistence;
12
- this.couponService = couponService;
13
- }
14
- getCheckoutSubscription(checkoutData) {
15
- return this.dataPersistence
16
- .get('checkoutSubscriptionId')
17
- .pipe(concatMap((id) => !isNil(id) ? this.checkoutSubscriptionRepository.get({ id }) : this.createCheckoutSubscription(checkoutData)));
18
- }
19
- clearCheckoutSubscriptionFromSession() {
20
- return this.dataPersistence.remove('checkoutSubscriptionId');
21
- }
22
- checkCoupon(nickname, _userEmail) {
23
- return this.getCheckoutSubscription().pipe(concatMap((checkout) => this.couponService
24
- .checkCoupon({
25
- nickname,
26
- checkoutType: CheckoutTypes.SUBSCRIPTION,
27
- checkout,
28
- plan: checkout.subscriptionPlan.name,
29
- })
30
- .pipe()));
31
- }
32
- calcDiscountSubscription(coupon) {
33
- return this.getCheckoutSubscription().pipe(concatMap((checkout) => this.couponService.calcDiscountSubscription(coupon, checkout).pipe()));
34
- }
35
- async createCheckoutSubscription(checkoutData) {
36
- const checkout = await this.checkoutSubscriptionRepository.create({
37
- createdAt: new Date(),
38
- ...CheckoutSubscription.toInstance(pick(checkoutData, ['user', 'shop'])).toPlain(),
39
- });
40
- await this.dataPersistence.set('checkoutSubscriptionId', checkout.id).toPromise();
41
- return checkout;
42
- }
43
- }
44
- CheckoutSubscriptionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutSubscriptionService, deps: [{ token: 'CheckoutSubscriptionRepository' }, { token: PERSISTENCE_PROVIDER }, { token: i1.CouponService }], target: i0.ɵɵFactoryTarget.Injectable });
45
- CheckoutSubscriptionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutSubscriptionService });
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutSubscriptionService, decorators: [{
47
- type: Injectable
48
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
49
- type: Inject,
50
- args: ['CheckoutSubscriptionRepository']
51
- }] }, { type: undefined, decorators: [{
52
- type: Inject,
53
- args: [PERSISTENCE_PROVIDER]
54
- }] }, { type: i1.CouponService }]; } });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtc3Vic2NyaXB0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NoZWNrb3V0LXN1YnNjcmlwdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFDTCxvQkFBb0IsRUFFcEIsYUFBYSxFQUViLEtBQUssRUFDTCxJQUFJLEdBQ0wsTUFBTSxtQkFBbUIsQ0FBQTtBQUUxQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHMUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sV0FBVyxDQUFBO0FBSWhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTs7O0FBR2hELE1BQU0sT0FBTywyQkFBMkI7SUFDdEMsWUFFbUIsOEJBQThELEVBQ2hDLGVBQWdDLEVBQzlELGFBQTRCO1FBRjVCLG1DQUE4QixHQUE5Qiw4QkFBOEIsQ0FBZ0M7UUFDaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQzlELGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQzVDLENBQUM7SUFFSix1QkFBdUIsQ0FBQyxZQUErQztRQUNyRSxPQUFPLElBQUksQ0FBQyxlQUFlO2FBQ3hCLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQzthQUM3QixJQUFJLENBQ0gsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FDZixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxZQUFZLENBQUMsQ0FDN0csQ0FDRixDQUFBO0lBQ0wsQ0FBQztJQUVELG9DQUFvQztRQUNsQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUE7SUFDOUQsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFnQixFQUFFLFVBQWtCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsSUFBSSxDQUN4QyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUNyQixJQUFJLENBQUMsYUFBYTthQUNmLFdBQVcsQ0FBQztZQUNYLFFBQVE7WUFDUixZQUFZLEVBQUUsYUFBYSxDQUFDLFlBQVk7WUFDeEMsUUFBUTtZQUNSLElBQUksRUFBRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSTtTQUNyQyxDQUFDO2FBQ0QsSUFBSSxFQUFFLENBQ1YsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVELHdCQUF3QixDQUFDLE1BQWM7UUFDckMsT0FBTyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxJQUFJLENBQ3hDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FDOUYsQ0FBQTtJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsMEJBQTBCLENBQ3RDLFlBQStDO1FBRS9DLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLDhCQUE4QixDQUFDLE1BQU0sQ0FBQztZQUNoRSxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDckIsR0FBRyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO1NBQ25GLENBQUMsQ0FBQTtRQUVGLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFBO1FBRWpGLE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7O3dIQXREVSwyQkFBMkIsa0JBRTVCLGdDQUFnQyxhQUVoQyxvQkFBb0I7NEhBSm5CLDJCQUEyQjsyRkFBM0IsMkJBQTJCO2tCQUR2QyxVQUFVOzswQkFHTixNQUFNOzJCQUFDLGdDQUFnQzs7MEJBRXZDLE1BQU07MkJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHtcclxuICBDaGVja291dFN1YnNjcmlwdGlvbixcclxuICBDaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnksXHJcbiAgQ2hlY2tvdXRUeXBlcyxcclxuICBDb3Vwb24sXHJcbiAgaXNOaWwsXHJcbiAgcGljayxcclxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IGNvbmNhdE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xyXG5cclxuXHJcbmltcG9ydCB7IFBFUlNJU1RFTkNFX1BST1ZJREVSIH0gZnJvbSAnLi4vY29uc3RzJ1xyXG5pbXBvcnQgeyBEYXRhUGVyc2lzdGVuY2UgfSBmcm9tICcuLi9wZXJzaXN0ZW5jZSdcclxuXHJcbmltcG9ydCB7IFJlcXVpcmVkQ2hlY2tvdXRTdWJzY3JpcHRpb25EYXRhIH0gZnJvbSAnLi90eXBlcydcclxuaW1wb3J0IHsgQ291cG9uU2VydmljZSB9IGZyb20gJy4vY291cG9uLnNlcnZpY2UnXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDaGVja291dFN1YnNjcmlwdGlvblNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnQ2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5JylcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5OiBDaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KFBFUlNJU1RFTkNFX1BST1ZJREVSKSBwcml2YXRlIHJlYWRvbmx5IGRhdGFQZXJzaXN0ZW5jZTogRGF0YVBlcnNpc3RlbmNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3Vwb25TZXJ2aWNlOiBDb3Vwb25TZXJ2aWNlLFxyXG4gICkge31cclxuXHJcbiAgZ2V0Q2hlY2tvdXRTdWJzY3JpcHRpb24oY2hlY2tvdXREYXRhPzogUmVxdWlyZWRDaGVja291dFN1YnNjcmlwdGlvbkRhdGEpOiBPYnNlcnZhYmxlPENoZWNrb3V0U3Vic2NyaXB0aW9uPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhUGVyc2lzdGVuY2VcclxuICAgICAgLmdldCgnY2hlY2tvdXRTdWJzY3JpcHRpb25JZCcpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGNvbmNhdE1hcCgoaWQpID0+XHJcbiAgICAgICAgICAhaXNOaWwoaWQpID8gdGhpcy5jaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnkuZ2V0KHsgaWQgfSkgOiB0aGlzLmNyZWF0ZUNoZWNrb3V0U3Vic2NyaXB0aW9uKGNoZWNrb3V0RGF0YSksXHJcbiAgICAgICAgKSxcclxuICAgICAgKVxyXG4gIH1cclxuXHJcbiAgY2xlYXJDaGVja291dFN1YnNjcmlwdGlvbkZyb21TZXNzaW9uKCk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVBlcnNpc3RlbmNlLnJlbW92ZSgnY2hlY2tvdXRTdWJzY3JpcHRpb25JZCcpXHJcbiAgfVxyXG5cclxuICBjaGVja0NvdXBvbihuaWNrbmFtZTogc3RyaW5nLCBfdXNlckVtYWlsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENvdXBvbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2hlY2tvdXRTdWJzY3JpcHRpb24oKS5waXBlKFxyXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PlxyXG4gICAgICAgIHRoaXMuY291cG9uU2VydmljZVxyXG4gICAgICAgICAgLmNoZWNrQ291cG9uKHtcclxuICAgICAgICAgICAgbmlja25hbWUsXHJcbiAgICAgICAgICAgIGNoZWNrb3V0VHlwZTogQ2hlY2tvdXRUeXBlcy5TVUJTQ1JJUFRJT04sXHJcbiAgICAgICAgICAgIGNoZWNrb3V0LFxyXG4gICAgICAgICAgICBwbGFuOiBjaGVja291dC5zdWJzY3JpcHRpb25QbGFuLm5hbWUsXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLnBpcGUoKSxcclxuICAgICAgKSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIGNhbGNEaXNjb3VudFN1YnNjcmlwdGlvbihjb3Vwb246IENvdXBvbikge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2hlY2tvdXRTdWJzY3JpcHRpb24oKS5waXBlKFxyXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PiB0aGlzLmNvdXBvblNlcnZpY2UuY2FsY0Rpc2NvdW50U3Vic2NyaXB0aW9uKGNvdXBvbiwgY2hlY2tvdXQpLnBpcGUoKSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZUNoZWNrb3V0U3Vic2NyaXB0aW9uKFxyXG4gICAgY2hlY2tvdXREYXRhPzogUmVxdWlyZWRDaGVja291dFN1YnNjcmlwdGlvbkRhdGEsXHJcbiAgKTogUHJvbWlzZTxDaGVja291dFN1YnNjcmlwdGlvbj4ge1xyXG4gICAgY29uc3QgY2hlY2tvdXQgPSBhd2FpdCB0aGlzLmNoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeS5jcmVhdGUoe1xyXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCksXHJcbiAgICAgIC4uLkNoZWNrb3V0U3Vic2NyaXB0aW9uLnRvSW5zdGFuY2UocGljayhjaGVja291dERhdGEsIFsndXNlcicsICdzaG9wJ10pKS50b1BsYWluKCksXHJcbiAgICB9KVxyXG5cclxuICAgIGF3YWl0IHRoaXMuZGF0YVBlcnNpc3RlbmNlLnNldCgnY2hlY2tvdXRTdWJzY3JpcHRpb25JZCcsIGNoZWNrb3V0LmlkKS50b1Byb21pc2UoKVxyXG5cclxuICAgIHJldHVybiBjaGVja291dFxyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,106 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { Checkout, isNil, NotFoundError, pick, } from '@infrab4a/connect';
3
- import { from, of, throwError } from 'rxjs';
4
- import { concatMap, map } from 'rxjs/operators';
5
- import { CheckoutDependenciesFacade, CheckoutRepositoriesFacade } from './checkout';
6
- import { ConfigurationFacade } from './shared';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "./checkout";
9
- import * as i2 from "./shared";
10
- export class CheckoutService {
11
- constructor(repositoriesFacade, dependenciesFacade, configurationFacade) {
12
- this.repositoriesFacade = repositoriesFacade;
13
- this.dependenciesFacade = dependenciesFacade;
14
- this.configurationFacade = configurationFacade;
15
- this.checkoutUrl = null;
16
- this.checkoutUrl = this.configurationFacade.getCheckoutUrl();
17
- }
18
- getCheckout(checkoutData) {
19
- return this.dependenciesFacade.dataPersistence
20
- .get('checkoutId')
21
- .pipe(concatMap((id) => !isNil(id) ? this.repositoriesFacade.checkoutRepository.get({ id }) : this.createCheckout(checkoutData)));
22
- }
23
- getUserByCheckout(checkoutId) {
24
- return from(this.repositoriesFacade.checkoutRepository.get({ id: checkoutId })).pipe(concatMap((checkout) => checkout?.user?.id
25
- ? of(checkout.user)
26
- : from(this.repositoriesFacade.userRepository.get({ id: checkout.user.id }))), concatMap((user) => of(user) || throwError(() => new NotFoundError('User is not found'))));
27
- }
28
- updateCheckoutLineItems(checkout) {
29
- return from(this.repositoriesFacade.checkoutRepository.update(Checkout.toInstance({ id: checkout.id, lineItems: checkout.lineItems })));
30
- }
31
- updateCheckoutUser(checkout) {
32
- return from(this.repositoriesFacade.checkoutRepository.update(Checkout.toInstance({ id: checkout.id, user: checkout.user })));
33
- }
34
- clearCheckoutFromSession() {
35
- return this.dependenciesFacade.dataPersistence.remove('checkoutId');
36
- }
37
- resetCheckoutValues() {
38
- return this.getCheckout().pipe(concatMap((checkout) => this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkoutResetValues`, {
39
- checkoutId: checkout.id,
40
- })), concatMap(() => this.getCheckout()));
41
- }
42
- applyCouponDiscount(nickname, checkoutType) {
43
- return this.getCheckout().pipe(concatMap((checkout) => this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkoutApplyDiscount`, {
44
- checkoutId: checkout.id,
45
- coupon: nickname,
46
- checkoutType,
47
- })), concatMap(() => this.getCheckout()), map((checkout) => checkout.coupon));
48
- }
49
- removeCouponDiscount() {
50
- return this.getCheckout().pipe(concatMap((checkout) => this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkoutRemoveDiscount`, {
51
- checkoutId: checkout.id,
52
- })), concatMap(() => this.getCheckout()));
53
- }
54
- validateStockProducts() {
55
- return this.getCheckout().pipe(concatMap((checkout) => this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkoutValidateProductStock`, {
56
- checkoutId: checkout.id,
57
- })));
58
- }
59
- selectShippingAddress(address) {
60
- return this.getCheckout().pipe(concatMap((checkout) => {
61
- return this.repositoriesFacade.checkoutRepository.update(Checkout.toInstance({ id: checkout.id, shippingAddress: address, billingAddress: address }));
62
- }));
63
- }
64
- getAvailableShippingForProduct(productShipping) {
65
- return this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkoutGetAvailableShipping`, {
66
- checkoutId: null,
67
- productShipping,
68
- });
69
- }
70
- getAvailableShippingForCheckout() {
71
- return this.getCheckout().pipe(concatMap((checkout) => this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkoutGetAvailableShipping`, {
72
- checkoutId: checkout.id,
73
- productShipping: null,
74
- })));
75
- }
76
- selectShipping(option) {
77
- return this.getCheckout().pipe(concatMap((checkout) => this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkoutSelectShipping`, {
78
- checkoutId: checkout.id,
79
- shippingOption: option,
80
- })), concatMap(() => this.getCheckout()));
81
- }
82
- createOrder(checkoutPayload, paymentProvider, applicationVersion) {
83
- return this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkout`, {
84
- data: {
85
- ...checkoutPayload,
86
- applicationVersion,
87
- paymentProvider,
88
- },
89
- });
90
- }
91
- async createCheckout(checkoutData) {
92
- const checkout = await this.repositoriesFacade.checkoutRepository.create({
93
- createdAt: new Date(),
94
- ...Checkout.toInstance(pick(checkoutData, ['user', 'shop'])).toPlain(),
95
- shop: checkoutData?.shop || this.configurationFacade.defaultShop,
96
- });
97
- await this.dependenciesFacade.dataPersistence.set('checkoutId', checkout.id).toPromise();
98
- return checkout;
99
- }
100
- }
101
- CheckoutService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutService, deps: [{ token: i1.CheckoutRepositoriesFacade }, { token: i1.CheckoutDependenciesFacade }, { token: i2.ConfigurationFacade }], target: i0.ɵɵFactoryTarget.Injectable });
102
- CheckoutService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutService });
103
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutService, decorators: [{
104
- type: Injectable
105
- }], ctorParameters: function () { return [{ type: i1.CheckoutRepositoriesFacade }, { type: i1.CheckoutDependenciesFacade }, { type: i2.ConfigurationFacade }]; } });
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2hlY2tvdXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFDTCxRQUFRLEVBTVIsS0FBSyxFQUNMLGFBQWEsRUFDYixJQUFJLEdBS0wsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUUvQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFBOzs7O0FBSTlDLE1BQU0sT0FBTyxlQUFlO0lBRzFCLFlBQ21CLGtCQUE4QyxFQUM5QyxrQkFBOEMsRUFDOUMsbUJBQXdDO1FBRnhDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBNEI7UUFDOUMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUE0QjtRQUM5Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBTG5ELGdCQUFXLEdBQVcsSUFBSSxDQUFBO1FBT2hDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsRUFBRSxDQUFBO0lBQzlELENBQUM7SUFFRCxXQUFXLENBQUMsWUFBbUM7UUFDN0MsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZTthQUMzQyxHQUFHLENBQUMsWUFBWSxDQUFDO2FBQ2pCLElBQUksQ0FDSCxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUNmLENBQUMsS0FB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LElBQUksRUFBRTtnQkFDSixHQUFHLGVBQWU7Z0JBQ2xCLGtCQUFrQjtnQkFDbEIsZUFBZTthQUNoQjtTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFTyxLQUFLLENBQUMsY0FBYyxDQUFDLFlBQW1DO1FBQzlELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztZQUN2RSxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDckIsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtZQUN0RSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVztTQUNqRSxDQUFDLENBQUE7UUFFRixNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUE7UUFFeEYsT0FBTyxRQUFRLENBQUE7SUFDakIsQ0FBQzs7NEdBMUtVLGVBQWU7Z0hBQWYsZUFBZTsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7XHJcbiAgQ2hlY2tvdXQsXHJcbiAgQ2hlY2tvdXRQYXlsb2FkUmVxdWVzdCxcclxuICBDaGVja291dFJlc3BvbnNlLFxyXG4gIENoZWNrb3V0U3RvY2tWYWxpZGF0aW9uLFxyXG4gIENoZWNrb3V0VHlwZXMsXHJcbiAgQ291cG9uLFxyXG4gIGlzTmlsLFxyXG4gIE5vdEZvdW5kRXJyb3IsXHJcbiAgcGljayxcclxuICBTaGlwcGluZ01ldGhvZFJlc3BvbnNlLFxyXG4gIFNoaXBwaW5nUHJvZHVjdFJlcXVlc3QsXHJcbiAgVXNlcixcclxuICBVc2VyQWRkcmVzcyxcclxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcclxuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBjb25jYXRNYXAsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xyXG5cclxuaW1wb3J0IHsgQ2hlY2tvdXREZXBlbmRlbmNpZXNGYWNhZGUsIENoZWNrb3V0UmVwb3NpdG9yaWVzRmFjYWRlIH0gZnJvbSAnLi9jaGVja291dCdcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbkZhY2FkZSB9IGZyb20gJy4vc2hhcmVkJ1xyXG5pbXBvcnQgeyBSZXF1aXJlZENoZWNrb3V0RGF0YSB9IGZyb20gJy4vdHlwZXMnXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDaGVja291dFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgY2hlY2tvdXRVcmw6IHN0cmluZyA9IG51bGxcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlcG9zaXRvcmllc0ZhY2FkZTogQ2hlY2tvdXRSZXBvc2l0b3JpZXNGYWNhZGUsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlcGVuZGVuY2llc0ZhY2FkZTogQ2hlY2tvdXREZXBlbmRlbmNpZXNGYWNhZGUsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb25GYWNhZGU6IENvbmZpZ3VyYXRpb25GYWNhZGUsXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNoZWNrb3V0VXJsID0gdGhpcy5jb25maWd1cmF0aW9uRmFjYWRlLmdldENoZWNrb3V0VXJsKClcclxuICB9XHJcblxyXG4gIGdldENoZWNrb3V0KGNoZWNrb3V0RGF0YT86IFJlcXVpcmVkQ2hlY2tvdXREYXRhKTogT2JzZXJ2YWJsZTxDaGVja291dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGVwZW5kZW5jaWVzRmFjYWRlLmRhdGFQZXJzaXN0ZW5jZVxyXG4gICAgICAuZ2V0KCdjaGVja291dElkJylcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgY29uY2F0TWFwKChpZCkgPT5cclxuICAgICAgICAgICFpc05pbChpZCkgPyB0aGlzLnJlcG9zaXRvcmllc0ZhY2FkZS5jaGVja291dFJlcG9zaXRvcnkuZ2V0KHsgaWQgfSkgOiB0aGlzLmNyZWF0ZUNoZWNrb3V0KGNoZWNrb3V0RGF0YSksXHJcbiAgICAgICAgKSxcclxuICAgICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckJ5Q2hlY2tvdXQoY2hlY2tvdXRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxVc2VyPiB7XHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLnJlcG9zaXRvcmllc0ZhY2FkZS5jaGVja291dFJlcG9zaXRvcnkuZ2V0KHsgaWQ6IGNoZWNrb3V0SWQgfSkpLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+XHJcbiAgICAgICAgY2hlY2tvdXQ/LnVzZXI/LmlkXHJcbiAgICAgICAgICA/IG9mKGNoZWNrb3V0LnVzZXIpXHJcbiAgICAgICAgICA6IGZyb20odGhpcy5yZXBvc2l0b3JpZXNGYWNhZGUudXNlclJlcG9zaXRvcnkuZ2V0KHsgaWQ6IGNoZWNrb3V0LnVzZXIuaWQgfSkpLFxyXG4gICAgICApLFxyXG4gICAgICBjb25jYXRNYXAoKHVzZXIpID0+IG9mKHVzZXIpIHx8IHRocm93RXJyb3IoKCkgPT4gbmV3IE5vdEZvdW5kRXJyb3IoJ1VzZXIgaXMgbm90IGZvdW5kJykpKSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIHVwZGF0ZUNoZWNrb3V0TGluZUl0ZW1zKGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0Pik6IE9ic2VydmFibGU8Q2hlY2tvdXQ+IHtcclxuICAgIHJldHVybiBmcm9tKFxyXG4gICAgICB0aGlzLnJlcG9zaXRvcmllc0ZhY2FkZS5jaGVja291dFJlcG9zaXRvcnkudXBkYXRlKFxyXG4gICAgICAgIENoZWNrb3V0LnRvSW5zdGFuY2UoeyBpZDogY2hlY2tvdXQuaWQsIGxpbmVJdGVtczogY2hlY2tvdXQubGluZUl0ZW1zIH0pLFxyXG4gICAgICApLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlQ2hlY2tvdXRVc2VyKGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0Pik6IE9ic2VydmFibGU8Q2hlY2tvdXQ+IHtcclxuICAgIHJldHVybiBmcm9tKFxyXG4gICAgICB0aGlzLnJlcG9zaXRvcmllc0ZhY2FkZS5jaGVja291dFJlcG9zaXRvcnkudXBkYXRlKENoZWNrb3V0LnRvSW5zdGFuY2UoeyBpZDogY2hlY2tvdXQuaWQsIHVzZXI6IGNoZWNrb3V0LnVzZXIgfSkpLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgY2xlYXJDaGVja291dEZyb21TZXNzaW9uKCk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGVwZW5kZW5jaWVzRmFjYWRlLmRhdGFQZXJzaXN0ZW5jZS5yZW1vdmUoJ2NoZWNrb3V0SWQnKVxyXG4gIH1cclxuXHJcbiAgcmVzZXRDaGVja291dFZhbHVlcygpOiBPYnNlcnZhYmxlPENoZWNrb3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja291dCgpLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+XHJcbiAgICAgICAgdGhpcy5kZXBlbmRlbmNpZXNGYWNhZGUuaHR0cENsaWVudC5wb3N0KGAke3RoaXMuY2hlY2tvdXRVcmx9L2NoZWNrb3V0UmVzZXRWYWx1ZXNgLCB7XHJcbiAgICAgICAgICBjaGVja291dElkOiBjaGVja291dC5pZCxcclxuICAgICAgICB9KSxcclxuICAgICAgKSxcclxuICAgICAgY29uY2F0TWFwKCgpID0+IHRoaXMuZ2V0Q2hlY2tvdXQoKSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBhcHBseUNvdXBvbkRpc2NvdW50KG5pY2tuYW1lOiBzdHJpbmcsIGNoZWNrb3V0VHlwZTogQ2hlY2tvdXRUeXBlcyk6IE9ic2VydmFibGU8Q291cG9uPiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja291dCgpLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+XHJcbiAgICAgICAgdGhpcy5kZXBlbmRlbmNpZXNGYWNhZGUuaHR0cENsaWVudC5wb3N0KGAke3RoaXMuY2hlY2tvdXRVcmx9L2NoZWNrb3V0QXBwbHlEaXNjb3VudGAsIHtcclxuICAgICAgICAgIGNoZWNrb3V0SWQ6IGNoZWNrb3V0LmlkLFxyXG4gICAgICAgICAgY291cG9uOiBuaWNrbmFtZSxcclxuICAgICAgICAgIGNoZWNrb3V0VHlwZSxcclxuICAgICAgICB9KSxcclxuICAgICAgKSxcclxuICAgICAgY29uY2F0TWFwKCgpID0+IHRoaXMuZ2V0Q2hlY2tvdXQoKSksXHJcbiAgICAgIG1hcCgoY2hlY2tvdXQpID0+IGNoZWNrb3V0LmNvdXBvbiksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICByZW1vdmVDb3Vwb25EaXNjb3VudCgpOiBPYnNlcnZhYmxlPENoZWNrb3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja291dCgpLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+XHJcbiAgICAgICAgdGhpcy5kZXBlbmRlbmNpZXNGYWNhZGUuaHR0cENsaWVudC5wb3N0KGAke3RoaXMuY2hlY2tvdXRVcmx9L2NoZWNrb3V0UmVtb3ZlRGlzY291bnRgLCB7XHJcbiAgICAgICAgICBjaGVja291dElkOiBjaGVja291dC5pZCxcclxuICAgICAgICB9KSxcclxuICAgICAgKSxcclxuICAgICAgY29uY2F0TWFwKCgpID0+IHRoaXMuZ2V0Q2hlY2tvdXQoKSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVN0b2NrUHJvZHVjdHMoKTogT2JzZXJ2YWJsZTxDaGVja291dFN0b2NrVmFsaWRhdGlvbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2hlY2tvdXQoKS5waXBlKFxyXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PlxyXG4gICAgICAgIHRoaXMuZGVwZW5kZW5jaWVzRmFjYWRlLmh0dHBDbGllbnQucG9zdDx7XHJcbiAgICAgICAgICB2YWxpZDogYm9vbGVhblxyXG4gICAgICAgICAgb3V0T2ZTdG9jazogc3RyaW5nW11cclxuICAgICAgICAgIGxpbWl0ZWRTdG9jazogc3RyaW5nW11cclxuICAgICAgICB9PihgJHt0aGlzLmNoZWNrb3V0VXJsfS9jaGVja291dFZhbGlkYXRlUHJvZHVjdFN0b2NrYCwge1xyXG4gICAgICAgICAgY2hlY2tvdXRJZDogY2hlY2tvdXQuaWQsXHJcbiAgICAgICAgfSksXHJcbiAgICAgICksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBzZWxlY3RTaGlwcGluZ0FkZHJlc3MoYWRkcmVzczogVXNlckFkZHJlc3MpOiBPYnNlcnZhYmxlPENoZWNrb3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja291dCgpLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXBvc2l0b3JpZXNGYWNhZGUuY2hlY2tvdXRSZXBvc2l0b3J5LnVwZGF0ZShcclxuICAgICAgICAgIENoZWNrb3V0LnRvSW5zdGFuY2UoeyBpZDogY2hlY2tvdXQuaWQsIHNoaXBwaW5nQWRkcmVzczogYWRkcmVzcywgYmlsbGluZ0FkZHJlc3M6IGFkZHJlc3MgfSksXHJcbiAgICAgICAgKVxyXG4gICAgICB9KSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldEF2YWlsYWJsZVNoaXBwaW5nRm9yUHJvZHVjdChwcm9kdWN0U2hpcHBpbmc6IFNoaXBwaW5nUHJvZHVjdFJlcXVlc3QpOiBPYnNlcnZhYmxlPFNoaXBwaW5nTWV0aG9kUmVzcG9uc2VbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGVwZW5kZW5jaWVzRmFjYWRlLmh0dHBDbGllbnQucG9zdDxTaGlwcGluZ01ldGhvZFJlc3BvbnNlW10+KFxyXG4gICAgICBgJHt0aGlzLmNoZWNrb3V0VXJsfS9jaGVja291dEdldEF2YWlsYWJsZVNoaXBwaW5nYCxcclxuICAgICAge1xyXG4gICAgICAgIGNoZWNrb3V0SWQ6IG51bGwsXHJcbiAgICAgICAgcHJvZHVjdFNoaXBwaW5nLFxyXG4gICAgICB9LFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0QXZhaWxhYmxlU2hpcHBpbmdGb3JDaGVja291dCgpOiBPYnNlcnZhYmxlPFNoaXBwaW5nTWV0aG9kUmVzcG9uc2VbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2hlY2tvdXQoKS5waXBlKFxyXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PlxyXG4gICAgICAgIHRoaXMuZGVwZW5kZW5jaWVzRmFjYWRlLmh0dHBDbGllbnQucG9zdDxTaGlwcGluZ01ldGhvZFJlc3BvbnNlW10+KFxyXG4gICAgICAgICAgYCR7dGhpcy5jaGVja291dFVybH0vY2hlY2tvdXRHZXRBdmFpbGFibGVTaGlwcGluZ2AsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGNoZWNrb3V0SWQ6IGNoZWNrb3V0LmlkLFxyXG4gICAgICAgICAgICBwcm9kdWN0U2hpcHBpbmc6IG51bGwsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICksXHJcbiAgICAgICksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBzZWxlY3RTaGlwcGluZyhvcHRpb246IHN0cmluZyk6IE9ic2VydmFibGU8Q2hlY2tvdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmdldENoZWNrb3V0KCkucGlwZShcclxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT5cclxuICAgICAgICB0aGlzLmRlcGVuZGVuY2llc0ZhY2FkZS5odHRwQ2xpZW50LnBvc3QoYCR7dGhpcy5jaGVja291dFVybH0vY2hlY2tvdXRTZWxlY3RTaGlwcGluZ2AsIHtcclxuICAgICAgICAgIGNoZWNrb3V0SWQ6IGNoZWNrb3V0LmlkLFxyXG4gICAgICAgICAgc2hpcHBpbmdPcHRpb246IG9wdGlvbixcclxuICAgICAgICB9KSxcclxuICAgICAgKSxcclxuICAgICAgY29uY2F0TWFwKCgpID0+IHRoaXMuZ2V0Q2hlY2tvdXQoKSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBjcmVhdGVPcmRlcihcclxuICAgIGNoZWNrb3V0UGF5bG9hZDogQ2hlY2tvdXRQYXlsb2FkUmVxdWVzdCxcclxuICAgIHBheW1lbnRQcm92aWRlcjogc3RyaW5nLFxyXG4gICAgYXBwbGljYXRpb25WZXJzaW9uOiBzdHJpbmcsXHJcbiAgKTogT2JzZXJ2YWJsZTxDaGVja291dFJlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kZXBlbmRlbmNpZXNGYWNhZGUuaHR0cENsaWVudC5wb3N0PENoZWNrb3V0UmVzcG9uc2U+KGAke3RoaXMuY2hlY2tvdXRVcmx9L2NoZWNrb3V0YCwge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgLi4uY2hlY2tvdXRQYXlsb2FkLFxyXG4gICAgICAgIGFwcGxpY2F0aW9uVmVyc2lvbixcclxuICAgICAgICBwYXltZW50UHJvdmlkZXIsXHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVDaGVja291dChjaGVja291dERhdGE/OiBSZXF1aXJlZENoZWNrb3V0RGF0YSk6IFByb21pc2U8Q2hlY2tvdXQ+IHtcclxuICAgIGNvbnN0IGNoZWNrb3V0ID0gYXdhaXQgdGhpcy5yZXBvc2l0b3JpZXNGYWNhZGUuY2hlY2tvdXRSZXBvc2l0b3J5LmNyZWF0ZSh7XHJcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoKSxcclxuICAgICAgLi4uQ2hlY2tvdXQudG9JbnN0YW5jZShwaWNrKGNoZWNrb3V0RGF0YSwgWyd1c2VyJywgJ3Nob3AnXSkpLnRvUGxhaW4oKSxcclxuICAgICAgc2hvcDogY2hlY2tvdXREYXRhPy5zaG9wIHx8IHRoaXMuY29uZmlndXJhdGlvbkZhY2FkZS5kZWZhdWx0U2hvcCxcclxuICAgIH0pXHJcblxyXG4gICAgYXdhaXQgdGhpcy5kZXBlbmRlbmNpZXNGYWNhZGUuZGF0YVBlcnNpc3RlbmNlLnNldCgnY2hlY2tvdXRJZCcsIGNoZWNrb3V0LmlkKS50b1Byb21pc2UoKVxyXG5cclxuICAgIHJldHVybiBjaGVja291dFxyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,24 +0,0 @@
1
- import { Inject, Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class CouponRepositoriesFacade {
4
- constructor(couponRepository, orderRepository, categoryRepository) {
5
- this.couponRepository = couponRepository;
6
- this.orderRepository = orderRepository;
7
- this.categoryRepository = categoryRepository;
8
- }
9
- }
10
- CouponRepositoriesFacade.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CouponRepositoriesFacade, deps: [{ token: 'CouponRepository' }, { token: 'OrderRepository' }, { token: 'CategoryRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
11
- CouponRepositoriesFacade.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CouponRepositoriesFacade });
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CouponRepositoriesFacade, decorators: [{
13
- type: Injectable
14
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
15
- type: Inject,
16
- args: ['CouponRepository']
17
- }] }, { type: undefined, decorators: [{
18
- type: Inject,
19
- args: ['OrderRepository']
20
- }] }, { type: undefined, decorators: [{
21
- type: Inject,
22
- args: ['CategoryRepository']
23
- }] }]; } });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLXJlcG9zaXRvcmllcy5mYWNhZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NvdXBvbi9jb3Vwb24tcmVwb3NpdG9yaWVzLmZhY2FkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTs7QUFJbEQsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUM4QyxnQkFBa0MsRUFDbkMsZUFBZ0MsRUFDN0Isa0JBQXNDO1FBRnhDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbkMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQzdCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7SUFDbkYsQ0FBQzs7cUhBTE8sd0JBQXdCLGtCQUV6QixrQkFBa0IsYUFDbEIsaUJBQWlCLGFBQ2pCLG9CQUFvQjt5SEFKbkIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVU7OzBCQUdOLE1BQU07MkJBQUMsa0JBQWtCOzswQkFDekIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7IENhdGVnb3J5UmVwb3NpdG9yeSwgQ291cG9uUmVwb3NpdG9yeSwgT3JkZXJSZXBvc2l0b3J5IH0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDb3Vwb25SZXBvc2l0b3JpZXNGYWNhZGUge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnQ291cG9uUmVwb3NpdG9yeScpIHB1YmxpYyByZWFkb25seSBjb3Vwb25SZXBvc2l0b3J5OiBDb3Vwb25SZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdCgnT3JkZXJSZXBvc2l0b3J5JykgcHVibGljIHJlYWRvbmx5IG9yZGVyUmVwb3NpdG9yeTogT3JkZXJSZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdCgnQ2F0ZWdvcnlSZXBvc2l0b3J5JykgcHVibGljIHJlYWRvbmx5IGNhdGVnb3J5UmVwb3NpdG9yeTogQ2F0ZWdvcnlSZXBvc2l0b3J5LFxyXG4gICkge31cclxufVxyXG4iXX0=
@@ -1,2 +0,0 @@
1
- export { CouponRepositoriesFacade } from './coupon-repositories.facade';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NvdXBvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IENvdXBvblJlcG9zaXRvcmllc0ZhY2FkZSB9IGZyb20gJy4vY291cG9uLXJlcG9zaXRvcmllcy5mYWNhZGUnXHJcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLXBhcmFtcy50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jb3Vwb24vdHlwZXMvY291cG9uLXBhcmFtcy50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGVja291dCwgQ2hlY2tvdXRUeXBlcywgQ291cG9uIH0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXHJcblxyXG5leHBvcnQgdHlwZSBDaGVja0NvdXBvblBhcmFtcyA9IHtcclxuICBuaWNrbmFtZTogc3RyaW5nXHJcbiAgY2hlY2tvdXRUeXBlOiBDaGVja291dFR5cGVzXHJcbiAgY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+XHJcbiAgcGxhbjogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIENvdXBvblJ1bGVzVmFsaWRhdGlvblBhcmFtcyA9IHtcclxuICBjb3Vwb246IENvdXBvblxyXG4gIGNoZWNrb3V0VHlwZTogQ2hlY2tvdXRUeXBlc1xyXG4gIGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0PlxyXG4gIHBsYW46IHN0cmluZ1xyXG59XHJcbiJdfQ==