tnp 16.100.20 → 16.100.22

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 (304) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/bin/start.js +217 -217
  3. package/bin/t +5 -5
  4. package/bin/t-debug +5 -5
  5. package/bin/t-debug-brk +4 -4
  6. package/bin/tnp +5 -5
  7. package/bin/tnp-debug +5 -5
  8. package/bin/tnp-debug-brk +4 -4
  9. package/browser/README.md +24 -24
  10. package/browser/esm2022/lib/build-options.mjs +3 -4
  11. package/browser/esm2022/lib/constants.mjs +23 -7
  12. package/browser/esm2022/lib/helpers.mjs +1 -1
  13. package/browser/esm2022/lib/index.mjs +1 -1
  14. package/browser/esm2022/lib/models.mjs +23 -11
  15. package/browser/esm2022/lib/project/abstract/project.mjs +1632 -397
  16. package/browser/esm2022/lib/project/features/basename-manager.mjs +4 -2
  17. package/browser/esm2022/lib/project/features/environment-config/environment-config.mjs +18 -4
  18. package/browser/fesm2022/tnp.mjs +1648 -402
  19. package/browser/fesm2022/tnp.mjs.map +1 -1
  20. package/browser/lib/build-options.d.ts +7 -7
  21. package/browser/lib/constants.d.ts +2 -1
  22. package/browser/lib/models.d.ts +7 -8
  23. package/browser/lib/project/abstract/project.d.ts +24 -8
  24. package/browser/lib/project/features/basename-manager.d.ts +4 -4
  25. package/browser/lib/project/features/environment-config/environment-config.d.ts +5 -3
  26. package/cli.js +318985 -108346
  27. package/client/README.md +24 -24
  28. package/client/esm2022/lib/build-options.mjs +3 -4
  29. package/client/esm2022/lib/constants.mjs +23 -7
  30. package/client/esm2022/lib/helpers.mjs +1 -1
  31. package/client/esm2022/lib/index.mjs +1 -1
  32. package/client/esm2022/lib/models.mjs +23 -11
  33. package/client/esm2022/lib/project/abstract/project.mjs +1632 -397
  34. package/client/esm2022/lib/project/features/basename-manager.mjs +4 -2
  35. package/client/esm2022/lib/project/features/environment-config/environment-config.mjs +18 -4
  36. package/client/fesm2022/tnp.mjs +1648 -402
  37. package/client/fesm2022/tnp.mjs.map +1 -1
  38. package/client/lib/build-options.d.ts +7 -7
  39. package/client/lib/constants.d.ts +2 -1
  40. package/client/lib/models.d.ts +7 -8
  41. package/client/lib/project/abstract/project.d.ts +24 -8
  42. package/client/lib/project/features/basename-manager.d.ts +4 -4
  43. package/client/lib/project/features/environment-config/environment-config.d.ts +5 -3
  44. package/client/package.json +73 -64
  45. package/firedev.jsonc +604 -589
  46. package/fsevents.node +0 -0
  47. package/global-typings.js.map +1 -1
  48. package/lib/build-options.d.ts +7 -7
  49. package/lib/build-options.js +2 -3
  50. package/lib/build-options.js.map +1 -1
  51. package/lib/constants.d.ts +2 -1
  52. package/lib/constants.js +21 -8
  53. package/lib/constants.js.map +1 -1
  54. package/lib/models.d.ts +8 -9
  55. package/lib/models.js +21 -9
  56. package/lib/models.js.map +1 -1
  57. package/lib/project/abstract/base-compiler-for-project.backend.js +6 -2
  58. package/lib/project/abstract/base-compiler-for-project.backend.js.map +1 -1
  59. package/lib/project/abstract/project.d.ts +107 -12
  60. package/lib/project/abstract/project.js +1098 -463
  61. package/lib/project/abstract/project.js.map +1 -1
  62. package/lib/project/cli/cli-BRANDING.backend.d.ts +2 -2
  63. package/lib/project/cli/cli-BRANDING.backend.js.map +1 -1
  64. package/lib/project/cli/cli-BUILD.backend.js +39 -2
  65. package/lib/project/cli/cli-BUILD.backend.js.map +1 -1
  66. package/lib/project/cli/cli-CI-BUILD.backend.js +1 -1
  67. package/lib/project/cli/cli-CI-BUILD.backend.js.map +1 -1
  68. package/lib/project/cli/cli-ELECTRON.backend.js.map +1 -1
  69. package/lib/project/cli/cli-INIT.backend.d.ts +4 -3
  70. package/lib/project/cli/cli-INIT.backend.js +29 -6
  71. package/lib/project/cli/cli-INIT.backend.js.map +1 -1
  72. package/lib/project/cli/cli-NEW.backend.d.ts +4 -4
  73. package/lib/project/cli/cli-NEW.backend.js +69 -38
  74. package/lib/project/cli/cli-NEW.backend.js.map +1 -1
  75. package/lib/project/cli/cli-OPEN.backend.d.ts +2 -2
  76. package/lib/project/cli/cli-OPEN.backend.js +18 -11
  77. package/lib/project/cli/cli-OPEN.backend.js.map +1 -1
  78. package/lib/project/cli/cli-RELEASE.backend.js +15 -14
  79. package/lib/project/cli/cli-RELEASE.backend.js.map +1 -1
  80. package/lib/project/cli/cli-SERVICE.backend.js.map +1 -1
  81. package/lib/project/cli/cli-START.backend.js.map +1 -1
  82. package/lib/project/cli/cli-TEST.backend.d.ts +2 -2
  83. package/lib/project/cli/cli-TEST.backend.js +19 -10
  84. package/lib/project/cli/cli-TEST.backend.js.map +1 -1
  85. package/lib/project/cli/cli-TS.backend.d.ts +9 -0
  86. package/lib/project/cli/cli-TS.backend.js +29 -0
  87. package/lib/project/cli/cli-TS.backend.js.map +1 -0
  88. package/lib/project/cli/cli-UPDATE.backend.js.map +1 -1
  89. package/lib/project/cli/cli-VSCODE.backend.d.ts +2 -2
  90. package/lib/project/cli/cli-VSCODE.backend.js +65 -65
  91. package/lib/project/cli/cli-VSCODE.backend.js.map +1 -1
  92. package/lib/project/cli/cli-_GLOBAL_.backend.js +151 -65
  93. package/lib/project/cli/cli-_GLOBAL_.backend.js.map +1 -1
  94. package/lib/project/cli/index.js +2 -0
  95. package/lib/project/cli/index.js.map +1 -1
  96. package/lib/project/compilers/assets-list-file-generator/assets-list-file-generator.backend.js +14 -9
  97. package/lib/project/compilers/assets-list-file-generator/assets-list-file-generator.backend.js.map +1 -1
  98. package/lib/project/compilers/build-isomorphic-lib/code-cut/browser-code-cut.backend.d.ts +7 -8
  99. package/lib/project/compilers/build-isomorphic-lib/code-cut/browser-code-cut.backend.js +163 -136
  100. package/lib/project/compilers/build-isomorphic-lib/code-cut/browser-code-cut.backend.js.map +1 -1
  101. package/lib/project/compilers/build-isomorphic-lib/code-cut/code-cut.backend.d.ts +3 -3
  102. package/lib/project/compilers/build-isomorphic-lib/code-cut/code-cut.backend.js +5 -5
  103. package/lib/project/compilers/build-isomorphic-lib/code-cut/code-cut.backend.js.map +1 -1
  104. package/lib/project/compilers/build-isomorphic-lib/code-cut/code-split-process.enum.d.ts +44 -0
  105. package/lib/project/compilers/build-isomorphic-lib/code-cut/code-split-process.enum.js +98 -0
  106. package/lib/project/compilers/build-isomorphic-lib/code-cut/code-split-process.enum.js.map +1 -0
  107. package/lib/project/compilers/build-isomorphic-lib/code-cut/cut-fn.backend.js.map +1 -1
  108. package/lib/project/compilers/build-isomorphic-lib/code-cut/file-split-process.d.ts +11 -0
  109. package/lib/project/compilers/build-isomorphic-lib/code-cut/file-split-process.js +158 -0
  110. package/lib/project/compilers/build-isomorphic-lib/code-cut/file-split-process.js.map +1 -0
  111. package/lib/project/compilers/build-isomorphic-lib/compilations/compilation-backend.backend.d.ts +5 -5
  112. package/lib/project/compilers/build-isomorphic-lib/compilations/compilation-backend.backend.js +17 -11
  113. package/lib/project/compilers/build-isomorphic-lib/compilations/compilation-backend.backend.js.map +1 -1
  114. package/lib/project/compilers/build-isomorphic-lib/compilations/compilation-browser.backend.js +7 -4
  115. package/lib/project/compilers/build-isomorphic-lib/compilations/compilation-browser.backend.js.map +1 -1
  116. package/lib/project/compilers/build-isomorphic-lib/compilations/incremental-build-process.backend.js +12 -11
  117. package/lib/project/compilers/build-isomorphic-lib/compilations/incremental-build-process.backend.js.map +1 -1
  118. package/lib/project/features/assets-manager.backend.d.ts +2 -2
  119. package/lib/project/features/assets-manager.backend.js +65 -10
  120. package/lib/project/features/assets-manager.backend.js.map +1 -1
  121. package/lib/project/features/basename-manager.d.ts +4 -4
  122. package/lib/project/features/basename-manager.js.map +1 -1
  123. package/lib/project/features/branding.backend.js +25 -17
  124. package/lib/project/features/branding.backend.js.map +1 -1
  125. package/lib/project/features/build-process/app/build-process/backend/build-process-backend.js +3 -1
  126. package/lib/project/features/build-process/app/build-process/backend/build-process-backend.js.map +1 -1
  127. package/lib/project/features/build-process/app/build-process/backend/build-process-subscriber.js.map +1 -1
  128. package/lib/project/features/build-process/app/build-process/build-process.constants.js +1 -1
  129. package/lib/project/features/build-process/app/build-process/build-process.constants.js.map +1 -1
  130. package/lib/project/features/build-process/app/build-process/build-process.controller.js.map +1 -1
  131. package/lib/project/features/build-process/app/build-process/build-process.helpers.js +1 -2
  132. package/lib/project/features/build-process/app/build-process/build-process.helpers.js.map +1 -1
  133. package/lib/project/features/build-process/app/build-process/build-process.js +7 -3
  134. package/lib/project/features/build-process/app/build-process/build-process.js.map +1 -1
  135. package/lib/project/features/build-process/app/build-process/build-process.models.d.ts +3 -3
  136. package/lib/project/features/build-process/app/build-process/build-process.models.js.map +1 -1
  137. package/lib/project/features/copy-manager/base-copy-manager.backend.d.ts +7 -8
  138. package/lib/project/features/copy-manager/base-copy-manager.backend.js +45 -95
  139. package/lib/project/features/copy-manager/base-copy-manager.backend.js.map +1 -1
  140. package/lib/project/features/copy-manager/copy-manager-helpers.backend.js +12 -7
  141. package/lib/project/features/copy-manager/copy-manager-helpers.backend.js.map +1 -1
  142. package/lib/project/features/copy-manager/copy-manager-organization-angular-files.backend.d.ts +18 -18
  143. package/lib/project/features/copy-manager/copy-manager-organization-angular-files.backend.js +53 -46
  144. package/lib/project/features/copy-manager/copy-manager-organization-angular-files.backend.js.map +1 -1
  145. package/lib/project/features/copy-manager/copy-manager-organization.backend.d.ts +10 -5
  146. package/lib/project/features/copy-manager/copy-manager-organization.backend.js +127 -71
  147. package/lib/project/features/copy-manager/copy-manager-organization.backend.js.map +1 -1
  148. package/lib/project/features/copy-manager/copy-manager-standalone.backend.d.ts +13 -14
  149. package/lib/project/features/copy-manager/copy-manager-standalone.backend.js +85 -79
  150. package/lib/project/features/copy-manager/copy-manager-standalone.backend.js.map +1 -1
  151. package/lib/project/features/copy-manager/copy-manager.backend.d.ts +3 -3
  152. package/lib/project/features/copy-manager/copy-manager.backend.js +4 -2
  153. package/lib/project/features/copy-manager/copy-manager.backend.js.map +1 -1
  154. package/lib/project/features/copy-manager/mjs-fesm-module-spliter.backend.d.ts +3 -3
  155. package/lib/project/features/copy-manager/mjs-fesm-module-spliter.backend.js +44 -35
  156. package/lib/project/features/copy-manager/mjs-fesm-module-spliter.backend.js.map +1 -1
  157. package/lib/project/features/copy-manager/source-maping-url.backend.d.ts +1 -1
  158. package/lib/project/features/copy-manager/source-maping-url.backend.js +12 -11
  159. package/lib/project/features/copy-manager/source-maping-url.backend.js.map +1 -1
  160. package/lib/project/features/copy-manager/typescript-dts-fixer.backend.js +3 -2
  161. package/lib/project/features/copy-manager/typescript-dts-fixer.backend.js.map +1 -1
  162. package/lib/project/features/docs-app-build-config.backend.js.map +1 -1
  163. package/lib/project/features/environment-config/environment-config-helpers.js +70 -41
  164. package/lib/project/features/environment-config/environment-config-helpers.js.map +1 -1
  165. package/lib/project/features/environment-config/environment-config.d.ts +2 -2
  166. package/lib/project/features/environment-config/environment-config.js +9 -4
  167. package/lib/project/features/environment-config/environment-config.js.map +1 -1
  168. package/lib/project/features/environment-config/example-environment-config.js +6 -6
  169. package/lib/project/features/environment-config/example-environment-config.js.map +1 -1
  170. package/lib/project/features/files-recreation/files-factory.backend.js +6 -6
  171. package/lib/project/features/files-recreation/files-factory.backend.js.map +1 -1
  172. package/lib/project/features/files-recreation/files-recreator.d.ts +8 -8
  173. package/lib/project/features/files-recreation/files-recreator.js +194 -162
  174. package/lib/project/features/files-recreation/files-recreator.js.map +1 -1
  175. package/lib/project/features/files-recreation/files-templates.js +9 -3
  176. package/lib/project/features/files-recreation/files-templates.js.map +1 -1
  177. package/lib/project/features/files-recreation/index.d.ts +0 -1
  178. package/lib/project/features/files-recreation/index.js +0 -1
  179. package/lib/project/features/files-recreation/index.js.map +1 -1
  180. package/lib/project/features/html-to-md.js +86 -54
  181. package/lib/project/features/html-to-md.js.map +1 -1
  182. package/lib/project/features/index.d.ts +0 -1
  183. package/lib/project/features/index.js +0 -1
  184. package/lib/project/features/index.js.map +1 -1
  185. package/lib/project/features/inside-structures/inside-struct.d.ts +4 -1
  186. package/lib/project/features/inside-structures/inside-struct.js +1 -2
  187. package/lib/project/features/inside-structures/inside-struct.js.map +1 -1
  188. package/lib/project/features/inside-structures/inside-structures.js +11 -7
  189. package/lib/project/features/inside-structures/inside-structures.js.map +1 -1
  190. package/lib/project/features/inside-structures/structs/base-inside-struct.d.ts +2 -2
  191. package/lib/project/features/inside-structures/structs/base-inside-struct.js.map +1 -1
  192. package/lib/project/features/inside-structures/structs/inside-struct-angular13-app.js +55 -31
  193. package/lib/project/features/inside-structures/structs/inside-struct-angular13-app.js.map +1 -1
  194. package/lib/project/features/inside-structures/structs/inside-struct-angular13-lib.js +32 -34
  195. package/lib/project/features/inside-structures/structs/inside-struct-angular13-lib.js.map +1 -1
  196. package/lib/project/features/inside-structures/structs/inside-struct-constants.js.map +1 -1
  197. package/lib/project/features/inside-structures/structs/inside-struct-helpers.js +16 -6
  198. package/lib/project/features/inside-structures/structs/inside-struct-helpers.js.map +1 -1
  199. package/lib/project/features/inside-structures/structs/loaders/image-loader.js.map +1 -1
  200. package/lib/project/features/inside-structures/structs/loaders/loader-ids-default.js.map +1 -1
  201. package/lib/project/features/inside-structures/structs/loaders/loader-ids-ellipsis.js.map +1 -1
  202. package/lib/project/features/inside-structures/structs/loaders/loader-ids-facebook.js.map +1 -1
  203. package/lib/project/features/inside-structures/structs/loaders/loader-ids-grid.js.map +1 -1
  204. package/lib/project/features/inside-structures/structs/loaders/loader-ids-heart.js.map +1 -1
  205. package/lib/project/features/inside-structures/structs/loaders/loader-ids-ripple.js.map +1 -1
  206. package/lib/project/features/inside-structures/structs/loaders/loaders.js.map +1 -1
  207. package/lib/project/features/lib-project/lib-project-base.backend.d.ts +3 -2
  208. package/lib/project/features/lib-project/lib-project-base.backend.js +27 -1
  209. package/lib/project/features/lib-project/lib-project-base.backend.js.map +1 -1
  210. package/lib/project/features/lib-project/lib-project-smart-container.backend.d.ts +2 -2
  211. package/lib/project/features/lib-project/lib-project-smart-container.backend.js +40 -34
  212. package/lib/project/features/lib-project/lib-project-smart-container.backend.js.map +1 -1
  213. package/lib/project/features/lib-project/lib-project-standalone.backend.d.ts +2 -3
  214. package/lib/project/features/lib-project/lib-project-standalone.backend.js +16 -36
  215. package/lib/project/features/lib-project/lib-project-standalone.backend.js.map +1 -1
  216. package/lib/project/features/lib-project/lib-project-vscode-ext.d.ts +3 -3
  217. package/lib/project/features/lib-project/lib-project-vscode-ext.js +2 -2
  218. package/lib/project/features/lib-project/lib-project-vscode-ext.js.map +1 -1
  219. package/lib/project/features/linked-repos.backend.d.ts +3 -3
  220. package/lib/project/features/linked-repos.backend.js +23 -21
  221. package/lib/project/features/linked-repos.backend.js.map +1 -1
  222. package/lib/project/features/node-modules/node-modules-helpers.backend.d.ts +0 -2
  223. package/lib/project/features/node-modules/node-modules-helpers.backend.js +46 -93
  224. package/lib/project/features/node-modules/node-modules-helpers.backend.js.map +1 -1
  225. package/lib/project/features/node-modules/node-modules.d.ts +26 -3
  226. package/lib/project/features/node-modules/node-modules.js +288 -3
  227. package/lib/project/features/node-modules/node-modules.js.map +1 -1
  228. package/lib/project/features/npm-packages/npm-packages-base.backend.d.ts +1 -1
  229. package/lib/project/features/npm-packages/npm-packages-base.backend.js +76 -86
  230. package/lib/project/features/npm-packages/npm-packages-base.backend.js.map +1 -1
  231. package/lib/project/features/npm-packages/npm-packages-core.backend.d.ts +0 -1
  232. package/lib/project/features/npm-packages/npm-packages-core.backend.js +15 -16
  233. package/lib/project/features/npm-packages/npm-packages-core.backend.js.map +1 -1
  234. package/lib/project/features/npm-packages/npm-packages-helpers.backend.js +14 -11
  235. package/lib/project/features/npm-packages/npm-packages-helpers.backend.js.map +1 -1
  236. package/lib/project/features/npm-packages/npm-packages.d.ts +1 -1
  237. package/lib/project/features/npm-packages/npm-packages.js +9 -6
  238. package/lib/project/features/npm-packages/npm-packages.js.map +1 -1
  239. package/lib/project/features/package-json/package-json-base.backend.d.ts +0 -1
  240. package/lib/project/features/package-json/package-json-base.backend.js +25 -17
  241. package/lib/project/features/package-json/package-json-base.backend.js.map +1 -1
  242. package/lib/project/features/package-json/package-json-core.backend.d.ts +2 -2
  243. package/lib/project/features/package-json/package-json-core.backend.js +28 -16
  244. package/lib/project/features/package-json/package-json-core.backend.js.map +1 -1
  245. package/lib/project/features/package-json/package-json-deps-categories.backend.js +1 -1
  246. package/lib/project/features/package-json/package-json-deps-categories.backend.js.map +1 -1
  247. package/lib/project/features/package-json/package-json-helpers.backend.js +109 -67
  248. package/lib/project/features/package-json/package-json-helpers.backend.js.map +1 -1
  249. package/lib/project/features/package-json/package-json.js +18 -7
  250. package/lib/project/features/package-json/package-json.js.map +1 -1
  251. package/lib/project/features/package-recognition/packages-recognition.d.ts +8 -13
  252. package/lib/project/features/package-recognition/packages-recognition.js +86 -133
  253. package/lib/project/features/package-recognition/packages-recognition.js.map +1 -1
  254. package/lib/project/features/quick-fixes.js +34 -27
  255. package/lib/project/features/quick-fixes.js.map +1 -1
  256. package/lib/project/features/singular-build.backend.js +70 -31
  257. package/lib/project/features/singular-build.backend.js.map +1 -1
  258. package/lib/project/features/target-project.backend.js +9 -12
  259. package/lib/project/features/target-project.backend.js.map +1 -1
  260. package/lib/project/features/test-runner/cypress-test-runner.js +18 -9
  261. package/lib/project/features/test-runner/cypress-test-runner.js.map +1 -1
  262. package/lib/project/features/test-runner/jest-test-runner.js +6 -3
  263. package/lib/project/features/test-runner/jest-test-runner.js.map +1 -1
  264. package/lib/project/features/test-runner/mocha-test-runner.js +11 -7
  265. package/lib/project/features/test-runner/mocha-test-runner.js.map +1 -1
  266. package/lib/project/features/webpack-backend-compilation.backend.d.ts +3 -3
  267. package/lib/project/features/webpack-backend-compilation.backend.js +10 -7
  268. package/lib/project/features/webpack-backend-compilation.backend.js.map +1 -1
  269. package/lib/templates.js.map +1 -1
  270. package/package.json +25 -25
  271. package/path.txt +1 -1
  272. package/start.backend.js +34 -31
  273. package/start.backend.js.map +1 -1
  274. package/tmp-environment.json +68 -60
  275. package/websql/README.md +24 -24
  276. package/websql/esm2022/lib/build-options.mjs +3 -4
  277. package/websql/esm2022/lib/constants.mjs +23 -7
  278. package/websql/esm2022/lib/helpers.mjs +1 -1
  279. package/websql/esm2022/lib/index.mjs +1 -1
  280. package/websql/esm2022/lib/models.mjs +23 -11
  281. package/websql/esm2022/lib/project/abstract/project.mjs +1632 -397
  282. package/websql/esm2022/lib/project/features/basename-manager.mjs +4 -2
  283. package/websql/esm2022/lib/project/features/environment-config/environment-config.mjs +18 -4
  284. package/websql/fesm2022/tnp.mjs +1648 -402
  285. package/websql/fesm2022/tnp.mjs.map +1 -1
  286. package/websql/lib/build-options.d.ts +7 -7
  287. package/websql/lib/constants.d.ts +2 -1
  288. package/websql/lib/models.d.ts +7 -8
  289. package/websql/lib/project/abstract/project.d.ts +24 -8
  290. package/websql/lib/project/features/basename-manager.d.ts +4 -4
  291. package/websql/lib/project/features/environment-config/environment-config.d.ts +5 -3
  292. package/lib/project/features/files-recreation/files-structure.backend.d.ts +0 -7
  293. package/lib/project/features/files-recreation/files-structure.backend.js +0 -159
  294. package/lib/project/features/files-recreation/files-structure.backend.js.map +0 -1
  295. package/lib/project/features/node-modules/node-modules-base.backend.d.ts +0 -26
  296. package/lib/project/features/node-modules/node-modules-base.backend.js +0 -189
  297. package/lib/project/features/node-modules/node-modules-base.backend.js.map +0 -1
  298. package/lib/project/features/node-modules/node-modules-core.backend.d.ts +0 -21
  299. package/lib/project/features/node-modules/node-modules-core.backend.js +0 -126
  300. package/lib/project/features/node-modules/node-modules-core.backend.js.map +0 -1
  301. package/lib/project/features/smart-node-modules.backend.d.ts +0 -25
  302. package/lib/project/features/smart-node-modules.backend.js +0 -335
  303. package/lib/project/features/smart-node-modules.backend.js.map +0 -1
  304. package/paste.vbs +0 -52
