@decaf-ts/core 0.9.0 → 0.9.1-9.tasks

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 (554) hide show
  1. package/README.md +1 -1
  2. package/dist/core.cjs +6705 -2
  3. package/dist/core.js +6932 -2
  4. package/lib/auth/constants.cjs +1 -1
  5. package/lib/auth/decorators.cjs +1 -1
  6. package/lib/auth/index.cjs +1 -1
  7. package/lib/esm/auth/constants.js +1 -1
  8. package/lib/esm/auth/decorators.js +1 -1
  9. package/lib/esm/auth/index.js +1 -1
  10. package/lib/esm/fs/FilesystemAdapter.d.ts +1 -0
  11. package/lib/esm/fs/FilesystemAdapter.js +3 -2
  12. package/lib/esm/fs/FsDispatch.js +1 -1
  13. package/lib/esm/fs/helpers.js +1 -1
  14. package/lib/esm/fs/index.js +1 -1
  15. package/lib/esm/fs/indexStore.js +1 -1
  16. package/lib/esm/fs/locks/FilesystemLock.js +1 -1
  17. package/lib/esm/fs/locks/FilesystemMultiLock.js +1 -1
  18. package/lib/esm/fs/types.d.ts +6 -0
  19. package/lib/esm/fs/types.js +1 -1
  20. package/lib/esm/identity/decorators.js +1 -1
  21. package/lib/esm/identity/index.js +1 -1
  22. package/lib/esm/index.d.ts +1 -1
  23. package/lib/esm/index.js +2 -2
  24. package/lib/esm/interfaces/ContextuallyLogged.js +1 -1
  25. package/lib/esm/interfaces/ErrorParser.js +1 -1
  26. package/lib/esm/interfaces/Executor.js +1 -1
  27. package/lib/esm/interfaces/Observable.js +1 -1
  28. package/lib/esm/interfaces/Observer.js +1 -1
  29. package/lib/esm/interfaces/Paginatable.js +1 -1
  30. package/lib/esm/interfaces/Queriable.js +1 -1
  31. package/lib/esm/interfaces/RawExecutor.js +1 -1
  32. package/lib/esm/interfaces/SequenceOptions.js +1 -1
  33. package/lib/esm/interfaces/index.js +1 -1
  34. package/lib/esm/migrations/Migration.js +1 -1
  35. package/lib/esm/migrations/MigrationService.js +1 -1
  36. package/lib/esm/migrations/MigrationTasks.js +1 -1
  37. package/lib/esm/migrations/constants.js +1 -1
  38. package/lib/esm/migrations/decorators.js +1 -1
  39. package/lib/esm/migrations/index.js +1 -1
  40. package/lib/esm/migrations/types.js +1 -1
  41. package/lib/esm/model/BaseModel.js +1 -1
  42. package/lib/esm/model/SequenceModel.js +1 -1
  43. package/lib/esm/model/construction.d.ts +1 -1
  44. package/lib/esm/model/construction.js +25 -3
  45. package/lib/esm/model/decorators.js +1 -1
  46. package/lib/esm/model/index.js +1 -1
  47. package/lib/esm/model/indexing.js +1 -1
  48. package/lib/esm/model/types.js +1 -1
  49. package/lib/esm/overrides/Metadata.js +1 -1
  50. package/lib/esm/overrides/Model.js +1 -1
  51. package/lib/esm/overrides/ModelBuilder.js +1 -1
  52. package/lib/esm/overrides/index.js +1 -1
  53. package/lib/esm/overrides/injectables.js +1 -1
  54. package/lib/esm/overrides/overrides.js +29 -1
  55. package/lib/esm/persistence/Adapter.js +14 -2
  56. package/lib/esm/persistence/Context.js +1 -1
  57. package/lib/esm/persistence/ContextLock.js +1 -1
  58. package/lib/esm/persistence/Dispatch.d.ts +7 -0
  59. package/lib/esm/persistence/Dispatch.js +20 -3
  60. package/lib/esm/persistence/ObserverHandler.js +1 -1
  61. package/lib/esm/persistence/Sequence.js +1 -1
  62. package/lib/esm/persistence/constants.js +2 -1
  63. package/lib/esm/persistence/decorators.js +1 -1
  64. package/lib/esm/persistence/errors.js +1 -1
  65. package/lib/esm/persistence/event-filters.js +1 -1
  66. package/lib/esm/persistence/generators.js +1 -1
  67. package/lib/esm/persistence/index.js +1 -1
  68. package/lib/esm/persistence/transactions.js +1 -1
  69. package/lib/esm/persistence/types.d.ts +1 -0
  70. package/lib/esm/persistence/types.js +1 -1
  71. package/lib/esm/query/Condition.js +1 -1
  72. package/lib/esm/query/MethodQueryBuilder.js +1 -1
  73. package/lib/esm/query/Paginator.js +1 -1
  74. package/lib/esm/query/Statement.js +1 -1
  75. package/lib/esm/query/constants.js +1 -1
  76. package/lib/esm/query/decorators.js +1 -1
  77. package/lib/esm/query/errors.js +1 -1
  78. package/lib/esm/query/index.js +1 -1
  79. package/lib/esm/query/options.js +1 -1
  80. package/lib/esm/query/selectors.js +1 -1
  81. package/lib/esm/query/types.js +1 -1
  82. package/lib/esm/query/utils.js +1 -1
  83. package/lib/esm/ram/RamAdapter.js +1 -1
  84. package/lib/esm/ram/RamPaginator.js +1 -1
  85. package/lib/esm/ram/RamStatement.js +1 -1
  86. package/lib/esm/ram/constants.js +1 -1
  87. package/lib/esm/ram/handlers.js +1 -1
  88. package/lib/esm/ram/index.js +1 -1
  89. package/lib/esm/ram/types.js +1 -1
  90. package/lib/esm/repository/Repository.d.ts +2 -2
  91. package/lib/esm/repository/Repository.js +19 -16
  92. package/lib/esm/repository/constants.js +1 -1
  93. package/lib/esm/repository/decorators.js +2 -2
  94. package/lib/esm/repository/errors.js +1 -1
  95. package/lib/esm/repository/index.js +1 -1
  96. package/lib/esm/repository/injectables.js +4 -2
  97. package/lib/esm/repository/types.js +1 -1
  98. package/lib/esm/repository/utils.js +1 -1
  99. package/lib/esm/services/ModelService.d.ts +4 -5
  100. package/lib/esm/services/ModelService.js +4 -2
  101. package/lib/esm/services/PersistenceService.js +1 -1
  102. package/lib/esm/services/index.js +1 -1
  103. package/lib/esm/services/services.js +1 -1
  104. package/lib/esm/tasks/CleanUpTask.js +1 -1
  105. package/lib/esm/tasks/TaskContext.d.ts +3 -1
  106. package/lib/esm/tasks/TaskContext.js +9 -2
  107. package/lib/esm/tasks/TaskEngine.d.ts +2 -0
  108. package/lib/esm/tasks/TaskEngine.js +84 -20
  109. package/lib/esm/tasks/TaskErrors.js +1 -1
  110. package/lib/esm/tasks/TaskEventBus.js +1 -1
  111. package/lib/esm/tasks/TaskEventService.d.ts +7 -0
  112. package/lib/esm/tasks/TaskEventService.js +16 -0
  113. package/lib/esm/tasks/TaskHandler.js +1 -1
  114. package/lib/esm/tasks/TaskHandlerRegistry.js +1 -1
  115. package/lib/esm/tasks/TaskService.d.ts +5 -1
  116. package/lib/esm/tasks/TaskService.js +11 -37
  117. package/lib/esm/tasks/TaskStateChangeError.js +1 -1
  118. package/lib/esm/tasks/TaskTracker.js +1 -1
  119. package/lib/esm/tasks/builder.js +1 -1
  120. package/lib/esm/tasks/constants.js +1 -1
  121. package/lib/esm/tasks/decorators.js +1 -1
  122. package/lib/esm/tasks/index.d.ts +1 -0
  123. package/lib/esm/tasks/index.js +2 -1
  124. package/lib/esm/tasks/logging.js +4 -7
  125. package/lib/esm/tasks/models/TaskBackoffModel.js +1 -1
  126. package/lib/esm/tasks/models/TaskErrorModel.js +1 -1
  127. package/lib/esm/tasks/models/TaskEventModel.js +1 -1
  128. package/lib/esm/tasks/models/TaskIOSerializer.js +1 -1
  129. package/lib/esm/tasks/models/TaskLogEntryModel.d.ts +1 -0
  130. package/lib/esm/tasks/models/TaskLogEntryModel.js +6 -2
  131. package/lib/esm/tasks/models/TaskModel.js +1 -1
  132. package/lib/esm/tasks/models/TaskStepResultModel.js +1 -1
  133. package/lib/esm/tasks/models/TaskStepSpecModel.d.ts +1 -0
  134. package/lib/esm/tasks/models/TaskStepSpecModel.js +7 -3
  135. package/lib/esm/tasks/models/index.js +1 -1
  136. package/lib/esm/tasks/types.d.ts +7 -3
  137. package/lib/esm/tasks/types.js +1 -1
  138. package/lib/esm/tasks/utils.js +1 -1
  139. package/lib/esm/utils/ContextualLoggedClass.js +1 -1
  140. package/lib/esm/utils/decorators.js +1 -1
  141. package/lib/esm/utils/errors.js +1 -1
  142. package/lib/esm/utils/index.js +1 -1
  143. package/lib/esm/utils/throttling.js +1 -1
  144. package/lib/esm/utils/types.js +1 -1
  145. package/lib/esm/utils/utils.d.ts +2 -1
  146. package/lib/esm/utils/utils.js +23 -6
  147. package/lib/esm/workers/TaskEngine.js +15 -4
  148. package/lib/esm/workers/WorkThreadEnvironment.js +1 -1
  149. package/lib/esm/workers/index.js +1 -1
  150. package/lib/esm/workers/messages.js +1 -1
  151. package/lib/esm/workers/types.js +1 -1
  152. package/lib/esm/workers/workerThread.js +36 -8
  153. package/lib/fs/FilesystemAdapter.cjs +3 -2
  154. package/lib/fs/FilesystemAdapter.d.ts +1 -0
  155. package/lib/fs/FsDispatch.cjs +1 -1
  156. package/lib/fs/helpers.cjs +1 -1
  157. package/lib/fs/index.cjs +1 -1
  158. package/lib/fs/indexStore.cjs +1 -1
  159. package/lib/fs/locks/FilesystemLock.cjs +1 -1
  160. package/lib/fs/locks/FilesystemMultiLock.cjs +1 -1
  161. package/lib/fs/types.cjs +1 -1
  162. package/lib/fs/types.d.ts +6 -0
  163. package/lib/identity/decorators.cjs +1 -1
  164. package/lib/identity/index.cjs +1 -1
  165. package/lib/index.cjs +2 -2
  166. package/lib/index.d.ts +1 -1
  167. package/lib/interfaces/ContextuallyLogged.cjs +1 -1
  168. package/lib/interfaces/ErrorParser.cjs +1 -1
  169. package/lib/interfaces/Executor.cjs +1 -1
  170. package/lib/interfaces/Observable.cjs +1 -1
  171. package/lib/interfaces/Observer.cjs +1 -1
  172. package/lib/interfaces/Paginatable.cjs +1 -1
  173. package/lib/interfaces/Queriable.cjs +1 -1
  174. package/lib/interfaces/RawExecutor.cjs +1 -1
  175. package/lib/interfaces/SequenceOptions.cjs +1 -1
  176. package/lib/interfaces/index.cjs +1 -1
  177. package/lib/migrations/Migration.cjs +1 -1
  178. package/lib/migrations/MigrationService.cjs +1 -1
  179. package/lib/migrations/MigrationTasks.cjs +1 -1
  180. package/lib/migrations/constants.cjs +1 -1
  181. package/lib/migrations/decorators.cjs +1 -1
  182. package/lib/migrations/index.cjs +1 -1
  183. package/lib/migrations/types.cjs +1 -1
  184. package/lib/model/BaseModel.cjs +1 -1
  185. package/lib/model/SequenceModel.cjs +1 -1
  186. package/lib/model/construction.cjs +25 -3
  187. package/lib/model/construction.d.ts +1 -1
  188. package/lib/model/decorators.cjs +1 -1
  189. package/lib/model/index.cjs +1 -1
  190. package/lib/model/indexing.cjs +1 -1
  191. package/lib/model/types.cjs +1 -1
  192. package/lib/overrides/Metadata.cjs +1 -1
  193. package/lib/overrides/Model.cjs +1 -1
  194. package/lib/overrides/ModelBuilder.cjs +1 -1
  195. package/lib/overrides/index.cjs +1 -1
  196. package/lib/overrides/injectables.cjs +1 -1
  197. package/lib/overrides/overrides.cjs +29 -1
  198. package/lib/persistence/Adapter.cjs +14 -2
  199. package/lib/persistence/Context.cjs +1 -1
  200. package/lib/persistence/ContextLock.cjs +1 -1
  201. package/lib/persistence/Dispatch.cjs +20 -3
  202. package/lib/persistence/Dispatch.d.ts +7 -0
  203. package/lib/persistence/ObserverHandler.cjs +1 -1
  204. package/lib/persistence/Sequence.cjs +1 -1
  205. package/lib/persistence/constants.cjs +2 -1
  206. package/lib/persistence/decorators.cjs +1 -1
  207. package/lib/persistence/errors.cjs +1 -1
  208. package/lib/persistence/event-filters.cjs +1 -1
  209. package/lib/persistence/generators.cjs +1 -1
  210. package/lib/persistence/index.cjs +1 -1
  211. package/lib/persistence/transactions.cjs +1 -1
  212. package/lib/persistence/types.cjs +1 -1
  213. package/lib/persistence/types.d.ts +1 -0
  214. package/lib/query/Condition.cjs +1 -1
  215. package/lib/query/MethodQueryBuilder.cjs +1 -1
  216. package/lib/query/Paginator.cjs +1 -1
  217. package/lib/query/Statement.cjs +1 -1
  218. package/lib/query/constants.cjs +1 -1
  219. package/lib/query/decorators.cjs +1 -1
  220. package/lib/query/errors.cjs +1 -1
  221. package/lib/query/index.cjs +1 -1
  222. package/lib/query/options.cjs +1 -1
  223. package/lib/query/selectors.cjs +1 -1
  224. package/lib/query/types.cjs +1 -1
  225. package/lib/query/utils.cjs +1 -1
  226. package/lib/ram/RamAdapter.cjs +1 -1
  227. package/lib/ram/RamPaginator.cjs +1 -1
  228. package/lib/ram/RamStatement.cjs +1 -1
  229. package/lib/ram/constants.cjs +1 -1
  230. package/lib/ram/handlers.cjs +1 -1
  231. package/lib/ram/index.cjs +1 -1
  232. package/lib/ram/types.cjs +1 -1
  233. package/lib/repository/Repository.cjs +19 -16
  234. package/lib/repository/Repository.d.ts +2 -2
  235. package/lib/repository/constants.cjs +1 -1
  236. package/lib/repository/decorators.cjs +2 -2
  237. package/lib/repository/errors.cjs +1 -1
  238. package/lib/repository/index.cjs +1 -1
  239. package/lib/repository/injectables.cjs +4 -2
  240. package/lib/repository/types.cjs +1 -1
  241. package/lib/repository/utils.cjs +1 -1
  242. package/lib/services/ModelService.cjs +4 -2
  243. package/lib/services/ModelService.d.ts +4 -5
  244. package/lib/services/PersistenceService.cjs +1 -1
  245. package/lib/services/index.cjs +1 -1
  246. package/lib/services/services.cjs +1 -1
  247. package/lib/tasks/CleanUpTask.cjs +1 -1
  248. package/lib/tasks/TaskContext.cjs +9 -2
  249. package/lib/tasks/TaskContext.d.ts +3 -1
  250. package/lib/tasks/TaskEngine.cjs +84 -20
  251. package/lib/tasks/TaskEngine.d.ts +2 -0
  252. package/lib/tasks/TaskErrors.cjs +1 -1
  253. package/lib/tasks/TaskEventBus.cjs +1 -1
  254. package/lib/tasks/TaskEventService.cjs +20 -0
  255. package/lib/tasks/TaskEventService.d.ts +7 -0
  256. package/lib/tasks/TaskHandler.cjs +1 -1
  257. package/lib/tasks/TaskHandlerRegistry.cjs +1 -1
  258. package/lib/tasks/TaskService.cjs +10 -36
  259. package/lib/tasks/TaskService.d.ts +5 -1
  260. package/lib/tasks/TaskStateChangeError.cjs +1 -1
  261. package/lib/tasks/TaskTracker.cjs +1 -1
  262. package/lib/tasks/builder.cjs +1 -1
  263. package/lib/tasks/constants.cjs +1 -1
  264. package/lib/tasks/decorators.cjs +1 -1
  265. package/lib/tasks/index.cjs +2 -1
  266. package/lib/tasks/index.d.ts +1 -0
  267. package/lib/tasks/logging.cjs +4 -7
  268. package/lib/tasks/models/TaskBackoffModel.cjs +1 -1
  269. package/lib/tasks/models/TaskErrorModel.cjs +1 -1
  270. package/lib/tasks/models/TaskEventModel.cjs +1 -1
  271. package/lib/tasks/models/TaskIOSerializer.cjs +1 -1
  272. package/lib/tasks/models/TaskLogEntryModel.cjs +5 -1
  273. package/lib/tasks/models/TaskLogEntryModel.d.ts +1 -0
  274. package/lib/tasks/models/TaskModel.cjs +1 -1
  275. package/lib/tasks/models/TaskStepResultModel.cjs +1 -1
  276. package/lib/tasks/models/TaskStepSpecModel.cjs +6 -2
  277. package/lib/tasks/models/TaskStepSpecModel.d.ts +1 -0
  278. package/lib/tasks/models/index.cjs +1 -1
  279. package/lib/tasks/types.cjs +1 -1
  280. package/lib/tasks/types.d.ts +7 -3
  281. package/lib/tasks/utils.cjs +1 -1
  282. package/lib/utils/ContextualLoggedClass.cjs +1 -1
  283. package/lib/utils/decorators.cjs +1 -1
  284. package/lib/utils/errors.cjs +1 -1
  285. package/lib/utils/index.cjs +1 -1
  286. package/lib/utils/throttling.cjs +1 -1
  287. package/lib/utils/types.cjs +1 -1
  288. package/lib/utils/utils.cjs +22 -5
  289. package/lib/utils/utils.d.ts +2 -1
  290. package/lib/workers/TaskEngine.cjs +15 -4
  291. package/lib/workers/WorkThreadEnvironment.cjs +1 -1
  292. package/lib/workers/index.cjs +1 -1
  293. package/lib/workers/messages.cjs +1 -1
  294. package/lib/workers/types.cjs +1 -1
  295. package/lib/workers/workerThread.cjs +35 -7
  296. package/package.json +1 -1
  297. package/dist/core.cjs.map +0 -1
  298. package/dist/core.js.map +0 -1
  299. package/lib/auth/constants.js.map +0 -1
  300. package/lib/auth/decorators.js.map +0 -1
  301. package/lib/auth/index.js.map +0 -1
  302. package/lib/esm/auth/constants.js.map +0 -1
  303. package/lib/esm/auth/decorators.js.map +0 -1
  304. package/lib/esm/auth/index.js.map +0 -1
  305. package/lib/esm/fs/FilesystemAdapter.js.map +0 -1
  306. package/lib/esm/fs/FsDispatch.js.map +0 -1
  307. package/lib/esm/fs/helpers.js.map +0 -1
  308. package/lib/esm/fs/index.js.map +0 -1
  309. package/lib/esm/fs/indexStore.js.map +0 -1
  310. package/lib/esm/fs/locks/FilesystemLock.js.map +0 -1
  311. package/lib/esm/fs/locks/FilesystemMultiLock.js.map +0 -1
  312. package/lib/esm/fs/types.js.map +0 -1
  313. package/lib/esm/identity/decorators.js.map +0 -1
  314. package/lib/esm/identity/index.js.map +0 -1
  315. package/lib/esm/index.js.map +0 -1
  316. package/lib/esm/interfaces/ContextuallyLogged.js.map +0 -1
  317. package/lib/esm/interfaces/ErrorParser.js.map +0 -1
  318. package/lib/esm/interfaces/Executor.js.map +0 -1
  319. package/lib/esm/interfaces/Observable.js.map +0 -1
  320. package/lib/esm/interfaces/Observer.js.map +0 -1
  321. package/lib/esm/interfaces/Paginatable.js.map +0 -1
  322. package/lib/esm/interfaces/Queriable.js.map +0 -1
  323. package/lib/esm/interfaces/RawExecutor.js.map +0 -1
  324. package/lib/esm/interfaces/SequenceOptions.js.map +0 -1
  325. package/lib/esm/interfaces/index.js.map +0 -1
  326. package/lib/esm/migrations/Migration.js.map +0 -1
  327. package/lib/esm/migrations/MigrationService.js.map +0 -1
  328. package/lib/esm/migrations/MigrationTasks.js.map +0 -1
  329. package/lib/esm/migrations/constants.js.map +0 -1
  330. package/lib/esm/migrations/decorators.js.map +0 -1
  331. package/lib/esm/migrations/index.js.map +0 -1
  332. package/lib/esm/migrations/types.js.map +0 -1
  333. package/lib/esm/model/BaseModel.js.map +0 -1
  334. package/lib/esm/model/SequenceModel.js.map +0 -1
  335. package/lib/esm/model/construction.js.map +0 -1
  336. package/lib/esm/model/decorators.js.map +0 -1
  337. package/lib/esm/model/index.js.map +0 -1
  338. package/lib/esm/model/indexing.js.map +0 -1
  339. package/lib/esm/model/types.js.map +0 -1
  340. package/lib/esm/overrides/Metadata.js.map +0 -1
  341. package/lib/esm/overrides/Model.js.map +0 -1
  342. package/lib/esm/overrides/ModelBuilder.js.map +0 -1
  343. package/lib/esm/overrides/index.js.map +0 -1
  344. package/lib/esm/overrides/injectables.js.map +0 -1
  345. package/lib/esm/overrides/overrides.js.map +0 -1
  346. package/lib/esm/persistence/Adapter.js.map +0 -1
  347. package/lib/esm/persistence/Context.js.map +0 -1
  348. package/lib/esm/persistence/ContextLock.js.map +0 -1
  349. package/lib/esm/persistence/Dispatch.js.map +0 -1
  350. package/lib/esm/persistence/ObserverHandler.js.map +0 -1
  351. package/lib/esm/persistence/Sequence.js.map +0 -1
  352. package/lib/esm/persistence/constants.js.map +0 -1
  353. package/lib/esm/persistence/decorators.js.map +0 -1
  354. package/lib/esm/persistence/errors.js.map +0 -1
  355. package/lib/esm/persistence/event-filters.js.map +0 -1
  356. package/lib/esm/persistence/generators.js.map +0 -1
  357. package/lib/esm/persistence/index.js.map +0 -1
  358. package/lib/esm/persistence/transactions.js.map +0 -1
  359. package/lib/esm/persistence/types.js.map +0 -1
  360. package/lib/esm/query/Condition.js.map +0 -1
  361. package/lib/esm/query/MethodQueryBuilder.js.map +0 -1
  362. package/lib/esm/query/Paginator.js.map +0 -1
  363. package/lib/esm/query/Statement.js.map +0 -1
  364. package/lib/esm/query/constants.js.map +0 -1
  365. package/lib/esm/query/decorators.js.map +0 -1
  366. package/lib/esm/query/errors.js.map +0 -1
  367. package/lib/esm/query/index.js.map +0 -1
  368. package/lib/esm/query/options.js.map +0 -1
  369. package/lib/esm/query/selectors.js.map +0 -1
  370. package/lib/esm/query/types.js.map +0 -1
  371. package/lib/esm/query/utils.js.map +0 -1
  372. package/lib/esm/ram/RamAdapter.js.map +0 -1
  373. package/lib/esm/ram/RamPaginator.js.map +0 -1
  374. package/lib/esm/ram/RamStatement.js.map +0 -1
  375. package/lib/esm/ram/constants.js.map +0 -1
  376. package/lib/esm/ram/handlers.js.map +0 -1
  377. package/lib/esm/ram/index.js.map +0 -1
  378. package/lib/esm/ram/types.js.map +0 -1
  379. package/lib/esm/repository/Repository.js.map +0 -1
  380. package/lib/esm/repository/constants.js.map +0 -1
  381. package/lib/esm/repository/decorators.js.map +0 -1
  382. package/lib/esm/repository/errors.js.map +0 -1
  383. package/lib/esm/repository/index.js.map +0 -1
  384. package/lib/esm/repository/injectables.js.map +0 -1
  385. package/lib/esm/repository/types.js.map +0 -1
  386. package/lib/esm/repository/utils.js.map +0 -1
  387. package/lib/esm/services/ModelService.js.map +0 -1
  388. package/lib/esm/services/PersistenceService.js.map +0 -1
  389. package/lib/esm/services/index.js.map +0 -1
  390. package/lib/esm/services/services.js.map +0 -1
  391. package/lib/esm/tasks/CleanUpTask.js.map +0 -1
  392. package/lib/esm/tasks/TaskContext.js.map +0 -1
  393. package/lib/esm/tasks/TaskEngine.js.map +0 -1
  394. package/lib/esm/tasks/TaskErrors.js.map +0 -1
  395. package/lib/esm/tasks/TaskEventBus.js.map +0 -1
  396. package/lib/esm/tasks/TaskHandler.js.map +0 -1
  397. package/lib/esm/tasks/TaskHandlerRegistry.js.map +0 -1
  398. package/lib/esm/tasks/TaskService.js.map +0 -1
  399. package/lib/esm/tasks/TaskStateChangeError.js.map +0 -1
  400. package/lib/esm/tasks/TaskTracker.js.map +0 -1
  401. package/lib/esm/tasks/builder.js.map +0 -1
  402. package/lib/esm/tasks/constants.js.map +0 -1
  403. package/lib/esm/tasks/decorators.js.map +0 -1
  404. package/lib/esm/tasks/index.js.map +0 -1
  405. package/lib/esm/tasks/logging.js.map +0 -1
  406. package/lib/esm/tasks/models/TaskBackoffModel.js.map +0 -1
  407. package/lib/esm/tasks/models/TaskErrorModel.js.map +0 -1
  408. package/lib/esm/tasks/models/TaskEventModel.js.map +0 -1
  409. package/lib/esm/tasks/models/TaskIOSerializer.js.map +0 -1
  410. package/lib/esm/tasks/models/TaskLogEntryModel.js.map +0 -1
  411. package/lib/esm/tasks/models/TaskModel.js.map +0 -1
  412. package/lib/esm/tasks/models/TaskStepResultModel.js.map +0 -1
  413. package/lib/esm/tasks/models/TaskStepSpecModel.js.map +0 -1
  414. package/lib/esm/tasks/models/index.js.map +0 -1
  415. package/lib/esm/tasks/types.js.map +0 -1
  416. package/lib/esm/tasks/utils.js.map +0 -1
  417. package/lib/esm/utils/ContextualLoggedClass.js.map +0 -1
  418. package/lib/esm/utils/decorators.js.map +0 -1
  419. package/lib/esm/utils/errors.js.map +0 -1
  420. package/lib/esm/utils/index.js.map +0 -1
  421. package/lib/esm/utils/throttling.js.map +0 -1
  422. package/lib/esm/utils/types.js.map +0 -1
  423. package/lib/esm/utils/utils.js.map +0 -1
  424. package/lib/esm/workers/TaskEngine.js.map +0 -1
  425. package/lib/esm/workers/WorkThreadEnvironment.js.map +0 -1
  426. package/lib/esm/workers/index.js.map +0 -1
  427. package/lib/esm/workers/messages.js.map +0 -1
  428. package/lib/esm/workers/types.js.map +0 -1
  429. package/lib/esm/workers/workerThread.js.map +0 -1
  430. package/lib/fs/FilesystemAdapter.js.map +0 -1
  431. package/lib/fs/FsDispatch.js.map +0 -1
  432. package/lib/fs/helpers.js.map +0 -1
  433. package/lib/fs/index.js.map +0 -1
  434. package/lib/fs/indexStore.js.map +0 -1
  435. package/lib/fs/locks/FilesystemLock.js.map +0 -1
  436. package/lib/fs/locks/FilesystemMultiLock.js.map +0 -1
  437. package/lib/fs/types.js.map +0 -1
  438. package/lib/identity/decorators.js.map +0 -1
  439. package/lib/identity/index.js.map +0 -1
  440. package/lib/index.js.map +0 -1
  441. package/lib/interfaces/ContextuallyLogged.js.map +0 -1
  442. package/lib/interfaces/ErrorParser.js.map +0 -1
  443. package/lib/interfaces/Executor.js.map +0 -1
  444. package/lib/interfaces/Observable.js.map +0 -1
  445. package/lib/interfaces/Observer.js.map +0 -1
  446. package/lib/interfaces/Paginatable.js.map +0 -1
  447. package/lib/interfaces/Queriable.js.map +0 -1
  448. package/lib/interfaces/RawExecutor.js.map +0 -1
  449. package/lib/interfaces/SequenceOptions.js.map +0 -1
  450. package/lib/interfaces/index.js.map +0 -1
  451. package/lib/migrations/Migration.js.map +0 -1
  452. package/lib/migrations/MigrationService.js.map +0 -1
  453. package/lib/migrations/MigrationTasks.js.map +0 -1
  454. package/lib/migrations/constants.js.map +0 -1
  455. package/lib/migrations/decorators.js.map +0 -1
  456. package/lib/migrations/index.js.map +0 -1
  457. package/lib/migrations/types.js.map +0 -1
  458. package/lib/model/BaseModel.js.map +0 -1
  459. package/lib/model/SequenceModel.js.map +0 -1
  460. package/lib/model/construction.js.map +0 -1
  461. package/lib/model/decorators.js.map +0 -1
  462. package/lib/model/index.js.map +0 -1
  463. package/lib/model/indexing.js.map +0 -1
  464. package/lib/model/types.js.map +0 -1
  465. package/lib/overrides/Metadata.js.map +0 -1
  466. package/lib/overrides/Model.js.map +0 -1
  467. package/lib/overrides/ModelBuilder.js.map +0 -1
  468. package/lib/overrides/index.js.map +0 -1
  469. package/lib/overrides/injectables.js.map +0 -1
  470. package/lib/overrides/overrides.js.map +0 -1
  471. package/lib/persistence/Adapter.js.map +0 -1
  472. package/lib/persistence/Context.js.map +0 -1
  473. package/lib/persistence/ContextLock.js.map +0 -1
  474. package/lib/persistence/Dispatch.js.map +0 -1
  475. package/lib/persistence/ObserverHandler.js.map +0 -1
  476. package/lib/persistence/Sequence.js.map +0 -1
  477. package/lib/persistence/constants.js.map +0 -1
  478. package/lib/persistence/decorators.js.map +0 -1
  479. package/lib/persistence/errors.js.map +0 -1
  480. package/lib/persistence/event-filters.js.map +0 -1
  481. package/lib/persistence/generators.js.map +0 -1
  482. package/lib/persistence/index.js.map +0 -1
  483. package/lib/persistence/transactions.js.map +0 -1
  484. package/lib/persistence/types.js.map +0 -1
  485. package/lib/query/Condition.js.map +0 -1
  486. package/lib/query/MethodQueryBuilder.js.map +0 -1
  487. package/lib/query/Paginator.js.map +0 -1
  488. package/lib/query/Statement.js.map +0 -1
  489. package/lib/query/constants.js.map +0 -1
  490. package/lib/query/decorators.js.map +0 -1
  491. package/lib/query/errors.js.map +0 -1
  492. package/lib/query/index.js.map +0 -1
  493. package/lib/query/options.js.map +0 -1
  494. package/lib/query/selectors.js.map +0 -1
  495. package/lib/query/types.js.map +0 -1
  496. package/lib/query/utils.js.map +0 -1
  497. package/lib/ram/RamAdapter.js.map +0 -1
  498. package/lib/ram/RamPaginator.js.map +0 -1
  499. package/lib/ram/RamStatement.js.map +0 -1
  500. package/lib/ram/constants.js.map +0 -1
  501. package/lib/ram/handlers.js.map +0 -1
  502. package/lib/ram/index.js.map +0 -1
  503. package/lib/ram/types.js.map +0 -1
  504. package/lib/repository/Repository.js.map +0 -1
  505. package/lib/repository/constants.js.map +0 -1
  506. package/lib/repository/decorators.js.map +0 -1
  507. package/lib/repository/errors.js.map +0 -1
  508. package/lib/repository/index.js.map +0 -1
  509. package/lib/repository/injectables.js.map +0 -1
  510. package/lib/repository/types.js.map +0 -1
  511. package/lib/repository/utils.js.map +0 -1
  512. package/lib/services/ModelService.js.map +0 -1
  513. package/lib/services/PersistenceService.js.map +0 -1
  514. package/lib/services/index.js.map +0 -1
  515. package/lib/services/services.js.map +0 -1
  516. package/lib/tasks/CleanUpTask.js.map +0 -1
  517. package/lib/tasks/TaskContext.js.map +0 -1
  518. package/lib/tasks/TaskEngine.js.map +0 -1
  519. package/lib/tasks/TaskErrors.js.map +0 -1
  520. package/lib/tasks/TaskEventBus.js.map +0 -1
  521. package/lib/tasks/TaskHandler.js.map +0 -1
  522. package/lib/tasks/TaskHandlerRegistry.js.map +0 -1
  523. package/lib/tasks/TaskService.js.map +0 -1
  524. package/lib/tasks/TaskStateChangeError.js.map +0 -1
  525. package/lib/tasks/TaskTracker.js.map +0 -1
  526. package/lib/tasks/builder.js.map +0 -1
  527. package/lib/tasks/constants.js.map +0 -1
  528. package/lib/tasks/decorators.js.map +0 -1
  529. package/lib/tasks/index.js.map +0 -1
  530. package/lib/tasks/logging.js.map +0 -1
  531. package/lib/tasks/models/TaskBackoffModel.js.map +0 -1
  532. package/lib/tasks/models/TaskErrorModel.js.map +0 -1
  533. package/lib/tasks/models/TaskEventModel.js.map +0 -1
  534. package/lib/tasks/models/TaskIOSerializer.js.map +0 -1
  535. package/lib/tasks/models/TaskLogEntryModel.js.map +0 -1
  536. package/lib/tasks/models/TaskModel.js.map +0 -1
  537. package/lib/tasks/models/TaskStepResultModel.js.map +0 -1
  538. package/lib/tasks/models/TaskStepSpecModel.js.map +0 -1
  539. package/lib/tasks/models/index.js.map +0 -1
  540. package/lib/tasks/types.js.map +0 -1
  541. package/lib/tasks/utils.js.map +0 -1
  542. package/lib/utils/ContextualLoggedClass.js.map +0 -1
  543. package/lib/utils/decorators.js.map +0 -1
  544. package/lib/utils/errors.js.map +0 -1
  545. package/lib/utils/index.js.map +0 -1
  546. package/lib/utils/throttling.js.map +0 -1
  547. package/lib/utils/types.js.map +0 -1
  548. package/lib/utils/utils.js.map +0 -1
  549. package/lib/workers/TaskEngine.js.map +0 -1
  550. package/lib/workers/WorkThreadEnvironment.js.map +0 -1
  551. package/lib/workers/index.js.map +0 -1
  552. package/lib/workers/messages.js.map +0 -1
  553. package/lib/workers/types.js.map +0 -1
  554. package/lib/workers/workerThread.js.map +0 -1
@@ -138,4 +138,4 @@ export class ObserverHandler {
138
138
  });
139
139
  }
140
140
  }
