@angular/fire 7.1.0-canary.ca6eac2 → 7.1.0-canary.f0b932a

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 (157) hide show
  1. package/analytics/analytics.module.d.ts +10 -5
  2. package/analytics/public_api.d.ts +2 -0
  3. package/analytics/screen-tracking.service.d.ts +42 -0
  4. package/analytics/user-tracking.service.d.ts +13 -0
  5. package/app/app.module.d.ts +3 -3
  6. package/app-check/app-check.module.d.ts +3 -3
  7. package/auth/auth.module.d.ts +3 -3
  8. package/bundles/angular-fire-analytics.umd.js +563 -35
  9. package/bundles/angular-fire-analytics.umd.js.map +1 -1
  10. package/bundles/angular-fire-app-check.umd.js +336 -18
  11. package/bundles/angular-fire-app-check.umd.js.map +1 -1
  12. package/bundles/angular-fire-app.umd.js +323 -3
  13. package/bundles/angular-fire-app.umd.js.map +1 -1
  14. package/bundles/angular-fire-auth.umd.js +324 -9
  15. package/bundles/angular-fire-auth.umd.js.map +1 -1
  16. package/bundles/angular-fire-compat-analytics.umd.js +16 -112
  17. package/bundles/angular-fire-compat-analytics.umd.js.map +1 -1
  18. package/bundles/angular-fire-compat-auth.umd.js +1 -1
  19. package/bundles/angular-fire-compat-auth.umd.js.map +1 -1
  20. package/bundles/angular-fire-compat-database.umd.js +1 -1
  21. package/bundles/angular-fire-compat-database.umd.js.map +1 -1
  22. package/bundles/angular-fire-compat-firestore.umd.js +1 -1
  23. package/bundles/angular-fire-compat-firestore.umd.js.map +1 -1
  24. package/bundles/angular-fire-compat-functions.umd.js +1 -1
  25. package/bundles/angular-fire-compat-functions.umd.js.map +1 -1
  26. package/bundles/angular-fire-compat-messaging.umd.js +5 -5
  27. package/bundles/angular-fire-compat-messaging.umd.js.map +1 -1
  28. package/bundles/angular-fire-compat-performance.umd.js +5 -5
  29. package/bundles/angular-fire-compat-performance.umd.js.map +1 -1
  30. package/bundles/angular-fire-compat-remote-config.umd.js +5 -5
  31. package/bundles/angular-fire-compat-remote-config.umd.js.map +1 -1
  32. package/bundles/angular-fire-compat-storage.umd.js +2 -1
  33. package/bundles/angular-fire-compat-storage.umd.js.map +1 -1
  34. package/bundles/angular-fire-compat.umd.js +38 -2
  35. package/bundles/angular-fire-compat.umd.js.map +1 -1
  36. package/bundles/angular-fire-database.umd.js +323 -6
  37. package/bundles/angular-fire-database.umd.js.map +1 -1
  38. package/bundles/angular-fire-firestore-lite.umd.js +4 -3
  39. package/bundles/angular-fire-firestore-lite.umd.js.map +1 -1
  40. package/bundles/angular-fire-firestore.umd.js +323 -8
  41. package/bundles/angular-fire-firestore.umd.js.map +1 -1
  42. package/bundles/angular-fire-functions.umd.js +323 -6
  43. package/bundles/angular-fire-functions.umd.js.map +1 -1
  44. package/bundles/angular-fire-messaging.umd.js +330 -9
  45. package/bundles/angular-fire-messaging.umd.js.map +1 -1
  46. package/bundles/angular-fire-performance.umd.js +339 -11
  47. package/bundles/angular-fire-performance.umd.js.map +1 -1
  48. package/bundles/angular-fire-remote-config.umd.js +353 -11
  49. package/bundles/angular-fire-remote-config.umd.js.map +1 -1
  50. package/bundles/angular-fire-storage.umd.js +324 -7
  51. package/bundles/angular-fire-storage.umd.js.map +1 -1
  52. package/bundles/angular-fire.umd.js +2 -373
  53. package/bundles/angular-fire.umd.js.map +1 -1
  54. package/compat/analytics/screen-tracking.service.d.ts +2 -2
  55. package/compat/cache.d.ts +1 -0
  56. package/compat/public_api.d.ts +1 -0
  57. package/compat/storage/interfaces.d.ts +1 -0
  58. package/compat/storage/ref.d.ts +2 -1
  59. package/core.d.ts +1 -3
  60. package/database/database.module.d.ts +3 -3
  61. package/docs/deploy/getting-started.md +62 -1
  62. package/docs/version-7-upgrade.md +1 -1
  63. package/esm2015/analytics/analytics.module.js +41 -20
  64. package/esm2015/analytics/public_api.js +3 -1
  65. package/esm2015/analytics/screen-tracking.service.js +147 -0
  66. package/esm2015/analytics/user-tracking.service.js +42 -0
  67. package/esm2015/app/app.module.js +12 -7
  68. package/esm2015/app-check/app-check.js +1 -2
  69. package/esm2015/app-check/app-check.module.js +19 -14
  70. package/esm2015/auth/auth.js +1 -2
  71. package/esm2015/auth/auth.module.js +10 -9
  72. package/esm2015/compat/analytics/analytics.js +2 -3
  73. package/esm2015/compat/analytics/screen-tracking.service.js +11 -100
  74. package/esm2015/compat/auth/auth.js +2 -3
  75. package/esm2015/compat/cache.js +32 -0
  76. package/esm2015/compat/database/database.js +2 -3
  77. package/esm2015/compat/firestore/firestore.js +2 -3
  78. package/esm2015/compat/functions/functions.js +2 -3
  79. package/esm2015/compat/messaging/messaging.js +3 -3
  80. package/esm2015/compat/performance/performance.js +2 -3
  81. package/esm2015/compat/public_api.js +2 -1
  82. package/esm2015/compat/remote-config/remote-config.js +4 -5
  83. package/esm2015/compat/storage/interfaces.js +1 -1
  84. package/esm2015/compat/storage/ref.js +2 -1
  85. package/esm2015/compat/storage/storage.js +3 -3
  86. package/esm2015/core.js +4 -57
  87. package/esm2015/database/database.module.js +9 -7
  88. package/esm2015/firestore/firestore.module.js +9 -9
  89. package/esm2015/firestore/lite/lite.module.js +7 -6
  90. package/esm2015/functions/functions.module.js +9 -7
  91. package/esm2015/messaging/messaging.module.js +16 -10
  92. package/esm2015/performance/performance.module.js +22 -8
  93. package/esm2015/remote-config/firebase.js +3 -2
  94. package/esm2015/remote-config/remote-config.module.js +34 -8
  95. package/esm2015/storage/storage.module.js +10 -8
  96. package/fesm2015/angular-fire-analytics.js +219 -33
  97. package/fesm2015/angular-fire-analytics.js.map +1 -1
  98. package/fesm2015/angular-fire-app-check.js +18 -14
  99. package/fesm2015/angular-fire-app-check.js.map +1 -1
  100. package/fesm2015/angular-fire-app.js +11 -6
  101. package/fesm2015/angular-fire-app.js.map +1 -1
  102. package/fesm2015/angular-fire-auth.js +9 -9
  103. package/fesm2015/angular-fire-auth.js.map +1 -1
  104. package/fesm2015/angular-fire-compat-analytics.js +10 -98
  105. package/fesm2015/angular-fire-compat-analytics.js.map +1 -1
  106. package/fesm2015/angular-fire-compat-auth.js +2 -2
  107. package/fesm2015/angular-fire-compat-auth.js.map +1 -1
  108. package/fesm2015/angular-fire-compat-database.js +2 -2
  109. package/fesm2015/angular-fire-compat-database.js.map +1 -1
  110. package/fesm2015/angular-fire-compat-firestore.js +2 -2
  111. package/fesm2015/angular-fire-compat-firestore.js.map +1 -1
  112. package/fesm2015/angular-fire-compat-functions.js +2 -2
  113. package/fesm2015/angular-fire-compat-functions.js.map +1 -1
  114. package/fesm2015/angular-fire-compat-messaging.js +2 -2
  115. package/fesm2015/angular-fire-compat-messaging.js.map +1 -1
  116. package/fesm2015/angular-fire-compat-performance.js +2 -2
  117. package/fesm2015/angular-fire-compat-performance.js.map +1 -1
  118. package/fesm2015/angular-fire-compat-remote-config.js +4 -4
  119. package/fesm2015/angular-fire-compat-remote-config.js.map +1 -1
  120. package/fesm2015/angular-fire-compat-storage.js +3 -2
  121. package/fesm2015/angular-fire-compat-storage.js.map +1 -1
  122. package/fesm2015/angular-fire-compat.js +34 -3
  123. package/fesm2015/angular-fire-compat.js.map +1 -1
  124. package/fesm2015/angular-fire-database.js +8 -6
  125. package/fesm2015/angular-fire-database.js.map +1 -1
  126. package/fesm2015/angular-fire-firestore-lite.js +6 -5
  127. package/fesm2015/angular-fire-firestore-lite.js.map +1 -1
  128. package/fesm2015/angular-fire-firestore.js +8 -8
  129. package/fesm2015/angular-fire-firestore.js.map +1 -1
  130. package/fesm2015/angular-fire-functions.js +8 -6
  131. package/fesm2015/angular-fire-functions.js.map +1 -1
  132. package/fesm2015/angular-fire-messaging.js +15 -9
  133. package/fesm2015/angular-fire-messaging.js.map +1 -1
  134. package/fesm2015/angular-fire-performance.js +21 -7
  135. package/fesm2015/angular-fire-performance.js.map +1 -1
  136. package/fesm2015/angular-fire-remote-config.js +36 -10
  137. package/fesm2015/angular-fire-remote-config.js.map +1 -1
  138. package/fesm2015/angular-fire-storage.js +9 -7
  139. package/fesm2015/angular-fire-storage.js.map +1 -1
  140. package/fesm2015/angular-fire.js +4 -57
  141. package/fesm2015/angular-fire.js.map +1 -1
  142. package/firestore/firestore.module.d.ts +3 -3
  143. package/firestore/lite/lite.module.d.ts +2 -2
  144. package/functions/functions.module.d.ts +3 -3
  145. package/messaging/messaging.module.d.ts +3 -3
  146. package/package.json +8 -2
  147. package/performance/performance.module.d.ts +4 -4
  148. package/remote-config/firebase.d.ts +2 -1
  149. package/remote-config/remote-config.module.d.ts +4 -4
  150. package/schematics/deploy/actions.js +19 -13
  151. package/schematics/deploy/schema.json +4 -0
  152. package/schematics/firebaseTools.js +2 -2
  153. package/schematics/setup/ssr.js +7 -1
  154. package/schematics/setup/static.js +9 -3
  155. package/schematics/utils.js +1 -1
  156. package/schematics/versions.json +1 -1
  157. package/storage/storage.module.d.ts +3 -3
@@ -140,4 +140,65 @@ The above configuration specifies the following:
140
140
  2. `ng deploy projectName` will deploy the specified project with default configuration.
141
141
  3. `ng deploy projectName --prod` or `ng deploy projectName --configuration='production'` will deploy `projectName` with production build settings to your production environment.
142
142
 
143
- All of the options are optional. If you do not specify a `buildTarget`, it defaults to a production build (`projectName:build:production`). If you do not specify a `firebaseProject`, it defaults to the first matching deploy target found in your `.firebaserc` (where your projectName is the same as your Firebase deploy target name). The `configurations` section is also optional.
143
+ All of the options are optional. If you do not specify a `buildTarget`, it defaults to a production build (`projectName:build:production`). If you do not specify a `firebaseProject`, it defaults to the first matching deploy target found in your `.firebaserc` (where your projectName is the same as your Firebase deploy target name). The `configurations` section is also optional.
144
+
145
+ ### Working with multiple project sites
146
+
147
+ For example, if you have muti sites config in firebase.json like this:
148
+ ```
149
+ {
150
+ "hosting": [
151
+ {
152
+ "target": "custom-site",
153
+ "public": "public/my-custom-site",
154
+ "ignore": [
155
+ "firebase.json",
156
+ "**/.*",
157
+ "**/node_modules/**"
158
+ ],
159
+ "rewrites": [
160
+ {
161
+ "source": "**",
162
+ "destination": "/index.html"
163
+ }
164
+ ]
165
+ }
166
+ ],
167
+ ```
168
+
169
+ If you have multiple build targets and deploy targets, it is possible to specify them in your `angular.json` or `workspace.json`.
170
+
171
+ It is possible to use either your project name or project alias in `siteTarget`.
172
+
173
+ You may specify a `siteTarget` in your `options` as follows:
174
+
175
+ ```json
176
+ "deploy": {
177
+ "builder": "@angular/fire:deploy",
178
+ "options": {
179
+ "buildTarget": "projectName:build",
180
+ "firebaseProject": "developmentProject",
181
+ "siteTarget": "yourDefaultSiteTarget"
182
+ },
183
+ "configurations": {
184
+ "production": {
185
+ "buildTarget": "projectName:build:production",
186
+ "firebaseProject": "productionProject",
187
+ "siteTarget": "yourProdSiteTarget"
188
+ },
189
+ "storybook": {
190
+ "buildTarget": "projectName:build-storybook",
191
+ "firebaseProject": "developmentProject",
192
+ "siteTarget": "yourStorybookSiteTarget"
193
+ }
194
+ }
195
+ }
196
+ ```
197
+
198
+ The above configuration specifies the following:
199
+
200
+ 1. `ng deploy` will deploy the default project with default configuration.
201
+ 2. `ng deploy projectName` will deploy the specified project with default configuration.
202
+ 3. `ng deploy projectName --configuration=storybook --siteTarget=mySiteTarget` will deploy `projectName` to `mySiteTarget` with configuration`storybook`.
203
+
204
+ All of the options are optional
@@ -103,7 +103,7 @@ In AngularFire v7 working with multiple instances was difficult, in the new SDK
103
103
 
