@decaf-ts/core 0.8.85 → 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 +8 -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 +8 -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
@@ -259,4 +259,4 @@ class Sequence extends ContextualLoggedClass_1.ContextualLoggedClass {
259
259
  }
260
260
  exports.Sequence = Sequence;
261
261
  Adapter_1.Adapter["_baseSequence"] = Sequence;
262
- //# sourceMappingURL=Sequence.js.map
262
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VxdWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGVyc2lzdGVuY2UvU2VxdWVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUVBQXVEO0FBS3ZELHlDQUE0QztBQUU1QywyREFLaUM7QUFDakMsZ0ZBS3dDO0FBQ3hDLDJDQUFvQztBQUNwQywrREFBNEQ7QUFDNUQsZ0VBQXVEO0FBQ3ZELGlEQUE0QztBQUU1QyxpRkFBK0Q7QUFHL0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZDRztBQUNILE1BQWEsUUFFWCxTQUFRLDZDQUEwQjthQUVSLFNBQUksR0FBRyxJQUFJLG9DQUFTLEVBQUUsQ0FBQztJQUVqRDs7O09BR0c7SUFDSCxZQUNxQixPQUF3QixFQUN4QixPQUFVLEVBQzdCLFlBQWlDLEVBQUU7UUFFbkMsS0FBSyxFQUFFLENBQUM7UUFKVyxZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUN4QixZQUFPLEdBQVAsT0FBTyxDQUFHO1FBSTdCLElBQUksQ0FBQyxJQUFJLEdBQUcsdUJBQVUsQ0FBQyxRQUFRLENBQUMsNkJBQWEsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUNwRSxTQUFTLENBQ1YsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQ1gsR0FBRyxJQUE2QjtRQUVoQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsNkJBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3pDLElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFrQixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxD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QUNqQixLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQzNDLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUTtvQkFDOUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7b0JBQ2pCLENBQUMsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRO3dCQUN6QixDQUFDLENBQUMsS0FBSzt3QkFDUCxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RCLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDM0MsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUMzQyxPQUFPLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMxQixLQUFLLFNBQVMsQ0FBQztZQUNmLEtBQUssTUFBTSxDQUFDO1lBQ1osS0FBSyxRQUFRO2dCQUNYLE9BQU8sS0FBSyxDQUFDO1lBQ2Y7Z0JBQ0UsTUFBTSxJQUFJLHlCQUFnQixDQUN4Qiw4QkFBOEIsSUFBSSxnQkFBZ0IsSUFBSSxFQUFFLENBQ3pELENBQUM7UUFDTixDQUFDO0lBQ0gsQ0FBQzs7QUEvVkgsNEJBZ1dDO0FBRUQsaUJBQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7XG4gIFNlcXVlbmNlT3B0aW9ucyxcbiAgU2VxdWVuY2VPcHRpb25zVHlwZSxcbn0gZnJvbSBcIi4uL2ludGVyZmFjZXMvU2VxdWVuY2VPcHRpb25zXCI7XG5pbXBvcnQgeyBVbnN1cHBvcnRlZEVycm9yIH0gZnJvbSBcIi4vZXJyb3JzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHtcbiAgQ29uZmxpY3RFcnJvcixcbiAgSW50ZXJuYWxFcnJvcixcbiAgTm90Rm91bmRFcnJvcixcbiAgT3BlcmF0aW9uS2V5cyxcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQge1xuICBDb250ZXh0dWFsaXplZEFyZ3MsXG4gIENvbnRleHR1YWxMb2dnZWRDbGFzcyxcbiAgTWF5YmVDb250ZXh0dWFsQXJnLFxuICBNZXRob2RPck9wZXJhdGlvbixcbn0gZnJvbSBcIi4uL3V0aWxzL0NvbnRleHR1YWxMb2dnZWRDbGFzc1wiO1xuaW1wb3J0IHsgQWRhcHRlciB9IGZyb20gXCIuL0FkYXB0ZXJcIjtcbmltcG9ydCB7IFJlcG8sIFJlcG9zaXRvcnkgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9SZXBvc2l0b3J5XCI7XG5pbXBvcnQgeyBTZXF1ZW5jZU1vZGVsIH0gZnJvbSBcIi4uL21vZGVsL1NlcXVlbmNlTW9kZWxcIjtcbmltcG9ydCB7IFNlcmlhbCwgVVVJRCB9IGZyb20gXCIuL2dlbmVyYXRvcnNcIjtcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiLi9Db250ZXh0XCI7XG5pbXBvcnQgeyBNdWx0aUxvY2sgfSBmcm9tIFwiQGRlY2FmLXRzL3RyYW5zYWN0aW9uYWwtZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHR5cGUgeyBDb250ZXh0T2YsIEZsYWdzT2YgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBzZXF1ZW5jZSBnZW5lcmF0aW9uXG4gKiBAc3VtbWFyeSBQcm92aWRlcyBhIGZyYW1ld29yayBmb3IgZ2VuZXJhdGluZyBzZXF1ZW50aWFsIHZhbHVlcyAobGlrZSBwcmltYXJ5IGtleXMpIGluIHRoZSBwZXJzaXN0ZW5jZSBsYXllci5cbiAqIEltcGxlbWVudGF0aW9ucyBvZiB0aGlzIGNsYXNzIGhhbmRsZSB0aGUgc3BlY2lmaWNzIG9mIGhvdyBzZXF1ZW5jZXMgYXJlIHN0b3JlZCBhbmQgaW5jcmVtZW50ZWQgaW4gZGlmZmVyZW50XG4gKiBkYXRhYmFzZSBzeXN0ZW1zLlxuICogQHBhcmFtIHtTZXF1ZW5jZU9wdGlvbnN9IG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBzZXF1ZW5jZSBnZW5lcmF0b3JcbiAqIEBjbGFzcyBTZXF1ZW5jZVxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIEV4YW1wbGUgaW1wbGVtZW50YXRpb24gZm9yIGEgc3BlY2lmaWMgZGF0YWJhc2VcbiAqIGNsYXNzIFBvc3RncmVzU2VxdWVuY2UgZXh0ZW5kcyBTZXF1ZW5jZSB7XG4gKiAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFNlcXVlbmNlT3B0aW9ucykge1xuICogICAgIHN1cGVyKG9wdGlvbnMpO1xuICogICB9XG4gKlxuICogICBhc3luYyBuZXh0KCk6IFByb21pc2U8bnVtYmVyPiB7XG4gKiAgICAgLy8gSW1wbGVtZW50YXRpb24gdG8gZ2V0IG5leHQgdmFsdWUgZnJvbSBQb3N0Z3JlU1FMIHNlcXVlbmNlXG4gKiAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5vcHRpb25zLmV4ZWN1dG9yLnJhdyhgU0VMRUNUIG5leHR2YWwoJyR7dGhpcy5vcHRpb25zLm5hbWV9JylgKTtcbiAqICAgICByZXR1cm4gcGFyc2VJbnQocmVzdWx0LnJvd3NbMF0ubmV4dHZhbCk7XG4gKiAgIH1cbiAqXG4gKiAgIGFzeW5jIGN1cnJlbnQoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAqICAgICAvLyBJbXBsZW1lbnRhdGlvbiB0byBnZXQgY3VycmVudCB2YWx1ZSBmcm9tIFBvc3RncmVTUUwgc2VxdWVuY2VcbiAqICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLm9wdGlvbnMuZXhlY3V0b3IucmF3KGBTRUxFQ1QgY3VycnZhbCgnJHt0aGlzLm9wdGlvbnMubmFtZX0nKWApO1xuICogICAgIHJldHVybiBwYXJzZUludChyZXN1bHQucm93c1swXS5jdXJydmFsKTtcbiAqICAgfVxuICpcbiAqICAgYXN5bmMgcmFuZ2UoY291bnQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyW10+IHtcbiAqICAgICAvLyBJbXBsZW1lbnRhdGlvbiB0byBnZXQgYSByYW5nZSBvZiB2YWx1ZXNcbiAqICAgICBjb25zdCB2YWx1ZXM6IG51bWJlcltdID0gW107XG4gKiAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gKiAgICAgICB2YWx1ZXMucHVzaChhd2FpdCB0aGlzLm5leHQoKSk7XG4gKiAgICAgfVxuICogICAgIHJldHVybiB2YWx1ZXM7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiAvLyBVc2FnZVxuICogY29uc3Qgc2VxdWVuY2UgPSBuZXcgUG9zdGdyZXNTZXF1ZW5jZSh7XG4gKiAgIG5hbWU6ICd1c2VyX2lkX3NlcScsXG4gKiAgIGV4ZWN1dG9yOiBkYkV4ZWN1dG9yXG4gKiB9KTtcbiAqXG4gKiBjb25zdCBuZXh0SWQgPSBhd2FpdCBzZXF1ZW5jZS5uZXh0KCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFNlcXVlbmNlPFxuICBBIGV4dGVuZHMgQWRhcHRlcjxhbnksIGFueSwgYW55LCBhbnk+ID0gQWRhcHRlcjxhbnksIGFueSwgYW55LCBhbnk+LFxuPiBleHRlbmRzIENvbnRleHR1YWxMb2dnZWRDbGFzczxhbnk+IHtcbiAgcHJvdGVjdGVkIHJlcG86IFJlcG88U2VxdWVuY2VNb2RlbD47XG4gIHByb3RlY3RlZCBzdGF0aWMgcmVhZG9ubHkgbG9jayA9IG5ldyBNdWx0aUxvY2soKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBuZXcgc2VxdWVuY2UgaW5zdGFuY2VcbiAgICogQHN1bW1hcnkgUHJvdGVjdGVkIGNvbnN0cnVjdG9yIHRoYXQgaW5pdGlhbGl6ZXMgdGhlIHNlcXVlbmNlIHdpdGggdGhlIHByb3ZpZGVkIG9wdGlvbnNcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZWFkb25seSBvcHRpb25zOiBTZXF1ZW5jZU9wdGlvbnMsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFkYXB0ZXI6IEEsXG4gICAgb3ZlcnJpZGVzOiBQYXJ0aWFsPEZsYWdzT2Y8QT4+ID0ge31cbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJlcG8gPSBSZXBvc2l0b3J5LmZvck1vZGVsKFNlcXVlbmNlTW9kZWwsIGFkYXB0ZXIuYWxpYXMpLm92ZXJyaWRlKFxuICAgICAgb3ZlcnJpZGVzXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBzZXF1ZW5jZVxuICAgKiBAc3VtbWFyeSBHZXRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBzZXF1ZW5jZSBmcm9tIHN0b3JhZ2UuIElmIHRoZSBzZXF1ZW5jZVxuICAgKiBkb2Vzbid0IGV4aXN0IHlldCwgaXQgcmV0dXJucyB0aGUgY29uZmlndXJlZCBzdGFydGluZyB2YWx1ZS5cbiAgICogQHJldHVybiBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgY3VycmVudCBzZXF1ZW5jZSB2YWx1ZVxuICAgKi9cbiAgYXN5bmMgY3VycmVudChcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8YW55PlxuICApOiBQcm9taXNlPHN0cmluZyB8IG51bWJlciB8IGJpZ2ludD4ge1xuICAgIGNvbnN0IHsgbG9nLCBjdHggfSA9IGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIE9wZXJhdGlvbktleXMuUkVBRCwgdHJ1ZSk7XG4gICAgY29uc3QgeyBuYW1lLCBzdGFydFdpdGggfSA9IHRoaXMub3B0aW9ucztcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc2VxdWVuY2U6IFNlcXVlbmNlTW9kZWwgPSBhd2FpdCB0aGlzLnJlcG8ucmVhZChuYW1lIGFzIHN0cmluZywgY3R4KTtcbiAgICAgIHJldHVybiB0aGlzLnBhcnNlKHNlcXVlbmNlLmN1cnJlbnQgYXMgc3RyaW5nIHwgbnVtYmVyKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgTm90Rm91bmRFcnJvcikge1xuICAgICAgICBsb2cuZGVidWcoXG4gICAgICAgICAgYFNlcXVlbmNlLmN1cnJlbnQgbWlzc2luZyAke25hbWV9LCByZXR1cm5pbmcgc3RhcnRXaXRoPSR7c3RhcnRXaXRofWBcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHR5cGVvZiBzdGFydFdpdGggPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgICBcIlN0YXJ0aW5nIHZhbHVlIGlzIG5vdCBkZWZpbmVkIGZvciBhIG5vbiBleGlzdGluZyBzZXF1ZW5jZVwiXG4gICAgICAgICAgKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZShzdGFydFdpdGgpO1xuICAgICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgIGBGYWlsZWQgdG8gcGFyc2UgaW5pdGlhbCB2YWx1ZSBmb3Igc2VxdWVuY2UgJHtzdGFydFdpdGh9OiAke2V9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBgRmFpbGVkIHRvIHJldHJpZXZlIGN1cnJlbnQgdmFsdWUgZm9yIHNlcXVlbmNlICR7bmFtZX06ICR7ZX1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW5jcmVtZW50cyB0aGUgc2VxdWVuY2UgdmFsdWVcbiAgICogQHN1bW1hcnkgSW5jcmVhc2VzIHRoZSBjdXJyZW50IHNlcXVlbmNlIHZhbHVlIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50IGFuZCBwZXJzaXN0c1xuICAgKiB0aGUgbmV3IHZhbHVlIHRvIHN0b3JhZ2UuIFRoaXMgbWV0aG9kIGhhbmRsZXMgYm90aCBudW1lcmljIGFuZCBCaWdJbnQgc2VxdWVuY2UgdHlwZXMuXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50fSBjdXJyZW50IC0gVGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHNlcXVlbmNlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbY291bnRdIC0gT3B0aW9uYWwgYW1vdW50IHRvIGluY3JlbWVudCBieSwgZGVmYXVsdHMgdG8gdGhlIHNlcXVlbmNlJ3MgaW5jcmVtZW50QnkgdmFsdWVcbiAgICogQHJldHVybiBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgbmV3IHNlcXVlbmNlIHZhbHVlIGFmdGVyIGluY3JlbWVudGluZ1xuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGluY3JlbWVudChcbiAgICBjb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICAgIGNvbnRleHQ6IENvbnRleHQ8YW55PlxuICApOiBQcm9taXNlPHN0cmluZyB8IG51bWJlciB8IGJpZ2ludD4ge1xuICAgIGNvbnN0IHsgbG9nLCBjdHggfSA9IHRoaXMuYWRhcHRlcltcImxvZ0N0eFwiXShbY29udGV4dF0sIHRoaXMuaW5jcmVtZW50KTtcbiAgICBjb25zdCB7IHR5cGUsIGluY3JlbWVudEJ5LCBuYW1lIH0gPSB0aGlzLm9wdGlvbnM7XG4gICAgaWYgKCFuYW1lKSB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIlNlcXVlbmNlIG5hbWUgaXMgcmVxdWlyZWRcIik7XG5cbiAgICByZXR1cm4gU2VxdWVuY2UubG9jay5leGVjdXRlKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRvSW5jcmVtZW50QnkgPSBjb3VudCB8fCBpbmNyZW1lbnRCeTtcbiAgICAgIGlmICh0b0luY3JlbWVudEJ5ICUgaW5jcmVtZW50QnkgIT09IDApXG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgIGBWYWx1ZSB0byBpbmNyZW1lbnQgZG9lcyBub3QgY29uc2lkZXIgdGhlIGluY3JlbWVudEJ5IHNldHRpbmc6ICR7aW5jcmVtZW50Qnl9YFxuICAgICAgICApO1xuICAgICAgY29uc3QgdHlwZU5hbWUgPVxuICAgICAgICB0eXBlb2YgdHlwZSA9PT0gXCJmdW5jdGlvblwiICYmICh0eXBlIGFzIGFueSk/Lm5hbWVcbiAgICAgICAgICA/ICh0eXBlIGFzIGFueSkubmFtZVxuICAgICAgICAgIDogdHlwZTtcbiAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGF3YWl0IHRoaXMuY3VycmVudChjdHgpO1xuXG4gICAgICBjb25zdCBwZXJmb3JtVXBzZXJ0ID0gYXN5bmMgKFxuICAgICAgICBuZXh0OiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnRcbiAgICAgICk6IFByb21pc2U8U2VxdWVuY2VNb2RlbD4gPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnJlcG8udXBkYXRlKFxuICAgICAgICAgICAgbmV3IFNlcXVlbmNlTW9kZWwoeyBpZDogbmFtZSwgY3VycmVudDogbmV4dCB9KSxcbiAgICAgICAgICAgIGN0eFxuICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgTm90Rm91bmRFcnJvcikge1xuICAgICAgICAgICAgbG9nLmRlYnVnKFxuICAgICAgICAgICAgICBgU2VxdWVuY2UgY3JlYXRlICR7bmFtZX0gY3VycmVudD0ke2N1cnJlbnRWYWx1ZSBhcyBhbnl9IG5leHQ9JHtuZXh0IGFzIGFueX1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVwby5jcmVhdGUoXG4gICAgICAgICAgICAgIG5ldyBTZXF1ZW5jZU1vZGVsKHsgaWQ6IG5hbWUsIGN1cnJlbnQ6IG5leHQgfSksXG4gICAgICAgICAgICAgIGN0eFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3QgaW5jcmVtZW50U2VyaWFsID0gYXN5bmMgKFxuICAgICAgICBiYXNlOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnRcbiAgICAgICk6IFByb21pc2U8c3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50PiA9PiB7XG4gICAgICAgIHN3aXRjaCAodHlwZU5hbWUpIHtcbiAgICAgICAgICBjYXNlIE51bWJlci5uYW1lOlxuICAgICAgICAgICAgcmV0dXJuICh0aGlzLnBhcnNlKGJhc2UpIGFzIG51bWJlcikgKyB0b0luY3JlbWVudEJ5O1xuICAgICAgICAgIGNhc2UgQmlnSW50Lm5hbWU6XG4gICAgICAgICAgICByZXR1cm4gKHRoaXMucGFyc2UoYmFzZSkgYXMgYmlnaW50KSArIEJpZ0ludCh0b0luY3JlbWVudEJ5KTtcbiAgICAgICAgICBjYXNlIFN0cmluZy5uYW1lOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2UoYmFzZSk7XG4gICAgICAgICAgY2FzZSBcInNlcmlhbFwiOlxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgICAgICAgU2VyaWFsLmluc3RhbmNlLmdlbmVyYXRlKGJhc2UgYXMgc3RyaW5nKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJTaG91bGQgbmV2ZXIgaGFwcGVuXCIpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBpZiAodHlwZU5hbWUgPT09IFwidXVpZFwiKSB7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgY29uc3QgbmV4dCA9IGF3YWl0IFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgICAgIFVVSUQuaW5zdGFuY2UuZ2VuZXJhdGUoY3VycmVudFZhbHVlIGFzIHN0cmluZylcbiAgICAgICAgICApO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwZXJmb3JtVXBzZXJ0KG5leHQpO1xuICAgICAgICAgICAgbG9nLmRlYnVnKFxuICAgICAgICAgICAgICBgU2VxdWVuY2UgdXVpZCBpbmNyZW1lbnQgJHtuYW1lfSBjdXJyZW50PSR7Y3VycmVudFZhbHVlIGFzIGFueX0gbmV4dD0ke25leHQgYXMgYW55fWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LmN1cnJlbnQgYXMgc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50O1xuICAgICAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgQ29uZmxpY3RFcnJvcikgY29udGludWU7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXh0ID0gYXdhaXQgaW5jcmVtZW50U2VyaWFsKGN1cnJlbnRWYWx1ZSk7XG4gICAgICBjb25zdCBzZXEgPSBhd2FpdCBwZXJmb3JtVXBzZXJ0KG5leHQpO1xuICAgICAgbG9nLmRlYnVnKFxuICAgICAgICBgU2VxdWVuY2UuaW5jcmVtZW50ICR7bmFtZX0gY3VycmVudD0ke2N1cnJlbnRWYWx1ZSBhcyBhbnl9IG5leHQ9JHtuZXh0IGFzIGFueX1gXG4gICAgICApO1xuICAgICAgcmV0dXJuIHNlcS5jdXJyZW50IGFzIHN0cmluZyB8IG51bWJlciB8IGJpZ2ludDtcbiAgICB9LCBuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2V0cyB0aGUgbmV4dCB2YWx1ZSBpbiB0aGUgc2VxdWVuY2VcbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBzZXF1ZW5jZSBhbmQgaW5jcmVtZW50cyBpdCBieSB0aGVcbiAgICogY29uZmlndXJlZCBpbmNyZW1lbnQgYW1vdW50LiBUaGlzIGlzIHRoZSBtYWluIG1ldGhvZCB1c2VkIHRvIGdldCBhIG5ldyBzZXF1ZW50aWFsIHZhbHVlLlxuICAgKiBAcmV0dXJuIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBuZXh0IHZhbHVlIGluIHRoZSBzZXF1ZW5jZVxuICAgKi9cbiAgYXN5bmMgbmV4dChcbiAgICAuLi5hcmd6OiBNYXliZUNvbnRleHR1YWxBcmc8YW55PlxuICApOiBQcm9taXNlPG51bWJlciB8IHN0cmluZyB8IGJpZ2ludD4ge1xuICAgIGNvbnN0IHsgY3R4IH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJneiwgT3BlcmF0aW9uS2V5cy5VUERBVEUsIHRydWUpKS5mb3IoXG4gICAgICB0aGlzLm5leHRcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmluY3JlbWVudCh1bmRlZmluZWQsIGN0eCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdlbmVyYXRlcyBhIHJhbmdlIG9mIHNlcXVlbnRpYWwgdmFsdWVzXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyBhIHNwZWNpZmllZCBudW1iZXIgb2Ygc2VxdWVudGlhbCB2YWx1ZXMgZnJvbSB0aGUgc2VxdWVuY2UuXG4gICAqIFRoaXMgaXMgdXNlZnVsIHdoZW4geW91IG5lZWQgdG8gYWxsb2NhdGUgbXVsdGlwbGUgSURzIGF0IG9uY2UuXG4gICAqIFRoZSBtZXRob2QgaW5jcmVtZW50cyB0aGUgc2VxdWVuY2UgYnkgdGhlIHRvdGFsIGFtb3VudCBuZWVkZWQgYW5kIHJldHVybnMgYWxsIHZhbHVlcyBpbiB0aGUgcmFuZ2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb3VudCAtIFRoZSBudW1iZXIgb2Ygc2VxdWVudGlhbCB2YWx1ZXMgdG8gZ2VuZXJhdGVcbiAgICogQHJldHVybiBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBvZiBzZXF1ZW50aWFsIHZhbHVlc1xuICAgKi9cbiAgYXN5bmMgcmFuZ2UoXG4gICAgY291bnQ6IG51bWJlcixcbiAgICAuLi5hcmd6OiBNYXliZUNvbnRleHR1YWxBcmc8YW55PlxuICApOiBQcm9taXNlPChudW1iZXIgfCBzdHJpbmcgfCBiaWdpbnQpW10+IHtcbiAgICBjb25zdCB7IGN0eCwgbG9nIH0gPSAoXG4gICAgICBhd2FpdCB0aGlzLmxvZ0N0eChhcmd6LCBPcGVyYXRpb25LZXlzLlVQREFURSwgdHJ1ZSlcbiAgICApLmZvcih0aGlzLnJhbmdlKTtcblxuICAgIGlmICh0aGlzLm9wdGlvbnMudHlwZSA9PT0gXCJ1dWlkXCIgfHwgdGhpcy5vcHRpb25zLnR5cGUgPT09IFwic2VyaWFsXCIpXG4gICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRFcnJvciggLy8gVE9ETyBqdXN0IGdlbmVyYXRlIHZhbGlkIHV1aWRzL3NlcmlhbHNcbiAgICAgICAgYHR5cGUgJHt0aGlzLm9wdGlvbnMudHlwZX0gaXMgY3VycmVudGx5IG5vdCBzdXBwcG9ydGVkIGZvciB0aGlzIGFkYXB0ZXJgXG4gICAgICApO1xuXG4gICAgY29uc3QgdHlwZU5hbWUgPVxuICAgICAgdHlwZW9mIHRoaXMub3B0aW9ucy50eXBlID09PSBcImZ1bmN0aW9uXCIgJiZcbiAgICAgICh0aGlzLm9wdGlvbnMudHlwZSBhcyBhbnkpPy5uYW1lXG4gICAgICAgID8gKHRoaXMub3B0aW9ucy50eXBlIGFzIGFueSkubmFtZVxuICAgICAgICA6IHRoaXMub3B0aW9ucy50eXBlO1xuXG4gICAgY29uc3QgaW5jcmVtZW50QnkgPSB0aGlzLnBhcnNlKFxuICAgICAgdGhpcy5vcHRpb25zLmluY3JlbWVudEJ5IGFzIG51bWJlclxuICAgICkgYXMgbnVtYmVyO1xuICAgIGNvbnN0IG5leHQ6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCA9IGF3YWl0IHRoaXMuaW5jcmVtZW50KFxuICAgICAgKHRoaXMucGFyc2UoY291bnQpIGFzIG51bWJlcikgKiBpbmNyZW1lbnRCeSxcbiAgICAgIGN0eFxuICAgICk7XG4gICAgbGV0IHJhbmdlOiAobnVtYmVyIHwgc3RyaW5nIHwgYmlnaW50KVtdID0gW107XG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8PSBjb3VudCAtIDE7IGkrKykge1xuICAgICAgcmFuZ2UucHVzaCgobmV4dCBhcyBudW1iZXIpIC0gaW5jcmVtZW50QnkgKiAodGhpcy5wYXJzZShpKSBhcyBudW1iZXIpKTtcbiAgICB9XG5cbiAgICByYW5nZSA9IHJhbmdlLnJldmVyc2UoKTtcblxuICAgIGlmIChyYW5nZVtyYW5nZS5sZW5ndGggLSAxXSAhPT0gbmV4dCAmJiB0eXBlTmFtZSAhPT0gXCJTdHJpbmdcIilcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiTWlzY2FsY3VsYXRpb24gb2YgcmFuZ2VcIik7XG5cbiAgICBsb2cuZGVidWcoYENhbGN1bGF0ZWQgcmFuZ2U6ICR7cmFuZ2Uuam9pbihcIiwgXCIpfWApO1xuXG4gICAgcmV0dXJuIHJhbmdlO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQpOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQge1xuICAgIHJldHVybiBTZXF1ZW5jZS5wYXJzZVZhbHVlKHRoaXMub3B0aW9ucy50eXBlLCB2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbG9nQ3R4PFxuICAgIEFSR1MgZXh0ZW5kcyBhbnlbXSA9IGFueVtdLFxuICAgIE1FVEhPRCBleHRlbmRzIE1ldGhvZE9yT3BlcmF0aW9uID0gTWV0aG9kT3JPcGVyYXRpb24sXG4gID4oXG4gICAgYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPENvbnRleHRPZjx0eXBlb2YgdGhpcy5hZGFwdGVyPiwgQVJHUz4sXG4gICAgb3BlcmF0aW9uOiBNRVRIT0RcbiAgKTogQ29udGV4dHVhbGl6ZWRBcmdzPFxuICAgIENvbnRleHRPZjx0eXBlb2YgdGhpcy5hZGFwdGVyPixcbiAgICBBUkdTLFxuICAgIE1FVEhPRCBleHRlbmRzIHN0cmluZyA/IHRydWUgOiBmYWxzZVxuICA+O1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbG9nQ3R4PFxuICAgIEFSR1MgZXh0ZW5kcyBhbnlbXSA9IGFueVtdLFxuICAgIE1FVEhPRCBleHRlbmRzIE1ldGhvZE9yT3BlcmF0aW9uID0gTWV0aG9kT3JPcGVyYXRpb24sXG4gID4oXG4gICAgYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPENvbnRleHRPZjx0eXBlb2YgdGhpcy5hZGFwdGVyPiwgQVJHUz4sXG4gICAgb3BlcmF0aW9uOiBNRVRIT0QsXG4gICAgYWxsb3dDcmVhdGU6IGZhbHNlXG4gICk6IENvbnRleHR1YWxpemVkQXJnczxcbiAgICBDb250ZXh0T2Y8dHlwZW9mIHRoaXMuYWRhcHRlcj4sXG4gICAgQVJHUyxcbiAgICBNRVRIT0QgZXh0ZW5kcyBzdHJpbmcgPyB0cnVlIDogZmFsc2VcbiAgPjtcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGxvZ0N0eDxcbiAgICBBUkdTIGV4dGVuZHMgYW55W10gPSBhbnlbXSxcbiAgICBNRVRIT0QgZXh0ZW5kcyBNZXRob2RPck9wZXJhdGlvbiA9IE1ldGhvZE9yT3BlcmF0aW9uLFxuICA+KFxuICAgIGFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxDb250ZXh0T2Y8dHlwZW9mIHRoaXMuYWRhcHRlcj4sIEFSR1M+LFxuICAgIG9wZXJhdGlvbjogTUVUSE9ELFxuICAgIGFsbG93Q3JlYXRlOiB0cnVlXG4gICk6IFByb21pc2U8XG4gICAgQ29udGV4dHVhbGl6ZWRBcmdzPFxuICAgICAgQ29udGV4dE9mPHR5cGVvZiB0aGlzLmFkYXB0ZXI+LFxuICAgICAgQVJHUyxcbiAgICAgIE1FVEhPRCBleHRlbmRzIHN0cmluZyA/IHRydWUgOiBmYWxzZVxuICAgID5cbiAgPjtcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGxvZ0N0eDxcbiAgICBBUkdTIGV4dGVuZHMgYW55W10gPSBhbnlbXSxcbiAgICBNRVRIT0QgZXh0ZW5kcyBNZXRob2RPck9wZXJhdGlvbiA9IE1ldGhvZE9yT3BlcmF0aW9uLFxuICA+KFxuICAgIGFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxDb250ZXh0T2Y8dHlwZW9mIHRoaXMuYWRhcHRlcj4sIEFSR1M+LFxuICAgIG9wZXJhdGlvbjogTUVUSE9ELFxuICAgIGFsbG93Q3JlYXRlOiBib29sZWFuID0gZmFsc2VcbiAgKTpcbiAgICB8IFByb21pc2U8XG4gICAgICAgIENvbnRleHR1YWxpemVkQXJnczxcbiAgICAgICAgICBDb250ZXh0T2Y8dHlwZW9mIHRoaXMuYWRhcHRlcj4sXG4gICAgICAgICAgQVJHUyxcbiAgICAgICAgICBNRVRIT0QgZXh0ZW5kcyBzdHJpbmcgPyB0cnVlIDogZmFsc2VcbiAgICAgICAgPlxuICAgICAgPlxuICAgIHwgQ29udGV4dHVhbGl6ZWRBcmdzPFxuICAgICAgICBDb250ZXh0T2Y8dHlwZW9mIHRoaXMuYWRhcHRlcj4sXG4gICAgICAgIEFSR1MsXG4gICAgICAgIE1FVEhPRCBleHRlbmRzIHN0cmluZyA/IHRydWUgOiBmYWxzZVxuICAgICAgPiB7XG4gICAgY29uc3QgY3R4ID0gdGhpcy5hZGFwdGVyW1wibG9nQ3R4XCJdKFxuICAgICAgW1NlcXVlbmNlTW9kZWwsIC4uLmFyZ3NdIGFzIGFueSxcbiAgICAgIG9wZXJhdGlvbixcbiAgICAgIGFsbG93Q3JlYXRlIGFzIGFueVxuICAgICkgYXNcbiAgICAgIHwgQ29udGV4dHVhbGl6ZWRBcmdzPFxuICAgICAgICAgIENvbnRleHRPZjxBPixcbiAgICAgICAgICBBUkdTLFxuICAgICAgICAgIE1FVEhPRCBleHRlbmRzIHN0cmluZyA/IHRydWUgOiBmYWxzZVxuICAgICAgICA+XG4gICAgICB8IFByb21pc2U8XG4gICAgICAgICAgQ29udGV4dHVhbGl6ZWRBcmdzPFxuICAgICAgICAgICAgQ29udGV4dE9mPEE+LFxuICAgICAgICAgICAgQVJHUyxcbiAgICAgICAgICAgIE1FVEhPRCBleHRlbmRzIHN0cmluZyA/IHRydWUgOiBmYWxzZVxuICAgICAgICAgID5cbiAgICAgICAgPjtcbiAgICBmdW5jdGlvbiBzcXVhc2hBcmdzKGN0eDogQ29udGV4dHVhbGl6ZWRBcmdzPENvbnRleHRPZjxBPj4pIHtcbiAgICAgIGN0eC5jdHhBcmdzLnNoaWZ0KCk7IC8vIHJlbW92ZXMgYWRkZWQgbW9kZWwgdG8gYXJnc1xuICAgICAgcmV0dXJuIGN0eCBhcyBhbnk7XG4gICAgfVxuXG4gICAgaWYgKCEoY3R4IGluc3RhbmNlb2YgUHJvbWlzZSkpIHJldHVybiBzcXVhc2hBcmdzKGN0eCk7XG4gICAgcmV0dXJuIGN0eC50aGVuKHNxdWFzaEFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBHZXRzIHRoZSBwcmltYXJ5IGtleSBzZXF1ZW5jZSBuYW1lIGZvciBhIG1vZGVsXG4gICAqIEBzdW1tYXJ5IFV0aWxpdHkgbWV0aG9kIHRoYXQgcmV0dXJucyB0aGUgc3RhbmRhcmRpemVkIHNlcXVlbmNlIG5hbWUgZm9yIGEgbW9kZWwncyBwcmltYXJ5IGtleVxuICAgKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlXG4gICAqIEBwYXJhbSB7TXxDb25zdHJ1Y3RvcjxNPn0gbW9kZWwgLSBUaGUgbW9kZWwgaW5zdGFuY2Ugb3IgY29uc3RydWN0b3JcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgc2VxdWVuY2UgbmFtZSBmb3IgdGhlIG1vZGVsJ3MgcHJpbWFyeSBrZXlcbiAgICovXG4gIHN0YXRpYyBwazxNIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBNIHwgQ29uc3RydWN0b3I8TT4pIHtcbiAgICByZXR1cm4gTW9kZWwuc2VxdWVuY2VOYW1lKG1vZGVsLCBcInBrXCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQYXJzZXMgYSBzZXF1ZW5jZSB2YWx1ZSB0byB0aGUgYXBwcm9wcmlhdGUgdHlwZVxuICAgKiBAc3VtbWFyeSBDb252ZXJ0cyBhIHNlcXVlbmNlIHZhbHVlIHRvIHRoZSBzcGVjaWZpZWQgdHlwZSAoTnVtYmVyIG9yIEJpZ0ludClcbiAgICogQHBhcmFtIHtcIk51bWJlclwifFwiQmlnSW50XCJ8dW5kZWZpbmVkfSB0eXBlIC0gVGhlIHRhcmdldCB0eXBlIHRvIGNvbnZlcnQgdG9cbiAgICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfGJpZ2ludH0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY29udmVydFxuICAgKiBAcmV0dXJuIHtzdHJpbmd8bnVtYmVyfGJpZ2ludH0gVGhlIGNvbnZlcnRlZCB2YWx1ZVxuICAgKi9cbiAgc3RhdGljIHBhcnNlVmFsdWUoXG4gICAgdHlwZTogU2VxdWVuY2VPcHRpb25zVHlwZSxcbiAgICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50XG4gICk6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCB7XG4gICAgY29uc3QgdHlwZU5hbWUgPVxuICAgICAgdHlwZW9mIHR5cGUgPT09IFwiZnVuY3Rpb25cIiAmJiAodHlwZSBhcyBhbnkpPy5uYW1lXG4gICAgICAgID8gKHR5cGUgYXMgYW55KS5uYW1lXG4gICAgICAgIDogdHlwZTtcbiAgICBzd2l0Y2ggKHR5cGVOYW1lKSB7XG4gICAgICBjYXNlIE51bWJlci5uYW1lIHx8IE51bWJlci5uYW1lLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICA/IHBhcnNlSW50KHZhbHVlKVxuICAgICAgICAgIDogdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiXG4gICAgICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICA6IEJpZ0ludCh2YWx1ZSk7XG4gICAgICBjYXNlIEJpZ0ludC5uYW1lIHx8IEJpZ0ludC5uYW1lLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBCaWdJbnQodmFsdWUpO1xuICAgICAgY2FzZSBTdHJpbmcubmFtZSB8fCBTdHJpbmcubmFtZS50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgY2FzZSBcInV1aWRcIjpcbiAgICAgIGNhc2UgXCJzZXJpYWxcIjpcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkRXJyb3IoXG4gICAgICAgICAgYFVuc3VwcG9ydGVkIHNlcXVlbmNlIHR5cGU6ICR7dHlwZX0gZm9yIGFkYXB0ZXIgJHt0aGlzfWBcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuQWRhcHRlcltcIl9iYXNlU2VxdWVuY2VcIl0gPSBTZXF1ZW5jZTtcbiJdfQ==
@@ -76,6 +76,7 @@ exports.DefaultAdapterFlags = Object.assign({}, db_decorators_1.DefaultRepositor
76
76
  forcePrepareSimpleQueries: false,
77
77
  forcePrepareComplexQueries: false,
78
78
  cacheForPopulate: {},
79
+ preferFromCache: false,
79
80
  noEmit: false,
80
81
  noEmitSingle: false,
81
82
  noEmitBulk: false,
@@ -104,4 +105,4 @@ exports.MultipleSelectOperationKeys = [
104
105
  constants_1.PreparedStatementKeys.PAGE,
105
106
  ];
106
107
  exports.PaginationOperationKeys = [constants_1.PreparedStatementKeys.PAGE_BY, constants_1.PreparedStatementKeys.PAGE];
107
- //# sourceMappingURL=constants.js.map
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BlcnNpc3RlbmNlL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyREFJaUM7QUFFakMsd0RBQTJEO0FBRTNEOzs7Ozs7R0FNRztBQUNILElBQVksZUFrRlg7QUFsRkQsV0FBWSxlQUFlO0lBQ3pCLDhDQUEyQixDQUFBO0lBQzNCLDBDQUEwQztJQUMxQyxrQ0FBZSxDQUFBO0lBRWYsc0RBQXNEO0lBQ3RELG9DQUFpQixDQUFBO0lBRWpCLDRDQUE0QztJQUM1QyxzQ0FBbUIsQ0FBQTtJQUVuQix5REFBeUQ7SUFDekQsMkRBQXdDLENBQUE7SUFFeEMsc0NBQW1CLENBQUE7SUFDbkIsK0NBQStDO0lBQy9DLGtDQUFlLENBQUE7SUFFZixnREFBZ0Q7SUFDaEQsb0NBQWlCLENBQUE7SUFFakIsb0RBQW9EO0lBQ3BELDBDQUF1QixDQUFBO0lBRXZCLFlBQVk7SUFDWix5REFBeUQ7SUFDekQsMENBQXVCLENBQUE7SUFFdkIseURBQXlEO0lBQ3pELHNEQUFzQyxDQUFBO0lBRXRDLHlEQUF5RDtJQUN6RCxzREFBc0MsQ0FBQTtJQUV0QyxZQUFZO0lBRVosc0RBQXNEO0lBQ3RELDRDQUF5QixDQUFBO0lBRXpCLHNEQUFzRDtJQUN0RCx3Q0FBcUIsQ0FBQTtJQUVyQix3REFBd0Q7SUFDeEQscURBQXFDLENBQUE7SUFFckMseURBQXlEO0lBQ3pELHVEQUF1QyxDQUFBO0lBRXZDLHlEQUF5RDtJQUN6RCx1REFBdUMsQ0FBQTtJQUN2Qyx5REFBeUQ7SUFDekQseURBQXlDLENBQUE7SUFFekMsNkNBQTZDO0lBQzdDLHdDQUFxQixDQUFBO0lBQ3JCLDZDQUE2QztJQUM3Qyw4Q0FBMkIsQ0FBQTtJQUMzQiw2Q0FBNkM7SUFDN0MsMENBQXVCLENBQUE7SUFFdkIsMENBQXVCLENBQUE7SUFFdkIsa0NBQWUsQ0FBQTtJQUVmLGdDQUFhLENBQUE7SUFFYix3REFBcUMsQ0FBQTtJQUVyQyxvREFBaUMsQ0FBQTtJQUNqQyx3Q0FBcUIsQ0FBQTtJQUVyQixvQ0FBaUIsQ0FBQTtJQUVqQixnQ0FBYSxDQUFBO0lBRWIsMENBQXVCLENBQUE7SUFFdkIsNkNBQTBCLENBQUE7SUFFMUIsd0NBQXFCLENBQUE7SUFFckIsNERBQXlDLENBQUE7QUFDM0MsQ0FBQyxFQWxGVyxlQUFlLCtCQUFmLGVBQWUsUUFrRjFCO0FBRVksUUFBQSxtQkFBbUIsR0FBc0IsTUFBTSxDQUFDLE1BQU0sQ0FDakUsRUFBRSxFQUNGO0lBQ0UsbUJBQW1CLEVBQUUsS0FBSztDQUMzQixDQUNtQixDQUFDO0FBRVYsUUFBQSxtQkFBbUIsR0FBaUIsTUFBTSxDQUFDLE1BQU0sQ0FDNUQsRUFBRSxFQUNGLHNDQUFzQixFQUN0QjtJQUNFLHVCQUF1QixFQUFFLElBQUk7SUFDN0Isa0JBQWtCLEVBQUUsSUFBSTtJQUN4Qix5QkFBeUIsRUFBRSxLQUFLO0lBQ2hDLDBCQUEwQixFQUFFLEtBQUs7SUFDakMsZ0JBQWdCLEVBQUUsRUFBRTtJQUNwQixlQUFlLEVBQUUsS0FBSztJQUN0QixNQUFNLEVBQUUsS0FBSztJQUNiLFlBQVksRUFBRSxLQUFLO0lBQ25CLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLDBCQUEwQixFQUFFLElBQUk7SUFDaEMsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QixrQkFBa0IsRUFBRSxLQUFLO0lBQ3pCLE1BQU0sRUFBRSxLQUFLO0lBQ2Isa0JBQWtCLEVBQUUsS0FBSztDQUMxQixDQUNjLENBQUM7QUFFTCxRQUFBLHdCQUF3QixHQU0vQjtJQUNKLDZCQUFhLENBQUMsTUFBTTtJQUNwQiw2QkFBYSxDQUFDLE1BQU07SUFDcEIsNkJBQWEsQ0FBQyxNQUFNO0lBQ3BCLHFDQUFxQixDQUFDLFVBQVU7SUFDaEMscUNBQXFCLENBQUMsVUFBVTtJQUNoQyxxQ0FBcUIsQ0FBQyxVQUFVO0NBQ2pDLENBQUM7QUFFVyxRQUFBLDJCQUEyQixHQU1sQyxDQUFDLDZCQUFhLENBQUMsSUFBSSxFQUFFLHFDQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRTlDLFFBQUEsbUJBQW1CLEdBTTFCLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxpQ0FBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUV4RCxRQUFBLDJCQUEyQixHQU1sQztJQUNKLGVBQWUsQ0FBQyxLQUFLO0lBQ3JCLGlDQUFxQixDQUFDLE9BQU87SUFDN0IsaUNBQXFCLENBQUMsT0FBTztJQUM3QixpQ0FBcUIsQ0FBQyxPQUFPO0lBQzdCLGlDQUFxQixDQUFDLElBQUk7SUFDMUIsaUNBQXFCLENBQUMsSUFBSTtDQUMzQixDQUFDO0FBRVcsUUFBQSx1QkFBdUIsR0FNOUIsQ0FBQyxpQ0FBcUIsQ0FBQyxPQUFPLEVBQUUsaUNBQXFCLENBQUMsSUFBSSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCdWxrQ3J1ZE9wZXJhdGlvbktleXMsXG4gIERlZmF1bHRSZXBvc2l0b3J5RmxhZ3MsXG4gIE9wZXJhdGlvbktleXMsXG59IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgQWRhcHRlckZsYWdzLCBDb250ZXh0RmxhZ3MgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzIH0gZnJvbSBcIi4uL3F1ZXJ5L2NvbnN0YW50c1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBQZXJzaXN0ZW5jZS1yZWxhdGVkIGNvbnN0YW50IGtleXNcbiAqIEBzdW1tYXJ5IEVudW0gY29udGFpbmluZyBzdHJpbmcgY29uc3RhbnRzIHVzZWQgdGhyb3VnaG91dCB0aGUgcGVyc2lzdGVuY2UgbGF5ZXIgZm9yIG1ldGFkYXRhLCByZWxhdGlvbnMsIGFuZCBvdGhlciBwZXJzaXN0ZW5jZS1yZWxhdGVkIG9wZXJhdGlvbnNcbiAqIEBlbnVtIHtzdHJpbmd9XG4gKiBAcmVhZG9ubHlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Y29yZVxuICovXG5leHBvcnQgZW51bSBQZXJzaXN0ZW5jZUtleXMge1xuICBQRVJTSVNURU5DRSA9IFwicGVyc2lzdGVuY2VcIixcbiAgLyoqIEBkZXNjcmlwdGlvbiBLZXkgZm9yIGluZGV4IG1ldGFkYXRhICovXG4gIElOREVYID0gXCJpbmRleFwiLFxuXG4gIC8qKiBAZGVzY3JpcHRpb24gS2V5IGZvciB1bmlxdWUgY29uc3RyYWludCBtZXRhZGF0YSAqL1xuICBVTklRVUUgPSBcInVuaXF1ZVwiLFxuXG4gIC8qKiBAZGVzY3JpcHRpb24gS2V5IGZvciBhZGFwdGVyIG1ldGFkYXRhICovXG4gIEFEQVBURVIgPSBcImFkYXB0ZXJcIixcblxuICAvKiogQGRlc2NyaXB0aW9uIFRlbXBsYXRlIGZvciBpbmplY3RhYmxlIGFkYXB0ZXIgbmFtZXMgKi9cbiAgSU5KRUNUQUJMRSA9IFwiZGVjYWZfezB9X2FkYXB0ZXJfZm9yX3sxfVwiLFxuXG4gIFNFUlZJQ0UgPSBcInNlcnZpY2VcIixcbiAgLyoqIEBkZXNjcmlwdGlvbiBLZXkgZm9yIHRhYmxlIG5hbWUgbWV0YWRhdGEgKi9cbiAgVEFCTEUgPSBcInRhYmxlXCIsXG5cbiAgLyoqIEBkZXNjcmlwdGlvbiBLZXkgZm9yIGNvbHVtbiBuYW1lIG1ldGFkYXRhICovXG4gIENPTFVNTiA9IFwiY29sdW1uXCIsXG5cbiAgLyoqIEBkZXNjcmlwdGlvbiBLZXkgZm9yIGdlbmVyYWwgbWV0YWRhdGEgc3RvcmFnZSAqL1xuICBNRVRBREFUQSA9IFwiX19tZXRhZGF0YVwiLFxuXG4gIC8vIE93bmVyc2hpcFxuICAvKiogQGRlc2NyaXB0aW9uIEtleSBmb3IgY3JlYXRlZC1ieSBvd25lcnNoaXAgbWV0YWRhdGEgKi9cbiAgT1dORVJTSElQID0gXCJvd25lcnNoaXBcIixcblxuICAvKiogQGRlc2NyaXB0aW9uIEtleSBmb3IgY3JlYXRlZC1ieSBvd25lcnNoaXAgbWV0YWRhdGEgKi9cbiAgQ1JFQVRFRF9CWSA9IGAke09XTkVSU0hJUH0uY3JlYXRlZC1ieWAsXG5cbiAgLyoqIEBkZXNjcmlwdGlvbiBLZXkgZm9yIHVwZGF0ZWQtYnkgb3duZXJzaGlwIG1ldGFkYXRhICovXG4gIFVQREFURURfQlkgPSBgJHtPV05FUlNISVB9LnVwZGF0ZWQtYnlgLFxuXG4gIC8vIFJlbGF0aW9uc1xuXG4gIC8qKiBAZGVzY3JpcHRpb24gS2V5IGZvciByZWxhdGlvbnMgbWV0YWRhdGEgc3RvcmFnZSAqL1xuICBSRUxBVElPTlMgPSBcIl9fcmVsYXRpb25zXCIsXG5cbiAgLyoqIEBkZXNjcmlwdGlvbiBLZXkgZm9yIHJlbGF0aW9ucyBtZXRhZGF0YSBzdG9yYWdlICovXG4gIFJFTEFUSU9OID0gXCJyZWxhdGlvblwiLFxuXG4gIC8qKiBAZGVzY3JpcHRpb24gS2V5IGZvciBvbmUtdG8tb25lIHJlbGF0aW9uIG1ldGFkYXRhICovXG4gIE9ORV9UT19PTkUgPSBgJHtSRUxBVElPTn0ub25lLXRvLW9uZWAsXG5cbiAgLyoqIEBkZXNjcmlwdGlvbiBLZXkgZm9yIG9uZS10by1tYW55IHJlbGF0aW9uIG1ldGFkYXRhICovXG4gIE9ORV9UT19NQU5ZID0gYCR7UkVMQVRJT059Lm9uZS10by1tYW55YCxcblxuICAvKiogQGRlc2NyaXB0aW9uIEtleSBmb3IgbWFueS10by1vbmUgcmVsYXRpb24gbWV0YWRhdGEgKi9cbiAgTUFOWV9UT19PTkUgPSBgJHtSRUxBVElPTn0ubWFueS10by1vbmVgLFxuICAvKiogQGRlc2NyaXB0aW9uIEtleSBmb3IgbWFueS10by1vbmUgcmVsYXRpb24gbWV0YWRhdGEgKi9cbiAgTUFOWV9UT19NQU5ZID0gYCR7UkVMQVRJT059Lm1hbnktdG8tbWFueWAsXG5cbiAgLyoqIEBkZXNjcmlwdGlvbiBLZXkgZm9yIHBvcHVsYXRlIG1ldGFkYXRhICovXG4gIFBPUFVMQVRFID0gXCJwb3B1bGF0ZVwiLFxuICAvKiogQGRlc2NyaXB0aW9uIEtleSBmb3IgcG9wdWxhdGUgbWV0YWRhdGEgKi9cbiAgTk9fVkFMSURBVEUgPSBcIm5vLXZhbGlkYXRlXCIsXG4gIC8qKiBAZGVzY3JpcHRpb24gS2V5IGZvciBtaWdyYXRpb24gY2xhc3NlcyAqL1xuICBNSUdSQVRJT04gPSBcIm1pZ3JhdGlvblwiLFxuXG4gIFNUQVRFTUVOVCA9IFwic3RhdGVtZW50XCIsXG5cbiAgUVVFUlkgPSBcInF1ZXJ5XCIsXG5cbiAgVVVJRCA9IFwidXVpZFwiLFxuXG4gIFRBR19GT1JfREVMRVRJT04gPSBcInRhZ19mb3JfZGVsZXRpb25cIixcblxuICBJTklUSUFMSVpBVElPTiA9IFwiaW5pdGlhbGl6YXRpb25cIixcbiAgU0hVVERPV04gPSBcInNodXRkb3duXCIsXG5cbiAgQllfS0VZID0gXCJieS1rZXlcIixcblxuICBBVVRIID0gXCJhdXRoXCIsXG5cbiAgQVVUSF9ST0xFID0gXCJhdXRoLXJvbGVcIixcblxuICBERUNBRl9ST1VURSA9IFwiRGVjYWZSb3V0ZVwiLFxuXG4gIFRIUk9UVExFID0gXCJ0aHJvdHRsZVwiLFxuXG4gIERFRkFVTFRfUVVFUllfQVRUUiA9IFwiZGVmYXVsdC1xdWVyeS1hdHRyXCIsXG59XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0Q29udGV4dEZsYWdzOiBDb250ZXh0RmxhZ3M8YW55PiA9IE9iamVjdC5hc3NpZ24oXG4gIHt9LFxuICB7XG4gICAgaWdub3JlRGV2U2FmZUd1YXJkczogZmFsc2UsXG4gIH1cbikgYXMgQ29udGV4dEZsYWdzPGFueT47XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0QWRhcHRlckZsYWdzOiBBZGFwdGVyRmxhZ3MgPSBPYmplY3QuYXNzaWduKFxuICB7fSxcbiAgRGVmYXVsdFJlcG9zaXRvcnlGbGFncyxcbiAge1xuICAgIGVuZm9yY2VVcGRhdGVWYWxpZGF0aW9uOiB0cnVlLFxuICAgIGFsbG93UmF3U3RhdGVtZW50czogdHJ1ZSxcbiAgICBmb3JjZVByZXBhcmVTaW1wbGVRdWVyaWVzOiBmYWxzZSxcbiAgICBmb3JjZVByZXBhcmVDb21wbGV4UXVlcmllczogZmFsc2UsXG4gICAgY2FjaGVGb3JQb3B1bGF0ZToge30sXG4gICAgcHJlZmVyRnJvbUNhY2hlOiBmYWxzZSxcbiAgICBub0VtaXQ6IGZhbHNlLFxuICAgIG5vRW1pdFNpbmdsZTogZmFsc2UsXG4gICAgbm9FbWl0QnVsazogZmFsc2UsXG4gICAgYnJlYWtPblNpbmdsZUZhaWx1cmVJbkJ1bGs6IHRydWUsXG4gICAgb2JzZXJ2ZUZ1bGxSZXN1bHQ6IHRydWUsXG4gICAgcGFnaW5hdGVCeUJvb2ttYXJrOiBmYWxzZSxcbiAgICBkcnlSdW46IGZhbHNlLFxuICAgIGFmdGVyUXVlcnlIYW5kbGVyczogZmFsc2UsXG4gIH1cbikgYXMgQWRhcHRlckZsYWdzO1xuXG5leHBvcnQgY29uc3QgVHJhbnNhY3Rpb25PcGVyYXRpb25LZXlzOiAoXG4gIHwgc3RyaW5nXG4gIHwgT3BlcmF0aW9uS2V5c1xuICB8IEJ1bGtDcnVkT3BlcmF0aW9uS2V5c1xuICB8IFBlcnNpc3RlbmNlS2V5c1xuICB8IFByZXBhcmVkU3RhdGVtZW50S2V5c1xuKVtdID0gW1xuICBPcGVyYXRpb25LZXlzLkNSRUFURSxcbiAgT3BlcmF0aW9uS2V5cy5VUERBVEUsXG4gIE9wZXJhdGlvbktleXMuREVMRVRFLFxuICBCdWxrQ3J1ZE9wZXJhdGlvbktleXMuQ1JFQVRFX0FMTCxcbiAgQnVsa0NydWRPcGVyYXRpb25LZXlzLlVQREFURV9BTEwsXG4gIEJ1bGtDcnVkT3BlcmF0aW9uS2V5cy5ERUxFVEVfQUxMLFxuXTtcblxuZXhwb3J0IGNvbnN0IE5vblRyYW5zYWN0aW9uT3BlcmF0aW9uS2V5czogKFxuICB8IHN0cmluZ1xuICB8IE9wZXJhdGlvbktleXNcbiAgfCBCdWxrQ3J1ZE9wZXJhdGlvbktleXNcbiAgfCBQZXJzaXN0ZW5jZUtleXNcbiAgfCBQcmVwYXJlZFN0YXRlbWVudEtleXNcbilbXSA9IFtPcGVyYXRpb25LZXlzLlJFQUQsIEJ1bGtDcnVkT3BlcmF0aW9uS2V5cy5SRUFEX0FMTF07XG5cbmV4cG9ydCBjb25zdCBTZWxlY3RPcGVyYXRpb25LZXlzOiAoXG4gIHwgc3RyaW5nXG4gIHwgT3BlcmF0aW9uS2V5c1xuICB8IEJ1bGtDcnVkT3BlcmF0aW9uS2V5c1xuICB8IFBlcnNpc3RlbmNlS2V5c1xuICB8IFByZXBhcmVkU3RhdGVtZW50S2V5c1xuKVtdID0gW1BlcnNpc3RlbmNlS2V5cy5TVEFURU1FTlQsIFByZXBhcmVkU3RhdGVtZW50S2V5cy5GSU5EX09ORV9CWV07XG5cbmV4cG9ydCBjb25zdCBNdWx0aXBsZVNlbGVjdE9wZXJhdGlvbktleXM6IChcbiAgfCBzdHJpbmdcbiAgfCBPcGVyYXRpb25LZXlzXG4gIHwgQnVsa0NydWRPcGVyYXRpb25LZXlzXG4gIHwgUGVyc2lzdGVuY2VLZXlzXG4gIHwgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzXG4pW10gPSBbXG4gIFBlcnNpc3RlbmNlS2V5cy5RVUVSWSxcbiAgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLlBBR0VfQlksXG4gIFByZXBhcmVkU3RhdGVtZW50S2V5cy5MSVNUX0JZLFxuICBQcmVwYXJlZFN0YXRlbWVudEtleXMuRklORF9CWSxcbiAgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLkZJTkQsXG4gIFByZXBhcmVkU3RhdGVtZW50S2V5cy5QQUdFLFxuXTtcblxuZXhwb3J0IGNvbnN0IFBhZ2luYXRpb25PcGVyYXRpb25LZXlzOiAoXG4gIHwgc3RyaW5nXG4gIHwgT3BlcmF0aW9uS2V5c1xuICB8IEJ1bGtDcnVkT3BlcmF0aW9uS2V5c1xuICB8IFBlcnNpc3RlbmNlS2V5c1xuICB8IFByZXBhcmVkU3RhdGVtZW50S2V5c1xuKVtdID0gW1ByZXBhcmVkU3RhdGVtZW50S2V5cy5QQUdFX0JZLCBQcmVwYXJlZFN0YXRlbWVudEtleXMuUEFHRV07XG4iXX0=
@@ -60,4 +60,4 @@ function uuid(update = false, seed, ...args) {
60
60
  })