141
- //# sourceMappingURL=ObserverHandler.js.map
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2JzZXJ2ZXJIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BlcnNpc3RlbmNlL09ic2VydmVySGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBRUwsYUFBYSxHQUVkLE1BQU0seUJBQXlCLENBQUM7QUFHakMsT0FBTyxFQUVMLHFCQUFxQixHQUN0Qiw0Q0FBdUM7QUFHeEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Qkc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUE1QjtRQUdFOzs7V0FHRztRQUNnQixjQUFTLEdBR3RCLEVBQUUsQ0FBQztJQXFIWCxDQUFDO0lBbkhDOzs7O09BSUc7SUFDSCxLQUFLO1FBQ0gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsT0FBTyxDQUFDLFFBQWtCLEVBQUUsTUFBdUI7UUFDakQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEUsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQUUsTUFBTSxJQUFJLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUM1RCxPQUFPLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsU0FBUyxDQUFDLFFBQWtCO1FBQzFCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RFLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQztZQUFFLE1BQU0sSUFBSSxhQUFhLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0EwQ0c7SUFDSCxLQUFLLENBQUMsZUFBZSxDQUNuQixLQUE4QixFQUM5QixLQUFxRCxFQUNyRCxFQUFZLEVBQ1osR0FBRyxJQUF5QjtRQUU1QixNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLHFCQUFxQixDQUFDLE1BQU0sQ0FDbkQsSUFBSSxDQUFDLGVBQWUsRUFDcEIsU0FBUyxFQUNULEtBQUssRUFDTCxHQUFHLElBQUksQ0FDUixDQUFDO1FBQ0YsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUN0QyxJQUFJLENBQUMsU0FBUzthQUNYLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ1osTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNyQixJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPLElBQUksQ0FBQztZQUN6QixJQUFJLENBQUM7Z0JBQ0gsT0FBTyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztZQUM5QyxDQUFDO1lBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztnQkFDcEIsR0FBRyxDQUFDLEtBQUssQ0FDUCw2QkFBNkIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FDM0QsQ0FBQztnQkFDRixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7UUFDSCxDQUFDLENBQUM7YUFDRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNULENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQUNGLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDNUIsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLFVBQVU7Z0JBQzlCLEdBQUcsQ0FBQyxLQUFLLENBQ1AsK0JBQStCLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUNoRixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZlciB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XG5pbXBvcnQgeyBFdmVudElkcywgT2JzZXJ2ZXJGaWx0ZXIsIFBlcnNpc3RlbmNlT2JzZXJ2YWJsZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQge1xuICBCdWxrQ3J1ZE9wZXJhdGlvbktleXMsXG4gIEludGVybmFsRXJyb3IsXG4gIE9wZXJhdGlvbktleXMsXG59IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHtcbiAgQ29udGV4dHVhbEFyZ3MsXG4gIENvbnRleHR1YWxMb2dnZWRDbGFzcyxcbn0gZnJvbSBcIi4uL3V0aWxzL0NvbnRleHR1YWxMb2dnZWRDbGFzc1wiO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCIuL0NvbnRleHRcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWFuYWdlcyBhIGNvbGxlY3Rpb24gb2Ygb2JzZXJ2ZXJzIGZvciBkYXRhYmFzZSBldmVudHNcbiAqIEBzdW1tYXJ5IFRoZSBPYnNlcnZlckhhbmRsZXIgY2xhc3MgaW1wbGVtZW50cyB0aGUgT2JzZXJ2YWJsZSBpbnRlcmZhY2UgYW5kIHByb3ZpZGVzIGEgY2VudHJhbGl6ZWRcbiAqIHdheSB0byBtYW5hZ2UgbXVsdGlwbGUgb2JzZXJ2ZXJzLiBJdCBhbGxvd3MgcmVnaXN0ZXJpbmcgb2JzZXJ2ZXJzIHdpdGggb3B0aW9uYWwgZmlsdGVycyB0byBjb250cm9sXG4gKiB3aGljaCBldmVudHMgdGhleSByZWNlaXZlIG5vdGlmaWNhdGlvbnMgZm9yLCBhbmQgaGFuZGxlcyB0aGUgcHJvY2VzcyBvZiBub3RpZnlpbmcgYWxsIHJlbGV2YW50XG4gKiBvYnNlcnZlcnMgd2hlbiBkYXRhYmFzZSBldmVudHMgb2NjdXIuXG4gKiBAY2xhc3MgT2JzZXJ2ZXJIYW5kbGVyXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gQ3JlYXRlIGFuIG9ic2VydmVyIGhhbmRsZXJcbiAqIGNvbnN0IGhhbmRsZXIgPSBuZXcgT2JzZXJ2ZXJIYW5kbGVyKCk7XG4gKlxuICogLy8gUmVnaXN0ZXIgYW4gb2JzZXJ2ZXJcbiAqIGNvbnN0IG15T2JzZXJ2ZXIgPSB7XG4gKiAgIHJlZnJlc2g6IGFzeW5jICh0YWJsZSwgZXZlbnQsIGlkKSA9PiB7XG4gKiAgICAgY29uc29sZS5sb2coYENoYW5nZSBpbiAke3RhYmxlfTogJHtldmVudH0gZm9yIElEICR7aWR9YCk7XG4gKiAgIH1cbiAqIH07XG4gKlxuICogLy8gQWRkIG9ic2VydmVyIHdpdGggYSBmaWx0ZXIgZm9yIG9ubHkgdXNlciB0YWJsZSBldmVudHNcbiAqIGhhbmRsZXIub2JzZXJ2ZShteU9ic2VydmVyLCAodGFibGUsIGV2ZW50LCBpZCkgPT4gdGFibGUgPT09ICd1c2VycycpO1xuICpcbiAqIC8vIE5vdGlmeSBvYnNlcnZlcnMgYWJvdXQgYW4gZXZlbnRcbiAqIGF3YWl0IGhhbmRsZXIudXBkYXRlT2JzZXJ2ZXJzKGxvZ2dlciwgJ3VzZXJzJywgJ0NSRUFURScsIDEyMyk7XG4gKlxuICogLy8gUmVtb3ZlIGFuIG9ic2VydmVyIHdoZW4gbm8gbG9uZ2VyIG5lZWRlZFxuICogaGFuZGxlci51bk9ic2VydmUobXlPYnNlcnZlcik7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIE9ic2VydmVySGFuZGxlcjxDIGV4dGVuZHMgQ29udGV4dDxhbnk+ID0gQ29udGV4dD5cbiAgaW1wbGVtZW50cyBQZXJzaXN0ZW5jZU9ic2VydmFibGU8Qz5cbntcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb2xsZWN0aW9uIG9mIHJlZ2lzdGVyZWQgb2JzZXJ2ZXJzXG4gICAqIEBzdW1tYXJ5IEFycmF5IG9mIG9ic2VydmVyIG9iamVjdHMgYWxvbmcgd2l0aCB0aGVpciBvcHRpb25hbCBmaWx0ZXJzXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb2JzZXJ2ZXJzOiB7XG4gICAgb2JzZXJ2ZXI6IE9ic2VydmVyO1xuICAgIGZpbHRlcj86IE9ic2VydmVyRmlsdGVyO1xuICB9W10gPSBbXTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdldHMgdGhlIG51bWJlciBvZiByZWdpc3RlcmVkIG9ic2VydmVyc1xuICAgKiBAc3VtbWFyeSBSZXR1cm5zIHRoZSBjb3VudCBvZiBvYnNlcnZlcnMgY3VycmVudGx5IHJlZ2lzdGVyZWQgd2l0aCB0aGlzIGhhbmRsZXJcbiAgICogQHJldHVybiB7bnVtYmVyfSBUaGUgbnVtYmVyIG9mIHJlZ2lzdGVyZWQgb2JzZXJ2ZXJzXG4gICAqL1xuICBjb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5vYnNlcnZlcnMubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZWdpc3RlcnMgYSBuZXcgb2JzZXJ2ZXJcbiAgICogQHN1bW1hcnkgQWRkcyBhbiBvYnNlcnZlciB0byB0aGUgY29sbGVjdGlvbiB3aXRoIGFuIG9wdGlvbmFsIGZpbHRlciBmdW5jdGlvblxuICAgKiBAcGFyYW0ge09ic2VydmVyfSBvYnNlcnZlciAtIFRoZSBvYnNlcnZlciB0byByZWdpc3RlclxuICAgKiBAcGFyYW0ge09ic2VydmVyRmlsdGVyfSBbZmlsdGVyXSAtIE9wdGlvbmFsIGZpbHRlciBmdW5jdGlvbiB0byBkZXRlcm1pbmUgd2hpY2ggZXZlbnRzIHRoZSBvYnNlcnZlciByZWNlaXZlc1xuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgb2JzZXJ2ZShvYnNlcnZlcjogT2JzZXJ2ZXIsIGZpbHRlcj86IE9ic2VydmVyRmlsdGVyKTogKCkgPT4gdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLm9ic2VydmVycy5tYXAoKG8pID0+IG8ub2JzZXJ2ZXIpLmluZGV4T2Yob2JzZXJ2ZXIpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiT2JzZXJ2ZXIgYWxyZWFkeSByZWdpc3RlcmVkXCIpO1xuICAgIHRoaXMub2JzZXJ2ZXJzLnB1c2goeyBvYnNlcnZlcjogb2JzZXJ2ZXIsIGZpbHRlcjogZmlsdGVyIH0pO1xuICAgIHJldHVybiAoKSA9PiB0aGlzLnVuT2JzZXJ2ZShvYnNlcnZlcik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFVucmVnaXN0ZXJzIGFuIG9ic2VydmVyXG4gICAqIEBzdW1tYXJ5IFJlbW92ZXMgYW4gb2JzZXJ2ZXIgZnJvbSB0aGUgY29sbGVjdGlvblxuICAgKiBAcGFyYW0ge09ic2VydmVyfSBvYnNlcnZlciAtIFRoZSBvYnNlcnZlciB0byB1bnJlZ2lzdGVyXG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqL1xuICB1bk9ic2VydmUob2JzZXJ2ZXI6IE9ic2VydmVyKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLm9ic2VydmVycy5tYXAoKG8pID0+IG8ub2JzZXJ2ZXIpLmluZGV4T2Yob2JzZXJ2ZXIpO1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiRmFpbGVkIHRvIGZpbmQgT2JzZXJ2ZXJcIik7XG4gICAgdGhpcy5vYnNlcnZlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTm90aWZpZXMgYWxsIHJlbGV2YW50IG9ic2VydmVycyBhYm91dCBhIGRhdGFiYXNlIGV2ZW50XG4gICAqIEBzdW1tYXJ5IEZpbHRlcnMgb2JzZXJ2ZXJzIGJhc2VkIG9uIHRoZWlyIGZpbHRlciBmdW5jdGlvbnMgYW5kIGNhbGxzIHJlZnJlc2ggb24gZWFjaCBtYXRjaGluZyBvYnNlcnZlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGUgLSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgd2hlcmUgdGhlIGV2ZW50IG9jY3VycmVkXG4gICAqIEBwYXJhbSB7T3BlcmF0aW9uS2V5c3xCdWxrQ3J1ZE9wZXJhdGlvbktleXN8c3RyaW5nfSBldmVudCAtIFRoZSB0eXBlIG9mIG9wZXJhdGlvbiB0aGF0IG9jY3VycmVkXG4gICAqIEBwYXJhbSB7RXZlbnRJZHN9IGlkIC0gVGhlIGlkZW50aWZpZXIocykgb2YgdGhlIGFmZmVjdGVkIHJlY29yZChzKVxuICAgKiBAcGFyYW0gey4uLmFueVtdfSBhcmdzIC0gQWRkaXRpb25hbCBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgb2JzZXJ2ZXJzXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gYWxsIG9ic2VydmVycyBoYXZlIGJlZW4gbm90aWZpZWRcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQ2xpZW50XG4gICAqICAgcGFydGljaXBhbnQgT2JzZXJ2ZXJIYW5kbGVyXG4gICAqICAgcGFydGljaXBhbnQgT2JzZXJ2ZXJcbiAgICpcbiAgICogICBDbGllbnQtPj5PYnNlcnZlckhhbmRsZXI6IHVwZGF0ZU9ic2VydmVycyhsb2csIHRhYmxlLCBldmVudCwgaWQsIC4uLmFyZ3MpXG4gICAqXG4gICAqICAgT2JzZXJ2ZXJIYW5kbGVyLT4+T2JzZXJ2ZXJIYW5kbGVyOiBGaWx0ZXIgb2JzZXJ2ZXJzXG4gICAqXG4gICAqICAgbG9vcCBGb3IgZWFjaCBvYnNlcnZlciB3aXRoIG1hdGNoaW5nIGZpbHRlclxuICAgKiAgICAgYWx0IE9ic2VydmVyIGhhcyBmaWx0ZXJcbiAgICogICAgICAgT2JzZXJ2ZXJIYW5kbGVyLT4+T2JzZXJ2ZXI6IEFwcGx5IGZpbHRlcih0YWJsZSwgZXZlbnQsIGlkKVxuICAgKiAgICAgICBhbHQgRmlsdGVyIHRocm93cyBlcnJvclxuICAgKiAgICAgICAgIE9ic2VydmVySGFuZGxlci0+PkxvZ2dlcjogTG9nIGVycm9yXG4gICAqICAgICAgICAgT2JzZXJ2ZXJIYW5kbGVyLS0+Pk9ic2VydmVySGFuZGxlcjogU2tpcCBvYnNlcnZlclxuICAgKiAgICAgICBlbHNlIEZpbHRlciByZXR1cm5zIHRydWVcbiAgICogICAgICAgICBPYnNlcnZlckhhbmRsZXItPj5PYnNlcnZlcjogcmVmcmVzaCh0YWJsZSwgZXZlbnQsIGlkLCAuLi5hcmdzKVxuICAgKiAgICAgICBlbHNlIEZpbHRlciByZXR1cm5zIGZhbHNlXG4gICAqICAgICAgICAgT2JzZXJ2ZXJIYW5kbGVyLS0+Pk9ic2VydmVySGFuZGxlcjogU2tpcCBvYnNlcnZlclxuICAgKiAgICAgICBlbmRcbiAgICogICAgIGVsc2UgTm8gZmlsdGVyXG4gICAqICAgICAgIE9ic2VydmVySGFuZGxlci0+Pk9ic2VydmVyOiByZWZyZXNoKHRhYmxlLCBldmVudCwgaWQsIC4uLmFyZ3MpXG4gICAqICAgICBlbmRcbiAgICogICBlbmRcbiAgICpcbiAgICogICBPYnNlcnZlckhhbmRsZXItPj5PYnNlcnZlckhhbmRsZXI6IFByb2Nlc3MgcmVzdWx0c1xuICAgKiAgIGxvb3AgRm9yIGVhY2ggcmVzdWx0XG4gICAqICAgICBhbHQgUmVzdWx0IGlzIHJlamVjdGVkXG4gICAqICAgICAgIE9ic2VydmVySGFuZGxlci0+PkxvZ2dlcjogTG9nIGVycm9yXG4gICAqICAgICBlbmRcbiAgICogICBlbmRcbiAgICpcbiAgICogICBPYnNlcnZlckhhbmRsZXItLT4+Q2xpZW50OiBSZXR1cm5cbiAgICovXG4gIGFzeW5jIHVwZGF0ZU9ic2VydmVyczxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIG1vZGVsOiBDb25zdHJ1Y3RvcjxNPiB8IHN0cmluZyxcbiAgICBldmVudDogT3BlcmF0aW9uS2V5cyB8IEJ1bGtDcnVkT3BlcmF0aW9uS2V5cyB8IHN0cmluZyxcbiAgICBpZDogRXZlbnRJZHMsXG4gICAgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8YW55PlxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGxvZywgY3R4QXJncyB9ID0gQ29udGV4dHVhbExvZ2dlZENsYXNzLmxvZ0N0eDxDb250ZXh0PihcbiAgICAgIHRoaXMudXBkYXRlT2JzZXJ2ZXJzLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgZmFsc2UsXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgdGhpcy5vYnNlcnZlcnNcbiAgICAgICAgLmZpbHRlcigobykgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgZmlsdGVyIH0gPSBvO1xuICAgICAgICAgIGlmICghZmlsdGVyKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGZpbHRlcihtb2RlbCwgZXZlbnQsIGlkLCAuLi5jdHhBcmdzKTtcbiAgICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgICBsb2cuZXJyb3IoXG4gICAgICAgICAgICAgIGBGYWlsZWQgdG8gZmlsdGVyIG9ic2VydmVyICR7by5vYnNlcnZlci50b1N0cmluZygpfTogJHtlfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAubWFwKChvKSA9PiB7XG4gICAgICAgICAgby5vYnNlcnZlci5yZWZyZXNoKG1vZGVsLCBldmVudCwgaWQsIC4uLmN0eEFyZ3MpO1xuICAgICAgICB9KVxuICAgICk7XG4gICAgcmVzdWx0cy5mb3JFYWNoKChyZXN1bHQsIGkpID0+IHtcbiAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcInJlamVjdGVkXCIpXG4gICAgICAgIGxvZy5lcnJvcihcbiAgICAgICAgICBgRmFpbGVkIHRvIHVwZGF0ZSBvYnNlcnZhYmxlICR7dGhpcy5vYnNlcnZlcnNbaV0udG9TdHJpbmcoKX06ICR7cmVzdWx0LnJlYXNvbn1gXG4gICAgICAgICk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -255,4 +255,4 @@ export class Sequence extends ContextualLoggedClass {
255
255
  }
256
256
  }
257
257
  Adapter["_baseSequence"] = Sequence;
