cdktn 0.23.1 → 0.23.3

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 (432) hide show
  1. package/.jsii +1592 -1591
  2. package/.spec.swcrc +22 -0
  3. package/README.md +1 -1
  4. package/jest.config.js +18 -15
  5. package/lib/_tokens.js +1 -1
  6. package/lib/annotations.js +2 -2
  7. package/lib/app.js +2 -2
  8. package/lib/aspect.js +2 -2
  9. package/lib/backends/azurerm-backend.js +3 -3
  10. package/lib/backends/cloud-backend.js +5 -5
  11. package/lib/backends/consul-backend.js +3 -3
  12. package/lib/backends/cos-backend.js +3 -3
  13. package/lib/backends/gcs-backend.js +3 -3
  14. package/lib/backends/http-backend.js +3 -3
  15. package/lib/backends/index.js +1 -1
  16. package/lib/backends/local-backend.js +3 -3
  17. package/lib/backends/oss-backend.js +3 -3
  18. package/lib/backends/pg-backend.js +3 -3
  19. package/lib/backends/remote-backend.js +5 -5
  20. package/lib/backends/s3-backend.js +3 -3
  21. package/lib/backends/swift-backend.js +3 -3
  22. package/lib/complex-computed-list.js +25 -25
  23. package/lib/errors.d.ts +1 -2
  24. package/lib/errors.js +11 -8
  25. package/lib/features.js +1 -1
  26. package/lib/functions/helpers.js +1 -1
  27. package/lib/functions/terraform-functions.generated.js +2 -2
  28. package/lib/hcl/render.js +1 -1
  29. package/lib/importable-resource.js +2 -2
  30. package/lib/index.js +1 -1
  31. package/lib/manifest.js +4 -5
  32. package/lib/private/fs.d.ts +20 -5
  33. package/lib/private/fs.js +43 -69
  34. package/lib/private/unique.js +1 -1
  35. package/lib/resource.js +2 -2
  36. package/lib/runtime.js +1 -1
  37. package/lib/synthesize/index.js +1 -1
  38. package/lib/synthesize/synthesizer.js +4 -5
  39. package/lib/synthesize/types.js +1 -1
  40. package/lib/terraform-addressable.js +1 -1
  41. package/lib/terraform-asset.js +2 -2
  42. package/lib/terraform-backend.js +2 -2
  43. package/lib/terraform-conditions.js +1 -1
  44. package/lib/terraform-count.js +2 -2
  45. package/lib/terraform-data-resource.js +2 -2
  46. package/lib/terraform-data-source.js +2 -2
  47. package/lib/terraform-dependable.js +1 -1
  48. package/lib/terraform-dynamic-block.js +2 -2
  49. package/lib/terraform-dynamic-expression.js +2 -2
  50. package/lib/terraform-element.js +2 -2
  51. package/lib/terraform-functions.js +2 -2
  52. package/lib/terraform-hcl-module.js +2 -2
  53. package/lib/terraform-iterator.js +6 -6
  54. package/lib/terraform-local.js +2 -2
  55. package/lib/terraform-module-asset.js +1 -1
  56. package/lib/terraform-module.js +2 -2
  57. package/lib/terraform-operators.js +2 -2
  58. package/lib/terraform-output.js +2 -2
  59. package/lib/terraform-provider.js +2 -2
  60. package/lib/terraform-provisioner.js +2 -2
  61. package/lib/terraform-remote-state.js +2 -2
  62. package/lib/terraform-resource-targets.js +2 -2
  63. package/lib/terraform-resource.js +2 -2
  64. package/lib/terraform-stack.js +2 -2
  65. package/lib/terraform-variable.js +3 -3
  66. package/lib/testing/adapters/jest.js +1 -1
  67. package/lib/testing/index.js +7 -8
  68. package/lib/testing/matchers.js +2 -2
  69. package/lib/tfExpression.js +1 -1
  70. package/lib/tokens/index.js +1 -1
  71. package/lib/tokens/lazy.js +4 -4
  72. package/lib/tokens/private/dependency.js +1 -1
  73. package/lib/tokens/private/encoding.js +1 -1
  74. package/lib/tokens/private/intrinsic.d.ts +0 -5
  75. package/lib/tokens/private/intrinsic.js +2 -9
  76. package/lib/tokens/private/resolve.js +1 -1
  77. package/lib/tokens/private/stack-trace.d.ts +6 -0
  78. package/lib/tokens/private/stack-trace.js +14 -1
  79. package/lib/tokens/private/token-map.js +1 -1
  80. package/lib/tokens/private/uniqueid.js +1 -1
  81. package/lib/tokens/resolvable.js +4 -4
  82. package/lib/tokens/string-fragments.js +2 -2
  83. package/lib/tokens/token.js +3 -3
  84. package/lib/tsconfig.tsbuildinfo +1 -0
  85. package/lib/upgrade-id-aspect.js +2 -2
  86. package/lib/util.js +1 -1
  87. package/lib/validateEnvironment.js +1 -1
  88. package/lib/validations/index.js +1 -1
  89. package/lib/validations/validate-binary-version.js +1 -1
  90. package/lib/validations/validate-provider-presence.js +1 -1
  91. package/lib/validations/validate-terraform-version.js +1 -1
  92. package/node_modules/fflate/CHANGELOG.md +115 -0
  93. package/node_modules/{has-property-descriptors → fflate}/LICENSE +2 -2
  94. package/node_modules/fflate/README.md +558 -0
  95. package/node_modules/fflate/esm/browser.d.ts +1501 -0
  96. package/node_modules/fflate/esm/browser.js +2665 -0
  97. package/node_modules/fflate/esm/index.d.mts +1501 -0
  98. package/node_modules/fflate/esm/index.mjs +2679 -0
  99. package/node_modules/fflate/lib/browser.cjs +2688 -0
  100. package/node_modules/fflate/lib/browser.d.cts +1501 -0
  101. package/node_modules/fflate/lib/index.cjs +2668 -0
  102. package/node_modules/fflate/lib/index.d.ts +1501 -0
  103. package/node_modules/fflate/lib/node-worker.cjs +32 -0
  104. package/node_modules/fflate/lib/node.cjs +2700 -0
  105. package/node_modules/fflate/lib/node.d.cts +1501 -0
  106. package/node_modules/fflate/lib/worker.cjs +20 -0
  107. package/node_modules/fflate/package.json +127 -0
  108. package/node_modules/fflate/umd/index.js +1 -0
  109. package/node_modules/{yazl → safe-stable-stringify}/LICENSE +1 -1
  110. package/node_modules/safe-stable-stringify/esm/package.json +4 -0
  111. package/node_modules/safe-stable-stringify/esm/wrapper.d.ts +4 -0
  112. package/node_modules/safe-stable-stringify/esm/wrapper.js +6 -0
  113. package/node_modules/safe-stable-stringify/index.d.ts +22 -0
  114. package/node_modules/safe-stable-stringify/index.js +625 -0
  115. package/node_modules/safe-stable-stringify/package.json +65 -0
  116. package/node_modules/safe-stable-stringify/readme.md +179 -0
  117. package/package.json +21 -15
  118. package/tsconfig.json +6 -3
  119. package/tsconfig.test.json +12 -0
  120. package/lib/testing/__tests__/matchers.test.d.ts +0 -1
  121. package/lib/testing/__tests__/matchers.test.js +0 -205
  122. package/lib/testing/adapters/__tests__/index.test.d.ts +0 -1
  123. package/lib/testing/adapters/__tests__/index.test.js +0 -67
  124. package/lib/testing/adapters/__tests__/jest.test.d.ts +0 -1
  125. package/lib/testing/adapters/__tests__/jest.test.js +0 -41
  126. package/node_modules/buffer-crc32/LICENSE +0 -19
  127. package/node_modules/buffer-crc32/README.md +0 -55
  128. package/node_modules/buffer-crc32/dist/index.cjs +0 -306
  129. package/node_modules/buffer-crc32/dist/index.d.cts +0 -35
  130. package/node_modules/buffer-crc32/dist/index.d.mts +0 -35
  131. package/node_modules/buffer-crc32/dist/index.mjs +0 -304
  132. package/node_modules/buffer-crc32/index.d.ts +0 -35
  133. package/node_modules/buffer-crc32/package.json +0 -54
  134. package/node_modules/call-bind/.eslintignore +0 -1
  135. package/node_modules/call-bind/.eslintrc +0 -16
  136. package/node_modules/call-bind/.github/FUNDING.yml +0 -12
  137. package/node_modules/call-bind/.nycrc +0 -9
  138. package/node_modules/call-bind/CHANGELOG.md +0 -106
  139. package/node_modules/call-bind/LICENSE +0 -21
  140. package/node_modules/call-bind/README.md +0 -64
  141. package/node_modules/call-bind/callBound.js +0 -15
  142. package/node_modules/call-bind/index.js +0 -24
  143. package/node_modules/call-bind/package.json +0 -93
  144. package/node_modules/call-bind/test/callBound.js +0 -54
  145. package/node_modules/call-bind/test/index.js +0 -74
  146. package/node_modules/call-bind-apply-helpers/.eslintrc +0 -17
  147. package/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +0 -12
  148. package/node_modules/call-bind-apply-helpers/.nycrc +0 -9
  149. package/node_modules/call-bind-apply-helpers/CHANGELOG.md +0 -30
  150. package/node_modules/call-bind-apply-helpers/LICENSE +0 -21
  151. package/node_modules/call-bind-apply-helpers/README.md +0 -62
  152. package/node_modules/call-bind-apply-helpers/actualApply.d.ts +0 -1
  153. package/node_modules/call-bind-apply-helpers/actualApply.js +0 -10
  154. package/node_modules/call-bind-apply-helpers/applyBind.d.ts +0 -19
  155. package/node_modules/call-bind-apply-helpers/applyBind.js +0 -10
  156. package/node_modules/call-bind-apply-helpers/functionApply.d.ts +0 -1
  157. package/node_modules/call-bind-apply-helpers/functionApply.js +0 -4
  158. package/node_modules/call-bind-apply-helpers/functionCall.d.ts +0 -1
  159. package/node_modules/call-bind-apply-helpers/functionCall.js +0 -4
  160. package/node_modules/call-bind-apply-helpers/index.d.ts +0 -64
  161. package/node_modules/call-bind-apply-helpers/index.js +0 -15
  162. package/node_modules/call-bind-apply-helpers/package.json +0 -85
  163. package/node_modules/call-bind-apply-helpers/reflectApply.d.ts +0 -3
  164. package/node_modules/call-bind-apply-helpers/reflectApply.js +0 -4
  165. package/node_modules/call-bind-apply-helpers/test/index.js +0 -63
  166. package/node_modules/call-bind-apply-helpers/tsconfig.json +0 -9
  167. package/node_modules/call-bound/.eslintrc +0 -13
  168. package/node_modules/call-bound/.github/FUNDING.yml +0 -12
  169. package/node_modules/call-bound/.nycrc +0 -9
  170. package/node_modules/call-bound/CHANGELOG.md +0 -42
  171. package/node_modules/call-bound/LICENSE +0 -21
  172. package/node_modules/call-bound/README.md +0 -53
  173. package/node_modules/call-bound/index.d.ts +0 -94
  174. package/node_modules/call-bound/index.js +0 -19
  175. package/node_modules/call-bound/package.json +0 -99
  176. package/node_modules/call-bound/test/index.js +0 -61
  177. package/node_modules/call-bound/tsconfig.json +0 -10
  178. package/node_modules/define-data-property/.eslintrc +0 -24
  179. package/node_modules/define-data-property/.github/FUNDING.yml +0 -12
  180. package/node_modules/define-data-property/.nycrc +0 -13
  181. package/node_modules/define-data-property/CHANGELOG.md +0 -70
  182. package/node_modules/define-data-property/LICENSE +0 -21
  183. package/node_modules/define-data-property/README.md +0 -67
  184. package/node_modules/define-data-property/index.d.ts +0 -12
  185. package/node_modules/define-data-property/index.js +0 -56
  186. package/node_modules/define-data-property/package.json +0 -106
  187. package/node_modules/define-data-property/test/index.js +0 -392
  188. package/node_modules/define-data-property/tsconfig.json +0 -59
  189. package/node_modules/dunder-proto/.eslintrc +0 -5
  190. package/node_modules/dunder-proto/.github/FUNDING.yml +0 -12
  191. package/node_modules/dunder-proto/.nycrc +0 -13
  192. package/node_modules/dunder-proto/CHANGELOG.md +0 -24
  193. package/node_modules/dunder-proto/LICENSE +0 -21
  194. package/node_modules/dunder-proto/README.md +0 -54
  195. package/node_modules/dunder-proto/get.d.ts +0 -5
  196. package/node_modules/dunder-proto/get.js +0 -30
  197. package/node_modules/dunder-proto/package.json +0 -76
  198. package/node_modules/dunder-proto/set.d.ts +0 -5
  199. package/node_modules/dunder-proto/set.js +0 -35
  200. package/node_modules/dunder-proto/test/get.js +0 -34
  201. package/node_modules/dunder-proto/test/index.js +0 -4
  202. package/node_modules/dunder-proto/test/set.js +0 -50
  203. package/node_modules/dunder-proto/tsconfig.json +0 -9
  204. package/node_modules/es-define-property/.eslintrc +0 -13
  205. package/node_modules/es-define-property/.github/FUNDING.yml +0 -12
  206. package/node_modules/es-define-property/.nycrc +0 -9
  207. package/node_modules/es-define-property/CHANGELOG.md +0 -29
  208. package/node_modules/es-define-property/LICENSE +0 -21
  209. package/node_modules/es-define-property/README.md +0 -49
  210. package/node_modules/es-define-property/index.d.ts +0 -3
  211. package/node_modules/es-define-property/index.js +0 -14
  212. package/node_modules/es-define-property/package.json +0 -81
  213. package/node_modules/es-define-property/test/index.js +0 -56
  214. package/node_modules/es-define-property/tsconfig.json +0 -10
  215. package/node_modules/es-errors/.eslintrc +0 -5
  216. package/node_modules/es-errors/.github/FUNDING.yml +0 -12
  217. package/node_modules/es-errors/CHANGELOG.md +0 -40
  218. package/node_modules/es-errors/LICENSE +0 -21
  219. package/node_modules/es-errors/README.md +0 -55
  220. package/node_modules/es-errors/eval.d.ts +0 -3
  221. package/node_modules/es-errors/eval.js +0 -4
  222. package/node_modules/es-errors/index.d.ts +0 -3
  223. package/node_modules/es-errors/index.js +0 -4
  224. package/node_modules/es-errors/package.json +0 -80
  225. package/node_modules/es-errors/range.d.ts +0 -3
  226. package/node_modules/es-errors/range.js +0 -4
  227. package/node_modules/es-errors/ref.d.ts +0 -3
  228. package/node_modules/es-errors/ref.js +0 -4
  229. package/node_modules/es-errors/syntax.d.ts +0 -3
  230. package/node_modules/es-errors/syntax.js +0 -4
  231. package/node_modules/es-errors/test/index.js +0 -19
  232. package/node_modules/es-errors/tsconfig.json +0 -49
  233. package/node_modules/es-errors/type.d.ts +0 -3
  234. package/node_modules/es-errors/type.js +0 -4
  235. package/node_modules/es-errors/uri.d.ts +0 -3
  236. package/node_modules/es-errors/uri.js +0 -4
  237. package/node_modules/es-object-atoms/.eslintrc +0 -16
  238. package/node_modules/es-object-atoms/.github/FUNDING.yml +0 -12
  239. package/node_modules/es-object-atoms/CHANGELOG.md +0 -37
  240. package/node_modules/es-object-atoms/LICENSE +0 -21
  241. package/node_modules/es-object-atoms/README.md +0 -63
  242. package/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +0 -3
  243. package/node_modules/es-object-atoms/RequireObjectCoercible.js +0 -11
  244. package/node_modules/es-object-atoms/ToObject.d.ts +0 -7
  245. package/node_modules/es-object-atoms/ToObject.js +0 -10
  246. package/node_modules/es-object-atoms/index.d.ts +0 -3
  247. package/node_modules/es-object-atoms/index.js +0 -4
  248. package/node_modules/es-object-atoms/isObject.d.ts +0 -3
  249. package/node_modules/es-object-atoms/isObject.js +0 -6
  250. package/node_modules/es-object-atoms/package.json +0 -80
  251. package/node_modules/es-object-atoms/test/index.js +0 -38
  252. package/node_modules/es-object-atoms/tsconfig.json +0 -6
  253. package/node_modules/function-bind/.eslintrc +0 -21
  254. package/node_modules/function-bind/.github/FUNDING.yml +0 -12
  255. package/node_modules/function-bind/.github/SECURITY.md +0 -3
  256. package/node_modules/function-bind/.nycrc +0 -13
  257. package/node_modules/function-bind/CHANGELOG.md +0 -136
  258. package/node_modules/function-bind/LICENSE +0 -20
  259. package/node_modules/function-bind/README.md +0 -46
  260. package/node_modules/function-bind/implementation.js +0 -84
  261. package/node_modules/function-bind/index.js +0 -5
  262. package/node_modules/function-bind/package.json +0 -87
  263. package/node_modules/function-bind/test/.eslintrc +0 -9
  264. package/node_modules/function-bind/test/index.js +0 -252
  265. package/node_modules/get-intrinsic/.eslintrc +0 -42
  266. package/node_modules/get-intrinsic/.github/FUNDING.yml +0 -12
  267. package/node_modules/get-intrinsic/.nycrc +0 -9
  268. package/node_modules/get-intrinsic/CHANGELOG.md +0 -186
  269. package/node_modules/get-intrinsic/LICENSE +0 -21
  270. package/node_modules/get-intrinsic/README.md +0 -71
  271. package/node_modules/get-intrinsic/index.js +0 -378
  272. package/node_modules/get-intrinsic/package.json +0 -97
  273. package/node_modules/get-intrinsic/test/GetIntrinsic.js +0 -274
  274. package/node_modules/get-proto/.eslintrc +0 -10
  275. package/node_modules/get-proto/.github/FUNDING.yml +0 -12
  276. package/node_modules/get-proto/.nycrc +0 -9
  277. package/node_modules/get-proto/CHANGELOG.md +0 -21
  278. package/node_modules/get-proto/LICENSE +0 -21
  279. package/node_modules/get-proto/Object.getPrototypeOf.d.ts +0 -5
  280. package/node_modules/get-proto/Object.getPrototypeOf.js +0 -6
  281. package/node_modules/get-proto/README.md +0 -50
  282. package/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +0 -3
  283. package/node_modules/get-proto/Reflect.getPrototypeOf.js +0 -4
  284. package/node_modules/get-proto/index.d.ts +0 -5
  285. package/node_modules/get-proto/index.js +0 -27
  286. package/node_modules/get-proto/package.json +0 -81
  287. package/node_modules/get-proto/test/index.js +0 -68
  288. package/node_modules/get-proto/tsconfig.json +0 -9
  289. package/node_modules/gopd/.eslintrc +0 -16
  290. package/node_modules/gopd/.github/FUNDING.yml +0 -12
  291. package/node_modules/gopd/CHANGELOG.md +0 -45
  292. package/node_modules/gopd/LICENSE +0 -21
  293. package/node_modules/gopd/README.md +0 -40
  294. package/node_modules/gopd/gOPD.d.ts +0 -1
  295. package/node_modules/gopd/gOPD.js +0 -4
  296. package/node_modules/gopd/index.d.ts +0 -5
  297. package/node_modules/gopd/index.js +0 -15
  298. package/node_modules/gopd/package.json +0 -77
  299. package/node_modules/gopd/test/index.js +0 -36
  300. package/node_modules/gopd/tsconfig.json +0 -9
  301. package/node_modules/has-property-descriptors/.eslintrc +0 -13
  302. package/node_modules/has-property-descriptors/.github/FUNDING.yml +0 -12
  303. package/node_modules/has-property-descriptors/.nycrc +0 -9
  304. package/node_modules/has-property-descriptors/CHANGELOG.md +0 -35
  305. package/node_modules/has-property-descriptors/README.md +0 -43
  306. package/node_modules/has-property-descriptors/index.js +0 -22
  307. package/node_modules/has-property-descriptors/package.json +0 -77
  308. package/node_modules/has-property-descriptors/test/index.js +0 -57
  309. package/node_modules/has-symbols/.eslintrc +0 -11
  310. package/node_modules/has-symbols/.github/FUNDING.yml +0 -12
  311. package/node_modules/has-symbols/.nycrc +0 -9
  312. package/node_modules/has-symbols/CHANGELOG.md +0 -91
  313. package/node_modules/has-symbols/LICENSE +0 -21
  314. package/node_modules/has-symbols/README.md +0 -46
  315. package/node_modules/has-symbols/index.d.ts +0 -3
  316. package/node_modules/has-symbols/index.js +0 -14
  317. package/node_modules/has-symbols/package.json +0 -111
  318. package/node_modules/has-symbols/shams.d.ts +0 -3
  319. package/node_modules/has-symbols/shams.js +0 -45
  320. package/node_modules/has-symbols/test/index.js +0 -22
  321. package/node_modules/has-symbols/test/shams/core-js.js +0 -29
  322. package/node_modules/has-symbols/test/shams/get-own-property-symbols.js +0 -29
  323. package/node_modules/has-symbols/test/tests.js +0 -58
  324. package/node_modules/has-symbols/tsconfig.json +0 -10
  325. package/node_modules/hasown/.eslintrc +0 -5
  326. package/node_modules/hasown/.github/FUNDING.yml +0 -12
  327. package/node_modules/hasown/.nycrc +0 -13
  328. package/node_modules/hasown/CHANGELOG.md +0 -40
  329. package/node_modules/hasown/LICENSE +0 -21
  330. package/node_modules/hasown/README.md +0 -40
  331. package/node_modules/hasown/index.d.ts +0 -3
  332. package/node_modules/hasown/index.js +0 -8
  333. package/node_modules/hasown/package.json +0 -92
  334. package/node_modules/hasown/tsconfig.json +0 -6
  335. package/node_modules/isarray/LICENSE +0 -21
  336. package/node_modules/isarray/README.md +0 -38
  337. package/node_modules/isarray/index.js +0 -5
  338. package/node_modules/isarray/package.json +0 -48
  339. package/node_modules/json-stable-stringify/.eslintrc +0 -31
  340. package/node_modules/json-stable-stringify/.github/FUNDING.yml +0 -12
  341. package/node_modules/json-stable-stringify/CHANGELOG.md +0 -160
  342. package/node_modules/json-stable-stringify/LICENSE +0 -21
  343. package/node_modules/json-stable-stringify/README.md +0 -157
  344. package/node_modules/json-stable-stringify/example/key_cmp.js +0 -9
  345. package/node_modules/json-stable-stringify/example/nested.js +0 -7
  346. package/node_modules/json-stable-stringify/example/str.js +0 -7
  347. package/node_modules/json-stable-stringify/example/value_cmp.js +0 -12
  348. package/node_modules/json-stable-stringify/index.d.ts +0 -25
  349. package/node_modules/json-stable-stringify/index.js +0 -124
  350. package/node_modules/json-stable-stringify/package.json +0 -88
  351. package/node_modules/json-stable-stringify/test/cmp.js +0 -33
  352. package/node_modules/json-stable-stringify/test/nested.js +0 -48
  353. package/node_modules/json-stable-stringify/test/replacer.js +0 -81
  354. package/node_modules/json-stable-stringify/test/space.js +0 -127
  355. package/node_modules/json-stable-stringify/test/str.js +0 -46
  356. package/node_modules/json-stable-stringify/test/to-json.js +0 -22
  357. package/node_modules/json-stable-stringify/tsconfig.json +0 -10
  358. package/node_modules/jsonify/.eslintrc +0 -21
  359. package/node_modules/jsonify/.github/FUNDING.yml +0 -12
  360. package/node_modules/jsonify/CHANGELOG.md +0 -48
  361. package/node_modules/jsonify/README.md +0 -66
  362. package/node_modules/jsonify/index.js +0 -4
  363. package/node_modules/jsonify/lib/parse.js +0 -261
  364. package/node_modules/jsonify/lib/stringify.js +0 -151
  365. package/node_modules/jsonify/package.json +0 -62
  366. package/node_modules/jsonify/test/parse.js +0 -20
  367. package/node_modules/jsonify/test/stringify.js +0 -18
  368. package/node_modules/math-intrinsics/.eslintrc +0 -16
  369. package/node_modules/math-intrinsics/.github/FUNDING.yml +0 -12
  370. package/node_modules/math-intrinsics/CHANGELOG.md +0 -24
  371. package/node_modules/math-intrinsics/LICENSE +0 -21
  372. package/node_modules/math-intrinsics/README.md +0 -50
  373. package/node_modules/math-intrinsics/abs.d.ts +0 -1
  374. package/node_modules/math-intrinsics/abs.js +0 -4
  375. package/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +0 -3
  376. package/node_modules/math-intrinsics/constants/maxArrayLength.js +0 -4
  377. package/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +0 -3
  378. package/node_modules/math-intrinsics/constants/maxSafeInteger.js +0 -5
  379. package/node_modules/math-intrinsics/constants/maxValue.d.ts +0 -3
  380. package/node_modules/math-intrinsics/constants/maxValue.js +0 -5
  381. package/node_modules/math-intrinsics/floor.d.ts +0 -1
  382. package/node_modules/math-intrinsics/floor.js +0 -4
  383. package/node_modules/math-intrinsics/isFinite.d.ts +0 -3
  384. package/node_modules/math-intrinsics/isFinite.js +0 -12
  385. package/node_modules/math-intrinsics/isInteger.d.ts +0 -3
  386. package/node_modules/math-intrinsics/isInteger.js +0 -16
  387. package/node_modules/math-intrinsics/isNaN.d.ts +0 -1
  388. package/node_modules/math-intrinsics/isNaN.js +0 -6
  389. package/node_modules/math-intrinsics/isNegativeZero.d.ts +0 -3
  390. package/node_modules/math-intrinsics/isNegativeZero.js +0 -6
  391. package/node_modules/math-intrinsics/max.d.ts +0 -1
  392. package/node_modules/math-intrinsics/max.js +0 -4
  393. package/node_modules/math-intrinsics/min.d.ts +0 -1
  394. package/node_modules/math-intrinsics/min.js +0 -4
  395. package/node_modules/math-intrinsics/mod.d.ts +0 -3
  396. package/node_modules/math-intrinsics/mod.js +0 -9
  397. package/node_modules/math-intrinsics/package.json +0 -86
  398. package/node_modules/math-intrinsics/pow.d.ts +0 -1
  399. package/node_modules/math-intrinsics/pow.js +0 -4
  400. package/node_modules/math-intrinsics/round.d.ts +0 -1
  401. package/node_modules/math-intrinsics/round.js +0 -4
  402. package/node_modules/math-intrinsics/sign.d.ts +0 -3
  403. package/node_modules/math-intrinsics/sign.js +0 -11
  404. package/node_modules/math-intrinsics/test/index.js +0 -192
  405. package/node_modules/math-intrinsics/tsconfig.json +0 -3
  406. package/node_modules/object-keys/.editorconfig +0 -13
  407. package/node_modules/object-keys/.eslintrc +0 -17
  408. package/node_modules/object-keys/.travis.yml +0 -277
  409. package/node_modules/object-keys/CHANGELOG.md +0 -232
  410. package/node_modules/object-keys/LICENSE +0 -21
  411. package/node_modules/object-keys/README.md +0 -76
  412. package/node_modules/object-keys/implementation.js +0 -122
  413. package/node_modules/object-keys/index.js +0 -32
  414. package/node_modules/object-keys/isArguments.js +0 -17
  415. package/node_modules/object-keys/package.json +0 -88
  416. package/node_modules/object-keys/test/index.js +0 -5
  417. package/node_modules/set-function-length/.eslintrc +0 -27
  418. package/node_modules/set-function-length/.github/FUNDING.yml +0 -12
  419. package/node_modules/set-function-length/.nycrc +0 -13
  420. package/node_modules/set-function-length/CHANGELOG.md +0 -70
  421. package/node_modules/set-function-length/LICENSE +0 -21
  422. package/node_modules/set-function-length/README.md +0 -56
  423. package/node_modules/set-function-length/env.d.ts +0 -9
  424. package/node_modules/set-function-length/env.js +0 -25
  425. package/node_modules/set-function-length/index.d.ts +0 -7
  426. package/node_modules/set-function-length/index.js +0 -42
  427. package/node_modules/set-function-length/package.json +0 -102
  428. package/node_modules/set-function-length/tsconfig.json +0 -9
  429. package/node_modules/yazl/README.md +0 -457
  430. package/node_modules/yazl/index.js +0 -826
  431. package/node_modules/yazl/package.json +0 -34
  432. package/tsconfig.tsbuildinfo +0 -1
@@ -29,7 +29,7 @@ class VariableType {
29
29
  }
30
30
  exports.VariableType = VariableType;
31
31
  _a = JSII_RTTI_SYMBOL_1;
32
- VariableType[_a] = { fqn: "cdktn.VariableType", version: "0.23.1" };
32
+ VariableType[_a] = { fqn: "cdktn.VariableType", version: "0.23.3" };
33
33
  VariableType.STRING = "string";
34
34
  VariableType.NUMBER = "number";
35
35
  VariableType.BOOL = "bool";
@@ -157,5 +157,5 @@ class TerraformVariable extends terraform_element_1.TerraformElement {
157
157
  }
158
158
  exports.TerraformVariable = TerraformVariable;
159
159
  _b = JSII_RTTI_SYMBOL_1;