61
61
  .apply();
62
62
  }
63
- //# sourceMappingURL=decorators.js.map
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wZXJzaXN0ZW5jZS9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBNkJBLDBEQXVCQztBQW9CRCxvQkE2Q0M7QUFySEQsK0NBQThDO0FBQzlDLHlFQUFpRTtBQUNqRSwyREFLaUM7QUFDakMscURBQXlEO0FBR3pELGlEQUFvQztBQUdwQzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNJLEtBQUssVUFBVSx1QkFBdUIsQ0FLM0MsT0FBcUIsRUFDckIsSUFBa0IsRUFDbEIsR0FBWSxFQUNaLEtBQVE7SUFFUixJQUNFLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUM7UUFDdEMsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssV0FBVyxFQUNqQyxDQUFDO1FBQ0QsT0FBTztJQUNULENBQUM7SUFFRCx3Q0FBd0M7SUFDeEMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDMUIsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDdkMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQ0EsS0FBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0saUJBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFvQkQsU0FBZ0IsSUFBSSxDQUNsQixTQU1tQixLQUFLLEVBQ3hCLElBRXlFLEVBQ3pFLEdBQUcsSUFBVztJQUVkLElBQUksT0FBTyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDakMsSUFBSSxHQUFHLE1BQU0sQ0FBQztRQUNkLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELE1BQU0sYUFBYSxHQUFHLDJCQUFlLENBQUMsSUFBSSxDQUFDO0lBRTNDLFNBQVMsSUFBSSxDQUNYLE1BQWUsRUFDZixJQUF5QyxFQUN6QyxHQUFHLElBQVc7UUFFZCxNQUFNLElBQUksR0FBaUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3RFLE1BQU0sVUFBVSxHQUFVO1lBQ3hCLElBQUEsK0JBQVEsR0FBRTtZQUNWLElBQUEseUJBQVMsRUFBQywyQkFBZSxDQUFDLElBQUksQ0FBQztZQUMvQixJQUFBLHdCQUFRLEVBQUMsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsb0JBQW9CO1NBQ2hGLENBQUM7UUFDRixJQUFJLE1BQU07WUFDUixVQUFVLENBQUMsSUFBSSxDQUNiLElBQUEsd0JBQVEsRUFBQyx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FDMUQsQ0FBQztRQUNKLElBQUksQ0FBQyxNQUFNO1lBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFBLHdCQUFRLEdBQUUsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sSUFBQSxrQkFBSyxFQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELE9BQU8sdUJBQVUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO1NBQ2pDLE1BQU0sQ0FBQztRQUNOLFNBQVMsRUFBRSxJQUFJO1FBQ2YsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztLQUM5QixDQUFDO1NBQ0QsS0FBSyxFQUFFLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGVyc2lzdGVuY2VLZXlzIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBNb2RlbCwgcmVxdWlyZWQgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQge1xuICBnZW5lcmF0ZWQsXG4gIG9uQ3JlYXRlLFxuICBvblVwZGF0ZSxcbiAgcmVhZG9ubHksXG59IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgYXBwbHksIERlY29yYXRpb24gfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcbmltcG9ydCB7IENvbnRleHRPZiB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBSZXBvIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvUmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgVVVJRCB9IGZyb20gXCIuL2dlbmVyYXRvcnNcIjtcbmltcG9ydCB7IENvbnRleHR1YWxBcmdzIH0gZnJvbSBcIi4uL3V0aWxzL0NvbnRleHR1YWxMb2dnZWRDbGFzc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBIYW5kbGVyIGZ1bmN0aW9uIHRoYXQgc2V0cyBhIHRpbWVzdGFtcCBwcm9wZXJ0eSB0byB0aGUgY3VycmVudCB0aW1lc3RhbXAuXG4gKiBAc3VtbWFyeSBVcGRhdGVzIGEgbW9kZWwgcHJvcGVydHkgd2l0aCB0aGUgY3VycmVudCB0aW1lc3RhbXAgZnJvbSB0aGUgcmVwb3NpdG9yeSBjb250ZXh0LlxuICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZSBleHRlbmRpbmcgTW9kZWxcbiAqIEB0ZW1wbGF0ZSBSIC0gVGhlIHJlcG9zaXRvcnkgdHlwZSBleHRlbmRpbmcgSVJlcG9zaXRvcnlcbiAqIEB0ZW1wbGF0ZSBWIC0gVGhlIGRhdGEgdHlwZSBmb3IgdGhlIG9wZXJhdGlvblxuICogQHRlbXBsYXRlIEYgLSBUaGUgcmVwb3NpdG9yeSBmbGFncyB0eXBlXG4gKiBAdGVtcGxhdGUgQyAtIFRoZSBjb250ZXh0IHR5cGVcbiAqIEBwYXJhbSB7Q30gY29udGV4dCAtIFRoZSByZXBvc2l0b3J5IGNvbnRleHQgY29udGFpbmluZyB0aGUgY3VycmVudCB0aW1lc3RhbXBcbiAqIEBwYXJhbSB7Vn0gZGF0YSAtIFRoZSBkYXRhIGJlaW5nIHByb2Nlc3NlZFxuICogQHBhcmFtIGtleSAtIFRoZSBwcm9wZXJ0eSBrZXkgdG8gdXBkYXRlXG4gKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIGJlaW5nIHVwZGF0ZWRcbiAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHRpbWVzdGFtcCBoYXMgYmVlbiBzZXRcbiAqIEBmdW5jdGlvbiB1dWlkQ3JlYXRlVXBkYXRlSGFuZGxlclxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXVpZENyZWF0ZVVwZGF0ZUhhbmRsZXI8XG4gIE0gZXh0ZW5kcyBNb2RlbDxib29sZWFuPixcbiAgUiBleHRlbmRzIFJlcG88TT4sXG4+KFxuICB0aGlzOiBSLFxuICBjb250ZXh0OiBDb250ZXh0T2Y8Uj4sXG4gIGRhdGE6IFVVSURNZXRhZGF0YSxcbiAga2V5OiBrZXlvZiBNLFxuICBtb2RlbDogTVxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChcbiAgICBjb250ZXh0LmdldChcImFsbG93R2VuZXJhdGlvbk92ZXJyaWRlXCIpICYmXG4gICAgdHlwZW9mIG1vZGVsW2tleV0gIT09IFwidW5kZWZpbmVkXCJcbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICBsZXQgeyBzZWVkLCBhcmdzIH0gPSBkYXRhO1xuICBpZiAoc2VlZCAmJiB0eXBlb2Ygc2VlZCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgc2VlZCA9IHNlZWQobW9kZWwsIC4uLihhcmdzIHx8IFtdKSwgY29udGV4dCk7XG4gIH1cbiAgKG1vZGVsIGFzIGFueSlba2V5XSA9IGF3YWl0IFVVSUQuaW5zdGFuY2UuZ2VuZXJhdGUoc2VlZCk7XG59XG5cbmV4cG9ydCB0eXBlIFVVSURNZXRhZGF0YSA9IHtcbiAgdXBkYXRlOiBib29sZWFuO1xuICBzZWVkPzpcbiAgICB8IHN0cmluZ1xuICAgIHwgKDxNIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBNLCAuLi5hcmdzOiBDb250ZXh0dWFsQXJnczxhbnk+KSA9PiBzdHJpbmcpO1xuICBhcmdzPzogYW55W107XG59O1xuZXhwb3J0IGZ1bmN0aW9uIHV1aWQoLi4uYXJnczogYW55W10pOiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5PzogYW55KSA9PiB2b2lkO1xuZXhwb3J0IGZ1bmN0aW9uIHV1aWQoXG4gIHVwZGF0ZTogYm9vbGVhbixcbiAgLi4uYXJnczogYW55W11cbik6ICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk/OiBhbnkpID0+IHZvaWQ7XG5leHBvcnQgZnVuY3Rpb24gdXVpZChcbiAgc2VlZDpcbiAgICB8IHN0cmluZ1xuICAgIHwgKDxNIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBNLCAuLi5hcmdzOiBDb250ZXh0dWFsQXJnczxhbnk+KSA9PiBzdHJpbmcpLFxuICAuLi5hcmdzOiBhbnlbXVxuKTogKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleT86IGFueSkgPT4gdm9pZDtcbmV4cG9ydCBmdW5jdGlvbiB1dWlkKFxuICB1cGRhdGU6XG4gICAgfCBib29sZWFuXG4gICAgfCBzdHJpbmdcbiAgICB8ICg8TSBleHRlbmRzIE1vZGVsPihcbiAgICAgICAgbW9kZWw6IE0sXG4gICAgICAgIC4uLmFyZ3M6IENvbnRleHR1YWxBcmdzPGFueT5cbiAgICAgICkgPT4gc3RyaW5nKSA9IGZhbHNlLFxuICBzZWVkPzpcbiAgICB8IHN0cmluZ1xuICAgIHwgKDxNIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBNLCAuLi5hcmdzOiBDb250ZXh0dWFsQXJnczxhbnk+KSA9PiBzdHJpbmcpLFxuICAuLi5hcmdzOiBhbnlbXVxuKTogKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleT86IGFueSkgPT4gdm9pZCB7XG4gIGlmICh0eXBlb2YgdXBkYXRlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBzZWVkID0gdXBkYXRlO1xuICAgIHVwZGF0ZSA9IGZhbHNlO1xuICB9XG5cbiAgY29uc3QgZGVjb3JhdGlvbktleSA9IFBlcnNpc3RlbmNlS2V5cy5VVUlEO1xuXG4gIGZ1bmN0aW9uIHV1aWQoXG4gICAgdXBkYXRlOiBib29sZWFuLFxuICAgIHNlZWQ6IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpIHwgdW5kZWZpbmVkLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICkge1xuICAgIGNvbnN0IG1ldGE6IFVVSURNZXRhZGF0YSA9IHsgdXBkYXRlOiB1cGRhdGUsIHNlZWQ6IHNlZWQsIGFyZ3M6IGFyZ3MgfTtcbiAgICBjb25zdCBkZWNvcmF0b3JzOiBhbnlbXSA9IFtcbiAgICAgIHJlcXVpcmVkKCksXG4gICAgICBnZW5lcmF0ZWQoUGVyc2lzdGVuY2VLZXlzLlVVSUQpLFxuICAgICAgb25DcmVhdGUodXVpZENyZWF0ZVVwZGF0ZUhhbmRsZXIsIG1ldGEsIHsgcHJpb3JpdHk6IDU0IH0pLCAvLyBvbmUgYWZ0ZXIgY29tcG9zZVxuICAgIF07XG4gICAgaWYgKHVwZGF0ZSlcbiAgICAgIGRlY29yYXRvcnMucHVzaChcbiAgICAgICAgb25VcGRhdGUodXVpZENyZWF0ZVVwZGF0ZUhhbmRsZXIsIG1ldGEsIHsgcHJpb3JpdHk6IDU0IH0pXG4gICAgICApO1xuICAgIGlmICghdXBkYXRlKSBkZWNvcmF0b3JzLnB1c2gocmVhZG9ubHkoKSk7XG4gICAgcmV0dXJuIGFwcGx5KC4uLmRlY29yYXRvcnMpO1xuICB9XG5cbiAgcmV0dXJuIERlY29yYXRpb24uZm9yKGRlY29yYXRpb25LZXkpXG4gICAgLmRlZmluZSh7XG4gICAgICBkZWNvcmF0b3I6IHV1aWQsXG4gICAgICBhcmdzOiBbdXBkYXRlLCBzZWVkLCAuLi5hcmdzXSxcbiAgICB9KVxuICAgIC5hcHBseSgpO1xufVxuIl19
@@ -43,4 +43,4 @@ class MigrationRuleError extends MigrationError {
43
43
  }