104
104
  ```ts
105
105
  import { FirebaseApp, FirebaseApps } from '@angular/fire/app';
106
- import { Storage, StorageIsntances } from '@angular/fire/storage';
106
+ import { Storage, StorageInstances } from '@angular/fire/storage';
107
107
 
108
108
  export class Foo {
109
109
  constructor(
@@ -1,22 +1,33 @@
1
- import { NgModule, Optional, NgZone, InjectionToken, APP_INITIALIZER } from '@angular/core';
1
+ import { NgModule, Optional, NgZone, InjectionToken, APP_INITIALIZER, Injector } from '@angular/core';
2
2
  import { isSupported } from 'firebase/analytics';
3
- import { ɵgetDefaultInstanceOf, ɵmemoizeInstance, ɵAngularFireSchedulers, VERSION } from '@angular/fire';
3
+ import { ɵgetDefaultInstanceOf, ɵAngularFireSchedulers, VERSION } from '@angular/fire';
4
4
  import { Analytics, ANALYTICS_PROVIDER_NAME, AnalyticsInstances } from './analytics';
5
5
  import { FirebaseApps, FirebaseApp } from '@angular/fire/app';
6
6
  import { registerVersion } from 'firebase/app';
7
+ import { ScreenTrackingService } from './screen-tracking.service';
8
+ import { UserTrackingService } from './user-tracking.service';
7
9
  import * as i0 from "@angular/core";
8
- const PROVIDED_ANALYTICS_INSTANCES = new InjectionToken('angularfire2.analytics-instances');
10
+ import * as i1 from "./screen-tracking.service";
11
+ import * as i2 from "./user-tracking.service";
12
+ export const PROVIDED_ANALYTICS_INSTANCE_FACTORIES = new InjectionToken('angularfire2.analytics-instances.factory');
13
+ export const PROVIDED_ANALYTICS_INSTANCES = new InjectionToken('angularfire2.analytics-instances');
9
14
  const IS_SUPPORTED = new InjectionToken('angularfire2.analytics.isSupported');
10
- const isSupportedSymbol = Symbol('angularfire2.analytics.isSupported');
15
+ const isSupportedValueSymbol = Symbol('angularfire2.analytics.isSupported.value');
16
+ export const isSupportedPromiseSymbol = Symbol('angularfire2.analytics.isSupported');
17
+ globalThis[isSupportedPromiseSymbol] || (globalThis[isSupportedPromiseSymbol] = isSupported().then(it => globalThis[isSupportedValueSymbol] = it));
11
18
  export function defaultAnalyticsInstanceFactory(isSupported, provided, defaultApp) {
12
- const defaultAnalytics = isSupported ?
13
- ɵgetDefaultInstanceOf(ANALYTICS_PROVIDER_NAME, provided, defaultApp) :
14
- undefined;
15
- return new Analytics(defaultAnalytics);
19
+ if (!isSupported) {
20
+ return null;
21
+ }
22
+ const defaultAnalytics = ɵgetDefaultInstanceOf(ANALYTICS_PROVIDER_NAME, provided, defaultApp);
23
+ return defaultAnalytics && new Analytics(defaultAnalytics);
16
24
  }
17
25
  export function analyticsInstanceFactory(fn) {
18
- return (zone, isSupported) => {
19
- const analytics = isSupported ? ɵmemoizeInstance(fn, zone) : undefined;
26
+ return (zone, isSupported, injector) => {
27
+ if (!isSupported) {
28
+ return null;
29
+ }
30
+ const analytics = zone.runOutsideAngular(() => fn(injector));
20
31
  return new Analytics(analytics);
21
32
  };
22
33
  }
@@ -36,20 +47,20 @@ const DEFAULT_ANALYTICS_INSTANCE_PROVIDER = {
36
47
  ]
37
48
  };
38
49
  export class AnalyticsModule {
39
- constructor() {
50
+ constructor(_screenTracking, _userTracking) {
40
51
  registerVersion('angularfire', VERSION.full, 'analytics');
41
52
  }
42
53
  }
43
- AnalyticsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AnalyticsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
54
+ AnalyticsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AnalyticsModule, deps: [{ token: i1.ScreenTrackingService, optional: true }, { token: i2.UserTrackingService, optional: true }], target: i0.ɵɵFactoryTarget.NgModule });
44
55
  AnalyticsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AnalyticsModule });
45
56
  AnalyticsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AnalyticsModule, providers: [
46
57
  DEFAULT_ANALYTICS_INSTANCE_PROVIDER,
47
58
  ANALYTICS_INSTANCES_PROVIDER,
48
59
  {
49
60
  provide: APP_INITIALIZER,
50
- useValue: () => isSupported().then(it => globalThis[isSupportedSymbol] = it),
61
+ useValue: () => globalThis[isSupportedPromiseSymbol],
51
62
  multi: true,
52
- },
63
+ }
53
64
  ] });
54
65
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AnalyticsModule, decorators: [{
55
66
  type: NgModule,
@@ -59,18 +70,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImpor
59
70
  ANALYTICS_INSTANCES_PROVIDER,
60
71
  {
61
72
  provide: APP_INITIALIZER,
62
- useValue: () => isSupported().then(it => globalThis[isSupportedSymbol] = it),
73
+ useValue: () => globalThis[isSupportedPromiseSymbol],
63
74
  multi: true,
64
- },
75
+ }
65
76
  ]
66
77
  }]
67
- }], ctorParameters: function () { return []; } });
68
- export function provideAnalytics(fn) {
78
+ }], ctorParameters: function () { return [{ type: i1.ScreenTrackingService, decorators: [{
79
+ type: Optional
80
+ }] }, { type: i2.UserTrackingService, decorators: [{
81
+ type: Optional
82
+ }] }]; } });
83
+ export function provideAnalytics(fn, ...deps) {
69
84
  return {
70
85
  ngModule: AnalyticsModule,
71
86
  providers: [{
72
87
  provide: IS_SUPPORTED,
73
- useFactory: () => globalThis[isSupportedSymbol],
88
+ useFactory: () => globalThis[isSupportedValueSymbol],
89
+ }, {
90
+ provide: PROVIDED_ANALYTICS_INSTANCE_FACTORIES,
91
+ useValue: fn,
92
+ multi: true,
74
93
  }, {
75
94
  provide: PROVIDED_ANALYTICS_INSTANCES,
76
95
  useFactory: analyticsInstanceFactory(fn),
@@ -78,10 +97,12 @@ export function provideAnalytics(fn) {
78
97
  deps: [
79
98
  NgZone,
80
99
  IS_SUPPORTED,
100
+ Injector,
81
101
  ɵAngularFireSchedulers,
82
102
  FirebaseApps,
103
+ ...deps,
83
104
  ]
84
105
  }]
85
106
  };
86
107
  }
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hbmFseXRpY3MvYW5hbHl0aWNzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUF1QixlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFrQyxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckYsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUUvQyxNQUFNLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUFjLGtDQUFrQyxDQUFDLENBQUM7QUFDekcsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQVUsb0NBQW9DLENBQUMsQ0FBQztBQUV2RixNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0FBRXZFLE1BQU0sVUFBVSwrQkFBK0IsQ0FBQyxXQUFvQixFQUFFLFFBQXVDLEVBQUUsVUFBdUI7SUFDcEksTUFBTSxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsQ0FBQztRQUNwQyxxQkFBcUIsQ0FBb0IsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDekYsU0FBUyxDQUFDO0lBQ1osT0FBTyxJQUFJLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsRUFBMkI7SUFDbEUsT0FBTyxDQUFDLElBQVksRUFBRSxXQUFvQixFQUFFLEVBQUU7UUFDNUMsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBb0IsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDMUYsT0FBTyxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsQyxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSw0QkFBNEIsR0FBRztJQUNuQyxPQUFPLEVBQUUsa0JBQWtCO0lBQzNCLElBQUksRUFBRTtRQUNKLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSw0QkFBNEIsQ0FBRTtLQUNoRDtDQUNGLENBQUM7QUFFRixNQUFNLG1DQUFtQyxHQUFHO0lBQzFDLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFVBQVUsRUFBRSwrQkFBK0I7SUFDM0MsSUFBSSxFQUFFO1FBQ0osWUFBWTtRQUNaLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSw0QkFBNEIsQ0FBRTtRQUMvQyxXQUFXO0tBQ1o7Q0FDRixDQUFDO0FBYUYsTUFBTSxPQUFPLGVBQWU7SUFDMUI7UUFDRSxlQUFlLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDNUQsQ0FBQzs7NEdBSFUsZUFBZTs2R0FBZixlQUFlOzZHQUFmLGVBQWUsYUFWZjtRQUNULG1DQUFtQztRQUNuQyw0QkFBNEI7UUFDNUI7WUFDRSxPQUFPLEVBQUUsZUFBZTtZQUN4QixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzVFLEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRjsyRkFFVSxlQUFlO2tCQVgzQixRQUFRO21CQUFDO29CQUNSLFNBQVMsRUFBRTt3QkFDVCxtQ0FBbUM7d0JBQ25DLDRCQUE0Qjt3QkFDNUI7NEJBQ0UsT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUM7NEJBQzVFLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOztBQU9ELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxFQUEyQjtJQUMxRCxPQUFPO1FBQ0wsUUFBUSxFQUFFLGVBQWU7UUFDekIsU0FBUyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLFlBQVk7Z0JBQ3JCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUM7YUFDaEQsRUFBRTtnQkFDRCxPQUFPLEVBQUUsNEJBQTRCO2dCQUNyQyxVQUFVLEVBQUUsd0JBQXdCLENBQUMsRUFBRSxDQUFDO2dCQUN4QyxLQUFLLEVBQUUsSUFBSTtnQkFDWCxJQUFJLEVBQUU7b0JBQ0osTUFBTTtvQkFDTixZQUFZO29CQUNaLHNCQUFzQjtvQkFDdEIsWUFBWTtpQkFDYjthQUNGLENBQUM7S0FDSCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBPcHRpb25hbCwgTmdab25lLCBJbmplY3Rpb25Ub2tlbiwgTW9kdWxlV2l0aFByb3ZpZGVycywgQVBQX0lOSVRJQUxJWkVSIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbmFseXRpY3MgYXMgRmlyZWJhc2VBbmFseXRpY3MsIGlzU3VwcG9ydGVkIH0gZnJvbSAnZmlyZWJhc2UvYW5hbHl0aWNzJztcbmltcG9ydCB7IMm1Z2V0RGVmYXVsdEluc3RhbmNlT2YsIMm1bWVtb2l6ZUluc3RhbmNlLCDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycywgVkVSU0lPTiB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgQW5hbHl0aWNzLCBBTkFMWVRJQ1NfUFJPVklERVJfTkFNRSwgQW5hbHl0aWNzSW5zdGFuY2VzIH0gZnJvbSAnLi9hbmFseXRpY3MnO1xuaW1wb3J0IHsgRmlyZWJhc2VBcHBzLCBGaXJlYmFzZUFwcCB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYXBwJztcbmltcG9ydCB7IHJlZ2lzdGVyVmVyc2lvbiB9IGZyb20gJ2ZpcmViYXNlL2FwcCc7XG5cbmNvbnN0IFBST1ZJREVEX0FOQUxZVElDU19JTlNUQU5DRVMgPSBuZXcgSW5qZWN0aW9uVG9rZW48QW5hbHl0aWNzW10+KCdhbmd1bGFyZmlyZTIuYW5hbHl0aWNzLWluc3RhbmNlcycpO1xuY29uc3QgSVNfU1VQUE9SVEVEID0gbmV3IEluamVjdGlvblRva2VuPGJvb2xlYW4+KCdhbmd1bGFyZmlyZTIuYW5hbHl0aWNzLmlzU3VwcG9ydGVkJyk7XG5cbmNvbnN0IGlzU3VwcG9ydGVkU3ltYm9sID0gU3ltYm9sKCdhbmd1bGFyZmlyZTIuYW5hbHl0aWNzLmlzU3VwcG9ydGVkJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0QW5hbHl0aWNzSW5zdGFuY2VGYWN0b3J5KGlzU3VwcG9ydGVkOiBib29sZWFuLCBwcm92aWRlZDogRmlyZWJhc2VBbmFseXRpY3NbXXx1bmRlZmluZWQsIGRlZmF1bHRBcHA6IEZpcmViYXNlQXBwKSB7XG4gIGNvbnN0IGRlZmF1bHRBbmFseXRpY3MgPSBpc1N1cHBvcnRlZCA/XG4gICAgybVnZXREZWZhdWx0SW5zdGFuY2VPZjxGaXJlYmFzZUFuYWx5dGljcz4oQU5BTFlUSUNTX1BST1ZJREVSX05BTUUsIHByb3ZpZGVkLCBkZWZhdWx0QXBwKSA6XG4gICAgdW5kZWZpbmVkO1xuICByZXR1cm4gbmV3IEFuYWx5dGljcyhkZWZhdWx0QW5hbHl0aWNzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFuYWx5dGljc0luc3RhbmNlRmFjdG9yeShmbjogKCkgPT4gRmlyZWJhc2VBbmFseXRpY3MpIHtcbiAgcmV0dXJuICh6b25lOiBOZ1pvbmUsIGlzU3VwcG9ydGVkOiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgYW5hbHl0aWNzID0gaXNTdXBwb3J0ZWQgPyDJtW1lbW9pemVJbnN0YW5jZTxGaXJlYmFzZUFuYWx5dGljcz4oZm4sIHpvbmUpIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiBuZXcgQW5hbHl0aWNzKGFuYWx5dGljcyk7XG4gIH07XG59XG5cbmNvbnN0IEFOQUxZVElDU19JTlNUQU5DRVNfUFJPVklERVIgPSB7XG4gIHByb3ZpZGU6IEFuYWx5dGljc0luc3RhbmNlcyxcbiAgZGVwczogW1xuICAgIFtuZXcgT3B0aW9uYWwoKSwgUFJPVklERURfQU5BTFlUSUNTX0lOU1RBTkNFUyBdLFxuICBdXG59O1xuXG5jb25zdCBERUZBVUxUX0FOQUxZVElDU19JTlNUQU5DRV9QUk9WSURFUiA9IHtcbiAgcHJvdmlkZTogQW5hbHl0aWNzLFxuICB1c2VGYWN0b3J5OiBkZWZhdWx0QW5hbHl0aWNzSW5zdGFuY2VGYWN0b3J5LFxuICBkZXBzOiBbXG4gICAgSVNfU1VQUE9SVEVELFxuICAgIFtuZXcgT3B0aW9uYWwoKSwgUFJPVklERURfQU5BTFlUSUNTX0lOU1RBTkNFUyBdLFxuICAgIEZpcmViYXNlQXBwLFxuICBdXG59O1xuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFtcbiAgICBERUZBVUxUX0FOQUxZVElDU19JTlNUQU5DRV9QUk9WSURFUixcbiAgICBBTkFMWVRJQ1NfSU5TVEFOQ0VTX1BST1ZJREVSLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgIHVzZVZhbHVlOiAoKSA9PiBpc1N1cHBvcnRlZCgpLnRoZW4oaXQgPT4gZ2xvYmFsVGhpc1tpc1N1cHBvcnRlZFN5bWJvbF0gPSBpdCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFuYWx5dGljc01vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHJlZ2lzdGVyVmVyc2lvbignYW5ndWxhcmZpcmUnLCBWRVJTSU9OLmZ1bGwsICdhbmFseXRpY3MnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUFuYWx5dGljcyhmbjogKCkgPT4gRmlyZWJhc2VBbmFseXRpY3MpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFuYWx5dGljc01vZHVsZT4ge1xuICByZXR1cm4ge1xuICAgIG5nTW9kdWxlOiBBbmFseXRpY3NNb2R1bGUsXG4gICAgcHJvdmlkZXJzOiBbe1xuICAgICAgcHJvdmlkZTogSVNfU1VQUE9SVEVELFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4gZ2xvYmFsVGhpc1tpc1N1cHBvcnRlZFN5bWJvbF0sXG4gICAgfSwge1xuICAgICAgcHJvdmlkZTogUFJPVklERURfQU5BTFlUSUNTX0lOU1RBTkNFUyxcbiAgICAgIHVzZUZhY3Rvcnk6IGFuYWx5dGljc0luc3RhbmNlRmFjdG9yeShmbiksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIGRlcHM6IFtcbiAgICAgICAgTmdab25lLFxuICAgICAgICBJU19TVVBQT1JURUQsXG4gICAgICAgIMm1QW5ndWxhckZpcmVTY2hlZHVsZXJzLFxuICAgICAgICBGaXJlYmFzZUFwcHMsXG4gICAgICBdXG4gICAgfV1cbiAgfTtcbn1cbiJdfQ==
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hbmFseXRpY3MvYW5hbHl0aWNzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUF1QixlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNILE9BQU8sRUFBa0MsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUU5RCxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxJQUFJLGNBQWMsQ0FBMkMsMENBQTBDLENBQUMsQ0FBQztBQUM5SixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLGNBQWMsQ0FBYyxrQ0FBa0MsQ0FBQyxDQUFDO0FBQ2hILE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFVLG9DQUFvQyxDQUFDLENBQUM7QUFFdkYsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsMENBQTBDLENBQUMsQ0FBQztBQUNsRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsb0NBQW9DLENBQUMsQ0FBQztBQUVyRixVQUFVLENB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STtnQkFDWCxJQUFJLEVBQUU7b0JBQ0osTUFBTTtvQkFDTixZQUFZO29CQUNaLFFBQVE7b0JBQ1Isc0JBQXNCO29CQUN0QixZQUFZO29CQUNaLEdBQUcsSUFBSTtpQkFDUjthQUNGLENBQUM7S0FDSCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBPcHRpb25hbCwgTmdab25lLCBJbmplY3Rpb25Ub2tlbiwgTW9kdWxlV2l0aFByb3ZpZGVycywgQVBQX0lOSVRJQUxJWkVSLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQW5hbHl0aWNzIGFzIEZpcmViYXNlQW5hbHl0aWNzLCBpc1N1cHBvcnRlZCB9IGZyb20gJ2ZpcmViYXNlL2FuYWx5dGljcyc7XG5pbXBvcnQgeyDJtWdldERlZmF1bHRJbnN0YW5jZU9mLCDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycywgVkVSU0lPTiB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgQW5hbHl0aWNzLCBBTkFMWVRJQ1NfUFJPVklERVJfTkFNRSwgQW5hbHl0aWNzSW5zdGFuY2VzIH0gZnJvbSAnLi9hbmFseXRpY3MnO1xuaW1wb3J0IHsgRmlyZWJhc2VBcHBzLCBGaXJlYmFzZUFwcCB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYXBwJztcbmltcG9ydCB7IHJlZ2lzdGVyVmVyc2lvbiB9IGZyb20gJ2ZpcmViYXNlL2FwcCc7XG5pbXBvcnQgeyBTY3JlZW5UcmFja2luZ1NlcnZpY2UgfSBmcm9tICcuL3NjcmVlbi10cmFja2luZy5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJUcmFja2luZ1NlcnZpY2UgfSBmcm9tICcuL3VzZXItdHJhY2tpbmcuc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBQUk9WSURFRF9BTkFMWVRJQ1NfSU5TVEFOQ0VfRkFDVE9SSUVTID0gbmV3IEluamVjdGlvblRva2VuPEFycmF5PChpbmplY3RvcjogSW5qZWN0b3IpID0+IEFuYWx5dGljcz4+KCdhbmd1bGFyZmlyZTIuYW5hbHl0aWNzLWluc3RhbmNlcy5mYWN0b3J5Jyk7XG5leHBvcnQgY29uc3QgUFJPVklERURfQU5BTFlUSUNTX0lOU1RBTkNFUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBbmFseXRpY3NbXT4oJ2FuZ3VsYXJmaXJlMi5hbmFseXRpY3MtaW5zdGFuY2VzJyk7XG5jb25zdCBJU19TVVBQT1JURUQgPSBuZXcgSW5qZWN0aW9uVG9rZW48Ym9vbGVhbj4oJ2FuZ3VsYXJmaXJlMi5hbmFseXRpY3MuaXNTdXBwb3J0ZWQnKTtcblxuY29uc3QgaXNTdXBwb3J0ZWRWYWx1ZVN5bWJvbCA9IFN5bWJvbCgnYW5ndWxhcmZpcmUyLmFuYWx5dGljcy5pc1N1cHBvcnRlZC52YWx1ZScpO1xuZXhwb3J0IGNvbnN0IGlzU3VwcG9ydGVkUHJvbWlzZVN5bWJvbCA9IFN5bWJvbCgnYW5ndWxhcmZpcmUyLmFuYWx5dGljcy5pc1N1cHBvcnRlZCcpO1xuXG5nbG9iYWxUaGlzW2lzU3VwcG9ydGVkUHJvbWlzZVN5bWJvbF0gfHw9IGlzU3VwcG9ydGVkKCkudGhlbihpdCA9PiBnbG9iYWxUaGlzW2lzU3VwcG9ydGVkVmFsdWVTeW1ib2xdID0gaXQpO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdEFuYWx5dGljc0luc3RhbmNlRmFjdG9yeShpc1N1cHBvcnRlZDogYm9vbGVhbiwgcHJvdmlkZWQ6IEZpcmViYXNlQW5hbHl0aWNzW118dW5kZWZpbmVkLCBkZWZhdWx0QXBwOiBGaXJlYmFzZUFwcCkge1xuICBpZiAoIWlzU3VwcG9ydGVkKSB7IHJldHVybiBudWxsOyB9XG4gIGNvbnN0IGRlZmF1bHRBbmFseXRpY3MgPSDJtWdldERlZmF1bHRJbnN0YW5jZU9mPEZpcmViYXNlQW5hbHl0aWNzPihBTkFMWVRJQ1NfUFJPVklERVJfTkFNRSwgcHJvdmlkZWQsIGRlZmF1bHRBcHApO1xuICByZXR1cm4gZGVmYXVsdEFuYWx5dGljcyAmJiBuZXcgQW5hbHl0aWNzKGRlZmF1bHRBbmFseXRpY3MpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYW5hbHl0aWNzSW5zdGFuY2VGYWN0b3J5KGZuOiAoaW5qZWN0b3I6IEluamVjdG9yKSA9PiBGaXJlYmFzZUFuYWx5dGljcykge1xuICByZXR1cm4gKHpvbmU6IE5nWm9uZSwgaXNTdXBwb3J0ZWQ6IGJvb2xlYW4sIGluamVjdG9yOiBJbmplY3RvcikgPT4ge1xuICAgIGlmICghaXNTdXBwb3J0ZWQpIHsgcmV0dXJuIG51bGw7IH1cbiAgICBjb25zdCBhbmFseXRpY3MgPSB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IGZuKGluamVjdG9yKSk7XG4gICAgcmV0dXJuIG5ldyBBbmFseXRpY3MoYW5hbHl0aWNzKTtcbiAgfTtcbn1cblxuY29uc3QgQU5BTFlUSUNTX0lOU1RBTkNFU19QUk9WSURFUiA9IHtcbiAgcHJvdmlkZTogQW5hbHl0aWNzSW5zdGFuY2VzLFxuICBkZXBzOiBbXG4gICAgW25ldyBPcHRpb25hbCgpLCBQUk9WSURFRF9BTkFMWVRJQ1NfSU5TVEFOQ0VTIF0sXG4gIF1cbn07XG5cbmNvbnN0IERFRkFVTFRfQU5BTFlUSUNTX0lOU1RBTkNFX1BST1ZJREVSID0ge1xuICBwcm92aWRlOiBBbmFseXRpY3MsXG4gIHVzZUZhY3Rvcnk6IGRlZmF1bHRBbmFseXRpY3NJbnN0YW5jZUZhY3RvcnksXG4gIGRlcHM6IFtcbiAgICBJU19TVVBQT1JURUQsXG4gICAgW25ldyBPcHRpb25hbCgpLCBQUk9WSURFRF9BTkFMWVRJQ1NfSU5TVEFOQ0VTIF0sXG4gICAgRmlyZWJhc2VBcHAsXG4gIF1cbn07XG5cbkBOZ01vZHVsZSh7XG4gIHByb3ZpZGVyczogW1xuICAgIERFRkFVTFRfQU5BTFlUSUNTX0lOU1RBTkNFX1BST1ZJREVSLFxuICAgIEFOQUxZVElDU19JTlNUQU5DRVNfUFJPVklERVIsXG4gICAge1xuICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlVmFsdWU6ICgpID0+IGdsb2JhbFRoaXNbaXNTdXBwb3J0ZWRQcm9taXNlU3ltYm9sXSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBBbmFseXRpY3NNb2R1bGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBfc2NyZWVuVHJhY2tpbmc6IFNjcmVlblRyYWNraW5nU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBfdXNlclRyYWNraW5nOiBVc2VyVHJhY2tpbmdTZXJ2aWNlLFxuICApIHtcbiAgICByZWdpc3RlclZlcnNpb24oJ2FuZ3VsYXJmaXJlJywgVkVSU0lPTi5mdWxsLCAnYW5hbHl0aWNzJyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVBbmFseXRpY3MoZm46IChpbmplY3RvcjogSW5qZWN0b3IpID0+IEZpcmViYXNlQW5hbHl0aWNzLCAuLi5kZXBzOiBhbnlbXSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QW5hbHl0aWNzTW9kdWxlPiB7XG4gIHJldHVybiB7XG4gICAgbmdNb2R1bGU6IEFuYWx5dGljc01vZHVsZSxcbiAgICBwcm92aWRlcnM6IFt7XG4gICAgICBwcm92aWRlOiBJU19TVVBQT1JURUQsXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiBnbG9iYWxUaGlzW2lzU3VwcG9ydGVkVmFsdWVTeW1ib2xdLFxuICAgIH0sIHtcbiAgICAgIHByb3ZpZGU6IFBST1ZJREVEX0FOQUxZVElDU19JTlNUQU5DRV9GQUNUT1JJRVMsXG4gICAgICB1c2VWYWx1ZTogZm4sXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LCB7XG4gICAgICBwcm92aWRlOiBQUk9WSURFRF9BTkFMWVRJQ1NfSU5TVEFOQ0VTLFxuICAgICAgdXNlRmFjdG9yeTogYW5hbHl0aWNzSW5zdGFuY2VGYWN0b3J5KGZuKSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgZGVwczogW1xuICAgICAgICBOZ1pvbmUsXG4gICAgICAgIElTX1NVUFBPUlRFRCxcbiAgICAgICAgSW5qZWN0b3IsXG4gICAgICAgIMm1QW5ndWxhckZpcmVTY2hlZHVsZXJzLFxuICAgICAgICBGaXJlYmFzZUFwcHMsXG4gICAgICAgIC4uLmRlcHMsXG4gICAgICBdXG4gICAgfV1cbiAgfTtcbn1cbiJdfQ==
@@ -1,4 +1,6 @@
1
1
  export { Analytics, AnalyticsInstances, analyticInstance$ } from './analytics';
2
2
  export { provideAnalytics, AnalyticsModule } from './analytics.module';
3
3
  export * from './firebase';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hbmFseXRpY3MvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RSxjQUFjLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEFuYWx5dGljcywgQW5hbHl0aWNzSW5zdGFuY2VzLCBhbmFseXRpY0luc3RhbmNlJCB9IGZyb20gJy4vYW5hbHl0aWNzJztcbmV4cG9ydCB7IHByb3ZpZGVBbmFseXRpY3MsIEFuYWx5dGljc01vZHVsZSB9IGZyb20gJy4vYW5hbHl0aWNzLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZpcmViYXNlJztcbiJdfQ==
4
+ export * from './screen-tracking.service';
5
+ export * from './user-tracking.service';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hbmFseXRpY3MvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RSxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBBbmFseXRpY3MsIEFuYWx5dGljc0luc3RhbmNlcywgYW5hbHl0aWNJbnN0YW5jZSQgfSBmcm9tICcuL2FuYWx5dGljcyc7XG5leHBvcnQgeyBwcm92aWRlQW5hbHl0aWNzLCBBbmFseXRpY3NNb2R1bGUgfSBmcm9tICcuL2FuYWx5dGljcy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9maXJlYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL3NjcmVlbi10cmFja2luZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci10cmFja2luZy5zZXJ2aWNlJztcbiJdfQ==
@@ -0,0 +1,147 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Inject, ComponentFactoryResolver, Injectable, NgZone, Optional, Injector } from '@angular/core';
3
+ import { of } from 'rxjs';
4
+ import { distinctUntilChanged, filter, groupBy, map, mergeMap, pairwise, startWith, switchMap } from 'rxjs/operators';
5
+ import { ActivationEnd, Router, ɵEmptyOutletComponent } from '@angular/router';
6
+ import { Title } from '@angular/platform-browser';
7
+ import { VERSION } from '@angular/fire';
8
+ import { FirebaseApp } from '@angular/fire/app';
9
+ import { registerVersion } from 'firebase/app';
10
+ import { logEvent } from './firebase';
11
+ import { UserTrackingService } from './user-tracking.service';
12
+ import { analyticsInstanceFactory, defaultAnalyticsInstanceFactory, isSupportedPromiseSymbol, PROVIDED_ANALYTICS_INSTANCE_FACTORIES } from './analytics.module';
13
+ import * as i0 from "@angular/core";
14
+ import * as i1 from "@angular/router";
15
+ import * as i2 from "@angular/platform-browser";
16
+ import * as i3 from "./user-tracking.service";
17
+ import * as i4 from "@angular/fire/app";
18
+ const FIREBASE_EVENT_ORIGIN_KEY = 'firebase_event_origin';
19
+ const FIREBASE_PREVIOUS_SCREEN_CLASS_KEY = 'firebase_previous_class';
20
+ const FIREBASE_PREVIOUS_SCREEN_INSTANCE_ID_KEY = 'firebase_previous_id';
21
+ const FIREBASE_PREVIOUS_SCREEN_NAME_KEY = 'firebase_previous_screen';
22
+ const FIREBASE_SCREEN_CLASS_KEY = 'firebase_screen_class';
23
+ const FIREBASE_SCREEN_INSTANCE_ID_KEY = 'firebase_screen_id';
24
+ const FIREBASE_SCREEN_NAME_KEY = 'firebase_screen';
25
+ const OUTLET_KEY = 'outlet';
26
+ const PAGE_PATH_KEY = 'page_path';
27
+ const PAGE_TITLE_KEY = 'page_title';
28
+ const SCREEN_CLASS_KEY = 'screen_class';
29
+ const SCREEN_NAME_KEY = 'screen_name';
30
+ const SCREEN_VIEW_EVENT = 'screen_view';
31
+ const EVENT_ORIGIN_AUTO = 'auto';
32
+ const SCREEN_INSTANCE_DELIMITER = '#';
33
+ // this is an INT64 in iOS/Android but use INT32 cause javascript
34
+ let nextScreenInstanceID = Math.floor(Math.random() * (Math.pow(2, 32) - 1)) - Math.pow(2, 31);
35
+ const knownScreenInstanceIDs = {};
36
+ const getScreenInstanceID = (params) => {
37
+ // unique the screen class against the outlet name
38
+ const screenInstanceKey = [
39
+ params[SCREEN_CLASS_KEY],
40
+ params[OUTLET_KEY]
41
+ ].join(SCREEN_INSTANCE_DELIMITER);
42
+ if (knownScreenInstanceIDs.hasOwnProperty(screenInstanceKey)) {
43
+ return knownScreenInstanceIDs[screenInstanceKey];
44
+ }
45
+ else {
46
+ const ret = nextScreenInstanceID++;
47
+ knownScreenInstanceIDs[screenInstanceKey] = ret;
48
+ return ret;
49
+ }
50
+ };
51
+ export const ɵscreenViewEvent = (router, title, componentFactoryResolver) => {
52
+ const activationEndEvents = router.events.pipe(filter(e => e instanceof ActivationEnd));
53
+ return activationEndEvents.pipe(switchMap(activationEnd => {
54
+ var _a;
55
+ // router parseUrl is having trouble with outlets when they're empty
56
+ // e.g, /asdf/1(bob://sally:asdf), so put another slash in when empty
57
+ const urlTree = router.parseUrl(router.url.replace(/(?:\().+(?:\))/g, a => a.replace('://', ':///')));
58
+ const pagePath = ((_a = urlTree.root.children[activationEnd.snapshot.outlet]) === null || _a === void 0 ? void 0 : _a.toString()) || '';
59
+ const actualSnapshot = router.routerState.root.children.map(it => it).find(it => it.outlet === activationEnd.snapshot.outlet);
60
+ if (!actualSnapshot) {
61
+ return of(null);
62
+ }
63
+ let actualDeep = actualSnapshot;
64
+ while (actualDeep.firstChild) {
65
+ actualDeep = actualDeep.firstChild;
66
+ }
67
+ const screenName = actualDeep.pathFromRoot.map(s => { var _a; return (_a = s.routeConfig) === null || _a === void 0 ? void 0 : _a.path; }).filter(it => it).join('/') || '/';
68
+ const params = {
69
+ [SCREEN_NAME_KEY]: screenName,
70
+ [PAGE_PATH_KEY]: `/${pagePath}`,
71
+ [FIREBASE_EVENT_ORIGIN_KEY]: EVENT_ORIGIN_AUTO,
72
+ [FIREBASE_SCREEN_NAME_KEY]: screenName,
73
+ [OUTLET_KEY]: activationEnd.snapshot.outlet
74
+ };
75
+ if (title) {
76
+ params[PAGE_TITLE_KEY] = title.getTitle();
77
+ }
78
+ let component = actualSnapshot.component;
79
+ if (component) {
80
+ if (component === ɵEmptyOutletComponent) {
81
+ let deepSnapshot = activationEnd.snapshot;
82
+ // TODO when might there be mutple children, different outlets? explore
83
+ while (deepSnapshot.firstChild) {
84
+ deepSnapshot = deepSnapshot.firstChild;
85
+ }
86
+ component = deepSnapshot.component;
87
+ }
88
+ }
89
+ else {
90
+ component = activationEnd.snapshot.component;
91
+ }
92
+ if (typeof component === 'string') {
93
+ return of(Object.assign(Object.assign({}, params), { [SCREEN_CLASS_KEY]: component }));
94
+ }
95
+ else if (component) {
96
+ const componentFactory = componentFactoryResolver.resolveComponentFactory(component);
97
+ return of(Object.assign(Object.assign({}, params), { [SCREEN_CLASS_KEY]: componentFactory.selector }));
98
+ }
99
+ // lazy loads cause extra activations, ignore
100
+ return of(null);
101
+ }), filter(it => !!it), map(params => (Object.assign({ [FIREBASE_SCREEN_CLASS_KEY]: params[SCREEN_CLASS_KEY], [FIREBASE_SCREEN_INSTANCE_ID_KEY]: getScreenInstanceID(params) }, params))), groupBy(it => it[OUTLET_KEY]), mergeMap(it => it.pipe(distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)), startWith(undefined), pairwise(), map(([prior, current]) => prior ? Object.assign({ [FIREBASE_PREVIOUS_SCREEN_CLASS_KEY]: prior[SCREEN_CLASS_KEY], [FIREBASE_PREVIOUS_SCREEN_NAME_KEY]: prior[SCREEN_NAME_KEY], [FIREBASE_PREVIOUS_SCREEN_INSTANCE_ID_KEY]: prior[FIREBASE_SCREEN_INSTANCE_ID_KEY] }, current) : current))));
102
+ };
103
+ export class ScreenTrackingService {
104
+ constructor(router, title, componentFactoryResolver, zone, userTrackingService, firebaseApp, analyticsInstanceFactories, injector) {
105
+ registerVersion('angularfire', VERSION.full, 'screen-tracking');
106
+ if (!router) {
107
+ return this;
108
+ }
109
+ // Analytics is not ready to be injected yet, as the APP_INITIALIZER hasn't evulated yet, do this the hard way
110
+ const analyticsInstance = globalThis[isSupportedPromiseSymbol].then((isSupported) => {
111
+ const analyticsInstances = analyticsInstanceFactories.map(fn => analyticsInstanceFactory(fn)(zone, isSupported, injector));
112
+ return defaultAnalyticsInstanceFactory(isSupported, analyticsInstances, firebaseApp);
113
+ });
114
+ zone.runOutsideAngular(() => {
115
+ this.disposable = ɵscreenViewEvent(router, title, componentFactoryResolver).pipe(switchMap((params) => __awaiter(this, void 0, void 0, function* () {
116
+ if (userTrackingService) {
117
+ yield userTrackingService.initialized;
118
+ }
119
+ const analytics = yield analyticsInstance;
120
+ if (!analytics) {
121
+ return;
122
+ }
123
+ return logEvent(analytics, SCREEN_VIEW_EVENT, params);
124
+ }))).subscribe();
125
+ });
126
+ }
127
+ ngOnDestroy() {
128
+ if (this.disposable) {
129
+ this.disposable.unsubscribe();
130
+ }
131
+ }
132
+ }
133
+ ScreenTrackingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: ScreenTrackingService, deps: [{ token: i1.Router, optional: true }, { token: i2.Title, optional: true }, { token: i0.ComponentFactoryResolver }, { token: i0.NgZone }, { token: i3.UserTrackingService, optional: true }, { token: i4.FirebaseApp }, { token: PROVIDED_ANALYTICS_INSTANCE_FACTORIES }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
134
+ ScreenTrackingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: ScreenTrackingService });
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: ScreenTrackingService, decorators: [{
136
+ type: Injectable
137
+ }], ctorParameters: function () { return [{ type: i1.Router, decorators: [{
138
+ type: Optional
139
+ }] }, { type: i2.Title, decorators: [{
140
+ type: Optional
141
+ }] }, { type: i0.ComponentFactoryResolver }, { type: i0.NgZone }, { type: i3.UserTrackingService, decorators: [{
142
+ type: Optional
143
+ }] }, { type: i4.FirebaseApp }, { type: Array, decorators: [{
144
+ type: Inject,
145
+ args: [PROVIDED_ANALYTICS_INSTANCE_FACTORIES]
146
+ }] }, { type: i0.Injector }]; } });
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXRyYWNraW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYW5hbHl0aWNzL3NjcmVlbi10cmFja2luZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLHdCQUF3QixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQWEsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsRUFBRSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUcvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSwrQkFBK0IsRUFBRSx3QkFBd0IsRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7QUFFaEssTUFBTSx5QkFBeUIsR0FBRyx1QkFBdUIsQ0FBQztBQUMxRCxNQUFNLGtDQUFrQyxHQUFHLHlCQUF5QixDQUFDO0FBQ3JFLE1BQU0sd0NBQXdDLEdB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Z0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixDQUFDLENBQUMsSUFBSSxDQUM5RSxTQUFTLENBQUMsQ0FBTSxNQUFNLEVBQUMsRUFBRTtnQkFDdkIsSUFBSSxtQkFBbUIsRUFBRTtvQkFDdkIsTUFBTSxtQkFBbUIsQ0FBQyxXQUFXLENBQUM7aUJBQ3ZDO2dCQUNELE1BQU0sU0FBUyxHQUFHLE1BQU0saUJBQWlCLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxTQUFTLEVBQUU7b0JBQUUsT0FBTztpQkFBRTtnQkFDM0IsT0FBTyxRQUFRLENBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3hELENBQUMsQ0FBQSxDQUFDLENBQ0gsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDL0I7SUFDSCxDQUFDOztrSEF2Q1UscUJBQXFCLHlPQVd0QixxQ0FBcUM7c0hBWHBDLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVOzswQkFNTixRQUFROzswQkFDUixRQUFROzswQkFHUixRQUFRO3dEQUVrRSxLQUFLOzBCQUEvRSxNQUFNOzJCQUFDLHFDQUFxQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBJbmplY3RhYmxlLCBOZ1pvbmUsIE9uRGVzdHJveSwgT3B0aW9uYWwsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBvZiwgU3Vic2NyaXB0aW9uLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBncm91cEJ5LCBtYXAsIG1lcmdlTWFwLCBwYWlyd2lzZSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBY3RpdmF0aW9uRW5kLCBSb3V0ZXIsIMm1RW1wdHlPdXRsZXRDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFZFUlNJT04gfSBmcm9tICdAYW5ndWxhci9maXJlJztcbmltcG9ydCB7IEZpcmViYXNlQXBwIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9hcHAnO1xuaW1wb3J0IHsgcmVnaXN0ZXJWZXJzaW9uIH0gZnJvbSAnZmlyZWJhc2UvYXBwJztcblxuaW1wb3J0IHsgQW5hbHl0aWNzIH0gZnJvbSAnLi9hbmFseXRpY3MnO1xuaW1wb3J0IHsgbG9nRXZlbnQgfSBmcm9tICcuL2ZpcmViYXNlJztcbmltcG9ydCB7IFVzZXJUcmFja2luZ1NlcnZpY2UgfSBmcm9tICcuL3VzZXItdHJhY2tpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBhbmFseXRpY3NJbnN0YW5jZUZhY3RvcnksIGRlZmF1bHRBbmFseXRpY3NJbnN0YW5jZUZhY3RvcnksIGlzU3VwcG9ydGVkUHJvbWlzZVN5bWJvbCwgUFJPVklERURfQU5BTFlUSUNTX0lOU1RBTkNFX0ZBQ1RPUklFUyB9IGZyb20gJy4vYW5hbHl0aWNzLm1vZHVsZSc7XG5cbmNvbnN0IEZJUkVCQVNFX0VWRU5UX09SSUdJTl9LRVkgPSAnZmlyZWJhc2VfZXZlbnRfb3JpZ2luJztcbmNvbnN0IEZJUkVCQVNFX1BSRVZJT1VTX1NDUkVFTl9DTEFTU19LRVkgPSAnZmlyZWJhc2VfcHJldmlvdXNfY2xhc3MnO1xuY29uc3QgRklSRUJBU0VfUFJFVklPVVNfU0NSRUVOX0lOU1RBTkNFX0lEX0tFWSA9ICdmaXJlYmFzZV9wcmV2aW91c19pZCc7XG5jb25zdCBGSVJFQkFTRV9QUkVWSU9VU19TQ1JFRU5fTkFNRV9LRVkgPSAnZmlyZWJhc2VfcHJldmlvdXNfc2NyZWVuJztcbmNvbnN0IEZJUkVCQVNFX1NDUkVFTl9DTEFTU19LRVkgPSAnZmlyZWJhc2Vfc2NyZWVuX2NsYXNzJztcbmNvbnN0IEZJUkVCQVNFX1NDUkVFTl9JTlNUQU5DRV9JRF9LRVkgPSAnZmlyZWJhc2Vfc2NyZWVuX2lkJztcbmNvbnN0IEZJUkVCQVNFX1NDUkVFTl9OQU1FX0tFWSA9ICdmaXJlYmFzZV9zY3JlZW4nO1xuY29uc3QgT1VUTEVUX0tFWSA9ICdvdXRsZXQnO1xuY29uc3QgUEFHRV9QQVRIX0tFWSA9ICdwYWdlX3BhdGgnO1xuY29uc3QgUEFHRV9USVRMRV9LRVkgPSAncGFnZV90aXRsZSc7XG5jb25zdCBTQ1JFRU5fQ0xBU1NfS0VZID0gJ3NjcmVlbl9jbGFzcyc7XG5jb25zdCBTQ1JFRU5fTkFNRV9LRVkgPSAnc2NyZWVuX25hbWUnO1xuY29uc3QgU0NSRUVOX1ZJRVdfRVZFTlQgPSAnc2NyZWVuX3ZpZXcnO1xuY29uc3QgRVZFTlRfT1JJR0lOX0FVVE8gPSAnYXV0byc7XG5jb25zdCBTQ1JFRU5fSU5TVEFOQ0VfREVMSU1JVEVSID0gJyMnO1xuXG4vLyB0aGlzIGlzIGFuIElOVDY0IGluIGlPUy9BbmRyb2lkIGJ1dCB1c2UgSU5UMzIgY2F1c2UgamF2YXNjcmlwdFxubGV0IG5leHRTY3JlZW5JbnN0YW5jZUlEID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKDIgKiogMzIgLSAxKSkgLSAyICoqIDMxO1xuXG5jb25zdCBrbm93blNjcmVlbkluc3RhbmNlSURzOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge307XG5cbmNvbnN0IGdldFNjcmVlbkluc3RhbmNlSUQgPSAocGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSA9PiB7XG4gIC8vIHVuaXF1ZSB0aGUgc2NyZWVuIGNsYXNzIGFnYWluc3QgdGhlIG91dGxldCBuYW1lXG4gIGNvbnN0IHNjcmVlbkluc3RhbmNlS2V5ID0gW1xuICAgIHBhcmFtc1tTQ1JFRU5fQ0xBU1NfS0VZXSxcbiAgICBwYXJhbXNbT1VUTEVUX0tFWV1cbiAgXS5qb2luKFNDUkVFTl9JTlNUQU5DRV9ERUxJTUlURVIpO1xuICBpZiAoa25vd25TY3JlZW5JbnN0YW5jZUlEcy5oYXNPd25Qcm9wZXJ0eShzY3JlZW5JbnN0YW5jZUtleSkpIHtcbiAgICByZXR1cm4ga25vd25TY3JlZW5JbnN0YW5jZUlEc1tzY3JlZW5JbnN0YW5jZUtleV07XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcmV0ID0gbmV4dFNjcmVlbkluc3RhbmNlSUQrKztcbiAgICBrbm93blNjcmVlbkluc3RhbmNlSURzW3NjcmVlbkluc3RhbmNlS2V5XSA9IHJldDtcbiAgICByZXR1cm4gcmV0O1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgybVzY3JlZW5WaWV3RXZlbnQgPSAoXG4gIHJvdXRlcjogUm91dGVyLFxuICB0aXRsZTogVGl0bGV8bnVsbCxcbiAgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4pOiBPYnNlcnZhYmxlPHtcbiAgW1NDUkVFTl9OQU1FX0tFWV06IHN0cmluZyxcbiAgW1BBR0VfUEFUSF9LRVldOiBzdHJpbmcsXG4gIFtGSVJFQkFTRV9FVkVOVF9PUklHSU5fS0VZXTogJ2F1dG8nLFxuICBbRklSRUJBU0VfU0NSRUVOX05BTUVfS0VZXTogc3RyaW5nLFxuICBbT1VUTEVUX0tFWV06IHN0cmluZyxcbiAgW1BBR0VfVElUTEVfS0VZXT86IHN0cmluZyxcbiAgW1NDUkVFTl9DTEFTU19LRVldOiBzdHJpbmcsXG4gIFtGSVJFQkFTRV9TQ1JFRU5fQ0xBU1NfS0VZXTogc3RyaW5nLFxuICBbRklSRUJBU0VfU0NSRUVOX0lOU1RBTkNFX0lEX0tFWV06IG51bWJlcixcbiAgW0ZJUkVCQVNFX1BSRVZJT1VTX1NDUkVFTl9DTEFTU19LRVldOiBzdHJpbmcsXG4gIFtGSVJFQkFTRV9QUkVWSU9VU19TQ1JFRU5fTkFNRV9LRVldOiBzdHJpbmcsXG4gIFtGSVJFQkFTRV9QUkVWSU9VU19TQ1JFRU5fSU5TVEFOQ0VfSURfS0VZXTogbnVtYmVyLFxufT4gPT4ge1xuICBjb25zdCBhY3RpdmF0aW9uRW5kRXZlbnRzID0gcm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcjxBY3RpdmF0aW9uRW5kPihlID0+IGUgaW5zdGFuY2VvZiBBY3RpdmF0aW9uRW5kKSk7XG4gIHJldHVybiBhY3RpdmF0aW9uRW5kRXZlbnRzLnBpcGUoXG4gICAgc3dpdGNoTWFwPEFjdGl2YXRpb25FbmQsIE9ic2VydmFibGU8UmVjb3JkPHN0cmluZywgYW55PnxudWxsPj4oYWN0aXZhdGlvbkVuZCA9PiB7XG4gICAgICAvLyByb3V0ZXIgcGFyc2VVcmwgaXMgaGF2aW5nIHRyb3VibGUgd2l0aCBvdXRsZXRzIHdoZW4gdGhleSdyZSBlbXB0eVxuICAgICAgLy8gZS5nLCAvYXNkZi8xKGJvYjovL3NhbGx5OmFzZGYpLCBzbyBwdXQgYW5vdGhlciBzbGFzaCBpbiB3aGVuIGVtcHR5XG4gICAgICBjb25zdCB1cmxUcmVlID0gcm91dGVyLnBhcnNlVXJsKHJvdXRlci51cmwucmVwbGFjZSgvKD86XFwoKS4rKD86XFwpKS9nLCBhID0+IGEucmVwbGFjZSgnOi8vJywgJzovLy8nKSkpO1xuICAgICAgY29uc3QgcGFnZVBhdGggPSB1cmxUcmVlLnJvb3QuY2hpbGRyZW5bYWN0aXZhdGlvbkVuZC5zbmFwc2hvdC5vdXRsZXRdPy50b1N0cmluZygpIHx8ICcnO1xuICAgICAgY29uc3QgYWN0dWFsU25hcHNob3QgPSByb3V0ZXIucm91dGVyU3RhdGUucm9vdC5jaGlsZHJlbi5tYXAoaXQgPT4gaXQpLmZpbmQoaXQgPT4gaXQub3V0bGV0ID09PSBhY3RpdmF0aW9uRW5kLnNuYXBzaG90Lm91dGxldCk7XG5cbiAgICAgIGlmICghYWN0dWFsU25hcHNob3QpIHtcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgfVxuXG4gICAgICBsZXQgYWN0dWFsRGVlcCA9IGFjdHVhbFNuYXBzaG90O1xuICAgICAgd2hpbGUgKGFjdHVhbERlZXAuZmlyc3RDaGlsZCkge1xuICAgICAgICBhY3R1YWxEZWVwID0gYWN0dWFsRGVlcC5maXJzdENoaWxkO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2NyZWVuTmFtZSA9IGFjdHVhbERlZXAucGF0aEZyb21Sb290Lm1hcChzID0+IHMucm91dGVDb25maWc/LnBhdGgpLmZpbHRlcihpdCA9PiBpdCkuam9pbignLycpIHx8ICcvJztcblxuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICBbU0NSRUVOX05BTUVfS0VZXTogc2NyZWVuTmFtZSxcbiAgICAgICAgW1BBR0VfUEFUSF9LRVldOiBgLyR7cGFnZVBhdGh9YCxcbiAgICAgICAgW0ZJUkVCQVNFX0VWRU5UX09SSUdJTl9LRVldOiBFVkVOVF9PUklHSU5fQVVUTyxcbiAgICAgICAgW0ZJUkVCQVNFX1NDUkVFTl9OQU1FX0tFWV06IHNjcmVlbk5hbWUsXG4gICAgICAgIFtPVVRMRVRfS0VZXTogYWN0aXZhdGlvbkVuZC5zbmFwc2hvdC5vdXRsZXRcbiAgICAgIH07XG4gICAgICBpZiAodGl0bGUpIHtcbiAgICAgICAgcGFyYW1zW1BBR0VfVElUTEVfS0VZXSA9IHRpdGxlLmdldFRpdGxlKCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBjb21wb25lbnQgPSBhY3R1YWxTbmFwc2hvdC5jb21wb25lbnQ7XG4gICAgICBpZiAoY29tcG9uZW50KSB7XG4gICAgICAgIGlmIChjb21wb25lbnQgPT09IMm1RW1wdHlPdXRsZXRDb21wb25lbnQpIHtcbiAgICAgICAgICBsZXQgZGVlcFNuYXBzaG90ID0gYWN0aXZhdGlvbkVuZC5zbmFwc2hvdDtcbiAgICAgICAgICAvLyBUT0RPIHdoZW4gbWlnaHQgdGhlcmUgYmUgbXV0cGxlIGNoaWxkcmVuLCBkaWZmZXJlbnQgb3V0bGV0cz8gZXhwbG9yZVxuICAgICAgICAgIHdoaWxlIChkZWVwU25hcHNob3QuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgZGVlcFNuYXBzaG90ID0gZGVlcFNuYXBzaG90LmZpcnN0Q2hpbGQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbXBvbmVudCA9IGRlZXBTbmFwc2hvdC5jb21wb25lbnQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbXBvbmVudCA9IGFjdGl2YXRpb25FbmQuc25hcHNob3QuY29tcG9uZW50O1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGNvbXBvbmVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIG9mKHsgLi4ucGFyYW1zLCBbU0NSRUVOX0NMQVNTX0tFWV06IGNvbXBvbmVudCB9KTtcbiAgICAgIH0gZWxzZSBpZiAoY29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29tcG9uZW50KTtcbiAgICAgICAgcmV0dXJuIG9mKHsgLi4ucGFyYW1zLCBbU0NSRUVOX0NMQVNTX0tFWV06IGNvbXBvbmVudEZhY3Rvcnkuc2VsZWN0b3IgfSk7XG4gICAgICB9XG4gICAgICAvLyBsYXp5IGxvYWRzIGNhdXNlIGV4dHJhIGFjdGl2YXRpb25zLCBpZ25vcmVcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9KSxcbiAgICBmaWx0ZXIoaXQgPT4gISFpdCksXG4gICAgbWFwKHBhcmFtcyA9PiAoe1xuICAgICAgW0ZJUkVCQVNFX1NDUkVFTl9DTEFTU19LRVldOiBwYXJhbXNbU0NSRUVOX0NMQVNTX0tFWV0sXG4gICAgICBbRklSRUJBU0VfU0NSRUVOX0lOU1RBTkNFX0lEX0tFWV06IGdldFNjcmVlbkluc3RhbmNlSUQocGFyYW1zKSxcbiAgICAgIC4uLnBhcmFtc1xuICAgIH0pKSxcbiAgICBncm91cEJ5KGl0ID0+IGl0W09VVExFVF9LRVldKSxcbiAgICBtZXJnZU1hcChpdCA9PiBpdC5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IEpTT04uc3RyaW5naWZ5KGEpID09PSBKU09OLnN0cmluZ2lmeShiKSksXG4gICAgICBzdGFydFdpdGg8YW55LCBhbnk+KHVuZGVmaW5lZCksXG4gICAgICBwYWlyd2lzZSgpLFxuICAgICAgbWFwKChbcHJpb3IsIGN1cnJlbnRdKSA9PlxuICAgICAgICBwcmlvciA/IHtcbiAgICAgICAgICBbRklSRUJBU0VfUFJFVklPVVNfU0NSRUVOX0NMQVNTX0tFWV06IHByaW9yW1NDUkVFTl9DTEFTU19LRVldLFxuICAgICAgICAgIFtGSVJFQkFTRV9QUkVWSU9VU19TQ1JFRU5fTkFNRV9LRVldOiBwcmlvcltTQ1JFRU5fTkFNRV9LRVldLFxuICAgICAgICAgIFtGSVJFQkFTRV9QUkVWSU9VU19TQ1JFRU5fSU5TVEFOQ0VfSURfS0VZXTogcHJpb3JbRklSRUJBU0VfU0NSRUVOX0lOU1RBTkNFX0lEX0tFWV0sXG4gICAgICAgICAgLi4uY3VycmVudFxuICAgICAgICB9IDogY3VycmVudFxuICAgICAgKSxcbiAgICApKVxuICApO1xufTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNjcmVlblRyYWNraW5nU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBkaXNwb3NhYmxlOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgcm91dGVyOiBSb3V0ZXIsXG4gICAgQE9wdGlvbmFsKCkgdGl0bGU6IFRpdGxlLFxuICAgIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHpvbmU6IE5nWm9uZSxcbiAgICBAT3B0aW9uYWwoKSB1c2VyVHJhY2tpbmdTZXJ2aWNlOiBVc2VyVHJhY2tpbmdTZXJ2aWNlLFxuICAgIGZpcmViYXNlQXBwOiBGaXJlYmFzZUFwcCxcbiAgICBASW5qZWN0KFBST1ZJREVEX0FOQUxZVElDU19JTlNUQU5DRV9GQUNUT1JJRVMpIGFuYWx5dGljc0luc3RhbmNlRmFjdG9yaWVzOiBBcnJheTwoaW5qZWN0b3I6IEluamVjdG9yKSA9PiBBbmFseXRpY3M+LFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgKSB7XG4gICAgcmVnaXN0ZXJWZXJzaW9uKCdhbmd1bGFyZmlyZScsIFZFUlNJT04uZnVsbCwgJ3NjcmVlbi10cmFja2luZycpO1xuICAgIGlmICghcm91dGVyKSB7IHJldHVybiB0aGlzOyB9XG4gICAgLy8gQW5hbHl0aWNzIGlzIG5vdCByZWFkeSB0byBiZSBpbmplY3RlZCB5ZXQsIGFzIHRoZSBBUFBfSU5JVElBTElaRVIgaGFzbid0IGV2dWxhdGVkIHlldCwgZG8gdGhpcyB0aGUgaGFyZCB3YXlcbiAgICBjb25zdCBhbmFseXRpY3NJbnN0YW5jZTogUHJvbWlzZTxBbmFseXRpY3N8bnVsbD4gPSBnbG9iYWxUaGlzW2lzU3VwcG9ydGVkUHJvbWlzZVN5bWJvbF0udGhlbigoaXNTdXBwb3J0ZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgIGNvbnN0IGFuYWx5dGljc0luc3RhbmNlcyA9IGFuYWx5dGljc0luc3RhbmNlRmFjdG9yaWVzLm1hcChmbiA9PiBhbmFseXRpY3NJbnN0YW5jZUZhY3RvcnkoZm4pKHpvbmUsIGlzU3VwcG9ydGVkLCBpbmplY3RvcikpO1xuICAgICAgcmV0dXJuIGRlZmF1bHRBbmFseXRpY3NJbnN0YW5jZUZhY3RvcnkoaXNTdXBwb3J0ZWQsIGFuYWx5dGljc0luc3RhbmNlcywgZmlyZWJhc2VBcHApO1xuICAgIH0pO1xuICAgIHpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5kaXNwb3NhYmxlID0gybVzY3JlZW5WaWV3RXZlbnQocm91dGVyLCB0aXRsZSwgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoYXN5bmMgcGFyYW1zID0+IHtcbiAgICAgICAgICBpZiAodXNlclRyYWNraW5nU2VydmljZSkge1xuICAgICAgICAgICAgYXdhaXQgdXNlclRyYWNraW5nU2VydmljZS5pbml0aWFsaXplZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgYW5hbHl0aWNzID0gYXdhaXQgYW5hbHl0aWNzSW5zdGFuY2U7XG4gICAgICAgICAgaWYgKCFhbmFseXRpY3MpIHsgcmV0dXJuOyB9XG4gICAgICAgICAgcmV0dXJuIGxvZ0V2ZW50KGFuYWx5dGljcywgU0NSRUVOX1ZJRVdfRVZFTlQsIHBhcmFtcyk7XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuZGlzcG9zYWJsZSkge1xuICAgICAgdGhpcy5kaXNwb3NhYmxlLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,42 @@
1
+ import { Inject, Injectable, Injector, NgZone } from '@angular/core';
2
+ import { VERSION } from '@angular/fire';
3
+ import { Auth, authState } from '@angular/fire/auth';
4
+ import { registerVersion } from 'firebase/app';
5
+ import { setUserId } from './firebase';
6
+ import { analyticsInstanceFactory, defaultAnalyticsInstanceFactory, isSupportedPromiseSymbol, PROVIDED_ANALYTICS_INSTANCE_FACTORIES } from './analytics.module';
7
+ import { FirebaseApp } from '@angular/fire/app';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/fire/auth";
10
+ import * as i2 from "@angular/fire/app";
11
+ export class UserTrackingService {
12
+ constructor(auth, zone, analyticsInstanceFactories, injector, firebaseApp) {
13
+ this.disposables = [];
14
+ registerVersion('angularfire', VERSION.full, 'user-tracking');
15
+ // Analytics is not ready to be injected yet, as the APP_INITIALIZER hasn't evulated yet, do this the hard way
16
+ const analyticsInstance = globalThis[isSupportedPromiseSymbol].then((isSupported) => {
17
+ const analyticsInstances = analyticsInstanceFactories.map(fn => analyticsInstanceFactory(fn)(zone, isSupported, injector));
18
+ return defaultAnalyticsInstanceFactory(isSupported, analyticsInstances, firebaseApp);
19
+ });
20
+ let resolveInitialized;
21
+ this.initialized = zone.runOutsideAngular(() => new Promise(resolve => { resolveInitialized = resolve; }));
22
+ this.disposables = [
23
+ // TODO add credential tracking back in
24
+ authState(auth).subscribe(user => {
25
+ analyticsInstance.then(analytics => analytics && setUserId(analytics, user === null || user === void 0 ? void 0 : user.uid));
26
+ resolveInitialized();
27
+ }),
28
+ ];
29
+ }
30
+ ngOnDestroy() {
31
+ this.disposables.forEach(it => it.unsubscribe());
32
+ }
33
+ }
34
+ UserTrackingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: UserTrackingService, deps: [{ token: i1.Auth }, { token: i0.NgZone }, { token: PROVIDED_ANALYTICS_INSTANCE_FACTORIES }, { token: i0.Injector }, { token: i2.FirebaseApp }], target: i0.ɵɵFactoryTarget.Injectable });
35
+ UserTrackingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: UserTrackingService });
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: UserTrackingService, decorators: [{
37
+ type: Injectable
38
+ }], ctorParameters: function () { return [{ type: i1.Auth }, { type: i0.NgZone }, { type: Array, decorators: [{
39
+ type: Inject,
40
+ args: [PROVIDED_ANALYTICS_INSTANCE_FACTORIES]
41
+ }] }, { type: i0.Injector }, { type: i2.FirebaseApp }]; } });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci10cmFja2luZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FuYWx5dGljcy91c2VyLXRyYWNraW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUdoRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSwrQkFBK0IsRUFBRSx3QkFBd0IsRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hLLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQUdoRCxNQUFNLE9BQU8sbUJBQW1CO0lBSzlCLFlBQ0UsSUFBVSxFQUNWLElBQVksRUFDbUMsMEJBQW9FLEVBQ25ILFFBQWtCLEVBQ2xCLFdBQXdCO1FBUFQsZ0JBQVcsR0FBd0IsRUFBRSxDQUFDO1FBU3JELGVBQWUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztRQUM5RCw4R0FBOEc7UUFDOUcsTUFBTSxpQkFBaUIsR0FBNEIsVUFBVSxDQUFDLHdCQUF3QixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBb0IsRUFBRSxFQUFFO1lBQ3BILE1BQU0sa0JBQWtCLEdBQUcsMEJBQTBCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzNILE9BQU8sK0JBQStCLENBQUMsV0FBVyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZGLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxrQkFBOEIsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0csSUFBSSxDQUFDLFdBQVcsR0FBRztZQUNqQix1Q0FBdUM7WUFDdkMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDL0IsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xGLGtCQUFrQixFQUFFLENBQUM7WUFDdkIsQ0FBQyxDQUFDO1NBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDOztnSEEvQlUsbUJBQW1CLDREQVFwQixxQ0FBcUM7b0hBUnBDLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVO2tHQVNvRSxLQUFLOzBCQUEvRSxNQUFNOzJCQUFDLHFDQUFxQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nWm9uZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbmFseXRpY3MgfSBmcm9tICcuL2FuYWx5dGljcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFZFUlNJT04gfSBmcm9tICdAYW5ndWxhci9maXJlJztcbmltcG9ydCB7IEF1dGgsIGF1dGhTdGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYXV0aCc7XG5pbXBvcnQgeyByZWdpc3RlclZlcnNpb24gfSBmcm9tICdmaXJlYmFzZS9hcHAnO1xuaW1wb3J0IHsgc2V0VXNlcklkIH0gZnJvbSAnLi9maXJlYmFzZSc7XG5pbXBvcnQgeyBhbmFseXRpY3NJbnN0YW5jZUZhY3RvcnksIGRlZmF1bHRBbmFseXRpY3NJbnN0YW5jZUZhY3RvcnksIGlzU3VwcG9ydGVkUHJvbWlzZVN5bWJvbCwgUFJPVklERURfQU5BTFlUSUNTX0lOU1RBTkNFX0ZBQ1RPUklFUyB9IGZyb20gJy4vYW5hbHl0aWNzLm1vZHVsZSc7XG5pbXBvcnQgeyBGaXJlYmFzZUFwcCB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYXBwJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFVzZXJUcmFja2luZ1NlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIHB1YmxpYyByZWFkb25seSBpbml0aWFsaXplZDogUHJvbWlzZTx2b2lkPjtcbiAgcHJpdmF0ZSByZWFkb25seSBkaXNwb3NhYmxlczogQXJyYXk8U3Vic2NyaXB0aW9uPiA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGF1dGg6IEF1dGgsXG4gICAgem9uZTogTmdab25lLFxuICAgIEBJbmplY3QoUFJPVklERURfQU5BTFlUSUNTX0lOU1RBTkNFX0ZBQ1RPUklFUykgYW5hbHl0aWNzSW5zdGFuY2VGYWN0b3JpZXM6IEFycmF5PChpbmplY3RvcjogSW5qZWN0b3IpID0+IEFuYWx5dGljcz4sXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIGZpcmViYXNlQXBwOiBGaXJlYmFzZUFwcCxcbiAgKSB7XG4gICAgcmVnaXN0ZXJWZXJzaW9uKCdhbmd1bGFyZmlyZScsIFZFUlNJT04uZnVsbCwgJ3VzZXItdHJhY2tpbmcnKTtcbiAgICAvLyBBbmFseXRpY3MgaXMgbm90IHJlYWR5IHRvIGJlIGluamVjdGVkIHlldCwgYXMgdGhlIEFQUF9JTklUSUFMSVpFUiBoYXNuJ3QgZXZ1bGF0ZWQgeWV0LCBkbyB0aGlzIHRoZSBoYXJkIHdheVxuICAgIGNvbnN0IGFuYWx5dGljc0luc3RhbmNlOiBQcm9taXNlPEFuYWx5dGljc3xudWxsPiA9IGdsb2JhbFRoaXNbaXNTdXBwb3J0ZWRQcm9taXNlU3ltYm9sXS50aGVuKChpc1N1cHBvcnRlZDogYm9vbGVhbikgPT4ge1xuICAgICAgY29uc3QgYW5hbHl0aWNzSW5zdGFuY2VzID0gYW5hbHl0aWNzSW5zdGFuY2VGYWN0b3JpZXMubWFwKGZuID0+IGFuYWx5dGljc0luc3RhbmNlRmFjdG9yeShmbikoem9uZSwgaXNTdXBwb3J0ZWQsIGluamVjdG9yKSk7XG4gICAgICByZXR1cm4gZGVmYXVsdEFuYWx5dGljc0luc3RhbmNlRmFjdG9yeShpc1N1cHBvcnRlZCwgYW5hbHl0aWNzSW5zdGFuY2VzLCBmaXJlYmFzZUFwcCk7XG4gICAgfSk7XG4gICAgbGV0IHJlc29sdmVJbml0aWFsaXplZDogKCkgPT4gdm9pZDtcbiAgICB0aGlzLmluaXRpYWxpemVkID0gem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsgcmVzb2x2ZUluaXRpYWxpemVkID0gcmVzb2x2ZTsgfSkpO1xuICAgIHRoaXMuZGlzcG9zYWJsZXMgPSBbXG4gICAgICAvLyBUT0RPIGFkZCBjcmVkZW50aWFsIHRyYWNraW5nIGJhY2sgaW5cbiAgICAgIGF1dGhTdGF0ZShhdXRoKS5zdWJzY3JpYmUodXNlciA9PiB7XG4gICAgICAgIGFuYWx5dGljc0luc3RhbmNlLnRoZW4oYW5hbHl0aWNzID0+IGFuYWx5dGljcyAmJiBzZXRVc2VySWQoYW5hbHl0aWNzLCB1c2VyPy51aWQpKTtcbiAgICAgICAgcmVzb2x2ZUluaXRpYWxpemVkKCk7XG4gICAgICB9KSxcbiAgICBdO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kaXNwb3NhYmxlcy5mb3JFYWNoKGl0ID0+IGl0LnVuc3Vic2NyaWJlKCkpO1xuICB9XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
- import { Inject, InjectionToken, NgModule, NgZone, Optional, PLATFORM_ID, VERSION as NG_VERSION, } from '@angular/core';
1
+ import { Inject, InjectionToken, Injector, NgModule, NgZone, Optional, PLATFORM_ID, VERSION as NG_VERSION, } from '@angular/core';
2
2
  import { getApp, registerVersion } from 'firebase/app';
3
3
  import { FirebaseApp, FirebaseApps } from './app';
4
- import { VERSION, ɵmemoizeInstance, ɵAngularFireSchedulers } from '@angular/fire';
4
+ import { VERSION, ɵAngularFireSchedulers } from '@angular/fire';
5
5
  import * as i0 from "@angular/core";
6
6
  export function defaultFirebaseAppFactory(provided) {
7
7
  // Use the provided app, if there is only one, otherwise fetch the default app
@@ -31,8 +31,8 @@ const FIREBASE_APPS_PROVIDER = {
31
31
  ],
32
32
  };
33
33
  export function firebaseAppFactory(fn) {
34
- return (zone) => {
35
- const app = ɵmemoizeInstance(fn, zone);
34
+ return (zone, injector) => {
35
+ const app = zone.runOutsideAngular(() => fn(injector));
36
36
  return new FirebaseApp(app);
37
37
  };
38
38
  }
@@ -65,15 +65,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImpor
65
65
  // Calling initializeApp({ ... }, 'name') multiple times will add more FirebaseApps into the FIREBASE_APPS
66
66
  // injection scope. This allows developers to more easily work with multiple Firebase Applications. Downside
67
67
  // is that DI for app name and options doesn't really make sense anymore.
68
- export function provideFirebaseApp(fn) {
68
+ export function provideFirebaseApp(fn, ...deps) {
69
69
  return {
70
70
  ngModule: FirebaseAppModule,
71
71
  providers: [{
72
72
  provide: PROVIDED_FIREBASE_APPS,
73
73
  useFactory: firebaseAppFactory(fn),
74
74
  multi: true,
75
- deps: [NgZone, ɵAngularFireSchedulers],
75
+ deps: [
76
+ NgZone,
77
+ Injector,
78
+ ɵAngularFireSchedulers,
79
+ ...deps,
80
+ ],
76
81
  }],
77
82
  };
78
83
  }
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvYXBwLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsTUFBTSxFQUNOLGNBQWMsRUFFZCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFFBQVEsRUFDUixXQUFXLEVBQ1gsT0FBTyxJQUFJLFVBQVUsR0FDdEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUErQixNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRWxGLE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxRQUFpQztJQUN6RSw4RUFBOEU7SUFDOUUsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFBRSxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUFFO0lBQzlELE9BQU8sSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQsMkZBQTJGO0FBQzNGLHdHQUF3RztBQUN4Ryw2RkFBNkY7QUFDN0YsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQXFCLG9CQUFvQixDQUFDLENBQUM7QUFFbkcsc0VBQXNFO0FBQ3RFLDhGQUE4RjtBQUM5Rix5QkFBeUI7QUFDekIsTUFBTSw2QkFBNkIsR0FBRztJQUNwQyxPQUFPLEVBQUUsV0FBVztJQUNwQixVQUFVLEVBQUUseUJBQXlCO0lBQ3JDLElBQUksRUFBRTtRQUNKLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxzQkFBc0IsQ0FBRTtLQUMxQztDQUNGLENBQUM7QUFFRixNQUFNLHNCQUFzQixHQUFHO0lBQzdCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLElBQUksRUFBRTtRQUNKLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxzQkFBc0IsQ0FBRTtLQUMxQztDQUNGLENBQUM7QUFFRixNQUFNLFVBQVUsa0JBQWtCLENBQUMsRUFBc0I7SUFDdkQsT0FBTyxDQUFDLElBQVksRUFBRSxFQUFFO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLGdCQUFnQixDQUFlLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyRCxPQUFPLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFRRCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLHFDQUFxQztJQUNyQyxZQUFpQyxVQUFrQjtRQUNqRCxlQUFlLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDckQsZUFBZSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BELGVBQWUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDOzs4R0FOVSxpQkFBaUIsa0JBRVIsV0FBVzsrR0FGcEIsaUJBQWlCOytHQUFqQixpQkFBaUIsYUFMakI7UUFDVCw2QkFBNkI7UUFDN0Isc0JBQXNCO0tBQ3ZCOzJGQUVVLGlCQUFpQjtrQkFON0IsUUFBUTttQkFBQztvQkFDUixTQUFTLEVBQUU7d0JBQ1QsNkJBQTZCO3dCQUM3QixzQkFBc0I7cUJBQ3ZCO2lCQUNGOzBEQUc4QyxNQUFNOzBCQUF0QyxNQUFNOzJCQUFDLFdBQVc7O0FBT2pDLDBHQUEwRztBQUMxRyw0R0FBNEc7QUFDNUcseUVBQXlFO0FBQ3pFLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxFQUFzQjtJQUN2RCxPQUFPO1FBQ0wsUUFBUSxFQUFFLGlCQUFpQjtRQUMzQixTQUFTLEVBQUUsQ0FBQztnQkFDVixPQUFPLEVBQUUsc0JBQXNCO2dCQUMvQixVQUFVLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxLQUFLLEVBQUUsSUFBSTtnQkFDWCxJQUFJLEVBQUUsQ0FBRSxNQUFNLEVBQUUsc0JBQXNCLENBQUU7YUFDekMsQ0FBQztLQUNILENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0LFxuICBJbmplY3Rpb25Ub2tlbixcbiAgTW9kdWxlV2l0aFByb3ZpZGVycyxcbiAgTmdNb2R1bGUsXG4gIE5nWm9uZSxcbiAgT3B0aW9uYWwsXG4gIFBMQVRGT1JNX0lELFxuICBWRVJTSU9OIGFzIE5HX1ZFUlNJT04sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmlyZWJhc2VBcHAgYXMgSUZpcmViYXNlQXBwLCBnZXRBcHAsIHJlZ2lzdGVyVmVyc2lvbiB9IGZyb20gJ2ZpcmViYXNlL2FwcCc7XG5cbmltcG9ydCB7IEZpcmViYXNlQXBwLCBGaXJlYmFzZUFwcHMgfSBmcm9tICcuL2FwcCc7XG5pbXBvcnQgeyBWRVJTSU9OLCDJtW1lbW9pemVJbnN0YW5jZSwgybVBbmd1bGFyRmlyZVNjaGVkdWxlcnMgfSBmcm9tICdAYW5ndWxhci9maXJlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRGaXJlYmFzZUFwcEZhY3RvcnkocHJvdmlkZWQ6IEZpcmViYXNlQXBwW118dW5kZWZpbmVkKSB7XG4gIC8vIFVzZSB0aGUgcHJvdmlkZWQgYXBwLCBpZiB0aGVyZSBpcyBvbmx5IG9uZSwgb3RoZXJ3aXNlIGZldGNoIHRoZSBkZWZhdWx0IGFwcFxuICBpZiAocHJvdmlkZWQgJiYgcHJvdmlkZWQubGVuZ3RoID09PSAxKSB7IHJldHVybiBwcm92aWRlZFswXTsgfVxuICByZXR1cm4gbmV3IEZpcmViYXNlQXBwKGdldEFwcCgpKTtcbn1cblxuLy8gV2l0aCBGSVJFQkFTRV9BUFBTIEkgd2FudGVkIHRvIGNhcHR1cmUgdGhlIGRlZmF1bHQgYXBwIGluc3RhbmNlLCBpZiBpdCBpcyBpbml0aWFsaXplZCBieVxuLy8gdGhlIHJlc2VydmVkIFVSTDsgybVQUk9WSURFRF9GSVJFQkFTRV9BUFBTIGlzIG5vdCBmb3IgcHVibGljIGNvbnN1bXB0aW9uIGFuZCBzZXJ2ZXMgdG8gZW5zdXJlIHRoYXQgYWxsXG4vLyBwcm92aWRlRmlyZWJhc2VBcHAoLi4uKSBjYWxscyBhcmUgc2F0aXNmaWVkIGJlZm9yZSBGaXJlYmFzZUFwcCQgb3IgRmlyZWJhc2VBcHAgaXMgcmVzb2x2ZWRcbmV4cG9ydCBjb25zdCBQUk9WSURFRF9GSVJFQkFTRV9BUFBTID0gbmV3IEluamVjdGlvblRva2VuPEFycmF5PEZpcmViYXNlQXBwPj4oJ2FuZ3VsYXJmaXJlMi5fYXBwcycpO1xuXG4vLyBJbmplY3RpbmcgRmlyZWJhc2VBcHAgd2lsbCBub3cgb25seSBpbmplY3QgdGhlIGRlZmF1bHQgRmlyZWJhc2UgQXBwXG4vLyB0aGlzIGFsbG93cyBhbGxvd3MgYmVnaW5uZXJzIHRvIGltcG9ydCAvX18vZmlyZWJhc2UvaW5pdC5qcyB0byBhdXRvIGluaXRpYWxpemUgRmlyZWJhc2UgQXBwXG4vLyBmcm9tIHRoZSByZXNlcnZlZCBVUkwuXG5jb25zdCBERUZBVUxUX0ZJUkVCQVNFX0FQUF9QUk9WSURFUiA9IHtcbiAgcHJvdmlkZTogRmlyZWJhc2VBcHAsXG4gIHVzZUZhY3Rvcnk6IGRlZmF1bHRGaXJlYmFzZUFwcEZhY3RvcnksXG4gIGRlcHM6IFtcbiAgICBbbmV3IE9wdGlvbmFsKCksIFBST1ZJREVEX0ZJUkVCQVNFX0FQUFMgXSxcbiAgXSxcbn07XG5cbmNvbnN0IEZJUkVCQVNFX0FQUFNfUFJPVklERVIgPSB7XG4gIHByb3ZpZGU6IEZpcmViYXNlQXBwcyxcbiAgZGVwczogW1xuICAgIFtuZXcgT3B0aW9uYWwoKSwgUFJPVklERURfRklSRUJBU0VfQVBQUyBdLFxuICBdLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGZpcmViYXNlQXBwRmFjdG9yeShmbjogKCkgPT4gSUZpcmViYXNlQXBwKSB7XG4gIHJldHVybiAoem9uZTogTmdab25lKSA9PiB7XG4gICAgY29uc3QgYXBwID0gybVtZW1vaXplSW5zdGFuY2U8SUZpcmViYXNlQXBwPihmbiwgem9uZSk7XG4gICAgcmV0dXJuIG5ldyBGaXJlYmFzZUFwcChhcHApO1xuICB9O1xufVxuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFtcbiAgICBERUZBVUxUX0ZJUkVCQVNFX0FQUF9QUk9WSURFUixcbiAgICBGSVJFQkFTRV9BUFBTX1BST1ZJREVSLFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZpcmViYXNlQXBwTW9kdWxlIHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmJhbi10eXBlc1xuICBjb25zdHJ1Y3RvcihASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBPYmplY3QpIHtcbiAgICByZWdpc3RlclZlcnNpb24oJ2FuZ3VsYXJmaXJlJywgVkVSU0lPTi5mdWxsLCAnY29yZScpO1xuICAgIHJlZ2lzdGVyVmVyc2lvbignYW5ndWxhcmZpcmUnLCBWRVJTSU9OLmZ1bGwsICdhcHAnKTtcbiAgICByZWdpc3RlclZlcnNpb24oJ2FuZ3VsYXInLCBOR19WRVJTSU9OLmZ1bGwsIHBsYXRmb3JtSWQudG9TdHJpbmcoKSk7XG4gIH1cbn1cblxuLy8gQ2FsbGluZyBpbml0aWFsaXplQXBwKHsgLi4uIH0sICduYW1lJykgbXVsdGlwbGUgdGltZXMgd2lsbCBhZGQgbW9yZSBGaXJlYmFzZUFwcHMgaW50byB0aGUgRklSRUJBU0VfQVBQU1xuLy8gaW5qZWN0aW9uIHNjb3BlLiBUaGlzIGFsbG93cyBkZXZlbG9wZXJzIHRvIG1vcmUgZWFzaWx5IHdvcmsgd2l0aCBtdWx0aXBsZSBGaXJlYmFzZSBBcHBsaWNhdGlvbnMuIERvd25zaWRlXG4vLyBpcyB0aGF0IERJIGZvciBhcHAgbmFtZSBhbmQgb3B0aW9ucyBkb2Vzbid0IHJlYWxseSBtYWtlIHNlbnNlIGFueW1vcmUuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUZpcmViYXNlQXBwKGZuOiAoKSA9PiBJRmlyZWJhc2VBcHApOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEZpcmViYXNlQXBwTW9kdWxlPiB7XG4gIHJldHVybiB7XG4gICAgbmdNb2R1bGU6IEZpcmViYXNlQXBwTW9kdWxlLFxuICAgIHByb3ZpZGVyczogW3tcbiAgICAgIHByb3ZpZGU6IFBST1ZJREVEX0ZJUkVCQVNFX0FQUFMsXG4gICAgICB1c2VGYWN0b3J5OiBmaXJlYmFzZUFwcEZhY3RvcnkoZm4pLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICBkZXBzOiBbIE5nWm9uZSwgybVBbmd1bGFyRmlyZVNjaGVkdWxlcnMgXSxcbiAgICB9XSxcbiAgfTtcbn1cbiJdfQ==
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvYXBwLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsTUFBTSxFQUNOLGNBQWMsRUFDZCxRQUFRLEVBRVIsUUFBUSxFQUNSLE1BQU0sRUFDTixRQUFRLEVBQ1IsV0FBVyxFQUNYLE9BQU8sSUFBSSxVQUFVLEdBQ3RCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBK0IsTUFBTSxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVwRixPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUVoRSxNQUFNLFVBQVUseUJBQXlCLENBQUMsUUFBaUM7SUFDekUsOEVBQThFO0lBQzlFLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQUUsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FBRTtJQUM5RCxPQUFPLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUVELDJGQUEyRjtBQUMzRix3R0FBd0c7QUFDeEcsNkZBQTZGO0FBQzdGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUFxQixvQkFBb0IsQ0FBQyxDQUFDO0FBRW5HLHNFQUFzRTtBQUN0RSw4RkFBOEY7QUFDOUYseUJBQXlCO0FBQ3pCLE1BQU0sNkJBQTZCLEdBQUc7SUFDcEMsT0FBTyxFQUFFLFdBQVc7SUFDcEIsVUFBVSxFQUFFLHlCQUF5QjtJQUNyQyxJQUFJLEVBQUU7UUFDSixDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsc0JBQXNCLENBQUU7S0FDMUM7Q0FDRixDQUFDO0FBRUYsTUFBTSxzQkFBc0IsR0FBRztJQUM3QixPQUFPLEVBQUUsWUFBWTtJQUNyQixJQUFJLEVBQUU7UUFDSixDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsc0JBQXNCLENBQUU7S0FDMUM7Q0FDRixDQUFDO0FBRUYsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEVBQXdDO0lBQ3pFLE9BQU8sQ0FBQyxJQUFZLEVBQUUsUUFBa0IsRUFBRSxFQUFFO1FBQzFDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUN2RCxPQUFPLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFRRCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLHFDQUFxQztJQUNyQyxZQUFpQyxVQUFrQjtRQUNqRCxlQUFlLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDckQsZUFBZSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BELGVBQWUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDOzs4R0FOVSxpQkFBaUIsa0JBRVIsV0FBVzsrR0FGcEIsaUJBQWlCOytHQUFqQixpQkFBaUIsYUFMakI7UUFDVCw2QkFBNkI7UUFDN0Isc0JBQXNCO0tBQ3ZCOzJGQUVVLGlCQUFpQjtrQkFON0IsUUFBUTttQkFBQztvQkFDUixTQUFTLEVBQUU7d0JBQ1QsNkJBQTZCO3dCQUM3QixzQkFBc0I7cUJBQ3ZCO2lCQUNGOzBEQUc4QyxNQUFNOzBCQUF0QyxNQUFNOzJCQUFDLFdBQVc7O0FBT2pDLDBHQUEwRztBQUMxRyw0R0FBNEc7QUFDNUcseUVBQXlFO0FBQ3pFLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxFQUFzQixFQUFFLEdBQUcsSUFBVztJQUN2RSxPQUFPO1FBQ0wsUUFBUSxFQUFFLGlCQUFpQjtRQUMzQixTQUFTLEVBQUUsQ0FBQztnQkFDVixPQUFPLEVBQUUsc0JBQXNCO2dCQUMvQixVQUFVLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxLQUFLLEVBQUUsSUFBSTtnQkFDWCxJQUFJLEVBQUU7b0JBQ0osTUFBTTtvQkFDTixRQUFRO29CQUNSLHNCQUFzQjtvQkFDdEIsR0FBRyxJQUFJO2lCQUNSO2FBQ0YsQ0FBQztLQUNILENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0LFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5qZWN0b3IsXG4gIE1vZHVsZVdpdGhQcm92aWRlcnMsXG4gIE5nTW9kdWxlLFxuICBOZ1pvbmUsXG4gIE9wdGlvbmFsLFxuICBQTEFURk9STV9JRCxcbiAgVkVSU0lPTiBhcyBOR19WRVJTSU9OLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpcmViYXNlQXBwIGFzIElGaXJlYmFzZUFwcCwgZ2V0QXBwLCByZWdpc3RlclZlcnNpb24gfSBmcm9tICdmaXJlYmFzZS9hcHAnO1xuXG5pbXBvcnQgeyBGaXJlYmFzZUFwcCwgRmlyZWJhc2VBcHBzIH0gZnJvbSAnLi9hcHAnO1xuaW1wb3J0IHsgVkVSU0lPTiwgybVBbmd1bGFyRmlyZVNjaGVkdWxlcnMgfSBmcm9tICdAYW5ndWxhci9maXJlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRGaXJlYmFzZUFwcEZhY3RvcnkocHJvdmlkZWQ6IEZpcmViYXNlQXBwW118dW5kZWZpbmVkKSB7XG4gIC8vIFVzZSB0aGUgcHJvdmlkZWQgYXBwLCBpZiB0aGVyZSBpcyBvbmx5IG9uZSwgb3RoZXJ3aXNlIGZldGNoIHRoZSBkZWZhdWx0IGFwcFxuICBpZiAocHJvdmlkZWQgJiYgcHJvdmlkZWQubGVuZ3RoID09PSAxKSB7IHJldHVybiBwcm92aWRlZFswXTsgfVxuICByZXR1cm4gbmV3IEZpcmViYXNlQXBwKGdldEFwcCgpKTtcbn1cblxuLy8gV2l0aCBGSVJFQkFTRV9BUFBTIEkgd2FudGVkIHRvIGNhcHR1cmUgdGhlIGRlZmF1bHQgYXBwIGluc3RhbmNlLCBpZiBpdCBpcyBpbml0aWFsaXplZCBieVxuLy8gdGhlIHJlc2VydmVkIFVSTDsgybVQUk9WSURFRF9GSVJFQkFTRV9BUFBTIGlzIG5vdCBmb3IgcHVibGljIGNvbnN1bXB0aW9uIGFuZCBzZXJ2ZXMgdG8gZW5zdXJlIHRoYXQgYWxsXG4vLyBwcm92aWRlRmlyZWJhc2VBcHAoLi4uKSBjYWxscyBhcmUgc2F0aXNmaWVkIGJlZm9yZSBGaXJlYmFzZUFwcCQgb3IgRmlyZWJhc2VBcHAgaXMgcmVzb2x2ZWRcbmV4cG9ydCBjb25zdCBQUk9WSURFRF9GSVJFQkFTRV9BUFBTID0gbmV3IEluamVjdGlvblRva2VuPEFycmF5PEZpcmViYXNlQXBwPj4oJ2FuZ3VsYXJmaXJlMi5fYXBwcycpO1xuXG4vLyBJbmplY3RpbmcgRmlyZWJhc2VBcHAgd2lsbCBub3cgb25seSBpbmplY3QgdGhlIGRlZmF1bHQgRmlyZWJhc2UgQXBwXG4vLyB0aGlzIGFsbG93cyBhbGxvd3MgYmVnaW5uZXJzIHRvIGltcG9ydCAvX18vZmlyZWJhc2UvaW5pdC5qcyB0byBhdXRvIGluaXRpYWxpemUgRmlyZWJhc2UgQXBwXG4vLyBmcm9tIHRoZSByZXNlcnZlZCBVUkwuXG5jb25zdCBERUZBVUxUX0ZJUkVCQVNFX0FQUF9QUk9WSURFUiA9IHtcbiAgcHJvdmlkZTogRmlyZWJhc2VBcHAsXG4gIHVzZUZhY3Rvcnk6IGRlZmF1bHRGaXJlYmFzZUFwcEZhY3RvcnksXG4gIGRlcHM6IFtcbiAgICBbbmV3IE9wdGlvbmFsKCksIFBST1ZJREVEX0ZJUkVCQVNFX0FQUFMgXSxcbiAgXSxcbn07XG5cbmNvbnN0IEZJUkVCQVNFX0FQUFNfUFJPVklERVIgPSB7XG4gIHByb3ZpZGU6IEZpcmViYXNlQXBwcyxcbiAgZGVwczogW1xuICAgIFtuZXcgT3B0aW9uYWwoKSwgUFJPVklERURfRklSRUJBU0VfQVBQUyBdLFxuICBdLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGZpcmViYXNlQXBwRmFjdG9yeShmbjogKGluamVjdG9yOiBJbmplY3RvcikgPT4gSUZpcmViYXNlQXBwKSB7XG4gIHJldHVybiAoem9uZTogTmdab25lLCBpbmplY3RvcjogSW5qZWN0b3IpID0+IHtcbiAgICBjb25zdCBhcHAgPSB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IGZuKGluamVjdG9yKSk7XG4gICAgcmV0dXJuIG5ldyBGaXJlYmFzZUFwcChhcHApO1xuICB9O1xufVxuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFtcbiAgICBERUZBVUxUX0ZJUkVCQVNFX0FQUF9QUk9WSURFUixcbiAgICBGSVJFQkFTRV9BUFBTX1BST1ZJREVSLFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZpcmViYXNlQXBwTW9kdWxlIHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmJhbi10eXBlc1xuICBjb25zdHJ1Y3RvcihASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBPYmplY3QpIHtcbiAgICByZWdpc3RlclZlcnNpb24oJ2FuZ3VsYXJmaXJlJywgVkVSU0lPTi5mdWxsLCAnY29yZScpO1xuICAgIHJlZ2lzdGVyVmVyc2lvbignYW5ndWxhcmZpcmUnLCBWRVJTSU9OLmZ1bGwsICdhcHAnKTtcbiAgICByZWdpc3RlclZlcnNpb24oJ2FuZ3VsYXInLCBOR19WRVJTSU9OLmZ1bGwsIHBsYXRmb3JtSWQudG9TdHJpbmcoKSk7XG4gIH1cbn1cblxuLy8gQ2FsbGluZyBpbml0aWFsaXplQXBwKHsgLi4uIH0sICduYW1lJykgbXVsdGlwbGUgdGltZXMgd2lsbCBhZGQgbW9yZSBGaXJlYmFzZUFwcHMgaW50byB0aGUgRklSRUJBU0VfQVBQU1xuLy8gaW5qZWN0aW9uIHNjb3BlLiBUaGlzIGFsbG93cyBkZXZlbG9wZXJzIHRvIG1vcmUgZWFzaWx5IHdvcmsgd2l0aCBtdWx0aXBsZSBGaXJlYmFzZSBBcHBsaWNhdGlvbnMuIERvd25zaWRlXG4vLyBpcyB0aGF0IERJIGZvciBhcHAgbmFtZSBhbmQgb3B0aW9ucyBkb2Vzbid0IHJlYWxseSBtYWtlIHNlbnNlIGFueW1vcmUuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUZpcmViYXNlQXBwKGZuOiAoKSA9PiBJRmlyZWJhc2VBcHAsIC4uLmRlcHM6IGFueVtdKTogTW9kdWxlV2l0aFByb3ZpZGVyczxGaXJlYmFzZUFwcE1vZHVsZT4ge1xuICByZXR1cm4ge1xuICAgIG5nTW9kdWxlOiBGaXJlYmFzZUFwcE1vZHVsZSxcbiAgICBwcm92aWRlcnM6IFt7XG4gICAgICBwcm92aWRlOiBQUk9WSURFRF9GSVJFQkFTRV9BUFBTLFxuICAgICAgdXNlRmFjdG9yeTogZmlyZWJhc2VBcHBGYWN0b3J5KGZuKSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgZGVwczogW1xuICAgICAgICBOZ1pvbmUsXG4gICAgICAgIEluamVjdG9yLFxuICAgICAgICDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycyxcbiAgICAgICAgLi4uZGVwcyxcbiAgICAgIF0sXG4gICAgfV0sXG4gIH07XG59XG4iXX0=
@@ -8,10 +8,9 @@ export class AppCheck {
8
8
  }
9
9
  }
10
10
  export class AppCheckInstances {
11
- // tslint:disable-next-line:ban-types
12
11
  constructor() {
13
12
  return ɵgetAllInstancesOf(APP_CHECK_PROVIDER_NAME);
14
13
  }
15
14
  }
16
15
  export const appCheckInstance$ = timer(0, 300).pipe(concatMap(() => from(ɵgetAllInstancesOf(APP_CHECK_PROVIDER_NAME))), distinct());
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNoZWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC1jaGVjay9hcHAtY2hlY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsV0FBVyxDQUFDO0FBTW5ELE1BQU0sT0FBTyxRQUFRO0lBQ25CLFlBQVksUUFBMEI7UUFDcEMsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUNGO0FBS0QsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixxQ0FBcUM7SUFDckM7UUFDRSxPQUFPLGtCQUFrQixDQUFtQix1QkFBdUIsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUNqRCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFtQix1QkFBdUIsQ0FBQyxDQUFDLENBQUMsRUFDcEYsUUFBUSxFQUFFLENBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcENoZWNrIGFzIEZpcmViYXNlQXBwQ2hlY2sgfSBmcm9tICdmaXJlYmFzZS9hcHAtY2hlY2snO1xuaW1wb3J0IHsgybVnZXRBbGxJbnN0YW5jZXNPZiB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgZnJvbSwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbmNhdE1hcCwgZGlzdGluY3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBjb25zdCBBUFBfQ0hFQ0tfUFJPVklERVJfTkFNRSA9ICdhcHAtY2hlY2snO1xuXG4vLyBzZWUgbm90ZXMgaW4gY29yZS9maXJlYmFzZS5hcHAubW9kdWxlLnRzIGZvciB3aHkgd2UncmUgYnVpbGRpbmcgdGhlIGNsYXNzIGxpa2UgdGhpc1xuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWVtcHR5LWludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBBcHBDaGVjayBleHRlbmRzIEZpcmViYXNlQXBwQ2hlY2sge31cblxuZXhwb3J0IGNsYXNzIEFwcENoZWNrIHtcbiAgY29uc3RydWN0b3IoYXBwQ2hlY2s6IEZpcmViYXNlQXBwQ2hlY2spIHtcbiAgICByZXR1cm4gYXBwQ2hlY2s7XG4gIH1cbn1cblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWVtcHR5LWludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBBcHBDaGVja0luc3RhbmNlcyBleHRlbmRzIEFycmF5PEZpcmViYXNlQXBwQ2hlY2s+IHt9XG5cbmV4cG9ydCBjbGFzcyBBcHBDaGVja0luc3RhbmNlcyB7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpiYW4tdHlwZXNcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgcmV0dXJuIMm1Z2V0QWxsSW5zdGFuY2VzT2Y8RmlyZWJhc2VBcHBDaGVjaz4oQVBQX0NIRUNLX1BST1ZJREVSX05BTUUpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBhcHBDaGVja0luc3RhbmNlJCA9IHRpbWVyKDAsIDMwMCkucGlwZShcbiAgY29uY2F0TWFwKCgpID0+IGZyb20oybVnZXRBbGxJbnN0YW5jZXNPZjxGaXJlYmFzZUFwcENoZWNrPihBUFBfQ0hFQ0tfUFJPVklERVJfTkFNRSkpKSxcbiAgZGlzdGluY3QoKSxcbik7XG4iXX0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNoZWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC1jaGVjay9hcHAtY2hlY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsV0FBVyxDQUFDO0FBTW5ELE1BQU0sT0FBTyxRQUFRO0lBQ25CLFlBQVksUUFBMEI7UUFDcEMsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUNGO0FBS0QsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QjtRQUNFLE9BQU8sa0JBQWtCLENBQW1CLHVCQUF1QixDQUFDLENBQUM7SUFDdkUsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ2pELFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQW1CLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxFQUNwRixRQUFRLEVBQUUsQ0FDWCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwQ2hlY2sgYXMgRmlyZWJhc2VBcHBDaGVjayB9IGZyb20gJ2ZpcmViYXNlL2FwcC1jaGVjayc7XG5pbXBvcnQgeyDJtWdldEFsbEluc3RhbmNlc09mIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZSc7XG5pbXBvcnQgeyBmcm9tLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY29uY2F0TWFwLCBkaXN0aW5jdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGNvbnN0IEFQUF9DSEVDS19QUk9WSURFUl9OQU1FID0gJ2FwcC1jaGVjayc7XG5cbi8vIHNlZSBub3RlcyBpbiBjb3JlL2ZpcmViYXNlLmFwcC5tb2R1bGUudHMgZm9yIHdoeSB3ZSdyZSBidWlsZGluZyB0aGUgY2xhc3MgbGlrZSB0aGlzXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tZW1wdHktaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIEFwcENoZWNrIGV4dGVuZHMgRmlyZWJhc2VBcHBDaGVjayB7fVxuXG5leHBvcnQgY2xhc3MgQXBwQ2hlY2sge1xuICBjb25zdHJ1Y3RvcihhcHBDaGVjazogRmlyZWJhc2VBcHBDaGVjaykge1xuICAgIHJldHVybiBhcHBDaGVjaztcbiAgfVxufVxuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tZW1wdHktaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIEFwcENoZWNrSW5zdGFuY2VzIGV4dGVuZHMgQXJyYXk8RmlyZWJhc2VBcHBDaGVjaz4ge31cblxuZXhwb3J0IGNsYXNzIEFwcENoZWNrSW5zdGFuY2VzIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgcmV0dXJuIMm1Z2V0QWxsSW5zdGFuY2VzT2Y8RmlyZWJhc2VBcHBDaGVjaz4oQVBQX0NIRUNLX1BST1ZJREVSX05BTUUpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBhcHBDaGVja0luc3RhbmNlJCA9IHRpbWVyKDAsIDMwMCkucGlwZShcbiAgY29uY2F0TWFwKCgpID0+IGZyb20oybVnZXRBbGxJbnN0YW5jZXNPZjxGaXJlYmFzZUFwcENoZWNrPihBUFBfQ0hFQ0tfUFJPVklERVJfTkFNRSkpKSxcbiAgZGlzdGluY3QoKSxcbik7XG4iXX0=