258
- //# sourceMappingURL=Sequence.js.map
258
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VxdWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGVyc2lzdGVuY2UvU2VxdWVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBS3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxvQkFBaUI7QUFFNUMsT0FBTyxFQUNMLGFBQWEsRUFDYixhQUFhLEVBQ2IsYUFBYSxFQUNiLGFBQWEsR0FDZCxNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFFTCxxQkFBcUIsR0FHdEIsNENBQXVDO0FBQ3hDLE9BQU8sRUFBRSxPQUFPLEVBQUUscUJBQWtCO0FBQ3BDLE9BQU8sRUFBUSxVQUFVLEVBQUUsc0NBQWlDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsb0NBQStCO0FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLHdCQUFxQjtBQUU1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFHL0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZDRztBQUNILE1BQU0sT0FBTyxRQUVYLFNBQVEscUJBQTBCO2FBRVIsU0FBSSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7SUFFakQ7OztPQUdHO0lBQ0gsWUFDcUIsT0FBd0IsRUFDeEIsT0FBVSxFQUM3QixZQUFpQyxFQUFFO1FBRW5DLEtBQUssRUFBRSxDQUFDO1FBSlcsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFDeEIsWUFBTyxHQUFQLE9BQU8sQ0FBRztRQUk3QixJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQ3BFLFNBQVMsQ0FDVixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLE9BQU8s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dCB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHtcbiAgU2VxdWVuY2VPcHRpb25zLFxuICBTZXF1ZW5jZU9wdGlvbnNUeXBlLFxufSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9TZXF1ZW5jZU9wdGlvbnNcIjtcbmltcG9ydCB7IFVuc3VwcG9ydGVkRXJyb3IgfSBmcm9tIFwiLi9lcnJvcnNcIjtcbmltcG9ydCB7IENvbnN0cnVjdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQge1xuICBDb25mbGljdEVycm9yLFxuICBJbnRlcm5hbEVycm9yLFxuICBOb3RGb3VuZEVycm9yLFxuICBPcGVyYXRpb25LZXlzLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7XG4gIENvbnRleHR1YWxpemVkQXJncyxcbiAgQ29udGV4dHVhbExvZ2dlZENsYXNzLFxuICBNYXliZUNvbnRleHR1YWxBcmcsXG4gIE1ldGhvZE9yT3BlcmF0aW9uLFxufSBmcm9tIFwiLi4vdXRpbHMvQ29udGV4dHVhbExvZ2dlZENsYXNzXCI7XG5pbXBvcnQgeyBBZGFwdGVyIH0gZnJvbSBcIi4vQWRhcHRlclwiO1xuaW1wb3J0IHsgUmVwbywgUmVwb3NpdG9yeSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L1JlcG9zaXRvcnlcIjtcbmltcG9ydCB7IFNlcXVlbmNlTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWwvU2VxdWVuY2VNb2RlbFwiO1xuaW1wb3J0IHsgU2VyaWFsLCBVVUlEIH0gZnJvbSBcIi4vZ2VuZXJhdG9yc1wiO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCIuL0NvbnRleHRcIjtcbmltcG9ydCB7IE11bHRpTG9jayB9IGZyb20gXCJAZGVjYWYtdHMvdHJhbnNhY3Rpb25hbC1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgdHlwZSB7IENvbnRleHRPZiwgRmxhZ3NPZiB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHNlcXVlbmNlIGdlbmVyYXRpb25cbiAqIEBzdW1tYXJ5IFByb3ZpZGVzIGEgZnJhbWV3b3JrIGZvciBnZW5lcmF0aW5nIHNlcXVlbnRpYWwgdmFsdWVzIChsaWtlIHByaW1hcnkga2V5cykgaW4gdGhlIHBlcnNpc3RlbmNlIGxheWVyLlxuICogSW1wbGVtZW50YXRpb25zIG9mIHRoaXMgY2xhc3MgaGFuZGxlIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHNlcXVlbmNlcyBhcmUgc3RvcmVkIGFuZCBpbmNyZW1lbnRlZCBpbiBkaWZmZXJlbnRcbiAqIGRhdGFiYXNlIHN5c3RlbXMuXG4gKiBAcGFyYW0ge1NlcXVlbmNlT3B0aW9uc30gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHNlcXVlbmNlIGdlbmVyYXRvclxuICogQGNsYXNzIFNlcXVlbmNlXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gRXhhbXBsZSBpbXBsZW1lbnRhdGlvbiBmb3IgYSBzcGVjaWZpYyBkYXRhYmFzZVxuICogY2xhc3MgUG9zdGdyZXNTZXF1ZW5jZSBleHRlbmRzIFNlcXVlbmNlIHtcbiAqICAgY29uc3RydWN0b3Iob3B0aW9uczogU2VxdWVuY2VPcHRpb25zKSB7XG4gKiAgICAgc3VwZXIob3B0aW9ucyk7XG4gKiAgIH1cbiAqXG4gKiAgIGFzeW5jIG5leHQoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAqICAgICAvLyBJbXBsZW1lbnRhdGlvbiB0byBnZXQgbmV4dCB2YWx1ZSBmcm9tIFBvc3RncmVTUUwgc2VxdWVuY2VcbiAqICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLm9wdGlvbnMuZXhlY3V0b3IucmF3KGBTRUxFQ1QgbmV4dHZhbCgnJHt0aGlzLm9wdGlvbnMubmFtZX0nKWApO1xuICogICAgIHJldHVybiBwYXJzZUludChyZXN1bHQucm93c1swXS5uZXh0dmFsKTtcbiAqICAgfVxuICpcbiAqICAgYXN5bmMgY3VycmVudCgpOiBQcm9taXNlPG51bWJlcj4ge1xuICogICAgIC8vIEltcGxlbWVudGF0aW9uIHRvIGdldCBjdXJyZW50IHZhbHVlIGZyb20gUG9zdGdyZVNRTCBzZXF1ZW5jZVxuICogICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMub3B0aW9ucy5leGVjdXRvci5yYXcoYFNFTEVDVCBjdXJydmFsKCcke3RoaXMub3B0aW9ucy5uYW1lfScpYCk7XG4gKiAgICAgcmV0dXJuIHBhcnNlSW50KHJlc3VsdC5yb3dzWzBdLmN1cnJ2YWwpO1xuICogICB9XG4gKlxuICogICBhc3luYyByYW5nZShjb3VudDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuICogICAgIC8vIEltcGxlbWVudGF0aW9uIHRvIGdldCBhIHJhbmdlIG9mIHZhbHVlc1xuICogICAgIGNvbnN0IHZhbHVlczogbnVtYmVyW10gPSBbXTtcbiAqICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAqICAgICAgIHZhbHVlcy5wdXNoKGF3YWl0IHRoaXMubmV4dCgpKTtcbiAqICAgICB9XG4gKiAgICAgcmV0dXJuIHZhbHVlcztcbiAqICAgfVxuICogfVxuICpcbiAqIC8vIFVzYWdlXG4gKiBjb25zdCBzZXF1ZW5jZSA9IG5ldyBQb3N0Z3Jlc1NlcXVlbmNlKHtcbiAqICAgbmFtZTogJ3VzZXJfaWRfc2VxJyxcbiAqICAgZXhlY3V0b3I6IGRiRXhlY3V0b3JcbiAqIH0pO1xuICpcbiAqIGNvbnN0IG5leHRJZCA9IGF3YWl0IHNlcXVlbmNlLm5leHQoKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgU2VxdWVuY2U8XG4gIEEgZXh0ZW5kcyBBZGFwdGVyPGFueSwgYW55LCBhbnksIGFueT4gPSBBZGFwdGVyPGFueSwgYW55LCBhbnksIGFueT4sXG4+IGV4dGVuZHMgQ29udGV4dHVhbExvZ2dlZENsYXNzPGFueT4ge1xuICBwcm90ZWN0ZWQgcmVwbzogUmVwbzxTZXF1ZW5jZU1vZGVsPjtcbiAgcHJvdGVjdGVkIHN0YXRpYyByZWFkb25seSBsb2NrID0gbmV3IE11bHRpTG9jaygpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG5ldyBzZXF1ZW5jZSBpbnN0YW5jZVxuICAgKiBAc3VtbWFyeSBQcm90ZWN0ZWQgY29uc3RydWN0b3IgdGhhdCBpbml0aWFsaXplcyB0aGUgc2VxdWVuY2Ugd2l0aCB0aGUgcHJvdmlkZWQgb3B0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnM6IFNlcXVlbmNlT3B0aW9ucyxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWRhcHRlcjogQSxcbiAgICBvdmVycmlkZXM6IFBhcnRpYWw8RmxhZ3NPZjxBPj4gPSB7fVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMucmVwbyA9IFJlcG9zaXRvcnkuZm9yTW9kZWwoU2VxdWVuY2VNb2RlbCwgYWRhcHRlci5hbGlhcykub3ZlcnJpZGUoXG4gICAgICBvdmVycmlkZXNcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHNlcXVlbmNlXG4gICAqIEBzdW1tYXJ5IEdldHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHNlcXVlbmNlIGZyb20gc3RvcmFnZS4gSWYgdGhlIHNlcXVlbmNlXG4gICAqIGRvZXNuJ3QgZXhpc3QgeWV0LCBpdCByZXR1cm5zIHRoZSBjb25maWd1cmVkIHN0YXJ0aW5nIHZhbHVlLlxuICAgKiBAcmV0dXJuIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBjdXJyZW50IHNlcXVlbmNlIHZhbHVlXG4gICAqL1xuICBhc3luYyBjdXJyZW50KFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxhbnk+XG4gICk6IFByb21pc2U8c3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50PiB7XG4gICAgY29uc3QgeyBsb2csIGN0eCB9ID0gYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgT3BlcmF0aW9uS2V5cy5SRUFELCB0cnVlKTtcbiAgICBjb25zdCB7IG5hbWUsIHN0YXJ0V2l0aCB9ID0gdGhpcy5vcHRpb25zO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzZXF1ZW5jZTogU2VxdWVuY2VNb2RlbCA9IGF3YWl0IHRoaXMucmVwby5yZWFkKG5hbWUgYXMgc3RyaW5nLCBjdHgpO1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2Uoc2VxdWVuY2UuY3VycmVudCBhcyBzdHJpbmcgfCBudW1iZXIpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOb3RGb3VuZEVycm9yKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhcbiAgICAgICAgICBgU2VxdWVuY2UuY3VycmVudCBtaXNzaW5nICR7bmFtZX0sIHJldHVybmluZyBzdGFydFdpdGg9JHtzdGFydFdpdGh9YFxuICAgICAgICApO1xuICAgICAgICBpZiAodHlwZW9mIHN0YXJ0V2l0aCA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgIFwiU3RhcnRpbmcgdmFsdWUgaXMgbm90IGRlZmluZWQgZm9yIGEgbm9uIGV4aXN0aW5nIHNlcXVlbmNlXCJcbiAgICAgICAgICApO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlKHN0YXJ0V2l0aCk7XG4gICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgYEZhaWxlZCB0byBwYXJzZSBpbml0aWFsIHZhbHVlIGZvciBzZXF1ZW5jZSAke3N0YXJ0V2l0aH06ICR7ZX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIGBGYWlsZWQgdG8gcmV0cmlldmUgY3VycmVudCB2YWx1ZSBmb3Igc2VxdWVuY2UgJHtuYW1lfTogJHtlfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBJbmNyZW1lbnRzIHRoZSBzZXF1ZW5jZSB2YWx1ZVxuICAgKiBAc3VtbWFyeSBJbmNyZWFzZXMgdGhlIGN1cnJlbnQgc2VxdWVuY2UgdmFsdWUgYnkgdGhlIHNwZWNpZmllZCBhbW91bnQgYW5kIHBlcnNpc3RzXG4gICAqIHRoZSBuZXcgdmFsdWUgdG8gc3RvcmFnZS4gVGhpcyBtZXRob2QgaGFuZGxlcyBib3RoIG51bWVyaWMgYW5kIEJpZ0ludCBzZXF1ZW5jZSB0eXBlcy5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnR9IGN1cnJlbnQgLSBUaGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgc2VxdWVuY2VcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtjb3VudF0gLSBPcHRpb25hbCBhbW91bnQgdG8gaW5jcmVtZW50IGJ5LCBkZWZhdWx0cyB0byB0aGUgc2VxdWVuY2UncyBpbmNyZW1lbnRCeSB2YWx1ZVxuICAgKiBAcmV0dXJuIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBuZXcgc2VxdWVuY2UgdmFsdWUgYWZ0ZXIgaW5jcmVtZW50aW5nXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgaW5jcmVtZW50KFxuICAgIGNvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsXG4gICAgY29udGV4dDogQ29udGV4dDxhbnk+XG4gICk6IFByb21pc2U8c3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50PiB7XG4gICAgY29uc3QgeyBsb2csIGN0eCB9ID0gdGhpcy5hZGFwdGVyW1wibG9nQ3R4XCJdKFtjb250ZXh0XSwgdGhpcy5pbmNyZW1lbnQpO1xuICAgIGNvbnN0IHsgdHlwZSwgaW5jcmVtZW50QnksIG5hbWUgfSA9IHRoaXMub3B0aW9ucztcbiAgICBpZiAoIW5hbWUpIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiU2VxdWVuY2UgbmFtZSBpcyByZXF1aXJlZFwiKTtcblxuICAgIHJldHVybiBTZXF1ZW5jZS5sb2NrLmV4ZWN1dGUoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdG9JbmNyZW1lbnRCeSA9IGNvdW50IHx8IGluY3JlbWVudEJ5O1xuICAgICAgaWYgKHRvSW5jcmVtZW50QnkgJSBpbmNyZW1lbnRCeSAhPT0gMClcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgYFZhbHVlIHRvIGluY3JlbWVudCBkb2VzIG5vdCBjb25zaWRlciB0aGUgaW5jcmVtZW50Qnkgc2V0dGluZzogJHtpbmNyZW1lbnRCeX1gXG4gICAgICAgICk7XG4gICAgICBjb25zdCB0eXBlTmFtZSA9XG4gICAgICAgIHR5cGVvZiB0eXBlID09PSBcImZ1bmN0aW9uXCIgJiYgKHR5cGUgYXMgYW55KT8ubmFtZVxuICAgICAgICAgID8gKHR5cGUgYXMgYW55KS5uYW1lXG4gICAgICAgICAgOiB0eXBlO1xuICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gYXdhaXQgdGhpcy5jdXJyZW50KGN0eCk7XG5cbiAgICAgIGNvbnN0IHBlcmZvcm1VcHNlcnQgPSBhc3luYyAoXG4gICAgICAgIG5leHQ6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludFxuICAgICAgKTogUHJvbWlzZTxTZXF1ZW5jZU1vZGVsPiA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucmVwby51cGRhdGUoXG4gICAgICAgICAgICBuZXcgU2VxdWVuY2VNb2RlbCh7IGlkOiBuYW1lLCBjdXJyZW50OiBuZXh0IH0pLFxuICAgICAgICAgICAgY3R4XG4gICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOb3RGb3VuZEVycm9yKSB7XG4gICAgICAgICAgICBsb2cuZGVidWcoXG4gICAgICAgICAgICAgIGBTZXF1ZW5jZSBjcmVhdGUgJHtuYW1lfSBjdXJyZW50PSR7Y3VycmVudFZhbHVlIGFzIGFueX0gbmV4dD0ke25leHQgYXMgYW55fWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXBvLmNyZWF0ZShcbiAgICAgICAgICAgICAgbmV3IFNlcXVlbmNlTW9kZWwoeyBpZDogbmFtZSwgY3VycmVudDogbmV4dCB9KSxcbiAgICAgICAgICAgICAgY3R4XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBpbmNyZW1lbnRTZXJpYWwgPSBhc3luYyAoXG4gICAgICAgIGJhc2U6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludFxuICAgICAgKTogUHJvbWlzZTxzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQ+ID0+IHtcbiAgICAgICAgc3dpdGNoICh0eXBlTmFtZSkge1xuICAgICAgICAgIGNhc2UgTnVtYmVyLm5hbWU6XG4gICAgICAgICAgICByZXR1cm4gKHRoaXMucGFyc2UoYmFzZSkgYXMgbnVtYmVyKSArIHRvSW5jcmVtZW50Qnk7XG4gICAgICAgICAgY2FzZSBCaWdJbnQubmFtZTpcbiAgICAgICAgICAgIHJldHVybiAodGhpcy5wYXJzZShiYXNlKSBhcyBiaWdpbnQpICsgQmlnSW50KHRvSW5jcmVtZW50QnkpO1xuICAgICAgICAgIGNhc2UgU3RyaW5nLm5hbWU6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZShiYXNlKTtcbiAgICAgICAgICBjYXNlIFwic2VyaWFsXCI6XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICAgICAgICBTZXJpYWwuaW5zdGFuY2UuZ2VuZXJhdGUoYmFzZSBhcyBzdHJpbmcpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIlNob3VsZCBuZXZlciBoYXBwZW5cIik7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGlmICh0eXBlTmFtZSA9PT0gXCJ1dWlkXCIpIHtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICBjb25zdCBuZXh0ID0gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICAgICAgVVVJRC5pbnN0YW5jZS5nZW5lcmF0ZShjdXJyZW50VmFsdWUgYXMgc3RyaW5nKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBlcmZvcm1VcHNlcnQobmV4dCk7XG4gICAgICAgICAgICBsb2cuZGVidWcoXG4gICAgICAgICAgICAgIGBTZXF1ZW5jZSB1dWlkIGluY3JlbWVudCAke25hbWV9IGN1cnJlbnQ9JHtjdXJyZW50VmFsdWUgYXMgYW55fSBuZXh0PSR7bmV4dCBhcyBhbnl9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQuY3VycmVudCBhcyBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQ7XG4gICAgICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBDb25mbGljdEVycm9yKSBjb250aW51ZTtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5leHQgPSBhd2FpdCBpbmNyZW1lbnRTZXJpYWwoY3VycmVudFZhbHVlKTtcbiAgICAgIGNvbnN0IHNlcSA9IGF3YWl0IHBlcmZvcm1VcHNlcnQobmV4dCk7XG4gICAgICBsb2cuZGVidWcoXG4gICAgICAgIGBTZXF1ZW5jZS5pbmNyZW1lbnQgJHtuYW1lfSBjdXJyZW50PSR7Y3VycmVudFZhbHVlIGFzIGFueX0gbmV4dD0ke25leHQgYXMgYW55fWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gc2VxLmN1cnJlbnQgYXMgc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50O1xuICAgIH0sIG5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBHZXRzIHRoZSBuZXh0IHZhbHVlIGluIHRoZSBzZXF1ZW5jZVxuICAgKiBAc3VtbWFyeSBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHNlcXVlbmNlIGFuZCBpbmNyZW1lbnRzIGl0IGJ5IHRoZVxuICAgKiBjb25maWd1cmVkIGluY3JlbWVudCBhbW91bnQuIFRoaXMgaXMgdGhlIG1haW4gbWV0aG9kIHVzZWQgdG8gZ2V0IGEgbmV3IHNlcXVlbnRpYWwgdmFsdWUuXG4gICAqIEByZXR1cm4gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIG5leHQgdmFsdWUgaW4gdGhlIHNlcXVlbmNlXG4gICAqL1xuICBhc3luYyBuZXh0KFxuICAgIC4uLmFyZ3o6IE1heWJlQ29udGV4dHVhbEFyZzxhbnk+XG4gICk6IFByb21pc2U8bnVtYmVyIHwgc3RyaW5nIHwgYmlnaW50PiB7XG4gICAgY29uc3QgeyBjdHggfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmd6LCBPcGVyYXRpb25LZXlzLlVQREFURSwgdHJ1ZSkpLmZvcihcbiAgICAgIHRoaXMubmV4dFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaW5jcmVtZW50KHVuZGVmaW5lZCwgY3R4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2VuZXJhdGVzIGEgcmFuZ2Ugb2Ygc2VxdWVudGlhbCB2YWx1ZXNcbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIGEgc3BlY2lmaWVkIG51bWJlciBvZiBzZXF1ZW50aWFsIHZhbHVlcyBmcm9tIHRoZSBzZXF1ZW5jZS5cbiAgICogVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3UgbmVlZCB0byBhbGxvY2F0ZSBtdWx0aXBsZSBJRHMgYXQgb25jZS5cbiAgICogVGhlIG1ldGhvZCBpbmNyZW1lbnRzIHRoZSBzZXF1ZW5jZSBieSB0aGUgdG90YWwgYW1vdW50IG5lZWRlZCBhbmQgcmV0dXJucyBhbGwgdmFsdWVzIGluIHRoZSByYW5nZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvdW50IC0gVGhlIG51bWJlciBvZiBzZXF1ZW50aWFsIHZhbHVlcyB0byBnZW5lcmF0ZVxuICAgKiBAcmV0dXJuIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFycmF5IG9mIHNlcXVlbnRpYWwgdmFsdWVzXG4gICAqL1xuICBhc3luYyByYW5nZShcbiAgICBjb3VudDogbnVtYmVyLFxuICAgIC4uLmFyZ3o6IE1heWJlQ29udGV4dHVhbEFyZzxhbnk+XG4gICk6IFByb21pc2U8KG51bWJlciB8IHN0cmluZyB8IGJpZ2ludClbXT4ge1xuICAgIGNvbnN0IHsgY3R4LCBsb2cgfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3osIE9wZXJhdGlvbktleXMuVVBEQVRFLCB0cnVlKVxuICAgICkuZm9yKHRoaXMucmFuZ2UpO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy50eXBlID09PSBcInV1aWRcIiB8fCB0aGlzLm9wdGlvbnMudHlwZSA9PT0gXCJzZXJpYWxcIilcbiAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEVycm9yKCAvLyBUT0RPIGp1c3QgZ2VuZXJhdGUgdmFsaWQgdXVpZHMvc2VyaWFsc1xuICAgICAgICBgdHlwZSAke3RoaXMub3B0aW9ucy50eXBlfSBpcyBjdXJyZW50bHkgbm90IHN1cHBwb3J0ZWQgZm9yIHRoaXMgYWRhcHRlcmBcbiAgICAgICk7XG5cbiAgICBjb25zdCB0eXBlTmFtZSA9XG4gICAgICB0eXBlb2YgdGhpcy5vcHRpb25zLnR5cGUgPT09IFwiZnVuY3Rpb25cIiAmJlxuICAgICAgKHRoaXMub3B0aW9ucy50eXBlIGFzIGFueSk/Lm5hbWVcbiAgICAgICAgPyAodGhpcy5vcHRpb25zLnR5cGUgYXMgYW55KS5uYW1lXG4gICAgICAgIDogdGhpcy5vcHRpb25zLnR5cGU7XG5cbiAgICBjb25zdCBpbmNyZW1lbnRCeSA9IHRoaXMucGFyc2UoXG4gICAgICB0aGlzLm9wdGlvbnMuaW5jcmVtZW50QnkgYXMgbnVtYmVyXG4gICAgKSBhcyBudW1iZXI7XG4gICAgY29uc3QgbmV4dDogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50ID0gYXdhaXQgdGhpcy5pbmNyZW1lbnQoXG4gICAgICAodGhpcy5wYXJzZShjb3VudCkgYXMgbnVtYmVyKSAqIGluY3JlbWVudEJ5LFxuICAgICAgY3R4XG4gICAgKTtcbiAgICBsZXQgcmFuZ2U6IChudW1iZXIgfCBzdHJpbmcgfCBiaWdpbnQpW10gPSBbXTtcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDw9IGNvdW50IC0gMTsgaSsrKSB7XG4gICAgICByYW5nZS5wdXNoKChuZXh0IGFzIG51bWJlcikgLSBpbmNyZW1lbnRCeSAqICh0aGlzLnBhcnNlKGkpIGFzIG51bWJlcikpO1xuICAgIH1cblxuICAgIHJhbmdlID0gcmFuZ2UucmV2ZXJzZSgpO1xuXG4gICAgaWYgKHJhbmdlW3JhbmdlLmxlbmd0aCAtIDFdICE9PSBuZXh0ICYmIHR5cGVOYW1lICE9PSBcIlN0cmluZ1wiKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJNaXNjYWxjdWxhdGlvbiBvZiByYW5nZVwiKTtcblxuICAgIGxvZy5kZWJ1ZyhgQ2FsY3VsYXRlZCByYW5nZTogJHtyYW5nZS5qb2luKFwiLCBcIil9YCk7XG5cbiAgICByZXR1cm4gcmFuZ2U7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2UodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCk6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCB7XG4gICAgcmV0dXJuIFNlcXVlbmNlLnBhcnNlVmFsdWUodGhpcy5vcHRpb25zLnR5cGUsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBsb2dDdHg8XG4gICAgQVJHUyBleHRlbmRzIGFueVtdID0gYW55W10sXG4gICAgTUVUSE9EIGV4dGVuZHMgTWV0aG9kT3JPcGVyYXRpb24gPSBNZXRob2RPck9wZXJhdGlvbixcbiAgPihcbiAgICBhcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8Q29udGV4dE9mPHR5cGVvZiB0aGlzLmFkYXB0ZXI+LCBBUkdTPixcbiAgICBvcGVyYXRpb246IE1FVEhPRFxuICApOiBDb250ZXh0dWFsaXplZEFyZ3M8XG4gICAgQ29udGV4dE9mPHR5cGVvZiB0aGlzLmFkYXB0ZXI+LFxuICAgIEFSR1MsXG4gICAgTUVUSE9EIGV4dGVuZHMgc3RyaW5nID8gdHJ1ZSA6IGZhbHNlXG4gID47XG4gIHByb3RlY3RlZCBvdmVycmlkZSBsb2dDdHg8XG4gICAgQVJHUyBleHRlbmRzIGFueVtdID0gYW55W10sXG4gICAgTUVUSE9EIGV4dGVuZHMgTWV0aG9kT3JPcGVyYXRpb24gPSBNZXRob2RPck9wZXJhdGlvbixcbiAgPihcbiAgICBhcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8Q29udGV4dE9mPHR5cGVvZiB0aGlzLmFkYXB0ZXI+LCBBUkdTPixcbiAgICBvcGVyYXRpb246IE1FVEhPRCxcbiAgICBhbGxvd0NyZWF0ZTogZmFsc2VcbiAgKTogQ29udGV4dHVhbGl6ZWRBcmdzPFxuICAgIENvbnRleHRPZjx0eXBlb2YgdGhpcy5hZGFwdGVyPixcbiAgICBBUkdTLFxuICAgIE1FVEhPRCBleHRlbmRzIHN0cmluZyA/IHRydWUgOiBmYWxzZVxuICA+O1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbG9nQ3R4PFxuICAgIEFSR1MgZXh0ZW5kcyBhbnlbXSA9IGFueVtdLFxuICAgIE1FVEhPRCBleHRlbmRzIE1ldGhvZE9yT3BlcmF0aW9uID0gTWV0aG9kT3JPcGVyYXRpb24sXG4gID4oXG4gICAgYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPENvbnRleHRPZjx0eXBlb2YgdGhpcy5hZGFwdGVyPiwgQVJHUz4sXG4gICAgb3BlcmF0aW9uOiBNRVRIT0QsXG4gICAgYWxsb3dDcmVhdGU6IHRydWVcbiAgKTogUHJvbWlzZTxcbiAgICBDb250ZXh0dWFsaXplZEFyZ3M8XG4gICAgICBDb250ZXh0T2Y8dHlwZW9mIHRoaXMuYWRhcHRlcj4sXG4gICAgICBBUkdTLFxuICAgICAgTUVUSE9EIGV4dGVuZHMgc3RyaW5nID8gdHJ1ZSA6IGZhbHNlXG4gICAgPlxuICA+O1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbG9nQ3R4PFxuICAgIEFSR1MgZXh0ZW5kcyBhbnlbXSA9IGFueVtdLFxuICAgIE1FVEhPRCBleHRlbmRzIE1ldGhvZE9yT3BlcmF0aW9uID0gTWV0aG9kT3JPcGVyYXRpb24sXG4gID4oXG4gICAgYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPENvbnRleHRPZjx0eXBlb2YgdGhpcy5hZGFwdGVyPiwgQVJHUz4sXG4gICAgb3BlcmF0aW9uOiBNRVRIT0QsXG4gICAgYWxsb3dDcmVhdGU6IGJvb2xlYW4gPSBmYWxzZVxuICApOlxuICAgIHwgUHJvbWlzZTxcbiAgICAgICAgQ29udGV4dHVhbGl6ZWRBcmdzPFxuICAgICAgICAgIENvbnRleHRPZjx0eXBlb2YgdGhpcy5hZGFwdGVyPixcbiAgICAgICAgICBBUkdTLFxuICAgICAgICAgIE1FVEhPRCBleHRlbmRzIHN0cmluZyA/IHRydWUgOiBmYWxzZVxuICAgICAgICA+XG4gICAgICA+XG4gICAgfCBDb250ZXh0dWFsaXplZEFyZ3M8XG4gICAgICAgIENvbnRleHRPZjx0eXBlb2YgdGhpcy5hZGFwdGVyPixcbiAgICAgICAgQVJHUyxcbiAgICAgICAgTUVUSE9EIGV4dGVuZHMgc3RyaW5nID8gdHJ1ZSA6IGZhbHNlXG4gICAgICA+IHtcbiAgICBjb25zdCBjdHggPSB0aGlzLmFkYXB0ZXJbXCJsb2dDdHhcIl0oXG4gICAgICBbU2VxdWVuY2VNb2RlbCwgLi4uYXJnc10gYXMgYW55LFxuICAgICAgb3BlcmF0aW9uLFxuICAgICAgYWxsb3dDcmVhdGUgYXMgYW55XG4gICAgKSBhc1xuICAgICAgfCBDb250ZXh0dWFsaXplZEFyZ3M8XG4gICAgICAgICAgQ29udGV4dE9mPEE+LFxuICAgICAgICAgIEFSR1MsXG4gICAgICAgICAgTUVUSE9EIGV4dGVuZHMgc3RyaW5nID8gdHJ1ZSA6IGZhbHNlXG4gICAgICAgID5cbiAgICAgIHwgUHJvbWlzZTxcbiAgICAgICAgICBDb250ZXh0dWFsaXplZEFyZ3M8XG4gICAgICAgICAgICBDb250ZXh0T2Y8QT4sXG4gICAgICAgICAgICBBUkdTLFxuICAgICAgICAgICAgTUVUSE9EIGV4dGVuZHMgc3RyaW5nID8gdHJ1ZSA6IGZhbHNlXG4gICAgICAgICAgPlxuICAgICAgICA+O1xuICAgIGZ1bmN0aW9uIHNxdWFzaEFyZ3MoY3R4OiBDb250ZXh0dWFsaXplZEFyZ3M8Q29udGV4dE9mPEE+Pikge1xuICAgICAgY3R4LmN0eEFyZ3Muc2hpZnQoKTsgLy8gcmVtb3ZlcyBhZGRlZCBtb2RlbCB0byBhcmdzXG4gICAgICByZXR1cm4gY3R4IGFzIGFueTtcbiAgICB9XG5cbiAgICBpZiAoIShjdHggaW5zdGFuY2VvZiBQcm9taXNlKSkgcmV0dXJuIHNxdWFzaEFyZ3MoY3R4KTtcbiAgICByZXR1cm4gY3R4LnRoZW4oc3F1YXNoQXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdldHMgdGhlIHByaW1hcnkga2V5IHNlcXVlbmNlIG5hbWUgZm9yIGEgbW9kZWxcbiAgICogQHN1bW1hcnkgVXRpbGl0eSBtZXRob2QgdGhhdCByZXR1cm5zIHRoZSBzdGFuZGFyZGl6ZWQgc2VxdWVuY2UgbmFtZSBmb3IgYSBtb2RlbCdzIHByaW1hcnkga2V5XG4gICAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGVcbiAgICogQHBhcmFtIHtNfENvbnN0cnVjdG9yPE0+fSBtb2RlbCAtIFRoZSBtb2RlbCBpbnN0YW5jZSBvciBjb25zdHJ1Y3RvclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBzZXF1ZW5jZSBuYW1lIGZvciB0aGUgbW9kZWwncyBwcmltYXJ5IGtleVxuICAgKi9cbiAgc3RhdGljIHBrPE0gZXh0ZW5kcyBNb2RlbD4obW9kZWw6IE0gfCBDb25zdHJ1Y3RvcjxNPikge1xuICAgIHJldHVybiBNb2RlbC5zZXF1ZW5jZU5hbWUobW9kZWwsIFwicGtcIik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFBhcnNlcyBhIHNlcXVlbmNlIHZhbHVlIHRvIHRoZSBhcHByb3ByaWF0ZSB0eXBlXG4gICAqIEBzdW1tYXJ5IENvbnZlcnRzIGEgc2VxdWVuY2UgdmFsdWUgdG8gdGhlIHNwZWNpZmllZCB0eXBlIChOdW1iZXIgb3IgQmlnSW50KVxuICAgKiBAcGFyYW0ge1wiTnVtYmVyXCJ8XCJCaWdJbnRcInx1bmRlZmluZWR9IHR5cGUgLSBUaGUgdGFyZ2V0IHR5cGUgdG8gY29udmVydCB0b1xuICAgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ8YmlnaW50fSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gICAqIEByZXR1cm4ge3N0cmluZ3xudW1iZXJ8YmlnaW50fSBUaGUgY29udmVydGVkIHZhbHVlXG4gICAqL1xuICBzdGF0aWMgcGFyc2VWYWx1ZShcbiAgICB0eXBlOiBTZXF1ZW5jZU9wdGlvbnNUeXBlLFxuICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnRcbiAgKTogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50IHtcbiAgICBjb25zdCB0eXBlTmFtZSA9XG4gICAgICB0eXBlb2YgdHlwZSA9PT0gXCJmdW5jdGlvblwiICYmICh0eXBlIGFzIGFueSk/Lm5hbWVcbiAgICAgICAgPyAodHlwZSBhcyBhbnkpLm5hbWVcbiAgICAgICAgOiB0eXBlO1xuICAgIHN3aXRjaCAodHlwZU5hbWUpIHtcbiAgICAgIGNhc2UgTnVtYmVyLm5hbWUgfHwgTnVtYmVyLm5hbWUudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIlxuICAgICAgICAgID8gcGFyc2VJbnQodmFsdWUpXG4gICAgICAgICAgOiB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCJcbiAgICAgICAgICAgID8gdmFsdWVcbiAgICAgICAgICAgIDogQmlnSW50KHZhbHVlKTtcbiAgICAgIGNhc2UgQmlnSW50Lm5hbWUgfHwgQmlnSW50Lm5hbWUudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIEJpZ0ludCh2YWx1ZSk7XG4gICAgICBjYXNlIFN0cmluZy5uYW1lIHx8IFN0cmluZy5uYW1lLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICBjYXNlIFwidXVpZFwiOlxuICAgICAgY2FzZSBcInNlcmlhbFwiOlxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRFcnJvcihcbiAgICAgICAgICBgVW5zdXBwb3J0ZWQgc2VxdWVuY2UgdHlwZTogJHt0eXBlfSBmb3IgYWRhcHRlciAke3RoaXN9YFxuICAgICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5BZGFwdGVyW1wiX2Jhc2VTZXF1ZW5jZVwiXSA9IFNlcXVlbmNlO1xuIl19
@@ -73,6 +73,7 @@ export const DefaultAdapterFlags = Object.assign({}, DefaultRepositoryFlags, {
73
73
  forcePrepareSimpleQueries: false,
74
74
  forcePrepareComplexQueries: false,
75
75
  cacheForPopulate: {},
76
+ preferFromCache: false,
76
77
  noEmit: false,
77
78
  noEmitSingle: false,
78
79
  noEmitBulk: false,
@@ -101,4 +102,4 @@ export const MultipleSelectOperationKeys = [
101
102
  PreparedStatementKeys.PAGE,
102
103
  ];
103
104
  export const PaginationOperationKeys = [PreparedStatementKeys.PAGE_BY, PreparedStatementKeys.PAGE];
104
- //# sourceMappingURL=constants.js.map
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BlcnNpc3RlbmNlL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixhQUFhLEdBQ2QsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsZ0NBQTJCO0FBRTNEOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBTixJQUFZLGVBa0ZYO0FBbEZELFdBQVksZUFBZTtJQUN6Qiw4Q0FBMkIsQ0FBQTtJQUMzQiwwQ0FBMEM7SUFDMUMsa0NBQWUsQ0FBQTtJQUVmLHNEQUFzRDtJQUN0RCxvQ0FBaUIsQ0FBQTtJQUVqQiw0Q0FBNEM7SUFDNUMsc0NBQW1CLENBQUE7SUFFbkIseURBQXlEO0lBQ3pELDJEQUF3QyxDQUFBO0lBRXhDLHNDQUFtQixDQUFBO0lBQ25CLCtDQUErQztJQUMvQyxrQ0FBZSxDQUFBO0lBRWYsZ0RBQWdEO0lBQ2hELG9DQUFpQixDQUFBO0lBRWpCLG9EQUFvRDtJQUNwRCwwQ0FBdUIsQ0FBQTtJQUV2QixZQUFZO0lBQ1oseURBQXlEO0lBQ3pELDBDQUF1QixDQUFBO0lBRXZCLHlEQUF5RDtJQUN6RCxzREFBc0MsQ0FBQTtJQUV0Qyx5REFBeUQ7SUFDekQsc0RBQXNDLENBQUE7SUFFdEMsWUFBWTtJQUVaLHNEQUFzRDtJQUN0RCw0Q0FBeUIsQ0FBQTtJQUV6QixzREFBc0Q7SUFDdEQsd0NBQXFCLENBQUE7SUFFckIsd0RBQXdEO0lBQ3hELHFEQUFxQyxDQUFBO0lBRXJDLHlEQUF5RDtJQUN6RCx1REFBdUMsQ0FBQTtJQUV2Qyx5REFBeUQ7SUFDekQsdURBQXVDLENBQUE7SUFDdkMseURBQXlEO0lBQ3pELHlEQUF5QyxDQUFBO0lBRXpDLDZDQUE2QztJQUM3Qyx3Q0FBcUIsQ0FBQTtJQUNyQiw2Q0FBNkM7SUFDN0MsOENBQTJCLENBQUE7SUFDM0IsNkNBQTZDO0lBQzdDLDBDQUF1QixDQUFBO0lBRXZCLDBDQUF1QixDQUFBO0lBRXZCLGtDQUFlLENBQUE7SUFFZixnQ0FBYSxDQUFBO0lBRWIsd0RBQXFDLENBQUE7SUFFckMsb0RBQWlDLENBQUE7SUFDakMsd0NBQXFCLENBQUE7SUFFckIsb0NBQWlCLENBQUE7SUFFakIsZ0NBQWEsQ0FBQTtJQUViLDBDQUF1QixDQUFBO0lBRXZCLDZDQUEwQixDQUFBO0lBRTFCLHdDQUFxQixDQUFBO0lBRXJCLDREQUF5QyxDQUFBO0FBQzNDLENBQUMsRUFsRlcsZUFBZSxLQUFmLGVBQWUsUUFrRjFCO0FBRUQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQXNCLE1BQU0sQ0FBQyxNQUFNLENBQ2pFLEVBQUUsRUFDRjtJQUNFLG1CQUFtQixFQUFFLEtBQUs7Q0FDM0IsQ0FDbUIsQ0FBQztBQUV2QixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBaUIsTUFBTSxDQUFDLE1BQU0sQ0FDNUQsRUFBRSxFQUNGLHNCQUFzQixFQUN0QjtJQUNFLHVCQUF1QixFQUFFLElBQUk7SUFDN0Isa0JBQWtCLEVBQUUsSUFBSTtJQUN4Qix5QkFBeUIsRUFBRSxLQUFLO0lBQ2hDLDBCQUEwQixFQUFFLEtBQUs7SUFDakMsZ0JBQWdCLEVBQUUsRUFBRTtJQUNwQixlQUFlLEVBQUUsS0FBSztJQUN0QixNQUFNLEVBQUUsS0FBSztJQUNiLFlBQVksRUFBRSxLQUFLO0lBQ25CLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLDBCQUEwQixFQUFFLElBQUk7SUFDaEMsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QixrQkFBa0IsRUFBRSxLQUFLO0lBQ3pCLE1BQU0sRUFBRSxLQUFLO0lBQ2Isa0JBQWtCLEVBQUUsS0FBSztDQUMxQixDQUNjLENBQUM7QUFFbEIsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBTS9CO0lBQ0osYUFBYSxDQUFDLE1BQU07SUFDcEIsYUFBYSxDQUFDLE1BQU07SUFDcEIsYUFBYSxDQUFDLE1BQU07SUFDcEIscUJBQXFCLENBQUMsVUFBVTtJQUNoQyxxQkFBcUIsQ0FBQyxVQUFVO0lBQ2hDLHFCQUFxQixDQUFDLFVBQVU7Q0FDakMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQU1sQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFM0QsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBTTFCLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUVyRSxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FNbEM7SUFDSixlQUFlLENBQUMsS0FBSztJQUNyQixxQkFBcUIsQ0FBQyxPQUFPO0lBQzdCLHFCQUFxQixDQUFDLE9BQU87SUFDN0IscUJBQXFCLENBQUMsT0FBTztJQUM3QixxQkFBcUIsQ0FBQyxJQUFJO0lBQzFCLHFCQUFxQixDQUFDLElBQUk7Q0FDM0IsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQU05QixDQUFDLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJ1bGtDcnVkT3BlcmF0aW9uS2V5cyxcbiAgRGVmYXVsdFJlcG9zaXRvcnlGbGFncyxcbiAgT3BlcmF0aW9uS2V5cyxcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBBZGFwdGVyRmxhZ3MsIENvbnRleHRGbGFncyB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBQcmVwYXJlZFN0YXRlbWVudEtleXMgfSBmcm9tIFwiLi4vcXVlcnkvY29uc3RhbnRzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBlcnNpc3RlbmNlLXJlbGF0ZWQgY29uc3RhbnQga2V5c1xuICogQHN1bW1hcnkgRW51bSBjb250YWluaW5nIHN0cmluZyBjb25zdGFudHMgdXNlZCB0aHJvdWdob3V0IHRoZSBwZXJzaXN0ZW5jZSBsYXllciBmb3IgbWV0YWRhdGEsIHJlbGF0aW9ucywgYW5kIG90aGVyIHBlcnNpc3RlbmNlLXJlbGF0ZWQgb3BlcmF0aW9uc1xuICogQGVudW0ge3N0cmluZ31cbiAqIEByZWFkb25seVxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCBlbnVtIFBlcnNpc3RlbmNlS2V5cyB7XG4gIFBFUlNJU1RFTkNFID0gXCJwZXJzaXN0ZW5jZVwiLFxuICAvKiogQGRlc2NyaXB0aW9uIEtleSBmb3IgaW5kZXggbWV0YWRhdGEgKi9cbiAgSU5ERVggPSBcImluZGV4XCIsXG5cbiAgLyoqIEBkZXNjcmlwdGlvbiBLZXkgZm9yIHVuaXF1ZSBjb25zdHJhaW50IG1ldGFkYXRhICovXG4gIFVOSVFVRSA9IFwidW5pcXVlXCIsXG5cbiAgLyoqIEBkZXNjcmlwdGlvbiBLZXkgZm9yIGFkYXB0ZXIgbWV0YWRhdGEgKi9cbiAgQURBUFRFUiA9IFwiYWRhcHRlclwiLFxuXG4gIC8qKiBAZGVzY3JpcHRpb24gVGVtcGxhdGUgZm9yIGluamVjdGFibGUgYWRhcHRlciBuYW1lcyAqL1xuICBJTkpFQ1RBQkxFID0gXCJkZWNhZl97MH1fYWRhcHRlcl9mb3JfezF9XCIsXG5cbiAgU0VSVklDRSA9IFwic2VydmljZVwiLFxuICAvKiogQGRlc2NyaXB0aW9uIEtleSBmb3IgdGFibGUgbmFtZSBtZXRhZGF0YSAqL1xuICBUQUJMRSA9IFwidGFibGVcIixcblxuICAvKiogQGRlc2NyaXB0aW9uIEtleSBmb3IgY29sdW1uIG5hbWUgbWV0YWRhdGEgKi9cbiAgQ09MVU1OID0gXCJjb2x1bW5cIixcblxuICAvKiogQGRlc2NyaXB0aW9uIEtleSBmb3IgZ2VuZXJhbCBtZXRhZGF0YSBzdG9yYWdlICovXG4gIE1FVEFEQVRBID0gXCJfX21ldGFkYXRhXCIsXG5cbiAgLy8gT3duZXJzaGlwXG4gIC8qKiBAZGVzY3JpcHRpb24gS2V5IGZvciBjcmVhdGVkLWJ5IG93bmVyc2hpcCBtZXRhZGF0YSAqL1xuICBPV05FUlNISVAgPSBcIm93bmVyc2hpcFwiLFxuXG4gIC8qKiBAZGVzY3JpcHRpb24gS2V5IGZvciBjcmVhdGVkLWJ5IG93bmVyc2hpcCBtZXRhZGF0YSAqL1xuICBDUkVBVEVEX0JZID0gYCR7T1dORVJTSElQfS5jcmVhdGVkLWJ5YCxcblxuICAvKiogQGRlc2NyaXB0aW9uIEtleSBmb3IgdXBkYXRlZC1ieSBvd25lcnNoaXAgbWV0YWRhdGEgKi9cbiAgVVBEQVRFRF9CWSA9IGAke09XTkVSU0hJUH0udXBkYXRlZC1ieWAsXG5cbiAgLy8gUmVsYXRpb25zXG5cbiAgLyoqIEBkZXNjcmlwdGlvbiBLZXkgZm9yIHJlbGF0aW9ucyBtZXRhZGF0YSBzdG9yYWdlICovXG4gIFJFTEFUSU9OUyA9IFwiX19yZWxhdGlvbnNcIixcblxuICAvKiogQGRlc2NyaXB0aW9uIEtleSBmb3IgcmVsYXRpb25zIG1ldGFkYXRhIHN0b3JhZ2UgKi9cbiAgUkVMQVRJT04gPSBcInJlbGF0aW9uXCIsXG5cbiAgLyoqIEBkZXNjcmlwdGlvbiBLZXkgZm9yIG9uZS10by1vbmUgcmVsYXRpb24gbWV0YWRhdGEgKi9cbiAgT05FX1RPX09ORSA9IGAke1JFTEFUSU9OfS5vbmUtdG8tb25lYCxcblxuICAvKiogQGRlc2NyaXB0aW9uIEtleSBmb3Igb25lLXRvLW1hbnkgcmVsYXRpb24gbWV0YWRhdGEgKi9cbiAgT05FX1RPX01BTlkgPSBgJHtSRUxBVElPTn0ub25lLXRvLW1hbnlgLFxuXG4gIC8qKiBAZGVzY3JpcHRpb24gS2V5IGZvciBtYW55LXRvLW9uZSByZWxhdGlvbiBtZXRhZGF0YSAqL1xuICBNQU5ZX1RPX09ORSA9IGAke1JFTEFUSU9OfS5tYW55LXRvLW9uZWAsXG4gIC8qKiBAZGVzY3JpcHRpb24gS2V5IGZvciBtYW55LXRvLW9uZSByZWxhdGlvbiBtZXRhZGF0YSAqL1xuICBNQU5ZX1RPX01BTlkgPSBgJHtSRUxBVElPTn0ubWFueS10by1tYW55YCxcblxuICAvKiogQGRlc2NyaXB0aW9uIEtleSBmb3IgcG9wdWxhdGUgbWV0YWRhdGEgKi9cbiAgUE9QVUxBVEUgPSBcInBvcHVsYXRlXCIsXG4gIC8qKiBAZGVzY3JpcHRpb24gS2V5IGZvciBwb3B1bGF0ZSBtZXRhZGF0YSAqL1xuICBOT19WQUxJREFURSA9IFwibm8tdmFsaWRhdGVcIixcbiAgLyoqIEBkZXNjcmlwdGlvbiBLZXkgZm9yIG1pZ3JhdGlvbiBjbGFzc2VzICovXG4gIE1JR1JBVElPTiA9IFwibWlncmF0aW9uXCIsXG5cbiAgU1RBVEVNRU5UID0gXCJzdGF0ZW1lbnRcIixcblxuICBRVUVSWSA9IFwicXVlcnlcIixcblxuICBVVUlEID0gXCJ1dWlkXCIsXG5cbiAgVEFHX0ZPUl9ERUxFVElPTiA9IFwidGFnX2Zvcl9kZWxldGlvblwiLFxuXG4gIElOSVRJQUxJWkFUSU9OID0gXCJpbml0aWFsaXphdGlvblwiLFxuICBTSFVURE9XTiA9IFwic2h1dGRvd25cIixcblxuICBCWV9LRVkgPSBcImJ5LWtleVwiLFxuXG4gIEFVVEggPSBcImF1dGhcIixcblxuICBBVVRIX1JPTEUgPSBcImF1dGgtcm9sZVwiLFxuXG4gIERFQ0FGX1JPVVRFID0gXCJEZWNhZlJvdXRlXCIsXG5cbiAgVEhST1RUTEUgPSBcInRocm90dGxlXCIsXG5cbiAgREVGQVVMVF9RVUVSWV9BVFRSID0gXCJkZWZhdWx0LXF1ZXJ5LWF0dHJcIixcbn1cblxuZXhwb3J0IGNvbnN0IERlZmF1bHRDb250ZXh0RmxhZ3M6IENvbnRleHRGbGFnczxhbnk+ID0gT2JqZWN0LmFzc2lnbihcbiAge30sXG4gIHtcbiAgICBpZ25vcmVEZXZTYWZlR3VhcmRzOiBmYWxzZSxcbiAgfVxuKSBhcyBDb250ZXh0RmxhZ3M8YW55PjtcblxuZXhwb3J0IGNvbnN0IERlZmF1bHRBZGFwdGVyRmxhZ3M6IEFkYXB0ZXJGbGFncyA9IE9iamVjdC5hc3NpZ24oXG4gIHt9LFxuICBEZWZhdWx0UmVwb3NpdG9yeUZsYWdzLFxuICB7XG4gICAgZW5mb3JjZVVwZGF0ZVZhbGlkYXRpb246IHRydWUsXG4gICAgYWxsb3dSYXdTdGF0ZW1lbnRzOiB0cnVlLFxuICAgIGZvcmNlUHJlcGFyZVNpbXBsZVF1ZXJpZXM6IGZhbHNlLFxuICAgIGZvcmNlUHJlcGFyZUNvbXBsZXhRdWVyaWVzOiBmYWxzZSxcbiAgICBjYWNoZUZvclBvcHVsYXRlOiB7fSxcbiAgICBwcmVmZXJGcm9tQ2FjaGU6IGZhbHNlLFxuICAgIG5vRW1pdDogZmFsc2UsXG4gICAgbm9FbWl0U2luZ2xlOiBmYWxzZSxcbiAgICBub0VtaXRCdWxrOiBmYWxzZSxcbiAgICBicmVha09uU2luZ2xlRmFpbHVyZUluQnVsazogdHJ1ZSxcbiAgICBvYnNlcnZlRnVsbFJlc3VsdDogdHJ1ZSxcbiAgICBwYWdpbmF0ZUJ5Qm9va21hcms6IGZhbHNlLFxuICAgIGRyeVJ1bjogZmFsc2UsXG4gICAgYWZ0ZXJRdWVyeUhhbmRsZXJzOiBmYWxzZSxcbiAgfVxuKSBhcyBBZGFwdGVyRmxhZ3M7XG5cbmV4cG9ydCBjb25zdCBUcmFuc2FjdGlvbk9wZXJhdGlvbktleXM6IChcbiAgfCBzdHJpbmdcbiAgfCBPcGVyYXRpb25LZXlzXG4gIHwgQnVsa0NydWRPcGVyYXRpb25LZXlzXG4gIHwgUGVyc2lzdGVuY2VLZXlzXG4gIHwgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzXG4pW10gPSBbXG4gIE9wZXJhdGlvbktleXMuQ1JFQVRFLFxuICBPcGVyYXRpb25LZXlzLlVQREFURSxcbiAgT3BlcmF0aW9uS2V5cy5ERUxFVEUsXG4gIEJ1bGtDcnVkT3BlcmF0aW9uS2V5cy5DUkVBVEVfQUxMLFxuICBCdWxrQ3J1ZE9wZXJhdGlvbktleXMuVVBEQVRFX0FMTCxcbiAgQnVsa0NydWRPcGVyYXRpb25LZXlzLkRFTEVURV9BTEwsXG5dO1xuXG5leHBvcnQgY29uc3QgTm9uVHJhbnNhY3Rpb25PcGVyYXRpb25LZXlzOiAoXG4gIHwgc3RyaW5nXG4gIHwgT3BlcmF0aW9uS2V5c1xuICB8IEJ1bGtDcnVkT3BlcmF0aW9uS2V5c1xuICB8IFBlcnNpc3RlbmNlS2V5c1xuICB8IFByZXBhcmVkU3RhdGVtZW50S2V5c1xuKVtdID0gW09wZXJhdGlvbktleXMuUkVBRCwgQnVsa0NydWRPcGVyYXRpb25LZXlzLlJFQURfQUxMXTtcblxuZXhwb3J0IGNvbnN0IFNlbGVjdE9wZXJhdGlvbktleXM6IChcbiAgfCBzdHJpbmdcbiAgfCBPcGVyYXRpb25LZXlzXG4gIHwgQnVsa0NydWRPcGVyYXRpb25LZXlzXG4gIHwgUGVyc2lzdGVuY2VLZXlzXG4gIHwgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzXG4pW10gPSBbUGVyc2lzdGVuY2VLZXlzLlNUQVRFTUVOVCwgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLkZJTkRfT05FX0JZXTtcblxuZXhwb3J0IGNvbnN0IE11bHRpcGxlU2VsZWN0T3BlcmF0aW9uS2V5czogKFxuICB8IHN0cmluZ1xuICB8IE9wZXJhdGlvbktleXNcbiAgfCBCdWxrQ3J1ZE9wZXJhdGlvbktleXNcbiAgfCBQZXJzaXN0ZW5jZUtleXNcbiAgfCBQcmVwYXJlZFN0YXRlbWVudEtleXNcbilbXSA9IFtcbiAgUGVyc2lzdGVuY2VLZXlzLlFVRVJZLFxuICBQcmVwYXJlZFN0YXRlbWVudEtleXMuUEFHRV9CWSxcbiAgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLkxJU1RfQlksXG4gIFByZXBhcmVkU3RhdGVtZW50S2V5cy5GSU5EX0JZLFxuICBQcmVwYXJlZFN0YXRlbWVudEtleXMuRklORCxcbiAgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLlBBR0UsXG5dO1xuXG5leHBvcnQgY29uc3QgUGFnaW5hdGlvbk9wZXJhdGlvbktleXM6IChcbiAgfCBzdHJpbmdcbiAgfCBPcGVyYXRpb25LZXlzXG4gIHwgQnVsa0NydWRPcGVyYXRpb25LZXlzXG4gIHwgUGVyc2lzdGVuY2VLZXlzXG4gIHwgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzXG4pW10gPSBbUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLlBBR0VfQlksIFByZXBhcmVkU3RhdGVtZW50S2V5cy5QQUdFXTtcbiJdfQ==
@@ -56,4 +56,4 @@ export function uuid(update = false, seed, ...args) {
56
56
  })
57
57
  .apply();
58
58
  }
