@dereekb/dbx-firebase 12.6.21 → 13.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 (440) hide show
  1. package/LICENSE +1 -1
  2. package/fesm2022/dereekb-dbx-firebase.mjs +910 -1396
  3. package/fesm2022/dereekb-dbx-firebase.mjs.map +1 -1
  4. package/package.json +21 -23
  5. package/types/dereekb-dbx-firebase.d.ts +4304 -0
  6. package/esm2022/dereekb-dbx-firebase.mjs +0 -5
  7. package/esm2022/index.mjs +0 -2
  8. package/esm2022/lib/analytics/analytics.user.events.providers.mjs +0 -25
  9. package/esm2022/lib/analytics/analytics.user.events.service.mjs +0 -37
  10. package/esm2022/lib/analytics/analytics.user.source.mjs +0 -48
  11. package/esm2022/lib/analytics/index.mjs +0 -4
  12. package/esm2022/lib/auth/appcheck/appcheck.interceptor.mjs +0 -76
  13. package/esm2022/lib/auth/appcheck/appcheck.mjs +0 -11
  14. package/esm2022/lib/auth/appcheck/index.mjs +0 -3
  15. package/esm2022/lib/auth/auth.mjs +0 -22
  16. package/esm2022/lib/auth/firebase.auth.module.mjs +0 -22
  17. package/esm2022/lib/auth/firebase.auth.providers.mjs +0 -27
  18. package/esm2022/lib/auth/index.mjs +0 -7
  19. package/esm2022/lib/auth/login/firebase.login.module.mjs +0 -124
  20. package/esm2022/lib/auth/login/firebase.login.providers.default.mjs +0 -109
  21. package/esm2022/lib/auth/login/firebase.login.providers.mjs +0 -59
  22. package/esm2022/lib/auth/login/index.mjs +0 -27
  23. package/esm2022/lib/auth/login/login.anonymous.component.mjs +0 -23
  24. package/esm2022/lib/auth/login/login.apple.component.mjs +0 -23
  25. package/esm2022/lib/auth/login/login.button.component.mjs +0 -148
  26. package/esm2022/lib/auth/login/login.component.mjs +0 -39
  27. package/esm2022/lib/auth/login/login.context.back.component.mjs +0 -26
  28. package/esm2022/lib/auth/login/login.context.directive.mjs +0 -30
  29. package/esm2022/lib/auth/login/login.context.mjs +0 -7
  30. package/esm2022/lib/auth/login/login.email.component.mjs +0 -24
  31. package/esm2022/lib/auth/login/login.email.content.component.mjs +0 -102
  32. package/esm2022/lib/auth/login/login.email.form.component.mjs +0 -27
  33. package/esm2022/lib/auth/login/login.email.recovery.form.component.mjs +0 -21
  34. package/esm2022/lib/auth/login/login.facebook.component.mjs +0 -23
  35. package/esm2022/lib/auth/login/login.github.component.mjs +0 -23
  36. package/esm2022/lib/auth/login/login.google.component.mjs +0 -23
  37. package/esm2022/lib/auth/login/login.list.component.mjs +0 -71
  38. package/esm2022/lib/auth/login/login.microsoft.component.mjs +0 -23
  39. package/esm2022/lib/auth/login/login.mjs +0 -3
  40. package/esm2022/lib/auth/login/login.password.mjs +0 -4
  41. package/esm2022/lib/auth/login/login.service.mjs +0 -127
  42. package/esm2022/lib/auth/login/login.terms.component.mjs +0 -29
  43. package/esm2022/lib/auth/login/login.terms.mjs +0 -6
  44. package/esm2022/lib/auth/login/login.terms.simple.component.mjs +0 -38
  45. package/esm2022/lib/auth/login/login.twitter.component.mjs +0 -23
  46. package/esm2022/lib/auth/login/register.component.mjs +0 -27
  47. package/esm2022/lib/auth/login/register.email.component.mjs +0 -23
  48. package/esm2022/lib/auth/service/firebase.auth.rxjs.mjs +0 -46
  49. package/esm2022/lib/auth/service/firebase.auth.service.delegate.mjs +0 -28
  50. package/esm2022/lib/auth/service/firebase.auth.service.mjs +0 -193
  51. package/esm2022/lib/auth/service/index.mjs +0 -4
  52. package/esm2022/lib/development/development.directive.mjs +0 -78
  53. package/esm2022/lib/development/development.module.mjs +0 -61
  54. package/esm2022/lib/development/development.popup.component.mjs +0 -44
  55. package/esm2022/lib/development/development.popup.content.component.mjs +0 -79
  56. package/esm2022/lib/development/development.popup.content.form.component.mjs +0 -39
  57. package/esm2022/lib/development/development.providers.mjs +0 -47
  58. package/esm2022/lib/development/development.scheduler.list.component.mjs +0 -79
  59. package/esm2022/lib/development/development.scheduler.service.mjs +0 -78
  60. package/esm2022/lib/development/development.scheduler.widget.component.mjs +0 -40
  61. package/esm2022/lib/development/development.service.mjs +0 -20
  62. package/esm2022/lib/development/development.widget.mjs +0 -2
  63. package/esm2022/lib/development/development.widget.service.mjs +0 -56
  64. package/esm2022/lib/development/index.mjs +0 -14
  65. package/esm2022/lib/firebase/appcheck.mjs +0 -2
  66. package/esm2022/lib/firebase/emulators.mjs +0 -14
  67. package/esm2022/lib/firebase/firebase.emulator.module.mjs +0 -23
  68. package/esm2022/lib/firebase/firebase.emulator.providers.mjs +0 -33
  69. package/esm2022/lib/firebase/firebase.emulator.service.mjs +0 -29
  70. package/esm2022/lib/firebase/firebase.module.mjs +0 -26
  71. package/esm2022/lib/firebase/firebase.options.environment.mjs +0 -2
  72. package/esm2022/lib/firebase/firebase.options.mjs +0 -3
  73. package/esm2022/lib/firebase/firebase.providers.mjs +0 -149
  74. package/esm2022/lib/firebase/index.mjs +0 -10
  75. package/esm2022/lib/firestore/firebase.firestore.context.service.mjs +0 -18
  76. package/esm2022/lib/firestore/firebase.firestore.mjs +0 -6
  77. package/esm2022/lib/firestore/firebase.firestore.module.mjs +0 -23
  78. package/esm2022/lib/firestore/firebase.firestore.providers.mjs +0 -86
  79. package/esm2022/lib/firestore/index.mjs +0 -5
  80. package/esm2022/lib/function/firebase.function.module.mjs +0 -23
  81. package/esm2022/lib/function/firebase.function.providers.mjs +0 -54
  82. package/esm2022/lib/function/index.mjs +0 -3
  83. package/esm2022/lib/index.mjs +0 -14
  84. package/esm2022/lib/model/error.mjs +0 -6
  85. package/esm2022/lib/model/index.mjs +0 -7
  86. package/esm2022/lib/model/loader/collection.change.trigger.mjs +0 -80
  87. package/esm2022/lib/model/loader/collection.change.watcher.mjs +0 -35
  88. package/esm2022/lib/model/loader/collection.loader.instance.mjs +0 -227
  89. package/esm2022/lib/model/loader/collection.loader.mjs +0 -2
  90. package/esm2022/lib/model/loader/document.loader.instance.mjs +0 -68
  91. package/esm2022/lib/model/loader/document.loader.mjs +0 -2
  92. package/esm2022/lib/model/loader/index.mjs +0 -7
  93. package/esm2022/lib/model/model.module.mjs +0 -17
  94. package/esm2022/lib/model/modules/index.mjs +0 -3
  95. package/esm2022/lib/model/modules/model/entities/index.mjs +0 -11
  96. package/esm2022/lib/model/modules/model/entities/model.entities.component.mjs +0 -122
  97. package/esm2022/lib/model/modules/model/entities/model.entities.entity.component.mjs +0 -79
  98. package/esm2022/lib/model/modules/model/entities/model.entities.mjs +0 -15
  99. package/esm2022/lib/model/modules/model/entities/model.entities.popover.button.component.mjs +0 -49
  100. package/esm2022/lib/model/modules/model/entities/model.entities.popover.component.mjs +0 -42
  101. package/esm2022/lib/model/modules/model/entities/model.entities.providers.mjs +0 -20
  102. package/esm2022/lib/model/modules/model/entities/model.entities.source.directive.mjs +0 -38
  103. package/esm2022/lib/model/modules/model/entities/model.entities.widget.entity.abstract.directive.mjs +0 -18
  104. package/esm2022/lib/model/modules/model/entities/model.entities.widget.entity.debug.component.mjs +0 -41
  105. package/esm2022/lib/model/modules/model/entities/model.entities.widget.mjs +0 -51
  106. package/esm2022/lib/model/modules/model/entities/model.entities.widget.service.mjs +0 -91
  107. package/esm2022/lib/model/modules/model/history/index.mjs +0 -7
  108. package/esm2022/lib/model/modules/model/history/model.history.component.mjs +0 -36
  109. package/esm2022/lib/model/modules/model/history/model.history.module.mjs +0 -26
  110. package/esm2022/lib/model/modules/model/history/model.history.popover.button.component.mjs +0 -40
  111. package/esm2022/lib/model/modules/model/history/model.history.popover.component.mjs +0 -36
  112. package/esm2022/lib/model/modules/model/history/model.sourceselect.history.mjs +0 -18
  113. package/esm2022/lib/model/modules/model/history/model.tracker.service.mjs +0 -58
  114. package/esm2022/lib/model/modules/model/index.mjs +0 -8
  115. package/esm2022/lib/model/modules/model/model.key.component.mjs +0 -51
  116. package/esm2022/lib/model/modules/model/model.types.list.component.mjs +0 -67
  117. package/esm2022/lib/model/modules/model/model.types.module.mjs +0 -26
  118. package/esm2022/lib/model/modules/model/model.types.providers.mjs +0 -20
  119. package/esm2022/lib/model/modules/model/model.types.service.mjs +0 -122
  120. package/esm2022/lib/model/modules/model/model.types.view.directive.mjs +0 -45
  121. package/esm2022/lib/model/modules/store/index.mjs +0 -22
  122. package/esm2022/lib/model/modules/store/model.store.module.mjs +0 -21
  123. package/esm2022/lib/model/modules/store/store.collection.change.directive.mjs +0 -45
  124. package/esm2022/lib/model/modules/store/store.collection.change.if.directive.mjs +0 -42
  125. package/esm2022/lib/model/modules/store/store.collection.crud.mjs +0 -28
  126. package/esm2022/lib/model/modules/store/store.collection.directive.mjs +0 -99
  127. package/esm2022/lib/model/modules/store/store.collection.list.directive.mjs +0 -31
  128. package/esm2022/lib/model/modules/store/store.collection.mjs +0 -79
  129. package/esm2022/lib/model/modules/store/store.document.context.store.directive.mjs +0 -19
  130. package/esm2022/lib/model/modules/store/store.document.context.store.link.mjs +0 -45
  131. package/esm2022/lib/model/modules/store/store.document.context.store.mjs +0 -86
  132. package/esm2022/lib/model/modules/store/store.document.crud.mjs +0 -80
  133. package/esm2022/lib/model/modules/store/store.document.directive.mjs +0 -114
  134. package/esm2022/lib/model/modules/store/store.document.mjs +0 -193
  135. package/esm2022/lib/model/modules/store/store.document.twoway.key.directive.mjs +0 -26
  136. package/esm2022/lib/model/modules/store/store.document.twoway.key.source.directive.mjs +0 -22
  137. package/esm2022/lib/model/modules/store/store.document.twoway.key.source.mjs +0 -16
  138. package/esm2022/lib/model/modules/store/store.mjs +0 -2
  139. package/esm2022/lib/model/modules/store/store.subcollection.directive.mjs +0 -44
  140. package/esm2022/lib/model/modules/store/store.subcollection.document.mjs +0 -99
  141. package/esm2022/lib/model/modules/store/store.subcollection.mjs +0 -80
  142. package/esm2022/lib/model/modules/store/store.subcollection.rxjs.mjs +0 -23
  143. package/esm2022/lib/model/service/index.mjs +0 -5
  144. package/esm2022/lib/model/service/model.context.instance.mjs +0 -73
  145. package/esm2022/lib/model/service/model.context.mjs +0 -2
  146. package/esm2022/lib/model/service/model.context.providers.mjs +0 -32
  147. package/esm2022/lib/model/service/model.context.service.mjs +0 -38
  148. package/esm2022/lib/model/system/index.mjs +0 -6
  149. package/esm2022/lib/model/system/systemstate.collection.store.directive.mjs +0 -20
  150. package/esm2022/lib/model/system/systemstate.collection.store.mjs +0 -16
  151. package/esm2022/lib/model/system/systemstate.document.store.accessor.mjs +0 -35
  152. package/esm2022/lib/model/system/systemstate.document.store.directive.mjs +0 -19
  153. package/esm2022/lib/model/system/systemstate.document.store.mjs +0 -16
  154. package/esm2022/lib/module.mjs +0 -15
  155. package/esm2022/lib/modules/index.mjs +0 -3
  156. package/esm2022/lib/modules/notification/component/index.mjs +0 -6
  157. package/esm2022/lib/modules/notification/component/notificationitem.content.component.mjs +0 -15
  158. package/esm2022/lib/modules/notification/component/notificationitem.list.component.mjs +0 -90
  159. package/esm2022/lib/modules/notification/component/notificationitem.view.component.mjs +0 -37
  160. package/esm2022/lib/modules/notification/component/notificationitem.view.default.component.mjs +0 -27
  161. package/esm2022/lib/modules/notification/component/notificationitem.view.directive.mjs +0 -14
  162. package/esm2022/lib/modules/notification/container/index.mjs +0 -3
  163. package/esm2022/lib/modules/notification/container/notification.item.store.popover.button.component.mjs +0 -48
  164. package/esm2022/lib/modules/notification/container/notification.item.store.popover.component.mjs +0 -35
  165. package/esm2022/lib/modules/notification/index.mjs +0 -7
  166. package/esm2022/lib/modules/notification/notification.module.mjs +0 -103
  167. package/esm2022/lib/modules/notification/notification.providers.mjs +0 -47
  168. package/esm2022/lib/modules/notification/service/index.mjs +0 -4
  169. package/esm2022/lib/modules/notification/service/notification.template.service.mjs +0 -28
  170. package/esm2022/lib/modules/notification/service/notificationitem.widget.mjs +0 -11
  171. package/esm2022/lib/modules/notification/service/notificationitem.widget.service.mjs +0 -55
  172. package/esm2022/lib/modules/notification/store/index.mjs +0 -18
  173. package/esm2022/lib/modules/notification/store/notification.collection.store.directive.mjs +0 -21
  174. package/esm2022/lib/modules/notification/store/notification.collection.store.mjs +0 -23
  175. package/esm2022/lib/modules/notification/store/notification.document.store.directive.mjs +0 -21
  176. package/esm2022/lib/modules/notification/store/notification.document.store.mjs +0 -33
  177. package/esm2022/lib/modules/notification/store/notification.item.store.mjs +0 -30
  178. package/esm2022/lib/modules/notification/store/notificationbox.collection.store.directive.mjs +0 -21
  179. package/esm2022/lib/modules/notification/store/notificationbox.collection.store.mjs +0 -16
  180. package/esm2022/lib/modules/notification/store/notificationbox.document.store.directive.mjs +0 -21
  181. package/esm2022/lib/modules/notification/store/notificationbox.document.store.mjs +0 -22
  182. package/esm2022/lib/modules/notification/store/notificationsummary.collection.store.directive.mjs +0 -21
  183. package/esm2022/lib/modules/notification/store/notificationsummary.collection.store.mjs +0 -16
  184. package/esm2022/lib/modules/notification/store/notificationsummary.document.store.directive.mjs +0 -21
  185. package/esm2022/lib/modules/notification/store/notificationsummary.document.store.mjs +0 -34
  186. package/esm2022/lib/modules/notification/store/notificationuser.collection.store.directive.mjs +0 -21
  187. package/esm2022/lib/modules/notification/store/notificationuser.collection.store.mjs +0 -16
  188. package/esm2022/lib/modules/notification/store/notificationuser.document.store.directive.mjs +0 -21
  189. package/esm2022/lib/modules/notification/store/notificationuser.document.store.mjs +0 -18
  190. package/esm2022/lib/modules/storagefile/container/index.mjs +0 -8
  191. package/esm2022/lib/modules/storagefile/container/storagefile.download.button.component.mjs +0 -278
  192. package/esm2022/lib/modules/storagefile/container/storagefile.upload.action.handler.directive.mjs +0 -118
  193. package/esm2022/lib/modules/storagefile/container/storagefile.upload.error.mjs +0 -12
  194. package/esm2022/lib/modules/storagefile/container/storagefile.upload.handler.mjs +0 -260
  195. package/esm2022/lib/modules/storagefile/container/storagefile.upload.initialize.document.directive.mjs +0 -51
  196. package/esm2022/lib/modules/storagefile/container/storagefile.upload.store.directive.mjs +0 -38
  197. package/esm2022/lib/modules/storagefile/container/storagefile.upload.sync.directive.mjs +0 -36
  198. package/esm2022/lib/modules/storagefile/index.mjs +0 -6
  199. package/esm2022/lib/modules/storagefile/service/index.mjs +0 -3
  200. package/esm2022/lib/modules/storagefile/service/storagefile.download.service.mjs +0 -158
  201. package/esm2022/lib/modules/storagefile/service/storagefile.download.storage.service.mjs +0 -91
  202. package/esm2022/lib/modules/storagefile/storagefile.providers.mjs +0 -33
  203. package/esm2022/lib/modules/storagefile/storagefile.upload.module.mjs +0 -83
  204. package/esm2022/lib/modules/storagefile/store/index.mjs +0 -8
  205. package/esm2022/lib/modules/storagefile/store/storagefile.collection.store.directive.mjs +0 -22
  206. package/esm2022/lib/modules/storagefile/store/storagefile.collection.store.mjs +0 -18
  207. package/esm2022/lib/modules/storagefile/store/storagefile.document.store.directive.mjs +0 -21
  208. package/esm2022/lib/modules/storagefile/store/storagefile.document.store.mjs +0 -23
  209. package/esm2022/lib/modules/storagefile/store/storagefile.upload.store.mjs +0 -63
  210. package/esm2022/lib/modules/storagefile/store/storagefilegroup.document.store.directive.mjs +0 -21
  211. package/esm2022/lib/modules/storagefile/store/storagefilegroup.document.store.mjs +0 -18
  212. package/esm2022/lib/pipe/index.mjs +0 -4
  213. package/esm2022/lib/pipe/key.flat.pipe.mjs +0 -20
  214. package/esm2022/lib/pipe/key.twoway.pipe.mjs +0 -20
  215. package/esm2022/lib/pipe/pipe.module.mjs +0 -23
  216. package/esm2022/lib/providers.mjs +0 -48
  217. package/esm2022/lib/router/id.param.redirect.mjs +0 -64
  218. package/esm2022/lib/router/index.mjs +0 -2
  219. package/esm2022/lib/storage/firebase.storage.mjs +0 -10
  220. package/esm2022/lib/storage/firebase.storage.module.mjs +0 -22
  221. package/esm2022/lib/storage/firebase.storage.providers.mjs +0 -44
  222. package/esm2022/lib/storage/firebase.storage.service.mjs +0 -27
  223. package/esm2022/lib/storage/index.mjs +0 -5
  224. package/index.d.ts +0 -1
  225. package/lib/analytics/analytics.user.events.providers.d.ts +0 -6
  226. package/lib/analytics/analytics.user.events.service.d.ts +0 -19
  227. package/lib/analytics/analytics.user.source.d.ts +0 -21
  228. package/lib/analytics/index.d.ts +0 -3
  229. package/lib/auth/appcheck/appcheck.d.ts +0 -8
  230. package/lib/auth/appcheck/appcheck.interceptor.d.ts +0 -15
  231. package/lib/auth/appcheck/index.d.ts +0 -2
  232. package/lib/auth/auth.d.ts +0 -15
  233. package/lib/auth/firebase.auth.module.d.ts +0 -13
  234. package/lib/auth/firebase.auth.providers.d.ts +0 -21
  235. package/lib/auth/index.d.ts +0 -6
  236. package/lib/auth/login/firebase.login.module.d.ts +0 -36
  237. package/lib/auth/login/firebase.login.providers.d.ts +0 -32
  238. package/lib/auth/login/firebase.login.providers.default.d.ts +0 -7
  239. package/lib/auth/login/index.d.ts +0 -26
  240. package/lib/auth/login/login.anonymous.component.d.ts +0 -8
  241. package/lib/auth/login/login.apple.component.d.ts +0 -8
  242. package/lib/auth/login/login.button.component.d.ts +0 -53
  243. package/lib/auth/login/login.component.d.ts +0 -14
  244. package/lib/auth/login/login.context.back.component.d.ts +0 -8
  245. package/lib/auth/login/login.context.d.ts +0 -6
  246. package/lib/auth/login/login.context.directive.d.ts +0 -10
  247. package/lib/auth/login/login.d.ts +0 -7
  248. package/lib/auth/login/login.email.component.d.ts +0 -8
  249. package/lib/auth/login/login.email.content.component.d.ts +0 -41
  250. package/lib/auth/login/login.email.form.component.d.ts +0 -17
  251. package/lib/auth/login/login.email.recovery.form.component.d.ts +0 -11
  252. package/lib/auth/login/login.facebook.component.d.ts +0 -8
  253. package/lib/auth/login/login.github.component.d.ts +0 -8
  254. package/lib/auth/login/login.google.component.d.ts +0 -8
  255. package/lib/auth/login/login.list.component.d.ts +0 -21
  256. package/lib/auth/login/login.microsoft.component.d.ts +0 -8
  257. package/lib/auth/login/login.password.d.ts +0 -3
  258. package/lib/auth/login/login.service.d.ts +0 -115
  259. package/lib/auth/login/login.terms.component.d.ts +0 -9
  260. package/lib/auth/login/login.terms.d.ts +0 -18
  261. package/lib/auth/login/login.terms.simple.component.d.ts +0 -9
  262. package/lib/auth/login/login.twitter.component.d.ts +0 -8
  263. package/lib/auth/login/register.component.d.ts +0 -12
  264. package/lib/auth/login/register.email.component.d.ts +0 -8
  265. package/lib/auth/service/firebase.auth.rxjs.d.ts +0 -23
  266. package/lib/auth/service/firebase.auth.service.d.ts +0 -95
  267. package/lib/auth/service/firebase.auth.service.delegate.d.ts +0 -25
  268. package/lib/auth/service/index.d.ts +0 -3
  269. package/lib/development/development.directive.d.ts +0 -24
  270. package/lib/development/development.module.d.ts +0 -15
  271. package/lib/development/development.popup.component.d.ts +0 -14
  272. package/lib/development/development.popup.content.component.d.ts +0 -49
  273. package/lib/development/development.popup.content.form.component.d.ts +0 -17
  274. package/lib/development/development.providers.d.ts +0 -32
  275. package/lib/development/development.scheduler.list.component.d.ts +0 -23
  276. package/lib/development/development.scheduler.service.d.ts +0 -31
  277. package/lib/development/development.scheduler.widget.component.d.ts +0 -12
  278. package/lib/development/development.service.d.ts +0 -16
  279. package/lib/development/development.widget.d.ts +0 -8
  280. package/lib/development/development.widget.service.d.ts +0 -29
  281. package/lib/development/index.d.ts +0 -13
  282. package/lib/firebase/appcheck.d.ts +0 -21
  283. package/lib/firebase/emulators.d.ts +0 -60
  284. package/lib/firebase/firebase.emulator.module.d.ts +0 -14
  285. package/lib/firebase/firebase.emulator.providers.d.ts +0 -13
  286. package/lib/firebase/firebase.emulator.service.d.ts +0 -11
  287. package/lib/firebase/firebase.module.d.ts +0 -14
  288. package/lib/firebase/firebase.options.d.ts +0 -36
  289. package/lib/firebase/firebase.options.environment.d.ts +0 -10
  290. package/lib/firebase/firebase.providers.d.ts +0 -51
  291. package/lib/firebase/index.d.ts +0 -9
  292. package/lib/firestore/firebase.firestore.context.service.d.ts +0 -10
  293. package/lib/firestore/firebase.firestore.d.ts +0 -5
  294. package/lib/firestore/firebase.firestore.module.d.ts +0 -15
  295. package/lib/firestore/firebase.firestore.providers.d.ts +0 -62
  296. package/lib/firestore/index.d.ts +0 -4
  297. package/lib/function/firebase.function.module.d.ts +0 -16
  298. package/lib/function/firebase.function.providers.d.ts +0 -43
  299. package/lib/function/index.d.ts +0 -2
  300. package/lib/index.d.ts +0 -13
  301. package/lib/model/error.d.ts +0 -2
  302. package/lib/model/index.d.ts +0 -6
  303. package/lib/model/loader/collection.change.trigger.d.ts +0 -57
  304. package/lib/model/loader/collection.change.watcher.d.ts +0 -44
  305. package/lib/model/loader/collection.loader.d.ts +0 -61
  306. package/lib/model/loader/collection.loader.instance.d.ts +0 -110
  307. package/lib/model/loader/document.loader.d.ts +0 -75
  308. package/lib/model/loader/document.loader.instance.d.ts +0 -46
  309. package/lib/model/loader/index.d.ts +0 -6
  310. package/lib/model/model.module.d.ts +0 -9
  311. package/lib/model/modules/index.d.ts +0 -2
  312. package/lib/model/modules/model/entities/index.d.ts +0 -10
  313. package/lib/model/modules/model/entities/model.entities.component.d.ts +0 -47
  314. package/lib/model/modules/model/entities/model.entities.d.ts +0 -60
  315. package/lib/model/modules/model/entities/model.entities.entity.component.d.ts +0 -43
  316. package/lib/model/modules/model/entities/model.entities.popover.button.component.d.ts +0 -30
  317. package/lib/model/modules/model/entities/model.entities.popover.component.d.ts +0 -59
  318. package/lib/model/modules/model/entities/model.entities.providers.d.ts +0 -22
  319. package/lib/model/modules/model/entities/model.entities.source.directive.d.ts +0 -8
  320. package/lib/model/modules/model/entities/model.entities.widget.d.ts +0 -30
  321. package/lib/model/modules/model/entities/model.entities.widget.entity.abstract.directive.d.ts +0 -13
  322. package/lib/model/modules/model/entities/model.entities.widget.entity.debug.component.d.ts +0 -17
  323. package/lib/model/modules/model/entities/model.entities.widget.service.d.ts +0 -74
  324. package/lib/model/modules/model/history/index.d.ts +0 -6
  325. package/lib/model/modules/model/history/model.history.component.d.ts +0 -16
  326. package/lib/model/modules/model/history/model.history.module.d.ts +0 -16
  327. package/lib/model/modules/model/history/model.history.popover.button.component.d.ts +0 -16
  328. package/lib/model/modules/model/history/model.history.popover.component.d.ts +0 -50
  329. package/lib/model/modules/model/history/model.sourceselect.history.d.ts +0 -32
  330. package/lib/model/modules/model/history/model.tracker.service.d.ts +0 -43
  331. package/lib/model/modules/model/index.d.ts +0 -7
  332. package/lib/model/modules/model/model.key.component.d.ts +0 -25
  333. package/lib/model/modules/model/model.types.list.component.d.ts +0 -22
  334. package/lib/model/modules/model/model.types.module.d.ts +0 -16
  335. package/lib/model/modules/model/model.types.providers.d.ts +0 -22
  336. package/lib/model/modules/model/model.types.service.d.ts +0 -90
  337. package/lib/model/modules/model/model.types.view.directive.d.ts +0 -19
  338. package/lib/model/modules/store/index.d.ts +0 -21
  339. package/lib/model/modules/store/model.store.module.d.ts +0 -11
  340. package/lib/model/modules/store/store.collection.change.directive.d.ts +0 -28
  341. package/lib/model/modules/store/store.collection.change.if.directive.d.ts +0 -18
  342. package/lib/model/modules/store/store.collection.crud.d.ts +0 -21
  343. package/lib/model/modules/store/store.collection.d.ts +0 -97
  344. package/lib/model/modules/store/store.collection.directive.d.ts +0 -56
  345. package/lib/model/modules/store/store.collection.list.directive.d.ts +0 -16
  346. package/lib/model/modules/store/store.d.ts +0 -87
  347. package/lib/model/modules/store/store.document.context.store.d.ts +0 -59
  348. package/lib/model/modules/store/store.document.context.store.directive.d.ts +0 -8
  349. package/lib/model/modules/store/store.document.context.store.link.d.ts +0 -17
  350. package/lib/model/modules/store/store.document.crud.d.ts +0 -63
  351. package/lib/model/modules/store/store.document.d.ts +0 -101
  352. package/lib/model/modules/store/store.document.directive.d.ts +0 -66
  353. package/lib/model/modules/store/store.document.twoway.key.directive.d.ts +0 -14
  354. package/lib/model/modules/store/store.document.twoway.key.source.d.ts +0 -10
  355. package/lib/model/modules/store/store.document.twoway.key.source.directive.d.ts +0 -13
  356. package/lib/model/modules/store/store.subcollection.d.ts +0 -51
  357. package/lib/model/modules/store/store.subcollection.directive.d.ts +0 -28
  358. package/lib/model/modules/store/store.subcollection.document.d.ts +0 -67
  359. package/lib/model/modules/store/store.subcollection.rxjs.d.ts +0 -24
  360. package/lib/model/service/index.d.ts +0 -4
  361. package/lib/model/service/model.context.d.ts +0 -33
  362. package/lib/model/service/model.context.instance.d.ts +0 -17
  363. package/lib/model/service/model.context.providers.d.ts +0 -18
  364. package/lib/model/service/model.context.service.d.ts +0 -31
  365. package/lib/model/system/index.d.ts +0 -5
  366. package/lib/model/system/systemstate.collection.store.d.ts +0 -8
  367. package/lib/model/system/systemstate.collection.store.directive.d.ts +0 -9
  368. package/lib/model/system/systemstate.document.store.accessor.d.ts +0 -22
  369. package/lib/model/system/systemstate.document.store.d.ts +0 -8
  370. package/lib/model/system/systemstate.document.store.directive.d.ts +0 -9
  371. package/lib/module.d.ts +0 -7
  372. package/lib/modules/index.d.ts +0 -2
  373. package/lib/modules/notification/component/index.d.ts +0 -5
  374. package/lib/modules/notification/component/notificationitem.content.component.d.ts +0 -9
  375. package/lib/modules/notification/component/notificationitem.list.component.d.ts +0 -24
  376. package/lib/modules/notification/component/notificationitem.view.component.d.ts +0 -10
  377. package/lib/modules/notification/component/notificationitem.view.default.component.d.ts +0 -9
  378. package/lib/modules/notification/component/notificationitem.view.directive.d.ts +0 -8
  379. package/lib/modules/notification/container/index.d.ts +0 -2
  380. package/lib/modules/notification/container/notification.item.store.popover.button.component.d.ts +0 -17
  381. package/lib/modules/notification/container/notification.item.store.popover.component.d.ts +0 -50
  382. package/lib/modules/notification/index.d.ts +0 -6
  383. package/lib/modules/notification/notification.module.d.ts +0 -38
  384. package/lib/modules/notification/notification.providers.d.ts +0 -24
  385. package/lib/modules/notification/service/index.d.ts +0 -3
  386. package/lib/modules/notification/service/notification.template.service.d.ts +0 -11
  387. package/lib/modules/notification/service/notificationitem.widget.d.ts +0 -26
  388. package/lib/modules/notification/service/notificationitem.widget.service.d.ts +0 -22
  389. package/lib/modules/notification/store/index.d.ts +0 -17
  390. package/lib/modules/notification/store/notification.collection.store.d.ts +0 -9
  391. package/lib/modules/notification/store/notification.collection.store.directive.d.ts +0 -9
  392. package/lib/modules/notification/store/notification.document.store.d.ts +0 -16
  393. package/lib/modules/notification/store/notification.document.store.directive.d.ts +0 -9
  394. package/lib/modules/notification/store/notification.item.store.d.ts +0 -28
  395. package/lib/modules/notification/store/notificationbox.collection.store.d.ts +0 -8
  396. package/lib/modules/notification/store/notificationbox.collection.store.directive.d.ts +0 -9
  397. package/lib/modules/notification/store/notificationbox.document.store.d.ts +0 -13
  398. package/lib/modules/notification/store/notificationbox.document.store.directive.d.ts +0 -9
  399. package/lib/modules/notification/store/notificationsummary.collection.store.d.ts +0 -8
  400. package/lib/modules/notification/store/notificationsummary.collection.store.directive.d.ts +0 -9
  401. package/lib/modules/notification/store/notificationsummary.document.store.d.ts +0 -21
  402. package/lib/modules/notification/store/notificationsummary.document.store.directive.d.ts +0 -9
  403. package/lib/modules/notification/store/notificationuser.collection.store.d.ts +0 -8
  404. package/lib/modules/notification/store/notificationuser.collection.store.directive.d.ts +0 -9
  405. package/lib/modules/notification/store/notificationuser.document.store.d.ts +0 -11
  406. package/lib/modules/notification/store/notificationuser.document.store.directive.d.ts +0 -9
  407. package/lib/modules/storagefile/container/index.d.ts +0 -7
  408. package/lib/modules/storagefile/container/storagefile.download.button.component.d.ts +0 -160
  409. package/lib/modules/storagefile/container/storagefile.upload.action.handler.directive.d.ts +0 -47
  410. package/lib/modules/storagefile/container/storagefile.upload.error.d.ts +0 -9
  411. package/lib/modules/storagefile/container/storagefile.upload.handler.d.ts +0 -183
  412. package/lib/modules/storagefile/container/storagefile.upload.initialize.document.directive.d.ts +0 -21
  413. package/lib/modules/storagefile/container/storagefile.upload.store.directive.d.ts +0 -20
  414. package/lib/modules/storagefile/container/storagefile.upload.sync.directive.d.ts +0 -18
  415. package/lib/modules/storagefile/index.d.ts +0 -5
  416. package/lib/modules/storagefile/service/index.d.ts +0 -2
  417. package/lib/modules/storagefile/service/storagefile.download.service.d.ts +0 -79
  418. package/lib/modules/storagefile/service/storagefile.download.storage.service.d.ts +0 -56
  419. package/lib/modules/storagefile/storagefile.providers.d.ts +0 -13
  420. package/lib/modules/storagefile/storagefile.upload.module.d.ts +0 -29
  421. package/lib/modules/storagefile/store/index.d.ts +0 -7
  422. package/lib/modules/storagefile/store/storagefile.collection.store.d.ts +0 -10
  423. package/lib/modules/storagefile/store/storagefile.collection.store.directive.d.ts +0 -9
  424. package/lib/modules/storagefile/store/storagefile.document.store.d.ts +0 -16
  425. package/lib/modules/storagefile/store/storagefile.document.store.directive.d.ts +0 -9
  426. package/lib/modules/storagefile/store/storagefile.upload.store.d.ts +0 -166
  427. package/lib/modules/storagefile/store/storagefilegroup.document.store.d.ts +0 -11
  428. package/lib/modules/storagefile/store/storagefilegroup.document.store.directive.d.ts +0 -9
  429. package/lib/pipe/index.d.ts +0 -3
  430. package/lib/pipe/key.flat.pipe.d.ts +0 -9
  431. package/lib/pipe/key.twoway.pipe.d.ts +0 -9
  432. package/lib/pipe/pipe.module.d.ts +0 -13
  433. package/lib/providers.d.ts +0 -64
  434. package/lib/router/id.param.redirect.d.ts +0 -41
  435. package/lib/router/index.d.ts +0 -1
  436. package/lib/storage/firebase.storage.d.ts +0 -9
  437. package/lib/storage/firebase.storage.module.d.ts +0 -13
  438. package/lib/storage/firebase.storage.providers.d.ts +0 -31
  439. package/lib/storage/firebase.storage.service.d.ts +0 -13
  440. package/lib/storage/index.d.ts +0 -4