44
44
  }
45
45
  exports.MigrationRuleError = MigrationRuleError;
46
- //# sourceMappingURL=errors.js.map
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BlcnNpc3RlbmNlL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyREFBd0Q7QUFFeEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFDSCxNQUFhLGdCQUFpQixTQUFRLDZCQUFhO0lBQ2pELFlBQVksR0FBNkI7UUFDdkMsS0FBSyxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekMsQ0FBQztDQUNGO0FBSkQsNENBSUM7QUFFRCxNQUFhLGNBQWUsU0FBUSw2QkFBYTtJQUMvQyxZQUFZLEdBQTZCLEVBQUUsSUFBSSxHQUFHLGNBQWMsQ0FBQyxJQUFJO1FBQ25FLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7Q0FDRjtBQUpELHdDQUlDO0FBRUQsTUFBYSxrQkFBbUIsU0FBUSxjQUFjO0lBQ3BELFlBQVksR0FBNkI7UUFDdkMsS0FBSyxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0NBQ0Y7QUFKRCxnREFJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRXJyb3IgdGhyb3duIHdoZW4gYW4gdW5zdXBwb3J0ZWQgb3BlcmF0aW9uIGlzIGF0dGVtcHRlZFxuICogQHN1bW1hcnkgVGhpcyBlcnJvciBpcyB0aHJvd24gd2hlbiBhbiBvcGVyYXRpb24gaXMgcmVxdWVzdGVkIHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgY3VycmVudFxuICogcGVyc2lzdGVuY2UgYWRhcHRlciBvciBjb25maWd1cmF0aW9uLiBJdCBleHRlbmRzIHRoZSBCYXNlRXJyb3IgY2xhc3MgYW5kIHNldHMgYSA1MDAgc3RhdHVzIGNvZGUuXG4gKiBAcGFyYW0ge3N0cmluZ3xFcnJvcn0gbXNnIC0gVGhlIGVycm9yIG1lc3NhZ2Ugb3IgYW4gRXJyb3Igb2JqZWN0IHRvIHdyYXBcbiAqIEBjbGFzcyBVbnN1cHBvcnRlZEVycm9yXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gVGhyb3dpbmcgYW4gVW5zdXBwb3J0ZWRFcnJvclxuICogaWYgKCFhZGFwdGVyLnN1cHBvcnRzVHJhbnNhY3Rpb25zKCkpIHtcbiAqICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkRXJyb3IoJ1RyYW5zYWN0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGlzIGFkYXB0ZXInKTtcbiAqIH1cbiAqXG4gKiAvLyBDYXRjaGluZyBhbiBVbnN1cHBvcnRlZEVycm9yXG4gKiB0cnkge1xuICogICBhd2FpdCBhZGFwdGVyLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAqIH0gY2F0Y2ggKGVycm9yKSB7XG4gKiAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFVuc3VwcG9ydGVkRXJyb3IpIHtcbiAqICAgICBjb25zb2xlLmVycm9yKCdPcGVyYXRpb24gbm90IHN1cHBvcnRlZDonLCBlcnJvci5tZXNzYWdlKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBVbnN1cHBvcnRlZEVycm9yIGV4dGVuZHMgSW50ZXJuYWxFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1zZzogc3RyaW5nIHwgRXJyb3IgfCB1bmtub3duKSB7XG4gICAgc3VwZXIobXNnLCBVbnN1cHBvcnRlZEVycm9yLm5hbWUsIDUwMCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1pZ3JhdGlvbkVycm9yIGV4dGVuZHMgSW50ZXJuYWxFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1zZzogc3RyaW5nIHwgRXJyb3IgfCB1bmtub3duLCBuYW1lID0gTWlncmF0aW9uRXJyb3IubmFtZSkge1xuICAgIHN1cGVyKG1zZywgbmFtZSwgNTAwKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTWlncmF0aW9uUnVsZUVycm9yIGV4dGVuZHMgTWlncmF0aW9uRXJyb3Ige1xuICBjb25zdHJ1Y3Rvcihtc2c6IHN0cmluZyB8IEVycm9yIHwgdW5rbm93bikge1xuICAgIHN1cGVyKG1zZywgTWlncmF0aW9uUnVsZUVycm9yLm5hbWUpO1xuICB9XG59XG4iXX0=
@@ -68,4 +68,4 @@ function getFilters(repo) {
68
68
  });
