@dereekb/dbx-firebase 9.25.16 → 10.0.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 (217) hide show
  1. package/_index.scss +1 -0
  2. package/{esm2020 → esm2022}/lib/analytics/analytics.user.events.mjs +4 -4
  3. package/{esm2020 → esm2022}/lib/analytics/analytics.user.source.mjs +4 -4
  4. package/{esm2020 → esm2022}/lib/auth/appcheck/appcheck.interceptor.mjs +4 -4
  5. package/{esm2020 → esm2022}/lib/auth/firebase.auth.module.mjs +5 -5
  6. package/{esm2020 → esm2022}/lib/auth/login/firebase.login.module.mjs +45 -45
  7. package/esm2022/lib/auth/login/login.anonymous.component.mjs +23 -0
  8. package/esm2022/lib/auth/login/login.apple.component.mjs +23 -0
  9. package/{esm2020 → esm2022}/lib/auth/login/login.button.component.mjs +14 -14
  10. package/{esm2020 → esm2022}/lib/auth/login/login.component.mjs +6 -6
  11. package/{esm2020 → esm2022}/lib/auth/login/login.context.back.component.mjs +6 -6
  12. package/esm2022/lib/auth/login/login.context.directive.mjs +29 -0
  13. package/esm2022/lib/auth/login/login.email.component.mjs +24 -0
  14. package/{esm2020 → esm2022}/lib/auth/login/login.email.content.component.mjs +4 -4
  15. package/{esm2020 → esm2022}/lib/auth/login/login.email.form.component.mjs +6 -6
  16. package/{esm2020 → esm2022}/lib/auth/login/login.email.recovery.form.component.mjs +6 -6
  17. package/esm2022/lib/auth/login/login.facebook.component.mjs +23 -0
  18. package/esm2022/lib/auth/login/login.github.component.mjs +23 -0
  19. package/esm2022/lib/auth/login/login.google.component.mjs +23 -0
  20. package/{esm2020 → esm2022}/lib/auth/login/login.list.component.mjs +6 -6
  21. package/esm2022/lib/auth/login/login.microsoft.component.mjs +23 -0
  22. package/{esm2020 → esm2022}/lib/auth/login/login.service.mjs +4 -4
  23. package/{esm2020 → esm2022}/lib/auth/login/login.terms.component.mjs +6 -6
  24. package/{esm2020 → esm2022}/lib/auth/login/login.terms.simple.component.mjs +6 -6
  25. package/esm2022/lib/auth/login/login.twitter.component.mjs +23 -0
  26. package/{esm2020 → esm2022}/lib/auth/login/register.component.mjs +6 -6
  27. package/{esm2020 → esm2022}/lib/auth/login/register.email.component.mjs +4 -4
  28. package/{esm2020 → esm2022}/lib/auth/service/firebase.auth.service.mjs +4 -4
  29. package/{esm2020 → esm2022}/lib/development/development.module.mjs +22 -22
  30. package/{esm2020 → esm2022}/lib/development/development.popup.component.mjs +6 -6
  31. package/{esm2020 → esm2022}/lib/development/development.popup.content.component.mjs +4 -4
  32. package/{esm2020 → esm2022}/lib/development/development.popup.content.form.component.mjs +6 -6
  33. package/{esm2020 → esm2022}/lib/development/development.popup.directive.mjs +4 -4
  34. package/esm2022/lib/development/development.scheduler.list.component.mjs +80 -0
  35. package/{esm2020 → esm2022}/lib/development/development.scheduler.service.mjs +4 -4
  36. package/{esm2020 → esm2022}/lib/development/development.scheduler.widget.component.mjs +6 -6
  37. package/{esm2020 → esm2022}/lib/development/development.service.mjs +4 -4
  38. package/{esm2020 → esm2022}/lib/development/development.widget.service.mjs +4 -4
  39. package/{esm2020 → esm2022}/lib/firebase/firebase.emulator.module.mjs +5 -5
  40. package/esm2022/lib/firebase/firebase.emulator.service.mjs +35 -0
  41. package/esm2022/lib/firebase/firebase.module.mjs +293 -0
  42. package/{esm2020 → esm2022}/lib/firestore/firebase.firestore.context.service.mjs +4 -4
  43. package/{esm2020 → esm2022}/lib/firestore/firebase.firestore.module.mjs +5 -5
  44. package/{esm2020 → esm2022}/lib/function/firebase.function.module.mjs +5 -5
  45. package/{esm2020 → esm2022}/lib/model/model.module.mjs +5 -5
  46. package/esm2022/lib/model/modules/model/model.history.component.mjs +48 -0
  47. package/{esm2020 → esm2022}/lib/model/modules/model/model.history.module.mjs +5 -5
  48. package/{esm2020 → esm2022}/lib/model/modules/model/model.history.popover.button.component.mjs +6 -6
  49. package/esm2022/lib/model/modules/model/model.history.popover.component.mjs +50 -0
  50. package/esm2022/lib/model/modules/model/model.tracker.service.mjs +62 -0
  51. package/esm2022/lib/model/modules/model/model.types.list.component.mjs +64 -0
  52. package/{esm2020 → esm2022}/lib/model/modules/model/model.types.module.mjs +5 -5
  53. package/{esm2020 → esm2022}/lib/model/modules/model/model.types.service.mjs +4 -4
  54. package/{esm2020 → esm2022}/lib/model/modules/model/model.types.view.directive.mjs +4 -4
  55. package/{esm2020 → esm2022}/lib/model/modules/store/model.store.module.mjs +5 -5
  56. package/{esm2020 → esm2022}/lib/model/modules/store/store.collection.change.directive.mjs +7 -7
  57. package/{esm2020 → esm2022}/lib/model/modules/store/store.collection.change.if.directive.mjs +4 -4
  58. package/{esm2020 → esm2022}/lib/model/modules/store/store.collection.directive.mjs +4 -4
  59. package/{esm2020 → esm2022}/lib/model/modules/store/store.collection.list.directive.mjs +4 -4
  60. package/{esm2020 → esm2022}/lib/model/modules/store/store.collection.mjs +4 -4
  61. package/{esm2020 → esm2022}/lib/model/modules/store/store.document.auth.directive.mjs +4 -4
  62. package/{esm2020 → esm2022}/lib/model/modules/store/store.document.crud.mjs +1 -1
  63. package/{esm2020 → esm2022}/lib/model/modules/store/store.document.directive.mjs +4 -4
  64. package/esm2022/lib/model/modules/store/store.document.mjs +167 -0
  65. package/{esm2020 → esm2022}/lib/model/modules/store/store.document.router.directive.mjs +4 -4
  66. package/{esm2020 → esm2022}/lib/model/modules/store/store.document.router.key.directive.mjs +4 -4
  67. package/{esm2020 → esm2022}/lib/model/modules/store/store.subcollection.directive.mjs +4 -4
  68. package/{esm2020 → esm2022}/lib/model/modules/store/store.subcollection.document.mjs +4 -4
  69. package/{esm2020 → esm2022}/lib/model/modules/store/store.subcollection.mjs +4 -4
  70. package/esm2022/lib/model/service/model.context.service.mjs +38 -0
  71. package/{esm2020 → esm2022}/lib/model/system/systemstate.collection.store.directive.mjs +4 -4
  72. package/{esm2020 → esm2022}/lib/model/system/systemstate.collection.store.mjs +4 -4
  73. package/{esm2020 → esm2022}/lib/model/system/systemstate.document.store.directive.mjs +4 -4
  74. package/{esm2020 → esm2022}/lib/model/system/systemstate.document.store.mjs +4 -4
  75. package/{esm2020 → esm2022}/lib/module.mjs +5 -5
  76. package/{esm2020 → esm2022}/lib/pipe/key.pipe.mjs +7 -7
  77. package/{esm2020 → esm2022}/lib/pipe/pipe.module.mjs +5 -5
  78. package/{esm2020 → esm2022}/lib/storage/firebase.storage.module.mjs +5 -5
  79. package/{esm2020 → esm2022}/lib/storage/firebase.storage.service.mjs +4 -4
  80. package/{fesm2020 → fesm2022}/dereekb-dbx-firebase.mjs +500 -490
  81. package/fesm2022/dereekb-dbx-firebase.mjs.map +1 -0
  82. package/lib/analytics/analytics.user.source.d.ts +1 -1
  83. package/lib/auth/auth.d.ts +1 -1
  84. package/lib/auth/login/_login.scss +6 -2
  85. package/lib/auth/login/login.anonymous.component.d.ts +1 -1
  86. package/lib/auth/login/login.apple.component.d.ts +1 -1
  87. package/lib/auth/login/login.button.component.d.ts +4 -4
  88. package/lib/auth/login/login.component.d.ts +1 -1
  89. package/lib/auth/login/login.context.back.component.d.ts +1 -1
  90. package/lib/auth/login/login.context.directive.d.ts +1 -1
  91. package/lib/auth/login/login.d.ts +5 -5
  92. package/lib/auth/login/login.email.component.d.ts +1 -1
  93. package/lib/auth/login/login.email.content.component.d.ts +2 -2
  94. package/lib/auth/login/login.email.form.component.d.ts +2 -2
  95. package/lib/auth/login/login.email.recovery.form.component.d.ts +1 -1
  96. package/lib/auth/login/login.facebook.component.d.ts +1 -1
  97. package/lib/auth/login/login.github.component.d.ts +1 -1
  98. package/lib/auth/login/login.google.component.d.ts +1 -1
  99. package/lib/auth/login/login.list.component.d.ts +1 -1
  100. package/lib/auth/login/login.microsoft.component.d.ts +1 -1
  101. package/lib/auth/login/login.password.d.ts +1 -1
  102. package/lib/auth/login/login.service.d.ts +1 -1
  103. package/lib/auth/login/login.terms.component.d.ts +1 -1
  104. package/lib/auth/login/login.terms.simple.component.d.ts +1 -1
  105. package/lib/auth/login/login.twitter.component.d.ts +1 -1
  106. package/lib/auth/login/register.component.d.ts +1 -1
  107. package/lib/auth/login/register.email.component.d.ts +1 -1
  108. package/lib/auth/service/firebase.auth.rxjs.d.ts +1 -1
  109. package/lib/auth/service/firebase.auth.service.d.ts +1 -1
  110. package/lib/auth/service/firebase.auth.service.delegate.d.ts +1 -1
  111. package/lib/development/development.popup.component.d.ts +1 -1
  112. package/lib/development/development.popup.content.component.d.ts +1 -1
  113. package/lib/development/development.popup.content.form.component.d.ts +1 -1
  114. package/lib/development/development.popup.directive.d.ts +1 -1
  115. package/lib/development/development.scheduler.list.component.d.ts +4 -4
  116. package/lib/development/development.scheduler.widget.component.d.ts +3 -3
  117. package/lib/model/loader/collection.change.trigger.d.ts +1 -1
  118. package/lib/model/loader/collection.change.watcher.d.ts +2 -2
  119. package/lib/model/loader/collection.loader.instance.d.ts +1 -1
  120. package/lib/model/modules/model/model.history.component.d.ts +1 -1
  121. package/lib/model/modules/model/model.history.popover.button.component.d.ts +2 -2
  122. package/lib/model/modules/model/model.history.popover.component.d.ts +1 -1
  123. package/lib/model/modules/model/model.types.list.component.d.ts +4 -4
  124. package/lib/model/modules/model/model.types.service.d.ts +3 -3
  125. package/lib/model/modules/model/model.types.view.directive.d.ts +1 -1
  126. package/lib/model/modules/store/store.collection.change.directive.d.ts +1 -1
  127. package/lib/model/modules/store/store.collection.change.if.directive.d.ts +2 -2
  128. package/lib/model/modules/store/store.collection.directive.d.ts +2 -2
  129. package/lib/model/modules/store/store.collection.list.directive.d.ts +1 -1
  130. package/lib/model/modules/store/store.document.auth.directive.d.ts +1 -1
  131. package/lib/model/modules/store/store.document.crud.d.ts +5 -9
  132. package/lib/model/modules/store/store.document.directive.d.ts +5 -5
  133. package/lib/model/modules/store/store.document.router.directive.d.ts +1 -1
  134. package/lib/model/modules/store/store.document.router.key.directive.d.ts +1 -1
  135. package/lib/model/modules/store/store.subcollection.d.ts +3 -3
  136. package/lib/model/modules/store/store.subcollection.directive.d.ts +1 -1
  137. package/lib/model/modules/store/store.subcollection.document.d.ts +1 -1
  138. package/lib/model/modules/store/store.subcollection.rxjs.d.ts +3 -3
  139. package/lib/model/service/model.context.instance.d.ts +1 -1
  140. package/lib/model/service/model.context.service.d.ts +1 -1
  141. package/lib/model/system/systemstate.collection.store.directive.d.ts +1 -1
  142. package/lib/model/system/systemstate.document.store.directive.d.ts +1 -1
  143. package/lib/storage/firebase.storage.module.d.ts +1 -1
  144. package/lib/style/_all-typography.scss +2 -2
  145. package/lib/style/_core.scss +1 -2
  146. package/lib/style/_theming.scss +1 -1
  147. package/package.json +25 -21
  148. package/esm2020/lib/auth/login/login.anonymous.component.mjs +0 -22
  149. package/esm2020/lib/auth/login/login.apple.component.mjs +0 -22
  150. package/esm2020/lib/auth/login/login.context.directive.mjs +0 -29
  151. package/esm2020/lib/auth/login/login.email.component.mjs +0 -23
  152. package/esm2020/lib/auth/login/login.facebook.component.mjs +0 -22
  153. package/esm2020/lib/auth/login/login.github.component.mjs +0 -22
  154. package/esm2020/lib/auth/login/login.google.component.mjs +0 -22
  155. package/esm2020/lib/auth/login/login.microsoft.component.mjs +0 -22
  156. package/esm2020/lib/auth/login/login.twitter.component.mjs +0 -22
  157. package/esm2020/lib/development/development.scheduler.list.component.mjs +0 -79
  158. package/esm2020/lib/firebase/firebase.emulator.service.mjs +0 -35
  159. package/esm2020/lib/firebase/firebase.module.mjs +0 -293
  160. package/esm2020/lib/model/modules/model/model.history.component.mjs +0 -48
  161. package/esm2020/lib/model/modules/model/model.history.popover.component.mjs +0 -50
  162. package/esm2020/lib/model/modules/model/model.tracker.service.mjs +0 -62
  163. package/esm2020/lib/model/modules/model/model.types.list.component.mjs +0 -63
  164. package/esm2020/lib/model/modules/store/store.document.mjs +0 -168
  165. package/esm2020/lib/model/service/model.context.service.mjs +0 -38
  166. package/fesm2015/dereekb-dbx-firebase.mjs +0 -4632
  167. package/fesm2015/dereekb-dbx-firebase.mjs.map +0 -1
  168. package/fesm2020/dereekb-dbx-firebase.mjs.map +0 -1
  169. /package/{esm2020 → esm2022}/dereekb-dbx-firebase.mjs +0 -0
  170. /package/{esm2020 → esm2022}/index.mjs +0 -0
  171. /package/{esm2020 → esm2022}/lib/analytics/index.mjs +0 -0
  172. /package/{esm2020 → esm2022}/lib/auth/appcheck/appcheck.mjs +0 -0
  173. /package/{esm2020 → esm2022}/lib/auth/appcheck/index.mjs +0 -0
  174. /package/{esm2020 → esm2022}/lib/auth/auth.mjs +0 -0
  175. /package/{esm2020 → esm2022}/lib/auth/index.mjs +0 -0
  176. /package/{esm2020 → esm2022}/lib/auth/login/index.mjs +0 -0
  177. /package/{esm2020 → esm2022}/lib/auth/login/login.context.mjs +0 -0
  178. /package/{esm2020 → esm2022}/lib/auth/login/login.mjs +0 -0
  179. /package/{esm2020 → esm2022}/lib/auth/login/login.password.mjs +0 -0
  180. /package/{esm2020 → esm2022}/lib/auth/login/login.terms.mjs +0 -0
  181. /package/{esm2020 → esm2022}/lib/auth/service/firebase.auth.rxjs.mjs +0 -0
  182. /package/{esm2020 → esm2022}/lib/auth/service/firebase.auth.service.delegate.mjs +0 -0
  183. /package/{esm2020 → esm2022}/lib/auth/service/index.mjs +0 -0
  184. /package/{esm2020 → esm2022}/lib/development/development.widget.mjs +0 -0
  185. /package/{esm2020 → esm2022}/lib/development/index.mjs +0 -0
  186. /package/{esm2020 → esm2022}/lib/firebase/appcheck.mjs +0 -0
  187. /package/{esm2020 → esm2022}/lib/firebase/emulators.mjs +0 -0
  188. /package/{esm2020 → esm2022}/lib/firebase/index.mjs +0 -0
  189. /package/{esm2020 → esm2022}/lib/firebase/options.mjs +0 -0
  190. /package/{esm2020 → esm2022}/lib/firestore/firebase.firestore.mjs +0 -0
  191. /package/{esm2020 → esm2022}/lib/firestore/index.mjs +0 -0
  192. /package/{esm2020 → esm2022}/lib/function/index.mjs +0 -0
  193. /package/{esm2020 → esm2022}/lib/index.mjs +0 -0
  194. /package/{esm2020 → esm2022}/lib/model/error.mjs +0 -0
  195. /package/{esm2020 → esm2022}/lib/model/index.mjs +0 -0
  196. /package/{esm2020 → esm2022}/lib/model/loader/collection.change.trigger.mjs +0 -0
  197. /package/{esm2020 → esm2022}/lib/model/loader/collection.change.watcher.mjs +0 -0
  198. /package/{esm2020 → esm2022}/lib/model/loader/collection.loader.instance.mjs +0 -0
  199. /package/{esm2020 → esm2022}/lib/model/loader/collection.loader.mjs +0 -0
  200. /package/{esm2020 → esm2022}/lib/model/loader/document.loader.instance.mjs +0 -0
  201. /package/{esm2020 → esm2022}/lib/model/loader/document.loader.mjs +0 -0
  202. /package/{esm2020 → esm2022}/lib/model/loader/index.mjs +0 -0
  203. /package/{esm2020 → esm2022}/lib/model/modules/index.mjs +0 -0
  204. /package/{esm2020 → esm2022}/lib/model/modules/model/index.mjs +0 -0
  205. /package/{esm2020 → esm2022}/lib/model/modules/model/model.sourceselect.history.mjs +0 -0
  206. /package/{esm2020 → esm2022}/lib/model/modules/store/index.mjs +0 -0
  207. /package/{esm2020 → esm2022}/lib/model/modules/store/store.subcollection.rxjs.mjs +0 -0
  208. /package/{esm2020 → esm2022}/lib/model/service/index.mjs +0 -0
  209. /package/{esm2020 → esm2022}/lib/model/service/model.context.instance.mjs +0 -0
  210. /package/{esm2020 → esm2022}/lib/model/service/model.context.mjs +0 -0
  211. /package/{esm2020 → esm2022}/lib/model/system/index.mjs +0 -0
  212. /package/{esm2020 → esm2022}/lib/model/system/systemstate.document.store.accessor.mjs +0 -0
  213. /package/{esm2020 → esm2022}/lib/pipe/index.mjs +0 -0
  214. /package/{esm2020 → esm2022}/lib/router/id.param.redirect.mjs +0 -0
  215. /package/{esm2020 → esm2022}/lib/router/index.mjs +0 -0
  216. /package/{esm2020 → esm2022}/lib/storage/firebase.storage.mjs +0 -0
  217. /package/{esm2020 → esm2022}/lib/storage/index.mjs +0 -0