59
- //# sourceMappingURL=decorators.js.map
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wZXJzaXN0ZW5jZS9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsdUJBQW9CO0FBQzlDLE9BQU8sRUFBUyxRQUFRLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQ0wsU0FBUyxFQUNULFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxHQUNULE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLHdCQUFxQjtBQUdwQzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsdUJBQXVCLENBSzNDLE9BQXFCLEVBQ3JCLElBQWtCLEVBQ2xCLEdBQVksRUFDWixLQUFRO0lBRVIsSUFDRSxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDO1FBQ3RDLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFdBQVcsRUFDakMsQ0FBQztRQUNELE9BQU87SUFDVCxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQzFCLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ3ZDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUNBLEtBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFvQkQsTUFBTSxVQUFVLElBQUksQ0FDbEIsU0FNbUIsS0FBSyxFQUN4QixJQUV5RSxFQUN6RSxHQUFHLElBQVc7SUFFZCxJQUFJLE9BQU8sTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ2pDLElBQUksR0FBRyxNQUFNLENBQUM7UUFDZCxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxNQUFNLGFBQWEsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDO0lBRTNDLFNBQVMsSUFBSSxDQUNYLE1BQWUsRUFDZixJQUF5QyxFQUN6QyxHQUFHLElBQVc7UUFFZCxNQUFNLElBQUksR0FBaUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3RFLE1BQU0sVUFBVSxHQUFVO1lBQ3hCLFFBQVEsRUFBRTtZQUNWLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO1lBQy9CLFFBQVEsQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxvQkFBb0I7U0FDaEYsQ0FBQztRQUNGLElBQUksTUFBTTtZQUNSLFVBQVUsQ0FBQyxJQUFJLENBQ2IsUUFBUSxDQUFDLHVCQUF1QixFQUFFLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUMxRCxDQUFDO1FBQ0osSUFBSSxDQUFDLE1BQU07WUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDekMsT0FBTyxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztTQUNqQyxNQUFNLENBQUM7UUFDTixTQUFTLEVBQUUsSUFBSTtRQUNmLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7S0FDOUIsQ0FBQztTQUNELEtBQUssRUFBRSxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBlcnNpc3RlbmNlS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgTW9kZWwsIHJlcXVpcmVkIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHtcbiAgZ2VuZXJhdGVkLFxuICBvbkNyZWF0ZSxcbiAgb25VcGRhdGUsXG4gIHJlYWRvbmx5LFxufSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IGFwcGx5LCBEZWNvcmF0aW9uIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyBDb250ZXh0T2YgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgUmVwbyB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L1JlcG9zaXRvcnlcIjtcbmltcG9ydCB7IFVVSUQgfSBmcm9tIFwiLi9nZW5lcmF0b3JzXCI7XG5pbXBvcnQgeyBDb250ZXh0dWFsQXJncyB9IGZyb20gXCIuLi91dGlscy9Db250ZXh0dWFsTG9nZ2VkQ2xhc3NcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSGFuZGxlciBmdW5jdGlvbiB0aGF0IHNldHMgYSB0aW1lc3RhbXAgcHJvcGVydHkgdG8gdGhlIGN1cnJlbnQgdGltZXN0YW1wLlxuICogQHN1bW1hcnkgVXBkYXRlcyBhIG1vZGVsIHByb3BlcnR5IHdpdGggdGhlIGN1cnJlbnQgdGltZXN0YW1wIGZyb20gdGhlIHJlcG9zaXRvcnkgY29udGV4dC5cbiAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gKiBAdGVtcGxhdGUgUiAtIFRoZSByZXBvc2l0b3J5IHR5cGUgZXh0ZW5kaW5nIElSZXBvc2l0b3J5XG4gKiBAdGVtcGxhdGUgViAtIFRoZSBkYXRhIHR5cGUgZm9yIHRoZSBvcGVyYXRpb25cbiAqIEB0ZW1wbGF0ZSBGIC0gVGhlIHJlcG9zaXRvcnkgZmxhZ3MgdHlwZVxuICogQHRlbXBsYXRlIEMgLSBUaGUgY29udGV4dCB0eXBlXG4gKiBAcGFyYW0ge0N9IGNvbnRleHQgLSBUaGUgcmVwb3NpdG9yeSBjb250ZXh0IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgdGltZXN0YW1wXG4gKiBAcGFyYW0ge1Z9IGRhdGEgLSBUaGUgZGF0YSBiZWluZyBwcm9jZXNzZWRcbiAqIEBwYXJhbSBrZXkgLSBUaGUgcHJvcGVydHkga2V5IHRvIHVwZGF0ZVxuICogQHBhcmFtIHtNfSBtb2RlbCAtIFRoZSBtb2RlbCBpbnN0YW5jZSBiZWluZyB1cGRhdGVkXG4gKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB0aW1lc3RhbXAgaGFzIGJlZW4gc2V0XG4gKiBAZnVuY3Rpb24gdXVpZENyZWF0ZVVwZGF0ZUhhbmRsZXJcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHV1aWRDcmVhdGVVcGRhdGVIYW5kbGVyPFxuICBNIGV4dGVuZHMgTW9kZWw8Ym9vbGVhbj4sXG4gIFIgZXh0ZW5kcyBSZXBvPE0+LFxuPihcbiAgdGhpczogUixcbiAgY29udGV4dDogQ29udGV4dE9mPFI+LFxuICBkYXRhOiBVVUlETWV0YWRhdGEsXG4gIGtleToga2V5b2YgTSxcbiAgbW9kZWw6IE1cbik6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoXG4gICAgY29udGV4dC5nZXQoXCJhbGxvd0dlbmVyYXRpb25PdmVycmlkZVwiKSAmJlxuICAgIHR5cGVvZiBtb2RlbFtrZXldICE9PSBcInVuZGVmaW5lZFwiXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgbGV0IHsgc2VlZCwgYXJncyB9ID0gZGF0YTtcbiAgaWYgKHNlZWQgJiYgdHlwZW9mIHNlZWQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIHNlZWQgPSBzZWVkKG1vZGVsLCAuLi4oYXJncyB8fCBbXSksIGNvbnRleHQpO1xuICB9XG4gIChtb2RlbCBhcyBhbnkpW2tleV0gPSBhd2FpdCBVVUlELmluc3RhbmNlLmdlbmVyYXRlKHNlZWQpO1xufVxuXG5leHBvcnQgdHlwZSBVVUlETWV0YWRhdGEgPSB7XG4gIHVwZGF0ZTogYm9vbGVhbjtcbiAgc2VlZD86XG4gICAgfCBzdHJpbmdcbiAgICB8ICg8TSBleHRlbmRzIE1vZGVsPihtb2RlbDogTSwgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8YW55PikgPT4gc3RyaW5nKTtcbiAgYXJncz86IGFueVtdO1xufTtcbmV4cG9ydCBmdW5jdGlvbiB1dWlkKC4uLmFyZ3M6IGFueVtdKTogKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleT86IGFueSkgPT4gdm9pZDtcbmV4cG9ydCBmdW5jdGlvbiB1dWlkKFxuICB1cGRhdGU6IGJvb2xlYW4sXG4gIC4uLmFyZ3M6IGFueVtdXG4pOiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5PzogYW55KSA9PiB2b2lkO1xuZXhwb3J0IGZ1bmN0aW9uIHV1aWQoXG4gIHNlZWQ6XG4gICAgfCBzdHJpbmdcbiAgICB8ICg8TSBleHRlbmRzIE1vZGVsPihtb2RlbDogTSwgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8YW55PikgPT4gc3RyaW5nKSxcbiAgLi4uYXJnczogYW55W11cbik6ICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk/OiBhbnkpID0+IHZvaWQ7XG5leHBvcnQgZnVuY3Rpb24gdXVpZChcbiAgdXBkYXRlOlxuICAgIHwgYm9vbGVhblxuICAgIHwgc3RyaW5nXG4gICAgfCAoPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgICAgIG1vZGVsOiBNLFxuICAgICAgICAuLi5hcmdzOiBDb250ZXh0dWFsQXJnczxhbnk+XG4gICAgICApID0+IHN0cmluZykgPSBmYWxzZSxcbiAgc2VlZD86XG4gICAgfCBzdHJpbmdcbiAgICB8ICg8TSBleHRlbmRzIE1vZGVsPihtb2RlbDogTSwgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8YW55PikgPT4gc3RyaW5nKSxcbiAgLi4uYXJnczogYW55W11cbik6ICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk/OiBhbnkpID0+IHZvaWQge1xuICBpZiAodHlwZW9mIHVwZGF0ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgc2VlZCA9IHVwZGF0ZTtcbiAgICB1cGRhdGUgPSBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGRlY29yYXRpb25LZXkgPSBQZXJzaXN0ZW5jZUtleXMuVVVJRDtcblxuICBmdW5jdGlvbiB1dWlkKFxuICAgIHVwZGF0ZTogYm9vbGVhbixcbiAgICBzZWVkOiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKSB8IHVuZGVmaW5lZCxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApIHtcbiAgICBjb25zdCBtZXRhOiBVVUlETWV0YWRhdGEgPSB7IHVwZGF0ZTogdXBkYXRlLCBzZWVkOiBzZWVkLCBhcmdzOiBhcmdzIH07XG4gICAgY29uc3QgZGVjb3JhdG9yczogYW55W10gPSBbXG4gICAgICByZXF1aXJlZCgpLFxuICAgICAgZ2VuZXJhdGVkKFBlcnNpc3RlbmNlS2V5cy5VVUlEKSxcbiAgICAgIG9uQ3JlYXRlKHV1aWRDcmVhdGVVcGRhdGVIYW5kbGVyLCBtZXRhLCB7IHByaW9yaXR5OiA1NCB9KSwgLy8gb25lIGFmdGVyIGNvbXBvc2VcbiAgICBdO1xuICAgIGlmICh1cGRhdGUpXG4gICAgICBkZWNvcmF0b3JzLnB1c2goXG4gICAgICAgIG9uVXBkYXRlKHV1aWRDcmVhdGVVcGRhdGVIYW5kbGVyLCBtZXRhLCB7IHByaW9yaXR5OiA1NCB9KVxuICAgICAgKTtcbiAgICBpZiAoIXVwZGF0ZSkgZGVjb3JhdG9ycy5wdXNoKHJlYWRvbmx5KCkpO1xuICAgIHJldHVybiBhcHBseSguLi5kZWNvcmF0b3JzKTtcbiAgfVxuXG4gIHJldHVybiBEZWNvcmF0aW9uLmZvcihkZWNvcmF0aW9uS2V5KVxuICAgIC5kZWZpbmUoe1xuICAgICAgZGVjb3JhdG9yOiB1dWlkLFxuICAgICAgYXJnczogW3VwZGF0ZSwgc2VlZCwgLi4uYXJnc10sXG4gICAgfSlcbiAgICAuYXBwbHkoKTtcbn1cbiJdfQ==
@@ -37,4 +37,4 @@ export class MigrationRuleError extends MigrationError {
37
37
  super(msg, MigrationRuleError.name);
38
38
  }
39
39
  }
40
- //# sourceMappingURL=errors.js.map
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BlcnNpc3RlbmNlL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFeEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFDSCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsYUFBYTtJQUNqRCxZQUFZLEdBQTZCO1FBQ3ZDLEtBQUssQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxjQUFlLFNBQVEsYUFBYTtJQUMvQyxZQUFZLEdBQTZCLEVBQUUsSUFBSSxHQUFHLGNBQWMsQ0FBQyxJQUFJO1FBQ25FLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxjQUFjO0lBQ3BELFlBQVksR0FBNkI7UUFDdkMsS0FBSyxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEVycm9yIHRocm93biB3aGVuIGFuIHVuc3VwcG9ydGVkIG9wZXJhdGlvbiBpcyBhdHRlbXB0ZWRcbiAqIEBzdW1tYXJ5IFRoaXMgZXJyb3IgaXMgdGhyb3duIHdoZW4gYW4gb3BlcmF0aW9uIGlzIHJlcXVlc3RlZCB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGN1cnJlbnRcbiAqIHBlcnNpc3RlbmNlIGFkYXB0ZXIgb3IgY29uZmlndXJhdGlvbi4gSXQgZXh0ZW5kcyB0aGUgQmFzZUVycm9yIGNsYXNzIGFuZCBzZXRzIGEgNTAwIHN0YXR1cyBjb2RlLlxuICogQHBhcmFtIHtzdHJpbmd8RXJyb3J9IG1zZyAtIFRoZSBlcnJvciBtZXNzYWdlIG9yIGFuIEVycm9yIG9iamVjdCB0byB3cmFwXG4gKiBAY2xhc3MgVW5zdXBwb3J0ZWRFcnJvclxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIFRocm93aW5nIGFuIFVuc3VwcG9ydGVkRXJyb3JcbiAqIGlmICghYWRhcHRlci5zdXBwb3J0c1RyYW5zYWN0aW9ucygpKSB7XG4gKiAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEVycm9yKCdUcmFuc2FjdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBhZGFwdGVyJyk7XG4gKiB9XG4gKlxuICogLy8gQ2F0Y2hpbmcgYW4gVW5zdXBwb3J0ZWRFcnJvclxuICogdHJ5IHtcbiAqICAgYXdhaXQgYWRhcHRlci5iZWdpblRyYW5zYWN0aW9uKCk7XG4gKiB9IGNhdGNoIChlcnJvcikge1xuICogICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBVbnN1cHBvcnRlZEVycm9yKSB7XG4gKiAgICAgY29uc29sZS5lcnJvcignT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQ6JywgZXJyb3IubWVzc2FnZSk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgVW5zdXBwb3J0ZWRFcnJvciBleHRlbmRzIEludGVybmFsRXJyb3Ige1xuICBjb25zdHJ1Y3Rvcihtc2c6IHN0cmluZyB8IEVycm9yIHwgdW5rbm93bikge1xuICAgIHN1cGVyKG1zZywgVW5zdXBwb3J0ZWRFcnJvci5uYW1lLCA1MDApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNaWdyYXRpb25FcnJvciBleHRlbmRzIEludGVybmFsRXJyb3Ige1xuICBjb25zdHJ1Y3Rvcihtc2c6IHN0cmluZyB8IEVycm9yIHwgdW5rbm93biwgbmFtZSA9IE1pZ3JhdGlvbkVycm9yLm5hbWUpIHtcbiAgICBzdXBlcihtc2csIG5hbWUsIDUwMCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1pZ3JhdGlvblJ1bGVFcnJvciBleHRlbmRzIE1pZ3JhdGlvbkVycm9yIHtcbiAgY29uc3RydWN0b3IobXNnOiBzdHJpbmcgfCBFcnJvciB8IHVua25vd24pIHtcbiAgICBzdXBlcihtc2csIE1pZ3JhdGlvblJ1bGVFcnJvci5uYW1lKTtcbiAgfVxufVxuIl19
@@ -57,4 +57,4 @@ export function getFilters(repo) {
57
57
  });
58
58
  return filters;
59
59
  }
60
- //# sourceMappingURL=event-filters.js.map
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtZmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wZXJzaXN0ZW5jZS9ldmVudC1maWx0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGFBQWEsRUFDYixhQUFhLEdBQ2QsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQUUsS0FBSyxFQUFvQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFFTCxxQkFBcUIsR0FDdEIsNENBQXVDO0FBQ3hDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSx1QkFBb0I7QUFHdkQsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUE0QjtJQUN2RCxPQUFPLFlBQVksQ0FBQyxLQUFLLEVBQUU7UUFDekIsYUFBYSxDQUFDLE1BQU07UUFDcEIscUJBQXFCLENBQUMsVUFBVTtLQUNqQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUE0QjtJQUN2RCxPQUFPLFlBQVksQ0FBQyxLQUFLLEVBQUU7UUFDekIsYUFBYSxDQUFDLE1BQU07UUFDcEIscUJBQXFCLENBQUMsVUFBVTtLQUNqQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUE0QjtJQUN2RCxPQUFPLFlBQVksQ0FBQyxLQUFLLEVBQUU7UUFDekIsYUFBYSxDQUFDLE1BQU07UUFDcEIscUJBQXFCLENBQUMsVUFBVTtLQUNqQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEtBQTRCO0lBQzlELE9BQU8sWUFBWSxDQUFDLEtBQUssRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0FBQ3ZELENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLEtBQTRCO0lBQ3ZELE9BQU8sWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBNEI7SUFDckQsT0FBTyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0FBQ25FLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUMxQixLQUE0QixFQUM1QixHQUF1QjtJQUV2QixPQUFPLENBQ0wsS0FBMkIsRUFDM0IsS0FBdUIsRUFDdkIsRUFBWSxFQUNaLEdBQUcsSUFBeUIsRUFDNUIsRUFBRTtRQUNGLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtZQUMzQixNQUFNLElBQUksYUFBYSxDQUNyQixtREFBbUQsQ0FDcEQsQ0FBQztRQUNKLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQ3ZELElBQUksRUFDSixZQUFZLENBQ2IsQ0FBQztRQUNGLEdBQUcsQ0FBQyxLQUFLLENBQ1AsYUFBYSxLQUFLLGFBQWEsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FDMUYsQ0FBQztRQUNGLE9BQU8sQ0FDTCxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVE7WUFDeEIsQ0FBQyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUk7WUFDdEUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0RCxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUNwQixDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUlELE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHO0lBQ3RDLFlBQVk7SUFDWixZQUFZO0lBQ1osWUFBWTtJQUNaLG1CQUFtQjtJQUNuQixZQUFZO0lBQ1osVUFBVTtDQUNYLENBQUM7QUFFRixNQUFNLFVBQVUsVUFBVSxDQUN4QixJQUFhO0lBRWIsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztJQUM1RCxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7UUFDOUMsT0FBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFtQixDQUFDO0lBQzlELENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxPQUFjLENBQUM7QUFDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdG9yLCBNZXRhZGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHtcbiAgQnVsa0NydWRPcGVyYXRpb25LZXlzLFxuICBJbnRlcm5hbEVycm9yLFxuICBPcGVyYXRpb25LZXlzLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IEFsbE9wZXJhdGlvbktleXMsIEV2ZW50SWRzLCBPYnNlcnZlckZpbHRlciB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBNb2RlbCwgTW9kZWxDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7XG4gIENvbnRleHR1YWxBcmdzLFxuICBDb250ZXh0dWFsTG9nZ2VkQ2xhc3MsXG59IGZyb20gXCIuLi91dGlscy9Db250ZXh0dWFsTG9nZ2VkQ2xhc3NcIjtcbmltcG9ydCB7IFRyYW5zYWN0aW9uT3BlcmF0aW9uS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHR5cGUgeyBSZXBvIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvUmVwb3NpdG9yeVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gb25seU9uQ3JlYXRlKGNsYXp6OiBNb2RlbENvbnN0cnVjdG9yPGFueT4pIHtcbiAgcmV0dXJuIG9ubHlPbkZpbHRlcihjbGF6eiwgW1xuICAgIE9wZXJhdGlvbktleXMuQ1JFQVRFLFxuICAgIEJ1bGtDcnVkT3BlcmF0aW9uS2V5cy5DUkVBVEVfQUxMLFxuICBdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9ubHlPblVwZGF0ZShjbGF6ejogTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+KSB7XG4gIHJldHVybiBvbmx5T25GaWx0ZXIoY2xhenosIFtcbiAgICBPcGVyYXRpb25LZXlzLlVQREFURSxcbiAgICBCdWxrQ3J1ZE9wZXJhdGlvbktleXMuVVBEQVRFX0FMTCxcbiAgXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvbmx5T25EZWxldGUoY2xheno6IE1vZGVsQ29uc3RydWN0b3I8YW55Pikge1xuICByZXR1cm4gb25seU9uRmlsdGVyKGNsYXp6LCBbXG4gICAgT3BlcmF0aW9uS2V5cy5ERUxFVEUsXG4gICAgQnVsa0NydWRPcGVyYXRpb25LZXlzLkRFTEVURV9BTEwsXG4gIF0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb25seU9uVHJhbnNhY3Rpb25hbChjbGF6ejogTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+KSB7XG4gIHJldHVybiBvbmx5T25GaWx0ZXIoY2xhenosIFRyYW5zYWN0aW9uT3BlcmF0aW9uS2V5cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvbmx5T25TaW5nbGUoY2xheno6IE1vZGVsQ29uc3RydWN0b3I8YW55Pikge1xuICByZXR1cm4gb25seU9uRmlsdGVyKGNsYXp6LCBPYmplY3QudmFsdWVzKE9wZXJhdGlvbktleXMpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9ubHlPbkJ1bGsoY2xheno6IE1vZGVsQ29uc3RydWN0b3I8YW55Pikge1xuICByZXR1cm4gb25seU9uRmlsdGVyKGNsYXp6LCBPYmplY3QudmFsdWVzKEJ1bGtDcnVkT3BlcmF0aW9uS2V5cykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb25seU9uRmlsdGVyKFxuICBjbGF6ejogTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+LFxuICBvcHM6IEFsbE9wZXJhdGlvbktleXNbXVxuKTogT2JzZXJ2ZXJGaWx0ZXIge1xuICByZXR1cm4gKFxuICAgIHRhYmxlOiBDb25zdHJ1Y3RvciB8IHN0cmluZyxcbiAgICBldmVudDogQWxsT3BlcmF0aW9uS2V5cyxcbiAgICBpZDogRXZlbnRJZHMsXG4gICAgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8YW55PlxuICApID0+IHtcbiAgICBpZiAodHlwZW9mIGNsYXp6ID09PSBcInN0cmluZ1wiKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIGBjbGF6eiBjYW5ub3QgYmUgc3RyaW5nLiBUaGlzIHNob3VsZCBiZSBpbXBvc3NpYmxlYFxuICAgICAgKTtcbiAgICBjb25zdCB7IGxvZyB9ID0gQ29udGV4dHVhbExvZ2dlZENsYXNzLnByb3RvdHlwZVtcImxvZ0N0eFwiXShcbiAgICAgIGFyZ3MsXG4gICAgICBvbmx5T25GaWx0ZXJcbiAgICApO1xuICAgIGxvZy5zaWxseShcbiAgICAgIGBmaWx0ZXJpbmcgJHtldmVudH0gZXZlbnQgZm9yJHt0YWJsZSA/IGAgJHtNb2RlbC50YWJsZU5hbWUodGFibGUpIHx8IHRhYmxlfWAgOiBgYH0gJHtpZH1gXG4gICAgKTtcbiAgICByZXR1cm4gKFxuICAgICAgKHR5cGVvZiB0YWJsZSA9PT0gXCJzdHJpbmdcIlxuICAgICAgICA/IHRhYmxlID09PSBNb2RlbC50YWJsZU5hbWUoY2xhenopIHx8IHRhYmxlID09PSBjbGF6ei5jb25zdHJ1Y3Rvci5uYW1lXG4gICAgICAgIDogTWV0YWRhdGEuY29uc3RyKGNsYXp6KSA9PT0gTWV0YWRhdGEuY29uc3RyKHRhYmxlKSkgJiZcbiAgICAgIG9wcy5pbmNsdWRlcyhldmVudClcbiAgICApO1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBBdmFpbGFibGVGaWx0ZXJzID0gdHlwZW9mIERlZmF1bHRSZXBvc2l0b3J5RmlsdGVycztcblxuZXhwb3J0IGNvbnN0IERlZmF1bHRSZXBvc2l0b3J5RmlsdGVycyA9IHtcbiAgb25seU9uQ3JlYXRlLFxuICBvbmx5T25VcGRhdGUsXG4gIG9ubHlPbkRlbGV0ZSxcbiAgb25seU9uVHJhbnNhY3Rpb25hbCxcbiAgb25seU9uU2luZ2xlLFxuICBvbmx5T25CdWxrLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbHRlcnM8TSBleHRlbmRzIE1vZGVsPihcbiAgcmVwbzogUmVwbzxNPlxuKTogUmVjb3JkPGtleW9mIHR5cGVvZiBEZWZhdWx0UmVwb3NpdG9yeUZpbHRlcnMsIE9ic2VydmVyRmlsdGVyPiB7XG4gIGNvbnN0IGZpbHRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCBEZWZhdWx0UmVwb3NpdG9yeUZpbHRlcnMpO1xuICBPYmplY3QuZW50cmllcyhmaWx0ZXJzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAoZmlsdGVycyBhcyBhbnkpW2tleV0gPSB2YWx1ZShyZXBvLmNsYXNzKSBhcyBPYnNlcnZlckZpbHRlcjtcbiAgfSk7XG4gIHJldHVybiBmaWx0ZXJzIGFzIGFueTtcbn1cbiJdfQ==
@@ -28,4 +28,4 @@ export class Serial {
28
28
  return Serial._instance;
29
29
  }
30
30
  }
31
- //# sourceMappingURL=generators.js.map
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wZXJzaXN0ZW5jZS9nZW5lcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sT0FBTyxJQUFJO0lBR2YsNkRBQTZEO0lBQzdELFFBQVEsQ0FBQyxJQUFhO1FBQ3BCLE9BQU8sc0NBQXNDLENBQUMsT0FBTyxDQUNuRCxPQUFPLEVBQ1AsVUFBVSxDQUFDO1lBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUNoQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDckMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sS0FBSyxRQUFRO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNqRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLE1BQU07SUFBbkI7UUFHVSxVQUFLLEdBQUcsRUFBRSxDQUFDO0lBYXJCLENBQUM7SUFYQyxRQUFRLENBQUMsSUFBYTtRQUNwQixJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQXNCLENBQUM7UUFDekUsT0FBTyxDQUFFLElBQTBCLEdBQUcsQ0FBQyxDQUFDO2FBQ3JDLFFBQVEsRUFBRTthQUNWLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxNQUFNLEtBQUssUUFBUTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVM7WUFBRSxNQUFNLENBQUMsU0FBUyxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7UUFDdkQsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdG9yPE9VVCBleHRlbmRzIHN0cmluZyB8IG51bWJlciA9IHN0cmluZz4ge1xuICBnZW5lcmF0ZShwcmV2PzogT1VUKTogT1VUIHwgUHJvbWlzZTxPVVQ+O1xufVxuXG5leHBvcnQgY2xhc3MgVVVJRCBpbXBsZW1lbnRzIEdlbmVyYXRvciB7XG4gIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZTogVVVJRDtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIGdlbmVyYXRlKHByZXY/OiBzdHJpbmcpOiBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBcInh4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eFwiLnJlcGxhY2UoXG4gICAgICAvW3h5XS9nLFxuICAgICAgZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgY29uc3QgciA9IChNYXRoLnJhbmRvbSgpICogMTYpIHwgMCxcbiAgICAgICAgICB2ID0gYyA9PSBcInhcIiA/IHIgOiAociAmIDB4MykgfCAweDg7XG4gICAgICAgIHJldHVybiB2LnRvU3RyaW5nKDE2KTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGdldCBpbnN0YW5jZSgpOiBVVUlEIHtcbiAgICBpZiAoIVVVSUQuX2luc3RhbmNlKSBVVUlELl9pbnN0YW5jZSA9IG5ldyBVVUlEKCk7XG4gICAgcmV0dXJuIFVVSUQuX2luc3RhbmNlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTZXJpYWwgaW1wbGVtZW50cyBHZW5lcmF0b3Ige1xuICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IFNlcmlhbDtcblxuICBwcml2YXRlIGNvdW50ID0gMTQ7XG5cbiAgZ2VuZXJhdGUocHJldj86IHN0cmluZyk6IHN0cmluZyB8IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcHJldiA9ICgocHJldiA/IHBhcnNlSW50KHByZXYgYXMgc3RyaW5nKSA6IDApIHx8IDApIGFzIHVua25vd24gYXMgc3RyaW5nO1xuICAgIHJldHVybiAoKHByZXYgYXMgdW5rbm93biBhcyBudW1iZXIpICsgMSlcbiAgICAgIC50b1N0cmluZygpXG4gICAgICAucGFkU3RhcnQodGhpcy5jb3VudCwgXCIwXCIpO1xuICB9XG5cbiAgc3RhdGljIGdldCBpbnN0YW5jZSgpOiBTZXJpYWwge1xuICAgIGlmICghU2VyaWFsLl9pbnN0YW5jZSkgU2VyaWFsLl9pbnN0YW5jZSA9IG5ldyBTZXJpYWwoKTtcbiAgICByZXR1cm4gU2VyaWFsLl9pbnN0YW5jZTtcbiAgfVxufVxuIl19
@@ -17,4 +17,4 @@ export * from "./Sequence.js";
17
17
  export * from "./types.js";
18
18
  export * from "./transactions.js";
19
19
  export * from "./Adapter.js";
20
- //# sourceMappingURL=index.js.map
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGVyc2lzdGVuY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILDJCQUEyQjtBQUMzQiw4QkFBMkI7QUFDM0IsK0JBQTRCO0FBQzVCLDZCQUEwQjtBQUMxQixpQ0FBOEI7QUFDOUIsZ0NBQTZCO0FBQzdCLDRCQUF5QjtBQUN6QixnQ0FBNkI7QUFDN0IsbUNBQWdDO0FBQ2hDLHFDQUFrQztBQUNsQyw4QkFBMkI7QUFDM0IsMkJBQXdCO0FBQ3hCLGtDQUErQjtBQUMvQiw2QkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXNjcmlwdGlvbiBFeHBvcnRzIGZvciB0aGUgcGVyc2lzdGVuY2UgbW9kdWxlLlxuICogQHN1bW1hcnkgVGhpcyBmaWxlIGV4cG9ydHMgYWxsIHRoZSBuZWNlc3NhcnkgY29tcG9uZW50cyBmb3IgdGhlIHBlcnNpc3RlbmNlIGZ1bmN0aW9uYWxpdHksIGluY2x1ZGluZyBEaXNwYXRjaCwgY29uc3RhbnRzLCBhbmQgbW9yZS5cbiAqIEBtb2R1bGUgY29yZS9wZXJzaXN0ZW5jZVxuICovXG4vLyBwdXJwb3NlbHkgaW4gZmlyc3QgcGxhY2VcbmV4cG9ydCAqIGZyb20gXCIuL0Rpc3BhdGNoXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0NvbnRleHRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0NvbnRleHRMb2NrXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kZWNvcmF0b3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lcnJvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2dlbmVyYXRvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2V2ZW50LWZpbHRlcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL09ic2VydmVySGFuZGxlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vU2VxdWVuY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90cmFuc2FjdGlvbnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0FkYXB0ZXJcIjtcbiJdfQ==
@@ -64,4 +64,4 @@ Decoration.for(TransactionalKeys.TRANSACTIONAL)
64
64
  decorator: innerTransactional,
65
65
  })
66
66
  .apply();
67
- //# sourceMappingURL=transactions.js.map
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BlcnNpc3RlbmNlL3RyYW5zYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxzQ0FBaUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxzQ0FBaUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxxQkFBK0I7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBRSx5QkFBbUM7QUFFekQsTUFBTSxVQUFVLHFCQUFxQixDQUFDLEdBQVEsRUFBRSxHQUFHLElBQVc7SUFDNUQsSUFBSSxPQUFnRCxDQUFDO0lBQ3JELElBQUksR0FBRyxZQUFZLFlBQVk7UUFDN0IsT0FBTyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBc0MsQ0FBQztJQUM1RCxJQUFJLEdBQUcsWUFBWSxVQUFVO1FBQzNCLE9BQU8sR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFnQyxDQUFDO0lBQzFELElBQUksR0FBRyxZQUFZLE9BQU87UUFBRSxPQUFPLEdBQUcsR0FBRyxDQUFDO0lBQzFDLElBQUksQ0FBQyxPQUFPO1FBQ1YsTUFBTSxJQUFJLGFBQWEsQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0lBQzNFLE9BQU8sT0FBTyxDQUFDLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLEdBQVEsRUFBRSxHQUFHLElBQVc7SUFDckQsT0FBTyxJQUFJLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzlELENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLEdBQUcsSUFBVztJQUN4QyxPQUFPLFVBQVUsTUFBVyxFQUFFLFdBQWlCLEVBQUUsVUFBZ0I7UUFDL0QsSUFBSSxDQUFDLFVBQVU7WUFDYixNQUFNLElBQUksYUFBYSxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDcEUsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMxQyxRQUFRLENBQUMsR0FBRyxDQUNWLE1BQU0sQ0FBQyxXQUFXLEVBQ2xCLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxFQUMxRDtZQUNFLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FDRixDQUFDO1FBQ0YsVUFBVSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFO1lBQzdDLEtBQUssQ0FBQyxLQUFLLENBQUksR0FBUSxFQUFFLE9BQVksRUFBRSxRQUFlO2dCQUNwRCxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQ25CLE1BQU0sT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUNsRCxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDWCxNQUFNLElBQUksR0FDUixHQUFHLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNuRSxHQUFHLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNqQyxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxPQUFZLENBQUM7Z0JBQ2pCLElBQUksQ0FBQztvQkFDSCxPQUFPLEdBQUcsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDdEQsQ0FBQztnQkFBQyxPQUFPLENBQVUsRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUM7d0JBQ0gsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN6QixDQUFDO29CQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7d0JBQ3BCLEdBQUcsQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ2pELENBQUM7b0JBQ0QsTUFBTSxDQUFDLENBQUM7Z0JBQ1YsQ0FBQztnQkFFRCxJQUFJLENBQUM7b0JBQ0gsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3ZCLENBQUM7Z0JBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztvQkFDcEIsTUFBTSxJQUFJLGFBQWEsQ0FBQyxrQ0FBa0MsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDakUsQ0FBQztnQkFFRCxPQUFPLE9BQU8sQ0FBQztZQUNqQixDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELFVBQVUsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDO0tBQzVDLE1BQU0sQ0FBQztJQUNOLFNBQVMsRUFBRSxrQkFBa0I7Q0FDdkIsQ0FBQztLQUNSLEtBQUssRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgRGVjb3JhdGlvbiwgTWV0YWRhdGEsIG1ldGhvZCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25hbEtleXMgfSBmcm9tIFwiQGRlY2FmLXRzL3RyYW5zYWN0aW9uYWwtZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgTW9kZWxTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL01vZGVsU2VydmljZVwiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L1JlcG9zaXRvcnlcIjtcbmltcG9ydCB7IEFkYXB0ZXIgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2UvQWRhcHRlclwiO1xuaW1wb3J0IHsgQ29udGV4dExvY2sgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2UvQ29udGV4dExvY2tcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFkYXB0ZXJUcmFuc2FjdGlvbihvYmo6IGFueSwgLi4uYXJnczogYW55W10pIHtcbiAgbGV0IGFkYXB0ZXI6IEFkYXB0ZXI8YW55LCBhbnksIGFueSwgYW55PiB8IHVuZGVmaW5lZDtcbiAgaWYgKG9iaiBpbnN0YW5jZW9mIE1vZGVsU2VydmljZSlcbiAgICBhZGFwdGVyID0gb2JqLnJlcG8uYWRhcHRlciBhcyBBZGFwdGVyPGFueSwgYW55LCBhbnksIGFueT47XG4gIGlmIChvYmogaW5zdGFuY2VvZiBSZXBvc2l0b3J5KVxuICAgIGFkYXB0ZXIgPSBvYmpbXCJhZGFwdGVyXCJdIGFzIEFkYXB0ZXI8YW55LCBhbnksIGFueSwgYW55PjtcbiAgaWYgKG9iaiBpbnN0YW5jZW9mIEFkYXB0ZXIpIGFkYXB0ZXIgPSBvYmo7XG4gIGlmICghYWRhcHRlcilcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgQ291bGQgbm90IGZpbmQgYWRhcHRlciB0byBleHRyYWN0IHRyYW5zYWN0aW9uYCk7XG4gIHJldHVybiBhZGFwdGVyLnRyYW5zYWN0aW9uTG9jayguLi5hcmdzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRleHRMb2NrKG9iajogYW55LCAuLi5hcmdzOiBhbnlbXSkge1xuICByZXR1cm4gbmV3IENvbnRleHRMb2NrKGdldEFkYXB0ZXJUcmFuc2FjdGlvbihvYmosIC4uLmFyZ3MpKTtcbn1cblxuZnVuY3Rpb24gaW5uZXJUcmFuc2FjdGlvbmFsKC4uLmRhdGE6IGFueVtdKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5PzogYW55LCBkZXNjcmlwdG9yPzogYW55KSB7XG4gICAgaWYgKCFkZXNjcmlwdG9yKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJUaGlzIGRlY29yYXRvciBvbmx5IGFwcGxpZXMgdG8gbWV0aG9kc1wiKTtcbiAgICBtZXRob2QoKSh0YXJnZXQsIHByb3BlcnR5S2V5LCBkZXNjcmlwdG9yKTtcbiAgICBNZXRhZGF0YS5zZXQoXG4gICAgICB0YXJnZXQuY29uc3RydWN0b3IsXG4gICAgICBNZXRhZGF0YS5rZXkoVHJhbnNhY3Rpb25hbEtleXMuVFJBTlNBQ1RJT05BTCwgcHJvcGVydHlLZXkpLFxuICAgICAge1xuICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgfVxuICAgICk7XG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IG5ldyBQcm94eShkZXNjcmlwdG9yLnZhbHVlLCB7XG4gICAgICBhc3luYyBhcHBseTxSPihvYmo6IGFueSwgdGhpc0FyZzogYW55LCBhcmdBcnJheTogYW55W10pOiBQcm9taXNlPFI+IHtcbiAgICAgICAgY29uc3QgeyBsb2csIGN0eCB9ID0gKFxuICAgICAgICAgIGF3YWl0IHRoaXNBcmdbXCJsb2dDdHhcIl0oYXJnQXJyYXksIG9iai5uYW1lLCB0cnVlKVxuICAgICAgICApLmZvcihvYmopO1xuICAgICAgICBjb25zdCBsb2NrID1cbiAgICAgICAgICBjdHguZ2V0T3JVbmRlZmluZWQoXCJ0cmFuc2FjdGlvbkxvY2tcIikgfHwgZ2V0Q29udGV4dExvY2sodGhpc0FyZyk7XG4gICAgICAgIGN0eC5wdXQoXCJ0cmFuc2FjdGlvbkxvY2tcIiwgbG9jayk7XG4gICAgICAgIGF3YWl0IGxvY2suYWNxdWlyZSgpO1xuICAgICAgICBsZXQgcmVzdWx0czogYW55O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlc3VsdHMgPSBhd2FpdCBvYmouY2FsbCh0aGlzQXJnLCAuLi5hcmdBcnJheSwgY3R4KTtcbiAgICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBsb2NrLnJvbGxiYWNrKGUpO1xuICAgICAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgICAgIGxvZy5lcnJvcihgRmFpbGVkIHRvIHJvbGxiYWNrIHRyYW5zYWN0aW9uYCwgZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IGxvY2sucmVsZWFzZSgpO1xuICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYEZhaWxlZCB0byByZWxlYXNlIHRyYW5zYWN0aW9uOiAke2V9YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfTtcbn1cblxuRGVjb3JhdGlvbi5mb3IoVHJhbnNhY3Rpb25hbEtleXMuVFJBTlNBQ1RJT05BTClcbiAgLmRlZmluZSh7XG4gICAgZGVjb3JhdG9yOiBpbm5lclRyYW5zYWN0aW9uYWwsXG4gIH0gYXMgYW55KVxuICAuYXBwbHkoKTtcbiJdfQ==
@@ -69,6 +69,7 @@ export type AdapterFlags<LOG extends Logger = Logger> = RepositoryFlags<LOG> & C
69
69
  forcePrepareSimpleQueries: boolean;
