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
@@ -14,7 +14,7 @@ class ComplexResolvable {
14
14
  constructor(terraformResource, terraformAttribute) {
15
15
  this.terraformResource = terraformResource;
16
16
  this.terraformAttribute = terraformAttribute;
17
- this.creationStack = (0, stack_trace_1.captureStackTrace)();
17
+ this.creationStack = (0, stack_trace_1.captureCreationStack)();
18
18
  }
19
19
  get fqn() {
20
20
  if (!this._fqn) {
@@ -80,7 +80,7 @@ class StringMap extends ComplexResolvable {
80
80
  }
81
81
  exports.StringMap = StringMap;
82
82
  _a = JSII_RTTI_SYMBOL_1;
83
- StringMap[_a] = { fqn: "cdktn.StringMap", version: "0.23.1" };
83
+ StringMap[_a] = { fqn: "cdktn.StringMap", version: "0.23.3" };
84
84
  // eslint-disable-next-line jsdoc/require-jsdoc
85
85
  class NumberMap extends ComplexResolvable {
86
86
  constructor(terraformResource, terraformAttribute) {
@@ -97,7 +97,7 @@ class NumberMap extends ComplexResolvable {
97
97
  }
98
98
  exports.NumberMap = NumberMap;
99
99
  _b = JSII_RTTI_SYMBOL_1;
100
- NumberMap[_b] = { fqn: "cdktn.NumberMap", version: "0.23.1" };
100
+ NumberMap[_b] = { fqn: "cdktn.NumberMap", version: "0.23.3" };
101
101
  // eslint-disable-next-line jsdoc/require-jsdoc
102
102
  class BooleanMap extends ComplexResolvable {
103
103
  constructor(terraformResource, terraformAttribute) {
@@ -114,7 +114,7 @@ class BooleanMap extends ComplexResolvable {
114
114
  }
115
115
  exports.BooleanMap = BooleanMap;
116
116
  _c = JSII_RTTI_SYMBOL_1;
117
- BooleanMap[_c] = { fqn: "cdktn.BooleanMap", version: "0.23.1" };
117
+ BooleanMap[_c] = { fqn: "cdktn.BooleanMap", version: "0.23.3" };
118
118
  // eslint-disable-next-line jsdoc/require-jsdoc
119
119
  class AnyMap extends ComplexResolvable {
120
120
  constructor(terraformResource, terraformAttribute) {
@@ -131,7 +131,7 @@ class AnyMap extends ComplexResolvable {
131
131
  }
132
132
  exports.AnyMap = AnyMap;
133
133
  _d = JSII_RTTI_SYMBOL_1;
134
- AnyMap[_d] = { fqn: "cdktn.AnyMap", version: "0.23.1" };
134
+ AnyMap[_d] = { fqn: "cdktn.AnyMap", version: "0.23.3" };
135
135
  // eslint-disable-next-line jsdoc/require-jsdoc
136
136
  class StringMapMap extends ComplexResolvable {
137
137
  constructor(terraformResource, terraformAttribute) {
@@ -148,7 +148,7 @@ class StringMapMap extends ComplexResolvable {
148
148
  }
149
149
  exports.StringMapMap = StringMapMap;
150
150
  _e = JSII_RTTI_SYMBOL_1;
151
- StringMapMap[_e] = { fqn: "cdktn.StringMapMap", version: "0.23.1" };
151
+ StringMapMap[_e] = { fqn: "cdktn.StringMapMap", version: "0.23.3" };
152
152
  /**
153
153
  * @deprecated Going to be replaced by Array of ComplexListItem
154
154
  * and will be removed in the future
@@ -177,7 +177,7 @@ class ComplexComputedList extends ComplexComputedAttribute {
177
177
  }
178
178
  exports.ComplexComputedList = ComplexComputedList;
179
179
  _f = JSII_RTTI_SYMBOL_1;
180
- ComplexComputedList[_f] = { fqn: "cdktn.ComplexComputedList", version: "0.23.1" };
180
+ ComplexComputedList[_f] = { fqn: "cdktn.ComplexComputedList", version: "0.23.3" };
181
181
  // eslint-disable-next-line jsdoc/require-jsdoc
182
182
  class ComplexList extends ComplexResolvable {
183
183
  constructor(terraformResource, terraformAttribute, wrapsSet) {
@@ -206,7 +206,7 @@ class ComplexList extends ComplexResolvable {
206
206
  }
207
207
  exports.ComplexList = ComplexList;
208
208
  _g = JSII_RTTI_SYMBOL_1;
209
- ComplexList[_g] = { fqn: "cdktn.ComplexList", version: "0.23.1" };
209
+ ComplexList[_g] = { fqn: "cdktn.ComplexList", version: "0.23.3" };
210
210
  // eslint-disable-next-line jsdoc/require-jsdoc
211
211
  class BooleanList extends ComplexList {
212
212
  constructor(terraformResource, terraformAttribute, wrapsSet) {
@@ -221,7 +221,7 @@ class BooleanList extends ComplexList {
221
221
  }
222
222
  exports.BooleanList = BooleanList;
223
223
  _h = JSII_RTTI_SYMBOL_1;
224
- BooleanList[_h] = { fqn: "cdktn.BooleanList", version: "0.23.1" };
224
+ BooleanList[_h] = { fqn: "cdktn.BooleanList", version: "0.23.3" };
225
225
  // eslint-disable-next-line jsdoc/require-jsdoc
226
226
  class StringListList extends ComplexList {
227
227
  constructor(terraformResource, terraformAttribute, wrapsSet) {
@@ -236,7 +236,7 @@ class StringListList extends ComplexList {
236
236
  }
237
237
  exports.StringListList = StringListList;
238
238
  _j = JSII_RTTI_SYMBOL_1;
239
- StringListList[_j] = { fqn: "cdktn.StringListList", version: "0.23.1" };
239
+ StringListList[_j] = { fqn: "cdktn.StringListList", version: "0.23.3" };
240
240
  // eslint-disable-next-line jsdoc/require-jsdoc
241
241
  class NumberListList extends ComplexList {
242
242
  constructor(terraformResource, terraformAttribute, wrapsSet) {
@@ -251,7 +251,7 @@ class NumberListList extends ComplexList {
251
251
  }
252
252
  exports.NumberListList = NumberListList;
253
253
  _k = JSII_RTTI_SYMBOL_1;
254
- NumberListList[_k] = { fqn: "cdktn.NumberListList", version: "0.23.1" };
254
+ NumberListList[_k] = { fqn: "cdktn.NumberListList", version: "0.23.3" };
255
255
  // eslint-disable-next-line jsdoc/require-jsdoc
256
256
  class BooleanListList extends ComplexList {
257
257
  constructor(terraformResource, terraformAttribute, wrapsSet) {
@@ -267,7 +267,7 @@ class BooleanListList extends ComplexList {
267
267
  }
268
268
  exports.BooleanListList = BooleanListList;
269
269
  _l = JSII_RTTI_SYMBOL_1;
270
- BooleanListList[_l] = { fqn: "cdktn.BooleanListList", version: "0.23.1" };
270
+ BooleanListList[_l] = { fqn: "cdktn.BooleanListList", version: "0.23.3" };
271
271
  // eslint-disable-next-line jsdoc/require-jsdoc
272
272
  class AnyListList extends ComplexList {
273
273
  constructor(terraformResource, terraformAttribute, wrapsSet) {
@@ -283,7 +283,7 @@ class AnyListList extends ComplexList {
283
283
  }
284
284
  exports.AnyListList = AnyListList;
285
285
  _m = JSII_RTTI_SYMBOL_1;
286
- AnyListList[_m] = { fqn: "cdktn.AnyListList", version: "0.23.1" };
286
+ AnyListList[_m] = { fqn: "cdktn.AnyListList", version: "0.23.3" };
287
287
  // eslint-disable-next-line jsdoc/require-jsdoc
288
288
  class ComplexMap extends ComplexResolvable {
289
289
  constructor(terraformResource, terraformAttribute) {
@@ -300,7 +300,7 @@ class ComplexMap extends ComplexResolvable {
300
300
  }
301
301
  exports.ComplexMap = ComplexMap;
302
302
  _o = JSII_RTTI_SYMBOL_1;
303
- ComplexMap[_o] = { fqn: "cdktn.ComplexMap", version: "0.23.1" };
303
+ ComplexMap[_o] = { fqn: "cdktn.ComplexMap", version: "0.23.3" };
304
304
  // eslint-disable-next-line jsdoc/require-jsdoc
305
305
  class ComplexObject extends ComplexComputedAttribute {
306
306
  /**
@@ -339,7 +339,7 @@ class ComplexObject extends ComplexComputedAttribute {
339
339
  }
340
340
  exports.ComplexObject = ComplexObject;
341
341
  _p = JSII_RTTI_SYMBOL_1;
342
- ComplexObject[_p] = { fqn: "cdktn.ComplexObject", version: "0.23.1" };
342
+ ComplexObject[_p] = { fqn: "cdktn.ComplexObject", version: "0.23.3" };
343
343
  // eslint-disable-next-line jsdoc/require-jsdoc
344
344
  class MapList extends ComplexResolvable {
345
345
  constructor(terraformResource, terraformAttribute, wrapsSet) {
@@ -368,7 +368,7 @@ class MapList extends ComplexResolvable {
368
368
  }
369
369
  exports.MapList = MapList;
370
370
  _q = JSII_RTTI_SYMBOL_1;
371
- MapList[_q] = { fqn: "cdktn.MapList", version: "0.23.1" };
371
+ MapList[_q] = { fqn: "cdktn.MapList", version: "0.23.3" };
372
372
  // eslint-disable-next-line jsdoc/require-jsdoc
373
373
  class StringMapList extends MapList {
374
374
  constructor(terraformResource, terraformAttribute, wrapsSet) {
@@ -383,7 +383,7 @@ class StringMapList extends MapList {
383
383
  }
384
384
  exports.StringMapList = StringMapList;
385
385
  _r = JSII_RTTI_SYMBOL_1;
386
- StringMapList[_r] = { fqn: "cdktn.StringMapList", version: "0.23.1" };
386
+ StringMapList[_r] = { fqn: "cdktn.StringMapList", version: "0.23.3" };
387
387
  // eslint-disable-next-line jsdoc/require-jsdoc
388
388
  class NumberMapList extends MapList {
389
389
  constructor(terraformResource, terraformAttribute, wrapsSet) {
@@ -398,7 +398,7 @@ class NumberMapList extends MapList {
398
398
  }
399
399
  exports.NumberMapList = NumberMapList;
400
400
  _s = JSII_RTTI_SYMBOL_1;
401
- NumberMapList[_s] = { fqn: "cdktn.NumberMapList", version: "0.23.1" };
401
+ NumberMapList[_s] = { fqn: "cdktn.NumberMapList", version: "0.23.3" };
402
402
  // eslint-disable-next-line jsdoc/require-jsdoc
403
403
  class BooleanMapList extends MapList {
404
404
  constructor(terraformResource, terraformAttribute, wrapsSet) {
@@ -413,7 +413,7 @@ class BooleanMapList extends MapList {
413
413
  }
414
414
  exports.BooleanMapList = BooleanMapList;
415
415
  _t = JSII_RTTI_SYMBOL_1;
416
- BooleanMapList[_t] = { fqn: "cdktn.BooleanMapList", version: "0.23.1" };
416
+ BooleanMapList[_t] = { fqn: "cdktn.BooleanMapList", version: "0.23.3" };
417
417
  // eslint-disable-next-line jsdoc/require-jsdoc
418
418
  class AnyMapList extends MapList {
419
419
  constructor(terraformResource, terraformAttribute, wrapsSet) {
@@ -428,7 +428,7 @@ class AnyMapList extends MapList {
428
428
  }
429
429
  exports.AnyMapList = AnyMapList;
430
430
  _u = JSII_RTTI_SYMBOL_1;
431
- AnyMapList[_u] = { fqn: "cdktn.AnyMapList", version: "0.23.1" };
431
+ AnyMapList[_u] = { fqn: "cdktn.AnyMapList", version: "0.23.3" };
432
432
  // eslint-disable-next-line jsdoc/require-jsdoc
433
433
  class StringListMap extends ComplexMap {
434
434
  constructor(terraformResource, terraformAttribute) {
@@ -442,7 +442,7 @@ class StringListMap extends ComplexMap {
442
442
  }
443
443
  exports.StringListMap = StringListMap;
444
444
  _v = JSII_RTTI_SYMBOL_1;
445
- StringListMap[_v] = { fqn: "cdktn.StringListMap", version: "0.23.1" };
445
+ StringListMap[_v] = { fqn: "cdktn.StringListMap", version: "0.23.3" };
446
446
  // eslint-disable-next-line jsdoc/require-jsdoc
447
447
  class NumberListMap extends ComplexMap {
448
448
  constructor(terraformResource, terraformAttribute) {
@@ -456,7 +456,7 @@ class NumberListMap extends ComplexMap {
456
456
  }
457
457
  exports.NumberListMap = NumberListMap;
458
458
  _w = JSII_RTTI_SYMBOL_1;
459
- NumberListMap[_w] = { fqn: "cdktn.NumberListMap", version: "0.23.1" };
459
+ NumberListMap[_w] = { fqn: "cdktn.NumberListMap", version: "0.23.3" };
460
460
  // eslint-disable-next-line jsdoc/require-jsdoc
461
461
  class BooleanListMap extends ComplexMap {
462
462
  constructor(terraformResource, terraformAttribute) {
@@ -471,7 +471,7 @@ class BooleanListMap extends ComplexMap {
471
471
  }
472
472
  exports.BooleanListMap = BooleanListMap;
473
473
  _x = JSII_RTTI_SYMBOL_1;
474
- BooleanListMap[_x] = { fqn: "cdktn.BooleanListMap", version: "0.23.1" };
474
+ BooleanListMap[_x] = { fqn: "cdktn.BooleanListMap", version: "0.23.3" };
475
475
  // eslint-disable-next-line jsdoc/require-jsdoc
476
476
  class AnyListMap extends ComplexMap {
477
477
  constructor(terraformResource, terraformAttribute) {
@@ -486,5 +486,5 @@ class AnyListMap extends ComplexMap {
486
486
  }
487
487
  exports.AnyListMap = AnyListMap;
488
488
  _y = JSII_RTTI_SYMBOL_1;
489
- AnyListMap[_y] = { fqn: "cdktn.AnyListMap", version: "0.23.1" };
490
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxleC1jb21wdXRlZC1saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29tcGxleC1jb21wdXRlZC1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyxxQ0FBK0Q7QUFLL0Qsd0JBS1c7QUFDWCw4REFBaUU7QUFDakUscUNBQW1EO0FBRW5ELCtDQUErQztBQUMvQyxNQUFlLGlCQUFpQjtJQVE5QixZQUNZLGlCQUF1QyxFQUN2QyxrQkFBMEI7UUFEMUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQUN2Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQVE7UUFFcEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFBLCtCQUFpQixHQUFFLENBQUM7SUFDM0MsQ0FBQztJQUlELElBQUksR0FBRztRQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxPQUFPLENBQUMsUUFBeUI7UUFDL0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxjQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FDRjtBQUVELCtDQUErQztBQUMvQyxNQUFlLHdCQUNiLFNBQVEsaUJBQWlCO0lBR3pCLFlBQ1ksaUJBQXVDLEVBQ3ZDLGtCQUEwQjtRQUVwQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUhuQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNCO1FBQ3ZDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBUTtJQUd0QyxDQUFDO0lBRU0sa0JBQWtCLENBQUMsa0JBQTBCO1FBQ2xE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QUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FDOUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLElBQUksR0FBRyxHQUFHLENBQ3JDLENBQ0YsQ0FBQztJQUNKLENBQUM7O0FBZEgsc0NBZUM7OztBQUVELCtDQUErQztBQUMvQyxNQUFhLGNBQWUsU0FBUSxVQUFVO0lBQzVDLFlBQ1ksaUJBQXVDLEVBQ3ZDLGtCQUEwQjtRQUVwQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUhuQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNCO1FBQ3ZDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBUTtJQUd0QyxDQUFDO0lBRU0sR0FBRyxDQUFDLEdBQVc7UUFDcEIsNkJBQTZCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLHlCQUF5QixDQUNyRCxHQUFHLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxHQUFHLEdBQUcsQ0FDckMsQ0FBQztJQUNKLENBQUM7O0FBYkgsd0NBY0M7OztBQUVELCtDQUErQztBQUMvQyxNQUFhLFVBQVcsU0FBUSxVQUFVO0lBQ3hDLFlBQ1ksaUJBQXVDLEVBQ3ZDLGtCQUEwQjtRQUVwQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUhuQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNCO1FBQ3ZDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBUTtJQUd0QyxDQUFDO0lBRU0sR0FBRyxDQUFDLEdBQVc7UUFDcEIsNkJBQTZCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLHlCQUF5QixDQUNyRCxHQUFHLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxHQUFHLEdBQUcsQ0FDckMsQ0FBQztJQUNKLENBQUM7O0FBYkgsZ0NBY0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgSVJlc29sdmFibGUsIFRva2VuLCBJUmVzb2x2ZUNvbnRleHQgfSBmcm9tIFwiLi90b2tlbnNcIjtcbmltcG9ydCB7XG4gIElJbnRlcnBvbGF0aW5nUGFyZW50LFxuICBJVGVycmFmb3JtQWRkcmVzc2FibGUsXG59IGZyb20gXCIuL3RlcnJhZm9ybS1hZGRyZXNzYWJsZVwiO1xuaW1wb3J0IHtcbiAgcHJvcGVydHlBY2Nlc3MsXG4gIEZuLFxuICBUZXJyYWZvcm1JdGVyYXRvcixcbiAgRHluYW1pY0xpc3RUZXJyYWZvcm1JdGVyYXRvcixcbn0gZnJvbSBcIi5cIjtcbmltcG9ydCB7IGNhcHR1cmVTdGFja1RyYWNlIH0gZnJvbSBcIi4vdG9rZW5zL3ByaXZhdGUvc3RhY2stdHJhY2VcIjtcbmltcG9ydCB7IHByb3ZpZGVyVmVyc2lvbk1pc21hdGNoIH0gZnJvbSBcIi4vZXJyb3JzXCI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5hYnN0cmFjdCBjbGFzcyBDb21wbGV4UmVzb2x2YWJsZSBpbXBsZW1lbnRzIElSZXNvbHZhYmxlLCBJVGVycmFmb3JtQWRkcmVzc2FibGUge1xuICBwdWJsaWMgcmVhZG9ubHkgY3JlYXRpb25TdGFjazogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIF9mcW4/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybVJlc291cmNlOiBJSW50ZXJwb2xhdGluZ1BhcmVudCxcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcsXG4gICkge1xuICAgIHRoaXMuY3JlYXRpb25TdGFjayA9IGNhcHR1cmVTdGFja1RyYWNlKCk7XG4gIH1cblxuICBhYnN0cmFjdCBjb21wdXRlRnFuKCk6IHN0cmluZztcblxuICBnZXQgZnFuKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl9mcW4pIHtcbiAgICAgIHRoaXMuX2ZxbiA9IHRoaXMuY29tcHV0ZUZxbigpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9mcW47XG4gIH1cblxuICByZXNvbHZlKF9jb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmZxbjtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFRva2VuLmFzU3RyaW5nKHRoaXMpO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5hYnN0cmFjdCBjbGFzcyBDb21wbGV4Q29tcHV0ZWRBdHRyaWJ1dGVcbiAgZXh0ZW5kcyBDb21wbGV4UmVzb2x2YWJsZVxuICBpbXBsZW1lbnRzIElJbnRlcnBvbGF0aW5nUGFyZW50XG57XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1SZXNvdXJjZTogSUludGVycG9sYXRpbmdQYXJlbnQsXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nLFxuICApIHtcbiAgICBzdXBlcih0ZXJyYWZvcm1SZXNvdXJjZSwgdGVycmFmb3JtQXR0cmlidXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTdHJpbmdBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNTdHJpbmcodGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZSkpO1xuICB9XG5cbiAgcHVibGljIGdldE51bWJlckF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZykge1xuICAgIHJldHVybiBUb2tlbi5hc051bWJlcih0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGlzdEF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZykge1xuICAgIHJldHVybiBUb2tlbi5hc0xpc3QodGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZSkpO1xuICB9XG5cbiAgcHVibGljIGdldEJvb2xlYW5BdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpOiBJUmVzb2x2YWJsZSB7XG4gICAgcmV0dXJuIHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGUpO1xuICB9XG5cbiAgcHVibGljIGdldE51bWJlckxpc3RBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNOdW1iZXJMaXN0KFxuICAgICAgdGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTdHJpbmdNYXBBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNTdHJpbmdNYXAoXG4gICAgICB0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldE51bWJlck1hcEF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZykge1xuICAgIHJldHVybiBUb2tlbi5hc051bWJlck1hcChcbiAgICAgIHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGUpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Qm9vbGVhbk1hcEF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZykge1xuICAgIHJldHVybiBUb2tlbi5hc0Jvb2xlYW5NYXAoXG4gICAgICB0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldEFueU1hcEF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZykge1xuICAgIHJldHVybiBUb2tlbi5hc0FueU1hcCh0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlKSk7XG4gIH1cblxuICBwdWJsaWMgYWJzdHJhY3QgaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZyk6IGFueTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBjbGFzcyBTdHJpbmdNYXBcbiAgZXh0ZW5kcyBDb21wbGV4UmVzb2x2YWJsZVxuICBpbXBsZW1lbnRzIElUZXJyYWZvcm1BZGRyZXNzYWJsZVxue1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtUmVzb3VyY2U6IElJbnRlcnBvbGF0aW5nUGFyZW50LFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIodGVycmFmb3JtUmVzb3VyY2UsIHRlcnJhZm9ybUF0dHJpYnV0ZSk7XG4gIH1cblxuICBwdWJsaWMgbG9va3VwKGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVG9rZW4uYXNTdHJpbmcoXG4gICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoXG4gICAgICAgIGAke3RoaXMudGVycmFmb3JtQXR0cmlidXRlfVtcIiR7a2V5fVwiXWAsXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBjb21wdXRlRnFuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFRva2VuLmFzU3RyaW5nKFxuICAgICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKHRoaXMudGVycmFmb3JtQXR0cmlidXRlKSxcbiAgICApO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgY2xhc3MgTnVtYmVyTWFwXG4gIGV4dGVuZHMgQ29tcGxleFJlc29sdmFibGVcbiAgaW1wbGVtZW50cyBJVGVycmFmb3JtQWRkcmVzc2FibGVcbntcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybVJlc291cmNlOiBJSW50ZXJwb2xhdGluZ1BhcmVudCxcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcsXG4gICkge1xuICAgIHN1cGVyKHRlcnJhZm9ybVJlc291cmNlLCB0ZXJyYWZvcm1BdHRyaWJ1dGUpO1xuICB9XG5cbiAgcHVibGljIGxvb2t1cChrZXk6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIFRva2VuLmFzTnVtYmVyKFxuICAgICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKFxuICAgICAgICBgJHt0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZX1bXCIke2tleX1cIl1gLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgY29tcHV0ZUZxbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBUb2tlbi5hc1N0cmluZyhcbiAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZSksXG4gICAgKTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGNsYXNzIEJvb2xlYW5NYXBcbiAgZXh0ZW5kcyBDb21wbGV4UmVzb2x2YWJsZVxuICBpbXBsZW1lbnRzIElUZXJyYWZvcm1BZGRyZXNzYWJsZVxue1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtUmVzb3VyY2U6IElJbnRlcnBvbGF0aW5nUGFyZW50LFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIodGVycmFmb3JtUmVzb3VyY2UsIHRlcnJhZm9ybUF0dHJpYnV0ZSk7XG4gIH1cblxuICBwdWJsaWMgbG9va3VwKGtleTogc3RyaW5nKTogSVJlc29sdmFibGUge1xuICAgIHJldHVybiB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoXG4gICAgICBgJHt0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZX1bXCIke2tleX1cIl1gLFxuICAgICk7XG4gIH1cblxuICBjb21wdXRlRnFuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFRva2VuLmFzU3RyaW5nKFxuICAgICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKHRoaXMudGVycmFmb3JtQXR0cmlidXRlKSxcbiAgICApO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgY2xhc3MgQW55TWFwIGV4dGVuZHMgQ29tcGxleFJlc29sdmFibGUgaW1wbGVtZW50cyBJVGVycmFmb3JtQWRkcmVzc2FibGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtUmVzb3VyY2U6IElJbnRlcnBvbGF0aW5nUGFyZW50LFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIodGVycmFmb3JtUmVzb3VyY2UsIHRlcnJhZm9ybUF0dHJpYnV0ZSk7XG4gIH1cblxuICBwdWJsaWMgbG9va3VwKGtleTogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gVG9rZW4uYXNBbnkoXG4gICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoXG4gICAgICAgIGAke3RoaXMudGVycmFmb3JtQXR0cmlidXRlfVtcIiR7a2V5fVwiXWAsXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBjb21wdXRlRnFuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFRva2VuLmFzU3RyaW5nKFxuICAgICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKHRoaXMudGVycmFmb3JtQXR0cmlidXRlKSxcbiAgICApO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgY2xhc3MgU3RyaW5nTWFwTWFwXG4gIGV4dGVuZHMgQ29tcGxleFJlc29sdmFibGVcbiAgaW1wbGVtZW50cyBJVGVycmFmb3JtQWRkcmVzc2FibGVcbntcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybVJlc291cmNlOiBJSW50ZXJwb2xhdGluZ1BhcmVudCxcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcsXG4gICkge1xuICAgIHN1cGVyKHRlcnJhZm9ybVJlc291cmNlLCB0ZXJyYWZvcm1BdHRyaWJ1dGUpO1xuICB9XG5cbiAgcHVibGljIGxvb2t1cChrZXk6IHN0cmluZyk6IFN0cmluZ01hcCB7XG4gICAgcmV0dXJuIG5ldyBTdHJpbmdNYXAoXG4gICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLFxuICAgICAgYCR7dGhpcy50ZXJyYWZvcm1BdHRyaWJ1dGV9W1wiJHtrZXl9XCJdYCxcbiAgICApO1xuICB9XG5cbiAgY29tcHV0ZUZxbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBUb2tlbi5hc1N0cmluZyhcbiAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZSksXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIEdvaW5nIHRvIGJlIHJlcGxhY2VkIGJ5IEFycmF5IG9mIENvbXBsZXhMaXN0SXRlbVxuICogYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlXG4gKi9cbmV4cG9ydCBjbGFzcyBDb21wbGV4Q29tcHV0ZWRMaXN0IGV4dGVuZHMgQ29tcGxleENvbXB1dGVkQXR0cmlidXRlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybVJlc291cmNlOiBJSW50ZXJwb2xhdGluZ1BhcmVudCxcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIGNvbXBsZXhDb21wdXRlZExpc3RJbmRleDogc3RyaW5nLFxuICAgIHByb3RlY3RlZCB3cmFwc1NldD86IGJvb2xlYW4sXG4gICkge1xuICAgIHN1cGVyKHRlcnJhZm9ybVJlc291cmNlLCB0ZXJyYWZvcm1BdHRyaWJ1dGUpO1xuICAgIHRocm93IHByb3ZpZGVyVmVyc2lvbk1pc21hdGNoKCk7XG4gIH1cblxuICBwdWJsaWMgaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZShwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMud3JhcHNTZXQpIHtcbiAgICAgIHJldHVybiBwcm9wZXJ0eUFjY2VzcyhcbiAgICAgICAgRm4udG9saXN0KFxuICAgICAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZShcbiAgICAgICAgICAgIHRoaXMudGVycmFmb3JtQXR0cmlidXRlLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICAgIFt0aGlzLmNvbXBsZXhDb21wdXRlZExpc3RJbmRleCwgcHJvcGVydHldLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKFxuICAgICAgYCR7dGhpcy50ZXJyYWZvcm1BdHRyaWJ1dGV9WyR7dGhpcy5jb21wbGV4Q29tcHV0ZWRMaXN0SW5kZXh9XS4ke3Byb3BlcnR5fWAsXG4gICAgKTtcbiAgfVxuXG4gIGNvbXB1dGVGcW4oKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy53cmFwc1NldCkge1xuICAgICAgcmV0dXJuIFRva2VuLmFzU3RyaW5nKFxuICAgICAgICBwcm9wZXJ0eUFjY2VzcyhcbiAgICAgICAgICBGbi50b2xpc3QoXG4gICAgICAgICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoXG4gICAgICAgICAgICAgIHRoaXMudGVycmFmb3JtQXR0cmlidXRlLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICAgIFt0aGlzLmNvbXBsZXhDb21wdXRlZExpc3RJbmRleF0sXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBUb2tlbi5hc1N0cmluZyhcbiAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZShcbiAgICAgICAgYCR7dGhpcy50ZXJyYWZvcm1BdHRyaWJ1dGV9WyR7dGhpcy5jb21wbGV4Q29tcHV0ZWRMaXN0SW5kZXh9XWAsXG4gICAgICApLFxuICAgICk7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb21wbGV4TGlzdFxuICBleHRlbmRzIENvbXBsZXhSZXNvbHZhYmxlXG4gIGltcGxlbWVudHMgSVRlcnJhZm9ybUFkZHJlc3NhYmxlXG57XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1SZXNvdXJjZTogSUludGVycG9sYXRpbmdQYXJlbnQsXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCB3cmFwc1NldDogYm9vbGVhbixcbiAgKSB7XG4gICAgc3VwZXIodGVycmFmb3JtUmVzb3VyY2UsIHRlcnJhZm9ybUF0dHJpYnV0ZSk7XG4gIH1cblxuICBjb21wdXRlRnFuKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMud3JhcHNTZXQpIHtcbiAgICAgIHJldHVybiBUb2tlbi5hc1N0cmluZyhcbiAgICAgICAgRm4udG9saXN0KFxuICAgICAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZShcbiAgICAgICAgICAgIHRoaXMudGVycmFmb3JtQXR0cmlidXRlLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gVG9rZW4uYXNTdHJpbmcoXG4gICAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZShcbiAgICAgICAgICB0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0aW5nIGFuIGl0ZXJhdG9yIGZvciB0aGlzIGNvbXBsZXggbGlzdC5cbiAgICogVGhlIGxpc3Qgd2lsbCBiZSBjb252ZXJ0ZWQgaW50byBhIG1hcCB3aXRoIHRoZSBtYXBLZXlBdHRyaWJ1dGVOYW1lIGFzIHRoZSBrZXkuXG4gICAqIEBwYXJhbSBtYXBLZXlBdHRyaWJ1dGVOYW1lXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwdWJsaWMgYWxsV2l0aE1hcEtleShcbiAgICBtYXBLZXlBdHRyaWJ1dGVOYW1lOiBzdHJpbmcsXG4gICk6IER5bmFtaWNMaXN0VGVycmFmb3JtSXRlcmF0b3Ige1xuICAgIHJldHVybiBUZXJyYWZvcm1JdGVyYXRvci5mcm9tQ29tcGxleExpc3QoXG4gICAgICBUb2tlbi5hc0FueSh0aGlzLmNvbXB1dGVGcW4oKSksXG4gICAgICBtYXBLZXlBdHRyaWJ1dGVOYW1lLFxuICAgICk7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBjbGFzcyBCb29sZWFuTGlzdCBleHRlbmRzIENvbXBsZXhMaXN0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybVJlc291cmNlOiBJSW50ZXJwb2xhdGluZ1BhcmVudCxcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIHdyYXBzU2V0OiBib29sZWFuLFxuICApIHtcbiAgICBzdXBlcih0ZXJyYWZvcm1SZXNvdXJjZSwgdGVycmFmb3JtQXR0cmlidXRlLCB3cmFwc1NldCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0KGluZGV4OiBudW1iZXIpOiBJUmVzb2x2YWJsZSB7XG4gICAgcmV0dXJuIEZuLmVsZW1lbnQodGhpcywgaW5kZXgpO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgY2xhc3MgU3RyaW5nTGlzdExpc3QgZXh0ZW5kcyBDb21wbGV4TGlzdCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1SZXNvdXJjZTogSUludGVycG9sYXRpbmdQYXJlbnQsXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCB3cmFwc1NldDogYm9vbGVhbixcbiAgKSB7XG4gICAgc3VwZXIodGVycmFmb3JtUmVzb3VyY2UsIHRlcnJhZm9ybUF0dHJpYnV0ZSwgd3JhcHNTZXQpO1xuICB9XG5cbiAgcHVibGljIGdldChpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIFRva2VuLmFzTGlzdChcbiAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZShcbiAgICAgICAgYCR7dGhpcy50ZXJyYWZvcm1BdHRyaWJ1dGV9WyR7aW5kZXh9XWAsXG4gICAgICApLFxuICAgICk7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBjbGFzcyBOdW1iZXJMaXN0TGlzdCBleHRlbmRzIENvbXBsZXhMaXN0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybVJlc291cmNlOiBJSW50ZXJwb2xhdGluZ1BhcmVudCxcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIHdyYXBzU2V0OiBib29sZWFuLFxuICApIHtcbiAgICBzdXBlcih0ZXJyYWZvcm1SZXNvdXJjZSwgdGVycmFmb3JtQXR0cmlidXRlLCB3cmFwc1NldCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0KGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNOdW1iZXJMaXN0KFxuICAgICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKFxuICAgICAgICBgJHt0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZX1bJHtpbmRleH1dYCxcbiAgICAgICksXG4gICAgKTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGNsYXNzIEJvb2xlYW5MaXN0TGlzdCBleHRlbmRzIENvbXBsZXhMaXN0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybVJlc291cmNlOiBJSW50ZXJwb2xhdGluZ1BhcmVudCxcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIHdyYXBzU2V0OiBib29sZWFuLFxuICApIHtcbiAgICBzdXBlcih0ZXJyYWZvcm1SZXNvdXJjZSwgdGVycmFmb3JtQXR0cmlidXRlLCB3cmFwc1NldCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0KGluZGV4OiBudW1iZXIpIHtcbiAgICAvLyBUaGlzIGlzbid0IGZ1bGx5IHN1cHBvcnRlZFxuICAgIHJldHVybiB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoXG4gICAgICBgJHt0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZX1bJHtpbmRleH1dYCxcbiAgICApO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgY2xhc3MgQW55TGlzdExpc3QgZXh0ZW5kcyBDb21wbGV4TGlzdCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1SZXNvdXJjZTogSUludGVycG9sYXRpbmdQYXJlbnQsXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCB3cmFwc1NldDogYm9vbGVhbixcbiAgKSB7XG4gICAgc3VwZXIodGVycmFmb3JtUmVzb3VyY2UsIHRlcnJhZm9ybUF0dHJpYnV0ZSwgd3JhcHNTZXQpO1xuICB9XG5cbiAgcHVibGljIGdldChpbmRleDogbnVtYmVyKSB7XG4gICAgLy8gVGhpcyBpc24ndCBmdWxseSBzdXBwb3J0ZWRcbiAgICByZXR1cm4gdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKFxuICAgICAgYCR7dGhpcy50ZXJyYWZvcm1BdHRyaWJ1dGV9WyR7aW5kZXh9XWAsXG4gICAgKTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbXBsZXhNYXBcbiAgZXh0ZW5kcyBDb21wbGV4UmVzb2x2YWJsZVxuICBpbXBsZW1lbnRzIElUZXJyYWZvcm1BZGRyZXNzYWJsZVxue1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtUmVzb3VyY2U6IElJbnRlcnBvbGF0aW5nUGFyZW50LFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIodGVycmFmb3JtUmVzb3VyY2UsIHRlcnJhZm9ybUF0dHJpYnV0ZSk7XG4gIH1cblxuICBjb21wdXRlRnFuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFRva2VuLmFzU3RyaW5nKFxuICAgICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKHRoaXMudGVycmFmb3JtQXR0cmlidXRlKSxcbiAgICApO1xuICB9XG5cbiAgaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZShwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHByb3BlcnR5QWNjZXNzKFxuICAgICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKHRoaXMudGVycmFmb3JtQXR0cmlidXRlKSxcbiAgICAgIFtwcm9wZXJ0eV0sXG4gICAgKTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGNsYXNzIENvbXBsZXhPYmplY3QgZXh0ZW5kcyBDb21wbGV4Q29tcHV0ZWRBdHRyaWJ1dGUge1xuICAvKipcbiAgICogQHBhcmFtIHRlcnJhZm9ybVJlc291cmNlXG4gICAqIEBwYXJhbSB0ZXJyYWZvcm1BdHRyaWJ1dGVcbiAgICogQHBhcmFtIGNvbXBsZXhPYmplY3RJbmRleCB0aGUgaW5kZXggb2YgdGhlIGNvbXBsZXggb2JqZWN0IGluIGEgbGlzdFxuICAgKiBAcGFyYW0gY29tcGxleE9iamVjdElzRnJvbVNldCBzZXQgdG8gdHJ1ZSBpZiB0aGlzIGl0ZW0gaXMgZnJvbSBpbnNpZGUgYSBzZXQgYW5kIG5lZWRzIHRvbGlzdCgpIGZvciBhY2Nlc3NpbmcgaXRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0IHRvIFwiMFwiIGZvciBzaW5nbGUgbGlzdCBpdGVtc1xuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybVJlc291cmNlOiBJSW50ZXJwb2xhdGluZ1BhcmVudCxcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIGNvbXBsZXhPYmplY3RJc0Zyb21TZXQ6IGJvb2xlYW4sXG4gICAgcHJvdGVjdGVkIGNvbXBsZXhPYmplY3RJbmRleD86IG51bWJlciB8IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIodGVycmFmb3JtUmVzb3VyY2UsIHRlcnJhZm9ybUF0dHJpYnV0ZSk7XG4gIH1cblxuICBwdWJsaWMgaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZShwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuY29tcGxleE9iamVjdElzRnJvbVNldCkge1xuICAgICAgcmV0dXJuIHByb3BlcnR5QWNjZXNzKFxuICAgICAgICBGbi50b2xpc3QoXG4gICAgICAgICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKFxuICAgICAgICAgICAgdGhpcy50ZXJyYWZvcm1BdHRyaWJ1dGUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICAgW3RoaXMuY29tcGxleE9iamVjdEluZGV4LCBwcm9wZXJ0eV0sXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoXG4gICAgICB0aGlzLmNvbXBsZXhPYmplY3RJbmRleCAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gYCR7dGhpcy50ZXJyYWZvcm1BdHRyaWJ1dGV9WyR7dGhpcy5jb21wbGV4T2JqZWN0SW5kZXh9XS4ke3Byb3BlcnR5fWBcbiAgICAgICAgOiBgJHt0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZX0uJHtwcm9wZXJ0eX1gLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW50ZXJwb2xhdGlvbkFzTGlzdCgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKFxuICAgICAgYCR7dGhpcy50ZXJyYWZvcm1BdHRyaWJ1dGV9LipgLFxuICAgICk7XG4gIH1cblxuICBjb21wdXRlRnFuKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY29tcGxleE9iamVjdElzRnJvbVNldCkge1xuICAgICAgcmV0dXJuIFRva2VuLmFzU3RyaW5nKFxuICAgICAgICBwcm9wZXJ0eUFjY2VzcyhcbiAgICAgICAgICBGbi50b2xpc3QoXG4gICAgICAgICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoXG4gICAgICAgICAgICAgIHRoaXMudGVycmFmb3JtQXR0cmlidXRlLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICAgIFt0aGlzLmNvbXBsZXhPYmplY3RJbmRleF0sXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBUb2tlbi5hc1N0cmluZyhcbiAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZShcbiAgICAgICAgdGhpcy5jb21wbGV4T2JqZWN0SW5kZXggIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gYCR7dGhpcy50ZXJyYWZvcm1BdHRyaWJ1dGV9WyR7dGhpcy5jb21wbGV4T2JqZWN0SW5kZXh9XWBcbiAgICAgICAgICA6IHRoaXMudGVycmFmb3JtQXR0cmlidXRlLFxuICAgICAgKSxcbiAgICApO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTWFwTGlzdFxuICBleHRlbmRzIENvbXBsZXhSZXNvbHZhYmxlXG4gIGltcGxlbWVudHMgSVRlcnJhZm9ybUFkZHJlc3NhYmxlLCBJSW50ZXJwb2xhdGluZ1BhcmVudFxue1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtUmVzb3VyY2U6IElJbnRlcnBvbGF0aW5nUGFyZW50LFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgd3JhcHNTZXQ6IGJvb2xlYW4sXG4gICkge1xuICAgIHN1cGVyKHRlcnJhZm9ybVJlc291cmNlLCB0ZXJyYWZvcm1BdHRyaWJ1dGUpO1xuICB9XG5cbiAgY29tcHV0ZUZxbigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLndyYXBzU2V0KSB7XG4gICAgICByZXR1cm4gVG9rZW4uYXNTdHJpbmcoXG4gICAgICAgIEZuLnRvbGlzdChcbiAgICAgICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoXG4gICAgICAgICAgICB0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFRva2VuLmFzU3RyaW5nKFxuICAgICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoXG4gICAgICAgICAgdGhpcy50ZXJyYWZvcm1BdHRyaWJ1dGUsXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUocHJvcGVydHk6IHN0cmluZyk6IElSZXNvbHZhYmxlIHtcbiAgICBpZiAodGhpcy53cmFwc1NldCkge1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IHByb3BlcnR5Lm1hdGNoKC9cXFsoW15cXF1dKilcXF0vKTsgLy8gbmVlZCB0byBleHRyYWN0IG91dCB0aGUgaW5kZXhcbiAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgIHJldHVybiBwcm9wZXJ0eUFjY2VzcyhcbiAgICAgICAgICBGbi50b2xpc3QoXG4gICAgICAgICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoXG4gICAgICAgICAgICAgIHRoaXMudGVycmFmb3JtQXR0cmlidXRlLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICAgIFttYXRjaGVzWzFdLCBwcm9wZXJ0eV0sXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZShcbiAgICAgIGAke3RoaXMudGVycmFmb3JtQXR0cmlidXRlfSR7cHJvcGVydHl9YCxcbiAgICApO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgY2xhc3MgU3RyaW5nTWFwTGlzdCBleHRlbmRzIE1hcExpc3Qge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtUmVzb3VyY2U6IElJbnRlcnBvbGF0aW5nUGFyZW50LFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgd3JhcHNTZXQ6IGJvb2xlYW4sXG4gICkge1xuICAgIHN1cGVyKHRlcnJhZm9ybVJlc291cmNlLCB0ZXJyYWZvcm1BdHRyaWJ1dGUsIHdyYXBzU2V0KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiBuZXcgU3RyaW5nTWFwKHRoaXMsIGBbJHtpbmRleH1dYCk7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBjbGFzcyBOdW1iZXJNYXBMaXN0IGV4dGVuZHMgTWFwTGlzdCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1SZXNvdXJjZTogSUludGVycG9sYXRpbmdQYXJlbnQsXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCB3cmFwc1NldDogYm9vbGVhbixcbiAgKSB7XG4gICAgc3VwZXIodGVycmFmb3JtUmVzb3VyY2UsIHRlcnJhZm9ybUF0dHJpYnV0ZSwgd3JhcHNTZXQpO1xuICB9XG5cbiAgcHVibGljIGdldChpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG5ldyBOdW1iZXJNYXAodGhpcywgYFske2luZGV4fV1gKTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGNsYXNzIEJvb2xlYW5NYXBMaXN0IGV4dGVuZHMgTWFwTGlzdCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1SZXNvdXJjZTogSUludGVycG9sYXRpbmdQYXJlbnQsXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCB3cmFwc1NldDogYm9vbGVhbixcbiAgKSB7XG4gICAgc3VwZXIodGVycmFmb3JtUmVzb3VyY2UsIHRlcnJhZm9ybUF0dHJpYnV0ZSwgd3JhcHNTZXQpO1xuICB9XG5cbiAgcHVibGljIGdldChpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG5ldyBCb29sZWFuTWFwKHRoaXMsIGBbJHtpbmRleH1dYCk7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBjbGFzcyBBbnlNYXBMaXN0IGV4dGVuZHMgTWFwTGlzdCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1SZXNvdXJjZTogSUludGVycG9sYXRpbmdQYXJlbnQsXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCB3cmFwc1NldDogYm9vbGVhbixcbiAgKSB7XG4gICAgc3VwZXIodGVycmFmb3JtUmVzb3VyY2UsIHRlcnJhZm9ybUF0dHJpYnV0ZSwgd3JhcHNTZXQpO1xuICB9XG5cbiAgcHVibGljIGdldChpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG5ldyBBbnlNYXAodGhpcywgYFske2luZGV4fV1gKTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGNsYXNzIFN0cmluZ0xpc3RNYXAgZXh0ZW5kcyBDb21wbGV4TWFwIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybVJlc291cmNlOiBJSW50ZXJwb2xhdGluZ1BhcmVudCxcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcsXG4gICkge1xuICAgIHN1cGVyKHRlcnJhZm9ybVJlc291cmNlLCB0ZXJyYWZvcm1BdHRyaWJ1dGUpO1xuICB9XG5cbiAgcHVibGljIGdldChrZXk6IHN0cmluZykge1xuICAgIHJldHVybiBUb2tlbi5hc0xpc3QoXG4gICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoXG4gICAgICAgIGAke3RoaXMudGVycmFmb3JtQXR0cmlidXRlfVske2tleX1dYCxcbiAgICAgICksXG4gICAgKTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGNsYXNzIE51bWJlckxpc3RNYXAgZXh0ZW5kcyBDb21wbGV4TWFwIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybVJlc291cmNlOiBJSW50ZXJwb2xhdGluZ1BhcmVudCxcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcsXG4gICkge1xuICAgIHN1cGVyKHRlcnJhZm9ybVJlc291cmNlLCB0ZXJyYWZvcm1BdHRyaWJ1dGUpO1xuICB9XG5cbiAgcHVibGljIGdldChrZXk6IHN0cmluZykge1xuICAgIHJldHVybiBUb2tlbi5hc051bWJlckxpc3QoXG4gICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoXG4gICAgICAgIGAke3RoaXMudGVycmFmb3JtQXR0cmlidXRlfVske2tleX1dYCxcbiAgICAgICksXG4gICAgKTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGNsYXNzIEJvb2xlYW5MaXN0TWFwIGV4dGVuZHMgQ29tcGxleE1hcCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1SZXNvdXJjZTogSUludGVycG9sYXRpbmdQYXJlbnQsXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nLFxuICApIHtcbiAgICBzdXBlcih0ZXJyYWZvcm1SZXNvdXJjZSwgdGVycmFmb3JtQXR0cmlidXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQoa2V5OiBzdHJpbmcpIHtcbiAgICAvLyBUaGlzIGlzbid0IGZ1bGx5IHN1cHBvcnRlZFxuICAgIHJldHVybiB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoXG4gICAgICBgJHt0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZX1bJHtrZXl9XWAsXG4gICAgKTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGNsYXNzIEFueUxpc3RNYXAgZXh0ZW5kcyBDb21wbGV4TWFwIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybVJlc291cmNlOiBJSW50ZXJwb2xhdGluZ1BhcmVudCxcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcsXG4gICkge1xuICAgIHN1cGVyKHRlcnJhZm9ybVJlc291cmNlLCB0ZXJyYWZvcm1BdHRyaWJ1dGUpO1xuICB9XG5cbiAgcHVibGljIGdldChrZXk6IHN0cmluZykge1xuICAgIC8vIFRoaXMgaXNuJ3QgZnVsbHkgc3VwcG9ydGVkXG4gICAgcmV0dXJuIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZShcbiAgICAgIGAke3RoaXMudGVycmFmb3JtQXR0cmlidXRlfVske2tleX1dYCxcbiAgICApO1xuICB9XG59XG4iXX0=
489
+ AnyListMap[_y] = { fqn: "cdktn.AnyListMap", version: "0.23.3" };
490
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxleC1jb21wdXRlZC1saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbXBsZXgtY29tcHV0ZWQtbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMscUNBQStEO0FBSy9ELHdCQUtXO0FBQ1gsOERBQW9FO0FBQ3BFLHFDQUFtRDtBQUVuRCwrQ0FBK0M7QUFDL0MsTUFBZSxpQkFBaUI7SUFROUIsWUFDWSxpQkFBdUMsRUFDdkMsa0JBQTBCO1FBRDFCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFDdkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFRO1FBRXBDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBQSxrQ0FBb0IsR0FBRSxDQUFDO0lBQzlDLENBQUM7SUFJRCxJQUFJLEdBQUc7UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEMsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsT0FBTyxDQUFDLFFBQXlCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sY0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBQ0Y7QUFFRCwrQ0FBK0M7QUFDL0MsTUFBZSx3QkFDYixTQUFRLGlCQUFpQjtJQUd6QixZQUNZLGlCQUF1QyxFQUN2QyxrQkFBMEI7UUFFcEMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFIbkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQUN2Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQVE7SUFHdEMsQ0FBQztJQUVNLGtCQUFrQixDQUFDLGtCQUEwQjtRQUNsRCxPQUFPLGNBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU0sa0JBQWtCLENBQUMsa0JBQTBCO1FBQ2xELE9BQU8sY0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxrQkFBMEI7UUFDaEQsT0FBTyxjQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVNLG1CQUFtQixDQUFDLGtCQUEwQjtRQUNuRCxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxrQkFBMEI7UUFDdEQsT0FBTyxjQUFLLENBQUMsWUFBWSxDQUN2QixJQUFJLENBQUMseUJBQXlCLENBQUMsa0JBQWtCLENBQUMsQ0FDbkQsQ0FBQztJQUNKLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxrQkFBMEI7UUFDckQsT0FBTyxjQUFLLENBQUMsV0FBVyxDQUN0QixJQUFJLENBQUMseUJBQXlCLENBQUMsa0JBQWtCLENBQUMsQ0FDbkQsQ0FBQztJQUNKLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxrQkFBMEI7UUFDckQsT0FBTyxjQUFLLENBQUMsV0FBVyxDQUN0QixJQUFJLENBQUMseUJBQXlCLENBQUMsa0JBQWtCLENBQUMsQ0FDbkQsQ0FBQztJQUNKLENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxrQkFBMEI7UUFDdEQsT0FBTyxjQUFLLENBQUMsWUFBWSxDQUN2QixJQUFJLENBQUMseUJBQXlCLENBQUMsa0JBQWtCLENBQUMsQ0FDbkQsQ0FBQztJQUNKLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxrQkFBMEI7UUFDbEQsT0FBTyxjQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztDQUdGO0FBRUQsK0NBQStDO0FBQy9DLE1BQWEsU0FDWCxTQUFRLGlCQUFpQjtJQUd6QixZQUNZLGlCQUF1QyxFQUN2QyxrQkFBMEI7UUFFcEMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFIbkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQUN2Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQVE7SUFHdEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxHQUFXO1FBQ3ZCLE9BQU8sY0FBSyxDQUFDLFFBQVEsQ0FDbkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHlCQUF5QixDQUM5QyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxHQUFHLElBQUksQ0FDdkMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLGNBQUssQ0FBQyxRQUFRLENBQ25CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FDMUUsQ0FBQztJQUNKLENBQUM7O0FBdkJILDhCQXdCQzs7O0FBRUQsK0NBQStDO0FBQy9DLE1BQWEsU0FDWCxTQUFRLGlCQUFpQjtJQUd6QixZQUNZLGlCQUF1QyxFQUN2QyxrQkFBMEI7UUFFcEMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFIbkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQUN2Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQVE7SUFHdEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxHQUFXO1FBQ3ZCLE9BQU8sY0FBSyxDQUFDLFFBQVEsQ0FDbkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHlCQUF5QixDQUM5QyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxHQUFHLElBQUksQ0FDdkMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLGNBQUssQ0FBQyxRQUFRLENBQ25CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FDMUUsQ0FBQztJQUNKLENBQUM7O0FBdkJILDhCQXdCQzs7O0FBRUQsK0NBQStDO0FBQy9DLE1BQWEsVUFDWCxTQUFRLGlCQUFpQjtJQUd6QixZQUNZLGlCQUF1QyxFQUN2QyxrQkFBMEI7UUFFcEMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFIbkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQUN2Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQVE7SUFHdEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxHQUFXO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLHlCQUF5QixDQUNyRCxHQUFHLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxHQUFHLElBQUksQ0FDdkMsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxjQUFLLENBQUMsUUFBUSxDQUNuQixJQUFJLENBQUMsaUJBQWlCLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQzFFLENBQUM7SUFDSixDQUFDOztBQXJCSCxnQ0FzQkM7OztBQUVELCtDQUErQztBQUMvQyxNQUFhLE1BQU8sU0FBUSxpQkFBaUI7SUFDM0MsWUFDWSxpQkFBdUMsRUFDdkMsa0JBQTBCO1FBRXBDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBSG5DLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFDdkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFRO0lBR3RDLENBQUM7SUFFTSxNQUFNLENBQUMsR0FBVztRQUN2QixPQUFPLGNBQUssQ0FBQyxLQUFLLENBQ2hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FDOUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEtBQUssR0FBRyxJQUFJLENBQ3ZDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxjQUFLLENBQUMsUUFBUSxDQUNuQixJQUFJLENBQUMsaUJBQWlCLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQzFFLENBQUM7SUFDSixDQUFDOztBQXBCSCx3QkFxQkM7OztBQUVELCtDQUErQztBQUMvQyxNQUFhLFlBQ1gsU0FBUSxpQkFBaUI7SUFHekIsWUFDWSxpQkFBdUMsRUFDdkMsa0JBQTBCO1FBRXBDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBSG5DLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFDdkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFRO0lBR3RDLENBQUM7SUFFTSxNQUFNLENBQUMsR0FBVztRQUN2QixPQUFPLElBQUksU0FBUyxDQUNsQixJQUFJLENBQUMsaUJBQWlCLEVBQ3RCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixLQUFLLEdBQUcsSUFBSSxDQUN2QyxDQUFDO0lBQ0osQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLGNBQUssQ0FBQyxRQUFRLENBQ25CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FDMUUsQ0FBQztJQUNKLENBQUM7O0FBdEJILG9DQXVCQzs7O0FBRUQ7OztHQUdHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSx3QkFBd0I7SUFDL0QsWUFDWSxpQkFBdUMsRUFDdkMsa0JBQTBCLEVBQzFCLHdCQUFnQyxFQUNoQyxRQUFrQjtRQUU1QixLQUFLLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUxuQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNCO1FBQ3ZDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBUTtRQUMxQiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQVE7UUFDaEMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUc1QixNQUFNLElBQUEsZ0NBQXVCLEdBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRU0seUJBQXlCLENBQUMsUUFBZ0I7UUFDL0MsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsT0FBTyxJQUFBLGlCQUFjLEVBQ25CLEtBQUUsQ0FBQyxNQUFNLENBQ1AsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHlCQUF5QixDQUM5QyxJQUFJLENBQUMsa0JBQWtCLENBQ3hCLENBQ0YsRUFDRCxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxRQUFRLENBQUMsQ0FDMUMsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FDckQsR0FBRyxJQUFJLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLHdCQUF3QixLQUFLLFFBQVEsRUFBRSxDQUMzRSxDQUFDO0lBQ0osQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixPQUFPLGNBQUssQ0FBQyxRQUFRLENBQ25CLElBQUEsaUJBQWMsRUFDWixLQUFFLENBQUMsTUFBTSxDQUNQLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FDOUMsSUFBSSxDQUFDLGtCQUFrQixDQUN4QixDQUNGLEVBQ0QsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FDaEMsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sY0FBSyxDQUFDLFFBQVEsQ0FDbkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHlCQUF5QixDQUM5QyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEdBQUcsQ0FDL0QsQ0FDRixDQUFDO0lBQ0osQ0FBQzs7QUEvQ0gsa0RBZ0RDOzs7QUFFRCwrQ0FBK0M7QUFDL0MsTUFBc0IsV0FDcEIsU0FBUSxpQkFBaUI7SUFHekIsWUFDWSxpQkFBdUMsRUFDdkMsa0JBQTBCLEVBQzFCLFFBQWlCO1FBRTNCLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBSm5DLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFDdkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFRO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBQVM7SUFHN0IsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixPQUFPLGNBQUssQ0FBQyxRQUFRLENBQ25CLEtBQUUsQ0FBQyxNQUFNLENBQ1AsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHlCQUF5QixDQUM5QyxJQUFJLENBQUMsa0JBQWtCLENBQ3hCLENBQ0YsQ0FDRixDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLGNBQUssQ0FBQyxRQUFRLENBQ25CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FDOUMsSUFBSSxDQUFDLGtCQUFrQixDQUN4QixDQUNGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksYUFBYSxDQUNsQixtQkFBMkI7UUFFM0IsT0FBTyxvQkFBaUIsQ0FBQyxlQUFlLENBQ3RDLGNBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQzlCLG1CQUFtQixDQUNwQixDQUFDO0lBQ0osQ0FBQzs7QUEzQ0gsa0NBNENDOzs7QUFFRCwrQ0FBK0M7QUFDL0MsTUFBYSxXQUFZLFNBQVEsV0FBVztJQUMxQyxZQUNZLGlCQUF1QyxFQUN2QyxrQkFBMEIsRUFDMUIsUUFBaUI7UUFFM0IsS0FBSyxDQUFDLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBSjdDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFDdkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFRO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBQVM7SUFHN0IsQ0FBQztJQUVNLEdBQUcsQ0FBQyxLQUFhO1FBQ3RCLE9BQU8sS0FBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQzs7QUFYSCxrQ0FZQzs7O0FBRUQsK0NBQStDO0FBQy9DLE1BQWEsY0FBZSxTQUFRLFdBQVc7SUFDN0MsWUFDWSxpQkFBdUMsRUFDdkMsa0JBQTBCLEVBQzFCLFFBQWlCO1FBRTNCLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUo3QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNCO1FBQ3ZDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBUTtRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFTO0lBRzdCLENBQUM7SUFFTSxHQUFHLENBQUMsS0FBYTtRQUN0QixPQUFPLGNBQUssQ0FBQyxNQUFNLENBQ2pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FDOUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLElBQUksS0FBSyxHQUFHLENBQ3ZDLENBQ0YsQ0FBQztJQUNKLENBQUM7O0FBZkgsd0NBZ0JDOzs7QUFFRCwrQ0FBK0M7QUFDL0MsTUFBYSxjQUFlLFNBQVEsV0FBVztJQUM3QyxZQUNZLGlCQUF1QyxFQUN2QyxrQkFBMEIsRUFDMUIsUUFBaUI7UUFFM0IsS0FBSyxDQUFDLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBSjdDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFDdkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFRO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBQVM7SUFHN0IsQ0FBQztJQUVNLEdBQUcsQ0FBQyxLQUFhO1FBQ3RCLE9BQU8sY0FBSyxDQUFDLFlBQVksQ0FDdkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHlCQUF5QixDQUM5QyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxLQUFLLEdBQUcsQ0FDdkMsQ0FDRixDQUFDO0lBQ0osQ0FBQzs7QUFmSCx3Q0FnQkM7OztBQUVELCtDQUErQztBQUMvQyxNQUFhLGVBQWdCLFNBQVEsV0FBVztJQUM5QyxZQUNZLGlCQUF1QyxFQUN2QyxrQkFBMEIsRUFDMUIsUUFBaUI7UUFFM0IsS0FBSyxDQUFDLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBSjdDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFDdkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFRO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBQVM7SUFHN0IsQ0FBQztJQUVNLEdBQUcsQ0FBQyxLQUFhO1FBQ3RCLDZCQUE2QjtRQUM3QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FDckQsR0FBRyxJQUFJLENBQUMsa0JBQWtCLElBQUksS0FBSyxHQUFHLENBQ3ZDLENBQUM7SUFDSixDQUFDOztBQWRILDBDQWVDOzs7QUFFRCwrQ0FBK0M7QUFDL0MsTUFBYSxXQUFZLFNBQVEsV0FBVztJQUMxQyxZQUNZLGlCQUF1QyxFQUN2QyxrQkFBMEIsRUFDMUIsUUFBaUI7UUFFM0IsS0FBSyxDQUFDLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBSjdDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFDdkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFRO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBQVM7SUFHN0IsQ0FBQztJQUVNLEdBQUcsQ0FBQyxLQUFhO1FBQ3RCLDZCQUE2QjtRQUM3QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FDckQsR0FBRyxJQUFJLENBQUMsa0JBQWtCLElBQUksS0FBSyxHQUFHLENBQ3ZDLENBQUM7SUFDSixDQUFDOztBQWRILGtDQWVDOzs7QUFFRCwrQ0FBK0M7QUFDL0MsTUFBc0IsVUFDcEIsU0FBUSxpQkFBaUI7SUFHekIsWUFDWSxpQkFBdUMsRUFDdkMsa0JBQTBCO1FBRXBDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBSG5DLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFDdkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFRO0lBR3RDLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxjQUFLLENBQUMsUUFBUSxDQUNuQixJQUFJLENBQUMsaUJBQWlCLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQzFFLENBQUM7SUFDSixDQUFDO0lBRUQseUJBQXlCLENBQUMsUUFBZ0I7UUFDeEMsT0FBTyxJQUFBLGlCQUFjLEVBQ25CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFDekUsQ0FBQyxRQUFRLENBQUMsQ0FDWCxDQUFDO0lBQ0osQ0FBQzs7QUF0QkgsZ0NBdUJDOzs7QUFFRCwrQ0FBK0M7QUFDL0MsTUFBYSxhQUFjLFNBQVEsd0JBQXdCO0lBQ3pEOzs7Ozs7T0FNRztJQUNILFlBQ1ksaUJBQXVDLEVBQ3ZDLGtCQUEwQixFQUMxQixzQkFBK0IsRUFDL0Isa0JBQW9DO1FBRTlDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBTG5DLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFDdkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFRO1FBQzFCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBUztRQUMvQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQWtCO0lBR2hELENBQUM7SUFFTSx5QkFBeUIsQ0FBQyxRQUFnQjtRQUMvQyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sSUFBQSxpQkFBYyxFQUNuQixLQUFFLENBQUMsTUFBTSxDQUNQLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FDOUMsSUFBSSxDQUFDLGtCQUFrQixDQUN4QixDQUNGLEVBQ0QsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLENBQ3BDLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMseUJBQXlCLENBQ3JELElBQUksQ0FBQyxrQkFBa0IsS0FBSyxTQUFTO1lBQ25DLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEtBQUssUUFBUSxFQUFFO1lBQ3RFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxRQUFRLEVBQUUsQ0FDN0MsQ0FBQztJQUNKLENBQUM7SUFFUyxtQkFBbUI7UUFDM0IsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMseUJBQXlCLENBQ3JELEdBQUcsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQy9CLENBQUM7SUFDSixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDaEMsT0FBTyxjQUFLLENBQUMsUUFBUSxDQUNuQixJQUFBLGlCQUFjLEVBQ1osS0FBRSxDQUFDLE1BQU0sQ0FDUCxJQUFJLENBQUMsaUJBQWlCLENBQUMseUJBQXlCLENBQzlDLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsQ0FDRixFQUNELENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQzFCLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLGNBQUssQ0FBQyxRQUFRLENBQ25CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FDOUMsSUFBSSxDQUFDLGtCQUFrQixLQUFLLFNBQVM7WUFDbkMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsR0FBRztZQUMxRCxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUM1QixDQUNGLENBQUM7SUFDSixDQUFDOztBQS9ESCxzQ0FnRUM7OztBQUVELCtDQUErQztBQUMvQyxNQUFzQixPQUNwQixTQUFRLGlCQUFpQjtJQUd6QixZQUNZLGlCQUF1QyxFQUN2QyxrQkFBMEIsRUFDMUIsUUFBaUI7UUFFM0IsS0FBSyxDQUFDLGlCQUFpQixFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFKbkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQUN2Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQVE7UUFDMUIsYUFBUSxHQUFSLFFBQVEsQ0FBUztJQUc3QixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sY0FBSyxDQUFDLFFBQVEsQ0FDbkIsS0FBRSxDQUFDLE1BQU0sQ0FDUCxJQUFJLENBQUMsaUJBQWlCLENBQUMseUJBQXlCLENBQzlDLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsQ0FDRixDQUNGLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sY0FBSyxDQUFDLFFBQVEsQ0FDbkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHlCQUF5QixDQUM5QyxJQUFJLENBQUMsa0JBQWtCLENBQ3hCLENBQ0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQseUJBQXlCLENBQUMsUUFBZ0I7UUFDeEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLGdDQUFnQztZQUNoRixJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNaLE9BQU8sSUFBQSxpQkFBYyxFQUNuQixLQUFFLENBQUMsTUFBTSxDQUNQLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FDOUMsSUFBSSxDQUFDLGtCQUFrQixDQUN4QixDQUNGLEVBQ0QsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQ3ZCLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLHlCQUF5QixDQUNyRCxHQUFHLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLEVBQUUsQ0FDeEMsQ0FBQztJQUNKLENBQUM7O0FBaERILDBCQWlEQzs7O0FBRUQsK0NBQStDO0FBQy9DLE1BQWEsYUFBYyxTQUFRLE9BQU87SUFDeEMsWUFDWSxpQkFBdUMsRUFDdkMsa0JBQTBCLEVBQzFCLFFBQWlCO1FBRTNCLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUo3QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNCO1FBQ3ZDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBUTtRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFTO0lBRzdCLENBQUM7SUFFTSxHQUFHLENBQUMsS0FBYTtRQUN0QixPQUFPLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7QUFYSCxzQ0FZQzs7O0FBRUQsK0NBQStDO0FBQy9DLE1BQWEsYUFBYyxTQUFRLE9BQU87SUFDeEMsWUFDWSxpQkFBdUMsRUFDdkMsa0JBQTBCLEVBQzFCLFFBQWlCO1FBRTNCLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUo3QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNCO1FBQ3ZDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBUTtRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFTO0lBRzdCLENBQUM7SUFFTSxHQUFHLENBQUMsS0FBYTtRQUN0QixPQUFPLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7QUFYSCxzQ0FZQzs7O0FBRUQsK0NBQStDO0FBQy9DLE1BQWEsY0FBZSxTQUFRLE9BQU87SUFDekMsWUFDWSxpQkFBdUMsRUFDdkMsa0JBQTBCLEVBQzFCLFFBQWlCO1FBRTNCLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUo3QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNCO1FBQ3ZDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBUTtRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFTO0lBRzdCLENBQUM7SUFFTSxHQUFHLENBQUMsS0FBYTtRQUN0QixPQUFPLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDNUMsQ0FBQzs7QUFYSCx3Q0FZQzs7O0FBRUQsK0NBQStDO0FBQy9DLE1BQWEsVUFBVyxTQUFRLE9BQU87SUFDckMsWUFDWSxpQkFBdUMsRUFDdkMsa0JBQTBCLEVBQzFCLFFBQWlCO1FBRTNCLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUo3QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNCO1FBQ3ZDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBUTtRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFTO0lBRzdCLENBQUM7SUFFTSxHQUFHLENBQUMsS0FBYTtRQUN0QixPQUFPLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7QUFYSCxnQ0FZQzs7O0FBRUQsK0NBQStDO0FBQy9DLE1BQWEsYUFBYyxTQUFRLFVBQVU7SUFDM0MsWUFDWSxpQkFBdUMsRUFDdkMsa0JBQTBCO1FBRXBDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBSG5DLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFDdkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFRO0lBR3RDLENBQUM7SUFFTSxHQUFHLENBQUMsR0FBVztRQUNwQixPQUFPLGNBQUssQ0FBQyxNQUFNLENBQ2pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FDOUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLElBQUksR0FBRyxHQUFHLENBQ3JDLENBQ0YsQ0FBQztJQUNKLENBQUM7O0FBZEgsc0NBZUM7OztBQUVELCtDQUErQztBQUMvQyxNQUFhLGFBQWMsU0FBUSxVQUFVO0lBQzNDLFlBQ1ksaUJBQXVDLEVBQ3ZDLGtCQUEwQjtRQUVwQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUhuQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNCO1FBQ3ZDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBUTtJQUd0QyxDQUFDO0lBRU0sR0FBRyxDQUFDLEdBQVc7UUFDcEIsT0FBTyxjQUFLLENBQUMsWUFBWSxDQUN2QixJQUFJLENBQUMsaUJBQWlCLENBQUMseUJBQXlCLENBQzlDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixJQUFJLEdBQUcsR0FBRyxDQUNyQyxDQUNGLENBQUM7SUFDSixDQUFDOztBQWRILHNDQWVDOzs7QUFFRCwrQ0FBK0M7QUFDL0MsTUFBYSxjQUFlLFNBQVEsVUFBVTtJQUM1QyxZQUNZLGlCQUF1QyxFQUN2QyxrQkFBMEI7UUFFcEMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFIbkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQUN2Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQVE7SUFHdEMsQ0FBQztJQUVNLEdBQUcsQ0FBQyxHQUFXO1FBQ3BCLDZCQUE2QjtRQUM3QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FDckQsR0FBRyxJQUFJLENBQUMsa0JBQWtCLElBQUksR0FBRyxHQUFHLENBQ3JDLENBQUM7SUFDSixDQUFDOztBQWJILHdDQWNDOzs7QUFFRCwrQ0FBK0M7QUFDL0MsTUFBYSxVQUFXLFNBQVEsVUFBVTtJQUN4QyxZQUNZLGlCQUF1QyxFQUN2QyxrQkFBMEI7UUFFcEMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFIbkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQUN2Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQVE7SUFHdEMsQ0FBQztJQUVNLEdBQUcsQ0FBQyxHQUFXO1FBQ3BCLDZCQUE2QjtRQUM3QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FDckQsR0FBRyxJQUFJLENBQUMsa0JBQWtCLElBQUksR0FBRyxHQUFHLENBQ3JDLENBQUM7SUFDSixDQUFDOztBQWJILGdDQWNDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IElSZXNvbHZhYmxlLCBUb2tlbiwgSVJlc29sdmVDb250ZXh0IH0gZnJvbSBcIi4vdG9rZW5zXCI7XG5pbXBvcnQge1xuICBJSW50ZXJwb2xhdGluZ1BhcmVudCxcbiAgSVRlcnJhZm9ybUFkZHJlc3NhYmxlLFxufSBmcm9tIFwiLi90ZXJyYWZvcm0tYWRkcmVzc2FibGVcIjtcbmltcG9ydCB7XG4gIHByb3BlcnR5QWNjZXNzLFxuICBGbixcbiAgVGVycmFmb3JtSXRlcmF0b3IsXG4gIER5bmFtaWNMaXN0VGVycmFmb3JtSXRlcmF0b3IsXG59IGZyb20gXCIuXCI7XG5pbXBvcnQgeyBjYXB0dXJlQ3JlYXRpb25TdGFjayB9IGZyb20gXCIuL3Rva2Vucy9wcml2YXRlL3N0YWNrLXRyYWNlXCI7XG5pbXBvcnQgeyBwcm92aWRlclZlcnNpb25NaXNtYXRjaCB9IGZyb20gXCIuL2Vycm9yc1wiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuYWJzdHJhY3QgY2xhc3MgQ29tcGxleFJlc29sdmFibGUgaW1wbGVtZW50cyBJUmVzb2x2YWJsZSwgSVRlcnJhZm9ybUFkZHJlc3NhYmxlIHtcbiAgcHVibGljIHJlYWRvbmx5IGNyZWF0aW9uU3RhY2s6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBfZnFuPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1SZXNvdXJjZTogSUludGVycG9sYXRpbmdQYXJlbnQsXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nLFxuICApIHtcbiAgICB0aGlzLmNyZWF0aW9uU3RhY2sgPSBjYXB0dXJlQ3JlYXRpb25TdGFjaygpO1xuICB9XG5cbiAgYWJzdHJhY3QgY29tcHV0ZUZxbigpOiBzdHJpbmc7XG5cbiAgZ2V0IGZxbigpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fZnFuKSB7XG4gICAgICB0aGlzLl9mcW4gPSB0aGlzLmNvbXB1dGVGcW4oKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fZnFuO1xuICB9XG5cbiAgcmVzb2x2ZShfY29udGV4dDogSVJlc29sdmVDb250ZXh0KTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5mcW47XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBUb2tlbi5hc1N0cmluZyh0aGlzKTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuYWJzdHJhY3QgY2xhc3MgQ29tcGxleENvbXB1dGVkQXR0cmlidXRlXG4gIGV4dGVuZHMgQ29tcGxleFJlc29sdmFibGVcbiAgaW1wbGVtZW50cyBJSW50ZXJwb2xhdGluZ1BhcmVudFxue1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtUmVzb3VyY2U6IElJbnRlcnBvbGF0aW5nUGFyZW50LFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIodGVycmFmb3JtUmVzb3VyY2UsIHRlcnJhZm9ybUF0dHJpYnV0ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3RyaW5nQXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFRva2VuLmFzU3RyaW5nKHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXROdW1iZXJBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNOdW1iZXIodGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZSkpO1xuICB9XG5cbiAgcHVibGljIGdldExpc3RBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNMaXN0KHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRCb29sZWFuQXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nKTogSVJlc29sdmFibGUge1xuICAgIHJldHVybiB0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXROdW1iZXJMaXN0QXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFRva2VuLmFzTnVtYmVyTGlzdChcbiAgICAgIHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0ZXJyYWZvcm1BdHRyaWJ1dGUpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3RyaW5nTWFwQXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFRva2VuLmFzU3RyaW5nTWFwKFxuICAgICAgdGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXROdW1iZXJNYXBBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNOdW1iZXJNYXAoXG4gICAgICB0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldEJvb2xlYW5NYXBBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNCb29sZWFuTWFwKFxuICAgICAgdGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBbnlNYXBBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNBbnlNYXAodGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKHRlcnJhZm9ybUF0dHJpYnV0ZSkpO1xuICB9XG5cbiAgcHVibGljIGFic3RyYWN0IGludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUodGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpOiBhbnk7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgY2xhc3MgU3RyaW5nTWFwXG4gIGV4dGVuZHMgQ29tcGxleFJlc29sdmFibGVcbiAgaW1wbGVtZW50cyBJVGVycmFmb3JtQWRkcmVzc2FibGVcbntcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybVJlc291cmNlOiBJSW50ZXJwb2xhdGluZ1BhcmVudCxcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcsXG4gICkge1xuICAgIHN1cGVyKHRlcnJhZm9ybVJlc291cmNlLCB0ZXJyYWZvcm1BdHRyaWJ1dGUpO1xuICB9XG5cbiAgcHVibGljIGxvb2t1cChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFRva2VuLmFzU3RyaW5nKFxuICAgICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKFxuICAgICAgICBgJHt0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZX1bXCIke2tleX1cIl1gLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgY29tcHV0ZUZxbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBUb2tlbi5hc1N0cmluZyhcbiAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZSksXG4gICAgKTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGNsYXNzIE51bWJlck1hcFxuICBleHRlbmRzIENvbXBsZXhSZXNvbHZhYmxlXG4gIGltcGxlbWVudHMgSVRlcnJhZm9ybUFkZHJlc3NhYmxlXG57XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1SZXNvdXJjZTogSUludGVycG9sYXRpbmdQYXJlbnQsXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nLFxuICApIHtcbiAgICBzdXBlcih0ZXJyYWZvcm1SZXNvdXJjZSwgdGVycmFmb3JtQXR0cmlidXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBsb29rdXAoa2V5OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiBUb2tlbi5hc051bWJlcihcbiAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZShcbiAgICAgICAgYCR7dGhpcy50ZXJyYWZvcm1BdHRyaWJ1dGV9W1wiJHtrZXl9XCJdYCxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIGNvbXB1dGVGcW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVG9rZW4uYXNTdHJpbmcoXG4gICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUodGhpcy50ZXJyYWZvcm1BdHRyaWJ1dGUpLFxuICAgICk7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBjbGFzcyBCb29sZWFuTWFwXG4gIGV4dGVuZHMgQ29tcGxleFJlc29sdmFibGVcbiAgaW1wbGVtZW50cyBJVGVycmFmb3JtQWRkcmVzc2FibGVcbntcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybVJlc291cmNlOiBJSW50ZXJwb2xhdGluZ1BhcmVudCxcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcsXG4gICkge1xuICAgIHN1cGVyKHRlcnJhZm9ybVJlc291cmNlLCB0ZXJyYWZvcm1BdHRyaWJ1dGUpO1xuICB9XG5cbiAgcHVibGljIGxvb2t1cChrZXk6IHN0cmluZyk6IElSZXNvbHZhYmxlIHtcbiAgICByZXR1cm4gdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKFxuICAgICAgYCR7dGhpcy50ZXJyYWZvcm1BdHRyaWJ1dGV9W1wiJHtrZXl9XCJdYCxcbiAgICApO1xuICB9XG5cbiAgY29tcHV0ZUZxbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBUb2tlbi5hc1N0cmluZyhcbiAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZSksXG4gICAgKTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGNsYXNzIEFueU1hcCBleHRlbmRzIENvbXBsZXhSZXNvbHZhYmxlIGltcGxlbWVudHMgSVRlcnJhZm9ybUFkZHJlc3NhYmxlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybVJlc291cmNlOiBJSW50ZXJwb2xhdGluZ1BhcmVudCxcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcsXG4gICkge1xuICAgIHN1cGVyKHRlcnJhZm9ybVJlc291cmNlLCB0ZXJyYWZvcm1BdHRyaWJ1dGUpO1xuICB9XG5cbiAgcHVibGljIGxvb2t1cChrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIFRva2VuLmFzQW55KFxuICAgICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKFxuICAgICAgICBgJHt0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZX1bXCIke2tleX1cIl1gLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgY29tcHV0ZUZxbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBUb2tlbi5hc1N0cmluZyhcbiAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZSksXG4gICAgKTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGNsYXNzIFN0cmluZ01hcE1hcFxuICBleHRlbmRzIENvbXBsZXhSZXNvbHZhYmxlXG4gIGltcGxlbWVudHMgSVRlcnJhZm9ybUFkZHJlc3NhYmxlXG57XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1SZXNvdXJjZTogSUludGVycG9sYXRpbmdQYXJlbnQsXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nLFxuICApIHtcbiAgICBzdXBlcih0ZXJyYWZvcm1SZXNvdXJjZSwgdGVycmFmb3JtQXR0cmlidXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBsb29rdXAoa2V5OiBzdHJpbmcpOiBTdHJpbmdNYXAge1xuICAgIHJldHVybiBuZXcgU3RyaW5nTWFwKFxuICAgICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZSxcbiAgICAgIGAke3RoaXMudGVycmFmb3JtQXR0cmlidXRlfVtcIiR7a2V5fVwiXWAsXG4gICAgKTtcbiAgfVxuXG4gIGNvbXB1dGVGcW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVG9rZW4uYXNTdHJpbmcoXG4gICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUodGhpcy50ZXJyYWZvcm1BdHRyaWJ1dGUpLFxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBHb2luZyB0byBiZSByZXBsYWNlZCBieSBBcnJheSBvZiBDb21wbGV4TGlzdEl0ZW1cbiAqIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZVxuICovXG5leHBvcnQgY2xhc3MgQ29tcGxleENvbXB1dGVkTGlzdCBleHRlbmRzIENvbXBsZXhDb21wdXRlZEF0dHJpYnV0ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1SZXNvdXJjZTogSUludGVycG9sYXRpbmdQYXJlbnQsXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCBjb21wbGV4Q29tcHV0ZWRMaXN0SW5kZXg6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgd3JhcHNTZXQ/OiBib29sZWFuLFxuICApIHtcbiAgICBzdXBlcih0ZXJyYWZvcm1SZXNvdXJjZSwgdGVycmFmb3JtQXR0cmlidXRlKTtcbiAgICB0aHJvdyBwcm92aWRlclZlcnNpb25NaXNtYXRjaCgpO1xuICB9XG5cbiAgcHVibGljIGludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUocHJvcGVydHk6IHN0cmluZykge1xuICAgIGlmICh0aGlzLndyYXBzU2V0KSB7XG4gICAgICByZXR1cm4gcHJvcGVydHlBY2Nlc3MoXG4gICAgICAgIEZuLnRvbGlzdChcbiAgICAgICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoXG4gICAgICAgICAgICB0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgICBbdGhpcy5jb21wbGV4Q29tcHV0ZWRMaXN0SW5kZXgsIHByb3BlcnR5XSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZShcbiAgICAgIGAke3RoaXMudGVycmFmb3JtQXR0cmlidXRlfVske3RoaXMuY29tcGxleENvbXB1dGVkTGlzdEluZGV4fV0uJHtwcm9wZXJ0eX1gLFxuICAgICk7XG4gIH1cblxuICBjb21wdXRlRnFuKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMud3JhcHNTZXQpIHtcbiAgICAgIHJldHVybiBUb2tlbi5hc1N0cmluZyhcbiAgICAgICAgcHJvcGVydHlBY2Nlc3MoXG4gICAgICAgICAgRm4udG9saXN0KFxuICAgICAgICAgICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKFxuICAgICAgICAgICAgICB0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgICBbdGhpcy5jb21wbGV4Q29tcHV0ZWRMaXN0SW5kZXhdLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gVG9rZW4uYXNTdHJpbmcoXG4gICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoXG4gICAgICAgIGAke3RoaXMudGVycmFmb3JtQXR0cmlidXRlfVske3RoaXMuY29tcGxleENvbXB1dGVkTGlzdEluZGV4fV1gLFxuICAgICAgKSxcbiAgICApO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29tcGxleExpc3RcbiAgZXh0ZW5kcyBDb21wbGV4UmVzb2x2YWJsZVxuICBpbXBsZW1lbnRzIElUZXJyYWZvcm1BZGRyZXNzYWJsZVxue1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtUmVzb3VyY2U6IElJbnRlcnBvbGF0aW5nUGFyZW50LFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgd3JhcHNTZXQ6IGJvb2xlYW4sXG4gICkge1xuICAgIHN1cGVyKHRlcnJhZm9ybVJlc291cmNlLCB0ZXJyYWZvcm1BdHRyaWJ1dGUpO1xuICB9XG5cbiAgY29tcHV0ZUZxbigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLndyYXBzU2V0KSB7XG4gICAgICByZXR1cm4gVG9rZW4uYXNTdHJpbmcoXG4gICAgICAgIEZuLnRvbGlzdChcbiAgICAgICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoXG4gICAgICAgICAgICB0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFRva2VuLmFzU3RyaW5nKFxuICAgICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoXG4gICAgICAgICAgdGhpcy50ZXJyYWZvcm1BdHRyaWJ1dGUsXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGluZyBhbiBpdGVyYXRvciBmb3IgdGhpcyBjb21wbGV4IGxpc3QuXG4gICAqIFRoZSBsaXN0IHdpbGwgYmUgY29udmVydGVkIGludG8gYSBtYXAgd2l0aCB0aGUgbWFwS2V5QXR0cmlidXRlTmFtZSBhcyB0aGUga2V5LlxuICAgKiBAcGFyYW0gbWFwS2V5QXR0cmlidXRlTmFtZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHVibGljIGFsbFdpdGhNYXBLZXkoXG4gICAgbWFwS2V5QXR0cmlidXRlTmFtZTogc3RyaW5nLFxuICApOiBEeW5hbWljTGlzdFRlcnJhZm9ybUl0ZXJhdG9yIHtcbiAgICByZXR1cm4gVGVycmFmb3JtSXRlcmF0b3IuZnJvbUNvbXBsZXhMaXN0KFxuICAgICAgVG9rZW4uYXNBbnkodGhpcy5jb21wdXRlRnFuKCkpLFxuICAgICAgbWFwS2V5QXR0cmlidXRlTmFtZSxcbiAgICApO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgY2xhc3MgQm9vbGVhbkxpc3QgZXh0ZW5kcyBDb21wbGV4TGlzdCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1SZXNvdXJjZTogSUludGVycG9sYXRpbmdQYXJlbnQsXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCB3cmFwc1NldDogYm9vbGVhbixcbiAgKSB7XG4gICAgc3VwZXIodGVycmFmb3JtUmVzb3VyY2UsIHRlcnJhZm9ybUF0dHJpYnV0ZSwgd3JhcHNTZXQpO1xuICB9XG5cbiAgcHVibGljIGdldChpbmRleDogbnVtYmVyKTogSVJlc29sdmFibGUge1xuICAgIHJldHVybiBGbi5lbGVtZW50KHRoaXMsIGluZGV4KTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGNsYXNzIFN0cmluZ0xpc3RMaXN0IGV4dGVuZHMgQ29tcGxleExpc3Qge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtUmVzb3VyY2U6IElJbnRlcnBvbGF0aW5nUGFyZW50LFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgd3JhcHNTZXQ6IGJvb2xlYW4sXG4gICkge1xuICAgIHN1cGVyKHRlcnJhZm9ybVJlc291cmNlLCB0ZXJyYWZvcm1BdHRyaWJ1dGUsIHdyYXBzU2V0KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiBUb2tlbi5hc0xpc3QoXG4gICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoXG4gICAgICAgIGAke3RoaXMudGVycmFmb3JtQXR0cmlidXRlfVske2luZGV4fV1gLFxuICAgICAgKSxcbiAgICApO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgY2xhc3MgTnVtYmVyTGlzdExpc3QgZXh0ZW5kcyBDb21wbGV4TGlzdCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1SZXNvdXJjZTogSUludGVycG9sYXRpbmdQYXJlbnQsXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCB3cmFwc1NldDogYm9vbGVhbixcbiAgKSB7XG4gICAgc3VwZXIodGVycmFmb3JtUmVzb3VyY2UsIHRlcnJhZm9ybUF0dHJpYnV0ZSwgd3JhcHNTZXQpO1xuICB9XG5cbiAgcHVibGljIGdldChpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIFRva2VuLmFzTnVtYmVyTGlzdChcbiAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZShcbiAgICAgICAgYCR7dGhpcy50ZXJyYWZvcm1BdHRyaWJ1dGV9WyR7aW5kZXh9XWAsXG4gICAgICApLFxuICAgICk7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBjbGFzcyBCb29sZWFuTGlzdExpc3QgZXh0ZW5kcyBDb21wbGV4TGlzdCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1SZXNvdXJjZTogSUludGVycG9sYXRpbmdQYXJlbnQsXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCB3cmFwc1NldDogYm9vbGVhbixcbiAgKSB7XG4gICAgc3VwZXIodGVycmFmb3JtUmVzb3VyY2UsIHRlcnJhZm9ybUF0dHJpYnV0ZSwgd3JhcHNTZXQpO1xuICB9XG5cbiAgcHVibGljIGdldChpbmRleDogbnVtYmVyKSB7XG4gICAgLy8gVGhpcyBpc24ndCBmdWxseSBzdXBwb3J0ZWRcbiAgICByZXR1cm4gdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKFxuICAgICAgYCR7dGhpcy50ZXJyYWZvcm1BdHRyaWJ1dGV9WyR7aW5kZXh9XWAsXG4gICAgKTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGNsYXNzIEFueUxpc3RMaXN0IGV4dGVuZHMgQ29tcGxleExpc3Qge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtUmVzb3VyY2U6IElJbnRlcnBvbGF0aW5nUGFyZW50LFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgd3JhcHNTZXQ6IGJvb2xlYW4sXG4gICkge1xuICAgIHN1cGVyKHRlcnJhZm9ybVJlc291cmNlLCB0ZXJyYWZvcm1BdHRyaWJ1dGUsIHdyYXBzU2V0KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQoaW5kZXg6IG51bWJlcikge1xuICAgIC8vIFRoaXMgaXNuJ3QgZnVsbHkgc3VwcG9ydGVkXG4gICAgcmV0dXJuIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZShcbiAgICAgIGAke3RoaXMudGVycmFmb3JtQXR0cmlidXRlfVske2luZGV4fV1gLFxuICAgICk7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb21wbGV4TWFwXG4gIGV4dGVuZHMgQ29tcGxleFJlc29sdmFibGVcbiAgaW1wbGVtZW50cyBJVGVycmFmb3JtQWRkcmVzc2FibGVcbntcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybVJlc291cmNlOiBJSW50ZXJwb2xhdGluZ1BhcmVudCxcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcsXG4gICkge1xuICAgIHN1cGVyKHRlcnJhZm9ybVJlc291cmNlLCB0ZXJyYWZvcm1BdHRyaWJ1dGUpO1xuICB9XG5cbiAgY29tcHV0ZUZxbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBUb2tlbi5hc1N0cmluZyhcbiAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZSksXG4gICAgKTtcbiAgfVxuXG4gIGludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUocHJvcGVydHk6IHN0cmluZykge1xuICAgIHJldHVybiBwcm9wZXJ0eUFjY2VzcyhcbiAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSh0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZSksXG4gICAgICBbcHJvcGVydHldLFxuICAgICk7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBjbGFzcyBDb21wbGV4T2JqZWN0IGV4dGVuZHMgQ29tcGxleENvbXB1dGVkQXR0cmlidXRlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB0ZXJyYWZvcm1SZXNvdXJjZVxuICAgKiBAcGFyYW0gdGVycmFmb3JtQXR0cmlidXRlXG4gICAqIEBwYXJhbSBjb21wbGV4T2JqZWN0SW5kZXggdGhlIGluZGV4IG9mIHRoZSBjb21wbGV4IG9iamVjdCBpbiBhIGxpc3RcbiAgICogQHBhcmFtIGNvbXBsZXhPYmplY3RJc0Zyb21TZXQgc2V0IHRvIHRydWUgaWYgdGhpcyBpdGVtIGlzIGZyb20gaW5zaWRlIGEgc2V0IGFuZCBuZWVkcyB0b2xpc3QoKSBmb3IgYWNjZXNzaW5nIGl0XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldCB0byBcIjBcIiBmb3Igc2luZ2xlIGxpc3QgaXRlbXNcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1SZXNvdXJjZTogSUludGVycG9sYXRpbmdQYXJlbnQsXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCBjb21wbGV4T2JqZWN0SXNGcm9tU2V0OiBib29sZWFuLFxuICAgIHByb3RlY3RlZCBjb21wbGV4T2JqZWN0SW5kZXg/OiBudW1iZXIgfCBzdHJpbmcsXG4gICkge1xuICAgIHN1cGVyKHRlcnJhZm9ybVJlc291cmNlLCB0ZXJyYWZvcm1BdHRyaWJ1dGUpO1xuICB9XG5cbiAgcHVibGljIGludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUocHJvcGVydHk6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmNvbXBsZXhPYmplY3RJc0Zyb21TZXQpIHtcbiAgICAgIHJldHVybiBwcm9wZXJ0eUFjY2VzcyhcbiAgICAgICAgRm4udG9saXN0KFxuICAgICAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZShcbiAgICAgICAgICAgIHRoaXMudGVycmFmb3JtQXR0cmlidXRlLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICAgIFt0aGlzLmNvbXBsZXhPYmplY3RJbmRleCwgcHJvcGVydHldLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKFxuICAgICAgdGhpcy5jb21wbGV4T2JqZWN0SW5kZXggIT09IHVuZGVmaW5lZFxuICAgICAgICA/IGAke3RoaXMudGVycmFmb3JtQXR0cmlidXRlfVske3RoaXMuY29tcGxleE9iamVjdEluZGV4fV0uJHtwcm9wZXJ0eX1gXG4gICAgICAgIDogYCR7dGhpcy50ZXJyYWZvcm1BdHRyaWJ1dGV9LiR7cHJvcGVydHl9YCxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGludGVycG9sYXRpb25Bc0xpc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZShcbiAgICAgIGAke3RoaXMudGVycmFmb3JtQXR0cmlidXRlfS4qYCxcbiAgICApO1xuICB9XG5cbiAgY29tcHV0ZUZxbigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmNvbXBsZXhPYmplY3RJc0Zyb21TZXQpIHtcbiAgICAgIHJldHVybiBUb2tlbi5hc1N0cmluZyhcbiAgICAgICAgcHJvcGVydHlBY2Nlc3MoXG4gICAgICAgICAgRm4udG9saXN0KFxuICAgICAgICAgICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKFxuICAgICAgICAgICAgICB0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgICBbdGhpcy5jb21wbGV4T2JqZWN0SW5kZXhdLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gVG9rZW4uYXNTdHJpbmcoXG4gICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoXG4gICAgICAgIHRoaXMuY29tcGxleE9iamVjdEluZGV4ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IGAke3RoaXMudGVycmFmb3JtQXR0cmlidXRlfVske3RoaXMuY29tcGxleE9iamVjdEluZGV4fV1gXG4gICAgICAgICAgOiB0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1hcExpc3RcbiAgZXh0ZW5kcyBDb21wbGV4UmVzb2x2YWJsZVxuICBpbXBsZW1lbnRzIElUZXJyYWZvcm1BZGRyZXNzYWJsZSwgSUludGVycG9sYXRpbmdQYXJlbnRcbntcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybVJlc291cmNlOiBJSW50ZXJwb2xhdGluZ1BhcmVudCxcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIHdyYXBzU2V0OiBib29sZWFuLFxuICApIHtcbiAgICBzdXBlcih0ZXJyYWZvcm1SZXNvdXJjZSwgdGVycmFmb3JtQXR0cmlidXRlKTtcbiAgfVxuXG4gIGNvbXB1dGVGcW4oKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy53cmFwc1NldCkge1xuICAgICAgcmV0dXJuIFRva2VuLmFzU3RyaW5nKFxuICAgICAgICBGbi50b2xpc3QoXG4gICAgICAgICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKFxuICAgICAgICAgICAgdGhpcy50ZXJyYWZvcm1BdHRyaWJ1dGUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBUb2tlbi5hc1N0cmluZyhcbiAgICAgICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKFxuICAgICAgICAgIHRoaXMudGVycmFmb3JtQXR0cmlidXRlLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKHByb3BlcnR5OiBzdHJpbmcpOiBJUmVzb2x2YWJsZSB7XG4gICAgaWYgKHRoaXMud3JhcHNTZXQpIHtcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBwcm9wZXJ0eS5tYXRjaCgvXFxbKFteXFxdXSopXFxdLyk7IC8vIG5lZWQgdG8gZXh0cmFjdCBvdXQgdGhlIGluZGV4XG4gICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICByZXR1cm4gcHJvcGVydHlBY2Nlc3MoXG4gICAgICAgICAgRm4udG9saXN0KFxuICAgICAgICAgICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKFxuICAgICAgICAgICAgICB0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgICBbbWF0Y2hlc1sxXSwgcHJvcGVydHldLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoXG4gICAgICBgJHt0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZX0ke3Byb3BlcnR5fWAsXG4gICAgKTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGNsYXNzIFN0cmluZ01hcExpc3QgZXh0ZW5kcyBNYXBMaXN0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybVJlc291cmNlOiBJSW50ZXJwb2xhdGluZ1BhcmVudCxcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIHdyYXBzU2V0OiBib29sZWFuLFxuICApIHtcbiAgICBzdXBlcih0ZXJyYWZvcm1SZXNvdXJjZSwgdGVycmFmb3JtQXR0cmlidXRlLCB3cmFwc1NldCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0KGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gbmV3IFN0cmluZ01hcCh0aGlzLCBgWyR7aW5kZXh9XWApO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgY2xhc3MgTnVtYmVyTWFwTGlzdCBleHRlbmRzIE1hcExpc3Qge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtUmVzb3VyY2U6IElJbnRlcnBvbGF0aW5nUGFyZW50LFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgd3JhcHNTZXQ6IGJvb2xlYW4sXG4gICkge1xuICAgIHN1cGVyKHRlcnJhZm9ybVJlc291cmNlLCB0ZXJyYWZvcm1BdHRyaWJ1dGUsIHdyYXBzU2V0KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiBuZXcgTnVtYmVyTWFwKHRoaXMsIGBbJHtpbmRleH1dYCk7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBjbGFzcyBCb29sZWFuTWFwTGlzdCBleHRlbmRzIE1hcExpc3Qge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtUmVzb3VyY2U6IElJbnRlcnBvbGF0aW5nUGFyZW50LFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgd3JhcHNTZXQ6IGJvb2xlYW4sXG4gICkge1xuICAgIHN1cGVyKHRlcnJhZm9ybVJlc291cmNlLCB0ZXJyYWZvcm1BdHRyaWJ1dGUsIHdyYXBzU2V0KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiBuZXcgQm9vbGVhbk1hcCh0aGlzLCBgWyR7aW5kZXh9XWApO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgY2xhc3MgQW55TWFwTGlzdCBleHRlbmRzIE1hcExpc3Qge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtUmVzb3VyY2U6IElJbnRlcnBvbGF0aW5nUGFyZW50LFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgd3JhcHNTZXQ6IGJvb2xlYW4sXG4gICkge1xuICAgIHN1cGVyKHRlcnJhZm9ybVJlc291cmNlLCB0ZXJyYWZvcm1BdHRyaWJ1dGUsIHdyYXBzU2V0KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiBuZXcgQW55TWFwKHRoaXMsIGBbJHtpbmRleH1dYCk7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBjbGFzcyBTdHJpbmdMaXN0TWFwIGV4dGVuZHMgQ29tcGxleE1hcCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1SZXNvdXJjZTogSUludGVycG9sYXRpbmdQYXJlbnQsXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nLFxuICApIHtcbiAgICBzdXBlcih0ZXJyYWZvcm1SZXNvdXJjZSwgdGVycmFmb3JtQXR0cmlidXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQoa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNMaXN0KFxuICAgICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKFxuICAgICAgICBgJHt0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZX1bJHtrZXl9XWAsXG4gICAgICApLFxuICAgICk7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBjbGFzcyBOdW1iZXJMaXN0TWFwIGV4dGVuZHMgQ29tcGxleE1hcCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1SZXNvdXJjZTogSUludGVycG9sYXRpbmdQYXJlbnQsXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nLFxuICApIHtcbiAgICBzdXBlcih0ZXJyYWZvcm1SZXNvdXJjZSwgdGVycmFmb3JtQXR0cmlidXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQoa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNOdW1iZXJMaXN0KFxuICAgICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKFxuICAgICAgICBgJHt0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZX1bJHtrZXl9XWAsXG4gICAgICApLFxuICAgICk7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBjbGFzcyBCb29sZWFuTGlzdE1hcCBleHRlbmRzIENvbXBsZXhNYXAge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdGVycmFmb3JtUmVzb3VyY2U6IElJbnRlcnBvbGF0aW5nUGFyZW50LFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIodGVycmFmb3JtUmVzb3VyY2UsIHRlcnJhZm9ybUF0dHJpYnV0ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0KGtleTogc3RyaW5nKSB7XG4gICAgLy8gVGhpcyBpc24ndCBmdWxseSBzdXBwb3J0ZWRcbiAgICByZXR1cm4gdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKFxuICAgICAgYCR7dGhpcy50ZXJyYWZvcm1BdHRyaWJ1dGV9WyR7a2V5fV1gLFxuICAgICk7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBjbGFzcyBBbnlMaXN0TWFwIGV4dGVuZHMgQ29tcGxleE1hcCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0ZXJyYWZvcm1SZXNvdXJjZTogSUludGVycG9sYXRpbmdQYXJlbnQsXG4gICAgcHJvdGVjdGVkIHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nLFxuICApIHtcbiAgICBzdXBlcih0ZXJyYWZvcm1SZXNvdXJjZSwgdGVycmFmb3JtQXR0cmlidXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQoa2V5OiBzdHJpbmcpIHtcbiAgICAvLyBUaGlzIGlzbid0IGZ1bGx5IHN1cHBvcnRlZFxuICAgIHJldHVybiB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoXG4gICAgICBgJHt0aGlzLnRlcnJhZm9ybUF0dHJpYnV0ZX1bJHtrZXl9XWAsXG4gICAgKTtcbiAgfVxufVxuIl19
package/lib/errors.d.ts CHANGED
@@ -61,8 +61,7 @@ export declare const cannotConcatenateStringsInTokenizedMap: (tokenizedMap: any)
61
61
  export declare const doesNotImplementDependableTrait: (instance: IDependable) => Error;
62
62
  export declare const canOnlyEncodePositiveIntegers: () => Error;
63
63
  export declare const indexTooLargeToEncode: (index: number) => Error;
64
- export declare const argToIntrinsicMustBePlainValue: (value: any, creationStack: string[]) => Error;
65
- export declare const intrinsicNewError: (message: string, createdAt: string) => Error;
64
+ export declare const argToIntrinsicMustBePlainValue: (value: any, creationStack: string[] | undefined) => Error;
66
65
  export declare const unableToResolveCircularReference: (pathName: string) => Error;
67
66
  export declare const cannotResolveFunction: (pathName: string, obj: any) => Error;
68
67
  export declare const encodedListTokenInScalarStringContext: () => Error;