69
69
  return filters;
70
70
  }
71
- //# sourceMappingURL=event-filters.js.map
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtZmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wZXJzaXN0ZW5jZS9ldmVudC1maWx0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWVBLG9DQUtDO0FBRUQsb0NBS0M7QUFFRCxvQ0FLQztBQUVELGtEQUVDO0FBRUQsb0NBRUM7QUFFRCxnQ0FFQztBQUVELG9DQTRCQztBQWFELGdDQVFDO0FBakdELHFEQUE2RDtBQUM3RCwyREFJaUM7QUFFakMseUVBQXlFO0FBQ3pFLGdGQUd3QztBQUN4QywrQ0FBdUQ7QUFHdkQsU0FBZ0IsWUFBWSxDQUFDLEtBQTRCO0lBQ3ZELE9BQU8sWUFBWSxDQUFDLEtBQUssRUFBRTtRQUN6Qiw2QkFBYSxDQUFDLE1BQU07UUFDcEIscUNBQXFCLENBQUMsVUFBVTtLQUNqQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBZ0IsWUFBWSxDQUFDLEtBQTRCO0lBQ3ZELE9BQU8sWUFBWSxDQUFDLEtBQUssRUFBRTtRQUN6Qiw2QkFBYSxDQUFDLE1BQU07UUFDcEIscUNBQXFCLENBQUMsVUFBVTtLQUNqQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBZ0IsWUFBWSxDQUFDLEtBQTRCO0lBQ3ZELE9BQU8sWUFBWSxDQUFDLEtBQUssRUFBRTtRQUN6Qiw2QkFBYSxDQUFDLE1BQU07UUFDcEIscUNBQXFCLENBQUMsVUFBVTtLQUNqQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBZ0IsbUJBQW1CLENBQUMsS0FBNEI7SUFDOUQsT0FBTyxZQUFZLENBQUMsS0FBSyxFQUFFLG9DQUF3QixDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVELFNBQWdCLFlBQVksQ0FBQyxLQUE0QjtJQUN2RCxPQUFPLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyw2QkFBYSxDQUFDLENBQUMsQ0FBQztBQUMzRCxDQUFDO0FBRUQsU0FBZ0IsVUFBVSxDQUFDLEtBQTRCO0lBQ3JELE9BQU8sWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLHFDQUFxQixDQUFDLENBQUMsQ0FBQztBQUNuRSxDQUFDO0FBRUQsU0FBZ0IsWUFBWSxDQUMxQixLQUE0QixFQUM1QixHQUF1QjtJQUV2QixPQUFPLENBQ0wsS0FBMkIsRUFDM0IsS0FBdUIsRUFDdkIsRUFBWSxFQUNaLEdBQUcsSUFBeUIsRUFDNUIsRUFBRTtRQUNGLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtZQUMzQixNQUFNLElBQUksNkJBQWEsQ0FDckIsbURBQW1ELENBQ3BELENBQUM7UUFDSixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsNkNBQXFCLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUN2RCxJQUFJLEVBQ0osWUFBWSxDQUNiLENBQUM7UUFDRixHQUFHLENBQUMsS0FBSyxDQUNQLGFBQWEsS0FBSyxhQUFhLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSw0QkFBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUMxRixDQUFDO1FBQ0YsT0FBTyxDQUNMLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUTtZQUN4QixDQUFDLENBQUMsS0FBSyxLQUFLLDRCQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUk7WUFDdEUsQ0FBQyxDQUFDLHFCQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLHFCQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RELEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQ3BCLENBQUM7SUFDSixDQUFDLENBQUM7QUFDSixDQUFDO0FBSVksUUFBQSx3QkFBd0IsR0FBRztJQUN0QyxZQUFZO0lBQ1osWUFBWTtJQUNaLFlBQVk7SUFDWixtQkFBbUI7SUFDbkIsWUFBWTtJQUNaLFVBQVU7Q0FDWCxDQUFDO0FBRUYsU0FBZ0IsVUFBVSxDQUN4QixJQUFhO0lBRWIsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsZ0NBQXdCLENBQUMsQ0FBQztJQUM1RCxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7UUFDOUMsT0FBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFtQixDQUFDO0lBQzlELENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxPQUFjLENBQUM7QUFDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdG9yLCBNZXRhZGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHtcbiAgQnVsa0NydWRPcGVyYXRpb25LZXlzLFxuICBJbnRlcm5hbEVycm9yLFxuICBPcGVyYXRpb25LZXlzLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IEFsbE9wZXJhdGlvbktleXMsIEV2ZW50SWRzLCBPYnNlcnZlckZpbHRlciB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBNb2RlbCwgTW9kZWxDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7XG4gIENvbnRleHR1YWxBcmdzLFxuICBDb250ZXh0dWFsTG9nZ2VkQ2xhc3MsXG59IGZyb20gXCIuLi91dGlscy9Db250ZXh0dWFsTG9nZ2VkQ2xhc3NcIjtcbmltcG9ydCB7IFRyYW5zYWN0aW9uT3BlcmF0aW9uS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHR5cGUgeyBSZXBvIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvUmVwb3NpdG9yeVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gb25seU9uQ3JlYXRlKGNsYXp6OiBNb2RlbENvbnN0cnVjdG9yPGFueT4pIHtcbiAgcmV0dXJuIG9ubHlPbkZpbHRlcihjbGF6eiwgW1xuICAgIE9wZXJhdGlvbktleXMuQ1JFQVRFLFxuICAgIEJ1bGtDcnVkT3BlcmF0aW9uS2V5cy5DUkVBVEVfQUxMLFxuICBdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9ubHlPblVwZGF0ZShjbGF6ejogTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+KSB7XG4gIHJldHVybiBvbmx5T25GaWx0ZXIoY2xhenosIFtcbiAgICBPcGVyYXRpb25LZXlzLlVQREFURSxcbiAgICBCdWxrQ3J1ZE9wZXJhdGlvbktleXMuVVBEQVRFX0FMTCxcbiAgXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvbmx5T25EZWxldGUoY2xheno6IE1vZGVsQ29uc3RydWN0b3I8YW55Pikge1xuICByZXR1cm4gb25seU9uRmlsdGVyKGNsYXp6LCBbXG4gICAgT3BlcmF0aW9uS2V5cy5ERUxFVEUsXG4gICAgQnVsa0NydWRPcGVyYXRpb25LZXlzLkRFTEVURV9BTEwsXG4gIF0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb25seU9uVHJhbnNhY3Rpb25hbChjbGF6ejogTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+KSB7XG4gIHJldHVybiBvbmx5T25GaWx0ZXIoY2xhenosIFRyYW5zYWN0aW9uT3BlcmF0aW9uS2V5cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvbmx5T25TaW5nbGUoY2xheno6IE1vZGVsQ29uc3RydWN0b3I8YW55Pikge1xuICByZXR1cm4gb25seU9uRmlsdGVyKGNsYXp6LCBPYmplY3QudmFsdWVzKE9wZXJhdGlvbktleXMpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9ubHlPbkJ1bGsoY2xheno6IE1vZGVsQ29uc3RydWN0b3I8YW55Pikge1xuICByZXR1cm4gb25seU9uRmlsdGVyKGNsYXp6LCBPYmplY3QudmFsdWVzKEJ1bGtDcnVkT3BlcmF0aW9uS2V5cykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb25seU9uRmlsdGVyKFxuICBjbGF6ejogTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+LFxuICBvcHM6IEFsbE9wZXJhdGlvbktleXNbXVxuKTogT2JzZXJ2ZXJGaWx0ZXIge1xuICByZXR1cm4gKFxuICAgIHRhYmxlOiBDb25zdHJ1Y3RvciB8IHN0cmluZyxcbiAgICBldmVudDogQWxsT3BlcmF0aW9uS2V5cyxcbiAgICBpZDogRXZlbnRJZHMsXG4gICAgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8YW55PlxuICApID0+IHtcbiAgICBpZiAodHlwZW9mIGNsYXp6ID09PSBcInN0cmluZ1wiKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIGBjbGF6eiBjYW5ub3QgYmUgc3RyaW5nLiBUaGlzIHNob3VsZCBiZSBpbXBvc3NpYmxlYFxuICAgICAgKTtcbiAgICBjb25zdCB7IGxvZyB9ID0gQ29udGV4dHVhbExvZ2dlZENsYXNzLnByb3RvdHlwZVtcImxvZ0N0eFwiXShcbiAgICAgIGFyZ3MsXG4gICAgICBvbmx5T25GaWx0ZXJcbiAgICApO1xuICAgIGxvZy5zaWxseShcbiAgICAgIGBmaWx0ZXJpbmcgJHtldmVudH0gZXZlbnQgZm9yJHt0YWJsZSA/IGAgJHtNb2RlbC50YWJsZU5hbWUodGFibGUpIHx8IHRhYmxlfWAgOiBgYH0gJHtpZH1gXG4gICAgKTtcbiAgICByZXR1cm4gKFxuICAgICAgKHR5cGVvZiB0YWJsZSA9PT0gXCJzdHJpbmdcIlxuICAgICAgICA/IHRhYmxlID09PSBNb2RlbC50YWJsZU5hbWUoY2xhenopIHx8IHRhYmxlID09PSBjbGF6ei5jb25zdHJ1Y3Rvci5uYW1lXG4gICAgICAgIDogTWV0YWRhdGEuY29uc3RyKGNsYXp6KSA9PT0gTWV0YWRhdGEuY29uc3RyKHRhYmxlKSkgJiZcbiAgICAgIG9wcy5pbmNsdWRlcyhldmVudClcbiAgICApO1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBBdmFpbGFibGVGaWx0ZXJzID0gdHlwZW9mIERlZmF1bHRSZXBvc2l0b3J5RmlsdGVycztcblxuZXhwb3J0IGNvbnN0IERlZmF1bHRSZXBvc2l0b3J5RmlsdGVycyA9IHtcbiAgb25seU9uQ3JlYXRlLFxuICBvbmx5T25VcGRhdGUsXG4gIG9ubHlPbkRlbGV0ZSxcbiAgb25seU9uVHJhbnNhY3Rpb25hbCxcbiAgb25seU9uU2luZ2xlLFxuICBvbmx5T25CdWxrLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbHRlcnM8TSBleHRlbmRzIE1vZGVsPihcbiAgcmVwbzogUmVwbzxNPlxuKTogUmVjb3JkPGtleW9mIHR5cGVvZiBEZWZhdWx0UmVwb3NpdG9yeUZpbHRlcnMsIE9ic2VydmVyRmlsdGVyPiB7XG4gIGNvbnN0IGZpbHRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCBEZWZhdWx0UmVwb3NpdG9yeUZpbHRlcnMpO1xuICBPYmplY3QuZW50cmllcyhmaWx0ZXJzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAoZmlsdGVycyBhcyBhbnkpW2tleV0gPSB2YWx1ZShyZXBvLmNsYXNzKSBhcyBPYnNlcnZlckZpbHRlcjtcbiAgfSk7XG4gIHJldHVybiBmaWx0ZXJzIGFzIGFueTtcbn1cbiJdfQ==
@@ -33,4 +33,4 @@ class Serial {
33
33
  }
34
34
  }
35
35
  exports.Serial = Serial;
36
- //# sourceMappingURL=generators.js.map
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wZXJzaXN0ZW5jZS9nZW5lcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLE1BQWEsSUFBSTtJQUdmLDZEQUE2RDtJQUM3RCxRQUFRLENBQUMsSUFBYTtRQUNwQixPQUFPLHNDQUFzQyxDQUFDLE9BQU8sQ0FDbkQsT0FBTyxFQUNQLFVBQVUsQ0FBQztZQUNULE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFDaEMsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQ3JDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLEtBQUssUUFBUTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7Q0FDRjtBQW5CRCxvQkFtQkM7QUFFRCxNQUFhLE1BQU07SUFBbkI7UUFHVSxVQUFLLEdBQUcsRUFBRSxDQUFDO0lBYXJCLENBQUM7SUFYQyxRQUFRLENBQUMsSUFBYTtRQUNwQixJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQXNCLENBQUM7UUFDekUsT0FBTyxDQUFFLElBQTBCLEdBQUcsQ0FBQyxDQUFDO2FBQ3JDLFFBQVEsRUFBRTthQUNWLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxNQUFNLEtBQUssUUFBUTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVM7WUFBRSxNQUFNLENBQUMsU0FBUyxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7UUFDdkQsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7Q0FDRjtBQWhCRCx3QkFnQkMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRvcjxPVVQgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgPSBzdHJpbmc+IHtcbiAgZ2VuZXJhdGUocHJldj86IE9VVCk6IE9VVCB8IFByb21pc2U8T1VUPjtcbn1cblxuZXhwb3J0IGNsYXNzIFVVSUQgaW1wbGVtZW50cyBHZW5lcmF0b3Ige1xuICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IFVVSUQ7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBnZW5lcmF0ZShwcmV2Pzogc3RyaW5nKTogc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gXCJ4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHhcIi5yZXBsYWNlKFxuICAgICAgL1t4eV0vZyxcbiAgICAgIGZ1bmN0aW9uIChjKSB7XG4gICAgICAgIGNvbnN0IHIgPSAoTWF0aC5yYW5kb20oKSAqIDE2KSB8IDAsXG4gICAgICAgICAgdiA9IGMgPT0gXCJ4XCIgPyByIDogKHIgJiAweDMpIHwgMHg4O1xuICAgICAgICByZXR1cm4gdi50b1N0cmluZygxNik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaW5zdGFuY2UoKTogVVVJRCB7XG4gICAgaWYgKCFVVUlELl9pbnN0YW5jZSkgVVVJRC5faW5zdGFuY2UgPSBuZXcgVVVJRCgpO1xuICAgIHJldHVybiBVVUlELl9pbnN0YW5jZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2VyaWFsIGltcGxlbWVudHMgR2VuZXJhdG9yIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBTZXJpYWw7XG5cbiAgcHJpdmF0ZSBjb3VudCA9IDE0O1xuXG4gIGdlbmVyYXRlKHByZXY/OiBzdHJpbmcpOiBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz4ge1xuICAgIHByZXYgPSAoKHByZXYgPyBwYXJzZUludChwcmV2IGFzIHN0cmluZykgOiAwKSB8fCAwKSBhcyB1bmtub3duIGFzIHN0cmluZztcbiAgICByZXR1cm4gKChwcmV2IGFzIHVua25vd24gYXMgbnVtYmVyKSArIDEpXG4gICAgICAudG9TdHJpbmcoKVxuICAgICAgLnBhZFN0YXJ0KHRoaXMuY291bnQsIFwiMFwiKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaW5zdGFuY2UoKTogU2VyaWFsIHtcbiAgICBpZiAoIVNlcmlhbC5faW5zdGFuY2UpIFNlcmlhbC5faW5zdGFuY2UgPSBuZXcgU2VyaWFsKCk7XG4gICAgcmV0dXJuIFNlcmlhbC5faW5zdGFuY2U7XG4gIH1cbn1cbiJdfQ==
@@ -33,4 +33,4 @@ __exportStar(require("./Sequence.cjs"), exports);
33
33
  __exportStar(require("./types.cjs"), exports);
34
34
  __exportStar(require("./transactions.cjs"), exports);
35
35
  __exportStar(require("./Adapter.cjs"), exports);
36
- //# sourceMappingURL=index.js.map
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGVyc2lzdGVuY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7O0dBSUc7QUFDSCwyQkFBMkI7QUFDM0IsaURBQTJCO0FBQzNCLGtEQUE0QjtBQUM1QixnREFBMEI7QUFDMUIsb0RBQThCO0FBQzlCLG1EQUE2QjtBQUM3QiwrQ0FBeUI7QUFDekIsbURBQTZCO0FBQzdCLHNEQUFnQztBQUNoQyx3REFBa0M7QUFDbEMsaURBQTJCO0FBQzNCLDhDQUF3QjtBQUN4QixxREFBK0I7QUFDL0IsZ0RBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZGVzY3JpcHRpb24gRXhwb3J0cyBmb3IgdGhlIHBlcnNpc3RlbmNlIG1vZHVsZS5cbiAqIEBzdW1tYXJ5IFRoaXMgZmlsZSBleHBvcnRzIGFsbCB0aGUgbmVjZXNzYXJ5IGNvbXBvbmVudHMgZm9yIHRoZSBwZXJzaXN0ZW5jZSBmdW5jdGlvbmFsaXR5LCBpbmNsdWRpbmcgRGlzcGF0Y2gsIGNvbnN0YW50cywgYW5kIG1vcmUuXG4gKiBAbW9kdWxlIGNvcmUvcGVyc2lzdGVuY2VcbiAqL1xuLy8gcHVycG9zZWx5IGluIGZpcnN0IHBsYWNlXG5leHBvcnQgKiBmcm9tIFwiLi9EaXNwYXRjaFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9Db250ZXh0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9Db250ZXh0TG9ja1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXJyb3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9nZW5lcmF0b3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ldmVudC1maWx0ZXJzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9PYnNlcnZlckhhbmRsZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1NlcXVlbmNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHJhbnNhY3Rpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9BZGFwdGVyXCI7XG4iXX0=
@@ -68,4 +68,4 @@ decoration_1.Decoration.for(transactional_decorators_1.TransactionalKeys.TRANSAC
68
68
  decorator: innerTransactional,
69
69
  })
70
70
  .apply();