@@ -1,6 +1,6 @@
1
1
  THIS FILE IS GENERATED. THIS FILE IS GENERATED. THIS FILE IS GENERATED.
2
2
 
3
- Assets from this folder are being shipped with this npm package (tnp@16.100.20)
3
+ Assets from this folder are being shipped with this npm package (tnp@16.100.22)
4
4
  created from this project.
5
5
 
6
6
  THIS FILE IS GENERATED.THIS FILE IS GENERATED. THIS FILE IS GENERATED.
package/bin/start.js CHANGED
@@ -1,217 +1,217 @@
1
- //#region @backend
2
- //#region quick fixes
3
- Error.stackTraceLimit = 100;
4
- global.i0 = {
5
- defineInjectable: function () { }
6
- }
7
- const process= require('process');
8
- process.removeAllListeners('warning');
9
- //#endregion
10
-
11
- //#region resolve constants
12
- const childprocsecretarg = '-childproc';
13
- const isWinGitBash = (process.platform === 'win32');
14
- const procType = (process.argv[1].endsWith('tnp') || process.argv[1].endsWith('firedev')) ? 'root'
15
- : ((process.argv.find(a => a.startsWith(childprocsecretarg)))
16
- ? 'child-of-root'
17
- : 'child-of-child'
18
- );
19
- const debugMode = (process.argv[1].endsWith('-debug') || process.argv[1].endsWith('-debug-brk'))
20
- global.spinnerInParentProcess = (procType === 'child-of-root');
21
- const orgArgv = JSON.parse(JSON.stringify(process.argv));
22
- global.tnpNonInteractive = (typeof process.argv.find(a => a.startsWith('--tnpNonInteractive')) !== 'undefined');
23
- const spinnerIsDefault = !tnpNonInteractive;
24
- global.frameworkName = 'tnp';
25
-
26
- global.globalSystemToolMode = true;
27
- const verbose = process.argv.includes('-verbose')
28
- global.hideLog = !verbose;
29
- global.verboseLevel = 0;
30
-
31
- global.skipCoreCheck = (typeof process.argv.find(a => a.startsWith('--skipCoreCheck')) !== 'undefined');
32
- const verboseLevelExists = (typeof process.argv.find(a => a.startsWith('-verbose=')) !== 'undefined');
33
- global.verboseLevel = (verboseLevelExists ? Number(
34
- process.argv.find(a => {
35
- const v = a.startsWith('-verbose=');
36
- if (v) {
37
- return v.replace('-verbose=', '');
38
- }
39
- })
40
- ) : 0) || 0;
41
-
42
- if (!verbose && verboseLevelExists) {
43
- global.hideLog = false;
44
- }
45
-
46
-
47
-
48
- const spinnerOnInArgs = process.argv.includes('-spinner');
49
- const spinnerOffInArgs = (process.argv.includes('-spinner=false') || process.argv.includes('-spinner=off'));
50
- //#endregion
51
-
52
- //#region clear argument from variables
53
- process.argv = process.argv.filter(a => !a.startsWith('-spinner'));
54
- process.argv = process.argv.filter(a => a !== '-childproc');
55
- process.argv = process.argv.filter(a => a !== '--skipCoreCheck');
56
- process.argv = process.argv.filter(a => !a.startsWith('-verbose'));
57
- //#endregion
58
-
59
- //#region fix argument
60
- process.argv = process.argv.map(a => {
61
- if (a === '-websql') {
62
- return '--websql'
63
- }
64
- return a;
65
- })
66
- //#endregion
67
-
68
- //#region variables
69
- let mode;
70
- let start;
71
- let startSpinner = spinnerIsDefault || spinnerOnInArgs;
72
- if (spinnerOffInArgs) {
73
- startSpinner = false;
74
- }
75
- if (procType === 'child-of-root' || debugMode) {
76
- startSpinner = false;
77
- }
78
-
79
- if (verbose || frameworkName === 'tnp' || global.skipCoreCheck) {
80
- startSpinner = false;
81
- }
82
-
83
- //#endregion
84
-
85
- const path = require('path');
86
-
87
-
88
- if (procType === 'child-of-root') {
89
- global.spinner = {
90
- start() {
91
- process.send && process.send('start-spinner')
92
- },
93
- stop() {
94
- process.send && process.send('stop-spinner')
95
- }
96
- }
97
- }
98
-
99
- if (startSpinner) {
100
- //#region start spinner in processs
101
- var ora = require('ora');
102
- var spinner = ora();
103
- spinner.start();
104
- global.spinner = spinner;
105
-
106
- const child_process = require('child_process');
107
- const orgArgvForChild = orgArgv.filter(a => !a.startsWith('-spinner'));
108
-
109
- const env = {
110
- ...process.env,
111
- FORCE_COLOR: '1'
112
- };
113
-
114
- const cwd = process.cwd();
115
- const argsToCHildProc = (`${orgArgvForChild.slice(2).join(' ')} ${global.verbose ? '-verbose' : ''} ${global.skipCoreCheck ? '--skipCoreCheck' : ''} `
116
- + `${spinnerOnInArgs ? '-spinner' : (spinnerOffInArgs ? '-spinner=off' : '')} ${childprocsecretarg}`).split(' ');
117
-
118
- const proc = child_process.fork(crossPlatofrmPath(__filename), argsToCHildProc, {
119
- env,
120
- stdio: [0, 1, 2, 'ipc'],
121
- cwd,
122
- });
123
-
124
- proc.on('exit', (code) => {
125
- spinner.stop();
126
- setTimeout(() => {
127
- process.exit(code);
128
- })
129
- });
130
-
131
- proc.on('message', message => {
132
- message = (message ? message : '').trimLeft();
133
- if (message === 'start-spinner') {
134
- spinner.start();
135
- } else if (message === 'stop-spinner') {
136
- spinner.stop();
137
- } else if (message.startsWith('info::')) {
138
- setText((message));
139
- } else if (message.startsWith('success::')) {
140
- setText((message));
141
- } else if (message.startsWith('taskstart::')) {
142
- setText((message));
143
- } else if (message.startsWith('taskdone::')) {
144
- setText((message));
145
- } else if (message.startsWith('error::')) {
146
- setText((message));
147
- } else if (message.startsWith('log::')) {
148
- setText((message), true);
149
- } else if (message.startsWith('warn::')) {
150
- setText((message));
151
- }
152
- });
153
-
154
- // process.stdin.resume(); // not needed ?
155
- //#endregion
156
- } else {
157
- //#region child or child of child
158
-
159
- //#region uknow dist or npm mode
160
- const fs = require('fs');
161
-
162
- const pathToDistRun = path.join(__dirname, '../dist/cli.js');
163
- const pathToIndexRun = path.join(__dirname, '../cli.js');
164
- const distExist = fs.existsSync(pathToDistRun);
165
-
166
- if (distExist) {
167
- mode = 'dist';
168
- !global.hideLog && setText('- firedev dist -', true);
169
- // TODO TOOOO MUCH TIME !!!!!!
170
- start = require(pathToDistRun.replace(/\.js$/g, '')).default;
171
- } else {
172
- mode = 'npm';
173
- !global.hideLog && setText('- npm mode -', true);
174
- start = require(pathToIndexRun.replace(/\.js$/g, '')).default;
175
- }
176
- //#endregion
177
-
178
-
179
- // global.start = start;
180
- process.argv = process.argv.filter(f => !!f);
181
- start(process.argv, global.frameworkName, mode);
182
- //#endregion
183
- }
184
-
185
- function crossPlatofrmPath(p) {
186
- if (isWinGitBash) {
187
- return p.replace(/\\/g, '/');
188
- }
189
- return p;
190
- }
191
-
192
- function setText(text, toSpiner = false) {
193
- const spinner = global.spinner;
194
- if (text) {
195
- text = text.split('::').slice(1).join('::');
196
- }
197
- if (spinner) {
198
- if (toSpiner) {
199
- spinner.text = text.replace(/(?:\r\n|\r|\n)/g, ' ');
200
- } else {
201
- const wasSpinning = spinner.isSpinning;
202
- if (wasSpinning) {
203
- spinner.stop();
204
- spinner.clear();
205
- }
206
- console.log(text);
207
- if (wasSpinning) {
208
- spinner.start()
209
- }
210
- }
211
- } else {
212
- console.log(text);
213
- }
214
-
215
- }
216
-
217
- //#endregion
1
+ //#region @backend
2
+ //#region quick fixes
3
+ Error.stackTraceLimit = 100;
4
+ global.i0 = {
5
+ defineInjectable: function () { }
6
+ }
7
+ const process= require('process');
8
+ process.removeAllListeners('warning');
9
+ //#endregion
10
+
11
+ //#region resolve constants
12
+ const childprocsecretarg = '-childproc';
13
+ const isWinGitBash = (process.platform === 'win32');
14
+ const procType = (process.argv[1].endsWith('tnp') || process.argv[1].endsWith('firedev')) ? 'root'
15
+ : ((process.argv.find(a => a.startsWith(childprocsecretarg)))
16
+ ? 'child-of-root'
17
+ : 'child-of-child'
18
+ );
19
+ const debugMode = (process.argv[1].endsWith('-debug') || process.argv[1].endsWith('-debug-brk'))
20
+ global.spinnerInParentProcess = (procType === 'child-of-root');
21
+ const orgArgv = JSON.parse(JSON.stringify(process.argv));
22
+ global.tnpNonInteractive = (typeof process.argv.find(a => a.startsWith('--tnpNonInteractive')) !== 'undefined');
23
+ const spinnerIsDefault = !tnpNonInteractive;
24
+ global.frameworkName = 'tnp';
25
+
26
+ global.globalSystemToolMode = true;
27
+ const verbose = process.argv.includes('-verbose')
28
+ global.hideLog = !verbose;
29
+ global.verboseLevel = 0;
30
+
31
+ global.skipCoreCheck = (typeof process.argv.find(a => a.startsWith('--skipCoreCheck')) !== 'undefined');
32
+ const verboseLevelExists = (typeof process.argv.find(a => a.startsWith('-verbose=')) !== 'undefined');
33
+ global.verboseLevel = (verboseLevelExists ? Number(
34
+ process.argv.find(a => {
35
+ const v = a.startsWith('-verbose=');
36
+ if (v) {
37
+ return v.replace('-verbose=', '');
38
+ }
39
+ })
40
+ ) : 0) || 0;
41
+
42
+ if (!verbose && verboseLevelExists) {
43
+ global.hideLog = false;
44
+ }
45
+
46
+
47
+
48
+ const spinnerOnInArgs = process.argv.includes('-spinner');
49
+ const spinnerOffInArgs = (process.argv.includes('-spinner=false') || process.argv.includes('-spinner=off'));
50
+ //#endregion
51
+
52
+ //#region clear argument from variables
53
+ process.argv = process.argv.filter(a => !a.startsWith('-spinner'));
54
+ process.argv = process.argv.filter(a => a !== '-childproc');
55
+ process.argv = process.argv.filter(a => a !== '--skipCoreCheck');
56
+ process.argv = process.argv.filter(a => !a.startsWith('-verbose'));
57
+ //#endregion
58
+
59
+ //#region fix argument
60
+ process.argv = process.argv.map(a => {
61
+ if (a === '-websql') {
62
+ return '--websql'
63
+ }
64
+ return a;
65
+ })
66
+ //#endregion
67
+
68
+ //#region variables
69
+ let mode;
70
+ let start;
71
+ let startSpinner = spinnerIsDefault || spinnerOnInArgs;
72
+ if (spinnerOffInArgs) {
73
+ startSpinner = false;
74
+ }
75
+ if (procType === 'child-of-root' || debugMode) {
76
+ startSpinner = false;
77
+ }
78
+
79
+ if (verbose || frameworkName === 'tnp' || global.skipCoreCheck) {
80
+ startSpinner = false;
81
+ }
82
+
83
+ //#endregion
84
+
85
+ const path = require('path');
86
+
87
+
88
+ if (procType === 'child-of-root') {
89
+ global.spinner = {
90
+ start() {
91
+ process.send && process.send('start-spinner')
92
+ },
93
+ stop() {
94
+ process.send && process.send('stop-spinner')
95
+ }
96
+ }
97
+ }
98
+
99
+ if (startSpinner) {
100
+ //#region start spinner in processs
101
+ var ora = require('ora');
102
+ var spinner = ora();
103
+ spinner.start();
104
+ global.spinner = spinner;
105
+
106
+ const child_process = require('child_process');
107
+ const orgArgvForChild = orgArgv.filter(a => !a.startsWith('-spinner'));
108
+
109
+ const env = {
110
+ ...process.env,
111
+ FORCE_COLOR: '1'
112
+ };
113
+
114
+ const cwd = process.cwd();
115
+ const argsToCHildProc = (`${orgArgvForChild.slice(2).join(' ')} ${global.verbose ? '-verbose' : ''} ${global.skipCoreCheck ? '--skipCoreCheck' : ''} `
116
+ + `${spinnerOnInArgs ? '-spinner' : (spinnerOffInArgs ? '-spinner=off' : '')} ${childprocsecretarg}`).split(' ');
117
+
118
+ const proc = child_process.fork(crossPlatofrmPath(__filename), argsToCHildProc, {
119
+ env,
120
+ stdio: [0, 1, 2, 'ipc'],
121
+ cwd,
122
+ });
123
+
124
+ proc.on('exit', (code) => {
125
+ spinner.stop();
126
+ setTimeout(() => {
127
+ process.exit(code);
128
+ })
129
+ });
130
+
131
+ proc.on('message', message => {
132
+ message = (message ? message : '').trimLeft();
133
+ if (message === 'start-spinner') {
134
+ spinner.start();
135
+ } else if (message === 'stop-spinner') {
136
+ spinner.stop();
137
+ } else if (message.startsWith('info::')) {
138
+ setText((message));
139
+ } else if (message.startsWith('success::')) {
140
+ setText((message));
141
+ } else if (message.startsWith('taskstart::')) {
142
+ setText((message));
143
+ } else if (message.startsWith('taskdone::')) {
144
+ setText((message));
145
+ } else if (message.startsWith('error::')) {
146
+ setText((message));
147
+ } else if (message.startsWith('log::')) {
148
+ setText((message), true);
149
+ } else if (message.startsWith('warn::')) {
150
+ setText((message));
151
+ }
152
+ });
153
+
154
+ // process.stdin.resume(); // not needed ?
155
+ //#endregion
156
+ } else {
157
+ //#region child or child of child
158
+
159
+ //#region uknow dist or npm mode
160
+ const fs = require('fs');
161
+
162
+ const pathToDistRun = path.join(__dirname, '../dist/cli.js');
163
+ const pathToIndexRun = path.join(__dirname, '../cli.js');
164
+ const distExist = fs.existsSync(pathToDistRun);
165
+
166
+ if (distExist) {
167
+ mode = 'dist';
168
+ !global.hideLog && setText('- firedev dist -', true);
169
+ // TODO TOOOO MUCH TIME !!!!!!
170
+ start = require(pathToDistRun.replace(/\.js$/g, '')).default;
171
+ } else {
172
+ mode = 'npm';
173
+ !global.hideLog && setText('- npm mode -', true);
174
+ start = require(pathToIndexRun.replace(/\.js$/g, '')).default;
175
+ }
176
+ //#endregion
177
+
178
+
179
+ // global.start = start;
180
+ process.argv = process.argv.filter(f => !!f);
181
+ start(process.argv, global.frameworkName, mode);
182
+ //#endregion
183
+ }
184
+
185
+ function crossPlatofrmPath(p) {
186
+ if (isWinGitBash) {
187
+ return p.replace(/\\/g, '/');
188
+ }
189
+ return p;
190
+ }
191
+
192
+ function setText(text, toSpiner = false) {
193
+ const spinner = global.spinner;
194
+ if (text) {
195
+ text = text.split('::').slice(1).join('::');
196
+ }
197
+ if (spinner) {
198
+ if (toSpiner) {
199
+ spinner.text = text.replace(/(?:\r\n|\r|\n)/g, ' ');
200
+ } else {
201
+ const wasSpinning = spinner.isSpinning;
202
+ if (wasSpinning) {
203
+ spinner.stop();
204
+ spinner.clear();
205
+ }
206
+ console.log(text);
207
+ if (wasSpinning) {
208
+ spinner.start()
209
+ }
210
+ }
211
+ } else {
212
+ console.log(text);
213
+ }
214
+
215
+ }
216
+
217
+ //#endregion
package/bin/t CHANGED
@@ -1,5 +1,5 @@
1
- #!/usr/bin/env node --no-deprecation
2
- //#region @backend
3
- // --stack-trace-limit=10000
4
- require('./start');
5
- //#endregion
1
+ #!/usr/bin/env node --no-deprecation
2
+ //#region @backend
3
+ // --stack-trace-limit=10000
4
+ require('./start');
5
+ //#endregion
package/bin/t-debug CHANGED
@@ -1,5 +1,5 @@
1
- #!/usr/bin/env -S node --inspect --stack-trace-limit=10000 --no-deprecation
2
- //#region @backend
3
- // --stack-trace-limit=10000
4
- require('./start');
5
- //#endregion
1
+ #!/usr/bin/env -S node --inspect --stack-trace-limit=10000 --no-deprecation
2
+ //#region @backend
3
+ // --stack-trace-limit=10000
4
+ require('./start');
5
+ //#endregion
package/bin/t-debug-brk CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env -S node --inspect-brk --stack-trace-limit=10000 --no-deprecation
2
- //#region @backend
3
- require('./start');
4
- //#endregion
1
+ #!/usr/bin/env -S node --inspect-brk --stack-trace-limit=10000 --no-deprecation
2
+ //#region @backend
3
+ require('./start');
4
+ //#endregion
package/bin/tnp CHANGED
@@ -1,5 +1,5 @@
1
- #!/usr/bin/env node --no-deprecation
2
- //#region @backend
3
- // --stack-trace-limit=10000
4
- require('./start');
5
- //#endregion
1
+ #!/usr/bin/env node --no-deprecation
2
+ //#region @backend
3
+ // --stack-trace-limit=10000
4
+ require('./start');
5
+ //#endregion
package/bin/tnp-debug CHANGED
@@ -1,5 +1,5 @@
1
- #!/usr/bin/env -S node --inspect --stack-trace-limit=10000 --no-deprecation
2
- //#region @backend
3
- // --stack-trace-limit=10000
4
- require('./start');
5
- //#endregion
1
+ #!/usr/bin/env -S node --inspect --stack-trace-limit=10000 --no-deprecation
2
+ //#region @backend
3
+ // --stack-trace-limit=10000
4
+ require('./start');
5
+ //#endregion
package/bin/tnp-debug-brk CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env -S node --inspect-brk --stack-trace-limit=10000 --no-deprecation
2
- //#region @backend
3
- require('./start');
4
- //#endregion
1
+ #!/usr/bin/env -S node --inspect-brk --stack-trace-limit=10000 --no-deprecation
2
+ //#region @backend
3
+ require('./start');
4
+ //#endregion
package/browser/README.md CHANGED
@@ -1,24 +1,24 @@
1
- # MyLib
2
-
3
- This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
4
-
5
- ## Code scaffolding
6
-
7
- Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
8
- > Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
9
-
10
- ## Build
11
-
12
- Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
13
-
14
- ## Publishing
15
-
16
- After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
17
-
18
- ## Running unit tests
19
-
20
- Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
-
22
- ## Further help
23
-
24
- To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
1
+ # MyLib
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
8
+ > Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
9
+
10
+ ## Build
11
+
12
+ Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+
14
+ ## Publishing
15
+
16
+ After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
+
22
+ ## Further help
23
+
24
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
@@ -4,7 +4,7 @@ class SystemTask {
4
4
  constructor() { }
5
5
  clone(override) {
6
6
  const classFn = CLASS.getFromObject(this);
7
- const result = _.merge(new (classFn)(), _.merge(_.cloneDeep(this), override));
7
+ const result = _.merge(new classFn(), _.merge(_.cloneDeep(this), override));
8
8
  return result;
9
9
  }
10
10
  }