@@ -1,227 +0,0 @@
1
- import { cleanupDestroyable, filterMaybe, useFirst, SubscriptionObject, accumulatorFlattenPageListLoadingState, itemAccumulatorNextPageUntilResultsCount, iteratorNextPageUntilPage, iteratorNextPageUntilMaxPageLoadLimit, pageItemAccumulatorCurrentPage, iterationHasNextAndCanLoadMore, distinctUntilKeysChange } from '@dereekb/rxjs';
2
- import { BehaviorSubject, combineLatest, map, shareReplay, distinctUntilChanged, Subject, throttleTime, switchMap, tap, startWith, NEVER, of } from 'rxjs';
3
- import { firebaseQueryItemAccumulator, firebaseQuerySnapshotAccumulator, iterationQueryDocChangeWatcher } from '@dereekb/firebase';
4
- import { countAllInNestedArray } from '@dereekb/util';
5
- /**
6
- * DbxFirebaseModelLoader implementation within an instance.
7
- */
8
- export class DbxFirebaseCollectionLoaderInstance {
9
- _maxPagesSub = new SubscriptionObject();
10
- _collection = new BehaviorSubject(undefined);
11
- _collectionMode = new BehaviorSubject('query');
12
- _collectionRefs = new BehaviorSubject(undefined);
13
- _maxPages = new BehaviorSubject(undefined);
14
- _itemsPerPage = new BehaviorSubject(undefined);
15
- _constraints = new BehaviorSubject(undefined);
16
- _waitForNonNullConstraints = new BehaviorSubject(undefined);
17
- _restart = new Subject();
18
- collection$ = this._collection.pipe(distinctUntilChanged());
19
- collectionMode$ = this._collectionMode.pipe(distinctUntilChanged(), shareReplay(1));
20
- currentCollectionRefs$ = this._collectionRefs.pipe(distinctUntilChanged(), shareReplay(1));
21
- collectionRefs$ = this.currentCollectionRefs$.pipe(filterMaybe(), distinctUntilKeysChange((x) => x.path), shareReplay(1));
22
- collectionKeys$ = this.collectionRefs$.pipe(map((x) => x.map((y) => y.path)), shareReplay(1));
23
- currentConstraints$ = this._constraints.pipe(distinctUntilChanged());
24
- constraints$ = this._waitForNonNullConstraints.pipe(switchMap((waitForNonNullConstraints) => {
25
- let obs = this.currentConstraints$;
26
- // defaults to true
27
- if (waitForNonNullConstraints !== false) {
28
- obs = this.currentConstraints$.pipe(filterMaybe());
29
- }
30
- return obs;
31
- }), shareReplay(1));
32
- iteratorFilter$ = combineLatest([this._itemsPerPage.pipe(distinctUntilChanged()), this.constraints$]).pipe(map(([limit, constraints]) => ({ limit, constraints, maxPageLoadLimit: this.maxPages })), shareReplay(1));
33
- firestoreIteration$ = this.collection$.pipe(switchMap((collection) => {
34
- if (collection) {
35
- return combineLatest([this.collectionMode$, this.iteratorFilter$, this._restart.pipe(startWith(undefined))]).pipe(throttleTime(100, undefined, { trailing: true }), // prevent rapid changes and executing filters too quickly.
36
- switchMap(([mode, filter]) => {
37
- if (mode === 'query') {
38
- return of(collection.firestoreIteration(filter));
39
- }
40
- else {
41
- return this.collectionRefs$.pipe(map((refs) => collection.firestoreFixedIteration(refs, filter)));
42
- }
43
- }), cleanupDestroyable(), // cleanup the iteration
44
- shareReplay(1));
45
- }
46
- else {
47
- return NEVER; // don't emit anything until collection is provided.
48
- }
49
- }), cleanupDestroyable(), // cleanup the iteration
50
- shareReplay(1));
51
- queryChangeWatcher$ = this.firestoreIteration$.pipe(map((instance) => iterationQueryDocChangeWatcher({ instance })), shareReplay(1));
52
- snapshotAccumulator$ = this.firestoreIteration$.pipe(map((x) => firebaseQuerySnapshotAccumulator(x)), cleanupDestroyable(), shareReplay(1));
53
- hasNext$ = this.firestoreIteration$.pipe(switchMap((x) => x.hasNext$), shareReplay(1));
54
- canLoadMore$ = this.firestoreIteration$.pipe(switchMap((x) => x.canLoadMore$), shareReplay(1));
55
- hasNextAndCanLoadMore$ = this.firestoreIteration$.pipe(switchMap((x) => iterationHasNextAndCanLoadMore(x)), shareReplay(1));
56
- snapshotAccumulatorDocumentRefs$ = this.snapshotAccumulator$.pipe(switchMap((x) => x.allItems$.pipe(map((y) => y.map((z) => z.map((zz) => zz.ref))))), shareReplay(1));
57
- snapshotAccumulatorDocuments$ = combineLatest([this.collection$.pipe(filterMaybe()), this.snapshotAccumulatorDocumentRefs$]).pipe(map(([collection, documentRefs]) => {
58
- const accessor = collection.documentAccessor();
59
- return documentRefs.map((y) => y.map((z) => accessor.loadDocument(z)));
60
- }), shareReplay(1));
61
- accumulator$ = this.firestoreIteration$.pipe(map((x) => firebaseQueryItemAccumulator(x)), cleanupDestroyable(), shareReplay(1));
62
- accumulatorPage$ = this.accumulator$.pipe(switchMap((x) => pageItemAccumulatorCurrentPage(x)), shareReplay(1));
63
- /**
64
- * Passthrough for currentAllItems$ from the accumulator.
65
- */
66
- currentAccumulatorItems$ = this.accumulator$.pipe(switchMap((x) => x.currentAllItems$), shareReplay(1));
67
- /**
68
- * Passthrough for allItems$ from the accumulator.
69
- */
70
- accumulatorItems$ = this.accumulator$.pipe(switchMap((x) => x.allItems$), shareReplay(1));
71
- /**
72
- * Returns true if the first page result has one or more documents.
73
- */
74
- hasDocuments$ = this.firestoreIteration$.pipe(switchMap((x) => x.firstState$.pipe(map((x) => Boolean(x.value?.length)))), shareReplay(1));
75
- allDocumentRefs$ = this.snapshotAccumulatorDocumentRefs$.pipe(map((x) => x.flat()), shareReplay(1));
76
- allDocuments$ = this.snapshotAccumulatorDocuments$.pipe(map((x) => x.flat()), shareReplay(1));
77
- allDocumentData$ = this.accumulatorItems$.pipe(map((x) => x.flat()), shareReplay(1));
78
- pageLoadingState$ = this.accumulator$.pipe(switchMap((x) => accumulatorFlattenPageListLoadingState(x)), shareReplay(1));
79
- constructor(initConfig) {
80
- this._collectionMode.next(initConfig?.collectionMode ?? 'query');
81
- if (initConfig?.collectionKeys) {
82
- this.collectionKeys = initConfig?.collectionKeys;
83
- }
84
- else if (initConfig?.collectionRefs) {
85
- this.collectionRefs = initConfig?.collectionRefs;
86
- }
87
- this._collection.next(initConfig?.collection);
88
- this._maxPages.next(initConfig?.maxPages);
89
- this._itemsPerPage.next(initConfig?.itemsPerPage);
90
- this._constraints.next(initConfig?.constraints);
91
- }
92
- init() {
93
- // When max pages changes, update the iteration's max page limit.
94
- this._maxPagesSub.subscription = this._maxPages
95
- .pipe(distinctUntilChanged(), filterMaybe(), // do not pass null/undefined values
96
- switchMap((maxPageLoadLimit) => this.firestoreIteration$.pipe(tap((iteration) => {
97
- iteration.setMaxPageLoadLimit(maxPageLoadLimit);
98
- }))))
99
- .subscribe();
100
- }
101
- destroy() {
102
- this._collectionMode.complete();
103
- this._collectionRefs.complete();
104
- this._maxPages.complete();
105
- this._collection.complete();
106
- this._constraints.complete();
107
- this._itemsPerPage.complete();
108
- this._restart.complete();
109
- this._maxPagesSub.destroy();
110
- }
111
- // MARK: Inputs
112
- get collectionMode() {
113
- return this._collectionMode.value;
114
- }
115
- set collectionMode(mode) {
116
- if (this.collectionMode != mode) {
117
- this._collectionMode.next(mode);
118
- }
119
- }
120
- get collectionKeys() {
121
- const refs = this.collectionRefs;
122
- return refs?.map((x) => x.path);
123
- }
124
- set collectionKeys(keys) {
125
- let refs = undefined;
126
- const { collection } = this;
127
- if (keys && collection) {
128
- const accessor = collection.documentAccessor();
129
- refs = keys.map((x) => accessor.documentRefForKey(x));
130
- }
131
- this.collectionRefs = refs;
132
- }
133
- get collectionRefs() {
134
- return this._collectionRefs.value;
135
- }
136
- set collectionRefs(refs) {
137
- this._collectionRefs.next(refs);
138
- }
139
- get maxPages() {
140
- return this._maxPages.value;
141
- }
142
- set maxPages(maxPages) {
143
- if (this.maxPages != maxPages) {
144
- this._maxPages.next(maxPages);
145
- }
146
- }
147
- get itemsPerPage() {
148
- return this._itemsPerPage.value;
149
- }
150
- set itemsPerPage(itemsPerPage) {
151
- if (this.itemsPerPage != itemsPerPage) {
152
- this._itemsPerPage.next(itemsPerPage);
153
- }
154
- }
155
- get constraints() {
156
- return this._constraints.value;
157
- }
158
- set constraints(constraints) {
159
- this._constraints.next(constraints);
160
- }
161
- get waitForNonNullConstraints() {
162
- return this._waitForNonNullConstraints.value;
163
- }
164
- set waitForNonNullConstraints(waitForNonNullConstraints) {
165
- this._waitForNonNullConstraints.next(waitForNonNullConstraints);
166
- }
167
- get collection() {
168
- return this._collection.value;
169
- }
170
- set collection(collection) {
171
- this._collection.next(collection);
172
- }
173
- // MARK: DbxFirebaseCollectionLoader
174
- next() {
175
- useFirst(this.firestoreIteration$, (x) => x.next());
176
- }
177
- restart() {
178
- this._restart.next();
179
- }
180
- setCollectionMode(mode) {
181
- this.collectionMode = mode;
182
- }
183
- // References Mode
184
- setCollectionKeys(keys) {
185
- this.collectionKeys = keys;
186
- }
187
- setCollectionRefs(refs) {
188
- this.collectionRefs = refs;
189
- }
190
- // Query Mode
191
- setMaxPages(maxPages) {
192
- this.maxPages = maxPages;
193
- }
194
- setItemsPerPage(itemsPerPage) {
195
- this.itemsPerPage = itemsPerPage;
196
- }
197
- setConstraints(constraints) {
198
- this.constraints = constraints;
199
- }
200
- setWaitForNonNullConstraints(waitForNonNullConstraints) {
201
- this.waitForNonNullConstraints = waitForNonNullConstraints;
202
- }
203
- setCollection(firestoreCollection) {
204
- this.collection = firestoreCollection;
205
- }
206
- loadPagesUntilResultsCount(maxResultsLimit, countResultsFunction) {
207
- const defaultFn = countAllInNestedArray;
208
- return this.accumulator$.pipe(switchMap((accumulator) => itemAccumulatorNextPageUntilResultsCount({
209
- accumulator,
210
- maxResultsLimit,
211
- countResultsFunction: countResultsFunction ?? defaultFn
212
- })));
213
- }
214
- loadToPage(page) {
215
- return this.accumulator$.pipe(switchMap((accumulator) => iteratorNextPageUntilPage(accumulator.itemIteration, page)));
216
- }
217
- loadAllResults() {
218
- return this.accumulator$.pipe(switchMap((accumulator) => iteratorNextPageUntilMaxPageLoadLimit(accumulator.itemIteration)));
219
- }
220
- }
221
- export function dbxFirebaseCollectionLoaderInstance(config) {
222
- return new DbxFirebaseCollectionLoaderInstance(config);
223
- }
224
- export function dbxFirebaseCollectionLoaderInstanceWithCollection(collection) {
225
- return new DbxFirebaseCollectionLoaderInstance({ collection });
226
- }
227
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5sb2FkZXIuaW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9sb2FkZXIvY29sbGVjdGlvbi5sb2FkZXIuaW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE2QixrQkFBa0IsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLHNDQUFzQyxFQUF5RCx3Q0FBd0MsRUFBRSx5QkFBeUIsRUFBRSxxQ0FBcUMsRUFBRSw4QkFBOEIsRUFBdUQsOEJBQThCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbGQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBbUIsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVLLE9BQU8sRUFJTCw0QkFBNEIsRUFHNUIsZ0NBQWdDLEVBUWhDLDhCQUE4QixFQUMvQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBMEcscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUE2QjlKOztHQUVHO0FBQ0gsTUFBTSxPQUFPLG1DQUFtQztJQUM3QixZQUFZLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO0lBRXRDLFdBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBdUMsU0FBUyxDQUFDLENBQUM7SUFFbkYsZUFBZSxHQUFHLElBQUksZUFBZSxDQUE0QixPQUFPLENBQUMsQ0FBQztJQUMxRSxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQWdDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hGLFNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsU0FBUyxDQUFDLENBQUM7SUFDMUQsYUFBYSxHQUFHLElBQUksZUFBZSxDQUFnQixTQUFTLENBQUMsQ0FBQztJQUM5RCxZQUFZLEdBQUcsSUFBSSxlQUFlLENBQWdELFNBQVMsQ0FBQyxDQUFDO0lBQzdGLDBCQUEwQixHQUFHLElBQUksZUFBZSxDQUFpQixTQUFTLENBQUMsQ0FBQztJQUM1RSxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUV6QyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0lBRTVELGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLHNCQUFzQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0YsZUFBZSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQ3pELFdBQVcsRUFBRSxFQUNiLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQ3RDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBQ08sZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUNsRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUNoQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztJQUVPLG1CQUFtQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztJQUVyRSxZQUFZLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FDMUQsU0FBUyxDQUFDLENBQUMseUJBQXlCLEVBQUUsRUFBRTtRQUN0QyxJQUFJLEdBQUcsR0FBOEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBRTlGLG1CQUFtQjtRQUNuQixJQUFJLHlCQUF5QixLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3hDLEdBQUcsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQyxDQUFDLEVBQ0YsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFFTyxlQUFlLEdBQWdELGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzlKLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQW9DLENBQUMsRUFDM0gsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFFTyxtQkFBbUIsR0FBc0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQ3JHLFNBQVMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1FBQ3ZCLElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixPQUFPLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMvRyxZQUFZLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLDJEQUEyRDtZQUM3RyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFO2dCQUMzQixJQUFJLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztvQkFDckIsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELENBQUM7cUJBQU0sQ0FBQztvQkFDTixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BHLENBQUM7WUFDSCxDQUFDLENBQUMsRUFDRixrQkFBa0IsRUFBRSxFQUFFLHdCQUF3QjtZQUM5QyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxLQUFLLENBQUMsQ0FBQyxvREFBb0Q7UUFDcEUsQ0FBQztJQUNILENBQUMsQ0FBQyxFQUNGLGtCQUFrQixFQUFFLEVBQUUsd0JBQXdCO0lBQzlDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBRU8sbUJBQW1CLEdBQWtELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQ3pHLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsOEJBQThCLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQy9ELFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBRU8sb0JBQW9CLEdBQW9ELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQzVHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsZ0NBQWdDLENBQUksQ0FBQyxDQUFDLENBQUMsRUFDbEQsa0JBQWtCLEVBQUUsRUFDcEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFFTyxRQUFRLEdBQXdCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQ3BFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUM1QixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztJQUVPLFlBQVksR0FBd0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FDeEUsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQ2hDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBRU8sc0JBQXNCLEdBQXdCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQ2xGLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDbkQsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFFTyxnQ0FBZ0MsR0FBeUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FDOUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNuRixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztJQUVPLDZCQUE2QixHQUFzQixhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMzSixHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsRUFBRSxFQUFFO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQy9DLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQyxDQUFDLEVBQ0YsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFFTyxZQUFZLEdBQWdELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQ2hHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsNEJBQTRCLENBQUksQ0FBQyxDQUFDLENBQUMsRUFDOUMsa0JBQWtCLEVBQUUsRUFDcEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFFTyxnQkFBZ0IsR0FBMkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ3hFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDbkQsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFFRjs7T0FFRztJQUNNLHdCQUF3QixHQUFnRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDckcsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsRUFDcEMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFFRjs7T0FFRztJQUNNLGlCQUFpQixHQUFnRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDOUYsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQzdCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBRUY7O09BRUc7SUFDTSxhQUFhLEdBQXdCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQ3pFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDMUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFFTyxnQkFBZ0IsR0FBdUMsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FDeEcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFDcEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFFTyxhQUFhLEdBQW9CLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQy9FLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQ3BCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBRU8sZ0JBQWdCLEdBQThDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQ2hHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQ3BCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBRU8saUJBQWlCLEdBQWtFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUNoSCxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHNDQUFzQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzNELFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBRUYsWUFBWSxVQUFnRTtRQUMxRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsY0FBYyxJQUFJLE9BQU8sQ0FBQyxDQUFDO1FBRWpFLElBQUksVUFBVSxFQUFFLGNBQWMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBVSxFQUFFLGNBQWMsQ0FBQztRQUNuRCxDQUFDO2FBQU0sSUFBSSxVQUFVLEVBQUUsY0FBYyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLEVBQUUsY0FBYyxDQUFDO1FBQ25ELENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQUk7UUFDRixpRUFBaUU7UUFDakUsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVM7YUFDNUMsSUFBSSxDQUNILG9CQUFvQixFQUFFLEVBQ3RCLFdBQVcsRUFBRSxFQUFFLG9DQUFvQztRQUNuRCxTQUFTLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQzdCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQzNCLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ2hCLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FDRjthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxlQUFlO0lBQ2YsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksY0FBYyxDQUFDLElBQStCO1FBQ2hELElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLGNBQWMsQ0FBQyxJQUFnQztRQUNqRCxJQUFJLElBQUksR0FBa0MsU0FBUyxDQUFDO1FBQ3BELE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFNUIsSUFBSSxJQUFJLElBQUksVUFBVSxFQUFFLENBQUM7WUFDdkIsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDL0MsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFFRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksY0FBYyxDQUFDLElBQW1DO1FBQ3BELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJLFFBQVEsQ0FBQyxRQUF1QjtRQUNsQyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLFlBQVksQ0FBQyxZQUEyQjtRQUMxQyxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksWUFBWSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLFdBQVcsQ0FBQyxXQUEwRDtRQUN4RSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSx5QkFBeUI7UUFDM0IsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFJLHlCQUF5QixDQUFDLHlCQUF5QztRQUNyRSxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksVUFBVSxDQUFDLFVBQWdEO1FBQzdELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxvQ0FBb0M7SUFDcEMsSUFBSTtRQUNGLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBK0I7UUFDL0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixpQkFBaUIsQ0FBQyxJQUFnQztRQUNoRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBbUM7UUFDbkQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVELGFBQWE7SUFDYixXQUFXLENBQUMsUUFBdUI7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztJQUVELGVBQWUsQ0FBQyxZQUEyQjtRQUN6QyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUNuQyxDQUFDO0lBRUQsY0FBYyxDQUFDLFdBQTBEO1FBQ3ZFLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLENBQUM7SUFFRCw0QkFBNEIsQ0FBQyx5QkFBeUM7UUFDcEUsSUFBSSxDQUFDLHlCQUF5QixHQUFHLHlCQUF5QixDQUFDO0lBQzdELENBQUM7SUFFRCxhQUFhLENBQUMsbUJBQXlEO1FBQ3JFLElBQUksQ0FBQyxVQUFVLEdBQUcsbUJBQW1CLENBQUM7SUFDeEMsQ0FBQztJQUVELDBCQUEwQixDQUFDLGVBQXNDLEVBQUUsb0JBQW1HO1FBQ3BLLE1BQU0sU0FBUyxHQUFvRixxQkFBcUIsQ0FBQztRQUN6SCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUMzQixTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUN4Qix3Q0FBd0MsQ0FBQztZQUN2QyxXQUFXO1lBQ1gsZUFBZTtZQUNmLG9CQUFvQixFQUFFLG9CQUFvQixJQUFJLFNBQVM7U0FDeEQsQ0FBQyxDQUNILENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBZ0I7UUFDekIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLHlCQUF5QixDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hILENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLHFDQUFxQyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUgsQ0FBQztDQUNGO0FBRUQsTUFBTSxVQUFVLG1DQUFtQyxDQUEyRCxNQUEyRDtJQUN2SyxPQUFPLElBQUksbUNBQW1DLENBQU8sTUFBTSxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUVELE1BQU0sVUFBVSxpREFBaUQsQ0FBMkQsVUFBZ0Q7SUFDMUssT0FBTyxJQUFJLG1DQUFtQyxDQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUN2RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBQYWdlTGlzdExvYWRpbmdTdGF0ZSwgY2xlYW51cERlc3Ryb3lhYmxlLCBmaWx0ZXJNYXliZSwgdXNlRmlyc3QsIFN1YnNjcmlwdGlvbk9iamVjdCwgYWNjdW11bGF0b3JGbGF0dGVuUGFnZUxpc3RMb2FkaW5nU3RhdGUsIHR5cGUgSXRlbUFjY3VtdWxhdG9yTmV4dFBhZ2VVbnRpbFJlc3VsdHNDb3VudEZ1bmN0aW9uLCBpdGVtQWNjdW11bGF0b3JOZXh0UGFnZVVudGlsUmVzdWx0c0NvdW50LCBpdGVyYXRvck5leHRQYWdlVW50aWxQYWdlLCBpdGVyYXRvck5leHRQYWdlVW50aWxNYXhQYWdlTG9hZExpbWl0LCBwYWdlSXRlbUFjY3VtdWxhdG9yQ3VycmVudFBhZ2UsIHR5cGUgSXRlbUFjY3VtdWxhdG9yTmV4dFBhZ2VVbnRpbFJlc3VsdHNDb3VudFJlc3VsdCwgaXRlcmF0aW9uSGFzTmV4dEFuZENhbkxvYWRNb3JlLCBkaXN0aW5jdFVudGlsS2V5c0NoYW5nZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIHNoYXJlUmVwbGF5LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgU3ViamVjdCwgdGhyb3R0bGVUaW1lLCBzd2l0Y2hNYXAsIHR5cGUgT2JzZXJ2YWJsZSwgdGFwLCBzdGFydFdpdGgsIE5FVkVSLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgdHlwZSBEb2N1bWVudERhdGFXaXRoSWRBbmRLZXksXG4gIHR5cGUgRG9jdW1lbnRSZWZlcmVuY2UsXG4gIHR5cGUgRmlyZWJhc2VRdWVyeUl0ZW1BY2N1bXVsYXRvcixcbiAgZmlyZWJhc2VRdWVyeUl0ZW1BY2N1bXVsYXRvcixcbiAgdHlwZSBGaXJlYmFzZVF1ZXJ5SXRlbUFjY3VtdWxhdG9yTmV4dFBhZ2VVbnRpbFJlc3VsdHNDb3VudEZ1bmN0aW9uLFxuICB0eXBlIEZpcmViYXNlUXVlcnlTbmFwc2hvdEFjY3VtdWxhdG9yLFxuICBmaXJlYmFzZVF1ZXJ5U25hcHNob3RBY2N1bXVsYXRvcixcbiAgdHlwZSBGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZSxcbiAgdHlwZSBGaXJlc3RvcmVEb2N1bWVudCxcbiAgdHlwZSBGaXJlc3RvcmVJdGVtUGFnZUl0ZXJhdGlvbkluc3RhbmNlLFxuICB0eXBlIEZpcmVzdG9yZUl0ZW1QYWdlSXRlcmF0b3JGaWx0ZXIsXG4gIHR5cGUgRmlyZXN0b3JlTW9kZWxLZXksXG4gIHR5cGUgRmlyZXN0b3JlUXVlcnlDb25zdHJhaW50LFxuICB0eXBlIEl0ZXJhdGlvblF1ZXJ5RG9jQ2hhbmdlV2F0Y2hlcixcbiAgaXRlcmF0aW9uUXVlcnlEb2NDaGFuZ2VXYXRjaGVyXG59IGZyb20gJ0BkZXJlZWtiL2ZpcmViYXNlJztcbmltcG9ydCB7IHR5cGUgQXJyYXlPclZhbHVlLCB0eXBlIERlc3Ryb3lhYmxlLCB0eXBlIEdldHRlck9yVmFsdWUsIHR5cGUgSW5pdGlhbGl6ZWQsIHR5cGUgTWF5YmUsIHR5cGUgUGFnZU51bWJlciwgY291bnRBbGxJbk5lc3RlZEFycmF5IH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyB0eXBlIERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckFjY2Vzc29yLCB0eXBlIERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlcldpdGhBY2N1bXVsYXRvciB9IGZyb20gJy4vY29sbGVjdGlvbi5sb2FkZXInO1xuXG4vKipcbiAqIFRoZSBzdG9yZSBtb2RlLlxuICpcbiAqIC0gcXVlcnk6IFRoZSBzdG9yZSB3aWxsIGxvYWQgZG9jdW1lbnRzIGZyb20gYSBxdWVyeSwgdXNpbmcgdGhlIGdpdmVuIGNvbGxlY3Rpb24uXG4gKiAtIHJlZmVyZW5jZXM6IFRoZSBzdG9yZSB3aWxsIGxvYWQgZG9jdW1lbnRzIGZyb20gdGhlIGlucHV0IHJlZmVyZW5jZXMgKGtleXMsIHJlZnMsIGV0Yy4pLlxuICovXG5leHBvcnQgdHlwZSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Nb2RlID0gJ3F1ZXJ5JyB8ICdyZWZlcmVuY2VzJztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZUluaXRDb25maWc8VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4+IHtcbiAgcmVhZG9ubHkgY29sbGVjdGlvbj86IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+PjtcbiAgcmVhZG9ubHkgY29sbGVjdGlvbk1vZGU/OiBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Nb2RlO1xuICByZWFkb25seSBjb2xsZWN0aW9uS2V5cz86IE1heWJlPEZpcmVzdG9yZU1vZGVsS2V5W10+O1xuICByZWFkb25seSBjb2xsZWN0aW9uUmVmcz86IE1heWJlPERvY3VtZW50UmVmZXJlbmNlPFQ+W10+O1xuICByZWFkb25seSBtYXhQYWdlcz86IE1heWJlPG51bWJlcj47XG4gIHJlYWRvbmx5IGl0ZW1zUGVyUGFnZT86IE1heWJlPG51bWJlcj47XG4gIHJlYWRvbmx5IGNvbnN0cmFpbnRzPzogTWF5YmU8QXJyYXlPclZhbHVlPEZpcmVzdG9yZVF1ZXJ5Q29uc3RyYWludD4+O1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gd2FpdCBmb3Igbm9uLW51bGwgY29uc3RyYWludHMgYmVmb3JlIGJlZ2lubmluZyB0aGUgaXRlcmF0aW9uLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKi9cbiAgcmVhZG9ubHkgd2FpdEZvck5vbk51bGxDb25zdHJhaW50cz86IE1heWJlPGJvb2xlYW4+O1xufVxuXG5leHBvcnQgdHlwZSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZURhdGE8VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4+ID0gRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVyQWNjZXNzb3I8VD47XG5cbi8qKlxuICogRGJ4RmlyZWJhc2VNb2RlbExvYWRlciBpbXBsZW1lbnRhdGlvbiB3aXRoaW4gYW4gaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZTxUID0gdW5rbm93biwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4+IGltcGxlbWVudHMgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVyV2l0aEFjY3VtdWxhdG9yPFQ+LCBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZURhdGE8VCwgRD4sIEluaXRpYWxpemVkLCBEZXN0cm95YWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21heFBhZ2VzU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBfY29sbGVjdGlvbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+Pih1bmRlZmluZWQpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBfY29sbGVjdGlvbk1vZGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERieEZpcmViYXNlQ29sbGVjdGlvbk1vZGU+KCdxdWVyeScpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NvbGxlY3Rpb25SZWZzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPltdPj4odW5kZWZpbmVkKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9tYXhQYWdlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8bnVtYmVyPj4odW5kZWZpbmVkKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9pdGVtc1BlclBhZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPG51bWJlcj4+KHVuZGVmaW5lZCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBfY29uc3RyYWludHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPEFycmF5T3JWYWx1ZTxGaXJlc3RvcmVRdWVyeUNvbnN0cmFpbnQ+Pj4odW5kZWZpbmVkKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF93YWl0Rm9yTm9uTnVsbENvbnN0cmFpbnRzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxib29sZWFuPj4odW5kZWZpbmVkKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9yZXN0YXJ0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICByZWFkb25seSBjb2xsZWN0aW9uJCA9IHRoaXMuX2NvbGxlY3Rpb24ucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcblxuICByZWFkb25seSBjb2xsZWN0aW9uTW9kZSQgPSB0aGlzLl9jb2xsZWN0aW9uTW9kZS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcbiAgcmVhZG9ubHkgY3VycmVudENvbGxlY3Rpb25SZWZzJCA9IHRoaXMuX2NvbGxlY3Rpb25SZWZzLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuICByZWFkb25seSBjb2xsZWN0aW9uUmVmcyQgPSB0aGlzLmN1cnJlbnRDb2xsZWN0aW9uUmVmcyQucGlwZShcbiAgICBmaWx0ZXJNYXliZSgpLFxuICAgIGRpc3RpbmN0VW50aWxLZXlzQ2hhbmdlKCh4KSA9PiB4LnBhdGgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG4gIHJlYWRvbmx5IGNvbGxlY3Rpb25LZXlzJCA9IHRoaXMuY29sbGVjdGlvblJlZnMkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4Lm1hcCgoeSkgPT4geS5wYXRoKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjdXJyZW50Q29uc3RyYWludHMkID0gdGhpcy5fY29uc3RyYWludHMucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcblxuICByZWFkb25seSBjb25zdHJhaW50cyQgPSB0aGlzLl93YWl0Rm9yTm9uTnVsbENvbnN0cmFpbnRzLnBpcGUoXG4gICAgc3dpdGNoTWFwKCh3YWl0Rm9yTm9uTnVsbENvbnN0cmFpbnRzKSA9PiB7XG4gICAgICBsZXQgb2JzOiBPYnNlcnZhYmxlPE1heWJlPEFycmF5T3JWYWx1ZTxGaXJlc3RvcmVRdWVyeUNvbnN0cmFpbnQ+Pj4gPSB0aGlzLmN1cnJlbnRDb25zdHJhaW50cyQ7XG5cbiAgICAgIC8vIGRlZmF1bHRzIHRvIHRydWVcbiAgICAgIGlmICh3YWl0Rm9yTm9uTnVsbENvbnN0cmFpbnRzICE9PSBmYWxzZSkge1xuICAgICAgICBvYnMgPSB0aGlzLmN1cnJlbnRDb25zdHJhaW50cyQucGlwZShmaWx0ZXJNYXliZSgpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9icztcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGl0ZXJhdG9yRmlsdGVyJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVJdGVtUGFnZUl0ZXJhdG9yRmlsdGVyPiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX2l0ZW1zUGVyUGFnZS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLCB0aGlzLmNvbnN0cmFpbnRzJF0pLnBpcGUoXG4gICAgbWFwKChbbGltaXQsIGNvbnN0cmFpbnRzXSkgPT4gKHsgbGltaXQsIGNvbnN0cmFpbnRzLCBtYXhQYWdlTG9hZExpbWl0OiB0aGlzLm1heFBhZ2VzIH0pIGFzIEZpcmVzdG9yZUl0ZW1QYWdlSXRlcmF0b3JGaWx0ZXIpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZmlyZXN0b3JlSXRlcmF0aW9uJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVJdGVtUGFnZUl0ZXJhdGlvbkluc3RhbmNlPFQ+PiA9IHRoaXMuY29sbGVjdGlvbiQucGlwZShcbiAgICBzd2l0Y2hNYXAoKGNvbGxlY3Rpb24pID0+IHtcbiAgICAgIGlmIChjb2xsZWN0aW9uKSB7XG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLmNvbGxlY3Rpb25Nb2RlJCwgdGhpcy5pdGVyYXRvckZpbHRlciQsIHRoaXMuX3Jlc3RhcnQucGlwZShzdGFydFdpdGgodW5kZWZpbmVkKSldKS5waXBlKFxuICAgICAgICAgIHRocm90dGxlVGltZSgxMDAsIHVuZGVmaW5lZCwgeyB0cmFpbGluZzogdHJ1ZSB9KSwgLy8gcHJldmVudCByYXBpZCBjaGFuZ2VzIGFuZCBleGVjdXRpbmcgZmlsdGVycyB0b28gcXVpY2tseS5cbiAgICAgICAgICBzd2l0Y2hNYXAoKFttb2RlLCBmaWx0ZXJdKSA9PiB7XG4gICAgICAgICAgICBpZiAobW9kZSA9PT0gJ3F1ZXJ5Jykge1xuICAgICAgICAgICAgICByZXR1cm4gb2YoY29sbGVjdGlvbi5maXJlc3RvcmVJdGVyYXRpb24oZmlsdGVyKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uUmVmcyQucGlwZShtYXAoKHJlZnMpID0+IGNvbGxlY3Rpb24uZmlyZXN0b3JlRml4ZWRJdGVyYXRpb24ocmVmcywgZmlsdGVyKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNsZWFudXBEZXN0cm95YWJsZSgpLCAvLyBjbGVhbnVwIHRoZSBpdGVyYXRpb25cbiAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIE5FVkVSOyAvLyBkb24ndCBlbWl0IGFueXRoaW5nIHVudGlsIGNvbGxlY3Rpb24gaXMgcHJvdmlkZWQuXG4gICAgICB9XG4gICAgfSksXG4gICAgY2xlYW51cERlc3Ryb3lhYmxlKCksIC8vIGNsZWFudXAgdGhlIGl0ZXJhdGlvblxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgcXVlcnlDaGFuZ2VXYXRjaGVyJDogT2JzZXJ2YWJsZTxJdGVyYXRpb25RdWVyeURvY0NoYW5nZVdhdGNoZXI8VD4+ID0gdGhpcy5maXJlc3RvcmVJdGVyYXRpb24kLnBpcGUoXG4gICAgbWFwKChpbnN0YW5jZSkgPT4gaXRlcmF0aW9uUXVlcnlEb2NDaGFuZ2VXYXRjaGVyKHsgaW5zdGFuY2UgfSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgc25hcHNob3RBY2N1bXVsYXRvciQ6IE9ic2VydmFibGU8RmlyZWJhc2VRdWVyeVNuYXBzaG90QWNjdW11bGF0b3I8VD4+ID0gdGhpcy5maXJlc3RvcmVJdGVyYXRpb24kLnBpcGUoXG4gICAgbWFwKCh4KSA9PiBmaXJlYmFzZVF1ZXJ5U25hcHNob3RBY2N1bXVsYXRvcjxUPih4KSksXG4gICAgY2xlYW51cERlc3Ryb3lhYmxlKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBoYXNOZXh0JDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuZmlyZXN0b3JlSXRlcmF0aW9uJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoeCkgPT4geC5oYXNOZXh0JCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjYW5Mb2FkTW9yZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmZpcmVzdG9yZUl0ZXJhdGlvbiQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+IHguY2FuTG9hZE1vcmUkKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGhhc05leHRBbmRDYW5Mb2FkTW9yZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmZpcmVzdG9yZUl0ZXJhdGlvbiQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+IGl0ZXJhdGlvbkhhc05leHRBbmRDYW5Mb2FkTW9yZSh4KSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzbmFwc2hvdEFjY3VtdWxhdG9yRG9jdW1lbnRSZWZzJDogT2JzZXJ2YWJsZTxEb2N1bWVudFJlZmVyZW5jZTxUPltdW10+ID0gdGhpcy5zbmFwc2hvdEFjY3VtdWxhdG9yJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoeCkgPT4geC5hbGxJdGVtcyQucGlwZShtYXAoKHkpID0+IHkubWFwKCh6KSA9PiB6Lm1hcCgoenopID0+IHp6LnJlZikpKSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgc25hcHNob3RBY2N1bXVsYXRvckRvY3VtZW50cyQ6IE9ic2VydmFibGU8RFtdW10+ID0gY29tYmluZUxhdGVzdChbdGhpcy5jb2xsZWN0aW9uJC5waXBlKGZpbHRlck1heWJlKCkpLCB0aGlzLnNuYXBzaG90QWNjdW11bGF0b3JEb2N1bWVudFJlZnMkXSkucGlwZShcbiAgICBtYXAoKFtjb2xsZWN0aW9uLCBkb2N1bWVudFJlZnNdKSA9PiB7XG4gICAgICBjb25zdCBhY2Nlc3NvciA9IGNvbGxlY3Rpb24uZG9jdW1lbnRBY2Nlc3NvcigpO1xuICAgICAgcmV0dXJuIGRvY3VtZW50UmVmcy5tYXAoKHkpID0+IHkubWFwKCh6KSA9PiBhY2Nlc3Nvci5sb2FkRG9jdW1lbnQoeikpKTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGFjY3VtdWxhdG9yJDogT2JzZXJ2YWJsZTxGaXJlYmFzZVF1ZXJ5SXRlbUFjY3VtdWxhdG9yPFQ+PiA9IHRoaXMuZmlyZXN0b3JlSXRlcmF0aW9uJC5waXBlKFxuICAgIG1hcCgoeCkgPT4gZmlyZWJhc2VRdWVyeUl0ZW1BY2N1bXVsYXRvcjxUPih4KSksXG4gICAgY2xlYW51cERlc3Ryb3lhYmxlKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBhY2N1bXVsYXRvclBhZ2UkOiBPYnNlcnZhYmxlPFBhZ2VOdW1iZXI+ID0gdGhpcy5hY2N1bXVsYXRvciQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+IHBhZ2VJdGVtQWNjdW11bGF0b3JDdXJyZW50UGFnZSh4KSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICAvKipcbiAgICogUGFzc3Rocm91Z2ggZm9yIGN1cnJlbnRBbGxJdGVtcyQgZnJvbSB0aGUgYWNjdW11bGF0b3IuXG4gICAqL1xuICByZWFkb25seSBjdXJyZW50QWNjdW11bGF0b3JJdGVtcyQ6IE9ic2VydmFibGU8RG9jdW1lbnREYXRhV2l0aElkQW5kS2V5PFQ+W11bXT4gPSB0aGlzLmFjY3VtdWxhdG9yJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoeCkgPT4geC5jdXJyZW50QWxsSXRlbXMkKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8qKlxuICAgKiBQYXNzdGhyb3VnaCBmb3IgYWxsSXRlbXMkIGZyb20gdGhlIGFjY3VtdWxhdG9yLlxuICAgKi9cbiAgcmVhZG9ubHkgYWNjdW11bGF0b3JJdGVtcyQ6IE9ic2VydmFibGU8RG9jdW1lbnREYXRhV2l0aElkQW5kS2V5PFQ+W11bXT4gPSB0aGlzLmFjY3VtdWxhdG9yJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoeCkgPT4geC5hbGxJdGVtcyQpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZmlyc3QgcGFnZSByZXN1bHQgaGFzIG9uZSBvciBtb3JlIGRvY3VtZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IGhhc0RvY3VtZW50cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmZpcmVzdG9yZUl0ZXJhdGlvbiQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+IHguZmlyc3RTdGF0ZSQucGlwZShtYXAoKHgpID0+IEJvb2xlYW4oeC52YWx1ZT8ubGVuZ3RoKSkpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGFsbERvY3VtZW50UmVmcyQ6IE9ic2VydmFibGU8RG9jdW1lbnRSZWZlcmVuY2U8VD5bXT4gPSB0aGlzLnNuYXBzaG90QWNjdW11bGF0b3JEb2N1bWVudFJlZnMkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmZsYXQoKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBhbGxEb2N1bWVudHMkOiBPYnNlcnZhYmxlPERbXT4gPSB0aGlzLnNuYXBzaG90QWNjdW11bGF0b3JEb2N1bWVudHMkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmZsYXQoKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBhbGxEb2N1bWVudERhdGEkOiBPYnNlcnZhYmxlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPltdPiA9IHRoaXMuYWNjdW11bGF0b3JJdGVtcyQucGlwZShcbiAgICBtYXAoKHgpID0+IHguZmxhdCgpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHBhZ2VMb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPFBhZ2VMaXN0TG9hZGluZ1N0YXRlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPj4+ID0gdGhpcy5hY2N1bXVsYXRvciQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+IGFjY3VtdWxhdG9yRmxhdHRlblBhZ2VMaXN0TG9hZGluZ1N0YXRlKHgpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKGluaXRDb25maWc/OiBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZUluaXRDb25maWc8VCwgRD4pIHtcbiAgICB0aGlzLl9jb2xsZWN0aW9uTW9kZS5uZXh0KGluaXRDb25maWc/LmNvbGxlY3Rpb25Nb2RlID8/ICdxdWVyeScpO1xuXG4gICAgaWYgKGluaXRDb25maWc/LmNvbGxlY3Rpb25LZXlzKSB7XG4gICAgICB0aGlzLmNvbGxlY3Rpb25LZXlzID0gaW5pdENvbmZpZz8uY29sbGVjdGlvbktleXM7XG4gICAgfSBlbHNlIGlmIChpbml0Q29uZmlnPy5jb2xsZWN0aW9uUmVmcykge1xuICAgICAgdGhpcy5jb2xsZWN0aW9uUmVmcyA9IGluaXRDb25maWc/LmNvbGxlY3Rpb25SZWZzO1xuICAgIH1cblxuICAgIHRoaXMuX2NvbGxlY3Rpb24ubmV4dChpbml0Q29uZmlnPy5jb2xsZWN0aW9uKTtcbiAgICB0aGlzLl9tYXhQYWdlcy5uZXh0KGluaXRDb25maWc/Lm1heFBhZ2VzKTtcbiAgICB0aGlzLl9pdGVtc1BlclBhZ2UubmV4dChpbml0Q29uZmlnPy5pdGVtc1BlclBhZ2UpO1xuICAgIHRoaXMuX2NvbnN0cmFpbnRzLm5leHQoaW5pdENvbmZpZz8uY29uc3RyYWludHMpO1xuICB9XG5cbiAgaW5pdCgpOiB2b2lkIHtcbiAgICAvLyBXaGVuIG1heCBwYWdlcyBjaGFuZ2VzLCB1cGRhdGUgdGhlIGl0ZXJhdGlvbidzIG1heCBwYWdlIGxpbWl0LlxuICAgIHRoaXMuX21heFBhZ2VzU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuX21heFBhZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgZmlsdGVyTWF5YmUoKSwgLy8gZG8gbm90IHBhc3MgbnVsbC91bmRlZmluZWQgdmFsdWVzXG4gICAgICAgIHN3aXRjaE1hcCgobWF4UGFnZUxvYWRMaW1pdCkgPT5cbiAgICAgICAgICB0aGlzLmZpcmVzdG9yZUl0ZXJhdGlvbiQucGlwZShcbiAgICAgICAgICAgIHRhcCgoaXRlcmF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgIGl0ZXJhdGlvbi5zZXRNYXhQYWdlTG9hZExpbWl0KG1heFBhZ2VMb2FkTGltaXQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fY29sbGVjdGlvbk1vZGUuY29tcGxldGUoKTtcbiAgICB0aGlzLl9jb2xsZWN0aW9uUmVmcy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX21heFBhZ2VzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fY29sbGVjdGlvbi5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2NvbnN0cmFpbnRzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5faXRlbXNQZXJQYWdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fcmVzdGFydC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX21heFBhZ2VzU3ViLmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8vIE1BUks6IElucHV0c1xuICBnZXQgY29sbGVjdGlvbk1vZGUoKTogRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTW9kZSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb25Nb2RlLnZhbHVlO1xuICB9XG5cbiAgc2V0IGNvbGxlY3Rpb25Nb2RlKG1vZGU6IERieEZpcmViYXNlQ29sbGVjdGlvbk1vZGUpIHtcbiAgICBpZiAodGhpcy5jb2xsZWN0aW9uTW9kZSAhPSBtb2RlKSB7XG4gICAgICB0aGlzLl9jb2xsZWN0aW9uTW9kZS5uZXh0KG1vZGUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBjb2xsZWN0aW9uS2V5cygpOiBNYXliZTxGaXJlc3RvcmVNb2RlbEtleVtdPiB7XG4gICAgY29uc3QgcmVmcyA9IHRoaXMuY29sbGVjdGlvblJlZnM7XG4gICAgcmV0dXJuIHJlZnM/Lm1hcCgoeCkgPT4geC5wYXRoKTtcbiAgfVxuXG4gIHNldCBjb2xsZWN0aW9uS2V5cyhrZXlzOiBNYXliZTxGaXJlc3RvcmVNb2RlbEtleVtdPikge1xuICAgIGxldCByZWZzOiBNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPltdPiA9IHVuZGVmaW5lZDtcbiAgICBjb25zdCB7IGNvbGxlY3Rpb24gfSA9IHRoaXM7XG5cbiAgICBpZiAoa2V5cyAmJiBjb2xsZWN0aW9uKSB7XG4gICAgICBjb25zdCBhY2Nlc3NvciA9IGNvbGxlY3Rpb24uZG9jdW1lbnRBY2Nlc3NvcigpO1xuICAgICAgcmVmcyA9IGtleXMubWFwKCh4KSA9PiBhY2Nlc3Nvci5kb2N1bWVudFJlZkZvcktleSh4KSk7XG4gICAgfVxuXG4gICAgdGhpcy5jb2xsZWN0aW9uUmVmcyA9IHJlZnM7XG4gIH1cblxuICBnZXQgY29sbGVjdGlvblJlZnMoKTogTWF5YmU8RG9jdW1lbnRSZWZlcmVuY2U8VD5bXT4ge1xuICAgIHJldHVybiB0aGlzLl9jb2xsZWN0aW9uUmVmcy52YWx1ZTtcbiAgfVxuXG4gIHNldCBjb2xsZWN0aW9uUmVmcyhyZWZzOiBNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPltdPikge1xuICAgIHRoaXMuX2NvbGxlY3Rpb25SZWZzLm5leHQocmVmcyk7XG4gIH1cblxuICBnZXQgbWF4UGFnZXMoKTogTWF5YmU8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX21heFBhZ2VzLnZhbHVlO1xuICB9XG5cbiAgc2V0IG1heFBhZ2VzKG1heFBhZ2VzOiBNYXliZTxudW1iZXI+KSB7XG4gICAgaWYgKHRoaXMubWF4UGFnZXMgIT0gbWF4UGFnZXMpIHtcbiAgICAgIHRoaXMuX21heFBhZ2VzLm5leHQobWF4UGFnZXMpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpdGVtc1BlclBhZ2UoKTogTWF5YmU8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zUGVyUGFnZS52YWx1ZTtcbiAgfVxuXG4gIHNldCBpdGVtc1BlclBhZ2UoaXRlbXNQZXJQYWdlOiBNYXliZTxudW1iZXI+KSB7XG4gICAgaWYgKHRoaXMuaXRlbXNQZXJQYWdlICE9IGl0ZW1zUGVyUGFnZSkge1xuICAgICAgdGhpcy5faXRlbXNQZXJQYWdlLm5leHQoaXRlbXNQZXJQYWdlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgY29uc3RyYWludHMoKTogTWF5YmU8QXJyYXlPclZhbHVlPEZpcmVzdG9yZVF1ZXJ5Q29uc3RyYWludD4+IHtcbiAgICByZXR1cm4gdGhpcy5fY29uc3RyYWludHMudmFsdWU7XG4gIH1cblxuICBzZXQgY29uc3RyYWludHMoY29uc3RyYWludHM6IE1heWJlPEFycmF5T3JWYWx1ZTxGaXJlc3RvcmVRdWVyeUNvbnN0cmFpbnQ+Pikge1xuICAgIHRoaXMuX2NvbnN0cmFpbnRzLm5leHQoY29uc3RyYWludHMpO1xuICB9XG5cbiAgZ2V0IHdhaXRGb3JOb25OdWxsQ29uc3RyYWludHMoKTogTWF5YmU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl93YWl0Rm9yTm9uTnVsbENvbnN0cmFpbnRzLnZhbHVlO1xuICB9XG5cbiAgc2V0IHdhaXRGb3JOb25OdWxsQ29uc3RyYWludHMod2FpdEZvck5vbk51bGxDb25zdHJhaW50czogTWF5YmU8Ym9vbGVhbj4pIHtcbiAgICB0aGlzLl93YWl0Rm9yTm9uTnVsbENvbnN0cmFpbnRzLm5leHQod2FpdEZvck5vbk51bGxDb25zdHJhaW50cyk7XG4gIH1cblxuICBnZXQgY29sbGVjdGlvbigpOiBNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZTxULCBEPj4ge1xuICAgIHJldHVybiB0aGlzLl9jb2xsZWN0aW9uLnZhbHVlO1xuICB9XG5cbiAgc2V0IGNvbGxlY3Rpb24oY29sbGVjdGlvbjogTWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+KSB7XG4gICAgdGhpcy5fY29sbGVjdGlvbi5uZXh0KGNvbGxlY3Rpb24pO1xuICB9XG5cbiAgLy8gTUFSSzogRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVyXG4gIG5leHQoKSB7XG4gICAgdXNlRmlyc3QodGhpcy5maXJlc3RvcmVJdGVyYXRpb24kLCAoeCkgPT4geC5uZXh0KCkpO1xuICB9XG5cbiAgcmVzdGFydCgpIHtcbiAgICB0aGlzLl9yZXN0YXJ0Lm5leHQoKTtcbiAgfVxuXG4gIHNldENvbGxlY3Rpb25Nb2RlKG1vZGU6IERieEZpcmViYXNlQ29sbGVjdGlvbk1vZGUpIHtcbiAgICB0aGlzLmNvbGxlY3Rpb25Nb2RlID0gbW9kZTtcbiAgfVxuXG4gIC8vIFJlZmVyZW5jZXMgTW9kZVxuICBzZXRDb2xsZWN0aW9uS2V5cyhrZXlzOiBNYXliZTxGaXJlc3RvcmVNb2RlbEtleVtdPik6IHZvaWQge1xuICAgIHRoaXMuY29sbGVjdGlvbktleXMgPSBrZXlzO1xuICB9XG5cbiAgc2V0Q29sbGVjdGlvblJlZnMocmVmczogTWF5YmU8RG9jdW1lbnRSZWZlcmVuY2U8VD5bXT4pOiB2b2lkIHtcbiAgICB0aGlzLmNvbGxlY3Rpb25SZWZzID0gcmVmcztcbiAgfVxuXG4gIC8vIFF1ZXJ5IE1vZGVcbiAgc2V0TWF4UGFnZXMobWF4UGFnZXM6IE1heWJlPG51bWJlcj4pIHtcbiAgICB0aGlzLm1heFBhZ2VzID0gbWF4UGFnZXM7XG4gIH1cblxuICBzZXRJdGVtc1BlclBhZ2UoaXRlbXNQZXJQYWdlOiBNYXliZTxudW1iZXI+KSB7XG4gICAgdGhpcy5pdGVtc1BlclBhZ2UgPSBpdGVtc1BlclBhZ2U7XG4gIH1cblxuICBzZXRDb25zdHJhaW50cyhjb25zdHJhaW50czogTWF5YmU8QXJyYXlPclZhbHVlPEZpcmVzdG9yZVF1ZXJ5Q29uc3RyYWludD4+KSB7XG4gICAgdGhpcy5jb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzO1xuICB9XG5cbiAgc2V0V2FpdEZvck5vbk51bGxDb25zdHJhaW50cyh3YWl0Rm9yTm9uTnVsbENvbnN0cmFpbnRzOiBNYXliZTxib29sZWFuPikge1xuICAgIHRoaXMud2FpdEZvck5vbk51bGxDb25zdHJhaW50cyA9IHdhaXRGb3JOb25OdWxsQ29uc3RyYWludHM7XG4gIH1cblxuICBzZXRDb2xsZWN0aW9uKGZpcmVzdG9yZUNvbGxlY3Rpb246IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+Pikge1xuICAgIHRoaXMuY29sbGVjdGlvbiA9IGZpcmVzdG9yZUNvbGxlY3Rpb247XG4gIH1cblxuICBsb2FkUGFnZXNVbnRpbFJlc3VsdHNDb3VudChtYXhSZXN1bHRzTGltaXQ6IEdldHRlck9yVmFsdWU8bnVtYmVyPiwgY291bnRSZXN1bHRzRnVuY3Rpb24/OiBGaXJlYmFzZVF1ZXJ5SXRlbUFjY3VtdWxhdG9yTmV4dFBhZ2VVbnRpbFJlc3VsdHNDb3VudEZ1bmN0aW9uPFQ+IHwgdW5kZWZpbmVkKTogT2JzZXJ2YWJsZTxJdGVtQWNjdW11bGF0b3JOZXh0UGFnZVVudGlsUmVzdWx0c0NvdW50UmVzdWx0PiB7XG4gICAgY29uc3QgZGVmYXVsdEZuOiBJdGVtQWNjdW11bGF0b3JOZXh0UGFnZVVudGlsUmVzdWx0c0NvdW50RnVuY3Rpb248RG9jdW1lbnREYXRhV2l0aElkQW5kS2V5PFQ+W10+ID0gY291bnRBbGxJbk5lc3RlZEFycmF5O1xuICAgIHJldHVybiB0aGlzLmFjY3VtdWxhdG9yJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChhY2N1bXVsYXRvcikgPT5cbiAgICAgICAgaXRlbUFjY3VtdWxhdG9yTmV4dFBhZ2VVbnRpbFJlc3VsdHNDb3VudCh7XG4gICAgICAgICAgYWNjdW11bGF0b3IsXG4gICAgICAgICAgbWF4UmVzdWx0c0xpbWl0LFxuICAgICAgICAgIGNvdW50UmVzdWx0c0Z1bmN0aW9uOiBjb3VudFJlc3VsdHNGdW5jdGlvbiA/PyBkZWZhdWx0Rm5cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgbG9hZFRvUGFnZShwYWdlOiBQYWdlTnVtYmVyKTogT2JzZXJ2YWJsZTxQYWdlTnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuYWNjdW11bGF0b3IkLnBpcGUoc3dpdGNoTWFwKChhY2N1bXVsYXRvcikgPT4gaXRlcmF0b3JOZXh0UGFnZVVudGlsUGFnZShhY2N1bXVsYXRvci5pdGVtSXRlcmF0aW9uLCBwYWdlKSkpO1xuICB9XG5cbiAgbG9hZEFsbFJlc3VsdHMoKTogT2JzZXJ2YWJsZTxQYWdlTnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuYWNjdW11bGF0b3IkLnBpcGUoc3dpdGNoTWFwKChhY2N1bXVsYXRvcikgPT4gaXRlcmF0b3JOZXh0UGFnZVVudGlsTWF4UGFnZUxvYWRMaW1pdChhY2N1bXVsYXRvci5pdGVtSXRlcmF0aW9uKSkpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZTxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPj4oY29uZmlnOiBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZUluaXRDb25maWc8VCwgRD4pOiBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZTxULCBEPiB7XG4gIHJldHVybiBuZXcgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVySW5zdGFuY2U8VCwgRD4oY29uZmlnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckluc3RhbmNlV2l0aENvbGxlY3Rpb248VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4+KGNvbGxlY3Rpb246IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+Pik6IERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckluc3RhbmNlPFQsIEQ+IHtcbiAgcmV0dXJuIG5ldyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJJbnN0YW5jZTxULCBEPih7IGNvbGxlY3Rpb24gfSk7XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9sb2FkZXIvY29sbGVjdGlvbi5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRG9jdW1lbnREYXRhV2l0aElkQW5kS2V5LCB0eXBlIEZpcmViYXNlUXVlcnlJdGVtQWNjdW11bGF0b3IsIHR5cGUgRmlyZWJhc2VRdWVyeUl0ZW1BY2N1bXVsYXRvck5leHRQYWdlVW50aWxSZXN1bHRzQ291bnRGdW5jdGlvbiwgdHlwZSBGaXJlYmFzZVF1ZXJ5U25hcHNob3RBY2N1bXVsYXRvciwgdHlwZSBGaXJlc3RvcmVJdGVtUGFnZUl0ZXJhdGlvbkluc3RhbmNlLCB0eXBlIEZpcmVzdG9yZVF1ZXJ5Q29uc3RyYWludCwgdHlwZSBJdGVyYXRpb25RdWVyeURvY0NoYW5nZVdhdGNoZXIgfSBmcm9tICdAZGVyZWVrYi9maXJlYmFzZSc7XG5pbXBvcnQgeyB0eXBlIEl0ZW1BY2N1bXVsYXRvck5leHRQYWdlVW50aWxSZXN1bHRzQ291bnRSZXN1bHQsIHR5cGUgUGFnZUxpc3RMb2FkaW5nU3RhdGUgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IHR5cGUgTWF5YmUsIHR5cGUgQXJyYXlPclZhbHVlLCB0eXBlIFBhZ2VOdW1iZXIgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IHR5cGUgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckFjY2Vzc29yPFQgPSB1bmtub3duPiB7XG4gIHJlYWRvbmx5IGNvbnN0cmFpbnRzJDogT2JzZXJ2YWJsZTxNYXliZTxBcnJheU9yVmFsdWU8RmlyZXN0b3JlUXVlcnlDb25zdHJhaW50Pj4+O1xuICByZWFkb25seSBmaXJlc3RvcmVJdGVyYXRpb24kOiBPYnNlcnZhYmxlPEZpcmVzdG9yZUl0ZW1QYWdlSXRlcmF0aW9uSW5zdGFuY2U8VD4+O1xuICByZWFkb25seSBwYWdlTG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxQYWdlTGlzdExvYWRpbmdTdGF0ZTxEb2N1bWVudERhdGFXaXRoSWRBbmRLZXk8VD4+PjtcbiAgcmVhZG9ubHkgcXVlcnlDaGFuZ2VXYXRjaGVyJDogT2JzZXJ2YWJsZTxJdGVyYXRpb25RdWVyeURvY0NoYW5nZVdhdGNoZXI8VD4+O1xuXG4gIC8qKlxuICAgKiBSZXN0YXJ0cyB0aGUgbG9hZGVyIGFuZCByZWZyZXNoZXMgaXRlbXMgZnJvbSB0aGUgYmVnaW5uaW5nLlxuICAgKi9cbiAgcmVzdGFydCgpOiB2b2lkO1xufVxuXG4vKipcbiAqIEFic3RyYWN0IHR5cGUgdGhhdCBsb2FkcyBtb2RlbHMgZnJvbSBhIGNvbmZpZ3VyZWQgY29sbGVjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXI8VCA9IHVua25vd24+IGV4dGVuZHMgRGJ4RmlyZWJhc2VDb2xsZWN0aW9uTG9hZGVyQWNjZXNzb3I8VD4ge1xuICAvKipcbiAgICogTWF4aW11bSBudW1iZXIgb2YgcGFnZXMgdG8gbG9hZCBmcm9tIHRoZSBpbnRlcmF0aW9uLlxuICAgKlxuICAgKiBDaGFuZ2luZyB0aGlzIHVwZGF0ZXMgdGhlIGl0ZXJhdGlvbiwgYnV0IGRvZXMgbm90IHJlc2V0IGl0LlxuICAgKi9cbiAgbWF4UGFnZXM6IE1heWJlPG51bWJlcj47XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBpdGVtcyB0byBsb2FkIHBlciBwYWdlLlxuICAgKlxuICAgKiBDaGFuZ2luZyB0aGlzIHdpbGwgcmVzZXQgdGhlIGl0ZXJhdGlvbi5cbiAgICovXG4gIGl0ZW1zUGVyUGFnZTogTWF5YmU8bnVtYmVyPjtcblxuICAvKipcbiAgICogU2V0cyB0aGUgY29uc3RyYWludHMgb24gdGhlIG1vZGVsIGxvYWRlci5cbiAgICpcbiAgICogQHBhcmFtIGNvbnN0cmFpbnRzXG4gICAqL1xuICBzZXRDb25zdHJhaW50cyhjb25zdHJhaW50czogTWF5YmU8QXJyYXlPclZhbHVlPEZpcmVzdG9yZVF1ZXJ5Q29uc3RyYWludD4+KTogdm9pZDtcblxuICAvKipcbiAgICogTG9hZHMgbW9yZSBpdGVtcy5cbiAgICovXG4gIG5leHQoKTogdm9pZDtcblxuICAvLyBNQVJLOiBVdGlsaXR5IEZ1bmN0aW9uc1xuICAvKipcbiAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgbG9hZHMgdXAgdG8gdGhlIGdpdmVuIHBhZ2UgdGhlbiBlbWl0cyB0aGUgcGFnZSBudW1iZXIuXG4gICAqXG4gICAqIEBwYXJhbSBwYWdlIFBhZ2UgbnVtYmVyIHRvIGxvYWQgdG8uXG4gICAqL1xuICBsb2FkVG9QYWdlKHBhZ2U6IFBhZ2VOdW1iZXIpOiBPYnNlcnZhYmxlPFBhZ2VOdW1iZXI+O1xuXG4gIC8qKlxuICAgKiBMb2FkcyByZXN1bHRzIHVudGlsIGFsbCByZXN1bHRzIGhhdmUgYmVlbiBsb2FkZWQgb3IgdGhlIG1heCBwYWdlIGxpbWl0IGlzIHJlYWNoZWQuXG4gICAqL1xuICBsb2FkQWxsUmVzdWx0cygpOiBPYnNlcnZhYmxlPFBhZ2VOdW1iZXI+O1xufVxuXG4vLyBNQVJLOiBBY2N1bXVsYXRvclxuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJBY2Nlc3NvcldpdGhBY2N1bXVsYXRvcjxUID0gdW5rbm93bj4gZXh0ZW5kcyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXJBY2Nlc3NvcjxUPiB7XG4gIHJlYWRvbmx5IHNuYXBzaG90QWNjdW11bGF0b3IkOiBPYnNlcnZhYmxlPEZpcmViYXNlUXVlcnlTbmFwc2hvdEFjY3VtdWxhdG9yPFQ+PjtcbiAgcmVhZG9ubHkgYWNjdW11bGF0b3IkOiBPYnNlcnZhYmxlPEZpcmViYXNlUXVlcnlJdGVtQWNjdW11bGF0b3I8VD4+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlcldpdGhBY2N1bXVsYXRvcjxUID0gdW5rbm93bj4gZXh0ZW5kcyBEYnhGaXJlYmFzZUNvbGxlY3Rpb25Mb2FkZXI8VD4sIERieEZpcmViYXNlQ29sbGVjdGlvbkxvYWRlckFjY2Vzc29yV2l0aEFjY3VtdWxhdG9yPFQ+IHtcbiAgLyoqXG4gICAqIExvYWRzIHBhZ2VzIHVudGlsIHRoZSBudW1iZXIgb2YgcmVzdWx0cyBoYXMgYmVlbiByZWFjaGVkLCB0aGVuIGVtaXRzIHRoZSB0b3RhbCBudW1iZXIgb2YgcmVzdWx0cy5cbiAgICovXG4gIGxvYWRQYWdlc1VudGlsUmVzdWx0c0NvdW50KG1heFJlc3VsdHNDb3VudDogbnVtYmVyLCBjb3VudEZ1bmN0aW9uPzogRmlyZWJhc2VRdWVyeUl0ZW1BY2N1bXVsYXRvck5leHRQYWdlVW50aWxSZXN1bHRzQ291bnRGdW5jdGlvbjxUPik6IE9ic2VydmFibGU8SXRlbUFjY3VtdWxhdG9yTmV4dFBhZ2VVbnRpbFJlc3VsdHNDb3VudFJlc3VsdD47XG59XG4iXX0=
@@ -1,68 +0,0 @@
1
- import { useAsObservable, filterMaybe, SubscriptionObject, asObservable, pageLoadingStateFromObs } from '@dereekb/rxjs';
2
- import { BehaviorSubject, map, shareReplay, distinctUntilChanged, Subject, switchMap, startWith, exhaustMap } from 'rxjs';
3
- import { dataFromDocumentSnapshots, documentReferencesFromDocuments, firestoreModelIdsFromDocuments, firestoreModelKeysFromDocuments, getDataFromDocumentSnapshots, getDocumentSnapshots, latestSnapshotsFromDocuments, loadDocumentsForDocumentReferences, loadDocumentsForIds, loadDocumentsForKeys } from '@dereekb/firebase';
4
- import { asArray } from '@dereekb/util';
5
- /**
6
- * DbxLimitedFirebaseDocumentLoader implementation within an instance.
7
- */
8
- export class DbxLimitedFirebaseDocumentLoaderInstance {
9
- accessor;
10
- _documents = new BehaviorSubject(undefined);
11
- _restart = new Subject();
12
- _sub = new SubscriptionObject();
13
- documents$ = this._documents.pipe(filterMaybe(), distinctUntilChanged());
14
- keys$ = this.documents$.pipe(map(firestoreModelKeysFromDocuments));
15
- ids$ = this.documents$.pipe(map(firestoreModelIdsFromDocuments));
16
- refs$ = this.documents$.pipe(map(documentReferencesFromDocuments));
17
- snapshots$ = this.documents$.pipe(switchMap((docs) => this._restart.pipe(startWith(null), exhaustMap(() => getDocumentSnapshots(docs)))), shareReplay(1));
18
- data$ = this.snapshots$.pipe(map((snapshots) => getDataFromDocumentSnapshots(snapshots, true)), shareReplay(1));
19
- /**
20
- * Snapshot stream of the documents
21
- */
22
- snapshotsStream$ = this.documents$.pipe(switchMap((docs) => latestSnapshotsFromDocuments(docs)), shareReplay(1));
23
- /**
24
- * Data streamd of the documents.
25
- */
26
- dataStream$ = this.snapshotsStream$.pipe(dataFromDocumentSnapshots(), shareReplay(1));
27
- pageLoadingState$ = pageLoadingStateFromObs(this.data$, false);
28
- pageLoadingStateStream$ = pageLoadingStateFromObs(this.dataStream$, false);
29
- constructor(initConfig) {
30
- this.accessor = initConfig.accessor;
31
- }
32
- destroy() {
33
- this._documents.complete();
34
- this._restart.complete();
35
- this._sub.destroy();
36
- }
37
- restart() {
38
- this._restart.next();
39
- }
40
- setKeys(keys) {
41
- this.setDocuments(asObservable(keys).pipe(map((x) => loadDocumentsForKeys(this.accessor, asArray(x)))));
42
- }
43
- setRefs(refs) {
44
- this.setDocuments(asObservable(refs).pipe(map((x) => loadDocumentsForDocumentReferences(this.accessor, asArray(x)))));
45
- }
46
- setDocuments(docs) {
47
- this._sub.subscription = useAsObservable(docs, (x) => this._documents.next(asArray(x)));
48
- }
49
- }
50
- export function dbxLimitedFirebaseDocumentLoaderInstance(config) {
51
- return new DbxLimitedFirebaseDocumentLoaderInstance(config);
52
- }
53
- export function dbxLimitedFirebaseDocumentLoaderInstanceWithAccessor(accessor) {
54
- return new DbxLimitedFirebaseDocumentLoaderInstance({ accessor });
55
- }
56
- // MARK: Full DbxFirebaseDocumentLoaderInstance
57
- export class DbxFirebaseDocumentLoaderInstance extends DbxLimitedFirebaseDocumentLoaderInstance {
58
- setIds(ids) {
59
- this.setDocuments(asObservable(ids).pipe(map((x) => loadDocumentsForIds(this.accessor, asArray(x)))));
60
- }
61
- }
62
- export function dbxFirebaseDocumentLoaderInstance(config) {
63
- return new DbxFirebaseDocumentLoaderInstance(config);
64
- }
65
- export function dbxFirebaseDocumentLoaderInstanceWithAccessor(accessor) {
66
- return new DbxFirebaseDocumentLoaderInstance({ accessor });
67
- }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQubG9hZGVyLmluc3RhbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvbG9hZGVyL2RvY3VtZW50LmxvYWRlci5pbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTBCLGVBQWUsRUFBNkIsV0FBVyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSyxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBbUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzSSxPQUFPLEVBQ0wseUJBQXlCLEVBR3pCLCtCQUErQixFQUkvQiw4QkFBOEIsRUFFOUIsK0JBQStCLEVBQy9CLDRCQUE0QixFQUM1QixvQkFBb0IsRUFDcEIsNEJBQTRCLEVBRTVCLGtDQUFrQyxFQUNsQyxtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3JCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFxQixPQUFPLEVBQWdDLE1BQU0sZUFBZSxDQUFDO0FBT3pGOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHdDQUF3QztJQUMxQyxRQUFRLENBQUk7SUFFRixVQUFVLEdBQUcsSUFBSSxlQUFlLENBQWEsU0FBUyxDQUFDLENBQUM7SUFDeEQsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFDL0IsSUFBSSxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztJQUUxQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxH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LENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFGLENBQUM7Q0FDRjtBQUVELE1BQU0sVUFBVSx3Q0FBd0MsQ0FBc0osTUFBNEQ7SUFDeFEsT0FBTyxJQUFJLHdDQUF3QyxDQUFVLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFFRCxNQUFNLFVBQVUsb0RBQW9ELENBQXNKLFFBQVc7SUFDbk8sT0FBTyxJQUFJLHdDQUF3QyxDQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUM3RSxDQUFDO0FBRUQsK0NBQStDO0FBQy9DLE1BQU0sT0FBTyxpQ0FBbUwsU0FBUSx3Q0FBaUQ7SUFDdlAsTUFBTSxDQUFDLEdBQThEO1FBQ25FLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEcsQ0FBQztDQUNGO0FBRUQsTUFBTSxVQUFVLGlDQUFpQyxDQUF3SSxNQUE0RDtJQUNuUCxPQUFPLElBQUksaUNBQWlDLENBQVUsTUFBTSxDQUFDLENBQUM7QUFDaEUsQ0FBQztBQUVELE1BQU0sVUFBVSw2Q0FBNkMsQ0FBd0ksUUFBVztJQUM5TSxPQUFPLElBQUksaUNBQWlDLENBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBQ3RFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIE9ic2VydmFibGVPclZhbHVlLCB1c2VBc09ic2VydmFibGUsIHR5cGUgUGFnZUxpc3RMb2FkaW5nU3RhdGUsIGZpbHRlck1heWJlLCBTdWJzY3JpcHRpb25PYmplY3QsIGFzT2JzZXJ2YWJsZSwgcGFnZUxvYWRpbmdTdGF0ZUZyb21PYnMgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWFwLCBzaGFyZVJlcGxheSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIFN1YmplY3QsIHN3aXRjaE1hcCwgdHlwZSBPYnNlcnZhYmxlLCBzdGFydFdpdGgsIGV4aGF1c3RNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGRhdGFGcm9tRG9jdW1lbnRTbmFwc2hvdHMsXG4gIHR5cGUgRG9jdW1lbnREYXRhV2l0aElkQW5kS2V5LFxuICB0eXBlIERvY3VtZW50UmVmZXJlbmNlLFxuICBkb2N1bWVudFJlZmVyZW5jZXNGcm9tRG9jdW1lbnRzLFxuICB0eXBlIERvY3VtZW50U25hcHNob3QsXG4gIHR5cGUgRmlyZXN0b3JlRG9jdW1lbnQsXG4gIHR5cGUgRmlyZXN0b3JlRG9jdW1lbnRBY2Nlc3NvcixcbiAgZmlyZXN0b3JlTW9kZWxJZHNGcm9tRG9jdW1lbnRzLFxuICB0eXBlIEZpcmVzdG9yZU1vZGVsS2V5LFxuICBmaXJlc3RvcmVNb2RlbEtleXNGcm9tRG9jdW1lbnRzLFxuICBnZXREYXRhRnJvbURvY3VtZW50U25hcHNob3RzLFxuICBnZXREb2N1bWVudFNuYXBzaG90cyxcbiAgbGF0ZXN0U25hcHNob3RzRnJvbURvY3VtZW50cyxcbiAgdHlwZSBMaW1pdGVkRmlyZXN0b3JlRG9jdW1lbnRBY2Nlc3NvcixcbiAgbG9hZERvY3VtZW50c0ZvckRvY3VtZW50UmVmZXJlbmNlcyxcbiAgbG9hZERvY3VtZW50c0ZvcklkcyxcbiAgbG9hZERvY3VtZW50c0ZvcktleXNcbn0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuaW1wb3J0IHsgdHlwZSBBcnJheU9yVmFsdWUsIGFzQXJyYXksIHR5cGUgRGVzdHJveWFibGUsIHR5cGUgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IHR5cGUgRGJ4RmlyZWJhc2VEb2N1bWVudExvYWRlciwgdHlwZSBEYnhMaW1pdGVkRmlyZWJhc2VEb2N1bWVudExvYWRlciB9IGZyb20gJy4vZG9jdW1lbnQubG9hZGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZURvY3VtZW50TG9hZGVySW5zdGFuY2VJbml0Q29uZmlnPFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+LCBBIGV4dGVuZHMgTGltaXRlZEZpcmVzdG9yZURvY3VtZW50QWNjZXNzb3I8VCwgRD4gPSBMaW1pdGVkRmlyZXN0b3JlRG9jdW1lbnRBY2Nlc3NvcjxULCBEPj4ge1xuICByZWFkb25seSBhY2Nlc3NvcjogQTtcbn1cblxuLyoqXG4gKiBEYnhMaW1pdGVkRmlyZWJhc2VEb2N1bWVudExvYWRlciBpbXBsZW1lbnRhdGlvbiB3aXRoaW4gYW4gaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYnhMaW1pdGVkRmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlPFQgPSB1bmtub3duLCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPiwgQSBleHRlbmRzIExpbWl0ZWRGaXJlc3RvcmVEb2N1bWVudEFjY2Vzc29yPFQsIEQ+ID0gTGltaXRlZEZpcmVzdG9yZURvY3VtZW50QWNjZXNzb3I8VCwgRD4+IGltcGxlbWVudHMgRGJ4TGltaXRlZEZpcmViYXNlRG9jdW1lbnRMb2FkZXI8VD4sIERlc3Ryb3lhYmxlIHtcbiAgcmVhZG9ubHkgYWNjZXNzb3I6IEE7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kb2N1bWVudHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPERbXT4+KHVuZGVmaW5lZCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBfcmVzdGFydCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBfc3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHJlYWRvbmx5IGRvY3VtZW50cyQgPSB0aGlzLl9kb2N1bWVudHMucGlwZShmaWx0ZXJNYXliZSgpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgcmVhZG9ubHkga2V5cyQgPSB0aGlzLmRvY3VtZW50cyQucGlwZShtYXAoZmlyZXN0b3JlTW9kZWxLZXlzRnJvbURvY3VtZW50cykpO1xuICByZWFkb25seSBpZHMkID0gdGhpcy5kb2N1bWVudHMkLnBpcGUobWFwKGZpcmVzdG9yZU1vZGVsSWRzRnJvbURvY3VtZW50cykpO1xuICByZWFkb25seSByZWZzJCA9IHRoaXMuZG9jdW1lbnRzJC5waXBlKG1hcChkb2N1bWVudFJlZmVyZW5jZXNGcm9tRG9jdW1lbnRzKSk7XG5cbiAgcmVhZG9ubHkgc25hcHNob3RzJDogT2JzZXJ2YWJsZTxEb2N1bWVudFNuYXBzaG90PFQ+W10+ID0gdGhpcy5kb2N1bWVudHMkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChkb2NzKSA9PlxuICAgICAgdGhpcy5fcmVzdGFydC5waXBlKFxuICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgIGV4aGF1c3RNYXAoKCkgPT4gZ2V0RG9jdW1lbnRTbmFwc2hvdHM8RD4oZG9jcykpXG4gICAgICApXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRhdGEkOiBPYnNlcnZhYmxlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPltdPiA9IHRoaXMuc25hcHNob3RzJC5waXBlKFxuICAgIG1hcCgoc25hcHNob3RzKSA9PiBnZXREYXRhRnJvbURvY3VtZW50U25hcHNob3RzKHNuYXBzaG90cywgdHJ1ZSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIFNuYXBzaG90IHN0cmVhbSBvZiB0aGUgZG9jdW1lbnRzXG4gICAqL1xuICByZWFkb25seSBzbmFwc2hvdHNTdHJlYW0kOiBPYnNlcnZhYmxlPERvY3VtZW50U25hcHNob3Q8VD5bXT4gPSB0aGlzLmRvY3VtZW50cyQucGlwZShcbiAgICBzd2l0Y2hNYXAoKGRvY3MpID0+IGxhdGVzdFNuYXBzaG90c0Zyb21Eb2N1bWVudHMoZG9jcykpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIERhdGEgc3RyZWFtZCBvZiB0aGUgZG9jdW1lbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YVN0cmVhbSQ6IE9ic2VydmFibGU8RG9jdW1lbnREYXRhV2l0aElkQW5kS2V5PFQ+W10+ID0gdGhpcy5zbmFwc2hvdHNTdHJlYW0kLnBpcGUoZGF0YUZyb21Eb2N1bWVudFNuYXBzaG90cygpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgcGFnZUxvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8UGFnZUxpc3RMb2FkaW5nU3RhdGU8RG9jdW1lbnREYXRhV2l0aElkQW5kS2V5PFQ+Pj4gPSBwYWdlTG9hZGluZ1N0YXRlRnJvbU9icyh0aGlzLmRhdGEkLCBmYWxzZSk7XG4gIHJlYWRvbmx5IHBhZ2VMb2FkaW5nU3RhdGVTdHJlYW0kOiBPYnNlcnZhYmxlPFBhZ2VMaXN0TG9hZGluZ1N0YXRlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPj4+ID0gcGFnZUxvYWRpbmdTdGF0ZUZyb21PYnModGhpcy5kYXRhU3RyZWFtJCwgZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKGluaXRDb25maWc6IERieEZpcmViYXNlRG9jdW1lbnRMb2FkZXJJbnN0YW5jZUluaXRDb25maWc8VCwgRCwgQT4pIHtcbiAgICB0aGlzLmFjY2Vzc29yID0gaW5pdENvbmZpZy5hY2Nlc3NvcjtcbiAgfVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZG9jdW1lbnRzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fcmVzdGFydC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3N1Yi5kZXN0cm95KCk7XG4gIH1cblxuICByZXN0YXJ0KCkge1xuICAgIHRoaXMuX3Jlc3RhcnQubmV4dCgpO1xuICB9XG5cbiAgc2V0S2V5cyhrZXlzOiBNYXliZTxPYnNlcnZhYmxlT3JWYWx1ZTxBcnJheU9yVmFsdWU8RmlyZXN0b3JlTW9kZWxLZXk+Pj4pOiB2b2lkIHtcbiAgICB0aGlzLnNldERvY3VtZW50cyhhc09ic2VydmFibGUoa2V5cykucGlwZShtYXAoKHgpID0+IGxvYWREb2N1bWVudHNGb3JLZXlzKHRoaXMuYWNjZXNzb3IsIGFzQXJyYXkoeCkpKSkpO1xuICB9XG5cbiAgc2V0UmVmcyhyZWZzOiBNYXliZTxPYnNlcnZhYmxlT3JWYWx1ZTxBcnJheU9yVmFsdWU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+Pj4pOiB2b2lkIHtcbiAgICB0aGlzLnNldERvY3VtZW50cyhhc09ic2VydmFibGUocmVmcykucGlwZShtYXAoKHgpID0+IGxvYWREb2N1bWVudHNGb3JEb2N1bWVudFJlZmVyZW5jZXModGhpcy5hY2Nlc3NvciwgYXNBcnJheSh4KSkpKSk7XG4gIH1cblxuICBzZXREb2N1bWVudHMoZG9jczogTWF5YmU8T2JzZXJ2YWJsZU9yVmFsdWU8QXJyYXlPclZhbHVlPEQ+Pj4pOiB2b2lkIHtcbiAgICB0aGlzLl9zdWIuc3Vic2NyaXB0aW9uID0gdXNlQXNPYnNlcnZhYmxlKGRvY3MsICh4KSA9PiB0aGlzLl9kb2N1bWVudHMubmV4dChhc0FycmF5KHgpKSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRieExpbWl0ZWRGaXJlYmFzZURvY3VtZW50TG9hZGVySW5zdGFuY2U8VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4sIEEgZXh0ZW5kcyBMaW1pdGVkRmlyZXN0b3JlRG9jdW1lbnRBY2Nlc3NvcjxULCBEPiA9IExpbWl0ZWRGaXJlc3RvcmVEb2N1bWVudEFjY2Vzc29yPFQsIEQ+Pihjb25maWc6IERieEZpcmViYXNlRG9jdW1lbnRMb2FkZXJJbnN0YW5jZUluaXRDb25maWc8VCwgRCwgQT4pOiBEYnhMaW1pdGVkRmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlPFQsIEQsIEE+IHtcbiAgcmV0dXJuIG5ldyBEYnhMaW1pdGVkRmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlPFQsIEQsIEE+KGNvbmZpZyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYnhMaW1pdGVkRmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlV2l0aEFjY2Vzc29yPFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+LCBBIGV4dGVuZHMgTGltaXRlZEZpcmVzdG9yZURvY3VtZW50QWNjZXNzb3I8VCwgRD4gPSBMaW1pdGVkRmlyZXN0b3JlRG9jdW1lbnRBY2Nlc3NvcjxULCBEPj4oYWNjZXNzb3I6IEEpOiBEYnhMaW1pdGVkRmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlPFQsIEQsIEE+IHtcbiAgcmV0dXJuIG5ldyBEYnhMaW1pdGVkRmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlPFQsIEQsIEE+KHsgYWNjZXNzb3IgfSk7XG59XG5cbi8vIE1BUks6IEZ1bGwgRGJ4RmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlPFQgPSB1bmtub3duLCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPiwgQSBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50QWNjZXNzb3I8VCwgRD4gPSBGaXJlc3RvcmVEb2N1bWVudEFjY2Vzc29yPFQsIEQ+PiBleHRlbmRzIERieExpbWl0ZWRGaXJlYmFzZURvY3VtZW50TG9hZGVySW5zdGFuY2U8VCwgRCwgQT4gaW1wbGVtZW50cyBEYnhGaXJlYmFzZURvY3VtZW50TG9hZGVyPFQ+LCBEZXN0cm95YWJsZSB7XG4gIHNldElkcyhpZHM6IE1heWJlPE9ic2VydmFibGVPclZhbHVlPEFycmF5T3JWYWx1ZTxGaXJlc3RvcmVNb2RlbEtleT4+Pik6IHZvaWQge1xuICAgIHRoaXMuc2V0RG9jdW1lbnRzKGFzT2JzZXJ2YWJsZShpZHMpLnBpcGUobWFwKCh4KSA9PiBsb2FkRG9jdW1lbnRzRm9ySWRzKHRoaXMuYWNjZXNzb3IsIGFzQXJyYXkoeCkpKSkpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYnhGaXJlYmFzZURvY3VtZW50TG9hZGVySW5zdGFuY2U8VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4sIEEgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudEFjY2Vzc29yPFQsIEQ+ID0gRmlyZXN0b3JlRG9jdW1lbnRBY2Nlc3NvcjxULCBEPj4oY29uZmlnOiBEYnhGaXJlYmFzZURvY3VtZW50TG9hZGVySW5zdGFuY2VJbml0Q29uZmlnPFQsIEQsIEE+KTogRGJ4RmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlPFQsIEQsIEE+IHtcbiAgcmV0dXJuIG5ldyBEYnhGaXJlYmFzZURvY3VtZW50TG9hZGVySW5zdGFuY2U8VCwgRCwgQT4oY29uZmlnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRieEZpcmViYXNlRG9jdW1lbnRMb2FkZXJJbnN0YW5jZVdpdGhBY2Nlc3NvcjxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPiwgQSBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50QWNjZXNzb3I8VCwgRD4gPSBGaXJlc3RvcmVEb2N1bWVudEFjY2Vzc29yPFQsIEQ+PihhY2Nlc3NvcjogQSk6IERieEZpcmViYXNlRG9jdW1lbnRMb2FkZXJJbnN0YW5jZTxULCBELCBBPiB7XG4gIHJldHVybiBuZXcgRGJ4RmlyZWJhc2VEb2N1bWVudExvYWRlckluc3RhbmNlPFQsIEQsIEE+KHsgYWNjZXNzb3IgfSk7XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvbG9hZGVyL2RvY3VtZW50LmxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEb2N1bWVudERhdGFXaXRoSWRBbmRLZXksIHR5cGUgRmlyZXN0b3JlTW9kZWxLZXksIHR5cGUgRG9jdW1lbnRSZWZlcmVuY2UsIHR5cGUgRmlyZXN0b3JlRG9jdW1lbnQsIHR5cGUgRmlyZXN0b3JlTW9kZWxJZCwgdHlwZSBEb2N1bWVudFNuYXBzaG90IH0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuaW1wb3J0IHsgdHlwZSBPYnNlcnZhYmxlT3JWYWx1ZSwgdHlwZSBQYWdlTGlzdExvYWRpbmdTdGF0ZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgdHlwZSBNYXliZSwgdHlwZSBBcnJheU9yVmFsdWUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IHR5cGUgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEFic3RyYWN0IHR5cGUgdGhhdCBsb2FkcyBkb2N1bWVudCBzbmFwc2hvdHMgZnJvbSBrZXlzLCByZWZzLCBvciBkb2N1bWVudHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4TGltaXRlZEZpcmViYXNlRG9jdW1lbnRMb2FkZXI8VCA9IHVua25vd24sIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+PiB7XG4gIC8qKlxuICAgKiBLZXlzIG9mIHRoZSBkb2N1bWVudHNcbiAgICovXG4gIHJlYWRvbmx5IGtleXMkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsS2V5W10+O1xuXG4gIC8qKlxuICAgKiBSZWZzIG9mIHRoZSBkb2N1bWVudHNcbiAgICovXG4gIHJlYWRvbmx5IHJlZnMkOiBPYnNlcnZhYmxlPERvY3VtZW50UmVmZXJlbmNlPFQ+W10+O1xuXG4gIC8qKlxuICAgKiBJZHMgb2YgdGhlIGRvY3VtZW50c1xuICAgKi9cbiAgcmVhZG9ubHkgaWRzJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkW10+O1xuXG4gIC8qKlxuICAgKiBEb2N1bWVudHMgdG8gbG9hZC5cbiAgICovXG4gIHJlYWRvbmx5IGRvY3VtZW50cyQ6IE9ic2VydmFibGU8RFtdPjtcblxuICAvKipcbiAgICogU25hcHNob3RzIG9mIHRoZSBkb2N1bWVudHNcbiAgICovXG4gIHJlYWRvbmx5IHNuYXBzaG90cyQ6IE9ic2VydmFibGU8RG9jdW1lbnRTbmFwc2hvdDxUPltdPjtcblxuICAvKipcbiAgICogRGF0YSBmcm9tIHRoZSBkb2N1bWVudHMuXG4gICAqL1xuICByZWFkb25seSBkYXRhJDogT2JzZXJ2YWJsZTxEb2N1bWVudERhdGFXaXRoSWRBbmRLZXk8VD5bXT47XG5cbiAgLyoqXG4gICAqIFNuYXBzaG90IHN0cmVhbSBvZiB0aGUgZG9jdW1lbnRzXG4gICAqL1xuICByZWFkb25seSBzbmFwc2hvdHNTdHJlYW0kOiBPYnNlcnZhYmxlPERvY3VtZW50U25hcHNob3Q8VD5bXT47XG5cbiAgLyoqXG4gICAqIERhdGEgc3RyZWFtIG9mIHRoZSBkb2N1bWVudHMuXG4gICAqL1xuICByZWFkb25seSBkYXRhU3RyZWFtJDogT2JzZXJ2YWJsZTxEb2N1bWVudERhdGFXaXRoSWRBbmRLZXk8VD5bXT47XG5cbiAgLyoqXG4gICAqIExvYWRpbmcgc3RhdGUgZm9yIHRoZSBkb2N1bWVudCBkYXRhLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFnZUxvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8UGFnZUxpc3RMb2FkaW5nU3RhdGU8RG9jdW1lbnREYXRhV2l0aElkQW5kS2V5PFQ+Pj47XG5cbiAgLyoqXG4gICAqIExvYWRpbmcgc3RhdGUgZm9yIHRoZSBzdHJlYW1lZCBkb2N1bWVudCBkYXRhLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFnZUxvYWRpbmdTdGF0ZVN0cmVhbSQ6IE9ic2VydmFibGU8UGFnZUxpc3RMb2FkaW5nU3RhdGU8RG9jdW1lbnREYXRhV2l0aElkQW5kS2V5PFQ+Pj47XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGtleXMgb2YgdGhlIG1vZGVscyB0byBsb2FkLlxuICAgKlxuICAgKiBAcGFyYW0gY29uc3RyYWludHNcbiAgICovXG4gIHNldEtleXMoa2V5czogTWF5YmU8T2JzZXJ2YWJsZU9yVmFsdWU8QXJyYXlPclZhbHVlPEZpcmVzdG9yZU1vZGVsS2V5Pj4+KTogdm9pZDtcblxuICAvKipcbiAgICogU2V0cyB0aGUgZG9jdW1lbnQgcmVmZXJlbmNlcyB0byBsb2FkLlxuICAgKlxuICAgKiBAcGFyYW0gY29uc3RyYWludHNcbiAgICovXG4gIHNldFJlZnMocmVmczogTWF5YmU8T2JzZXJ2YWJsZU9yVmFsdWU8QXJyYXlPclZhbHVlPERvY3VtZW50UmVmZXJlbmNlPFQ+Pj4+KTogdm9pZDtcblxuICAvKipcbiAgICogU2V0cyB0aGUgZG9jdW1lbnRzIHRvIGxvYWQgZnJvbS5cbiAgICpcbiAgICogQHBhcmFtIGNvbnN0cmFpbnRzXG4gICAqL1xuICBzZXREb2N1bWVudHMoZG9jczogTWF5YmU8T2JzZXJ2YWJsZU9yVmFsdWU8QXJyYXlPclZhbHVlPEQ+Pj4pOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlRG9jdW1lbnRMb2FkZXI8VCA9IHVua25vd24sIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+PiBleHRlbmRzIERieExpbWl0ZWRGaXJlYmFzZURvY3VtZW50TG9hZGVyPFQsIEQ+IHtcbiAgLyoqXG4gICAqIFNldHMgdGhlIGlkcyBvZiB0aGUgbW9kZWxzIHRvIGxvYWQuXG4gICAqXG4gICAqIEBwYXJhbSBjb25zdHJhaW50c1xuICAgKi9cbiAgc2V0SWRzKGlkczogTWF5YmU8T2JzZXJ2YWJsZU9yVmFsdWU8QXJyYXlPclZhbHVlPEZpcmVzdG9yZU1vZGVsSWQ+Pj4pOiB2b2lkO1xufVxuIl19
@@ -1,7 +0,0 @@
1
- export * from './collection.change.watcher';
2
- export * from './collection.change.trigger';
3
- export * from './collection.loader.instance';
4
- export * from './collection.loader';
5
- export * from './document.loader.instance';
6
- export * from './document.loader';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9sb2FkZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbGxlY3Rpb24uY2hhbmdlLndhdGNoZXInO1xuZXhwb3J0ICogZnJvbSAnLi9jb2xsZWN0aW9uLmNoYW5nZS50cmlnZ2VyJztcbmV4cG9ydCAqIGZyb20gJy4vY29sbGVjdGlvbi5sb2FkZXIuaW5zdGFuY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb2xsZWN0aW9uLmxvYWRlcic7XG5leHBvcnQgKiBmcm9tICcuL2RvY3VtZW50LmxvYWRlci5pbnN0YW5jZSc7XG5leHBvcnQgKiBmcm9tICcuL2RvY3VtZW50LmxvYWRlcic7XG4iXX0=
@@ -1,17 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { DbxFirebaseModelHistoryModule } from './modules/model/history/model.history.module';
3
- import { DbxFirebaseModelTypesModule } from './modules/model/model.types.module';
4
- import { DbxFirebaseModelStoreModule } from './modules/store/model.store.module';
5
- import * as i0 from "@angular/core";
6
- export class DbxFirebaseModelModule {
7
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelModule, exports: [DbxFirebaseModelStoreModule, DbxFirebaseModelHistoryModule, DbxFirebaseModelTypesModule] });
9
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelModule, imports: [DbxFirebaseModelStoreModule, DbxFirebaseModelHistoryModule, DbxFirebaseModelTypesModule] });
10
- }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseModelModule, decorators: [{
12
- type: NgModule,
13
- args: [{
14
- exports: [DbxFirebaseModelStoreModule, DbxFirebaseModelHistoryModule, DbxFirebaseModelTypesModule]
15
- }]
16
- }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvbW9kZWwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDN0YsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDakYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBS2pGLE1BQU0sT0FBTyxzQkFBc0I7d0dBQXRCLHNCQUFzQjt5R0FBdEIsc0JBQXNCLFlBRnZCLDJCQUEyQixFQUFFLDZCQUE2QixFQUFFLDJCQUEyQjt5R0FFdEYsc0JBQXNCLFlBRnZCLDJCQUEyQixFQUFFLDZCQUE2QixFQUFFLDJCQUEyQjs7NEZBRXRGLHNCQUFzQjtrQkFIbEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSw2QkFBNkIsRUFBRSwyQkFBMkIsQ0FBQztpQkFDbkciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VNb2RlbEhpc3RvcnlNb2R1bGUgfSBmcm9tICcuL21vZHVsZXMvbW9kZWwvaGlzdG9yeS9tb2RlbC5oaXN0b3J5Lm1vZHVsZSc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZU1vZGVsVHlwZXNNb2R1bGUgfSBmcm9tICcuL21vZHVsZXMvbW9kZWwvbW9kZWwudHlwZXMubW9kdWxlJztcbmltcG9ydCB7IERieEZpcmViYXNlTW9kZWxTdG9yZU1vZHVsZSB9IGZyb20gJy4vbW9kdWxlcy9zdG9yZS9tb2RlbC5zdG9yZS5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBleHBvcnRzOiBbRGJ4RmlyZWJhc2VNb2RlbFN0b3JlTW9kdWxlLCBEYnhGaXJlYmFzZU1vZGVsSGlzdG9yeU1vZHVsZSwgRGJ4RmlyZWJhc2VNb2RlbFR5cGVzTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBEYnhGaXJlYmFzZU1vZGVsTW9kdWxlIHt9XG4iXX0=
@@ -1,3 +0,0 @@
1
- export * from './model';
2
- export * from './store';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlJztcbiJdfQ==
@@ -1,11 +0,0 @@
1
- export * from './model.entities.component';
2
- export * from './model.entities.popover.button.component';
3
- export * from './model.entities.popover.component';
4
- export * from './model.entities.providers';
5
- export * from './model.entities.source.directive';
6
- export * from './model.entities';
7
- export * from './model.entities.widget.entity.abstract.directive';
8
- export * from './model.entities.widget.entity.debug.component';
9
- export * from './model.entities.widget';
10
- export * from './model.entities.widget.service';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL21vZGVsL2VudGl0aWVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsaUNBQWlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21vZGVsLmVudGl0aWVzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVsLmVudGl0aWVzLnBvcG92ZXIuYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVsLmVudGl0aWVzLnBvcG92ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWwuZW50aXRpZXMucHJvdmlkZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWwuZW50aXRpZXMuc291cmNlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVsLmVudGl0aWVzJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWwuZW50aXRpZXMud2lkZ2V0LmVudGl0eS5hYnN0cmFjdC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbC5lbnRpdGllcy53aWRnZXQuZW50aXR5LmRlYnVnLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVsLmVudGl0aWVzLndpZGdldCc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVsLmVudGl0aWVzLndpZGdldC5zZXJ2aWNlJztcbiJdfQ==