160
- TerraformVariable[_b] = { fqn: "cdktn.TerraformVariable", version: "0.23.1" };
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLXZhcmlhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGVycmFmb3JtLXZhcmlhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0EsMkRBQXVEO0FBQ3ZELGlDQUFvRDtBQUNwRCxxQ0FBaUM7QUFDakMsaURBQXFDO0FBS3JDLCtDQUErQztBQUMvQyxNQUFzQixZQUFZO0lBc0J6QixNQUFNLENBQUMsSUFBSSxDQUFDLElBQVk7UUFDN0IsT0FBTyxRQUFRLElBQUksR0FBRyxDQUFDO0lBQ3pCLENBQUM7SUFFTSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQVk7UUFDNUIsT0FBTyxPQUFPLElBQUksR0FBRyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQVk7UUFDNUIsT0FBTyxPQUFPLElBQUksR0FBRyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsUUFBa0I7UUFDdkMsT0FBTyxTQUFTLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUN6QyxDQUFDO0lBRU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFxQztRQUN4RCxPQUFPLFdBQVcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7YUFDdEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUNwQixDQUFDOztBQTFDSCxvQ0EyQ0M7OztBQTFDd0IsbUJBQU0sR0FBRyxRQUFRLENBQUM7QUFDbEIsbUJBQU0sR0FBRyxRQUFRLENBQUM7QUFDbEIsaUJBQUksR0FBRyxNQUFNLENBQUM7QUFDZCxnQkFBRyxHQUFHLEtBQUssQ0FBQztBQUVaLGlCQUFJLEdBQUcsTUFBTSxDQUFDO0FBQ2QsZ0JBQUcsR0FB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bkIsT0FBTztZQUNMLFFBQVEsRUFBRTtnQkFDUixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUEsZ0JBQVMsRUFDaEMsSUFBQSxzQkFBZSxFQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLEVBQy9DLElBQUksQ0FBQyxZQUFZLENBQ2xCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLFdBQVc7UUFDaEIsT0FBTztZQUNMLFFBQVEsRUFBRTtnQkFDUixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUEsZ0JBQVMsRUFDaEMsSUFBQSxzQkFBZSxFQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLEVBQzVDLElBQUksQ0FBQyxZQUFZLENBQ2xCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDOztBQTdJSCw4Q0E4SUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFRlcnJhZm9ybUVsZW1lbnQgfSBmcm9tIFwiLi90ZXJyYWZvcm0tZWxlbWVudFwiO1xuaW1wb3J0IHsga2V5c1RvU25ha2VDYXNlLCBkZWVwTWVyZ2UgfSBmcm9tIFwiLi91dGlsXCI7XG5pbXBvcnQgeyBUb2tlbiB9IGZyb20gXCIuL3Rva2Vuc1wiO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSBcIi4vdGZFeHByZXNzaW9uXCI7XG5pbXBvcnQgeyBJUmVzb2x2YWJsZSB9IGZyb20gXCIuL3Rva2Vucy9yZXNvbHZhYmxlXCI7XG5pbXBvcnQgeyBJVGVycmFmb3JtQWRkcmVzc2FibGUgfSBmcm9tIFwiLi90ZXJyYWZvcm0tYWRkcmVzc2FibGVcIjtcbmltcG9ydCB7IFRlcnJhZm9ybVZhcmlhYmxlVmFsaWRhdGlvbkNvbmZpZyB9IGZyb20gXCIuL3RlcnJhZm9ybS1jb25kaXRpb25zXCI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVmFyaWFibGVUeXBlIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTVFJJTkcgPSBcInN0cmluZ1wiO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5VTUJFUiA9IFwibnVtYmVyXCI7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQk9PTCA9IFwiYm9vbFwiO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFOWSA9IFwiYW55XCI7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBMSVNUID0gXCJsaXN0XCI7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTUFQID0gXCJtYXBcIjtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTRVQgPSBcInNldFwiO1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTElTVF9TVFJJTkcgPSBcImxpc3Qoc3RyaW5nKVwiO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExJU1RfTlVNQkVSID0gXCJsaXN0KG51bWJlcilcIjtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBMSVNUX0JPT0wgPSBcImxpc3QoYm9vbClcIjtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1BUF9TVFJJTkcgPSBcIm1hcChzdHJpbmcpXCI7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTUFQX05VTUJFUiA9IFwibWFwKG51bWJlcilcIjtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBNQVBfQk9PTCA9IFwibWFwKGJvb2wpXCI7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTRVRfU1RSSU5HID0gXCJzZXQoc3RyaW5nKVwiO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNFVF9OVU1CRVIgPSBcInNldChudW1iZXIpXCI7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU0VUX0JPT0wgPSBcInNldChib29sKVwiO1xuXG4gIHB1YmxpYyBzdGF0aWMgbGlzdCh0eXBlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYGxpc3QoJHt0eXBlfSlgO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBtYXAodHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGBtYXAoJHt0eXBlfSlgO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzZXQodHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGBzZXQoJHt0eXBlfSlgO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyB0dXBsZSguLi5lbGVtZW50czogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gYHR1cGxlKCR7ZWxlbWVudHMuam9pbihcIiwgXCIpfSlgO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBvYmplY3QoYXR0cmlidXRlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgIHJldHVybiBgb2JqZWN0KHske09iamVjdC5rZXlzKGF0dHJpYnV0ZXMpXG4gICAgICAubWFwKChrKSA9PiBrICsgXCI9XCIgKyBhdHRyaWJ1dGVzW2tdKVxuICAgICAgLmpvaW4oXCIsIFwiKX19KWA7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXJyYWZvcm1WYXJpYWJsZUNvbmZpZyB7XG4gIHJlYWRvbmx5IGRlZmF1bHQ/OiBhbnk7XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBhcmd1bWVudCBpbiBhIHZhcmlhYmxlIGJsb2NrIGFsbG93cyB5b3UgdG8gcmVzdHJpY3QgdGhlIHR5cGUgb2YgdmFsdWUgdGhhdCB3aWxsIGJlIGFjY2VwdGVkIGFzIHRoZSB2YWx1ZSBmb3IgYSB2YXJpYWJsZS4gSWYgbm8gdHlwZSBjb25zdHJhaW50IGlzIHNldCB0aGVuIGEgdmFsdWUgb2YgYW55IHR5cGUgaXMgYWNjZXB0ZWQuXG4gICAqXG4gICAqIFdoaWxlIHR5cGUgY29uc3RyYWludHMgYXJlIG9wdGlvbmFsLCB3ZSByZWNvbW1lbmQgc3BlY2lmeWluZyB0aGVtOyB0aGV5IHNlcnZlIGFzIGVhc3kgcmVtaW5kZXJzIGZvciB1c2VycyBvZiB0aGUgbW9kdWxlLCBhbmQgYWxsb3cgVGVycmFmb3JtIHRvIHJldHVybiBhIGhlbHBmdWwgZXJyb3IgbWVzc2FnZSBpZiB0aGUgd3JvbmcgdHlwZSBpcyB1c2VkLlxuICAgKlxuICAgKiBUeXBlIGNvbnN0cmFpbnRzIGFyZSBjcmVhdGVkIGZyb20gYSBtaXh0dXJlIG9mIHR5cGUga2V5d29yZHMgYW5kIHR5cGUgY29uc3RydWN0b3JzLiBUaGUgc3VwcG9ydGVkIHR5cGUga2V5d29yZHMgYXJlOlxuICAgKlxuICAgKiAtIHN0cmluZ1xuICAgKiAtIG51bWJlclxuICAgKiAtIGJvb2xcbiAgICpcbiAgICogVGhlIHR5cGUgY29uc3RydWN0b3JzIGFsbG93IHlvdSB0byBzcGVjaWZ5IGNvbXBsZXggdHlwZXMgc3VjaCBhcyBjb2xsZWN0aW9uczpcbiAgICpcbiAgICogLSBsaXN0KFxcPFRZUEVcXD4pXG4gICAqIC0gc2V0KFxcPFRZUEVcXD4pXG4gICAqIC0gbWFwKFxcPFRZUEVcXD4pXG4gICAqIC0gb2JqZWN0KHtcXDxBVFRSIE5BTUVcXD4gPSBcXDxUWVBFXFw+LCAuLi4gfSlcbiAgICogLSB0dXBsZShbXFw8VFlQRVxcPiwgLi4uXSlcbiAgICpcbiAgICogVGhlIGtleXdvcmQgYW55IG1heSBiZSB1c2VkIHRvIGluZGljYXRlIHRoYXQgYW55IHR5cGUgaXMgYWNjZXB0YWJsZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIG1lYW5pbmcgYW5kIGJlaGF2aW9yIG9mIHRoZXNlIGRpZmZlcmVudCB0eXBlcywgYXMgd2VsbCBhcyBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCBhdXRvbWF0aWMgY29udmVyc2lvbiBvZiBjb21wbGV4IHR5cGVzLCByZWZlciB0byB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIuaGFzaGljb3JwLmNvbS90ZXJyYWZvcm0vbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvdHlwZS1jb25zdHJhaW50cyBUeXBlIENvbnN0cmFpbnRzfS5cbiAgICpcbiAgICogSWYgYm90aCB0aGUgdHlwZSBhbmQgZGVmYXVsdCBhcmd1bWVudHMgYXJlIHNwZWNpZmllZCwgdGhlIGdpdmVuIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSBjb252ZXJ0aWJsZSB0byB0aGUgc3BlY2lmaWVkIHR5cGUuXG4gICAqL1xuICByZWFkb25seSB0eXBlPzogc3RyaW5nO1xuXG4gIHJlYWRvbmx5IHNlbnNpdGl2ZT86IGJvb2xlYW47XG5cbiAgLypcbiAgICogVGhlIG51bGxhYmxlIGFyZ3VtZW50IGluIGEgdmFyaWFibGUgYmxvY2sgY29udHJvbHMgd2hldGhlciB0aGUgbW9kdWxlIGNhbGxlciBtYXkgYXNzaWduIHRoZSB2YWx1ZSBudWxsIHRvIHRoZSB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IG51bGxhYmxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3BlY2lmeSBhcmJpdHJhcnkgY3VzdG9tIHZhbGlkYXRpb24gcnVsZXMgZm9yIGEgcGFydGljdWxhciB2YXJpYWJsZSB1c2luZyBhIHZhbGlkYXRpb24gYmxvY2sgbmVzdGVkIHdpdGhpbiB0aGUgY29ycmVzcG9uZGluZyB2YXJpYWJsZSBibG9ja1xuICAgKi9cbiAgcmVhZG9ubHkgdmFsaWRhdGlvbj86IFRlcnJhZm9ybVZhcmlhYmxlVmFsaWRhdGlvbkNvbmZpZ1tdO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGNsYXNzIFRlcnJhZm9ybVZhcmlhYmxlXG4gIGV4dGVuZHMgVGVycmFmb3JtRWxlbWVudFxuICBpbXBsZW1lbnRzIElUZXJyYWZvcm1BZGRyZXNzYWJsZVxue1xuICBwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdD86IGFueTtcbiAgcHVibGljIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHNlbnNpdGl2ZT86IGJvb2xlYW47XG4gIHB1YmxpYyByZWFkb25seSBudWxsYWJsZT86IGJvb2xlYW47XG4gIHByaXZhdGUgX3ZhbGlkYXRpb24/OiBUZXJyYWZvcm1WYXJpYWJsZVZhbGlkYXRpb25Db25maWdbXTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBjb25maWc6IFRlcnJhZm9ybVZhcmlhYmxlQ29uZmlnKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBcInZhclwiKTtcblxuICAgIHRoaXMuZGVmYXVsdCA9IGNvbmZpZy5kZWZhdWx0O1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBjb25maWcuZGVzY3JpcHRpb247XG4gICAgdGhpcy50eXBlID0gY29uZmlnLnR5cGU7XG4gICAgdGhpcy5zZW5zaXRpdmUgPSBjb25maWcuc2Vuc2l0aXZlO1xuICAgIHRoaXMubnVsbGFibGUgPSBjb25maWcubnVsbGFibGU7XG4gICAgdGhpcy5fdmFsaWRhdGlvbiA9IGNvbmZpZy52YWxpZGF0aW9uO1xuICB9XG5cbiAgcHVibGljIGdldCBzdHJpbmdWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBUb2tlbi5hc1N0cmluZyh0aGlzLmludGVycG9sYXRpb24oKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG51bWJlclZhbHVlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIFRva2VuLmFzTnVtYmVyKHRoaXMuaW50ZXJwb2xhdGlvbigpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGlzdFZhbHVlKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gVG9rZW4uYXNMaXN0KHRoaXMuaW50ZXJwb2xhdGlvbigpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYm9vbGVhblZhbHVlKCk6IElSZXNvbHZhYmxlIHtcbiAgICByZXR1cm4gdGhpcy5pbnRlcnBvbGF0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIFRva2VuLmFzQW55KHRoaXMuaW50ZXJwb2xhdGlvbigpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsaWRhdGlvbigpOiBUZXJyYWZvcm1WYXJpYWJsZVZhbGlkYXRpb25Db25maWdbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRpb247XG4gIH1cblxuICBwdWJsaWMgYWRkVmFsaWRhdGlvbih2YWxpZGF0aW9uOiBUZXJyYWZvcm1WYXJpYWJsZVZhbGlkYXRpb25Db25maWcpIHtcbiAgICBpZiAoIXRoaXMuX3ZhbGlkYXRpb24pIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRpb24gPSBbXTtcbiAgICB9XG5cbiAgICB0aGlzLl92YWxpZGF0aW9uLnB1c2godmFsaWRhdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGludGVycG9sYXRpb24oKTogSVJlc29sdmFibGUge1xuICAgIHJldHVybiByZWYoYHZhci4ke3RoaXMuZnJpZW5kbHlVbmlxdWVJZH1gLCB0aGlzLmNka3RmU3RhY2spO1xuICB9XG5cbiAgcHVibGljIHN5bnRoZXNpemVIY2xBdHRyaWJ1dGVzKCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIGNvbnN0IGF0dHJzID0ge1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB2YWx1ZTogdGhpcy5kZWZhdWx0LFxuICAgICAgICB0eXBlOiBcImFueVwiLFxuICAgICAgfSxcblxuICAgICAgZGVzY3JpcHRpb246IHtcbiAgICAgICAgdmFsdWU6IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAgdHlwZToge1xuICAgICAgICB2YWx1ZTogdGhpcy50eXBlLFxuICAgICAgICB0eXBlOiBcInR5cGVcIixcbiAgICAgIH0sXG4gICAgICBzZW5zaXRpdmU6IHtcbiAgICAgICAgdmFsdWU6IHRoaXMuc2Vuc2l0aXZlLFxuICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcImJvb2xlYW5cIixcbiAgICAgIH0sXG4gICAgICBudWxsYWJsZToge1xuICAgICAgICB2YWx1ZTogdGhpcy5udWxsYWJsZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJib29sZWFuXCIsXG4gICAgICB9LFxuICAgICAgdmFsaWRhdGlvbjoge1xuICAgICAgICB2YWx1ZTogdGhpcy52YWxpZGF0aW9uPy5tYXAoKHZhbGlkYXRpb24pID0+ICh7XG4gICAgICAgICAgZXJyb3JfbWVzc2FnZTogdmFsaWRhdGlvbi5lcnJvck1lc3NhZ2UsXG4gICAgICAgICAgY29uZGl0aW9uOiB2YWxpZGF0aW9uLmNvbmRpdGlvbixcbiAgICAgICAgfSkpLFxuICAgICAgICBpc0Jsb2NrOiB0cnVlLFxuICAgICAgICB0eXBlOiBcImxpc3RcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJvYmplY3RMaXN0XCIsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgT2JqZWN0LmVudHJpZXMoYXR0cnMpLmZpbHRlcigoW18sIHZhbHVlXSkgPT4gISF2YWx1ZT8udmFsdWUpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc3ludGhlc2l6ZUF0dHJpYnV0ZXMoKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRlZmF1bHQ6IHRoaXMuZGVmYXVsdCxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgc2Vuc2l0aXZlOiB0aGlzLnNlbnNpdGl2ZSxcbiAgICAgIG51bGxhYmxlOiB0aGlzLm51bGxhYmxlLFxuICAgICAgdmFsaWRhdGlvbjogdGhpcy52YWxpZGF0aW9uPy5tYXAoKHZhbGlkYXRpb24pID0+ICh7XG4gICAgICAgIGVycm9yX21lc3NhZ2U6IHZhbGlkYXRpb24uZXJyb3JNZXNzYWdlLFxuICAgICAgICBjb25kaXRpb246IHZhbGlkYXRpb24uY29uZGl0aW9uLFxuICAgICAgfSkpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdG9IY2xUZXJyYWZvcm0oKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFyaWFibGU6IHtcbiAgICAgICAgW3RoaXMuZnJpZW5kbHlVbmlxdWVJZF06IGRlZXBNZXJnZShcbiAgICAgICAgICBrZXlzVG9TbmFrZUNhc2UodGhpcy5zeW50aGVzaXplSGNsQXR0cmlidXRlcygpKSxcbiAgICAgICAgICB0aGlzLnJhd092ZXJyaWRlcyxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyB0b1RlcnJhZm9ybSgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICB2YXJpYWJsZToge1xuICAgICAgICBbdGhpcy5mcmllbmRseVVuaXF1ZUlkXTogZGVlcE1lcmdlKFxuICAgICAgICAgIGtleXNUb1NuYWtlQ2FzZSh0aGlzLnN5bnRoZXNpemVBdHRyaWJ1dGVzKCkpLFxuICAgICAgICAgIHRoaXMucmF3T3ZlcnJpZGVzLFxuICAgICAgICApLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIGEgc3RyaW5nIHRva2VuIHJlZmVyZW5jaW5nIHRoZSB2YWx1ZSBvZiB0aGlzIHZhcmlhYmxlXG4gICAqL1xuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN0cmluZ1ZhbHVlO1xuICB9XG59XG4iXX0=
160
+ TerraformVariable[_b] = { fqn: "cdktn.TerraformVariable", version: "0.23.3" };
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLXZhcmlhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RlcnJhZm9ybS12YXJpYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLDJEQUF1RDtBQUN2RCxpQ0FBb0Q7QUFDcEQscUNBQWlDO0FBQ2pDLGlEQUFxQztBQUtyQywrQ0FBK0M7QUFDL0MsTUFBc0IsWUFBWTtJQXNCekIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFZO1FBQzdCLE9BQU8sUUFBUSxJQUFJLEdBQUcsQ0FBQztJQUN6QixDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFZO1FBQzVCLE9BQU8sT0FBTyxJQUFJLEdBQUcsQ0FBQztJQUN4QixDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFZO1FBQzVCLE9BQU8sT0FBTyxJQUFJLEdBQUcsQ0FBQztJQUN4QixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLFFBQWtCO1FBQ3ZDLE9BQU8sU0FBUyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDekMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBcUM7UUFDeEQsT0FBTyxXQUFXLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO2FBQ3RDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDcEIsQ0FBQzs7QUExQ0gsb0NBMkNDOzs7QUExQ3dCLG1CQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ2xCLG1CQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ2xCLGlCQUFJLEdBQUcsTUFBTSxDQUFDO0FBQ2QsZ0JBQUcsR0FBRyxLQUFLLENBQUM7QUFFWixpQkFBSSxHQUFHLE1BQU0sQ0FBQztBQUNkLGdC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QUFjO1FBQ25CLE9BQU87WUFDTCxRQUFRLEVBQUU7Z0JBQ1IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFBLGdCQUFTLEVBQ2hDLElBQUEsc0JBQWUsRUFBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxFQUMvQyxJQUFJLENBQUMsWUFBWSxDQUNsQjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU87WUFDTCxRQUFRLEVBQUU7Z0JBQ1IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFBLGdCQUFTLEVBQ2hDLElBQUEsc0JBQWUsRUFBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxFQUM1QyxJQUFJLENBQUMsWUFBWSxDQUNsQjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQzs7QUE3SUgsOENBOElDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1FbGVtZW50IH0gZnJvbSBcIi4vdGVycmFmb3JtLWVsZW1lbnRcIjtcbmltcG9ydCB7IGtleXNUb1NuYWtlQ2FzZSwgZGVlcE1lcmdlIH0gZnJvbSBcIi4vdXRpbFwiO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tIFwiLi90b2tlbnNcIjtcbmltcG9ydCB7IHJlZiB9IGZyb20gXCIuL3RmRXhwcmVzc2lvblwiO1xuaW1wb3J0IHsgSVJlc29sdmFibGUgfSBmcm9tIFwiLi90b2tlbnMvcmVzb2x2YWJsZVwiO1xuaW1wb3J0IHsgSVRlcnJhZm9ybUFkZHJlc3NhYmxlIH0gZnJvbSBcIi4vdGVycmFmb3JtLWFkZHJlc3NhYmxlXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1WYXJpYWJsZVZhbGlkYXRpb25Db25maWcgfSBmcm9tIFwiLi90ZXJyYWZvcm0tY29uZGl0aW9uc1wiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFZhcmlhYmxlVHlwZSB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU1RSSU5HID0gXCJzdHJpbmdcIjtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOVU1CRVIgPSBcIm51bWJlclwiO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEJPT0wgPSBcImJvb2xcIjtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBBTlkgPSBcImFueVwiO1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTElTVCA9IFwibGlzdFwiO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1BUCA9IFwibWFwXCI7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU0VUID0gXCJzZXRcIjtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExJU1RfU1RSSU5HID0gXCJsaXN0KHN0cmluZylcIjtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBMSVNUX05VTUJFUiA9IFwibGlzdChudW1iZXIpXCI7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTElTVF9CT09MID0gXCJsaXN0KGJvb2wpXCI7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBNQVBfU1RSSU5HID0gXCJtYXAoc3RyaW5nKVwiO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1BUF9OVU1CRVIgPSBcIm1hcChudW1iZXIpXCI7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTUFQX0JPT0wgPSBcIm1hcChib29sKVwiO1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU0VUX1NUUklORyA9IFwic2V0KHN0cmluZylcIjtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTRVRfTlVNQkVSID0gXCJzZXQobnVtYmVyKVwiO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNFVF9CT09MID0gXCJzZXQoYm9vbClcIjtcblxuICBwdWJsaWMgc3RhdGljIGxpc3QodHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGBsaXN0KCR7dHlwZX0pYDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgbWFwKHR5cGU6IHN0cmluZykge1xuICAgIHJldHVybiBgbWFwKCR7dHlwZX0pYDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2V0KHR5cGU6IHN0cmluZykge1xuICAgIHJldHVybiBgc2V0KCR7dHlwZX0pYDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdHVwbGUoLi4uZWxlbWVudHM6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIGB0dXBsZSgke2VsZW1lbnRzLmpvaW4oXCIsIFwiKX0pYDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgb2JqZWN0KGF0dHJpYnV0ZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICByZXR1cm4gYG9iamVjdCh7JHtPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKVxuICAgICAgLm1hcCgoaykgPT4gayArIFwiPVwiICsgYXR0cmlidXRlc1trXSlcbiAgICAgIC5qb2luKFwiLCBcIil9fSlgO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVycmFmb3JtVmFyaWFibGVDb25maWcge1xuICByZWFkb25seSBkZWZhdWx0PzogYW55O1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHR5cGUgYXJndW1lbnQgaW4gYSB2YXJpYWJsZSBibG9jayBhbGxvd3MgeW91IHRvIHJlc3RyaWN0IHRoZSB0eXBlIG9mIHZhbHVlIHRoYXQgd2lsbCBiZSBhY2NlcHRlZCBhcyB0aGUgdmFsdWUgZm9yIGEgdmFyaWFibGUuIElmIG5vIHR5cGUgY29uc3RyYWludCBpcyBzZXQgdGhlbiBhIHZhbHVlIG9mIGFueSB0eXBlIGlzIGFjY2VwdGVkLlxuICAgKlxuICAgKiBXaGlsZSB0eXBlIGNvbnN0cmFpbnRzIGFyZSBvcHRpb25hbCwgd2UgcmVjb21tZW5kIHNwZWNpZnlpbmcgdGhlbTsgdGhleSBzZXJ2ZSBhcyBlYXN5IHJlbWluZGVycyBmb3IgdXNlcnMgb2YgdGhlIG1vZHVsZSwgYW5kIGFsbG93IFRlcnJhZm9ybSB0byByZXR1cm4gYSBoZWxwZnVsIGVycm9yIG1lc3NhZ2UgaWYgdGhlIHdyb25nIHR5cGUgaXMgdXNlZC5cbiAgICpcbiAgICogVHlwZSBjb25zdHJhaW50cyBhcmUgY3JlYXRlZCBmcm9tIGEgbWl4dHVyZSBvZiB0eXBlIGtleXdvcmRzIGFuZCB0eXBlIGNvbnN0cnVjdG9ycy4gVGhlIHN1cHBvcnRlZCB0eXBlIGtleXdvcmRzIGFyZTpcbiAgICpcbiAgICogLSBzdHJpbmdcbiAgICogLSBudW1iZXJcbiAgICogLSBib29sXG4gICAqXG4gICAqIFRoZSB0eXBlIGNvbnN0cnVjdG9ycyBhbGxvdyB5b3UgdG8gc3BlY2lmeSBjb21wbGV4IHR5cGVzIHN1Y2ggYXMgY29sbGVjdGlvbnM6XG4gICAqXG4gICAqIC0gbGlzdChcXDxUWVBFXFw+KVxuICAgKiAtIHNldChcXDxUWVBFXFw+KVxuICAgKiAtIG1hcChcXDxUWVBFXFw+KVxuICAgKiAtIG9iamVjdCh7XFw8QVRUUiBOQU1FXFw+ID0gXFw8VFlQRVxcPiwgLi4uIH0pXG4gICAqIC0gdHVwbGUoW1xcPFRZUEVcXD4sIC4uLl0pXG4gICAqXG4gICAqIFRoZSBrZXl3b3JkIGFueSBtYXkgYmUgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IGFueSB0eXBlIGlzIGFjY2VwdGFibGUuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBtZWFuaW5nIGFuZCBiZWhhdmlvciBvZiB0aGVzZSBkaWZmZXJlbnQgdHlwZXMsIGFzIHdlbGwgYXMgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgYXV0b21hdGljIGNvbnZlcnNpb24gb2YgY29tcGxleCB0eXBlcywgcmVmZXIgdG8ge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLmhhc2hpY29ycC5jb20vdGVycmFmb3JtL2xhbmd1YWdlL2V4cHJlc3Npb25zL3R5cGUtY29uc3RyYWludHMgVHlwZSBDb25zdHJhaW50c30uXG4gICAqXG4gICAqIElmIGJvdGggdGhlIHR5cGUgYW5kIGRlZmF1bHQgYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQsIHRoZSBnaXZlbiBkZWZhdWx0IHZhbHVlIG11c3QgYmUgY29udmVydGlibGUgdG8gdGhlIHNwZWNpZmllZCB0eXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcblxuICByZWFkb25seSBzZW5zaXRpdmU/OiBib29sZWFuO1xuXG4gIC8qXG4gICAqIFRoZSBudWxsYWJsZSBhcmd1bWVudCBpbiBhIHZhcmlhYmxlIGJsb2NrIGNvbnRyb2xzIHdoZXRoZXIgdGhlIG1vZHVsZSBjYWxsZXIgbWF5IGFzc2lnbiB0aGUgdmFsdWUgbnVsbCB0byB0aGUgdmFyaWFibGUuXG4gICAqL1xuICByZWFkb25seSBudWxsYWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgYXJiaXRyYXJ5IGN1c3RvbSB2YWxpZGF0aW9uIHJ1bGVzIGZvciBhIHBhcnRpY3VsYXIgdmFyaWFibGUgdXNpbmcgYSB2YWxpZGF0aW9uIGJsb2NrIG5lc3RlZCB3aXRoaW4gdGhlIGNvcnJlc3BvbmRpbmcgdmFyaWFibGUgYmxvY2tcbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRpb24/OiBUZXJyYWZvcm1WYXJpYWJsZVZhbGlkYXRpb25Db25maWdbXTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBjbGFzcyBUZXJyYWZvcm1WYXJpYWJsZVxuICBleHRlbmRzIFRlcnJhZm9ybUVsZW1lbnRcbiAgaW1wbGVtZW50cyBJVGVycmFmb3JtQWRkcmVzc2FibGVcbntcbiAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHQ/OiBhbnk7XG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHR5cGU/OiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBzZW5zaXRpdmU/OiBib29sZWFuO1xuICBwdWJsaWMgcmVhZG9ubHkgbnVsbGFibGU/OiBib29sZWFuO1xuICBwcml2YXRlIF92YWxpZGF0aW9uPzogVGVycmFmb3JtVmFyaWFibGVWYWxpZGF0aW9uQ29uZmlnW107XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgY29uZmlnOiBUZXJyYWZvcm1WYXJpYWJsZUNvbmZpZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgXCJ2YXJcIik7XG5cbiAgICB0aGlzLmRlZmF1bHQgPSBjb25maWcuZGVmYXVsdDtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gY29uZmlnLmRlc2NyaXB0aW9uO1xuICAgIHRoaXMudHlwZSA9IGNvbmZpZy50eXBlO1xuICAgIHRoaXMuc2Vuc2l0aXZlID0gY29uZmlnLnNlbnNpdGl2ZTtcbiAgICB0aGlzLm51bGxhYmxlID0gY29uZmlnLm51bGxhYmxlO1xuICAgIHRoaXMuX3ZhbGlkYXRpb24gPSBjb25maWcudmFsaWRhdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RyaW5nVmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVG9rZW4uYXNTdHJpbmcodGhpcy5pbnRlcnBvbGF0aW9uKCkpO1xuICB9XG5cbiAgcHVibGljIGdldCBudW1iZXJWYWx1ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBUb2tlbi5hc051bWJlcih0aGlzLmludGVycG9sYXRpb24oKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxpc3RWYWx1ZSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFRva2VuLmFzTGlzdCh0aGlzLmludGVycG9sYXRpb24oKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGJvb2xlYW5WYWx1ZSgpOiBJUmVzb2x2YWJsZSB7XG4gICAgcmV0dXJuIHRoaXMuaW50ZXJwb2xhdGlvbigpO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiBUb2tlbi5hc0FueSh0aGlzLmludGVycG9sYXRpb24oKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbGlkYXRpb24oKTogVGVycmFmb3JtVmFyaWFibGVWYWxpZGF0aW9uQ29uZmlnW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl92YWxpZGF0aW9uO1xuICB9XG5cbiAgcHVibGljIGFkZFZhbGlkYXRpb24odmFsaWRhdGlvbjogVGVycmFmb3JtVmFyaWFibGVWYWxpZGF0aW9uQ29uZmlnKSB7XG4gICAgaWYgKCF0aGlzLl92YWxpZGF0aW9uKSB7XG4gICAgICB0aGlzLl92YWxpZGF0aW9uID0gW107XG4gICAgfVxuXG4gICAgdGhpcy5fdmFsaWRhdGlvbi5wdXNoKHZhbGlkYXRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnRlcnBvbGF0aW9uKCk6IElSZXNvbHZhYmxlIHtcbiAgICByZXR1cm4gcmVmKGB2YXIuJHt0aGlzLmZyaWVuZGx5VW5pcXVlSWR9YCwgdGhpcy5jZGt0ZlN0YWNrKTtcbiAgfVxuXG4gIHB1YmxpYyBzeW50aGVzaXplSGNsQXR0cmlidXRlcygpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBjb25zdCBhdHRycyA9IHtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgdmFsdWU6IHRoaXMuZGVmYXVsdCxcbiAgICAgICAgdHlwZTogXCJhbnlcIixcbiAgICAgIH0sXG5cbiAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgIHZhbHVlOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgICAgfSxcbiAgICAgIHR5cGU6IHtcbiAgICAgICAgdmFsdWU6IHRoaXMudHlwZSxcbiAgICAgICAgdHlwZTogXCJ0eXBlXCIsXG4gICAgICB9LFxuICAgICAgc2Vuc2l0aXZlOiB7XG4gICAgICAgIHZhbHVlOiB0aGlzLnNlbnNpdGl2ZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJib29sZWFuXCIsXG4gICAgICB9LFxuICAgICAgbnVsbGFibGU6IHtcbiAgICAgICAgdmFsdWU6IHRoaXMubnVsbGFibGUsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgfSxcbiAgICAgIHZhbGlkYXRpb246IHtcbiAgICAgICAgdmFsdWU6IHRoaXMudmFsaWRhdGlvbj8ubWFwKCh2YWxpZGF0aW9uKSA9PiAoe1xuICAgICAgICAgIGVycm9yX21lc3NhZ2U6IHZhbGlkYXRpb24uZXJyb3JNZXNzYWdlLFxuICAgICAgICAgIGNvbmRpdGlvbjogdmFsaWRhdGlvbi5jb25kaXRpb24sXG4gICAgICAgIH0pKSxcbiAgICAgICAgaXNCbG9jazogdHJ1ZSxcbiAgICAgICAgdHlwZTogXCJsaXN0XCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwib2JqZWN0TGlzdFwiLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIE9iamVjdC5lbnRyaWVzKGF0dHJzKS5maWx0ZXIoKFtfLCB2YWx1ZV0pID0+ICEhdmFsdWU/LnZhbHVlKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHN5bnRoZXNpemVBdHRyaWJ1dGVzKCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIHJldHVybiB7XG4gICAgICBkZWZhdWx0OiB0aGlzLmRlZmF1bHQsXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIHNlbnNpdGl2ZTogdGhpcy5zZW5zaXRpdmUsXG4gICAgICBudWxsYWJsZTogdGhpcy5udWxsYWJsZSxcbiAgICAgIHZhbGlkYXRpb246IHRoaXMudmFsaWRhdGlvbj8ubWFwKCh2YWxpZGF0aW9uKSA9PiAoe1xuICAgICAgICBlcnJvcl9tZXNzYWdlOiB2YWxpZGF0aW9uLmVycm9yTWVzc2FnZSxcbiAgICAgICAgY29uZGl0aW9uOiB2YWxpZGF0aW9uLmNvbmRpdGlvbixcbiAgICAgIH0pKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHRvSGNsVGVycmFmb3JtKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhcmlhYmxlOiB7XG4gICAgICAgIFt0aGlzLmZyaWVuZGx5VW5pcXVlSWRdOiBkZWVwTWVyZ2UoXG4gICAgICAgICAga2V5c1RvU25ha2VDYXNlKHRoaXMuc3ludGhlc2l6ZUhjbEF0dHJpYnV0ZXMoKSksXG4gICAgICAgICAgdGhpcy5yYXdPdmVycmlkZXMsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdG9UZXJyYWZvcm0oKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFyaWFibGU6IHtcbiAgICAgICAgW3RoaXMuZnJpZW5kbHlVbmlxdWVJZF06IGRlZXBNZXJnZShcbiAgICAgICAgICBrZXlzVG9TbmFrZUNhc2UodGhpcy5zeW50aGVzaXplQXR0cmlidXRlcygpKSxcbiAgICAgICAgICB0aGlzLnJhd092ZXJyaWRlcyxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBhIHN0cmluZyB0b2tlbiByZWZlcmVuY2luZyB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZVxuICAgKi9cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdWYWx1ZTtcbiAgfVxufVxuIl19
@@ -57,4 +57,4 @@ function setupJest() {
57
57
  },
58
58
  });