70
70
  forcePrepareComplexQueries: boolean;
71
71
  cacheForPopulate: Record<string, any>;
72
+ preferFromCache: boolean;
72
73
  noEmit: boolean;
73
74
  noEmitSingle: boolean;
74
75
  noEmitBulk: boolean;
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=types.js.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGVyc2lzdGVuY2UvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJ1bGtDcnVkT3BlcmF0aW9uS2V5cyxcbiAgTG9nZ2VyT2ZGbGFncyxcbiAgT3BlcmF0aW9uS2V5cyxcbiAgUmVwb3NpdG9yeUZsYWdzLFxuICBDb250ZXh0RmxhZ3MgYXMgQ3R4RmxhZ3MsXG59IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgQWRhcHRlciB9IGZyb20gXCIuL0FkYXB0ZXJcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIHR5cGUgT2JzZXJ2ZXIgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9pbmRleFwiO1xuaW1wb3J0IHsgTG9nZ2VyIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQge1xuICBDb250ZXh0dWFsQXJncyxcbiAgQ29udGV4dHVhbExvZ2dlZENsYXNzLFxufSBmcm9tIFwiLi4vdXRpbHMvQ29udGV4dHVhbExvZ2dlZENsYXNzXCI7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSBcIi4vQ29udGV4dFwiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L1JlcG9zaXRvcnlcIjtcbmltcG9ydCB7IFBlcnNpc3RlbmNlS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzIH0gZnJvbSBcIi4uL3F1ZXJ5L2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgQ29udGV4dExvY2sgfSBmcm9tIFwiLi9Db250ZXh0TG9ja1wiO1xuXG5leHBvcnQgdHlwZSBGbGFnc09mQ29udGV4dDxDIGV4dGVuZHMgQ29udGV4dDxhbnk+PiA9XG4gIEMgZXh0ZW5kcyBDb250ZXh0PGluZmVyIEY+ID8gRiA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBMb2dnZXJPZkNvbnRleHQ8QyBleHRlbmRzIENvbnRleHQ8YW55Pj4gPSBMb2dnZXJPZkZsYWdzPFxuICBGbGFnc09mQ29udGV4dDxDPlxuPjtcblxuZXhwb3J0IHR5cGUgQ29udGV4dE9mUmVwb3NpdG9yeTxSIGV4dGVuZHMgUmVwb3NpdG9yeTxhbnksIGFueT4+ID1cbiAgUiBleHRlbmRzIFJlcG9zaXRvcnk8YW55LCBpbmZlciBBPiA/IENvbnRleHRPZjxBPiA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBGbGFnc09mUmVwb3NpdG9yeTxSIGV4dGVuZHMgUmVwb3NpdG9yeTxhbnksIGFueT4+ID0gRmxhZ3NPZkNvbnRleHQ8XG4gIENvbnRleHRPZlJlcG9zaXRvcnk8Uj5cbj47XG5cbmV4cG9ydCB0eXBlIExvZ2dlck9mUmVwb3NpdG9yeTxSIGV4dGVuZHMgUmVwb3NpdG9yeTxhbnksIGFueT4+ID1cbiAgTG9nZ2VyT2ZDb250ZXh0PENvbnRleHRPZlJlcG9zaXRvcnk8Uj4+O1xuXG5leHBvcnQgdHlwZSBDb250ZXh0T2Y8XG4gIE9CSiBleHRlbmRzXG4gICAgfCBSZXBvc2l0b3J5PGFueSwgYW55PlxuICAgIHwgQWRhcHRlcjxhbnksIGFueSwgYW55LCBhbnk+XG4gICAgfCBDb250ZXh0dWFsTG9nZ2VkQ2xhc3M8YW55Pixcbj4gPVxuICBPQkogZXh0ZW5kcyBBZGFwdGVyPGFueSwgYW55LCBhbnksIGluZmVyIEM+XG4gICAgPyBDXG4gICAgOiBPQkogZXh0ZW5kcyBSZXBvc2l0b3J5PGFueSwgYW55PlxuICAgICAgPyBDb250ZXh0T2ZSZXBvc2l0b3J5PE9CSj5cbiAgICAgIDogT0JKIGV4dGVuZHMgQ29udGV4dHVhbExvZ2dlZENsYXNzPGluZmVyIEM+XG4gICAgICAgID8gQ1xuICAgICAgICA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBDb25maWdPZjxPQkogZXh0ZW5kcyBBZGFwdGVyPGFueSwgYW55LCBhbnksIGFueT4+ID1cbiAgT0JKIGV4dGVuZHMgQWRhcHRlcjxpbmZlciBDLCBhbnksIGFueSwgYW55PiA/IEMgOiBuZXZlcjtcblxuZXhwb3J0IHR5cGUgTG9nZ2VyT2ZBZGFwdGVyPEEgZXh0ZW5kcyBBZGFwdGVyPGFueSwgYW55LCBhbnksIGFueT4+ID1cbiAgQSBleHRlbmRzIEFkYXB0ZXI8YW55LCBhbnksIGFueSwgaW5mZXIgQz4gPyBMb2dnZXJPZkNvbnRleHQ8Qz4gOiBuZXZlcjtcblxuZXhwb3J0IHR5cGUgRmxhZ3NPZkFkYXB0ZXI8QSBleHRlbmRzIEFkYXB0ZXI8YW55LCBhbnksIGFueSwgYW55Pj4gPVxuICBBIGV4dGVuZHMgQWRhcHRlcjxhbnksIGFueSwgYW55LCBpbmZlciBDPiA/IEZsYWdzT2ZDb250ZXh0PEM+IDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIExvZ2dlck9mPFxuICBPQkogZXh0ZW5kc1xuICAgIHwgQWRhcHRlckZsYWdzPGFueT5cbiAgICB8IENvbnRleHQ8YW55PlxuICAgIHwgQWRhcHRlcjxhbnksIGFueSwgYW55PlxuICAgIHwgUmVwb3NpdG9yeTxhbnksIGFueT4sXG4+ID1cbiAgT0JKIGV4dGVuZHMgQWRhcHRlckZsYWdzPGFueT5cbiAgICA/IExvZ2dlck9mRmxhZ3M8T0JKPlxuICAgIDogT0JKIGV4dGVuZHMgQ29udGV4dDxhbnk+XG4gICAgICA/IExvZ2dlck9mQ29udGV4dDxPQko+XG4gICAgICA6IE9CSiBleHRlbmRzIFJlcG9zaXRvcnk8YW55LCBhbnk+XG4gICAgICAgID8gTG9nZ2VyT2ZSZXBvc2l0b3J5PE9CSj5cbiAgICAgICAgOiBPQkogZXh0ZW5kcyBBZGFwdGVyPGFueSwgYW55LCBhbnk+XG4gICAgICAgICAgPyBMb2dnZXJPZkFkYXB0ZXI8T0JKPlxuICAgICAgICAgIDogTG9nZ2VyO1xuXG5leHBvcnQgdHlwZSBDb25mT2Y8QSBleHRlbmRzIEFkYXB0ZXI8YW55LCBhbnksIGFueSwgYW55Pj4gPVxuICBBIGV4dGVuZHMgQWRhcHRlcjxpbmZlciBDLCBhbnksIGFueT4gPyBDIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIEZsYWdzT2Y8XG4gIE9CSiBleHRlbmRzIFJlcG9zaXRvcnk8YW55LCBhbnk+IHwgQWRhcHRlcjxhbnksIGFueSwgYW55LCBhbnk+IHwgQ29udGV4dDxhbnk+LFxuPiA9XG4gIE9CSiBleHRlbmRzIENvbnRleHQ8YW55PlxuICAgID8gRmxhZ3NPZkNvbnRleHQ8T0JKPlxuICAgIDogT0JKIGV4dGVuZHMgUmVwb3NpdG9yeTxhbnksIGFueT5cbiAgICAgID8gRmxhZ3NPZlJlcG9zaXRvcnk8T0JKPlxuICAgICAgOiBPQkogZXh0ZW5kcyBBZGFwdGVyPGFueSwgYW55LCBhbnksIGFueT5cbiAgICAgICAgPyBGbGFnc09mQWRhcHRlcjxPQko+XG4gICAgICAgIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIFBlcnNpc3RlbmNlT2JzZXJ2YWJsZTxDT05URVhUIGV4dGVuZHMgQ29udGV4dDxhbnk+PiA9IE9ic2VydmFibGU8XG4gIFtPYnNlcnZlciwgT2JzZXJ2ZXJGaWx0ZXI/XSxcbiAgW1xuICAgIENvbnN0cnVjdG9yIHwgc3RyaW5nLFxuICAgIE9wZXJhdGlvbktleXMgfCBCdWxrQ3J1ZE9wZXJhdGlvbktleXMgfCBzdHJpbmcsXG4gICAgRXZlbnRJZHMsXG4gICAgLi4uQ29udGV4dHVhbEFyZ3M8Q09OVEVYVD4sXG4gIF1cbj47XG5cbmV4cG9ydCB0eXBlIFBlcnNpc3RlbmNlT2JzZXJ2ZXI8Q09OVEVYVCBleHRlbmRzIENvbnRleHQ8YW55Pj4gPSBPYnNlcnZlcjxcbiAgW1xuICAgIENvbnN0cnVjdG9yIHwgc3RyaW5nLFxuICAgIE9wZXJhdGlvbktleXMgfCBCdWxrQ3J1ZE9wZXJhdGlvbktleXMgfCBzdHJpbmcsXG4gICAgRXZlbnRJZHMsXG4gICAgLi4uQ29udGV4dHVhbEFyZ3M8Q09OVEVYVD4sXG4gIF1cbj47XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFR5cGUgcmVwcmVzZW50aW5nIHBvc3NpYmxlIElEIGZvcm1hdHMgZm9yIGRhdGFiYXNlIGV2ZW50c1xuICogQHN1bW1hcnkgQSB1bmlvbiB0eXBlIHRoYXQgZGVmaW5lcyB0aGUgcG9zc2libGUgZm9ybWF0cyBmb3IgZXZlbnQgaWRlbnRpZmllcnMgaW4gdGhlIHBlcnNpc3RlbmNlIGxheWVyLlxuICogVGhlc2UgY2FuIGJlIHNpbmdsZSB2YWx1ZXMgKHN0cmluZywgbnVtYmVyLCBiaWdpbnQpIG9yIGFycmF5cyBvZiB0aGVzZSB0eXBlcy5cbiAqIEB0eXBlZGVmIHsoc3RyaW5nfG51bWJlcnxiaWdpbnR8c3RyaW5nW118bnVtYmVyW118YmlnaW50W10pfSBFdmVudElkc1xuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCB0eXBlIEV2ZW50SWRzID1cbiAgfCBzdHJpbmdcbiAgfCBudW1iZXJcbiAgfCBiaWdpbnRcbiAgfCBzdHJpbmdbXVxuICB8IG51bWJlcltdXG4gIHwgYmlnaW50W107XG5cbmV4cG9ydCB0eXBlIE9ic2VydmVyRmlsdGVyID0gKFxuICB0YWJsZTogQ29uc3RydWN0b3IgfCBzdHJpbmcsXG4gIGV2ZW50OiBBbGxPcGVyYXRpb25LZXlzLFxuICBpZDogRXZlbnRJZHMsXG4gIC4uLmFyZ3M6IENvbnRleHR1YWxBcmdzPGFueT5cbikgPT4gYm9vbGVhbjtcblxuZXhwb3J0IHR5cGUgSW5mZXJyZWRBZGFwdGVyQ29uZmlnPEE+ID1cbiAgQSBleHRlbmRzIEFkYXB0ZXI8aW5mZXIgQ09ORiwgYW55LCBhbnk+ID8gQ09ORiA6IG5ldmVyO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkYXB0ZXJEaXNwYXRjaDxBIGV4dGVuZHMgQWRhcHRlcjxhbnksIGFueSwgYW55LCBhbnk+PlxuICBleHRlbmRzIFBlcnNpc3RlbmNlT2JzZXJ2YWJsZTxDb250ZXh0T2Y8QT4+IHtcbiAgY2xvc2UoLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8Q29udGV4dE9mPEE+Pik6IFByb21pc2U8dm9pZD47XG5cbiAgdXBkYXRlT2JzZXJ2ZXJzPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgdGFibGU6IENvbnN0cnVjdG9yPE0+IHwgc3RyaW5nLFxuICAgIGV2ZW50OiBPcGVyYXRpb25LZXlzIHwgQnVsa0NydWRPcGVyYXRpb25LZXlzIHwgc3RyaW5nLFxuICAgIGlkOiBFdmVudElkcyxcbiAgICAuLi5hcmdzOiBDb250ZXh0dWFsQXJnczxDb250ZXh0T2Y8QT4+XG4gICk6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCB0eXBlIFJlcG9zaXRvcnlGb3I8QSBleHRlbmRzIEFkYXB0ZXI8YW55LCBhbnksIGFueSwgYW55Pj4gPVxuICBBIGV4dGVuZHMgQWRhcHRlcjxhbnksIGFueSwgYW55LCBhbnk+ID8gUmV0dXJuVHlwZTxBW1wicmVwb3NpdG9yeVwiXT4gOiBuZXZlcjtcblxuZXhwb3J0IHR5cGUgUHJlcGFyZWRNb2RlbCA9IHtcbiAgcmVjb3JkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBpZDogc3RyaW5nO1xuICB0cmFuc2llbnQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufTtcblxuZXhwb3J0IHR5cGUgQ29udGV4dEZsYWdzPExPRyBleHRlbmRzIExvZ2dlcj4gPSBDdHhGbGFnczxMT0c+ICZcbiAgUGljazxcbiAgICBSZXBvc2l0b3J5RmxhZ3M8TE9HPixcbiAgICB8IFwib3BlcmF0aW9uXCJcbiAgICB8IFwiY29ycmVsYXRpb25JZFwiXG4gICAgfCBcImlnbm9yZURldlNhZmVHdWFyZHNcIlxuICAgIHwgXCJwYXJlbnRDb250ZXh0XCJcbiAgICB8IFwiY2hpbGRDb250ZXh0c1wiXG4gID4gJiB7XG4gICAgcGVuZGluZz86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPjtcbiAgICB0cmFuc2FjdGlvbkxvY2s/OiBDb250ZXh0TG9jaztcbiAgfTtcblxuZXhwb3J0IHR5cGUgQWRhcHRlckZsYWdzPExPRyBleHRlbmRzIExvZ2dlciA9IExvZ2dlcj4gPSBSZXBvc2l0b3J5RmxhZ3M8TE9HPiAmXG4gIENvbnRleHRGbGFnczxMT0c+ICYge1xuICAgIGFsbG93R2VuZXJhdGlvbk92ZXJyaWRlOiBib29sZWFuO1xuICAgIGFmdGVyUXVlcnlIYW5kbGVyczogYm9vbGVhbjtcbiAgICBlbmZvcmNlVXBkYXRlVmFsaWRhdGlvbjogYm9vbGVhbjtcbiAgICBhbGxvd1Jhd1N0YXRlbWVudHM6IGJvb2xlYW47XG4gICAgZm9yY2VQcmVwYXJlU2ltcGxlUXVlcmllczogYm9vbGVhbjtcbiAgICBmb3JjZVByZXBhcmVDb21wbGV4UXVlcmllczogYm9vbGVhbjtcbiAgICBjYWNoZUZvclBvcHVsYXRlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIHByZWZlckZyb21DYWNoZTogYm9vbGVhbjtcbiAgICBub0VtaXQ6IGJvb2xlYW47XG4gICAgbm9FbWl0U2luZ2xlOiBib29sZWFuO1xuICAgIG5vRW1pdEJ1bGs6IGJvb2xlYW47XG4gICAgYnJlYWtPblNpbmdsZUZhaWx1cmVJbkJ1bGs6IGJvb2xlYW47XG4gICAgb2JzZXJ2ZUZ1bGxSZXN1bHQ6IGJvb2xlYW47XG4gICAgcGFnaW5hdGVCeUJvb2ttYXJrOiBib29sZWFuO1xuICAgIGRyeVJ1bjogYm9vbGVhbjtcbiAgICBsb2NrPzogQ29udGV4dExvY2s7XG4gIH07XG5cbmV4cG9ydCB0eXBlIFJhd1Jlc3VsdDxSLCBEIGV4dGVuZHMgYm9vbGVhbj4gPSBEIGV4dGVuZHMgdHJ1ZVxuICA/IFJcbiAgOiB7IGRhdGE6IFI7IGNvdW50PzogbnVtYmVyIH07XG5cbmV4cG9ydCB0eXBlIEFsbE9wZXJhdGlvbktleXMgPVxuICB8IE9wZXJhdGlvbktleXNcbiAgfCBCdWxrQ3J1ZE9wZXJhdGlvbktleXNcbiAgfCBQZXJzaXN0ZW5jZUtleXNcbiAgfCBQcmVwYXJlZFN0YXRlbWVudEtleXNcbiAgfCBzdHJpbmc7XG4iXX0=
@@ -381,4 +381,4 @@ __decorate([
381
381
  required(),
382
382
  __metadata("design:type", Object)
383
383
  ], Condition.prototype, "comparison", void 0);