71
- //# sourceMappingURL=transactions.js.map
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BlcnNpc3RlbmNlL3RyYW5zYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVFBLHNEQVVDO0FBRUQsd0NBRUM7QUF0QkQsMkRBQXdEO0FBQ3hELHFEQUFvRTtBQUNwRSxpRkFBdUU7QUFDdkUsaUVBQXdEO0FBQ3hELCtEQUFzRDtBQUN0RCwyQ0FBaUQ7QUFDakQsbURBQXlEO0FBRXpELFNBQWdCLHFCQUFxQixDQUFDLEdBQVEsRUFBRSxHQUFHLElBQVc7SUFDNUQsSUFBSSxPQUFnRCxDQUFDO0lBQ3JELElBQUksR0FBRyxZQUFZLDJCQUFZO1FBQzdCLE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQXNDLENBQUM7SUFDNUQsSUFBSSxHQUFHLFlBQVksdUJBQVU7UUFDM0IsT0FBTyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQWdDLENBQUM7SUFDMUQsSUFBSSxHQUFHLFlBQVksaUJBQU87UUFBRSxPQUFPLEdBQUcsR0FBRyxDQUFDO0lBQzFDLElBQUksQ0FBQyxPQUFPO1FBQ1YsTUFBTSxJQUFJLDZCQUFhLENBQUMsK0NBQStDLENBQUMsQ0FBQztJQUMzRSxPQUFPLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBRUQsU0FBZ0IsY0FBYyxDQUFDLEdBQVEsRUFBRSxHQUFHLElBQVc7SUFDckQsT0FBTyxJQUFJLHlCQUFXLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxHQUFHLElBQVc7SUFDeEMsT0FBTyxVQUFVLE1BQVcsRUFBRSxXQUFpQixFQUFFLFVBQWdCO1FBQy9ELElBQUksQ0FBQyxVQUFVO1lBQ2IsTUFBTSxJQUFJLDZCQUFhLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUNwRSxJQUFBLG1CQUFNLEdBQUUsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLHFCQUFRLENBQUMsR0FBRyxDQUNWLE1BQU0sQ0FBQyxXQUFXLEVBQ2xCLHFCQUFRLENBQUMsR0FBRyxDQUFDLDRDQUFpQixDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsRUFDMUQ7WUFDRSxJQUFJLEVBQUUsSUFBSTtTQUNYLENBQ0YsQ0FBQztRQUNGLFVBQVUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRTtZQUM3QyxLQUFLLENBQUMsS0FBSyxDQUFJLEdBQVEsRUFBRSxPQUFZLEVBQUUsUUFBZTtnQkFDcEQsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUNuQixNQUFNLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FDbEQsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ1gsTUFBTSxJQUFJLEdBQ1IsR0FBRyxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDakMsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3JCLElBQUksT0FBWSxDQUFDO2dCQUNqQixJQUFJLENBQUM7b0JBQ0gsT0FBTyxHQUFHLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3RELENBQUM7Z0JBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztvQkFDcEIsSUFBSSxDQUFDO3dCQUNILE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDekIsQ0FBQztvQkFBQyxPQUFPLENBQVUsRUFBRSxDQUFDO3dCQUNwQixHQUFHLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNqRCxDQUFDO29CQUNELE1BQU0sQ0FBQyxDQUFDO2dCQUNWLENBQUM7Z0JBRUQsSUFBSSxDQUFDO29CQUNILE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN2QixDQUFDO2dCQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7b0JBQ3BCLE1BQU0sSUFBSSw2QkFBYSxDQUFDLGtDQUFrQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRSxDQUFDO2dCQUVELE9BQU8sT0FBTyxDQUFDO1lBQ2pCLENBQUM7U0FDRixDQUFDLENBQUM7UUFFSCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsdUJBQVUsQ0FBQyxHQUFHLENBQUMsNENBQWlCLENBQUMsYUFBYSxDQUFDO0tBQzVDLE1BQU0sQ0FBQztJQUNOLFNBQVMsRUFBRSxrQkFBa0I7Q0FDdkIsQ0FBQztLQUNSLEtBQUssRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgRGVjb3JhdGlvbiwgTWV0YWRhdGEsIG1ldGhvZCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25hbEtleXMgfSBmcm9tIFwiQGRlY2FmLXRzL3RyYW5zYWN0aW9uYWwtZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgTW9kZWxTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL01vZGVsU2VydmljZVwiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L1JlcG9zaXRvcnlcIjtcbmltcG9ydCB7IEFkYXB0ZXIgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2UvQWRhcHRlclwiO1xuaW1wb3J0IHsgQ29udGV4dExvY2sgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2UvQ29udGV4dExvY2tcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFkYXB0ZXJUcmFuc2FjdGlvbihvYmo6IGFueSwgLi4uYXJnczogYW55W10pIHtcbiAgbGV0IGFkYXB0ZXI6IEFkYXB0ZXI8YW55LCBhbnksIGFueSwgYW55PiB8IHVuZGVmaW5lZDtcbiAgaWYgKG9iaiBpbnN0YW5jZW9mIE1vZGVsU2VydmljZSlcbiAgICBhZGFwdGVyID0gb2JqLnJlcG8uYWRhcHRlciBhcyBBZGFwdGVyPGFueSwgYW55LCBhbnksIGFueT47XG4gIGlmIChvYmogaW5zdGFuY2VvZiBSZXBvc2l0b3J5KVxuICAgIGFkYXB0ZXIgPSBvYmpbXCJhZGFwdGVyXCJdIGFzIEFkYXB0ZXI8YW55LCBhbnksIGFueSwgYW55PjtcbiAgaWYgKG9iaiBpbnN0YW5jZW9mIEFkYXB0ZXIpIGFkYXB0ZXIgPSBvYmo7XG4gIGlmICghYWRhcHRlcilcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgQ291bGQgbm90IGZpbmQgYWRhcHRlciB0byBleHRyYWN0IHRyYW5zYWN0aW9uYCk7XG4gIHJldHVybiBhZGFwdGVyLnRyYW5zYWN0aW9uTG9jayguLi5hcmdzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRleHRMb2NrKG9iajogYW55LCAuLi5hcmdzOiBhbnlbXSkge1xuICByZXR1cm4gbmV3IENvbnRleHRMb2NrKGdldEFkYXB0ZXJUcmFuc2FjdGlvbihvYmosIC4uLmFyZ3MpKTtcbn1cblxuZnVuY3Rpb24gaW5uZXJUcmFuc2FjdGlvbmFsKC4uLmRhdGE6IGFueVtdKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5PzogYW55LCBkZXNjcmlwdG9yPzogYW55KSB7XG4gICAgaWYgKCFkZXNjcmlwdG9yKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJUaGlzIGRlY29yYXRvciBvbmx5IGFwcGxpZXMgdG8gbWV0aG9kc1wiKTtcbiAgICBtZXRob2QoKSh0YXJnZXQsIHByb3BlcnR5S2V5LCBkZXNjcmlwdG9yKTtcbiAgICBNZXRhZGF0YS5zZXQoXG4gICAgICB0YXJnZXQuY29uc3RydWN0b3IsXG4gICAgICBNZXRhZGF0YS5rZXkoVHJhbnNhY3Rpb25hbEtleXMuVFJBTlNBQ1RJT05BTCwgcHJvcGVydHlLZXkpLFxuICAgICAge1xuICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgfVxuICAgICk7XG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IG5ldyBQcm94eShkZXNjcmlwdG9yLnZhbHVlLCB7XG4gICAgICBhc3luYyBhcHBseTxSPihvYmo6IGFueSwgdGhpc0FyZzogYW55LCBhcmdBcnJheTogYW55W10pOiBQcm9taXNlPFI+IHtcbiAgICAgICAgY29uc3QgeyBsb2csIGN0eCB9ID0gKFxuICAgICAgICAgIGF3YWl0IHRoaXNBcmdbXCJsb2dDdHhcIl0oYXJnQXJyYXksIG9iai5uYW1lLCB0cnVlKVxuICAgICAgICApLmZvcihvYmopO1xuICAgICAgICBjb25zdCBsb2NrID1cbiAgICAgICAgICBjdHguZ2V0T3JVbmRlZmluZWQoXCJ0cmFuc2FjdGlvbkxvY2tcIikgfHwgZ2V0Q29udGV4dExvY2sodGhpc0FyZyk7XG4gICAgICAgIGN0eC5wdXQoXCJ0cmFuc2FjdGlvbkxvY2tcIiwgbG9jayk7XG4gICAgICAgIGF3YWl0IGxvY2suYWNxdWlyZSgpO1xuICAgICAgICBsZXQgcmVzdWx0czogYW55O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlc3VsdHMgPSBhd2FpdCBvYmouY2FsbCh0aGlzQXJnLCAuLi5hcmdBcnJheSwgY3R4KTtcbiAgICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBsb2NrLnJvbGxiYWNrKGUpO1xuICAgICAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgICAgIGxvZy5lcnJvcihgRmFpbGVkIHRvIHJvbGxiYWNrIHRyYW5zYWN0aW9uYCwgZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IGxvY2sucmVsZWFzZSgpO1xuICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYEZhaWxlZCB0byByZWxlYXNlIHRyYW5zYWN0aW9uOiAke2V9YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfTtcbn1cblxuRGVjb3JhdGlvbi5mb3IoVHJhbnNhY3Rpb25hbEtleXMuVFJBTlNBQ1RJT05BTClcbiAgLmRlZmluZSh7XG4gICAgZGVjb3JhdG9yOiBpbm5lclRyYW5zYWN0aW9uYWwsXG4gIH0gYXMgYW55KVxuICAuYXBwbHkoKTtcbiJdfQ==
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGVyc2lzdGVuY2UvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJ1bGtDcnVkT3BlcmF0aW9uS2V5cyxcbiAgTG9nZ2VyT2ZGbGFncyxcbiAgT3BlcmF0aW9uS2V5cyxcbiAgUmVwb3NpdG9yeUZsYWdzLFxuICBDb250ZXh0RmxhZ3MgYXMgQ3R4RmxhZ3MsXG59IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgQWRhcHRlciB9IGZyb20gXCIuL0FkYXB0ZXJcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIHR5cGUgT2JzZXJ2ZXIgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9pbmRleFwiO1xuaW1wb3J0IHsgTG9nZ2VyIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQge1xuICBDb250ZXh0dWFsQXJncyxcbiAgQ29udGV4dHVhbExvZ2dlZENsYXNzLFxufSBmcm9tIFwiLi4vdXRpbHMvQ29udGV4dHVhbExvZ2dlZENsYXNzXCI7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSBcIi4vQ29udGV4dFwiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L1JlcG9zaXRvcnlcIjtcbmltcG9ydCB7IFBlcnNpc3RlbmNlS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzIH0gZnJvbSBcIi4uL3F1ZXJ5L2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgQ29udGV4dExvY2sgfSBmcm9tIFwiLi9Db250ZXh0TG9ja1wiO1xuXG5leHBvcnQgdHlwZSBGbGFnc09mQ29udGV4dDxDIGV4dGVuZHMgQ29udGV4dDxhbnk+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=
@@ -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;
@@ -385,4 +385,4 @@ __decorate([
385
385
  (0, decorator_validation_1.required)(),
386
386
  __metadata("design:type", Object)
387
387
  ], Condition.prototype, "comparison", void 0);
388
- //# sourceMappingURL=Condition.js.map
388
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZGl0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXJ5L0NvbmRpdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFDQSx5RUFNd0M7QUFDeEMsK0NBQXNEO0FBQ3RELHlDQUFzQztBQUl0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJHO0FBQ0gsTUFBYSxTQUFnQyxTQUFRLDRCQUFvQjtJQWN2RSxZQUNFLEtBQXVELEVBQ3ZELFFBQW1DLEVBQ25DLFVBQWdCO1FBRWhCLEtBQUssRUFBRSxDQUFDO1FBakJBLFVBQUssR0FBMkIsU0FBUyxDQUFDO1FBRTFDLGFBQVEsR0FBOEIsU0FBUyxDQUFDO1FBRWhELGVBQVUsR0FBUyxTQUFTLENBQUM7UUFjckMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzdCLDRCQUFLLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxLQUFZLENBQUMsQ0FBQztRQUN0QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBZ0MsQ0FBQztZQUM5QyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztZQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsR0FBRyxDQUFDLFNBQXVCO1FBQ3pCLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsRUFBRSxDQUFDLFNBQXVCO1FBQ3hCLE9BQU8sU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsR0FBRyxDQUFDLEdBQVE7UUFDVixPQUFPLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxv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VCxJQUFBLCtCQUFRLEdBQUU7OzZDQUM0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dHJpYnV0ZU9wdGlvbiwgQ29uZGl0aW9uQnVpbGRlck9wdGlvbiB9IGZyb20gXCIuL29wdGlvbnNcIjtcbmltcG9ydCB7XG4gIENvbmRpdGlvbmFsQXN5bmMsXG4gIE1vZGVsLFxuICBNb2RlbEFyZyxcbiAgTW9kZWxFcnJvckRlZmluaXRpb24sXG4gIHJlcXVpcmVkLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBHcm91cE9wZXJhdG9yLCBPcGVyYXRvciB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgUXVlcnlFcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuXG50eXBlIEluZmVyQXN5bmM8TT4gPSBNIGV4dGVuZHMgTW9kZWw8aW5mZXIgQT4gPyBBIDogZmFsc2U7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgYSBsb2dpY2FsIGNvbmRpdGlvbiBmb3IgZGF0YWJhc2UgcXVlcmllc1xuICogQHN1bW1hcnkgQSBjbGFzcyB0aGF0IGVuY2Fwc3VsYXRlcyBxdWVyeSBjb25kaXRpb25zIHdpdGggc3VwcG9ydCBmb3IgY29tcGxleCBsb2dpY2FsIG9wZXJhdGlvbnMuXG4gKiBUaGlzIGNsYXNzIGFsbG93cyBmb3IgYnVpbGRpbmcgYW5kIGNvbWJpbmluZyBxdWVyeSBjb25kaXRpb25zIHVzaW5nIGxvZ2ljYWwgb3BlcmF0b3JzIChBTkQsIE9SLCBOT1QpXG4gKiBhbmQgY29tcGFyaXNvbiBvcGVyYXRvcnMgKGVxdWFscywgbm90IGVxdWFscywgZ3JlYXRlciB0aGFuLCBldGMuKS5cbiAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGUgdGhpcyBjb25kaXRpb24gb3BlcmF0ZXMgb25cbiAqIEBwYXJhbSB7c3RyaW5nIHwgQ29uZGl0aW9uPE0+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==
@@ -445,4 +445,4 @@ class MethodQueryBuilder extends logging_1.LoggedClass {
445
445
  }
446
446
  }
447
447
  exports.MethodQueryBuilder = MethodQueryBuilder;