59
59
  }
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImplc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF1RUEsOEJBNkZDO0FBcEtELCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMseUNBQWdGO0FBQ2hGLDBDQUlxQjtBQUNyQiwwQ0FNcUI7QUFvQ3JCLDBIQUEwSDtBQUMxSCxpRkFBaUY7QUFDakYsdUZBQXVGO0FBQ3ZGLFNBQVMsa0JBQWtCLENBQ3pCLEtBQVksRUFDWixrQkFBdUM7SUFFdkMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3BELE9BQU8sS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztTQUFNLENBQUM7UUFDTixJQUFLLE1BQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzQixNQUFNLE1BQU0sR0FBSSxNQUFjLENBQUMsTUFBTSxDQUFDO1lBQ3RDLE9BQU8sTUFBTTtpQkFDVixlQUFlLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO2lCQUM5RCxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUEsNEJBQW1CLEdBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFnQixTQUFTO0lBQ3ZCLElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBQSxvQ0FBMkIsR0FBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBSSxNQUFjLENBQUMsTUFBb0IsQ0FBQztJQUVwRCxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ1osY0FBYyxDQUNaLFFBQWdCLEVBQ2hCLG1CQUF5QztZQUV6QyxPQUFPLElBQUEsOEJBQW1CLEVBQ3hCLElBQUEsMENBQStCLEVBQUMsa0JBQWtCLENBQUMsQ0FDakQsUUFBUSxFQUNSLG1CQUFtQixFQUNuQixFQUFFLENBQ0gsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUNELDRCQUE0QixDQUMxQixRQUFnQixFQUNoQixtQkFBeUMsRUFDekMsVUFBK0I7WUFFL0IsT0FBTyxJQUFBLDhCQUFtQixFQUN4QixJQUFBLDBDQUErQixFQUFDLGtCQUFrQixDQUFDLENBQ2pELFFBQVEsRUFDUixtQkFBbUIsRUFDbkIsVUFBVSxDQUNYLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCxnQkFBZ0IsQ0FDZCxRQUFnQixFQUNoQixxQkFBMkM7WUFFM0MsT0FBTyxJQUFBLDhCQUFtQixFQUN4QixJQUFBLDRDQUFpQyxFQUFDLGtCQUFrQixDQUFDLENBQ25ELFFBQVEsRUFDUixxQkFBcUIsRUFDckIsRUFBRSxDQUNILENBQ0YsQ0FBQztRQUNKLENBQUM7UUFDRCw4QkFBOEIsQ0FDNUIsUUFBZ0IsRUFDaEIscUJBQTJDLEVBQzNDLFVBQStCO1lBRS9CLE9BQU8sSUFBQSw4QkFBbUIsRUFDeEIsSUFBQSw0Q0FBaUMsRUFBQyxrQkFBa0IsQ0FBQyxDQUNuRCxRQUFRLEVBQ1IscUJBQXFCLEVBQ3JCLFVBQVUsQ0FDWCxDQUNGLENBQUM7UUFDSixDQUFDO1FBRUQsY0FBYyxDQUNaLFFBQWdCLEVBQ2hCLG1CQUF5QztZQUV6QyxPQUFPLElBQUEsOEJBQW1CLEVBQ3hCLElBQUEsMENBQStCLEVBQUMsa0JBQWtCLENBQUMsQ0FDakQsUUFBUSxFQUNSLG1CQUFtQixFQUNuQixFQUFFLENBQ0gsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUNELDRCQUE0QixDQUMxQixRQUFnQixFQUNoQixtQkFBeUMsRUFDekMsVUFBK0I7WUFFL0IsT0FBTyxJQUFBLDhCQUFtQixFQUN4QixJQUFBLDBDQUErQixFQUFDLGtCQUFrQixDQUFDLENBQ2pELFFBQVEsRUFDUixtQkFBbUIsRUFDbkIsVUFBVSxDQUNYLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCxrQkFBa0IsQ0FBQyxRQUFnQjtZQUNqQyxPQUFPLElBQUEsOEJBQW1CLEVBQUMsSUFBQSw2QkFBa0IsRUFBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFDRCxrQkFBa0IsQ0FBQyxRQUFnQjtZQUNqQyxPQUFPLElBQUEsOEJBQW1CLEVBQUMsSUFBQSw2QkFBa0IsRUFBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IGV4cGVjdE5vdEdsb2JhbGx5QWNjZXNzaWJsZSwgamVzdE5vdEluc3RhbnRpYXRlZCB9IGZyb20gXCIuLi8uLi9lcnJvcnNcIjtcbmltcG9ydCB7XG4gIGdldFRvSGF2ZURhdGFTb3VyY2VXaXRoUHJvcGVydGllcyxcbiAgdG9CZVZhbGlkVGVycmFmb3JtLFxuICB0b1BsYW5TdWNjZXNzZnVsbHksXG59IGZyb20gXCIuLi9tYXRjaGVyc1wiO1xuaW1wb3J0IHtcbiAgZ2V0VG9IYXZlUmVzb3VyY2VXaXRoUHJvcGVydGllcyxcbiAgZ2V0VG9IYXZlUHJvdmlkZXJXaXRoUHJvcGVydGllcyxcbiAgVGVycmFmb3JtQ29uc3RydWN0b3IsXG4gIE1hdGNoZXJSZXR1cm5KZXN0LFxuICByZXR1cm5NYXRjaGVyVG9KZXN0LFxufSBmcm9tIFwiLi4vbWF0Y2hlcnNcIjtcblxuLyogZXNsaW50LWRpc2FibGUgKi9cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgbmFtZXNwYWNlIGplc3Qge1xuICAgIGludGVyZmFjZSBNYXRjaGVyczxSPiB7XG4gICAgICB0b0hhdmVSZXNvdXJjZShyZXNvdXJjZUNvbnN0cnVjdG9yOiBUZXJyYWZvcm1Db25zdHJ1Y3Rvcik6IFI7XG4gICAgICB0b0hhdmVSZXNvdXJjZVdpdGhQcm9wZXJ0aWVzKFxuICAgICAgICByZXNvdXJjZUNvbnN0cnVjdG9yOiBUZXJyYWZvcm1Db25zdHJ1Y3RvcixcbiAgICAgICAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAgICk6IFI7XG5cbiAgICAgIHRvSGF2ZURhdGFTb3VyY2UoZGF0YVNvdXJjZUNvbnN0cnVjdG9yOiBUZXJyYWZvcm1Db25zdHJ1Y3Rvcik6IFI7XG4gICAgICB0b0hhdmVEYXRhU291cmNlV2l0aFByb3BlcnRpZXMoXG4gICAgICAgIGRhdGFTb3VyY2VDb25zdHJ1Y3RvcjogVGVycmFmb3JtQ29uc3RydWN0b3IsXG4gICAgICAgIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgICApOiBSO1xuXG4gICAgICB0b0hhdmVQcm92aWRlcihwcm92aWRlckNvbnN0cnVjdG9yOiBUZXJyYWZvcm1Db25zdHJ1Y3Rvcik6IFI7XG4gICAgICB0b0hhdmVQcm92aWRlcldpdGhQcm9wZXJ0aWVzKFxuICAgICAgICBwcm92aWRlckNvbnN0cnVjdG9yOiBUZXJyYWZvcm1Db25zdHJ1Y3RvcixcbiAgICAgICAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAgICk6IFI7XG5cbiAgICAgIHRvQmVWYWxpZFRlcnJhZm9ybSgpOiBSO1xuICAgICAgdG9QbGFuU3VjY2Vzc2Z1bGx5KCk6IFI7XG4gICAgfVxuICB9XG59XG5cbnR5cGUgSmVzdEV4cGVjdCA9IHtcbiAgZXh0ZW5kOiAoXG4gICAgbWF0Y2hlcnM6IFJlY29yZDxzdHJpbmcsICguLi5hcmdzOiBhbnlbXSkgPT4gTWF0Y2hlclJldHVybkplc3Q+LFxuICApID0+IHZvaWQ7XG59O1xuXG4vLyBKZXN0IHN1cHBvcnRzIGFzeW1ldHJpYyBtYXRjaGVycyAoaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2plc3QvYmxvYi9tYWluL3BhY2thZ2VzL2V4cGVjdC9zcmMvYXN5bW1ldHJpY01hdGNoZXJzLnRzKVxuLy8gVGhlc2UgbWF0Y2hlcnMgYXJlIGdyZWF0IGluIGV4cHJlc3NpbmcgcGFydGlhbCBlcXVhbGl0eSBpbiBhIGRlZXBseSBuZXN0ZWQgd2F5XG4vLyBBcyB3ZSB3YW50IHRvIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSB0ZXN0aW5nIGZyYW1ld29yayB3ZSBjYW4gbm90IHVzZSB0aGVtIGV2ZXJ5d2hlcmVcbmZ1bmN0aW9uIGplc3RQYXNzRXZhbHVhdGlvbihcbiAgaXRlbXM6IGFueVtdLFxuICBhc3NlcnRlZFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4pOiBib29sZWFuIHtcbiAgaWYgKE9iamVjdC5lbnRyaWVzKGFzc2VydGVkUHJvcGVydGllcykubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGl0ZW1zLmxlbmd0aCA+IDA7XG4gIH0gZWxzZSB7XG4gICAgaWYgKChnbG9iYWwgYXMgYW55KS5leHBlY3QpIHtcbiAgICAgIGNvbnN0IGV4cGVjdCA9IChnbG9iYWwgYXMgYW55KS5leHBlY3Q7XG4gICAgICByZXR1cm4gZXhwZWN0XG4gICAgICAgIC5hcnJheUNvbnRhaW5pbmcoW2V4cGVjdC5vYmplY3RDb250YWluaW5nKGFzc2VydGVkUHJvcGVydGllcyldKVxuICAgICAgICAuYXN5bW1ldHJpY01hdGNoKGl0ZW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgamVzdE5vdEluc3RhbnRpYXRlZCgpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBKZXN0KCkge1xuICBpZiAoIShcImV4cGVjdFwiIGluIGdsb2JhbCkpIHtcbiAgICB0aHJvdyBleHBlY3ROb3RHbG9iYWxseUFjY2Vzc2libGUoKTtcbiAgfVxuXG4gIGNvbnN0IGV4cGVjdCA9IChnbG9iYWwgYXMgYW55KS5leHBlY3QgYXMgSmVzdEV4cGVjdDtcblxuICBleHBlY3QuZXh0ZW5kKHtcbiAgICB0b0hhdmVSZXNvdXJjZShcbiAgICAgIHJlY2VpdmVkOiBzdHJpbmcsXG4gICAgICByZXNvdXJjZUNvbnN0cnVjdG9yOiBUZXJyYWZvcm1Db25zdHJ1Y3RvcixcbiAgICApIHtcbiAgICAgIHJldHVybiByZXR1cm5NYXRjaGVyVG9KZXN0KFxuICAgICAgICBnZXRUb0hhdmVSZXNvdXJjZVdpdGhQcm9wZXJ0aWVzKGplc3RQYXNzRXZhbHVhdGlvbikoXG4gICAgICAgICAgcmVjZWl2ZWQsXG4gICAgICAgICAgcmVzb3VyY2VDb25zdHJ1Y3RvcixcbiAgICAgICAgICB7fSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSxcbiAgICB0b0hhdmVSZXNvdXJjZVdpdGhQcm9wZXJ0aWVzKFxuICAgICAgcmVjZWl2ZWQ6IHN0cmluZyxcbiAgICAgIHJlc291cmNlQ29uc3RydWN0b3I6IFRlcnJhZm9ybUNvbnN0cnVjdG9yLFxuICAgICAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICApIHtcbiAgICAgIHJldHVybiByZXR1cm5NYXRjaGVyVG9KZXN0KFxuICAgICAgICBnZXRUb0hhdmVSZXNvdXJjZVdpdGhQcm9wZXJ0aWVzKGplc3RQYXNzRXZhbHVhdGlvbikoXG4gICAgICAgICAgcmVjZWl2ZWQsXG4gICAgICAgICAgcmVzb3VyY2VDb25zdHJ1Y3RvcixcbiAgICAgICAgICBwcm9wZXJ0aWVzLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9LFxuXG4gICAgdG9IYXZlRGF0YVNvdXJjZShcbiAgICAgIHJlY2VpdmVkOiBzdHJpbmcsXG4gICAgICBkYXRhU291cmNlQ29uc3RydWN0b3I6IFRlcnJhZm9ybUNvbnN0cnVjdG9yLFxuICAgICkge1xuICAgICAgcmV0dXJuIHJldHVybk1hdGNoZXJUb0plc3QoXG4gICAgICAgIGdldFRvSGF2ZURhdGFTb3VyY2VXaXRoUHJvcGVydGllcyhqZXN0UGFzc0V2YWx1YXRpb24pKFxuICAgICAgICAgIHJlY2VpdmVkLFxuICAgICAgICAgIGRhdGFTb3VyY2VDb25zdHJ1Y3RvcixcbiAgICAgICAgICB7fSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSxcbiAgICB0b0hhdmVEYXRhU291cmNlV2l0aFByb3BlcnRpZXMoXG4gICAgICByZWNlaXZlZDogc3RyaW5nLFxuICAgICAgZGF0YVNvdXJjZUNvbnN0cnVjdG9yOiBUZXJyYWZvcm1Db25zdHJ1Y3RvcixcbiAgICAgIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgKSB7XG4gICAgICByZXR1cm4gcmV0dXJuTWF0Y2hlclRvSmVzdChcbiAgICAgICAgZ2V0VG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzKGplc3RQYXNzRXZhbHVhdGlvbikoXG4gICAgICAgICAgcmVjZWl2ZWQsXG4gICAgICAgICAgZGF0YVNvdXJjZUNvbnN0cnVjdG9yLFxuICAgICAgICAgIHByb3BlcnRpZXMsXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH0sXG5cbiAgICB0b0hhdmVQcm92aWRlcihcbiAgICAgIHJlY2VpdmVkOiBzdHJpbmcsXG4gICAgICBwcm92aWRlckNvbnN0cnVjdG9yOiBUZXJyYWZvcm1Db25zdHJ1Y3RvcixcbiAgICApIHtcbiAgICAgIHJldHVybiByZXR1cm5NYXRjaGVyVG9KZXN0KFxuICAgICAgICBnZXRUb0hhdmVQcm92aWRlcldpdGhQcm9wZXJ0aWVzKGplc3RQYXNzRXZhbHVhdGlvbikoXG4gICAgICAgICAgcmVjZWl2ZWQsXG4gICAgICAgICAgcHJvdmlkZXJDb25zdHJ1Y3RvcixcbiAgICAgICAgICB7fSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSxcbiAgICB0b0hhdmVQcm92aWRlcldpdGhQcm9wZXJ0aWVzKFxuICAgICAgcmVjZWl2ZWQ6IHN0cmluZyxcbiAgICAgIHByb3ZpZGVyQ29uc3RydWN0b3I6IFRlcnJhZm9ybUNvbnN0cnVjdG9yLFxuICAgICAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICApIHtcbiAgICAgIHJldHVybiByZXR1cm5NYXRjaGVyVG9KZXN0KFxuICAgICAgICBnZXRUb0hhdmVQcm92aWRlcldpdGhQcm9wZXJ0aWVzKGplc3RQYXNzRXZhbHVhdGlvbikoXG4gICAgICAgICAgcmVjZWl2ZWQsXG4gICAgICAgICAgcHJvdmlkZXJDb25zdHJ1Y3RvcixcbiAgICAgICAgICBwcm9wZXJ0aWVzLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9LFxuXG4gICAgdG9CZVZhbGlkVGVycmFmb3JtKHJlY2VpdmVkOiBzdHJpbmcpIHtcbiAgICAgIHJldHVybiByZXR1cm5NYXRjaGVyVG9KZXN0KHRvQmVWYWxpZFRlcnJhZm9ybShyZWNlaXZlZCkpO1xuICAgIH0sXG4gICAgdG9QbGFuU3VjY2Vzc2Z1bGx5KHJlY2VpdmVkOiBzdHJpbmcpIHtcbiAgICAgIHJldHVybiByZXR1cm5NYXRjaGVyVG9KZXN0KHRvUGxhblN1Y2Nlc3NmdWxseShyZWNlaXZlZCkpO1xuICAgIH0sXG4gIH0pO1xufVxuIl19
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0aW5nL2FkYXB0ZXJzL2plc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF1RUEsOEJBNkZDO0FBcEtELCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMseUNBQWdGO0FBQ2hGLDBDQUlxQjtBQUNyQiwwQ0FNcUI7QUFvQ3JCLDBIQUEwSDtBQUMxSCxpRkFBaUY7QUFDakYsdUZBQXVGO0FBQ3ZGLFNBQVMsa0JBQWtCLENBQ3pCLEtBQVksRUFDWixrQkFBdUM7SUFFdkMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3BELE9BQU8sS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztTQUFNLENBQUM7UUFDTixJQUFLLE1BQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzQixNQUFNLE1BQU0sR0FBSSxNQUFjLENBQUMsTUFBTSxDQUFDO1lBQ3RDLE9BQU8sTUFBTTtpQkFDVixlQUFlLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO2lCQUM5RCxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUEsNEJBQW1CLEdBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFnQixTQUFTO0lBQ3ZCLElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBQSxvQ0FBMkIsR0FBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBSSxNQUFjLENBQUMsTUFBb0IsQ0FBQztJQUVwRCxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ1osY0FBYyxDQUNaLFFBQWdCLEVBQ2hCLG1CQUF5QztZQUV6QyxPQUFPLElBQUEsOEJBQW1CLEVBQ3hCLElBQUEsMENBQStCLEVBQUMsa0JBQWtCLENBQUMsQ0FDakQsUUFBUSxFQUNSLG1CQUFtQixFQUNuQixFQUFFLENBQ0gsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUNELDRCQUE0QixDQUMxQixRQUFnQixFQUNoQixtQkFBeUMsRUFDekMsVUFBK0I7WUFFL0IsT0FBTyxJQUFBLDhCQUFtQixFQUN4QixJQUFBLDBDQUErQixFQUFDLGtCQUFrQixDQUFDLENBQ2pELFFBQVEsRUFDUixtQkFBbUIsRUFDbkIsVUFBVSxDQUNYLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCxnQkFBZ0IsQ0FDZCxRQUFnQixFQUNoQixxQkFBMkM7WUFFM0MsT0FBTyxJQUFBLDhCQUFtQixFQUN4QixJQUFBLDRDQUFpQyxFQUFDLGtCQUFrQixDQUFDLENBQ25ELFFBQVEsRUFDUixxQkFBcUIsRUFDckIsRUFBRSxDQUNILENBQ0YsQ0FBQztRQUNKLENBQUM7UUFDRCw4QkFBOEIsQ0FDNUIsUUFBZ0IsRUFDaEIscUJBQTJDLEVBQzNDLFVBQStCO1lBRS9CLE9BQU8sSUFBQSw4QkFBbUIsRUFDeEIsSUFBQSw0Q0FBaUMsRUFBQyxrQkFBa0IsQ0FBQyxDQUNuRCxRQUFRLEVBQ1IscUJBQXFCLEVBQ3JCLFVBQVUsQ0FDWCxDQUNGLENBQUM7UUFDSixDQUFDO1FBRUQsY0FBYyxDQUNaLFFBQWdCLEVBQ2hCLG1CQUF5QztZQUV6QyxPQUFPLElBQUEsOEJBQW1CLEVBQ3hCLElBQUEsMENBQStCLEVBQUMsa0JBQWtCLENBQUMsQ0FDakQsUUFBUSxFQUNSLG1CQUFtQixFQUNuQixFQUFFLENBQ0gsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUNELDRCQUE0QixDQUMxQixRQUFnQixFQUNoQixtQkFBeUMsRUFDekMsVUFBK0I7WUFFL0IsT0FBTyxJQUFBLDhCQUFtQixFQUN4QixJQUFBLDBDQUErQixFQUFDLGtCQUFrQixDQUFDLENBQ2pELFFBQVEsRUFDUixtQkFBbUIsRUFDbkIsVUFBVSxDQUNYLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCxrQkFBa0IsQ0FBQyxRQUFnQjtZQUNqQyxPQUFPLElBQUEsOEJBQW1CLEVBQUMsSUFBQSw2QkFBa0IsRUFBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFDRCxrQkFBa0IsQ0FBQyxRQUFnQjtZQUNqQyxPQUFPLElBQUEsOEJBQW1CLEVBQUMsSUFBQSw2QkFBa0IsRUFBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IGV4cGVjdE5vdEdsb2JhbGx5QWNjZXNzaWJsZSwgamVzdE5vdEluc3RhbnRpYXRlZCB9IGZyb20gXCIuLi8uLi9lcnJvcnNcIjtcbmltcG9ydCB7XG4gIGdldFRvSGF2ZURhdGFTb3VyY2VXaXRoUHJvcGVydGllcyxcbiAgdG9CZVZhbGlkVGVycmFmb3JtLFxuICB0b1BsYW5TdWNjZXNzZnVsbHksXG59IGZyb20gXCIuLi9tYXRjaGVyc1wiO1xuaW1wb3J0IHtcbiAgZ2V0VG9IYXZlUmVzb3VyY2VXaXRoUHJvcGVydGllcyxcbiAgZ2V0VG9IYXZlUHJvdmlkZXJXaXRoUHJvcGVydGllcyxcbiAgVGVycmFmb3JtQ29uc3RydWN0b3IsXG4gIE1hdGNoZXJSZXR1cm5KZXN0LFxuICByZXR1cm5NYXRjaGVyVG9KZXN0LFxufSBmcm9tIFwiLi4vbWF0Y2hlcnNcIjtcblxuLyogZXNsaW50LWRpc2FibGUgKi9cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgbmFtZXNwYWNlIGplc3Qge1xuICAgIGludGVyZmFjZSBNYXRjaGVyczxSPiB7XG4gICAgICB0b0hhdmVSZXNvdXJjZShyZXNvdXJjZUNvbnN0cnVjdG9yOiBUZXJyYWZvcm1Db25zdHJ1Y3Rvcik6IFI7XG4gICAgICB0b0hhdmVSZXNvdXJjZVdpdGhQcm9wZXJ0aWVzKFxuICAgICAgICByZXNvdXJjZUNvbnN0cnVjdG9yOiBUZXJyYWZvcm1Db25zdHJ1Y3RvcixcbiAgICAgICAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAgICk6IFI7XG5cbiAgICAgIHRvSGF2ZURhdGFTb3VyY2UoZGF0YVNvdXJjZUNvbnN0cnVjdG9yOiBUZXJyYWZvcm1Db25zdHJ1Y3Rvcik6IFI7XG4gICAgICB0b0hhdmVEYXRhU291cmNlV2l0aFByb3BlcnRpZXMoXG4gICAgICAgIGRhdGFTb3VyY2VDb25zdHJ1Y3RvcjogVGVycmFmb3JtQ29uc3RydWN0b3IsXG4gICAgICAgIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgICApOiBSO1xuXG4gICAgICB0b0hhdmVQcm92aWRlcihwcm92aWRlckNvbnN0cnVjdG9yOiBUZXJyYWZvcm1Db25zdHJ1Y3Rvcik6IFI7XG4gICAgICB0b0hhdmVQcm92aWRlcldpdGhQcm9wZXJ0aWVzKFxuICAgICAgICBwcm92aWRlckNvbnN0cnVjdG9yOiBUZXJyYWZvcm1Db25zdHJ1Y3RvcixcbiAgICAgICAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAgICk6IFI7XG5cbiAgICAgIHRvQmVWYWxpZFRlcnJhZm9ybSgpOiBSO1xuICAgICAgdG9QbGFuU3VjY2Vzc2Z1bGx5KCk6IFI7XG4gICAgfVxuICB9XG59XG5cbnR5cGUgSmVzdEV4cGVjdCA9IHtcbiAgZXh0ZW5kOiAoXG4gICAgbWF0Y2hlcnM6IFJlY29yZDxzdHJpbmcsICguLi5hcmdzOiBhbnlbXSkgPT4gTWF0Y2hlclJldHVybkplc3Q+LFxuICApID0+IHZvaWQ7XG59O1xuXG4vLyBKZXN0IHN1cHBvcnRzIGFzeW1ldHJpYyBtYXRjaGVycyAoaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2plc3QvYmxvYi9tYWluL3BhY2thZ2VzL2V4cGVjdC9zcmMvYXN5bW1ldHJpY01hdGNoZXJzLnRzKVxuLy8gVGhlc2UgbWF0Y2hlcnMgYXJlIGdyZWF0IGluIGV4cHJlc3NpbmcgcGFydGlhbCBlcXVhbGl0eSBpbiBhIGRlZXBseSBuZXN0ZWQgd2F5XG4vLyBBcyB3ZSB3YW50IHRvIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSB0ZXN0aW5nIGZyYW1ld29yayB3ZSBjYW4gbm90IHVzZSB0aGVtIGV2ZXJ5d2hlcmVcbmZ1bmN0aW9uIGplc3RQYXNzRXZhbHVhdGlvbihcbiAgaXRlbXM6IGFueVtdLFxuICBhc3NlcnRlZFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4pOiBib29sZWFuIHtcbiAgaWYgKE9iamVjdC5lbnRyaWVzKGFzc2VydGVkUHJvcGVydGllcykubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGl0ZW1zLmxlbmd0aCA+IDA7XG4gIH0gZWxzZSB7XG4gICAgaWYgKChnbG9iYWwgYXMgYW55KS5leHBlY3QpIHtcbiAgICAgIGNvbnN0IGV4cGVjdCA9IChnbG9iYWwgYXMgYW55KS5leHBlY3Q7XG4gICAgICByZXR1cm4gZXhwZWN0XG4gICAgICAgIC5hcnJheUNvbnRhaW5pbmcoW2V4cGVjdC5vYmplY3RDb250YWluaW5nKGFzc2VydGVkUHJvcGVydGllcyldKVxuICAgICAgICAuYXN5bW1ldHJpY01hdGNoKGl0ZW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgamVzdE5vdEluc3RhbnRpYXRlZCgpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBKZXN0KCkge1xuICBpZiAoIShcImV4cGVjdFwiIGluIGdsb2JhbCkpIHtcbiAgICB0aHJvdyBleHBlY3ROb3RHbG9iYWxseUFjY2Vzc2libGUoKTtcbiAgfVxuXG4gIGNvbnN0IGV4cGVjdCA9IChnbG9iYWwgYXMgYW55KS5leHBlY3QgYXMgSmVzdEV4cGVjdDtcblxuICBleHBlY3QuZXh0ZW5kKHtcbiAgICB0b0hhdmVSZXNvdXJjZShcbiAgICAgIHJlY2VpdmVkOiBzdHJpbmcsXG4gICAgICByZXNvdXJjZUNvbnN0cnVjdG9yOiBUZXJyYWZvcm1Db25zdHJ1Y3RvcixcbiAgICApIHtcbiAgICAgIHJldHVybiByZXR1cm5NYXRjaGVyVG9KZXN0KFxuICAgICAgICBnZXRUb0hhdmVSZXNvdXJjZVdpdGhQcm9wZXJ0aWVzKGplc3RQYXNzRXZhbHVhdGlvbikoXG4gICAgICAgICAgcmVjZWl2ZWQsXG4gICAgICAgICAgcmVzb3VyY2VDb25zdHJ1Y3RvcixcbiAgICAgICAgICB7fSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSxcbiAgICB0b0hhdmVSZXNvdXJjZVdpdGhQcm9wZXJ0aWVzKFxuICAgICAgcmVjZWl2ZWQ6IHN0cmluZyxcbiAgICAgIHJlc291cmNlQ29uc3RydWN0b3I6IFRlcnJhZm9ybUNvbnN0cnVjdG9yLFxuICAgICAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICApIHtcbiAgICAgIHJldHVybiByZXR1cm5NYXRjaGVyVG9KZXN0KFxuICAgICAgICBnZXRUb0hhdmVSZXNvdXJjZVdpdGhQcm9wZXJ0aWVzKGplc3RQYXNzRXZhbHVhdGlvbikoXG4gICAgICAgICAgcmVjZWl2ZWQsXG4gICAgICAgICAgcmVzb3VyY2VDb25zdHJ1Y3RvcixcbiAgICAgICAgICBwcm9wZXJ0aWVzLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9LFxuXG4gICAgdG9IYXZlRGF0YVNvdXJjZShcbiAgICAgIHJlY2VpdmVkOiBzdHJpbmcsXG4gICAgICBkYXRhU291cmNlQ29uc3RydWN0b3I6IFRlcnJhZm9ybUNvbnN0cnVjdG9yLFxuICAgICkge1xuICAgICAgcmV0dXJuIHJldHVybk1hdGNoZXJUb0plc3QoXG4gICAgICAgIGdldFRvSGF2ZURhdGFTb3VyY2VXaXRoUHJvcGVydGllcyhqZXN0UGFzc0V2YWx1YXRpb24pKFxuICAgICAgICAgIHJlY2VpdmVkLFxuICAgICAgICAgIGRhdGFTb3VyY2VDb25zdHJ1Y3RvcixcbiAgICAgICAgICB7fSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSxcbiAgICB0b0hhdmVEYXRhU291cmNlV2l0aFByb3BlcnRpZXMoXG4gICAgICByZWNlaXZlZDogc3RyaW5nLFxuICAgICAgZGF0YVNvdXJjZUNvbnN0cnVjdG9yOiBUZXJyYWZvcm1Db25zdHJ1Y3RvcixcbiAgICAgIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgKSB7XG4gICAgICByZXR1cm4gcmV0dXJuTWF0Y2hlclRvSmVzdChcbiAgICAgICAgZ2V0VG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzKGplc3RQYXNzRXZhbHVhdGlvbikoXG4gICAgICAgICAgcmVjZWl2ZWQsXG4gICAgICAgICAgZGF0YVNvdXJjZUNvbnN0cnVjdG9yLFxuICAgICAgICAgIHByb3BlcnRpZXMsXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH0sXG5cbiAgICB0b0hhdmVQcm92aWRlcihcbiAgICAgIHJlY2VpdmVkOiBzdHJpbmcsXG4gICAgICBwcm92aWRlckNvbnN0cnVjdG9yOiBUZXJyYWZvcm1Db25zdHJ1Y3RvcixcbiAgICApIHtcbiAgICAgIHJldHVybiByZXR1cm5NYXRjaGVyVG9KZXN0KFxuICAgICAgICBnZXRUb0hhdmVQcm92aWRlcldpdGhQcm9wZXJ0aWVzKGplc3RQYXNzRXZhbHVhdGlvbikoXG4gICAgICAgICAgcmVjZWl2ZWQsXG4gICAgICAgICAgcHJvdmlkZXJDb25zdHJ1Y3RvcixcbiAgICAgICAgICB7fSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSxcbiAgICB0b0hhdmVQcm92aWRlcldpdGhQcm9wZXJ0aWVzKFxuICAgICAgcmVjZWl2ZWQ6IHN0cmluZyxcbiAgICAgIHByb3ZpZGVyQ29uc3RydWN0b3I6IFRlcnJhZm9ybUNvbnN0cnVjdG9yLFxuICAgICAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICApIHtcbiAgICAgIHJldHVybiByZXR1cm5NYXRjaGVyVG9KZXN0KFxuICAgICAgICBnZXRUb0hhdmVQcm92aWRlcldpdGhQcm9wZXJ0aWVzKGplc3RQYXNzRXZhbHVhdGlvbikoXG4gICAgICAgICAgcmVjZWl2ZWQsXG4gICAgICAgICAgcHJvdmlkZXJDb25zdHJ1Y3RvcixcbiAgICAgICAgICBwcm9wZXJ0aWVzLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9LFxuXG4gICAgdG9CZVZhbGlkVGVycmFmb3JtKHJlY2VpdmVkOiBzdHJpbmcpIHtcbiAgICAgIHJldHVybiByZXR1cm5NYXRjaGVyVG9KZXN0KHRvQmVWYWxpZFRlcnJhZm9ybShyZWNlaXZlZCkpO1xuICAgIH0sXG4gICAgdG9QbGFuU3VjY2Vzc2Z1bGx5KHJlY2VpdmVkOiBzdHJpbmcpIHtcbiAgICAgIHJldHVybiByZXR1cm5NYXRjaGVyVG9KZXN0KHRvUGxhblN1Y2Nlc3NmdWxseShyZWNlaXZlZCkpO1xuICAgIH0sXG4gIH0pO1xufVxuIl19
@@ -5,11 +5,10 @@ exports.Testing = void 0;
5
5
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  // Copyright (c) HashiCorp, Inc
7
7
  // SPDX-License-Identifier: MPL-2.0
8
- /* eslint-disable @typescript-eslint/no-require-imports */
9
- const fs = require("fs");
10
- const path = require("path");
11
- const os = require("os");
12
- const stringify = require("json-stable-stringify");
8
+ const fs = require("node:fs");
9
+ const path = require("node:path");
10
+ const os = require("node:os");
11
+ const safe_stable_stringify_1 = require("safe-stable-stringify");
13
12
  const __1 = require("..");
14
13
  const manifest_1 = require("../manifest");
15
14
  const features_1 = require("../features");
@@ -97,7 +96,7 @@ class Testing {
97
96
  return item;
98
97
  }
99
98
  const cleaned = removeMetadata(tfConfig);
100
- return stringify(cleaned, { space: 2 });
99
+ return (0, safe_stable_stringify_1.default)(cleaned, null, 2);
101
100
  }