384
- //# sourceMappingURL=Condition.js.map
384
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZGl0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3F1ZXJ5L0NvbmRpdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSxPQUFPLEVBRUwsS0FBSyxFQUdMLFFBQVEsR0FDVCxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLHVCQUFvQjtBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLG9CQUFpQjtBQUl0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJHO0FBQ0gsTUFBTSxPQUFPLFNBQWdDLFNBQVEsS0FBb0I7SUFjdkUsWUFDRSxLQUF1RCxFQUN2RCxRQUFtQyxFQUNuQyxVQUFnQjtRQUVoQixLQUFLLEVBQUUsQ0FBQztRQWpCQSxVQUFLLEdBQTJCLFNBQVMsQ0FBQztRQUUxQyxhQUFRLEdBQThCLFNBQVMsQ0FBQztRQUVoRCxlQUFVLEdBQVMsU0FBUyxDQUFDO1FBY3JDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM3QixLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxLQUFZLENBQUMsQ0FBQztRQUN0QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBZ0MsQ0FBQztZQUM5QyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztZQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsR0FBRyxDQUFDLFNBQXVCO1FBQ3pCLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsRUFBRSxDQUFDLFNBQXVCO1FBQ3hCLE9BQU8sU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsU0FB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RTs7d0NBQ3lDO0FBRTFDO0lBRFQsUUFBUSxFQUFFOzsyQ0FDK0M7QUFFaEQ7SUFEVCxRQUFRLEVBQUU7OzZDQUM0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dHJpYnV0ZU9wdGlvbiwgQ29uZGl0aW9uQnVpbGRlck9wdGlvbiB9IGZyb20gXCIuL29wdGlvbnNcIjtcbmltcG9ydCB7XG4gIENvbmRpdGlvbmFsQXN5bmMsXG4gIE1vZGVsLFxuICBNb2RlbEFyZyxcbiAgTW9kZWxFcnJvckRlZmluaXRpb24sXG4gIHJlcXVpcmVkLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBHcm91cE9wZXJhdG9yLCBPcGVyYXRvciB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgUXVlcnlFcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuXG50eXBlIEluZmVyQXN5bmM8TT4gPSBNIGV4dGVuZHMgTW9kZWw8aW5mZXIgQT4gPyBBIDogZmFsc2U7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgYSBsb2dpY2FsIGNvbmRpdGlvbiBmb3IgZGF0YWJhc2UgcXVlcmllc1xuICogQHN1bW1hcnkgQSBjbGFzcyB0aGF0IGVuY2Fwc3VsYXRlcyBxdWVyeSBjb25kaXRpb25zIHdpdGggc3VwcG9ydCBmb3IgY29tcGxleCBsb2dpY2FsIG9wZXJhdGlvbnMuXG4gKiBUaGlzIGNsYXNzIGFsbG93cyBmb3IgYnVpbGRpbmcgYW5kIGNvbWJpbmluZyBxdWVyeSBjb25kaXRpb25zIHVzaW5nIGxvZ2ljYWwgb3BlcmF0b3JzIChBTkQsIE9SLCBOT1QpXG4gKiBhbmQgY29tcGFyaXNvbiBvcGVyYXRvcnMgKGVxdWFscywgbm90IGVxdWFscywgZ3JlYXRlciB0aGFuLCBldGMuKS5cbiAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgdGhpcyBjb25kaXRpb24gb3BlcmF0ZXMgb25cbiAqIEBwYXJhbSB7c3RyaW5nIHwgQ29uZGl0aW9uPE0+fSBhdHRyMSAtIFRoZSBhdHRyaWJ1dGUgbmFtZSBvciBhIG5lc3RlZCBjb25kaXRpb25cbiAqIEBwYXJhbSB7T3BlcmF0b3IgfCBHcm91cE9wZXJhdG9yfSBvcGVyYXRvciAtIFRoZSBvcGVyYXRvciB0byB1c2UgZm9yIHRoZSBjb25kaXRpb25cbiAqIEBwYXJhbSB7YW55fSBjb21wYXJpc29uIC0gVGhlIHZhbHVlIHRvIGNvbXBhcmUgYWdhaW5zdCBvciBhbm90aGVyIGNvbmRpdGlvblxuICogQGNsYXNzIENvbmRpdGlvblxuICogQGV4YW1wbGVcbiAqIC8vIENyZWF0ZSBhIHNpbXBsZSBjb25kaXRpb25cbiAqIGNvbnN0IG5hbWVDb25kaXRpb24gPSBDb25kaXRpb24uYXR0cmlidXRlKFwibmFtZVwiKS5lcShcIkpvaG5cIik7XG4gKlxuICogLy8gQ3JlYXRlIGEgY29tcGxleCBjb25kaXRpb25cbiAqIGNvbnN0IGNvbXBsZXhDb25kaXRpb24gPSBDb25kaXRpb24uYXR0cmlidXRlKFwiYWdlXCIpLmd0KDE4KVxuICogICAuYW5kKENvbmRpdGlvbi5hdHRyaWJ1dGUoXCJzdGF0dXNcIikuZXEoXCJhY3RpdmVcIikpO1xuICpcbiAqIC8vIFVzZSB0aGUgYnVpbGRlciBwYXR0ZXJuXG4gKiBjb25zdCB1c2VyUXVlcnkgPSBDb25kaXRpb24uYnVpbGRlcigpXG4gKiAgIC5hdHRyaWJ1dGUoXCJlbWFpbFwiKS5yZWdleHAoXCIuKkBleGFtcGxlLmNvbVwiKVxuICogICAuYW5kKENvbmRpdGlvbi5hdHRyaWJ1dGUoXCJsYXN0TG9naW5cIikuZ3QobmV3IERhdGUoXCIyMDIzLTAxLTAxXCIpKSk7XG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IERldlxuICogICBwYXJ0aWNpcGFudCBDb25kaXRpb25cbiAqICAgRGV2LT4+Q29uZGl0aW9uOiBidWlsZGVyKCkuYXR0cmlidXRlKFwiYWdlXCIpLmd0KDE4KVxuICogICBDb25kaXRpb24tLT4+RGV2OiBDb25kaXRpb24oYWdlID4gMTgpXG4gKiAgIERldi0+PkNvbmRpdGlvbjogLmFuZChhdHRyaWJ1dGUoXCJzdGF0dXNcIikuZXEoXCJhY3RpdmVcIikpXG4gKiAgIENvbmRpdGlvbi0tPj5EZXY6IENvbmRpdGlvbigoYWdlID4gMTgpIEFORCAoc3RhdHVzID0gXCJhY3RpdmVcIikpXG4gKi9cbmV4cG9ydCBjbGFzcyBDb25kaXRpb248TSBleHRlbmRzIE1vZGVsPGFueT4+IGV4dGVuZHMgTW9kZWw8SW5mZXJBc3luYzxNPj4ge1xuICBAcmVxdWlyZWQoKVxuICBwcm90ZWN0ZWQgYXR0cjE/OiBzdHJpbmcgfCBDb25kaXRpb248TT4gPSB1bmRlZmluZWQ7XG4gIEByZXF1aXJlZCgpXG4gIHByb3RlY3RlZCBvcGVyYXRvcj86IE9wZXJhdG9yIHwgR3JvdXBPcGVyYXRvciA9IHVuZGVmaW5lZDtcbiAgQHJlcXVpcmVkKClcbiAgcHJvdGVjdGVkIGNvbXBhcmlzb24/OiBhbnkgPSB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihhcmc6IE1vZGVsQXJnPENvbmRpdGlvbjxhbnk+Pik7XG4gIHByaXZhdGUgY29uc3RydWN0b3IoXG4gICAgYXR0cjE6IHN0cmluZyB8IENvbmRpdGlvbjxNPixcbiAgICBvcGVyYXRvcjogT3BlcmF0b3IgfCBHcm91cE9wZXJhdG9yLFxuICAgIGNvbXBhcmlzb246IGFueVxuICApO1xuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIGF0dHIxOiBzdHJpbmcgfCBDb25kaXRpb248TT4gfCBNb2RlbEFyZzxDb25kaXRpb248YW55Pj4sXG4gICAgb3BlcmF0b3I/OiBPcGVyYXRvciB8IEdyb3VwT3BlcmF0b3IsXG4gICAgY29tcGFyaXNvbj86IGFueVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIGlmICghb3BlcmF0b3IgJiYgIWNvbXBhcmlzb24pIHtcbiAgICAgIE1vZGVsLmZyb21Nb2RlbCh0aGlzLCBhdHRyMSBhcyBhbnkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmF0dHIxID0gYXR0cjEgYXMgc3RyaW5nIHwgQ29uZGl0aW9uPGFueT47XG4gICAgICB0aGlzLm9wZXJhdG9yID0gb3BlcmF0b3I7XG4gICAgICB0aGlzLmNvbXBhcmlzb24gPSBjb21wYXJpc29uO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29tYmluZXMgdGhpcyBjb25kaXRpb24gd2l0aCBhbm90aGVyIHVzaW5nIGxvZ2ljYWwgQU5EXG4gICAqIEBzdW1tYXJ5IEpvaW5zIHR3byBjb25kaXRpb25zIHdpdGggYW4gQU5EIG9wZXJhdG9yLCByZXF1aXJpbmcgYm90aCB0byBiZSB0cnVlXG4gICAqIEBwYXJhbSB7Q29uZGl0aW9uPE0+fSBjb25kaXRpb24gLSBUaGUgY29uZGl0aW9uIHRvIGNvbWJpbmUgd2l0aCB0aGlzIG9uZVxuICAgKiBAcmV0dXJuIHtDb25kaXRpb248TT59IEEgbmV3IGNvbmRpdGlvbiByZXByZXNlbnRpbmcgdGhlIEFORCBvcGVyYXRpb25cbiAgICovXG4gIGFuZChjb25kaXRpb246IENvbmRpdGlvbjxNPik6IENvbmRpdGlvbjxNPiB7XG4gICAgcmV0dXJuIENvbmRpdGlvbi5hbmQodGhpcywgY29uZGl0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29tYmluZXMgdGhpcyBjb25kaXRpb24gd2l0aCBhbm90aGVyIHVzaW5nIGxvZ2ljYWwgT1JcbiAgICogQHN1bW1hcnkgSm9pbnMgdHdvIGNvbmRpdGlvbnMgd2l0aCBhbiBPUiBvcGVyYXRvciwgcmVxdWlyaW5nIGF0IGxlYXN0IG9uZSB0byBiZSB0cnVlXG4gICAqIEBwYXJhbSB7Q29uZGl0aW9uPE0+fSBjb25kaXRpb24gLSBUaGUgY29uZGl0aW9uIHRvIGNvbWJpbmUgd2l0aCB0aGlzIG9uZVxuICAgKiBAcmV0dXJuIHtDb25kaXRpb248TT59IEEgbmV3IGNvbmRpdGlvbiByZXByZXNlbnRpbmcgdGhlIE9SIG9wZXJhdGlvblxuICAgKi9cbiAgb3IoY29uZGl0aW9uOiBDb25kaXRpb248TT4pOiBDb25kaXRpb248TT4ge1xuICAgIHJldHVybiBDb25kaXRpb24ub3IodGhpcywgY29uZGl0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG5lZ2F0aW9uIGNvbmRpdGlvblxuICAgKiBAc3VtbWFyeSBFeGNsdWRlcyBhIHZhbHVlIGZyb20gdGhlIHJlc3VsdCBieSBhcHBseWluZyBhIE5PVCBvcGVyYXRvclxuICAgKiBAcGFyYW0ge2FueX0gdmFsIC0gVGhlIHZhbHVlIHRvIG5lZ2F0ZVxuICAgKiBAcmV0dXJuIHtDb25kaXRpb248TT59IEEgbmV3IGNvbmRpdGlvbiByZXByZXNlbnRpbmcgdGhlIE5PVCBvcGVyYXRpb25cbiAgICovXG4gIG5vdCh2YWw6IGFueSk6IENvbmRpdGlvbjxNPiB7XG4gICAgcmV0dXJuIG5ldyBDb25kaXRpb24odGhpcywgT3BlcmF0b3IuTk9ULCB2YWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0ZXMgdGhlIGNvbmRpdGlvbiBhbmQgY2hlY2tzIGZvciBlcnJvcnNcbiAgICogQHN1bW1hcnkgRXh0ZW5kcyB0aGUgYmFzZSB2YWxpZGF0aW9uIHRvIGVuc3VyZSB0aGUgY29uZGl0aW9uIGlzIHByb3Blcmx5IGZvcm1lZFxuICAgKiBAcGFyYW0gey4uLnN0cmluZ1tdfSBleGNlcHRpb25zIC0gRmllbGRzIHRvIGV4Y2x1ZGUgZnJvbSB2YWxpZGF0aW9uXG4gICAqIEByZXR1cm4ge01vZGVsRXJyb3JEZWZpbml0aW9uIHwgdW5kZWZpbmVkfSBFcnJvciBkZWZpbml0aW9uIGlmIHZhbGlkYXRpb24gZmFpbHMsIHVuZGVmaW5lZCBvdGhlcndpc2VcbiAgICovXG4gIG92ZXJyaWRlIGhhc0Vycm9ycyhcbiAgICAuLi5leGNlcHRpb25zOiBzdHJpbmdbXVxuICApOiBDb25kaXRpb25hbEFzeW5jPEluZmVyQXN5bmM8TT4sIE1vZGVsRXJyb3JEZWZpbml0aW9uIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgY29uZGl0aW9uQ2hlY2sgPSAoKTogTW9kZWxFcnJvckRlZmluaXRpb24gfCB1bmRlZmluZWQgPT4ge1xuICAgICAgY29uc3QgaW52YWxpZE9wTWVzc2FnZSA9IGBJbnZhbGlkIG9wZXJhdG9yICR7dGhpcy5vcGVyYXRvcn19YDtcblxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmF0dHIxID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbXBhcmlzb24gaW5zdGFuY2VvZiBDb25kaXRpb24pXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbXBhcmlzb246IHtcbiAgICAgICAgICAgICAgY29uZGl0aW9uOlxuICAgICAgICAgICAgICAgIFwiQm90aCBzaWRlcyBvZiB0aGUgY29tcGFyaXNvbiBtdXN0IGJlIG9mIHRoZSBzYW1lIHR5cGVcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSBhcyBNb2RlbEVycm9yRGVmaW5pdGlvbjtcbiAgICAgICAgaWYgKE9iamVjdC52YWx1ZXMoT3BlcmF0b3IpLmluZGV4T2YodGhpcy5vcGVyYXRvciBhcyBPcGVyYXRvcikgPT09IC0xKVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvcGVyYXRvcjoge1xuICAgICAgICAgICAgICBjb25kaXRpb246IGludmFsaWRPcE1lc3NhZ2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0gYXMgTW9kZWxFcnJvckRlZmluaXRpb247XG4gICAgICAgIC8vIFZhbGlkYXRlIEJFVFdFRU4gb3BlcmF0b3IgaGFzIGFycmF5IHdpdGggMiB2YWx1ZXNcbiAgICAgICAgaWYgKHRoaXMub3BlcmF0b3IgPT09IE9wZXJhdG9yLkJFVFdFRU4pIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAhQXJyYXkuaXNBcnJheSh0aGlzLmNvbXBhcmlzb24pIHx8XG4gICAgICAgICAgICB0aGlzLmNvbXBhcmlzb24ubGVuZ3RoICE9PSAyXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBjb21wYXJpc29uOiB7XG4gICAgICAgICAgICAgICAgY29uZGl0aW9uOlxuICAgICAgICAgICAgICAgICAgXCJCRVRXRUVOIG9wZXJhdG9yIHJlcXVpcmVzIGFuIGFycmF5IHdpdGggZXhhY3RseSAyIHZhbHVlcyBbbWluLCBtYXhdXCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9IGFzIE1vZGVsRXJyb3JEZWZpbml0aW9uO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5hdHRyMSBpbnN0YW5jZW9mIENvbmRpdGlvbikge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgISh0aGlzLmNvbXBhcmlzb24gaW5zdGFuY2VvZiBDb25kaXRpb24pICYmXG4gICAgICAgICAgdGhpcy5vcGVyYXRvciAhPT0gT3BlcmF0b3IuTk9UXG4gICAgICAgIClcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29tcGFyaXNvbjoge1xuICAgICAgICAgICAgICBjb25kaXRpb246IGludmFsaWRPcE1lc3NhZ2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0gYXMgTW9kZWxFcnJvckRlZmluaXRpb247XG4gICAgICAgIGlmIChcbiAgICAgICAgICBPYmplY3QudmFsdWVzKEdyb3VwT3BlcmF0b3IpLmluZGV4T2YoXG4gICAgICAgICAgICB0aGlzLm9wZXJhdG9yIGFzIEdyb3VwT3BlcmF0b3JcbiAgICAgICAgICApID09PSAtMSAmJlxuICAgICAgICAgIHRoaXMub3BlcmF0b3IgIT09IE9wZXJhdG9yLk5PVFxuICAgICAgICApXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG9wZXJhdG9yOiB7XG4gICAgICAgICAgICAgIGNvbmRpdGlvbjogaW52YWxpZE9wTWVzc2FnZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSBhcyBNb2RlbEVycm9yRGVmaW5pdGlvbjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgZXJyb3JzID0gc3VwZXIuaGFzRXJyb3JzKC4uLmV4Y2VwdGlvbnMpO1xuICAgIGlmICghdGhpcy5pc0FzeW5jKCkpXG4gICAgICByZXR1cm4gKFxuICAgICAgICAoZXJyb3JzIGFzIE1vZGVsRXJyb3JEZWZpbml0aW9uIHwgdW5kZWZpbmVkKSA/P1xuICAgICAgICAoY29uZGl0aW9uQ2hlY2soKSBhcyBhbnkpXG4gICAgICApO1xuXG4gICAgcmV0dXJuIChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvbHZlZCA9IGF3YWl0IFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgZXJyb3JzIGFzIHVua25vd24gYXMgUHJvbWlzZTxNb2RlbEVycm9yRGVmaW5pdGlvbiB8IHVuZGVmaW5lZD5cbiAgICAgICk7XG4gICAgICByZXR1cm4gcmVzb2x2ZWQgPz8gY29uZGl0aW9uQ2hlY2soKTtcbiAgICB9KSgpIGFzIENvbmRpdGlvbmFsQXN5bmM8SW5mZXJBc3luYzxNPiwgTW9kZWxFcnJvckRlZmluaXRpb24gfCB1bmRlZmluZWQ+O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgbmV3IGNvbmRpdGlvbiB0aGF0IGNvbWJpbmVzIHR3byBjb25kaXRpb25zIHdpdGggbG9naWNhbCBBTkRcbiAgICogQHN1bW1hcnkgU3RhdGljIG1ldGhvZCB0aGF0IGpvaW5zIHR3byBjb25kaXRpb25zIHdpdGggYW4gQU5EIG9wZXJhdG9yLCByZXF1aXJpbmcgYm90aCB0byBiZSB0cnVlXG4gICAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgdGhpcyBjb25kaXRpb24gb3BlcmF0ZXMgb25cbiAgICogQHBhcmFtIHtDb25kaXRpb248TT59IGNvbmRpdGlvbjEgLSBUaGUgZmlyc3QgY29uZGl0aW9uXG4gICAqIEBwYXJhbSB7Q29uZGl0aW9uPE0+fSBjb25kaXRpb24yIC0gVGhlIHNlY29uZCBjb25kaXRpb25cbiAgICogQHJldHVybiB7Q29uZGl0aW9uPE0+fSBBIG5ldyBjb25kaXRpb24gcmVwcmVzZW50aW5nIHRoZSBBTkQgb3BlcmF0aW9uXG4gICAqL1xuICBzdGF0aWMgYW5kPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgY29uZGl0aW9uMTogQ29uZGl0aW9uPE0+LFxuICAgIGNvbmRpdGlvbjI6IENvbmRpdGlvbjxNPlxuICApOiBDb25kaXRpb248TT4ge1xuICAgIHJldHVybiBDb25kaXRpb24uZ3JvdXAoY29uZGl0aW9uMSwgR3JvdXBPcGVyYXRvci5BTkQsIGNvbmRpdGlvbjIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgbmV3IGNvbmRpdGlvbiB0aGF0IGNvbWJpbmVzIHR3byBjb25kaXRpb25zIHdpdGggbG9naWNhbCBPUlxuICAgKiBAc3VtbWFyeSBTdGF0aWMgbWV0aG9kIHRoYXQgam9pbnMgdHdvIGNvbmRpdGlvbnMgd2l0aCBhbiBPUiBvcGVyYXRvciwgcmVxdWlyaW5nIGF0IGxlYXN0IG9uZSB0byBiZSB0cnVlXG4gICAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgdGhpcyBjb25kaXRpb24gb3BlcmF0ZXMgb25cbiAgICogQHBhcmFtIHtDb25kaXRpb248TT59IGNvbmRpdGlvbjEgLSBUaGUgZmlyc3QgY29uZGl0aW9uXG4gICAqIEBwYXJhbSB7Q29uZGl0aW9uPE0+fSBjb25kaXRpb24yIC0gVGhlIHNlY29uZCBjb25kaXRpb25cbiAgICogQHJldHVybiB7Q29uZGl0aW9uPE0+fSBBIG5ldyBjb25kaXRpb24gcmVwcmVzZW50aW5nIHRoZSBPUiBvcGVyYXRpb25cbiAgICovXG4gIHN0YXRpYyBvcjxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIGNvbmRpdGlvbjE6IENvbmRpdGlvbjxNPixcbiAgICBjb25kaXRpb24yOiBDb25kaXRpb248TT5cbiAgKTogQ29uZGl0aW9uPE0+IHtcbiAgICByZXR1cm4gQ29uZGl0aW9uLmdyb3VwKGNvbmRpdGlvbjEsIEdyb3VwT3BlcmF0b3IuT1IsIGNvbmRpdGlvbjIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgbmV3IGNvbmRpdGlvbiB0aGF0IGdyb3VwcyB0d28gY29uZGl0aW9ucyB3aXRoIGEgc3BlY2lmaWVkIG9wZXJhdG9yXG4gICAqIEBzdW1tYXJ5IFByaXZhdGUgc3RhdGljIG1ldGhvZCB0aGF0IGNvbWJpbmVzIHR3byBjb25kaXRpb25zIHVzaW5nIHRoZSBzcGVjaWZpZWQgZ3JvdXAgb3BlcmF0b3JcbiAgICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSB0aGlzIGNvbmRpdGlvbiBvcGVyYXRlcyBvblxuICAgKiBAcGFyYW0ge0NvbmRpdGlvbjxNPn0gY29uZGl0aW9uMSAtIFRoZSBmaXJzdCBjb25kaXRpb25cbiAgICogQHBhcmFtIHtHcm91cE9wZXJhdG9yfSBvcGVyYXRvciAtIFRoZSBncm91cCBvcGVyYXRvciB0byB1c2UgKEFORCwgT1IpXG4gICAqIEBwYXJhbSB7Q29uZGl0aW9uPE0+fSBjb25kaXRpb24yIC0gVGhlIHNlY29uZCBjb25kaXRpb25cbiAgICogQHJldHVybiB7Q29uZGl0aW9uPE0+fSBBIG5ldyBjb25kaXRpb24gcmVwcmVzZW50aW5nIHRoZSBncm91cGVkIG9wZXJhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ3JvdXA8TSBleHRlbmRzIE1vZGVsPihcbiAgICBjb25kaXRpb24xOiBDb25kaXRpb248TT4sXG4gICAgb3BlcmF0b3I6IEdyb3VwT3BlcmF0b3IsXG4gICAgY29uZGl0aW9uMjogQ29uZGl0aW9uPE0+XG4gICk6IENvbmRpdGlvbjxNPiB7XG4gICAgcmV0dXJuIG5ldyBDb25kaXRpb24oY29uZGl0aW9uMSwgb3BlcmF0b3IsIGNvbmRpdGlvbjIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgY29uZGl0aW9uIGJ1aWxkZXIgZm9yIGEgc3BlY2lmaWMgbW9kZWwgYXR0cmlidXRlXG4gICAqIEBzdW1tYXJ5IFN0YXRpYyBtZXRob2QgdGhhdCBpbml0aWFsaXplcyBhIGNvbmRpdGlvbiBidWlsZGVyIHdpdGggdGhlIHNwZWNpZmllZCBhdHRyaWJ1dGVcbiAgICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSB0aGlzIGNvbmRpdGlvbiBvcGVyYXRlcyBvblxuICAgKiBAcGFyYW0gYXR0ciAtIFRoZSBtb2RlbCBhdHRyaWJ1dGUgdG8gYnVpbGQgYSBjb25kaXRpb24gZm9yXG4gICAqIEByZXR1cm4ge0F0dHJpYnV0ZU9wdGlvbjxNPn0gQSBjb25kaXRpb24gYnVpbGRlciBpbml0aWFsaXplZCB3aXRoIHRoZSBhdHRyaWJ1dGVcbiAgICovXG4gIHN0YXRpYyBhdHRyaWJ1dGU8TSBleHRlbmRzIE1vZGVsPihhdHRyOiBrZXlvZiBNKSB7XG4gICAgcmV0dXJuIG5ldyBDb25kaXRpb24uQnVpbGRlcjxNPigpLmF0dHJpYnV0ZShhdHRyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQWxpYXMgZm9yIHRoZSBhdHRyaWJ1dGUgbWV0aG9kXG4gICAqIEBzdW1tYXJ5IFNob3J0aGFuZCBtZXRob2QgdGhhdCBpbml0aWFsaXplcyBhIGNvbmRpdGlvbiBidWlsZGVyIHdpdGggdGhlIHNwZWNpZmllZCBhdHRyaWJ1dGVcbiAgICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSB0aGlzIGNvbmRpdGlvbiBvcGVyYXRlcyBvblxuICAgKiBAcGFyYW0gYXR0ciAtIFRoZSBtb2RlbCBhdHRyaWJ1dGUgdG8gYnVpbGQgYSBjb25kaXRpb24gZm9yXG4gICAqIEByZXR1cm4ge0F0dHJpYnV0ZU9wdGlvbjxNPn0gQSBjb25kaXRpb24gYnVpbGRlciBpbml0aWFsaXplZCB3aXRoIHRoZSBhdHRyaWJ1dGVcbiAgICovXG4gIHN0YXRpYyBhdHRyPE0gZXh0ZW5kcyBNb2RlbD4oYXR0cjoga2V5b2YgTSkge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZShhdHRyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgYSBmbHVlbnQgQVBJIHRvIGJ1aWxkIHF1ZXJ5IGNvbmRpdGlvbnNcbiAgICogQHN1bW1hcnkgQSBidWlsZGVyIGNsYXNzIHRoYXQgc2ltcGxpZmllcyB0aGUgY3JlYXRpb24gb2YgZGF0YWJhc2UgcXVlcnkgY29uZGl0aW9uc1xuICAgKiB3aXRoIGEgY2hhaW5hYmxlIGludGVyZmFjZSBmb3Igc2V0dGluZyBhdHRyaWJ1dGVzIGFuZCBvcGVyYXRvcnNcbiAgICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSB0aGlzIGNvbmRpdGlvbiBidWlsZGVyIG9wZXJhdGVzIG9uXG4gICAqIEBjbGFzcyBDb25kaXRpb25CdWlsZGVyXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBCdWlsZGVyID0gY2xhc3MgQ29uZGl0aW9uQnVpbGRlcjxNIGV4dGVuZHMgTW9kZWw+XG4gICAgaW1wbGVtZW50cyBDb25kaXRpb25CdWlsZGVyT3B0aW9uPE0+LCBBdHRyaWJ1dGVPcHRpb248TT5cbiAge1xuICAgIGF0dHIxPzoga2V5b2YgTSB8IENvbmRpdGlvbjxNPiA9IHVuZGVmaW5lZDtcbiAgICBvcGVyYXRvcj86IE9wZXJhdG9yIHwgR3JvdXBPcGVyYXRvciA9IHVuZGVmaW5lZDtcbiAgICBjb21wYXJpc29uPzogYW55ID0gdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNldHMgdGhlIGF0dHJpYnV0ZSBmb3IgdGhlIGNvbmRpdGlvblxuICAgICAqIEBzdW1tYXJ5IFNwZWNpZmllcyB3aGljaCBtb2RlbCBhdHRyaWJ1dGUgdGhlIGNvbmRpdGlvbiB3aWxsIG9wZXJhdGUgb25cbiAgICAgKiBAcGFyYW0gYXR0ciAtIFRoZSBtb2RlbCBhdHRyaWJ1dGUgdG8gdXNlIGluIHRoZSBjb25kaXRpb25cbiAgICAgKiBAcmV0dXJuIHtBdHRyaWJ1dGVPcHRpb248TT59IFRoaXMgYnVpbGRlciBpbnN0YW5jZSBmb3IgbWV0aG9kIGNoYWluaW5nXG4gICAgICovXG4gICAgYXR0cmlidXRlKGF0dHI6IGtleW9mIE0pOiBBdHRyaWJ1dGVPcHRpb248TT4ge1xuICAgICAgdGhpcy5hdHRyMSA9IGF0dHI7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQWxpYXMgZm9yIHRoZSBhdHRyaWJ1dGUgbWV0aG9kXG4gICAgICogQHN1bW1hcnkgU2hvcnRoYW5kIG1ldGhvZCB0byBzcGVjaWZ5IHdoaWNoIG1vZGVsIGF0dHJpYnV0ZSB0aGUgY29uZGl0aW9uIHdpbGwgb3BlcmF0ZSBvblxuICAgICAqIEBwYXJhbSBhdHRyIC0gVGhlIG1vZGVsIGF0dHJpYnV0ZSB0byB1c2UgaW4gdGhlIGNvbmRpdGlvblxuICAgICAqIEByZXR1cm4ge0F0dHJpYnV0ZU9wdGlvbjxNPn0gVGhpcyBidWlsZGVyIGluc3RhbmNlIGZvciBtZXRob2QgY2hhaW5pbmdcbiAgICAgKi9cbiAgICBhdHRyKGF0dHI6IGtleW9mIE0pIHtcbiAgICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZShhdHRyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhbiBlcXVhbGl0eSBjb25kaXRpb25cbiAgICAgKiBAc3VtbWFyeSBCdWlsZHMgYSBjb25kaXRpb24gdGhhdCBjaGVja3MgaWYgdGhlIGF0dHJpYnV0ZSBlcXVhbHMgdGhlIHNwZWNpZmllZCB2YWx1ZVxuICAgICAqIEBwYXJhbSB7YW55fSB2YWwgLSBUaGUgdmFsdWUgdG8gY29tcGFyZSB0aGUgYXR0cmlidXRlIGFnYWluc3RcbiAgICAgKiBAcmV0dXJuIHtDb25kaXRpb248TT59IEEgbmV3IGNvbmRpdGlvbiByZXByZXNlbnRpbmcgdGhlIGVxdWFsaXR5IGNvbXBhcmlzb25cbiAgICAgKi9cbiAgICBlcSh2YWw6IGFueSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0T3AoT3BlcmF0b3IuRVFVQUwsIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYW4gaW5lcXVhbGl0eSBjb25kaXRpb25cbiAgICAgKiBAc3VtbWFyeSBCdWlsZHMgYSBjb25kaXRpb24gdGhhdCBjaGVja3MgaWYgdGhlIGF0dHJpYnV0ZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgc3BlY2lmaWVkIHZhbHVlXG4gICAgICogQHBhcmFtIHthbnl9IHZhbCAtIFRoZSB2YWx1ZSB0byBjb21wYXJlIHRoZSBhdHRyaWJ1dGUgYWdhaW5zdFxuICAgICAqIEByZXR1cm4ge0NvbmRpdGlvbjxNPn0gQSBuZXcgY29uZGl0aW9uIHJlcHJlc2VudGluZyB0aGUgaW5lcXVhbGl0eSBjb21wYXJpc29uXG4gICAgICovXG4gICAgZGlmKHZhbDogYW55KSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXRPcChPcGVyYXRvci5ESUZGRVJFTlQsIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBncmVhdGVyIHRoYW4gY29uZGl0aW9uXG4gICAgICogQHN1bW1hcnkgQnVpbGRzIGEgY29uZGl0aW9uIHRoYXQgY2hlY2tzIGlmIHRoZSBhdHRyaWJ1dGUgaXMgZ3JlYXRlciB0aGFuIHRoZSBzcGVjaWZpZWQgdmFsdWVcbiAgICAgKiBAcGFyYW0ge2FueX0gdmFsIC0gVGhlIHZhbHVlIHRvIGNvbXBhcmUgdGhlIGF0dHJpYnV0ZSBhZ2FpbnN0XG4gICAgICogQHJldHVybiB7Q29uZGl0aW9uPE0+fSBBIG5ldyBjb25kaXRpb24gcmVwcmVzZW50aW5nIHRoZSBncmVhdGVyIHRoYW4gY29tcGFyaXNvblxuICAgICAqL1xuICAgIGd0KHZhbDogYW55KSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXRPcChPcGVyYXRvci5CSUdHRVIsIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBsZXNzIHRoYW4gY29uZGl0aW9uXG4gICAgICogQHN1bW1hcnkgQnVpbGRzIGEgY29uZGl0aW9uIHRoYXQgY2hlY2tzIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbGVzcyB0aGFuIHRoZSBzcGVjaWZpZWQgdmFsdWVcbiAgICAgKiBAcGFyYW0ge2FueX0gdmFsIC0gVGhlIHZhbHVlIHRvIGNvbXBhcmUgdGhlIGF0dHJpYnV0ZSBhZ2FpbnN0XG4gICAgICogQHJldHVybiB7Q29uZGl0aW9uPE0+fSBBIG5ldyBjb25kaXRpb24gcmVwcmVzZW50aW5nIHRoZSBsZXNzIHRoYW4gY29tcGFyaXNvblxuICAgICAqL1xuICAgIGx0KHZhbDogYW55KSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXRPcChPcGVyYXRvci5TTUFMTEVSLCB2YWwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGNvbmRpdGlvblxuICAgICAqIEBzdW1tYXJ5IEJ1aWxkcyBhIGNvbmRpdGlvbiB0aGF0IGNoZWNrcyBpZiB0aGUgYXR0cmlidXRlIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgc3BlY2lmaWVkIHZhbHVlXG4gICAgICogQHBhcmFtIHthbnl9IHZhbCAtIFRoZSB2YWx1ZSB0byBjb21wYXJlIHRoZSBhdHRyaWJ1dGUgYWdhaW5zdFxuICAgICAqIEByZXR1cm4ge0NvbmRpdGlvbjxNPn0gQSBuZXcgY29uZGl0aW9uIHJlcHJlc2VudGluZyB0aGUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIGNvbXBhcmlzb25cbiAgICAgKi9cbiAgICBndGUodmFsOiBhbnkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldE9wKE9wZXJhdG9yLkJJR0dFUl9FUSwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIGxlc3MgdGhhbiBvciBlcXVhbCB0byBjb25kaXRpb25cbiAgICAgKiBAc3VtbWFyeSBCdWlsZHMgYSBjb25kaXRpb24gdGhhdCBjaGVja3MgaWYgdGhlIGF0dHJpYnV0ZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZVxuICAgICAqIEBwYXJhbSB7YW55fSB2YWwgLSBUaGUgdmFsdWUgdG8gY29tcGFyZSB0aGUgYXR0cmlidXRlIGFnYWluc3RcbiAgICAgKiBAcmV0dXJuIHtDb25kaXRpb248TT59IEEgbmV3IGNvbmRpdGlvbiByZXByZXNlbnRpbmcgdGhlIGxlc3MgdGhhbiBvciBlcXVhbCBjb21wYXJpc29uXG4gICAgICovXG4gICAgbHRlKHZhbDogYW55KSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXRPcChPcGVyYXRvci5TTUFMTEVSX0VRLCB2YWwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGFuIGluY2x1c2lvbiBjb25kaXRpb25cbiAgICAgKiBAc3VtbWFyeSBCdWlsZHMgYSBjb25kaXRpb24gdGhhdCBjaGVja3MgaWYgdGhlIGF0dHJpYnV0ZSB2YWx1ZSBpcyBpbmNsdWRlZCBpbiB0aGUgc3BlY2lmaWVkIGFycmF5XG4gICAgICogQHBhcmFtIHthbnlbXX0gYXJyIC0gVGhlIGFycmF5IG9mIHZhbHVlcyB0byBjaGVjayBhZ2FpbnN0XG4gICAgICogQHJldHVybiB7Q29uZGl0aW9uPE0+fSBBIG5ldyBjb25kaXRpb24gcmVwcmVzZW50aW5nIHRoZSBpbmNsdXNpb24gY29tcGFyaXNvblxuICAgICAqL1xuICAgIGluKGFycjogYW55W10pIHtcbiAgICAgIHJldHVybiB0aGlzLnNldE9wKE9wZXJhdG9yLklOLCBhcnIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgcmVndWxhciBleHByZXNzaW9uIGNvbmRpdGlvblxuICAgICAqIEBzdW1tYXJ5IEJ1aWxkcyBhIGNvbmRpdGlvbiB0aGF0IGNoZWNrcyBpZiB0aGUgYXR0cmlidXRlIG1hdGNoZXMgdGhlIHNwZWNpZmllZCByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVyblxuICAgICAqIEBwYXJhbSB7YW55fSB2YWwgLSBUaGUgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4gdG8gbWF0Y2ggYWdhaW5zdFxuICAgICAqIEByZXR1cm4ge0NvbmRpdGlvbjxNPn0gQSBuZXcgY29uZGl0aW9uIHJlcHJlc2VudGluZyB0aGUgcmVndWxhciBleHByZXNzaW9uIGNvbXBhcmlzb25cbiAgICAgKi9cbiAgICByZWdleHAodmFsOiBhbnkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldE9wKE9wZXJhdG9yLlJFR0VYUCwgbmV3IFJlZ0V4cCh2YWwpLnNvdXJjZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBzdGFydHNXaXRoIHN0cmluZyBjb25kaXRpb25cbiAgICAgKiBAc3VtbWFyeSBCdWlsZHMgYSBjb25kaXRpb24gdGhhdCBjaGVja3MgaWYgdGhlIGF0dHJpYnV0ZSBzdHJpbmcgc3RhcnRzIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXhcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJlZml4IC0gVGhlIHByZWZpeCB0byBtYXRjaCBhdCB0aGUgc3RhcnQgb2YgdGhlIHN0cmluZ1xuICAgICAqIEByZXR1cm4ge0NvbmRpdGlvbjxNPn0gQSBuZXcgY29uZGl0aW9uIHJlcHJlc2VudGluZyB0aGUgc3RhcnRzV2l0aCBjb21wYXJpc29uXG4gICAgICovXG4gICAgc3RhcnRzV2l0aChwcmVmaXg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0T3AoT3BlcmF0b3IuU1RBUlRTX1dJVEgsIHByZWZpeCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYW4gZW5kc1dpdGggc3RyaW5nIGNvbmRpdGlvblxuICAgICAqIEBzdW1tYXJ5IEJ1aWxkcyBhIGNvbmRpdGlvbiB0aGF0IGNoZWNrcyBpZiB0aGUgYXR0cmlidXRlIHN0cmluZyBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCBzdWZmaXhcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3VmZml4IC0gVGhlIHN1ZmZpeCB0byBtYXRjaCBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmdcbiAgICAgKiBAcmV0dXJuIHtDb25kaXRpb248TT59IEEgbmV3IGNvbmRpdGlvbiByZXByZXNlbnRpbmcgdGhlIGVuZHNXaXRoIGNvbXBhcmlzb25cbiAgICAgKi9cbiAgICBlbmRzV2l0aChzdWZmaXg6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0T3AoT3BlcmF0b3IuRU5EU19XSVRILCBzdWZmaXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgYmV0d2VlbiBjb25kaXRpb25cbiAgICAgKiBAc3VtbWFyeSBCdWlsZHMgYSBjb25kaXRpb24gdGhhdCBjaGVja3MgaWYgdGhlIGF0dHJpYnV0ZSB2YWx1ZSBpcyBiZXR3ZWVuIG1pbiBhbmQgbWF4IChpbmNsdXNpdmUpXG4gICAgICogQHBhcmFtIHthbnl9IG1pbiAtIFRoZSBtaW5pbXVtIHZhbHVlIChpbmNsdXNpdmUpXG4gICAgICogQHBhcmFtIHthbnl9IG1heCAtIFRoZSBtYXhpbXVtIHZhbHVlIChpbmNsdXNpdmUpXG4gICAgICogQHJldHVybiB7Q29uZGl0aW9uPE0+fSBBIG5ldyBjb25kaXRpb24gcmVwcmVzZW50aW5nIHRoZSBiZXR3ZWVuIGNvbXBhcmlzb25cbiAgICAgKi9cbiAgICBiZXR3ZWVuKG1pbjogYW55LCBtYXg6IGFueSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0T3AoT3BlcmF0b3IuQkVUV0VFTiwgW21pbiwgbWF4XSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNldHMgdGhlIG9wZXJhdG9yIGFuZCBjb21wYXJpc29uIHZhbHVlIGZvciB0aGUgY29uZGl0aW9uXG4gICAgICogQHN1bW1hcnkgUHJpdmF0ZSBtZXRob2QgdGhhdCBjb25maWd1cmVzIHRoZSBjb25kaXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIG9wZXJhdG9yIGFuZCB2YWx1ZVxuICAgICAqIEBwYXJhbSB7T3BlcmF0b3J9IG9wIC0gVGhlIG9wZXJhdG9yIHRvIHVzZSBmb3IgdGhlIGNvbmRpdGlvblxuICAgICAqIEBwYXJhbSB7YW55fSB2YWwgLSBUaGUgdmFsdWUgdG8gY29tcGFyZSBhZ2FpbnN0XG4gICAgICogQHJldHVybiB7Q29uZGl0aW9uPE0+fSBBIG5ldyBjb25kaXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIG9wZXJhdG9yIGFuZCB2YWx1ZVxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0T3Aob3A6IE9wZXJhdG9yLCB2YWw6IGFueSkge1xuICAgICAgdGhpcy5vcGVyYXRvciA9IG9wO1xuICAgICAgdGhpcy5jb21wYXJpc29uID0gdmFsO1xuICAgICAgcmV0dXJuIHRoaXMuYnVpbGQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29uc3RydWN0cyBhIENvbmRpdGlvbiBpbnN0YW5jZSBmcm9tIHRoZSBidWlsZGVyJ3Mgc3RhdGVcbiAgICAgKiBAc3VtbWFyeSBGaW5hbGl6ZXMgdGhlIGNvbmRpdGlvbiBidWlsZGluZyBwcm9jZXNzIGJ5IGNyZWF0aW5nIGEgbmV3IENvbmRpdGlvbiBpbnN0YW5jZVxuICAgICAqIEB0aHJvd3Mge1F1ZXJ5RXJyb3J9IElmIHRoZSBjb25kaXRpb24gY2Fubm90IGJlIGJ1aWx0IGR1ZSB0byBpbnZhbGlkIHBhcmFtZXRlcnNcbiAgICAgKiBAcmV0dXJuIHtDb25kaXRpb248TT59IEEgbmV3IGNvbmRpdGlvbiBpbnN0YW5jZSB3aXRoIHRoZSBjb25maWd1cmVkIGF0dHJpYnV0ZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIGJ1aWxkKCk6IENvbmRpdGlvbjxNPiB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gbmV3IENvbmRpdGlvbihcbiAgICAgICAgICB0aGlzLmF0dHIxIGFzIHN0cmluZyB8IENvbmRpdGlvbjxNPixcbiAgICAgICAgICB0aGlzLm9wZXJhdG9yIGFzIE9wZXJhdG9yLFxuICAgICAgICAgIHRoaXMuY29tcGFyaXNvbiBhcyBhbnlcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgbmV3IGNvbmRpdGlvbiBidWlsZGVyXG4gICAqIEBzdW1tYXJ5IEZhY3RvcnkgbWV0aG9kIHRoYXQgcmV0dXJucyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY29uZGl0aW9uIGJ1aWxkZXJcbiAgICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSB0aGlzIGNvbmRpdGlvbiBidWlsZGVyIHdpbGwgb3BlcmF0ZSBvblxuICAgKiBAcmV0dXJuIHtDb25kaXRpb25CdWlsZGVyT3B0aW9uPE0+fSBBIG5ldyBjb25kaXRpb24gYnVpbGRlciBpbnN0YW5jZVxuICAgKi9cbiAgc3RhdGljIGJ1aWxkZXI8TSBleHRlbmRzIE1vZGVsPigpOiBDb25kaXRpb25CdWlsZGVyT3B0aW9uPE0+IHtcbiAgICByZXR1cm4gbmV3IENvbmRpdGlvbi5CdWlsZGVyPE0+KCk7XG4gIH1cblxuICBzdGF0aWMgZnJvbShvYmo6IE1vZGVsQXJnPENvbmRpdGlvbjxhbnk+Pikge1xuICAgIHJldHVybiBuZXcgQ29uZGl0aW9uKG9iaik7XG4gIH1cbn1cbiJdfQ==
@@ -441,4 +441,4 @@ export class MethodQueryBuilder extends LoggedClass {
441
441
  return { orderBy, limit, offset };
442
442
  }
443
443
  }
