@infrab4a/connect-angular 0.12.6 → 0.13.0-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 (35) hide show
  1. package/bundles/infrab4a-connect-angular.umd.js +256 -276
  2. package/bundles/infrab4a-connect-angular.umd.js.map +1 -1
  3. package/esm2015/lib/angular-connect.module.js +22 -6
  4. package/esm2015/lib/angular-firebase-auth.module.js +19 -33
  5. package/esm2015/lib/angular-firestore.module.js +138 -138
  6. package/esm2015/lib/factories/firebase-app.factory.js +18 -0
  7. package/esm2015/lib/factories/firebase-firestore.factory.js +3 -0
  8. package/esm2015/lib/providers/firebase-app.provider.js +12 -0
  9. package/esm2015/lib/providers/firebase-firestore.provider.js +8 -0
  10. package/esm2015/lib/providers/index.js +3 -0
  11. package/esm2015/lib/services/auth.service.js +16 -13
  12. package/esm2015/lib/services/cart.service.js +2 -6
  13. package/esm2015/lib/services/checkout-subscription.service.js +6 -37
  14. package/esm2015/lib/services/checkout.service.js +3 -3
  15. package/esm2015/lib/services/coupon.service.js +10 -29
  16. package/esm2015/lib/services/errors/index.js +1 -2
  17. package/esm2015/lib/services/order.service.js +11 -13
  18. package/fesm2015/infrab4a-connect-angular.js +244 -261
  19. package/fesm2015/infrab4a-connect-angular.js.map +1 -1
  20. package/lib/angular-connect.module.d.ts +4 -5
  21. package/lib/angular-firebase-auth.module.d.ts +3 -4
  22. package/lib/angular-firestore.module.d.ts +3 -4
  23. package/lib/factories/firebase-app.factory.d.ts +4 -0
  24. package/lib/factories/firebase-firestore.factory.d.ts +2 -0
  25. package/lib/providers/firebase-app.provider.d.ts +17 -0
  26. package/lib/providers/firebase-firestore.provider.d.ts +7 -0
  27. package/lib/providers/index.d.ts +2 -0
  28. package/lib/services/auth.service.d.ts +5 -3
  29. package/lib/services/checkout-subscription.service.d.ts +2 -7
  30. package/lib/services/coupon.service.d.ts +2 -3
  31. package/lib/services/errors/index.d.ts +0 -1
  32. package/lib/services/order.service.d.ts +3 -3
  33. package/package.json +3 -4
  34. package/esm2015/lib/services/errors/group-invalid-coupon.error.js +0 -7
  35. package/lib/services/errors/group-invalid-coupon.error.d.ts +0 -5
@@ -1,7 +1,6 @@
1
1
  import { NgModule } from '@angular/core';
2
- import { AngularFireModule, FIREBASE_APP_NAME, FIREBASE_OPTIONS, } from '@angular/fire';
3
- import { AngularFirestore } from '@angular/fire/firestore';
4
2
  import { Buy2WinFirestoreRepository, CategoryFirestoreRepository, CheckoutFirestoreRepository, CheckoutSubscriptionFirestoreRepository, CouponFirestoreRepository, HomeFirestoreRepository, LeadFirestoreRepository, LegacyOrderFirestoreRepository, ShopMenuFirestoreRepository, OrderFirestoreRepository, PaymentFirestoreRepository, ProductFirestoreRepository, SubscriptionEditionFirestoreRepository, SubscriptionFirestoreRepository, SubscriptionPaymentFirestoreRepository, SubscriptionPlanFirestoreRepository, SubscriptionProductFirestoreRepository, UserAddressFirestoreRepository, UserBeautyProfileFirestoreRepository, UserFirestoreRepository, ProductVariantFirestoreRepository, UserPaymentMethodFirestoreRepository, } from '@infrab4a/connect';
3
+ import { FIREBASE_APP_NAME, FIREBASE_OPTIONS, FirebaseAppProvider } from './providers';
5
4
  import * as i0 from "@angular/core";
