pdf-creator-node 1.4.0 → 1.4.1

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 (1238) hide show
  1. package/package.json +2 -2
  2. package/.DS_Store +0 -0
  3. package/example/index.js +0 -42
  4. package/example/node_modules/ajv/.tonic_example.js +0 -20
  5. package/example/node_modules/ajv/LICENSE +0 -22
  6. package/example/node_modules/ajv/README.md +0 -1344
  7. package/example/node_modules/ajv/dist/ajv.bundle.js +0 -7165
  8. package/example/node_modules/ajv/dist/ajv.min.js +0 -3
  9. package/example/node_modules/ajv/dist/ajv.min.js.map +0 -1
  10. package/example/node_modules/ajv/lib/.DS_Store +0 -0
  11. package/example/node_modules/ajv/lib/ajv.d.ts +0 -389
  12. package/example/node_modules/ajv/lib/ajv.js +0 -497
  13. package/example/node_modules/ajv/lib/cache.js +0 -26
  14. package/example/node_modules/ajv/lib/compile/async.js +0 -90
  15. package/example/node_modules/ajv/lib/compile/equal.js +0 -5
  16. package/example/node_modules/ajv/lib/compile/error_classes.js +0 -34
  17. package/example/node_modules/ajv/lib/compile/formats.js +0 -149
  18. package/example/node_modules/ajv/lib/compile/index.js +0 -387
  19. package/example/node_modules/ajv/lib/compile/resolve.js +0 -270
  20. package/example/node_modules/ajv/lib/compile/rules.js +0 -66
  21. package/example/node_modules/ajv/lib/compile/schema_obj.js +0 -9
  22. package/example/node_modules/ajv/lib/compile/ucs2length.js +0 -20
  23. package/example/node_modules/ajv/lib/compile/util.js +0 -274
  24. package/example/node_modules/ajv/lib/data.js +0 -49
  25. package/example/node_modules/ajv/lib/dot/_limit.jst +0 -104
  26. package/example/node_modules/ajv/lib/dot/_limitItems.jst +0 -10
  27. package/example/node_modules/ajv/lib/dot/_limitLength.jst +0 -10
  28. package/example/node_modules/ajv/lib/dot/_limitProperties.jst +0 -10
  29. package/example/node_modules/ajv/lib/dot/allOf.jst +0 -34
  30. package/example/node_modules/ajv/lib/dot/anyOf.jst +0 -48
  31. package/example/node_modules/ajv/lib/dot/coerce.def +0 -61
  32. package/example/node_modules/ajv/lib/dot/comment.jst +0 -9
  33. package/example/node_modules/ajv/lib/dot/const.jst +0 -11
  34. package/example/node_modules/ajv/lib/dot/contains.jst +0 -57
  35. package/example/node_modules/ajv/lib/dot/custom.jst +0 -191
  36. package/example/node_modules/ajv/lib/dot/defaults.def +0 -47
  37. package/example/node_modules/ajv/lib/dot/definitions.def +0 -199
  38. package/example/node_modules/ajv/lib/dot/dependencies.jst +0 -80
  39. package/example/node_modules/ajv/lib/dot/enum.jst +0 -30
  40. package/example/node_modules/ajv/lib/dot/errors.def +0 -194
  41. package/example/node_modules/ajv/lib/dot/format.jst +0 -106
  42. package/example/node_modules/ajv/lib/dot/if.jst +0 -75
  43. package/example/node_modules/ajv/lib/dot/items.jst +0 -100
  44. package/example/node_modules/ajv/lib/dot/missing.def +0 -39
  45. package/example/node_modules/ajv/lib/dot/multipleOf.jst +0 -20
  46. package/example/node_modules/ajv/lib/dot/not.jst +0 -43
  47. package/example/node_modules/ajv/lib/dot/oneOf.jst +0 -54
  48. package/example/node_modules/ajv/lib/dot/pattern.jst +0 -14
  49. package/example/node_modules/ajv/lib/dot/properties.jst +0 -244
  50. package/example/node_modules/ajv/lib/dot/propertyNames.jst +0 -54
  51. package/example/node_modules/ajv/lib/dot/ref.jst +0 -85
  52. package/example/node_modules/ajv/lib/dot/required.jst +0 -108
  53. package/example/node_modules/ajv/lib/dot/uniqueItems.jst +0 -62
  54. package/example/node_modules/ajv/lib/dot/validate.jst +0 -282
  55. package/example/node_modules/ajv/lib/dotjs/README.md +0 -3
  56. package/example/node_modules/ajv/lib/dotjs/_limit.js +0 -157
  57. package/example/node_modules/ajv/lib/dotjs/_limitItems.js +0 -77
  58. package/example/node_modules/ajv/lib/dotjs/_limitLength.js +0 -82
  59. package/example/node_modules/ajv/lib/dotjs/_limitProperties.js +0 -77
  60. package/example/node_modules/ajv/lib/dotjs/allOf.js +0 -43
  61. package/example/node_modules/ajv/lib/dotjs/anyOf.js +0 -74
  62. package/example/node_modules/ajv/lib/dotjs/comment.js +0 -14
  63. package/example/node_modules/ajv/lib/dotjs/const.js +0 -56
  64. package/example/node_modules/ajv/lib/dotjs/contains.js +0 -82
  65. package/example/node_modules/ajv/lib/dotjs/custom.js +0 -228
  66. package/example/node_modules/ajv/lib/dotjs/dependencies.js +0 -168
  67. package/example/node_modules/ajv/lib/dotjs/enum.js +0 -66
  68. package/example/node_modules/ajv/lib/dotjs/format.js +0 -150
  69. package/example/node_modules/ajv/lib/dotjs/if.js +0 -104
  70. package/example/node_modules/ajv/lib/dotjs/index.js +0 -33
  71. package/example/node_modules/ajv/lib/dotjs/items.js +0 -141
  72. package/example/node_modules/ajv/lib/dotjs/multipleOf.js +0 -77
  73. package/example/node_modules/ajv/lib/dotjs/not.js +0 -84
  74. package/example/node_modules/ajv/lib/dotjs/oneOf.js +0 -73
  75. package/example/node_modules/ajv/lib/dotjs/pattern.js +0 -75
  76. package/example/node_modules/ajv/lib/dotjs/properties.js +0 -330
  77. package/example/node_modules/ajv/lib/dotjs/propertyNames.js +0 -82
  78. package/example/node_modules/ajv/lib/dotjs/ref.js +0 -124
  79. package/example/node_modules/ajv/lib/dotjs/required.js +0 -270
  80. package/example/node_modules/ajv/lib/dotjs/uniqueItems.js +0 -86
  81. package/example/node_modules/ajv/lib/dotjs/validate.js +0 -494
  82. package/example/node_modules/ajv/lib/keyword.js +0 -178
  83. package/example/node_modules/ajv/lib/refs/data.json +0 -17
  84. package/example/node_modules/ajv/lib/refs/json-schema-draft-04.json +0 -149
  85. package/example/node_modules/ajv/lib/refs/json-schema-draft-06.json +0 -154
  86. package/example/node_modules/ajv/lib/refs/json-schema-draft-07.json +0 -168
  87. package/example/node_modules/ajv/lib/refs/json-schema-secure.json +0 -94
  88. package/example/node_modules/ajv/package.json +0 -129
  89. package/example/node_modules/ajv/scripts/.eslintrc.yml +0 -3
  90. package/example/node_modules/ajv/scripts/bundle.js +0 -61
  91. package/example/node_modules/ajv/scripts/compile-dots.js +0 -73
  92. package/example/node_modules/ajv/scripts/info +0 -10
  93. package/example/node_modules/ajv/scripts/prepare-tests +0 -12
  94. package/example/node_modules/ajv/scripts/publish-built-version +0 -32
  95. package/example/node_modules/ajv/scripts/travis-gh-pages +0 -23
  96. package/example/node_modules/asn1/LICENSE +0 -19
  97. package/example/node_modules/asn1/README.md +0 -50
  98. package/example/node_modules/asn1/lib/ber/errors.js +0 -13
  99. package/example/node_modules/asn1/lib/ber/index.js +0 -27
  100. package/example/node_modules/asn1/lib/ber/reader.js +0 -262
  101. package/example/node_modules/asn1/lib/ber/types.js +0 -36
  102. package/example/node_modules/asn1/lib/ber/writer.js +0 -317
  103. package/example/node_modules/asn1/lib/index.js +0 -20
  104. package/example/node_modules/asn1/package.json +0 -79
  105. package/example/node_modules/assert-plus/AUTHORS +0 -6
  106. package/example/node_modules/assert-plus/CHANGES.md +0 -14
  107. package/example/node_modules/assert-plus/README.md +0 -162
  108. package/example/node_modules/assert-plus/assert.js +0 -211
  109. package/example/node_modules/assert-plus/package.json +0 -91
  110. package/example/node_modules/asynckit/LICENSE +0 -21
  111. package/example/node_modules/asynckit/README.md +0 -233
  112. package/example/node_modules/asynckit/bench.js +0 -76
  113. package/example/node_modules/asynckit/index.js +0 -6
  114. package/example/node_modules/asynckit/lib/abort.js +0 -29
  115. package/example/node_modules/asynckit/lib/async.js +0 -34
  116. package/example/node_modules/asynckit/lib/defer.js +0 -26
  117. package/example/node_modules/asynckit/lib/iterate.js +0 -75
  118. package/example/node_modules/asynckit/lib/readable_asynckit.js +0 -91
  119. package/example/node_modules/asynckit/lib/readable_parallel.js +0 -25
  120. package/example/node_modules/asynckit/lib/readable_serial.js +0 -25
  121. package/example/node_modules/asynckit/lib/readable_serial_ordered.js +0 -29
  122. package/example/node_modules/asynckit/lib/state.js +0 -37
  123. package/example/node_modules/asynckit/lib/streamify.js +0 -141
  124. package/example/node_modules/asynckit/lib/terminator.js +0 -29
  125. package/example/node_modules/asynckit/package.json +0 -95
  126. package/example/node_modules/asynckit/parallel.js +0 -43
  127. package/example/node_modules/asynckit/serial.js +0 -17
  128. package/example/node_modules/asynckit/serialOrdered.js +0 -75
  129. package/example/node_modules/asynckit/stream.js +0 -21
  130. package/example/node_modules/aws-sign2/LICENSE +0 -55
  131. package/example/node_modules/aws-sign2/README.md +0 -4
  132. package/example/node_modules/aws-sign2/index.js +0 -212
  133. package/example/node_modules/aws-sign2/package.json +0 -54
  134. package/example/node_modules/aws4/.travis.yml +0 -5
  135. package/example/node_modules/aws4/LICENSE +0 -19
  136. package/example/node_modules/aws4/README.md +0 -523
  137. package/example/node_modules/aws4/aws4.js +0 -332
  138. package/example/node_modules/aws4/lru.js +0 -96
  139. package/example/node_modules/aws4/package.json +0 -108
  140. package/example/node_modules/bcrypt-pbkdf/CONTRIBUTING.md +0 -13
  141. package/example/node_modules/bcrypt-pbkdf/LICENSE +0 -66
  142. package/example/node_modules/bcrypt-pbkdf/README.md +0 -45
  143. package/example/node_modules/bcrypt-pbkdf/index.js +0 -556
  144. package/example/node_modules/bcrypt-pbkdf/package.json +0 -48
  145. package/example/node_modules/buffer-from/LICENSE +0 -21
  146. package/example/node_modules/buffer-from/index.js +0 -69
  147. package/example/node_modules/buffer-from/package.json +0 -56
  148. package/example/node_modules/buffer-from/readme.md +0 -69
  149. package/example/node_modules/caseless/LICENSE +0 -28
  150. package/example/node_modules/caseless/README.md +0 -45
  151. package/example/node_modules/caseless/index.js +0 -67
  152. package/example/node_modules/caseless/package.json +0 -60
  153. package/example/node_modules/caseless/test.js +0 -67
  154. package/example/node_modules/combined-stream/License +0 -19
  155. package/example/node_modules/combined-stream/Readme.md +0 -138
  156. package/example/node_modules/combined-stream/lib/combined_stream.js +0 -208
  157. package/example/node_modules/combined-stream/package.json +0 -62
  158. package/example/node_modules/combined-stream/yarn.lock +0 -17
  159. package/example/node_modules/commander/CHANGELOG.md +0 -408
  160. package/example/node_modules/commander/LICENSE +0 -22
  161. package/example/node_modules/commander/Readme.md +0 -428
  162. package/example/node_modules/commander/index.js +0 -1224
  163. package/example/node_modules/commander/package.json +0 -74
  164. package/example/node_modules/commander/typings/index.d.ts +0 -310
  165. package/example/node_modules/concat-stream/LICENSE +0 -24
  166. package/example/node_modules/concat-stream/index.js +0 -144
  167. package/example/node_modules/concat-stream/package.json +0 -88
  168. package/example/node_modules/concat-stream/readme.md +0 -102
  169. package/example/node_modules/core-util-is/LICENSE +0 -19
  170. package/example/node_modules/core-util-is/README.md +0 -3
  171. package/example/node_modules/core-util-is/float.patch +0 -604
  172. package/example/node_modules/core-util-is/lib/util.js +0 -107
  173. package/example/node_modules/core-util-is/package.json +0 -67
  174. package/example/node_modules/core-util-is/test.js +0 -68
  175. package/example/node_modules/dashdash/CHANGES.md +0 -364
  176. package/example/node_modules/dashdash/LICENSE.txt +0 -24
  177. package/example/node_modules/dashdash/README.md +0 -574
  178. package/example/node_modules/dashdash/etc/dashdash.bash_completion.in +0 -389
  179. package/example/node_modules/dashdash/lib/dashdash.js +0 -1055
  180. package/example/node_modules/dashdash/package.json +0 -71
  181. package/example/node_modules/debug/.coveralls.yml +0 -1
  182. package/example/node_modules/debug/.eslintrc +0 -11
  183. package/example/node_modules/debug/.travis.yml +0 -14
  184. package/example/node_modules/debug/CHANGELOG.md +0 -362
  185. package/example/node_modules/debug/LICENSE +0 -19
  186. package/example/node_modules/debug/Makefile +0 -50
  187. package/example/node_modules/debug/README.md +0 -312
  188. package/example/node_modules/debug/component.json +0 -19
  189. package/example/node_modules/debug/karma.conf.js +0 -70
  190. package/example/node_modules/debug/node.js +0 -1
  191. package/example/node_modules/debug/package.json +0 -92
  192. package/example/node_modules/debug/src/browser.js +0 -185
  193. package/example/node_modules/debug/src/debug.js +0 -202
  194. package/example/node_modules/debug/src/index.js +0 -10
  195. package/example/node_modules/debug/src/inspector-log.js +0 -15
  196. package/example/node_modules/debug/src/node.js +0 -248
  197. package/example/node_modules/delayed-stream/License +0 -19
  198. package/example/node_modules/delayed-stream/Makefile +0 -7
  199. package/example/node_modules/delayed-stream/Readme.md +0 -141
  200. package/example/node_modules/delayed-stream/lib/delayed_stream.js +0 -107
  201. package/example/node_modules/delayed-stream/package.json +0 -66
  202. package/example/node_modules/ecc-jsbn/LICENSE +0 -21
  203. package/example/node_modules/ecc-jsbn/README.md +0 -8
  204. package/example/node_modules/ecc-jsbn/index.js +0 -58
  205. package/example/node_modules/ecc-jsbn/lib/LICENSE-jsbn +0 -40
  206. package/example/node_modules/ecc-jsbn/lib/ec.js +0 -561
  207. package/example/node_modules/ecc-jsbn/lib/sec.js +0 -170
  208. package/example/node_modules/ecc-jsbn/package.json +0 -69
  209. package/example/node_modules/ecc-jsbn/test.js +0 -14
  210. package/example/node_modules/es6-promise/CHANGELOG.md +0 -155
  211. package/example/node_modules/es6-promise/LICENSE +0 -19
  212. package/example/node_modules/es6-promise/README.md +0 -97
  213. package/example/node_modules/es6-promise/auto.js +0 -4
  214. package/example/node_modules/es6-promise/dist/es6-promise.auto.js +0 -1176
  215. package/example/node_modules/es6-promise/dist/es6-promise.auto.map +0 -1
  216. package/example/node_modules/es6-promise/dist/es6-promise.auto.min.js +0 -1
  217. package/example/node_modules/es6-promise/dist/es6-promise.auto.min.map +0 -1
  218. package/example/node_modules/es6-promise/dist/es6-promise.js +0 -1174
  219. package/example/node_modules/es6-promise/dist/es6-promise.map +0 -1
  220. package/example/node_modules/es6-promise/dist/es6-promise.min.js +0 -1
  221. package/example/node_modules/es6-promise/dist/es6-promise.min.map +0 -1
  222. package/example/node_modules/es6-promise/es6-promise.d.ts +0 -85
  223. package/example/node_modules/es6-promise/lib/es6-promise/-internal.js +0 -243
  224. package/example/node_modules/es6-promise/lib/es6-promise/asap.js +0 -119
  225. package/example/node_modules/es6-promise/lib/es6-promise/enumerator.js +0 -124
  226. package/example/node_modules/es6-promise/lib/es6-promise/polyfill.js +0 -35
  227. package/example/node_modules/es6-promise/lib/es6-promise/promise/all.js +0 -52
  228. package/example/node_modules/es6-promise/lib/es6-promise/promise/race.js +0 -84
  229. package/example/node_modules/es6-promise/lib/es6-promise/promise/reject.js +0 -46
  230. package/example/node_modules/es6-promise/lib/es6-promise/promise/resolve.js +0 -48
  231. package/example/node_modules/es6-promise/lib/es6-promise/promise.js +0 -431
  232. package/example/node_modules/es6-promise/lib/es6-promise/then.js +0 -32
  233. package/example/node_modules/es6-promise/lib/es6-promise/utils.js +0 -21
  234. package/example/node_modules/es6-promise/lib/es6-promise.auto.js +0 -3
  235. package/example/node_modules/es6-promise/lib/es6-promise.js +0 -7
  236. package/example/node_modules/es6-promise/package.json +0 -110
  237. package/example/node_modules/extend/.editorconfig +0 -20
  238. package/example/node_modules/extend/.eslintrc +0 -17
  239. package/example/node_modules/extend/.jscs.json +0 -175
  240. package/example/node_modules/extend/.travis.yml +0 -230
  241. package/example/node_modules/extend/CHANGELOG.md +0 -83
  242. package/example/node_modules/extend/LICENSE +0 -23
  243. package/example/node_modules/extend/README.md +0 -81
  244. package/example/node_modules/extend/component.json +0 -32
  245. package/example/node_modules/extend/index.js +0 -117
  246. package/example/node_modules/extend/package.json +0 -79
  247. package/example/node_modules/extract-zip/.travis.yml +0 -9
  248. package/example/node_modules/extract-zip/CONTRIBUTING.md +0 -1
  249. package/example/node_modules/extract-zip/LICENSE +0 -23
  250. package/example/node_modules/extract-zip/cli.js +0 -20
  251. package/example/node_modules/extract-zip/index.js +0 -205
  252. package/example/node_modules/extract-zip/package.json +0 -73
  253. package/example/node_modules/extract-zip/readme.md +0 -49
  254. package/example/node_modules/extsprintf/.gitmodules +0 -0
  255. package/example/node_modules/extsprintf/LICENSE +0 -19
  256. package/example/node_modules/extsprintf/Makefile +0 -24
  257. package/example/node_modules/extsprintf/Makefile.targ +0 -285
  258. package/example/node_modules/extsprintf/README.md +0 -46
  259. package/example/node_modules/extsprintf/jsl.node.conf +0 -137
  260. package/example/node_modules/extsprintf/lib/extsprintf.js +0 -183
  261. package/example/node_modules/extsprintf/package.json +0 -48
  262. package/example/node_modules/fast-deep-equal/LICENSE +0 -21
  263. package/example/node_modules/fast-deep-equal/README.md +0 -58
  264. package/example/node_modules/fast-deep-equal/index.d.ts +0 -4
  265. package/example/node_modules/fast-deep-equal/index.js +0 -55
  266. package/example/node_modules/fast-deep-equal/package.json +0 -90
  267. package/example/node_modules/fast-json-stable-stringify/.eslintrc.yml +0 -26
  268. package/example/node_modules/fast-json-stable-stringify/.travis.yml +0 -8
  269. package/example/node_modules/fast-json-stable-stringify/LICENSE +0 -18
  270. package/example/node_modules/fast-json-stable-stringify/README.md +0 -119
  271. package/example/node_modules/fast-json-stable-stringify/benchmark/index.js +0 -31
  272. package/example/node_modules/fast-json-stable-stringify/benchmark/test.json +0 -137
  273. package/example/node_modules/fast-json-stable-stringify/example/key_cmp.js +0 -7
  274. package/example/node_modules/fast-json-stable-stringify/example/nested.js +0 -3
  275. package/example/node_modules/fast-json-stable-stringify/example/str.js +0 -3
  276. package/example/node_modules/fast-json-stable-stringify/example/value_cmp.js +0 -7
  277. package/example/node_modules/fast-json-stable-stringify/index.js +0 -59
  278. package/example/node_modules/fast-json-stable-stringify/package.json +0 -82
  279. package/example/node_modules/fast-json-stable-stringify/test/cmp.js +0 -13
  280. package/example/node_modules/fast-json-stable-stringify/test/nested.js +0 -44
  281. package/example/node_modules/fast-json-stable-stringify/test/str.js +0 -46
  282. package/example/node_modules/fast-json-stable-stringify/test/to-json.js +0 -22
  283. package/example/node_modules/fd-slicer/.travis.yml +0 -7
  284. package/example/node_modules/fd-slicer/CHANGELOG.md +0 -49
  285. package/example/node_modules/fd-slicer/LICENSE +0 -21
  286. package/example/node_modules/fd-slicer/README.md +0 -189
  287. package/example/node_modules/fd-slicer/index.js +0 -277
  288. package/example/node_modules/fd-slicer/package.json +0 -69
  289. package/example/node_modules/fd-slicer/test/test.js +0 -350
  290. package/example/node_modules/forever-agent/LICENSE +0 -55
  291. package/example/node_modules/forever-agent/README.md +0 -4
  292. package/example/node_modules/forever-agent/index.js +0 -138
  293. package/example/node_modules/forever-agent/package.json +0 -54
  294. package/example/node_modules/form-data/License +0 -19
  295. package/example/node_modules/form-data/README.md +0 -234
  296. package/example/node_modules/form-data/README.md.bak +0 -234
  297. package/example/node_modules/form-data/lib/browser.js +0 -2
  298. package/example/node_modules/form-data/lib/form_data.js +0 -457
  299. package/example/node_modules/form-data/lib/populate.js +0 -10
  300. package/example/node_modules/form-data/package.json +0 -102
  301. package/example/node_modules/form-data/yarn.lock +0 -2662
  302. package/example/node_modules/fs-extra/CHANGELOG.md +0 -656
  303. package/example/node_modules/fs-extra/LICENSE +0 -15
  304. package/example/node_modules/fs-extra/README.md +0 -603
  305. package/example/node_modules/fs-extra/lib/copy/copy.js +0 -50
  306. package/example/node_modules/fs-extra/lib/copy/index.js +0 -3
  307. package/example/node_modules/fs-extra/lib/copy/ncp.js +0 -232
  308. package/example/node_modules/fs-extra/lib/copy-sync/copy-file-sync.js +0 -42
  309. package/example/node_modules/fs-extra/lib/copy-sync/copy-sync.js +0 -56
  310. package/example/node_modules/fs-extra/lib/copy-sync/index.js +0 -3
  311. package/example/node_modules/fs-extra/lib/empty/index.js +0 -47
  312. package/example/node_modules/fs-extra/lib/ensure/file.js +0 -43
  313. package/example/node_modules/fs-extra/lib/ensure/index.js +0 -21
  314. package/example/node_modules/fs-extra/lib/ensure/link.js +0 -58
  315. package/example/node_modules/fs-extra/lib/ensure/symlink-paths.js +0 -96
  316. package/example/node_modules/fs-extra/lib/ensure/symlink-type.js +0 -27
  317. package/example/node_modules/fs-extra/lib/ensure/symlink.js +0 -62
  318. package/example/node_modules/fs-extra/lib/index.js +0 -38
  319. package/example/node_modules/fs-extra/lib/json/index.js +0 -9
  320. package/example/node_modules/fs-extra/lib/json/jsonfile.js +0 -14
  321. package/example/node_modules/fs-extra/lib/json/output-json-sync.js +0 -16
  322. package/example/node_modules/fs-extra/lib/json/output-json.js +0 -24
  323. package/example/node_modules/fs-extra/lib/mkdirs/index.js +0 -9
  324. package/example/node_modules/fs-extra/lib/mkdirs/mkdirs-sync.js +0 -57
  325. package/example/node_modules/fs-extra/lib/mkdirs/mkdirs.js +0 -61
  326. package/example/node_modules/fs-extra/lib/mkdirs/win32.js +0 -24
  327. package/example/node_modules/fs-extra/lib/move/index.js +0 -161
  328. package/example/node_modules/fs-extra/lib/output/index.js +0 -35
  329. package/example/node_modules/fs-extra/lib/remove/index.js +0 -15
  330. package/example/node_modules/fs-extra/lib/remove/rimraf.js +0 -301
  331. package/example/node_modules/fs-extra/lib/util/assign.js +0 -14
  332. package/example/node_modules/fs-extra/lib/util/utimes.js +0 -70
  333. package/example/node_modules/fs-extra/lib/walk/index.js +0 -5
  334. package/example/node_modules/fs-extra/lib/walk-sync/index.js +0 -20
  335. package/example/node_modules/fs-extra/package.json +0 -96
  336. package/example/node_modules/getpass/.travis.yml +0 -9
  337. package/example/node_modules/getpass/LICENSE +0 -18
  338. package/example/node_modules/getpass/README.md +0 -32
  339. package/example/node_modules/getpass/lib/index.js +0 -123
  340. package/example/node_modules/getpass/package.json +0 -54
  341. package/example/node_modules/graceful-fs/LICENSE +0 -15
  342. package/example/node_modules/graceful-fs/README.md +0 -133
  343. package/example/node_modules/graceful-fs/clone.js +0 -19
  344. package/example/node_modules/graceful-fs/graceful-fs.js +0 -279
  345. package/example/node_modules/graceful-fs/legacy-streams.js +0 -118
  346. package/example/node_modules/graceful-fs/package.json +0 -85
  347. package/example/node_modules/graceful-fs/polyfills.js +0 -336
  348. package/example/node_modules/handlebars/LICENSE +0 -19
  349. package/example/node_modules/handlebars/README.markdown +0 -168
  350. package/example/node_modules/handlebars/bin/handlebars +0 -128
  351. package/example/node_modules/handlebars/dist/amd/handlebars/base.js +0 -96
  352. package/example/node_modules/handlebars/dist/amd/handlebars/compiler/ast.js +0 -31
  353. package/example/node_modules/handlebars/dist/amd/handlebars/compiler/base.js +0 -36
  354. package/example/node_modules/handlebars/dist/amd/handlebars/compiler/code-gen.js +0 -163
  355. package/example/node_modules/handlebars/dist/amd/handlebars/compiler/compiler.js +0 -569
  356. package/example/node_modules/handlebars/dist/amd/handlebars/compiler/helpers.js +0 -228
  357. package/example/node_modules/handlebars/dist/amd/handlebars/compiler/javascript-compiler.js +0 -1123
  358. package/example/node_modules/handlebars/dist/amd/handlebars/compiler/parser.js +0 -737
  359. package/example/node_modules/handlebars/dist/amd/handlebars/compiler/printer.js +0 -186
  360. package/example/node_modules/handlebars/dist/amd/handlebars/compiler/visitor.js +0 -138
  361. package/example/node_modules/handlebars/dist/amd/handlebars/compiler/whitespace-control.js +0 -219
  362. package/example/node_modules/handlebars/dist/amd/handlebars/decorators/inline.js +0 -25
  363. package/example/node_modules/handlebars/dist/amd/handlebars/decorators.js +0 -16
  364. package/example/node_modules/handlebars/dist/amd/handlebars/exception.js +0 -53
  365. package/example/node_modules/handlebars/dist/amd/handlebars/helpers/block-helper-missing.js +0 -35
  366. package/example/node_modules/handlebars/dist/amd/handlebars/helpers/each.js +0 -89
  367. package/example/node_modules/handlebars/dist/amd/handlebars/helpers/helper-missing.js +0 -22
  368. package/example/node_modules/handlebars/dist/amd/handlebars/helpers/if.js +0 -25
  369. package/example/node_modules/handlebars/dist/amd/handlebars/helpers/log.js +0 -24
  370. package/example/node_modules/handlebars/dist/amd/handlebars/helpers/lookup.js +0 -16
  371. package/example/node_modules/handlebars/dist/amd/handlebars/helpers/with.js +0 -29
  372. package/example/node_modules/handlebars/dist/amd/handlebars/helpers.js +0 -34
  373. package/example/node_modules/handlebars/dist/amd/handlebars/logger.js +0 -44
  374. package/example/node_modules/handlebars/dist/amd/handlebars/no-conflict.js +0 -18
  375. package/example/node_modules/handlebars/dist/amd/handlebars/runtime.js +0 -297
  376. package/example/node_modules/handlebars/dist/amd/handlebars/safe-string.js +0 -15
  377. package/example/node_modules/handlebars/dist/amd/handlebars/utils.js +0 -126
  378. package/example/node_modules/handlebars/dist/amd/handlebars.js +0 -51
  379. package/example/node_modules/handlebars/dist/amd/handlebars.runtime.js +0 -44
  380. package/example/node_modules/handlebars/dist/amd/precompiler.js +0 -313
  381. package/example/node_modules/handlebars/dist/cjs/handlebars/base.js +0 -104
  382. package/example/node_modules/handlebars/dist/cjs/handlebars/compiler/ast.js +0 -31
  383. package/example/node_modules/handlebars/dist/cjs/handlebars/compiler/base.js +0 -48
  384. package/example/node_modules/handlebars/dist/cjs/handlebars/compiler/code-gen.js +0 -166
  385. package/example/node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js +0 -573
  386. package/example/node_modules/handlebars/dist/cjs/handlebars/compiler/helpers.js +0 -228
  387. package/example/node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js +0 -1131
  388. package/example/node_modules/handlebars/dist/cjs/handlebars/compiler/parser.js +0 -737
  389. package/example/node_modules/handlebars/dist/cjs/handlebars/compiler/printer.js +0 -186
  390. package/example/node_modules/handlebars/dist/cjs/handlebars/compiler/visitor.js +0 -140
  391. package/example/node_modules/handlebars/dist/cjs/handlebars/compiler/whitespace-control.js +0 -221
  392. package/example/node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js +0 -29
  393. package/example/node_modules/handlebars/dist/cjs/handlebars/decorators.js +0 -16
  394. package/example/node_modules/handlebars/dist/cjs/handlebars/exception.js +0 -54
  395. package/example/node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js +0 -39
  396. package/example/node_modules/handlebars/dist/cjs/handlebars/helpers/each.js +0 -94
  397. package/example/node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js +0 -25
  398. package/example/node_modules/handlebars/dist/cjs/handlebars/helpers/if.js +0 -29
  399. package/example/node_modules/handlebars/dist/cjs/handlebars/helpers/log.js +0 -26
  400. package/example/node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js +0 -18
  401. package/example/node_modules/handlebars/dist/cjs/handlebars/helpers/with.js +0 -33
  402. package/example/node_modules/handlebars/dist/cjs/handlebars/helpers.js +0 -46
  403. package/example/node_modules/handlebars/dist/cjs/handlebars/logger.js +0 -47
  404. package/example/node_modules/handlebars/dist/cjs/handlebars/no-conflict.js +0 -20
  405. package/example/node_modules/handlebars/dist/cjs/handlebars/runtime.js +0 -307
  406. package/example/node_modules/handlebars/dist/cjs/handlebars/safe-string.js +0 -15
  407. package/example/node_modules/handlebars/dist/cjs/handlebars/utils.js +0 -124
  408. package/example/node_modules/handlebars/dist/cjs/handlebars.js +0 -65
  409. package/example/node_modules/handlebars/dist/cjs/handlebars.runtime.js +0 -66
  410. package/example/node_modules/handlebars/dist/cjs/precompiler.js +0 -327
  411. package/example/node_modules/handlebars/dist/handlebars.amd.js +0 -4357
  412. package/example/node_modules/handlebars/dist/handlebars.amd.min.js +0 -29
  413. package/example/node_modules/handlebars/dist/handlebars.js +0 -4845
  414. package/example/node_modules/handlebars/dist/handlebars.min.js +0 -29
  415. package/example/node_modules/handlebars/dist/handlebars.runtime.amd.js +0 -1052
  416. package/example/node_modules/handlebars/dist/handlebars.runtime.amd.min.js +0 -27
  417. package/example/node_modules/handlebars/dist/handlebars.runtime.js +0 -1474
  418. package/example/node_modules/handlebars/dist/handlebars.runtime.min.js +0 -27
  419. package/example/node_modules/handlebars/lib/handlebars/base.js +0 -78
  420. package/example/node_modules/handlebars/lib/handlebars/compiler/ast.js +0 -28
  421. package/example/node_modules/handlebars/lib/handlebars/compiler/base.js +0 -24
  422. package/example/node_modules/handlebars/lib/handlebars/compiler/code-gen.js +0 -168
  423. package/example/node_modules/handlebars/lib/handlebars/compiler/compiler.js +0 -559
  424. package/example/node_modules/handlebars/lib/handlebars/compiler/helpers.js +0 -210
  425. package/example/node_modules/handlebars/lib/handlebars/compiler/javascript-compiler.js +0 -1140
  426. package/example/node_modules/handlebars/lib/handlebars/compiler/parser.js +0 -622
  427. package/example/node_modules/handlebars/lib/handlebars/compiler/printer.js +0 -171
  428. package/example/node_modules/handlebars/lib/handlebars/compiler/visitor.js +0 -129
  429. package/example/node_modules/handlebars/lib/handlebars/compiler/whitespace-control.js +0 -216
  430. package/example/node_modules/handlebars/lib/handlebars/decorators/inline.js +0 -22
  431. package/example/node_modules/handlebars/lib/handlebars/decorators.js +0 -6
  432. package/example/node_modules/handlebars/lib/handlebars/exception.js +0 -49
  433. package/example/node_modules/handlebars/lib/handlebars/helpers/block-helper-missing.js +0 -32
  434. package/example/node_modules/handlebars/lib/handlebars/helpers/each.js +0 -79
  435. package/example/node_modules/handlebars/lib/handlebars/helpers/helper-missing.js +0 -13
  436. package/example/node_modules/handlebars/lib/handlebars/helpers/if.js +0 -20
  437. package/example/node_modules/handlebars/lib/handlebars/helpers/log.js +0 -19
  438. package/example/node_modules/handlebars/lib/handlebars/helpers/lookup.js +0 -11
  439. package/example/node_modules/handlebars/lib/handlebars/helpers/with.js +0 -24
  440. package/example/node_modules/handlebars/lib/handlebars/helpers.js +0 -17
  441. package/example/node_modules/handlebars/lib/handlebars/logger.js +0 -35
  442. package/example/node_modules/handlebars/lib/handlebars/no-conflict.js +0 -13
  443. package/example/node_modules/handlebars/lib/handlebars/runtime.js +0 -281
  444. package/example/node_modules/handlebars/lib/handlebars/safe-string.js +0 -10
  445. package/example/node_modules/handlebars/lib/handlebars/utils.js +0 -108
  446. package/example/node_modules/handlebars/lib/handlebars.js +0 -41
  447. package/example/node_modules/handlebars/lib/handlebars.runtime.js +0 -37
  448. package/example/node_modules/handlebars/lib/index.js +0 -25
  449. package/example/node_modules/handlebars/lib/precompiler.js +0 -298
  450. package/example/node_modules/handlebars/package.json +0 -126
  451. package/example/node_modules/handlebars/print-script +0 -95
  452. package/example/node_modules/handlebars/release-notes.md +0 -638
  453. package/example/node_modules/handlebars/runtime.js +0 -3
  454. package/example/node_modules/handlebars/types/index.d.ts +0 -357
  455. package/example/node_modules/har-schema/LICENSE +0 -13
  456. package/example/node_modules/har-schema/README.md +0 -49
  457. package/example/node_modules/har-schema/lib/afterRequest.json +0 -30
  458. package/example/node_modules/har-schema/lib/beforeRequest.json +0 -30
  459. package/example/node_modules/har-schema/lib/browser.json +0 -20
  460. package/example/node_modules/har-schema/lib/cache.json +0 -21
  461. package/example/node_modules/har-schema/lib/content.json +0 -29
  462. package/example/node_modules/har-schema/lib/cookie.json +0 -36
  463. package/example/node_modules/har-schema/lib/creator.json +0 -20
  464. package/example/node_modules/har-schema/lib/entry.json +0 -53
  465. package/example/node_modules/har-schema/lib/har.json +0 -13
  466. package/example/node_modules/har-schema/lib/header.json +0 -20
  467. package/example/node_modules/har-schema/lib/index.js +0 -22
  468. package/example/node_modules/har-schema/lib/log.json +0 -36
  469. package/example/node_modules/har-schema/lib/page.json +0 -32
  470. package/example/node_modules/har-schema/lib/pageTimings.json +0 -18
  471. package/example/node_modules/har-schema/lib/postData.json +0 -43
  472. package/example/node_modules/har-schema/lib/query.json +0 -20
  473. package/example/node_modules/har-schema/lib/request.json +0 -57
  474. package/example/node_modules/har-schema/lib/response.json +0 -54
  475. package/example/node_modules/har-schema/lib/timings.json +0 -42
  476. package/example/node_modules/har-schema/package.json +0 -90
  477. package/example/node_modules/har-validator/LICENSE +0 -9
  478. package/example/node_modules/har-validator/README.md +0 -37
  479. package/example/node_modules/har-validator/lib/async.js +0 -105
  480. package/example/node_modules/har-validator/lib/error.js +0 -17
  481. package/example/node_modules/har-validator/lib/promise.js +0 -102
  482. package/example/node_modules/har-validator/package.json +0 -80
  483. package/example/node_modules/hasha/index.js +0 -70
  484. package/example/node_modules/hasha/license +0 -21
  485. package/example/node_modules/hasha/package.json +0 -88
  486. package/example/node_modules/hasha/readme.md +0 -120
  487. package/example/node_modules/html-pdf/LICENSE +0 -21
  488. package/example/node_modules/html-pdf/README.md +0 -170
  489. package/example/node_modules/html-pdf/bin/index.js +0 -32
  490. package/example/node_modules/html-pdf/circle.yml +0 -3
  491. package/example/node_modules/html-pdf/examples/businesscard/businesscard.html +0 -97
  492. package/example/node_modules/html-pdf/examples/businesscard/businesscard.png +0 -0
  493. package/example/node_modules/html-pdf/examples/businesscard/image.png +0 -0
  494. package/example/node_modules/html-pdf/examples/serve-http/index.js +0 -19
  495. package/example/node_modules/html-pdf/lib/index.js +0 -26
  496. package/example/node_modules/html-pdf/lib/pdf.js +0 -148
  497. package/example/node_modules/html-pdf/lib/scripts/pdf_a4_portrait.js +0 -225
  498. package/example/node_modules/html-pdf/package.json +0 -76
  499. package/example/node_modules/http-signature/.dir-locals.el +0 -6
  500. package/example/node_modules/http-signature/CHANGES.md +0 -46
  501. package/example/node_modules/http-signature/LICENSE +0 -18
  502. package/example/node_modules/http-signature/README.md +0 -79
  503. package/example/node_modules/http-signature/http_signing.md +0 -363
  504. package/example/node_modules/http-signature/lib/index.js +0 -29
  505. package/example/node_modules/http-signature/lib/parser.js +0 -315
  506. package/example/node_modules/http-signature/lib/signer.js +0 -401
  507. package/example/node_modules/http-signature/lib/utils.js +0 -112
  508. package/example/node_modules/http-signature/lib/verify.js +0 -88
  509. package/example/node_modules/http-signature/package.json +0 -81
  510. package/example/node_modules/inherits/LICENSE +0 -16
  511. package/example/node_modules/inherits/README.md +0 -42
  512. package/example/node_modules/inherits/inherits.js +0 -9
  513. package/example/node_modules/inherits/inherits_browser.js +0 -27
  514. package/example/node_modules/inherits/package.json +0 -66
  515. package/example/node_modules/is-stream/index.js +0 -21
  516. package/example/node_modules/is-stream/license +0 -21
  517. package/example/node_modules/is-stream/package.json +0 -74
  518. package/example/node_modules/is-stream/readme.md +0 -42
  519. package/example/node_modules/is-typedarray/LICENSE.md +0 -18
  520. package/example/node_modules/is-typedarray/README.md +0 -16
  521. package/example/node_modules/is-typedarray/index.js +0 -41
  522. package/example/node_modules/is-typedarray/package.json +0 -63
  523. package/example/node_modules/is-typedarray/test.js +0 -34
  524. package/example/node_modules/isarray/.travis.yml +0 -4
  525. package/example/node_modules/isarray/Makefile +0 -6
  526. package/example/node_modules/isarray/README.md +0 -60
  527. package/example/node_modules/isarray/component.json +0 -19
  528. package/example/node_modules/isarray/index.js +0 -5
  529. package/example/node_modules/isarray/package.json +0 -77
  530. package/example/node_modules/isarray/test.js +0 -20
  531. package/example/node_modules/isexe/LICENSE +0 -15
  532. package/example/node_modules/isexe/README.md +0 -51
  533. package/example/node_modules/isexe/index.js +0 -57
  534. package/example/node_modules/isexe/mode.js +0 -41
  535. package/example/node_modules/isexe/package.json +0 -64
  536. package/example/node_modules/isexe/test/basic.js +0 -221
  537. package/example/node_modules/isexe/windows.js +0 -42
  538. package/example/node_modules/isstream/.jshintrc +0 -59
  539. package/example/node_modules/isstream/.travis.yml +0 -12
  540. package/example/node_modules/isstream/LICENSE.md +0 -11
  541. package/example/node_modules/isstream/README.md +0 -66
  542. package/example/node_modules/isstream/isstream.js +0 -27
  543. package/example/node_modules/isstream/package.json +0 -65
  544. package/example/node_modules/isstream/test.js +0 -168
  545. package/example/node_modules/jsbn/LICENSE +0 -40
  546. package/example/node_modules/jsbn/README.md +0 -175
  547. package/example/node_modules/jsbn/example.html +0 -12
  548. package/example/node_modules/jsbn/example.js +0 -3
  549. package/example/node_modules/jsbn/index.js +0 -1357
  550. package/example/node_modules/jsbn/package.json +0 -57
  551. package/example/node_modules/json-schema/README.md +0 -5
  552. package/example/node_modules/json-schema/draft-00/hyper-schema +0 -68
  553. package/example/node_modules/json-schema/draft-00/json-ref +0 -26
  554. package/example/node_modules/json-schema/draft-00/links +0 -33
  555. package/example/node_modules/json-schema/draft-00/schema +0 -155
  556. package/example/node_modules/json-schema/draft-01/hyper-schema +0 -68
  557. package/example/node_modules/json-schema/draft-01/json-ref +0 -26
  558. package/example/node_modules/json-schema/draft-01/links +0 -33
  559. package/example/node_modules/json-schema/draft-01/schema +0 -155
  560. package/example/node_modules/json-schema/draft-02/hyper-schema +0 -68
  561. package/example/node_modules/json-schema/draft-02/json-ref +0 -26
  562. package/example/node_modules/json-schema/draft-02/links +0 -35
  563. package/example/node_modules/json-schema/draft-02/schema +0 -166
  564. package/example/node_modules/json-schema/draft-03/examples/address +0 -20
  565. package/example/node_modules/json-schema/draft-03/examples/calendar +0 -53
  566. package/example/node_modules/json-schema/draft-03/examples/card +0 -105
  567. package/example/node_modules/json-schema/draft-03/examples/geo +0 -8
  568. package/example/node_modules/json-schema/draft-03/examples/interfaces +0 -23
  569. package/example/node_modules/json-schema/draft-03/hyper-schema +0 -60
  570. package/example/node_modules/json-schema/draft-03/json-ref +0 -26
  571. package/example/node_modules/json-schema/draft-03/links +0 -35
  572. package/example/node_modules/json-schema/draft-03/schema +0 -174
  573. package/example/node_modules/json-schema/draft-04/hyper-schema +0 -60
  574. package/example/node_modules/json-schema/draft-04/links +0 -41
  575. package/example/node_modules/json-schema/draft-04/schema +0 -189
  576. package/example/node_modules/json-schema/draft-zyp-json-schema-03.xml +0 -1120
  577. package/example/node_modules/json-schema/draft-zyp-json-schema-04.xml +0 -1072
  578. package/example/node_modules/json-schema/lib/links.js +0 -66
  579. package/example/node_modules/json-schema/lib/validate.js +0 -273
  580. package/example/node_modules/json-schema/package.json +0 -75
  581. package/example/node_modules/json-schema/test/tests.js +0 -95
  582. package/example/node_modules/json-schema-traverse/.eslintrc.yml +0 -27
  583. package/example/node_modules/json-schema-traverse/.travis.yml +0 -8
  584. package/example/node_modules/json-schema-traverse/LICENSE +0 -21
  585. package/example/node_modules/json-schema-traverse/README.md +0 -83
  586. package/example/node_modules/json-schema-traverse/index.js +0 -89
  587. package/example/node_modules/json-schema-traverse/package.json +0 -74
  588. package/example/node_modules/json-schema-traverse/spec/.eslintrc.yml +0 -6
  589. package/example/node_modules/json-schema-traverse/spec/fixtures/schema.js +0 -125
  590. package/example/node_modules/json-schema-traverse/spec/index.spec.js +0 -171
  591. package/example/node_modules/json-stringify-safe/CHANGELOG.md +0 -14
  592. package/example/node_modules/json-stringify-safe/LICENSE +0 -15
  593. package/example/node_modules/json-stringify-safe/Makefile +0 -35
  594. package/example/node_modules/json-stringify-safe/README.md +0 -52
  595. package/example/node_modules/json-stringify-safe/package.json +0 -70
  596. package/example/node_modules/json-stringify-safe/stringify.js +0 -27
  597. package/example/node_modules/json-stringify-safe/test/mocha.opts +0 -2
  598. package/example/node_modules/json-stringify-safe/test/stringify_test.js +0 -246
  599. package/example/node_modules/jsonfile/CHANGELOG.md +0 -126
  600. package/example/node_modules/jsonfile/LICENSE +0 -15
  601. package/example/node_modules/jsonfile/README.md +0 -162
  602. package/example/node_modules/jsonfile/appveyor.yml +0 -28
  603. package/example/node_modules/jsonfile/index.js +0 -133
  604. package/example/node_modules/jsonfile/package.json +0 -73
  605. package/example/node_modules/jsprim/CHANGES.md +0 -49
  606. package/example/node_modules/jsprim/CONTRIBUTING.md +0 -19
  607. package/example/node_modules/jsprim/LICENSE +0 -19
  608. package/example/node_modules/jsprim/README.md +0 -287
  609. package/example/node_modules/jsprim/lib/jsprim.js +0 -735
  610. package/example/node_modules/jsprim/package.json +0 -53
  611. package/example/node_modules/kew/.travis.yml +0 -5
  612. package/example/node_modules/kew/LICENSE.TXT +0 -194
  613. package/example/node_modules/kew/README.md +0 -320
  614. package/example/node_modules/kew/kew.js +0 -860
  615. package/example/node_modules/kew/package.json +0 -63
  616. package/example/node_modules/kew/test/chain.js +0 -434
  617. package/example/node_modules/kew/test/closure_test.js +0 -135
  618. package/example/node_modules/kew/test/context.js +0 -89
  619. package/example/node_modules/kew/test/defer.js +0 -120
  620. package/example/node_modules/kew/test/externs_node.js +0 -9
  621. package/example/node_modules/kew/test/later.js +0 -45
  622. package/example/node_modules/kew/test/scopes.js +0 -59
  623. package/example/node_modules/kew/test/spread.js +0 -59
  624. package/example/node_modules/kew/test/static.js +0 -393
  625. package/example/node_modules/klaw/CHANGELOG.md +0 -42
  626. package/example/node_modules/klaw/LICENSE +0 -15
  627. package/example/node_modules/klaw/README.md +0 -270
  628. package/example/node_modules/klaw/package.json +0 -74
  629. package/example/node_modules/klaw/src/assign.js +0 -16
  630. package/example/node_modules/klaw/src/index.js +0 -57
  631. package/example/node_modules/mime-db/HISTORY.md +0 -417
  632. package/example/node_modules/mime-db/LICENSE +0 -22
  633. package/example/node_modules/mime-db/README.md +0 -94
  634. package/example/node_modules/mime-db/db.json +0 -7834
  635. package/example/node_modules/mime-db/index.js +0 -11
  636. package/example/node_modules/mime-db/package.json +0 -105
  637. package/example/node_modules/mime-types/HISTORY.md +0 -308
  638. package/example/node_modules/mime-types/LICENSE +0 -23
  639. package/example/node_modules/mime-types/README.md +0 -113
  640. package/example/node_modules/mime-types/index.js +0 -188
  641. package/example/node_modules/mime-types/package.json +0 -91
  642. package/example/node_modules/minimist/.travis.yml +0 -4
  643. package/example/node_modules/minimist/LICENSE +0 -18
  644. package/example/node_modules/minimist/example/parse.js +0 -2
  645. package/example/node_modules/minimist/index.js +0 -187
  646. package/example/node_modules/minimist/package.json +0 -74
  647. package/example/node_modules/minimist/readme.markdown +0 -73
  648. package/example/node_modules/minimist/test/bool.js +0 -119
  649. package/example/node_modules/minimist/test/dash.js +0 -24
  650. package/example/node_modules/minimist/test/default_bool.js +0 -20
  651. package/example/node_modules/minimist/test/dotted.js +0 -22
  652. package/example/node_modules/minimist/test/long.js +0 -31
  653. package/example/node_modules/minimist/test/num.js +0 -36
  654. package/example/node_modules/minimist/test/parse.js +0 -197
  655. package/example/node_modules/minimist/test/parse_modified.js +0 -9
  656. package/example/node_modules/minimist/test/short.js +0 -67
  657. package/example/node_modules/minimist/test/whitespace.js +0 -8
  658. package/example/node_modules/mkdirp/.travis.yml +0 -8
  659. package/example/node_modules/mkdirp/LICENSE +0 -21
  660. package/example/node_modules/mkdirp/bin/cmd.js +0 -33
  661. package/example/node_modules/mkdirp/bin/usage.txt +0 -12
  662. package/example/node_modules/mkdirp/examples/pow.js +0 -6
  663. package/example/node_modules/mkdirp/index.js +0 -98
  664. package/example/node_modules/mkdirp/node_modules/minimist/.travis.yml +0 -4
  665. package/example/node_modules/mkdirp/node_modules/minimist/LICENSE +0 -18
  666. package/example/node_modules/mkdirp/node_modules/minimist/example/parse.js +0 -2
  667. package/example/node_modules/mkdirp/node_modules/minimist/index.js +0 -187
  668. package/example/node_modules/mkdirp/node_modules/minimist/package.json +0 -75
  669. package/example/node_modules/mkdirp/node_modules/minimist/readme.markdown +0 -73
  670. package/example/node_modules/mkdirp/node_modules/minimist/test/dash.js +0 -24
  671. package/example/node_modules/mkdirp/node_modules/minimist/test/default_bool.js +0 -20
  672. package/example/node_modules/mkdirp/node_modules/minimist/test/dotted.js +0 -16
  673. package/example/node_modules/mkdirp/node_modules/minimist/test/long.js +0 -31
  674. package/example/node_modules/mkdirp/node_modules/minimist/test/parse.js +0 -318
  675. package/example/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js +0 -9
  676. package/example/node_modules/mkdirp/node_modules/minimist/test/short.js +0 -67
  677. package/example/node_modules/mkdirp/node_modules/minimist/test/whitespace.js +0 -8
  678. package/example/node_modules/mkdirp/package.json +0 -66
  679. package/example/node_modules/mkdirp/readme.markdown +0 -100
  680. package/example/node_modules/mkdirp/test/chmod.js +0 -41
  681. package/example/node_modules/mkdirp/test/clobber.js +0 -38
  682. package/example/node_modules/mkdirp/test/mkdirp.js +0 -28
  683. package/example/node_modules/mkdirp/test/opts_fs.js +0 -29
  684. package/example/node_modules/mkdirp/test/opts_fs_sync.js +0 -27
  685. package/example/node_modules/mkdirp/test/perm.js +0 -32
  686. package/example/node_modules/mkdirp/test/perm_sync.js +0 -36
  687. package/example/node_modules/mkdirp/test/race.js +0 -37
  688. package/example/node_modules/mkdirp/test/rel.js +0 -32
  689. package/example/node_modules/mkdirp/test/return.js +0 -25
  690. package/example/node_modules/mkdirp/test/return_sync.js +0 -24
  691. package/example/node_modules/mkdirp/test/root.js +0 -19
  692. package/example/node_modules/mkdirp/test/sync.js +0 -32
  693. package/example/node_modules/mkdirp/test/umask.js +0 -28
  694. package/example/node_modules/mkdirp/test/umask_sync.js +0 -32
  695. package/example/node_modules/ms/index.js +0 -152
  696. package/example/node_modules/ms/license.md +0 -21
  697. package/example/node_modules/ms/package.json +0 -73
  698. package/example/node_modules/ms/readme.md +0 -51
  699. package/example/node_modules/neo-async/LICENSE +0 -22
  700. package/example/node_modules/neo-async/README.md +0 -268
  701. package/example/node_modules/neo-async/all.js +0 -3
  702. package/example/node_modules/neo-async/allLimit.js +0 -3
  703. package/example/node_modules/neo-async/allSeries.js +0 -3
  704. package/example/node_modules/neo-async/angelFall.js +0 -3
  705. package/example/node_modules/neo-async/any.js +0 -3
  706. package/example/node_modules/neo-async/anyLimit.js +0 -3
  707. package/example/node_modules/neo-async/anySeries.js +0 -3
  708. package/example/node_modules/neo-async/apply.js +0 -3
  709. package/example/node_modules/neo-async/applyEach.js +0 -3
  710. package/example/node_modules/neo-async/applyEachSeries.js +0 -3
  711. package/example/node_modules/neo-async/async.js +0 -9182
  712. package/example/node_modules/neo-async/async.min.js +0 -80
  713. package/example/node_modules/neo-async/asyncify.js +0 -3
  714. package/example/node_modules/neo-async/auto.js +0 -3
  715. package/example/node_modules/neo-async/autoInject.js +0 -3
  716. package/example/node_modules/neo-async/cargo.js +0 -3
  717. package/example/node_modules/neo-async/compose.js +0 -3
  718. package/example/node_modules/neo-async/concat.js +0 -3
  719. package/example/node_modules/neo-async/concatLimit.js +0 -3
  720. package/example/node_modules/neo-async/concatSeries.js +0 -3
  721. package/example/node_modules/neo-async/constant.js +0 -3
  722. package/example/node_modules/neo-async/createLogger.js +0 -3
  723. package/example/node_modules/neo-async/detect.js +0 -3
  724. package/example/node_modules/neo-async/detectLimit.js +0 -3
  725. package/example/node_modules/neo-async/detectSeries.js +0 -3
  726. package/example/node_modules/neo-async/dir.js +0 -3
  727. package/example/node_modules/neo-async/doDuring.js +0 -3
  728. package/example/node_modules/neo-async/doUntil.js +0 -3
  729. package/example/node_modules/neo-async/doWhilst.js +0 -3
  730. package/example/node_modules/neo-async/during.js +0 -3
  731. package/example/node_modules/neo-async/each.js +0 -3
  732. package/example/node_modules/neo-async/eachLimit.js +0 -3
  733. package/example/node_modules/neo-async/eachOf.js +0 -3
  734. package/example/node_modules/neo-async/eachOfLimit.js +0 -3
  735. package/example/node_modules/neo-async/eachOfSeries.js +0 -3
  736. package/example/node_modules/neo-async/eachSeries.js +0 -3
  737. package/example/node_modules/neo-async/ensureAsync.js +0 -3
  738. package/example/node_modules/neo-async/every.js +0 -3
  739. package/example/node_modules/neo-async/everyLimit.js +0 -3
  740. package/example/node_modules/neo-async/everySeries.js +0 -3
  741. package/example/node_modules/neo-async/fast.js +0 -3
  742. package/example/node_modules/neo-async/filter.js +0 -3
  743. package/example/node_modules/neo-async/filterLimit.js +0 -3
  744. package/example/node_modules/neo-async/filterSeries.js +0 -3
  745. package/example/node_modules/neo-async/find.js +0 -3
  746. package/example/node_modules/neo-async/findLimit.js +0 -3
  747. package/example/node_modules/neo-async/findSeries.js +0 -3
  748. package/example/node_modules/neo-async/foldl.js +0 -3
  749. package/example/node_modules/neo-async/foldr.js +0 -3
  750. package/example/node_modules/neo-async/forEach.js +0 -3
  751. package/example/node_modules/neo-async/forEachLimit.js +0 -3
  752. package/example/node_modules/neo-async/forEachOf.js +0 -3
  753. package/example/node_modules/neo-async/forEachOfLimit.js +0 -3
  754. package/example/node_modules/neo-async/forEachOfSeries.js +0 -3
  755. package/example/node_modules/neo-async/forEachSeries.js +0 -3
  756. package/example/node_modules/neo-async/forever.js +0 -3
  757. package/example/node_modules/neo-async/groupBy.js +0 -3
  758. package/example/node_modules/neo-async/groupByLimit.js +0 -3
  759. package/example/node_modules/neo-async/groupBySeries.js +0 -3
  760. package/example/node_modules/neo-async/inject.js +0 -3
  761. package/example/node_modules/neo-async/iterator.js +0 -3
  762. package/example/node_modules/neo-async/log.js +0 -3
  763. package/example/node_modules/neo-async/map.js +0 -3
  764. package/example/node_modules/neo-async/mapLimit.js +0 -3
  765. package/example/node_modules/neo-async/mapSeries.js +0 -3
  766. package/example/node_modules/neo-async/mapValues.js +0 -3
  767. package/example/node_modules/neo-async/mapValuesLimit.js +0 -3
  768. package/example/node_modules/neo-async/mapValuesSeries.js +0 -3
  769. package/example/node_modules/neo-async/memoize.js +0 -3
  770. package/example/node_modules/neo-async/nextTick.js +0 -3
  771. package/example/node_modules/neo-async/omit.js +0 -3
  772. package/example/node_modules/neo-async/omitLimit.js +0 -3
  773. package/example/node_modules/neo-async/omitSeries.js +0 -3
  774. package/example/node_modules/neo-async/package.json +0 -89
  775. package/example/node_modules/neo-async/parallel.js +0 -3
  776. package/example/node_modules/neo-async/parallelLimit.js +0 -3
  777. package/example/node_modules/neo-async/pick.js +0 -3
  778. package/example/node_modules/neo-async/pickLimit.js +0 -3
  779. package/example/node_modules/neo-async/pickSeries.js +0 -3
  780. package/example/node_modules/neo-async/priorityQueue.js +0 -3
  781. package/example/node_modules/neo-async/queue.js +0 -3
  782. package/example/node_modules/neo-async/race.js +0 -3
  783. package/example/node_modules/neo-async/reduce.js +0 -3
  784. package/example/node_modules/neo-async/reduceRight.js +0 -3
  785. package/example/node_modules/neo-async/reflect.js +0 -3
  786. package/example/node_modules/neo-async/reflectAll.js +0 -3
  787. package/example/node_modules/neo-async/reject.js +0 -3
  788. package/example/node_modules/neo-async/rejectLimit.js +0 -3
  789. package/example/node_modules/neo-async/rejectSeries.js +0 -3
  790. package/example/node_modules/neo-async/retry.js +0 -3
  791. package/example/node_modules/neo-async/retryable.js +0 -3
  792. package/example/node_modules/neo-async/safe.js +0 -3
  793. package/example/node_modules/neo-async/select.js +0 -3
  794. package/example/node_modules/neo-async/selectLimit.js +0 -3
  795. package/example/node_modules/neo-async/selectSeries.js +0 -3
  796. package/example/node_modules/neo-async/seq.js +0 -3
  797. package/example/node_modules/neo-async/series.js +0 -3
  798. package/example/node_modules/neo-async/setImmediate.js +0 -3
  799. package/example/node_modules/neo-async/some.js +0 -3
  800. package/example/node_modules/neo-async/someLimit.js +0 -3
  801. package/example/node_modules/neo-async/someSeries.js +0 -3
  802. package/example/node_modules/neo-async/sortBy.js +0 -3
  803. package/example/node_modules/neo-async/sortByLimit.js +0 -3
  804. package/example/node_modules/neo-async/sortBySeries.js +0 -3
  805. package/example/node_modules/neo-async/timeout.js +0 -3
  806. package/example/node_modules/neo-async/times.js +0 -3
  807. package/example/node_modules/neo-async/timesLimit.js +0 -3
  808. package/example/node_modules/neo-async/timesSeries.js +0 -3
  809. package/example/node_modules/neo-async/transform.js +0 -3
  810. package/example/node_modules/neo-async/transformLimit.js +0 -3
  811. package/example/node_modules/neo-async/transformSeries.js +0 -3
  812. package/example/node_modules/neo-async/tryEach.js +0 -3
  813. package/example/node_modules/neo-async/unmemoize.js +0 -3
  814. package/example/node_modules/neo-async/until.js +0 -3
  815. package/example/node_modules/neo-async/waterfall.js +0 -3
  816. package/example/node_modules/neo-async/whilst.js +0 -3
  817. package/example/node_modules/neo-async/wrapSync.js +0 -3
  818. package/example/node_modules/oauth-sign/LICENSE +0 -55
  819. package/example/node_modules/oauth-sign/README.md +0 -11
  820. package/example/node_modules/oauth-sign/index.js +0 -146
  821. package/example/node_modules/oauth-sign/package.json +0 -60
  822. package/example/node_modules/optimist/.travis.yml +0 -4
  823. package/example/node_modules/optimist/LICENSE +0 -21
  824. package/example/node_modules/optimist/example/bool.js +0 -10
  825. package/example/node_modules/optimist/example/boolean_double.js +0 -7
  826. package/example/node_modules/optimist/example/boolean_single.js +0 -7
  827. package/example/node_modules/optimist/example/default_hash.js +0 -8
  828. package/example/node_modules/optimist/example/default_singles.js +0 -7
  829. package/example/node_modules/optimist/example/divide.js +0 -8
  830. package/example/node_modules/optimist/example/line_count.js +0 -20
  831. package/example/node_modules/optimist/example/line_count_options.js +0 -29
  832. package/example/node_modules/optimist/example/line_count_wrap.js +0 -29
  833. package/example/node_modules/optimist/example/nonopt.js +0 -4
  834. package/example/node_modules/optimist/example/reflect.js +0 -2
  835. package/example/node_modules/optimist/example/short.js +0 -3
  836. package/example/node_modules/optimist/example/string.js +0 -11
  837. package/example/node_modules/optimist/example/usage-options.js +0 -19
  838. package/example/node_modules/optimist/example/xup.js +0 -10
  839. package/example/node_modules/optimist/index.js +0 -343
  840. package/example/node_modules/optimist/package.json +0 -71
  841. package/example/node_modules/optimist/readme.markdown +0 -513
  842. package/example/node_modules/optimist/test/_/argv.js +0 -2
  843. package/example/node_modules/optimist/test/_/bin.js +0 -3
  844. package/example/node_modules/optimist/test/_.js +0 -71
  845. package/example/node_modules/optimist/test/dash.js +0 -31
  846. package/example/node_modules/optimist/test/parse.js +0 -446
  847. package/example/node_modules/optimist/test/parse_modified.js +0 -14
  848. package/example/node_modules/optimist/test/short.js +0 -16
  849. package/example/node_modules/optimist/test/usage.js +0 -292
  850. package/example/node_modules/optimist/test/whitespace.js +0 -8
  851. package/example/node_modules/pdf-creator-node/index.js +0 -34
  852. package/example/node_modules/pdf-creator-node/package.json +0 -58
  853. package/example/node_modules/pdf-creator-node/readme +0 -50
  854. package/example/node_modules/pend/LICENSE +0 -23
  855. package/example/node_modules/pend/README.md +0 -41
  856. package/example/node_modules/pend/index.js +0 -55
  857. package/example/node_modules/pend/package.json +0 -51
  858. package/example/node_modules/pend/test.js +0 -137
  859. package/example/node_modules/performance-now/.tm_properties +0 -7
  860. package/example/node_modules/performance-now/.travis.yml +0 -6
  861. package/example/node_modules/performance-now/README.md +0 -30
  862. package/example/node_modules/performance-now/lib/performance-now.js +0 -36
  863. package/example/node_modules/performance-now/lib/performance-now.js.map +0 -10
  864. package/example/node_modules/performance-now/license.txt +0 -7
  865. package/example/node_modules/performance-now/package.json +0 -69
  866. package/example/node_modules/performance-now/src/index.d.ts +0 -8
  867. package/example/node_modules/performance-now/src/performance-now.coffee +0 -17
  868. package/example/node_modules/performance-now/test/mocha.opts +0 -3
  869. package/example/node_modules/performance-now/test/performance-now.coffee +0 -43
  870. package/example/node_modules/performance-now/test/scripts/delayed-call.coffee +0 -11
  871. package/example/node_modules/performance-now/test/scripts/delayed-require.coffee +0 -12
  872. package/example/node_modules/performance-now/test/scripts/difference.coffee +0 -6
  873. package/example/node_modules/performance-now/test/scripts/initial-value.coffee +0 -10
  874. package/example/node_modules/performance-now/test/scripts.coffee +0 -27
  875. package/example/node_modules/phantomjs-prebuilt/.eslintignore +0 -2
  876. package/example/node_modules/phantomjs-prebuilt/.eslintrc +0 -22
  877. package/example/node_modules/phantomjs-prebuilt/.jshintrc +0 -4
  878. package/example/node_modules/phantomjs-prebuilt/.travis.yml +0 -7
  879. package/example/node_modules/phantomjs-prebuilt/LICENSE.txt +0 -194
  880. package/example/node_modules/phantomjs-prebuilt/README.md +0 -308
  881. package/example/node_modules/phantomjs-prebuilt/bin/phantomjs +0 -42
  882. package/example/node_modules/phantomjs-prebuilt/install.js +0 -438
  883. package/example/node_modules/phantomjs-prebuilt/lib/phantomjs.js +0 -124
  884. package/example/node_modules/phantomjs-prebuilt/lib/util.js +0 -161
  885. package/example/node_modules/phantomjs-prebuilt/package.json +0 -89
  886. package/example/node_modules/phantomjs-prebuilt/test/exit.js +0 -1
  887. package/example/node_modules/phantomjs-prebuilt/test/loadspeed.js +0 -25
  888. package/example/node_modules/phantomjs-prebuilt/test/tests.js +0 -136
  889. package/example/node_modules/pinkie/index.js +0 -292
  890. package/example/node_modules/pinkie/license +0 -21
  891. package/example/node_modules/pinkie/package.json +0 -72
  892. package/example/node_modules/pinkie/readme.md +0 -83
  893. package/example/node_modules/pinkie-promise/index.js +0 -3
  894. package/example/node_modules/pinkie-promise/license +0 -21
  895. package/example/node_modules/pinkie-promise/package.json +0 -71
  896. package/example/node_modules/pinkie-promise/readme.md +0 -28
  897. package/example/node_modules/process-nextick-args/index.js +0 -45
  898. package/example/node_modules/process-nextick-args/license.md +0 -19
  899. package/example/node_modules/process-nextick-args/package.json +0 -54
  900. package/example/node_modules/process-nextick-args/readme.md +0 -18
  901. package/example/node_modules/progress/History.md +0 -77
  902. package/example/node_modules/progress/LICENSE +0 -22
  903. package/example/node_modules/progress/Makefile +0 -8
  904. package/example/node_modules/progress/Readme.md +0 -103
  905. package/example/node_modules/progress/index.js +0 -1
  906. package/example/node_modules/progress/lib/node-progress.js +0 -180
  907. package/example/node_modules/progress/package.json +0 -65
  908. package/example/node_modules/psl/.eslintignore +0 -1
  909. package/example/node_modules/psl/.eslintrc +0 -11
  910. package/example/node_modules/psl/.travis.yml +0 -5
  911. package/example/node_modules/psl/LICENSE +0 -9
  912. package/example/node_modules/psl/README.md +0 -213
  913. package/example/node_modules/psl/data/rules.json +0 -1
  914. package/example/node_modules/psl/dist/psl.js +0 -812
  915. package/example/node_modules/psl/dist/psl.min.js +0 -1
  916. package/example/node_modules/psl/index.js +0 -269
  917. package/example/node_modules/psl/karma.conf.js +0 -38
  918. package/example/node_modules/psl/package.json +0 -77
  919. package/example/node_modules/punycode/LICENSE-MIT.txt +0 -20
  920. package/example/node_modules/punycode/README.md +0 -122
  921. package/example/node_modules/punycode/package.json +0 -89
  922. package/example/node_modules/punycode/punycode.es6.js +0 -441
  923. package/example/node_modules/punycode/punycode.js +0 -440
  924. package/example/node_modules/qs/.editorconfig +0 -30
  925. package/example/node_modules/qs/.eslintignore +0 -1
  926. package/example/node_modules/qs/.eslintrc +0 -19
  927. package/example/node_modules/qs/CHANGELOG.md +0 -226
  928. package/example/node_modules/qs/LICENSE +0 -28
  929. package/example/node_modules/qs/README.md +0 -475
  930. package/example/node_modules/qs/dist/qs.js +0 -638
  931. package/example/node_modules/qs/lib/formats.js +0 -18
  932. package/example/node_modules/qs/lib/index.js +0 -11
  933. package/example/node_modules/qs/lib/parse.js +0 -174
  934. package/example/node_modules/qs/lib/stringify.js +0 -210
  935. package/example/node_modules/qs/lib/utils.js +0 -213
  936. package/example/node_modules/qs/package.json +0 -84
  937. package/example/node_modules/qs/test/.eslintrc +0 -15
  938. package/example/node_modules/qs/test/index.js +0 -7
  939. package/example/node_modules/qs/test/parse.js +0 -574
  940. package/example/node_modules/qs/test/stringify.js +0 -597
  941. package/example/node_modules/qs/test/utils.js +0 -34
  942. package/example/node_modules/readable-stream/.travis.yml +0 -55
  943. package/example/node_modules/readable-stream/CONTRIBUTING.md +0 -38
  944. package/example/node_modules/readable-stream/GOVERNANCE.md +0 -136
  945. package/example/node_modules/readable-stream/LICENSE +0 -47
  946. package/example/node_modules/readable-stream/README.md +0 -58
  947. package/example/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +0 -60
  948. package/example/node_modules/readable-stream/duplex-browser.js +0 -1
  949. package/example/node_modules/readable-stream/duplex.js +0 -1
  950. package/example/node_modules/readable-stream/lib/_stream_duplex.js +0 -131
  951. package/example/node_modules/readable-stream/lib/_stream_passthrough.js +0 -47
  952. package/example/node_modules/readable-stream/lib/_stream_readable.js +0 -1019
  953. package/example/node_modules/readable-stream/lib/_stream_transform.js +0 -214
  954. package/example/node_modules/readable-stream/lib/_stream_writable.js +0 -687
  955. package/example/node_modules/readable-stream/lib/internal/streams/BufferList.js +0 -79
  956. package/example/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -74
  957. package/example/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
  958. package/example/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
  959. package/example/node_modules/readable-stream/package.json +0 -85
  960. package/example/node_modules/readable-stream/passthrough.js +0 -1
  961. package/example/node_modules/readable-stream/readable-browser.js +0 -7
  962. package/example/node_modules/readable-stream/readable.js +0 -19
  963. package/example/node_modules/readable-stream/transform.js +0 -1
  964. package/example/node_modules/readable-stream/writable-browser.js +0 -1
  965. package/example/node_modules/readable-stream/writable.js +0 -8
  966. package/example/node_modules/request/CHANGELOG.md +0 -709
  967. package/example/node_modules/request/LICENSE +0 -55
  968. package/example/node_modules/request/README.md +0 -1097
  969. package/example/node_modules/request/index.js +0 -155
  970. package/example/node_modules/request/lib/auth.js +0 -167
  971. package/example/node_modules/request/lib/cookies.js +0 -38
  972. package/example/node_modules/request/lib/getProxyFromURI.js +0 -79
  973. package/example/node_modules/request/lib/har.js +0 -205
  974. package/example/node_modules/request/lib/hawk.js +0 -89
  975. package/example/node_modules/request/lib/helpers.js +0 -66
  976. package/example/node_modules/request/lib/multipart.js +0 -112
  977. package/example/node_modules/request/lib/oauth.js +0 -148
  978. package/example/node_modules/request/lib/querystring.js +0 -50
  979. package/example/node_modules/request/lib/redirect.js +0 -154
  980. package/example/node_modules/request/lib/tunnel.js +0 -175
  981. package/example/node_modules/request/package.json +0 -119
  982. package/example/node_modules/request/request.js +0 -1551
  983. package/example/node_modules/request-progress/.editorconfig +0 -15
  984. package/example/node_modules/request-progress/.jshintrc +0 -63
  985. package/example/node_modules/request-progress/.travis.yml +0 -6
  986. package/example/node_modules/request-progress/LICENSE +0 -19
  987. package/example/node_modules/request-progress/README.md +0 -75
  988. package/example/node_modules/request-progress/foo.js +0 -16
  989. package/example/node_modules/request-progress/index.js +0 -125
  990. package/example/node_modules/request-progress/package.json +0 -75
  991. package/example/node_modules/request-progress/test/test.js +0 -354
  992. package/example/node_modules/safe-buffer/LICENSE +0 -21
  993. package/example/node_modules/safe-buffer/README.md +0 -584
  994. package/example/node_modules/safe-buffer/index.d.ts +0 -187
  995. package/example/node_modules/safe-buffer/index.js +0 -62
  996. package/example/node_modules/safe-buffer/package.json +0 -69
  997. package/example/node_modules/safer-buffer/LICENSE +0 -21
  998. package/example/node_modules/safer-buffer/Porting-Buffer.md +0 -268
  999. package/example/node_modules/safer-buffer/Readme.md +0 -156
  1000. package/example/node_modules/safer-buffer/dangerous.js +0 -58
  1001. package/example/node_modules/safer-buffer/package.json +0 -66
  1002. package/example/node_modules/safer-buffer/safer.js +0 -77
  1003. package/example/node_modules/safer-buffer/tests.js +0 -406
  1004. package/example/node_modules/source-map/CHANGELOG.md +0 -301
  1005. package/example/node_modules/source-map/LICENSE +0 -28
  1006. package/example/node_modules/source-map/README.md +0 -742
  1007. package/example/node_modules/source-map/dist/source-map.debug.js +0 -3234
  1008. package/example/node_modules/source-map/dist/source-map.js +0 -3233
  1009. package/example/node_modules/source-map/dist/source-map.min.js +0 -2
  1010. package/example/node_modules/source-map/dist/source-map.min.js.map +0 -1
  1011. package/example/node_modules/source-map/lib/array-set.js +0 -121
  1012. package/example/node_modules/source-map/lib/base64-vlq.js +0 -140
  1013. package/example/node_modules/source-map/lib/base64.js +0 -67
  1014. package/example/node_modules/source-map/lib/binary-search.js +0 -111
  1015. package/example/node_modules/source-map/lib/mapping-list.js +0 -79
  1016. package/example/node_modules/source-map/lib/quick-sort.js +0 -114
  1017. package/example/node_modules/source-map/lib/source-map-consumer.js +0 -1145
  1018. package/example/node_modules/source-map/lib/source-map-generator.js +0 -425
  1019. package/example/node_modules/source-map/lib/source-node.js +0 -413
  1020. package/example/node_modules/source-map/lib/util.js +0 -488
  1021. package/example/node_modules/source-map/package.json +0 -216
  1022. package/example/node_modules/source-map/source-map.d.ts +0 -98
  1023. package/example/node_modules/source-map/source-map.js +0 -8
  1024. package/example/node_modules/sshpk/.travis.yml +0 -11
  1025. package/example/node_modules/sshpk/LICENSE +0 -18
  1026. package/example/node_modules/sshpk/README.md +0 -804
  1027. package/example/node_modules/sshpk/bin/sshpk-conv +0 -243
  1028. package/example/node_modules/sshpk/bin/sshpk-sign +0 -191
  1029. package/example/node_modules/sshpk/bin/sshpk-verify +0 -167
  1030. package/example/node_modules/sshpk/lib/algs.js +0 -168
  1031. package/example/node_modules/sshpk/lib/certificate.js +0 -410
  1032. package/example/node_modules/sshpk/lib/dhe.js +0 -397
  1033. package/example/node_modules/sshpk/lib/ed-compat.js +0 -92
  1034. package/example/node_modules/sshpk/lib/errors.js +0 -84
  1035. package/example/node_modules/sshpk/lib/fingerprint.js +0 -220
  1036. package/example/node_modules/sshpk/lib/formats/auto.js +0 -124
  1037. package/example/node_modules/sshpk/lib/formats/dnssec.js +0 -287
  1038. package/example/node_modules/sshpk/lib/formats/openssh-cert.js +0 -352
  1039. package/example/node_modules/sshpk/lib/formats/pem.js +0 -290
  1040. package/example/node_modules/sshpk/lib/formats/pkcs1.js +0 -373
  1041. package/example/node_modules/sshpk/lib/formats/pkcs8.js +0 -631
  1042. package/example/node_modules/sshpk/lib/formats/putty.js +0 -99
  1043. package/example/node_modules/sshpk/lib/formats/rfc4253.js +0 -166
  1044. package/example/node_modules/sshpk/lib/formats/ssh-private.js +0 -262
  1045. package/example/node_modules/sshpk/lib/formats/ssh.js +0 -115
  1046. package/example/node_modules/sshpk/lib/formats/x509-pem.js +0 -88
  1047. package/example/node_modules/sshpk/lib/formats/x509.js +0 -752
  1048. package/example/node_modules/sshpk/lib/identity.js +0 -373
  1049. package/example/node_modules/sshpk/lib/index.js +0 -40
  1050. package/example/node_modules/sshpk/lib/key.js +0 -294
  1051. package/example/node_modules/sshpk/lib/private-key.js +0 -246
  1052. package/example/node_modules/sshpk/lib/signature.js +0 -314
  1053. package/example/node_modules/sshpk/lib/ssh-buffer.js +0 -149
  1054. package/example/node_modules/sshpk/lib/utils.js +0 -404
  1055. package/example/node_modules/sshpk/man/man1/sshpk-conv.1 +0 -135
  1056. package/example/node_modules/sshpk/man/man1/sshpk-sign.1 +0 -81
  1057. package/example/node_modules/sshpk/man/man1/sshpk-verify.1 +0 -68
  1058. package/example/node_modules/sshpk/package.json +0 -100
  1059. package/example/node_modules/string_decoder/.travis.yml +0 -50
  1060. package/example/node_modules/string_decoder/LICENSE +0 -48
  1061. package/example/node_modules/string_decoder/README.md +0 -47
  1062. package/example/node_modules/string_decoder/lib/string_decoder.js +0 -296
  1063. package/example/node_modules/string_decoder/package.json +0 -63
  1064. package/example/node_modules/throttleit/History.md +0 -19
  1065. package/example/node_modules/throttleit/Makefile +0 -18
  1066. package/example/node_modules/throttleit/Readme.md +0 -32
  1067. package/example/node_modules/throttleit/component.json +0 -13
  1068. package/example/node_modules/throttleit/example.js +0 -14
  1069. package/example/node_modules/throttleit/index.js +0 -32
  1070. package/example/node_modules/throttleit/package.json +0 -55
  1071. package/example/node_modules/throttleit/test.js +0 -73
  1072. package/example/node_modules/tough-cookie/LICENSE +0 -12
  1073. package/example/node_modules/tough-cookie/README.md +0 -507
  1074. package/example/node_modules/tough-cookie/lib/cookie.js +0 -1431
  1075. package/example/node_modules/tough-cookie/lib/memstore.js +0 -176
  1076. package/example/node_modules/tough-cookie/lib/pathMatch.js +0 -61
  1077. package/example/node_modules/tough-cookie/lib/permuteDomain.js +0 -56
  1078. package/example/node_modules/tough-cookie/lib/pubsuffix-psl.js +0 -38
  1079. package/example/node_modules/tough-cookie/lib/store.js +0 -71
  1080. package/example/node_modules/tough-cookie/package.json +0 -98
  1081. package/example/node_modules/tunnel-agent/LICENSE +0 -55
  1082. package/example/node_modules/tunnel-agent/README.md +0 -4
  1083. package/example/node_modules/tunnel-agent/index.js +0 -244
  1084. package/example/node_modules/tunnel-agent/package.json +0 -59
  1085. package/example/node_modules/tweetnacl/AUTHORS.md +0 -28
  1086. package/example/node_modules/tweetnacl/CHANGELOG.md +0 -221
  1087. package/example/node_modules/tweetnacl/LICENSE +0 -24
  1088. package/example/node_modules/tweetnacl/PULL_REQUEST_TEMPLATE.md +0 -20
  1089. package/example/node_modules/tweetnacl/README.md +0 -459
  1090. package/example/node_modules/tweetnacl/nacl-fast.js +0 -2388
  1091. package/example/node_modules/tweetnacl/nacl-fast.min.js +0 -2
  1092. package/example/node_modules/tweetnacl/nacl.d.ts +0 -98
  1093. package/example/node_modules/tweetnacl/nacl.js +0 -1175
  1094. package/example/node_modules/tweetnacl/nacl.min.js +0 -1
  1095. package/example/node_modules/tweetnacl/package.json +0 -90
  1096. package/example/node_modules/typedarray/.travis.yml +0 -4
  1097. package/example/node_modules/typedarray/LICENSE +0 -35
  1098. package/example/node_modules/typedarray/example/tarray.js +0 -4
  1099. package/example/node_modules/typedarray/index.js +0 -630
  1100. package/example/node_modules/typedarray/package.json +0 -87
  1101. package/example/node_modules/typedarray/readme.markdown +0 -61
  1102. package/example/node_modules/typedarray/test/server/undef_globals.js +0 -19
  1103. package/example/node_modules/typedarray/test/tarray.js +0 -10
  1104. package/example/node_modules/uglify-js/LICENSE +0 -29
  1105. package/example/node_modules/uglify-js/README.md +0 -1138
  1106. package/example/node_modules/uglify-js/bin/uglifyjs +0 -419
  1107. package/example/node_modules/uglify-js/lib/ast.js +0 -988
  1108. package/example/node_modules/uglify-js/lib/compress.js +0 -6927
  1109. package/example/node_modules/uglify-js/lib/minify.js +0 -245
  1110. package/example/node_modules/uglify-js/lib/mozilla-ast.js +0 -629
  1111. package/example/node_modules/uglify-js/lib/output.js +0 -1510
  1112. package/example/node_modules/uglify-js/lib/parse.js +0 -1645
  1113. package/example/node_modules/uglify-js/lib/propmangle.js +0 -234
  1114. package/example/node_modules/uglify-js/lib/scope.js +0 -594
  1115. package/example/node_modules/uglify-js/lib/sourcemap.js +0 -104
  1116. package/example/node_modules/uglify-js/lib/transform.js +0 -185
  1117. package/example/node_modules/uglify-js/lib/utils.js +0 -277
  1118. package/example/node_modules/uglify-js/package.json +0 -107
  1119. package/example/node_modules/uglify-js/tools/domprops.json +0 -6841
  1120. package/example/node_modules/uglify-js/tools/exit.js +0 -15
  1121. package/example/node_modules/uglify-js/tools/exports.js +0 -6
  1122. package/example/node_modules/uglify-js/tools/node.js +0 -78
  1123. package/example/node_modules/uglify-js/tools/props.html +0 -540
  1124. package/example/node_modules/uri-js/README.md +0 -199
  1125. package/example/node_modules/uri-js/bower.json +0 -47
  1126. package/example/node_modules/uri-js/dist/es5/uri.all.d.ts +0 -59
  1127. package/example/node_modules/uri-js/dist/es5/uri.all.js +0 -1389
  1128. package/example/node_modules/uri-js/dist/es5/uri.all.js.map +0 -1
  1129. package/example/node_modules/uri-js/dist/es5/uri.all.min.d.ts +0 -59
  1130. package/example/node_modules/uri-js/dist/es5/uri.all.min.js +0 -3
  1131. package/example/node_modules/uri-js/dist/es5/uri.all.min.js.map +0 -1
  1132. package/example/node_modules/uri-js/dist/esnext/index.d.ts +0 -1
  1133. package/example/node_modules/uri-js/dist/esnext/index.js +0 -13
  1134. package/example/node_modules/uri-js/dist/esnext/index.js.map +0 -1
  1135. package/example/node_modules/uri-js/dist/esnext/regexps-iri.d.ts +0 -3
  1136. package/example/node_modules/uri-js/dist/esnext/regexps-iri.js +0 -3
  1137. package/example/node_modules/uri-js/dist/esnext/regexps-iri.js.map +0 -1
  1138. package/example/node_modules/uri-js/dist/esnext/regexps-uri.d.ts +0 -4
  1139. package/example/node_modules/uri-js/dist/esnext/regexps-uri.js +0 -42
  1140. package/example/node_modules/uri-js/dist/esnext/regexps-uri.js.map +0 -1
  1141. package/example/node_modules/uri-js/dist/esnext/schemes/http.d.ts +0 -3
  1142. package/example/node_modules/uri-js/dist/esnext/schemes/http.js +0 -27
  1143. package/example/node_modules/uri-js/dist/esnext/schemes/http.js.map +0 -1
  1144. package/example/node_modules/uri-js/dist/esnext/schemes/https.d.ts +0 -3
  1145. package/example/node_modules/uri-js/dist/esnext/schemes/https.js +0 -9
  1146. package/example/node_modules/uri-js/dist/esnext/schemes/https.js.map +0 -1
  1147. package/example/node_modules/uri-js/dist/esnext/schemes/mailto.d.ts +0 -12
  1148. package/example/node_modules/uri-js/dist/esnext/schemes/mailto.js +0 -148
  1149. package/example/node_modules/uri-js/dist/esnext/schemes/mailto.js.map +0 -1
  1150. package/example/node_modules/uri-js/dist/esnext/schemes/urn-uuid.d.ts +0 -7
  1151. package/example/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js +0 -23
  1152. package/example/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js.map +0 -1
  1153. package/example/node_modules/uri-js/dist/esnext/schemes/urn.d.ts +0 -10
  1154. package/example/node_modules/uri-js/dist/esnext/schemes/urn.js +0 -49
  1155. package/example/node_modules/uri-js/dist/esnext/schemes/urn.js.map +0 -1
  1156. package/example/node_modules/uri-js/dist/esnext/uri.d.ts +0 -59
  1157. package/example/node_modules/uri-js/dist/esnext/uri.js +0 -480
  1158. package/example/node_modules/uri-js/dist/esnext/uri.js.map +0 -1
  1159. package/example/node_modules/uri-js/dist/esnext/util.d.ts +0 -6
  1160. package/example/node_modules/uri-js/dist/esnext/util.js +0 -36
  1161. package/example/node_modules/uri-js/dist/esnext/util.js.map +0 -1
  1162. package/example/node_modules/uri-js/package.json +0 -97
  1163. package/example/node_modules/uri-js/rollup.config.js +0 -32
  1164. package/example/node_modules/uri-js/src/index.ts +0 -18
  1165. package/example/node_modules/uri-js/src/punycode.d.ts +0 -24
  1166. package/example/node_modules/uri-js/src/regexps-iri.ts +0 -4
  1167. package/example/node_modules/uri-js/src/regexps-uri.ts +0 -89
  1168. package/example/node_modules/uri-js/src/schemes/http.ts +0 -36
  1169. package/example/node_modules/uri-js/src/schemes/https.ts +0 -11
  1170. package/example/node_modules/uri-js/src/schemes/mailto.ts +0 -182
  1171. package/example/node_modules/uri-js/src/schemes/urn-uuid.ts +0 -36
  1172. package/example/node_modules/uri-js/src/schemes/urn.ts +0 -69
  1173. package/example/node_modules/uri-js/src/uri.ts +0 -556
  1174. package/example/node_modules/uri-js/src/util.ts +0 -40
  1175. package/example/node_modules/uri-js/tests/qunit.css +0 -118
  1176. package/example/node_modules/uri-js/tests/qunit.js +0 -1042
  1177. package/example/node_modules/uri-js/tests/test-es5-min.html +0 -17
  1178. package/example/node_modules/uri-js/tests/test-es5.html +0 -17
  1179. package/example/node_modules/uri-js/tests/tests.js +0 -774
  1180. package/example/node_modules/uri-js/tsconfig.json +0 -20
  1181. package/example/node_modules/uri-js/yarn.lock +0 -1902
  1182. package/example/node_modules/util-deprecate/History.md +0 -16
  1183. package/example/node_modules/util-deprecate/LICENSE +0 -24
  1184. package/example/node_modules/util-deprecate/README.md +0 -53
  1185. package/example/node_modules/util-deprecate/browser.js +0 -67
  1186. package/example/node_modules/util-deprecate/node.js +0 -6
  1187. package/example/node_modules/util-deprecate/package.json +0 -60
  1188. package/example/node_modules/uuid/.eslintrc.json +0 -47
  1189. package/example/node_modules/uuid/AUTHORS +0 -5
  1190. package/example/node_modules/uuid/CHANGELOG.md +0 -110
  1191. package/example/node_modules/uuid/LICENSE.md +0 -21
  1192. package/example/node_modules/uuid/README.md +0 -293
  1193. package/example/node_modules/uuid/README_js.md +0 -280
  1194. package/example/node_modules/uuid/bin/uuid +0 -65
  1195. package/example/node_modules/uuid/index.js +0 -8
  1196. package/example/node_modules/uuid/lib/bytesToUuid.js +0 -24
  1197. package/example/node_modules/uuid/lib/md5-browser.js +0 -216
  1198. package/example/node_modules/uuid/lib/md5.js +0 -25
  1199. package/example/node_modules/uuid/lib/rng-browser.js +0 -34
  1200. package/example/node_modules/uuid/lib/rng.js +0 -8
  1201. package/example/node_modules/uuid/lib/sha1-browser.js +0 -89
  1202. package/example/node_modules/uuid/lib/sha1.js +0 -25
  1203. package/example/node_modules/uuid/lib/v35.js +0 -57
  1204. package/example/node_modules/uuid/package.json +0 -99
  1205. package/example/node_modules/uuid/v1.js +0 -109
  1206. package/example/node_modules/uuid/v3.js +0 -4
  1207. package/example/node_modules/uuid/v4.js +0 -29
  1208. package/example/node_modules/uuid/v5.js +0 -3
  1209. package/example/node_modules/verror/CHANGES.md +0 -28
  1210. package/example/node_modules/verror/CONTRIBUTING.md +0 -19
  1211. package/example/node_modules/verror/LICENSE +0 -19
  1212. package/example/node_modules/verror/README.md +0 -528
  1213. package/example/node_modules/verror/lib/verror.js +0 -451
  1214. package/example/node_modules/verror/package.json +0 -55
  1215. package/example/node_modules/which/CHANGELOG.md +0 -152
  1216. package/example/node_modules/which/LICENSE +0 -15
  1217. package/example/node_modules/which/README.md +0 -51
  1218. package/example/node_modules/which/bin/which +0 -52
  1219. package/example/node_modules/which/package.json +0 -69
  1220. package/example/node_modules/which/which.js +0 -135
  1221. package/example/node_modules/wordwrap/LICENSE +0 -18
  1222. package/example/node_modules/wordwrap/README.markdown +0 -70
  1223. package/example/node_modules/wordwrap/example/center.js +0 -10
  1224. package/example/node_modules/wordwrap/example/meat.js +0 -3
  1225. package/example/node_modules/wordwrap/index.js +0 -76
  1226. package/example/node_modules/wordwrap/package.json +0 -69
  1227. package/example/node_modules/wordwrap/test/break.js +0 -30
  1228. package/example/node_modules/wordwrap/test/idleness.txt +0 -63
  1229. package/example/node_modules/wordwrap/test/wrap.js +0 -31
  1230. package/example/node_modules/yauzl/.travis.yml +0 -8
  1231. package/example/node_modules/yauzl/LICENSE +0 -21
  1232. package/example/node_modules/yauzl/README.md +0 -467
  1233. package/example/node_modules/yauzl/index.js +0 -626
  1234. package/example/node_modules/yauzl/package.json +0 -68
  1235. package/example/output.pdf +0 -0
  1236. package/example/package-lock.json +0 -738
  1237. package/example/package.json +0 -14
  1238. package/example/template.html +0 -19