444
- //# sourceMappingURL=MethodQueryBuilder.js.map
444
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWV0aG9kUXVlcnlCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3F1ZXJ5L01ldGhvZFF1ZXJ5QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBS0wsV0FBVyxHQUNaLG1CQUFnQjtBQUNqQixPQUFPLEVBQUUsWUFBWSxFQUFFLG1CQUFnQjtBQUN2QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBVSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLHFDQUFnQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLG9CQUFpQjtBQUV0QyxNQUFNLFVBQVUsR0FBRyxDQUFDLEdBQVcsRUFBVSxFQUFFLENBQ3pDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQU83Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9ERztBQUNILE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxXQUFXO0lBR3ZDLE1BQU0sS0FBSyxHQUFHO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7T0FHRzthQUNxQixjQUFTLEdBQWdDO1FBQy9ELENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE1BQU07UUFDN0IsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTTtRQUM3QixDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMs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L0NvbmRpdGlvblwiO1xuaW1wb3J0IHsgT3JkZXJCeVNlbGVjdG9yIH0gZnJvbSBcIi4uL3F1ZXJ5L3NlbGVjdG9yc1wiO1xuaW1wb3J0IHtcbiAgRmlsdGVyRGVzY3JpcHRvcixcbiAgT3JkZXJMaW1pdE9mZnNldEV4dHJhY3QsXG4gIFF1ZXJ5QWN0aW9uLFxuICBRdWVyeUFzc2lzdCxcbiAgUXVlcnlDbGF1c2UsXG59IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBPcGVyYXRvcnNNYXAgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgTG9nZ2VkQ2xhc3MsIExvZ2dlciwgTG9nZ2luZyB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgT3JkZXJEaXJlY3Rpb24gfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9jb25zdGFudHNcIjtcbmltcG9ydCB7IFF1ZXJ5RXJyb3IgfSBmcm9tIFwiLi9lcnJvcnNcIjtcblxuY29uc3QgbG93ZXJGaXJzdCA9IChzdHI6IHN0cmluZyk6IHN0cmluZyA9PlxuICBzdHIuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSk7XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5QWN0aW9uUHJlZml4ID0ge1xuICBhY3Rpb246IFF1ZXJ5QWN0aW9uO1xuICBwcmVmaXg6IHN0cmluZztcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBVdGlsaXR5IGNsYXNzIHRvIGJ1aWxkIHF1ZXJ5IG9iamVjdHMgZnJvbSByZXBvc2l0b3J5IG1ldGhvZCBuYW1lcy5cbiAqXG4gKiBAc3VtbWFyeVxuICogVGhlIGBNZXRob2RRdWVyeUJ1aWxkZXJgIGNsYXNzIHBhcnNlcyBtZXRob2QgbmFtZXMgdGhhdCBmb2xsb3cgYSBzcGVjaWZpYyBuYW1pbmcgY29udmVudGlvblxuICogKGUuZy4sIGBmaW5kQnlOYW1lQW5kQWdlT3JkZXJCeUNvdW50cnlBc2NgKSBhbmQgY29udmVydHMgdGhlbSBpbnRvIHN0cnVjdHVyZWQgcXVlcnkgb2JqZWN0c1xuICogKGBRdWVyeUFzc2lzdGApLiBJdCBleHRyYWN0cyBjbGF1c2VzIHN1Y2ggYXMgYHNlbGVjdGAsIGB3aGVyZWAsIGBncm91cEJ5YCwgYG9yZGVyQnlgLCBgbGltaXRgLFxuICogYW5kIGBvZmZzZXRgLCBlbnN1cmluZyB0aGF0IGRldmVsb3BlcnMgY2FuIGRlY2xhcmUgcmVwb3NpdG9yeSBxdWVyaWVzIHVzaW5nIGV4cHJlc3NpdmUgbWV0aG9kIG5hbWVzLlxuICpcbiAqIEBwYXJhbSBtZXRob2ROYW1lIHtzdHJpbmd9IC0gVGhlIHJlcG9zaXRvcnkgbWV0aG9kIG5hbWUgdG8gcGFyc2UgYW5kIGNvbnZlcnQgaW50byBhIHF1ZXJ5LlxuICogQHBhcmFtIHZhbHVlcyB7YW55W119IC0gVGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIG1ldGhvZCBwYXJhbWV0ZXJzIHVzZWQgZm9yIHF1ZXJ5IGNvbmRpdGlvbnMuXG4gKlxuICogQHJldHVybiB7UXVlcnlBc3Npc3R9IEEgc3RydWN0dXJlZCBxdWVyeSBvYmplY3QgZGVzY3JpYmluZyB0aGUgcGFyc2VkIGFjdGlvbiwgc2VsZWN0LCB3aGVyZSxcbiAqIGdyb3VwQnksIG9yZGVyQnksIGxpbWl0LCBhbmQgb2Zmc2V0IGNsYXVzZXMuXG4gKlxuICogQGNsYXNzXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBjb25zdCBxdWVyeSA9IE1ldGhvZFF1ZXJ5QnVpbGRlci5idWlsZChcbiAqICAgXCJmaW5kQnlOYW1lQW5kQWdlT3JkZXJCeUNvdW50cnlBc2NcIixcbiAqICAgXCJKb2huXCIsXG4gKiAgIDI1LFxuICogICBbW1wiY291bnRyeVwiLCBcIkFTQ1wiXV1cbiAqICk7XG4gKlxuICogY29uc29sZS5sb2cocXVlcnkpO1xuICogLy8ge1xuICogLy8gICBhY3Rpb246IFwiZmluZFwiLFxuICogLy8gICBzZWxlY3Q6IHVuZGVmaW5lZCxcbiAqIC8vICAgd2hlcmU6IHsgLi4uIH0sXG4gKiAvLyAgIGdyb3VwQnk6IHVuZGVmaW5lZCxcbiAqIC8vICAgb3JkZXJCeTogW1tcImNvdW50cnlcIiwgXCJBU0NcIl1dLFxuICogLy8gICBsaW1pdDogdW5kZWZpbmVkLFxuICogLy8gICBvZmZzZXQ6IHVuZGVmaW5lZFxuICogLy8gfVxuICogYGBgXG4gKlxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBSZXBvIGFzIFJlcG9zaXRvcnkgTWV0aG9kXG4gKiAgIHBhcnRpY2lwYW50IE1RQiBhcyBNZXRob2RRdWVyeUJ1aWxkZXJcbiAqICAgcGFydGljaXBhbnQgUXVlcnkgYXMgUXVlcnlBc3Npc3RcbiAqXG4gKiAgIFJlcG8tPj5NUUI6IGJ1aWxkKG1ldGhvZE5hbWUsIC4uLnZhbHVlcylcbiAqICAgTVFCLT4+TVFCOiBleHRyYWN0Q29yZShtZXRob2ROYW1lKVxuICogICBNUUItPj5NUUI6IGV4dHJhY3RTZWxlY3QobWV0aG9kTmFtZSlcbiAqICAgTVFCLT4+TVFCOiBleHRyYWN0R3JvdXBCeShtZXRob2ROYW1lKVxuICogICBNUUItPj5NUUI6IGJ1aWxkV2hlcmUoY29yZSwgdmFsdWVzKVxuICogICBNUUItPj5NUUI6IGV4dHJhY3RPcmRlckxpbWl0T2Zmc2V0KGNvcmUsIHZhbHVlcylcbiAqICAgTVFCLT4+UXVlcnk6IHJldHVybiBzdHJ1Y3R1cmVkIFF1ZXJ5QXNzaXN0IG9iamVjdFxuICovXG5leHBvcnQgY2xhc3MgTWV0aG9kUXVlcnlCdWlsZGVyIGV4dGVuZHMgTG9nZ2VkQ2xhc3Mge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBMb2dnZXI7XG5cbiAgcHJvdGVjdGVkIHN0YXRpYyBnZXQgbG9nKCk6IExvZ2dlciB7XG4gICAgaWYgKCF0aGlzLl9sb2dnZXIpIHRoaXMuX2xvZ2dlciA9IExvZ2dpbmcuZm9yKE1ldGhvZFF1ZXJ5QnVpbGRlci5uYW1lKTtcbiAgICByZXR1cm4gdGhpcy5fbG9nZ2VyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBNYXAgb2YgcXVlcnkgcHJlZml4ZXMgdG8gdGhlaXIgY29ycmVzcG9uZGluZyBhY3Rpb25zLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgcHJlZml4TWFwOiBSZWNvcmQ8c3RyaW5nLCBRdWVyeUFjdGlvbj4gPSB7XG4gICAgW1F1ZXJ5Q2xhdXNlLkZJTkRfQlldOiBcImZpbmRcIixcbiAgICBbUXVlcnlDbGF1c2UuUEFHRV9CWV06IFwicGFnZVwiLFxuICAgIFtRdWVyeUNsYXVzZS5DT1VOVF9CWV06IFwiY291bnRcIixcbiAgICBbUXVlcnlDbGF1c2UuU1VNX0JZXTogXCJzdW1cIixcbiAgICBbUXVlcnlDbGF1c2UuQVZHX0JZXTogXCJhdmdcIixcbiAgICBbUXVlcnlDbGF1c2UuTUlOX0JZXTogXCJtaW5cIixcbiAgICBbUXVlcnlDbGF1c2UuTUFYX0JZXTogXCJtYXhcIixcbiAgICBbUXVlcnlDbGF1c2UuRElTVElOQ1RfQlldOiBcImRpc3RpbmN0XCIsXG4gICAgW1F1ZXJ5Q2xhdXNlLkdST1VQX0JZX1BSRUZJWF06IFwiZ3JvdXBcIixcbiAgfTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIERldGVybWluZXMgdGhlIGFjdGlvbiBhbmQgcHJlZml4IGxlbmd0aCBmcm9tIGEgbWV0aG9kIG5hbWUuXG4gICAqXG4gICAqIEBwYXJhbSBtZXRob2ROYW1lIHtzdHJpbmd9IC0gVGhlIHJlcG9zaXRvcnkgbWV0aG9kIG5hbWUuXG4gICAqIEByZXR1cm4ge1F1ZXJ5QWN0aW9uUHJlZml4fSB8IHVuZGVmaW5lZH0gVGhlIGFjdGlvbiBhbmQgcHJlZml4IGlmIGZvdW5kLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0QWN0aW9uRnJvbU1ldGhvZE5hbWUoXG4gICAgbWV0aG9kTmFtZTogc3RyaW5nXG4gICk6IFF1ZXJ5QWN0aW9uUHJlZml4IHwgdW5kZWZpbmVkIHtcbiAgICBmb3IgKGNvbnN0IFtwcmVmaXgsIGFjdGlvbl0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5wcmVmaXhNYXApKSB7XG4gICAgICBpZiAobWV0aG9kTmFtZS5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICAgICAgcmV0dXJuIHsgYWN0aW9uLCBwcmVmaXggfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQnVpbGRzIGEgYFF1ZXJ5QXNzaXN0YCBvYmplY3QgYnkgcGFyc2luZyBhIHJlcG9zaXRvcnkgbWV0aG9kIG5hbWUgYW5kIHZhbHVlcy5cbiAgICpcbiAgICogQHN1bW1hcnlcbiAgICogVGhlIG1ldGhvZCB2YWxpZGF0ZXMgdGhlIG1ldGhvZCBuYW1lLCBleHRyYWN0cyBjbGF1c2VzIChjb3JlLCBzZWxlY3QsIGdyb3VwQnksIHdoZXJlLFxuICAgKiBvcmRlckJ5LCBsaW1pdCwgYW5kIG9mZnNldCksIGFuZCBhc3NlbWJsZXMgdGhlbSBpbnRvIGEgc3RydWN0dXJlZCBxdWVyeSBvYmplY3RcbiAgICogdGhhdCBjYW4gYmUgZXhlY3V0ZWQgYWdhaW5zdCBhIGRhdGEgc291cmNlLlxuICAgKlxuICAgKiBAcGFyYW0gbWV0aG9kTmFtZSB7c3RyaW5nfSAtIFRoZSByZXBvc2l0b3J5IG1ldGhvZCBuYW1lIHRoYXQgZW5jb2RlcyBxdWVyeSBpbmZvcm1hdGlvbi5cbiAgICogQHBhcmFtIHZhbHVlcyB7YW55W119IC0gVGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGNvbmRpdGlvbnMgYW5kIGV4dHJhIGNsYXVzZXMuXG4gICAqXG4gICAqIEByZXR1cm4ge1F1ZXJ5QXNzaXN0fSBBIHN0cnVjdHVyZWQgcXVlcnkgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgcGFyc2VkIHF1ZXJ5LlxuICAgKi9cbiAgc3RhdGljIGJ1aWxkKG1ldGhvZE5hbWU6IHN0cmluZywgLi4udmFsdWVzOiBhbnlbXSk6IFF1ZXJ5QXNzaXN0IHtcbiAgICBjb25zdCBhY3Rpb25JbmZvID0gdGhpcy5nZXRBY3Rpb25Gcm9tTWV0aG9kTmFtZShtZXRob2ROYW1lKTtcbiAgICBpZiAoIWFjdGlvbkluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgbWV0aG9kICR7bWV0aG9kTmFtZX1gKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGFjdGlvbiwgcHJlZml4IH0gPSBhY3Rpb25JbmZvO1xuXG4gICAgLy8gRm9yIGFnZ3JlZ2F0aW9uIG1ldGhvZHMgKGNvdW50LCBzdW0sIGF2ZywgbWluLCBtYXgsIGRpc3RpbmN0KSwgZXh0cmFjdCB0aGUgc2VsZWN0b3IgZmllbGRcbiAgICBsZXQgc2VsZWN0b3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBpZiAoXG4gICAgICBbXCJjb3VudFwiLCBcInN1bVwiLCBcImF2Z1wiLCBcIm1pblwiLCBcIm1heFwiLCBcImRpc3RpbmN0XCIsIFwiZ3JvdXBcIl0uaW5jbHVkZXMoXG4gICAgICAgIGFjdGlvblxuICAgICAgKVxuICAgICkge1xuICAgICAgc2VsZWN0b3IgPSB0aGlzLmV4dHJhY3RBZ2dyZWdhdGlvblNlbGVjdG9yKG1ldGhvZE5hbWUsIHByZWZpeCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29yZSA9IHRoaXMuZXh0cmFjdENvcmUobWV0aG9kTmFtZSwgcHJlZml4KTtcbiAgICBjb25zdCBzZWxlY3QgPSB0aGlzLmV4dHJhY3RTZWxlY3QobWV0aG9kTmFtZSk7XG4gICAgY29uc3QgZ3JvdXBCeSA9IHRoaXMuZXh0cmFjdEdyb3VwQnkobWV0aG9kTmFtZSk7XG4gICAgY29uc3Qgd2hlcmUgPSB0aGlzLmJ1aWxkV2hlcmUoY29yZSwgdmFsdWVzKTtcbiAgICBjb25zdCB7IG9yZGVyQnksIGxpbWl0LCBvZmZzZXQgfSA9IHRoaXMuZXh0cmFjdE9yZGVyTGltaXRPZmZzZXQoXG4gICAgICBtZXRob2ROYW1lLFxuICAgICAgdmFsdWVzLFxuICAgICAgY29yZVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWN0aW9uLFxuICAgICAgc2VsZWN0LFxuICAgICAgc2VsZWN0b3IsXG4gICAgICB3aGVyZSxcbiAgICAgIGdyb3VwQnksXG4gICAgICBvcmRlckJ5LFxuICAgICAgbGltaXQsXG4gICAgICBvZmZzZXQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRXh0cmFjdHMgdGhlIGFnZ3JlZ2F0aW9uIHNlbGVjdG9yIGZpZWxkIGZyb20gbWV0aG9kIG5hbWVzIGxpa2UgY291bnRCeUFnZSwgc3VtQnlQcmljZS5cbiAgICpcbiAgICogQHBhcmFtIG1ldGhvZE5hbWUge3N0cmluZ30gLSBUaGUgbWV0aG9kIG5hbWUuXG4gICAqIEBwYXJhbSBwcmVmaXgge3N0cmluZ30gLSBUaGUgcHJlZml4IHRvIHJlbW92ZS5cbiAgICogQHJldHVybiB7c3RyaW5nIHwgdW5kZWZpbmVkfSBUaGUgc2VsZWN0b3IgZmllbGQgbmFtZS5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGV4dHJhY3RBZ2dyZWdhdGlvblNlbGVjdG9yKFxuICAgIG1ldGhvZE5hbWU6IHN0cmluZyxcbiAgICBwcmVmaXg6IHN0cmluZ1xuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGFmdGVyUHJlZml4ID0gbWV0aG9kTmFtZS5zdWJzdHJpbmcocHJlZml4Lmxlbmd0aCk7XG4gICAgLy8gRmluZCB3aGVyZSB0aGUgc2VsZWN0b3IgZW5kcyAoYXQgbmV4dCBjbGF1c2Uga2V5d29yZCwgb3BlcmF0b3IsIG9yIGVuZClcbiAgICAvLyBJbmNsdWRlIFRoZW5CeSBmb3IgZ3JvdXBCeSBwcmVmaXhcbiAgICBjb25zdCByZWdleCA9IC8oQW5kfE9yfEdyb3VwQnl8T3JkZXJCeXxTZWxlY3R8TGltaXR8T2Zmc2V0fFRoZW5CeSkvO1xuICAgIGNvbnN0IG1hdGNoID0gYWZ0ZXJQcmVmaXgubWF0Y2gocmVnZXgpO1xuICAgIGNvbnN0IHNlbGVjdG9yUGFydCA9IG1hdGNoXG4gICAgICA/IGFmdGVyUHJlZml4LnN1YnN0cmluZygwLCBtYXRjaC5pbmRleClcbiAgICAgIDogYWZ0ZXJQcmVmaXg7XG4gICAgcmV0dXJuIHNlbGVjdG9yUGFydCA/IGxvd2VyRmlyc3Qoc2VsZWN0b3JQYXJ0KSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRXh0cmFjdHMgdGhlIGNvcmUgcGFydCBvZiB0aGUgbWV0aG9kIG5hbWUgYWZ0ZXIgdGhlIHByZWZpeCBhbmQgYmVmb3JlIGFueSBzcGVjaWFsIGNsYXVzZXMuXG4gICAqXG4gICAqIEBzdW1tYXJ5XG4gICAqIFJlbW92ZXMgcHJlZml4ZXMgYW5kIGRldGVjdHMgZGVsaW1pdGVycyAoYFRoZW5gLCBgT3JkZXJCeWAsIGBHcm91cEJ5YCwgYExpbWl0YCwgYE9mZnNldGApXG4gICAqIHRvIGlzb2xhdGUgdGhlIG1haW4gY29uZGl0aW9uYWwgcGFydCBvZiB0aGUgcXVlcnkuXG4gICAqXG4gICAqIEBwYXJhbSBtZXRob2ROYW1lIHtzdHJpbmd9IC0gVGhlIG1ldGhvZCBuYW1lIHRvIHBhcnNlLlxuICAgKiBAcGFyYW0gcHJlZml4IHtzdHJpbmd9IC0gVGhlIHByZWZpeCB0byByZW1vdmUgKGUuZy4sIFwiZmluZEJ5XCIsIFwiY291bnRCeVwiKS5cbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgZXh0cmFjdGVkIGNvcmUgc3RyaW5nIHVzZWQgZm9yIGJ1aWxkaW5nIGNvbmRpdGlvbnMuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBleHRyYWN0Q29yZShcbiAgICBtZXRob2ROYW1lOiBzdHJpbmcsXG4gICAgcHJlZml4OiBzdHJpbmcgPSBRdWVyeUNsYXVzZS5GSU5EX0JZXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgYWZ0ZXJQcmVmaXggPSBtZXRob2ROYW1lLnN1YnN0cmluZyhwcmVmaXgubGVuZ3RoKTtcblxuICAgIC8vIEZvciBhZ2dyZWdhdGlvbiBtZXRob2RzIChub3QgZmluZEJ5IG9yIHBhZ2VCeSksIHdlIG5lZWQgdG8gc2tpcCB0aGUgc2VsZWN0b3IgZmllbGRcbiAgICBjb25zdCBpc0FnZ3JlZ2F0aW9uUHJlZml4ID1cbiAgICAgIHByZWZpeCAhPT0gUXVlcnlDbGF1c2UuRklORF9CWSAmJiBwcmVmaXggIT09IFF1ZXJ5Q2xhdXNlLlBBR0VfQlk7XG5cbiAgICBpZiAoaXNBZ2dyZWdhdGlvblByZWZpeCkge1xuICAgICAgLy8gRm9yIGFnZ3JlZ2F0aW9uIG1ldGhvZHMsIHdlIG5lZWQgdG8gZmluZCB3aGVyZSBhY3R1YWwgY29uZGl0aW9ucyBzdGFydFxuICAgICAgLy8gQ29uZGl0aW9ucyBhcmUgaW5kaWNhdGVkIGJ5IEFuZHxPciBBRlRFUiB0aGUgc2VsZWN0b3IgZmllbGRcbiAgICAgIC8vIEZvciBcImNvdW50QnlBZ2VBbmROYW1lRXF1YWxzXCIsIGNvbmRpdGlvbnMgc3RhcnQgYXQgXCJBbmROYW1lRXF1YWxzXCJcbiAgICAgIC8vIEZvciBcInN1bUJ5UHJpY2VHcm91cEJ5Q2F0ZWdvcnlcIiwgdGhlcmUgYXJlIG5vIGNvbmRpdGlvbnNcblxuICAgICAgLy8gRmlyc3QsIGlkZW50aWZ5IHRoZSBzZWxlY3RvciBmaWVsZCBib3VuZGFyeVxuICAgICAgLy8gVGhlIHNlbGVjdG9yIGVuZHMgYXQ6IEFuZCwgT3IsIEdyb3VwQnksIE9yZGVyQnksIFRoZW5CeSwgU2VsZWN0LCBMaW1pdCwgT2Zmc2V0XG4gICAgICBjb25zdCBzZWxlY3RvckVuZE1hdGNoID0gYWZ0ZXJQcmVmaXgubWF0Y2goXG4gICAgICAgIC8oQW5kfE9yfEdyb3VwQnl8T3JkZXJCeXxUaGVuQnl8U2VsZWN0fExpbWl0fE9mZnNldCkvXG4gICAgICApO1xuXG4gICAgICBpZiAoIXNlbGVjdG9yRW5kTWF0Y2gpIHtcbiAgICAgICAgLy8gTm8gZGVsaW1pdGVyIGZvdW5kLCBlbnRpcmUgc3VmZml4IGlzIHRoZSBzZWxlY3Rvciwgbm8gY29uZGl0aW9uc1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGZpcnN0IGRlbGltaXRlciBpcyBBbmQgb3IgT3IgKGluZGljYXRpbmcgYSBjb25kaXRpb24pXG4gICAgICBpZiAoc2VsZWN0b3JFbmRNYXRjaFswXSA9PT0gXCJBbmRcIiB8fCBzZWxlY3RvckVuZE1hdGNoWzBdID09PSBcIk9yXCIpIHtcbiAgICAgICAgLy8gRXh0cmFjdCBldmVyeXRoaW5nIEFGVEVSIHRoZSBBbmQvT3IgKHNraXAgdGhlIEFuZC9PciBpdHNlbGYgZm9yIHRoZSBmaXJzdCBjb25kaXRpb24pXG4gICAgICAgIGNvbnN0IGFmdGVyQW5kT3IgPSBhZnRlclByZWZpeC5zdWJzdHJpbmcoXG4gICAgICAgICAgc2VsZWN0b3JFbmRNYXRjaC5pbmRleCEgKyBzZWxlY3RvckVuZE1hdGNoWzBdLmxlbmd0aFxuICAgICAgICApO1xuXG4gICAgICAgIC8vIE5vdyBhcHBseSBzdGFuZGFyZCBkZWxpbWl0ZXIgZXh0cmFjdGlvblxuICAgICAgICBjb25zdCBkZWxpbWl0ZXJNYXRjaCA9IGFmdGVyQW5kT3IubWF0Y2goXG4gICAgICAgICAgLyhUaGVuW0EtWl18T3JkZXJCeXxHcm91cEJ5fExpbWl0fE9mZnNldHxTZWxlY3R8VGhlbkJ5KS9cbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGRlbGltaXRlck1hdGNoXG4gICAgICAgICAgPyBhZnRlckFuZE9yLnN1YnN0cmluZygwLCBkZWxpbWl0ZXJNYXRjaC5pbmRleClcbiAgICAgICAgICA6IGFmdGVyQW5kT3I7XG4gICAgICB9XG5cbiAgICAgIC8vIEZpcnN0IGRlbGltaXRlciBpcyBub3QgQW5kL09yLCBzbyB0aGVyZSBhcmUgbm8gY29uZGl0aW9uc1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgLy8gRm9yIGZpbmRCeSBhbmQgcGFnZUJ5LCBleHRyYWN0IGNvcmUgbm9ybWFsbHlcbiAgICBjb25zdCByZWdleCA9IC8oVGhlbltBLVpdfE9yZGVyQnl8R3JvdXBCeXxMaW1pdHxPZmZzZXR8U2VsZWN0KS87XG4gICAgY29uc3QgbWF0Y2ggPSBhZnRlclByZWZpeC5tYXRjaChyZWdleCk7XG4gICAgY29uc3QgY29yZVBhcnQgPSBtYXRjaFxuICAgICAgPyBhZnRlclByZWZpeC5zdWJzdHJpbmcoMCwgbWF0Y2guaW5kZXgpXG4gICAgICA6IGFmdGVyUHJlZml4O1xuXG4gICAgcmV0dXJuIGNvcmVQYXJ0O1xuICB9XG5cbiAgc3RhdGljIGdldEZpZWxkc0Zyb21NZXRob2ROYW1lKG1ldGhvZE5hbWU6IHN0cmluZyk6IEFycmF5PHN0cmluZz4ge1xuICAgIGNvbnN0IGFjdGlvbkluZm8gPSB0aGlzLmdldEFjdGlvbkZyb21NZXRob2ROYW1lKG1ldGhvZE5hbWUpO1xuICAgIGNvbnN0IHByZWZpeCA9IGFjdGlvbkluZm8/LnByZWZpeCB8fCBRdWVyeUNsYXVzZS5GSU5EX0JZO1xuICAgIGNvbnN0IGNvcmUgPSB0aGlzLmV4dHJhY3RDb3JlKG1ldGhvZE5hbWUsIHByZWZpeCk7XG4gICAgaWYgKCFjb3JlKSByZXR1cm4gW107XG4gICAgY29uc3QgcGFydHMgPSBjb3JlLnNwbGl0KC9PcmRlckJ5fEdyb3VwQnkvKVswXSB8fCBcIlwiO1xuICAgIGNvbnN0IGNvbmRpdGlvbnMgPSBwYXJ0cy5zcGxpdCgvQW5kfE9yLyk7XG4gICAgcmV0dXJuIGNvbmRpdGlvbnNcbiAgICAgIC5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5sZW5ndGggPiAwKVxuICAgICAgLm1hcCgodG9rZW4pID0+IHtcbiAgICAgICAgY29uc3QgeyBvcGVyYXRvciwgZmllbGQgfSA9IHRoaXMucGFyc2VGaWVsZEFuZE9wZXJhdG9yKHRva2VuKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkICsgKG9wZXJhdG9yID8/IFwiXCIpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEV4dHJhY3RzIHRoZSBzZWxlY3QgY2xhdXNlIGZyb20gYSBtZXRob2QgbmFtZS5cbiAgICpcbiAgICogQHN1bW1hcnlcbiAgICogRGV0ZWN0cyB0aGUgYFNlbGVjdGAga2V5d29yZCBpbiB0aGUgbWV0aG9kIG5hbWUsIGlzb2xhdGVzIHRoZSBmaWVsZHMgZm9sbG93aW5nIGl0LFxuICAgKiBhbmQgcmV0dXJucyB0aGVtIGFzIGFuIGFycmF5IG9mIGxvd2VyY2FzZS1maXJzdCBzdHJpbmdzLlxuICAgKlxuICAgKiBAcGFyYW0gbWV0aG9kTmFtZSB7c3RyaW5nfSAtIFRoZSBtZXRob2QgbmFtZSB0byBwYXJzZS5cbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nW10gfCB1bmRlZmluZWR9IEFuIGFycmF5IG9mIHNlbGVjdGVkIGZpZWxkcyBvciBgdW5kZWZpbmVkYCBpZiBubyBzZWxlY3QgY2xhdXNlIGV4aXN0cy5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGV4dHJhY3RTZWxlY3QobWV0aG9kTmFtZTogc3RyaW5nKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHNlbGVjdEluZGV4ID0gbWV0aG9kTmFtZS5pbmRleE9mKFF1ZXJ5Q2xhdXNlLlNFTEVDVCk7XG4gICAgaWYgKHNlbGVjdEluZGV4ID09PSAtMSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGFmdGVyU2VsZWN0ID0gbWV0aG9kTmFtZS5zdWJzdHJpbmcoXG4gICAgICBzZWxlY3RJbmRleCArIFF1ZXJ5Q2xhdXNlLlNFTEVDVC5sZW5ndGhcbiAgICApO1xuXG4gICAgLy8gU2VhcmNoIGZvciBuZXh0IFRoZW4sIEdyb3VwQnksIE9yZGVyQnkuLi5cbiAgICBjb25zdCBtYXRjaCA9IGFmdGVyU2VsZWN0Lm1hdGNoKC8oVGhlbltBLVpdfE9yZGVyQnl8R3JvdXBCeXxMaW1pdHxPZmZzZXQpLyk7XG5cbiAgICBjb25zdCBzZWxlY3RQYXJ0ID0gbWF0Y2hcbiAgICAgID8gYWZ0ZXJTZWxlY3Quc3Vic3RyaW5nKDAsIG1hdGNoLmluZGV4KVxuICAgICAgOiBhZnRlclNlbGVjdDtcblxuICAgIHJldHVybiBzZWxlY3RQYXJ0LnNwbGl0KFF1ZXJ5Q2xhdXNlLkFORCkubWFwKGxvd2VyRmlyc3QpLmZpbHRlcihCb29sZWFuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRXh0cmFjdHMgdGhlIGdyb3VwIGJ5IGNsYXVzZSBmcm9tIGEgbWV0aG9kIG5hbWUuXG4gICAqXG4gICAqIEBzdW1tYXJ5XG4gICAqIERldGVjdHMgdGhlIGBHcm91cEJ5YCBrZXl3b3JkIGluIHRoZSBtZXRob2QgbmFtZSwgaXNvbGF0ZXMgdGhlIGZpZWxkcyBmb2xsb3dpbmcgaXQsXG4gICAqIGFuZCByZXR1cm5zIHRoZW0gYXMgYW4gYXJyYXkgb2YgbG93ZXJjYXNlLWZpcnN0IHN0cmluZ3MuXG4gICAqXG4gICAqIEBwYXJhbSBtZXRob2ROYW1lIHtzdHJpbmd9IC0gVGhlIG1ldGhvZCBuYW1lIHRvIHBhcnNlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmdbXSB8IHVuZGVmaW5lZH0gQW4gYXJyYXkgb2YgZ3JvdXAgYnkgZmllbGRzIG9yIGB1bmRlZmluZWRgIGlmIG5vIGdyb3VwIGJ5IGNsYXVzZSBleGlzdHMuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBleHRyYWN0R3JvdXBCeShtZXRob2ROYW1lOiBzdHJpbmcpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgLy8gRmlyc3QgY2hlY2sgZm9yIHRoZSBzdGFuZGFyZCBcIkdyb3VwQnlcIiBjbGF1c2UgKGUuZy4sIGZpbmRCeUFjdGl2ZUdyb3VwQnlDb3VudHJ5KVxuICAgIGNvbnN0IGdyb3VwQnlJbmRleCA9IG1ldGhvZE5hbWUuaW5kZXhPZihRdWVyeUNsYXVzZS5HUk9VUF9CWSk7XG4gICAgaWYgKGdyb3VwQnlJbmRleCAhPT0gLTEpIHtcbiAgICAgIGNvbnN0IGFmdGVyID0gbWV0aG9kTmFtZS5zdWJzdHJpbmcoXG4gICAgICAgIGdyb3VwQnlJbmRleCArIFF1ZXJ5Q2xhdXNlLkdST1VQX0JZLmxlbmd0aFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGdyb3VwQnlQYXJ0ID0gYWZ0ZXIuc3BsaXQoUXVlcnlDbGF1c2UuT1JERVJfQlkpWzBdO1xuICAgICAgcmV0dXJuIGdyb3VwQnlQYXJ0XG4gICAgICAgIC5zcGxpdChRdWVyeUNsYXVzZS5USEVOX0JZKVxuICAgICAgICAubWFwKGxvd2VyRmlyc3QpXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gICAgfVxuXG4gICAgLy8gRm9yIFwiZ3JvdXBCeVwiIHByZWZpeCAoZS5nLiwgZ3JvdXBCeUNhdGVnb3J5VGhlbkJ5UmVnaW9uKSxcbiAgICAvLyBleHRyYWN0IFRoZW5CeSBmaWVsZHMgYWZ0ZXIgdGhlIHNlbGVjdG9yXG4gICAgY29uc3QgYWN0aW9uSW5mbyA9IHRoaXMuZ2V0QWN0aW9uRnJvbU1ldGhvZE5hbWUobWV0aG9kTmFtZSk7XG4gICAgaWYgKGFjdGlvbkluZm8/LmFjdGlvbiA9PT0gXCJncm91cFwiKSB7XG4gICAgICBjb25zdCBhZnRlclByZWZpeCA9IG1ldGhvZE5hbWUuc3Vic3RyaW5nKGFjdGlvbkluZm8ucHJlZml4Lmxlbmd0aCk7XG4gICAgICBjb25zdCB0aGVuQnlJbmRleCA9IGFmdGVyUHJlZml4LmluZGV4T2YoUXVlcnlDbGF1c2UuVEhFTl9CWSk7XG4gICAgICBpZiAodGhlbkJ5SW5kZXggPT09IC0xKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICBjb25zdCBhZnRlclRoZW5CeSA9IGFmdGVyUHJlZml4LnN1YnN0cmluZyhcbiAgICAgICAgdGhlbkJ5SW5kZXggKyBRdWVyeUNsYXVzZS5USEVOX0JZLmxlbmd0aFxuICAgICAgKTtcbiAgICAgIC8vIFNwbGl0IGJ5IFRoZW5CeSB0byBnZXQgbXVsdGlwbGUgZ3JvdXAgZmllbGRzXG4gICAgICBjb25zdCBwYXJ0cyA9IGFmdGVyVGhlbkJ5LnNwbGl0KFF1ZXJ5Q2xhdXNlLlRIRU5fQlkpO1xuICAgICAgLy8gQWxzbyBzdG9wIGF0IE9yZGVyQnksIExpbWl0LCBPZmZzZXRcbiAgICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgICAgIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgICAgICBjb25zdCBtYXRjaCA9IHBhcnQubWF0Y2goLyhPcmRlckJ5fExpbWl0fE9mZnNldHxTZWxlY3QpLyk7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gbWF0Y2ggPyBwYXJ0LnN1YnN0cmluZygwLCBtYXRjaC5pbmRleCkgOiBwYXJ0O1xuICAgICAgICBpZiAoZmllbGQpIHJlc3VsdC5wdXNoKGxvd2VyRmlyc3QoZmllbGQpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQubGVuZ3RoID4gMCA/IHJlc3VsdCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLy8gcHJpdmF0ZSBzdGF0aWMgZXh0cmFjdE9yZGVyQnkoXG4gIC8vICAgbWV0aG9kTmFtZTogc3RyaW5nXG4gIC8vICk6IE9yZGVyQnlTZWxlY3Rvcjxhbnk+W10gfCB1bmRlZmluZWQge1xuICAvLyAgIGNvbnN0IG9yZGVyQnlJbmRleCA9IG1ldGhvZE5hbWUuaW5kZXhPZihRdWVyeUNsYXVzZS5PUkRFUl9CWSk7XG4gIC8vICAgaWYgKG9yZGVyQnlJbmRleCA9PT0gLTEpIHJldHVybiB1bmRlZmluZWQ7XG4gIC8vXG4gIC8vICAgY29uc3QgYWZ0ZXIgPSBtZXRob2ROYW1lLnN1YnN0cmluZyhcbiAgLy8gICAgIG9yZGVyQnlJbmRleCArIFF1ZXJ5Q2xhdXNlLk9SREVSX0JZLmxlbmd0aFxuICAvLyAgICk7XG4gIC8vICAgY29uc3Qgb3JkZXJQYXJ0cyA9IGFmdGVyLnNwbGl0KFwiVGhlbkJ5XCIpO1xuICAvL1xuICAvLyAgIHJldHVybiBvcmRlclBhcnRzLm1hcCgocGFydCkgPT4ge1xuICAvLyAgICAgY29uc3QgbWF0Y2ggPSBwYXJ0Lm1hdGNoKC8oLio/KShBc2N8RGVzY3xEc2MpJC8pO1xuICAvLyAgICAgaWYgKCFtYXRjaCkgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIE9yZGVyQnkgcGFydDogJHtwYXJ0fWApO1xuICAvLyAgICAgY29uc3QgWywgZmllbGQsIGRpcl0gPSBtYXRjaDtcbiAgLy8gICAgIHJldHVybiBbXG4gIC8vICAgICAgIGxvd2VyRmlyc3QoZmllbGQpLFxuICAvLyAgICAgICBkaXIudG9Mb3dlckNhc2UoKSA9PT0gXCJkc2NcIlxuICAvLyAgICAgICAgID8gT3JkZXJEaXJlY3Rpb24uRFNDXG4gIC8vICAgICAgICAgOiAoZGlyLnRvTG93ZXJDYXNlKCkgYXMgT3JkZXJEaXJlY3Rpb24pLFxuICAvLyAgICAgXTtcbiAgLy8gICB9KTtcbiAgLy8gfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQnVpbGRzIHRoZSBgd2hlcmVgIGNvbmRpdGlvbiBvYmplY3QgYmFzZWQgb24gdGhlIHBhcnNlZCBjb3JlIHN0cmluZyBhbmQgcGFyYW1ldGVyIHZhbHVlcy5cbiAgICpcbiAgICogQHN1bW1hcnlcbiAgICogU3BsaXRzIHRoZSBjb3JlIHN0cmluZyBieSBsb2dpY2FsIG9wZXJhdG9ycyAoYEFuZGAsIGBPcmApLCBwYXJzZXMgZWFjaCB0b2tlbiBpbnRvIGEgZmllbGRcbiAgICogYW5kIG9wZXJhdG9yLCBhbmQgY29tYmluZXMgdGhlbSBpbnRvIGEgYENvbmRpdGlvbmAgb2JqZWN0IHVzaW5nIHRoZSBwcm92aWRlZCB2YWx1ZXMuXG4gICAqXG4gICAqIEBwYXJhbSBjb3JlIHtzdHJpbmd9IC0gVGhlIGV4dHJhY3RlZCBjb3JlIHN0cmluZyBmcm9tIHRoZSBtZXRob2QgbmFtZS5cbiAgICogQHBhcmFtIHZhbHVlcyB7YW55W119IC0gVGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb25kaXRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIHtDb25kaXRpb248YW55Pn0gQSBzdHJ1Y3R1cmVkIGNvbmRpdGlvbiBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBxdWVyeSdzIHdoZXJlIGNsYXVzZS5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGJ1aWxkV2hlcmUoXG4gICAgY29yZTogc3RyaW5nLFxuICAgIHZhbHVlczogYW55W11cbiAgKTogQ29uZGl0aW9uPGFueT4gfCB1bmRlZmluZWQge1xuICAgIC8vIEVtcHR5IGNvcmUgbWVhbnMgbm8gd2hlcmUgY29uZGl0aW9uc1xuICAgIGlmICghY29yZSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHBhcnRzID0gY29yZS5zcGxpdCgvT3JkZXJCeXxHcm91cEJ5LylbMF0gfHwgXCJcIjtcbiAgICBpZiAoIXBhcnRzKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgY29uZGl0aW9ucyA9IHBhcnRzLnNwbGl0KC9BbmR8T3IvKS5maWx0ZXIoKGMpID0+IGMubGVuZ3RoID4gMCk7XG4gICAgaWYgKGNvbmRpdGlvbnMubGVuZ3RoID09PSAwKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgY29uc3Qgb3BlcmF0b3JzID0gY29yZS5tYXRjaCgvQW5kfE9yL2cpIHx8IFtdO1xuXG4gICAgbGV0IHdoZXJlOiBDb25kaXRpb248YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIGNvbmRpdGlvbnMuZm9yRWFjaCgodG9rZW4sIGlkeCkgPT4ge1xuICAgICAgY29uc3QgeyBmaWVsZCwgb3BlcmF0b3IgfSA9IHRoaXMucGFyc2VGaWVsZEFuZE9wZXJhdG9yKHRva2VuKTtcbiAgICAgIGNvbnN0IHBhcnNlciA9IG9wZXJhdG9yID8gT3BlcmF0b3JzTWFwW29wZXJhdG9yXSA6IE9wZXJhdG9yc01hcC5FcXVhbHM7XG4gICAgICBpZiAoIXBhcnNlcikgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBvcGVyYXRvciAke29wZXJhdG9yfWApO1xuXG4gICAgICBjb25zdCBjb25kaXRpb25WYWx1ZSA9IHZhbHVlc1tpZHhdO1xuICAgICAgaWYgKHR5cGVvZiBjb25kaXRpb25WYWx1ZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdmFsdWUgZm9yIGZpZWxkICR7ZmllbGR9YCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbmRpdGlvbiA9IHBhcnNlcihmaWVsZCwgY29uZGl0aW9uVmFsdWUpO1xuICAgICAgd2hlcmUgPVxuICAgICAgICBpZHggPT09IDBcbiAgICAgICAgICA/IGNvbmRpdGlvblxuICAgICAgICAgIDogb3BlcmF0b3JzW2lkeCAtIDFdID09PSBRdWVyeUNsYXVzZS5BTkRcbiAgICAgICAgICAgID8gd2hlcmUhLmFuZChjb25kaXRpb24pXG4gICAgICAgICAgICA6IHdoZXJlIS5vcihjb25kaXRpb24pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHdoZXJlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBQYXJzZXMgYSBmaWVsZCBuYW1lIGFuZCBvcGVyYXRvciBmcm9tIGEgc3RyaW5nIHRva2VuLlxuICAgKlxuICAgKiBAc3VtbWFyeVxuICAgKiBJZGVudGlmaWVzIHRoZSBvcGVyYXRvciBzdWZmaXggKGlmIHByZXNlbnQpIGFuZCByZXR1cm5zIGEgZGVzY3JpcHRvciBjb250YWluaW5nIHRoZSBmaWVsZFxuICAgKiBuYW1lIGluIGxvd2VyY2FzZS1maXJzdCBmb3JtYXQgYWxvbmcgd2l0aCB0aGUgb3BlcmF0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBzdHIge3N0cmluZ30gLSBUaGUgdG9rZW4gc3RyaW5nIHRvIHBhcnNlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtGaWx0ZXJEZXNjcmlwdG9yfSBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgZmllbGQgbmFtZSBhbmQgb3BlcmF0b3IuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBwYXJzZUZpZWxkQW5kT3BlcmF0b3Ioc3RyOiBzdHJpbmcpOiBGaWx0ZXJEZXNjcmlwdG9yIHtcbiAgICBmb3IgKGNvbnN0IG9wZXJhdG9yIG9mIE9iamVjdC5rZXlzKE9wZXJhdG9yc01hcCkpIHtcbiAgICAgIGlmIChzdHIuZW5kc1dpdGgob3BlcmF0b3IpKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gc3RyLnNsaWNlKDAsIC1vcGVyYXRvci5sZW5ndGgpO1xuICAgICAgICByZXR1cm4geyBmaWVsZDogbG93ZXJGaXJzdChmaWVsZCksIG9wZXJhdG9yIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IGZpZWxkOiBsb3dlckZpcnN0KHN0cikgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGV4dHJhY3RPcmRlckJ5RmllbGQobWV0aG9kTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBuZXcgUmVnZXgoYCR7UXVlcnlDbGF1c2UuT1JERVJfQll9YCk7XG4gICAgY29uc3QgbWF0Y2ggPSBtZXRob2ROYW1lLm1hdGNoKC9PcmRlckJ5KC4rKSQvKTtcbiAgICBpZiAoIW1hdGNoKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGZpZWxkID0gbWF0Y2hbMV07XG4gICAgcmV0dXJuIGZpZWxkLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgZmllbGQuc2xpY2UoMSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXRQcm9wZXJseU9yZGVyQnlPclRocm93KFxuICAgIGZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgZGlyZWN0aW9uOiBPcmRlckRpcmVjdGlvbiB8IHVuZGVmaW5lZFxuICApOiBBcnJheTxPcmRlckJ5U2VsZWN0b3I8YW55Pj4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGxvZyA9IE1ldGhvZFF1ZXJ5QnVpbGRlci5sb2cuZm9yKHRoaXMuZ2V0UHJvcGVybHlPcmRlckJ5T3JUaHJvdyk7XG4gICAgLy8gQm90aCBhYnNlbnQg4oaSIGlnbm9yZSBPcmRlckJ5XG4gICAgaWYgKCFkaXJlY3Rpb24gJiYgIWZpZWxkKSByZXR1cm47XG5cbiAgICBpZiAoZGlyZWN0aW9uICYmICFmaWVsZClcbiAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKFxuICAgICAgICBgRXhwZWN0ZWQgT3JkZXJCeSBjbGF1c2UsIGJ1dCBubyBzb3J0YWJsZSBmaWVsZCB3YXMgZm91bmQgaW4gbWV0aG9kIG5hbWUuYFxuICAgICAgKTtcblxuICAgIC8vIEZpZWxkIHByZXNlbnQsIGJ1dCBkaXJlY3Rpb24gaXMgdW5kZWZpbmVkIOKGkiBpZ25vcmUgT3JkZXJCeVxuICAgIGlmICghZGlyZWN0aW9uICYmIGZpZWxkKSB7XG4gICAgICBsb2cuZGVidWcoXCJJZ25vcmluZyBPcmRlckJ5IGNsYXVzZSBiZWNhdXNlIGRpcmVjdGlvbiBpcyB1bmRlZmluZWQuXCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEJvdGggcHJlc2VudCDihpIgdmFsaWRhdGUgZGlyZWN0aW9uXG4gICAgY29uc3QgYWxsb3dlZERpcmVjdGlvbnMgPSBPYmplY3QudmFsdWVzKE9yZGVyRGlyZWN0aW9uKTtcbiAgICBpZiAoIWFsbG93ZWREaXJlY3Rpb25zLmluY2x1ZGVzKGRpcmVjdGlvbiBhcyBhbnkpKSB7XG4gICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihcbiAgICAgICAgYEludmFsaWQgT3JkZXJCeSBkaXJlY3Rpb24gJHtkaXJlY3Rpb259LiBFeHBlY3RlZCBvbmUgb2Y6ICR7T2JqZWN0LnZhbHVlcyhPcmRlckRpcmVjdGlvbikuam9pbihcIiwgXCIpfS5gXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBbW2ZpZWxkIGFzIGFueSwgZGlyZWN0aW9uIGFzIE9yZGVyRGlyZWN0aW9uXV07XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEV4dHJhY3RzIGBvcmRlckJ5YCwgYGxpbWl0YCwgYW5kIGBvZmZzZXRgIGNsYXVzZXMgZnJvbSBtZXRob2QgYXJndW1lbnRzLlxuICAgKlxuICAgKiBAc3VtbWFyeVxuICAgKiBEZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgY29uZGl0aW9uIGFyZ3VtZW50cywgdGhlbiBjaGVja3MgdGhlIHJlbWFpbmluZyBhcmd1bWVudHNcbiAgICogdG8gcmVzb2x2ZSBzb3J0aW5nLCBsaW1pdGluZywgYW5kIHBhZ2luYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBtZXRob2ROYW1lIHtzdHJpbmd9IC0gVGhlIG1ldGhvZCBuYW1lLlxuICAgKiBAcGFyYW0gdmFsdWVzIHthbnlbXX0gLSBUaGUgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gbWV0aG9kIGFyZ3VtZW50cywgaW5jbHVkaW5nIGNvbmRpdGlvbnMgYW5kIGV4dHJhcy5cbiAgICogQHBhcmFtIGNvcmUge3N0cmluZ30gLSBUaGUgcHJlLWV4dHJhY3RlZCBjb3JlIHN0cmluZy5cbiAgICpcbiAgICogQHJldHVybiB7T3JkZXJMaW1pdE9mZnNldEV4dHJhY3R9IEFuIG9iamVjdCBjb250YWluaW5nIG9yZGVyQnksIGxpbWl0LCBhbmQgb2Zmc2V0IHZhbHVlcyBpZiBwcmVzZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZXh0cmFjdE9yZGVyTGltaXRPZmZzZXQoXG4gICAgbWV0aG9kTmFtZTogc3RyaW5nLFxuICAgIHZhbHVlczogYW55W10sXG4gICAgY29yZT86IHN0cmluZ1xuICApOiBPcmRlckxpbWl0T2Zmc2V0RXh0cmFjdCB7XG4gICAgY29uc3QgY29yZVN0cmluZyA9IGNvcmUgPz8gdGhpcy5leHRyYWN0Q29yZShtZXRob2ROYW1lKTtcbiAgICBjb25zdCBjb25kaXRpb25Db3VudCA9IGNvcmVTdHJpbmdcbiAgICAgID8gY29yZVN0cmluZy5zcGxpdCgvQW5kfE9yLykuZmlsdGVyKChzKSA9PiBzLmxlbmd0aCA+IDApLmxlbmd0aFxuICAgICAgOiAwO1xuICAgIGNvbnN0IGV4dHJhQXJnczogYW55W10gPSB2YWx1ZXMuc2xpY2UoY29uZGl0aW9uQ291bnQpID8/IFtdO1xuXG4gICAgbGV0IG9yZGVyQnk6IEFycmF5PE9yZGVyQnlTZWxlY3Rvcjxhbnk+PiB8IHVuZGVmaW5lZDtcbiAgICBsZXQgbGltaXQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBsZXQgb2Zmc2V0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZXh0cmFBcmdzLmF0KC0xKSBpbnN0YW5jZW9mIENvbnRleHQpIGV4dHJhQXJncy5wb3AoKTtcblxuICAgIGlmIChleHRyYUFyZ3MubGVuZ3RoID49IDEpIHtcbiAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IGV4dHJhQXJnc1swXTtcbiAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5leHRyYWN0T3JkZXJCeUZpZWxkKG1ldGhvZE5hbWUpO1xuICAgICAgb3JkZXJCeSA9IHRoaXMuZ2V0UHJvcGVybHlPcmRlckJ5T3JUaHJvdyhmaWVsZCwgZGlyZWN0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoZXh0cmFBcmdzLmxlbmd0aCA+PSAyICYmIHR5cGVvZiBleHRyYUFyZ3NbMV0gPT09IFwibnVtYmVyXCIpXG4gICAgICBsaW1pdCA9IGV4dHJhQXJnc1sxXTtcblxuICAgIGlmIChleHRyYUFyZ3MubGVuZ3RoID49IDMgJiYgdHlwZW9mIGV4dHJhQXJnc1syXSA9PT0gXCJudW1iZXJcIilcbiAgICAgIG9mZnNldCA9IGV4dHJhQXJnc1syXTtcblxuICAgIHJldHVybiB7IG9yZGVyQnksIGxpbWl0LCBvZmZzZXQgfTtcbiAgfVxufVxuIl19
@@ -204,4 +204,4 @@ export class Paginator extends LoggedClass {
204
204
  typeof obj.count === "number");