448
- //# sourceMappingURL=MethodQueryBuilder.js.map
448
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWV0aG9kUXVlcnlCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXJ5L01ldGhvZFF1ZXJ5QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSx1Q0FNaUI7QUFDakIsdUNBQXVDO0FBQ3ZDLDJEQUFrRDtBQUNsRCwrQ0FBaUU7QUFDakUsNkRBQXlEO0FBQ3pELHlDQUFzQztBQUV0QyxNQUFNLFVBQVUsR0FBRyxDQUFDLEdBQVcsRUFBVSxFQUFFLENBQ3pDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQU83Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9ERztBQUNILE1BQWEsa0JBQW1CLFNBQVEscUJBQVc7SUFHdkMsTUFBTSxLQUFLLEdBQUc7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxpQkFBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7T0FHRzthQUNxQixjQUFTLEdBQWdDO1FBQy9ELENBQUMsbUJBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNO1FBQzdCLENBQUMsbUJBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNO1FBQzdCLENBQUMsbUJBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxPQUFPO1FBQy9CLENBQUMsbUJBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLO1FBQzNCLENBQUMsbUJBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLO1FBQzNCLENBQUMsbUJBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLO1FBQzNCLENBQUMsbUJB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LEdBQVUsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFNUQsSUFBSSxPQUFnRCxDQUFDO1FBQ3JELElBQUksS0FBeUIsQ0FBQztRQUM5QixJQUFJLE1BQTBCLENBQUM7UUFFL0IsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksdUJBQU87WUFBRSxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFekQsSUFBSSxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzFCLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkQsT0FBTyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUVELElBQUksU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUTtZQUMzRCxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXZCLElBQUksU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUTtZQUMzRCxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXhCLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ3BDLENBQUM7O0FBbGRILGdEQW1kQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmRpdGlvbiB9IGZyb20gXCIuLi9xdWVyeS9Db25kaXRpb25cIjtcbmltcG9ydCB7IE9yZGVyQnlTZWxlY3RvciB9IGZyb20gXCIuLi9xdWVyeS9zZWxlY3RvcnNcIjtcbmltcG9ydCB7XG4gIEZpbHRlckRlc2NyaXB0b3IsXG4gIE9yZGVyTGltaXRPZmZzZXRFeHRyYWN0LFxuICBRdWVyeUFjdGlvbixcbiAgUXVlcnlBc3Npc3QsXG4gIFF1ZXJ5Q2xhdXNlLFxufSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgT3BlcmF0b3JzTWFwIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IExvZ2dlZENsYXNzLCBMb2dnZXIsIExvZ2dpbmcgfSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcbmltcG9ydCB7IE9yZGVyRGlyZWN0aW9uIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBRdWVyeUVycm9yIH0gZnJvbSBcIi4vZXJyb3JzXCI7XG5cbmNvbnN0IGxvd2VyRmlyc3QgPSAoc3RyOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgc3RyLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgc3RyLnNsaWNlKDEpO1xuXG5leHBvcnQgdHlwZSBRdWVyeUFjdGlvblByZWZpeCA9IHtcbiAgYWN0aW9uOiBRdWVyeUFjdGlvbjtcbiAgcHJlZml4OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogVXRpbGl0eSBjbGFzcyB0byBidWlsZCBxdWVyeSBvYmplY3RzIGZyb20gcmVwb3NpdG9yeSBtZXRob2QgbmFtZXMuXG4gKlxuICogQHN1bW1hcnlcbiAqIFRoZSBgTWV0aG9kUXVlcnlCdWlsZGVyYCBjbGFzcyBwYXJzZXMgbWV0aG9kIG5hbWVzIHRoYXQgZm9sbG93IGEgc3BlY2lmaWMgbmFtaW5nIGNvbnZlbnRpb25cbiAqIChlLmcuLCBgZmluZEJ5TmFtZUFuZEFnZU9yZGVyQnlDb3VudHJ5QXNjYCkgYW5kIGNvbnZlcnRzIHRoZW0gaW50byBzdHJ1Y3R1cmVkIHF1ZXJ5IG9iamVjdHNcbiAqIChgUXVlcnlBc3Npc3RgKS4gSXQgZXh0cmFjdHMgY2xhdXNlcyBzdWNoIGFzIGBzZWxlY3RgLCBgd2hlcmVgLCBgZ3JvdXBCeWAsIGBvcmRlckJ5YCwgYGxpbWl0YCxcbiAqIGFuZCBgb2Zmc2V0YCwgZW5zdXJpbmcgdGhhdCBkZXZlbG9wZXJzIGNhbiBkZWNsYXJlIHJlcG9zaXRvcnkgcXVlcmllcyB1c2luZyBleHByZXNzaXZlIG1ldGhvZCBuYW1lcy5cbiAqXG4gKiBAcGFyYW0gbWV0aG9kTmFtZSB7c3RyaW5nfSAtIFRoZSByZXBvc2l0b3J5IG1ldGhvZCBuYW1lIHRvIHBhcnNlIGFuZCBjb252ZXJ0IGludG8gYSBxdWVyeS5cbiAqIEBwYXJhbSB2YWx1ZXMge2FueVtdfSAtIFRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBtZXRob2QgcGFyYW1ldGVycyB1c2VkIGZvciBxdWVyeSBjb25kaXRpb25zLlxuICpcbiAqIEByZXR1cm4ge1F1ZXJ5QXNzaXN0fSBBIHN0cnVjdHVyZWQgcXVlcnkgb2JqZWN0IGRlc2NyaWJpbmcgdGhlIHBhcnNlZCBhY3Rpb24sIHNlbGVjdCwgd2hlcmUsXG4gKiBncm91cEJ5LCBvcmRlckJ5LCBsaW1pdCwgYW5kIG9mZnNldCBjbGF1c2VzLlxuICpcbiAqIEBjbGFzc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogY29uc3QgcXVlcnkgPSBNZXRob2RRdWVyeUJ1aWxkZXIuYnVpbGQoXG4gKiAgIFwiZmluZEJ5TmFtZUFuZEFnZU9yZGVyQnlDb3VudHJ5QXNjXCIsXG4gKiAgIFwiSm9oblwiLFxuICogICAyNSxcbiAqICAgW1tcImNvdW50cnlcIiwgXCJBU0NcIl1dXG4gKiApO1xuICpcbiAqIGNvbnNvbGUubG9nKHF1ZXJ5KTtcbiAqIC8vIHtcbiAqIC8vICAgYWN0aW9uOiBcImZpbmRcIixcbiAqIC8vICAgc2VsZWN0OiB1bmRlZmluZWQsXG4gKiAvLyAgIHdoZXJlOiB7IC4uLiB9LFxuICogLy8gICBncm91cEJ5OiB1bmRlZmluZWQsXG4gKiAvLyAgIG9yZGVyQnk6IFtbXCJjb3VudHJ5XCIsIFwiQVNDXCJdXSxcbiAqIC8vICAgbGltaXQ6IHVuZGVmaW5lZCxcbiAqIC8vICAgb2Zmc2V0OiB1bmRlZmluZWRcbiAqIC8vIH1cbiAqIGBgYFxuICpcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgUmVwbyBhcyBSZXBvc2l0b3J5IE1ldGhvZFxuICogICBwYXJ0aWNpcGFudCBNUUIgYXMgTWV0aG9kUXVlcnlCdWlsZGVyXG4gKiAgIHBhcnRpY2lwYW50IFF1ZXJ5IGFzIFF1ZXJ5QXNzaXN0XG4gKlxuICogICBSZXBvLT4+TVFCOiBidWlsZChtZXRob2ROYW1lLCAuLi52YWx1ZXMpXG4gKiAgIE1RQi0+Pk1RQjogZXh0cmFjdENvcmUobWV0aG9kTmFtZSlcbiAqICAgTVFCLT4+TVFCOiBleHRyYWN0U2VsZWN0KG1ldGhvZE5hbWUpXG4gKiAgIE1RQi0+Pk1RQjogZXh0cmFjdEdyb3VwQnkobWV0aG9kTmFtZSlcbiAqICAgTVFCLT4+TVFCOiBidWlsZFdoZXJlKGNvcmUsIHZhbHVlcylcbiAqICAgTVFCLT4+TVFCOiBleHRyYWN0T3JkZXJMaW1pdE9mZnNldChjb3JlLCB2YWx1ZXMpXG4gKiAgIE1RQi0+PlF1ZXJ5OiByZXR1cm4gc3RydWN0dXJlZCBRdWVyeUFzc2lzdCBvYmplY3RcbiAqL1xuZXhwb3J0IGNsYXNzIE1ldGhvZFF1ZXJ5QnVpbGRlciBleHRlbmRzIExvZ2dlZENsYXNzIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcjogTG9nZ2VyO1xuXG4gIHByb3RlY3RlZCBzdGF0aWMgZ2V0IGxvZygpOiBMb2dnZXIge1xuICAgIGlmICghdGhpcy5fbG9nZ2VyKSB0aGlzLl9sb2dnZXIgPSBMb2dnaW5nLmZvcihNZXRob2RRdWVyeUJ1aWxkZXIubmFtZSk7XG4gICAgcmV0dXJuIHRoaXMuX2xvZ2dlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogTWFwIG9mIHF1ZXJ5IHByZWZpeGVzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgYWN0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IHByZWZpeE1hcDogUmVjb3JkPHN0cmluZywgUXVlcnlBY3Rpb24+ID0ge1xuICAgIFtRdWVyeUNsYXVzZS5GSU5EX0JZXTogXCJmaW5kXCIsXG4gICAgW1F1ZXJ5Q2xhdXNlLlBBR0VfQlldOiBcInBhZ2VcIixcbiAgICBbUXVlcnlDbGF1c2UuQ09VTlRfQlldOiBcImNvdW50XCIsXG4gICAgW1F1ZXJ5Q2xhdXNlLlNVTV9CWV06IFwic3VtXCIsXG4gICAgW1F1ZXJ5Q2xhdXNlLkFWR19CWV06IFwiYXZnXCIsXG4gICAgW1F1ZXJ5Q2xhdXNlLk1JTl9CWV06IFwibWluXCIsXG4gICAgW1F1ZXJ5Q2xhdXNlLk1BWF9CWV06IFwibWF4XCIsXG4gICAgW1F1ZXJ5Q2xhdXNlLkRJU1RJTkNUX0JZXTogXCJkaXN0aW5jdFwiLFxuICAgIFtRdWVyeUNsYXVzZS5HUk9VUF9CWV9QUkVGSVhdOiBcImdyb3VwXCIsXG4gIH07XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEZXRlcm1pbmVzIHRoZSBhY3Rpb24gYW5kIHByZWZpeCBsZW5ndGggZnJvbSBhIG1ldGhvZCBuYW1lLlxuICAgKlxuICAgKiBAcGFyYW0gbWV0aG9kTmFtZSB7c3RyaW5nfSAtIFRoZSByZXBvc2l0b3J5IG1ldGhvZCBuYW1lLlxuICAgKiBAcmV0dXJuIHtRdWVyeUFjdGlvblByZWZpeH0gfCB1bmRlZmluZWR9IFRoZSBhY3Rpb24gYW5kIHByZWZpeCBpZiBmb3VuZC5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGdldEFjdGlvbkZyb21NZXRob2ROYW1lKFxuICAgIG1ldGhvZE5hbWU6IHN0cmluZ1xuICApOiBRdWVyeUFjdGlvblByZWZpeCB8IHVuZGVmaW5lZCB7XG4gICAgZm9yIChjb25zdCBbcHJlZml4LCBhY3Rpb25dIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMucHJlZml4TWFwKSkge1xuICAgICAgaWYgKG1ldGhvZE5hbWUuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgICAgIHJldHVybiB7IGFjdGlvbiwgcHJlZml4IH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEJ1aWxkcyBhIGBRdWVyeUFzc2lzdGAgb2JqZWN0IGJ5IHBhcnNpbmcgYSByZXBvc2l0b3J5IG1ldGhvZCBuYW1lIGFuZCB2YWx1ZXMuXG4gICAqXG4gICAqIEBzdW1tYXJ5XG4gICAqIFRoZSBtZXRob2QgdmFsaWRhdGVzIHRoZSBtZXRob2QgbmFtZSwgZXh0cmFjdHMgY2xhdXNlcyAoY29yZSwgc2VsZWN0LCBncm91cEJ5LCB3aGVyZSxcbiAgICogb3JkZXJCeSwgbGltaXQsIGFuZCBvZmZzZXQpLCBhbmQgYXNzZW1ibGVzIHRoZW0gaW50byBhIHN0cnVjdHVyZWQgcXVlcnkgb2JqZWN0XG4gICAqIHRoYXQgY2FuIGJlIGV4ZWN1dGVkIGFnYWluc3QgYSBkYXRhIHNvdXJjZS5cbiAgICpcbiAgICogQHBhcmFtIG1ldGhvZE5hbWUge3N0cmluZ30gLSBUaGUgcmVwb3NpdG9yeSBtZXRob2QgbmFtZSB0aGF0IGVuY29kZXMgcXVlcnkgaW5mb3JtYXRpb24uXG4gICAqIEBwYXJhbSB2YWx1ZXMge2FueVtdfSAtIFRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBjb25kaXRpb25zIGFuZCBleHRyYSBjbGF1c2VzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtRdWVyeUFzc2lzdH0gQSBzdHJ1Y3R1cmVkIHF1ZXJ5IG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHBhcnNlZCBxdWVyeS5cbiAgICovXG4gIHN0YXRpYyBidWlsZChtZXRob2ROYW1lOiBzdHJpbmcsIC4uLnZhbHVlczogYW55W10pOiBRdWVyeUFzc2lzdCB7XG4gICAgY29uc3QgYWN0aW9uSW5mbyA9IHRoaXMuZ2V0QWN0aW9uRnJvbU1ldGhvZE5hbWUobWV0aG9kTmFtZSk7XG4gICAgaWYgKCFhY3Rpb25JbmZvKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIG1ldGhvZCAke21ldGhvZE5hbWV9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBhY3Rpb24sIHByZWZpeCB9ID0gYWN0aW9uSW5mbztcblxuICAgIC8vIEZvciBhZ2dyZWdhdGlvbiBtZXRob2RzIChjb3VudCwgc3VtLCBhdmcsIG1pbiwgbWF4LCBkaXN0aW5jdCksIGV4dHJhY3QgdGhlIHNlbGVjdG9yIGZpZWxkXG4gICAgbGV0IHNlbGVjdG9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKFxuICAgICAgW1wiY291bnRcIiwgXCJzdW1cIiwgXCJhdmdcIiwgXCJtaW5cIiwgXCJtYXhcIiwgXCJkaXN0aW5jdFwiLCBcImdyb3VwXCJdLmluY2x1ZGVzKFxuICAgICAgICBhY3Rpb25cbiAgICAgIClcbiAgICApIHtcbiAgICAgIHNlbGVjdG9yID0gdGhpcy5leHRyYWN0QWdncmVnYXRpb25TZWxlY3RvcihtZXRob2ROYW1lLCBwcmVmaXgpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvcmUgPSB0aGlzLmV4dHJhY3RDb3JlKG1ldGhvZE5hbWUsIHByZWZpeCk7XG4gICAgY29uc3Qgc2VsZWN0ID0gdGhpcy5leHRyYWN0U2VsZWN0KG1ldGhvZE5hbWUpO1xuICAgIGNvbnN0IGdyb3VwQnkgPSB0aGlzLmV4dHJhY3RHcm91cEJ5KG1ldGhvZE5hbWUpO1xuICAgIGNvbnN0IHdoZXJlID0gdGhpcy5idWlsZFdoZXJlKGNvcmUsIHZhbHVlcyk7XG4gICAgY29uc3QgeyBvcmRlckJ5LCBsaW1pdCwgb2Zmc2V0IH0gPSB0aGlzLmV4dHJhY3RPcmRlckxpbWl0T2Zmc2V0KFxuICAgICAgbWV0aG9kTmFtZSxcbiAgICAgIHZhbHVlcyxcbiAgICAgIGNvcmVcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbixcbiAgICAgIHNlbGVjdCxcbiAgICAgIHNlbGVjdG9yLFxuICAgICAgd2hlcmUsXG4gICAgICBncm91cEJ5LFxuICAgICAgb3JkZXJCeSxcbiAgICAgIGxpbWl0LFxuICAgICAgb2Zmc2V0LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEV4dHJhY3RzIHRoZSBhZ2dyZWdhdGlvbiBzZWxlY3RvciBmaWVsZCBmcm9tIG1ldGhvZCBuYW1lcyBsaWtlIGNvdW50QnlBZ2UsIHN1bUJ5UHJpY2UuXG4gICAqXG4gICAqIEBwYXJhbSBtZXRob2ROYW1lIHtzdHJpbmd9IC0gVGhlIG1ldGhvZCBuYW1lLlxuICAgKiBAcGFyYW0gcHJlZml4IHtzdHJpbmd9IC0gVGhlIHByZWZpeCB0byByZW1vdmUuXG4gICAqIEByZXR1cm4ge3N0cmluZyB8IHVuZGVmaW5lZH0gVGhlIHNlbGVjdG9yIGZpZWxkIG5hbWUuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBleHRyYWN0QWdncmVnYXRpb25TZWxlY3RvcihcbiAgICBtZXRob2ROYW1lOiBzdHJpbmcsXG4gICAgcHJlZml4OiBzdHJpbmdcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBhZnRlclByZWZpeCA9IG1ldGhvZE5hbWUuc3Vic3RyaW5nKHByZWZpeC5sZW5ndGgpO1xuICAgIC8vIEZpbmQgd2hlcmUgdGhlIHNlbGVjdG9yIGVuZHMgKGF0IG5leHQgY2xhdXNlIGtleXdvcmQsIG9wZXJhdG9yLCBvciBlbmQpXG4gICAgLy8gSW5jbHVkZSBUaGVuQnkgZm9yIGdyb3VwQnkgcHJlZml4XG4gICAgY29uc3QgcmVnZXggPSAvKEFuZHxPcnxHcm91cEJ5fE9yZGVyQnl8U2VsZWN0fExpbWl0fE9mZnNldHxUaGVuQnkpLztcbiAgICBjb25zdCBtYXRjaCA9IGFmdGVyUHJlZml4Lm1hdGNoKHJlZ2V4KTtcbiAgICBjb25zdCBzZWxlY3RvclBhcnQgPSBtYXRjaFxuICAgICAgPyBhZnRlclByZWZpeC5zdWJzdHJpbmcoMCwgbWF0Y2guaW5kZXgpXG4gICAgICA6IGFmdGVyUHJlZml4O1xuICAgIHJldHVybiBzZWxlY3RvclBhcnQgPyBsb3dlckZpcnN0KHNlbGVjdG9yUGFydCkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEV4dHJhY3RzIHRoZSBjb3JlIHBhcnQgb2YgdGhlIG1ldGhvZCBuYW1lIGFmdGVyIHRoZSBwcmVmaXggYW5kIGJlZm9yZSBhbnkgc3BlY2lhbCBjbGF1c2VzLlxuICAgKlxuICAgKiBAc3VtbWFyeVxuICAgKiBSZW1vdmVzIHByZWZpeGVzIGFuZCBkZXRlY3RzIGRlbGltaXRlcnMgKGBUaGVuYCwgYE9yZGVyQnlgLCBgR3JvdXBCeWAsIGBMaW1pdGAsIGBPZmZzZXRgKVxuICAgKiB0byBpc29sYXRlIHRoZSBtYWluIGNvbmRpdGlvbmFsIHBhcnQgb2YgdGhlIHF1ZXJ5LlxuICAgKlxuICAgKiBAcGFyYW0gbWV0aG9kTmFtZSB7c3RyaW5nfSAtIFRoZSBtZXRob2QgbmFtZSB0byBwYXJzZS5cbiAgICogQHBhcmFtIHByZWZpeCB7c3RyaW5nfSAtIFRoZSBwcmVmaXggdG8gcmVtb3ZlIChlLmcuLCBcImZpbmRCeVwiLCBcImNvdW50QnlcIikuXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGV4dHJhY3RlZCBjb3JlIHN0cmluZyB1c2VkIGZvciBidWlsZGluZyBjb25kaXRpb25zLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZXh0cmFjdENvcmUoXG4gICAgbWV0aG9kTmFtZTogc3RyaW5nLFxuICAgIHByZWZpeDogc3RyaW5nID0gUXVlcnlDbGF1c2UuRklORF9CWVxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGFmdGVyUHJlZml4ID0gbWV0aG9kTmFtZS5zdWJzdHJpbmcocHJlZml4Lmxlbmd0aCk7XG5cbiAgICAvLyBGb3IgYWdncmVnYXRpb24gbWV0aG9kcyAobm90IGZpbmRCeSBvciBwYWdlQnkpLCB3ZSBuZWVkIHRvIHNraXAgdGhlIHNlbGVjdG9yIGZpZWxkXG4gICAgY29uc3QgaXNBZ2dyZWdhdGlvblByZWZpeCA9XG4gICAgICBwcmVmaXggIT09IFF1ZXJ5Q2xhdXNlLkZJTkRfQlkgJiYgcHJlZml4ICE9PSBRdWVyeUNsYXVzZS5QQUdFX0JZO1xuXG4gICAgaWYgKGlzQWdncmVnYXRpb25QcmVmaXgpIHtcbiAgICAgIC8vIEZvciBhZ2dyZWdhdGlvbiBtZXRob2RzLCB3ZSBuZWVkIHRvIGZpbmQgd2hlcmUgYWN0dWFsIGNvbmRpdGlvbnMgc3RhcnRcbiAgICAgIC8vIENvbmRpdGlvbnMgYXJlIGluZGljYXRlZCBieSBBbmR8T3IgQUZURVIgdGhlIHNlbGVjdG9yIGZpZWxkXG4gICAgICAvLyBGb3IgXCJjb3VudEJ5QWdlQW5kTmFtZUVxdWFsc1wiLCBjb25kaXRpb25zIHN0YXJ0IGF0IFwiQW5kTmFtZUVxdWFsc1wiXG4gICAgICAvLyBGb3IgXCJzdW1CeVByaWNlR3JvdXBCeUNhdGVnb3J5XCIsIHRoZXJlIGFyZSBubyBjb25kaXRpb25zXG5cbiAgICAgIC8vIEZpcnN0LCBpZGVudGlmeSB0aGUgc2VsZWN0b3IgZmllbGQgYm91bmRhcnlcbiAgICAgIC8vIFRoZSBzZWxlY3RvciBlbmRzIGF0OiBBbmQsIE9yLCBHcm91cEJ5LCBPcmRlckJ5LCBUaGVuQnksIFNlbGVjdCwgTGltaXQsIE9mZnNldFxuICAgICAgY29uc3Qgc2VsZWN0b3JFbmRNYXRjaCA9IGFmdGVyUHJlZml4Lm1hdGNoKFxuICAgICAgICAvKEFuZHxPcnxHcm91cEJ5fE9yZGVyQnl8VGhlbkJ5fFNlbGVjdHxMaW1pdHxPZmZzZXQpL1xuICAgICAgKTtcblxuICAgICAgaWYgKCFzZWxlY3RvckVuZE1hdGNoKSB7XG4gICAgICAgIC8vIE5vIGRlbGltaXRlciBmb3VuZCwgZW50aXJlIHN1ZmZpeCBpcyB0aGUgc2VsZWN0b3IsIG5vIGNvbmRpdGlvbnNcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoZSBmaXJzdCBkZWxpbWl0ZXIgaXMgQW5kIG9yIE9yIChpbmRpY2F0aW5nIGEgY29uZGl0aW9uKVxuICAgICAgaWYgKHNlbGVjdG9yRW5kTWF0Y2hbMF0gPT09IFwiQW5kXCIgfHwgc2VsZWN0b3JFbmRNYXRjaFswXSA9PT0gXCJPclwiKSB7XG4gICAgICAgIC8vIEV4dHJhY3QgZXZlcnl0aGluZyBBRlRFUiB0aGUgQW5kL09yIChza2lwIHRoZSBBbmQvT3IgaXRzZWxmIGZvciB0aGUgZmlyc3QgY29uZGl0aW9uKVxuICAgICAgICBjb25zdCBhZnRlckFuZE9yID0gYWZ0ZXJQcmVmaXguc3Vic3RyaW5nKFxuICAgICAgICAgIHNlbGVjdG9yRW5kTWF0Y2guaW5kZXghICsgc2VsZWN0b3JFbmRNYXRjaFswXS5sZW5ndGhcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBOb3cgYXBwbHkgc3RhbmRhcmQgZGVsaW1pdGVyIGV4dHJhY3Rpb25cbiAgICAgICAgY29uc3QgZGVsaW1pdGVyTWF0Y2ggPSBhZnRlckFuZE9yLm1hdGNoKFxuICAgICAgICAgIC8oVGhlbltBLVpdfE9yZGVyQnl8R3JvdXBCeXxMaW1pdHxPZmZzZXR8U2VsZWN0fFRoZW5CeSkvXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBkZWxpbWl0ZXJNYXRjaFxuICAgICAgICAgID8gYWZ0ZXJBbmRPci5zdWJzdHJpbmcoMCwgZGVsaW1pdGVyTWF0Y2guaW5kZXgpXG4gICAgICAgICAgOiBhZnRlckFuZE9yO1xuICAgICAgfVxuXG4gICAgICAvLyBGaXJzdCBkZWxpbWl0ZXIgaXMgbm90IEFuZC9Pciwgc28gdGhlcmUgYXJlIG5vIGNvbmRpdGlvbnNcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIC8vIEZvciBmaW5kQnkgYW5kIHBhZ2VCeSwgZXh0cmFjdCBjb3JlIG5vcm1hbGx5XG4gICAgY29uc3QgcmVnZXggPSAvKFRoZW5bQS1aXXxPcmRlckJ5fEdyb3VwQnl8TGltaXR8T2Zmc2V0fFNlbGVjdCkvO1xuICAgIGNvbnN0IG1hdGNoID0gYWZ0ZXJQcmVmaXgubWF0Y2gocmVnZXgpO1xuICAgIGNvbnN0IGNvcmVQYXJ0ID0gbWF0Y2hcbiAgICAgID8gYWZ0ZXJQcmVmaXguc3Vic3RyaW5nKDAsIG1hdGNoLmluZGV4KVxuICAgICAgOiBhZnRlclByZWZpeDtcblxuICAgIHJldHVybiBjb3JlUGFydDtcbiAgfVxuXG4gIHN0YXRpYyBnZXRGaWVsZHNGcm9tTWV0aG9kTmFtZShtZXRob2ROYW1lOiBzdHJpbmcpOiBBcnJheTxzdHJpbmc+IHtcbiAgICBjb25zdCBhY3Rpb25JbmZvID0gdGhpcy5nZXRBY3Rpb25Gcm9tTWV0aG9kTmFtZShtZXRob2ROYW1lKTtcbiAgICBjb25zdCBwcmVmaXggPSBhY3Rpb25JbmZvPy5wcmVmaXggfHwgUXVlcnlDbGF1c2UuRklORF9CWTtcbiAgICBjb25zdCBjb3JlID0gdGhpcy5leHRyYWN0Q29yZShtZXRob2ROYW1lLCBwcmVmaXgpO1xuICAgIGlmICghY29yZSkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IHBhcnRzID0gY29yZS5zcGxpdCgvT3JkZXJCeXxHcm91cEJ5LylbMF0gfHwgXCJcIjtcbiAgICBjb25zdCBjb25kaXRpb25zID0gcGFydHMuc3BsaXQoL0FuZHxPci8pO1xuICAgIHJldHVybiBjb25kaXRpb25zXG4gICAgICAuZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4ubGVuZ3RoID4gMClcbiAgICAgIC5tYXAoKHRva2VuKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgb3BlcmF0b3IsIGZpZWxkIH0gPSB0aGlzLnBhcnNlRmllbGRBbmRPcGVyYXRvcih0b2tlbik7XG4gICAgICAgIHJldHVybiBmaWVsZCArIChvcGVyYXRvciA/PyBcIlwiKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFeHRyYWN0cyB0aGUgc2VsZWN0IGNsYXVzZSBmcm9tIGEgbWV0aG9kIG5hbWUuXG4gICAqXG4gICAqIEBzdW1tYXJ5XG4gICAqIERldGVjdHMgdGhlIGBTZWxlY3RgIGtleXdvcmQgaW4gdGhlIG1ldGhvZCBuYW1lLCBpc29sYXRlcyB0aGUgZmllbGRzIGZvbGxvd2luZyBpdCxcbiAgICogYW5kIHJldHVybnMgdGhlbSBhcyBhbiBhcnJheSBvZiBsb3dlcmNhc2UtZmlyc3Qgc3RyaW5ncy5cbiAgICpcbiAgICogQHBhcmFtIG1ldGhvZE5hbWUge3N0cmluZ30gLSBUaGUgbWV0aG9kIG5hbWUgdG8gcGFyc2UuXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ1tdIHwgdW5kZWZpbmVkfSBBbiBhcnJheSBvZiBzZWxlY3RlZCBmaWVsZHMgb3IgYHVuZGVmaW5lZGAgaWYgbm8gc2VsZWN0IGNsYXVzZSBleGlzdHMuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBleHRyYWN0U2VsZWN0KG1ldGhvZE5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzZWxlY3RJbmRleCA9IG1ldGhvZE5hbWUuaW5kZXhPZihRdWVyeUNsYXVzZS5TRUxFQ1QpO1xuICAgIGlmIChzZWxlY3RJbmRleCA9PT0gLTEpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBhZnRlclNlbGVjdCA9IG1ldGhvZE5hbWUuc3Vic3RyaW5nKFxuICAgICAgc2VsZWN0SW5kZXggKyBRdWVyeUNsYXVzZS5TRUxFQ1QubGVuZ3RoXG4gICAgKTtcblxuICAgIC8vIFNlYXJjaCBmb3IgbmV4dCBUaGVuLCBHcm91cEJ5LCBPcmRlckJ5Li4uXG4gICAgY29uc3QgbWF0Y2ggPSBhZnRlclNlbGVjdC5tYXRjaCgvKFRoZW5bQS1aXXxPcmRlckJ5fEdyb3VwQnl8TGltaXR8T2Zmc2V0KS8pO1xuXG4gICAgY29uc3Qgc2VsZWN0UGFydCA9IG1hdGNoXG4gICAgICA/IGFmdGVyU2VsZWN0LnN1YnN0cmluZygwLCBtYXRjaC5pbmRleClcbiAgICAgIDogYWZ0ZXJTZWxlY3Q7XG5cbiAgICByZXR1cm4gc2VsZWN0UGFydC5zcGxpdChRdWVyeUNsYXVzZS5BTkQpLm1hcChsb3dlckZpcnN0KS5maWx0ZXIoQm9vbGVhbik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEV4dHJhY3RzIHRoZSBncm91cCBieSBjbGF1c2UgZnJvbSBhIG1ldGhvZCBuYW1lLlxuICAgKlxuICAgKiBAc3VtbWFyeVxuICAgKiBEZXRlY3RzIHRoZSBgR3JvdXBCeWAga2V5d29yZCBpbiB0aGUgbWV0aG9kIG5hbWUsIGlzb2xhdGVzIHRoZSBmaWVsZHMgZm9sbG93aW5nIGl0LFxuICAgKiBhbmQgcmV0dXJucyB0aGVtIGFzIGFuIGFycmF5IG9mIGxvd2VyY2FzZS1maXJzdCBzdHJpbmdzLlxuICAgKlxuICAgKiBAcGFyYW0gbWV0aG9kTmFtZSB7c3RyaW5nfSAtIFRoZSBtZXRob2QgbmFtZSB0byBwYXJzZS5cbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nW10gfCB1bmRlZmluZWR9IEFuIGFycmF5IG9mIGdyb3VwIGJ5IGZpZWxkcyBvciBgdW5kZWZpbmVkYCBpZiBubyBncm91cCBieSBjbGF1c2UgZXhpc3RzLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZXh0cmFjdEdyb3VwQnkobWV0aG9kTmFtZTogc3RyaW5nKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIC8vIEZpcnN0IGNoZWNrIGZvciB0aGUgc3RhbmRhcmQgXCJHcm91cEJ5XCIgY2xhdXNlIChlLmcuLCBmaW5kQnlBY3RpdmVHcm91cEJ5Q291bnRyeSlcbiAgICBjb25zdCBncm91cEJ5SW5kZXggPSBtZXRob2ROYW1lLmluZGV4T2YoUXVlcnlDbGF1c2UuR1JPVVBfQlkpO1xuICAgIGlmIChncm91cEJ5SW5kZXggIT09IC0xKSB7XG4gICAgICBjb25zdCBhZnRlciA9IG1ldGhvZE5hbWUuc3Vic3RyaW5nKFxuICAgICAgICBncm91cEJ5SW5kZXggKyBRdWVyeUNsYXVzZS5HUk9VUF9CWS5sZW5ndGhcbiAgICAgICk7XG4gICAgICBjb25zdCBncm91cEJ5UGFydCA9IGFmdGVyLnNwbGl0KFF1ZXJ5Q2xhdXNlLk9SREVSX0JZKVswXTtcbiAgICAgIHJldHVybiBncm91cEJ5UGFydFxuICAgICAgICAuc3BsaXQoUXVlcnlDbGF1c2UuVEhFTl9CWSlcbiAgICAgICAgLm1hcChsb3dlckZpcnN0KVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgIH1cblxuICAgIC8vIEZvciBcImdyb3VwQnlcIiBwcmVmaXggKGUuZy4sIGdyb3VwQnlDYXRlZ29yeVRoZW5CeVJlZ2lvbiksXG4gICAgLy8gZXh0cmFjdCBUaGVuQnkgZmllbGRzIGFmdGVyIHRoZSBzZWxlY3RvclxuICAgIGNvbnN0IGFjdGlvbkluZm8gPSB0aGlzLmdldEFjdGlvbkZyb21NZXRob2ROYW1lKG1ldGhvZE5hbWUpO1xuICAgIGlmIChhY3Rpb25JbmZvPy5hY3Rpb24gPT09IFwiZ3JvdXBcIikge1xuICAgICAgY29uc3QgYWZ0ZXJQcmVmaXggPSBtZXRob2ROYW1lLnN1YnN0cmluZyhhY3Rpb25JbmZvLnByZWZpeC5sZW5ndGgpO1xuICAgICAgY29uc3QgdGhlbkJ5SW5kZXggPSBhZnRlclByZWZpeC5pbmRleE9mKFF1ZXJ5Q2xhdXNlLlRIRU5fQlkpO1xuICAgICAgaWYgKHRoZW5CeUluZGV4ID09PSAtMSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgY29uc3QgYWZ0ZXJUaGVuQnkgPSBhZnRlclByZWZpeC5zdWJzdHJpbmcoXG4gICAgICAgIHRoZW5CeUluZGV4ICsgUXVlcnlDbGF1c2UuVEhFTl9CWS5sZW5ndGhcbiAgICAgICk7XG4gICAgICAvLyBTcGxpdCBieSBUaGVuQnkgdG8gZ2V0IG11bHRpcGxlIGdyb3VwIGZpZWxkc1xuICAgICAgY29uc3QgcGFydHMgPSBhZnRlclRoZW5CeS5zcGxpdChRdWVyeUNsYXVzZS5USEVOX0JZKTtcbiAgICAgIC8vIEFsc28gc3RvcCBhdCBPcmRlckJ5LCBMaW1pdCwgT2Zmc2V0XG4gICAgICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG4gICAgICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBwYXJ0Lm1hdGNoKC8oT3JkZXJCeXxMaW1pdHxPZmZzZXR8U2VsZWN0KS8pO1xuICAgICAgICBjb25zdCBmaWVsZCA9IG1hdGNoID8gcGFydC5zdWJzdHJpbmcoMCwgbWF0Y2guaW5kZXgpIDogcGFydDtcbiAgICAgICAgaWYgKGZpZWxkKSByZXN1bHQucHVzaChsb3dlckZpcnN0KGZpZWxkKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0Lmxlbmd0aCA+IDAgPyByZXN1bHQgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIHByaXZhdGUgc3RhdGljIGV4dHJhY3RPcmRlckJ5KFxuICAvLyAgIG1ldGhvZE5hbWU6IHN0cmluZ1xuICAvLyApOiBPcmRlckJ5U2VsZWN0b3I8YW55PltdIHwgdW5kZWZpbmVkIHtcbiAgLy8gICBjb25zdCBvcmRlckJ5SW5kZXggPSBtZXRob2ROYW1lLmluZGV4T2YoUXVlcnlDbGF1c2UuT1JERVJfQlkpO1xuICAvLyAgIGlmIChvcmRlckJ5SW5kZXggPT09IC0xKSByZXR1cm4gdW5kZWZpbmVkO1xuICAvL1xuICAvLyAgIGNvbnN0IGFmdGVyID0gbWV0aG9kTmFtZS5zdWJzdHJpbmcoXG4gIC8vICAgICBvcmRlckJ5SW5kZXggKyBRdWVyeUNsYXVzZS5PUkRFUl9CWS5sZW5ndGhcbiAgLy8gICApO1xuICAvLyAgIGNvbnN0IG9yZGVyUGFydHMgPSBhZnRlci5zcGxpdChcIlRoZW5CeVwiKTtcbiAgLy9cbiAgLy8gICByZXR1cm4gb3JkZXJQYXJ0cy5tYXAoKHBhcnQpID0+IHtcbiAgLy8gICAgIGNvbnN0IG1hdGNoID0gcGFydC5tYXRjaCgvKC4qPykoQXNjfERlc2N8RHNjKSQvKTtcbiAgLy8gICAgIGlmICghbWF0Y2gpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBPcmRlckJ5IHBhcnQ6ICR7cGFydH1gKTtcbiAgLy8gICAgIGNvbnN0IFssIGZpZWxkLCBkaXJdID0gbWF0Y2g7XG4gIC8vICAgICByZXR1cm4gW1xuICAvLyAgICAgICBsb3dlckZpcnN0KGZpZWxkKSxcbiAgLy8gICAgICAgZGlyLnRvTG93ZXJDYXNlKCkgPT09IFwiZHNjXCJcbiAgLy8gICAgICAgICA/IE9yZGVyRGlyZWN0aW9uLkRTQ1xuICAvLyAgICAgICAgIDogKGRpci50b0xvd2VyQ2FzZSgpIGFzIE9yZGVyRGlyZWN0aW9uKSxcbiAgLy8gICAgIF07XG4gIC8vICAgfSk7XG4gIC8vIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEJ1aWxkcyB0aGUgYHdoZXJlYCBjb25kaXRpb24gb2JqZWN0IGJhc2VkIG9uIHRoZSBwYXJzZWQgY29yZSBzdHJpbmcgYW5kIHBhcmFtZXRlciB2YWx1ZXMuXG4gICAqXG4gICAqIEBzdW1tYXJ5XG4gICAqIFNwbGl0cyB0aGUgY29yZSBzdHJpbmcgYnkgbG9naWNhbCBvcGVyYXRvcnMgKGBBbmRgLCBgT3JgKSwgcGFyc2VzIGVhY2ggdG9rZW4gaW50byBhIGZpZWxkXG4gICAqIGFuZCBvcGVyYXRvciwgYW5kIGNvbWJpbmVzIHRoZW0gaW50byBhIGBDb25kaXRpb25gIG9iamVjdCB1c2luZyB0aGUgcHJvdmlkZWQgdmFsdWVzLlxuICAgKlxuICAgKiBAcGFyYW0gY29yZSB7c3RyaW5nfSAtIFRoZSBleHRyYWN0ZWQgY29yZSBzdHJpbmcgZnJvbSB0aGUgbWV0aG9kIG5hbWUuXG4gICAqIEBwYXJhbSB2YWx1ZXMge2FueVtdfSAtIFRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgY29uZGl0aW9ucy5cbiAgICpcbiAgICogQHJldHVybiB7Q29uZGl0aW9uPGFueT59IEEgc3RydWN0dXJlZCBjb25kaXRpb24gb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgcXVlcnkncyB3aGVyZSBjbGF1c2UuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBidWlsZFdoZXJlKFxuICAgIGNvcmU6IHN0cmluZyxcbiAgICB2YWx1ZXM6IGFueVtdXG4gICk6IENvbmRpdGlvbjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICAvLyBFbXB0eSBjb3JlIG1lYW5zIG5vIHdoZXJlIGNvbmRpdGlvbnNcbiAgICBpZiAoIWNvcmUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBwYXJ0cyA9IGNvcmUuc3BsaXQoL09yZGVyQnl8R3JvdXBCeS8pWzBdIHx8IFwiXCI7XG4gICAgaWYgKCFwYXJ0cykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGNvbmRpdGlvbnMgPSBwYXJ0cy5zcGxpdCgvQW5kfE9yLykuZmlsdGVyKChjKSA9PiBjLmxlbmd0aCA+IDApO1xuICAgIGlmIChjb25kaXRpb25zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IG9wZXJhdG9ycyA9IGNvcmUubWF0Y2goL0FuZHxPci9nKSB8fCBbXTtcblxuICAgIGxldCB3aGVyZTogQ29uZGl0aW9uPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBjb25kaXRpb25zLmZvckVhY2goKHRva2VuLCBpZHgpID0+IHtcbiAgICAgIGNvbnN0IHsgZmllbGQsIG9wZXJhdG9yIH0gPSB0aGlzLnBhcnNlRmllbGRBbmRPcGVyYXRvcih0b2tlbik7XG4gICAgICBjb25zdCBwYXJzZXIgPSBvcGVyYXRvciA/IE9wZXJhdG9yc01hcFtvcGVyYXRvcl0gOiBPcGVyYXRvcnNNYXAuRXF1YWxzO1xuICAgICAgaWYgKCFwYXJzZXIpIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgb3BlcmF0b3IgJHtvcGVyYXRvcn1gKTtcblxuICAgICAgY29uc3QgY29uZGl0aW9uVmFsdWUgPSB2YWx1ZXNbaWR4XTtcbiAgICAgIGlmICh0eXBlb2YgY29uZGl0aW9uVmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHZhbHVlIGZvciBmaWVsZCAke2ZpZWxkfWApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb25kaXRpb24gPSBwYXJzZXIoZmllbGQsIGNvbmRpdGlvblZhbHVlKTtcbiAgICAgIHdoZXJlID1cbiAgICAgICAgaWR4ID09PSAwXG4gICAgICAgICAgPyBjb25kaXRpb25cbiAgICAgICAgICA6IG9wZXJhdG9yc1tpZHggLSAxXSA9PT0gUXVlcnlDbGF1c2UuQU5EXG4gICAgICAgICAgICA/IHdoZXJlIS5hbmQoY29uZGl0aW9uKVxuICAgICAgICAgICAgOiB3aGVyZSEub3IoY29uZGl0aW9uKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB3aGVyZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUGFyc2VzIGEgZmllbGQgbmFtZSBhbmQgb3BlcmF0b3IgZnJvbSBhIHN0cmluZyB0b2tlbi5cbiAgICpcbiAgICogQHN1bW1hcnlcbiAgICogSWRlbnRpZmllcyB0aGUgb3BlcmF0b3Igc3VmZml4IChpZiBwcmVzZW50KSBhbmQgcmV0dXJucyBhIGRlc2NyaXB0b3IgY29udGFpbmluZyB0aGUgZmllbGRcbiAgICogbmFtZSBpbiBsb3dlcmNhc2UtZmlyc3QgZm9ybWF0IGFsb25nIHdpdGggdGhlIG9wZXJhdG9yLlxuICAgKlxuICAgKiBAcGFyYW0gc3RyIHtzdHJpbmd9IC0gVGhlIHRva2VuIHN0cmluZyB0byBwYXJzZS5cbiAgICpcbiAgICogQHJldHVybiB7RmlsdGVyRGVzY3JpcHRvcn0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZpZWxkIG5hbWUgYW5kIG9wZXJhdG9yLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VGaWVsZEFuZE9wZXJhdG9yKHN0cjogc3RyaW5nKTogRmlsdGVyRGVzY3JpcHRvciB7XG4gICAgZm9yIChjb25zdCBvcGVyYXRvciBvZiBPYmplY3Qua2V5cyhPcGVyYXRvcnNNYXApKSB7XG4gICAgICBpZiAoc3RyLmVuZHNXaXRoKG9wZXJhdG9yKSkge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHN0ci5zbGljZSgwLCAtb3BlcmF0b3IubGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIHsgZmllbGQ6IGxvd2VyRmlyc3QoZmllbGQpLCBvcGVyYXRvciB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBmaWVsZDogbG93ZXJGaXJzdChzdHIpIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBleHRyYWN0T3JkZXJCeUZpZWxkKG1ldGhvZE5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgLy8gbmV3IFJlZ2V4KGAke1F1ZXJ5Q2xhdXNlLk9SREVSX0JZfWApO1xuICAgIGNvbnN0IG1hdGNoID0gbWV0aG9kTmFtZS5tYXRjaCgvT3JkZXJCeSguKykkLyk7XG4gICAgaWYgKCFtYXRjaCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBmaWVsZCA9IG1hdGNoWzFdO1xuICAgIHJldHVybiBmaWVsZC5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIGZpZWxkLnNsaWNlKDEpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0UHJvcGVybHlPcmRlckJ5T3JUaHJvdyhcbiAgICBmaWVsZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIGRpcmVjdGlvbjogT3JkZXJEaXJlY3Rpb24gfCB1bmRlZmluZWRcbiAgKTogQXJyYXk8T3JkZXJCeVNlbGVjdG9yPGFueT4+IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBsb2cgPSBNZXRob2RRdWVyeUJ1aWxkZXIubG9nLmZvcih0aGlzLmdldFByb3Blcmx5T3JkZXJCeU9yVGhyb3cpO1xuICAgIC8vIEJvdGggYWJzZW50IOKGkiBpZ25vcmUgT3JkZXJCeVxuICAgIGlmICghZGlyZWN0aW9uICYmICFmaWVsZCkgcmV0dXJuO1xuXG4gICAgaWYgKGRpcmVjdGlvbiAmJiAhZmllbGQpXG4gICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihcbiAgICAgICAgYEV4cGVjdGVkIE9yZGVyQnkgY2xhdXNlLCBidXQgbm8gc29ydGFibGUgZmllbGQgd2FzIGZvdW5kIGluIG1ldGhvZCBuYW1lLmBcbiAgICAgICk7XG5cbiAgICAvLyBGaWVsZCBwcmVzZW50LCBidXQgZGlyZWN0aW9uIGlzIHVuZGVmaW5lZCDihpIgaWdub3JlIE9yZGVyQnlcbiAgICBpZiAoIWRpcmVjdGlvbiAmJiBmaWVsZCkge1xuICAgICAgbG9nLmRlYnVnKFwiSWdub3JpbmcgT3JkZXJCeSBjbGF1c2UgYmVjYXVzZSBkaXJlY3Rpb24gaXMgdW5kZWZpbmVkLlwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBCb3RoIHByZXNlbnQg4oaSIHZhbGlkYXRlIGRpcmVjdGlvblxuICAgIGNvbnN0IGFsbG93ZWREaXJlY3Rpb25zID0gT2JqZWN0LnZhbHVlcyhPcmRlckRpcmVjdGlvbik7XG4gICAgaWYgKCFhbGxvd2VkRGlyZWN0aW9ucy5pbmNsdWRlcyhkaXJlY3Rpb24gYXMgYW55KSkge1xuICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIE9yZGVyQnkgZGlyZWN0aW9uICR7ZGlyZWN0aW9ufS4gRXhwZWN0ZWQgb25lIG9mOiAke09iamVjdC52YWx1ZXMoT3JkZXJEaXJlY3Rpb24pLmpvaW4oXCIsIFwiKX0uYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW1tmaWVsZCBhcyBhbnksIGRpcmVjdGlvbiBhcyBPcmRlckRpcmVjdGlvbl1dO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFeHRyYWN0cyBgb3JkZXJCeWAsIGBsaW1pdGAsIGFuZCBgb2Zmc2V0YCBjbGF1c2VzIGZyb20gbWV0aG9kIGFyZ3VtZW50cy5cbiAgICpcbiAgICogQHN1bW1hcnlcbiAgICogRGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIGNvbmRpdGlvbiBhcmd1bWVudHMsIHRoZW4gY2hlY2tzIHRoZSByZW1haW5pbmcgYXJndW1lbnRzXG4gICAqIHRvIHJlc29sdmUgc29ydGluZywgbGltaXRpbmcsIGFuZCBwYWdpbmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gbWV0aG9kTmFtZSB7c3RyaW5nfSAtIFRoZSBtZXRob2QgbmFtZS5cbiAgICogQHBhcmFtIHZhbHVlcyB7YW55W119IC0gVGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIG1ldGhvZCBhcmd1bWVudHMsIGluY2x1ZGluZyBjb25kaXRpb25zIGFuZCBleHRyYXMuXG4gICAqIEBwYXJhbSBjb3JlIHtzdHJpbmd9IC0gVGhlIHByZS1leHRyYWN0ZWQgY29yZSBzdHJpbmcuXG4gICAqXG4gICAqIEByZXR1cm4ge09yZGVyTGltaXRPZmZzZXRFeHRyYWN0fSBBbiBvYmplY3QgY29udGFpbmluZyBvcmRlckJ5LCBsaW1pdCwgYW5kIG9mZnNldCB2YWx1ZXMgaWYgcHJlc2VudC5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGV4dHJhY3RPcmRlckxpbWl0T2Zmc2V0KFxuICAgIG1ldGhvZE5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZXM6IGFueVtdLFxuICAgIGNvcmU/OiBzdHJpbmdcbiAgKTogT3JkZXJMaW1pdE9mZnNldEV4dHJhY3Qge1xuICAgIGNvbnN0IGNvcmVTdHJpbmcgPSBjb3JlID8/IHRoaXMuZXh0cmFjdENvcmUobWV0aG9kTmFtZSk7XG4gICAgY29uc3QgY29uZGl0aW9uQ291bnQgPSBjb3JlU3RyaW5nXG4gICAgICA/IGNvcmVTdHJpbmcuc3BsaXQoL0FuZHxPci8pLmZpbHRlcigocykgPT4gcy5sZW5ndGggPiAwKS5sZW5ndGhcbiAgICAgIDogMDtcbiAgICBjb25zdCBleHRyYUFyZ3M6IGFueVtdID0gdmFsdWVzLnNsaWNlKGNvbmRpdGlvbkNvdW50KSA/PyBbXTtcblxuICAgIGxldCBvcmRlckJ5OiBBcnJheTxPcmRlckJ5U2VsZWN0b3I8YW55Pj4gfCB1bmRlZmluZWQ7XG4gICAgbGV0IGxpbWl0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbGV0IG9mZnNldDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKGV4dHJhQXJncy5hdCgtMSkgaW5zdGFuY2VvZiBDb250ZXh0KSBleHRyYUFyZ3MucG9wKCk7XG5cbiAgICBpZiAoZXh0cmFBcmdzLmxlbmd0aCA+PSAxKSB7XG4gICAgICBjb25zdCBkaXJlY3Rpb24gPSBleHRyYUFyZ3NbMF07XG4gICAgICBjb25zdCBmaWVsZCA9IHRoaXMuZXh0cmFjdE9yZGVyQnlGaWVsZChtZXRob2ROYW1lKTtcbiAgICAgIG9yZGVyQnkgPSB0aGlzLmdldFByb3Blcmx5T3JkZXJCeU9yVGhyb3coZmllbGQsIGRpcmVjdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKGV4dHJhQXJncy5sZW5ndGggPj0gMiAmJiB0eXBlb2YgZXh0cmFBcmdzWzFdID09PSBcIm51bWJlclwiKVxuICAgICAgbGltaXQgPSBleHRyYUFyZ3NbMV07XG5cbiAgICBpZiAoZXh0cmFBcmdzLmxlbmd0aCA+PSAzICYmIHR5cGVvZiBleHRyYUFyZ3NbMl0gPT09IFwibnVtYmVyXCIpXG4gICAgICBvZmZzZXQgPSBleHRyYUFyZ3NbMl07XG5cbiAgICByZXR1cm4geyBvcmRlckJ5LCBsaW1pdCwgb2Zmc2V0IH07XG4gIH1cbn1cbiJdfQ==
@@ -208,4 +208,4 @@ class Paginator extends logging_1.LoggedClass {
208
208
  }