@@ -1,62 +0,0 @@
1
- import { asArray, invertDecision } from '@dereekb/util';
2
- import { map, switchMap, shareReplay, startWith, of } from 'rxjs';
3
- import { Injectable } from '@angular/core';
4
- import { allDbxModelViewTrackerEventModelKeys, DbxModelTrackerService } from '@dereekb/dbx-web';
5
- import { DbxFirebaseModelTypesService } from './model.types.service';
6
- import { filterItemsWithObservableDecision, invertObservableDecision, mapEachAsync } from '@dereekb/rxjs';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@dereekb/dbx-web";
9
- import * as i2 from "./model.types.service";
10
- export class DbxFirebaseModelTrackerService {
11
- constructor(dbxModelTrackerService, dbxFirebaseModelTypesService) {
12
- this.dbxModelTrackerService = dbxModelTrackerService;
13
- this.dbxFirebaseModelTypesService = dbxFirebaseModelTypesService;
14
- this.historyKeys$ = this.dbxModelTrackerService.newEvent$.pipe(startWith(null), switchMap(() => this.loadHistoryKeys()), shareReplay(1));
15
- this.historyPairs$ = this.dbxModelTrackerService.newEvent$.pipe(startWith(null), switchMap(() => this.loadHistoryPairs()), // TODO: Improve efficiency of this to only load/remove items for new keys
16
- shareReplay(1));
17
- this.filterItemHistoryPairs$ = this.historyPairs$.pipe(mapEachAsync((instancePair) => instancePair.instance.identity$.pipe(map((identity) => ({ instancePair, identity }))), { onlyFirst: true }), shareReplay(1));
18
- }
19
- /**
20
- * Filters from historyPairs$ using the input filter configuration, if it is provided.
21
- *
22
- * @param filter
23
- * @returns
24
- */
25
- filterHistoryPairs(filter) {
26
- if (filter && (filter?.identity || filter?.filterItem)) {
27
- const { invertFilter = false, identity, filterItem } = filter;
28
- const allowedIdentities = new Set(asArray(identity));
29
- const baseIsAllowedIdentityFn = identity ? (x) => allowedIdentities.has(x) : () => true;
30
- const isAllowedIdentityFn = invertDecision(baseIsAllowedIdentityFn, invertFilter);
31
- const baseFilterItemFn = filterItem ? invertObservableDecision(filterItem, invertFilter) : () => of(true);
32
- const filterItemFn = (x) => {
33
- if (isAllowedIdentityFn(x.identity)) {
34
- return baseFilterItemFn(x);
35
- }
36
- else {
37
- return of(false);
38
- }
39
- };
40
- return this.filterItemHistoryPairs$.pipe(filterItemsWithObservableDecision(filterItemFn), map((x) => x.map((y) => y.instancePair)), shareReplay(1));
41
- }
42
- else {
43
- return this.historyPairs$;
44
- }
45
- }
46
- loadHistoryKeys() {
47
- return this.dbxModelTrackerService.getAllViewEvents().pipe(map(allDbxModelViewTrackerEventModelKeys));
48
- }
49
- loadHistoryPairs() {
50
- const historyKeys$ = this.loadHistoryKeys();
51
- return historyKeys$.pipe(switchMap((x) => this.dbxFirebaseModelTypesService.instancePairsForKeys(x)));
52
- }
53
- }
54
- DbxFirebaseModelTrackerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTrackerService, deps: [{ token: i1.DbxModelTrackerService }, { token: i2.DbxFirebaseModelTypesService }], target: i0.ɵɵFactoryTarget.Injectable });
55
- DbxFirebaseModelTrackerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTrackerService, providedIn: 'root' });
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTrackerService, decorators: [{
57
- type: Injectable,
58
- args: [{
59
- providedIn: 'root'
60
- }]
61
- }], ctorParameters: function () { return [{ type: i1.DbxModelTrackerService }, { type: i2.DbxFirebaseModelTypesService }]; } });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwudHJhY2tlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvbW9kdWxlcy9tb2RlbC9tb2RlbC50cmFja2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9GLE9BQU8sRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEcsT0FBTyxFQUFFLDRCQUE0QixFQUE0QyxNQUFNLHVCQUF1QixDQUFDO0FBQy9HLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSx3QkFBd0IsRUFBRSxZQUFZLEVBQThCLE1BQU0sZUFBZSxDQUFDOzs7O0FBeUJ0SSxNQUFNLE9BQU8sOEJBQThCO0lBNER6QyxZQUFxQixzQkFBOEMsRUFBVyw0QkFBMEQ7UUFBbkgsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUFXLGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBOEI7UUEzRC9ILGlCQUFZLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQ2hFLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLEVBQ3ZDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBRU8sa0JBQWEsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDakUsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUNmLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLDBFQUEwRTtRQUNwSCxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUVPLDRCQUF1QixHQUFvRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDekcsWUFBWSxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQzFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBNEN5SSxDQUFDO0lBMUM1STs7Ozs7T0FLRztJQUNILGtCQUFrQixDQUFDLE1BQW9EO1FBQ3JFLElBQUksTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsSUFBSSxNQUFNLEVBQUUsVUFBVSxDQUFDLEVBQUU7WUFDdEQsTUFBTSxFQUFFLFlBQVksR0FBRyxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQztZQUM5RCxNQUFNLGlCQUFpQixHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3JELE1BQU0sdUJBQXVCLEdBQTZDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ2xJLE1BQU0sbUJBQW1CLEdBQUcsY0FBYyxDQUFDLHVCQUF1QixFQUFFLFlBQVksQ0FBQyxDQUFDO1lBRWxGLE1BQU0sZ0JBQWdCLEdBQWtFLFVBQVUsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFekssTUFBTSxZQUFZLEdBQWtFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3hGLElBQUksbUJBQW1CLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUNuQyxPQUFPLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM1QjtxQkFBTTtvQkFDTCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDbEI7WUFDSCxDQUFDLENBQUM7WUFFRixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQ3RDLGlDQUFpQyxDQUFDLFlBQVksQ0FBQyxFQUMvQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUN4QyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztTQUNIO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDLENBQUM7SUFDeEcsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM1QyxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7OzRIQTFEVSw4QkFBOEI7Z0lBQTlCLDhCQUE4QixjQUY3QixNQUFNOzRGQUVQLDhCQUE4QjtrQkFIMUMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcnJheU9yVmFsdWUsIERlY2lzaW9uRnVuY3Rpb24sIE1heWJlLCBhc0FycmF5LCBpbnZlcnREZWNpc2lvbiB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRmlyZXN0b3JlTW9kZWxJZGVudGl0eSB9IGZyb20gJ0BkZXJlZWtiL2ZpcmViYXNlJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgc3dpdGNoTWFwLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYWxsRGJ4TW9kZWxWaWV3VHJhY2tlckV2ZW50TW9kZWxLZXlzLCBEYnhNb2RlbFRyYWNrZXJTZXJ2aWNlIH0gZnJvbSAnQGRlcmVla2IvZGJ4LXdlYic7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlLCBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyIH0gZnJvbSAnLi9tb2RlbC50eXBlcy5zZXJ2aWNlJztcbmltcG9ydCB7IGZpbHRlckl0ZW1zV2l0aE9ic2VydmFibGVEZWNpc2lvbiwgaW52ZXJ0T2JzZXJ2YWJsZURlY2lzaW9uLCBtYXBFYWNoQXN5bmMsIE9ic2VydmFibGVEZWNpc2lvbkZ1bmN0aW9uIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VNb2RlbFRyYWNrZXJGaWx0ZXJJdGVtIHtcbiAgaW5zdGFuY2VQYWlyOiBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyO1xuICBpZGVudGl0eTogRmlyZXN0b3JlTW9kZWxJZGVudGl0eTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZU1vZGVsVHJhY2tlckhpc3RvcnlGaWx0ZXIge1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gZXhjbHVkZSB0aGUgdmFsdWVzIGluc3RlYWQgb2YgaW5jbHVkZSB0aGVtLlxuICAgKi9cbiAgaW52ZXJ0RmlsdGVyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIElkZW50aXR5IHR5cGVzIHRvIGZpbHRlciBvbi5cbiAgICovXG4gIGlkZW50aXR5PzogTWF5YmU8QXJyYXlPclZhbHVlPEZpcmVzdG9yZU1vZGVsSWRlbnRpdHk+PjtcbiAgLyoqXG4gICAqIEFyYml0cmFyeSBmaWx0ZXIgZnVuY3Rpb24gdG8gZmlsdGVyIGluZGl2aWR1YWwgaXRlbXMuXG4gICAqL1xuICBmaWx0ZXJJdGVtPzogT2JzZXJ2YWJsZURlY2lzaW9uRnVuY3Rpb248RGJ4RmlyZWJhc2VNb2RlbFRyYWNrZXJGaWx0ZXJJdGVtPjtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VNb2RlbFRyYWNrZXJTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgaGlzdG9yeUtleXMkID0gdGhpcy5kYnhNb2RlbFRyYWNrZXJTZXJ2aWNlLm5ld0V2ZW50JC5waXBlKFxuICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5sb2FkSGlzdG9yeUtleXMoKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBoaXN0b3J5UGFpcnMkID0gdGhpcy5kYnhNb2RlbFRyYWNrZXJTZXJ2aWNlLm5ld0V2ZW50JC5waXBlKFxuICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5sb2FkSGlzdG9yeVBhaXJzKCkpLCAvLyBUT0RPOiBJbXByb3ZlIGVmZmljaWVuY3kgb2YgdGhpcyB0byBvbmx5IGxvYWQvcmVtb3ZlIGl0ZW1zIGZvciBuZXcga2V5c1xuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZmlsdGVySXRlbUhpc3RvcnlQYWlycyQ6IE9ic2VydmFibGU8RGJ4RmlyZWJhc2VNb2RlbFRyYWNrZXJGaWx0ZXJJdGVtW10+ID0gdGhpcy5oaXN0b3J5UGFpcnMkLnBpcGUoXG4gICAgbWFwRWFjaEFzeW5jKChpbnN0YW5jZVBhaXIpID0+IGluc3RhbmNlUGFpci5pbnN0YW5jZS5pZGVudGl0eSQucGlwZShtYXAoKGlkZW50aXR5KSA9PiAoeyBpbnN0YW5jZVBhaXIsIGlkZW50aXR5IH0pKSksIHsgb25seUZpcnN0OiB0cnVlIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIEZpbHRlcnMgZnJvbSBoaXN0b3J5UGFpcnMkIHVzaW5nIHRoZSBpbnB1dCBmaWx0ZXIgY29uZmlndXJhdGlvbiwgaWYgaXQgaXMgcHJvdmlkZWQuXG4gICAqXG4gICAqIEBwYXJhbSBmaWx0ZXJcbiAgICogQHJldHVybnNcbiAgICovXG4gIGZpbHRlckhpc3RvcnlQYWlycyhmaWx0ZXI/OiBNYXliZTxEYnhGaXJlYmFzZU1vZGVsVHJhY2tlckhpc3RvcnlGaWx0ZXI+KTogT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyW10+IHtcbiAgICBpZiAoZmlsdGVyICYmIChmaWx0ZXI/LmlkZW50aXR5IHx8IGZpbHRlcj8uZmlsdGVySXRlbSkpIHtcbiAgICAgIGNvbnN0IHsgaW52ZXJ0RmlsdGVyID0gZmFsc2UsIGlkZW50aXR5LCBmaWx0ZXJJdGVtIH0gPSBmaWx0ZXI7XG4gICAgICBjb25zdCBhbGxvd2VkSWRlbnRpdGllcyA9IG5ldyBTZXQoYXNBcnJheShpZGVudGl0eSkpO1xuICAgICAgY29uc3QgYmFzZUlzQWxsb3dlZElkZW50aXR5Rm46IERlY2lzaW9uRnVuY3Rpb248RmlyZXN0b3JlTW9kZWxJZGVudGl0eT4gPSBpZGVudGl0eSA/ICh4KSA9PiBhbGxvd2VkSWRlbnRpdGllcy5oYXMoeCkgOiAoKSA9PiB0cnVlO1xuICAgICAgY29uc3QgaXNBbGxvd2VkSWRlbnRpdHlGbiA9IGludmVydERlY2lzaW9uKGJhc2VJc0FsbG93ZWRJZGVudGl0eUZuLCBpbnZlcnRGaWx0ZXIpO1xuXG4gICAgICBjb25zdCBiYXNlRmlsdGVySXRlbUZuOiBPYnNlcnZhYmxlRGVjaXNpb25GdW5jdGlvbjxEYnhGaXJlYmFzZU1vZGVsVHJhY2tlckZpbHRlckl0ZW0+ID0gZmlsdGVySXRlbSA/IGludmVydE9ic2VydmFibGVEZWNpc2lvbihmaWx0ZXJJdGVtLCBpbnZlcnRGaWx0ZXIpIDogKCkgPT4gb2YodHJ1ZSk7XG5cbiAgICAgIGNvbnN0IGZpbHRlckl0ZW1GbjogT2JzZXJ2YWJsZURlY2lzaW9uRnVuY3Rpb248RGJ4RmlyZWJhc2VNb2RlbFRyYWNrZXJGaWx0ZXJJdGVtPiA9ICh4KSA9PiB7XG4gICAgICAgIGlmIChpc0FsbG93ZWRJZGVudGl0eUZuKHguaWRlbnRpdHkpKSB7XG4gICAgICAgICAgcmV0dXJuIGJhc2VGaWx0ZXJJdGVtRm4oeCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVySXRlbUhpc3RvcnlQYWlycyQucGlwZShcbiAgICAgICAgZmlsdGVySXRlbXNXaXRoT2JzZXJ2YWJsZURlY2lzaW9uKGZpbHRlckl0ZW1GbiksXG4gICAgICAgIG1hcCgoeCkgPT4geC5tYXAoKHkpID0+IHkuaW5zdGFuY2VQYWlyKSksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5oaXN0b3J5UGFpcnMkO1xuICAgIH1cbiAgfVxuXG4gIGxvYWRIaXN0b3J5S2V5cygpIHtcbiAgICByZXR1cm4gdGhpcy5kYnhNb2RlbFRyYWNrZXJTZXJ2aWNlLmdldEFsbFZpZXdFdmVudHMoKS5waXBlKG1hcChhbGxEYnhNb2RlbFZpZXdUcmFja2VyRXZlbnRNb2RlbEtleXMpKTtcbiAgfVxuXG4gIGxvYWRIaXN0b3J5UGFpcnMoKTogT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyW10+IHtcbiAgICBjb25zdCBoaXN0b3J5S2V5cyQgPSB0aGlzLmxvYWRIaXN0b3J5S2V5cygpO1xuICAgIHJldHVybiBoaXN0b3J5S2V5cyQucGlwZShzd2l0Y2hNYXAoKHgpID0+IHRoaXMuZGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZS5pbnN0YW5jZVBhaXJzRm9yS2V5cyh4KSkpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZGJ4TW9kZWxUcmFja2VyU2VydmljZTogRGJ4TW9kZWxUcmFja2VyU2VydmljZSwgcmVhZG9ubHkgZGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZTogRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZSkge31cbn1cbiJdfQ==
@@ -1,63 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import { AbstractDbxSelectionListWrapperDirective, AbstractDbxValueListViewItemComponent, AbstractDbxSelectionListViewDirective, DEFAULT_LIST_WRAPPER_DIRECTIVE_TEMPLATE, provideDbxListView, DEFAULT_DBX_SELECTION_VALUE_LIST_DIRECTIVE_TEMPLATE, provideDbxListViewWrapper } from '@dereekb/dbx-web';
3
- import { of } from 'rxjs';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@dereekb/dbx-web";
6
- import * as i2 from "@angular/common";
7
- /**
8
- * Renders an item as configured from the DbxFirebaseModelTypesServiceInstancePair.
9
- */
10
- export class DbxFirebaseModelTypeInstanceComponent extends AbstractDbxSelectionListWrapperDirective {
11
- constructor() {
12
- super({
13
- componentClass: DbxFirebaseModelTypeInstanceViewComponent,
14
- defaultSelectionMode: 'view'
15
- });
16
- }
17
- }
18
- DbxFirebaseModelTypeInstanceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypeInstanceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19
- DbxFirebaseModelTypeInstanceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxFirebaseModelTypeInstanceComponent, selector: "dbx-firebase-model-type-instance-list", providers: provideDbxListViewWrapper(DbxFirebaseModelTypeInstanceComponent), usesInheritance: true, ngImport: i0, template: "\n<dbx-list [state$]=\"state$\" [config]=\"config$ | async\" [disabled]=\"disabled\" [selectionMode]=\"selectionMode\">\n <ng-content top select=\"[top]\"></ng-content>\n <ng-content bottom select=\"[bottom]\"></ng-content>\n <ng-content empty select=\"[empty]\"></ng-content>\n <ng-content emptyLoading select=\"[emptyLoading]\"></ng-content>\n</dbx-list>\n", isInline: true, dependencies: [{ kind: "component", type: i1.DbxListComponent, selector: "dbx-list", inputs: ["padded", "state$", "config", "disabled", "selectionMode"], outputs: ["contentScrolled"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypeInstanceComponent, decorators: [{
21
- type: Component,
22
- args: [{
23
- selector: 'dbx-firebase-model-type-instance-list',
24
- template: DEFAULT_LIST_WRAPPER_DIRECTIVE_TEMPLATE,
25
- providers: provideDbxListViewWrapper(DbxFirebaseModelTypeInstanceComponent)
26
- }]
27
- }], ctorParameters: function () { return []; } });
28
- export class DbxFirebaseModelTypeInstanceViewComponent extends AbstractDbxSelectionListViewDirective {
29
- constructor() {
30
- super(...arguments);
31
- this.config = {
32
- componentClass: DbxFirebaseModelTypeInstanceViewItemComponent,
33
- mapValuesToItemValues: (x) => of(x.map((y) => ({ itemValue: y, icon: y.displayInfo.icon ?? y.icon, anchor: y.segueRef })))
34
- };
35
- }
36
- }
37
- DbxFirebaseModelTypeInstanceViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypeInstanceViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
38
- DbxFirebaseModelTypeInstanceViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxFirebaseModelTypeInstanceViewComponent, selector: "ng-component", providers: provideDbxListView(DbxFirebaseModelTypeInstanceViewComponent), usesInheritance: true, ngImport: i0, template: "<dbx-selection-list-view [config]=\"config\"></dbx-selection-list-view>", isInline: true, dependencies: [{ kind: "component", type: i1.DbxSelectionValueListViewComponent, selector: "dbx-selection-list-view" }] });
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypeInstanceViewComponent, decorators: [{
40
- type: Component,
41
- args: [{
42
- template: DEFAULT_DBX_SELECTION_VALUE_LIST_DIRECTIVE_TEMPLATE,
43
- providers: provideDbxListView(DbxFirebaseModelTypeInstanceViewComponent)
44
- }]
45
- }] });
46
- export class DbxFirebaseModelTypeInstanceViewItemComponent extends AbstractDbxValueListViewItemComponent {
47
- get title() {
48
- return this.itemValue.displayInfo.title;
49
- }
50
- }
51
- DbxFirebaseModelTypeInstanceViewItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypeInstanceViewItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
52
- DbxFirebaseModelTypeInstanceViewItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxFirebaseModelTypeInstanceViewItemComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
53
- <span>{{ title }}</span>
54
- `, isInline: true });
55
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypeInstanceViewItemComponent, decorators: [{
56
- type: Component,
57
- args: [{
58
- template: `
59
- <span>{{ title }}</span>
60
- `
61
- }]
62
- }] });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwudHlwZXMubGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL21vZGVsL21vZGVsLnR5cGVzLmxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLHdDQUF3QyxFQUFFLHFDQUFxQyxFQUFFLHFDQUFxQyxFQUFFLHVDQUF1QyxFQUFtQyxrQkFBa0IsRUFBRSxtREFBbUQsRUFBc0IseUJBQXlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1VixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBSzFCOztHQUVHO0FBTUgsTUFBTSxPQUFPLHFDQUFzQyxTQUFRLHdDQUFrRjtJQUMzSTtRQUNFLEtBQUssQ0FBQztZQUNKLGNBQWMsRUFBRSx5Q0FBeUM7WUFDekQsb0JBQW9CLEVBQUUsTUFBTTtTQUM3QixDQUFDLENBQUM7SUFDTCxDQUFDOzttSUFOVSxxQ0FBcUM7dUhBQXJDLHFDQUFxQyxnRUFGckMseUJBQXlCLENBQUMscUNBQXFDLENBQUM7NEZBRWhFLHFDQUFxQztrQkFMakQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUNBQXVDO29CQUNqRCxRQUFRLEVBQUUsdUNBQXVDO29CQUNqRCxTQUFTLEVBQUUseUJBQXlCLHVDQUF1QztpQkFDNUU7O0FBY0QsTUFBTSxPQUFPLHlDQUEwQyxTQUFRLHFDQUErRTtJQUo5STs7UUFLVyxXQUFNLEdBQXVFO1lBQ3BGLGNBQWMsRUFBRSw2Q0FBNkM7WUFDN0QscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMzSCxDQUFDO0tBQ0g7O3VJQUxZLHlDQUF5QzsySEFBekMseUNBQXlDLHVDQUZ6QyxrQkFBa0IsQ0FBQyx5Q0FBeUMsQ0FBQzs0RkFFN0QseUNBQXlDO2tCQUpyRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtREFBbUQ7b0JBQzdELFNBQVMsRUFBRSxrQkFBa0IsMkNBQTJDO2lCQUN6RTs7QUFhRCxNQUFNLE9BQU8sNkNBQThDLFNBQVEscUNBQStFO0lBQ2hKLElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO0lBQzFDLENBQUM7OzJJQUhVLDZDQUE2QzsrSEFBN0MsNkNBQTZDLDJFQUo5Qzs7R0FFVDs0RkFFVSw2Q0FBNkM7a0JBTHpELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFOztHQUVUO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdERieFNlbGVjdGlvbkxpc3RXcmFwcGVyRGlyZWN0aXZlLCBBYnN0cmFjdERieFZhbHVlTGlzdFZpZXdJdGVtQ29tcG9uZW50LCBBYnN0cmFjdERieFNlbGVjdGlvbkxpc3RWaWV3RGlyZWN0aXZlLCBERUZBVUxUX0xJU1RfV1JBUFBFUl9ESVJFQ1RJVkVfVEVNUExBVEUsIERieFNlbGVjdGlvblZhbHVlTGlzdFZpZXdDb25maWcsIHByb3ZpZGVEYnhMaXN0VmlldywgREVGQVVMVF9EQlhfU0VMRUNUSU9OX1ZBTFVFX0xJU1RfRElSRUNUSVZFX1RFTVBMQVRFLCBEYnhWYWx1ZUFzTGlzdEl0ZW0sIHByb3ZpZGVEYnhMaXN0Vmlld1dyYXBwZXIgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyIH0gZnJvbSAnLi9tb2RlbC50eXBlcy5zZXJ2aWNlJztcblxuZXhwb3J0IHR5cGUgRGJ4RmlyZXN0b3JlTW9kZWxUeXBlSW5zdGFuY2VJdGVtID0gRGJ4VmFsdWVBc0xpc3RJdGVtPERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZVBhaXI+O1xuXG4vKipcbiAqIFJlbmRlcnMgYW4gaXRlbSBhcyBjb25maWd1cmVkIGZyb20gdGhlIERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZVBhaXIuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RieC1maXJlYmFzZS1tb2RlbC10eXBlLWluc3RhbmNlLWxpc3QnLFxuICB0ZW1wbGF0ZTogREVGQVVMVF9MSVNUX1dSQVBQRVJfRElSRUNUSVZFX1RFTVBMQVRFLFxuICBwcm92aWRlcnM6IHByb3ZpZGVEYnhMaXN0Vmlld1dyYXBwZXIoRGJ4RmlyZWJhc2VNb2RlbFR5cGVJbnN0YW5jZUNvbXBvbmVudClcbn0pXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VNb2RlbFR5cGVJbnN0YW5jZUNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RGJ4U2VsZWN0aW9uTGlzdFdyYXBwZXJEaXJlY3RpdmU8RGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpcj4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcih7XG4gICAgICBjb21wb25lbnRDbGFzczogRGJ4RmlyZWJhc2VNb2RlbFR5cGVJbnN0YW5jZVZpZXdDb21wb25lbnQsXG4gICAgICBkZWZhdWx0U2VsZWN0aW9uTW9kZTogJ3ZpZXcnXG4gICAgfSk7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBERUZBVUxUX0RCWF9TRUxFQ1RJT05fVkFMVUVfTElTVF9ESVJFQ1RJVkVfVEVNUExBVEUsXG4gIHByb3ZpZGVyczogcHJvdmlkZURieExpc3RWaWV3KERieEZpcmViYXNlTW9kZWxUeXBlSW5zdGFuY2VWaWV3Q29tcG9uZW50KVxufSlcbmV4cG9ydCBjbGFzcyBEYnhGaXJlYmFzZU1vZGVsVHlwZUluc3RhbmNlVmlld0NvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RGJ4U2VsZWN0aW9uTGlzdFZpZXdEaXJlY3RpdmU8RGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpcj4ge1xuICByZWFkb25seSBjb25maWc6IERieFNlbGVjdGlvblZhbHVlTGlzdFZpZXdDb25maWc8RGJ4RmlyZXN0b3JlTW9kZWxUeXBlSW5zdGFuY2VJdGVtPiA9IHtcbiAgICBjb21wb25lbnRDbGFzczogRGJ4RmlyZWJhc2VNb2RlbFR5cGVJbnN0YW5jZVZpZXdJdGVtQ29tcG9uZW50LFxuICAgIG1hcFZhbHVlc1RvSXRlbVZhbHVlczogKHgpID0+IG9mKHgubWFwKCh5KSA9PiAoeyBpdGVtVmFsdWU6IHksIGljb246IHkuZGlzcGxheUluZm8uaWNvbiA/PyB5Lmljb24sIGFuY2hvcjogeS5zZWd1ZVJlZiB9KSkpXG4gIH07XG59XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogYFxuICAgIDxzcGFuPnt7IHRpdGxlIH19PC9zcGFuPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIERieEZpcmViYXNlTW9kZWxUeXBlSW5zdGFuY2VWaWV3SXRlbUNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RGJ4VmFsdWVMaXN0Vmlld0l0ZW1Db21wb25lbnQ8RGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpcj4ge1xuICBnZXQgdGl0bGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbVZhbHVlLmRpc3BsYXlJbmZvLnRpdGxlO1xuICB9XG59XG4iXX0=
@@ -1,168 +0,0 @@
1
- import { __decorate, __metadata, __param } from "tslib";
2
- import { Inject, Injectable, Optional } from '@angular/core';
3
- import { shareReplay, distinctUntilChanged, map, switchMap, combineLatest, of } from 'rxjs';
4
- import { firestoreModelIdsFromKey, firestoreModelKeyPartPairs, firestoreModelKeyPairObject, documentDataWithIdAndKey, FirestoreAccessorStreamMode, inferKeyFromTwoWayFlatFirestoreModelKey, flatFirestoreModelKey, twoWayFlatFirestoreModelKey } from '@dereekb/firebase';
5
- import { filterMaybe, beginLoading, successResult, loadingStateFromObs, errorResult } from '@dereekb/rxjs';
6
- import { isMaybeSo } from '@dereekb/util';
7
- import { LockSetComponentStore } from '@dereekb/dbx-core';
8
- import { modelDoesNotExistError } from '../../error';
9
- import * as i0 from "@angular/core";
10
- export class AbstractDbxFirebaseDocumentStore extends LockSetComponentStore {
11
- constructor() {
12
- super(...arguments);
13
- // MARK: Effects
14
- // MARK: Accessors
15
- this.currentFirestoreCollectionLike$ = this.state$.pipe(map((x) => x.firestoreCollection ?? x.firestoreCollectionLike), distinctUntilChanged(), shareReplay(1));
16
- this.currentFirestoreCollection$ = this.state$.pipe(map((x) => x.firestoreCollection), distinctUntilChanged(), shareReplay(1));
17
- this.firestoreCollectionLike$ = this.currentFirestoreCollectionLike$.pipe(filterMaybe());
18
- this.firestoreCollection$ = this.currentFirestoreCollection$.pipe(filterMaybe());
19
- this.currentInputId$ = this.state$.pipe(map((x) => x.id), distinctUntilChanged(), shareReplay(1));
20
- this.inputId$ = this.currentInputId$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));
21
- this.currentInputKey$ = this.state$.pipe(map((x) => x.key), distinctUntilChanged(), shareReplay(1));
22
- this.inputKey$ = this.currentInputKey$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));
23
- this.currentInputRef$ = this.state$.pipe(map((x) => x.ref), distinctUntilChanged(), shareReplay(1));
24
- this.inputRef$ = this.currentInputRef$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));
25
- this.streamMode$ = this.state$.pipe(map((x) => x.streamMode ?? FirestoreAccessorStreamMode.STREAM), distinctUntilChanged(), shareReplay(1));
26
- this.currentDocument$ = combineLatest([this.currentInputId$, this.currentInputKey$, this.currentInputRef$]).pipe(switchMap(([id, key, ref]) => {
27
- let document;
28
- if (ref) {
29
- document = this.firestoreCollectionLike$.pipe(map((x) => x.documentAccessor().loadDocument(ref)));
30
- }
31
- else if (key) {
32
- document = this.firestoreCollectionLike$.pipe(map((x) => x.documentAccessor().loadDocumentForKey(key)));
33
- }
34
- else if (id) {
35
- document = this.firestoreCollection$.pipe(map((x) => x.documentAccessor().loadDocumentForId(id)));
36
- }
37
- else {
38
- document = of(undefined);
39
- }
40
- return document;
41
- }), distinctUntilChanged(), shareReplay(1));
42
- /**
43
- * Whether or not an id/ref/key has been input and currentDocument is not null.
44
- */
45
- this.hasRef$ = this.currentDocument$.pipe(map((x) => x?.documentRef != null), distinctUntilChanged(), shareReplay(1));
46
- this.document$ = this.currentDocument$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));
47
- this.documentLoadingState$ = this.currentDocument$.pipe(map((x) => (x ? successResult(x) : beginLoading())), shareReplay(1));
48
- this.id$ = this.document$.pipe(map((x) => x.id), shareReplay(1));
49
- this.key$ = this.document$.pipe(map((x) => x.key), shareReplay(1));
50
- this.keyModelIds$ = this.key$.pipe(map(firestoreModelIdsFromKey), shareReplay(1));
51
- this.keyPairs$ = this.key$.pipe(map(firestoreModelKeyPartPairs), filterMaybe(), shareReplay(1));
52
- this.keyPairObject$ = this.key$.pipe(map(firestoreModelKeyPairObject), filterMaybe(), shareReplay(1));
53
- this.ref$ = this.document$.pipe(map((x) => x.documentRef), shareReplay(1));
54
- this.flatKey$ = this.key$.pipe(map((x) => flatFirestoreModelKey(x)), shareReplay(1));
55
- this.twoWayFlatKey$ = this.key$.pipe(map((x) => twoWayFlatFirestoreModelKey(x)), shareReplay(1));
56
- this.snapshot$ = combineLatest([this.document$, this.streamMode$]).pipe(switchMap(([x, mode]) => x.snapshotStream(mode)), shareReplay(1));
57
- this.snapshotLoadingState$ = this.currentDocument$.pipe(switchMap(() => loadingStateFromObs(this.snapshot$)), shareReplay(1));
58
- this.currentData$ = this.snapshot$.pipe(map((x) => documentDataWithIdAndKey(x)), shareReplay(1));
59
- this.data$ = this.currentDocument$.pipe(switchMap(() => this.currentData$.pipe(filterMaybe())), shareReplay(1));
60
- this.dataLoadingState$ = this.snapshotLoadingState$.pipe(map((x) => {
61
- let result;
62
- if (x.value) {
63
- const data = documentDataWithIdAndKey(x.value);
64
- if (data) {
65
- result = successResult(data);
66
- }
67
- else {
68
- result = errorResult(modelDoesNotExistError());
69
- }
70
- }
71
- else {
72
- result = {
73
- ...x,
74
- value: undefined
75
- };
76
- }
77
- return result;
78
- }), shareReplay(1));
79
- /**
80
- * Returns false while hasRef$ is false, and then returns exists$.
81
- */
82
- this.currentExists$ = this.hasRef$.pipe(switchMap((hasRef) => {
83
- if (hasRef) {
84
- return this.exists$;
85
- }
86
- else {
87
- return of(false);
88
- }
89
- }), shareReplay(1));
90
- this.exists$ = this.currentData$.pipe(map((x) => isMaybeSo(x)), shareReplay(1));
91
- this.doesNotExist$ = this.exists$.pipe(map((x) => !x), shareReplay(1));
92
- this.modelIdentity$ = this.document$.pipe(map((x) => x.modelIdentity), shareReplay(1));
93
- // MARK: State Changes
94
- this.setId = this.updater((state, id) => (id ? { ...state, id, key: undefined, ref: undefined } : { ...state, id }));
95
- this.setKey = this.updater((state, key) => (key ? { ...state, key, id: undefined, ref: undefined } : { ...state, key }));
96
- this.setFlatKey = this.updater((state, key) => (key ? { ...state, key: inferKeyFromTwoWayFlatFirestoreModelKey(key), id: undefined, ref: undefined } : { ...state, key }));
97
- this.setRef = this.updater((state, ref) => (ref ? { ...state, key: undefined, id: undefined, ref } : { ...state, ref }));
98
- this.setStreamMode = this.updater((state, streamMode) => ({ ...state, streamMode }));
99
- this.clearRefs = this.updater((state) => ({ ...state, id: undefined, key: undefined, ref: undefined }));
100
- this.setFirestoreCollection = this.updater((state, firestoreCollection) => ({ ...state, firestoreCollection }));
101
- this.setFirestoreCollectionLike = this.updater((state, firestoreCollectionLike) => ({ ...state, firestoreCollectionLike }));
102
- }
103
- }
104
- AbstractDbxFirebaseDocumentStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AbstractDbxFirebaseDocumentStore, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
105
- AbstractDbxFirebaseDocumentStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AbstractDbxFirebaseDocumentStore });
106
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AbstractDbxFirebaseDocumentStore, decorators: [{
107
- type: Injectable
108
- }] });
109
- function injectSingleItemIdIntoState(state) {
110
- const id = state?.firestoreCollection?.singleItemIdentifier;
111
- if (state && id != null) {
112
- return { ...state, id };
113
- }
114
- else {
115
- return state;
116
- }
117
- }
118
- /**
119
- * AbstractDbxFirebaseDocumentWithParentStore extension for use with RootSingleItemFirestoreCollection.
120
- */
121
- let AbstractRootSingleItemDbxFirebaseDocument = class AbstractRootSingleItemDbxFirebaseDocument extends AbstractDbxFirebaseDocumentStore {
122
- constructor(initialState) {
123
- super(injectSingleItemIdIntoState(initialState));
124
- /**
125
- * Sets the SingleItemFirestoreCollection to use.
126
- */
127
- this.setFirestoreCollection = this.updater((state, firestoreCollection) => {
128
- if (firestoreCollection != null) {
129
- const id = firestoreCollection.singleItemIdentifier;
130
- if (id != null) {
131
- return { ...state, firestoreCollection, id };
132
- }
133
- else {
134
- throw new Error('AbstractRootSingleItemDbxFirebaseDocument only accepts RootSingleItemFirestoreCollection values with a singleItemIdentifier set for setFirestoreCollection.');
135
- }
136
- }
137
- else {
138
- return { ...state, firestoreCollection: null };
139
- }
140
- });
141
- /**
142
- * Does nothing on a AbstractRootSingleItemDbxFirebaseDocument.
143
- *
144
- * Ref is set with the FirestoreCollection
145
- */
146
- this.setId = this.updater((state, id) => state);
147
- /**
148
- * Does nothing on a AbstractRootSingleItemDbxFirebaseDocument.
149
- *
150
- * Ref is set with the FirestoreCollection
151
- */
152
- this.setKey = this.updater((state, key) => state);
153
- /**
154
- * Does nothing on a AbstractRootSingleItemDbxFirebaseDocument.
155
- *
156
- * Ref is set with the FirestoreCollection
157
- */
158
- this.setRef = this.updater((state, ref) => state);
159
- this.clearRefs = this.updater((state) => state);
160
- }
161
- };
162
- AbstractRootSingleItemDbxFirebaseDocument = __decorate([
163
- __param(0, Inject(null)),
164
- __param(0, Optional()),
165
- __metadata("design:paramtypes", [Object])
166
- ], AbstractRootSingleItemDbxFirebaseDocument);
167
- export { AbstractRootSingleItemDbxFirebaseDocument };
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuZG9jdW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL3N0b3JlL3N0b3JlLmRvY3VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFjLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBZ0IsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RILE9BQU8sRUFVTCx3QkFBd0IsRUFDeEIsMEJBQTBCLEVBRTFCLDJCQUEyQixFQUUzQix3QkFBd0IsRUFDeEIsMkJBQTJCLEVBRTNCLHVDQUF1QyxFQUd2QyxxQkFBcUIsRUFDckIsMkJBQTJCLEVBQzVCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLFdBQVcsRUFBZ0IsWUFBWSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzVJLE9BQU8sRUFBUyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFvQixxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUF5RnJELE1BQU0sT0FBTyxnQ0FBOEwsU0FBUSxxQkFBd0I7SUFEM087O1FBRUUsZ0JBQWdCO1FBRWhCLGtCQUFrQjtRQUNULG9DQUErQixHQUFxRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDM0csR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLElBQUksQ0FBQyxDQUFDLHVCQUF1QixDQUFDLEVBQzlELG9CQUFv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QUUsR0FBZ0MsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUErRyxDQUFDO1FBRXhMLGNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQXhDN0QsQ0FBQztDQXlDRixDQUFBO0FBNUNZLHlDQUF5QztJQUM3QixXQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUFFLFdBQUEsUUFBUSxFQUFFLENBQUE7O0dBRHBDLHlDQUF5QyxDQTRDckQ7U0E1Q1kseUNBQXlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHN3aXRjaE1hcCwgY29tYmluZUxhdGVzdCwgU3Vic2NyaXB0aW9uLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgRG9jdW1lbnRTbmFwc2hvdCxcbiAgRG9jdW1lbnRSZWZlcmVuY2UsXG4gIEZpcmVzdG9yZUNvbGxlY3Rpb24sXG4gIEZpcmVzdG9yZURvY3VtZW50LFxuICBEb2N1bWVudERhdGFXaXRoSWRBbmRLZXksXG4gIEZpcmVzdG9yZU1vZGVsSWQsXG4gIEZpcmVzdG9yZU1vZGVsS2V5LFxuICBGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZSxcbiAgRmlyZXN0b3JlTW9kZWxJZGVudGl0eSxcbiAgZmlyZXN0b3JlTW9kZWxJZHNGcm9tS2V5LFxuICBmaXJlc3RvcmVNb2RlbEtleVBhcnRQYWlycyxcbiAgRmlyZXN0b3JlTW9kZWxDb2xsZWN0aW9uQW5kSWRQYWlyLFxuICBmaXJlc3RvcmVNb2RlbEtleVBhaXJPYmplY3QsXG4gIEZpcmVzdG9yZU1vZGVsQ29sbGVjdGlvbkFuZElkUGFpck9iamVjdCxcbiAgZG9jdW1lbnREYXRhV2l0aElkQW5kS2V5LFxuICBGaXJlc3RvcmVBY2Nlc3NvclN0cmVhbU1vZGUsXG4gIFR3b1dheUZsYXRGaXJlc3RvcmVNb2RlbEtleSxcbiAgaW5mZXJLZXlGcm9tVHdvV2F5RmxhdEZpcmVzdG9yZU1vZGVsS2V5LFxuICBSb290U2luZ2xlSXRlbUZpcmVzdG9yZUNvbGxlY3Rpb24sXG4gIEZsYXRGaXJlc3RvcmVNb2RlbEtleSxcbiAgZmxhdEZpcmVzdG9yZU1vZGVsS2V5LFxuICB0d29XYXlGbGF0RmlyZXN0b3JlTW9kZWxLZXlcbn0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuaW1wb3J0IHsgZmlsdGVyTWF5YmUsIExvYWRpbmdTdGF0ZSwgYmVnaW5Mb2FkaW5nLCBzdWNjZXNzUmVzdWx0LCBsb2FkaW5nU3RhdGVGcm9tT2JzLCBlcnJvclJlc3VsdCwgT2JzZXJ2YWJsZU9yVmFsdWUgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IE1heWJlLCBpc01heWJlU28gfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IExvY2tTZXRDb21wb25lbnQsIExvY2tTZXRDb21wb25lbnRTdG9yZSB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IG1vZGVsRG9lc05vdEV4aXN0RXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlPFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+PiBleHRlbmRzIExvY2tTZXRDb21wb25lbnQge1xuICByZWFkb25seSBmaXJlc3RvcmVDb2xsZWN0aW9uTGlrZSQ6IE9ic2VydmFibGU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+O1xuICByZWFkb25seSBmaXJlc3RvcmVDb2xsZWN0aW9uJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+PjtcblxuICByZWFkb25seSBjdXJyZW50SW5wdXRJZCQ6IE9ic2VydmFibGU8TWF5YmU8RmlyZXN0b3JlTW9kZWxJZD4+O1xuICByZWFkb25seSBpbnB1dElkJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkPjtcbiAgcmVhZG9ubHkgY3VycmVudElucHV0S2V5JDogT2JzZXJ2YWJsZTxNYXliZTxGaXJlc3RvcmVNb2RlbEtleT4+O1xuICByZWFkb25seSBpbnB1dEtleSQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxLZXk+O1xuICByZWFkb25seSBjdXJyZW50SW5wdXRSZWYkOiBPYnNlcnZhYmxlPE1heWJlPERvY3VtZW50UmVmZXJlbmNlPFQ+Pj47XG4gIHJlYWRvbmx5IGlucHV0UmVmJDogT2JzZXJ2YWJsZTxEb2N1bWVudFJlZmVyZW5jZTxUPj47XG5cbiAgcmVhZG9ubHkgc3RyZWFtTW9kZSQ6IE9ic2VydmFibGU8RmlyZXN0b3JlQWNjZXNzb3JTdHJlYW1Nb2RlPjtcblxuICByZWFkb25seSBjdXJyZW50RG9jdW1lbnQkOiBPYnNlcnZhYmxlPE1heWJlPEQ+PjtcbiAgcmVhZG9ubHkgZG9jdW1lbnQkOiBPYnNlcnZhYmxlPEQ+O1xuICByZWFkb25seSBpZCQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxJZD47XG4gIHJlYWRvbmx5IGtleSQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxLZXk+O1xuICByZWFkb25seSByZWYkOiBPYnNlcnZhYmxlPERvY3VtZW50UmVmZXJlbmNlPFQ+PjtcbiAgcmVhZG9ubHkgaGFzUmVmJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcmVhZG9ubHkgZmxhdEtleSQ6IE9ic2VydmFibGU8RmxhdEZpcmVzdG9yZU1vZGVsS2V5PjtcbiAgcmVhZG9ubHkgdHdvV2F5RmxhdEtleSQ6IE9ic2VydmFibGU8VHdvV2F5RmxhdEZpcmVzdG9yZU1vZGVsS2V5PjtcblxuICByZWFkb25seSBrZXlNb2RlbElkcyQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxJZFtdPjtcbiAgcmVhZG9ubHkga2V5UGFpcnMkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsQ29sbGVjdGlvbkFuZElkUGFpcltdPjtcbiAgcmVhZG9ubHkga2V5UGFpck9iamVjdCQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxDb2xsZWN0aW9uQW5kSWRQYWlyT2JqZWN0PjtcblxuICByZWFkb25seSBkb2N1bWVudExvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPEQ+PjtcbiAgcmVhZG9ubHkgc25hcHNob3QkOiBPYnNlcnZhYmxlPERvY3VtZW50U25hcHNob3Q8VD4+O1xuICByZWFkb25seSBzbmFwc2hvdExvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPERvY3VtZW50U25hcHNob3Q8VD4+PjtcbiAgcmVhZG9ubHkgY3VycmVudERhdGEkOiBPYnNlcnZhYmxlPE1heWJlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPj4+O1xuICByZWFkb25seSBkYXRhJDogT2JzZXJ2YWJsZTxEb2N1bWVudERhdGFXaXRoSWRBbmRLZXk8VD4+O1xuICByZWFkb25seSBkYXRhTG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8RG9jdW1lbnREYXRhV2l0aElkQW5kS2V5PFQ+Pj47XG4gIHJlYWRvbmx5IGN1cnJlbnRFeGlzdHMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICByZWFkb25seSBleGlzdHMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICByZWFkb25seSBtb2RlbElkZW50aXR5JDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkZW50aXR5PjtcblxuICAvKipcbiAgICogU2V0cyB0aGUgaWQgb2YgdGhlIGRvY3VtZW50IHRvIGxvYWQuXG4gICAqL1xuICByZWFkb25seSBzZXRJZDogKG9ic2VydmFibGVPclZhbHVlOiBPYnNlcnZhYmxlT3JWYWx1ZTxNYXliZTxGaXJlc3RvcmVNb2RlbElkPj4pID0+IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogU2V0cyB0aGUga2V5IG9mIHRoZSBkb2N1bWVudCB0byBsb2FkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2V0S2V5OiAob2JzZXJ2YWJsZU9yVmFsdWU6IE9ic2VydmFibGVPclZhbHVlPE1heWJlPEZpcmVzdG9yZU1vZGVsS2V5Pj4pID0+IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogU2V0cyB0aGUga2V5IG9mIHRoZSBkb2N1bWVudCB0byBsb2FkIHVzaW5nIGEgVHdvV2F5RmxhdEZpcmVzdG9yZU1vZGVsS2V5LlxuICAgKi9cbiAgcmVhZG9ubHkgc2V0RmxhdEtleTogKG9ic2VydmFibGVPclZhbHVlOiBPYnNlcnZhYmxlT3JWYWx1ZTxNYXliZTxUd29XYXlGbGF0RmlyZXN0b3JlTW9kZWxLZXk+PikgPT4gU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSByZWYgb2YgdGhlIGRvY3VtZW50IHRvIGxvYWQuXG4gICAqL1xuICByZWFkb25seSBzZXRSZWY6IChvYnNlcnZhYmxlT3JWYWx1ZTogT2JzZXJ2YWJsZU9yVmFsdWU8TWF5YmU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+PikgPT4gU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlIGtleS9pZC9yZWYgYW5kIGN1cnJlbnQgZG9jdW1lbnQgZnJvbSB0aGUgc3RvcmUuXG4gICAqL1xuICByZWFkb25seSBjbGVhclJlZnM6ICgpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0cmVhbSBtb2RlLlxuICAgKi9cbiAgcmVhZG9ubHkgc2V0U3RyZWFtTW9kZTogKG9ic2VydmFibGVPclZhbHVlOiBPYnNlcnZhYmxlT3JWYWx1ZTxGaXJlc3RvcmVBY2Nlc3NvclN0cmVhbU1vZGU+KSA9PiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIEZpcmVzdG9yZUNvbGxlY3Rpb24gdG8gcmV0cmlldmUgZG9jdW1lbnRzIGZyb20uXG4gICAqL1xuICByZWFkb25seSBzZXRGaXJlc3RvcmVDb2xsZWN0aW9uOiAoKCkgPT4gdm9pZCkgfCAoKG9ic2VydmFibGVPclZhbHVlOiBPYnNlcnZhYmxlT3JWYWx1ZTxNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+Pj4pID0+IFN1YnNjcmlwdGlvbik7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlIHRvIHJldHJpZXZlIGRvY3VtZW50cyBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgc2V0RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U6ICgoKSA9PiB2b2lkKSB8ICgob2JzZXJ2YWJsZU9yVmFsdWU6IE9ic2VydmFibGVPclZhbHVlPE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+Pj4pID0+IFN1YnNjcmlwdGlvbik7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlQ29udGV4dFN0YXRlPFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+PiB7XG4gIHJlYWRvbmx5IGZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPzogTWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+O1xuICByZWFkb25seSBmaXJlc3RvcmVDb2xsZWN0aW9uPzogTWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbjxULCBEPj47XG4gIHJlYWRvbmx5IHN0cmVhbU1vZGU/OiBGaXJlc3RvcmVBY2Nlc3NvclN0cmVhbU1vZGU7XG4gIHJlYWRvbmx5IGlkPzogTWF5YmU8RmlyZXN0b3JlTW9kZWxJZD47XG4gIHJlYWRvbmx5IGtleT86IE1heWJlPEZpcmVzdG9yZU1vZGVsS2V5PjtcbiAgcmVhZG9ubHkgcmVmPzogTWF5YmU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+O1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQWJzdHJhY3REYnhGaXJlYmFzZURvY3VtZW50U3RvcmU8VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4sIEMgZXh0ZW5kcyBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVDb250ZXh0U3RhdGU8VCwgRD4gPSBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVDb250ZXh0U3RhdGU8VCwgRD4+IGV4dGVuZHMgTG9ja1NldENvbXBvbmVudFN0b3JlPEM+IGltcGxlbWVudHMgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlPFQsIEQ+IHtcbiAgLy8gTUFSSzogRWZmZWN0c1xuXG4gIC8vIE1BUks6IEFjY2Vzc29yc1xuICByZWFkb25seSBjdXJyZW50RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2UkOiBPYnNlcnZhYmxlPE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+Pj4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5maXJlc3RvcmVDb2xsZWN0aW9uID8/IHguZmlyZXN0b3JlQ29sbGVjdGlvbkxpa2UpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjdXJyZW50RmlyZXN0b3JlQ29sbGVjdGlvbiQ6IE9ic2VydmFibGU8TWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbjxULCBEPj4+ID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHguZmlyZXN0b3JlQ29sbGVjdGlvbiksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZTxULCBEPj4gPSB0aGlzLmN1cnJlbnRGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZSQucGlwZShmaWx0ZXJNYXliZSgpKTtcbiAgcmVhZG9ubHkgZmlyZXN0b3JlQ29sbGVjdGlvbiQ6IE9ic2VydmFibGU8RmlyZXN0b3JlQ29sbGVjdGlvbjxULCBEPj4gPSB0aGlzLmN1cnJlbnRGaXJlc3RvcmVDb2xsZWN0aW9uJC5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRJbnB1dElkJDogT2JzZXJ2YWJsZTxNYXliZTxGaXJlc3RvcmVNb2RlbElkPj4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5pZCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlucHV0SWQkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsSWQ+ID0gdGhpcy5jdXJyZW50SW5wdXRJZCQucGlwZShmaWx0ZXJNYXliZSgpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgY3VycmVudElucHV0S2V5JDogT2JzZXJ2YWJsZTxNYXliZTxGaXJlc3RvcmVNb2RlbEtleT4+ID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHgua2V5KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaW5wdXRLZXkkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsS2V5PiA9IHRoaXMuY3VycmVudElucHV0S2V5JC5waXBlKGZpbHRlck1heWJlKCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBjdXJyZW50SW5wdXRSZWYkOiBPYnNlcnZhYmxlPE1heWJlPERvY3VtZW50UmVmZXJlbmNlPFQ+Pj4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5yZWYpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpbnB1dFJlZiQ6IE9ic2VydmFibGU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+ID0gdGhpcy5jdXJyZW50SW5wdXRSZWYkLnBpcGUoZmlsdGVyTWF5YmUoKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IHN0cmVhbU1vZGUkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZUFjY2Vzc29yU3RyZWFtTW9kZT4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5zdHJlYW1Nb2RlID8/IEZpcmVzdG9yZUFjY2Vzc29yU3RyZWFtTW9kZS5TVFJFQU0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjdXJyZW50RG9jdW1lbnQkOiBPYnNlcnZhYmxlPE1heWJlPEQ+PiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuY3VycmVudElucHV0SWQkLCB0aGlzLmN1cnJlbnRJbnB1dEtleSQsIHRoaXMuY3VycmVudElucHV0UmVmJF0pLnBpcGUoXG4gICAgc3dpdGNoTWFwKChbaWQsIGtleSwgcmVmXSkgPT4ge1xuICAgICAgbGV0IGRvY3VtZW50OiBPYnNlcnZhYmxlPE1heWJlPEQ+PjtcblxuICAgICAgaWYgKHJlZikge1xuICAgICAgICBkb2N1bWVudCA9IHRoaXMuZmlyZXN0b3JlQ29sbGVjdGlvbkxpa2UkLnBpcGUobWFwKCh4KSA9PiB4LmRvY3VtZW50QWNjZXNzb3IoKS5sb2FkRG9jdW1lbnQocmVmKSkpO1xuICAgICAgfSBlbHNlIGlmIChrZXkpIHtcbiAgICAgICAgZG9jdW1lbnQgPSB0aGlzLmZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlJC5waXBlKG1hcCgoeCkgPT4geC5kb2N1bWVudEFjY2Vzc29yKCkubG9hZERvY3VtZW50Rm9yS2V5KGtleSkpKTtcbiAgICAgIH0gZWxzZSBpZiAoaWQpIHtcbiAgICAgICAgZG9jdW1lbnQgPSB0aGlzLmZpcmVzdG9yZUNvbGxlY3Rpb24kLnBpcGUobWFwKCh4KSA9PiB4LmRvY3VtZW50QWNjZXNzb3IoKS5sb2FkRG9jdW1lbnRGb3JJZChpZCkpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvY3VtZW50ID0gb2YodW5kZWZpbmVkKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRvY3VtZW50O1xuICAgIH0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgYW4gaWQvcmVmL2tleSBoYXMgYmVlbiBpbnB1dCBhbmQgY3VycmVudERvY3VtZW50IGlzIG5vdCBudWxsLlxuICAgKi9cbiAgcmVhZG9ubHkgaGFzUmVmJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuY3VycmVudERvY3VtZW50JC5waXBlKFxuICAgIG1hcCgoeCkgPT4geD8uZG9jdW1lbnRSZWYgIT0gbnVsbCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRvY3VtZW50JDogT2JzZXJ2YWJsZTxEPiA9IHRoaXMuY3VycmVudERvY3VtZW50JC5waXBlKGZpbHRlck1heWJlKCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBkb2N1bWVudExvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPEQ+PiA9IHRoaXMuY3VycmVudERvY3VtZW50JC5waXBlKFxuICAgIG1hcCgoeCkgPT4gKHggPyBzdWNjZXNzUmVzdWx0KHgpIDogYmVnaW5Mb2FkaW5nPEQ+KCkpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlkJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkPiA9IHRoaXMuZG9jdW1lbnQkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmlkKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGtleSQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxLZXk+ID0gdGhpcy5kb2N1bWVudCQucGlwZShcbiAgICBtYXAoKHgpID0+IHgua2V5KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGtleU1vZGVsSWRzJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkW10+ID0gdGhpcy5rZXkkLnBpcGUobWFwKGZpcmVzdG9yZU1vZGVsSWRzRnJvbUtleSksIHNoYXJlUmVwbGF5KDEpKTtcbiAgcmVhZG9ubHkga2V5UGFpcnMkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsQ29sbGVjdGlvbkFuZElkUGFpcltdPiA9IHRoaXMua2V5JC5waXBlKG1hcChmaXJlc3RvcmVNb2RlbEtleVBhcnRQYWlycyksIGZpbHRlck1heWJlKCksIHNoYXJlUmVwbGF5KDEpKTtcbiAgcmVhZG9ubHkga2V5UGFpck9iamVjdCQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxDb2xsZWN0aW9uQW5kSWRQYWlyT2JqZWN0PiA9IHRoaXMua2V5JC5waXBlKG1hcChmaXJlc3RvcmVNb2RlbEtleVBhaXJPYmplY3QpLCBmaWx0ZXJNYXliZSgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgcmVmJDogT2JzZXJ2YWJsZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4gPSB0aGlzLmRvY3VtZW50JC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5kb2N1bWVudFJlZiksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBmbGF0S2V5JDogT2JzZXJ2YWJsZTxGbGF0RmlyZXN0b3JlTW9kZWxLZXk+ID0gdGhpcy5rZXkkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiBmbGF0RmlyZXN0b3JlTW9kZWxLZXkoeCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgdHdvV2F5RmxhdEtleSQ6IE9ic2VydmFibGU8RmxhdEZpcmVzdG9yZU1vZGVsS2V5PiA9IHRoaXMua2V5JC5waXBlKFxuICAgIG1hcCgoeCkgPT4gdHdvV2F5RmxhdEZpcmVzdG9yZU1vZGVsS2V5KHgpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHNuYXBzaG90JDogT2JzZXJ2YWJsZTxEb2N1bWVudFNuYXBzaG90PFQ+PiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZG9jdW1lbnQkLCB0aGlzLnN0cmVhbU1vZGUkXSkucGlwZShcbiAgICBzd2l0Y2hNYXAoKFt4LCBtb2RlXSkgPT4geC5zbmFwc2hvdFN0cmVhbShtb2RlKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzbmFwc2hvdExvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPERvY3VtZW50U25hcHNob3Q8VD4+PiA9IHRoaXMuY3VycmVudERvY3VtZW50JC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PiBsb2FkaW5nU3RhdGVGcm9tT2JzKHRoaXMuc25hcHNob3QkKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjdXJyZW50RGF0YSQ6IE9ic2VydmFibGU8TWF5YmU8RG9jdW1lbnREYXRhV2l0aElkQW5kS2V5PFQ+Pj4gPSB0aGlzLnNuYXBzaG90JC5waXBlKFxuICAgIG1hcCgoeCkgPT4gZG9jdW1lbnREYXRhV2l0aElkQW5kS2V5KHgpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRhdGEkOiBPYnNlcnZhYmxlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPj4gPSB0aGlzLmN1cnJlbnREb2N1bWVudCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jdXJyZW50RGF0YSQucGlwZShmaWx0ZXJNYXliZSgpKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkYXRhTG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8RG9jdW1lbnREYXRhV2l0aElkQW5kS2V5PFQ+Pj4gPSB0aGlzLnNuYXBzaG90TG9hZGluZ1N0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4ge1xuICAgICAgbGV0IHJlc3VsdDogTG9hZGluZ1N0YXRlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPj47XG5cbiAgICAgIGlmICh4LnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBkb2N1bWVudERhdGFXaXRoSWRBbmRLZXkoeC52YWx1ZSk7XG5cbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICByZXN1bHQgPSBzdWNjZXNzUmVzdWx0KGRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGVycm9yUmVzdWx0KG1vZGVsRG9lc05vdEV4aXN0RXJyb3IoKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAuLi54LFxuICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGZhbHNlIHdoaWxlIGhhc1JlZiQgaXMgZmFsc2UsIGFuZCB0aGVuIHJldHVybnMgZXhpc3RzJC5cbiAgICovXG4gIHJlYWRvbmx5IGN1cnJlbnRFeGlzdHMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5oYXNSZWYkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChoYXNSZWYpID0+IHtcbiAgICAgIGlmIChoYXNSZWYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhpc3RzJDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICB9XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBleGlzdHMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5jdXJyZW50RGF0YSQucGlwZShcbiAgICBtYXAoKHgpID0+IGlzTWF5YmVTbyh4KSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkb2VzTm90RXhpc3QkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5leGlzdHMkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiAheCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBtb2RlbElkZW50aXR5JDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkZW50aXR5PiA9IHRoaXMuZG9jdW1lbnQkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4Lm1vZGVsSWRlbnRpdHkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLy8gTUFSSzogU3RhdGUgQ2hhbmdlc1xuICByZWFkb25seSBzZXRJZCA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGlkOiBNYXliZTxGaXJlc3RvcmVNb2RlbElkPikgPT4gKGlkID8geyAuLi5zdGF0ZSwgaWQsIGtleTogdW5kZWZpbmVkLCByZWY6IHVuZGVmaW5lZCB9IDogeyAuLi5zdGF0ZSwgaWQgfSkpIGFzIChvYnNlcnZhYmxlT3JWYWx1ZTogTWF5YmU8c3RyaW5nPiB8IE9ic2VydmFibGU8TWF5YmU8c3RyaW5nPj4pID0+IFN1YnNjcmlwdGlvbjtcbiAgcmVhZG9ubHkgc2V0S2V5ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwga2V5OiBNYXliZTxGaXJlc3RvcmVNb2RlbEtleT4pID0+IChrZXkgPyB7IC4uLnN0YXRlLCBrZXksIGlkOiB1bmRlZmluZWQsIHJlZjogdW5kZWZpbmVkIH0gOiB7IC4uLnN0YXRlLCBrZXkgfSkpIGFzIChvYnNlcnZhYmxlT3JWYWx1ZTogTWF5YmU8c3RyaW5nPiB8IE9ic2VydmFibGU8TWF5YmU8c3RyaW5nPj4pID0+IFN1YnNjcmlwdGlvbjtcbiAgcmVhZG9ubHkgc2V0RmxhdEtleSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGtleTogTWF5YmU8VHdvV2F5RmxhdEZpcmVzdG9yZU1vZGVsS2V5PikgPT4gKGtleSA/IHsgLi4uc3RhdGUsIGtleTogaW5mZXJLZXlGcm9tVHdvV2F5RmxhdEZpcmVzdG9yZU1vZGVsS2V5KGtleSksIGlkOiB1bmRlZmluZWQsIHJlZjogdW5kZWZpbmVkIH0gOiB7IC4uLnN0YXRlLCBrZXkgfSkpIGFzIChvYnNlcnZhYmxlT3JWYWx1ZTogTWF5YmU8c3RyaW5nPiB8IE9ic2VydmFibGU8TWF5YmU8c3RyaW5nPj4pID0+IFN1YnNjcmlwdGlvbjtcbiAgcmVhZG9ubHkgc2V0UmVmID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgcmVmOiBNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4pID0+IChyZWYgPyB7IC4uLnN0YXRlLCBrZXk6IHVuZGVmaW5lZCwgaWQ6IHVuZGVmaW5lZCwgcmVmIH0gOiB7IC4uLnN0YXRlLCByZWYgfSkpIGFzIChvYnNlcnZhYmxlT3JWYWx1ZTogTWF5YmU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+IHwgT2JzZXJ2YWJsZTxNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4+KSA9PiBTdWJzY3JpcHRpb247XG5cbiAgcmVhZG9ubHkgc2V0U3RyZWFtTW9kZSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIHN0cmVhbU1vZGU6IEZpcmVzdG9yZUFjY2Vzc29yU3RyZWFtTW9kZSkgPT4gKHsgLi4uc3RhdGUsIHN0cmVhbU1vZGUgfSkpO1xuXG4gIHJlYWRvbmx5IGNsZWFyUmVmcyA9IHRoaXMudXBkYXRlcigoc3RhdGUpID0+ICh7IC4uLnN0YXRlLCBpZDogdW5kZWZpbmVkLCBrZXk6IHVuZGVmaW5lZCwgcmVmOiB1bmRlZmluZWQgfSkpO1xuXG4gIHJlYWRvbmx5IHNldEZpcmVzdG9yZUNvbGxlY3Rpb24gPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBmaXJlc3RvcmVDb2xsZWN0aW9uOiBNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+PikgPT4gKHsgLi4uc3RhdGUsIGZpcmVzdG9yZUNvbGxlY3Rpb24gfSkpO1xuICByZWFkb25seSBzZXRGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlOiBNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZTxULCBEPj4pID0+ICh7IC4uLnN0YXRlLCBmaXJlc3RvcmVDb2xsZWN0aW9uTGlrZSB9KSk7XG59XG5cbmZ1bmN0aW9uIGluamVjdFNpbmdsZUl0ZW1JZEludG9TdGF0ZTxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPiwgQyBleHRlbmRzIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZUNvbnRleHRTdGF0ZTxULCBEPiA9IERieEZpcmViYXNlRG9jdW1lbnRTdG9yZUNvbnRleHRTdGF0ZTxULCBEPj4oc3RhdGU/OiBDIHwgdW5kZWZpbmVkKTogQyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGlkID0gKHN0YXRlPy5maXJlc3RvcmVDb2xsZWN0aW9uIGFzIFJvb3RTaW5nbGVJdGVtRmlyZXN0b3JlQ29sbGVjdGlvbjxULCBEPik/LnNpbmdsZUl0ZW1JZGVudGlmaWVyO1xuXG4gIGlmIChzdGF0ZSAmJiBpZCAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHsgLi4uc3RhdGUsIGlkIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG59XG5cbi8qKlxuICogQWJzdHJhY3REYnhGaXJlYmFzZURvY3VtZW50V2l0aFBhcmVudFN0b3JlIGV4dGVuc2lvbiBmb3IgdXNlIHdpdGggUm9vdFNpbmdsZUl0ZW1GaXJlc3RvcmVDb2xsZWN0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgQWJzdHJhY3RSb290U2luZ2xlSXRlbURieEZpcmViYXNlRG9jdW1lbnQ8VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4sIEMgZXh0ZW5kcyBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVDb250ZXh0U3RhdGU8VCwgRD4gPSBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVDb250ZXh0U3RhdGU8VCwgRD4+IGV4dGVuZHMgQWJzdHJhY3REYnhGaXJlYmFzZURvY3VtZW50U3RvcmU8VCwgRCwgQz4ge1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoQEluamVjdChudWxsKSBAT3B0aW9uYWwoKSBpbml0aWFsU3RhdGU/OiBDKSB7XG4gICAgc3VwZXIoaW5qZWN0U2luZ2xlSXRlbUlkSW50b1N0YXRlPFQsIEQsIEM+KGluaXRpYWxTdGF0ZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIFNpbmdsZUl0ZW1GaXJlc3RvcmVDb2xsZWN0aW9uIHRvIHVzZS5cbiAgICovXG4gIG92ZXJyaWRlIHJlYWRvbmx5IHNldEZpcmVzdG9yZUNvbGxlY3Rpb24gPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBmaXJlc3RvcmVDb2xsZWN0aW9uOiBNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+PikgPT4ge1xuICAgIGlmIChmaXJlc3RvcmVDb2xsZWN0aW9uICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGlkID0gKGZpcmVzdG9yZUNvbGxlY3Rpb24gYXMgUm9vdFNpbmdsZUl0ZW1GaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+KS5zaW5nbGVJdGVtSWRlbnRpZmllcjtcblxuICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGZpcmVzdG9yZUNvbGxlY3Rpb24sIGlkIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fic3RyYWN0Um9vdFNpbmdsZUl0ZW1EYnhGaXJlYmFzZURvY3VtZW50IG9ubHkgYWNjZXB0cyBSb290U2luZ2xlSXRlbUZpcmVzdG9yZUNvbGxlY3Rpb24gdmFsdWVzIHdpdGggYSBzaW5nbGVJdGVtSWRlbnRpZmllciBzZXQgZm9yIHNldEZpcmVzdG9yZUNvbGxlY3Rpb24uJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBmaXJlc3RvcmVDb2xsZWN0aW9uOiBudWxsIH07XG4gICAgfVxuICB9KTtcblxuICAvKipcbiAgICogRG9lcyBub3RoaW5nIG9uIGEgQWJzdHJhY3RSb290U2luZ2xlSXRlbURieEZpcmViYXNlRG9jdW1lbnQuXG4gICAqXG4gICAqIFJlZiBpcyBzZXQgd2l0aCB0aGUgRmlyZXN0b3JlQ29sbGVjdGlvblxuICAgKi9cbiAgb3ZlcnJpZGUgcmVhZG9ubHkgc2V0SWQgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBpZDogTWF5YmU8RmlyZXN0b3JlTW9kZWxJZD4pID0+IHN0YXRlKSBhcyAob2JzZXJ2YWJsZU9yVmFsdWU6IE1heWJlPHN0cmluZz4gfCBPYnNlcnZhYmxlPE1heWJlPHN0cmluZz4+KSA9PiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIERvZXMgbm90aGluZyBvbiBhIEFic3RyYWN0Um9vdFNpbmdsZUl0ZW1EYnhGaXJlYmFzZURvY3VtZW50LlxuICAgKlxuICAgKiBSZWYgaXMgc2V0IHdpdGggdGhlIEZpcmVzdG9yZUNvbGxlY3Rpb25cbiAgICovXG4gIG92ZXJyaWRlIHJlYWRvbmx5IHNldEtleSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGtleTogTWF5YmU8RmlyZXN0b3JlTW9kZWxLZXk+KSA9PiBzdGF0ZSkgYXMgKG9ic2VydmFibGVPclZhbHVlOiBNYXliZTxzdHJpbmc+IHwgT2JzZXJ2YWJsZTxNYXliZTxzdHJpbmc+PikgPT4gU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBEb2VzIG5vdGhpbmcgb24gYSBBYnN0cmFjdFJvb3RTaW5nbGVJdGVtRGJ4RmlyZWJhc2VEb2N1bWVudC5cbiAgICpcbiAgICogUmVmIGlzIHNldCB3aXRoIHRoZSBGaXJlc3RvcmVDb2xsZWN0aW9uXG4gICAqL1xuICBvdmVycmlkZSByZWFkb25seSBzZXRSZWYgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCByZWY6IE1heWJlPERvY3VtZW50UmVmZXJlbmNlPFQ+PikgPT4gc3RhdGUpIGFzIChvYnNlcnZhYmxlT3JWYWx1ZTogTWF5YmU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+IHwgT2JzZXJ2YWJsZTxNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4+KSA9PiBTdWJzY3JpcHRpb247XG5cbiAgb3ZlcnJpZGUgcmVhZG9ubHkgY2xlYXJSZWZzID0gdGhpcy51cGRhdGVyKChzdGF0ZSkgPT4gc3RhdGUpO1xufVxuIl19
@@ -1,38 +0,0 @@
1
- import { asFirestoreModelKeyCollectionType, buildFirebaseCollectionTypeModelTypeMap } from '@dereekb/firebase';
2
- import { asObservable } from '@dereekb/rxjs';
3
- import { shareReplay, map, first, switchMap } from 'rxjs';
4
- /**
5
- * Used for retrieving contexts for a specific model type/identity.
6
- */
7
- export class DbxFirebaseModelContextService {
8
- }
9
- export function dbxFirebaseModelContextServiceInfoInstanceFactory(config) {
10
- const { modelService, entityMap$ } = config;
11
- return (keyObs) => {
12
- const key$ = asObservable(keyObs);
13
- return key$.pipe(asFirestoreModelKeyCollectionType(), switchMap((pair) => {
14
- return entityMap$.pipe(map((entityMap) => {
15
- const modelType = entityMap.get(pair.collectionType);
16
- if (!modelType) {
17
- const message = `dbxFirebaseModelContextServiceInfoInstanceFactory Error: Failed to retrieve model type for collection type "${pair.collectionType}"`;
18
- console.error(message);
19
- throw new Error(message);
20
- }
21
- return modelService(modelType, pair.key);
22
- }));
23
- }));
24
- };
25
- }
26
- /**
27
- * Operator function that builds a FirestoreModelIdentityTypeMap from the input context and shares the replay.
28
- *
29
- * Since the output won't change with different contexts, the map is built once and then shared.
30
- *
31
- * @returns
32
- */
33
- export function firebaseContextServiceEntityMap() {
34
- return (obs) => {
35
- return obs.pipe(map((x) => buildFirebaseCollectionTypeModelTypeMap(x)), first(), shareReplay(1));
36
- };
37
- }
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuY29udGV4dC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvc2VydmljZS9tb2RlbC5jb250ZXh0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixpQ0FBaUMsRUFBRSx1Q0FBdUMsRUFBdUksTUFBTSxtQkFBbUIsQ0FBQztBQUN4USxPQUFPLEVBQUUsWUFBWSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBZ0MsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUl4Rjs7R0FFRztBQUNILE1BQU0sT0FBZ0IsOEJBQThCO0NBT25EO0FBU0QsTUFBTSxVQUFVLGlEQUFpRCxDQUEySCxNQUFxRTtJQUMvUCxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUM1QyxPQUFPLENBQXdFLE1BQWlDLEVBQUUsRUFBRTtRQUNsSCxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUNkLGlDQUFpQyxFQUFFLEVBQ25DLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2pCLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FDcEIsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQ2hCLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBdUIsQ0FBQztnQkFFM0UsSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDZCxNQUFNLE9BQU8sR0FBRywrR0FBK0csSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDO29CQUN0SixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUMxQjtnQkFFRCxPQUFPLFlBQVksQ0FBQyxTQUFnQixFQUFFLElBQUksQ0FBQyxHQUFHLENBQStELENBQUM7WUFDaEgsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLCtCQUErQjtJQUM3QyxPQUFPLENBQUMsR0FBa0IsRUFBRSxFQUFFO1FBQzVCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FDYixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHVDQUF1QyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3RELEtBQUssRUFBRSxFQUNQLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpcmVzdG9yZU1vZGVsVHlwZSwgYXNGaXJlc3RvcmVNb2RlbEtleUNvbGxlY3Rpb25UeXBlLCBidWlsZEZpcmViYXNlQ29sbGVjdGlvblR5cGVNb2RlbFR5cGVNYXAsIEZpcmViYXNlUGVybWlzc2lvbkVycm9yQ29udGV4dCwgRmlyZXN0b3JlRG9jdW1lbnQsIEZpcmVzdG9yZU1vZGVsSWRlbnRpdHlUeXBlTWFwLCBGaXJlc3RvcmVNb2RlbEtleSwgSW5Db250ZXh0RmlyZWJhc2VNb2RlbHNTZXJ2aWNlIH0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuaW1wb3J0IHsgYXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlT3JWYWx1ZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgR3JhbnRlZFJvbGUgfSBmcm9tICdAZGVyZWVrYi9tb2RlbCc7XG5pbXBvcnQgeyBzaGFyZVJlcGxheSwgbWFwLCBPYnNlcnZhYmxlLCBPcGVyYXRvckZ1bmN0aW9uLCBmaXJzdCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZUluQ29udGV4dEZpcmViYXNlTW9kZWxJbmZvU2VydmljZUluc3RhbmNlIH0gZnJvbSAnLi9tb2RlbC5jb250ZXh0JztcbmltcG9ydCB7IERieEZpcmViYXNlSW5Db250ZXh0RmlyZWJhc2VNb2RlbFNlcnZpY2VJbnN0YW5jZUZhY3RvcnkgfSBmcm9tICcuL21vZGVsLmNvbnRleHQuaW5zdGFuY2UnO1xuXG4vKipcbiAqIFVzZWQgZm9yIHJldHJpZXZpbmcgY29udGV4dHMgZm9yIGEgc3BlY2lmaWMgbW9kZWwgdHlwZS9pZGVudGl0eS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERieEZpcmViYXNlTW9kZWxDb250ZXh0U2VydmljZSB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IERieEZpcmViYXNlSW5Db250ZXh0RmlyZWJhc2VNb2RlbEluZm9TZXJ2aWNlSW5zdGFuY2UgZm9yIHRoZSBpbnB1dCBtb2RlbCBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSBrZXkkXG4gICAqL1xuICBhYnN0cmFjdCBtb2RlbEluZm9JbnN0YW5jZTxEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8YW55PiA9IGFueSwgUiBleHRlbmRzIEdyYW50ZWRSb2xlID0gR3JhbnRlZFJvbGU+KGtleU9iczogT2JzZXJ2YWJsZU9yVmFsdWU8RmlyZXN0b3JlTW9kZWxLZXk+KTogT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZUluQ29udGV4dEZpcmViYXNlTW9kZWxJbmZvU2VydmljZUluc3RhbmNlPEQsIFI+Pjtcbn1cblxuZXhwb3J0IHR5cGUgRGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlSW5mb0luc3RhbmNlRmFjdG9yeSA9IDxEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8YW55PiwgUiBleHRlbmRzIEdyYW50ZWRSb2xlID0gR3JhbnRlZFJvbGU+KGtleU9iczogT2JzZXJ2YWJsZU9yVmFsdWU8RmlyZXN0b3JlTW9kZWxLZXk+KSA9PiBPYnNlcnZhYmxlPERieEZpcmViYXNlSW5Db250ZXh0RmlyZWJhc2VNb2RlbEluZm9TZXJ2aWNlSW5zdGFuY2U8RCwgUj4+O1xuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlTW9kZWxDb250ZXh0U2VydmljZUluZm9JbnN0YW5jZUZhY3RvcnlDb25maWc8UyBleHRlbmRzIEluQ29udGV4dEZpcmViYXNlTW9kZWxzU2VydmljZTxhbnk+LCBDIGV4dGVuZHMgRmlyZWJhc2VQZXJtaXNzaW9uRXJyb3JDb250ZXh0ID0gRmlyZWJhc2VQZXJtaXNzaW9uRXJyb3JDb250ZXh0PiB7XG4gIHJlYWRvbmx5IG1vZGVsU2VydmljZTogRGJ4RmlyZWJhc2VJbkNvbnRleHRGaXJlYmFzZU1vZGVsU2VydmljZUluc3RhbmNlRmFjdG9yeTxTLCBDPjtcbiAgcmVhZG9ubHkgZW50aXR5TWFwJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkZW50aXR5VHlwZU1hcD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYnhGaXJlYmFzZU1vZGVsQ29udGV4dFNlcnZpY2VJbmZvSW5zdGFuY2VGYWN0b3J5PFMgZXh0ZW5kcyBJbkNvbnRleHRGaXJlYmFzZU1vZGVsc1NlcnZpY2U8YW55PiwgQyBleHRlbmRzIEZpcmViYXNlUGVybWlzc2lvbkVycm9yQ29udGV4dCA9IEZpcmViYXNlUGVybWlzc2lvbkVycm9yQ29udGV4dD4oY29uZmlnOiBEYnhGaXJlYmFzZU1vZGVsQ29udGV4dFNlcnZpY2VJbmZvSW5zdGFuY2VGYWN0b3J5Q29uZmlnPFMsIEM+KTogRGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlSW5mb0luc3RhbmNlRmFjdG9yeSB7XG4gIGNvbnN0IHsgbW9kZWxTZXJ2aWNlLCBlbnRpdHlNYXAkIH0gPSBjb25maWc7XG4gIHJldHVybiA8RCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PGFueT4sIFIgZXh0ZW5kcyBHcmFudGVkUm9sZSA9IEdyYW50ZWRSb2xlPihrZXlPYnM6IE9ic2VydmFibGVPclZhbHVlPHN0cmluZz4pID0+IHtcbiAgICBjb25zdCBrZXkkID0gYXNPYnNlcnZhYmxlKGtleU9icyk7XG5cbiAgICByZXR1cm4ga2V5JC5waXBlKFxuICAgICAgYXNGaXJlc3RvcmVNb2RlbEtleUNvbGxlY3Rpb25UeXBlKCksXG4gICAgICBzd2l0Y2hNYXAoKHBhaXIpID0+IHtcbiAgICAgICAgcmV0dXJuIGVudGl0eU1hcCQucGlwZShcbiAgICAgICAgICBtYXAoKGVudGl0eU1hcCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbW9kZWxUeXBlID0gZW50aXR5TWFwLmdldChwYWlyLmNvbGxlY3Rpb25UeXBlKSBhcyBGaXJlc3RvcmVNb2RlbFR5cGU7XG5cbiAgICAgICAgICAgIGlmICghbW9kZWxUeXBlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgZGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlSW5mb0luc3RhbmNlRmFjdG9yeSBFcnJvcjogRmFpbGVkIHRvIHJldHJpZXZlIG1vZGVsIHR5cGUgZm9yIGNvbGxlY3Rpb24gdHlwZSBcIiR7cGFpci5jb2xsZWN0aW9uVHlwZX1cImA7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG1vZGVsU2VydmljZShtb2RlbFR5cGUgYXMgYW55LCBwYWlyLmtleSkgYXMgRGJ4RmlyZWJhc2VJbkNvbnRleHRGaXJlYmFzZU1vZGVsSW5mb1NlcnZpY2VJbnN0YW5jZTxELCBSPjtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9O1xufVxuXG4vKipcbiAqIE9wZXJhdG9yIGZ1bmN0aW9uIHRoYXQgYnVpbGRzIGEgRmlyZXN0b3JlTW9kZWxJZGVudGl0eVR5cGVNYXAgZnJvbSB0aGUgaW5wdXQgY29udGV4dCBhbmQgc2hhcmVzIHRoZSByZXBsYXkuXG4gKlxuICogU2luY2UgdGhlIG91dHB1dCB3b24ndCBjaGFuZ2Ugd2l0aCBkaWZmZXJlbnQgY29udGV4dHMsIHRoZSBtYXAgaXMgYnVpbHQgb25jZSBhbmQgdGhlbiBzaGFyZWQuXG4gKlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpcmViYXNlQ29udGV4dFNlcnZpY2VFbnRpdHlNYXA8VCBleHRlbmRzIEluQ29udGV4dEZpcmViYXNlTW9kZWxzU2VydmljZTxhbnk+PigpOiBPcGVyYXRvckZ1bmN0aW9uPFQsIEZpcmVzdG9yZU1vZGVsSWRlbnRpdHlUeXBlTWFwPiB7XG4gIHJldHVybiAob2JzOiBPYnNlcnZhYmxlPFQ+KSA9PiB7XG4gICAgcmV0dXJuIG9icy5waXBlKFxuICAgICAgbWFwKCh4KSA9PiBidWlsZEZpcmViYXNlQ29sbGVjdGlvblR5cGVNb2RlbFR5cGVNYXAoeCkpLFxuICAgICAgZmlyc3QoKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfTtcbn1cbiJdfQ==