205
205
  }
206
206
  }
207
- //# sourceMappingURL=Paginator.js.map
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFnaW5hdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3F1ZXJ5L1BhZ2luYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLG9CQUFpQjtBQUV2QyxPQUFPLEVBQUUsT0FBTyxFQUFFLG9DQUErQjtBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLDRCQUF1QjtBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsbUNBQThCO0FBR3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQU1oRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsdUJBQW9CO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsc0NBQWlDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTdEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdURHO0FBQ0gsTUFBTSxPQUFnQixTQUlwQixTQUFRLFdBQVc7SUFTbkIsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBYyxTQUFTO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBVSxDQUFDLENBQUM7UUFDdEUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxZQUNxQixPQUFrQyxFQUNsQyxLQUErQixFQUN6QyxJQUFZLEVBQ0YsS0FBcUI7UUFFeEMsS0FBSyxFQUFF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SUFBSSxDQUFDLFlBQVksQ0FBQztRQUNuRCxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDOUIsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFrQixHQUFXO1FBQzdDLElBQUksQ0FBQztZQUNILE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksa0JBQWtCLENBQUMsQ0FBVSxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBOEI7UUFDcEQsT0FBTyxDQUNMLEdBQUc7WUFDSCxPQUFPLEdBQUcsS0FBSyxRQUFRO1lBQ3ZCLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztZQUN2QixPQUFPLEdBQUcsQ0FBQyxLQUFLLEtBQUssUUFBUTtZQUM3QixPQUFPLEdBQUcsQ0FBQyxPQUFPLEtBQUssUUFBUTtZQUMvQixPQUFPLEdBQUcsQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUM5QixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFnaW5nRXJyb3IgfSBmcm9tIFwiLi9lcnJvcnNcIjtcbmltcG9ydCB7IEFkYXB0ZXIgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2UvQWRhcHRlclwiO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZS9Db250ZXh0XCI7XG5pbXBvcnQgeyBwcmVmaXhNZXRob2QgfSBmcm9tIFwiLi4vdXRpbHMvdXRpbHNcIjtcbmltcG9ydCB7IFVuc3VwcG9ydGVkRXJyb3IgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2UvZXJyb3JzXCI7XG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IENvbnN0cnVjdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyBMb2dnZWRDbGFzcyB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHtcbiAgQ29udGV4dHVhbEFyZ3MsXG4gIE1heWJlQ29udGV4dHVhbEFyZyxcbn0gZnJvbSBcIi4uL3V0aWxzL0NvbnRleHR1YWxMb2dnZWRDbGFzc1wiO1xuaW1wb3J0IHsgRGlyZWN0aW9uTGltaXRPZmZzZXQsIFByZXBhcmVkU3RhdGVtZW50IH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IFByZXBhcmVkU3RhdGVtZW50S2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L1JlcG9zaXRvcnlcIjtcbmltcG9ydCB7IFNlcmlhbGl6YXRpb25FcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBIYW5kbGVzIHBhZ2luYXRpb24gZm9yIGRhdGFiYXNlIHF1ZXJpZXNcbiAqIEBzdW1tYXJ5IFByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgZm9yIG5hdmlnYXRpbmcgdGhyb3VnaCBwYWdpbmF0ZWQgcXVlcnkgcmVzdWx0c1xuICpcbiAqIFRoaXMgYWJzdHJhY3QgY2xhc3MgbWFuYWdlcyB0aGUgc3RhdGUgYW5kIG5hdmlnYXRpb24gb2YgcGFnaW5hdGVkIGRhdGFiYXNlIHF1ZXJ5IHJlc3VsdHMuXG4gKiBJdCB0cmFja3MgdGhlIGN1cnJlbnQgcGFnZSwgdG90YWwgcGFnZXMsIGFuZCByZWNvcmQgY291bnQsIGFuZCBwcm92aWRlcyBtZXRob2RzIGZvclxuICogbW92aW5nIGJldHdlZW4gcGFnZXMuXG4gKlxuICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSB0aGlzIHBhZ2luYXRvciBvcGVyYXRlcyBvblxuICogQHRlbXBsYXRlIFIgLSBUaGUgcmV0dXJuIHR5cGUgb2YgdGhlIHBhZ2luYXRlZCBxdWVyeSAoZGVmYXVsdHMgdG8gTVtdKVxuICogQHRlbXBsYXRlIFEgLSBUaGUgcXVlcnkgdHlwZSAoZGVmYXVsdHMgdG8gYW55KVxuICogQHBhcmFtIHtBZGFwdGVyPGFueSwgUSwgYW55LCBhbnk+fSBhZGFwdGVyIC0gVGhlIGRhdGFiYXNlIGFkYXB0ZXIgdG8gdXNlIGZvciBleGVjdXRpbmcgcXVlcmllc1xuICogQHBhcmFtIHtRfSBxdWVyeSAtIFRoZSBxdWVyeSB0byBwYWdpbmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IHNpemUgLSBUaGUgbnVtYmVyIG9mIHJlY29yZHMgcGVyIHBhZ2VcbiAqIEBwYXJhbSB7Q29uc3RydWN0b3I8TT59IGNsYXp6IC0gVGhlIGNvbnN0cnVjdG9yIGZvciB0aGUgbW9kZWwgdHlwZVxuICogQGNsYXNzIFBhZ2luYXRvclxuICogQGV4YW1wbGVcbiAqIC8vIENyZWF0ZSBhIHBhZ2luYXRvciBmb3IgYSB1c2VyIHF1ZXJ5XG4gKiBjb25zdCB1c2VyUXVlcnkgPSBkYi5zZWxlY3QoKS5mcm9tKFVzZXIpO1xuICogY29uc3QgcGFnaW5hdG9yID0gYXdhaXQgdXNlclF1ZXJ5LnBhZ2luYXRlKDEwKTsgLy8gMTAgdXNlcnMgcGVyIHBhZ2VcbiAqXG4gKiAvLyBHZXQgdGhlIGZpcnN0IHBhZ2Ugb2YgcmVzdWx0c1xuICogY29uc3QgZmlyc3RQYWdlID0gYXdhaXQgcGFnaW5hdG9yLnBhZ2UoMSk7XG4gKlxuICogLy8gTmF2aWdhdGUgdG8gdGhlIG5leHQgcGFnZVxuICogY29uc3Qgc2Vjb25kUGFnZSA9IGF3YWl0IHBhZ2luYXRvci5uZXh0KCk7XG4gKlxuICogLy8gR2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBwYWdpbmF0aW9uXG4gKiBjb25zb2xlLmxvZyhgUGFnZSAke3BhZ2luYXRvci5jdXJyZW50fSBvZiAke3BhZ2luYXRvci50b3RhbH0sICR7cGFnaW5hdG9yLmNvdW50fSB0b3RhbCByZWNvcmRzYCk7XG4gKlxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDbGllbnRcbiAqICAgcGFydGljaXBhbnQgUGFnaW5hdG9yXG4gKiAgIHBhcnRpY2lwYW50IEFkYXB0ZXJcbiAqICAgcGFydGljaXBhbnQgRGF0YWJhc2VcbiAqXG4gKiAgIENsaWVudC0+PlBhZ2luYXRvcjogbmV3IFBhZ2luYXRvcihhZGFwdGVyLCBxdWVyeSwgc2l6ZSwgY2xhenopXG4gKiAgIENsaWVudC0+PlBhZ2luYXRvcjogcGFnZSgxKVxuICogICBQYWdpbmF0b3ItPj5QYWdpbmF0b3I6IHZhbGlkYXRlUGFnZSgxKVxuICogICBQYWdpbmF0b3ItPj5QYWdpbmF0b3I6IHByZXBhcmUocXVlcnkpXG4gKiAgIFBhZ2luYXRvci0+PkFkYXB0ZXI6IGV4ZWN1dGUgcXVlcnkgd2l0aCBwYWdpbmF0aW9uXG4gKiAgIEFkYXB0ZXItPj5EYXRhYmFzZTogZXhlY3V0ZSBxdWVyeVxuICogICBEYXRhYmFzZS0tPj5BZGFwdGVyOiByZXR1cm4gcmVzdWx0c1xuICogICBBZGFwdGVyLS0+PlBhZ2luYXRvcjogcmV0dXJuIHJlc3VsdHNcbiAqICAgUGFnaW5hdG9yLS0+PkNsaWVudDogcmV0dXJuIHBhZ2UgcmVzdWx0c1xuICpcbiAqICAgQ2xpZW50LT4+UGFnaW5hdG9yOiBuZXh0KClcbiAqICAgUGFnaW5hdG9yLT4+UGFnaW5hdG9yOiBwYWdlKGN1cnJlbnQgKyAxKVxuICogICBQYWdpbmF0b3ItPj5QYWdpbmF0b3I6IHZhbGlkYXRlUGFnZShjdXJyZW50ICsgMSlcbiAqICAgUGFnaW5hdG9yLT4+QWRhcHRlcjogZXhlY3V0ZSBxdWVyeSB3aXRoIHBhZ2luYXRpb25cbiAqICAgQWRhcHRlci0+PkRhdGFiYXNlOiBleGVjdXRlIHF1ZXJ5XG4gKiAgIERhdGFiYXNlLS0+PkFkYXB0ZXI6IHJldHVybiByZXN1bHRzXG4gKiAgIEFkYXB0ZXItLT4+UGFnaW5hdG9yOiByZXR1cm4gcmVzdWx0c1xuICogICBQYWdpbmF0b3ItLT4+Q2xpZW50OiByZXR1cm4gcGFnZSByZXN1bHRzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQYWdpbmF0b3I8XG4gIE0gZXh0ZW5kcyBNb2RlbCxcbiAgUiA9IE1bXSxcbiAgUSA9IGFueSxcbj4gZXh0ZW5kcyBMb2dnZWRDbGFzcyB7XG4gIHByb3RlY3RlZCBfY3VycmVudFBhZ2UhOiBudW1iZXI7XG4gIHByb3RlY3RlZCBfdG90YWxQYWdlcyE6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9yZWNvcmRDb3VudCE6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9ib29rbWFyaz86IG51bWJlciB8IHN0cmluZztcbiAgcHJvdGVjdGVkIGxpbWl0ITogbnVtYmVyO1xuXG4gIHByaXZhdGUgX3N0YXRlbWVudD86IFE7XG5cbiAgZ2V0IGN1cnJlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRQYWdlO1xuICB9XG5cbiAgZ2V0IHRvdGFsKCkge1xuICAgIHJldHVybiB0aGlzLl90b3RhbFBhZ2VzO1xuICB9XG5cbiAgZ2V0IGNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3JlY29yZENvdW50O1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBzdGF0ZW1lbnQoKSB7XG4gICAgaWYgKCF0aGlzLl9zdGF0ZW1lbnQpIHRoaXMuX3N0YXRlbWVudCA9IHRoaXMucHJlcGFyZSh0aGlzLnF1ZXJ5IGFzIFEpO1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZW1lbnQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFkYXB0ZXI6IEFkYXB0ZXI8YW55LCBhbnksIFEsIGFueT4sXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHF1ZXJ5OiBRIHwgUHJlcGFyZWRTdGF0ZW1lbnQ8TT4sXG4gICAgcmVhZG9ubHkgc2l6ZTogbnVtYmVyLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBjbGF6ejogQ29uc3RydWN0b3I8TT5cbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICBwcmVmaXhNZXRob2QodGhpcywgdGhpcy5wYWdlLCB0aGlzLnBhZ2VQcmVmaXgsIHRoaXMucGFnZS5uYW1lKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc1ByZXBhcmVkU3RhdGVtZW50KCkge1xuICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5xdWVyeSBhcyBQcmVwYXJlZFN0YXRlbWVudDxhbnk+O1xuICAgIHJldHVybiAoXG4gICAgICBxdWVyeS5tZXRob2QgJiZcbiAgICAgIHF1ZXJ5Lm1ldGhvZC5tYXRjaChcbiAgICAgICAgbmV3IFJlZ0V4cChcbiAgICAgICAgICBgJHtQcmVwYXJlZFN0YXRlbWVudEtleXMuRklORF9CWX18JHtQcmVwYXJlZFN0YXRlbWVudEtleXMuTElTVF9CWX18JHtQcmVwYXJlZFN0YXRlbWVudEtleXMuRklORH1gLFxuICAgICAgICAgIFwiZ2lcIlxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwYWdlUHJlZml4KHBhZ2U/OiBudW1iZXIsIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxhbnk+KSB7XG4gICAgY29uc3QgeyBjdHhBcmdzIH0gPSAoXG4gICAgICBhd2FpdCB0aGlzLmFkYXB0ZXJbXCJsb2dDdHhcIl0oXG4gICAgICAgIFt0aGlzLmNsYXp6LCAuLi5hcmdzXSxcbiAgICAgICAgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLlBBR0VfQlksXG4gICAgICAgIHRydWVcbiAgICAgIClcbiAgICApLmZvcih0aGlzLnBhZ2VQcmVmaXgpO1xuICAgIGN0eEFyZ3Muc2hpZnQoKTtcbiAgICByZXR1cm4gW3BhZ2UsIC4uLmN0eEFyZ3NdO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHBhZ2VQcmVwYXJlZChcbiAgICBwYWdlOiBudW1iZXIsXG4gICAgYm9va21hcms/OiBhbnksXG4gICAgLi4uYXJnejogQ29udGV4dHVhbEFyZ3M8YW55PlxuICApOiBQcm9taXNlPE1bXT4ge1xuICAgIGNvbnN0IHsgbG9nLCBjdHhBcmdzIH0gPSB0aGlzLmFkYXB0ZXJbXCJsb2dDdHhcIl0oXG4gICAgICBib29rbWFyayAmJiAhKGJvb2ttYXJrIGluc3RhbmNlb2YgQ29udGV4dClcbiAgICAgICAgPyBbLi4uYXJnel1cbiAgICAgICAgOiBbYm9va21hcmssIC4uLmFyZ3pdLFxuICAgICAgdGhpcy5wYWdlUHJlcGFyZWRcbiAgICApO1xuICAgIGxvZy5kZWJ1ZyhcbiAgICAgIGBSdW5uaW5nIHBhZ2VkIHByZXBhcmVkIHN0YXRlbWVudCAke3BhZ2V9IHBhZ2Uke2Jvb2ttYXJrID8gYCAtIGJvb2ttYXJrICR7Ym9va21hcmt9YCA6IFwiXCJ9YFxuICAgICk7XG5cbiAgICBpZiAoYm9va21hcmsgJiYgIShib29rbWFyayBpbnN0YW5jZW9mIENvbnRleHQpKSB0aGlzLl9ib29rbWFyayA9IGJvb2ttYXJrO1xuICAgIGNvbnN0IHJlcG8gPSBSZXBvc2l0b3J5LmZvck1vZGVsKHRoaXMuY2xhenosIHRoaXMuYWRhcHRlci5hbGlhcyk7XG4gICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcy5xdWVyeSBhcyBQcmVwYXJlZFN0YXRlbWVudDxNPjtcbiAgICBjb25zdCB7IG1ldGhvZCwgYXJncywgcGFyYW1zIH0gPSBzdGF0ZW1lbnQ7XG4gICAgaWYgKG1ldGhvZCA9PT0gUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLkZJTkQpIHtcbiAgICAgIGNvbnN0IHByZXBhcmVkQXJncyA9IFtQcmVwYXJlZFN0YXRlbWVudEtleXMuUEFHRSwgLi4uYXJnc107XG4gICAgICBjb25zdCBwcmVwYXJlZFBhcmFtczogRGlyZWN0aW9uTGltaXRPZmZzZXQgPSB7XG4gICAgICAgIGxpbWl0OiB0aGlzLnNpemUsXG4gICAgICAgIG9mZnNldDogcGFnZSxcbiAgICAgICAgYm9va21hcms6IHRoaXMuX2Jvb2ttYXJrLFxuICAgICAgfTtcbiAgICAgIHByZXBhcmVkQXJncy5wdXNoKHByZXBhcmVkUGFyYW1zKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlcG8uc3RhdGVtZW50KFxuICAgICAgICAuLi4ocHJlcGFyZWRBcmdzIGFzIFtzdHJpbmcsIGFueV0pLFxuICAgICAgICAuLi5jdHhBcmdzXG4gICAgICApO1xuICAgICAgcmV0dXJuIHRoaXMuYXBwbHkocmVzdWx0KTtcbiAgICB9XG4gICAgY29uc3QgcmVnZXhwID0gbmV3IFJlZ0V4cChcbiAgICAgIGBeJHtQcmVwYXJlZFN0YXRlbWVudEtleXMuRklORF9CWX18JHtQcmVwYXJlZFN0YXRlbWVudEtleXMuTElTVF9CWX1gLFxuICAgICAgXCJnaVwiXG4gICAgKTtcbiAgICBpZiAoIW1ldGhvZC5tYXRjaChyZWdleHApKVxuICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkRXJyb3IoXG4gICAgICAgIGBNZXRob2QgJHttZXRob2R9IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHBhZ2luYXRpb25gXG4gICAgICApO1xuICAgIHJlZ2V4cC5sYXN0SW5kZXggPSAwO1xuICAgIGNvbnN0IHBhZ2VkTWV0aG9kID0gbWV0aG9kLnJlcGxhY2UocmVnZXhwLCBQcmVwYXJlZFN0YXRlbWVudEtleXMuUEFHRV9CWSk7XG5cbiAgICBjb25zdCBwcmVwYXJlZEFyZ3MgPSBbcGFnZWRNZXRob2QsIC4uLmFyZ3NdO1xuICAgIGxldCBwcmVwYXJlZFBhcmFtczogRGlyZWN0aW9uTGltaXRPZmZzZXQgPSB7XG4gICAgICBsaW1pdDogdGhpcy5zaXplLFxuICAgICAgb2Zmc2V0OiBwYWdlLFxuICAgICAgYm9va21hcms6IHRoaXMuX2Jvb2ttYXJrLFxuICAgIH07XG4gICAgaWYgKFxuICAgICAgcGFnZWRNZXRob2QgPT09IFByZXBhcmVkU3RhdGVtZW50S2V5cy5QQUdFX0JZICYmXG4gICAgICBwcmVwYXJlZEFyZ3MubGVuZ3RoIDw9IDJcbiAgICApIHtcbiAgICAgIHByZXBhcmVkQXJncy5wdXNoKHBhcmFtcy5kaXJlY3Rpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVwYXJlZFBhcmFtcyA9IHtcbiAgICAgICAgZGlyZWN0aW9uOiBwYXJhbXMuZGlyZWN0aW9uLFxuICAgICAgICBsaW1pdDogdGhpcy5zaXplLFxuICAgICAgICBvZmZzZXQ6IHBhZ2UsXG4gICAgICAgIGJvb2ttYXJrOiB0aGlzLl9ib29rbWFyayxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJlcGFyZWRBcmdzLnB1c2gocHJlcGFyZWRQYXJhbXMpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVwby5zdGF0ZW1lbnQoXG4gICAgICAuLi4ocHJlcGFyZWRBcmdzIGFzIFtzdHJpbmcsIGFueV0pLFxuICAgICAgLi4uY3R4QXJnc1xuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHkocmVzdWx0KTtcbiAgfVxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFByZXBhcmVzIGEgc3RhdGVtZW50IGZvciBwYWdpbmF0aW9uXG4gICAqIEBzdW1tYXJ5IE1vZGlmaWVzIHRoZSByYXcgcXVlcnkgc3RhdGVtZW50IHRvIGluY2x1ZGUgcGFnaW5hdGlvbiBwYXJhbWV0ZXJzLlxuICAgKiBUaGlzIHByb3RlY3RlZCBtZXRob2Qgc2V0cyB0aGUgbGltaXQgcGFyYW1ldGVyIG9uIHRoZSBxdWVyeSB0byBtYXRjaCB0aGUgcGFnZSBzaXplLlxuICAgKiBAcGFyYW0ge1Jhd1JhbVF1ZXJ5PE0+fSByYXdTdGF0ZW1lbnQgLSBUaGUgb3JpZ2luYWwgcXVlcnkgc3RhdGVtZW50XG4gICAqIEByZXR1cm4ge1Jhd1JhbVF1ZXJ5PE0+fSBUaGUgbW9kaWZpZWQgcXVlcnkgd2l0aCBwYWdpbmF0aW9uIHBhcmFtZXRlcnNcbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwcmVwYXJlKHJhd1N0YXRlbWVudDogUSk6IFE7XG5cbiAgYXN5bmMgbmV4dCguLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8YW55Pikge1xuICAgIHJldHVybiB0aGlzLnBhZ2UodGhpcy5jdXJyZW50ICsgMSwgLi4uYXJncyk7XG4gIH1cblxuICBhc3luYyBwcmV2aW91cyguLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8YW55Pikge1xuICAgIHJldHVybiB0aGlzLnBhZ2UodGhpcy5jdXJyZW50IC0gMSwgLi4uYXJncyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVQYWdlKHBhZ2U6IG51bWJlcikge1xuICAgIGlmIChwYWdlIDwgMSB8fCAhTnVtYmVyLmlzSW50ZWdlcihwYWdlKSlcbiAgICAgIHRocm93IG5ldyBQYWdpbmdFcnJvcihcbiAgICAgICAgXCJQYWdlIG51bWJlciBjYW5ub3QgYmUgdW5kZXIgMSBhbmQgbXVzdCBiZSBhbiBpbnRlZ2VyXCJcbiAgICAgICk7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl90b3RhbFBhZ2VzICE9PSBcInVuZGVmaW5lZFwiICYmIHBhZ2UgPiB0aGlzLl90b3RhbFBhZ2VzKVxuICAgICAgdGhyb3cgbmV3IFBhZ2luZ0Vycm9yKFxuICAgICAgICBgT25seSAke3RoaXMuX3RvdGFsUGFnZXN9IGFyZSBhdmFpbGFibGUuIENhbm5vdCBnbyB0byBwYWdlICR7cGFnZX1gXG4gICAgICApO1xuICAgIHJldHVybiBwYWdlO1xuICB9XG5cbiAgYXN5bmMgcGFnZShcbiAgICBwYWdlOiBudW1iZXIgPSAxLFxuICAgIGJvb2ttYXJrPzogYW55LFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxhbnk+XG4gICk6IFByb21pc2U8Uj4ge1xuICAgIGNvbnN0IHsgY3R4QXJncyB9ID0gdGhpcy5hZGFwdGVyW1wibG9nQ3R4XCJdKFtib29rbWFyaywgLi4uYXJnc10sIHRoaXMucGFnZSk7XG4gICAgaWYgKHRoaXMuaXNQcmVwYXJlZFN0YXRlbWVudCgpKVxuICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLnBhZ2VQcmVwYXJlZChwYWdlLCAuLi5jdHhBcmdzKSkgYXMgUjtcbiAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRFcnJvcihcbiAgICAgIFwiUmF3IHN1cHBvcnQgbm90IGF2YWlsYWJsZSB3aXRob3V0IHN1YmNsYXNzaW5nIHRoaXNcIlxuICAgICk7XG4gIH1cblxuICBzZXJpYWxpemUoZGF0YTogTVtdLCB0b1N0cmluZzogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nIHwgU2VyaWFsaXplZFBhZ2U8TT4ge1xuICAgIGNvbnN0IHNlcmlhbGl6YXRpb246IFNlcmlhbGl6ZWRQYWdlPE0+ID0ge1xuICAgICAgZGF0YTogZGF0YSxcbiAgICAgIGN1cnJlbnQ6IHRoaXMuY3VycmVudCxcbiAgICAgIHRvdGFsOiB0aGlzLnRvdGFsLFxuICAgICAgY291bnQ6IHRoaXMuY291bnQsXG4gICAgICBib29rbWFyazogdGhpcy5fYm9va21hcmssXG4gICAgfTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRvU3RyaW5nID8gSlNPTi5zdHJpbmdpZnkoc2VyaWFsaXphdGlvbikgOiBzZXJpYWxpemF0aW9uO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBTZXJpYWxpemF0aW9uRXJyb3IoZSBhcyBFcnJvcik7XG4gICAgfVxuICB9XG5cbiAgYXBwbHkoc2VyaWFsaXphdGlvbjogc3RyaW5nIHwgU2VyaWFsaXplZFBhZ2U8TT4pOiBNW10ge1xuICAgIGNvbnN0IHNlciA9XG4gICAgICB0eXBlb2Ygc2VyaWFsaXphdGlvbiA9PT0gXCJzdHJpbmdcIlxuICAgICAgICA/IFBhZ2luYXRvci5kZXNlcmlhbGl6ZTxNPihzZXJpYWxpemF0aW9uKVxuICAgICAgICA6IHNlcmlhbGl6YXRpb247XG5cbiAgICB0aGlzLl9jdXJyZW50UGFnZSA9IHNlci5jdXJyZW50O1xuICAgIHRoaXMuX3RvdGFsUGFnZXMgPSBzZXIudG90YWwgfHwgdGhpcy5fdG90YWxQYWdlcztcbiAgICB0aGlzLl9yZWNvcmRDb3VudCA9IHNlci5jb3VudCB8fCB0aGlzLl9yZWNvcmRDb3VudDtcbiAgICB0aGlzLl9ib29rbWFyayA9IHNlci5ib29rbWFyaztcbiAgICByZXR1cm4gc2VyLmRhdGE7XG4gIH1cblxuICBzdGF0aWMgZGVzZXJpYWxpemU8TSBleHRlbmRzIE1vZGVsPihzdHI6IHN0cmluZyk6IFNlcmlhbGl6ZWRQYWdlPE0+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2Uoc3RyKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgU2VyaWFsaXphdGlvbkVycm9yKGUgYXMgRXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBpc1NlcmlhbGl6ZWRQYWdlKG9iajogU2VyaWFsaXplZFBhZ2U8YW55PiB8IGFueSkge1xuICAgIHJldHVybiAoXG4gICAgICBvYmogJiZcbiAgICAgIHR5cGVvZiBvYmogPT09IFwib2JqZWN0XCIgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkob2JqLmRhdGEpICYmXG4gICAgICB0eXBlb2Ygb2JqLnRvdGFsID09PSBcIm51bWJlclwiICYmXG4gICAgICB0eXBlb2Ygb2JqLmN1cnJlbnQgPT09IFwibnVtYmVyXCIgJiZcbiAgICAgIHR5cGVvZiBvYmouY291bnQgPT09IFwibnVtYmVyXCJcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWRQYWdlPE0gZXh0ZW5kcyBNb2RlbD4gPSB7XG4gIGN1cnJlbnQ6IG51bWJlcjtcbiAgdG90YWw6IG51bWJlcjtcbiAgY291bnQ6IG51bWJlcjtcbiAgZGF0YTogTVtdO1xuICBib29rbWFyaz86IG51bWJlciB8IHN0cmluZztcbn07XG4iXX0=