6
5
  export class AngularFirestoreModule {
7
6
  static initializeApp(options, nameOrConfig) {
@@ -15,323 +14,324 @@ export class AngularFirestoreModule {
15
14
  }
16
15
  }
17
16
  AngularFirestoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularFirestoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
18
- AngularFirestoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularFirestoreModule, imports: [AngularFireModule] });
17
+ AngularFirestoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularFirestoreModule });
19
18
  AngularFirestoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularFirestoreModule, providers: [
19
+ FirebaseAppProvider,
20
20
  {
21
21
  provide: 'BeautyProfileRepository',
22
- useFactory: (firestore, userRepository) => {
23
- return new UserBeautyProfileFirestoreRepository(firestore.firestore, userRepository);
22
+ useFactory: (app, userRepository) => {
23
+ return new UserBeautyProfileFirestoreRepository(app.firestore(), userRepository);
24
24
  },
25
- deps: [AngularFirestore, 'UserRepository'],
25
+ deps: [FirebaseAppProvider, 'UserRepository'],
26
26
  },
27
27
  {
28
28
  provide: 'Buy2WinRepository',
29
- useFactory: (firestore) => {
30
- return new Buy2WinFirestoreRepository(firestore.firestore);
29
+ useFactory: (app) => {
30
+ return new Buy2WinFirestoreRepository(app.firestore());
31
31
  },
32
- deps: [AngularFirestore],
32
+ deps: [FirebaseAppProvider],
33
33
  },
34
34
  {
35
35
  provide: 'CategoryRepository',
36
- useFactory: (firestore) => {
37
- return new CategoryFirestoreRepository(firestore.firestore);
36
+ useFactory: (app) => {
37
+ return new CategoryFirestoreRepository(app.firestore());
38
38
  },
39
- deps: [AngularFirestore],
39
+ deps: [FirebaseAppProvider],
40
40
  },
41
41
  {
42
42
  provide: 'CheckoutRepository',
43
- useFactory: (firestore) => {
44
- return new CheckoutFirestoreRepository(firestore.firestore);
43
+ useFactory: (app) => {
44
+ return new CheckoutFirestoreRepository(app.firestore());
45
45
  },
46
- deps: [AngularFirestore],
46
+ deps: [FirebaseAppProvider],
47
47
  },
48
48
  {
49
49
  provide: 'CheckoutSubscriptionRepository',
50
- useFactory: (firestore) => {
51
- return new CheckoutSubscriptionFirestoreRepository(firestore.firestore);
50
+ useFactory: (app) => {
51
+ return new CheckoutSubscriptionFirestoreRepository(app.firestore());
52
52
  },
53
- deps: [AngularFirestore],
53
+ deps: [FirebaseAppProvider],
54
54
  },
55
55
  {
56
56
  provide: 'CouponRepository',
57
- useFactory: (firestore) => {
58
- return new CouponFirestoreRepository(firestore.firestore);
57
+ useFactory: (app) => {
58
+ return new CouponFirestoreRepository(app.firestore());
59
59
  },
60
- deps: [AngularFirestore],
60
+ deps: [FirebaseAppProvider],
61
61
  },
62
62
  {
63
63
  provide: 'EditionRepository',
64
- useFactory: (firestore, subscriptionRepository) => {
65
- return new SubscriptionEditionFirestoreRepository(firestore.firestore, subscriptionRepository);
64
+ useFactory: (app, subscriptionRepository) => {
65
+ return new SubscriptionEditionFirestoreRepository(app.firestore(), subscriptionRepository);
66
66
  },
67
- deps: [AngularFirestore, 'SubscriptionRepository'],
67
+ deps: [FirebaseAppProvider, 'SubscriptionRepository'],
68
68
  },
69
69
  {
70
70
  provide: 'HomeRepository',
71
- useFactory: (firestore) => {
72
- return new HomeFirestoreRepository(firestore.firestore);
71
+ useFactory: (app) => {
72
+ return new HomeFirestoreRepository(app.firestore());
73
73
  },
74
- deps: [AngularFirestore],
74
+ deps: [FirebaseAppProvider],
75
75
  },
76
76
  {
77
77
  provide: 'LeadRepository',
78
- useFactory: (firestore) => {
79
- return new LeadFirestoreRepository(firestore.firestore);
78
+ useFactory: (app) => {
79
+ return new LeadFirestoreRepository(app.firestore());
80
80
  },
81
- deps: [AngularFirestore],
81
+ deps: [FirebaseAppProvider],
82
82
  },
83
83
  {
84
84
  provide: 'LegacyOrderRepository',
85
- useFactory: (firestore) => {
86
- return new LegacyOrderFirestoreRepository(firestore.firestore);
85
+ useFactory: (app) => {
86
+ return new LegacyOrderFirestoreRepository(app.firestore());
87
87
  },
88
- deps: [AngularFirestore],
88
+ deps: [FirebaseAppProvider],
89
89
  },
90
90
  {
91
91
  provide: 'ShopMenuRepository',
92
- useFactory: (firestore) => {
93
- return new ShopMenuFirestoreRepository(firestore.firestore);
92
+ useFactory: (app) => {
93
+ return new ShopMenuFirestoreRepository(app.firestore());
94
94
  },
95
- deps: [AngularFirestore],
95
+ deps: [FirebaseAppProvider],
96
96
  },
97
97
  {
98
98
  provide: 'OrderRepository',
99
- useFactory: (firestore) => {
100
- return new OrderFirestoreRepository(firestore.firestore);
99
+ useFactory: (app) => {
100
+ return new OrderFirestoreRepository(app.firestore());
101
101
  },
102
- deps: [AngularFirestore],
102
+ deps: [FirebaseAppProvider],
103
103
  },
104
104
  {
105
105
  provide: 'PaymentRepository',
106
- useFactory: (firestore) => {
107
- return new PaymentFirestoreRepository(firestore.firestore);
106
+ useFactory: (app) => {
107
+ return new PaymentFirestoreRepository(app.firestore());
108
108
  },
109
- deps: [AngularFirestore],
109
+ deps: [FirebaseAppProvider],
110
110
  },
111
111
  {
112
112
  provide: 'ProductRepository',
113
- useFactory: (firestore) => {
114
- return new ProductFirestoreRepository(firestore.firestore);
113
+ useFactory: (app) => {
114
+ return new ProductFirestoreRepository(app.firestore());
115
115
  },
116
- deps: [AngularFirestore],
116
+ deps: [FirebaseAppProvider],
117
117
  },
118
118
  {
119
119
  provide: 'SubscriptionPaymentRepository',
120
- useFactory: (firestore, subscriptionRepository) => {
121
- return new SubscriptionPaymentFirestoreRepository(firestore.firestore, subscriptionRepository);
120
+ useFactory: (app, subscriptionRepository) => {
121
+ return new SubscriptionPaymentFirestoreRepository(app.firestore(), subscriptionRepository);
122
122
  },
123
- deps: [AngularFirestore, 'SubscriptionRepository'],
123
+ deps: [FirebaseAppProvider, 'SubscriptionRepository'],
124
124
  },
125
125
  {
126
126
  provide: 'SubscriptionPlanRepository',
127
- useFactory: (firestore) => {
128
- return new SubscriptionPlanFirestoreRepository(firestore.firestore);
127
+ useFactory: (app) => {
128
+ return new SubscriptionPlanFirestoreRepository(app.firestore());
129
129
  },
130
- deps: [AngularFirestore],
130
+ deps: [FirebaseAppProvider],
131
131
  },
132
132
  {
133
133
  provide: 'SubscriptionProductRepository',
134
- useFactory: (firestore) => {
135
- return new SubscriptionProductFirestoreRepository(firestore.firestore);
134
+ useFactory: (app) => {
135
+ return new SubscriptionProductFirestoreRepository(app.firestore());
136
136
  },
137
- deps: [AngularFirestore],
137
+ deps: [FirebaseAppProvider],
138
138
  },
139
139
  {
140
140
  provide: 'SubscriptionRepository',
141
- useFactory: (firestore) => {
142
- return new SubscriptionFirestoreRepository(firestore.firestore);
141
+ useFactory: (app) => {
142
+ return new SubscriptionFirestoreRepository(app.firestore());
143
143
  },
144
- deps: [AngularFirestore],
144
+ deps: [FirebaseAppProvider],
145
145
  },
146
146
  {
147
147
  provide: 'UserRepository',
148
- useFactory: (firestore) => {
149
- return new UserFirestoreRepository(firestore.firestore);
148
+ useFactory: (app) => {
149
+ return new UserFirestoreRepository(app.firestore());
150
150
  },
151
- deps: [AngularFirestore],
151
+ deps: [FirebaseAppProvider],
152
152
  },
153
153
  {
154
154
  provide: 'UserAddressRepository',
155
- useFactory: (firestore, userRepository) => {
156
- return new UserAddressFirestoreRepository(firestore.firestore, userRepository);
155
+ useFactory: (app, userRepository) => {
156
+ return new UserAddressFirestoreRepository(app.firestore(), userRepository);
157
157
  },
158
- deps: [AngularFirestore, 'UserRepository'],
158
+ deps: [FirebaseAppProvider, 'UserRepository'],
159
159
  },
160
160
  {
161
161
  provide: 'UserPaymentMethodRepository',
162
- useFactory: (firestore, userRepository) => {
163
- return new UserPaymentMethodFirestoreRepository(firestore.firestore, userRepository);
162
+ useFactory: (app, userRepository) => {
163
+ return new UserPaymentMethodFirestoreRepository(app.firestore(), userRepository);
164
164
  },
165
- deps: [AngularFirestore, 'UserRepository'],
165
+ deps: [FirebaseAppProvider, 'UserRepository'],
166
166
  },
167
167
  {
168
168
  provide: 'VariantRepository',
169
- useFactory: (firestore, productRepository) => {
170
- return new ProductVariantFirestoreRepository(firestore.firestore, productRepository);
169
+ useFactory: (app, productRepository) => {
170
+ return new ProductVariantFirestoreRepository(app.firestore(), productRepository);
171
171
  },
172
- deps: [AngularFirestore, 'ProductRepository'],
172
+ deps: [FirebaseAppProvider, 'ProductRepository'],
173
173
  },
174
- ], imports: [[AngularFireModule]] });
174
+ ] });
175
175
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularFirestoreModule, decorators: [{
176
176
  type: NgModule,
177
177
  args: [{
178
- imports: [AngularFireModule],
179
178
  providers: [
179
+ FirebaseAppProvider,
180
180
  {
181
181
  provide: 'BeautyProfileRepository',
182
- useFactory: (firestore, userRepository) => {
183
- return new UserBeautyProfileFirestoreRepository(firestore.firestore, userRepository);
182
+ useFactory: (app, userRepository) => {
183
+ return new UserBeautyProfileFirestoreRepository(app.firestore(), userRepository);
184
184
  },
185
- deps: [AngularFirestore, 'UserRepository'],
185
+ deps: [FirebaseAppProvider, 'UserRepository'],
186
186
  },
187
187
  {
188
188
  provide: 'Buy2WinRepository',
189
- useFactory: (firestore) => {
190
- return new Buy2WinFirestoreRepository(firestore.firestore);
189
+ useFactory: (app) => {
190
+ return new Buy2WinFirestoreRepository(app.firestore());
191
191
  },
192
- deps: [AngularFirestore],
192
+ deps: [FirebaseAppProvider],
193
193
  },
194
194
  {
195
195
  provide: 'CategoryRepository',
196
- useFactory: (firestore) => {
197
- return new CategoryFirestoreRepository(firestore.firestore);
196
+ useFactory: (app) => {
197
+ return new CategoryFirestoreRepository(app.firestore());
198
198
  },
199
- deps: [AngularFirestore],
199
+ deps: [FirebaseAppProvider],
200
200
  },
201
201
  {
202
202
  provide: 'CheckoutRepository',
203
- useFactory: (firestore) => {
204
- return new CheckoutFirestoreRepository(firestore.firestore);
203
+ useFactory: (app) => {
204
+ return new CheckoutFirestoreRepository(app.firestore());
205
205
  },
206
- deps: [AngularFirestore],
206
+ deps: [FirebaseAppProvider],
207
207
  },
208
208
  {
209
209
  provide: 'CheckoutSubscriptionRepository',
210
- useFactory: (firestore) => {
211
- return new CheckoutSubscriptionFirestoreRepository(firestore.firestore);
210
+ useFactory: (app) => {
211
+ return new CheckoutSubscriptionFirestoreRepository(app.firestore());
212
212
  },
213
- deps: [AngularFirestore],
213
+ deps: [FirebaseAppProvider],
214
214
  },
215
215
  {
216
216
  provide: 'CouponRepository',
217
- useFactory: (firestore) => {
218
- return new CouponFirestoreRepository(firestore.firestore);
217
+ useFactory: (app) => {
218
+ return new CouponFirestoreRepository(app.firestore());
219
219
  },
220
- deps: [AngularFirestore],
220
+ deps: [FirebaseAppProvider],
221
221
  },
222
222
  {
223
223
  provide: 'EditionRepository',
224
- useFactory: (firestore, subscriptionRepository) => {
225
- return new SubscriptionEditionFirestoreRepository(firestore.firestore, subscriptionRepository);
224
+ useFactory: (app, subscriptionRepository) => {
225
+ return new SubscriptionEditionFirestoreRepository(app.firestore(), subscriptionRepository);
226
226
  },
227
- deps: [AngularFirestore, 'SubscriptionRepository'],
227
+ deps: [FirebaseAppProvider, 'SubscriptionRepository'],
228
228
  },
229
229
  {
230
230
  provide: 'HomeRepository',
231
- useFactory: (firestore) => {
232
- return new HomeFirestoreRepository(firestore.firestore);
231
+ useFactory: (app) => {
232
+ return new HomeFirestoreRepository(app.firestore());
233
233
  },
234
- deps: [AngularFirestore],
234
+ deps: [FirebaseAppProvider],
235
235
  },
236
236
  {
237
237
  provide: 'LeadRepository',
238
- useFactory: (firestore) => {
239
- return new LeadFirestoreRepository(firestore.firestore);
238
+ useFactory: (app) => {
239
+ return new LeadFirestoreRepository(app.firestore());
240
240
  },
241
- deps: [AngularFirestore],
241
+ deps: [FirebaseAppProvider],
242
242
  },
243
243
  {
244
244
  provide: 'LegacyOrderRepository',
245
- useFactory: (firestore) => {
246
- return new LegacyOrderFirestoreRepository(firestore.firestore);
245
+ useFactory: (app) => {
246
+ return new LegacyOrderFirestoreRepository(app.firestore());
247
247
  },
248
- deps: [AngularFirestore],
248
+ deps: [FirebaseAppProvider],
249
249
  },
250
250
  {
251
251
  provide: 'ShopMenuRepository',
252
- useFactory: (firestore) => {
253
- return new ShopMenuFirestoreRepository(firestore.firestore);
252
+ useFactory: (app) => {
253
+ return new ShopMenuFirestoreRepository(app.firestore());
254
254
  },
255
- deps: [AngularFirestore],
255
+ deps: [FirebaseAppProvider],
256
256
  },
257
257
  {
258
258
  provide: 'OrderRepository',
259
- useFactory: (firestore) => {
260
- return new OrderFirestoreRepository(firestore.firestore);
259
+ useFactory: (app) => {
260
+ return new OrderFirestoreRepository(app.firestore());
261
261
  },
262
- deps: [AngularFirestore],
262
+ deps: [FirebaseAppProvider],
263
263
  },
264
264
  {
265
265
  provide: 'PaymentRepository',
266
- useFactory: (firestore) => {
267
- return new PaymentFirestoreRepository(firestore.firestore);
266
+ useFactory: (app) => {
267
+ return new PaymentFirestoreRepository(app.firestore());
268
268
  },
269
- deps: [AngularFirestore],
269
+ deps: [FirebaseAppProvider],
270
270
  },
271
271
  {
272
272
  provide: 'ProductRepository',
273
- useFactory: (firestore) => {
274
- return new ProductFirestoreRepository(firestore.firestore);
273
+ useFactory: (app) => {
274
+ return new ProductFirestoreRepository(app.firestore());
275
275
  },
276
- deps: [AngularFirestore],
276
+ deps: [FirebaseAppProvider],
277
277
  },
278
278
  {
279
279
  provide: 'SubscriptionPaymentRepository',
280
- useFactory: (firestore, subscriptionRepository) => {
281
- return new SubscriptionPaymentFirestoreRepository(firestore.firestore, subscriptionRepository);
280
+ useFactory: (app, subscriptionRepository) => {
281
+ return new SubscriptionPaymentFirestoreRepository(app.firestore(), subscriptionRepository);
282
282
  },
283
- deps: [AngularFirestore, 'SubscriptionRepository'],
283
+ deps: [FirebaseAppProvider, 'SubscriptionRepository'],
284
284
  },
285
285
  {
286
286
  provide: 'SubscriptionPlanRepository',
287
- useFactory: (firestore) => {
288
- return new SubscriptionPlanFirestoreRepository(firestore.firestore);
287
+ useFactory: (app) => {
288
+ return new SubscriptionPlanFirestoreRepository(app.firestore());
289
289
  },
290
- deps: [AngularFirestore],
290
+ deps: [FirebaseAppProvider],
291
291
  },
292
292
  {
293
293
  provide: 'SubscriptionProductRepository',
294
- useFactory: (firestore) => {
295
- return new SubscriptionProductFirestoreRepository(firestore.firestore);
294
+ useFactory: (app) => {
295
+ return new SubscriptionProductFirestoreRepository(app.firestore());
296
296
  },
297
- deps: [AngularFirestore],
297
+ deps: [FirebaseAppProvider],
298
298
  },
299
299
  {
300
300
  provide: 'SubscriptionRepository',
301
- useFactory: (firestore) => {
302
- return new SubscriptionFirestoreRepository(firestore.firestore);
301
+ useFactory: (app) => {
302
+ return new SubscriptionFirestoreRepository(app.firestore());
303
303
  },
304
- deps: [AngularFirestore],
304
+ deps: [FirebaseAppProvider],
305
305
  },
306
306
  {
307
307
  provide: 'UserRepository',
308
- useFactory: (firestore) => {
309
- return new UserFirestoreRepository(firestore.firestore);
308
+ useFactory: (app) => {
309
+ return new UserFirestoreRepository(app.firestore());
310
310
  },
311
- deps: [AngularFirestore],
311
+ deps: [FirebaseAppProvider],
312
312
  },
313
313
  {
314
314
  provide: 'UserAddressRepository',
315
- useFactory: (firestore, userRepository) => {
316
- return new UserAddressFirestoreRepository(firestore.firestore, userRepository);
315
+ useFactory: (app, userRepository) => {
316
+ return new UserAddressFirestoreRepository(app.firestore(), userRepository);
317
317
  },
318
- deps: [AngularFirestore, 'UserRepository'],
318
+ deps: [FirebaseAppProvider, 'UserRepository'],
319
319
  },
320
320
  {
321
321
  provide: 'UserPaymentMethodRepository',
322
- useFactory: (firestore, userRepository) => {
323
- return new UserPaymentMethodFirestoreRepository(firestore.firestore, userRepository);
322
+ useFactory: (app, userRepository) => {
323
+ return new UserPaymentMethodFirestoreRepository(app.firestore(), userRepository);
324
324
  },
325
- deps: [AngularFirestore, 'UserRepository'],
325
+ deps: [FirebaseAppProvider, 'UserRepository'],
326
326
  },
327
327
  {
328
328
  provide: 'VariantRepository',
329
- useFactory: (firestore, productRepository) => {
330
- return new ProductVariantFirestoreRepository(firestore.firestore, productRepository);
329
+ useFactory: (app, productRepository) => {
330
+ return new ProductVariantFirestoreRepository(app.firestore(), productRepository);
331
331
  },
332
- deps: [AngularFirestore, 'ProductRepository'],
332
+ deps: [FirebaseAppProvider, 'ProductRepository'],
333
333
  },
334
334
  ],
335
335
  }]
336
336
  }] });
337
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1maXJlc3RvcmUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9saWIvYW5ndWxhci1maXJlc3RvcmUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzdELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGdCQUFnQixHQUdqQixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUMxRCxPQUFPLEVBRUwsMEJBQTBCLEVBRzFCLDJCQUEyQixFQUUzQiwyQkFBMkIsRUFDM0IsdUNBQXVDLEVBR3ZDLHlCQUF5QixFQUV6Qix1QkFBdUIsRUFHdkIsdUJBQXVCLEVBRXZCLDhCQUE4QixFQUM5QiwyQkFBMkIsRUFHM0Isd0JBQXdCLEVBRXhCLDBCQUEwQixFQUUxQiwwQkFBMEIsRUFDMUIsc0NBQXNDLEVBQ3RDLCtCQUErQixFQUMvQixzQ0FBc0MsRUFFdEMsbUNBQW1DLEVBRW5DLHNDQUFzQyxFQUl0Qyw4QkFBOEIsRUFDOUIsb0NBQW9DLEVBQ3BDLHVCQUF1QixFQUd2QixpQ0FBaUMsRUFFakMsb0NBQW9DLEdBQ3JDLE1BQU0sbUJBQW1CLENBQUE7O0FBMEsxQixNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLE1BQU0sQ0FBQyxhQUFhLENBQ2xCLE9BQXdCLEVBQ3hCLFlBQXlDO1FBRXpDLE9BQU87WUFDTCxRQUFRLEVBQUUsc0JBQXNCO1lBQ2hDLFNBQVMsRUFBRTtnQkFDVCxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFO2dCQUNoRCxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFO2FBQ3ZEO1NBQ0YsQ0FBQTtJQUNILENB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RSxtQkFBbUIsQ0FBQzt5QkFDOUM7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBBbmd1bGFyRmlyZU1vZHVsZSxcbiAgRklSRUJBU0VfQVBQX05BTUUsXG4gIEZJUkVCQVNFX09QVElPTlMsXG4gIEZpcmViYXNlQXBwQ29uZmlnLFxuICBGaXJlYmFzZU9wdGlvbnMsXG59IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnXG5pbXBvcnQgeyBBbmd1bGFyRmlyZXN0b3JlIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9maXJlc3RvcmUnXG5pbXBvcnQge1xuICBCZWF1dHlQcm9maWxlUmVwb3NpdG9yeSxcbiAgQnV5MldpbkZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIEJ1eTJXaW5SZXBvc2l0b3J5LFxuICBDYXRlZ29yeVJlcG9zaXRvcnksXG4gIENhdGVnb3J5RmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgQ2hlY2tvdXRSZXBvc2l0b3J5LFxuICBDaGVja291dEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIENoZWNrb3V0U3Vic2NyaXB0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgQ2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5LFxuICBDb3Vwb25SZXBvc2l0b3J5LFxuICBDb3Vwb25GaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBFZGl0aW9uUmVwb3NpdG9yeSxcbiAgSG9tZUZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIEhvbWVSZXBvc2l0b3J5LFxuICBMZWFkUmVwb3NpdG9yeSxcbiAgTGVhZEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIExlZ2FjeU9yZGVyUmVwb3NpdG9yeSxcbiAgTGVnYWN5T3JkZXJGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBTaG9wTWVudUZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFNob3BNZW51UmVwb3NpdG9yeSxcbiAgT3JkZXJSZXBvc2l0b3J5LFxuICBPcmRlckZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFBheW1lbnRSZXBvc2l0b3J5LFxuICBQYXltZW50RmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgUHJvZHVjdFJlcG9zaXRvcnksXG4gIFByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBTdWJzY3JpcHRpb25FZGl0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uUGF5bWVudEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFN1YnNjcmlwdGlvblBheW1lbnRSZXBvc2l0b3J5LFxuICBTdWJzY3JpcHRpb25QbGFuRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uUGxhblJlcG9zaXRvcnksXG4gIFN1YnNjcmlwdGlvblByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBTdWJzY3JpcHRpb25Qcm9kdWN0UmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcbiAgVXNlckFkZHJlc3NSZXBvc2l0b3J5LFxuICBVc2VyQWRkcmVzc0ZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFVzZXJCZWF1dHlQcm9maWxlRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgVXNlckZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFVzZXJSZXBvc2l0b3J5LFxuICBWYXJpYW50UmVwb3NpdG9yeSxcbiAgUHJvZHVjdFZhcmlhbnRGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBVc2VyUGF5bWVudE1ldGhvZFJlcG9zaXRvcnksXG4gIFVzZXJQYXltZW50TWV0aG9kRmlyZXN0b3JlUmVwb3NpdG9yeSxcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtBbmd1bGFyRmlyZU1vZHVsZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdCZWF1dHlQcm9maWxlUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlLCB1c2VyUmVwb3NpdG9yeTogVXNlckZpcmVzdG9yZVJlcG9zaXRvcnkpOiBCZWF1dHlQcm9maWxlUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgVXNlckJlYXV0eVByb2ZpbGVGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUsIHVzZXJSZXBvc2l0b3J5KVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlLCAnVXNlclJlcG9zaXRvcnknXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdCdXkyV2luUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlKTogQnV5MldpblJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IEJ1eTJXaW5GaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUpXG4gICAgICB9LFxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmVdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0NhdGVnb3J5UmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlKTogQ2F0ZWdvcnlSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYXRlZ29yeUZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnQ2hlY2tvdXRSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUpOiBDaGVja291dFJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IENoZWNrb3V0RmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUuZmlyZXN0b3JlKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdDaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IENoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgQ2hlY2tvdXRTdWJzY3JpcHRpb25GaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUpXG4gICAgICB9LFxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmVdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0NvdXBvblJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IENvdXBvblJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IENvdXBvbkZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnRWRpdGlvblJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKFxuICAgICAgICBmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUsXG4gICAgICAgIHN1YnNjcmlwdGlvblJlcG9zaXRvcnk6IFN1YnNjcmlwdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnksXG4gICAgICApOiBFZGl0aW9uUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uRWRpdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSwgc3Vic2NyaXB0aW9uUmVwb3NpdG9yeSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZSwgJ1N1YnNjcmlwdGlvblJlcG9zaXRvcnknXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdIb21lUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlKTogSG9tZVJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IEhvbWVGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUpXG4gICAgICB9LFxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmVdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0xlYWRSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUpOiBMZWFkUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgTGVhZEZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnTGVnYWN5T3JkZXJSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUpOiBMZWdhY3lPcmRlclJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IExlZ2FjeU9yZGVyRmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUuZmlyZXN0b3JlKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdTaG9wTWVudVJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IFNob3BNZW51UmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgU2hvcE1lbnVGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUpXG4gICAgICB9LFxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmVdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ09yZGVyUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlKTogT3JkZXJSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBPcmRlckZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnUGF5bWVudFJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IFBheW1lbnRSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQYXltZW50RmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUuZmlyZXN0b3JlKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdQcm9kdWN0UmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlKTogUHJvZHVjdFJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUpXG4gICAgICB9LFxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmVdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1N1YnNjcmlwdGlvblBheW1lbnRSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChcbiAgICAgICAgZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlLFxuICAgICAgICBzdWJzY3JpcHRpb25SZXBvc2l0b3J5OiBTdWJzY3JpcHRpb25GaXJlc3RvcmVSZXBvc2l0b3J5LFxuICAgICAgKTogU3Vic2NyaXB0aW9uUGF5bWVudFJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvblBheW1lbnRGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUsIHN1YnNjcmlwdGlvblJlcG9zaXRvcnkpXG4gICAgICB9LFxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmUsICdTdWJzY3JpcHRpb25SZXBvc2l0b3J5J10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnU3Vic2NyaXB0aW9uUGxhblJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IFN1YnNjcmlwdGlvblBsYW5SZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdWJzY3JpcHRpb25QbGFuRmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUuZmlyZXN0b3JlKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdTdWJzY3JpcHRpb25Qcm9kdWN0UmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlKTogU3Vic2NyaXB0aW9uUHJvZHVjdFJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvblByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUpXG4gICAgICB9LFxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmVdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1N1YnNjcmlwdGlvblJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IFN1YnNjcmlwdGlvblJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnVXNlclJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IFVzZXJSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBVc2VyRmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUuZmlyZXN0b3JlKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdVc2VyQWRkcmVzc1JlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSwgdXNlclJlcG9zaXRvcnk6IFVzZXJGaXJlc3RvcmVSZXBvc2l0b3J5KTogVXNlckFkZHJlc3NSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBVc2VyQWRkcmVzc0ZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSwgdXNlclJlcG9zaXRvcnkpXG4gICAgICB9LFxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmUsICdVc2VyUmVwb3NpdG9yeSddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1VzZXJQYXltZW50TWV0aG9kUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoXG4gICAgICAgIGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSxcbiAgICAgICAgdXNlclJlcG9zaXRvcnk6IFVzZXJGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICAgICAgKTogVXNlclBheW1lbnRNZXRob2RSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBVc2VyUGF5bWVudE1ldGhvZEZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSwgdXNlclJlcG9zaXRvcnkpXG4gICAgICB9LFxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmUsICdVc2VyUmVwb3NpdG9yeSddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1ZhcmlhbnRSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUsIHByb2R1Y3RSZXBvc2l0b3J5OiBQcm9kdWN0RmlyZXN0b3JlUmVwb3NpdG9yeSk6IFZhcmlhbnRSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9kdWN0VmFyaWFudEZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSwgcHJvZHVjdFJlcG9zaXRvcnkpXG4gICAgICB9LFxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmUsICdQcm9kdWN0UmVwb3NpdG9yeSddLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJGaXJlc3RvcmVNb2R1bGUge1xuICBzdGF0aWMgaW5pdGlhbGl6ZUFwcChcbiAgICBvcHRpb25zOiBGaXJlYmFzZU9wdGlvbnMsXG4gICAgbmFtZU9yQ29uZmlnPzogc3RyaW5nIHwgRmlyZWJhc2VBcHBDb25maWcsXG4gICk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QW5ndWxhckZpcmVNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEFuZ3VsYXJGaXJlc3RvcmVNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBGSVJFQkFTRV9PUFRJT05TLCB1c2VWYWx1ZTogb3B0aW9ucyB9LFxuICAgICAgICB7IHByb3ZpZGU6IEZJUkVCQVNFX0FQUF9OQU1FLCB1c2VWYWx1ZTogbmFtZU9yQ29uZmlnIH0sXG4gICAgICBdLFxuICAgIH1cbiAgfVxufVxuIl19
337
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1maXJlc3RvcmUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9saWIvYW5ndWxhci1maXJlc3RvcmUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTdELE9BQU8sRUFFTCwwQkFBMEIsRUFHMUIsMkJBQTJCLEVBRTNCLDJCQUEyQixFQUMzQix1Q0FBdUMsRUFHdkMseUJBQXlCLEVBRXpCLHVCQUF1QixFQUd2Qix1QkFBdUIsRUFFdkIsOEJBQThCLEVBQzlCLDJCQUEyQixFQUczQix3QkFBd0IsRUFFeEIsMEJBQTBCLEVBRTFCLDBCQUEwQixFQUMxQixzQ0FBc0MsRUFDdEMsK0JBQStCLEVBQy9CLHNDQUFzQyxFQUV0QyxtQ0FBbUMsRUFFbkMsc0NBQXNDLEVBSXRDLDhCQUE4QixFQUM5QixvQ0FBb0MsRUFDcEMsdUJBQXVCLEVBR3ZCLGlDQUFpQyxFQUVqQyxvQ0FBb0MsR0FDckMsTUFBTSxtQkFBbUIsQ0FBQTtBQUUxQixPQUFPLEVBQTZCLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFBOztBQWdMakgsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxNQUFNLENBQUMsYUFBYSxDQUNsQixPQUF3QixFQUN4QixZQUF5QztRQUV6QyxPQUFPO1lBQ0wsUUFBUSxFQUFFLHNCQUFzQjtZQUNoQyxTQUFTLEVBQUU7Z0JBQ1QsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRTtnQkFDaEQsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRTthQUN2RDtTQUNGLENBQUE7SUFDSCxDQUFDOztvSEFaVSxzQkFBc0I7cUhBQXRCLHNCQUFzQjtxSEFBdEIsc0JBQXNCLGFB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NkMsRUFDMUIsRUFBRTtnQ0FDckIsT0FBTyxJQUFJLGlDQUFpQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFBOzRCQUNsRixDQUFDOzRCQUNELElBQUksRUFBRSxDQUFDLG1CQUFtQixFQUFFLG1CQUFtQixDQUFDO3lCQUNqRDtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEZpcmViYXNlQXBwQ29uZmlnLCBGaXJlYmFzZU9wdGlvbnMgfSBmcm9tICdAZmlyZWJhc2UvYXBwLXR5cGVzJ1xuaW1wb3J0IHtcbiAgQmVhdXR5UHJvZmlsZVJlcG9zaXRvcnksXG4gIEJ1eTJXaW5GaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBCdXkyV2luUmVwb3NpdG9yeSxcbiAgQ2F0ZWdvcnlSZXBvc2l0b3J5LFxuICBDYXRlZ29yeUZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIENoZWNrb3V0UmVwb3NpdG9yeSxcbiAgQ2hlY2tvdXRGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBDaGVja291dFN1YnNjcmlwdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIENoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcbiAgQ291cG9uUmVwb3NpdG9yeSxcbiAgQ291cG9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgRWRpdGlvblJlcG9zaXRvcnksXG4gIEhvbWVGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBIb21lUmVwb3NpdG9yeSxcbiAgTGVhZFJlcG9zaXRvcnksXG4gIExlYWRGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBMZWdhY3lPcmRlclJlcG9zaXRvcnksXG4gIExlZ2FjeU9yZGVyRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU2hvcE1lbnVGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBTaG9wTWVudVJlcG9zaXRvcnksXG4gIE9yZGVyUmVwb3NpdG9yeSxcbiAgT3JkZXJGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBQYXltZW50UmVwb3NpdG9yeSxcbiAgUGF5bWVudEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFByb2R1Y3RSZXBvc2l0b3J5LFxuICBQcm9kdWN0RmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uRWRpdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFN1YnNjcmlwdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFN1YnNjcmlwdGlvblBheW1lbnRGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBTdWJzY3JpcHRpb25QYXltZW50UmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uUGxhbkZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFN1YnNjcmlwdGlvblBsYW5SZXBvc2l0b3J5LFxuICBTdWJzY3JpcHRpb25Qcm9kdWN0RmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uUHJvZHVjdFJlcG9zaXRvcnksXG4gIFN1YnNjcmlwdGlvblJlcG9zaXRvcnksXG4gIFVzZXJBZGRyZXNzUmVwb3NpdG9yeSxcbiAgVXNlckFkZHJlc3NGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBVc2VyQmVhdXR5UHJvZmlsZUZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFVzZXJGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBVc2VyUmVwb3NpdG9yeSxcbiAgVmFyaWFudFJlcG9zaXRvcnksXG4gIFByb2R1Y3RWYXJpYW50RmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgVXNlclBheW1lbnRNZXRob2RSZXBvc2l0b3J5LFxuICBVc2VyUGF5bWVudE1ldGhvZEZpcmVzdG9yZVJlcG9zaXRvcnksXG59IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xuXG5pbXBvcnQgeyBDb25uZWN0QW5ndWxhckZpcmViYXNlQXBwLCBGSVJFQkFTRV9BUFBfTkFNRSwgRklSRUJBU0VfT1BUSU9OUywgRmlyZWJhc2VBcHBQcm92aWRlciB9IGZyb20gJy4vcHJvdmlkZXJzJ1xuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFtcbiAgICBGaXJlYmFzZUFwcFByb3ZpZGVyLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdCZWF1dHlQcm9maWxlUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoXG4gICAgICAgIGFwcDogQ29ubmVjdEFuZ3VsYXJGaXJlYmFzZUFwcCxcbiAgICAgICAgdXNlclJlcG9zaXRvcnk6IFVzZXJGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICAgICAgKTogQmVhdXR5UHJvZmlsZVJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFVzZXJCZWF1dHlQcm9maWxlRmlyZXN0b3JlUmVwb3NpdG9yeShhcHAuZmlyZXN0b3JlKCksIHVzZXJSZXBvc2l0b3J5KVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtGaXJlYmFzZUFwcFByb3ZpZGVyLCAnVXNlclJlcG9zaXRvcnknXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdCdXkyV2luUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoYXBwOiBDb25uZWN0QW5ndWxhckZpcmViYXNlQXBwKTogQnV5MldpblJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IEJ1eTJXaW5GaXJlc3RvcmVSZXBvc2l0b3J5KGFwcC5maXJlc3RvcmUoKSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbRmlyZWJhc2VBcHBQcm92aWRlcl0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnQ2F0ZWdvcnlSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChhcHA6IENvbm5lY3RBbmd1bGFyRmlyZWJhc2VBcHApOiBDYXRlZ29yeVJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IENhdGVnb3J5RmlyZXN0b3JlUmVwb3NpdG9yeShhcHAuZmlyZXN0b3JlKCkpXG4gICAgICB9LFxuICAgICAgZGVwczogW0ZpcmViYXNlQXBwUHJvdmlkZXJdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0NoZWNrb3V0UmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoYXBwOiBDb25uZWN0QW5ndWxhckZpcmViYXNlQXBwKTogQ2hlY2tvdXRSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDaGVja291dEZpcmVzdG9yZVJlcG9zaXRvcnkoYXBwLmZpcmVzdG9yZSgpKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtGaXJlYmFzZUFwcFByb3ZpZGVyXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdDaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKGFwcDogQ29ubmVjdEFuZ3VsYXJGaXJlYmFzZUFwcCk6IENoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgQ2hlY2tvdXRTdWJzY3JpcHRpb25GaXJlc3RvcmVSZXBvc2l0b3J5KGFwcC5maXJlc3RvcmUoKSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbRmlyZWJhc2VBcHBQcm92aWRlcl0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnQ291cG9uUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoYXBwOiBDb25uZWN0QW5ndWxhckZpcmViYXNlQXBwKTogQ291cG9uUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgQ291cG9uRmlyZXN0b3JlUmVwb3NpdG9yeShhcHAuZmlyZXN0b3JlKCkpXG4gICAgICB9LFxuICAgICAgZGVwczogW0ZpcmViYXNlQXBwUHJvdmlkZXJdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0VkaXRpb25SZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChcbiAgICAgICAgYXBwOiBDb25uZWN0QW5ndWxhckZpcmViYXNlQXBwLFxuICAgICAgICBzdWJzY3JpcHRpb25SZXBvc2l0b3J5OiBTdWJzY3JpcHRpb25GaXJlc3RvcmVSZXBvc2l0b3J5LFxuICAgICAgKTogRWRpdGlvblJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvbkVkaXRpb25GaXJlc3RvcmVSZXBvc2l0b3J5KGFwcC5maXJlc3RvcmUoKSwgc3Vic2NyaXB0aW9uUmVwb3NpdG9yeSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbRmlyZWJhc2VBcHBQcm92aWRlciwgJ1N1YnNjcmlwdGlvblJlcG9zaXRvcnknXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdIb21lUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoYXBwOiBDb25uZWN0QW5ndWxhckZpcmViYXNlQXBwKTogSG9tZVJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IEhvbWVGaXJlc3RvcmVSZXBvc2l0b3J5KGFwcC5maXJlc3RvcmUoKSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbRmlyZWJhc2VBcHBQcm92aWRlcl0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnTGVhZFJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKGFwcDogQ29ubmVjdEFuZ3VsYXJGaXJlYmFzZUFwcCk6IExlYWRSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBMZWFkRmlyZXN0b3JlUmVwb3NpdG9yeShhcHAuZmlyZXN0b3JlKCkpXG4gICAgICB9LFxuICAgICAgZGVwczogW0ZpcmViYXNlQXBwUHJvdmlkZXJdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0xlZ2FjeU9yZGVyUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoYXBwOiBDb25uZWN0QW5ndWxhckZpcmViYXNlQXBwKTogTGVnYWN5T3JkZXJSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBMZWdhY3lPcmRlckZpcmVzdG9yZVJlcG9zaXRvcnkoYXBwLmZpcmVzdG9yZSgpKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtGaXJlYmFzZUFwcFByb3ZpZGVyXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdTaG9wTWVudVJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKGFwcDogQ29ubmVjdEFuZ3VsYXJGaXJlYmFzZUFwcCk6IFNob3BNZW51UmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgU2hvcE1lbnVGaXJlc3RvcmVSZXBvc2l0b3J5KGFwcC5maXJlc3RvcmUoKSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbRmlyZWJhc2VBcHBQcm92aWRlcl0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnT3JkZXJSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChhcHA6IENvbm5lY3RBbmd1bGFyRmlyZWJhc2VBcHApOiBPcmRlclJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IE9yZGVyRmlyZXN0b3JlUmVwb3NpdG9yeShhcHAuZmlyZXN0b3JlKCkpXG4gICAgICB9LFxuICAgICAgZGVwczogW0ZpcmViYXNlQXBwUHJvdmlkZXJdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1BheW1lbnRSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChhcHA6IENvbm5lY3RBbmd1bGFyRmlyZWJhc2VBcHApOiBQYXltZW50UmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUGF5bWVudEZpcmVzdG9yZVJlcG9zaXRvcnkoYXBwLmZpcmVzdG9yZSgpKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtGaXJlYmFzZUFwcFByb3ZpZGVyXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdQcm9kdWN0UmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoYXBwOiBDb25uZWN0QW5ndWxhckZpcmViYXNlQXBwKTogUHJvZHVjdFJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5KGFwcC5maXJlc3RvcmUoKSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbRmlyZWJhc2VBcHBQcm92aWRlcl0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnU3Vic2NyaXB0aW9uUGF5bWVudFJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKFxuICAgICAgICBhcHA6IENvbm5lY3RBbmd1bGFyRmlyZWJhc2VBcHAsXG4gICAgICAgIHN1YnNjcmlwdGlvblJlcG9zaXRvcnk6IFN1YnNjcmlwdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnksXG4gICAgICApOiBTdWJzY3JpcHRpb25QYXltZW50UmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uUGF5bWVudEZpcmVzdG9yZVJlcG9zaXRvcnkoYXBwLmZpcmVzdG9yZSgpLCBzdWJzY3JpcHRpb25SZXBvc2l0b3J5KVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtGaXJlYmFzZUFwcFByb3ZpZGVyLCAnU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1N1YnNjcmlwdGlvblBsYW5SZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChhcHA6IENvbm5lY3RBbmd1bGFyRmlyZWJhc2VBcHApOiBTdWJzY3JpcHRpb25QbGFuUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uUGxhbkZpcmVzdG9yZVJlcG9zaXRvcnkoYXBwLmZpcmVzdG9yZSgpKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtGaXJlYmFzZUFwcFByb3ZpZGVyXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdTdWJzY3JpcHRpb25Qcm9kdWN0UmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoYXBwOiBDb25uZWN0QW5ndWxhckZpcmViYXNlQXBwKTogU3Vic2NyaXB0aW9uUHJvZHVjdFJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvblByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5KGFwcC5maXJlc3RvcmUoKSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbRmlyZWJhc2VBcHBQcm92aWRlcl0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnU3Vic2NyaXB0aW9uUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoYXBwOiBDb25uZWN0QW5ndWxhckZpcmViYXNlQXBwKTogU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeShhcHAuZmlyZXN0b3JlKCkpXG4gICAgICB9LFxuICAgICAgZGVwczogW0ZpcmViYXNlQXBwUHJvdmlkZXJdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1VzZXJSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChhcHA6IENvbm5lY3RBbmd1bGFyRmlyZWJhc2VBcHApOiBVc2VyUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgVXNlckZpcmVzdG9yZVJlcG9zaXRvcnkoYXBwLmZpcmVzdG9yZSgpKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtGaXJlYmFzZUFwcFByb3ZpZGVyXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdVc2VyQWRkcmVzc1JlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKGFwcDogQ29ubmVjdEFuZ3VsYXJGaXJlYmFzZUFwcCwgdXNlclJlcG9zaXRvcnk6IFVzZXJGaXJlc3RvcmVSZXBvc2l0b3J5KTogVXNlckFkZHJlc3NSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBVc2VyQWRkcmVzc0ZpcmVzdG9yZVJlcG9zaXRvcnkoYXBwLmZpcmVzdG9yZSgpLCB1c2VyUmVwb3NpdG9yeSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbRmlyZWJhc2VBcHBQcm92aWRlciwgJ1VzZXJSZXBvc2l0b3J5J10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnVXNlclBheW1lbnRNZXRob2RSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChcbiAgICAgICAgYXBwOiBDb25uZWN0QW5ndWxhckZpcmViYXNlQXBwLFxuICAgICAgICB1c2VyUmVwb3NpdG9yeTogVXNlckZpcmVzdG9yZVJlcG9zaXRvcnksXG4gICAgICApOiBVc2VyUGF5bWVudE1ldGhvZFJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFVzZXJQYXltZW50TWV0aG9kRmlyZXN0b3JlUmVwb3NpdG9yeShhcHAuZmlyZXN0b3JlKCksIHVzZXJSZXBvc2l0b3J5KVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtGaXJlYmFzZUFwcFByb3ZpZGVyLCAnVXNlclJlcG9zaXRvcnknXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdWYXJpYW50UmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoXG4gICAgICAgIGFwcDogQ29ubmVjdEFuZ3VsYXJGaXJlYmFzZUFwcCxcbiAgICAgICAgcHJvZHVjdFJlcG9zaXRvcnk6IFByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICAgICAgKTogVmFyaWFudFJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb2R1Y3RWYXJpYW50RmlyZXN0b3JlUmVwb3NpdG9yeShhcHAuZmlyZXN0b3JlKCksIHByb2R1Y3RSZXBvc2l0b3J5KVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtGaXJlYmFzZUFwcFByb3ZpZGVyLCAnUHJvZHVjdFJlcG9zaXRvcnknXSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFyRmlyZXN0b3JlTW9kdWxlIHtcbiAgc3RhdGljIGluaXRpYWxpemVBcHAoXG4gICAgb3B0aW9uczogRmlyZWJhc2VPcHRpb25zLFxuICAgIG5hbWVPckNvbmZpZz86IHN0cmluZyB8IEZpcmViYXNlQXBwQ29uZmlnLFxuICApOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFuZ3VsYXJGaXJlc3RvcmVNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEFuZ3VsYXJGaXJlc3RvcmVNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBGSVJFQkFTRV9PUFRJT05TLCB1c2VWYWx1ZTogb3B0aW9ucyB9LFxuICAgICAgICB7IHByb3ZpZGU6IEZJUkVCQVNFX0FQUF9OQU1FLCB1c2VWYWx1ZTogbmFtZU9yQ29uZmlnIH0sXG4gICAgICBdLFxuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,18 @@
1
+ import { isObject, isString } from '@infrab4a/connect';
2
+ import firebase from 'firebase/app';
3
+ export const FirebaseAppFactory = (options, zone, nameOrConfig) => {
4
+ const name = ((isString(nameOrConfig) && nameOrConfig) || '[DEFAULT]').toString();
5
+ const config = ((isObject(nameOrConfig) && nameOrConfig) || {});
6
+ config.name = config.name || name;
7
+ const existingApp = firebase.apps.filter((firebaseApp) => firebaseApp && firebaseApp.name === config.name)[0];
8
+ const app = existingApp || zone.runOutsideAngular(() => firebase.initializeApp(options, config));
9
+ try {
10
+ if (JSON.stringify(options) !== JSON.stringify(app.options)) {
11
+ console.error('error', `${app.name} Firebase App already initialized with different options : '.'
12
+ }`);
13
+ }
14
+ }
15
+ catch (e) { }
16
+ return app;
17
+ };
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZWJhc2UtYXBwLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL2xpYi9mYWN0b3JpZXMvZmlyZWJhc2UtYXBwLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN0RCxPQUFPLFFBQVEsTUFBTSxjQUFjLENBQUE7QUFFbkMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FDaEMsT0FBd0IsRUFDeEIsSUFBWSxFQUNaLFlBQWdELEVBQ2hELEVBQUU7SUFDRixNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLFlBQVksQ0FBQyxJQUFJLFdBQVcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ2pGLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxDQUFzQixDQUFBO0lBRXBGLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUE7SUFFakMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUU3RyxNQUFNLEdBQUcsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLE1BQWEsQ0FBQyxDQUFDLENBQUE7SUFFdkcsSUFBSTtRQUNGLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMzRCxPQUFPLENBQUMsS0FBSyxDQUNYLE9BQU8sRUFDUCxHQUFHLEdBQUcsQ0FBQyxJQUFJO1VBQ1QsQ0FDSCxDQUFBO1NBQ0Y7S0FDRjtJQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUU7SUFFZCxPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBGaXJlYmFzZUFwcENvbmZpZywgRmlyZWJhc2VPcHRpb25zIH0gZnJvbSAnQGZpcmViYXNlL2FwcC10eXBlcydcbmltcG9ydCB7IGlzT2JqZWN0LCBpc1N0cmluZyB9IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xuaW1wb3J0IGZpcmViYXNlIGZyb20gJ2ZpcmViYXNlL2FwcCdcblxuZXhwb3J0IGNvbnN0IEZpcmViYXNlQXBwRmFjdG9yeSA9IChcbiAgb3B0aW9uczogRmlyZWJhc2VPcHRpb25zLFxuICB6b25lOiBOZ1pvbmUsXG4gIG5hbWVPckNvbmZpZz86IHN0cmluZyB8IEZpcmViYXNlQXBwQ29uZmlnIHwgbnVsbCxcbikgPT4ge1xuICBjb25zdCBuYW1lID0gKChpc1N0cmluZyhuYW1lT3JDb25maWcpICYmIG5hbWVPckNvbmZpZykgfHwgJ1tERUZBVUxUXScpLnRvU3RyaW5nKClcbiAgY29uc3QgY29uZmlnID0gKChpc09iamVjdChuYW1lT3JDb25maWcpICYmIG5hbWVPckNvbmZpZykgfHwge30pIGFzIEZpcmViYXNlQXBwQ29uZmlnXG5cbiAgY29uZmlnLm5hbWUgPSBjb25maWcubmFtZSB8fCBuYW1lXG5cbiAgY29uc3QgZXhpc3RpbmdBcHAgPSBmaXJlYmFzZS5hcHBzLmZpbHRlcigoZmlyZWJhc2VBcHApID0+IGZpcmViYXNlQXBwICYmIGZpcmViYXNlQXBwLm5hbWUgPT09IGNvbmZpZy5uYW1lKVswXVxuXG4gIGNvbnN0IGFwcCA9IGV4aXN0aW5nQXBwIHx8IHpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gZmlyZWJhc2UuaW5pdGlhbGl6ZUFwcChvcHRpb25zLCBjb25maWcgYXMgYW55KSlcblxuICB0cnkge1xuICAgIGlmIChKU09OLnN0cmluZ2lmeShvcHRpb25zKSAhPT0gSlNPTi5zdHJpbmdpZnkoYXBwLm9wdGlvbnMpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAnZXJyb3InLFxuICAgICAgICBgJHthcHAubmFtZX0gRmlyZWJhc2UgQXBwIGFscmVhZHkgaW5pdGlhbGl6ZWQgd2l0aCBkaWZmZXJlbnQgb3B0aW9ucyA6ICcuJ1xuICAgICAgICB9YCxcbiAgICAgIClcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHt9XG5cbiAgcmV0dXJuIGFwcFxufVxuIl19
@@ -0,0 +1,3 @@
1
+ import firebase from 'firebase';
2
+ export const FirebaseFirestoreFactory = () => firebase.firestore();
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZWJhc2UtZmlyZXN0b3JlLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL2xpYi9mYWN0b3JpZXMvZmlyZWJhc2UtZmlyZXN0b3JlLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxRQUFRLE1BQU0sVUFBVSxDQUFBO0FBRS9CLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLEdBQTJCLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaXJlYmFzZUZpcmVzdG9yZSBhcyBGaXJlYmFzZUZpcmVzdG9yZVR5cGVzIH0gZnJvbSAnQGZpcmViYXNlL2ZpcmVzdG9yZS10eXBlcydcbmltcG9ydCBmaXJlYmFzZSBmcm9tICdmaXJlYmFzZSdcblxuZXhwb3J0IGNvbnN0IEZpcmViYXNlRmlyZXN0b3JlRmFjdG9yeSA9ICgpOiBGaXJlYmFzZUZpcmVzdG9yZVR5cGVzID0+IGZpcmViYXNlLmZpcmVzdG9yZSgpXG4iXX0=
@@ -0,0 +1,12 @@
1
+ import { InjectionToken, NgZone, Optional } from '@angular/core';
2
+ import { FirebaseAppFactory } from '../factories/firebase-app.factory';
3
+ export const FIREBASE_OPTIONS = new InjectionToken('connect-angular.app.options');
4
+ export const FIREBASE_APP_NAME = new InjectionToken('connect-angular.app.nameOrConfig');
5
+ export class ConnectAngularFirebaseApp {
6
+ }
7
+ export const FirebaseAppProvider = {
8
+ provide: ConnectAngularFirebaseApp,
9
+ useFactory: FirebaseAppFactory,
10
+ deps: [FIREBASE_OPTIONS, NgZone, [new Optional(), FIREBASE_APP_NAME]],
11
+ };
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZWJhc2UtYXBwLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9saWIvcHJvdmlkZXJzL2ZpcmViYXNlLWFwcC5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFHaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFFdEUsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQWtCLDZCQUE2QixDQUFDLENBQUE7QUFDbEcsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQ2pELGtDQUFrQyxDQUNuQyxDQUFBO0FBRUQsTUFBTSxPQUFPLHlCQUF5QjtDQU9yQztBQUVELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQ2pDLE9BQU8sRUFBRSx5QkFBeUI7SUFDbEMsVUFBVSxFQUFFLGtCQUFrQjtJQUM5QixJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLGlCQUFpQixDQUFDLENBQUM7Q0FDdEUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBOZ1pvbmUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEZpcmViYXNlQXBwQ29uZmlnLCBGaXJlYmFzZU9wdGlvbnMgfSBmcm9tICdAZmlyZWJhc2UvYXBwLXR5cGVzJ1xuXG5pbXBvcnQgeyBGaXJlYmFzZUFwcEZhY3RvcnkgfSBmcm9tICcuLi9mYWN0b3JpZXMvZmlyZWJhc2UtYXBwLmZhY3RvcnknXG5cbmV4cG9ydCBjb25zdCBGSVJFQkFTRV9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuPEZpcmViYXNlT3B0aW9ucz4oJ2Nvbm5lY3QtYW5ndWxhci5hcHAub3B0aW9ucycpXG5leHBvcnQgY29uc3QgRklSRUJBU0VfQVBQX05BTUUgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nIHwgRmlyZWJhc2VBcHBDb25maWcgfCB1bmRlZmluZWQ+KFxuICAnY29ubmVjdC1hbmd1bGFyLmFwcC5uYW1lT3JDb25maWcnLFxuKVxuXG5leHBvcnQgY2xhc3MgQ29ubmVjdEFuZ3VsYXJGaXJlYmFzZUFwcCBpbXBsZW1lbnRzIFBhcnRpYWw8ZmlyZWJhc2UuYXBwLkFwcD4ge1xuICBuYW1lOiBzdHJpbmdcbiAgb3B0aW9uczoge31cbiAgYXV0aDogKCkgPT4gZmlyZWJhc2UuYXV0aC5BdXRoXG4gIHN0b3JhZ2U6IChzdG9yYWdlQnVja2V0Pzogc3RyaW5nKSA9PiBmaXJlYmFzZS5zdG9yYWdlLlN0b3JhZ2VcbiAgZmlyZXN0b3JlOiAoKSA9PiBmaXJlYmFzZS5maXJlc3RvcmUuRmlyZXN0b3JlXG4gIGZ1bmN0aW9uczogKHJlZ2lvbj86IHN0cmluZykgPT4gZmlyZWJhc2UuZnVuY3Rpb25zLkZ1bmN0aW9uc1xufVxuXG5leHBvcnQgY29uc3QgRmlyZWJhc2VBcHBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogQ29ubmVjdEFuZ3VsYXJGaXJlYmFzZUFwcCxcbiAgdXNlRmFjdG9yeTogRmlyZWJhc2VBcHBGYWN0b3J5LFxuICBkZXBzOiBbRklSRUJBU0VfT1BUSU9OUywgTmdab25lLCBbbmV3IE9wdGlvbmFsKCksIEZJUkVCQVNFX0FQUF9OQU1FXV0sXG59XG4iXX0=