@@ -59,8 +59,7 @@ export class InitOptions extends BaseBuild {
59
59
  }
60
60
  return initOptions;
61
61
  }
62
- fillBaseHrefFromFile(project) {
63
- }
62
+ fillBaseHrefFromFile(project) { }
64
63
  }
65
64
  export class BuildOptions extends BuildOptionsLibOrApp {
66
65
  get appBuild() {
@@ -122,4 +121,4 @@ function from(options, classFn) {
122
121
  }
123
122
  ;
124
123
  ({}); // @--end-of-file-for-module=tnp lib/build-options.ts
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L3RucC9wcm9qZWN0cy90bnAvc3JjL2xpYi9idWlsZC1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBYyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUlwRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHekQsTUFBTSxVQUFVO0lBQ2QsZ0JBQTBCLENBQUM7SUFFcEIsS0FBSyxDQUFDLFFBQW9CO1FBQy9CLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUU5RSxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sU0FBYSxTQUFRLFVBQWE7SUFXN0M7Ozs7Ozs7Ozs7T0FVRztJQUNILElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxTQUFTLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUlGO0FBRUQsTUFBTSxvQkFBd0IsU0FBUSxTQUFZO0NBWWpEO0FBSUQsTUFBTSxPQUFPLFVBQVcsU0FBUSxVQUFzQjtDQUVyRDtBQUlELE1BQU0sT0FBTyxXQUFZLFNBQVEsU0FBc0I7SUFFckQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxxQkFB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bEUsSUFBSSxpQkFBaUIsRUFBRTtRQUNyQixHQUFHLENBQUMsY0FBYyxHQUFHLGlCQUFpQixDQUFDO0tBQ3hDO1NBQU07UUFDTCxHQUFHLENBQUMsY0FBYyxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtLQUMvQjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMscURBQXFEIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCB7IENvcmVNb2RlbHMsIF8sIGNyb3NzUGxhdGZvcm1QYXRoIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgdHlwZSB7IFByb2plY3QgfSBmcm9tICcuL3Byb2plY3QvYWJzdHJhY3QvcHJvamVjdCc7XG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICd0bnAtY29uZmlnL2Jyb3dzZXInO1xuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgQ0xBU1MgfSBmcm9tICd0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvYnJvd3Nlcic7XG5cblxuY2xhc3MgU3lzdGVtVGFzazxUPiB7XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHsgfVxuICBmaW5pc2hDYWxsYmFjazogKCkgPT4gYW55O1xuICBwdWJsaWMgY2xvbmUob3ZlcnJpZGU6IFBhcnRpYWw8VD4pOiBUIHtcbiAgICBjb25zdCBjbGFzc0ZuID0gQ0xBU1MuZ2V0RnJvbU9iamVjdCh0aGlzKTtcbiAgICBjb25zdCByZXN1bHQgPSBfLm1lcmdlKG5ldyAoY2xhc3NGbikoKSwgXy5tZXJnZShfLmNsb25lRGVlcCh0aGlzKSwgb3ZlcnJpZGUpKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJhc2VCdWlsZDxUPiBleHRlbmRzIFN5c3RlbVRhc2s8VD4ge1xuICAvKipcbiAgICogd2F0Y2ggYnVpbGRcbiAgICovXG4gIHdhdGNoOiBib29sZWFuO1xuICAvKipcbiAgICAqIGJ1aWxkIG9uIHJlbW90ZSBzZXJ2ZXIgKHVzZXIgY2Fubm90IGludGVyZmVyZSB3aXRoIGNvbnNvbGUpXG4gICAgKiB3aXRob3V0IHVzZXIgaW50ZXJhY3Rpb25cbiAgICAqL1xuICBjaTogYm9vbGVhbjtcblxuICAvKipcbiAgICogYmFzZS1ocmVmIC0+IGlzIGEgcGFydCBvZiBsaWIgY29kZSBidWlsZFxuICAgKlxuICAgKiBvdmVyd2l0ZSBiYXNlIGhyZWYgZm9yIGFwcCBkZXBsb3ltZW50LlxuICAgKiBNdXN0IGJlIGF0IGxlYXN0IGVxdWFsOiAnLydcbiAgICpcbiAgICogZGVmYXVsdDogL1xuICAgKiBkZWZhdWx0IGZvciBnaXRodWIgcGFnZXMgc3RhbmRhbG9uZSBwcm9qZWN0OiAnLzxwcm9qZWN0LW5hbWUtb3Itb3ZlcndyaXR0ZW4+LydcbiAgICogZGVmYXVsdCBmb3Igb3JnYW5pemFpb24gbWFpbiB0YXJnZXQ6ICcvPHByb2plY3QtbmFtZS1vci1vdmVyd3JpdHRlbj4vJ1xuICAgKiBkZWZhdWx0IGZvciBvcmdhbml6YWlvbiBtYWluIG90aGVyIHRhcmdldHM6ICcvPHByb2plY3QtbmFtZS1vci1vdmVyd3JpdHRlbj4vLS88b3RoZXItdGFyZ2V0LW5hbWU+LydcbiAgICovXG4gIGdldCBiYXNlSHJlZigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9iYXNlSHJlZjtcbiAgfVxuICBzZXQgYmFzZUhyZWYodikge1xuICAgIHRoaXMuX2Jhc2VIcmVmID0gY3Jvc3NQbGF0Zm9ybVBhdGgodik7XG4gIH1cbiAgcHJpdmF0ZSBfYmFzZUhyZWY6IHN0cmluZztcbiAgZGlzYWJsZVNlcnZpY2VXb3JrZXI6IGJvb2xlYW47XG4gIGJ1aWxkQW5ndWxhckFwcEZvckVsZWN0cm9uOiBib29sZWFuO1xufVxuXG5jbGFzcyBCdWlsZE9wdGlvbnNMaWJPckFwcDxUPiBleHRlbmRzIEJhc2VCdWlsZDxUPiB7XG4gIGNsaUJ1aWxkTm9EdHM6IGJvb2xlYW47XG4gIGNsaUJ1aWxkVWdsaWZ5OiBib29sZWFuO1xuICBjbGlCdWlsZE9ic2N1cmU6IGJvb2xlYW47XG4gIGNsaUJ1aWxkSW5jbHVkZU5vZGVNb2R1bGVzOiBib29sZWFuO1xuICAvKipcbiAgICogRW5hYmxlIGFsbCBwcm9kdWN0aW9uIG9wdGltYWxpemF0aW9uIGZvciBidWlsZFxuICAgKiAtIG1pbmlmaWNhdGlvblxuICAgKiAtIGNhY2hlc1xuICAgKiBldGMuXG4gICAqL1xuICBwcm9kOiBib29sZWFuO1xufVxuXG5cblxuZXhwb3J0IGNsYXNzIE5ld09wdGlvbnMgZXh0ZW5kcyBTeXN0ZW1UYXNrPE5ld09wdGlvbnM+IHtcbiAgYnJhbmRpbmc6IGJvb2xlYW47XG59XG5cblxuXG5leHBvcnQgY2xhc3MgSW5pdE9wdGlvbnMgZXh0ZW5kcyBCYXNlQnVpbGQ8SW5pdE9wdGlvbnM+IHtcbiAgcmVhZG9ubHkgYWxyZWFkeUluaXRlZFBvcmplY3RzOiBQcm9qZWN0W107XG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFscmVhZHlJbml0ZWRQb3JqZWN0cyA9IFtdO1xuICB9XG4gIG9taXRDaGlsZHJlbjogYm9vbGVhbjtcbiAgaW5pdGlhdG9yOiBQcm9qZWN0O1xuICAvKipcbiAgICogaW5pdCBvbmx5IHN0cnVjdHJlIHdpdGhvdXQgZGVwc1xuICAgKi9cbiAgc3RydWN0OiBib29sZWFuO1xuICB3ZWJzcWw6IGJvb2xlYW47XG4gIGJyYW5kaW5nOiBib29sZWFuO1xuXG4gIHB1YmxpYyBzdGF0aWMgZnJvbShvcHRpb25zOiBQYXJ0aWFsPEluaXRPcHRpb25zPik6IEluaXRPcHRpb25zIHtcbiAgICByZXR1cm4gZnJvbShvcHRpb25zLCBJbml0T3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZyb21CdWlsZChvcHRpb25zOiBCdWlsZE9wdGlvbnMpOiBJbml0T3B0aW9ucyB7XG4gICAgY29uc3QgaW5pdE9wdGlvbnMgPSBJbml0T3B0aW9ucy5mcm9tKHt9KTtcblxuICAgIGNvbnN0IHByb3BzVG9Jbml0ID0gW1xuICAgICAgJ2Jhc2VIcmVmJyxcbiAgICAgICd3YXRjaCcsXG4gICAgICAnd2Vic3FsJyxcbiAgICAgICdzbWFydENvbnRhaW5lclRhcmdldE5hbWUnLFxuICAgICAgJ2NpJyxcbiAgICAgICd0YXJnZXRBcHAnLFxuICAgICAgJ3Byb2QnLFxuICAgICAgJ2Rpc2FibGVTZXJ2aWNlV29ya2VyJyxcbiAgICAgICdidWlsZEFuZ3VsYXJBcHBGb3JFbGVjdHJvbicsXG4gICAgXSBhcyAoa2V5b2YgQnVpbGRPcHRpb25zKVtdO1xuXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHByb3BzVG9Jbml0KSB7XG4gICAgICBpZiAoIV8uaXNVbmRlZmluZWQob3B0aW9uc1twcm9wXSkpIHtcbiAgICAgICAgaW5pdE9wdGlvbnNbcHJvcF0gPSBvcHRpb25zW3Byb3BdXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGluaXRPcHRpb25zO1xuICB9XG5cbiAgcHVibGljIGZpbGxCYXNlSHJlZkZyb21GaWxlKHByb2plY3Q6IFByb2plY3QpIHtcblxuICB9XG59XG5cblxuXG5leHBvcnQgY2xhc3MgQnVpbGRPcHRpb25zIGV4dGVuZHMgQnVpbGRPcHRpb25zTGliT3JBcHA8QnVpbGRPcHRpb25zPiB7XG4gIHJlYWRvbmx5IG91dERpcjogJ2Rpc3QnO1xuICByZWFkb25seSB0YXJnZXRBcHA6ICdwd2EnIHwgJ2VsZWN0cm9uJztcbiAgZ2V0IGFwcEJ1aWxkKCkge1xuICAgIHJldHVybiB0aGlzLmJ1aWxkVHlwZSA9PT0gJ2FwcCcgfHwgdGhpcy5idWlsZFR5cGUgPT09ICdsaWItYXBwJztcbiAgfVxuICBnZXQgbGliQnVpbGQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRUeXBlID09PSAnbGliJyB8fCB0aGlzLmJ1aWxkVHlwZSA9PT0gJ2xpYi1hcHAnO1xuICB9XG5cbiAgZ2V0IHRlbXBvcmFyeVNyY0ZvclJlbGVhc2VDdXRDb2RlKCkge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMub3V0RGlyID0gJ2Rpc3QnO1xuICAgIHRoaXMudGFyZ2V0QXBwID0gJ3B3YSc7XG4gIH1cbiAgLyoqXG4gICAqXG4gICAqL1xuICB3ZWJzcWw6IGJvb2xlYW47XG4gIGJ1aWxkVHlwZTogJ2xpYicgfCAnYXBwJyB8ICdsaWItYXBwJztcbiAgcHJpdmF0ZSBfc2tpcFByb2plY3RQcm9jZXNzOiBib29sZWFuO1xuICAvKipcbiAgICogU2tpcCBwcm9qZWN0IHByb2Nlc3MgZm9yIGFzc2lnbmluZyBhdXRvbWF0aWMgcG9ydHNcbiAgICovXG4gIGdldCBza2lwUHJvamVjdFByb2Nlc3MoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuICBzZXQgc2tpcFByb2plY3RQcm9jZXNzKHZhbHVlKSB7XG4gICAgdGhpcy5fc2tpcFByb2plY3RQcm9jZXNzID0gdmFsdWU7XG4gIH1cblxuICBza2lwQ29weU1hbmFnZXI6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBidWlsZCBleGVjdXRlZCBkcnVyaW5nIGxpYiByZWxlYXNlXG4gICAqL1xuICBidWlsZEZvclJlbGVhc2U6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGRlZmF1bHQ6ICc8cHJvamVjdC1sb2NhaXRvbj4vZGlzdC1hcHAnXG4gICAqIGRlZmF1bHQgZm9yIGdpdGh1YiBwYWdlOiAnPHByb2plY3QtbG9jYXRpb24+L2RvY3MnXG4gICAqL1xuICBhcHBCdWlsZExvY2F0aW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDdXQgPEA+bm90Rm9yTnBtICB0YWcgZnJvbSBsaWIgYnVpbGRcbiAgICovXG4gIGN1dE5wbVB1Ymxpc2hMaWJSZWxlYXNlQ29kZTogYm9vbGVhbjtcbiAgLyoqXG4gKiBEbyBub3QgZ2VuZXJhdGUgYmFja2VuZCBjb2RlXG4gKi9cbiAgZ2VuT25seUNsaWVudENvZGU6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBvbmx5IGJhY2tlbmQsIHdpdGhvdXQgYnJvd3NlciB2ZXJzaW9uXG4gICAqL1xuICBvbmx5QmFja2VuZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9wdGlvbmFsbHkgd2UgY2FuIHN0YXJ0IGJ1aWxkIG9mIHNtYXJ0IGNvbnRhaW5lclxuICAgKiB3aXRoIGRpZmZlcmVudCBhcHBcbiAgICovXG4gIHNtYXJ0Q29udGFpbmVyVGFyZ2V0TmFtZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBzdGF0aWMgZnJvbShvcHRpb25zOiBPbWl0PFBhcnRpYWw8QnVpbGRPcHRpb25zPiwgJ2FwcEJ1aWxkJyB8ICdzZXJ2ZUFwcCc+KTogQnVpbGRPcHRpb25zIHtcbiAgICByZXR1cm4gZnJvbShvcHRpb25zLCBCdWlsZE9wdGlvbnMpO1xuICB9XG59XG5cblxuXG5leHBvcnQgY2xhc3MgUmVsZWFzZU9wdGlvbnMgZXh0ZW5kcyBCdWlsZE9wdGlvbnNMaWJPckFwcDxSZWxlYXNlT3B0aW9ucz4ge1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJlbGVhc2VUeXBlID0gJ3BhdGNoJztcbiAgICB0aGlzLnJlc29sdmVkID0gW107XG4gIH1cbiAgcmVsZWFzZVR5cGU6IENvcmVNb2RlbHMuUmVsZWFzZVR5cGU7XG4gIHNob3VsZFJlbGVhc2VMaWJyYXJ5OiBib29sZWFuO1xuICAvKipcbiAgICogYnVpbGQgYWN0aW9uIG9ubHkgZm9yIHNwZWN5ZmljIGZyYW1ld29yayB2ZXJzaW9uIG9mIHByb2hlY3RcbiAgICovXG4gIGZyYW1ld29ya1ZlcnNpb246IENvcmVNb2RlbHMuRnJhbWV3b3JrVmVyc2lvbjtcbiAgLyoqXG4gICAqIHN0YXJ0IHJlbGVhc2Ugb24gcHJvamVjdFxuICAgKi9cbiAgc3RhcnQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiByZWxlYXNlIG9ubHkgc3BlY2lmaWVkIHByb2plY3RzXG4gICAqL1xuICBvbmx5Pzogc3RyaW5nIHwgc3RyaW5nW107XG4gIC8qKlxuICAgKiBlbmQgcmVsZWFzZSBvbiBwcm9qZWN0XG4gICAqL1xuICBlbmQ/OiBzdHJpbmc7XG4gIHNraXBQcm9qZWN0UHJvY2VzczogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFByb2plY3RzIHRvIHJlbGVhc2UgaW4gY29udGFpbmVyXG4gICAqL1xuICByZXNvbHZlZDogUHJvamVjdFtdO1xuICAvKipcbiAgICogcXVpY2sgYXV0b21hdGljIHJlbGVhc2Ugb2YgbGliXG4gICAqL1xuICBhdXRvbWF0aWNSZWxlYXNlOiBib29sZWFuO1xuICAvKipcbiAgKiBxdWljayBhdXRvbWF0aWMgcmVsZWFzZSBvZiBkb2NzIGFwcChzKVxuICAqL1xuICBhdXRvbWF0aWNSZWxlYXNlRG9jczogYm9vbGVhbjtcbiAgYnVtYlZlcnNpb25Jbjogc3RyaW5nW107XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgc3BlY2lmaWVkVmVyc2lvbjogc3RyaW5nO1xuICByZWxlYXNlVGFyZ2V0OiAnbGliJyB8ICdhcHAnIHwgJ2xpYi1hcHAnO1xuICBwdWJsaWMgc3RhdGljIGZyb20ob3B0aW9uczogUGFydGlhbDxSZWxlYXNlT3B0aW9ucz4pOiBSZWxlYXNlT3B0aW9ucyB7XG4gICAgcmV0dXJuIGZyb20ob3B0aW9ucywgUmVsZWFzZU9wdGlvbnMpO1xuICB9XG59XG5cblxuXG5mdW5jdGlvbiBmcm9tKG9wdGlvbnM6IFBhcnRpYWw8SW5pdE9wdGlvbnMgfCBCdWlsZE9wdGlvbnMgfCBSZWxlYXNlT3B0aW9ucz4sIGNsYXNzRm46IEZ1bmN0aW9uKSB7XG4gIGNvbnN0IG9yZ0ZpbmlzaENhbGxiYWNrID0gb3B0aW9ucz8uZmluaXNoQ2FsbGJhY2s7XG4gIG9wdGlvbnMgPSAob3B0aW9ucyA/IG9wdGlvbnMgOiB7fSkgYXMgYW55O1xuICBjb25zdCByZXMgPSBfLm1lcmdlKG5ldyAoY2xhc3NGbiBhcyBhbnkpKCksIF8uY2xvbmVEZWVwKG9wdGlvbnMpKTtcbiAgaWYgKG9yZ0ZpbmlzaENhbGxiYWNrKSB7XG4gICAgcmVzLmZpbmlzaENhbGxiYWNrID0gb3JnRmluaXNoQ2FsbGJhY2s7XG4gIH0gZWxzZSB7XG4gICAgcmVzLmZpbmlzaENhbGxiYWNrID0gKCkgPT4geyB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRucCBsaWIvYnVpbGQtb3B0aW9ucy50cyJdfQ==
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L3RucC9wcm9qZWN0cy90bnAvc3JjL2xpYi9idWlsZC1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBYyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUlwRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHekQsTUFBTSxVQUFVO0lBQ2QsZ0JBQXlCLENBQUM7SUFFbkIsS0FBSyxDQUFDLFFBQW9CO1FBQy9CLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRTVFLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxTQUFhLFNBQVEsVUFBYTtJQVc3Qzs7Ozs7Ozs7OztPQVVHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxDQUFDO1FBQ1osSUFBSSxDQUFDLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDO0NBSUY7QUFFRCxNQUFNLG9CQUF3QixTQUFRLFNBQVk7Q0FZakQ7QUFJRCxNQUFNLE9BQU8sVUFBVyxTQUFRLFVBQXNCO0NBRXJEO0FBSUQsTUFBTSxPQUFPLFdBQVksU0FBUSxTQUFzQjtJQUVyRDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBVU0sTUFBTSxDQUFDLElBQUksQ0FBQyxPQUE2QjtRQUM5QyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBcUI7UUFDM0MsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV6QyxNQUFNLFdBQVcsR0FBRztZQUNsQixVQUFVO1lBQ1YsT0FBTztZQUNQLFFBQVE7WUFDUiwwQkFBMEI7WUFDMUIsSUFBSTtZQUNKLFdBQVc7WUFDWCxNQUFNO1lBQ04sc0JBQXNCO1lBQ3RCLDRCQUE0QjtTQUNILENBQUM7UUFFNUIsS0FBSyxNQUFNLElBQUksSUFBSSxXQUFXLEVBQUU7WUFDOUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7Z0JBQ2pDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbkM7U0FDRjtRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxPQUFnQixJQUFHLENBQUM7Q0FDakQ7QUFJRCxNQUFNLE9BQU8sWUFBYSxTQUFRLG9CQUFrQztJQUdsRSxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDO0lBQ2xFLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxJQUFJLDZCQUE2QjtRQUNuQyxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQU9EOztPQUVHO0lBQ0gsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUM7UUFDaEIsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBQ0QsSUFBSSxrQkFBa0IsQ0FBQyxLQUFLO1FBQzFCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQStCTSxNQUFNLENBQUMsSUFBSSxDQUNoQixPQUE2RDtRQUU3RCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDckMsQ0FBQztDQUNGO0FBSUQsTUFBTSxPQUFPLGNBQWUsU0FBUSxvQkFBb0M7SUFDdEU7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFzQ00sTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFnQztRQUNqRCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGO0FBSUQsU0FBUyxJQUFJLENBQ1gsT0FBNkQsRUFDN0QsT0FBaUI7SUFFakIsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLEVBQUUsY0FBYyxDQUFDO0lBQ2xELE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQVEsQ0FBQztJQUMxQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUssT0FBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLElBQUksaUJBQWlCLEVBQUU7UUFDckIsR0FBRyxDQUFDLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQztLQUN4QztTQUFNO1FBQ0wsR0FBRyxDQUFDLGNBQWMsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7S0FDL0I7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHFEQUFxRCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBDb3JlTW9kZWxzLCBfLCBjcm9zc1BsYXRmb3JtUGF0aCB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0IH0gZnJvbSAnLi9wcm9qZWN0L2Fic3RyYWN0L3Byb2plY3QnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAndG5wLWNvbmZpZy9icm93c2VyJztcbmltcG9ydCB7IE1vZGVscyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IENMQVNTIH0gZnJvbSAndHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL2Jyb3dzZXInO1xuXG5cbmNsYXNzIFN5c3RlbVRhc2s8VD4ge1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7fVxuICBmaW5pc2hDYWxsYmFjazogKCkgPT4gYW55O1xuICBwdWJsaWMgY2xvbmUob3ZlcnJpZGU6IFBhcnRpYWw8VD4pOiBUIHtcbiAgICBjb25zdCBjbGFzc0ZuID0gQ0xBU1MuZ2V0RnJvbU9iamVjdCh0aGlzKTtcbiAgICBjb25zdCByZXN1bHQgPSBfLm1lcmdlKG5ldyBjbGFzc0ZuKCksIF8ubWVyZ2UoXy5jbG9uZURlZXAodGhpcyksIG92ZXJyaWRlKSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCYXNlQnVpbGQ8VD4gZXh0ZW5kcyBTeXN0ZW1UYXNrPFQ+IHtcbiAgLyoqXG4gICAqIHdhdGNoIGJ1aWxkXG4gICAqL1xuICB3YXRjaDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIGJ1aWxkIG9uIHJlbW90ZSBzZXJ2ZXIgKHVzZXIgY2Fubm90IGludGVyZmVyZSB3aXRoIGNvbnNvbGUpXG4gICAqIHdpdGhvdXQgdXNlciBpbnRlcmFjdGlvblxuICAgKi9cbiAgY2k6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGJhc2UtaHJlZiAtPiBpcyBhIHBhcnQgb2YgbGliIGNvZGUgYnVpbGRcbiAgICpcbiAgICogb3ZlcndpdGUgYmFzZSBocmVmIGZvciBhcHAgZGVwbG95bWVudC5cbiAgICogTXVzdCBiZSBhdCBsZWFzdCBlcXVhbDogJy8nXG4gICAqXG4gICAqIGRlZmF1bHQ6IC9cbiAgICogZGVmYXVsdCBmb3IgZ2l0aHViIHBhZ2VzIHN0YW5kYWxvbmUgcHJvamVjdDogJy88cHJvamVjdC1uYW1lLW9yLW92ZXJ3cml0dGVuPi8nXG4gICAqIGRlZmF1bHQgZm9yIG9yZ2FuaXphaW9uIG1haW4gdGFyZ2V0OiAnLzxwcm9qZWN0LW5hbWUtb3Itb3ZlcndyaXR0ZW4+LydcbiAgICogZGVmYXVsdCBmb3Igb3JnYW5pemFpb24gbWFpbiBvdGhlciB0YXJnZXRzOiAnLzxwcm9qZWN0LW5hbWUtb3Itb3ZlcndyaXR0ZW4+Ly0vPG90aGVyLXRhcmdldC1uYW1lPi8nXG4gICAqL1xuICBnZXQgYmFzZUhyZWYoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYmFzZUhyZWY7XG4gIH1cbiAgc2V0IGJhc2VIcmVmKHYpIHtcbiAgICB0aGlzLl9iYXNlSHJlZiA9IGNyb3NzUGxhdGZvcm1QYXRoKHYpO1xuICB9XG4gIHByaXZhdGUgX2Jhc2VIcmVmOiBzdHJpbmc7XG4gIGRpc2FibGVTZXJ2aWNlV29ya2VyOiBib29sZWFuO1xuICBidWlsZEFuZ3VsYXJBcHBGb3JFbGVjdHJvbjogYm9vbGVhbjtcbn1cblxuY2xhc3MgQnVpbGRPcHRpb25zTGliT3JBcHA8VD4gZXh0ZW5kcyBCYXNlQnVpbGQ8VD4ge1xuICBjbGlCdWlsZE5vRHRzOiBib29sZWFuO1xuICBjbGlCdWlsZFVnbGlmeTogYm9vbGVhbjtcbiAgY2xpQnVpbGRPYnNjdXJlOiBib29sZWFuO1xuICBjbGlCdWlsZEluY2x1ZGVOb2RlTW9kdWxlczogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEVuYWJsZSBhbGwgcHJvZHVjdGlvbiBvcHRpbWFsaXphdGlvbiBmb3IgYnVpbGRcbiAgICogLSBtaW5pZmljYXRpb25cbiAgICogLSBjYWNoZXNcbiAgICogZXRjLlxuICAgKi9cbiAgcHJvZDogYm9vbGVhbjtcbn1cblxuXG5cbmV4cG9ydCBjbGFzcyBOZXdPcHRpb25zIGV4dGVuZHMgU3lzdGVtVGFzazxOZXdPcHRpb25zPiB7XG4gIGJyYW5kaW5nOiBib29sZWFuO1xufVxuXG5cblxuZXhwb3J0IGNsYXNzIEluaXRPcHRpb25zIGV4dGVuZHMgQmFzZUJ1aWxkPEluaXRPcHRpb25zPiB7XG4gIHJlYWRvbmx5IGFscmVhZHlJbml0ZWRQb3JqZWN0czogUHJvamVjdFtdO1xuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hbHJlYWR5SW5pdGVkUG9yamVjdHMgPSBbXTtcbiAgfVxuICBvbWl0Q2hpbGRyZW46IGJvb2xlYW47XG4gIGluaXRpYXRvcjogUHJvamVjdDtcbiAgLyoqXG4gICAqIGluaXQgb25seSBzdHJ1Y3RyZSB3aXRob3V0IGRlcHNcbiAgICovXG4gIHN0cnVjdDogYm9vbGVhbjtcbiAgd2Vic3FsOiBib29sZWFuO1xuICBicmFuZGluZzogYm9vbGVhbjtcblxuICBwdWJsaWMgc3RhdGljIGZyb20ob3B0aW9uczogUGFydGlhbDxJbml0T3B0aW9ucz4pOiBJbml0T3B0aW9ucyB7XG4gICAgcmV0dXJuIGZyb20ob3B0aW9ucywgSW5pdE9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBmcm9tQnVpbGQob3B0aW9uczogQnVpbGRPcHRpb25zKTogSW5pdE9wdGlvbnMge1xuICAgIGNvbnN0IGluaXRPcHRpb25zID0gSW5pdE9wdGlvbnMuZnJvbSh7fSk7XG5cbiAgICBjb25zdCBwcm9wc1RvSW5pdCA9IFtcbiAgICAgICdiYXNlSHJlZicsXG4gICAgICAnd2F0Y2gnLFxuICAgICAgJ3dlYnNxbCcsXG4gICAgICAnc21hcnRDb250YWluZXJUYXJnZXROYW1lJyxcbiAgICAgICdjaScsXG4gICAgICAndGFyZ2V0QXBwJyxcbiAgICAgICdwcm9kJyxcbiAgICAgICdkaXNhYmxlU2VydmljZVdvcmtlcicsXG4gICAgICAnYnVpbGRBbmd1bGFyQXBwRm9yRWxlY3Ryb24nLFxuICAgIF0gYXMgKGtleW9mIEJ1aWxkT3B0aW9ucylbXTtcblxuICAgIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wc1RvSW5pdCkge1xuICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKG9wdGlvbnNbcHJvcF0pKSB7XG4gICAgICAgIGluaXRPcHRpb25zW3Byb3BdID0gb3B0aW9uc1twcm9wXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaW5pdE9wdGlvbnM7XG4gIH1cblxuICBwdWJsaWMgZmlsbEJhc2VIcmVmRnJvbUZpbGUocHJvamVjdDogUHJvamVjdCkge31cbn1cblxuXG5cbmV4cG9ydCBjbGFzcyBCdWlsZE9wdGlvbnMgZXh0ZW5kcyBCdWlsZE9wdGlvbnNMaWJPckFwcDxCdWlsZE9wdGlvbnM+IHtcbiAgcmVhZG9ubHkgb3V0RGlyOiAnZGlzdCc7XG4gIHJlYWRvbmx5IHRhcmdldEFwcDogJ3B3YScgfCAnZWxlY3Ryb24nO1xuICBnZXQgYXBwQnVpbGQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRUeXBlID09PSAnYXBwJyB8fCB0aGlzLmJ1aWxkVHlwZSA9PT0gJ2xpYi1hcHAnO1xuICB9XG4gIGdldCBsaWJCdWlsZCgpIHtcbiAgICByZXR1cm4gdGhpcy5idWlsZFR5cGUgPT09ICdsaWInIHx8IHRoaXMuYnVpbGRUeXBlID09PSAnbGliLWFwcCc7XG4gIH1cblxuICBnZXQgdGVtcG9yYXJ5U3JjRm9yUmVsZWFzZUN1dENvZGUoKSB7XG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5vdXREaXIgPSAnZGlzdCc7XG4gICAgdGhpcy50YXJnZXRBcHAgPSAncHdhJztcbiAgfVxuICAvKipcbiAgICpcbiAgICovXG4gIHdlYnNxbDogYm9vbGVhbjtcbiAgYnVpbGRUeXBlOiAnbGliJyB8ICdhcHAnIHwgJ2xpYi1hcHAnO1xuICBwcml2YXRlIF9za2lwUHJvamVjdFByb2Nlc3M6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTa2lwIHByb2plY3QgcHJvY2VzcyBmb3IgYXNzaWduaW5nIGF1dG9tYXRpYyBwb3J0c1xuICAgKi9cbiAgZ2V0IHNraXBQcm9qZWN0UHJvY2VzcygpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG4gIHNldCBza2lwUHJvamVjdFByb2Nlc3ModmFsdWUpIHtcbiAgICB0aGlzLl9za2lwUHJvamVjdFByb2Nlc3MgPSB2YWx1ZTtcbiAgfVxuXG4gIHNraXBDb3B5TWFuYWdlcjogYm9vbGVhbjtcbiAgLyoqXG4gICAqIGJ1aWxkIGV4ZWN1dGVkIGRydXJpbmcgbGliIHJlbGVhc2VcbiAgICovXG4gIGJ1aWxkRm9yUmVsZWFzZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogZGVmYXVsdDogJzxwcm9qZWN0LWxvY2FpdG9uPi9kaXN0LWFwcCdcbiAgICogZGVmYXVsdCBmb3IgZ2l0aHViIHBhZ2U6ICc8cHJvamVjdC1sb2NhdGlvbj4vZG9jcydcbiAgICovXG4gIGFwcEJ1aWxkTG9jYXRpb246IHN0cmluZztcbiAgLyoqXG4gICAqIEN1dCA8QD5ub3RGb3JOcG0gIHRhZyBmcm9tIGxpYiBidWlsZFxuICAgKi9cbiAgY3V0TnBtUHVibGlzaExpYlJlbGVhc2VDb2RlOiBib29sZWFuO1xuICAvKipcbiAgICogRG8gbm90IGdlbmVyYXRlIGJhY2tlbmQgY29kZVxuICAgKi9cbiAgZ2VuT25seUNsaWVudENvZGU6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBvbmx5IGJhY2tlbmQsIHdpdGhvdXQgYnJvd3NlciB2ZXJzaW9uXG4gICAqL1xuICBvbmx5QmFja2VuZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9wdGlvbmFsbHkgd2UgY2FuIHN0YXJ0IGJ1aWxkIG9mIHNtYXJ0IGNvbnRhaW5lclxuICAgKiB3aXRoIGRpZmZlcmVudCBhcHBcbiAgICovXG4gIHNtYXJ0Q29udGFpbmVyVGFyZ2V0TmFtZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBzdGF0aWMgZnJvbShcbiAgICBvcHRpb25zOiBPbWl0PFBhcnRpYWw8QnVpbGRPcHRpb25zPiwgJ2FwcEJ1aWxkJyB8ICdzZXJ2ZUFwcCc+LFxuICApOiBCdWlsZE9wdGlvbnMge1xuICAgIHJldHVybiBmcm9tKG9wdGlvbnMsIEJ1aWxkT3B0aW9ucyk7XG4gIH1cbn1cblxuXG5cbmV4cG9ydCBjbGFzcyBSZWxlYXNlT3B0aW9ucyBleHRlbmRzIEJ1aWxkT3B0aW9uc0xpYk9yQXBwPFJlbGVhc2VPcHRpb25zPiB7XG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJlbGVhc2VUeXBlID0gJ3BhdGNoJztcbiAgICB0aGlzLnJlc29sdmVkID0gW107XG4gIH1cbiAgcmVsZWFzZVR5cGU6IENvcmVNb2RlbHMuUmVsZWFzZVR5cGU7XG4gIHNob3VsZFJlbGVhc2VMaWJyYXJ5OiBib29sZWFuO1xuICAvKipcbiAgICogYnVpbGQgYWN0aW9uIG9ubHkgZm9yIHNwZWN5ZmljIGZyYW1ld29yayB2ZXJzaW9uIG9mIHByb2hlY3RcbiAgICovXG4gIGZyYW1ld29ya1ZlcnNpb246IENvcmVNb2RlbHMuRnJhbWV3b3JrVmVyc2lvbjtcbiAgLyoqXG4gICAqIHN0YXJ0IHJlbGVhc2Ugb24gcHJvamVjdFxuICAgKi9cbiAgc3RhcnQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiByZWxlYXNlIG9ubHkgc3BlY2lmaWVkIHByb2plY3RzXG4gICAqL1xuICBvbmx5Pzogc3RyaW5nIHwgc3RyaW5nW107XG4gIC8qKlxuICAgKiBlbmQgcmVsZWFzZSBvbiBwcm9qZWN0XG4gICAqL1xuICBlbmQ/OiBzdHJpbmc7XG4gIHNraXBQcm9qZWN0UHJvY2VzczogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFByb2plY3RzIHRvIHJlbGVhc2UgaW4gY29udGFpbmVyXG4gICAqL1xuICByZXNvbHZlZDogUHJvamVjdFtdO1xuICAvKipcbiAgICogcXVpY2sgYXV0b21hdGljIHJlbGVhc2Ugb2YgbGliXG4gICAqL1xuICBhdXRvbWF0aWNSZWxlYXNlOiBib29sZWFuO1xuICAvKipcbiAgICogcXVpY2sgYXV0b21hdGljIHJlbGVhc2Ugb2YgZG9jcyBhcHAocylcbiAgICovXG4gIGF1dG9tYXRpY1JlbGVhc2VEb2NzOiBib29sZWFuO1xuICBidW1iVmVyc2lvbkluOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBzcGVjaWZpZWRWZXJzaW9uOiBzdHJpbmc7XG4gIHJlbGVhc2VUYXJnZXQ6ICdsaWInIHwgJ2FwcCcgfCAnbGliLWFwcCc7XG4gIHB1YmxpYyBzdGF0aWMgZnJvbShvcHRpb25zOiBQYXJ0aWFsPFJlbGVhc2VPcHRpb25zPik6IFJlbGVhc2VPcHRpb25zIHtcbiAgICByZXR1cm4gZnJvbShvcHRpb25zLCBSZWxlYXNlT3B0aW9ucyk7XG4gIH1cbn1cblxuXG5cbmZ1bmN0aW9uIGZyb20oXG4gIG9wdGlvbnM6IFBhcnRpYWw8SW5pdE9wdGlvbnMgfCBCdWlsZE9wdGlvbnMgfCBSZWxlYXNlT3B0aW9ucz4sXG4gIGNsYXNzRm46IEZ1bmN0aW9uLFxuKSB7XG4gIGNvbnN0IG9yZ0ZpbmlzaENhbGxiYWNrID0gb3B0aW9ucz8uZmluaXNoQ2FsbGJhY2s7XG4gIG9wdGlvbnMgPSAob3B0aW9ucyA/IG9wdGlvbnMgOiB7fSkgYXMgYW55O1xuICBjb25zdCByZXMgPSBfLm1lcmdlKG5ldyAoY2xhc3NGbiBhcyBhbnkpKCksIF8uY2xvbmVEZWVwKG9wdGlvbnMpKTtcbiAgaWYgKG9yZ0ZpbmlzaENhbGxiYWNrKSB7XG4gICAgcmVzLmZpbmlzaENhbGxiYWNrID0gb3JnRmluaXNoQ2FsbGJhY2s7XG4gIH0gZWxzZSB7XG4gICAgcmVzLmZpbmlzaENhbGxiYWNrID0gKCkgPT4ge307XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRucCBsaWIvYnVpbGQtb3B0aW9ucy50cyJdfQ==