209
209
  }
210
210
  exports.Paginator = Paginator;
211
- //# sourceMappingURL=Paginator.js.map
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFnaW5hdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXJ5L1BhZ2luYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBdUM7QUFFdkMsMERBQWlEO0FBQ2pELGdEQUE4QztBQUM5Qyx3REFBeUQ7QUFHekQsK0NBQWdEO0FBTWhELCtDQUFvRDtBQUNwRCwrREFBc0Q7QUFDdEQsMkRBQTZEO0FBRTdEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdURHO0FBQ0gsTUFBc0IsU0FJcEIsU0FBUSxxQkFBVztJQVNuQixJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFjLFNBQVM7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO1lBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFVLENBQUMsQ0FBQztRQUN0RSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELFlBQ3FCLE9BQWtDLEVBQ2xDLEtBQStCLEVBQ3pDLElBQVksRUFDRixLQUFxQjtRQUV4QyxLQUFLLEVBQUUsQ0FBQztRQUxXLFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBQ2xDLFVBQUssR0FBTCxLQUFLLENBQTBCO1FBQ3pDLFNBQUksR0FBSixJQUFJLENBQVE7UUFDRixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUd4QyxJQUFBLG9CQUFZLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENB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LENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLGtDQUFrQixDQUFDLENBQVUsQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEdBQThCO1FBQ3BELE9BQU8sQ0FDTCxHQUFHO1lBQ0gsT0FBTyxHQUFHLEtBQUssUUFBUTtZQUN2QixLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDdkIsT0FBTyxHQUFHLENBQUMsS0FBSyxLQUFLLFFBQVE7WUFDN0IsT0FBTyxHQUFHLENBQUMsT0FBTyxLQUFLLFFBQVE7WUFDL0IsT0FBTyxHQUFHLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FDOUIsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQWpPRCw4QkFpT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYWdpbmdFcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuaW1wb3J0IHsgQWRhcHRlciB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZS9BZGFwdGVyXCI7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlL0NvbnRleHRcIjtcbmltcG9ydCB7IHByZWZpeE1ldGhvZCB9IGZyb20gXCIuLi91dGlscy91dGlsc1wiO1xuaW1wb3J0IHsgVW5zdXBwb3J0ZWRFcnJvciB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZS9lcnJvcnNcIjtcbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcbmltcG9ydCB7IExvZ2dlZENsYXNzIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5pbXBvcnQge1xuICBDb250ZXh0dWFsQXJncyxcbiAgTWF5YmVDb250ZXh0dWFsQXJnLFxufSBmcm9tIFwiLi4vdXRpbHMvQ29udGV4dHVhbExvZ2dlZENsYXNzXCI7XG5pbXBvcnQgeyBEaXJlY3Rpb25MaW1pdE9mZnNldCwgUHJlcGFyZWRTdGF0ZW1lbnQgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvUmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgU2VyaWFsaXphdGlvbkVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEhhbmRsZXMgcGFnaW5hdGlvbiBmb3IgZGF0YWJhc2UgcXVlcmllc1xuICogQHN1bW1hcnkgUHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3IgbmF2aWdhdGluZyB0aHJvdWdoIHBhZ2luYXRlZCBxdWVyeSByZXN1bHRzXG4gKlxuICogVGhpcyBhYnN0cmFjdCBjbGFzcyBtYW5hZ2VzIHRoZSBzdGF0ZSBhbmQgbmF2aWdhdGlvbiBvZiBwYWdpbmF0ZWQgZGF0YWJhc2UgcXVlcnkgcmVzdWx0cy5cbiAqIEl0IHRyYWNrcyB0aGUgY3VycmVudCBwYWdlLCB0b3RhbCBwYWdlcywgYW5kIHJlY29yZCBjb3VudCwgYW5kIHByb3ZpZGVzIG1ldGhvZHMgZm9yXG4gKiBtb3ZpbmcgYmV0d2VlbiBwYWdlcy5cbiAqXG4gKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlIHRoaXMgcGFnaW5hdG9yIG9wZXJhdGVzIG9uXG4gKiBAdGVtcGxhdGUgUiAtIFRoZSByZXR1cm4gdHlwZSBvZiB0aGUgcGFnaW5hdGVkIHF1ZXJ5IChkZWZhdWx0cyB0byBNW10pXG4gKiBAdGVtcGxhdGUgUSAtIFRoZSBxdWVyeSB0eXBlIChkZWZhdWx0cyB0byBhbnkpXG4gKiBAcGFyYW0ge0FkYXB0ZXI8YW55LCBRLCBhbnksIGFueT59IGFkYXB0ZXIgLSBUaGUgZGF0YWJhc2UgYWRhcHRlciB0byB1c2UgZm9yIGV4ZWN1dGluZyBxdWVyaWVzXG4gKiBAcGFyYW0ge1F9IHF1ZXJ5IC0gVGhlIHF1ZXJ5IHRvIHBhZ2luYXRlXG4gKiBAcGFyYW0ge251bWJlcn0gc2l6ZSAtIFRoZSBudW1iZXIgb2YgcmVjb3JkcyBwZXIgcGFnZVxuICogQHBhcmFtIHtDb25zdHJ1Y3RvcjxNPn0gY2xhenogLSBUaGUgY29uc3RydWN0b3IgZm9yIHRoZSBtb2RlbCB0eXBlXG4gKiBAY2xhc3MgUGFnaW5hdG9yXG4gKiBAZXhhbXBsZVxuICogLy8gQ3JlYXRlIGEgcGFnaW5hdG9yIGZvciBhIHVzZXIgcXVlcnlcbiAqIGNvbnN0IHVzZXJRdWVyeSA9IGRiLnNlbGVjdCgpLmZyb20oVXNlcik7XG4gKiBjb25zdCBwYWdpbmF0b3IgPSBhd2FpdCB1c2VyUXVlcnkucGFnaW5hdGUoMTApOyAvLyAxMCB1c2VycyBwZXIgcGFnZVxuICpcbiAqIC8vIEdldCB0aGUgZmlyc3QgcGFnZSBvZiByZXN1bHRzXG4gKiBjb25zdCBmaXJzdFBhZ2UgPSBhd2FpdCBwYWdpbmF0b3IucGFnZSgxKTtcbiAqXG4gKiAvLyBOYXZpZ2F0ZSB0byB0aGUgbmV4dCBwYWdlXG4gKiBjb25zdCBzZWNvbmRQYWdlID0gYXdhaXQgcGFnaW5hdG9yLm5leHQoKTtcbiAqXG4gKiAvLyBHZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBhZ2luYXRpb25cbiAqIGNvbnNvbGUubG9nKGBQYWdlICR7cGFnaW5hdG9yLmN1cnJlbnR9IG9mICR7cGFnaW5hdG9yLnRvdGFsfSwgJHtwYWdpbmF0b3IuY291bnR9IHRvdGFsIHJlY29yZHNgKTtcbiAqXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IENsaWVudFxuICogICBwYXJ0aWNpcGFudCBQYWdpbmF0b3JcbiAqICAgcGFydGljaXBhbnQgQWRhcHRlclxuICogICBwYXJ0aWNpcGFudCBEYXRhYmFzZVxuICpcbiAqICAgQ2xpZW50LT4+UGFnaW5hdG9yOiBuZXcgUGFnaW5hdG9yKGFkYXB0ZXIsIHF1ZXJ5LCBzaXplLCBjbGF6eilcbiAqICAgQ2xpZW50LT4+UGFnaW5hdG9yOiBwYWdlKDEpXG4gKiAgIFBhZ2luYXRvci0+PlBhZ2luYXRvcjogdmFsaWRhdGVQYWdlKDEpXG4gKiAgIFBhZ2luYXRvci0+PlBhZ2luYXRvcjogcHJlcGFyZShxdWVyeSlcbiAqICAgUGFnaW5hdG9yLT4+QWRhcHRlcjogZXhlY3V0ZSBxdWVyeSB3aXRoIHBhZ2luYXRpb25cbiAqICAgQWRhcHRlci0+PkRhdGFiYXNlOiBleGVjdXRlIHF1ZXJ5XG4gKiAgIERhdGFiYXNlLS0+PkFkYXB0ZXI6IHJldHVybiByZXN1bHRzXG4gKiAgIEFkYXB0ZXItLT4+UGFnaW5hdG9yOiByZXR1cm4gcmVzdWx0c1xuICogICBQYWdpbmF0b3ItLT4+Q2xpZW50OiByZXR1cm4gcGFnZSByZXN1bHRzXG4gKlxuICogICBDbGllbnQtPj5QYWdpbmF0b3I6IG5leHQoKVxuICogICBQYWdpbmF0b3ItPj5QYWdpbmF0b3I6IHBhZ2UoY3VycmVudCArIDEpXG4gKiAgIFBhZ2luYXRvci0+PlBhZ2luYXRvcjogdmFsaWRhdGVQYWdlKGN1cnJlbnQgKyAxKVxuICogICBQYWdpbmF0b3ItPj5BZGFwdGVyOiBleGVjdXRlIHF1ZXJ5IHdpdGggcGFnaW5hdGlvblxuICogICBBZGFwdGVyLT4+RGF0YWJhc2U6IGV4ZWN1dGUgcXVlcnlcbiAqICAgRGF0YWJhc2UtLT4+QWRhcHRlcjogcmV0dXJuIHJlc3VsdHNcbiAqICAgQWRhcHRlci0tPj5QYWdpbmF0b3I6IHJldHVybiByZXN1bHRzXG4gKiAgIFBhZ2luYXRvci0tPj5DbGllbnQ6IHJldHVybiBwYWdlIHJlc3VsdHNcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBhZ2luYXRvcjxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBSID0gTVtdLFxuICBRID0gYW55LFxuPiBleHRlbmRzIExvZ2dlZENsYXNzIHtcbiAgcHJvdGVjdGVkIF9jdXJyZW50UGFnZSE6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF90b3RhbFBhZ2VzITogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3JlY29yZENvdW50ITogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX2Jvb2ttYXJrPzogbnVtYmVyIHwgc3RyaW5nO1xuICBwcm90ZWN0ZWQgbGltaXQhOiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBfc3RhdGVtZW50PzogUTtcblxuICBnZXQgY3VycmVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFBhZ2U7XG4gIH1cblxuICBnZXQgdG90YWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3RvdGFsUGFnZXM7XG4gIH1cblxuICBnZXQgY291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcmVjb3JkQ291bnQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHN0YXRlbWVudCgpIHtcbiAgICBpZiAoIXRoaXMuX3N0YXRlbWVudCkgdGhpcy5fc3RhdGVtZW50ID0gdGhpcy5wcmVwYXJlKHRoaXMucXVlcnkgYXMgUSk7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlbWVudDtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWRhcHRlcjogQWRhcHRlcjxhbnksIGFueSwgUSwgYW55PixcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcXVlcnk6IFEgfCBQcmVwYXJlZFN0YXRlbWVudDxNPixcbiAgICByZWFkb25seSBzaXplOiBudW1iZXIsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNsYXp6OiBDb25zdHJ1Y3RvcjxNPlxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHByZWZpeE1ldGhvZCh0aGlzLCB0aGlzLnBhZ2UsIHRoaXMucGFnZVByZWZpeCwgdGhpcy5wYWdlLm5hbWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzUHJlcGFyZWRTdGF0ZW1lbnQoKSB7XG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLnF1ZXJ5IGFzIFByZXBhcmVkU3RhdGVtZW50PGFueT47XG4gICAgcmV0dXJuIChcbiAgICAgIHF1ZXJ5Lm1ldGhvZCAmJlxuICAgICAgcXVlcnkubWV0aG9kLm1hdGNoKFxuICAgICAgICBuZXcgUmVnRXhwKFxuICAgICAgICAgIGAke1ByZXBhcmVkU3RhdGVtZW50S2V5cy5GSU5EX0JZfXwke1ByZXBhcmVkU3RhdGVtZW50S2V5cy5MSVNUX0JZfXwke1ByZXBhcmVkU3RhdGVtZW50S2V5cy5GSU5EfWAsXG4gICAgICAgICAgXCJnaVwiXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHBhZ2VQcmVmaXgocGFnZT86IG51bWJlciwgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPGFueT4pIHtcbiAgICBjb25zdCB7IGN0eEFyZ3MgfSA9IChcbiAgICAgIGF3YWl0IHRoaXMuYWRhcHRlcltcImxvZ0N0eFwiXShcbiAgICAgICAgW3RoaXMuY2xhenosIC4uLmFyZ3NdLFxuICAgICAgICBQcmVwYXJlZFN0YXRlbWVudEtleXMuUEFHRV9CWSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKVxuICAgICkuZm9yKHRoaXMucGFnZVByZWZpeCk7XG4gICAgY3R4QXJncy5zaGlmdCgpO1xuICAgIHJldHVybiBbcGFnZSwgLi4uY3R4QXJnc107XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcGFnZVByZXBhcmVkKFxuICAgIHBhZ2U6IG51bWJlcixcbiAgICBib29rbWFyaz86IGFueSxcbiAgICAuLi5hcmd6OiBDb250ZXh0dWFsQXJnczxhbnk+XG4gICk6IFByb21pc2U8TVtdPiB7XG4gICAgY29uc3QgeyBsb2csIGN0eEFyZ3MgfSA9IHRoaXMuYWRhcHRlcltcImxvZ0N0eFwiXShcbiAgICAgIGJvb2ttYXJrICYmICEoYm9va21hcmsgaW5zdGFuY2VvZiBDb250ZXh0KVxuICAgICAgICA/IFsuLi5hcmd6XVxuICAgICAgICA6IFtib29rbWFyaywgLi4uYXJnel0sXG4gICAgICB0aGlzLnBhZ2VQcmVwYXJlZFxuICAgICk7XG4gICAgbG9nLmRlYnVnKFxuICAgICAgYFJ1bm5pbmcgcGFnZWQgcHJlcGFyZWQgc3RhdGVtZW50ICR7cGFnZX0gcGFnZSR7Ym9va21hcmsgPyBgIC0gYm9va21hcmsgJHtib29rbWFya31gIDogXCJcIn1gXG4gICAgKTtcblxuICAgIGlmIChib29rbWFyayAmJiAhKGJvb2ttYXJrIGluc3RhbmNlb2YgQ29udGV4dCkpIHRoaXMuX2Jvb2ttYXJrID0gYm9va21hcms7XG4gICAgY29uc3QgcmVwbyA9IFJlcG9zaXRvcnkuZm9yTW9kZWwodGhpcy5jbGF6eiwgdGhpcy5hZGFwdGVyLmFsaWFzKTtcbiAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLnF1ZXJ5IGFzIFByZXBhcmVkU3RhdGVtZW50PE0+O1xuICAgIGNvbnN0IHsgbWV0aG9kLCBhcmdzLCBwYXJhbXMgfSA9IHN0YXRlbWVudDtcbiAgICBpZiAobWV0aG9kID09PSBQcmVwYXJlZFN0YXRlbWVudEtleXMuRklORCkge1xuICAgICAgY29uc3QgcHJlcGFyZWRBcmdzID0gW1ByZXBhcmVkU3RhdGVtZW50S2V5cy5QQUdFLCAuLi5hcmdzXTtcbiAgICAgIGNvbnN0IHByZXBhcmVkUGFyYW1zOiBEaXJlY3Rpb25MaW1pdE9mZnNldCA9IHtcbiAgICAgICAgbGltaXQ6IHRoaXMuc2l6ZSxcbiAgICAgICAgb2Zmc2V0OiBwYWdlLFxuICAgICAgICBib29rbWFyazogdGhpcy5fYm9va21hcmssXG4gICAgICB9O1xuICAgICAgcHJlcGFyZWRBcmdzLnB1c2gocHJlcGFyZWRQYXJhbXMpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVwby5zdGF0ZW1lbnQoXG4gICAgICAgIC4uLihwcmVwYXJlZEFyZ3MgYXMgW3N0cmluZywgYW55XSksXG4gICAgICAgIC4uLmN0eEFyZ3NcbiAgICAgICk7XG4gICAgICByZXR1cm4gdGhpcy5hcHBseShyZXN1bHQpO1xuICAgIH1cbiAgICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKFxuICAgICAgYF4ke1ByZXBhcmVkU3RhdGVtZW50S2V5cy5GSU5EX0JZfXwke1ByZXBhcmVkU3RhdGVtZW50S2V5cy5MSVNUX0JZfWAsXG4gICAgICBcImdpXCJcbiAgICApO1xuICAgIGlmICghbWV0aG9kLm1hdGNoKHJlZ2V4cCkpXG4gICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRFcnJvcihcbiAgICAgICAgYE1ldGhvZCAke21ldGhvZH0gaXMgbm90IHN1cHBvcnRlZCBmb3IgcGFnaW5hdGlvbmBcbiAgICAgICk7XG4gICAgcmVnZXhwLmxhc3RJbmRleCA9IDA7XG4gICAgY29uc3QgcGFnZWRNZXRob2QgPSBtZXRob2QucmVwbGFjZShyZWdleHAsIFByZXBhcmVkU3RhdGVtZW50S2V5cy5QQUdFX0JZKTtcblxuICAgIGNvbnN0IHByZXBhcmVkQXJncyA9IFtwYWdlZE1ldGhvZCwgLi4uYXJnc107XG4gICAgbGV0IHByZXBhcmVkUGFyYW1zOiBEaXJlY3Rpb25MaW1pdE9mZnNldCA9IHtcbiAgICAgIGxpbWl0OiB0aGlzLnNpemUsXG4gICAgICBvZmZzZXQ6IHBhZ2UsXG4gICAgICBib29rbWFyazogdGhpcy5fYm9va21hcmssXG4gICAgfTtcbiAgICBpZiAoXG4gICAgICBwYWdlZE1ldGhvZCA9PT0gUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLlBBR0VfQlkgJiZcbiAgICAgIHByZXBhcmVkQXJncy5sZW5ndGggPD0gMlxuICAgICkge1xuICAgICAgcHJlcGFyZWRBcmdzLnB1c2gocGFyYW1zLmRpcmVjdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByZXBhcmVkUGFyYW1zID0ge1xuICAgICAgICBkaXJlY3Rpb246IHBhcmFtcy5kaXJlY3Rpb24sXG4gICAgICAgIGxpbWl0OiB0aGlzLnNpemUsXG4gICAgICAgIG9mZnNldDogcGFnZSxcbiAgICAgICAgYm9va21hcms6IHRoaXMuX2Jvb2ttYXJrLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBwcmVwYXJlZEFyZ3MucHVzaChwcmVwYXJlZFBhcmFtcyk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXBvLnN0YXRlbWVudChcbiAgICAgIC4uLihwcmVwYXJlZEFyZ3MgYXMgW3N0cmluZywgYW55XSksXG4gICAgICAuLi5jdHhBcmdzXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5hcHBseShyZXN1bHQpO1xuICB9XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUHJlcGFyZXMgYSBzdGF0ZW1lbnQgZm9yIHBhZ2luYXRpb25cbiAgICogQHN1bW1hcnkgTW9kaWZpZXMgdGhlIHJhdyBxdWVyeSBzdGF0ZW1lbnQgdG8gaW5jbHVkZSBwYWdpbmF0aW9uIHBhcmFtZXRlcnMuXG4gICAqIFRoaXMgcHJvdGVjdGVkIG1ldGhvZCBzZXRzIHRoZSBsaW1pdCBwYXJhbWV0ZXIgb24gdGhlIHF1ZXJ5IHRvIG1hdGNoIHRoZSBwYWdlIHNpemUuXG4gICAqIEBwYXJhbSB7UmF3UmFtUXVlcnk8TT59IHJhd1N0YXRlbWVudCAtIFRoZSBvcmlnaW5hbCBxdWVyeSBzdGF0ZW1lbnRcbiAgICogQHJldHVybiB7UmF3UmFtUXVlcnk8TT59IFRoZSBtb2RpZmllZCBxdWVyeSB3aXRoIHBhZ2luYXRpb24gcGFyYW1ldGVyc1xuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHByZXBhcmUocmF3U3RhdGVtZW50OiBRKTogUTtcblxuICBhc3luYyBuZXh0KC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxhbnk+KSB7XG4gICAgcmV0dXJuIHRoaXMucGFnZSh0aGlzLmN1cnJlbnQgKyAxLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIHByZXZpb3VzKC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxhbnk+KSB7XG4gICAgcmV0dXJuIHRoaXMucGFnZSh0aGlzLmN1cnJlbnQgLSAxLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZVBhZ2UocGFnZTogbnVtYmVyKSB7XG4gICAgaWYgKHBhZ2UgPCAxIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKHBhZ2UpKVxuICAgICAgdGhyb3cgbmV3IFBhZ2luZ0Vycm9yKFxuICAgICAgICBcIlBhZ2UgbnVtYmVyIGNhbm5vdCBiZSB1bmRlciAxIGFuZCBtdXN0IGJlIGFuIGludGVnZXJcIlxuICAgICAgKTtcbiAgICBpZiAodHlwZW9mIHRoaXMuX3RvdGFsUGFnZXMgIT09IFwidW5kZWZpbmVkXCIgJiYgcGFnZSA+IHRoaXMuX3RvdGFsUGFnZXMpXG4gICAgICB0aHJvdyBuZXcgUGFnaW5nRXJyb3IoXG4gICAgICAgIGBPbmx5ICR7dGhpcy5fdG90YWxQYWdlc30gYXJlIGF2YWlsYWJsZS4gQ2Fubm90IGdvIHRvIHBhZ2UgJHtwYWdlfWBcbiAgICAgICk7XG4gICAgcmV0dXJuIHBhZ2U7XG4gIH1cblxuICBhc3luYyBwYWdlKFxuICAgIHBhZ2U6IG51bWJlciA9IDEsXG4gICAgYm9va21hcms/OiBhbnksXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPGFueT5cbiAgKTogUHJvbWlzZTxSPiB7XG4gICAgY29uc3QgeyBjdHhBcmdzIH0gPSB0aGlzLmFkYXB0ZXJbXCJsb2dDdHhcIl0oW2Jvb2ttYXJrLCAuLi5hcmdzXSwgdGhpcy5wYWdlKTtcbiAgICBpZiAodGhpcy5pc1ByZXBhcmVkU3RhdGVtZW50KCkpXG4gICAgICByZXR1cm4gKGF3YWl0IHRoaXMucGFnZVByZXBhcmVkKHBhZ2UsIC4uLmN0eEFyZ3MpKSBhcyBSO1xuICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEVycm9yKFxuICAgICAgXCJSYXcgc3VwcG9ydCBub3QgYXZhaWxhYmxlIHdpdGhvdXQgc3ViY2xhc3NpbmcgdGhpc1wiXG4gICAgKTtcbiAgfVxuXG4gIHNlcmlhbGl6ZShkYXRhOiBNW10sIHRvU3RyaW5nOiBib29sZWFuID0gZmFsc2UpOiBzdHJpbmcgfCBTZXJpYWxpemVkUGFnZTxNPiB7XG4gICAgY29uc3Qgc2VyaWFsaXphdGlvbjogU2VyaWFsaXplZFBhZ2U8TT4gPSB7XG4gICAgICBkYXRhOiBkYXRhLFxuICAgICAgY3VycmVudDogdGhpcy5jdXJyZW50LFxuICAgICAgdG90YWw6IHRoaXMudG90YWwsXG4gICAgICBjb3VudDogdGhpcy5jb3VudCxcbiAgICAgIGJvb2ttYXJrOiB0aGlzLl9ib29rbWFyayxcbiAgICB9O1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdG9TdHJpbmcgPyBKU09OLnN0cmluZ2lmeShzZXJpYWxpemF0aW9uKSA6IHNlcmlhbGl6YXRpb247XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FcnJvcihlIGFzIEVycm9yKTtcbiAgICB9XG4gIH1cblxuICBhcHBseShzZXJpYWxpemF0aW9uOiBzdHJpbmcgfCBTZXJpYWxpemVkUGFnZTxNPik6IE1bXSB7XG4gICAgY29uc3Qgc2VyID1cbiAgICAgIHR5cGVvZiBzZXJpYWxpemF0aW9uID09PSBcInN0cmluZ1wiXG4gICAgICAgID8gUGFnaW5hdG9yLmRlc2VyaWFsaXplPE0+KHNlcmlhbGl6YXRpb24pXG4gICAgICAgIDogc2VyaWFsaXphdGlvbjtcblxuICAgIHRoaXMuX2N1cnJlbnRQYWdlID0gc2VyLmN1cnJlbnQ7XG4gICAgdGhpcy5fdG90YWxQYWdlcyA9IHNlci50b3RhbCB8fCB0aGlzLl90b3RhbFBhZ2VzO1xuICAgIHRoaXMuX3JlY29yZENvdW50ID0gc2VyLmNvdW50IHx8IHRoaXMuX3JlY29yZENvdW50O1xuICAgIHRoaXMuX2Jvb2ttYXJrID0gc2VyLmJvb2ttYXJrO1xuICAgIHJldHVybiBzZXIuZGF0YTtcbiAgfVxuXG4gIHN0YXRpYyBkZXNlcmlhbGl6ZTxNIGV4dGVuZHMgTW9kZWw+KHN0cjogc3RyaW5nKTogU2VyaWFsaXplZFBhZ2U8TT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShzdHIpO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBTZXJpYWxpemF0aW9uRXJyb3IoZSBhcyBFcnJvcik7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGlzU2VyaWFsaXplZFBhZ2Uob2JqOiBTZXJpYWxpemVkUGFnZTxhbnk+IHwgYW55KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIG9iaiAmJlxuICAgICAgdHlwZW9mIG9iaiA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgQXJyYXkuaXNBcnJheShvYmouZGF0YSkgJiZcbiAgICAgIHR5cGVvZiBvYmoudG90YWwgPT09IFwibnVtYmVyXCIgJiZcbiAgICAgIHR5cGVvZiBvYmouY3VycmVudCA9PT0gXCJudW1iZXJcIiAmJlxuICAgICAgdHlwZW9mIG9iai5jb3VudCA9PT0gXCJudW1iZXJcIlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgU2VyaWFsaXplZFBhZ2U8TSBleHRlbmRzIE1vZGVsPiA9IHtcbiAgY3VycmVudDogbnVtYmVyO1xuICB0b3RhbDogbnVtYmVyO1xuICBjb3VudDogbnVtYmVyO1xuICBkYXRhOiBNW107XG4gIGJvb2ttYXJrPzogbnVtYmVyIHwgc3RyaW5nO1xufTtcbiJdfQ==