102
101
  /**
103
102
  * Returns the Terraform synthesized JSON.
@@ -170,5 +169,5 @@ class Testing {
170
169
  }
171
170
  exports.Testing = Testing;
172
171
  _a = JSII_RTTI_SYMBOL_1;
173
- Testing[_a] = { fqn: "cdktn.Testing", version: "0.23.1" };
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFFbkMsMERBQTBEO0FBQzFELHlCQUEwQjtBQUMxQiw2QkFBOEI7QUFDOUIseUJBQTBCO0FBQzFCLG1EQUFvRDtBQUNwRCwwQkFBeUM7QUFDekMsMENBQXVDO0FBQ3ZDLDBDQUEyQztBQUUzQywwQ0FBNEM7QUFDNUMsMkRBQTBEO0FBQzFELHlDQUtvQjtBQWVwQixNQUFNLHVCQUF1QixHQUFxQjtJQUNoRCxXQUFXLEVBQUUsS0FBSztJQUNsQixXQUFXLEVBQUUsSUFBSTtJQUNqQixpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCLGlCQUFpQixFQUFFLEtBQUs7Q0FDekIsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBYSxPQUFPO0lBQ2xCOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBNEIsRUFBRTtRQUM5QyxNQUFNLFNBQVMsR0FBRyxFQUFFLEdBQUcsdUJBQXVCLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUM3RCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RCLFNBQVMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQ3hDLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFHLENBQUM7WUFDbEIsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNO1lBQ3hCLFdBQVcsRUFBRSxTQUFTLENBQUMsV0FBVztZQUNsQyxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87U0FDekIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFH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Q0FDMUIsUUFBZ0IsRUFDaEIsWUFBb0I7UUFFcEIsT0FBTyxJQUFBLDBDQUErQixHQUFFLENBQ3RDLFFBQVEsRUFDUixFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsRUFDaEMsRUFBRSxDQUNILENBQUMsSUFBSSxDQUFDO0lBQ1QsQ0FBQztJQUVNLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxRQUFnQjtRQUMvQyxPQUFPLElBQUEsNkJBQWtCLEVBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzNDLENBQUM7SUFFTSxNQUFNLENBQUMsU0FBUztRQUNyQixJQUFBLGdCQUFTLEdBQUUsQ0FBQztJQUNkLENBQUM7O0FBek9ILDBCQTBPQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHMgKi9cbmltcG9ydCBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcbmltcG9ydCBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XG5pbXBvcnQgb3MgPSByZXF1aXJlKFwib3NcIik7XG5pbXBvcnQgc3RyaW5naWZ5ID0gcmVxdWlyZShcImpzb24tc3RhYmxlLXN0cmluZ2lmeVwiKTtcbmltcG9ydCB7IEFwcCwgVGVycmFmb3JtU3RhY2sgfSBmcm9tIFwiLi5cIjtcbmltcG9ydCB7IE1hbmlmZXN0IH0gZnJvbSBcIi4uL21hbmlmZXN0XCI7XG5pbXBvcnQgeyBGVVRVUkVfRkxBR1MgfSBmcm9tIFwiLi4vZmVhdHVyZXNcIjtcbmltcG9ydCB7IElDb25zdHJ1Y3QsIENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBzZXR1cEplc3QgfSBmcm9tIFwiLi9hZGFwdGVycy9qZXN0XCI7XG5pbXBvcnQgeyBpbnZva2VBc3BlY3RzIH0gZnJvbSBcIi4uL3N5bnRoZXNpemUvc3ludGhlc2l6ZXJcIjtcbmltcG9ydCB7XG4gIGdldFRvSGF2ZVJlc291cmNlV2l0aFByb3BlcnRpZXMsXG4gIGdldFRvSGF2ZURhdGFTb3VyY2VXaXRoUHJvcGVydGllcyxcbiAgZ2V0VG9IYXZlUHJvdmlkZXJXaXRoUHJvcGVydGllcyxcbiAgdG9CZVZhbGlkVGVycmFmb3JtLFxufSBmcm9tIFwiLi9tYXRjaGVyc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElTY29wZUNhbGxiYWNrIHtcbiAgKHNjb3BlOiBDb25zdHJ1Y3QpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RpbmdBcHBDb25maWcge1xuICByZWFkb25seSBvdXRkaXI/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHN0YWNrVHJhY2VzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgc3R1YlZlcnNpb24/OiBib29sZWFuO1xuICByZWFkb25seSBlbmFibGVGdXR1cmVGbGFncz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGZha2VDZGt0Zkpzb25QYXRoPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY29udGV4dD86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbmNvbnN0IERlZmF1bHRUZXN0aW5nQXBwQ29uZmlnOiBUZXN0aW5nQXBwQ29uZmlnID0ge1xuICBzdGFja1RyYWNlczogZmFsc2UsXG4gIHN0dWJWZXJzaW9uOiB0cnVlLFxuICBlbmFibGVGdXR1cmVGbGFnczogdHJ1ZSxcbiAgZmFrZUNka3RmSnNvblBhdGg6IGZhbHNlLFxufTtcblxuLyoqXG4gKiBUZXN0aW5nIHV0aWxpdGllcyBmb3IgY2RrdGYgYXBwbGljYXRpb25zLlxuICovXG5leHBvcnQgY2xhc3MgVGVzdGluZyB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGFwcCBmb3IgdGVzdGluZyB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICogLSBPdXRwdXQgZGlyZWN0b3J5IGlzIGEgdGVtcCBkaXIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFwcChvcHRpb25zOiBUZXN0aW5nQXBwQ29uZmlnID0ge30pOiBBcHAge1xuICAgIGNvbnN0IGFwcENvbmZpZyA9IHsgLi4uRGVmYXVsdFRlc3RpbmdBcHBDb25maWcsIC4uLm9wdGlvbnMgfTtcbiAgICBpZiAoIWFwcENvbmZpZy5vdXRkaXIpIHtcbiAgICAgIGFwcENvbmZpZy5vdXRkaXIgPSBmcy5ta2R0ZW1wU3luYyhcbiAgICAgICAgcGF0aC5qb2luKG9zLnRtcGRpcigpLCBcImNka3RmLm91dGRpci5cIiksXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGFwcCA9IG5ldyBBcHAoe1xuICAgICAgb3V0ZGlyOiBhcHBDb25maWcub3V0ZGlyLFxuICAgICAgc3RhY2tUcmFjZXM6IGFwcENvbmZpZy5zdGFja1RyYWNlcyxcbiAgICAgIGNvbnRleHQ6IG9wdGlvbnMuY29udGV4dCxcbiAgICB9KTtcblxuICAgIGlmIChhcHBDb25maWcuc3R1YlZlcnNpb24pIHtcbiAgICAgIHRoaXMuc3R1YlZlcnNpb24oYXBwKTtcbiAgICB9XG4gICAgaWYgKGFwcENvbmZpZy5lbmFibGVGdXR1cmVGbGFncykge1xuICAgICAgdGhpcy5lbmFibGVGdXR1cmVGbGFncyhhcHApO1xuICAgIH1cbiAgICBpZiAoYXBwQ29uZmlnLmZha2VDZGt0Zkpzb25QYXRoKSB7XG4gICAgICB0aGlzLmZha2VDZGt0Zkpzb25QYXRoKGFwcCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFwcDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc3R1YlZlcnNpb24oYXBwOiBBcHApOiBBcHAge1xuICAgIGFwcC5ub2RlLnNldENvbnRleHQoXCJjZGt0ZlZlcnNpb25cIiwgXCJzdHViYmVkXCIpO1xuICAgIChhcHAubWFuaWZlc3QudmVyc2lvbiBhcyBzdHJpbmcpID0gXCJzdHViYmVkXCI7XG4gICAgcmV0dXJuIGFwcDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZmFrZUNka3RmSnNvblBhdGgoYXBwOiBBcHApOiBBcHAge1xuICAgIGFwcC5ub2RlLnNldENvbnRleHQoXCJjZGt0Zkpzb25QYXRoXCIsIGAke3Byb2Nlc3MuY3dkKCl9L2Nka3RmLmpzb25gKTtcbiAgICBhcHAubm9kZS5zZXRDb250ZXh0KFwiY2RrdGZSZWxhdGl2ZU1vZHVsZXNcIiwgW1wiLi9cIl0pO1xuICAgIHJldHVybiBhcHA7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGVuYWJsZUZ1dHVyZUZsYWdzKGFwcDogQXBwKTogQXBwIHtcbiAgICBjb25zdCBub2RlID0gYXBwLm5vZGU7XG4gICAgT2JqZWN0LmVudHJpZXMoRlVUVVJFX0ZMQUdTKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+XG4gICAgICBub2RlLnNldENvbnRleHQoa2V5LCB2YWx1ZSksXG4gICAgKTtcbiAgICByZXR1cm4gYXBwO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzeW50aFNjb3BlKGZuOiBJU2NvcGVDYWxsYmFjaykge1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IFRlcnJhZm9ybVN0YWNrKFRlc3RpbmcuYXBwKCksIFwic3RhY2tcIik7XG4gICAgZm4oc3RhY2spO1xuICAgIHJldHVybiBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBUZXJyYWZvcm0gc3ludGhlc2l6ZWQgSlNPTi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc3ludGgoc3RhY2s6IFRlcnJhZm9ybVN0YWNrLCBydW5WYWxpZGF0aW9ucyA9IGZhbHNlKSB7XG4gICAgaW52b2tlQXNwZWN0cyhzdGFjayk7XG4gICAgaWYgKHJ1blZhbGlkYXRpb25zKSB7XG4gICAgICBzdGFjay5ydW5BbGxWYWxpZGF0aW9ucygpO1xuICAgIH1cblxuICAgIGNvbnN0IHRmQ29uZmlnID0gc3RhY2sudG9UZXJyYWZvcm0oKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZnVuY3Rpb24gcmVtb3ZlTWV0YWRhdGEoaXRlbTogYW55KTogYW55IHtcbiAgICAgIGlmIChpdGVtICE9PSBudWxsICYmIHR5cGVvZiBpdGVtID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XG4gICAgICAgICAgcmV0dXJuIGl0ZW0ubWFwKHJlbW92ZU1ldGFkYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNsZWFuZWRJdGVtID0gT2JqZWN0LmVudHJpZXMoaXRlbSlcbiAgICAgICAgICAvLyBvcmRlciBhbHBoYWJldGljYWxseVxuICAgICAgICAgIC5zb3J0KChbYV0sIFtiXSkgPT4gYS5sb2NhbGVDb21wYXJlKGIpKVxuICAgICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjLCBba2V5LCB2YWx1ZV0pID0+ICh7IC4uLmFjYywgW2tleV06IHJlbW92ZU1ldGFkYXRhKHZhbHVlKSB9KSxcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICk7XG5cbiAgICAgICAgLy8gUmVtb3ZlIG1ldGFkYXRhXG4gICAgICAgIGRlbGV0ZSAoY2xlYW5lZEl0ZW0gYXMgYW55KVtcIi8vXCJdO1xuICAgICAgICByZXR1cm4gY2xlYW5lZEl0ZW07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cbiAgICBjb25zdCBjbGVhbmVkID0gcmVtb3ZlTWV0YWRhdGEodGZDb25maWcpO1xuXG4gICAgcmV0dXJuIHN0cmluZ2lmeShjbGVhbmVkLCB7IHNwYWNlOiAyIH0pIGFzIHN0cmluZztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBUZXJyYWZvcm0gc3ludGhlc2l6ZWQgSlNPTi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc3ludGhIY2woXG4gICAgc3RhY2s6IFRlcnJhZm9ybVN0YWNrLFxuICAgIHJ1blZhbGlkYXRpb25zID0gZmFsc2UsXG4gICAgcmV0dXJuTWV0YWRhdGEgPSBmYWxzZSxcbiAgKSB7XG4gICAgaW52b2tlQXNwZWN0cyhzdGFjayk7XG4gICAgaWYgKHJ1blZhbGlkYXRpb25zKSB7XG4gICAgICBzdGFjay5ydW5BbGxWYWxpZGF0aW9ucygpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZyA9IHN0YWNrLnRvSGNsVGVycmFmb3JtKCk7XG5cbiAgICBpZiAocmV0dXJuTWV0YWRhdGEpIHJldHVybiBjb25maWcubWV0YWRhdGE7XG5cbiAgICByZXR1cm4gY29uZmlnLmhjbDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZnVsbFN5bnRoKHN0YWNrOiBUZXJyYWZvcm1TdGFjayk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3V0ZGlyID0gZnMubWtkdGVtcFN5bmMocGF0aC5qb2luKG9zLnRtcGRpcigpLCBcImNka3RmLm91dGRpci5cIikpO1xuXG4gICAgY29uc3QgbWFuaWZlc3QgPSBuZXcgTWFuaWZlc3QoXCJzdHViYmVkXCIsIG91dGRpciwgZmFsc2UpO1xuXG4gICAgc3RhY2suc3ludGhlc2l6ZXIuc3ludGhlc2l6ZSh7XG4gICAgICBvdXRkaXIsXG4gICAgICBtYW5pZmVzdCxcbiAgICB9KTtcblxuICAgIG1hbmlmZXN0LndyaXRlVG9GaWxlKCk7XG5cbiAgICByZXR1cm4gb3V0ZGlyO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyByZW5kZXJDb25zdHJ1Y3RUcmVlKGNvbnN0cnVjdDogSUNvbnN0cnVjdCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJlbmRlcihjb25zdHJ1Y3QsIDAsIGZhbHNlKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZnVuY3Rpb24gcmVuZGVyKFxuICAgICAgY29uc3RydWN0OiBJQ29uc3RydWN0LFxuICAgICAgbGV2ZWw6IG51bWJlcixcbiAgICAgIGlzTGFzdDogYm9vbGVhbixcbiAgICApOiBzdHJpbmcge1xuICAgICAgbGV0IHByZWZpeCA9IFwiXCI7XG4gICAgICBpZiAobGV2ZWwgPiAwKSB7XG4gICAgICAgIGNvbnN0IHNwYWNlcyA9IFwiIFwiLnJlcGVhdCgobGV2ZWwgLSAxKSAqIDQpO1xuICAgICAgICBjb25zdCBzeW1ib2wgPSBpc0xhc3QgPyBcIuKUlFwiIDogXCLilJxcIjtcbiAgICAgICAgcHJlZml4ID0gYCR7c3BhY2VzfSR7c3ltYm9sfeKUgOKUgCBgO1xuICAgICAgfVxuICAgICAgY29uc3QgbmFtZSA9IEFwcC5pc0FwcChjb25zdHJ1Y3QpXG4gICAgICAgID8gXCJBcHBcIlxuICAgICAgICA6IGAke2NvbnN0cnVjdC5ub2RlLmlkfSAoJHtjb25zdHJ1Y3QuY29uc3RydWN0b3IubmFtZX0pYDtcbiAgICAgIHJldHVybiBgJHtwcmVmaXh9JHtuYW1lfVxcbiR7Y29uc3RydWN0Lm5vZGUuY2hpbGRyZW5cbiAgICAgICAgLm1hcCgoY2hpbGQsIGlkeCwgYXJyKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNMYXN0ID0gaWR4ID09PSBhcnIubGVuZ3RoIC0gMTtcbiAgICAgICAgICByZXR1cm4gcmVuZGVyKGNoaWxkLCBsZXZlbCArIDEsIGlzTGFzdCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKFwiXCIpfWA7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyB0b0hhdmVEYXRhU291cmNlV2l0aFByb3BlcnRpZXMoXG4gICAgcmVjZWl2ZWQ6IHN0cmluZyxcbiAgICByZXNvdXJjZVR5cGU6IHN0cmluZyxcbiAgICBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBnZXRUb0hhdmVEYXRhU291cmNlV2l0aFByb3BlcnRpZXMoKShcbiAgICAgIHJlY2VpdmVkLFxuICAgICAgeyB0ZlJlc291cmNlVHlwZTogcmVzb3VyY2VUeXBlIH0sXG4gICAgICBwcm9wZXJ0aWVzLFxuICAgICkucGFzcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdG9IYXZlRGF0YVNvdXJjZShcbiAgICByZWNlaXZlZDogc3RyaW5nLFxuICAgIHJlc291cmNlVHlwZTogc3RyaW5nLFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gZ2V0VG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzKCkoXG4gICAgICByZWNlaXZlZCxcbiAgICAgIHsgdGZSZXNvdXJjZVR5cGU6IHJlc291cmNlVHlwZSB9LFxuICAgICAge30sXG4gICAgKS5wYXNzO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyB0b0hhdmVSZXNvdXJjZVdpdGhQcm9wZXJ0aWVzKFxuICAgIHJlY2VpdmVkOiBzdHJpbmcsXG4gICAgcmVzb3VyY2VUeXBlOiBzdHJpbmcsXG4gICAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gZ2V0VG9IYXZlUmVzb3VyY2VXaXRoUHJvcGVydGllcygpKFxuICAgICAgcmVjZWl2ZWQsXG4gICAgICB7IHRmUmVzb3VyY2VUeXBlOiByZXNvdXJjZVR5cGUgfSxcbiAgICAgIHByb3BlcnRpZXMsXG4gICAgKS5wYXNzO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyB0b0hhdmVSZXNvdXJjZShcbiAgICByZWNlaXZlZDogc3RyaW5nLFxuICAgIHJlc291cmNlVHlwZTogc3RyaW5nLFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gZ2V0VG9IYXZlUmVzb3VyY2VXaXRoUHJvcGVydGllcygpKFxuICAgICAgcmVjZWl2ZWQsXG4gICAgICB7IHRmUmVzb3VyY2VUeXBlOiByZXNvdXJjZVR5cGUgfSxcbiAgICAgIHt9LFxuICAgICkucGFzcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdG9IYXZlUHJvdmlkZXJXaXRoUHJvcGVydGllcyhcbiAgICByZWNlaXZlZDogc3RyaW5nLFxuICAgIHJlc291cmNlVHlwZTogc3RyaW5nLFxuICAgIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGdldFRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXMoKShcbiAgICAgIHJlY2VpdmVkLFxuICAgICAgeyB0ZlJlc291cmNlVHlwZTogcmVzb3VyY2VUeXBlIH0sXG4gICAgICBwcm9wZXJ0aWVzLFxuICAgICkucGFzcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdG9IYXZlUHJvdmlkZXIoXG4gICAgcmVjZWl2ZWQ6IHN0cmluZyxcbiAgICByZXNvdXJjZVR5cGU6IHN0cmluZyxcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGdldFRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXMoKShcbiAgICAgIHJlY2VpdmVkLFxuICAgICAgeyB0ZlJlc291cmNlVHlwZTogcmVzb3VyY2VUeXBlIH0sXG4gICAgICB7fSxcbiAgICApLnBhc3M7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHRvQmVWYWxpZFRlcnJhZm9ybShyZWNlaXZlZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRvQmVWYWxpZFRlcnJhZm9ybShyZWNlaXZlZCkucGFzcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2V0dXBKZXN0KCkge1xuICAgIHNldHVwSmVzdCgpO1xuICB9XG59XG4iXX0=
172
+ Testing[_a] = { fqn: "cdktn.Testing", version: "0.23.3" };
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFFbkMsOEJBQThCO0FBQzlCLGtDQUFrQztBQUNsQyw4QkFBOEI7QUFFOUIsaUVBQThDO0FBQzlDLDBCQUF5QztBQUN6QywwQ0FBdUM7QUFDdkMsMENBQTJDO0FBRTNDLDBDQUE0QztBQUM1QywyREFBMEQ7QUFDMUQseUNBS29CO0FBZXBCLE1BQU0sdUJBQXVCLEdBQXFCO0lBQ2hELFdBQVcsRUFBRSxLQUFLO0lBQ2xCLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLGlCQUFpQixFQUFFLElBQUk7SUFDdkIsaUJBQWlCLEVBQUUsS0FBSztDQUN6QixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFhLE9BQU87SUFDbEI7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUE0QixFQUFFO1FBQzlDLE1BQU0sU0FBUyxHQUFHLEVBQUUsR0FBRyx1QkFBdUIsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEIsU0FBUyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsV0FBVyxDQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FDeEMsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLE9BQUcsQ0FBQztZQUNsQixNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU07WUFDeEIsV0FBVyxFQUFFLFNBQVMsQ0FBQyxXQUFXO1lBQ2xDLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztTQUN6QixDQUFDLENBQUM7UUFFSCxJQUFJLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsV0FBVyxDQUFD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LENBQzFCLFFBQWdCLEVBQ2hCLFlBQW9CO1FBRXBCLE9BQU8sSUFBQSwwQ0FBK0IsR0FBRSxDQUN0QyxRQUFRLEVBQ1IsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLEVBQ2hDLEVBQUUsQ0FDSCxDQUFDLElBQUksQ0FBQztJQUNULENBQUM7SUFFTSxNQUFNLENBQUMsa0JBQWtCLENBQUMsUUFBZ0I7UUFDL0MsT0FBTyxJQUFBLDZCQUFrQixFQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMzQyxDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQVM7UUFDckIsSUFBQSxnQkFBUyxHQUFFLENBQUM7SUFDZCxDQUFDOztBQXpPSCwwQkEwT0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuXG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgKiBhcyBvcyBmcm9tIFwibm9kZTpvc1wiO1xuXG5pbXBvcnQgc3RyaW5naWZ5IGZyb20gXCJzYWZlLXN0YWJsZS1zdHJpbmdpZnlcIjtcbmltcG9ydCB7IEFwcCwgVGVycmFmb3JtU3RhY2sgfSBmcm9tIFwiLi5cIjtcbmltcG9ydCB7IE1hbmlmZXN0IH0gZnJvbSBcIi4uL21hbmlmZXN0XCI7XG5pbXBvcnQgeyBGVVRVUkVfRkxBR1MgfSBmcm9tIFwiLi4vZmVhdHVyZXNcIjtcbmltcG9ydCB7IElDb25zdHJ1Y3QsIENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBzZXR1cEplc3QgfSBmcm9tIFwiLi9hZGFwdGVycy9qZXN0XCI7XG5pbXBvcnQgeyBpbnZva2VBc3BlY3RzIH0gZnJvbSBcIi4uL3N5bnRoZXNpemUvc3ludGhlc2l6ZXJcIjtcbmltcG9ydCB7XG4gIGdldFRvSGF2ZVJlc291cmNlV2l0aFByb3BlcnRpZXMsXG4gIGdldFRvSGF2ZURhdGFTb3VyY2VXaXRoUHJvcGVydGllcyxcbiAgZ2V0VG9IYXZlUHJvdmlkZXJXaXRoUHJvcGVydGllcyxcbiAgdG9CZVZhbGlkVGVycmFmb3JtLFxufSBmcm9tIFwiLi9tYXRjaGVyc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElTY29wZUNhbGxiYWNrIHtcbiAgKHNjb3BlOiBDb25zdHJ1Y3QpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RpbmdBcHBDb25maWcge1xuICByZWFkb25seSBvdXRkaXI/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHN0YWNrVHJhY2VzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgc3R1YlZlcnNpb24/OiBib29sZWFuO1xuICByZWFkb25seSBlbmFibGVGdXR1cmVGbGFncz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGZha2VDZGt0Zkpzb25QYXRoPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY29udGV4dD86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbmNvbnN0IERlZmF1bHRUZXN0aW5nQXBwQ29uZmlnOiBUZXN0aW5nQXBwQ29uZmlnID0ge1xuICBzdGFja1RyYWNlczogZmFsc2UsXG4gIHN0dWJWZXJzaW9uOiB0cnVlLFxuICBlbmFibGVGdXR1cmVGbGFnczogdHJ1ZSxcbiAgZmFrZUNka3RmSnNvblBhdGg6IGZhbHNlLFxufTtcblxuLyoqXG4gKiBUZXN0aW5nIHV0aWxpdGllcyBmb3IgY2RrdGYgYXBwbGljYXRpb25zLlxuICovXG5leHBvcnQgY2xhc3MgVGVzdGluZyB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGFwcCBmb3IgdGVzdGluZyB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICogLSBPdXRwdXQgZGlyZWN0b3J5IGlzIGEgdGVtcCBkaXIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFwcChvcHRpb25zOiBUZXN0aW5nQXBwQ29uZmlnID0ge30pOiBBcHAge1xuICAgIGNvbnN0IGFwcENvbmZpZyA9IHsgLi4uRGVmYXVsdFRlc3RpbmdBcHBDb25maWcsIC4uLm9wdGlvbnMgfTtcbiAgICBpZiAoIWFwcENvbmZpZy5vdXRkaXIpIHtcbiAgICAgIGFwcENvbmZpZy5vdXRkaXIgPSBmcy5ta2R0ZW1wU3luYyhcbiAgICAgICAgcGF0aC5qb2luKG9zLnRtcGRpcigpLCBcImNka3RmLm91dGRpci5cIiksXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGFwcCA9IG5ldyBBcHAoe1xuICAgICAgb3V0ZGlyOiBhcHBDb25maWcub3V0ZGlyLFxuICAgICAgc3RhY2tUcmFjZXM6IGFwcENvbmZpZy5zdGFja1RyYWNlcyxcbiAgICAgIGNvbnRleHQ6IG9wdGlvbnMuY29udGV4dCxcbiAgICB9KTtcblxuICAgIGlmIChhcHBDb25maWcuc3R1YlZlcnNpb24pIHtcbiAgICAgIHRoaXMuc3R1YlZlcnNpb24oYXBwKTtcbiAgICB9XG4gICAgaWYgKGFwcENvbmZpZy5lbmFibGVGdXR1cmVGbGFncykge1xuICAgICAgdGhpcy5lbmFibGVGdXR1cmVGbGFncyhhcHApO1xuICAgIH1cbiAgICBpZiAoYXBwQ29uZmlnLmZha2VDZGt0Zkpzb25QYXRoKSB7XG4gICAgICB0aGlzLmZha2VDZGt0Zkpzb25QYXRoKGFwcCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFwcDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc3R1YlZlcnNpb24oYXBwOiBBcHApOiBBcHAge1xuICAgIGFwcC5ub2RlLnNldENvbnRleHQoXCJjZGt0ZlZlcnNpb25cIiwgXCJzdHViYmVkXCIpO1xuICAgIChhcHAubWFuaWZlc3QudmVyc2lvbiBhcyBzdHJpbmcpID0gXCJzdHViYmVkXCI7XG4gICAgcmV0dXJuIGFwcDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZmFrZUNka3RmSnNvblBhdGgoYXBwOiBBcHApOiBBcHAge1xuICAgIGFwcC5ub2RlLnNldENvbnRleHQoXCJjZGt0Zkpzb25QYXRoXCIsIGAke3Byb2Nlc3MuY3dkKCl9L2Nka3RmLmpzb25gKTtcbiAgICBhcHAubm9kZS5zZXRDb250ZXh0KFwiY2RrdGZSZWxhdGl2ZU1vZHVsZXNcIiwgW1wiLi9cIl0pO1xuICAgIHJldHVybiBhcHA7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGVuYWJsZUZ1dHVyZUZsYWdzKGFwcDogQXBwKTogQXBwIHtcbiAgICBjb25zdCBub2RlID0gYXBwLm5vZGU7XG4gICAgT2JqZWN0LmVudHJpZXMoRlVUVVJFX0ZMQUdTKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+XG4gICAgICBub2RlLnNldENvbnRleHQoa2V5LCB2YWx1ZSksXG4gICAgKTtcbiAgICByZXR1cm4gYXBwO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzeW50aFNjb3BlKGZuOiBJU2NvcGVDYWxsYmFjaykge1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IFRlcnJhZm9ybVN0YWNrKFRlc3RpbmcuYXBwKCksIFwic3RhY2tcIik7XG4gICAgZm4oc3RhY2spO1xuICAgIHJldHVybiBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBUZXJyYWZvcm0gc3ludGhlc2l6ZWQgSlNPTi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc3ludGgoc3RhY2s6IFRlcnJhZm9ybVN0YWNrLCBydW5WYWxpZGF0aW9ucyA9IGZhbHNlKSB7XG4gICAgaW52b2tlQXNwZWN0cyhzdGFjayk7XG4gICAgaWYgKHJ1blZhbGlkYXRpb25zKSB7XG4gICAgICBzdGFjay5ydW5BbGxWYWxpZGF0aW9ucygpO1xuICAgIH1cblxuICAgIGNvbnN0IHRmQ29uZmlnID0gc3RhY2sudG9UZXJyYWZvcm0oKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZnVuY3Rpb24gcmVtb3ZlTWV0YWRhdGEoaXRlbTogYW55KTogYW55IHtcbiAgICAgIGlmIChpdGVtICE9PSBudWxsICYmIHR5cGVvZiBpdGVtID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XG4gICAgICAgICAgcmV0dXJuIGl0ZW0ubWFwKHJlbW92ZU1ldGFkYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNsZWFuZWRJdGVtID0gT2JqZWN0LmVudHJpZXMoaXRlbSlcbiAgICAgICAgICAvLyBvcmRlciBhbHBoYWJldGljYWxseVxuICAgICAgICAgIC5zb3J0KChbYV0sIFtiXSkgPT4gYS5sb2NhbGVDb21wYXJlKGIpKVxuICAgICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjLCBba2V5LCB2YWx1ZV0pID0+ICh7IC4uLmFjYywgW2tleV06IHJlbW92ZU1ldGFkYXRhKHZhbHVlKSB9KSxcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICk7XG5cbiAgICAgICAgLy8gUmVtb3ZlIG1ldGFkYXRhXG4gICAgICAgIGRlbGV0ZSAoY2xlYW5lZEl0ZW0gYXMgYW55KVtcIi8vXCJdO1xuICAgICAgICByZXR1cm4gY2xlYW5lZEl0ZW07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cbiAgICBjb25zdCBjbGVhbmVkID0gcmVtb3ZlTWV0YWRhdGEodGZDb25maWcpO1xuXG4gICAgcmV0dXJuIHN0cmluZ2lmeShjbGVhbmVkLCBudWxsLCAyKSBhcyBzdHJpbmc7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgVGVycmFmb3JtIHN5bnRoZXNpemVkIEpTT04uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHN5bnRoSGNsKFxuICAgIHN0YWNrOiBUZXJyYWZvcm1TdGFjayxcbiAgICBydW5WYWxpZGF0aW9ucyA9IGZhbHNlLFxuICAgIHJldHVybk1ldGFkYXRhID0gZmFsc2UsXG4gICkge1xuICAgIGludm9rZUFzcGVjdHMoc3RhY2spO1xuICAgIGlmIChydW5WYWxpZGF0aW9ucykge1xuICAgICAgc3RhY2sucnVuQWxsVmFsaWRhdGlvbnMoKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWcgPSBzdGFjay50b0hjbFRlcnJhZm9ybSgpO1xuXG4gICAgaWYgKHJldHVybk1ldGFkYXRhKSByZXR1cm4gY29uZmlnLm1ldGFkYXRhO1xuXG4gICAgcmV0dXJuIGNvbmZpZy5oY2w7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZ1bGxTeW50aChzdGFjazogVGVycmFmb3JtU3RhY2spOiBzdHJpbmcge1xuICAgIGNvbnN0IG91dGRpciA9IGZzLm1rZHRlbXBTeW5jKHBhdGguam9pbihvcy50bXBkaXIoKSwgXCJjZGt0Zi5vdXRkaXIuXCIpKTtcblxuICAgIGNvbnN0IG1hbmlmZXN0ID0gbmV3IE1hbmlmZXN0KFwic3R1YmJlZFwiLCBvdXRkaXIsIGZhbHNlKTtcblxuICAgIHN0YWNrLnN5bnRoZXNpemVyLnN5bnRoZXNpemUoe1xuICAgICAgb3V0ZGlyLFxuICAgICAgbWFuaWZlc3QsXG4gICAgfSk7XG5cbiAgICBtYW5pZmVzdC53cml0ZVRvRmlsZSgpO1xuXG4gICAgcmV0dXJuIG91dGRpcjtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgcmVuZGVyQ29uc3RydWN0VHJlZShjb25zdHJ1Y3Q6IElDb25zdHJ1Y3QpOiBzdHJpbmcge1xuICAgIHJldHVybiByZW5kZXIoY29uc3RydWN0LCAwLCBmYWxzZSk7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGZ1bmN0aW9uIHJlbmRlcihcbiAgICAgIGNvbnN0cnVjdDogSUNvbnN0cnVjdCxcbiAgICAgIGxldmVsOiBudW1iZXIsXG4gICAgICBpc0xhc3Q6IGJvb2xlYW4sXG4gICAgKTogc3RyaW5nIHtcbiAgICAgIGxldCBwcmVmaXggPSBcIlwiO1xuICAgICAgaWYgKGxldmVsID4gMCkge1xuICAgICAgICBjb25zdCBzcGFjZXMgPSBcIiBcIi5yZXBlYXQoKGxldmVsIC0gMSkgKiA0KTtcbiAgICAgICAgY29uc3Qgc3ltYm9sID0gaXNMYXN0ID8gXCLilJRcIiA6IFwi4pScXCI7XG4gICAgICAgIHByZWZpeCA9IGAke3NwYWNlc30ke3N5bWJvbH3ilIDilIAgYDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5hbWUgPSBBcHAuaXNBcHAoY29uc3RydWN0KVxuICAgICAgICA/IFwiQXBwXCJcbiAgICAgICAgOiBgJHtjb25zdHJ1Y3Qubm9kZS5pZH0gKCR7Y29uc3RydWN0LmNvbnN0cnVjdG9yLm5hbWV9KWA7XG4gICAgICByZXR1cm4gYCR7cHJlZml4fSR7bmFtZX1cXG4ke2NvbnN0cnVjdC5ub2RlLmNoaWxkcmVuXG4gICAgICAgIC5tYXAoKGNoaWxkLCBpZHgsIGFycikgPT4ge1xuICAgICAgICAgIGNvbnN0IGlzTGFzdCA9IGlkeCA9PT0gYXJyLmxlbmd0aCAtIDE7XG4gICAgICAgICAgcmV0dXJuIHJlbmRlcihjaGlsZCwgbGV2ZWwgKyAxLCBpc0xhc3QpO1xuICAgICAgICB9KVxuICAgICAgICAuam9pbihcIlwiKX1gO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzKFxuICAgIHJlY2VpdmVkOiBzdHJpbmcsXG4gICAgcmVzb3VyY2VUeXBlOiBzdHJpbmcsXG4gICAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gZ2V0VG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzKCkoXG4gICAgICByZWNlaXZlZCxcbiAgICAgIHsgdGZSZXNvdXJjZVR5cGU6IHJlc291cmNlVHlwZSB9LFxuICAgICAgcHJvcGVydGllcyxcbiAgICApLnBhc3M7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHRvSGF2ZURhdGFTb3VyY2UoXG4gICAgcmVjZWl2ZWQ6IHN0cmluZyxcbiAgICByZXNvdXJjZVR5cGU6IHN0cmluZyxcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGdldFRvSGF2ZURhdGFTb3VyY2VXaXRoUHJvcGVydGllcygpKFxuICAgICAgcmVjZWl2ZWQsXG4gICAgICB7IHRmUmVzb3VyY2VUeXBlOiByZXNvdXJjZVR5cGUgfSxcbiAgICAgIHt9LFxuICAgICkucGFzcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdG9IYXZlUmVzb3VyY2VXaXRoUHJvcGVydGllcyhcbiAgICByZWNlaXZlZDogc3RyaW5nLFxuICAgIHJlc291cmNlVHlwZTogc3RyaW5nLFxuICAgIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGdldFRvSGF2ZVJlc291cmNlV2l0aFByb3BlcnRpZXMoKShcbiAgICAgIHJlY2VpdmVkLFxuICAgICAgeyB0ZlJlc291cmNlVHlwZTogcmVzb3VyY2VUeXBlIH0sXG4gICAgICBwcm9wZXJ0aWVzLFxuICAgICkucGFzcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdG9IYXZlUmVzb3VyY2UoXG4gICAgcmVjZWl2ZWQ6IHN0cmluZyxcbiAgICByZXNvdXJjZVR5cGU6IHN0cmluZyxcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGdldFRvSGF2ZVJlc291cmNlV2l0aFByb3BlcnRpZXMoKShcbiAgICAgIHJlY2VpdmVkLFxuICAgICAgeyB0ZlJlc291cmNlVHlwZTogcmVzb3VyY2VUeXBlIH0sXG4gICAgICB7fSxcbiAgICApLnBhc3M7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXMoXG4gICAgcmVjZWl2ZWQ6IHN0cmluZyxcbiAgICByZXNvdXJjZVR5cGU6IHN0cmluZyxcbiAgICBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBnZXRUb0hhdmVQcm92aWRlcldpdGhQcm9wZXJ0aWVzKCkoXG4gICAgICByZWNlaXZlZCxcbiAgICAgIHsgdGZSZXNvdXJjZVR5cGU6IHJlc291cmNlVHlwZSB9LFxuICAgICAgcHJvcGVydGllcyxcbiAgICApLnBhc3M7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHRvSGF2ZVByb3ZpZGVyKFxuICAgIHJlY2VpdmVkOiBzdHJpbmcsXG4gICAgcmVzb3VyY2VUeXBlOiBzdHJpbmcsXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBnZXRUb0hhdmVQcm92aWRlcldpdGhQcm9wZXJ0aWVzKCkoXG4gICAgICByZWNlaXZlZCxcbiAgICAgIHsgdGZSZXNvdXJjZVR5cGU6IHJlc291cmNlVHlwZSB9LFxuICAgICAge30sXG4gICAgKS5wYXNzO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyB0b0JlVmFsaWRUZXJyYWZvcm0ocmVjZWl2ZWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0b0JlVmFsaWRUZXJyYWZvcm0ocmVjZWl2ZWQpLnBhc3M7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHNldHVwSmVzdCgpIHtcbiAgICBzZXR1cEplc3QoKTtcbiAgfVxufVxuIl19
@@ -33,7 +33,7 @@ class AssertionReturn {
33
33
  }
34
34
  exports.AssertionReturn = AssertionReturn;
35
35
  _a = JSII_RTTI_SYMBOL_1;
36
- AssertionReturn[_a] = { fqn: "cdktn.testingMatchers.AssertionReturn", version: "0.23.1" };
36
+ AssertionReturn[_a] = { fqn: "cdktn.testingMatchers.AssertionReturn", version: "0.23.3" };
37
37
  /**
38
38
  * Reformats the contents of the base testing matcher return type AssertionReturn into type useable by jest
39
39
  * @param toReturn
@@ -277,4 +277,4 @@ function toPlanSuccessfully(received) {
277
277
  return new AssertionReturn(withProcessOutput(`Expected subject to plan successfully`, e), false);
278
278
  }
279
279
  }
280
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2hlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtYXRjaGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBNkNBLGtEQU9DO0FBU0Qsd0ZBK0NDO0FBZ0dELDhFQXVCQztBQU9ELDBFQXVCQztBQXlDRCwwRUF1QkM7QUFPRCxnREErQ0M7QUFPRCxnREF5Q0M7O0FBdmFELCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixpREFBMkQ7QUFDM0Qsa0NBQXlEO0FBQ3pELHNDQUltQjtBQWFuQjs7R0FFRztBQUNILE1BQWEsZUFBZTtJQUMxQjs7OztPQUlHO0lBQ0gsWUFDa0IsT0FBZSxFQUNmLElBQWE7UUFEYixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsU0FBSSxHQUFKLElBQUksQ0FBUztJQUM1QixDQUFDOztBQVROLDBDQVVDOzs7QUFJRDs7OztHQUlHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQ2pDLFFBQXlCO0lBRXpCLE9BQU87UUFDTCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU87UUFDL0IsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO0tBQ3BCLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0Isc0NBQXNDLENBQ3BELFFBQWlCLEVBQ2pCLFFBQWlCO0lBRWpCLFFBQVEsT0FBTyxRQUFRLEVBQUUsQ0FBQztRQUN4QixLQUFLLFFBQVE7WUFDWCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxDQUNMLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO29CQUN2QixRQUFRLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxNQUFNO29CQUNuQyxRQUFRLENBQUMsS0FBSyxDQUNaLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQ2Qsc0NBQXNDLENBQUMsSUFBSSxFQUFF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QUFFO1lBQzNCLE1BQU0sSUFBSSxHQUFHO2dCQUNYLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRyxLQUFhLENBQUMsZ0JBQWdCLENBQUM7Z0JBQzVELEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRztnQkFDaEIsS0FBSyxFQUFFLFFBQVE7YUFDVCxDQUFDO1lBQ1QsSUFBQSx3QkFBUSxFQUFDLEdBQUcsMEJBQW1CLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUU5QyxpQ0FBaUM7WUFDakMsSUFBQSx3QkFBUSxFQUFDLEdBQUcsMEJBQW1CLGlDQUFpQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLGVBQWUsQ0FDeEIsMkNBQTJDLEVBQzNDLElBQUksQ0FDTCxDQUFDO0lBQ0osQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxPQUFPLElBQUksZUFBZSxDQUN4QixpQkFBaUIsQ0FBQyx1Q0FBdUMsRUFBRSxDQUFDLENBQUMsRUFDN0QsS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGV4ZWNTeW5jLCBTcGF3blN5bmNSZXR1cm5zIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IHNuYWtlQ2FzZSwgdGVycmFmb3JtQmluYXJ5TmFtZSB9IGZyb20gXCIuLi91dGlsXCI7XG5pbXBvcnQge1xuICBpbnZhbGlkU3RhY2ssXG4gIG1hdGNoZXJzRm91bmRFcnJvcnNJblN0YWNrLFxuICBtYXRjaGVyc1BhdGhJc05vdERpcmVjdG9yeSxcbn0gZnJvbSBcIi4uL2Vycm9yc1wiO1xuXG4vLyBUZXJyYWZvcm1Db25zdHJ1Y3RvciBpcyBjbGFzcyB3aXRoIHRoZSBzdGF0aWMgcHJvcGVydHkgJ3RmUmVzb3VyY2VUeXBlJ1xuZXhwb3J0IGludGVyZmFjZSBUZXJyYWZvcm1Db25zdHJ1Y3RvciB7XG4gIHJlYWRvbmx5IHRmUmVzb3VyY2VUeXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFN5bnRoZXNpemVkU3RhY2sgPSB7XG4gIHJlc291cmNlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBwcm92aWRlcjogUmVjb3JkPHN0cmluZywgYW55Pjtcbn07XG5cbi8qKlxuICogQ2xhc3MgcmVwcmVzZW50aW5nIHRoZSBjb250ZW50cyBvZiBhIHJldHVybiBieSBhbiBhc3NlcnRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIEFzc2VydGlvblJldHVybiB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gQXNzZXJ0aW9uUmV0dXJuXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gU3RyaW5nIG1lc3NhZ2UgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVzdWx0IG9mIHRoZSBhc3NlcnRpb25cbiAgICogQHBhcmFtIHBhc3MgLSBCb29sZWFuIHBhc3MgZGVub3RpbmcgdGhlIHN1Y2Nlc3Mgb2YgdGhlIGFzc2VydGlvblxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgcGFzczogYm9vbGVhbixcbiAgKSB7fVxufVxuXG5leHBvcnQgdHlwZSBNYXRjaGVyUmV0dXJuSmVzdCA9IHsgbWVzc2FnZTogKCkgPT4gc3RyaW5nOyBwYXNzOiBib29sZWFuIH07XG5cbi8qKlxuICogUmVmb3JtYXRzIHRoZSBjb250ZW50cyBvZiB0aGUgYmFzZSB0ZXN0aW5nIG1hdGNoZXIgcmV0dXJuIHR5cGUgQXNzZXJ0aW9uUmV0dXJuIGludG8gdHlwZSB1c2VhYmxlIGJ5IGplc3RcbiAqIEBwYXJhbSB0b1JldHVyblxuICogQHJldHVybnMge01hdGNoZXJSZXR1cm5KZXN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmV0dXJuTWF0Y2hlclRvSmVzdChcbiAgdG9SZXR1cm46IEFzc2VydGlvblJldHVybixcbik6IE1hdGNoZXJSZXR1cm5KZXN0IHtcbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiAoKSA9PiB0b1JldHVybi5tZXNzYWdlLFxuICAgIHBhc3M6IHRvUmV0dXJuLnBhc3MsXG4gIH07XG59XG5cbi8qKlxuICogQ29tcGFyZXMgZXhwZWN0ZWQgYW5kIHJlY2VpdmVkLiBBbGwgZXhwZWN0ZWQgcHJvcGVydGllcyBhcmUgbWF0Y2hlZCBhbmQgY29uc2lkZXJlZCBlcXVhbCBldmVuIGlmXG4gKiB0aGVyZSBhcmUgbW9yZSBwcm9wZXJ0aWVzIGluIHRoZSByZWNlaXZlZCBvYmplY3QgdGhhbiBpbiB0aGUgZXhwZWN0ZWQgb2JqZWN0IGluIHdoaWNoIGNhc2UgaXQgd2lsbCBzdGlsbCByZXR1cm4gdHJ1ZS5cbiAqIEBwYXJhbSBleHBlY3RlZFxuICogQHBhcmFtIHJlY2VpdmVkXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzeW1ldHJpY0RlZXBFcXVhbElnbm9yaW5nT2JqZWN0Q2FzaW5nKFxuICBleHBlY3RlZDogdW5rbm93bixcbiAgcmVjZWl2ZWQ6IHVua25vd24sXG4pOiBib29sZWFuIHtcbiAgc3dpdGNoICh0eXBlb2YgZXhwZWN0ZWQpIHtcbiAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShleHBlY3RlZCkpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBBcnJheS5pc0FycmF5KHJlY2VpdmVkKSAmJlxuICAgICAgICAgIGV4cGVjdGVkLmxlbmd0aCA9PT0gcmVjZWl2ZWQubGVuZ3RoICYmXG4gICAgICAgICAgZXhwZWN0ZWQuZXZlcnkoXG4gICAgICAgICAgICAoaXRlbSwgaW5kZXgpID0+XG4gICAgICAgICAgICAgIGFzeW1ldHJpY0RlZXBFcXVhbElnbm9yaW5nT2JqZWN0Q2FzaW5nKGl0ZW0sIHJlY2VpdmVkW2luZGV4XSksIC8vIHJlY3Vyc2l2ZWx5IGNvbXBhcmUgYXJyYXlzXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGV4cGVjdGVkID09PSBudWxsICYmIHJlY2VpdmVkID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGV4cGVjdGVkID09PSB1bmRlZmluZWQgJiYgcmVjZWl2ZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChleHBlY3RlZCA9PT0gbnVsbCB8fCByZWNlaXZlZCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIHJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyBhbmQgYWxsb3cgc25ha2UgY2FzZSBhcyB3ZWxsIGFzIGNhbWVsIGNhc2VcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhleHBlY3RlZCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikuZXZlcnkoKGtleSkgPT4ge1xuICAgICAgICBpZiAoKHJlY2VpdmVkIGFzIGFueSlba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIGFzeW1ldHJpY0RlZXBFcXVhbElnbm9yaW5nT2JqZWN0Q2FzaW5nKFxuICAgICAgICAgICAgKGV4cGVjdGVkIGFzIGFueSlba2V5XSxcbiAgICAgICAgICAgIChyZWNlaXZlZCBhcyBhbnkpW2tleV0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgocmVjZWl2ZWQgYXMgYW55KVtzbmFrZUNhc2Uoa2V5KV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiBhc3ltZXRyaWNEZWVwRXF1YWxJZ25vcmluZ09iamVjdENhc2luZyhcbiAgICAgICAgICAgIChleHBlY3RlZCBhcyBhbnkpW2tleV0sXG4gICAgICAgICAgICAocmVjZWl2ZWQgYXMgYW55KVtzbmFrZUNhc2Uoa2V5KV0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZXhwZWN0ZWQgPT09IHJlY2VpdmVkO1xuICB9XG59XG5jb25zdCBkZWZhdWx0UGFzc0V2YWx1YXRpb24gPSAoXG4gIGl0ZW1zOiBhbnksXG4gIGFzc2VydGVkUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PixcbikgPT4ge1xuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpdGVtcykuc29tZSgoaXRlbTogYW55KSA9PlxuICAgIGFzeW1ldHJpY0RlZXBFcXVhbElnbm9yaW5nT2JqZWN0Q2FzaW5nKGFzc2VydGVkUHJvcGVydGllcywgaXRlbSksXG4gICk7XG59O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZnVuY3Rpb24gaXNBc3ltbWV0cmljKG9iajogYW55KSB7XG4gIHJldHVybiAhIW9iaiAmJiB0eXBlb2Ygb2JqID09PSBcIm9iamVjdFwiICYmIFwiYXN5bW1ldHJpY01hdGNoXCIgaW4gb2JqO1xufVxuLy8gWW91IGNhbiB1c2UgZXhwZWN0LkFueXRoaW5nKCksIGV4cGVjdC5PYmplY3RDb250YWluaW5nLCBldGMgaW4gamVzdCwgdGhpcyBtYWtlcyBpdCBuaWNlciB0byByZWFkXG4vLyB3aGVuIHdlIHByaW50IGVycm9yIG1lc3NhZ2VzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZnVuY3Rpb24gamVzdEFzeW1ldHJpY01hdGNoZXJTdHJpbmdpZnlSZXBsYWNlcihfa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgcmV0dXJuIGlzQXN5bW1ldHJpYyh2YWx1ZSkgPyBgZXhwZWN0LiR7dmFsdWUudG9TdHJpbmcoKX1gIDogdmFsdWU7XG59XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZnVuY3Rpb24gZ2V0QXNzZXJ0RWxlbWVudFdpdGhQcm9wZXJ0aWVzKFxuICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgLy8gV2UgaGF2ZSB0aGUgZXZhbHVhdGlvbiBmdW5jdGlvbiBjb25maWd1cmFibGUgc28gd2UgY2FuIG1ha2UgdXNlIG9mIHRoZSBzcGVjaWZpYyB0ZXN0aW5nIGZyYW1ld29ya3MgY2FwYWJpbGl0aWVzXG4gIC8vIFRoaXMgbWFrZXMgdGhlIHJlc3VsdGluZyB0ZXN0cyBtb3JlIG5hdGl2ZSB0byB0aGUgdGVzdGluZyBmcmFtZXdvcmtcbiAgY3VzdG9tUGFzc0V2YWx1YXRpb24/OiAoXG4gICAgaXRlbXM6IGFueVtdLCAvLyBjb25maWd1cmF0aW9ucyBvZiB0aGUgcmVxdWVzdGVkIHR5cGVcbiAgICBhc3NlcnRlZFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICkgPT4gYm9vbGVhbixcbikge1xuICBjb25zdCBwYXNzRXZhbHVhdGlvbiA9IGN1c3RvbVBhc3NFdmFsdWF0aW9uIHx8IGRlZmF1bHRQYXNzRXZhbHVhdGlvbjtcbiAgcmV0dXJuIGZ1bmN0aW9uIGdldEFzc2VydEVsZW1lbnRXaXRoUHJvcGVydGllcyhcbiAgICB0eXBlOiBrZXlvZiBTeW50aGVzaXplZFN0YWNrLFxuICAgIHJlY2VpdmVkOiBzdHJpbmcsXG4gICAgaXRlbVR5cGU6IFRlcnJhZm9ybUNvbnN0cnVjdG9yLFxuICAgIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcbiAgKTogQXNzZXJ0aW9uUmV0dXJuIHtcbiAgICBsZXQgc3RhY2s6IFN5bnRoZXNpemVkU3RhY2s7XG5cbiAgICAvLyBSZWNlY2l2ZWQgY291bGQgZWl0aGVyIGJlIGEgSlNPTiBzdHJpbmcgb3IgYSBwYXRoIHRvIGEgZmlsZVxuICAgIGNvbnN0IHN0YWNrQ29udGVudCA9IGZzLmV4aXN0c1N5bmMocmVjZWl2ZWQpXG4gICAgICA/IGZzLnJlYWRGaWxlU3luYyhyZWNlaXZlZCwgXCJ1dGY4XCIpXG4gICAgICA6IHJlY2VpdmVkO1xuXG4gICAgdHJ5IHtcbiAgICAgIHN0YWNrID0gSlNPTi5wYXJzZShzdGFja0NvbnRlbnQpIGFzIFN5bnRoZXNpemVkU3RhY2s7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgaW52YWxpZFN0YWNrKGZ1bmN0aW9uTmFtZSwgc3RhY2tDb250ZW50KTtcbiAgICB9XG5cbiAgICBjb25zdCBpdGVtcyA9XG4gICAgICBPYmplY3QudmFsdWVzKFxuICAgICAgICBPYmplY3QuZW50cmllcyhzdGFja1t0eXBlXSB8fCB7fSkgLy8gZm9yIGFsbCBkYXRhL3Jlc291cmNlIGVudHJpZXNcbiAgICAgICAgICAuZmluZChcbiAgICAgICAgICAgIC8vIGZpbmQgdGhlIG9iamVjdCB3aXRoIGEgbWF0Y2hpbmcgbmFtZVxuICAgICAgICAgICAgKFt0eXBlLCBfdmFsdWVzXSkgPT4gdHlwZSA9PT0gaXRlbVR5cGUudGZSZXNvdXJjZVR5cGUsXG4gICAgICAgICAgKT8uWzFdIHx8IHt9LCAvLyBnZXQgYWxsIGl0ZW1zIG9mIHRoYXQgdHlwZSAoZW5jb2RlZCBhcyBhIHJlY29yZCBvZiBuYW1lIC0+IGNvbmZpZylcbiAgICAgICkgfHwgW107IC8vIGdldCBhIGxpc3Qgb2YgYWxsIGNvbmZpZ3Mgb2YgdGhhdCB0eXBlXG4gICAgY29uc3QgcGFzcyA9IHBhc3NFdmFsdWF0aW9uKGl0ZW1zLCBwcm9wZXJ0aWVzKTtcbiAgICBpZiAocGFzcykge1xuICAgICAgcmV0dXJuIG5ldyBBc3NlcnRpb25SZXR1cm4oXG4gICAgICAgIGBFeHBlY3RlZCBubyAke1xuICAgICAgICAgIGl0ZW1UeXBlLnRmUmVzb3VyY2VUeXBlXG4gICAgICAgIH0gd2l0aCBwcm9wZXJ0aWVzICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgcHJvcGVydGllcyxcbiAgICAgICAgICBqZXN0QXN5bWV0cmljTWF0Y2hlclN0cmluZ2lmeVJlcGxhY2VyLFxuICAgICAgICApfSB0byBiZSBwcmVzZW50IGluIHN5bnRoZXNpemVkIHN0YWNrLlxuRm91bmQgJHtpdGVtcy5sZW5ndGggPT09IDAgPyBcIm5vXCIgOiBpdGVtcy5sZW5ndGh9ICR7XG4gICAgICAgICAgaXRlbVR5cGUudGZSZXNvdXJjZVR5cGVcbiAgICAgICAgfSByZXNvdXJjZXMgaW5zdGVhZCR7XG4gICAgICAgICAgaXRlbXMubGVuZ3RoID4gMCA/IFwiOlxcblwiICsgSlNPTi5zdHJpbmdpZnkoaXRlbXMsIG51bGwsIDIpIDogXCJcIlxuICAgICAgICB9YCxcbiAgICAgICAgcGFzcyxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgQXNzZXJ0aW9uUmV0dXJuKFxuICAgICAgICBgRXhwZWN0ZWQgJHtpdGVtVHlwZS50ZlJlc291cmNlVHlwZX0gd2l0aCBwcm9wZXJ0aWVzICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgcHJvcGVydGllcyxcbiAgICAgICAgICBqZXN0QXN5bWV0cmljTWF0Y2hlclN0cmluZ2lmeVJlcGxhY2VyLFxuICAgICAgICApfSB0byBiZSBwcmVzZW50IGluIHN5bnRoZXNpemVkIHN0YWNrLlxuRm91bmQgJHtpdGVtcy5sZW5ndGggPT09IDAgPyBcIm5vXCIgOiBpdGVtcy5sZW5ndGh9ICR7XG4gICAgICAgICAgaXRlbVR5cGUudGZSZXNvdXJjZVR5cGVcbiAgICAgICAgfSByZXNvdXJjZXMgaW5zdGVhZCR7XG4gICAgICAgICAgaXRlbXMubGVuZ3RoID4gMCA/IFwiOlxcblwiICsgSlNPTi5zdHJpbmdpZnkoaXRlbXMsIG51bGwsIDIpIDogXCJcIlxuICAgICAgICB9YCxcbiAgICAgICAgcGFzcyxcbiAgICAgICk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGZ1bmN0aW9uIHRvSGF2ZURhdGFTb3VyY2VXaXRoUHJvcGVydGllcyB1c2luZyB0aGUgZXZhbHVhdGlvbiBwcm9wZXJ0aWVzIG9mIGN1c3RvbVBhc3NFdmFsdWF0aW9uXG4gKiBAcGFyYW0gY3VzdG9tUGFzc0V2YWx1YXRpb25cbiAqIEByZXR1cm5zIHtnZXRUb0hhdmVEYXRhU291cmNlV2l0aFByb3BlcnRpZXN+dG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzKFxuICBjdXN0b21QYXNzRXZhbHVhdGlvbj86IChcbiAgICBpdGVtczogYW55LFxuICAgIGFzc2VydGVkUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgKSA9PiBib29sZWFuLFxuKSB7XG4gIC8qKlxuICAgKiBFdmFsdWF0ZXMgdGhlIHJlY2VpdmVkIHN0YWNrIHRvIGhhdmUgdGhlIGRhdGEgc291cmNlIHJlc291cmNlVHlwZSBjb250YWluaW5nIHNwZWNpZmllZCBwcm9wZXJ0aWVzXG4gICAqIEBwYXJhbSByZWNlaXZlZFxuICAgKiBAcGFyYW0gcmVzb3VyY2VUeXBlXG4gICAqIEBwYXJhbSBwcm9wZXJ0aWVzXG4gICAqIEByZXR1cm5zIHtBc3NlcnRpb25SZXR1cm59XG4gICAqL1xuICByZXR1cm4gZnVuY3Rpb24gdG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzKFxuICAgIHJlY2VpdmVkOiBzdHJpbmcsXG4gICAgcmVzb3VyY2VUeXBlOiBUZXJyYWZvcm1Db25zdHJ1Y3RvcixcbiAgICBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4gICk6IEFzc2VydGlvblJldHVybiB7XG4gICAgcmV0dXJuIGdldEFzc2VydEVsZW1lbnRXaXRoUHJvcGVydGllcyhcbiAgICAgIFwidG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzXCIsXG4gICAgICBjdXN0b21QYXNzRXZhbHVhdGlvbixcbiAgICApKFwiZGF0YVwiLCByZWNlaXZlZCwgcmVzb3VyY2VUeXBlLCBwcm9wZXJ0aWVzKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmdW5jdGlvbiB0b0hhdmVSZXNvdXJjZVdpdGhQcm9wZXJ0aWVzIHVzaW5nIHRoZSBldmFsdWF0aW9uIHByb3BlcnRpZXMgb2YgY3VzdG9tUGFzc0V2YWx1YXRpb25cbiAqIEBwYXJhbSBjdXN0b21QYXNzRXZhbHVhdGlvblxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRvSGF2ZVJlc291cmNlV2l0aFByb3BlcnRpZXMoXG4gIGN1c3RvbVBhc3NFdmFsdWF0aW9uPzogKFxuICAgIGl0ZW1zOiBhbnksXG4gICAgYXNzZXJ0ZWRQcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICApID0+IGJvb2xlYW4sXG4pIHtcbiAgLyoqXG4gICAqIEV2YWx1YXRlcyB0aGUgcmVjZWl2ZWQgc3RhY2sgdG8gaGF2ZSB0aGUgcmVzb3VyY2UgcmVzb3VyY2VUeXBlIGNvbnRhaW5pbmcgc3BlY2lmaWVkIHByb3BlcnRpZXNcbiAgICogQHBhcmFtIHJlY2VpdmVkXG4gICAqIEBwYXJhbSByZXNvdXJjZVR5cGVcbiAgICogQHBhcmFtIHByb3BlcnRpZXNcbiAgICogQHJldHVybnMge0Fzc2VydGlvblJldHVybn1cbiAgICovXG4gIHJldHVybiBmdW5jdGlvbiB0b0hhdmVSZXNvdXJjZVdpdGhQcm9wZXJ0aWVzKFxuICAgIHJlY2VpdmVkOiBzdHJpbmcsXG4gICAgcmVzb3VyY2VUeXBlOiBUZXJyYWZvcm1Db25zdHJ1Y3RvcixcbiAgICBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4gICk6IEFzc2VydGlvblJldHVybiB7XG4gICAgcmV0dXJuIGdldEFzc2VydEVsZW1lbnRXaXRoUHJvcGVydGllcyhcbiAgICAgIFwidG9IYXZlUmVzb3VyY2VXaXRoUHJvcGVydGllc1wiLFxuICAgICAgY3VzdG9tUGFzc0V2YWx1YXRpb24sXG4gICAgKShcInJlc291cmNlXCIsIHJlY2VpdmVkLCByZXNvdXJjZVR5cGUsIHByb3BlcnRpZXMpO1xuICB9O1xufVxuXG4vKipcbiAqIEEgaGVscGVyIHV0aWwgdG8gdmVyaWZ5IHdldGhlciBhbiBFcnJvciB3YXMgY2F1c2VkIGJ5IHRoZSBOb2RlanMgYHByb2Nlc3Muc3Bhd25gIEFQSS5cbiAqXG4gKiBAcGFyYW0gICB7RXJyb3J9ICAgZXJyIFRoZSBFcnJvciBvYmplY3QgdG8gdmVyaWZ5XG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gICAgIEEgYm9vbCBpbmRpY2F0aW5nIHdldGhlciB0aGUgaW5wdXQgRXJyb3IgaXMgY29udGFpbmluZyBwcm9jZXNzLnNwYXduIG91dHB1dC5cbiAqL1xuY29uc3QgaXNFeGVjU3Bhd25FcnJvciA9IChlcnI6IGFueSk6IGVyciBpcyBFcnJvciAmIFNwYXduU3luY1JldHVybnM8YW55PiA9PlxuICBcIm91dHB1dFwiIGluIGVyciAmJlxuICBBcnJheS5pc0FycmF5KGVyci5vdXRwdXQpICYmXG4gIGVyci5vdXRwdXQuc29tZSgoYnVmOiBhbnkpID0+IEJ1ZmZlci5pc0J1ZmZlcihidWYpKTtcblxuLyoqXG4gKiBBIGhlbHBlciB1dGlsIHRvIGFwcGVuZCBgcHJvY2Vzcy5zcGF3bmAgb3V0cHV0IHRvIGFzc2VydGlvbiBtZXNzYWdlcyB0byBpbXByb3ZlIGRldmVsb3BlciBleHBpcmllbmNlLlxuICpcbiAqIEBwYXJhbSAgIHtTdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gb3B0aW9uYWxseSBhcHBlbmQgcHJvY2VzcyBvdXRwdXQgdG8uXG4gKiBAcGFyYW0gICB7RXJyb3J9ICBlcnIgICAgIFRoZSBlcnJvciBmcm9tIHdoaWNoIHRoZSBgcHJvY2Vzcy5zcGF3bmAgb3V0cHV0IHNob3VsZCBiZSByZXRyZWl2ZWQgZnJvbS5cbiAqIEByZXR1cm5zIHtTdHJpbmd9ICAgICAgICAgVGhlIGZpbmFsaXplZCBhc3NlcnRpb24gbWVzc2FnZSBkZWNvcmF0ZWQgd2l0aCB0aGUgYHByb2Nlc3Muc3Bhd25gIG91dHB1dC5cbiAqL1xuY29uc3Qgd2l0aFByb2Nlc3NPdXRwdXQgPSAobWVzc2FnZTogc3RyaW5nLCBlcnI6IHVua25vd24pID0+IHtcbiAgbGV0IG91dHB1dCA9IFwiXCI7XG5cbiAgaWYgKGlzRXhlY1NwYXduRXJyb3IoZXJyKSkge1xuICAgIG91dHB1dCA9XG4gICAgICBlcnIub3V0cHV0XG4gICAgICAgID8ubWFwKChidWZmZXI6IEJ1ZmZlcikgPT4gYnVmZmVyPy50b1N0cmluZyhcInV0ZjhcIikpXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgLmpvaW4oXCJcXG5cIikgPz8gXCJcIjtcbiAgfVxuXG4gIGNvbnN0IGFwcGVuZGl4ID0gb3V0cHV0Lmxlbmd0aCA/IGAuIE91dHB1dDogJHtvdXRwdXR9YCA6IFwiXCI7XG5cbiAgcmV0dXJuIGAke21lc3NhZ2V9OiAke2Vycn0ke2FwcGVuZGl4fS5gO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmdW5jdGlvbiB0b0hhdmVQcm92aWRlcldpdGhQcm9wZXJ0aWVzIHVzaW5nIHRoZSBldmFsdWF0aW9uIHByb3BlcnRpZXMgb2YgY3VzdG9tUGFzc0V2YWx1YXRpb25cbiAqIEBwYXJhbSBjdXN0b21QYXNzRXZhbHVhdGlvblxuICogQHJldHVybnMge2dldFRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXN+dG9IYXZlUHJvdmlkZXJXaXRoUHJvcGVydGllc31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXMoXG4gIGN1c3RvbVBhc3NFdmFsdWF0aW9uPzogKFxuICAgIGl0ZW1zOiBhbnksXG4gICAgYXNzZXJ0ZWRQcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICApID0+IGJvb2xlYW4sXG4pIHtcbiAgLyoqXG4gICAqIEV2YWx1YXRlcyB0aGUgcmVjZWl2ZWQgc3RhY2sgdG8gaGF2ZSB0aGUgcHJvdmlkZXIgcmVzb3VyY2VUeXBlIGNvbnRhaW5pbmcgc3BlY2lmaWVkIHByb3BlcnRpZXNcbiAgICogQHBhcmFtIHJlY2VpdmVkXG4gICAqIEBwYXJhbSByZXNvdXJjZVR5cGVcbiAgICogQHBhcmFtIHByb3BlcnRpZXNcbiAgICogQHJldHVybnMge0Fzc2VydGlvblJldHVybn1cbiAgICovXG4gIHJldHVybiBmdW5jdGlvbiB0b0hhdmVQcm92aWRlcldpdGhQcm9wZXJ0aWVzKFxuICAgIHJlY2VpdmVkOiBzdHJpbmcsXG4gICAgcmVzb3VyY2VUeXBlOiBUZXJyYWZvcm1Db25zdHJ1Y3RvcixcbiAgICBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4gICk6IEFzc2VydGlvblJldHVybiB7XG4gICAgcmV0dXJuIGdldEFzc2VydEVsZW1lbnRXaXRoUHJvcGVydGllcyhcbiAgICAgIFwidG9IYXZlUHJvdmlkZXJXaXRoUHJvcGVydGllc1wiLFxuICAgICAgY3VzdG9tUGFzc0V2YWx1YXRpb24sXG4gICAgKShcInByb3ZpZGVyXCIsIHJlY2VpdmVkLCByZXNvdXJjZVR5cGUsIHByb3BlcnRpZXMpO1xuICB9O1xufVxuXG4vKipcbiAqIEV2YWx1YXRlcyB0aGUgdmFsaWRpdHkgb2YgdGhlIHJlY2VpdmVkIHN0YWNrXG4gKiBAcGFyYW0gcmVjZWl2ZWRcbiAqIEByZXR1cm5zIHtBc3NlcnRpb25SZXR1cm59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0JlVmFsaWRUZXJyYWZvcm0ocmVjZWl2ZWQ6IHN0cmluZyk6IEFzc2VydGlvblJldHVybiB7XG4gIHRyeSB7XG4gICAgaWYgKCFmcy5zdGF0U3luYyhyZWNlaXZlZCkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgdGhyb3cgbWF0Y2hlcnNQYXRoSXNOb3REaXJlY3RvcnkoXCJ0b0JlVmFsaWRUZXJyYWZvcm1cIik7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIG5ldyBBc3NlcnRpb25SZXR1cm4oXG4gICAgICBgRXhwZWN0ZWQgc3ViamVjdCB0byBiZSBhIHRlcnJhZm9ybSBkaXJlY3Rvcnk6ICR7ZX1gLFxuICAgICAgZmFsc2UsXG4gICAgKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGgucmVzb2x2ZShyZWNlaXZlZCwgXCJtYW5pZmVzdC5qc29uXCIpLCBcInV0ZjhcIiksXG4gICAgKTtcblxuICAgIGNvbnN0IHN0YWNrcyA9IE9iamVjdC5lbnRyaWVzKG1hbmlmZXN0LnN0YWNrcyk7XG5cbiAgICBzdGFja3MuZm9yRWFjaCgoW25hbWUsIHN0YWNrXSkgPT4ge1xuICAgICAgY29uc3Qgb3B0cyA9IHtcbiAgICAgICAgY3dkOiBwYXRoLnJlc29sdmUocmVjZWl2ZWQsIChzdGFjayBhcyBhbnkpLndvcmtpbmdEaXJlY3RvcnkpLFxuICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICBzdGRpbzogXCJwaXBlXCIsXG4gICAgICB9IGFzIGFueTtcbiAgICAgIGV4ZWNTeW5jKGAke3RlcnJhZm9ybUJpbmFyeU5hbWV9IGluaXRgLCBvcHRzKTtcbiAgICAgIGNvbnN0IG91dCA9IGV4ZWNTeW5jKGAke3RlcnJhZm9ybUJpbmFyeU5hbWV9IHZhbGlkYXRlIC1qc29uYCwgb3B0cyk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IEpTT04ucGFyc2Uob3V0LnRvU3RyaW5nKCkpO1xuICAgICAgaWYgKCFyZXN1bHQudmFsaWQpIHtcbiAgICAgICAgdGhyb3cgbWF0Y2hlcnNGb3VuZEVycm9yc0luU3RhY2soXG4gICAgICAgICAgcmVzdWx0LmVycm9yX2NvdW50LFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgcmVzdWx0LmRpYWdub3N0aWNzLmpvaW4oXCJcXG5cIiksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBBc3NlcnRpb25SZXR1cm4oXG4gICAgICBgRXhwZWN0ZWQgc3ViamVjdCBub3QgdG8gYmUgYSB2YWxpZCB0ZXJyYWZvcm0gc3RhY2tgLFxuICAgICAgdHJ1ZSxcbiAgICApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIG5ldyBBc3NlcnRpb25SZXR1cm4oXG4gICAgICB3aXRoUHJvY2Vzc091dHB1dChgRXhwZWN0ZWQgc3ViamVjdCB0byBiZSBhIHZhbGlkIHRlcnJhZm9ybSBzdGFja2AsIGUpLFxuICAgICAgZmFsc2UsXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIEV2YWx1YXRlcyB0aGUgYWJpbGl0eSBmb3IgdGhlIHJlY2VpdmVkIHN0YWNrIHRvIHN1Y2Nlc3NmdWxseSBwbGFuXG4gKiBAcGFyYW0gcmVjZWl2ZWRcbiAqIEByZXR1cm5zIHtBc3NlcnRpb25SZXR1cm59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1BsYW5TdWNjZXNzZnVsbHkocmVjZWl2ZWQ6IHN0cmluZyk6IEFzc2VydGlvblJldHVybiB7XG4gIHRyeSB7XG4gICAgaWYgKCFmcy5zdGF0U3luYyhyZWNlaXZlZCkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgdGhyb3cgbWF0Y2hlcnNQYXRoSXNOb3REaXJlY3RvcnkoXCJ0b1BsYW5TdWNjZXNzZnVsbHlcIik7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIG5ldyBBc3NlcnRpb25SZXR1cm4oXG4gICAgICBgRXhwZWN0ZWQgc3ViamVjdCB0byBiZSBhIHRlcnJhZm9ybSBkaXJlY3Rvcnk6ICR7ZX1gLFxuICAgICAgZmFsc2UsXG4gICAgKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGgucmVzb2x2ZShyZWNlaXZlZCwgXCJtYW5pZmVzdC5qc29uXCIpLCBcInV0ZjhcIiksXG4gICAgKTtcblxuICAgIGNvbnN0IHN0YWNrcyA9IE9iamVjdC5lbnRyaWVzKG1hbmlmZXN0LnN0YWNrcyk7XG5cbiAgICBzdGFja3MuZm9yRWFjaCgoWywgc3RhY2tdKSA9PiB7XG4gICAgICBjb25zdCBvcHRzID0ge1xuICAgICAgICBjd2Q6IHBhdGgucmVzb2x2ZShyZWNlaXZlZCwgKHN0YWNrIGFzIGFueSkud29ya2luZ0RpcmVjdG9yeSksXG4gICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgIHN0ZGlvOiBcImlnbm9yZVwiLFxuICAgICAgfSBhcyBhbnk7XG4gICAgICBleGVjU3luYyhgJHt0ZXJyYWZvcm1CaW5hcnlOYW1lfSBpbml0YCwgb3B0cyk7XG5cbiAgICAgIC8vIFRocm93cyBvbiBhIG5vbi16ZXJvIGV4aXQgY29kZVxuICAgICAgZXhlY1N5bmMoYCR7dGVycmFmb3JtQmluYXJ5TmFtZX0gcGxhbiAtaW5wdXQ9ZmFsc2UgLWxvY2s9ZmFsc2UgYCwgb3B0cyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV3IEFzc2VydGlvblJldHVybihcbiAgICAgIGBFeHBlY3RlZCBzdWJqZWN0IG5vdCB0byBwbGFuIHN1Y2Nlc3NmdWxseWAsXG4gICAgICB0cnVlLFxuICAgICk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gbmV3IEFzc2VydGlvblJldHVybihcbiAgICAgIHdpdGhQcm9jZXNzT3V0cHV0KGBFeHBlY3RlZCBzdWJqZWN0IHRvIHBsYW4gc3VjY2Vzc2Z1bGx5YCwgZSksXG4gICAgICBmYWxzZSxcbiAgICApO1xuICB9XG59XG4iXX0=
280
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2hlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGluZy9tYXRjaGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBNkNBLGtEQU9DO0FBU0Qsd0ZBK0NDO0FBZ0dELDhFQXVCQztBQU9ELDBFQXVCQztBQXlDRCwwRUF1QkM7QUFPRCxnREErQ0M7QUFPRCxnREF5Q0M7O0FBdmFELCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixpREFBMkQ7QUFDM0Qsa0NBQXlEO0FBQ3pELHNDQUltQjtBQWFuQjs7R0FFRztBQUNILE1BQWEsZUFBZTtJQUMxQjs7OztPQUlHO0lBQ0gsWUFDa0IsT0FBZSxFQUNmLElBQWE7UUFEYixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsU0FBSSxHQUFKLElBQUksQ0FBUztJQUM1QixDQUFDOztBQVROLDBDQVVDOzs7QUFJRDs7OztHQUlHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQ2pDLFFBQXlCO0lBRXpCLE9BQU87UUFDTCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU87UUFDL0IsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO0tBQ3BCLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0Isc0NBQXNDLENBQ3BELFFBQWlCLEVBQ2pCLFFBQWlCO0lBRWpCLFFBQVEsT0FBTyxRQUFRLEVBQUUsQ0FBQztRQUN4QixLQUFLLFFBQVE7WUFDWCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxDQUNMLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO29CQUN2QixRQUFRLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxNQUFNO29CQUNuQyxRQUFRLENBQUMsS0FBSyxDQUNaLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQ2Qsc0NB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RSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQzNCLE1BQU0sSUFBSSxHQUFHO2dCQUNYLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRyxLQUFhLENBQUMsZ0JBQWdCLENBQUM7Z0JBQzVELEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRztnQkFDaEIsS0FBSyxFQUFFLFFBQVE7YUFDVCxDQUFDO1lBQ1QsSUFBQSx3QkFBUSxFQUFDLEdBQUcsMEJBQW1CLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUU5QyxpQ0FBaUM7WUFDakMsSUFBQSx3QkFBUSxFQUFDLEdBQUcsMEJBQW1CLGlDQUFpQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLGVBQWUsQ0FDeEIsMkNBQTJDLEVBQzNDLElBQUksQ0FDTCxDQUFDO0lBQ0osQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxPQUFPLElBQUksZUFBZSxDQUN4QixpQkFBaUIsQ0FBQyx1Q0FBdUMsRUFBRSxDQUFDLENBQUMsRUFDN0QsS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGV4ZWNTeW5jLCBTcGF3blN5bmNSZXR1cm5zIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IHNuYWtlQ2FzZSwgdGVycmFmb3JtQmluYXJ5TmFtZSB9IGZyb20gXCIuLi91dGlsXCI7XG5pbXBvcnQge1xuICBpbnZhbGlkU3RhY2ssXG4gIG1hdGNoZXJzRm91bmRFcnJvcnNJblN0YWNrLFxuICBtYXRjaGVyc1BhdGhJc05vdERpcmVjdG9yeSxcbn0gZnJvbSBcIi4uL2Vycm9yc1wiO1xuXG4vLyBUZXJyYWZvcm1Db25zdHJ1Y3RvciBpcyBjbGFzcyB3aXRoIHRoZSBzdGF0aWMgcHJvcGVydHkgJ3RmUmVzb3VyY2VUeXBlJ1xuZXhwb3J0IGludGVyZmFjZSBUZXJyYWZvcm1Db25zdHJ1Y3RvciB7XG4gIHJlYWRvbmx5IHRmUmVzb3VyY2VUeXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFN5bnRoZXNpemVkU3RhY2sgPSB7XG4gIHJlc291cmNlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBwcm92aWRlcjogUmVjb3JkPHN0cmluZywgYW55Pjtcbn07XG5cbi8qKlxuICogQ2xhc3MgcmVwcmVzZW50aW5nIHRoZSBjb250ZW50cyBvZiBhIHJldHVybiBieSBhbiBhc3NlcnRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIEFzc2VydGlvblJldHVybiB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gQXNzZXJ0aW9uUmV0dXJuXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gU3RyaW5nIG1lc3NhZ2UgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVzdWx0IG9mIHRoZSBhc3NlcnRpb25cbiAgICogQHBhcmFtIHBhc3MgLSBCb29sZWFuIHBhc3MgZGVub3RpbmcgdGhlIHN1Y2Nlc3Mgb2YgdGhlIGFzc2VydGlvblxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgcGFzczogYm9vbGVhbixcbiAgKSB7fVxufVxuXG5leHBvcnQgdHlwZSBNYXRjaGVyUmV0dXJuSmVzdCA9IHsgbWVzc2FnZTogKCkgPT4gc3RyaW5nOyBwYXNzOiBib29sZWFuIH07XG5cbi8qKlxuICogUmVmb3JtYXRzIHRoZSBjb250ZW50cyBvZiB0aGUgYmFzZSB0ZXN0aW5nIG1hdGNoZXIgcmV0dXJuIHR5cGUgQXNzZXJ0aW9uUmV0dXJuIGludG8gdHlwZSB1c2VhYmxlIGJ5IGplc3RcbiAqIEBwYXJhbSB0b1JldHVyblxuICogQHJldHVybnMge01hdGNoZXJSZXR1cm5KZXN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmV0dXJuTWF0Y2hlclRvSmVzdChcbiAgdG9SZXR1cm46IEFzc2VydGlvblJldHVybixcbik6IE1hdGNoZXJSZXR1cm5KZXN0IHtcbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiAoKSA9PiB0b1JldHVybi5tZXNzYWdlLFxuICAgIHBhc3M6IHRvUmV0dXJuLnBhc3MsXG4gIH07XG59XG5cbi8qKlxuICogQ29tcGFyZXMgZXhwZWN0ZWQgYW5kIHJlY2VpdmVkLiBBbGwgZXhwZWN0ZWQgcHJvcGVydGllcyBhcmUgbWF0Y2hlZCBhbmQgY29uc2lkZXJlZCBlcXVhbCBldmVuIGlmXG4gKiB0aGVyZSBhcmUgbW9yZSBwcm9wZXJ0aWVzIGluIHRoZSByZWNlaXZlZCBvYmplY3QgdGhhbiBpbiB0aGUgZXhwZWN0ZWQgb2JqZWN0IGluIHdoaWNoIGNhc2UgaXQgd2lsbCBzdGlsbCByZXR1cm4gdHJ1ZS5cbiAqIEBwYXJhbSBleHBlY3RlZFxuICogQHBhcmFtIHJlY2VpdmVkXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzeW1ldHJpY0RlZXBFcXVhbElnbm9yaW5nT2JqZWN0Q2FzaW5nKFxuICBleHBlY3RlZDogdW5rbm93bixcbiAgcmVjZWl2ZWQ6IHVua25vd24sXG4pOiBib29sZWFuIHtcbiAgc3dpdGNoICh0eXBlb2YgZXhwZWN0ZWQpIHtcbiAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShleHBlY3RlZCkpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBBcnJheS5pc0FycmF5KHJlY2VpdmVkKSAmJlxuICAgICAgICAgIGV4cGVjdGVkLmxlbmd0aCA9PT0gcmVjZWl2ZWQubGVuZ3RoICYmXG4gICAgICAgICAgZXhwZWN0ZWQuZXZlcnkoXG4gICAgICAgICAgICAoaXRlbSwgaW5kZXgpID0+XG4gICAgICAgICAgICAgIGFzeW1ldHJpY0RlZXBFcXVhbElnbm9yaW5nT2JqZWN0Q2FzaW5nKGl0ZW0sIHJlY2VpdmVkW2luZGV4XSksIC8vIHJlY3Vyc2l2ZWx5IGNvbXBhcmUgYXJyYXlzXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGV4cGVjdGVkID09PSBudWxsICYmIHJlY2VpdmVkID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGV4cGVjdGVkID09PSB1bmRlZmluZWQgJiYgcmVjZWl2ZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChleHBlY3RlZCA9PT0gbnVsbCB8fCByZWNlaXZlZCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIHJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyBhbmQgYWxsb3cgc25ha2UgY2FzZSBhcyB3ZWxsIGFzIGNhbWVsIGNhc2VcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhleHBlY3RlZCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikuZXZlcnkoKGtleSkgPT4ge1xuICAgICAgICBpZiAoKHJlY2VpdmVkIGFzIGFueSlba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIGFzeW1ldHJpY0RlZXBFcXVhbElnbm9yaW5nT2JqZWN0Q2FzaW5nKFxuICAgICAgICAgICAgKGV4cGVjdGVkIGFzIGFueSlba2V5XSxcbiAgICAgICAgICAgIChyZWNlaXZlZCBhcyBhbnkpW2tleV0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgocmVjZWl2ZWQgYXMgYW55KVtzbmFrZUNhc2Uoa2V5KV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiBhc3ltZXRyaWNEZWVwRXF1YWxJZ25vcmluZ09iamVjdENhc2luZyhcbiAgICAgICAgICAgIChleHBlY3RlZCBhcyBhbnkpW2tleV0sXG4gICAgICAgICAgICAocmVjZWl2ZWQgYXMgYW55KVtzbmFrZUNhc2Uoa2V5KV0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZXhwZWN0ZWQgPT09IHJlY2VpdmVkO1xuICB9XG59XG5jb25zdCBkZWZhdWx0UGFzc0V2YWx1YXRpb24gPSAoXG4gIGl0ZW1zOiBhbnksXG4gIGFzc2VydGVkUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PixcbikgPT4ge1xuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpdGVtcykuc29tZSgoaXRlbTogYW55KSA9PlxuICAgIGFzeW1ldHJpY0RlZXBFcXVhbElnbm9yaW5nT2JqZWN0Q2FzaW5nKGFzc2VydGVkUHJvcGVydGllcywgaXRlbSksXG4gICk7XG59O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZnVuY3Rpb24gaXNBc3ltbWV0cmljKG9iajogYW55KSB7XG4gIHJldHVybiAhIW9iaiAmJiB0eXBlb2Ygb2JqID09PSBcIm9iamVjdFwiICYmIFwiYXN5bW1ldHJpY01hdGNoXCIgaW4gb2JqO1xufVxuLy8gWW91IGNhbiB1c2UgZXhwZWN0LkFueXRoaW5nKCksIGV4cGVjdC5PYmplY3RDb250YWluaW5nLCBldGMgaW4gamVzdCwgdGhpcyBtYWtlcyBpdCBuaWNlciB0byByZWFkXG4vLyB3aGVuIHdlIHByaW50IGVycm9yIG1lc3NhZ2VzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZnVuY3Rpb24gamVzdEFzeW1ldHJpY01hdGNoZXJTdHJpbmdpZnlSZXBsYWNlcihfa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgcmV0dXJuIGlzQXN5bW1ldHJpYyh2YWx1ZSkgPyBgZXhwZWN0LiR7dmFsdWUudG9TdHJpbmcoKX1gIDogdmFsdWU7XG59XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZnVuY3Rpb24gZ2V0QXNzZXJ0RWxlbWVudFdpdGhQcm9wZXJ0aWVzKFxuICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgLy8gV2UgaGF2ZSB0aGUgZXZhbHVhdGlvbiBmdW5jdGlvbiBjb25maWd1cmFibGUgc28gd2UgY2FuIG1ha2UgdXNlIG9mIHRoZSBzcGVjaWZpYyB0ZXN0aW5nIGZyYW1ld29ya3MgY2FwYWJpbGl0aWVzXG4gIC8vIFRoaXMgbWFrZXMgdGhlIHJlc3VsdGluZyB0ZXN0cyBtb3JlIG5hdGl2ZSB0byB0aGUgdGVzdGluZyBmcmFtZXdvcmtcbiAgY3VzdG9tUGFzc0V2YWx1YXRpb24/OiAoXG4gICAgaXRlbXM6IGFueVtdLCAvLyBjb25maWd1cmF0aW9ucyBvZiB0aGUgcmVxdWVzdGVkIHR5cGVcbiAgICBhc3NlcnRlZFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICkgPT4gYm9vbGVhbixcbikge1xuICBjb25zdCBwYXNzRXZhbHVhdGlvbiA9IGN1c3RvbVBhc3NFdmFsdWF0aW9uIHx8IGRlZmF1bHRQYXNzRXZhbHVhdGlvbjtcbiAgcmV0dXJuIGZ1bmN0aW9uIGdldEFzc2VydEVsZW1lbnRXaXRoUHJvcGVydGllcyhcbiAgICB0eXBlOiBrZXlvZiBTeW50aGVzaXplZFN0YWNrLFxuICAgIHJlY2VpdmVkOiBzdHJpbmcsXG4gICAgaXRlbVR5cGU6IFRlcnJhZm9ybUNvbnN0cnVjdG9yLFxuICAgIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcbiAgKTogQXNzZXJ0aW9uUmV0dXJuIHtcbiAgICBsZXQgc3RhY2s6IFN5bnRoZXNpemVkU3RhY2s7XG5cbiAgICAvLyBSZWNlY2l2ZWQgY291bGQgZWl0aGVyIGJlIGEgSlNPTiBzdHJpbmcgb3IgYSBwYXRoIHRvIGEgZmlsZVxuICAgIGNvbnN0IHN0YWNrQ29udGVudCA9IGZzLmV4aXN0c1N5bmMocmVjZWl2ZWQpXG4gICAgICA/IGZzLnJlYWRGaWxlU3luYyhyZWNlaXZlZCwgXCJ1dGY4XCIpXG4gICAgICA6IHJlY2VpdmVkO1xuXG4gICAgdHJ5IHtcbiAgICAgIHN0YWNrID0gSlNPTi5wYXJzZShzdGFja0NvbnRlbnQpIGFzIFN5bnRoZXNpemVkU3RhY2s7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgaW52YWxpZFN0YWNrKGZ1bmN0aW9uTmFtZSwgc3RhY2tDb250ZW50KTtcbiAgICB9XG5cbiAgICBjb25zdCBpdGVtcyA9XG4gICAgICBPYmplY3QudmFsdWVzKFxuICAgICAgICBPYmplY3QuZW50cmllcyhzdGFja1t0eXBlXSB8fCB7fSkgLy8gZm9yIGFsbCBkYXRhL3Jlc291cmNlIGVudHJpZXNcbiAgICAgICAgICAuZmluZChcbiAgICAgICAgICAgIC8vIGZpbmQgdGhlIG9iamVjdCB3aXRoIGEgbWF0Y2hpbmcgbmFtZVxuICAgICAgICAgICAgKFt0eXBlLCBfdmFsdWVzXSkgPT4gdHlwZSA9PT0gaXRlbVR5cGUudGZSZXNvdXJjZVR5cGUsXG4gICAgICAgICAgKT8uWzFdIHx8IHt9LCAvLyBnZXQgYWxsIGl0ZW1zIG9mIHRoYXQgdHlwZSAoZW5jb2RlZCBhcyBhIHJlY29yZCBvZiBuYW1lIC0+IGNvbmZpZylcbiAgICAgICkgfHwgW107IC8vIGdldCBhIGxpc3Qgb2YgYWxsIGNvbmZpZ3Mgb2YgdGhhdCB0eXBlXG4gICAgY29uc3QgcGFzcyA9IHBhc3NFdmFsdWF0aW9uKGl0ZW1zLCBwcm9wZXJ0aWVzKTtcbiAgICBpZiAocGFzcykge1xuICAgICAgcmV0dXJuIG5ldyBBc3NlcnRpb25SZXR1cm4oXG4gICAgICAgIGBFeHBlY3RlZCBubyAke1xuICAgICAgICAgIGl0ZW1UeXBlLnRmUmVzb3VyY2VUeXBlXG4gICAgICAgIH0gd2l0aCBwcm9wZXJ0aWVzICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgcHJvcGVydGllcyxcbiAgICAgICAgICBqZXN0QXN5bWV0cmljTWF0Y2hlclN0cmluZ2lmeVJlcGxhY2VyLFxuICAgICAgICApfSB0byBiZSBwcmVzZW50IGluIHN5bnRoZXNpemVkIHN0YWNrLlxuRm91bmQgJHtpdGVtcy5sZW5ndGggPT09IDAgPyBcIm5vXCIgOiBpdGVtcy5sZW5ndGh9ICR7XG4gICAgICAgICAgaXRlbVR5cGUudGZSZXNvdXJjZVR5cGVcbiAgICAgICAgfSByZXNvdXJjZXMgaW5zdGVhZCR7XG4gICAgICAgICAgaXRlbXMubGVuZ3RoID4gMCA/IFwiOlxcblwiICsgSlNPTi5zdHJpbmdpZnkoaXRlbXMsIG51bGwsIDIpIDogXCJcIlxuICAgICAgICB9YCxcbiAgICAgICAgcGFzcyxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgQXNzZXJ0aW9uUmV0dXJuKFxuICAgICAgICBgRXhwZWN0ZWQgJHtpdGVtVHlwZS50ZlJlc291cmNlVHlwZX0gd2l0aCBwcm9wZXJ0aWVzICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgcHJvcGVydGllcyxcbiAgICAgICAgICBqZXN0QXN5bWV0cmljTWF0Y2hlclN0cmluZ2lmeVJlcGxhY2VyLFxuICAgICAgICApfSB0byBiZSBwcmVzZW50IGluIHN5bnRoZXNpemVkIHN0YWNrLlxuRm91bmQgJHtpdGVtcy5sZW5ndGggPT09IDAgPyBcIm5vXCIgOiBpdGVtcy5sZW5ndGh9ICR7XG4gICAgICAgICAgaXRlbVR5cGUudGZSZXNvdXJjZVR5cGVcbiAgICAgICAgfSByZXNvdXJjZXMgaW5zdGVhZCR7XG4gICAgICAgICAgaXRlbXMubGVuZ3RoID4gMCA/IFwiOlxcblwiICsgSlNPTi5zdHJpbmdpZnkoaXRlbXMsIG51bGwsIDIpIDogXCJcIlxuICAgICAgICB9YCxcbiAgICAgICAgcGFzcyxcbiAgICAgICk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGZ1bmN0aW9uIHRvSGF2ZURhdGFTb3VyY2VXaXRoUHJvcGVydGllcyB1c2luZyB0aGUgZXZhbHVhdGlvbiBwcm9wZXJ0aWVzIG9mIGN1c3RvbVBhc3NFdmFsdWF0aW9uXG4gKiBAcGFyYW0gY3VzdG9tUGFzc0V2YWx1YXRpb25cbiAqIEByZXR1cm5zIHtnZXRUb0hhdmVEYXRhU291cmNlV2l0aFByb3BlcnRpZXN+dG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzKFxuICBjdXN0b21QYXNzRXZhbHVhdGlvbj86IChcbiAgICBpdGVtczogYW55LFxuICAgIGFzc2VydGVkUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgKSA9PiBib29sZWFuLFxuKSB7XG4gIC8qKlxuICAgKiBFdmFsdWF0ZXMgdGhlIHJlY2VpdmVkIHN0YWNrIHRvIGhhdmUgdGhlIGRhdGEgc291cmNlIHJlc291cmNlVHlwZSBjb250YWluaW5nIHNwZWNpZmllZCBwcm9wZXJ0aWVzXG4gICAqIEBwYXJhbSByZWNlaXZlZFxuICAgKiBAcGFyYW0gcmVzb3VyY2VUeXBlXG4gICAqIEBwYXJhbSBwcm9wZXJ0aWVzXG4gICAqIEByZXR1cm5zIHtBc3NlcnRpb25SZXR1cm59XG4gICAqL1xuICByZXR1cm4gZnVuY3Rpb24gdG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzKFxuICAgIHJlY2VpdmVkOiBzdHJpbmcsXG4gICAgcmVzb3VyY2VUeXBlOiBUZXJyYWZvcm1Db25zdHJ1Y3RvcixcbiAgICBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4gICk6IEFzc2VydGlvblJldHVybiB7XG4gICAgcmV0dXJuIGdldEFzc2VydEVsZW1lbnRXaXRoUHJvcGVydGllcyhcbiAgICAgIFwidG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzXCIsXG4gICAgICBjdXN0b21QYXNzRXZhbHVhdGlvbixcbiAgICApKFwiZGF0YVwiLCByZWNlaXZlZCwgcmVzb3VyY2VUeXBlLCBwcm9wZXJ0aWVzKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmdW5jdGlvbiB0b0hhdmVSZXNvdXJjZVdpdGhQcm9wZXJ0aWVzIHVzaW5nIHRoZSBldmFsdWF0aW9uIHByb3BlcnRpZXMgb2YgY3VzdG9tUGFzc0V2YWx1YXRpb25cbiAqIEBwYXJhbSBjdXN0b21QYXNzRXZhbHVhdGlvblxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRvSGF2ZVJlc291cmNlV2l0aFByb3BlcnRpZXMoXG4gIGN1c3RvbVBhc3NFdmFsdWF0aW9uPzogKFxuICAgIGl0ZW1zOiBhbnksXG4gICAgYXNzZXJ0ZWRQcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICApID0+IGJvb2xlYW4sXG4pIHtcbiAgLyoqXG4gICAqIEV2YWx1YXRlcyB0aGUgcmVjZWl2ZWQgc3RhY2sgdG8gaGF2ZSB0aGUgcmVzb3VyY2UgcmVzb3VyY2VUeXBlIGNvbnRhaW5pbmcgc3BlY2lmaWVkIHByb3BlcnRpZXNcbiAgICogQHBhcmFtIHJlY2VpdmVkXG4gICAqIEBwYXJhbSByZXNvdXJjZVR5cGVcbiAgICogQHBhcmFtIHByb3BlcnRpZXNcbiAgICogQHJldHVybnMge0Fzc2VydGlvblJldHVybn1cbiAgICovXG4gIHJldHVybiBmdW5jdGlvbiB0b0hhdmVSZXNvdXJjZVdpdGhQcm9wZXJ0aWVzKFxuICAgIHJlY2VpdmVkOiBzdHJpbmcsXG4gICAgcmVzb3VyY2VUeXBlOiBUZXJyYWZvcm1Db25zdHJ1Y3RvcixcbiAgICBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4gICk6IEFzc2VydGlvblJldHVybiB7XG4gICAgcmV0dXJuIGdldEFzc2VydEVsZW1lbnRXaXRoUHJvcGVydGllcyhcbiAgICAgIFwidG9IYXZlUmVzb3VyY2VXaXRoUHJvcGVydGllc1wiLFxuICAgICAgY3VzdG9tUGFzc0V2YWx1YXRpb24sXG4gICAgKShcInJlc291cmNlXCIsIHJlY2VpdmVkLCByZXNvdXJjZVR5cGUsIHByb3BlcnRpZXMpO1xuICB9O1xufVxuXG4vKipcbiAqIEEgaGVscGVyIHV0aWwgdG8gdmVyaWZ5IHdldGhlciBhbiBFcnJvciB3YXMgY2F1c2VkIGJ5IHRoZSBOb2RlanMgYHByb2Nlc3Muc3Bhd25gIEFQSS5cbiAqXG4gKiBAcGFyYW0gICB7RXJyb3J9ICAgZXJyIFRoZSBFcnJvciBvYmplY3QgdG8gdmVyaWZ5XG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gICAgIEEgYm9vbCBpbmRpY2F0aW5nIHdldGhlciB0aGUgaW5wdXQgRXJyb3IgaXMgY29udGFpbmluZyBwcm9jZXNzLnNwYXduIG91dHB1dC5cbiAqL1xuY29uc3QgaXNFeGVjU3Bhd25FcnJvciA9IChlcnI6IGFueSk6IGVyciBpcyBFcnJvciAmIFNwYXduU3luY1JldHVybnM8YW55PiA9PlxuICBcIm91dHB1dFwiIGluIGVyciAmJlxuICBBcnJheS5pc0FycmF5KGVyci5vdXRwdXQpICYmXG4gIGVyci5vdXRwdXQuc29tZSgoYnVmOiBhbnkpID0+IEJ1ZmZlci5pc0J1ZmZlcihidWYpKTtcblxuLyoqXG4gKiBBIGhlbHBlciB1dGlsIHRvIGFwcGVuZCBgcHJvY2Vzcy5zcGF3bmAgb3V0cHV0IHRvIGFzc2VydGlvbiBtZXNzYWdlcyB0byBpbXByb3ZlIGRldmVsb3BlciBleHBpcmllbmNlLlxuICpcbiAqIEBwYXJhbSAgIHtTdHJpbmd9IG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gb3B0aW9uYWxseSBhcHBlbmQgcHJvY2VzcyBvdXRwdXQgdG8uXG4gKiBAcGFyYW0gICB7RXJyb3J9ICBlcnIgICAgIFRoZSBlcnJvciBmcm9tIHdoaWNoIHRoZSBgcHJvY2Vzcy5zcGF3bmAgb3V0cHV0IHNob3VsZCBiZSByZXRyZWl2ZWQgZnJvbS5cbiAqIEByZXR1cm5zIHtTdHJpbmd9ICAgICAgICAgVGhlIGZpbmFsaXplZCBhc3NlcnRpb24gbWVzc2FnZSBkZWNvcmF0ZWQgd2l0aCB0aGUgYHByb2Nlc3Muc3Bhd25gIG91dHB1dC5cbiAqL1xuY29uc3Qgd2l0aFByb2Nlc3NPdXRwdXQgPSAobWVzc2FnZTogc3RyaW5nLCBlcnI6IHVua25vd24pID0+IHtcbiAgbGV0IG91dHB1dCA9IFwiXCI7XG5cbiAgaWYgKGlzRXhlY1NwYXduRXJyb3IoZXJyKSkge1xuICAgIG91dHB1dCA9XG4gICAgICBlcnIub3V0cHV0XG4gICAgICAgID8ubWFwKChidWZmZXI6IEJ1ZmZlcikgPT4gYnVmZmVyPy50b1N0cmluZyhcInV0ZjhcIikpXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgLmpvaW4oXCJcXG5cIikgPz8gXCJcIjtcbiAgfVxuXG4gIGNvbnN0IGFwcGVuZGl4ID0gb3V0cHV0Lmxlbmd0aCA/IGAuIE91dHB1dDogJHtvdXRwdXR9YCA6IFwiXCI7XG5cbiAgcmV0dXJuIGAke21lc3NhZ2V9OiAke2Vycn0ke2FwcGVuZGl4fS5gO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmdW5jdGlvbiB0b0hhdmVQcm92aWRlcldpdGhQcm9wZXJ0aWVzIHVzaW5nIHRoZSBldmFsdWF0aW9uIHByb3BlcnRpZXMgb2YgY3VzdG9tUGFzc0V2YWx1YXRpb25cbiAqIEBwYXJhbSBjdXN0b21QYXNzRXZhbHVhdGlvblxuICogQHJldHVybnMge2dldFRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXN+dG9IYXZlUHJvdmlkZXJXaXRoUHJvcGVydGllc31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXMoXG4gIGN1c3RvbVBhc3NFdmFsdWF0aW9uPzogKFxuICAgIGl0ZW1zOiBhbnksXG4gICAgYXNzZXJ0ZWRQcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICApID0+IGJvb2xlYW4sXG4pIHtcbiAgLyoqXG4gICAqIEV2YWx1YXRlcyB0aGUgcmVjZWl2ZWQgc3RhY2sgdG8gaGF2ZSB0aGUgcHJvdmlkZXIgcmVzb3VyY2VUeXBlIGNvbnRhaW5pbmcgc3BlY2lmaWVkIHByb3BlcnRpZXNcbiAgICogQHBhcmFtIHJlY2VpdmVkXG4gICAqIEBwYXJhbSByZXNvdXJjZVR5cGVcbiAgICogQHBhcmFtIHByb3BlcnRpZXNcbiAgICogQHJldHVybnMge0Fzc2VydGlvblJldHVybn1cbiAgICovXG4gIHJldHVybiBmdW5jdGlvbiB0b0hhdmVQcm92aWRlcldpdGhQcm9wZXJ0aWVzKFxuICAgIHJlY2VpdmVkOiBzdHJpbmcsXG4gICAgcmVzb3VyY2VUeXBlOiBUZXJyYWZvcm1Db25zdHJ1Y3RvcixcbiAgICBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4gICk6IEFzc2VydGlvblJldHVybiB7XG4gICAgcmV0dXJuIGdldEFzc2VydEVsZW1lbnRXaXRoUHJvcGVydGllcyhcbiAgICAgIFwidG9IYXZlUHJvdmlkZXJXaXRoUHJvcGVydGllc1wiLFxuICAgICAgY3VzdG9tUGFzc0V2YWx1YXRpb24sXG4gICAgKShcInByb3ZpZGVyXCIsIHJlY2VpdmVkLCByZXNvdXJjZVR5cGUsIHByb3BlcnRpZXMpO1xuICB9O1xufVxuXG4vKipcbiAqIEV2YWx1YXRlcyB0aGUgdmFsaWRpdHkgb2YgdGhlIHJlY2VpdmVkIHN0YWNrXG4gKiBAcGFyYW0gcmVjZWl2ZWRcbiAqIEByZXR1cm5zIHtBc3NlcnRpb25SZXR1cm59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0JlVmFsaWRUZXJyYWZvcm0ocmVjZWl2ZWQ6IHN0cmluZyk6IEFzc2VydGlvblJldHVybiB7XG4gIHRyeSB7XG4gICAgaWYgKCFmcy5zdGF0U3luYyhyZWNlaXZlZCkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgdGhyb3cgbWF0Y2hlcnNQYXRoSXNOb3REaXJlY3RvcnkoXCJ0b0JlVmFsaWRUZXJyYWZvcm1cIik7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIG5ldyBBc3NlcnRpb25SZXR1cm4oXG4gICAgICBgRXhwZWN0ZWQgc3ViamVjdCB0byBiZSBhIHRlcnJhZm9ybSBkaXJlY3Rvcnk6ICR7ZX1gLFxuICAgICAgZmFsc2UsXG4gICAgKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGgucmVzb2x2ZShyZWNlaXZlZCwgXCJtYW5pZmVzdC5qc29uXCIpLCBcInV0ZjhcIiksXG4gICAgKTtcblxuICAgIGNvbnN0IHN0YWNrcyA9IE9iamVjdC5lbnRyaWVzKG1hbmlmZXN0LnN0YWNrcyk7XG5cbiAgICBzdGFja3MuZm9yRWFjaCgoW25hbWUsIHN0YWNrXSkgPT4ge1xuICAgICAgY29uc3Qgb3B0cyA9IHtcbiAgICAgICAgY3dkOiBwYXRoLnJlc29sdmUocmVjZWl2ZWQsIChzdGFjayBhcyBhbnkpLndvcmtpbmdEaXJlY3RvcnkpLFxuICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICBzdGRpbzogXCJwaXBlXCIsXG4gICAgICB9IGFzIGFueTtcbiAgICAgIGV4ZWNTeW5jKGAke3RlcnJhZm9ybUJpbmFyeU5hbWV9IGluaXRgLCBvcHRzKTtcbiAgICAgIGNvbnN0IG91dCA9IGV4ZWNTeW5jKGAke3RlcnJhZm9ybUJpbmFyeU5hbWV9IHZhbGlkYXRlIC1qc29uYCwgb3B0cyk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IEpTT04ucGFyc2Uob3V0LnRvU3RyaW5nKCkpO1xuICAgICAgaWYgKCFyZXN1bHQudmFsaWQpIHtcbiAgICAgICAgdGhyb3cgbWF0Y2hlcnNGb3VuZEVycm9yc0luU3RhY2soXG4gICAgICAgICAgcmVzdWx0LmVycm9yX2NvdW50LFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgcmVzdWx0LmRpYWdub3N0aWNzLmpvaW4oXCJcXG5cIiksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBBc3NlcnRpb25SZXR1cm4oXG4gICAgICBgRXhwZWN0ZWQgc3ViamVjdCBub3QgdG8gYmUgYSB2YWxpZCB0ZXJyYWZvcm0gc3RhY2tgLFxuICAgICAgdHJ1ZSxcbiAgICApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIG5ldyBBc3NlcnRpb25SZXR1cm4oXG4gICAgICB3aXRoUHJvY2Vzc091dHB1dChgRXhwZWN0ZWQgc3ViamVjdCB0byBiZSBhIHZhbGlkIHRlcnJhZm9ybSBzdGFja2AsIGUpLFxuICAgICAgZmFsc2UsXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIEV2YWx1YXRlcyB0aGUgYWJpbGl0eSBmb3IgdGhlIHJlY2VpdmVkIHN0YWNrIHRvIHN1Y2Nlc3NmdWxseSBwbGFuXG4gKiBAcGFyYW0gcmVjZWl2ZWRcbiAqIEByZXR1cm5zIHtBc3NlcnRpb25SZXR1cm59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1BsYW5TdWNjZXNzZnVsbHkocmVjZWl2ZWQ6IHN0cmluZyk6IEFzc2VydGlvblJldHVybiB7XG4gIHRyeSB7XG4gICAgaWYgKCFmcy5zdGF0U3luYyhyZWNlaXZlZCkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgdGhyb3cgbWF0Y2hlcnNQYXRoSXNOb3REaXJlY3RvcnkoXCJ0b1BsYW5TdWNjZXNzZnVsbHlcIik7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIG5ldyBBc3NlcnRpb25SZXR1cm4oXG4gICAgICBgRXhwZWN0ZWQgc3ViamVjdCB0byBiZSBhIHRlcnJhZm9ybSBkaXJlY3Rvcnk6ICR7ZX1gLFxuICAgICAgZmFsc2UsXG4gICAgKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGgucmVzb2x2ZShyZWNlaXZlZCwgXCJtYW5pZmVzdC5qc29uXCIpLCBcInV0ZjhcIiksXG4gICAgKTtcblxuICAgIGNvbnN0IHN0YWNrcyA9IE9iamVjdC5lbnRyaWVzKG1hbmlmZXN0LnN0YWNrcyk7XG5cbiAgICBzdGFja3MuZm9yRWFjaCgoWywgc3RhY2tdKSA9PiB7XG4gICAgICBjb25zdCBvcHRzID0ge1xuICAgICAgICBjd2Q6IHBhdGgucmVzb2x2ZShyZWNlaXZlZCwgKHN0YWNrIGFzIGFueSkud29ya2luZ0RpcmVjdG9yeSksXG4gICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgIHN0ZGlvOiBcImlnbm9yZVwiLFxuICAgICAgfSBhcyBhbnk7XG4gICAgICBleGVjU3luYyhgJHt0ZXJyYWZvcm1CaW5hcnlOYW1lfSBpbml0YCwgb3B0cyk7XG5cbiAgICAgIC8vIFRocm93cyBvbiBhIG5vbi16ZXJvIGV4aXQgY29kZVxuICAgICAgZXhlY1N5bmMoYCR7dGVycmFmb3JtQmluYXJ5TmFtZX0gcGxhbiAtaW5wdXQ9ZmFsc2UgLWxvY2s9ZmFsc2UgYCwgb3B0cyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV3IEFzc2VydGlvblJldHVybihcbiAgICAgIGBFeHBlY3RlZCBzdWJqZWN0IG5vdCB0byBwbGFuIHN1Y2Nlc3NmdWxseWAsXG4gICAgICB0cnVlLFxuICAgICk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gbmV3IEFzc2VydGlvblJldHVybihcbiAgICAgIHdpdGhQcm9jZXNzT3V0cHV0KGBFeHBlY3RlZCBzdWJqZWN0IHRvIHBsYW4gc3VjY2Vzc2Z1bGx5YCwgZSksXG4gICAgICBmYWxzZSxcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -365,4 +365,4 @@ class Dependable extends TFExpression {
365
365
  function dependable(dependable) {
366
366
  return token_1.Token.asString(new Dependable(dependable));
367
367
  }
368
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGZFeHByZXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGZFeHByZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTRJQSw4QkFFQztBQW1ERCxrQkFFQztBQU1ELGdEQUVDO0FBK0NELHdDQUVDO0FBNkJELGtDQU1DO0FBa0dELG9CQUVDO0FBd0RELHNDQVVDO0FBZUQsZ0NBRUM7QUFuZEQsMERBQXVEO0FBQ3ZELDBDQUFxRDtBQUNyRCwrQkFBNEI7QUFDNUIsdURBQW1EO0FBRW5ELDJDQUF1QztBQUV2QyxNQUFNLDBCQUEwQixHQUFHLDBCQUEwQixDQUFDO0FBRTlELCtDQUErQztBQUMvQyxNQUFNLFlBQWEsU0FBUSxxQkFBUztJQUN4QixxQkFBcUIsQ0FBQyxPQUF3QixFQUFFLEdBQVE7UUFDaEUsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxJQUFJLG9CQUFZLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkMsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQy9CLE9BQU8sSUFBSSxXQUFXO2lCQUNuQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDbkIsQ0FBQztRQUVELElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxJQUFJLFdBQVcsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM1RCxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7aUJBQ2hDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFB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QUFDLE9BQXdCO1FBQ3JDLE9BQU8sQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBRTlCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDN0IsQ0FBQztDQUNGO0FBQ0QsK0NBQStDO0FBQy9DLFNBQWdCLFVBQVUsQ0FBQyxVQUFnQztJQUN6RCxPQUFPLGFBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUNwRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IElSZXNvbHZhYmxlLCBJUmVzb2x2ZUNvbnRleHQgfSBmcm9tIFwiLi90b2tlbnMvcmVzb2x2YWJsZVwiO1xuaW1wb3J0IHsgSW50cmluc2ljIH0gZnJvbSBcIi4vdG9rZW5zL3ByaXZhdGUvaW50cmluc2ljXCI7XG5pbXBvcnQgeyBUb2tlbml6YXRpb24sIFRva2VuIH0gZnJvbSBcIi4vdG9rZW5zL3Rva2VuXCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi9hcHBcIjtcbmltcG9ydCB7IFRlcnJhZm9ybVN0YWNrIH0gZnJvbSBcIi4vdGVycmFmb3JtLXN0YWNrXCI7XG5pbXBvcnQgeyBJVGVycmFmb3JtRGVwZW5kYWJsZSB9IGZyb20gXCIuL3RlcnJhZm9ybS1kZXBlbmRhYmxlXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5jb25zdCBURVJSQUZPUk1fSURFTlRJRklFUl9SRUdFWCA9IC9eW19hLXpBLVpdW19hLXpBLVowLTldKiQvO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuY2xhc3MgVEZFeHByZXNzaW9uIGV4dGVuZHMgSW50cmluc2ljIGltcGxlbWVudHMgSVJlc29sdmFibGUge1xuICBwcm90ZWN0ZWQgcmVzb2x2ZUV4cHJlc3Npb25QYXJ0KGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCwgYXJnOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJlc29sdmVkQXJnID0gY29udGV4dC5yZXNvbHZlKGFyZyk7XG4gICAgaWYgKFRva2VuaXphdGlvbi5pc1Jlc29sdmFibGUoYXJnKSkge1xuICAgICAgcmV0dXJuIHJlc29sdmVkQXJnO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZXNvbHZlZEFyZykpIHtcbiAgICAgIHJldHVybiBgWyR7cmVzb2x2ZWRBcmdcbiAgICAgICAgLm1hcCgoXywgaW5kZXgpID0+IHRoaXMucmVzb2x2ZUFyZyhjb250ZXh0LCBhcmdbaW5kZXhdKSlcbiAgICAgICAgLmpvaW4oXCIsIFwiKX1dYDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHJlc29sdmVkQXJnID09PSBcIm9iamVjdFwiICYmIHJlc29sdmVkQXJnICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gYHske09iamVjdC5rZXlzKHJlc29sdmVkQXJnKVxuICAgICAgICAubWFwKChrZXkpID0+IGBcIiR7a2V5fVwiID0gJHt0aGlzLnJlc29sdmVBcmcoY29udGV4dCwgYXJnW2tleV0pfWApXG4gICAgICAgIC5qb2luKFwiLCBcIil9fWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc29sdmVkQXJnO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc29sdmVBcmcoY29udGV4dDogSVJlc29sdmVDb250ZXh0LCBhcmc6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVzb2x2ZWRBcmcgPSBjb250ZXh0LnJlc29sdmUoYXJnKTtcblxuICAgIGlmICh0eXBlb2YgYXJnID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBjb25zdCBzdHIgPSB0aGlzLnJlc29sdmVTdHJpbmcoYXJnLCByZXNvbHZlZEFyZyk7XG4gICAgICAvLyBXaGVuIFRva2VuLmFzU3RyaW5nKCkgaXMgdXNlZCBvbiBhbiBvYmplY3QsIHN0ciB3aWxsIGJlIHRoZSBvYmplY3QgYW5kIG5lZWRzIHRvIGJlIHJlc29sdmVkIGRpZmZlcmVudGx5XG4gICAgICAvLyBUaGlzIGhhcHBlbnMgZm9yIGV4YW1wbGUgaW4gTWFwVGVycmFmb3JtSXRlcmF0b3IjX2dldEZvckVhY2hFeHByZXNzaW9uIGFuZCBjYW4gY2F1c2UgaXNzdWVzIGxpa2UgIzM1NDBcbiAgICAgIGlmICh0eXBlb2Ygc3RyICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVFeHByZXNzaW9uUGFydChjb250ZXh0LCBzdHIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlRXhwcmVzc2lvblBhcnQoY29udGV4dCwgYXJnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFc2NhcGUgc3RyaW5nIHJlbW92ZXMgY2hhcmFjdGVycyBmcm9tIHRoZSBzdHJpbmcgdGhhdCBhcmUgbm90IGFsbG93ZWQgaW4gVGVycmFmb3JtIG9yIEpTT05cbiAgICogSXQgbXVzdCBvbmx5IGJlIHVzZWQgb24gbm9uLXRva2VuIHZhbHVlc1xuICAgKi9cbiAgcHJvdGVjdGVkIGVzY2FwZVN0cmluZyhzdHI6IHN0cmluZykge1xuICAgIHJldHVybiBzdHJcbiAgICAgIC5yZXBsYWNlKC9cXG4vZywgXCJcXFxcblwiKSAvLyBlc2NhcGUgbmV3bGluZXNcbiAgICAgIC5yZXBsYWNlKC9cXCR7L2csIFwiJCQke1wiKTsgLy8gZXNjYXBlICR7IHRvICQke1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlU3RyaW5nKHN0cjogc3RyaW5nLCByZXNvbHZlZEFyZzogYW55KSB7XG4gICAgY29uc3QgdG9rZW5MaXN0ID0gVG9rZW5pemF0aW9uLnJldmVyc2VTdHJpbmcoc3RyKTtcbiAgICBjb25zdCBudW1iZXJPZlRva2VucyA9IHRva2VuTGlzdC50b2tlbnMubGVuZ3RoICsgdG9rZW5MaXN0LmludHJpbnNpYy5sZW5ndGg7XG5cbiAgICAvLyBTdHJpbmcgbGl0ZXJhbFxuICAgIGlmIChudW1iZXJPZlRva2VucyA9PT0gMCkge1xuICAgICAgcmV0dXJuIHJlc29sdmVkQXJnICE9PSBgXCJgICYmXG4gICAgICAgIHJlc29sdmVkQXJnLnN0YXJ0c1dpdGgoJ1wiJykgJiZcbiAgICAgICAgcmVzb2x2ZWRBcmcuZW5kc1dpdGgoJ1wiJylcbiAgICAgICAgPyB0aGlzLmVzY2FwZVN0cmluZyhyZXNvbHZlZEFyZylcbiAgICAgICAgOiBgXCIke3RoaXMuZXNjYXBlU3RyaW5nKHJlc29sdmVkQXJnKX1cImA7XG4gICAgfVxuXG4gICAgLy8gT25seSBhIHRva2VuIHJlZmVyZW5jZVxuICAgIGlmIChcbiAgICAgIHRva2VuTGlzdC5saXRlcmFscy5sZW5ndGggPT09IDAgJiZcbiAgICAgIHRva2VuTGlzdC5lc2NhcGVzLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgbnVtYmVyT2ZUb2tlbnMgPT09IDFcbiAgICApIHtcbiAgICAgIHJldHVybiByZXNvbHZlZEFyZztcbiAgICB9XG5cbiAgICAvLyBTdHJpbmcgbGl0ZXJhbCArIHRva2VuIHJlZmVyZW5jZSBjb21iaW5hdGlvblxuICAgIGNvbnN0IGpvaW5SZXN1bHQgPSB0b2tlbkxpc3Quam9pbih7XG4gICAgICBqb2luOiAobGVmdCwgcmlnaHQpID0+IHtcbiAgICAgICAgY29uc3QgbGVmdFRva2VucyA9IFRva2VuaXphdGlvbi5yZXZlcnNlKGxlZnQpO1xuICAgICAgICBjb25zdCBsZWZ0VG9rZW5MaXN0ID0gVG9rZW5pemF0aW9uLnJldmVyc2VTdHJpbmcobGVmdCk7XG4gICAgICAgIGNvbnN0IHJpZ2h0VG9rZW5zID0gVG9rZW5pemF0aW9uLnJldmVyc2UocmlnaHQpO1xuXG4gICAgICAgIGNvbnN0IGxlZnRUb2tlbkNvdW50ID1cbiAgICAgICAgICBsZWZ0VG9rZW5MaXN0LmludHJpbnNpYy5sZW5ndGggKyBsZWZ0VG9rZW5MaXN0LnRva2Vucy5sZW5ndGg7XG5cbiAgICAgICAgLy8gaWYgbGVmdCBpcyBtaXhlZCwgbmVlZHMgdG8gYmUgbGVmdCBhbG9uZSAoYmVjYXVzZSBpdCdzIGEgcmVzdWx0IG9mIGEgcHJldmlvdXMgam9pbiBpdGVyYXRpb24pXG4gICAgICAgIGxldCBsZWZ0VmFsdWUgPSBsZWZ0O1xuXG4gICAgICAgIC8vIGlmIGxlZnQgaXMgYSBzdHJpbmcgbGl0ZXJhbCwgdGhlbiB3ZSBuZWVkIHRvIGVzY2FwZSBpdFxuICAgICAgICBpZiAobGVmdFRva2VuTGlzdC5saXRlcmFscy5sZW5ndGggPT09IDEgJiYgbGVmdFRva2VuQ291bnQgPT09IDApIHtcbiAgICAgICAgICBsZWZ0VmFsdWUgPSB0aGlzLmVzY2FwZVN0cmluZyhsZWZ0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIGxlZnQgaXMgb25seSBhIHRva2VuLCBuZWVkcyB0byBiZSB3cmFwcGVkIGFzIHRlcnJhZm9ybSBleHByZXNzaW9uXG4gICAgICAgIGlmIChsZWZ0VG9rZW5MaXN0LmxpdGVyYWxzLmxlbmd0aCA9PT0gMCAmJiBsZWZ0VG9rZW5Db3VudCA9PT0gMSkge1xuICAgICAgICAgIGxlZnRWYWx1ZSA9IGBcXCR7JHtsZWZ0VG9rZW5zWzBdfX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmlnaHRWYWx1ZSA9XG4gICAgICAgICAgcmlnaHRUb2tlbnMubGVuZ3RoID09PSAwXG4gICAgICAgICAgICA/IHRoaXMuZXNjYXBlU3RyaW5nKHJpZ2h0KVxuICAgICAgICAgICAgOiBgXFwkeyR7cmlnaHRUb2tlbnNbMF19fWA7XG5cbiAgICAgICAgcmV0dXJuIGAke2xlZnRWYWx1ZX0ke3JpZ2h0VmFsdWV9YDtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gam9pblJlc3VsdCAhPT0gYFwiYCAmJlxuICAgICAgam9pblJlc3VsdC5zdGFydHNXaXRoKCdcIicpICYmXG4gICAgICBqb2luUmVzdWx0LmVuZHNXaXRoKCdcIicpXG4gICAgICA/IGpvaW5SZXN1bHRcbiAgICAgIDogYFwiJHtqb2luUmVzdWx0fVwiYDtcbiAgfVxufVxuXG4vLyBBIHN0cmluZyB0aGF0IHJlcHJlc2VudHMgYW4gaW5wdXQgdmFsdWUgdG8gYmUgZXNjYXBlZFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmNsYXNzIFJhd1N0cmluZyBleHRlbmRzIFRGRXhwcmVzc2lvbiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc3RyOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzdHIpO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmUoY29udGV4dDogSVJlc29sdmVDb250ZXh0KSB7XG4gICAgY29uc3QgcXRzID0gY29udGV4dC5zdXBwcmVzc0JyYWNlcyA/IGBcImAgOiBgYDtcbiAgICByZXR1cm4gYCR7cXRzfSR7dGhpcy5lc2NhcGVTdHJpbmcodGhpcy5zdHIpLnJlcGxhY2UoL1xcXCIvZywgJ1xcXFxcIicpfSR7cXRzfWA7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdXNlbGVzcy1lc2NhcGVcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5zdHI7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBmdW5jdGlvbiByYXdTdHJpbmcoc3RyOiBzdHJpbmcpOiBJUmVzb2x2YWJsZSB7XG4gIHJldHVybiBuZXcgUmF3U3RyaW5nKHN0cik7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5jbGFzcyBSZWZlcmVuY2UgZXh0ZW5kcyBURkV4cHJlc3Npb24ge1xuICAvKipcbiAgICogQSBzaW5nbGUgcmVmZXJlbmNlIGNvdWxkIGJlIHVzZWQgaW4gbXVsdGlwbGUgc3RhY2tzLFxuICAgKiBlLmcuIGlmIHdlIGV4cG9zZSB0aGUgcmVmIGRpcmVjdGx5IG9yIGFzIHRva2VuIG9uIHRoZSBzdGFjay5cbiAgICogV2UgbmVlZCB0byBzdG9yZSB0aGUgaWRlbnRpZmllciBmb3IgZWFjaCBzdGFjayxcbiAgICogc28gdGhhdCB0aGUgcmVzb2x2ZWQgaWRlbnRpZmllciBzdHJpbmcgbWF0Y2hlcyB0aGUgc3RhY2sgaXQncyByZXNvbHZlZCBpbi5cbiAgICovXG4gIHByaXZhdGUgY3Jvc3NTdGFja0lkZW50aWZpZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpZGVudGlmaWVyOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBvcmlnaW5TdGFjaz86IFRlcnJhZm9ybVN0YWNrLFxuICApIHtcbiAgICBzdXBlcihpZGVudGlmaWVyKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCk6IHN0cmluZyB7XG4gICAgLy8gV2UgY2hlY2sgZm9yIGNyb3NzIHN0YWNrIHJlZmVyZW5jZXMgb24gcHJlcGFyYXRpb24sIHNldHRpbmcgYSBuZXcgaWRlbnRpZmllclxuICAgIGNvbnN0IHJlc29sdXRpb25TdGFjayA9IFRlcnJhZm9ybVN0YWNrLm9mKGNvbnRleHQuc2NvcGUpO1xuICAgIGNvbnN0IHN0YWNrTmFtZSA9IHJlc29sdXRpb25TdGFjay50b1N0cmluZygpO1xuICAgIGNvbnN0IHN1cHByZXNzQnJhY2VzID0gY29udGV4dC5zdXBwcmVzc0JyYWNlcztcbiAgICBjb250ZXh0LnN1cHByZXNzQnJhY2VzID0gdHJ1ZTtcblxuICAgIGlmIChjb250ZXh0LnByZXBhcmluZykge1xuICAgICAgLy8gQ3Jvc3Mgc3RhY2sgcmVmZXJlbmNlXG4gICAgICBpZiAodGhpcy5vcmlnaW5TdGFjayAmJiB0aGlzLm9yaWdpblN0YWNrICE9PSByZXNvbHV0aW9uU3RhY2spIHtcbiAgICAgICAgY29uc3QgYXBwID0gQXBwLm9mKHRoaXMub3JpZ2luU3RhY2spO1xuICAgICAgICBjb25zdCBjc3IgPSBhcHAuY3Jvc3NTdGFja1JlZmVyZW5jZShcbiAgICAgICAgICB0aGlzLm9yaWdpblN0YWNrLFxuICAgICAgICAgIHJlc29sdXRpb25TdGFjayxcbiAgICAgICAgICB0aGlzLmlkZW50aWZpZXIsXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5jcm9zc1N0YWNrSWRlbnRpZmllcltzdGFja05hbWVdID0gY3NyO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIHRoaXMgaXMgYSBjcm9zcyBzdGFjayByZWZlcmVuY2Ugd2Ugd2lsbCByZXNvbHZlIHRvIGEgcmVmZXJlbmNlIHdpdGhpbiB0aGlzIHN0YWNrLlxuICAgIGlmICh0aGlzLmNyb3NzU3RhY2tJZGVudGlmaWVyW3N0YWNrTmFtZV0pIHtcbiAgICAgIHJldHVybiBzdXBwcmVzc0JyYWNlc1xuICAgICAgICA/IHRoaXMuY3Jvc3NTdGFja0lkZW50aWZpZXJbc3RhY2tOYW1lXVxuICAgICAgICA6IGBcXCR7JHt0aGlzLmNyb3NzU3RhY2tJZGVudGlmaWVyW3N0YWNrTmFtZV19fWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cHByZXNzQnJhY2VzID8gdGhpcy5pZGVudGlmaWVyIDogYFxcJHske3RoaXMuaWRlbnRpZmllcn19YDtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGZ1bmN0aW9uIHJlZihpZGVudGlmaWVyOiBzdHJpbmcsIHN0YWNrPzogVGVycmFmb3JtU3RhY2spOiBJUmVzb2x2YWJsZSB7XG4gIHJldHVybiBuZXcgUmVmZXJlbmNlKGlkZW50aWZpZXIsIHN0YWNrKTtcbn1cblxuLyoqXG4gKiBtYXJrcyB0aGUgYXJndW1lbnQgYXMgYmVpbmcgdXNlZCBpbiBhIHRlcnJhZm9ybSBleHByZXNzaW9uXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5zaWRlVGZFeHByZXNzaW9uKGFyZzogYW55KSB7XG4gIHJldHVybiBhcmc7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5jbGFzcyBQcm9wZXJ0eUFjY2VzcyBleHRlbmRzIFRGRXhwcmVzc2lvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGFyZ2V0OiBFeHByZXNzaW9uLFxuICAgIHByaXZhdGUgYXJnczogRXhwcmVzc2lvbltdLFxuICApIHtcbiAgICBzdXBlcih7IHRhcmdldCwgYXJncyB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3VwcHJlc3NCcmFjZXMgPSBjb250ZXh0LnN1cHByZXNzQnJhY2VzO1xuICAgIGNvbnRleHQuc3VwcHJlc3NCcmFjZXMgPSB0cnVlO1xuXG4gICAgY29uc3Qgc2VyaWFsaXplZEFyZ3MgPSB0aGlzLmFyZ3NcbiAgICAgIC5tYXAoKGFyZykgPT4ge1xuICAgICAgICBpZiAoYXJnID09PSBgKmApIHtcbiAgICAgICAgICByZXR1cm4gXCJbKl1cIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGEgPSB0aGlzLnJlc29sdmVBcmcoY29udGV4dCwgYXJnKTtcbiAgICAgICAgY29uc3QgaXNQbGFpblN0cmluZyA9XG4gICAgICAgICAgdHlwZW9mIGFyZyA9PT0gXCJzdHJpbmdcIiAmJiBURVJSQUZPUk1fSURFTlRJRklFUl9SRUdFWC50ZXN0KGFyZyk7XG4gICAgICAgIGNvbnN0IGlzUGxhaW5OdW1iZXIgPVxuICAgICAgICAgIHR5cGVvZiBhcmcgPT09IFwibnVtYmVyXCIgJiYgIVRva2VuLmlzVW5yZXNvbHZlZChhcmcpO1xuXG4gICAgICAgIGlmIChpc1BsYWluU3RyaW5nIHx8IGlzUGxhaW5OdW1iZXIpIHtcbiAgICAgICAgICByZXR1cm4gYC4ke2FyZ31gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGBbJHthfV1gO1xuICAgICAgfSkgLy8gcHJvcGVydHkgYWNjZXNzXG4gICAgICAuam9pbihcIlwiKTtcblxuICAgIGNvbnN0IHRhcmdldEV4cHIgPVxuICAgICAgQ29uc3RydWN0LmlzQ29uc3RydWN0KHRoaXMudGFyZ2V0KSAmJiBcImZxblwiIGluIHRoaXMudGFyZ2V0XG4gICAgICAgID8gdGhpcy50YXJnZXQuZnFuXG4gICAgICAgIDogdGhpcy5yZXNvbHZlQXJnKGNvbnRleHQsIHRoaXMudGFyZ2V0KTtcblxuICAgIGNvbnN0IGV4cHIgPSBgJHt0YXJnZXRFeHByfSR7c2VyaWFsaXplZEFyZ3N9YDtcblxuICAgIHJldHVybiBzdXBwcmVzc0JyYWNlcyA/IGV4cHIgOiBgXFwkeyR7ZXhwcn19YDtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnR5QWNjZXNzKHRhcmdldDogRXhwcmVzc2lvbiwgYXJnczogRXhwcmVzc2lvbltdKSB7XG4gIHJldHVybiBuZXcgUHJvcGVydHlBY2Nlc3ModGFyZ2V0LCBhcmdzKSBhcyBJUmVzb2x2YWJsZTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmNsYXNzIENvbmRpdGlvbmFsRXhwcmVzc2lvbiBleHRlbmRzIFRGRXhwcmVzc2lvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29uZGl0aW9uOiBFeHByZXNzaW9uLFxuICAgIHByaXZhdGUgdHJ1ZVZhbHVlOiBFeHByZXNzaW9uLFxuICAgIHByaXZhdGUgZmFsc2VWYWx1ZTogRXhwcmVzc2lvbixcbiAgKSB7XG4gICAgc3VwZXIoeyBjb25kaXRpb24sIHRydWVWYWx1ZSwgZmFsc2VWYWx1ZSB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3VwcHJlc3NCcmFjZXMgPSBjb250ZXh0LnN1cHByZXNzQnJhY2VzO1xuICAgIGNvbnRleHQuc3VwcHJlc3NCcmFjZXMgPSB0cnVlO1xuXG4gICAgY29uc3QgY29uZGl0aW9uID0gdGhpcy5yZXNvbHZlQXJnKGNvbnRleHQsIHRoaXMuY29uZGl0aW9uKTtcbiAgICBjb25zdCB0cnVlVmFsdWUgPSB0aGlzLnJlc29sdmVBcmcoY29udGV4dCwgdGhpcy50cnVlVmFsdWUpO1xuICAgIGNvbnN0IGZhbHNlVmFsdWUgPSB0aGlzLnJlc29sdmVBcmcoY29udGV4dCwgdGhpcy5mYWxzZVZhbHVlKTtcblxuICAgIGNvbnN0IGV4cHIgPSBgJHtjb25kaXRpb259ID8gJHt0cnVlVmFsdWV9IDogJHtmYWxzZVZhbHVlfWA7XG5cbiAgICByZXR1cm4gc3VwcHJlc3NCcmFjZXMgPyBleHByIDogYFxcJHske2V4cHJ9fWA7XG4gIH1cbn1cblxuLyoqXG4gKiBjcmVhdGVzIGFuIGV4cHJlc3Npb24gbGlrZSBgdHJ1ZSA/IDEgOiAwYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uZGl0aW9uYWwoXG4gIGNvbmRpdGlvbjogRXhwcmVzc2lvbixcbiAgdHJ1ZVZhbHVlOiBFeHByZXNzaW9uLFxuICBmYWxzZVZhbHVlOiBFeHByZXNzaW9uLFxuKSB7XG4gIHJldHVybiBuZXcgQ29uZGl0aW9uYWxFeHByZXNzaW9uKGNvbmRpdGlvbiwgdHJ1ZVZhbHVlLCBmYWxzZVZhbHVlKTtcbn1cblxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuaGFzaGljb3JwLmNvbS90ZXJyYWZvcm0vbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvb3BlcmF0b3JzXG5leHBvcnQgdHlwZSBPcGVyYXRvciA9XG4gIHwgXCIhXCJcbiAgfCBcIi1cIlxuICB8IFwiKlwiXG4gIHwgXCIvXCJcbiAgfCBcIiVcIlxuICB8IFwiK1wiXG4gIHwgXCI+XCJcbiAgfCBcIj49XCJcbiAgfCBcIjxcIlxuICB8IFwiPD1cIlxuICB8IFwiPT1cIlxuICB8IFwiIT1cIlxuICB8IFwiJiZcIlxuICB8IFwifHxcIjtcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBPcGVyYXRvciBFeHByZXNzaW9uc1xuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjbGFzcyBPcGVyYXRvckV4cHJlc3Npb24gZXh0ZW5kcyBURkV4cHJlc3Npb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG9wZXJhdG9yOiBPcGVyYXRvcixcbiAgICBwcml2YXRlIGxlZnQ6IEV4cHJlc3Npb24sXG4gICAgcHJpdmF0ZSByaWdodD86IEV4cHJlc3Npb24sIC8vIG9wdGlvbmFsIGZvciAhIGFuZCAtIG9wZXJhdG9yXG4gICkge1xuICAgIHN1cGVyKHsgb3BlcmF0b3IsIGxlZnRWYWx1ZTogbGVmdCwgcmlnaHRWYWx1ZTogcmlnaHQgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZShjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN1cHByZXNzQnJhY2VzID0gY29udGV4dC5zdXBwcmVzc0JyYWNlcztcbiAgICBjb250ZXh0LnN1cHByZXNzQnJhY2VzID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxlZnQgPSB0aGlzLnJlc29sdmVBcmcoY29udGV4dCwgdGhpcy5sZWZ0KTtcbiAgICBjb25zdCByaWdodCA9XG4gICAgICB0aGlzLnJpZ2h0ICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyB0aGlzLnJlc29sdmVBcmcoY29udGV4dCwgdGhpcy5yaWdodClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBsZXQgZXhwciA9IFwiXCI7XG4gICAgc3dpdGNoICh0aGlzLm9wZXJhdG9yKSB7XG4gICAgICBjYXNlIFwiIVwiOiB7XG4gICAgICAgIGV4cHIgPSBgISR7bGVmdH1gOyAvLyBubyBicmFjZXMgbmVlZGVkIGFzICEgaGFzIGhpZ2hlc3QgcHJlY2VkZW5jZVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgXCItXCI6IHtcbiAgICAgICAgaWYgKHJpZ2h0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBzdWJ0cmFjdGlvblxuICAgICAgICAgIGV4cHIgPSBgKCR7bGVmdH0gLSAke3JpZ2h0fSlgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIG5lZ2F0aW9uXG4gICAgICAgICAgZXhwciA9IGAtJHtsZWZ0fWA7IC8vIG5vIGJyYWNlcyBuZWVkZWQgYXMgLSBoYXMgaGlnaGVzdCBwcmVjZWRlbmNlXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGV4cHIgPSBgKCR7bGVmdH0gJHt0aGlzLm9wZXJhdG9yfSAke3JpZ2h0fSlgO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdXBwcmVzc0JyYWNlcyA/IGV4cHIgOiBgXFwkeyR7ZXhwcn19YDtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuY2xhc3MgRnVuY3Rpb25DYWxsIGV4dGVuZHMgVEZFeHByZXNzaW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuYW1lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBhcmdzOiBFeHByZXNzaW9uW10sXG4gICkge1xuICAgIHN1cGVyKHsgbmFtZSwgYXJncyB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3VwcHJlc3NCcmFjZXMgPSBjb250ZXh0LnN1cHByZXNzQnJhY2VzO1xuICAgIGNvbnN0IG9yaWdpbmFsSWdub3JlRXNjYXBlcyA9IGNvbnRleHQuaWdub3JlRXNjYXBlcztcbiAgICBjb25zdCBvcmlnaW5hbFdhcm5Fc2NhcGVzID0gY29udGV4dC53YXJuRXNjYXBlcztcblxuICAgIGNvbnRleHQuc3VwcHJlc3NCcmFjZXMgPSB0cnVlO1xuICAgIGNvbnRleHQuaWdub3JlRXNjYXBlcyA9IHRydWU7XG4gICAgY29udGV4dC53YXJuRXNjYXBlcyA9IHRydWU7XG5cbiAgICBjb25zdCBzZXJpYWxpemVkQXJncyA9IHRoaXMuYXJnc1xuICAgICAgLm1hcCgoYXJnKSA9PiB0aGlzLnJlc29sdmVBcmcoY29udGV4dCwgYXJnKSlcbiAgICAgIC5qb2luKFwiLCBcIik7XG5cbiAgICBjb25zdCBleHByID0gYCR7dGhpcy5uYW1lfSgke3NlcmlhbGl6ZWRBcmdzfSlgO1xuXG4gICAgY29udGV4dC5pZ25vcmVFc2NhcGVzID0gb3JpZ2luYWxJZ25vcmVFc2NhcGVzO1xuICAgIGNvbnRleHQud2FybkVzY2FwZXMgPSBvcmlnaW5hbFdhcm5Fc2NhcGVzO1xuXG4gICAgcmV0dXJuIHN1cHByZXNzQnJhY2VzID8gZXhwciA6IGBcXCR7JHtleHByfX1gO1xuICB9XG59XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGwobmFtZTogc3RyaW5nLCBhcmdzOiBFeHByZXNzaW9uW10pIHtcbiAgcmV0dXJuIG5ldyBGdW5jdGlvbkNhbGwobmFtZSwgYXJncykgYXMgSVJlc29sdmFibGU7XG59XG5cbmV4cG9ydCBjb25zdCBGT1JfRVhQUkVTU0lPTl9LRVkgPSByZWYoXCJrZXlcIik7XG5leHBvcnQgY29uc3QgRk9SX0VYUFJFU1NJT05fVkFMVUUgPSByZWYoXCJ2YWxcIik7XG5cbi8qKlxuICogaHR0cHM6Ly9kZXZlbG9wZXIuaGFzaGljb3JwLmNvbS90ZXJyYWZvcm0vbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvZm9yXG4gKi9cbmNsYXNzIEZvckV4cHJlc3Npb24gZXh0ZW5kcyBURkV4cHJlc3Npb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGlucHV0OiBFeHByZXNzaW9uLFxuICAgIHByaXZhdGUgdmFsdWVFeHByZXNzaW9uOiBFeHByZXNzaW9uLFxuICAgIHByaXZhdGUga2V5RXhwcmVzc2lvbj86IEV4cHJlc3Npb24sXG4gICkge1xuICAgIHN1cGVyKHsgaW5wdXQsIHZhbHVlRXhwcmVzc2lvbiwga2V5RXhwcmVzc2lvbiB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3VwcHJlc3NCcmFjZXMgPSBjb250ZXh0LnN1cHByZXNzQnJhY2VzO1xuICAgIGNvbnRleHQuc3VwcHJlc3NCcmFjZXMgPSB0cnVlO1xuICAgIGNvbnRleHQuaXRlcmF0b3JDb250ZXh0ID0gXCJGT1JfRVhQUkVTU0lPTlwiO1xuICAgIGNvbnN0IGtleSA9IHRoaXMucmVzb2x2ZUFyZyhjb250ZXh0LCBGT1JfRVhQUkVTU0lPTl9LRVkpO1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5yZXNvbHZlQXJnKGNvbnRleHQsIEZPUl9FWFBSRVNTSU9OX1ZBTFVFKTtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMucmVzb2x2ZUFyZyhjb250ZXh0LCB0aGlzLmlucHV0KTtcbiAgICBjb25zdCB2YWx1ZUV4cHIgPSB0aGlzLnJlc29sdmVFeHByZXNzaW9uUGFydChjb250ZXh0LCB0aGlzLnZhbHVlRXhwcmVzc2lvbik7XG5cbiAgICBsZXQgZXhwcjogc3RyaW5nO1xuICAgIGlmICh0aGlzLmtleUV4cHJlc3Npb24pIHtcbiAgICAgIGNvbnN0IGtleUV4cHIgPSB0aGlzLnJlc29sdmVFeHByZXNzaW9uUGFydChjb250ZXh0LCB0aGlzLmtleUV4cHJlc3Npb24pO1xuXG4gICAgICBleHByID0gYHsgZm9yICR7a2V5fSwgJHt2YWx1ZX0gaW4gJHtpbnB1dH06ICR7a2V5RXhwcn0gPT4gJHt2YWx1ZUV4cHJ9IH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICBleHByID0gYFsgZm9yICR7a2V5fSwgJHt2YWx1ZX0gaW4gJHtpbnB1dH06ICR7dmFsdWVFeHByfV1gO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBwcmVzc0JyYWNlcyA/IGV4cHIgOiBgXFwkeyR7ZXhwcn19YDtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBmb3IgZXhwcmVzc2lvbiwgdXNlZCBmb3IgYWR2YW5jZWQgaW50ZXJuYWwgdXNlIGNhc2VzIChlLmcuIGluIHRoZSBAY2RrdG4vYXdzLWFkYXB0ZXIpXG4gKiBJdCBpcyBjdXJyZW50bHkgbm90IHBvc3NpYmxlIHRvIHVzZSB0aGlzIHZpYSBKU0lJIGluIG90aGVyIGxhbmd1YWdlcy4gVXN1YWxseSB5b3UgbWlnaHQgd2FudCB0b1xuICogdXNlIFRlcnJhZm9ybUl0ZXJhdG9yIGluc3RlYWQuXG4gKlxuICogQHBhcmFtIGlucHV0IHRoZSBpbnB1dCBmb3IgdGhlIGV4cHJlc3Npb24gZS5nLiBhIGxpc3Qgb3IgYW4gb2JqZWN0XG4gKiBAcGFyYW0gdmFsdWVFeHByZXNzaW9uIHdpbGwgZXhwcmVzcyB0aGUgdmFsdWUgZS5nLiBbIGZvciBpIGluICZsdDtpbnB1dCZndDsgOiAmbHQ7dmFsdWVFeHByZXNzaW9uJmd0OyBdXG4gKiBAcGFyYW0ga2V5RXhwcmVzc2lvbiBpZiBzZXQgd2lsbCByZXR1cm4gYW4gb2JqZWN0IGUuZy4geyBmb3Igayx2IGluICZsdDtpbnB1dCZndDsgOiAmbHQ7a2V5RXhwcmVzc2lvbiZndDsgPT4gJmx0O3ZhbHVlRXhwcmVzc2lvbiZndDt9XG4gKiBAcmV0dXJucyBhIGZvciBleHByZXNzaW9uXG4gKlxuICogVGhlIHZhcmlhYmxlcyBmb3Iga2V5IChmb3IgbWFwcykgLyBpbmRleCAoZm9yIGxpc3RzKSBhbmQgdmFsdWUgdGhhdCBhcmUgdmFsaWQgaW4gdGhlIGtleS0gYW5kIHZhbHVlRXhwcmVzc2lvblxuICogY2FuIGJlIHJlZmVyZW5jZWQgYnkgdXNpbmcgdGhlc2UgY29uc3RhbnRzOiBGT1JfRVhQUkVTU0lPTl9LRVkgYW5kIEZPUl9FWFBSRVNTSU9OX1ZBTFVFLlxuICpcbiAqIEN1cnJlbnRseSBuZXN0aW5nIGZvciBleHByZXNzaW9ucyBpcyBub3Qgc3VwcG9ydGVkIGR1ZSB0byB0aGlzIHNpbXBsaWZpY2F0aW9uLlxuICpcbiAqIEN1cnJlbnRseSBkb2VzIG5vdCBzdXBwb3J0IGZpbHRlcmluZyBlbGVtZW50cyAoaWYgY2xhdXNlKSBvciBncm91cGluZyByZXN1bHRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JFeHByZXNzaW9uKFxuICBpbnB1dDogRXhwcmVzc2lvbixcbiAgdmFsdWVFeHByZXNzaW9uOiBFeHByZXNzaW9uLFxuICBrZXlFeHByZXNzaW9uPzogRXhwcmVzc2lvbixcbikge1xuICByZXR1cm4gbmV3IEZvckV4cHJlc3Npb24oXG4gICAgaW5wdXQsXG4gICAgdmFsdWVFeHByZXNzaW9uLFxuICAgIGtleUV4cHJlc3Npb24sXG4gICkgYXMgSVJlc29sdmFibGU7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5jbGFzcyBEZXBlbmRhYmxlIGV4dGVuZHMgVEZFeHByZXNzaW9uIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkZXBlbmRhYmxlOiBJVGVycmFmb3JtRGVwZW5kYWJsZSkge1xuICAgIHN1cGVyKGRlcGVuZGFibGUpO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmUoY29udGV4dDogSVJlc29sdmVDb250ZXh0KTogc3RyaW5nIHtcbiAgICBjb250ZXh0LnN1cHByZXNzQnJhY2VzID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLmRlcGVuZGFibGUuZnFuO1xuICB9XG59XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGZ1bmN0aW9uIGRlcGVuZGFibGUoZGVwZW5kYWJsZTogSVRlcnJhZm9ybURlcGVuZGFibGUpOiBzdHJpbmcge1xuICByZXR1cm4gVG9rZW4uYXNTdHJpbmcobmV3IERlcGVuZGFibGUoZGVwZW5kYWJsZSkpO1xufVxuXG5leHBvcnQgdHlwZSBFeHByZXNzaW9uID1cbiAgfCBSZWZlcmVuY2VcbiAgfCBGdW5jdGlvbkNhbGxcbiAgfCBQcm9wZXJ0eUFjY2Vzc1xuICB8IENvbmRpdGlvbmFsRXhwcmVzc2lvblxuICB8IE9wZXJhdG9yRXhwcmVzc2lvblxuICB8IERlcGVuZGFibGVcbiAgfCBGb3JFeHByZXNzaW9uXG4gIHwgc3RyaW5nXG4gIHwgc3RyaW5nW11cbiAgfCBudW1iZXJcbiAgfCBib29sZWFuXG4gIHwgSVJlc29sdmFibGVcbiAgfCB7IFtrZXk6IHN0cmluZ106IGFueSB9XG4gIHwgbnVsbFxuICB8IGFueSAvLyB1bHRpbWF0ZWx5IGFueSB2YWxpZCBUZXJyYWZvcm0gdHlwZSBjYW4gYmUgdXNlZCBhcyBhbiBleHByZXNzaW9uXG4gIHwgYW55W107XG4iXX0=
368
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGZFeHByZXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RmRXhwcmVzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE0SUEsOEJBRUM7QUFtREQsa0JBRUM7QUFNRCxnREFFQztBQStDRCx3Q0FFQztBQTZCRCxrQ0FNQztBQWtHRCxvQkFFQztBQXdERCxzQ0FVQztBQWVELGdDQUVDO0FBbmRELDBEQUF1RDtBQUN2RCwwQ0FBcUQ7QUFDckQsK0JBQTRCO0FBQzVCLHVEQUFtRDtBQUVuRCwyQ0FBdUM7QUFFdkMsTUFBTSwwQkFBMEIsR0FBRywwQkFBMEIsQ0FBQztBQUU5RCwrQ0FBK0M7QUFDL0MsTUFBTSxZQUFhLFNBQVEscUJBQVM7SUFDeEIscUJBQXFCLENBQUMsT0FBd0IsRUFBRSxHQUFRO1FBQ2hFLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsSUFBSSxvQkFBWSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ25DLE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUMvQixPQUFPLElBQUksV0FBVztpQkFDbkIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7aUJBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ25CLENBQUM7UUFFRCxJQUFJLE9BQU8sV0FBVyxLQUFLLFFBQVEsSUFBSSxXQUFXLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDNUQsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2lCQUNoQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxD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LE9BQU8sQ0FBQyxPQUF3QjtRQUNyQyxPQUFPLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUU5QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzdCLENBQUM7Q0FDRjtBQUNELCtDQUErQztBQUMvQyxTQUFnQixVQUFVLENBQUMsVUFBZ0M7SUFDekQsT0FBTyxhQUFLLENBQUMsUUFBUSxDQUFDLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyBJUmVzb2x2YWJsZSwgSVJlc29sdmVDb250ZXh0IH0gZnJvbSBcIi4vdG9rZW5zL3Jlc29sdmFibGVcIjtcbmltcG9ydCB7IEludHJpbnNpYyB9IGZyb20gXCIuL3Rva2Vucy9wcml2YXRlL2ludHJpbnNpY1wiO1xuaW1wb3J0IHsgVG9rZW5pemF0aW9uLCBUb2tlbiB9IGZyb20gXCIuL3Rva2Vucy90b2tlblwiO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4vYXBwXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1TdGFjayB9IGZyb20gXCIuL3RlcnJhZm9ybS1zdGFja1wiO1xuaW1wb3J0IHsgSVRlcnJhZm9ybURlcGVuZGFibGUgfSBmcm9tIFwiLi90ZXJyYWZvcm0tZGVwZW5kYWJsZVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuY29uc3QgVEVSUkFGT1JNX0lERU5USUZJRVJfUkVHRVggPSAvXltfYS16QS1aXVtfYS16QS1aMC05XSokLztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmNsYXNzIFRGRXhwcmVzc2lvbiBleHRlbmRzIEludHJpbnNpYyBpbXBsZW1lbnRzIElSZXNvbHZhYmxlIHtcbiAgcHJvdGVjdGVkIHJlc29sdmVFeHByZXNzaW9uUGFydChjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQsIGFyZzogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCByZXNvbHZlZEFyZyA9IGNvbnRleHQucmVzb2x2ZShhcmcpO1xuICAgIGlmIChUb2tlbml6YXRpb24uaXNSZXNvbHZhYmxlKGFyZykpIHtcbiAgICAgIHJldHVybiByZXNvbHZlZEFyZztcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVzb2x2ZWRBcmcpKSB7XG4gICAgICByZXR1cm4gYFske3Jlc29sdmVkQXJnXG4gICAgICAgIC5tYXAoKF8sIGluZGV4KSA9PiB0aGlzLnJlc29sdmVBcmcoY29udGV4dCwgYXJnW2luZGV4XSkpXG4gICAgICAgIC5qb2luKFwiLCBcIil9XWA7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiByZXNvbHZlZEFyZyA9PT0gXCJvYmplY3RcIiAmJiByZXNvbHZlZEFyZyAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGB7JHtPYmplY3Qua2V5cyhyZXNvbHZlZEFyZylcbiAgICAgICAgLm1hcCgoa2V5KSA9PiBgXCIke2tleX1cIiA9ICR7dGhpcy5yZXNvbHZlQXJnKGNvbnRleHQsIGFyZ1trZXldKX1gKVxuICAgICAgICAuam9pbihcIiwgXCIpfX1gO1xuICAgIH1cblxuICAgIHJldHVybiByZXNvbHZlZEFyZztcbiAgfVxuXG4gIHByb3RlY3RlZCByZXNvbHZlQXJnKGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCwgYXJnOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJlc29sdmVkQXJnID0gY29udGV4dC5yZXNvbHZlKGFyZyk7XG5cbiAgICBpZiAodHlwZW9mIGFyZyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgY29uc3Qgc3RyID0gdGhpcy5yZXNvbHZlU3RyaW5nKGFyZywgcmVzb2x2ZWRBcmcpO1xuICAgICAgLy8gV2hlbiBUb2tlbi5hc1N0cmluZygpIGlzIHVzZWQgb24gYW4gb2JqZWN0LCBzdHIgd2lsbCBiZSB0aGUgb2JqZWN0IGFuZCBuZWVkcyB0byBiZSByZXNvbHZlZCBkaWZmZXJlbnRseVxuICAgICAgLy8gVGhpcyBoYXBwZW5zIGZvciBleGFtcGxlIGluIE1hcFRlcnJhZm9ybUl0ZXJhdG9yI19nZXRGb3JFYWNoRXhwcmVzc2lvbiBhbmQgY2FuIGNhdXNlIGlzc3VlcyBsaWtlICMzNTQwXG4gICAgICBpZiAodHlwZW9mIHN0ciAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlRXhwcmVzc2lvblBhcnQoY29udGV4dCwgc3RyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZUV4cHJlc3Npb25QYXJ0KGNvbnRleHQsIGFyZyk7XG4gIH1cblxuICAvKipcbiAgICogRXNjYXBlIHN0cmluZyByZW1vdmVzIGNoYXJhY3RlcnMgZnJvbSB0aGUgc3RyaW5nIHRoYXQgYXJlIG5vdCBhbGxvd2VkIGluIFRlcnJhZm9ybSBvciBKU09OXG4gICAqIEl0IG11c3Qgb25seSBiZSB1c2VkIG9uIG5vbi10b2tlbiB2YWx1ZXNcbiAgICovXG4gIHByb3RlY3RlZCBlc2NhcGVTdHJpbmcoc3RyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyXG4gICAgICAucmVwbGFjZSgvXFxuL2csIFwiXFxcXG5cIikgLy8gZXNjYXBlIG5ld2xpbmVzXG4gICAgICAucmVwbGFjZSgvXFwkey9nLCBcIiQkJHtcIik7IC8vIGVzY2FwZSAkeyB0byAkJHtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVN0cmluZyhzdHI6IHN0cmluZywgcmVzb2x2ZWRBcmc6IGFueSkge1xuICAgIGNvbnN0IHRva2VuTGlzdCA9IFRva2VuaXphdGlvbi5yZXZlcnNlU3RyaW5nKHN0cik7XG4gICAgY29uc3QgbnVtYmVyT2ZUb2tlbnMgPSB0b2tlbkxpc3QudG9rZW5zLmxlbmd0aCArIHRva2VuTGlzdC5pbnRyaW5zaWMubGVuZ3RoO1xuXG4gICAgLy8gU3RyaW5nIGxpdGVyYWxcbiAgICBpZiAobnVtYmVyT2ZUb2tlbnMgPT09IDApIHtcbiAgICAgIHJldHVybiByZXNvbHZlZEFyZyAhPT0gYFwiYCAmJlxuICAgICAgICByZXNvbHZlZEFyZy5zdGFydHNXaXRoKCdcIicpICYmXG4gICAgICAgIHJlc29sdmVkQXJnLmVuZHNXaXRoKCdcIicpXG4gICAgICAgID8gdGhpcy5lc2NhcGVTdHJpbmcocmVzb2x2ZWRBcmcpXG4gICAgICAgIDogYFwiJHt0aGlzLmVzY2FwZVN0cmluZyhyZXNvbHZlZEFyZyl9XCJgO1xuICAgIH1cblxuICAgIC8vIE9ubHkgYSB0b2tlbiByZWZlcmVuY2VcbiAgICBpZiAoXG4gICAgICB0b2tlbkxpc3QubGl0ZXJhbHMubGVuZ3RoID09PSAwICYmXG4gICAgICB0b2tlbkxpc3QuZXNjYXBlcy5sZW5ndGggPT09IDAgJiZcbiAgICAgIG51bWJlck9mVG9rZW5zID09PSAxXG4gICAgKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZWRBcmc7XG4gICAgfVxuXG4gICAgLy8gU3RyaW5nIGxpdGVyYWwgKyB0b2tlbiByZWZlcmVuY2UgY29tYmluYXRpb25cbiAgICBjb25zdCBqb2luUmVzdWx0ID0gdG9rZW5MaXN0LmpvaW4oe1xuICAgICAgam9pbjogKGxlZnQsIHJpZ2h0KSA9PiB7XG4gICAgICAgIGNvbnN0IGxlZnRUb2tlbnMgPSBUb2tlbml6YXRpb24ucmV2ZXJzZShsZWZ0KTtcbiAgICAgICAgY29uc3QgbGVmdFRva2VuTGlzdCA9IFRva2VuaXphdGlvbi5yZXZlcnNlU3RyaW5nKGxlZnQpO1xuICAgICAgICBjb25zdCByaWdodFRva2VucyA9IFRva2VuaXphdGlvbi5yZXZlcnNlKHJpZ2h0KTtcblxuICAgICAgICBjb25zdCBsZWZ0VG9rZW5Db3VudCA9XG4gICAgICAgICAgbGVmdFRva2VuTGlzdC5pbnRyaW5zaWMubGVuZ3RoICsgbGVmdFRva2VuTGlzdC50b2tlbnMubGVuZ3RoO1xuXG4gICAgICAgIC8vIGlmIGxlZnQgaXMgbWl4ZWQsIG5lZWRzIHRvIGJlIGxlZnQgYWxvbmUgKGJlY2F1c2UgaXQncyBhIHJlc3VsdCBvZiBhIHByZXZpb3VzIGpvaW4gaXRlcmF0aW9uKVxuICAgICAgICBsZXQgbGVmdFZhbHVlID0gbGVmdDtcblxuICAgICAgICAvLyBpZiBsZWZ0IGlzIGEgc3RyaW5nIGxpdGVyYWwsIHRoZW4gd2UgbmVlZCB0byBlc2NhcGUgaXRcbiAgICAgICAgaWYgKGxlZnRUb2tlbkxpc3QubGl0ZXJhbHMubGVuZ3RoID09PSAxICYmIGxlZnRUb2tlbkNvdW50ID09PSAwKSB7XG4gICAgICAgICAgbGVmdFZhbHVlID0gdGhpcy5lc2NhcGVTdHJpbmcobGVmdCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiBsZWZ0IGlzIG9ubHkgYSB0b2tlbiwgbmVlZHMgdG8gYmUgd3JhcHBlZCBhcyB0ZXJyYWZvcm0gZXhwcmVzc2lvblxuICAgICAgICBpZiAobGVmdFRva2VuTGlzdC5saXRlcmFscy5sZW5ndGggPT09IDAgJiYgbGVmdFRva2VuQ291bnQgPT09IDEpIHtcbiAgICAgICAgICBsZWZ0VmFsdWUgPSBgXFwkeyR7bGVmdFRva2Vuc1swXX19YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJpZ2h0VmFsdWUgPVxuICAgICAgICAgIHJpZ2h0VG9rZW5zLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgPyB0aGlzLmVzY2FwZVN0cmluZyhyaWdodClcbiAgICAgICAgICAgIDogYFxcJHske3JpZ2h0VG9rZW5zWzBdfX1gO1xuXG4gICAgICAgIHJldHVybiBgJHtsZWZ0VmFsdWV9JHtyaWdodFZhbHVlfWA7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGpvaW5SZXN1bHQgIT09IGBcImAgJiZcbiAgICAgIGpvaW5SZXN1bHQuc3RhcnRzV2l0aCgnXCInKSAmJlxuICAgICAgam9pblJlc3VsdC5lbmRzV2l0aCgnXCInKVxuICAgICAgPyBqb2luUmVzdWx0XG4gICAgICA6IGBcIiR7am9pblJlc3VsdH1cImA7XG4gIH1cbn1cblxuLy8gQSBzdHJpbmcgdGhhdCByZXByZXNlbnRzIGFuIGlucHV0IHZhbHVlIHRvIGJlIGVzY2FwZWRcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5jbGFzcyBSYXdTdHJpbmcgZXh0ZW5kcyBURkV4cHJlc3Npb24ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHN0cjogc3RyaW5nKSB7XG4gICAgc3VwZXIoc3RyKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCkge1xuICAgIGNvbnN0IHF0cyA9IGNvbnRleHQuc3VwcHJlc3NCcmFjZXMgPyBgXCJgIDogYGA7XG4gICAgcmV0dXJuIGAke3F0c30ke3RoaXMuZXNjYXBlU3RyaW5nKHRoaXMuc3RyKS5yZXBsYWNlKC9cXFwiL2csICdcXFxcXCInKX0ke3F0c31gOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVzZWxlc3MtZXNjYXBlXG4gIH1cblxuICBwdWJsaWMgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RyO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgZnVuY3Rpb24gcmF3U3RyaW5nKHN0cjogc3RyaW5nKTogSVJlc29sdmFibGUge1xuICByZXR1cm4gbmV3IFJhd1N0cmluZyhzdHIpO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuY2xhc3MgUmVmZXJlbmNlIGV4dGVuZHMgVEZFeHByZXNzaW9uIHtcbiAgLyoqXG4gICAqIEEgc2luZ2xlIHJlZmVyZW5jZSBjb3VsZCBiZSB1c2VkIGluIG11bHRpcGxlIHN0YWNrcyxcbiAgICogZS5nLiBpZiB3ZSBleHBvc2UgdGhlIHJlZiBkaXJlY3RseSBvciBhcyB0b2tlbiBvbiB0aGUgc3RhY2suXG4gICAqIFdlIG5lZWQgdG8gc3RvcmUgdGhlIGlkZW50aWZpZXIgZm9yIGVhY2ggc3RhY2ssXG4gICAqIHNvIHRoYXQgdGhlIHJlc29sdmVkIGlkZW50aWZpZXIgc3RyaW5nIG1hdGNoZXMgdGhlIHN0YWNrIGl0J3MgcmVzb2x2ZWQgaW4uXG4gICAqL1xuICBwcml2YXRlIGNyb3NzU3RhY2tJZGVudGlmaWVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaWRlbnRpZmllcjogc3RyaW5nLFxuICAgIHByaXZhdGUgb3JpZ2luU3RhY2s/OiBUZXJyYWZvcm1TdGFjayxcbiAgKSB7XG4gICAgc3VwZXIoaWRlbnRpZmllcik7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZShjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpOiBzdHJpbmcge1xuICAgIC8vIFdlIGNoZWNrIGZvciBjcm9zcyBzdGFjayByZWZlcmVuY2VzIG9uIHByZXBhcmF0aW9uLCBzZXR0aW5nIGEgbmV3IGlkZW50aWZpZXJcbiAgICBjb25zdCByZXNvbHV0aW9uU3RhY2sgPSBUZXJyYWZvcm1TdGFjay5vZihjb250ZXh0LnNjb3BlKTtcbiAgICBjb25zdCBzdGFja05hbWUgPSByZXNvbHV0aW9uU3RhY2sudG9TdHJpbmcoKTtcbiAgICBjb25zdCBzdXBwcmVzc0JyYWNlcyA9IGNvbnRleHQuc3VwcHJlc3NCcmFjZXM7XG4gICAgY29udGV4dC5zdXBwcmVzc0JyYWNlcyA9IHRydWU7XG5cbiAgICBpZiAoY29udGV4dC5wcmVwYXJpbmcpIHtcbiAgICAgIC8vIENyb3NzIHN0YWNrIHJlZmVyZW5jZVxuICAgICAgaWYgKHRoaXMub3JpZ2luU3RhY2sgJiYgdGhpcy5vcmlnaW5TdGFjayAhPT0gcmVzb2x1dGlvblN0YWNrKSB7XG4gICAgICAgIGNvbnN0IGFwcCA9IEFwcC5vZih0aGlzLm9yaWdpblN0YWNrKTtcbiAgICAgICAgY29uc3QgY3NyID0gYXBwLmNyb3NzU3RhY2tSZWZlcmVuY2UoXG4gICAgICAgICAgdGhpcy5vcmlnaW5TdGFjayxcbiAgICAgICAgICByZXNvbHV0aW9uU3RhY2ssXG4gICAgICAgICAgdGhpcy5pZGVudGlmaWVyLFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuY3Jvc3NTdGFja0lkZW50aWZpZXJbc3RhY2tOYW1lXSA9IGNzcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiB0aGlzIGlzIGEgY3Jvc3Mgc3RhY2sgcmVmZXJlbmNlIHdlIHdpbGwgcmVzb2x2ZSB0byBhIHJlZmVyZW5jZSB3aXRoaW4gdGhpcyBzdGFjay5cbiAgICBpZiAodGhpcy5jcm9zc1N0YWNrSWRlbnRpZmllcltzdGFja05hbWVdKSB7XG4gICAgICByZXR1cm4gc3VwcHJlc3NCcmFjZXNcbiAgICAgICAgPyB0aGlzLmNyb3NzU3RhY2tJZGVudGlmaWVyW3N0YWNrTmFtZV1cbiAgICAgICAgOiBgXFwkeyR7dGhpcy5jcm9zc1N0YWNrSWRlbnRpZmllcltzdGFja05hbWVdfX1gO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBwcmVzc0JyYWNlcyA/IHRoaXMuaWRlbnRpZmllciA6IGBcXCR7JHt0aGlzLmlkZW50aWZpZXJ9fWA7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBmdW5jdGlvbiByZWYoaWRlbnRpZmllcjogc3RyaW5nLCBzdGFjaz86IFRlcnJhZm9ybVN0YWNrKTogSVJlc29sdmFibGUge1xuICByZXR1cm4gbmV3IFJlZmVyZW5jZShpZGVudGlmaWVyLCBzdGFjayk7XG59XG5cbi8qKlxuICogbWFya3MgdGhlIGFyZ3VtZW50IGFzIGJlaW5nIHVzZWQgaW4gYSB0ZXJyYWZvcm0gZXhwcmVzc2lvblxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc2lkZVRmRXhwcmVzc2lvbihhcmc6IGFueSkge1xuICByZXR1cm4gYXJnO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuY2xhc3MgUHJvcGVydHlBY2Nlc3MgZXh0ZW5kcyBURkV4cHJlc3Npb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRhcmdldDogRXhwcmVzc2lvbixcbiAgICBwcml2YXRlIGFyZ3M6IEV4cHJlc3Npb25bXSxcbiAgKSB7XG4gICAgc3VwZXIoeyB0YXJnZXQsIGFyZ3MgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZShjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN1cHByZXNzQnJhY2VzID0gY29udGV4dC5zdXBwcmVzc0JyYWNlcztcbiAgICBjb250ZXh0LnN1cHByZXNzQnJhY2VzID0gdHJ1ZTtcblxuICAgIGNvbnN0IHNlcmlhbGl6ZWRBcmdzID0gdGhpcy5hcmdzXG4gICAgICAubWFwKChhcmcpID0+IHtcbiAgICAgICAgaWYgKGFyZyA9PT0gYCpgKSB7XG4gICAgICAgICAgcmV0dXJuIFwiWypdXCI7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhID0gdGhpcy5yZXNvbHZlQXJnKGNvbnRleHQsIGFyZyk7XG4gICAgICAgIGNvbnN0IGlzUGxhaW5TdHJpbmcgPVxuICAgICAgICAgIHR5cGVvZiBhcmcgPT09IFwic3RyaW5nXCIgJiYgVEVSUkFGT1JNX0lERU5USUZJRVJfUkVHRVgudGVzdChhcmcpO1xuICAgICAgICBjb25zdCBpc1BsYWluTnVtYmVyID1cbiAgICAgICAgICB0eXBlb2YgYXJnID09PSBcIm51bWJlclwiICYmICFUb2tlbi5pc1VucmVzb2x2ZWQoYXJnKTtcblxuICAgICAgICBpZiAoaXNQbGFpblN0cmluZyB8fCBpc1BsYWluTnVtYmVyKSB7XG4gICAgICAgICAgcmV0dXJuIGAuJHthcmd9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBgWyR7YX1dYDtcbiAgICAgIH0pIC8vIHByb3BlcnR5IGFjY2Vzc1xuICAgICAgLmpvaW4oXCJcIik7XG5cbiAgICBjb25zdCB0YXJnZXRFeHByID1cbiAgICAgIENvbnN0cnVjdC5pc0NvbnN0cnVjdCh0aGlzLnRhcmdldCkgJiYgXCJmcW5cIiBpbiB0aGlzLnRhcmdldFxuICAgICAgICA/IHRoaXMudGFyZ2V0LmZxblxuICAgICAgICA6IHRoaXMucmVzb2x2ZUFyZyhjb250ZXh0LCB0aGlzLnRhcmdldCk7XG5cbiAgICBjb25zdCBleHByID0gYCR7dGFyZ2V0RXhwcn0ke3NlcmlhbGl6ZWRBcmdzfWA7XG5cbiAgICByZXR1cm4gc3VwcHJlc3NCcmFjZXMgPyBleHByIDogYFxcJHske2V4cHJ9fWA7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0eUFjY2Vzcyh0YXJnZXQ6IEV4cHJlc3Npb24sIGFyZ3M6IEV4cHJlc3Npb25bXSkge1xuICByZXR1cm4gbmV3IFByb3BlcnR5QWNjZXNzKHRhcmdldCwgYXJncykgYXMgSVJlc29sdmFibGU7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5jbGFzcyBDb25kaXRpb25hbEV4cHJlc3Npb24gZXh0ZW5kcyBURkV4cHJlc3Npb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbmRpdGlvbjogRXhwcmVzc2lvbixcbiAgICBwcml2YXRlIHRydWVWYWx1ZTogRXhwcmVzc2lvbixcbiAgICBwcml2YXRlIGZhbHNlVmFsdWU6IEV4cHJlc3Npb24sXG4gICkge1xuICAgIHN1cGVyKHsgY29uZGl0aW9uLCB0cnVlVmFsdWUsIGZhbHNlVmFsdWUgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZShjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN1cHByZXNzQnJhY2VzID0gY29udGV4dC5zdXBwcmVzc0JyYWNlcztcbiAgICBjb250ZXh0LnN1cHByZXNzQnJhY2VzID0gdHJ1ZTtcblxuICAgIGNvbnN0IGNvbmRpdGlvbiA9IHRoaXMucmVzb2x2ZUFyZyhjb250ZXh0LCB0aGlzLmNvbmRpdGlvbik7XG4gICAgY29uc3QgdHJ1ZVZhbHVlID0gdGhpcy5yZXNvbHZlQXJnKGNvbnRleHQsIHRoaXMudHJ1ZVZhbHVlKTtcbiAgICBjb25zdCBmYWxzZVZhbHVlID0gdGhpcy5yZXNvbHZlQXJnKGNvbnRleHQsIHRoaXMuZmFsc2VWYWx1ZSk7XG5cbiAgICBjb25zdCBleHByID0gYCR7Y29uZGl0aW9ufSA/ICR7dHJ1ZVZhbHVlfSA6ICR7ZmFsc2VWYWx1ZX1gO1xuXG4gICAgcmV0dXJuIHN1cHByZXNzQnJhY2VzID8gZXhwciA6IGBcXCR7JHtleHByfX1gO1xuICB9XG59XG5cbi8qKlxuICogY3JlYXRlcyBhbiBleHByZXNzaW9uIGxpa2UgYHRydWUgPyAxIDogMGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbmRpdGlvbmFsKFxuICBjb25kaXRpb246IEV4cHJlc3Npb24sXG4gIHRydWVWYWx1ZTogRXhwcmVzc2lvbixcbiAgZmFsc2VWYWx1ZTogRXhwcmVzc2lvbixcbikge1xuICByZXR1cm4gbmV3IENvbmRpdGlvbmFsRXhwcmVzc2lvbihjb25kaXRpb24sIHRydWVWYWx1ZSwgZmFsc2VWYWx1ZSk7XG59XG5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmhhc2hpY29ycC5jb20vdGVycmFmb3JtL2xhbmd1YWdlL2V4cHJlc3Npb25zL29wZXJhdG9yc1xuZXhwb3J0IHR5cGUgT3BlcmF0b3IgPVxuICB8IFwiIVwiXG4gIHwgXCItXCJcbiAgfCBcIipcIlxuICB8IFwiL1wiXG4gIHwgXCIlXCJcbiAgfCBcIitcIlxuICB8IFwiPlwiXG4gIHwgXCI+PVwiXG4gIHwgXCI8XCJcbiAgfCBcIjw9XCJcbiAgfCBcIj09XCJcbiAgfCBcIiE9XCJcbiAgfCBcIiYmXCJcbiAgfCBcInx8XCI7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgT3BlcmF0b3IgRXhwcmVzc2lvbnNcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgT3BlcmF0b3JFeHByZXNzaW9uIGV4dGVuZHMgVEZFeHByZXNzaW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBvcGVyYXRvcjogT3BlcmF0b3IsXG4gICAgcHJpdmF0ZSBsZWZ0OiBFeHByZXNzaW9uLFxuICAgIHByaXZhdGUgcmlnaHQ/OiBFeHByZXNzaW9uLCAvLyBvcHRpb25hbCBmb3IgISBhbmQgLSBvcGVyYXRvclxuICApIHtcbiAgICBzdXBlcih7IG9wZXJhdG9yLCBsZWZ0VmFsdWU6IGxlZnQsIHJpZ2h0VmFsdWU6IHJpZ2h0IH0pO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmUoY29udGV4dDogSVJlc29sdmVDb250ZXh0KTogc3RyaW5nIHtcbiAgICBjb25zdCBzdXBwcmVzc0JyYWNlcyA9IGNvbnRleHQuc3VwcHJlc3NCcmFjZXM7XG4gICAgY29udGV4dC5zdXBwcmVzc0JyYWNlcyA9IHRydWU7XG5cbiAgICBjb25zdCBsZWZ0ID0gdGhpcy5yZXNvbHZlQXJnKGNvbnRleHQsIHRoaXMubGVmdCk7XG4gICAgY29uc3QgcmlnaHQgPVxuICAgICAgdGhpcy5yaWdodCAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gdGhpcy5yZXNvbHZlQXJnKGNvbnRleHQsIHRoaXMucmlnaHQpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgbGV0IGV4cHIgPSBcIlwiO1xuICAgIHN3aXRjaCAodGhpcy5vcGVyYXRvcikge1xuICAgICAgY2FzZSBcIiFcIjoge1xuICAgICAgICBleHByID0gYCEke2xlZnR9YDsgLy8gbm8gYnJhY2VzIG5lZWRlZCBhcyAhIGhhcyBoaWdoZXN0IHByZWNlZGVuY2VcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFwiLVwiOiB7XG4gICAgICAgIGlmIChyaWdodCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gc3VidHJhY3Rpb25cbiAgICAgICAgICBleHByID0gYCgke2xlZnR9IC0gJHtyaWdodH0pYDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBuZWdhdGlvblxuICAgICAgICAgIGV4cHIgPSBgLSR7bGVmdH1gOyAvLyBubyBicmFjZXMgbmVlZGVkIGFzIC0gaGFzIGhpZ2hlc3QgcHJlY2VkZW5jZVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBleHByID0gYCgke2xlZnR9ICR7dGhpcy5vcGVyYXRvcn0gJHtyaWdodH0pYDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3VwcHJlc3NCcmFjZXMgPyBleHByIDogYFxcJHske2V4cHJ9fWA7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmNsYXNzIEZ1bmN0aW9uQ2FsbCBleHRlbmRzIFRGRXhwcmVzc2lvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmFtZTogc3RyaW5nLFxuICAgIHByaXZhdGUgYXJnczogRXhwcmVzc2lvbltdLFxuICApIHtcbiAgICBzdXBlcih7IG5hbWUsIGFyZ3MgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZShjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN1cHByZXNzQnJhY2VzID0gY29udGV4dC5zdXBwcmVzc0JyYWNlcztcbiAgICBjb25zdCBvcmlnaW5hbElnbm9yZUVzY2FwZXMgPSBjb250ZXh0Lmlnbm9yZUVzY2FwZXM7XG4gICAgY29uc3Qgb3JpZ2luYWxXYXJuRXNjYXBlcyA9IGNvbnRleHQud2FybkVzY2FwZXM7XG5cbiAgICBjb250ZXh0LnN1cHByZXNzQnJhY2VzID0gdHJ1ZTtcbiAgICBjb250ZXh0Lmlnbm9yZUVzY2FwZXMgPSB0cnVlO1xuICAgIGNvbnRleHQud2FybkVzY2FwZXMgPSB0cnVlO1xuXG4gICAgY29uc3Qgc2VyaWFsaXplZEFyZ3MgPSB0aGlzLmFyZ3NcbiAgICAgIC5tYXAoKGFyZykgPT4gdGhpcy5yZXNvbHZlQXJnKGNvbnRleHQsIGFyZykpXG4gICAgICAuam9pbihcIiwgXCIpO1xuXG4gICAgY29uc3QgZXhwciA9IGAke3RoaXMubmFtZX0oJHtzZXJpYWxpemVkQXJnc30pYDtcblxuICAgIGNvbnRleHQuaWdub3JlRXNjYXBlcyA9IG9yaWdpbmFsSWdub3JlRXNjYXBlcztcbiAgICBjb250ZXh0Lndhcm5Fc2NhcGVzID0gb3JpZ2luYWxXYXJuRXNjYXBlcztcblxuICAgIHJldHVybiBzdXBwcmVzc0JyYWNlcyA/IGV4cHIgOiBgXFwkeyR7ZXhwcn19YDtcbiAgfVxufVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBmdW5jdGlvbiBjYWxsKG5hbWU6IHN0cmluZywgYXJnczogRXhwcmVzc2lvbltdKSB7XG4gIHJldHVybiBuZXcgRnVuY3Rpb25DYWxsKG5hbWUsIGFyZ3MpIGFzIElSZXNvbHZhYmxlO1xufVxuXG5leHBvcnQgY29uc3QgRk9SX0VYUFJFU1NJT05fS0VZID0gcmVmKFwia2V5XCIpO1xuZXhwb3J0IGNvbnN0IEZPUl9FWFBSRVNTSU9OX1ZBTFVFID0gcmVmKFwidmFsXCIpO1xuXG4vKipcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmhhc2hpY29ycC5jb20vdGVycmFmb3JtL2xhbmd1YWdlL2V4cHJlc3Npb25zL2ZvclxuICovXG5jbGFzcyBGb3JFeHByZXNzaW9uIGV4dGVuZHMgVEZFeHByZXNzaW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbnB1dDogRXhwcmVzc2lvbixcbiAgICBwcml2YXRlIHZhbHVlRXhwcmVzc2lvbjogRXhwcmVzc2lvbixcbiAgICBwcml2YXRlIGtleUV4cHJlc3Npb24/OiBFeHByZXNzaW9uLFxuICApIHtcbiAgICBzdXBlcih7IGlucHV0LCB2YWx1ZUV4cHJlc3Npb24sIGtleUV4cHJlc3Npb24gfSk7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZShjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN1cHByZXNzQnJhY2VzID0gY29udGV4dC5zdXBwcmVzc0JyYWNlcztcbiAgICBjb250ZXh0LnN1cHByZXNzQnJhY2VzID0gdHJ1ZTtcbiAgICBjb250ZXh0Lml0ZXJhdG9yQ29udGV4dCA9IFwiRk9SX0VYUFJFU1NJT05cIjtcbiAgICBjb25zdCBrZXkgPSB0aGlzLnJlc29sdmVBcmcoY29udGV4dCwgRk9SX0VYUFJFU1NJT05fS0VZKTtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMucmVzb2x2ZUFyZyhjb250ZXh0LCBGT1JfRVhQUkVTU0lPTl9WQUxVRSk7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLnJlc29sdmVBcmcoY29udGV4dCwgdGhpcy5pbnB1dCk7XG4gICAgY29uc3QgdmFsdWVFeHByID0gdGhpcy5yZXNvbHZlRXhwcmVzc2lvblBhcnQoY29udGV4dCwgdGhpcy52YWx1ZUV4cHJlc3Npb24pO1xuXG4gICAgbGV0IGV4cHI6IHN0cmluZztcbiAgICBpZiAodGhpcy5rZXlFeHByZXNzaW9uKSB7XG4gICAgICBjb25zdCBrZXlFeHByID0gdGhpcy5yZXNvbHZlRXhwcmVzc2lvblBhcnQoY29udGV4dCwgdGhpcy5rZXlFeHByZXNzaW9uKTtcblxuICAgICAgZXhwciA9IGB7IGZvciAke2tleX0sICR7dmFsdWV9IGluICR7aW5wdXR9OiAke2tleUV4cHJ9ID0+ICR7dmFsdWVFeHByfSB9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgZXhwciA9IGBbIGZvciAke2tleX0sICR7dmFsdWV9IGluICR7aW5wdXR9OiAke3ZhbHVlRXhwcn1dYDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwcHJlc3NCcmFjZXMgPyBleHByIDogYFxcJHske2V4cHJ9fWA7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZm9yIGV4cHJlc3Npb24sIHVzZWQgZm9yIGFkdmFuY2VkIGludGVybmFsIHVzZSBjYXNlcyAoZS5nLiBpbiB0aGUgQGNka3RuL2F3cy1hZGFwdGVyKVxuICogSXQgaXMgY3VycmVudGx5IG5vdCBwb3NzaWJsZSB0byB1c2UgdGhpcyB2aWEgSlNJSSBpbiBvdGhlciBsYW5ndWFnZXMuIFVzdWFsbHkgeW91IG1pZ2h0IHdhbnQgdG9cbiAqIHVzZSBUZXJyYWZvcm1JdGVyYXRvciBpbnN0ZWFkLlxuICpcbiAqIEBwYXJhbSBpbnB1dCB0aGUgaW5wdXQgZm9yIHRoZSBleHByZXNzaW9uIGUuZy4gYSBsaXN0IG9yIGFuIG9iamVjdFxuICogQHBhcmFtIHZhbHVlRXhwcmVzc2lvbiB3aWxsIGV4cHJlc3MgdGhlIHZhbHVlIGUuZy4gWyBmb3IgaSBpbiAmbHQ7aW5wdXQmZ3Q7IDogJmx0O3ZhbHVlRXhwcmVzc2lvbiZndDsgXVxuICogQHBhcmFtIGtleUV4cHJlc3Npb24gaWYgc2V0IHdpbGwgcmV0dXJuIGFuIG9iamVjdCBlLmcuIHsgZm9yIGssdiBpbiAmbHQ7aW5wdXQmZ3Q7IDogJmx0O2tleUV4cHJlc3Npb24mZ3Q7ID0+ICZsdDt2YWx1ZUV4cHJlc3Npb24mZ3Q7fVxuICogQHJldHVybnMgYSBmb3IgZXhwcmVzc2lvblxuICpcbiAqIFRoZSB2YXJpYWJsZXMgZm9yIGtleSAoZm9yIG1hcHMpIC8gaW5kZXggKGZvciBsaXN0cykgYW5kIHZhbHVlIHRoYXQgYXJlIHZhbGlkIGluIHRoZSBrZXktIGFuZCB2YWx1ZUV4cHJlc3Npb25cbiAqIGNhbiBiZSByZWZlcmVuY2VkIGJ5IHVzaW5nIHRoZXNlIGNvbnN0YW50czogRk9SX0VYUFJFU1NJT05fS0VZIGFuZCBGT1JfRVhQUkVTU0lPTl9WQUxVRS5cbiAqXG4gKiBDdXJyZW50bHkgbmVzdGluZyBmb3IgZXhwcmVzc2lvbnMgaXMgbm90IHN1cHBvcnRlZCBkdWUgdG8gdGhpcyBzaW1wbGlmaWNhdGlvbi5cbiAqXG4gKiBDdXJyZW50bHkgZG9lcyBub3Qgc3VwcG9ydCBmaWx0ZXJpbmcgZWxlbWVudHMgKGlmIGNsYXVzZSkgb3IgZ3JvdXBpbmcgcmVzdWx0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZm9yRXhwcmVzc2lvbihcbiAgaW5wdXQ6IEV4cHJlc3Npb24sXG4gIHZhbHVlRXhwcmVzc2lvbjogRXhwcmVzc2lvbixcbiAga2V5RXhwcmVzc2lvbj86IEV4cHJlc3Npb24sXG4pIHtcbiAgcmV0dXJuIG5ldyBGb3JFeHByZXNzaW9uKFxuICAgIGlucHV0LFxuICAgIHZhbHVlRXhwcmVzc2lvbixcbiAgICBrZXlFeHByZXNzaW9uLFxuICApIGFzIElSZXNvbHZhYmxlO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuY2xhc3MgRGVwZW5kYWJsZSBleHRlbmRzIFRGRXhwcmVzc2lvbiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGVwZW5kYWJsZTogSVRlcnJhZm9ybURlcGVuZGFibGUpIHtcbiAgICBzdXBlcihkZXBlbmRhYmxlKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCk6IHN0cmluZyB7XG4gICAgY29udGV4dC5zdXBwcmVzc0JyYWNlcyA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5kZXBlbmRhYmxlLmZxbjtcbiAgfVxufVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBmdW5jdGlvbiBkZXBlbmRhYmxlKGRlcGVuZGFibGU6IElUZXJyYWZvcm1EZXBlbmRhYmxlKTogc3RyaW5nIHtcbiAgcmV0dXJuIFRva2VuLmFzU3RyaW5nKG5ldyBEZXBlbmRhYmxlKGRlcGVuZGFibGUpKTtcbn1cblxuZXhwb3J0IHR5cGUgRXhwcmVzc2lvbiA9XG4gIHwgUmVmZXJlbmNlXG4gIHwgRnVuY3Rpb25DYWxsXG4gIHwgUHJvcGVydHlBY2Nlc3NcbiAgfCBDb25kaXRpb25hbEV4cHJlc3Npb25cbiAgfCBPcGVyYXRvckV4cHJlc3Npb25cbiAgfCBEZXBlbmRhYmxlXG4gIHwgRm9yRXhwcmVzc2lvblxuICB8IHN0cmluZ1xuICB8IHN0cmluZ1tdXG4gIHwgbnVtYmVyXG4gIHwgYm9vbGVhblxuICB8IElSZXNvbHZhYmxlXG4gIHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfVxuICB8IG51bGxcbiAgfCBhbnkgLy8gdWx0aW1hdGVseSBhbnkgdmFsaWQgVGVycmFmb3JtIHR5cGUgY2FuIGJlIHVzZWQgYXMgYW4gZXhwcmVzc2lvblxuICB8IGFueVtdO1xuIl19
@@ -20,4 +20,4 @@ __exportStar(require("./lazy"), exports);
20
20
  __exportStar(require("./resolvable"), exports);
21
21
  __exportStar(require("./string-fragments"), exports);
22
22
  __exportStar(require("./token"), exports);
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyx5Q0FBdUI7QUFDdkIsK0NBQTZCO0FBQzdCLHFEQUFtQztBQUNuQywwQ0FBd0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuZXhwb3J0ICogZnJvbSBcIi4vbGF6eVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVzb2x2YWJsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3RyaW5nLWZyYWdtZW50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdG9rZW5cIjtcbiJdfQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW5zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLHlDQUF1QjtBQUN2QiwrQ0FBNkI7QUFDN0IscURBQW1DO0FBQ25DLDBDQUF3QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5leHBvcnQgKiBmcm9tIFwiLi9sYXp5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZXNvbHZhYmxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdHJpbmctZnJhZ21lbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90b2tlblwiO1xuIl19