@@ -1,1123 +0,0 @@
1
- define(['exports', 'module', '../base', '../exception', '../utils', './code-gen'], function (exports, module, _base, _exception, _utils, _codeGen) {
2
- 'use strict';
3
-
4
- // istanbul ignore next
5
-
6
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
7
-
8
- var _Exception = _interopRequireDefault(_exception);
9
-
10
- var _CodeGen = _interopRequireDefault(_codeGen);
11
-
12
- function Literal(value) {
13
- this.value = value;
14
- }
15
-
16
- function JavaScriptCompiler() {}
17
-
18
- JavaScriptCompiler.prototype = {
19
- // PUBLIC API: You can override these methods in a subclass to provide
20
- // alternative compiled forms for name lookup and buffering semantics
21
- nameLookup: function nameLookup(parent, name /* , type*/) {
22
- if (name === 'constructor') {
23
- return ['(', parent, '.propertyIsEnumerable(\'constructor\') ? ', parent, '.constructor : undefined', ')'];
24
- }
25
- if (JavaScriptCompiler.isValidJavaScriptVariableName(name)) {
26
- return [parent, '.', name];
27
- } else {
28
- return [parent, '[', JSON.stringify(name), ']'];
29
- }
30
- },
31
- depthedLookup: function depthedLookup(name) {
32
- return [this.aliasable('container.lookup'), '(depths, "', name, '")'];
33
- },
34
-
35
- compilerInfo: function compilerInfo() {
36
- var revision = _base.COMPILER_REVISION,
37
- versions = _base.REVISION_CHANGES[revision];
38
- return [revision, versions];
39
- },
40
-
41
- appendToBuffer: function appendToBuffer(source, location, explicit) {
42
- // Force a source as this simplifies the merge logic.
43
- if (!_utils.isArray(source)) {
44
- source = [source];
45
- }
46
- source = this.source.wrap(source, location);
47
-
48
- if (this.environment.isSimple) {
49
- return ['return ', source, ';'];
50
- } else if (explicit) {
51
- // This is a case where the buffer operation occurs as a child of another
52
- // construct, generally braces. We have to explicitly output these buffer
53
- // operations to ensure that the emitted code goes in the correct location.
54
- return ['buffer += ', source, ';'];
55
- } else {
56
- source.appendToBuffer = true;
57
- return source;
58
- }
59
- },
60
-
61
- initializeBuffer: function initializeBuffer() {
62
- return this.quotedString('');
63
- },
64
- // END PUBLIC API
65
-
66
- compile: function compile(environment, options, context, asObject) {
67
- this.environment = environment;
68
- this.options = options;
69
- this.stringParams = this.options.stringParams;
70
- this.trackIds = this.options.trackIds;
71
- this.precompile = !asObject;
72
-
73
- this.name = this.environment.name;
74
- this.isChild = !!context;
75
- this.context = context || {
76
- decorators: [],
77
- programs: [],
78
- environments: []
79
- };
80
-
81
- this.preamble();
82
-
83
- this.stackSlot = 0;
84
- this.stackVars = [];
85
- this.aliases = {};
86
- this.registers = { list: [] };
87
- this.hashes = [];
88
- this.compileStack = [];
89
- this.inlineStack = [];
90
- this.blockParams = [];
91
-
92
- this.compileChildren(environment, options);
93
-
94
- this.useDepths = this.useDepths || environment.useDepths || environment.useDecorators || this.options.compat;
95
- this.useBlockParams = this.useBlockParams || environment.useBlockParams;
96
-
97
- var opcodes = environment.opcodes,
98
- opcode = undefined,
99
- firstLoc = undefined,
100
- i = undefined,
101
- l = undefined;
102
-
103
- for (i = 0, l = opcodes.length; i < l; i++) {
104
- opcode = opcodes[i];
105
-
106
- this.source.currentLocation = opcode.loc;
107
- firstLoc = firstLoc || opcode.loc;
108
- this[opcode.opcode].apply(this, opcode.args);
109
- }
110
-
111
- // Flush any trailing content that might be pending.
112
- this.source.currentLocation = firstLoc;
113
- this.pushSource('');
114
-
115
- /* istanbul ignore next */
116
- if (this.stackSlot || this.inlineStack.length || this.compileStack.length) {
117
- throw new _Exception['default']('Compile completed with content left on stack');
118
- }
119
-
120
- if (!this.decorators.isEmpty()) {
121
- this.useDecorators = true;
122
-
123
- this.decorators.prepend('var decorators = container.decorators;\n');
124
- this.decorators.push('return fn;');
125
-
126
- if (asObject) {
127
- this.decorators = Function.apply(this, ['fn', 'props', 'container', 'depth0', 'data', 'blockParams', 'depths', this.decorators.merge()]);
128
- } else {
129
- this.decorators.prepend('function(fn, props, container, depth0, data, blockParams, depths) {\n');
130
- this.decorators.push('}\n');
131
- this.decorators = this.decorators.merge();
132
- }
133
- } else {
134
- this.decorators = undefined;
135
- }
136
-
137
- var fn = this.createFunctionContext(asObject);
138
- if (!this.isChild) {
139
- var ret = {
140
- compiler: this.compilerInfo(),
141
- main: fn
142
- };
143
-
144
- if (this.decorators) {
145
- ret.main_d = this.decorators; // eslint-disable-line camelcase
146
- ret.useDecorators = true;
147
- }
148
-
149
- var _context = this.context;
150
- var programs = _context.programs;
151
- var decorators = _context.decorators;
152
-
153
- for (i = 0, l = programs.length; i < l; i++) {
154
- if (programs[i]) {
155
- ret[i] = programs[i];
156
- if (decorators[i]) {
157
- ret[i + '_d'] = decorators[i];
158
- ret.useDecorators = true;
159
- }
160
- }
161
- }
162
-
163
- if (this.environment.usePartial) {
164
- ret.usePartial = true;
165
- }
166
- if (this.options.data) {
167
- ret.useData = true;
168
- }
169
- if (this.useDepths) {
170
- ret.useDepths = true;
171
- }
172
- if (this.useBlockParams) {
173
- ret.useBlockParams = true;
174
- }
175
- if (this.options.compat) {
176
- ret.compat = true;
177
- }
178
-
179
- if (!asObject) {
180
- ret.compiler = JSON.stringify(ret.compiler);
181
-
182
- this.source.currentLocation = { start: { line: 1, column: 0 } };
183
- ret = this.objectLiteral(ret);
184
-
185
- if (options.srcName) {
186
- ret = ret.toStringWithSourceMap({ file: options.destName });
187
- ret.map = ret.map && ret.map.toString();
188
- } else {
189
- ret = ret.toString();
190
- }
191
- } else {
192
- ret.compilerOptions = this.options;
193
- }
194
-
195
- return ret;
196
- } else {
197
- return fn;
198
- }
199
- },
200
-
201
- preamble: function preamble() {
202
- // track the last context pushed into place to allow skipping the
203
- // getContext opcode when it would be a noop
204
- this.lastContext = 0;
205
- this.source = new _CodeGen['default'](this.options.srcName);
206
- this.decorators = new _CodeGen['default'](this.options.srcName);
207
- },
208
-
209
- createFunctionContext: function createFunctionContext(asObject) {
210
- var varDeclarations = '';
211
-
212
- var locals = this.stackVars.concat(this.registers.list);
213
- if (locals.length > 0) {
214
- varDeclarations += ', ' + locals.join(', ');
215
- }
216
-
217
- // Generate minimizer alias mappings
218
- //
219
- // When using true SourceNodes, this will update all references to the given alias
220
- // as the source nodes are reused in situ. For the non-source node compilation mode,
221
- // aliases will not be used, but this case is already being run on the client and
222
- // we aren't concern about minimizing the template size.
223
- var aliasCount = 0;
224
- for (var alias in this.aliases) {
225
- // eslint-disable-line guard-for-in
226
- var node = this.aliases[alias];
227
-
228
- if (this.aliases.hasOwnProperty(alias) && node.children && node.referenceCount > 1) {
229
- varDeclarations += ', alias' + ++aliasCount + '=' + alias;
230
- node.children[0] = 'alias' + aliasCount;
231
- }
232
- }
233
-
234
- var params = ['container', 'depth0', 'helpers', 'partials', 'data'];
235
-
236
- if (this.useBlockParams || this.useDepths) {
237
- params.push('blockParams');
238
- }
239
- if (this.useDepths) {
240
- params.push('depths');
241
- }
242
-
243
- // Perform a second pass over the output to merge content when possible
244
- var source = this.mergeSource(varDeclarations);
245
-
246
- if (asObject) {
247
- params.push(source);
248
-
249
- return Function.apply(this, params);
250
- } else {
251
- return this.source.wrap(['function(', params.join(','), ') {\n ', source, '}']);
252
- }
253
- },
254
- mergeSource: function mergeSource(varDeclarations) {
255
- var isSimple = this.environment.isSimple,
256
- appendOnly = !this.forceBuffer,
257
- appendFirst = undefined,
258
- sourceSeen = undefined,
259
- bufferStart = undefined,
260
- bufferEnd = undefined;
261
- this.source.each(function (line) {
262
- if (line.appendToBuffer) {
263
- if (bufferStart) {
264
- line.prepend(' + ');
265
- } else {
266
- bufferStart = line;
267
- }
268
- bufferEnd = line;
269
- } else {
270
- if (bufferStart) {
271
- if (!sourceSeen) {
272
- appendFirst = true;
273
- } else {
274
- bufferStart.prepend('buffer += ');
275
- }
276
- bufferEnd.add(';');
277
- bufferStart = bufferEnd = undefined;
278
- }
279
-
280
- sourceSeen = true;
281
- if (!isSimple) {
282
- appendOnly = false;
283
- }
284
- }
285
- });
286
-
287
- if (appendOnly) {
288
- if (bufferStart) {
289
- bufferStart.prepend('return ');
290
- bufferEnd.add(';');
291
- } else if (!sourceSeen) {
292
- this.source.push('return "";');
293
- }
294
- } else {
295
- varDeclarations += ', buffer = ' + (appendFirst ? '' : this.initializeBuffer());
296
-
297
- if (bufferStart) {
298
- bufferStart.prepend('return buffer + ');
299
- bufferEnd.add(';');
300
- } else {
301
- this.source.push('return buffer;');
302
- }
303
- }
304
-
305
- if (varDeclarations) {
306
- this.source.prepend('var ' + varDeclarations.substring(2) + (appendFirst ? '' : ';\n'));
307
- }
308
-
309
- return this.source.merge();
310
- },
311
-
312
- // [blockValue]
313
- //
314
- // On stack, before: hash, inverse, program, value
315
- // On stack, after: return value of blockHelperMissing
316
- //
317
- // The purpose of this opcode is to take a block of the form
318
- // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and
319
- // replace it on the stack with the result of properly
320
- // invoking blockHelperMissing.
321
- blockValue: function blockValue(name) {
322
- var blockHelperMissing = this.aliasable('helpers.blockHelperMissing'),
323
- params = [this.contextName(0)];
324
- this.setupHelperArgs(name, 0, params);
325
-
326
- var blockName = this.popStack();
327
- params.splice(1, 0, blockName);
328
-
329
- this.push(this.source.functionCall(blockHelperMissing, 'call', params));
330
- },
331
-
332
- // [ambiguousBlockValue]
333
- //
334
- // On stack, before: hash, inverse, program, value
335
- // Compiler value, before: lastHelper=value of last found helper, if any
336
- // On stack, after, if no lastHelper: same as [blockValue]
337
- // On stack, after, if lastHelper: value
338
- ambiguousBlockValue: function ambiguousBlockValue() {
339
- // We're being a bit cheeky and reusing the options value from the prior exec
340
- var blockHelperMissing = this.aliasable('helpers.blockHelperMissing'),
341
- params = [this.contextName(0)];
342
- this.setupHelperArgs('', 0, params, true);
343
-
344
- this.flushInline();
345
-
346
- var current = this.topStack();
347
- params.splice(1, 0, current);
348
-
349
- this.pushSource(['if (!', this.lastHelper, ') { ', current, ' = ', this.source.functionCall(blockHelperMissing, 'call', params), '}']);
350
- },
351
-
352
- // [appendContent]
353
- //
354
- // On stack, before: ...
355
- // On stack, after: ...
356
- //
357
- // Appends the string value of `content` to the current buffer
358
- appendContent: function appendContent(content) {
359
- if (this.pendingContent) {
360
- content = this.pendingContent + content;
361
- } else {
362
- this.pendingLocation = this.source.currentLocation;
363
- }
364
-
365
- this.pendingContent = content;
366
- },
367
-
368
- // [append]
369
- //
370
- // On stack, before: value, ...
371
- // On stack, after: ...
372
- //
373
- // Coerces `value` to a String and appends it to the current buffer.
374
- //
375
- // If `value` is truthy, or 0, it is coerced into a string and appended
376
- // Otherwise, the empty string is appended
377
- append: function append() {
378
- if (this.isInline()) {
379
- this.replaceStack(function (current) {
380
- return [' != null ? ', current, ' : ""'];
381
- });
382
-
383
- this.pushSource(this.appendToBuffer(this.popStack()));
384
- } else {
385
- var local = this.popStack();
386
- this.pushSource(['if (', local, ' != null) { ', this.appendToBuffer(local, undefined, true), ' }']);
387
- if (this.environment.isSimple) {
388
- this.pushSource(['else { ', this.appendToBuffer("''", undefined, true), ' }']);
389
- }
390
- }
391
- },
392
-
393
- // [appendEscaped]
394
- //
395
- // On stack, before: value, ...
396
- // On stack, after: ...
397
- //
398
- // Escape `value` and append it to the buffer
399
- appendEscaped: function appendEscaped() {
400
- this.pushSource(this.appendToBuffer([this.aliasable('container.escapeExpression'), '(', this.popStack(), ')']));
401
- },
402
-
403
- // [getContext]
404
- //
405
- // On stack, before: ...
406
- // On stack, after: ...
407
- // Compiler value, after: lastContext=depth
408
- //
409
- // Set the value of the `lastContext` compiler value to the depth
410
- getContext: function getContext(depth) {
411
- this.lastContext = depth;
412
- },
413
-
414
- // [pushContext]
415
- //
416
- // On stack, before: ...
417
- // On stack, after: currentContext, ...
418
- //
419
- // Pushes the value of the current context onto the stack.
420
- pushContext: function pushContext() {
421
- this.pushStackLiteral(this.contextName(this.lastContext));
422
- },
423
-
424
- // [lookupOnContext]
425
- //
426
- // On stack, before: ...
427
- // On stack, after: currentContext[name], ...
428
- //
429
- // Looks up the value of `name` on the current context and pushes
430
- // it onto the stack.
431
- lookupOnContext: function lookupOnContext(parts, falsy, strict, scoped) {
432
- var i = 0;
433
-
434
- if (!scoped && this.options.compat && !this.lastContext) {
435
- // The depthed query is expected to handle the undefined logic for the root level that
436
- // is implemented below, so we evaluate that directly in compat mode
437
- this.push(this.depthedLookup(parts[i++]));
438
- } else {
439
- this.pushContext();
440
- }
441
-
442
- this.resolvePath('context', parts, i, falsy, strict);
443
- },
444
-
445
- // [lookupBlockParam]
446
- //
447
- // On stack, before: ...
448
- // On stack, after: blockParam[name], ...
449
- //
450
- // Looks up the value of `parts` on the given block param and pushes
451
- // it onto the stack.
452
- lookupBlockParam: function lookupBlockParam(blockParamId, parts) {
453
- this.useBlockParams = true;
454
-
455
- this.push(['blockParams[', blockParamId[0], '][', blockParamId[1], ']']);
456
- this.resolvePath('context', parts, 1);
457
- },
458
-
459
- // [lookupData]
460
- //
461
- // On stack, before: ...
462
- // On stack, after: data, ...
463
- //
464
- // Push the data lookup operator
465
- lookupData: function lookupData(depth, parts, strict) {
466
- if (!depth) {
467
- this.pushStackLiteral('data');
468
- } else {
469
- this.pushStackLiteral('container.data(data, ' + depth + ')');
470
- }
471
-
472
- this.resolvePath('data', parts, 0, true, strict);
473
- },
474
-
475
- resolvePath: function resolvePath(type, parts, i, falsy, strict) {
476
- // istanbul ignore next
477
-
478
- var _this = this;
479
-
480
- if (this.options.strict || this.options.assumeObjects) {
481
- this.push(strictLookup(this.options.strict && strict, this, parts, type));
482
- return;
483
- }
484
-
485
- var len = parts.length;
486
- for (; i < len; i++) {
487
- /* eslint-disable no-loop-func */
488
- this.replaceStack(function (current) {
489
- var lookup = _this.nameLookup(current, parts[i], type);
490
- // We want to ensure that zero and false are handled properly if the context (falsy flag)
491
- // needs to have the special handling for these values.
492
- if (!falsy) {
493
- return [' != null ? ', lookup, ' : ', current];
494
- } else {
495
- // Otherwise we can use generic falsy handling
496
- return [' && ', lookup];
497
- }
498
- });
499
- /* eslint-enable no-loop-func */
500
- }
501
- },
502
-
503
- // [resolvePossibleLambda]
504
- //
505
- // On stack, before: value, ...
506
- // On stack, after: resolved value, ...
507
- //
508
- // If the `value` is a lambda, replace it on the stack by
509
- // the return value of the lambda
510
- resolvePossibleLambda: function resolvePossibleLambda() {
511
- this.push([this.aliasable('container.lambda'), '(', this.popStack(), ', ', this.contextName(0), ')']);
512
- },
513
-
514
- // [pushStringParam]
515
- //
516
- // On stack, before: ...
517
- // On stack, after: string, currentContext, ...
518
- //
519
- // This opcode is designed for use in string mode, which
520
- // provides the string value of a parameter along with its
521
- // depth rather than resolving it immediately.
522
- pushStringParam: function pushStringParam(string, type) {
523
- this.pushContext();
524
- this.pushString(type);
525
-
526
- // If it's a subexpression, the string result
527
- // will be pushed after this opcode.
528
- if (type !== 'SubExpression') {
529
- if (typeof string === 'string') {
530
- this.pushString(string);
531
- } else {
532
- this.pushStackLiteral(string);
533
- }
534
- }
535
- },
536
-
537
- emptyHash: function emptyHash(omitEmpty) {
538
- if (this.trackIds) {
539
- this.push('{}'); // hashIds
540
- }
541
- if (this.stringParams) {
542
- this.push('{}'); // hashContexts
543
- this.push('{}'); // hashTypes
544
- }
545
- this.pushStackLiteral(omitEmpty ? 'undefined' : '{}');
546
- },
547
- pushHash: function pushHash() {
548
- if (this.hash) {
549
- this.hashes.push(this.hash);
550
- }
551
- this.hash = { values: [], types: [], contexts: [], ids: [] };
552
- },
553
- popHash: function popHash() {
554
- var hash = this.hash;
555
- this.hash = this.hashes.pop();
556
-
557
- if (this.trackIds) {
558
- this.push(this.objectLiteral(hash.ids));
559
- }
560
- if (this.stringParams) {
561
- this.push(this.objectLiteral(hash.contexts));
562
- this.push(this.objectLiteral(hash.types));
563
- }
564
-
565
- this.push(this.objectLiteral(hash.values));
566
- },
567
-
568
- // [pushString]
569
- //
570
- // On stack, before: ...
571
- // On stack, after: quotedString(string), ...
572
- //
573
- // Push a quoted version of `string` onto the stack
574
- pushString: function pushString(string) {
575
- this.pushStackLiteral(this.quotedString(string));
576
- },
577
-
578
- // [pushLiteral]
579
- //
580
- // On stack, before: ...
581
- // On stack, after: value, ...
582
- //
583
- // Pushes a value onto the stack. This operation prevents
584
- // the compiler from creating a temporary variable to hold
585
- // it.
586
- pushLiteral: function pushLiteral(value) {
587
- this.pushStackLiteral(value);
588
- },
589
-
590
- // [pushProgram]
591
- //
592
- // On stack, before: ...
593
- // On stack, after: program(guid), ...
594
- //
595
- // Push a program expression onto the stack. This takes
596
- // a compile-time guid and converts it into a runtime-accessible
597
- // expression.
598
- pushProgram: function pushProgram(guid) {
599
- if (guid != null) {
600
- this.pushStackLiteral(this.programExpression(guid));
601
- } else {
602
- this.pushStackLiteral(null);
603
- }
604
- },
605
-
606
- // [registerDecorator]
607
- //
608
- // On stack, before: hash, program, params..., ...
609
- // On stack, after: ...
610
- //
611
- // Pops off the decorator's parameters, invokes the decorator,
612
- // and inserts the decorator into the decorators list.
613
- registerDecorator: function registerDecorator(paramSize, name) {
614
- var foundDecorator = this.nameLookup('decorators', name, 'decorator'),
615
- options = this.setupHelperArgs(name, paramSize);
616
-
617
- this.decorators.push(['fn = ', this.decorators.functionCall(foundDecorator, '', ['fn', 'props', 'container', options]), ' || fn;']);
618
- },
619
-
620
- // [invokeHelper]
621
- //
622
- // On stack, before: hash, inverse, program, params..., ...
623
- // On stack, after: result of helper invocation
624
- //
625
- // Pops off the helper's parameters, invokes the helper,
626
- // and pushes the helper's return value onto the stack.
627
- //
628
- // If the helper is not found, `helperMissing` is called.
629
- invokeHelper: function invokeHelper(paramSize, name, isSimple) {
630
- var nonHelper = this.popStack(),
631
- helper = this.setupHelper(paramSize, name),
632
- simple = isSimple ? [helper.name, ' || '] : '';
633
-
634
- var lookup = ['('].concat(simple, nonHelper);
635
- if (!this.options.strict) {
636
- lookup.push(' || ', this.aliasable('helpers.helperMissing'));
637
- }
638
- lookup.push(')');
639
-
640
- this.push(this.source.functionCall(lookup, 'call', helper.callParams));
641
- },
642
-
643
- // [invokeKnownHelper]
644
- //
645
- // On stack, before: hash, inverse, program, params..., ...
646
- // On stack, after: result of helper invocation
647
- //
648
- // This operation is used when the helper is known to exist,
649
- // so a `helperMissing` fallback is not required.
650
- invokeKnownHelper: function invokeKnownHelper(paramSize, name) {
651
- var helper = this.setupHelper(paramSize, name);
652
- this.push(this.source.functionCall(helper.name, 'call', helper.callParams));
653
- },
654
-
655
- // [invokeAmbiguous]
656
- //
657
- // On stack, before: hash, inverse, program, params..., ...
658
- // On stack, after: result of disambiguation
659
- //
660
- // This operation is used when an expression like `{{foo}}`
661
- // is provided, but we don't know at compile-time whether it
662
- // is a helper or a path.
663
- //
664
- // This operation emits more code than the other options,
665
- // and can be avoided by passing the `knownHelpers` and
666
- // `knownHelpersOnly` flags at compile-time.
667
- invokeAmbiguous: function invokeAmbiguous(name, helperCall) {
668
- this.useRegister('helper');
669
-
670
- var nonHelper = this.popStack();
671
-
672
- this.emptyHash();
673
- var helper = this.setupHelper(0, name, helperCall);
674
-
675
- var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper');
676
-
677
- var lookup = ['(', '(helper = ', helperName, ' || ', nonHelper, ')'];
678
- if (!this.options.strict) {
679
- lookup[0] = '(helper = ';
680
- lookup.push(' != null ? helper : ', this.aliasable('helpers.helperMissing'));
681
- }
682
-
683
- this.push(['(', lookup, helper.paramsInit ? ['),(', helper.paramsInit] : [], '),', '(typeof helper === ', this.aliasable('"function"'), ' ? ', this.source.functionCall('helper', 'call', helper.callParams), ' : helper))']);
684
- },
685
-
686
- // [invokePartial]
687
- //
688
- // On stack, before: context, ...
689
- // On stack after: result of partial invocation
690
- //
691
- // This operation pops off a context, invokes a partial with that context,
692
- // and pushes the result of the invocation back.
693
- invokePartial: function invokePartial(isDynamic, name, indent) {
694
- var params = [],
695
- options = this.setupParams(name, 1, params);
696
-
697
- if (isDynamic) {
698
- name = this.popStack();
699
- delete options.name;
700
- }
701
-
702
- if (indent) {
703
- options.indent = JSON.stringify(indent);
704
- }
705
- options.helpers = 'helpers';
706
- options.partials = 'partials';
707
- options.decorators = 'container.decorators';
708
-
709
- if (!isDynamic) {
710
- params.unshift(this.nameLookup('partials', name, 'partial'));
711
- } else {
712
- params.unshift(name);
713
- }
714
-
715
- if (this.options.compat) {
716
- options.depths = 'depths';
717
- }
718
- options = this.objectLiteral(options);
719
- params.push(options);
720
-
721
- this.push(this.source.functionCall('container.invokePartial', '', params));
722
- },
723
-
724
- // [assignToHash]
725
- //
726
- // On stack, before: value, ..., hash, ...
727
- // On stack, after: ..., hash, ...
728
- //
729
- // Pops a value off the stack and assigns it to the current hash
730
- assignToHash: function assignToHash(key) {
731
- var value = this.popStack(),
732
- context = undefined,
733
- type = undefined,
734
- id = undefined;
735
-
736
- if (this.trackIds) {
737
- id = this.popStack();
738
- }
739
- if (this.stringParams) {
740
- type = this.popStack();
741
- context = this.popStack();
742
- }
743
-
744
- var hash = this.hash;
745
- if (context) {
746
- hash.contexts[key] = context;
747
- }
748
- if (type) {
749
- hash.types[key] = type;
750
- }
751
- if (id) {
752
- hash.ids[key] = id;
753
- }
754
- hash.values[key] = value;
755
- },
756
-
757
- pushId: function pushId(type, name, child) {
758
- if (type === 'BlockParam') {
759
- this.pushStackLiteral('blockParams[' + name[0] + '].path[' + name[1] + ']' + (child ? ' + ' + JSON.stringify('.' + child) : ''));
760
- } else if (type === 'PathExpression') {
761
- this.pushString(name);
762
- } else if (type === 'SubExpression') {
763
- this.pushStackLiteral('true');
764
- } else {
765
- this.pushStackLiteral('null');
766
- }
767
- },
768
-
769
- // HELPERS
770
-
771
- compiler: JavaScriptCompiler,
772
-
773
- compileChildren: function compileChildren(environment, options) {
774
- var children = environment.children,
775
- child = undefined,
776
- compiler = undefined;
777
-
778
- for (var i = 0, l = children.length; i < l; i++) {
779
- child = children[i];
780
- compiler = new this.compiler(); // eslint-disable-line new-cap
781
-
782
- var existing = this.matchExistingProgram(child);
783
-
784
- if (existing == null) {
785
- this.context.programs.push(''); // Placeholder to prevent name conflicts for nested children
786
- var index = this.context.programs.length;
787
- child.index = index;
788
- child.name = 'program' + index;
789
- this.context.programs[index] = compiler.compile(child, options, this.context, !this.precompile);
790
- this.context.decorators[index] = compiler.decorators;
791
- this.context.environments[index] = child;
792
-
793
- this.useDepths = this.useDepths || compiler.useDepths;
794
- this.useBlockParams = this.useBlockParams || compiler.useBlockParams;
795
- child.useDepths = this.useDepths;
796
- child.useBlockParams = this.useBlockParams;
797
- } else {
798
- child.index = existing.index;
799
- child.name = 'program' + existing.index;
800
-
801
- this.useDepths = this.useDepths || existing.useDepths;
802
- this.useBlockParams = this.useBlockParams || existing.useBlockParams;
803
- }
804
- }
805
- },
806
- matchExistingProgram: function matchExistingProgram(child) {
807
- for (var i = 0, len = this.context.environments.length; i < len; i++) {
808
- var environment = this.context.environments[i];
809
- if (environment && environment.equals(child)) {
810
- return environment;
811
- }
812
- }
813
- },
814
-
815
- programExpression: function programExpression(guid) {
816
- var child = this.environment.children[guid],
817
- programParams = [child.index, 'data', child.blockParams];
818
-
819
- if (this.useBlockParams || this.useDepths) {
820
- programParams.push('blockParams');
821
- }
822
- if (this.useDepths) {
823
- programParams.push('depths');
824
- }
825
-
826
- return 'container.program(' + programParams.join(', ') + ')';
827
- },
828
-
829
- useRegister: function useRegister(name) {
830
- if (!this.registers[name]) {
831
- this.registers[name] = true;
832
- this.registers.list.push(name);
833
- }
834
- },
835
-
836
- push: function push(expr) {
837
- if (!(expr instanceof Literal)) {
838
- expr = this.source.wrap(expr);
839
- }
840
-
841
- this.inlineStack.push(expr);
842
- return expr;
843
- },
844
-
845
- pushStackLiteral: function pushStackLiteral(item) {
846
- this.push(new Literal(item));
847
- },
848
-
849
- pushSource: function pushSource(source) {
850
- if (this.pendingContent) {
851
- this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent), this.pendingLocation));
852
- this.pendingContent = undefined;
853
- }
854
-
855
- if (source) {
856
- this.source.push(source);
857
- }
858
- },
859
-
860
- replaceStack: function replaceStack(callback) {
861
- var prefix = ['('],
862
- stack = undefined,
863
- createdStack = undefined,
864
- usedLiteral = undefined;
865
-
866
- /* istanbul ignore next */
867
- if (!this.isInline()) {
868
- throw new _Exception['default']('replaceStack on non-inline');
869
- }
870
-
871
- // We want to merge the inline statement into the replacement statement via ','
872
- var top = this.popStack(true);
873
-
874
- if (top instanceof Literal) {
875
- // Literals do not need to be inlined
876
- stack = [top.value];
877
- prefix = ['(', stack];
878
- usedLiteral = true;
879
- } else {
880
- // Get or create the current stack name for use by the inline
881
- createdStack = true;
882
- var _name = this.incrStack();
883
-
884
- prefix = ['((', this.push(_name), ' = ', top, ')'];
885
- stack = this.topStack();
886
- }
887
-
888
- var item = callback.call(this, stack);
889
-
890
- if (!usedLiteral) {
891
- this.popStack();
892
- }
893
- if (createdStack) {
894
- this.stackSlot--;
895
- }
896
- this.push(prefix.concat(item, ')'));
897
- },
898
-
899
- incrStack: function incrStack() {
900
- this.stackSlot++;
901
- if (this.stackSlot > this.stackVars.length) {
902
- this.stackVars.push('stack' + this.stackSlot);
903
- }
904
- return this.topStackName();
905
- },
906
- topStackName: function topStackName() {
907
- return 'stack' + this.stackSlot;
908
- },
909
- flushInline: function flushInline() {
910
- var inlineStack = this.inlineStack;
911
- this.inlineStack = [];
912
- for (var i = 0, len = inlineStack.length; i < len; i++) {
913
- var entry = inlineStack[i];
914
- /* istanbul ignore if */
915
- if (entry instanceof Literal) {
916
- this.compileStack.push(entry);
917
- } else {
918
- var stack = this.incrStack();
919
- this.pushSource([stack, ' = ', entry, ';']);
920
- this.compileStack.push(stack);
921
- }
922
- }
923
- },
924
- isInline: function isInline() {
925
- return this.inlineStack.length;
926
- },
927
-
928
- popStack: function popStack(wrapped) {
929
- var inline = this.isInline(),
930
- item = (inline ? this.inlineStack : this.compileStack).pop();
931
-
932
- if (!wrapped && item instanceof Literal) {
933
- return item.value;
934
- } else {
935
- if (!inline) {
936
- /* istanbul ignore next */
937
- if (!this.stackSlot) {
938
- throw new _Exception['default']('Invalid stack pop');
939
- }
940
- this.stackSlot--;
941
- }
942
- return item;
943
- }
944
- },
945
-
946
- topStack: function topStack() {
947
- var stack = this.isInline() ? this.inlineStack : this.compileStack,
948
- item = stack[stack.length - 1];
949
-
950
- /* istanbul ignore if */
951
- if (item instanceof Literal) {
952
- return item.value;
953
- } else {
954
- return item;
955
- }
956
- },
957
-
958
- contextName: function contextName(context) {
959
- if (this.useDepths && context) {
960
- return 'depths[' + context + ']';
961
- } else {
962
- return 'depth' + context;
963
- }
964
- },
965
-
966
- quotedString: function quotedString(str) {
967
- return this.source.quotedString(str);
968
- },
969
-
970
- objectLiteral: function objectLiteral(obj) {
971
- return this.source.objectLiteral(obj);
972
- },
973
-
974
- aliasable: function aliasable(name) {
975
- var ret = this.aliases[name];
976
- if (ret) {
977
- ret.referenceCount++;
978
- return ret;
979
- }
980
-
981
- ret = this.aliases[name] = this.source.wrap(name);
982
- ret.aliasable = true;
983
- ret.referenceCount = 1;
984
-
985
- return ret;
986
- },
987
-
988
- setupHelper: function setupHelper(paramSize, name, blockHelper) {
989
- var params = [],
990
- paramsInit = this.setupHelperArgs(name, paramSize, params, blockHelper);
991
- var foundHelper = this.nameLookup('helpers', name, 'helper'),
992
- callContext = this.aliasable(this.contextName(0) + ' != null ? ' + this.contextName(0) + ' : (container.nullContext || {})');
993
-
994
- return {
995
- params: params,
996
- paramsInit: paramsInit,
997
- name: foundHelper,
998
- callParams: [callContext].concat(params)
999
- };
1000
- },
1001
-
1002
- setupParams: function setupParams(helper, paramSize, params) {
1003
- var options = {},
1004
- contexts = [],
1005
- types = [],
1006
- ids = [],
1007
- objectArgs = !params,
1008
- param = undefined;
1009
-
1010
- if (objectArgs) {
1011
- params = [];
1012
- }
1013
-
1014
- options.name = this.quotedString(helper);
1015
- options.hash = this.popStack();
1016
-
1017
- if (this.trackIds) {
1018
- options.hashIds = this.popStack();
1019
- }
1020
- if (this.stringParams) {
1021
- options.hashTypes = this.popStack();
1022
- options.hashContexts = this.popStack();
1023
- }
1024
-
1025
- var inverse = this.popStack(),
1026
- program = this.popStack();
1027
-
1028
- // Avoid setting fn and inverse if neither are set. This allows
1029
- // helpers to do a check for `if (options.fn)`
1030
- if (program || inverse) {
1031
- options.fn = program || 'container.noop';
1032
- options.inverse = inverse || 'container.noop';
1033
- }
1034
-
1035
- // The parameters go on to the stack in order (making sure that they are evaluated in order)
1036
- // so we need to pop them off the stack in reverse order
1037
- var i = paramSize;
1038
- while (i--) {
1039
- param = this.popStack();
1040
- params[i] = param;
1041
-
1042
- if (this.trackIds) {
1043
- ids[i] = this.popStack();
1044
- }
1045
- if (this.stringParams) {
1046
- types[i] = this.popStack();
1047
- contexts[i] = this.popStack();
1048
- }
1049
- }
1050
-
1051
- if (objectArgs) {
1052
- options.args = this.source.generateArray(params);
1053
- }
1054
-
1055
- if (this.trackIds) {
1056
- options.ids = this.source.generateArray(ids);
1057
- }
1058
- if (this.stringParams) {
1059
- options.types = this.source.generateArray(types);
1060
- options.contexts = this.source.generateArray(contexts);
1061
- }
1062
-
1063
- if (this.options.data) {
1064
- options.data = 'data';
1065
- }
1066
- if (this.useBlockParams) {
1067
- options.blockParams = 'blockParams';
1068
- }
1069
- return options;
1070
- },
1071
-
1072
- setupHelperArgs: function setupHelperArgs(helper, paramSize, params, useRegister) {
1073
- var options = this.setupParams(helper, paramSize, params);
1074
- options = this.objectLiteral(options);
1075
- if (useRegister) {
1076
- this.useRegister('options');
1077
- params.push('options');
1078
- return ['options=', options];
1079
- } else if (params) {
1080
- params.push(options);
1081
- return '';
1082
- } else {
1083
- return options;
1084
- }
1085
- }
1086
- };
1087
-
1088
- (function () {
1089
- var reservedWords = ('break else new var' + ' case finally return void' + ' catch for switch while' + ' continue function this with' + ' default if throw' + ' delete in try' + ' do instanceof typeof' + ' abstract enum int short' + ' boolean export interface static' + ' byte extends long super' + ' char final native synchronized' + ' class float package throws' + ' const goto private transient' + ' debugger implements protected volatile' + ' double import public let yield await' + ' null true false').split(' ');
1090
-
1091
- var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {};
1092
-
1093
- for (var i = 0, l = reservedWords.length; i < l; i++) {
1094
- compilerWords[reservedWords[i]] = true;
1095
- }
1096
- })();
1097
-
1098
- JavaScriptCompiler.isValidJavaScriptVariableName = function (name) {
1099
- return !JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name);
1100
- };
1101
-
1102
- function strictLookup(requireTerminal, compiler, parts, type) {
1103
- var stack = compiler.popStack(),
1104
- i = 0,
1105
- len = parts.length;
1106
- if (requireTerminal) {
1107
- len--;
1108
- }
1109
-
1110
- for (; i < len; i++) {
1111
- stack = compiler.nameLookup(stack, parts[i], type);
1112
- }
1113
-
1114
- if (requireTerminal) {
1115
- return [compiler.aliasable('container.strict'), '(', stack, ', ', compiler.quotedString(parts[i]), ')'];
1116
- } else {
1117
- return stack;
1118
- }
1119
- }
1120
-
1121
- module.exports = JavaScriptCompiler;
1122
- });
1123
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2phdmFzY3JpcHQtY29tcGlsZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFLQSxXQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDdEIsUUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7R0FDcEI7O0FBRUQsV0FBUyxrQkFBa0IsR0FBRyxFQUFFOztBQUVoQyxvQkFBa0IsQ0FBQyxTQUFTLEdBQUc7OztBQUc3QixjQUFVLEVBQUUsb0JBQVMsTUFBTSxFQUFFLElBQUksY0FBYTtBQUM1QyxVQUFJLElBQUksS0FBSyxhQUFhLEVBQUU7QUFDMUIsZUFBTyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsMkNBQTJDLEVBQUUsTUFBTSxFQUFFLDBCQUEwQixFQUFFLEdBQUcsQ0FBQyxDQUFDO09BQzVHO0FBQ0QsVUFBSSxrQkFBa0IsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUMxRCxlQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztPQUM1QixNQUFNO0FBQ0wsZUFBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztPQUNqRDtLQUNGO0FBQ0QsaUJBQWEsRUFBRSx1QkFBUyxJQUFJLEVBQUU7QUFDNUIsYUFBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ3ZFOztBQUVELGdCQUFZLEVBQUUsd0JBQVc7QUFDdkIsVUFBTSxRQUFRLFNBN0JULGlCQUFpQixBQTZCWTtVQUM1QixRQUFRLEdBQUcsTUE5Qk8sZ0JBQWdCLENBOEJOLFFBQVEsQ0FBQyxDQUFDO0FBQzVDLGFBQU8sQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7S0FD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LENBQUM7O0FBRUYsV0FBUyxZQUFZLENBQUMsZUFBZSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0FBQzVELFFBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUU7UUFDM0IsQ0FBQyxHQUFHLENBQUM7UUFDTCxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUN2QixRQUFJLGVBQWUsRUFBRTtBQUNuQixTQUFHLEVBQUUsQ0FBQztLQUNQOztBQUVELFdBQU8sQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNuQixXQUFLLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ3BEOztBQUVELFFBQUksZUFBZSxFQUFFO0FBQ25CLGFBQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztLQUN6RyxNQUFNO0FBQ0wsYUFBTyxLQUFLLENBQUM7S0FDZDtHQUNGOzttQkFFYyxrQkFBa0IiLCJmaWxlIjoiamF2YXNjcmlwdC1jb21waWxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENPTVBJTEVSX1JFVklTSU9OLCBSRVZJU0lPTl9DSEFOR0VTIH0gZnJvbSAnLi4vYmFzZSc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4uL2V4Y2VwdGlvbic7XG5pbXBvcnQge2lzQXJyYXl9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBDb2RlR2VuIGZyb20gJy4vY29kZS1nZW4nO1xuXG5mdW5jdGlvbiBMaXRlcmFsKHZhbHVlKSB7XG4gIHRoaXMudmFsdWUgPSB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gSmF2YVNjcmlwdENvbXBpbGVyKCkge31cblxuSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZSA9IHtcbiAgLy8gUFVCTElDIEFQSTogWW91IGNhbiBvdmVycmlkZSB0aGVzZSBtZXRob2RzIGluIGEgc3ViY2xhc3MgdG8gcHJvdmlkZVxuICAvLyBhbHRlcm5hdGl2ZSBjb21waWxlZCBmb3JtcyBmb3IgbmFtZSBsb29rdXAgYW5kIGJ1ZmZlcmluZyBzZW1hbnRpY3NcbiAgbmFtZUxvb2t1cDogZnVuY3Rpb24ocGFyZW50LCBuYW1lLyogLCB0eXBlKi8pIHtcbiAgICBpZiAobmFtZSA9PT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgcmV0dXJuIFsnKCcsIHBhcmVudCwgJy5wcm9wZXJ0eUlzRW51bWVyYWJsZShcXCdjb25zdHJ1Y3RvclxcJykgPyAnLCBwYXJlbnQsICcuY29uc3RydWN0b3IgOiB1bmRlZmluZWQnLCAnKSddO1xuICAgIH1cbiAgICBpZiAoSmF2YVNjcmlwdENvbXBpbGVyLmlzVmFsaWRKYXZhU2NyaXB0VmFyaWFibGVOYW1lKG5hbWUpKSB7XG4gICAgICByZXR1cm4gW3BhcmVudCwgJy4nLCBuYW1lXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtwYXJlbnQsICdbJywgSlNPTi5zdHJpbmdpZnkobmFtZSksICddJ107XG4gICAgfVxuICB9LFxuICBkZXB0aGVkTG9va3VwOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgcmV0dXJuIFt0aGlzLmFsaWFzYWJsZSgnY29udGFpbmVyLmxvb2t1cCcpLCAnKGRlcHRocywgXCInLCBuYW1lLCAnXCIpJ107XG4gIH0sXG5cbiAgY29tcGlsZXJJbmZvOiBmdW5jdGlvbigpIHtcbiAgICBjb25zdCByZXZpc2lvbiA9IENPTVBJTEVSX1JFVklTSU9OLFxuICAgICAgICAgIHZlcnNpb25zID0gUkVWSVNJT05fQ0hBTkdFU1tyZXZpc2lvbl07XG4gICAgcmV0dXJuIFtyZXZpc2lvbiwgdmVyc2lvbnNdO1xuICB9LFxuXG4gIGFwcGVuZFRvQnVmZmVyOiBmdW5jdGlvbihzb3VyY2UsIGxvY2F0aW9uLCBleHBsaWNpdCkge1xuICAgIC8vIEZvcmNlIGEgc291cmNlIGFzIHRoaXMgc2ltcGxpZmllcyB0aGUgbWVyZ2UgbG9naWMuXG4gICAgaWYgKCFpc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgIHNvdXJjZSA9IFtzb3VyY2VdO1xuICAgIH1cbiAgICBzb3VyY2UgPSB0aGlzLnNvdXJjZS53cmFwKHNvdXJjZSwgbG9jYXRpb24pO1xuXG4gICAgaWYgKHRoaXMuZW52aXJvbm1lbnQuaXNTaW1wbGUpIHtcbiAgICAgIHJldHVybiBbJ3JldHVybiAnLCBzb3VyY2UsICc7J107XG4gICAgfSBlbHNlIGlmIChleHBsaWNpdCkge1xuICAgICAgLy8gVGhpcyBpcyBhIGNhc2Ugd2hlcmUgdGhlIGJ1ZmZlciBvcGVyYXRpb24gb2NjdXJzIGFzIGEgY2hpbGQgb2YgYW5vdGhlclxuICAgICAgLy8gY29uc3RydWN0LCBnZW5lcmFsbHkgYnJhY2VzLiBXZSBoYXZlIHRvIGV4cGxpY2l0bHkgb3V0cHV0IHRoZXNlIGJ1ZmZlclxuICAgICAgLy8gb3BlcmF0aW9ucyB0byBlbnN1cmUgdGhhdCB0aGUgZW1pdHRlZCBjb2RlIGdvZXMgaW4gdGhlIGNvcnJlY3QgbG9jYXRpb24uXG4gICAgICByZXR1cm4gWydidWZmZXIgKz0gJywgc291cmNlLCAnOyddO1xuICAgIH0gZWxzZSB7XG4gICAgICBzb3VyY2UuYXBwZW5kVG9CdWZmZXIgPSB0cnVlO1xuICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9XG4gIH0sXG5cbiAgaW5pdGlhbGl6ZUJ1ZmZlcjogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMucXVvdGVkU3RyaW5nKCcnKTtcbiAgfSxcbiAgLy8gRU5EIFBVQkxJQyBBUElcblxuICBjb21waWxlOiBmdW5jdGlvbihlbnZpcm9ubWVudCwgb3B0aW9ucywgY29udGV4dCwgYXNPYmplY3QpIHtcbiAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLnN0cmluZ1BhcmFtcyA9IHRoaXMub3B0aW9ucy5zdHJpbmdQYXJhbXM7XG4gICAgdGhpcy50cmFja0lkcyA9IHRoaXMub3B0aW9ucy50cmFja0lkcztcbiAgICB0aGlzLnByZWNvbXBpbGUgPSAhYXNPYmplY3Q7XG5cbiAgICB0aGlzLm5hbWUgPSB0aGlzLmVudmlyb25tZW50Lm5hbWU7XG4gICAgdGhpcy5pc0NoaWxkID0gISFjb250ZXh0O1xuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQgfHwge1xuICAgICAgZGVjb3JhdG9yczogW10sXG4gICAgICBwcm9ncmFtczogW10sXG4gICAgICBlbnZpcm9ubWVudHM6IFtdXG4gICAgfTtcblxuICAgIHRoaXMucHJlYW1ibGUoKTtcblxuICAgIHRoaXMuc3RhY2tTbG90ID0gMDtcbiAgICB0aGlzLnN0YWNrVmFycyA9IFtdO1xuICAgIHRoaXMuYWxpYXNlcyA9IHt9O1xuICAgIHRoaXMucmVnaXN0ZXJzID0geyBsaXN0OiBbXSB9O1xuICAgIHRoaXMuaGFzaGVzID0gW107XG4gICAgdGhpcy5jb21waWxlU3RhY2sgPSBbXTtcbiAgICB0aGlzLmlubGluZVN0YWNrID0gW107XG4gICAgdGhpcy5ibG9ja1BhcmFtcyA9IFtdO1xuXG4gICAgdGhpcy5jb21waWxlQ2hpbGRyZW4oZW52aXJvbm1lbnQsIG9wdGlvbnMpO1xuXG4gICAgdGhpcy51c2VEZXB0aHMgPSB0aGlzLnVzZURlcHRocyB8fCBlbnZpcm9ubWVudC51c2VEZXB0aHMgfHwgZW52aXJvbm1lbnQudXNlRGVjb3JhdG9ycyB8fCB0aGlzLm9wdGlvbnMuY29tcGF0O1xuICAgIHRoaXMudXNlQmxvY2tQYXJhbXMgPSB0aGlzLnVzZUJsb2NrUGFyYW1zIHx8IGVudmlyb25tZW50LnVzZUJsb2NrUGFyYW1zO1xuXG4gICAgbGV0IG9wY29kZXMgPSBlbnZpcm9ubWVudC5vcGNvZGVzLFxuICAgICAgICBvcGNvZGUsXG4gICAgICAgIGZpcnN0TG9jLFxuICAgICAgICBpLFxuICAgICAgICBsO1xuXG4gICAgZm9yIChpID0gMCwgbCA9IG9wY29kZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBvcGNvZGUgPSBvcGNvZGVzW2ldO1xuXG4gICAgICB0aGlzLnNvdXJjZS5jdXJyZW50TG9jYXRpb24gPSBvcGNvZGUubG9jO1xuICAgICAgZmlyc3RMb2MgPSBmaXJzdExvYyB8fCBvcGNvZGUubG9jO1xuICAgICAgdGhpc1tvcGNvZGUub3Bjb2RlXS5hcHBseSh0aGlzLCBvcGNvZGUuYXJncyk7XG4gICAgfVxuXG4gICAgLy8gRmx1c2ggYW55IHRyYWlsaW5nIGNvbnRlbnQgdGhhdCBtaWdodCBiZSBwZW5kaW5nLlxuICAgIHRoaXMuc291cmNlLmN1cnJlbnRMb2NhdGlvbiA9IGZpcnN0TG9jO1xuICAgIHRoaXMucHVzaFNvdXJjZSgnJyk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh0aGlzLnN0YWNrU2xvdCB8fCB0aGlzLmlubGluZVN0YWNrLmxlbmd0aCB8fCB0aGlzLmNvbXBpbGVTdGFjay5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0NvbXBpbGUgY29tcGxldGVkIHdpdGggY29udGVudCBsZWZ0IG9uIHN0YWNrJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmRlY29yYXRvcnMuaXNFbXB0eSgpKSB7XG4gICAgICB0aGlzLnVzZURlY29yYXRvcnMgPSB0cnVlO1xuXG4gICAgICB0aGlzLmRlY29yYXRvcnMucHJlcGVuZCgndmFyIGRlY29yYXRvcnMgPSBjb250YWluZXIuZGVjb3JhdG9ycztcXG4nKTtcbiAgICAgIHRoaXMuZGVjb3JhdG9ycy5wdXNoKCdyZXR1cm4gZm47Jyk7XG5cbiAgICAgIGlmIChhc09iamVjdCkge1xuICAgICAgICB0aGlzLmRlY29yYXRvcnMgPSBGdW5jdGlvbi5hcHBseSh0aGlzLCBbJ2ZuJywgJ3Byb3BzJywgJ2NvbnRhaW5lcicsICdkZXB0aDAnLCAnZGF0YScsICdibG9ja1BhcmFtcycsICdkZXB0aHMnLCB0aGlzLmRlY29yYXRvcnMubWVyZ2UoKV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kZWNvcmF0b3JzLnByZXBlbmQoJ2Z1bmN0aW9uKGZuLCBwcm9wcywgY29udGFpbmVyLCBkZXB0aDAsIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcXG4nKTtcbiAgICAgICAgdGhpcy5kZWNvcmF0b3JzLnB1c2goJ31cXG4nKTtcbiAgICAgICAgdGhpcy5kZWNvcmF0b3JzID0gdGhpcy5kZWNvcmF0b3JzLm1lcmdlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVjb3JhdG9ycyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBsZXQgZm4gPSB0aGlzLmNyZWF0ZUZ1bmN0aW9uQ29udGV4dChhc09iamVjdCk7XG4gICAgaWYgKCF0aGlzLmlzQ2hpbGQpIHtcbiAgICAgIGxldCByZXQgPSB7XG4gICAgICAgIGNvbXBpbGVyOiB0aGlzLmNvbXBpbGVySW5mbygpLFxuICAgICAgICBtYWluOiBmblxuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMuZGVjb3JhdG9ycykge1xuICAgICAgICByZXQubWFpbl9kID0gdGhpcy5kZWNvcmF0b3JzOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGNhbWVsY2FzZVxuICAgICAgICByZXQudXNlRGVjb3JhdG9ycyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGxldCB7cHJvZ3JhbXMsIGRlY29yYXRvcnN9ID0gdGhpcy5jb250ZXh0O1xuICAgICAgZm9yIChpID0gMCwgbCA9IHByb2dyYW1zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICBpZiAocHJvZ3JhbXNbaV0pIHtcbiAgICAgICAgICByZXRbaV0gPSBwcm9ncmFtc1tpXTtcbiAgICAgICAgICBpZiAoZGVjb3JhdG9yc1tpXSkge1xuICAgICAgICAgICAgcmV0W2kgKyAnX2QnXSA9IGRlY29yYXRvcnNbaV07XG4gICAgICAgICAgICByZXQudXNlRGVjb3JhdG9ycyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmVudmlyb25tZW50LnVzZVBhcnRpYWwpIHtcbiAgICAgICAgcmV0LnVzZVBhcnRpYWwgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5kYXRhKSB7XG4gICAgICAgIHJldC51c2VEYXRhID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnVzZURlcHRocykge1xuICAgICAgICByZXQudXNlRGVwdGhzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnVzZUJsb2NrUGFyYW1zKSB7XG4gICAgICAgIHJldC51c2VCbG9ja1BhcmFtcyA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmNvbXBhdCkge1xuICAgICAgICByZXQuY29tcGF0ID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFhc09iamVjdCkge1xuICAgICAgICByZXQuY29tcGlsZXIgPSBKU09OLnN0cmluZ2lmeShyZXQuY29tcGlsZXIpO1xuXG4gICAgICAgIHRoaXMuc291cmNlLmN1cnJlbnRMb2NhdGlvbiA9IHtzdGFydDoge2xpbmU6IDEsIGNvbHVtbjogMH19O1xuICAgICAgICByZXQgPSB0aGlzLm9iamVjdExpdGVyYWwocmV0KTtcblxuICAgICAgICBpZiAob3B0aW9ucy5zcmNOYW1lKSB7XG4gICAgICAgICAgcmV0ID0gcmV0LnRvU3RyaW5nV2l0aFNvdXJjZU1hcCh7ZmlsZTogb3B0aW9ucy5kZXN0TmFtZX0pO1xuICAgICAgICAgIHJldC5tYXAgPSByZXQubWFwICYmIHJldC5tYXAudG9TdHJpbmcoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXQgPSByZXQudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0LmNvbXBpbGVyT3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJldDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZuO1xuICAgIH1cbiAgfSxcblxuICBwcmVhbWJsZTogZnVuY3Rpb24oKSB7XG4gICAgLy8gdHJhY2sgdGhlIGxhc3QgY29udGV4dCBwdXNoZWQgaW50byBwbGFjZSB0byBhbGxvdyBza2lwcGluZyB0aGVcbiAgICAvLyBnZXRDb250ZXh0IG9wY29kZSB3aGVuIGl0IHdvdWxkIGJlIGEgbm9vcFxuICAgIHRoaXMubGFzdENvbnRleHQgPSAwO1xuICAgIHRoaXMuc291cmNlID0gbmV3IENvZGVHZW4odGhpcy5vcHRpb25zLnNyY05hbWUpO1xuICAgIHRoaXMuZGVjb3JhdG9ycyA9IG5ldyBDb2RlR2VuKHRoaXMub3B0aW9ucy5zcmNOYW1lKTtcbiAgfSxcblxuICBjcmVhdGVGdW5jdGlvbkNvbnRleHQ6IGZ1bmN0aW9uKGFzT2JqZWN0KSB7XG4gICAgbGV0IHZhckRlY2xhcmF0aW9ucyA9ICcnO1xuXG4gICAgbGV0IGxvY2FscyA9IHRoaXMuc3RhY2tWYXJzLmNvbmNhdCh0aGlzLnJlZ2lzdGVycy5saXN0KTtcbiAgICBpZiAobG9jYWxzLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhckRlY2xhcmF0aW9ucyArPSAnLCAnICsgbG9jYWxzLmpvaW4oJywgJyk7XG4gICAgfVxuXG4gICAgLy8gR2VuZXJhdGUgbWluaW1pemVyIGFsaWFzIG1hcHBpbmdzXG4gICAgLy9cbiAgICAvLyBXaGVuIHVzaW5nIHRydWUgU291cmNlTm9kZXMsIHRoaXMgd2lsbCB1cGRhdGUgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIGdpdmVuIGFsaWFzXG4gICAgLy8gYXMgdGhlIHNvdXJjZSBub2RlcyBhcmUgcmV1c2VkIGluIHNpdHUuIEZvciB0aGUgbm9uLXNvdXJjZSBub2RlIGNvbXBpbGF0aW9uIG1vZGUsXG4gICAgLy8gYWxpYXNlcyB3aWxsIG5vdCBiZSB1c2VkLCBidXQgdGhpcyBjYXNlIGlzIGFscmVhZHkgYmVpbmcgcnVuIG9uIHRoZSBjbGllbnQgYW5kXG4gICAgLy8gd2UgYXJlbid0IGNvbmNlcm4gYWJvdXQgbWluaW1pemluZyB0aGUgdGVtcGxhdGUgc2l6ZS5cbiAgICBsZXQgYWxpYXNDb3VudCA9IDA7XG4gICAgZm9yIChsZXQgYWxpYXMgaW4gdGhpcy5hbGlhc2VzKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZ3VhcmQtZm9yLWluXG4gICAgICBsZXQgbm9kZSA9IHRoaXMuYWxpYXNlc1thbGlhc107XG5cbiAgICAgIGlmICh0aGlzLmFsaWFzZXMuaGFzT3duUHJvcGVydHkoYWxpYXMpICYmIG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5yZWZlcmVuY2VDb3VudCA+IDEpIHtcbiAgICAgICAgdmFyRGVjbGFyYXRpb25zICs9ICcsIGFsaWFzJyArICgrK2FsaWFzQ291bnQpICsgJz0nICsgYWxpYXM7XG4gICAgICAgIG5vZGUuY2hpbGRyZW5bMF0gPSAnYWxpYXMnICsgYWxpYXNDb3VudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcGFyYW1zID0gWydjb250YWluZXInLCAnZGVwdGgwJywgJ2hlbHBlcnMnLCAncGFydGlhbHMnLCAnZGF0YSddO1xuXG4gICAgaWYgKHRoaXMudXNlQmxvY2tQYXJhbXMgfHwgdGhpcy51c2VEZXB0aHMpIHtcbiAgICAgIHBhcmFtcy5wdXNoKCdibG9ja1BhcmFtcycpO1xuICAgIH1cbiAgICBpZiAodGhpcy51c2VEZXB0aHMpIHtcbiAgICAgIHBhcmFtcy5wdXNoKCdkZXB0aHMnKTtcbiAgICB9XG5cbiAgICAvLyBQZXJmb3JtIGEgc2Vjb25kIHBhc3Mgb3ZlciB0aGUgb3V0cHV0IHRvIG1lcmdlIGNvbnRlbnQgd2hlbiBwb3NzaWJsZVxuICAgIGxldCBzb3VyY2UgPSB0aGlzLm1lcmdlU291cmNlKHZhckRlY2xhcmF0aW9ucyk7XG5cbiAgICBpZiAoYXNPYmplY3QpIHtcbiAgICAgIHBhcmFtcy5wdXNoKHNvdXJjZSk7XG5cbiAgICAgIHJldHVybiBGdW5jdGlvbi5hcHBseSh0aGlzLCBwYXJhbXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5zb3VyY2Uud3JhcChbJ2Z1bmN0aW9uKCcsIHBhcmFtcy5qb2luKCcsJyksICcpIHtcXG4gICcsIHNvdXJjZSwgJ30nXSk7XG4gICAgfVxuICB9LFxuICBtZXJnZVNvdXJjZTogZnVuY3Rpb24odmFyRGVjbGFyYXRpb25zKSB7XG4gICAgbGV0IGlzU2ltcGxlID0gdGhpcy5lbnZpcm9ubWVudC5pc1NpbXBsZSxcbiAgICAgICAgYXBwZW5kT25seSA9ICF0aGlzLmZvcmNlQnVmZmVyLFxuICAgICAgICBhcHBlbmRGaXJzdCxcblxuICAgICAgICBzb3VyY2VTZWVuLFxuICAgICAgICBidWZmZXJTdGFydCxcbiAgICAgICAgYnVmZmVyRW5kO1xuICAgIHRoaXMuc291cmNlLmVhY2goKGxpbmUpID0+IHtcbiAgICAgIGlmIChsaW5lLmFwcGVuZFRvQnVmZmVyKSB7XG4gICAgICAgIGlmIChidWZmZXJTdGFydCkge1xuICAgICAgICAgIGxpbmUucHJlcGVuZCgnICArICcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJ1ZmZlclN0YXJ0ID0gbGluZTtcbiAgICAgICAgfVxuICAgICAgICBidWZmZXJFbmQgPSBsaW5lO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGJ1ZmZlclN0YXJ0KSB7XG4gICAgICAgICAgaWYgKCFzb3VyY2VTZWVuKSB7XG4gICAgICAgICAgICBhcHBlbmRGaXJzdCA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmZlclN0YXJ0LnByZXBlbmQoJ2J1ZmZlciArPSAnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnVmZmVyRW5kLmFkZCgnOycpO1xuICAgICAgICAgIGJ1ZmZlclN0YXJ0ID0gYnVmZmVyRW5kID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgc291cmNlU2VlbiA9IHRydWU7XG4gICAgICAgIGlmICghaXNTaW1wbGUpIHtcbiAgICAgICAgICBhcHBlbmRPbmx5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuXG4gICAgaWYgKGFwcGVuZE9ubHkpIHtcbiAgICAgIGlmIChidWZmZXJTdGFydCkge1xuICAgICAgICBidWZmZXJTdGFydC5wcmVwZW5kKCdyZXR1cm4gJyk7XG4gICAgICAgIGJ1ZmZlckVuZC5hZGQoJzsnKTtcbiAgICAgIH0gZWxzZSBpZiAoIXNvdXJjZVNlZW4pIHtcbiAgICAgICAgdGhpcy5zb3VyY2UucHVzaCgncmV0dXJuIFwiXCI7Jyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhckRlY2xhcmF0aW9ucyArPSAnLCBidWZmZXIgPSAnICsgKGFwcGVuZEZpcnN0ID8gJycgOiB0aGlzLmluaXRpYWxpemVCdWZmZXIoKSk7XG5cbiAgICAgIGlmIChidWZmZXJTdGFydCkge1xuICAgICAgICBidWZmZXJTdGFydC5wcmVwZW5kKCdyZXR1cm4gYnVmZmVyICsgJyk7XG4gICAgICAgIGJ1ZmZlckVuZC5hZGQoJzsnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc291cmNlLnB1c2goJ3JldHVybiBidWZmZXI7Jyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHZhckRlY2xhcmF0aW9ucykge1xuICAgICAgdGhpcy5zb3VyY2UucHJlcGVuZCgndmFyICcgKyB2YXJEZWNsYXJhdGlvbnMuc3Vic3RyaW5nKDIpICsgKGFwcGVuZEZpcnN0ID8gJycgOiAnO1xcbicpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zb3VyY2UubWVyZ2UoKTtcbiAgfSxcblxuICAvLyBbYmxvY2tWYWx1ZV1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgdmFsdWVcbiAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXR1cm4gdmFsdWUgb2YgYmxvY2tIZWxwZXJNaXNzaW5nXG4gIC8vXG4gIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgb3Bjb2RlIGlzIHRvIHRha2UgYSBibG9jayBvZiB0aGUgZm9ybVxuICAvLyBge3sjdGhpcy5mb299fS4uLnt7L3RoaXMuZm9vfX1gLCByZXNvbHZlIHRoZSB2YWx1ZSBvZiBgZm9vYCwgYW5kXG4gIC8vIHJlcGxhY2UgaXQgb24gdGhlIHN0YWNrIHdpdGggdGhlIHJlc3VsdCBvZiBwcm9wZXJseVxuICAvLyBpbnZva2luZyBibG9ja0hlbHBlck1pc3NpbmcuXG4gIGJsb2NrVmFsdWU6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBsZXQgYmxvY2tIZWxwZXJNaXNzaW5nID0gdGhpcy5hbGlhc2FibGUoJ2hlbHBlcnMuYmxvY2tIZWxwZXJNaXNzaW5nJyksXG4gICAgICAgIHBhcmFtcyA9IFt0aGlzLmNvbnRleHROYW1lKDApXTtcbiAgICB0aGlzLnNldHVwSGVscGVyQXJncyhuYW1lLCAwLCBwYXJhbXMpO1xuXG4gICAgbGV0IGJsb2NrTmFtZSA9IHRoaXMucG9wU3RhY2soKTtcbiAgICBwYXJhbXMuc3BsaWNlKDEsIDAsIGJsb2NrTmFtZSk7XG5cbiAgICB0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKGJsb2NrSGVscGVyTWlzc2luZywgJ2NhbGwnLCBwYXJhbXMpKTtcbiAgfSxcblxuICAvLyBbYW1iaWd1b3VzQmxvY2tWYWx1ZV1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgdmFsdWVcbiAgLy8gQ29tcGlsZXIgdmFsdWUsIGJlZm9yZTogbGFzdEhlbHBlcj12YWx1ZSBvZiBsYXN0IGZvdW5kIGhlbHBlciwgaWYgYW55XG4gIC8vIE9uIHN0YWNrLCBhZnRlciwgaWYgbm8gbGFzdEhlbHBlcjogc2FtZSBhcyBbYmxvY2tWYWx1ZV1cbiAgLy8gT24gc3RhY2ssIGFmdGVyLCBpZiBsYXN0SGVscGVyOiB2YWx1ZVxuICBhbWJpZ3VvdXNCbG9ja1ZhbHVlOiBmdW5jdGlvbigpIHtcbiAgICAvLyBXZSdyZSBiZWluZyBhIGJpdCBjaGVla3kgYW5kIHJldXNpbmcgdGhlIG9wdGlvbnMgdmFsdWUgZnJvbSB0aGUgcHJpb3IgZXhlY1xuICAgIGxldCBibG9ja0hlbHBlck1pc3NpbmcgPSB0aGlzLmFsaWFzYWJsZSgnaGVscGVycy5ibG9ja0hlbHBlck1pc3NpbmcnKSxcbiAgICAgICAgcGFyYW1zID0gW3RoaXMuY29udGV4dE5hbWUoMCldO1xuICAgIHRoaXMuc2V0dXBIZWxwZXJBcmdzKCcnLCAwLCBwYXJhbXMsIHRydWUpO1xuXG4gICAgdGhpcy5mbHVzaElubGluZSgpO1xuXG4gICAgbGV0IGN1cnJlbnQgPSB0aGlzLnRvcFN0YWNrKCk7XG4gICAgcGFyYW1zLnNwbGljZSgxLCAwLCBjdXJyZW50KTtcblxuICAgIHRoaXMucHVzaFNvdXJjZShbXG4gICAgICAgICdpZiAoIScsIHRoaXMubGFzdEhlbHBlciwgJykgeyAnLFxuICAgICAgICAgIGN1cnJlbnQsICcgPSAnLCB0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoYmxvY2tIZWxwZXJNaXNzaW5nLCAnY2FsbCcsIHBhcmFtcyksXG4gICAgICAgICd9J10pO1xuICB9LFxuXG4gIC8vIFthcHBlbmRDb250ZW50XVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiAuLi5cbiAgLy9cbiAgLy8gQXBwZW5kcyB0aGUgc3RyaW5nIHZhbHVlIG9mIGBjb250ZW50YCB0byB0aGUgY3VycmVudCBidWZmZXJcbiAgYXBwZW5kQ29udGVudDogZnVuY3Rpb24oY29udGVudCkge1xuICAgIGlmICh0aGlzLnBlbmRpbmdDb250ZW50KSB7XG4gICAgICBjb250ZW50ID0gdGhpcy5wZW5kaW5nQ29udGVudCArIGNvbnRlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGVuZGluZ0xvY2F0aW9uID0gdGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uO1xuICAgIH1cblxuICAgIHRoaXMucGVuZGluZ0NvbnRlbnQgPSBjb250ZW50O1xuICB9LFxuXG4gIC8vIFthcHBlbmRdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiAuLi5cbiAgLy9cbiAgLy8gQ29lcmNlcyBgdmFsdWVgIHRvIGEgU3RyaW5nIGFuZCBhcHBlbmRzIGl0IHRvIHRoZSBjdXJyZW50IGJ1ZmZlci5cbiAgLy9cbiAgLy8gSWYgYHZhbHVlYCBpcyB0cnV0aHksIG9yIDAsIGl0IGlzIGNvZXJjZWQgaW50byBhIHN0cmluZyBhbmQgYXBwZW5kZWRcbiAgLy8gT3RoZXJ3aXNlLCB0aGUgZW1wdHkgc3RyaW5nIGlzIGFwcGVuZGVkXG4gIGFwcGVuZDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuaXNJbmxpbmUoKSkge1xuICAgICAgdGhpcy5yZXBsYWNlU3RhY2soKGN1cnJlbnQpID0+IFsnICE9IG51bGwgPyAnLCBjdXJyZW50LCAnIDogXCJcIiddKTtcblxuICAgICAgdGhpcy5wdXNoU291cmNlKHRoaXMuYXBwZW5kVG9CdWZmZXIodGhpcy5wb3BTdGFjaygpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBsb2NhbCA9IHRoaXMucG9wU3RhY2soKTtcbiAgICAgIHRoaXMucHVzaFNvdXJjZShbJ2lmICgnLCBsb2NhbCwgJyAhPSBudWxsKSB7ICcsIHRoaXMuYXBwZW5kVG9CdWZmZXIobG9jYWwsIHVuZGVmaW5lZCwgdHJ1ZSksICcgfSddKTtcbiAgICAgIGlmICh0aGlzLmVudmlyb25tZW50LmlzU2ltcGxlKSB7XG4gICAgICAgIHRoaXMucHVzaFNvdXJjZShbJ2Vsc2UgeyAnLCB0aGlzLmFwcGVuZFRvQnVmZmVyKFwiJydcIiwgdW5kZWZpbmVkLCB0cnVlKSwgJyB9J10pO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICAvLyBbYXBwZW5kRXNjYXBlZF1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogdmFsdWUsIC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLlxuICAvL1xuICAvLyBFc2NhcGUgYHZhbHVlYCBhbmQgYXBwZW5kIGl0IHRvIHRoZSBidWZmZXJcbiAgYXBwZW5kRXNjYXBlZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5wdXNoU291cmNlKHRoaXMuYXBwZW5kVG9CdWZmZXIoXG4gICAgICAgIFt0aGlzLmFsaWFzYWJsZSgnY29udGFpbmVyLmVzY2FwZUV4cHJlc3Npb24nKSwgJygnLCB0aGlzLnBvcFN0YWNrKCksICcpJ10pKTtcbiAgfSxcblxuICAvLyBbZ2V0Q29udGV4dF1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uXG4gIC8vIENvbXBpbGVyIHZhbHVlLCBhZnRlcjogbGFzdENvbnRleHQ9ZGVwdGhcbiAgLy9cbiAgLy8gU2V0IHRoZSB2YWx1ZSBvZiB0aGUgYGxhc3RDb250ZXh0YCBjb21waWxlciB2YWx1ZSB0byB0aGUgZGVwdGhcbiAgZ2V0Q29udGV4dDogZnVuY3Rpb24oZGVwdGgpIHtcbiAgICB0aGlzLmxhc3RDb250ZXh0ID0gZGVwdGg7XG4gIH0sXG5cbiAgLy8gW3B1c2hDb250ZXh0XVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiBjdXJyZW50Q29udGV4dCwgLi4uXG4gIC8vXG4gIC8vIFB1c2hlcyB0aGUgdmFsdWUgb2YgdGhlIGN1cnJlbnQgY29udGV4dCBvbnRvIHRoZSBzdGFjay5cbiAgcHVzaENvbnRleHQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCh0aGlzLmNvbnRleHROYW1lKHRoaXMubGFzdENvbnRleHQpKTtcbiAgfSxcblxuICAvLyBbbG9va3VwT25Db250ZXh0XVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiBjdXJyZW50Q29udGV4dFtuYW1lXSwgLi4uXG4gIC8vXG4gIC8vIExvb2tzIHVwIHRoZSB2YWx1ZSBvZiBgbmFtZWAgb24gdGhlIGN1cnJlbnQgY29udGV4dCBhbmQgcHVzaGVzXG4gIC8vIGl0IG9udG8gdGhlIHN0YWNrLlxuICBsb29rdXBPbkNvbnRleHQ6IGZ1bmN0aW9uKHBhcnRzLCBmYWxzeSwgc3RyaWN0LCBzY29wZWQpIHtcbiAgICBsZXQgaSA9IDA7XG5cbiAgICBpZiAoIXNjb3BlZCAmJiB0aGlzLm9wdGlvbnMuY29tcGF0ICYmICF0aGlzLmxhc3RDb250ZXh0KSB7XG4gICAgICAvLyBUaGUgZGVwdGhlZCBxdWVyeSBpcyBleHBlY3RlZCB0byBoYW5kbGUgdGhlIHVuZGVmaW5lZCBsb2dpYyBmb3IgdGhlIHJvb3QgbGV2ZWwgdGhhdFxuICAgICAgLy8gaXMgaW1wbGVtZW50ZWQgYmVsb3csIHNvIHdlIGV2YWx1YXRlIHRoYXQgZGlyZWN0bHkgaW4gY29tcGF0IG1vZGVcbiAgICAgIHRoaXMucHVzaCh0aGlzLmRlcHRoZWRMb29rdXAocGFydHNbaSsrXSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2hDb250ZXh0KCk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvbHZlUGF0aCgnY29udGV4dCcsIHBhcnRzLCBpLCBmYWxzeSwgc3RyaWN0KTtcbiAgfSxcblxuICAvLyBbbG9va3VwQmxvY2tQYXJhbV1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogYmxvY2tQYXJhbVtuYW1lXSwgLi4uXG4gIC8vXG4gIC8vIExvb2tzIHVwIHRoZSB2YWx1ZSBvZiBgcGFydHNgIG9uIHRoZSBnaXZlbiBibG9jayBwYXJhbSBhbmQgcHVzaGVzXG4gIC8vIGl0IG9udG8gdGhlIHN0YWNrLlxuICBsb29rdXBCbG9ja1BhcmFtOiBmdW5jdGlvbihibG9ja1BhcmFtSWQsIHBhcnRzKSB7XG4gICAgdGhpcy51c2VCbG9ja1BhcmFtcyA9IHRydWU7XG5cbiAgICB0aGlzLnB1c2goWydibG9ja1BhcmFtc1snLCBibG9ja1BhcmFtSWRbMF0sICddWycsIGJsb2NrUGFyYW1JZFsxXSwgJ10nXSk7XG4gICAgdGhpcy5yZXNvbHZlUGF0aCgnY29udGV4dCcsIHBhcnRzLCAxKTtcbiAgfSxcblxuICAvLyBbbG9va3VwRGF0YV1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogZGF0YSwgLi4uXG4gIC8vXG4gIC8vIFB1c2ggdGhlIGRhdGEgbG9va3VwIG9wZXJhdG9yXG4gIGxvb2t1cERhdGE6IGZ1bmN0aW9uKGRlcHRoLCBwYXJ0cywgc3RyaWN0KSB7XG4gICAgaWYgKCFkZXB0aCkge1xuICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCdkYXRhJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCgnY29udGFpbmVyLmRhdGEoZGF0YSwgJyArIGRlcHRoICsgJyknKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc29sdmVQYXRoKCdkYXRhJywgcGFydHMsIDAsIHRydWUsIHN0cmljdCk7XG4gIH0sXG5cbiAgcmVzb2x2ZVBhdGg6IGZ1bmN0aW9uKHR5cGUsIHBhcnRzLCBpLCBmYWxzeSwgc3RyaWN0KSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5zdHJpY3QgfHwgdGhpcy5vcHRpb25zLmFzc3VtZU9iamVjdHMpIHtcbiAgICAgIHRoaXMucHVzaChzdHJpY3RMb29rdXAodGhpcy5vcHRpb25zLnN0cmljdCAmJiBzdHJpY3QsIHRoaXMsIHBhcnRzLCB0eXBlKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGxlbiA9IHBhcnRzLmxlbmd0aDtcbiAgICBmb3IgKDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1sb29wLWZ1bmMgKi9cbiAgICAgIHRoaXMucmVwbGFjZVN0YWNrKChjdXJyZW50KSA9PiB7XG4gICAgICAgIGxldCBsb29rdXAgPSB0aGlzLm5hbWVMb29rdXAoY3VycmVudCwgcGFydHNbaV0sIHR5cGUpO1xuICAgICAgICAvLyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IHplcm8gYW5kIGZhbHNlIGFyZSBoYW5kbGVkIHByb3Blcmx5IGlmIHRoZSBjb250ZXh0IChmYWxzeSBmbGFnKVxuICAgICAgICAvLyBuZWVkcyB0byBoYXZlIHRoZSBzcGVjaWFsIGhhbmRsaW5nIGZvciB0aGVzZSB2YWx1ZXMuXG4gICAgICAgIGlmICghZmFsc3kpIHtcbiAgICAgICAgICByZXR1cm4gWycgIT0gbnVsbCA/ICcsIGxvb2t1cCwgJyA6ICcsIGN1cnJlbnRdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE90aGVyd2lzZSB3ZSBjYW4gdXNlIGdlbmVyaWMgZmFsc3kgaGFuZGxpbmdcbiAgICAgICAgICByZXR1cm4gWycgJiYgJywgbG9va3VwXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLWxvb3AtZnVuYyAqL1xuICAgIH1cbiAgfSxcblxuICAvLyBbcmVzb2x2ZVBvc3NpYmxlTGFtYmRhXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiB2YWx1ZSwgLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogcmVzb2x2ZWQgdmFsdWUsIC4uLlxuICAvL1xuICAvLyBJZiB0aGUgYHZhbHVlYCBpcyBhIGxhbWJkYSwgcmVwbGFjZSBpdCBvbiB0aGUgc3RhY2sgYnlcbiAgLy8gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgbGFtYmRhXG4gIHJlc29sdmVQb3NzaWJsZUxhbWJkYTogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5wdXNoKFt0aGlzLmFsaWFzYWJsZSgnY29udGFpbmVyLmxhbWJkYScpLCAnKCcsIHRoaXMucG9wU3RhY2soKSwgJywgJywgdGhpcy5jb250ZXh0TmFtZSgwKSwgJyknXSk7XG4gIH0sXG5cbiAgLy8gW3B1c2hTdHJpbmdQYXJhbV1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogc3RyaW5nLCBjdXJyZW50Q29udGV4dCwgLi4uXG4gIC8vXG4gIC8vIFRoaXMgb3Bjb2RlIGlzIGRlc2lnbmVkIGZvciB1c2UgaW4gc3RyaW5nIG1vZGUsIHdoaWNoXG4gIC8vIHByb3ZpZGVzIHRoZSBzdHJpbmcgdmFsdWUgb2YgYSBwYXJhbWV0ZXIgYWxvbmcgd2l0aCBpdHNcbiAgLy8gZGVwdGggcmF0aGVyIHRoYW4gcmVzb2x2aW5nIGl0IGltbWVkaWF0ZWx5LlxuICBwdXNoU3RyaW5nUGFyYW06IGZ1bmN0aW9uKHN0cmluZywgdHlwZSkge1xuICAgIHRoaXMucHVzaENvbnRleHQoKTtcbiAgICB0aGlzLnB1c2hTdHJpbmcodHlwZSk7XG5cbiAgICAvLyBJZiBpdCdzIGEgc3ViZXhwcmVzc2lvbiwgdGhlIHN0cmluZyByZXN1bHRcbiAgICAvLyB3aWxsIGJlIHB1c2hlZCBhZnRlciB0aGlzIG9wY29kZS5cbiAgICBpZiAodHlwZSAhPT0gJ1N1YkV4cHJlc3Npb24nKSB7XG4gICAgICBpZiAodHlwZW9mIHN0cmluZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhpcy5wdXNoU3RyaW5nKHN0cmluZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoc3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgZW1wdHlIYXNoOiBmdW5jdGlvbihvbWl0RW1wdHkpIHtcbiAgICBpZiAodGhpcy50cmFja0lkcykge1xuICAgICAgdGhpcy5wdXNoKCd7fScpOyAvLyBoYXNoSWRzXG4gICAgfVxuICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykge1xuICAgICAgdGhpcy5wdXNoKCd7fScpOyAvLyBoYXNoQ29udGV4dHNcbiAgICAgIHRoaXMucHVzaCgne30nKTsgLy8gaGFzaFR5cGVzXG4gICAgfVxuICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbChvbWl0RW1wdHkgPyAndW5kZWZpbmVkJyA6ICd7fScpO1xuICB9LFxuICBwdXNoSGFzaDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuaGFzaCkge1xuICAgICAgdGhpcy5oYXNoZXMucHVzaCh0aGlzLmhhc2gpO1xuICAgIH1cbiAgICB0aGlzLmhhc2ggPSB7dmFsdWVzOiBbXSwgdHlwZXM6IFtdLCBjb250ZXh0czogW10sIGlkczogW119O1xuICB9LFxuICBwb3BIYXNoOiBmdW5jdGlvbigpIHtcbiAgICBsZXQgaGFzaCA9IHRoaXMuaGFzaDtcbiAgICB0aGlzLmhhc2ggPSB0aGlzLmhhc2hlcy5wb3AoKTtcblxuICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7XG4gICAgICB0aGlzLnB1c2godGhpcy5vYmplY3RMaXRlcmFsKGhhc2guaWRzKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykge1xuICAgICAgdGhpcy5wdXNoKHRoaXMub2JqZWN0TGl0ZXJhbChoYXNoLmNvbnRleHRzKSk7XG4gICAgICB0aGlzLnB1c2godGhpcy5vYmplY3RMaXRlcmFsKGhhc2gudHlwZXMpKTtcbiAgICB9XG5cbiAgICB0aGlzLnB1c2godGhpcy5vYmplY3RMaXRlcmFsKGhhc2gudmFsdWVzKSk7XG4gIH0sXG5cbiAgLy8gW3B1c2hTdHJpbmddXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHF1b3RlZFN0cmluZyhzdHJpbmcpLCAuLi5cbiAgLy9cbiAgLy8gUHVzaCBhIHF1b3RlZCB2ZXJzaW9uIG9mIGBzdHJpbmdgIG9udG8gdGhlIHN0YWNrXG4gIHB1c2hTdHJpbmc6IGZ1bmN0aW9uKHN0cmluZykge1xuICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCh0aGlzLnF1b3RlZFN0cmluZyhzdHJpbmcpKTtcbiAgfSxcblxuICAvLyBbcHVzaExpdGVyYWxdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHZhbHVlLCAuLi5cbiAgLy9cbiAgLy8gUHVzaGVzIGEgdmFsdWUgb250byB0aGUgc3RhY2suIFRoaXMgb3BlcmF0aW9uIHByZXZlbnRzXG4gIC8vIHRoZSBjb21waWxlciBmcm9tIGNyZWF0aW5nIGEgdGVtcG9yYXJ5IHZhcmlhYmxlIHRvIGhvbGRcbiAgLy8gaXQuXG4gIHB1c2hMaXRlcmFsOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCh2YWx1ZSk7XG4gIH0sXG5cbiAgLy8gW3B1c2hQcm9ncmFtXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiBwcm9ncmFtKGd1aWQpLCAuLi5cbiAgLy9cbiAgLy8gUHVzaCBhIHByb2dyYW0gZXhwcmVzc2lvbiBvbnRvIHRoZSBzdGFjay4gVGhpcyB0YWtlc1xuICAvLyBhIGNvbXBpbGUtdGltZSBndWlkIGFuZCBjb252ZXJ0cyBpdCBpbnRvIGEgcnVudGltZS1hY2Nlc3NpYmxlXG4gIC8vIGV4cHJlc3Npb24uXG4gIHB1c2hQcm9ncmFtOiBmdW5jdGlvbihndWlkKSB7XG4gICAgaWYgKGd1aWQgIT0gbnVsbCkge1xuICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHRoaXMucHJvZ3JhbUV4cHJlc3Npb24oZ3VpZCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwobnVsbCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIFtyZWdpc3RlckRlY29yYXRvcl1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiAuLi5cbiAgLy9cbiAgLy8gUG9wcyBvZmYgdGhlIGRlY29yYXRvcidzIHBhcmFtZXRlcnMsIGludm9rZXMgdGhlIGRlY29yYXRvcixcbiAgLy8gYW5kIGluc2VydHMgdGhlIGRlY29yYXRvciBpbnRvIHRoZSBkZWNvcmF0b3JzIGxpc3QuXG4gIHJlZ2lzdGVyRGVjb3JhdG9yKHBhcmFtU2l6ZSwgbmFtZSkge1xuICAgIGxldCBmb3VuZERlY29yYXRvciA9IHRoaXMubmFtZUxvb2t1cCgnZGVjb3JhdG9ycycsIG5hbWUsICdkZWNvcmF0b3InKSxcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMuc2V0dXBIZWxwZXJBcmdzKG5hbWUsIHBhcmFtU2l6ZSk7XG5cbiAgICB0aGlzLmRlY29yYXRvcnMucHVzaChbXG4gICAgICAnZm4gPSAnLFxuICAgICAgdGhpcy5kZWNvcmF0b3JzLmZ1bmN0aW9uQ2FsbChmb3VuZERlY29yYXRvciwgJycsIFsnZm4nLCAncHJvcHMnLCAnY29udGFpbmVyJywgb3B0aW9uc10pLFxuICAgICAgJyB8fCBmbjsnXG4gICAgXSk7XG4gIH0sXG5cbiAgLy8gW2ludm9rZUhlbHBlcl1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXN1bHQgb2YgaGVscGVyIGludm9jYXRpb25cbiAgLy9cbiAgLy8gUG9wcyBvZmYgdGhlIGhlbHBlcidzIHBhcmFtZXRlcnMsIGludm9rZXMgdGhlIGhlbHBlcixcbiAgLy8gYW5kIHB1c2hlcyB0aGUgaGVscGVyJ3MgcmV0dXJuIHZhbHVlIG9udG8gdGhlIHN0YWNrLlxuICAvL1xuICAvLyBJZiB0aGUgaGVscGVyIGlzIG5vdCBmb3VuZCwgYGhlbHBlck1pc3NpbmdgIGlzIGNhbGxlZC5cbiAgaW52b2tlSGVscGVyOiBmdW5jdGlvbihwYXJhbVNpemUsIG5hbWUsIGlzU2ltcGxlKSB7XG4gICAgbGV0IG5vbkhlbHBlciA9IHRoaXMucG9wU3RhY2soKSxcbiAgICAgICAgaGVscGVyID0gdGhpcy5zZXR1cEhlbHBlcihwYXJhbVNpemUsIG5hbWUpLFxuICAgICAgICBzaW1wbGUgPSBpc1NpbXBsZSA/IFtoZWxwZXIubmFtZSwgJyB8fCAnXSA6ICcnO1xuXG4gICAgbGV0IGxvb2t1cCA9IFsnKCddLmNvbmNhdChzaW1wbGUsIG5vbkhlbHBlcik7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuc3RyaWN0KSB7XG4gICAgICBsb29rdXAucHVzaCgnIHx8ICcsIHRoaXMuYWxpYXNhYmxlKCdoZWxwZXJzLmhlbHBlck1pc3NpbmcnKSk7XG4gICAgfVxuICAgIGxvb2t1cC5wdXNoKCcpJyk7XG5cbiAgICB0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKGxvb2t1cCwgJ2NhbGwnLCBoZWxwZXIuY2FsbFBhcmFtcykpO1xuICB9LFxuXG4gIC8vIFtpbnZva2VLbm93bkhlbHBlcl1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXN1bHQgb2YgaGVscGVyIGludm9jYXRpb25cbiAgLy9cbiAgLy8gVGhpcyBvcGVyYXRpb24gaXMgdXNlZCB3aGVuIHRoZSBoZWxwZXIgaXMga25vd24gdG8gZXhpc3QsXG4gIC8vIHNvIGEgYGhlbHBlck1pc3NpbmdgIGZhbGxiYWNrIGlzIG5vdCByZXF1aXJlZC5cbiAgaW52b2tlS25vd25IZWxwZXI6IGZ1bmN0aW9uKHBhcmFtU2l6ZSwgbmFtZSkge1xuICAgIGxldCBoZWxwZXIgPSB0aGlzLnNldHVwSGVscGVyKHBhcmFtU2l6ZSwgbmFtZSk7XG4gICAgdGhpcy5wdXNoKHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbChoZWxwZXIubmFtZSwgJ2NhbGwnLCBoZWxwZXIuY2FsbFBhcmFtcykpO1xuICB9LFxuXG4gIC8vIFtpbnZva2VBbWJpZ3VvdXNdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IGhhc2gsIGludmVyc2UsIHByb2dyYW0sIHBhcmFtcy4uLiwgLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogcmVzdWx0IG9mIGRpc2FtYmlndWF0aW9uXG4gIC8vXG4gIC8vIFRoaXMgb3BlcmF0aW9uIGlzIHVzZWQgd2hlbiBhbiBleHByZXNzaW9uIGxpa2UgYHt7Zm9vfX1gXG4gIC8vIGlzIHByb3ZpZGVkLCBidXQgd2UgZG9uJ3Qga25vdyBhdCBjb21waWxlLXRpbWUgd2hldGhlciBpdFxuICAvLyBpcyBhIGhlbHBlciBvciBhIHBhdGguXG4gIC8vXG4gIC8vIFRoaXMgb3BlcmF0aW9uIGVtaXRzIG1vcmUgY29kZSB0aGFuIHRoZSBvdGhlciBvcHRpb25zLFxuICAvLyBhbmQgY2FuIGJlIGF2b2lkZWQgYnkgcGFzc2luZyB0aGUgYGtub3duSGVscGVyc2AgYW5kXG4gIC8vIGBrbm93bkhlbHBlcnNPbmx5YCBmbGFncyBhdCBjb21waWxlLXRpbWUuXG4gIGludm9rZUFtYmlndW91czogZnVuY3Rpb24obmFtZSwgaGVscGVyQ2FsbCkge1xuICAgIHRoaXMudXNlUmVnaXN0ZXIoJ2hlbHBlcicpO1xuXG4gICAgbGV0IG5vbkhlbHBlciA9IHRoaXMucG9wU3RhY2soKTtcblxuICAgIHRoaXMuZW1wdHlIYXNoKCk7XG4gICAgbGV0IGhlbHBlciA9IHRoaXMuc2V0dXBIZWxwZXIoMCwgbmFtZSwgaGVscGVyQ2FsbCk7XG5cbiAgICBsZXQgaGVscGVyTmFtZSA9IHRoaXMubGFzdEhlbHBlciA9IHRoaXMubmFtZUxvb2t1cCgnaGVscGVycycsIG5hbWUsICdoZWxwZXInKTtcblxuICAgIGxldCBsb29rdXAgPSBbJygnLCAnKGhlbHBlciA9ICcsIGhlbHBlck5hbWUsICcgfHwgJywgbm9uSGVscGVyLCAnKSddO1xuICAgIGlmICghdGhpcy5vcHRpb25zLnN0cmljdCkge1xuICAgICAgbG9va3VwWzBdID0gJyhoZWxwZXIgPSAnO1xuICAgICAgbG9va3VwLnB1c2goXG4gICAgICAgICcgIT0gbnVsbCA/IGhlbHBlciA6ICcsXG4gICAgICAgIHRoaXMuYWxpYXNhYmxlKCdoZWxwZXJzLmhlbHBlck1pc3NpbmcnKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnB1c2goW1xuICAgICAgICAnKCcsIGxvb2t1cCxcbiAgICAgICAgKGhlbHBlci5wYXJhbXNJbml0ID8gWycpLCgnLCBoZWxwZXIucGFyYW1zSW5pdF0gOiBbXSksICcpLCcsXG4gICAgICAgICcodHlwZW9mIGhlbHBlciA9PT0gJywgdGhpcy5hbGlhc2FibGUoJ1wiZnVuY3Rpb25cIicpLCAnID8gJyxcbiAgICAgICAgdGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKCdoZWxwZXInLCAnY2FsbCcsIGhlbHBlci5jYWxsUGFyYW1zKSwgJyA6IGhlbHBlcikpJ1xuICAgIF0pO1xuICB9LFxuXG4gIC8vIFtpbnZva2VQYXJ0aWFsXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiBjb250ZXh0LCAuLi5cbiAgLy8gT24gc3RhY2sgYWZ0ZXI6IHJlc3VsdCBvZiBwYXJ0aWFsIGludm9jYXRpb25cbiAgLy9cbiAgLy8gVGhpcyBvcGVyYXRpb24gcG9wcyBvZmYgYSBjb250ZXh0LCBpbnZva2VzIGEgcGFydGlhbCB3aXRoIHRoYXQgY29udGV4dCxcbiAgLy8gYW5kIHB1c2hlcyB0aGUgcmVzdWx0IG9mIHRoZSBpbnZvY2F0aW9uIGJhY2suXG4gIGludm9rZVBhcnRpYWw6IGZ1bmN0aW9uKGlzRHluYW1pYywgbmFtZSwgaW5kZW50KSB7XG4gICAgbGV0IHBhcmFtcyA9IFtdLFxuICAgICAgICBvcHRpb25zID0gdGhpcy5zZXR1cFBhcmFtcyhuYW1lLCAxLCBwYXJhbXMpO1xuXG4gICAgaWYgKGlzRHluYW1pYykge1xuICAgICAgbmFtZSA9IHRoaXMucG9wU3RhY2soKTtcbiAgICAgIGRlbGV0ZSBvcHRpb25zLm5hbWU7XG4gICAgfVxuXG4gICAgaWYgKGluZGVudCkge1xuICAgICAgb3B0aW9ucy5pbmRlbnQgPSBKU09OLnN0cmluZ2lmeShpbmRlbnQpO1xuICAgIH1cbiAgICBvcHRpb25zLmhlbHBlcnMgPSAnaGVscGVycyc7XG4gICAgb3B0aW9ucy5wYXJ0aWFscyA9ICdwYXJ0aWFscyc7XG4gICAgb3B0aW9ucy5kZWNvcmF0b3JzID0gJ2NvbnRhaW5lci5kZWNvcmF0b3JzJztcblxuICAgIGlmICghaXNEeW5hbWljKSB7XG4gICAgICBwYXJhbXMudW5zaGlmdCh0aGlzLm5hbWVMb29rdXAoJ3BhcnRpYWxzJywgbmFtZSwgJ3BhcnRpYWwnKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcmFtcy51bnNoaWZ0KG5hbWUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuY29tcGF0KSB7XG4gICAgICBvcHRpb25zLmRlcHRocyA9ICdkZXB0aHMnO1xuICAgIH1cbiAgICBvcHRpb25zID0gdGhpcy5vYmplY3RMaXRlcmFsKG9wdGlvbnMpO1xuICAgIHBhcmFtcy5wdXNoKG9wdGlvbnMpO1xuXG4gICAgdGhpcy5wdXNoKHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbCgnY29udGFpbmVyLmludm9rZVBhcnRpYWwnLCAnJywgcGFyYW1zKSk7XG4gIH0sXG5cbiAgLy8gW2Fzc2lnblRvSGFzaF1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogdmFsdWUsIC4uLiwgaGFzaCwgLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uLCBoYXNoLCAuLi5cbiAgLy9cbiAgLy8gUG9wcyBhIHZhbHVlIG9mZiB0aGUgc3RhY2sgYW5kIGFzc2lnbnMgaXQgdG8gdGhlIGN1cnJlbnQgaGFzaFxuICBhc3NpZ25Ub0hhc2g6IGZ1bmN0aW9uKGtleSkge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wU3RhY2soKSxcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgaWQ7XG5cbiAgICBpZiAodGhpcy50cmFja0lkcykge1xuICAgICAgaWQgPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykge1xuICAgICAgdHlwZSA9IHRoaXMucG9wU3RhY2soKTtcbiAgICAgIGNvbnRleHQgPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgfVxuXG4gICAgbGV0IGhhc2ggPSB0aGlzLmhhc2g7XG4gICAgaWYgKGNvbnRleHQpIHtcbiAgICAgIGhhc2guY29udGV4dHNba2V5XSA9IGNvbnRleHQ7XG4gICAgfVxuICAgIGlmICh0eXBlKSB7XG4gICAgICBoYXNoLnR5cGVzW2tleV0gPSB0eXBlO1xuICAgIH1cbiAgICBpZiAoaWQpIHtcbiAgICAgIGhhc2guaWRzW2tleV0gPSBpZDtcbiAgICB9XG4gICAgaGFzaC52YWx1ZXNba2V5XSA9IHZhbHVlO1xuICB9LFxuXG4gIHB1c2hJZDogZnVuY3Rpb24odHlwZSwgbmFtZSwgY2hpbGQpIHtcbiAgICBpZiAodHlwZSA9PT0gJ0Jsb2NrUGFyYW0nKSB7XG4gICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoXG4gICAgICAgICAgJ2Jsb2NrUGFyYW1zWycgKyBuYW1lWzBdICsgJ10ucGF0aFsnICsgbmFtZVsxXSArICddJ1xuICAgICAgICAgICsgKGNoaWxkID8gJyArICcgKyBKU09OLnN0cmluZ2lmeSgnLicgKyBjaGlsZCkgOiAnJykpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1BhdGhFeHByZXNzaW9uJykge1xuICAgICAgdGhpcy5wdXNoU3RyaW5nKG5hbWUpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1N1YkV4cHJlc3Npb24nKSB7XG4gICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoJ3RydWUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCdudWxsJyk7XG4gICAgfVxuICB9LFxuXG4gIC8vIEhFTFBFUlNcblxuICBjb21waWxlcjogSmF2YVNjcmlwdENvbXBpbGVyLFxuXG4gIGNvbXBpbGVDaGlsZHJlbjogZnVuY3Rpb24oZW52aXJvbm1lbnQsIG9wdGlvbnMpIHtcbiAgICBsZXQgY2hpbGRyZW4gPSBlbnZpcm9ubWVudC5jaGlsZHJlbiwgY2hpbGQsIGNvbXBpbGVyO1xuXG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgICBjb21waWxlciA9IG5ldyB0aGlzLmNvbXBpbGVyKCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbmV3LWNhcFxuXG4gICAgICBsZXQgZXhpc3RpbmcgPSB0aGlzLm1hdGNoRXhpc3RpbmdQcm9ncmFtKGNoaWxkKTtcblxuICAgICAgaWYgKGV4aXN0aW5nID09IG51bGwpIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LnByb2dyYW1zLnB1c2goJycpOyAvLyBQbGFjZWhvbGRlciB0byBwcmV2ZW50IG5hbWUgY29uZmxpY3RzIGZvciBuZXN0ZWQgY2hpbGRyZW5cbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5jb250ZXh0LnByb2dyYW1zLmxlbmd0aDtcbiAgICAgICAgY2hpbGQuaW5kZXggPSBpbmRleDtcbiAgICAgICAgY2hpbGQubmFtZSA9ICdwcm9ncmFtJyArIGluZGV4O1xuICAgICAgICB0aGlzLmNvbnRleHQucHJvZ3JhbXNbaW5kZXhdID0gY29tcGlsZXIuY29tcGlsZShjaGlsZCwgb3B0aW9ucywgdGhpcy5jb250ZXh0LCAhdGhpcy5wcmVjb21waWxlKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LmRlY29yYXRvcnNbaW5kZXhdID0gY29tcGlsZXIuZGVjb3JhdG9ycztcbiAgICAgICAgdGhpcy5jb250ZXh0LmVudmlyb25tZW50c1tpbmRleF0gPSBjaGlsZDtcblxuICAgICAgICB0aGlzLnVzZURlcHRocyA9IHRoaXMudXNlRGVwdGhzIHx8IGNvbXBpbGVyLnVzZURlcHRocztcbiAgICAgICAgdGhpcy51c2VCbG9ja1BhcmFtcyA9IHRoaXMudXNlQmxvY2tQYXJhbXMgfHwgY29tcGlsZXIudXNlQmxvY2tQYXJhbXM7XG4gICAgICAgIGNoaWxkLnVzZURlcHRocyA9IHRoaXMudXNlRGVwdGhzO1xuICAgICAgICBjaGlsZC51c2VCbG9ja1BhcmFtcyA9IHRoaXMudXNlQmxvY2tQYXJhbXM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGlsZC5pbmRleCA9IGV4aXN0aW5nLmluZGV4O1xuICAgICAgICBjaGlsZC5uYW1lID0gJ3Byb2dyYW0nICsgZXhpc3RpbmcuaW5kZXg7XG5cbiAgICAgICAgdGhpcy51c2VEZXB0aHMgPSB0aGlzLnVzZURlcHRocyB8fCBleGlzdGluZy51c2VEZXB0aHM7XG4gICAgICAgIHRoaXMudXNlQmxvY2tQYXJhbXMgPSB0aGlzLnVzZUJsb2NrUGFyYW1zIHx8IGV4aXN0aW5nLnVzZUJsb2NrUGFyYW1zO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgbWF0Y2hFeGlzdGluZ1Byb2dyYW06IGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRoaXMuY29udGV4dC5lbnZpcm9ubWVudHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGxldCBlbnZpcm9ubWVudCA9IHRoaXMuY29udGV4dC5lbnZpcm9ubWVudHNbaV07XG4gICAgICBpZiAoZW52aXJvbm1lbnQgJiYgZW52aXJvbm1lbnQuZXF1YWxzKGNoaWxkKSkge1xuICAgICAgICByZXR1cm4gZW52aXJvbm1lbnQ7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIHByb2dyYW1FeHByZXNzaW9uOiBmdW5jdGlvbihndWlkKSB7XG4gICAgbGV0IGNoaWxkID0gdGhpcy5lbnZpcm9ubWVudC5jaGlsZHJlbltndWlkXSxcbiAgICAgICAgcHJvZ3JhbVBhcmFtcyA9IFtjaGlsZC5pbmRleCwgJ2RhdGEnLCBjaGlsZC5ibG9ja1BhcmFtc107XG5cbiAgICBpZiAodGhpcy51c2VCbG9ja1BhcmFtcyB8fCB0aGlzLnVzZURlcHRocykge1xuICAgICAgcHJvZ3JhbVBhcmFtcy5wdXNoKCdibG9ja1BhcmFtcycpO1xuICAgIH1cbiAgICBpZiAodGhpcy51c2VEZXB0aHMpIHtcbiAgICAgIHByb2dyYW1QYXJhbXMucHVzaCgnZGVwdGhzJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuICdjb250YWluZXIucHJvZ3JhbSgnICsgcHJvZ3JhbVBhcmFtcy5qb2luKCcsICcpICsgJyknO1xuICB9LFxuXG4gIHVzZVJlZ2lzdGVyOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgaWYgKCF0aGlzLnJlZ2lzdGVyc1tuYW1lXSkge1xuICAgICAgdGhpcy5yZWdpc3RlcnNbbmFtZV0gPSB0cnVlO1xuICAgICAgdGhpcy5yZWdpc3RlcnMubGlzdC5wdXNoKG5hbWUpO1xuICAgIH1cbiAgfSxcblxuICBwdXNoOiBmdW5jdGlvbihleHByKSB7XG4gICAgaWYgKCEoZXhwciBpbnN0YW5jZW9mIExpdGVyYWwpKSB7XG4gICAgICBleHByID0gdGhpcy5zb3VyY2Uud3JhcChleHByKTtcbiAgICB9XG5cbiAgICB0aGlzLmlubGluZVN0YWNrLnB1c2goZXhwcik7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH0sXG5cbiAgcHVzaFN0YWNrTGl0ZXJhbDogZnVuY3Rpb24oaXRlbSkge1xuICAgIHRoaXMucHVzaChuZXcgTGl0ZXJhbChpdGVtKSk7XG4gIH0sXG5cbiAgcHVzaFNvdXJjZTogZnVuY3Rpb24oc291cmNlKSB7XG4gICAgaWYgKHRoaXMucGVuZGluZ0NvbnRlbnQpIHtcbiAgICAgIHRoaXMuc291cmNlLnB1c2goXG4gICAgICAgICAgdGhpcy5hcHBlbmRUb0J1ZmZlcih0aGlzLnNvdXJjZS5xdW90ZWRTdHJpbmcodGhpcy5wZW5kaW5nQ29udGVudCksIHRoaXMucGVuZGluZ0xvY2F0aW9uKSk7XG4gICAgICB0aGlzLnBlbmRpbmdDb250ZW50ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmIChzb3VyY2UpIHtcbiAgICAgIHRoaXMuc291cmNlLnB1c2goc291cmNlKTtcbiAgICB9XG4gIH0sXG5cbiAgcmVwbGFjZVN0YWNrOiBmdW5jdGlvbihjYWxsYmFjaykge1xuICAgIGxldCBwcmVmaXggPSBbJygnXSxcbiAgICAgICAgc3RhY2ssXG4gICAgICAgIGNyZWF0ZWRTdGFjayxcbiAgICAgICAgdXNlZExpdGVyYWw7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICghdGhpcy5pc0lubGluZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdyZXBsYWNlU3RhY2sgb24gbm9uLWlubGluZScpO1xuICAgIH1cblxuICAgIC8vIFdlIHdhbnQgdG8gbWVyZ2UgdGhlIGlubGluZSBzdGF0ZW1lbnQgaW50byB0aGUgcmVwbGFjZW1lbnQgc3RhdGVtZW50IHZpYSAnLCdcbiAgICBsZXQgdG9wID0gdGhpcy5wb3BTdGFjayh0cnVlKTtcblxuICAgIGlmICh0b3AgaW5zdGFuY2VvZiBMaXRlcmFsKSB7XG4gICAgICAvLyBMaXRlcmFscyBkbyBub3QgbmVlZCB0byBiZSBpbmxpbmVkXG4gICAgICBzdGFjayA9IFt0b3AudmFsdWVdO1xuICAgICAgcHJlZml4ID0gWycoJywgc3RhY2tdO1xuICAgICAgdXNlZExpdGVyYWwgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBHZXQgb3IgY3JlYXRlIHRoZSBjdXJyZW50IHN0YWNrIG5hbWUgZm9yIHVzZSBieSB0aGUgaW5saW5lXG4gICAgICBjcmVhdGVkU3RhY2sgPSB0cnVlO1xuICAgICAgbGV0IG5hbWUgPSB0aGlzLmluY3JTdGFjaygpO1xuXG4gICAgICBwcmVmaXggPSBbJygoJywgdGhpcy5wdXNoKG5hbWUpLCAnID0gJywgdG9wLCAnKSddO1xuICAgICAgc3RhY2sgPSB0aGlzLnRvcFN0YWNrKCk7XG4gICAgfVxuXG4gICAgbGV0IGl0ZW0gPSBjYWxsYmFjay5jYWxsKHRoaXMsIHN0YWNrKTtcblxuICAgIGlmICghdXNlZExpdGVyYWwpIHtcbiAgICAgIHRoaXMucG9wU3RhY2soKTtcbiAgICB9XG4gICAgaWYgKGNyZWF0ZWRTdGFjaykge1xuICAgICAgdGhpcy5zdGFja1Nsb3QtLTtcbiAgICB9XG4gICAgdGhpcy5wdXNoKHByZWZpeC5jb25jYXQoaXRlbSwgJyknKSk7XG4gIH0sXG5cbiAgaW5jclN0YWNrOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnN0YWNrU2xvdCsrO1xuICAgIGlmICh0aGlzLnN0YWNrU2xvdCA+IHRoaXMuc3RhY2tWYXJzLmxlbmd0aCkgeyB0aGlzLnN0YWNrVmFycy5wdXNoKCdzdGFjaycgKyB0aGlzLnN0YWNrU2xvdCk7IH1cbiAgICByZXR1cm4gdGhpcy50b3BTdGFja05hbWUoKTtcbiAgfSxcbiAgdG9wU3RhY2tOYW1lOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gJ3N0YWNrJyArIHRoaXMuc3RhY2tTbG90O1xuICB9LFxuICBmbHVzaElubGluZTogZnVuY3Rpb24oKSB7XG4gICAgbGV0IGlubGluZVN0YWNrID0gdGhpcy5pbmxpbmVTdGFjaztcbiAgICB0aGlzLmlubGluZVN0YWNrID0gW107XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGlubGluZVN0YWNrLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBsZXQgZW50cnkgPSBpbmxpbmVTdGFja1tpXTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKGVudHJ5IGluc3RhbmNlb2YgTGl0ZXJhbCkge1xuICAgICAgICB0aGlzLmNvbXBpbGVTdGFjay5wdXNoKGVudHJ5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBzdGFjayA9IHRoaXMuaW5jclN0YWNrKCk7XG4gICAgICAgIHRoaXMucHVzaFNvdXJjZShbc3RhY2ssICcgPSAnLCBlbnRyeSwgJzsnXSk7XG4gICAgICAgIHRoaXMuY29tcGlsZVN0YWNrLnB1c2goc3RhY2spO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgaXNJbmxpbmU6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmlubGluZVN0YWNrLmxlbmd0aDtcbiAgfSxcblxuICBwb3BTdGFjazogZnVuY3Rpb24od3JhcHBlZCkge1xuICAgIGxldCBpbmxpbmUgPSB0aGlzLmlzSW5saW5lKCksXG4gICAgICAgIGl0ZW0gPSAoaW5saW5lID8gdGhpcy5pbmxpbmVTdGFjayA6IHRoaXMuY29tcGlsZVN0YWNrKS5wb3AoKTtcblxuICAgIGlmICghd3JhcHBlZCAmJiAoaXRlbSBpbnN0YW5jZW9mIExpdGVyYWwpKSB7XG4gICAgICByZXR1cm4gaXRlbS52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFpbmxpbmUpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgaWYgKCF0aGlzLnN0YWNrU2xvdCkge1xuICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0ludmFsaWQgc3RhY2sgcG9wJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGFja1Nsb3QtLTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cbiAgfSxcblxuICB0b3BTdGFjazogZnVuY3Rpb24oKSB7XG4gICAgbGV0IHN0YWNrID0gKHRoaXMuaXNJbmxpbmUoKSA/IHRoaXMuaW5saW5lU3RhY2sgOiB0aGlzLmNvbXBpbGVTdGFjayksXG4gICAgICAgIGl0ZW0gPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpdGVtIGluc3RhbmNlb2YgTGl0ZXJhbCkge1xuICAgICAgcmV0dXJuIGl0ZW0udmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cbiAgfSxcblxuICBjb250ZXh0TmFtZTogZnVuY3Rpb24oY29udGV4dCkge1xuICAgIGlmICh0aGlzLnVzZURlcHRocyAmJiBjb250ZXh0KSB7XG4gICAgICByZXR1cm4gJ2RlcHRoc1snICsgY29udGV4dCArICddJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdkZXB0aCcgKyBjb250ZXh0O1xuICAgIH1cbiAgfSxcblxuICBxdW90ZWRTdHJpbmc6IGZ1bmN0aW9uKHN0cikge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZS5xdW90ZWRTdHJpbmcoc3RyKTtcbiAgfSxcblxuICBvYmplY3RMaXRlcmFsOiBmdW5jdGlvbihvYmopIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2Uub2JqZWN0TGl0ZXJhbChvYmopO1xuICB9LFxuXG4gIGFsaWFzYWJsZTogZnVuY3Rpb24obmFtZSkge1xuICAgIGxldCByZXQgPSB0aGlzLmFsaWFzZXNbbmFtZV07XG4gICAgaWYgKHJldCkge1xuICAgICAgcmV0LnJlZmVyZW5jZUNvdW50Kys7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cblxuICAgIHJldCA9IHRoaXMuYWxpYXNlc1tuYW1lXSA9IHRoaXMuc291cmNlLndyYXAobmFtZSk7XG4gICAgcmV0LmFsaWFzYWJsZSA9IHRydWU7XG4gICAgcmV0LnJlZmVyZW5jZUNvdW50ID0gMTtcblxuICAgIHJldHVybiByZXQ7XG4gIH0sXG5cbiAgc2V0dXBIZWxwZXI6IGZ1bmN0aW9uKHBhcmFtU2l6ZSwgbmFtZSwgYmxvY2tIZWxwZXIpIHtcbiAgICBsZXQgcGFyYW1zID0gW10sXG4gICAgICAgIHBhcmFtc0luaXQgPSB0aGlzLnNldHVwSGVscGVyQXJncyhuYW1lLCBwYXJhbVNpemUsIHBhcmFtcywgYmxvY2tIZWxwZXIpO1xuICAgIGxldCBmb3VuZEhlbHBlciA9IHRoaXMubmFtZUxvb2t1cCgnaGVscGVycycsIG5hbWUsICdoZWxwZXInKSxcbiAgICAgICAgY2FsbENvbnRleHQgPSB0aGlzLmFsaWFzYWJsZShgJHt0aGlzLmNvbnRleHROYW1lKDApfSAhPSBudWxsID8gJHt0aGlzLmNvbnRleHROYW1lKDApfSA6IChjb250YWluZXIubnVsbENvbnRleHQgfHwge30pYCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgICBwYXJhbXNJbml0OiBwYXJhbXNJbml0LFxuICAgICAgbmFtZTogZm91bmRIZWxwZXIsXG4gICAgICBjYWxsUGFyYW1zOiBbY2FsbENvbnRleHRdLmNvbmNhdChwYXJhbXMpXG4gICAgfTtcbiAgfSxcblxuICBzZXR1cFBhcmFtczogZnVuY3Rpb24oaGVscGVyLCBwYXJhbVNpemUsIHBhcmFtcykge1xuICAgIGxldCBvcHRpb25zID0ge30sXG4gICAgICAgIGNvbnRleHRzID0gW10sXG4gICAgICAgIHR5cGVzID0gW10sXG4gICAgICAgIGlkcyA9IFtdLFxuICAgICAgICBvYmplY3RBcmdzID0gIXBhcmFtcyxcbiAgICAgICAgcGFyYW07XG5cbiAgICBpZiAob2JqZWN0QXJncykge1xuICAgICAgcGFyYW1zID0gW107XG4gICAgfVxuXG4gICAgb3B0aW9ucy5uYW1lID0gdGhpcy5xdW90ZWRTdHJpbmcoaGVscGVyKTtcbiAgICBvcHRpb25zLmhhc2ggPSB0aGlzLnBvcFN0YWNrKCk7XG5cbiAgICBpZiAodGhpcy50cmFja0lkcykge1xuICAgICAgb3B0aW9ucy5oYXNoSWRzID0gdGhpcy5wb3BTdGFjaygpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHtcbiAgICAgIG9wdGlvbnMuaGFzaFR5cGVzID0gdGhpcy5wb3BTdGFjaygpO1xuICAgICAgb3B0aW9ucy5oYXNoQ29udGV4dHMgPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgfVxuXG4gICAgbGV0IGludmVyc2UgPSB0aGlzLnBvcFN0YWNrKCksXG4gICAgICAgIHByb2dyYW0gPSB0aGlzLnBvcFN0YWNrKCk7XG5cbiAgICAvLyBBdm9pZCBzZXR0aW5nIGZuIGFuZCBpbnZlcnNlIGlmIG5laXRoZXIgYXJlIHNldC4gVGhpcyBhbGxvd3NcbiAgICAvLyBoZWxwZXJzIHRvIGRvIGEgY2hlY2sgZm9yIGBpZiAob3B0aW9ucy5mbilgXG4gICAgaWYgKHByb2dyYW0gfHwgaW52ZXJzZSkge1xuICAgICAgb3B0aW9ucy5mbiA9IHByb2dyYW0gfHwgJ2NvbnRhaW5lci5ub29wJztcbiAgICAgIG9wdGlvbnMuaW52ZXJzZSA9IGludmVyc2UgfHwgJ2NvbnRhaW5lci5ub29wJztcbiAgICB9XG5cbiAgICAvLyBUaGUgcGFyYW1ldGVycyBnbyBvbiB0byB0aGUgc3RhY2sgaW4gb3JkZXIgKG1ha2luZyBzdXJlIHRoYXQgdGhleSBhcmUgZXZhbHVhdGVkIGluIG9yZGVyKVxuICAgIC8vIHNvIHdlIG5lZWQgdG8gcG9wIHRoZW0gb2ZmIHRoZSBzdGFjayBpbiByZXZlcnNlIG9yZGVyXG4gICAgbGV0IGkgPSBwYXJhbVNpemU7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgcGFyYW0gPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgICBwYXJhbXNbaV0gPSBwYXJhbTtcblxuICAgICAgaWYgKHRoaXMudHJhY2tJZHMpIHtcbiAgICAgICAgaWRzW2ldID0gdGhpcy5wb3BTdGFjaygpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7XG4gICAgICAgIHR5cGVzW2ldID0gdGhpcy5wb3BTdGFjaygpO1xuICAgICAgICBjb250ZXh0c1tpXSA9IHRoaXMucG9wU3RhY2soKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob2JqZWN0QXJncykge1xuICAgICAgb3B0aW9ucy5hcmdzID0gdGhpcy5zb3VyY2UuZ2VuZXJhdGVBcnJheShwYXJhbXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7XG4gICAgICBvcHRpb25zLmlkcyA9IHRoaXMuc291cmNlLmdlbmVyYXRlQXJyYXkoaWRzKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7XG4gICAgICBvcHRpb25zLnR5cGVzID0gdGhpcy5zb3VyY2UuZ2VuZXJhdGVBcnJheSh0eXBlcyk7XG4gICAgICBvcHRpb25zLmNvbnRleHRzID0gdGhpcy5zb3VyY2UuZ2VuZXJhdGVBcnJheShjb250ZXh0cyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5kYXRhKSB7XG4gICAgICBvcHRpb25zLmRhdGEgPSAnZGF0YSc7XG4gICAgfVxuICAgIGlmICh0aGlzLnVzZUJsb2NrUGFyYW1zKSB7XG4gICAgICBvcHRpb25zLmJsb2NrUGFyYW1zID0gJ2Jsb2NrUGFyYW1zJztcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH0sXG5cbiAgc2V0dXBIZWxwZXJBcmdzOiBmdW5jdGlvbihoZWxwZXIsIHBhcmFtU2l6ZSwgcGFyYW1zLCB1c2VSZWdpc3Rlcikge1xuICAgIGxldCBvcHRpb25zID0gdGhpcy5zZXR1cFBhcmFtcyhoZWxwZXIsIHBhcmFtU2l6ZSwgcGFyYW1zKTtcbiAgICBvcHRpb25zID0gdGhpcy5vYmplY3RMaXRlcmFsKG9wdGlvbnMpO1xuICAgIGlmICh1c2VSZWdpc3Rlcikge1xuICAgICAgdGhpcy51c2VSZWdpc3Rlcignb3B0aW9ucycpO1xuICAgICAgcGFyYW1zLnB1c2goJ29wdGlvbnMnKTtcbiAgICAgIHJldHVybiBbJ29wdGlvbnM9Jywgb3B0aW9uc107XG4gICAgfSBlbHNlIGlmIChwYXJhbXMpIHtcbiAgICAgIHBhcmFtcy5wdXNoKG9wdGlvbnMpO1xuICAgICAgcmV0dXJuICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG4gIH1cbn07XG5cblxuKGZ1bmN0aW9uKCkge1xuICBjb25zdCByZXNlcnZlZFdvcmRzID0gKFxuICAgICdicmVhayBlbHNlIG5ldyB2YXInICtcbiAgICAnIGNhc2UgZmluYWxseSByZXR1cm4gdm9pZCcgK1xuICAgICcgY2F0Y2ggZm9yIHN3aXRjaCB3aGlsZScgK1xuICAgICcgY29udGludWUgZnVuY3Rpb24gdGhpcyB3aXRoJyArXG4gICAgJyBkZWZhdWx0IGlmIHRocm93JyArXG4gICAgJyBkZWxldGUgaW4gdHJ5JyArXG4gICAgJyBkbyBpbnN0YW5jZW9mIHR5cGVvZicgK1xuICAgICcgYWJzdHJhY3QgZW51bSBpbnQgc2hvcnQnICtcbiAgICAnIGJvb2xlYW4gZXhwb3J0IGludGVyZmFjZSBzdGF0aWMnICtcbiAgICAnIGJ5dGUgZXh0ZW5kcyBsb25nIHN1cGVyJyArXG4gICAgJyBjaGFyIGZpbmFsIG5hdGl2ZSBzeW5jaHJvbml6ZWQnICtcbiAgICAnIGNsYXNzIGZsb2F0IHBhY2thZ2UgdGhyb3dzJyArXG4gICAgJyBjb25zdCBnb3RvIHByaXZhdGUgdHJhbnNpZW50JyArXG4gICAgJyBkZWJ1Z2dlciBpbXBsZW1lbnRzIHByb3RlY3RlZCB2b2xhdGlsZScgK1xuICAgICcgZG91YmxlIGltcG9ydCBwdWJsaWMgbGV0IHlpZWxkIGF3YWl0JyArXG4gICAgJyBudWxsIHRydWUgZmFsc2UnXG4gICkuc3BsaXQoJyAnKTtcblxuICBjb25zdCBjb21waWxlcldvcmRzID0gSmF2YVNjcmlwdENvbXBpbGVyLlJFU0VSVkVEX1dPUkRTID0ge307XG5cbiAgZm9yIChsZXQgaSA9IDAsIGwgPSByZXNlcnZlZFdvcmRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGNvbXBpbGVyV29yZHNbcmVzZXJ2ZWRXb3Jkc1tpXV0gPSB0cnVlO1xuICB9XG59KCkpO1xuXG5KYXZhU2NyaXB0Q29tcGlsZXIuaXNWYWxpZEphdmFTY3JpcHRWYXJpYWJsZU5hbWUgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiAhSmF2YVNjcmlwdENvbXBpbGVyLlJFU0VSVkVEX1dPUkRTW25hbWVdICYmICgvXlthLXpBLVpfJF1bMC05YS16QS1aXyRdKiQvKS50ZXN0KG5hbWUpO1xufTtcblxuZnVuY3Rpb24gc3RyaWN0TG9va3VwKHJlcXVpcmVUZXJtaW5hbCwgY29tcGlsZXIsIHBhcnRzLCB0eXBlKSB7XG4gIGxldCBzdGFjayA9IGNvbXBpbGVyLnBvcFN0YWNrKCksXG4gICAgICBpID0gMCxcbiAgICAgIGxlbiA9IHBhcnRzLmxlbmd0aDtcbiAgaWYgKHJlcXVpcmVUZXJtaW5hbCkge1xuICAgIGxlbi0tO1xuICB9XG5cbiAgZm9yICg7IGkgPCBsZW47IGkrKykge1xuICAgIHN0YWNrID0gY29tcGlsZXIubmFtZUxvb2t1cChzdGFjaywgcGFydHNbaV0sIHR5cGUpO1xuICB9XG5cbiAgaWYgKHJlcXVpcmVUZXJtaW5hbCkge1xuICAgIHJldHVybiBbY29tcGlsZXIuYWxpYXNhYmxlKCdjb250YWluZXIuc3RyaWN0JyksICcoJywgc3RhY2ssICcsICcsIGNvbXBpbGVyLnF1b3RlZFN0cmluZyhwYXJ0c1tpXSksICcpJ107XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0YWNrO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEphdmFTY3JpcHRDb21waWxlcjtcbiJdfQ==