@waves/node-api-js 1.2.10 → 1.3.10-beta.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 (180) hide show
  1. package/README.md +2 -2
  2. package/cjs/api-node/activation/index.d.ts +21 -21
  3. package/cjs/api-node/activation/index.js +19 -19
  4. package/cjs/api-node/addresses/index.d.ts +81 -81
  5. package/cjs/api-node/addresses/index.js +173 -173
  6. package/cjs/api-node/addresses/index.js.map +1 -1
  7. package/cjs/api-node/alias/index.d.ts +6 -6
  8. package/cjs/api-node/alias/index.js +21 -21
  9. package/cjs/api-node/assets/index.d.ts +79 -79
  10. package/cjs/api-node/assets/index.js +171 -171
  11. package/cjs/api-node/blocks/index.d.ts +143 -131
  12. package/cjs/api-node/blocks/index.js +209 -209
  13. package/cjs/api-node/consensus/index.d.ts +39 -39
  14. package/cjs/api-node/consensus/index.js +36 -36
  15. package/cjs/api-node/debug/index.d.ts +189 -189
  16. package/cjs/api-node/debug/index.js +244 -244
  17. package/cjs/api-node/eth/index.d.ts +3 -3
  18. package/cjs/api-node/eth/index.js +14 -14
  19. package/cjs/api-node/leasing/index.d.ts +22 -22
  20. package/cjs/api-node/leasing/index.js +41 -41
  21. package/cjs/api-node/node/index.d.ts +11 -11
  22. package/cjs/api-node/node/index.js +19 -19
  23. package/cjs/api-node/peers/index.d.ts +46 -46
  24. package/cjs/api-node/peers/index.js +59 -59
  25. package/cjs/api-node/rewards/index.d.ts +21 -21
  26. package/cjs/api-node/rewards/index.js +20 -20
  27. package/cjs/api-node/transactions/index.d.ts +73 -73
  28. package/cjs/api-node/transactions/index.js +192 -192
  29. package/cjs/api-node/utils/index.d.ts +110 -99
  30. package/cjs/api-node/utils/index.js +210 -192
  31. package/cjs/api-node/utils/index.js.map +1 -1
  32. package/cjs/api-node/wallet/index.d.ts +5 -5
  33. package/cjs/api-node/wallet/index.js +6 -6
  34. package/cjs/constants.d.ts +40 -40
  35. package/cjs/constants.js +42 -42
  36. package/cjs/create.d.ts +1238 -1240
  37. package/cjs/create.js +115 -118
  38. package/cjs/create.js.map +1 -1
  39. package/cjs/index.d.ts +9 -9
  40. package/cjs/index.js +17 -17
  41. package/cjs/interface.d.ts +44 -44
  42. package/cjs/interface.js +9 -9
  43. package/cjs/tools/adresses/availableSponsoredBalances.d.ts +7 -7
  44. package/cjs/tools/adresses/availableSponsoredBalances.js +29 -29
  45. package/cjs/tools/adresses/ethAddress2waves.d.ts +1 -1
  46. package/cjs/tools/adresses/ethAddress2waves.js +46 -46
  47. package/cjs/tools/adresses/getAssetIdListByTx.d.ts +2 -2
  48. package/cjs/tools/adresses/getAssetIdListByTx.js +47 -47
  49. package/cjs/tools/adresses/getAssetsByTransaction.d.ts +3 -3
  50. package/cjs/tools/adresses/getAssetsByTransaction.js +13 -13
  51. package/cjs/tools/adresses/getTransactionsWithAssets.d.ts +6 -6
  52. package/cjs/tools/adresses/getTransactionsWithAssets.js +12 -12
  53. package/cjs/tools/adresses/watch.d.ts +24 -24
  54. package/cjs/tools/adresses/watch.js +167 -167
  55. package/cjs/tools/adresses/wavesAddress2eth.d.ts +1 -1
  56. package/cjs/tools/adresses/wavesAddress2eth.js +9 -9
  57. package/cjs/tools/assets/wavesAsset2eth.d.ts +1 -1
  58. package/cjs/tools/assets/wavesAsset2eth.js +9 -9
  59. package/cjs/tools/blocks/detectInterval.d.ts +1 -1
  60. package/cjs/tools/blocks/detectInterval.js +11 -11
  61. package/cjs/tools/blocks/getNetworkByte.d.ts +1 -1
  62. package/cjs/tools/blocks/getNetworkByte.js +53 -53
  63. package/cjs/tools/blocks/getNetworkCode.d.ts +1 -1
  64. package/cjs/tools/blocks/getNetworkCode.js +10 -10
  65. package/cjs/tools/blocks/waitHeight.d.ts +3 -3
  66. package/cjs/tools/blocks/waitHeight.js +64 -64
  67. package/cjs/tools/parse.d.ts +1 -1
  68. package/cjs/tools/parse.js +7 -7
  69. package/cjs/tools/query.d.ts +4 -4
  70. package/cjs/tools/query.js +40 -40
  71. package/cjs/tools/request.d.ts +64 -64
  72. package/cjs/tools/request.js +41 -41
  73. package/cjs/tools/resolve.d.ts +1 -1
  74. package/cjs/tools/resolve.js +6 -6
  75. package/cjs/tools/stringify.d.ts +1 -1
  76. package/cjs/tools/stringify.js +20 -20
  77. package/cjs/tools/transactions/broadcast.d.ts +14 -14
  78. package/cjs/tools/transactions/broadcast.js +59 -59
  79. package/cjs/tools/transactions/ethTxId2waves.d.ts +1 -1
  80. package/cjs/tools/transactions/ethTxId2waves.js +10 -10
  81. package/cjs/tools/transactions/wait.d.ts +10 -10
  82. package/cjs/tools/transactions/wait.js +41 -41
  83. package/cjs/tools/utils.d.ts +32 -32
  84. package/cjs/tools/utils.js +117 -117
  85. package/dist/node-api.js +2368 -2402
  86. package/dist/node-api.min.js +2 -2
  87. package/es/api-node/activation/index.d.ts +21 -21
  88. package/es/api-node/activation/index.js +12 -12
  89. package/es/api-node/addresses/index.d.ts +81 -81
  90. package/es/api-node/addresses/index.js +110 -110
  91. package/es/api-node/addresses/index.js.map +1 -1
  92. package/es/api-node/alias/index.d.ts +6 -6
  93. package/es/api-node/alias/index.js +13 -13
  94. package/es/api-node/assets/index.d.ts +79 -79
  95. package/es/api-node/assets/index.js +102 -102
  96. package/es/api-node/blocks/index.d.ts +143 -131
  97. package/es/api-node/blocks/index.js +178 -178
  98. package/es/api-node/consensus/index.d.ts +39 -39
  99. package/es/api-node/consensus/index.js +26 -26
  100. package/es/api-node/debug/index.d.ts +189 -189
  101. package/es/api-node/debug/index.js +200 -200
  102. package/es/api-node/eth/index.d.ts +3 -3
  103. package/es/api-node/eth/index.js +7 -7
  104. package/es/api-node/leasing/index.d.ts +22 -22
  105. package/es/api-node/leasing/index.js +21 -21
  106. package/es/api-node/node/index.d.ts +11 -11
  107. package/es/api-node/node/index.js +9 -9
  108. package/es/api-node/peers/index.d.ts +46 -46
  109. package/es/api-node/peers/index.js +45 -45
  110. package/es/api-node/rewards/index.d.ts +21 -21
  111. package/es/api-node/rewards/index.js +12 -12
  112. package/es/api-node/transactions/index.d.ts +73 -73
  113. package/es/api-node/transactions/index.js +136 -136
  114. package/es/api-node/utils/index.d.ts +110 -99
  115. package/es/api-node/utils/index.js +192 -175
  116. package/es/api-node/utils/index.js.map +1 -1
  117. package/es/api-node/wallet/index.d.ts +5 -5
  118. package/es/api-node/wallet/index.js +6 -6
  119. package/es/constants.d.ts +40 -40
  120. package/es/constants.js +39 -39
  121. package/es/create.d.ts +1238 -1240
  122. package/es/create.js +89 -92
  123. package/es/create.js.map +1 -1
  124. package/es/index.d.ts +9 -9
  125. package/es/index.js +8 -8
  126. package/es/interface.d.ts +44 -44
  127. package/es/interface.js +2 -2
  128. package/es/tools/adresses/availableSponsoredBalances.d.ts +7 -7
  129. package/es/tools/adresses/availableSponsoredBalances.js +26 -26
  130. package/es/tools/adresses/ethAddress2waves.d.ts +1 -1
  131. package/es/tools/adresses/ethAddress2waves.js +30 -30
  132. package/es/tools/adresses/getAssetIdListByTx.d.ts +2 -2
  133. package/es/tools/adresses/getAssetIdListByTx.js +23 -23
  134. package/es/tools/adresses/getAssetsByTransaction.d.ts +3 -3
  135. package/es/tools/adresses/getAssetsByTransaction.js +7 -7
  136. package/es/tools/adresses/getTransactionsWithAssets.d.ts +6 -6
  137. package/es/tools/adresses/getTransactionsWithAssets.js +6 -6
  138. package/es/tools/adresses/watch.d.ts +24 -24
  139. package/es/tools/adresses/watch.js +133 -133
  140. package/es/tools/adresses/wavesAddress2eth.d.ts +1 -1
  141. package/es/tools/adresses/wavesAddress2eth.js +6 -6
  142. package/es/tools/assets/wavesAsset2eth.d.ts +1 -1
  143. package/es/tools/assets/wavesAsset2eth.js +6 -6
  144. package/es/tools/blocks/detectInterval.d.ts +1 -1
  145. package/es/tools/blocks/detectInterval.js +8 -8
  146. package/es/tools/blocks/getNetworkByte.d.ts +1 -1
  147. package/es/tools/blocks/getNetworkByte.js +50 -50
  148. package/es/tools/blocks/getNetworkCode.d.ts +1 -1
  149. package/es/tools/blocks/getNetworkCode.js +4 -4
  150. package/es/tools/blocks/waitHeight.d.ts +3 -3
  151. package/es/tools/blocks/waitHeight.js +35 -35
  152. package/es/tools/parse.d.ts +1 -1
  153. package/es/tools/parse.js +4 -4
  154. package/es/tools/query.d.ts +4 -4
  155. package/es/tools/query.js +11 -11
  156. package/es/tools/request.d.ts +64 -64
  157. package/es/tools/request.js +21 -21
  158. package/es/tools/resolve.d.ts +1 -1
  159. package/es/tools/resolve.js +3 -3
  160. package/es/tools/stringify.d.ts +1 -1
  161. package/es/tools/stringify.js +17 -17
  162. package/es/tools/transactions/broadcast.d.ts +14 -14
  163. package/es/tools/transactions/broadcast.js +42 -42
  164. package/es/tools/transactions/ethTxId2waves.d.ts +1 -1
  165. package/es/tools/transactions/ethTxId2waves.js +7 -7
  166. package/es/tools/transactions/wait.d.ts +10 -10
  167. package/es/tools/transactions/wait.js +38 -38
  168. package/es/tools/utils.d.ts +32 -32
  169. package/es/tools/utils.js +72 -72
  170. package/package.json +66 -66
  171. package/cjs/tools/transactions/transactions.d.ts +0 -0
  172. package/cjs/tools/transactions/transactions.js +0 -2
  173. package/cjs/tools/transactions/transactions.js.map +0 -1
  174. package/dist/0.node-api.js +0 -467
  175. package/dist/node-api.min.js.LICENSE.txt +0 -17
  176. package/dist/node_fs-node_path.node-api.js +0 -23
  177. package/dist/vendors-node_modules_node-fetch_src_utils_multipart-parser_js.node-api.js +0 -599
  178. package/es/tools/transactions/transactions.d.ts +0 -0
  179. package/es/tools/transactions/transactions.js +0 -2
  180. package/es/tools/transactions/transactions.js.map +0 -1
@@ -1,599 +0,0 @@
1
- (this["webpackChunknodeApi"] = this["webpackChunknodeApi"] || []).push([["vendors-node_modules_node-fetch_src_utils_multipart-parser_js"],{
2
-
3
- /***/ "./node_modules/node-domexception/index.js":
4
- /*!*************************************************!*\
5
- !*** ./node_modules/node-domexception/index.js ***!
6
- \*************************************************/
7
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
8
-
9
- /*! node-domexception. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */
10
-
11
- if (!globalThis.DOMException) {
12
- try {
13
- const { MessageChannel } = __webpack_require__(Object(function webpackMissingModule() { var e = new Error("Cannot find module 'worker_threads'"); e.code = 'MODULE_NOT_FOUND'; throw e; }())),
14
- port = new MessageChannel().port1,
15
- ab = new ArrayBuffer()
16
- port.postMessage(ab, [ab, ab])
17
- } catch (err) {
18
- err.constructor.name === 'DOMException' && (
19
- globalThis.DOMException = err.constructor
20
- )
21
- }
22
- }
23
-
24
- module.exports = globalThis.DOMException
25
-
26
-
27
- /***/ }),
28
-
29
- /***/ "./node_modules/fetch-blob/from.js":
30
- /*!*****************************************!*\
31
- !*** ./node_modules/fetch-blob/from.js ***!
32
- \*****************************************/
33
- /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
34
-
35
- "use strict";
36
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
37
- /* harmony export */ "File": () => (/* reexport safe */ _file_js__WEBPACK_IMPORTED_MODULE_3__["default"])
38
- /* harmony export */ });
39
- /* unused harmony exports blobFrom, blobFromSync, fileFrom, fileFromSync */
40
- /* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:fs */ "node:fs");
41
- /* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! node:path */ "node:path");
42
- /* harmony import */ var node_domexception__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! node-domexception */ "./node_modules/node-domexception/index.js");
43
- /* harmony import */ var _file_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./file.js */ "./node_modules/fetch-blob/file.js");
44
- /* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./index.js */ "./node_modules/fetch-blob/index.js");
45
-
46
-
47
-
48
-
49
-
50
-
51
-
52
- const { stat } = node_fs__WEBPACK_IMPORTED_MODULE_0__.promises
53
-
54
- /**
55
- * @param {string} path filepath on the disk
56
- * @param {string} [type] mimetype to use
57
- */
58
- const blobFromSync = (path, type) => fromBlob((0,node_fs__WEBPACK_IMPORTED_MODULE_0__.statSync)(path), path, type)
59
-
60
- /**
61
- * @param {string} path filepath on the disk
62
- * @param {string} [type] mimetype to use
63
- * @returns {Promise<Blob>}
64
- */
65
- const blobFrom = (path, type) => stat(path).then(stat => fromBlob(stat, path, type))
66
-
67
- /**
68
- * @param {string} path filepath on the disk
69
- * @param {string} [type] mimetype to use
70
- * @returns {Promise<File>}
71
- */
72
- const fileFrom = (path, type) => stat(path).then(stat => fromFile(stat, path, type))
73
-
74
- /**
75
- * @param {string} path filepath on the disk
76
- * @param {string} [type] mimetype to use
77
- */
78
- const fileFromSync = (path, type) => fromFile((0,node_fs__WEBPACK_IMPORTED_MODULE_0__.statSync)(path), path, type)
79
-
80
- // @ts-ignore
81
- const fromBlob = (stat, path, type = '') => new _index_js__WEBPACK_IMPORTED_MODULE_4__["default"]([new BlobDataItem({
82
- path,
83
- size: stat.size,
84
- lastModified: stat.mtimeMs,
85
- start: 0
86
- })], { type })
87
-
88
- // @ts-ignore
89
- const fromFile = (stat, path, type = '') => new _file_js__WEBPACK_IMPORTED_MODULE_3__["default"]([new BlobDataItem({
90
- path,
91
- size: stat.size,
92
- lastModified: stat.mtimeMs,
93
- start: 0
94
- })], (0,node_path__WEBPACK_IMPORTED_MODULE_1__.basename)(path), { type, lastModified: stat.mtimeMs })
95
-
96
- /**
97
- * This is a blob backed up by a file on the disk
98
- * with minium requirement. Its wrapped around a Blob as a blobPart
99
- * so you have no direct access to this.
100
- *
101
- * @private
102
- */
103
- class BlobDataItem {
104
- #path
105
- #start
106
-
107
- constructor (options) {
108
- this.#path = options.path
109
- this.#start = options.start
110
- this.size = options.size
111
- this.lastModified = options.lastModified
112
- }
113
-
114
- /**
115
- * Slicing arguments is first validated and formatted
116
- * to not be out of range by Blob.prototype.slice
117
- */
118
- slice (start, end) {
119
- return new BlobDataItem({
120
- path: this.#path,
121
- lastModified: this.lastModified,
122
- size: end - start,
123
- start: this.#start + start
124
- })
125
- }
126
-
127
- async * stream () {
128
- const { mtimeMs } = await stat(this.#path)
129
- if (mtimeMs > this.lastModified) {
130
- throw new node_domexception__WEBPACK_IMPORTED_MODULE_2__('The requested file could not be read, typically due to permission problems that have occurred after a reference to a file was acquired.', 'NotReadableError')
131
- }
132
- yield * (0,node_fs__WEBPACK_IMPORTED_MODULE_0__.createReadStream)(this.#path, {
133
- start: this.#start,
134
- end: this.#start + this.size - 1
135
- })
136
- }
137
-
138
- get [Symbol.toStringTag] () {
139
- return 'Blob'
140
- }
141
- }
142
-
143
- /* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = (blobFromSync);
144
-
145
-
146
-
147
- /***/ }),
148
-
149
- /***/ "./node_modules/node-fetch/src/utils/multipart-parser.js":
150
- /*!***************************************************************!*\
151
- !*** ./node_modules/node-fetch/src/utils/multipart-parser.js ***!
152
- \***************************************************************/
153
- /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
154
-
155
- "use strict";
156
- __webpack_require__.r(__webpack_exports__);
157
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
158
- /* harmony export */ "toFormData": () => (/* binding */ toFormData)
159
- /* harmony export */ });
160
- /* harmony import */ var fetch_blob_from_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fetch-blob/from.js */ "./node_modules/fetch-blob/from.js");
161
- /* harmony import */ var formdata_polyfill_esm_min_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! formdata-polyfill/esm.min.js */ "./node_modules/formdata-polyfill/esm.min.js");
162
-
163
-
164
-
165
- let s = 0;
166
- const S = {
167
- START_BOUNDARY: s++,
168
- HEADER_FIELD_START: s++,
169
- HEADER_FIELD: s++,
170
- HEADER_VALUE_START: s++,
171
- HEADER_VALUE: s++,
172
- HEADER_VALUE_ALMOST_DONE: s++,
173
- HEADERS_ALMOST_DONE: s++,
174
- PART_DATA_START: s++,
175
- PART_DATA: s++,
176
- END: s++
177
- };
178
-
179
- let f = 1;
180
- const F = {
181
- PART_BOUNDARY: f,
182
- LAST_BOUNDARY: f *= 2
183
- };
184
-
185
- const LF = 10;
186
- const CR = 13;
187
- const SPACE = 32;
188
- const HYPHEN = 45;
189
- const COLON = 58;
190
- const A = 97;
191
- const Z = 122;
192
-
193
- const lower = c => c | 0x20;
194
-
195
- const noop = () => {};
196
-
197
- class MultipartParser {
198
- /**
199
- * @param {string} boundary
200
- */
201
- constructor(boundary) {
202
- this.index = 0;
203
- this.flags = 0;
204
-
205
- this.onHeaderEnd = noop;
206
- this.onHeaderField = noop;
207
- this.onHeadersEnd = noop;
208
- this.onHeaderValue = noop;
209
- this.onPartBegin = noop;
210
- this.onPartData = noop;
211
- this.onPartEnd = noop;
212
-
213
- this.boundaryChars = {};
214
-
215
- boundary = '\r\n--' + boundary;
216
- const ui8a = new Uint8Array(boundary.length);
217
- for (let i = 0; i < boundary.length; i++) {
218
- ui8a[i] = boundary.charCodeAt(i);
219
- this.boundaryChars[ui8a[i]] = true;
220
- }
221
-
222
- this.boundary = ui8a;
223
- this.lookbehind = new Uint8Array(this.boundary.length + 8);
224
- this.state = S.START_BOUNDARY;
225
- }
226
-
227
- /**
228
- * @param {Uint8Array} data
229
- */
230
- write(data) {
231
- let i = 0;
232
- const length_ = data.length;
233
- let previousIndex = this.index;
234
- let {lookbehind, boundary, boundaryChars, index, state, flags} = this;
235
- const boundaryLength = this.boundary.length;
236
- const boundaryEnd = boundaryLength - 1;
237
- const bufferLength = data.length;
238
- let c;
239
- let cl;
240
-
241
- const mark = name => {
242
- this[name + 'Mark'] = i;
243
- };
244
-
245
- const clear = name => {
246
- delete this[name + 'Mark'];
247
- };
248
-
249
- const callback = (callbackSymbol, start, end, ui8a) => {
250
- if (start === undefined || start !== end) {
251
- this[callbackSymbol](ui8a && ui8a.subarray(start, end));
252
- }
253
- };
254
-
255
- const dataCallback = (name, clear) => {
256
- const markSymbol = name + 'Mark';
257
- if (!(markSymbol in this)) {
258
- return;
259
- }
260
-
261
- if (clear) {
262
- callback(name, this[markSymbol], i, data);
263
- delete this[markSymbol];
264
- } else {
265
- callback(name, this[markSymbol], data.length, data);
266
- this[markSymbol] = 0;
267
- }
268
- };
269
-
270
- for (i = 0; i < length_; i++) {
271
- c = data[i];
272
-
273
- switch (state) {
274
- case S.START_BOUNDARY:
275
- if (index === boundary.length - 2) {
276
- if (c === HYPHEN) {
277
- flags |= F.LAST_BOUNDARY;
278
- } else if (c !== CR) {
279
- return;
280
- }
281
-
282
- index++;
283
- break;
284
- } else if (index - 1 === boundary.length - 2) {
285
- if (flags & F.LAST_BOUNDARY && c === HYPHEN) {
286
- state = S.END;
287
- flags = 0;
288
- } else if (!(flags & F.LAST_BOUNDARY) && c === LF) {
289
- index = 0;
290
- callback('onPartBegin');
291
- state = S.HEADER_FIELD_START;
292
- } else {
293
- return;
294
- }
295
-
296
- break;
297
- }
298
-
299
- if (c !== boundary[index + 2]) {
300
- index = -2;
301
- }
302
-
303
- if (c === boundary[index + 2]) {
304
- index++;
305
- }
306
-
307
- break;
308
- case S.HEADER_FIELD_START:
309
- state = S.HEADER_FIELD;
310
- mark('onHeaderField');
311
- index = 0;
312
- // falls through
313
- case S.HEADER_FIELD:
314
- if (c === CR) {
315
- clear('onHeaderField');
316
- state = S.HEADERS_ALMOST_DONE;
317
- break;
318
- }
319
-
320
- index++;
321
- if (c === HYPHEN) {
322
- break;
323
- }
324
-
325
- if (c === COLON) {
326
- if (index === 1) {
327
- // empty header field
328
- return;
329
- }
330
-
331
- dataCallback('onHeaderField', true);
332
- state = S.HEADER_VALUE_START;
333
- break;
334
- }
335
-
336
- cl = lower(c);
337
- if (cl < A || cl > Z) {
338
- return;
339
- }
340
-
341
- break;
342
- case S.HEADER_VALUE_START:
343
- if (c === SPACE) {
344
- break;
345
- }
346
-
347
- mark('onHeaderValue');
348
- state = S.HEADER_VALUE;
349
- // falls through
350
- case S.HEADER_VALUE:
351
- if (c === CR) {
352
- dataCallback('onHeaderValue', true);
353
- callback('onHeaderEnd');
354
- state = S.HEADER_VALUE_ALMOST_DONE;
355
- }
356
-
357
- break;
358
- case S.HEADER_VALUE_ALMOST_DONE:
359
- if (c !== LF) {
360
- return;
361
- }
362
-
363
- state = S.HEADER_FIELD_START;
364
- break;
365
- case S.HEADERS_ALMOST_DONE:
366
- if (c !== LF) {
367
- return;
368
- }
369
-
370
- callback('onHeadersEnd');
371
- state = S.PART_DATA_START;
372
- break;
373
- case S.PART_DATA_START:
374
- state = S.PART_DATA;
375
- mark('onPartData');
376
- // falls through
377
- case S.PART_DATA:
378
- previousIndex = index;
379
-
380
- if (index === 0) {
381
- // boyer-moore derrived algorithm to safely skip non-boundary data
382
- i += boundaryEnd;
383
- while (i < bufferLength && !(data[i] in boundaryChars)) {
384
- i += boundaryLength;
385
- }
386
-
387
- i -= boundaryEnd;
388
- c = data[i];
389
- }
390
-
391
- if (index < boundary.length) {
392
- if (boundary[index] === c) {
393
- if (index === 0) {
394
- dataCallback('onPartData', true);
395
- }
396
-
397
- index++;
398
- } else {
399
- index = 0;
400
- }
401
- } else if (index === boundary.length) {
402
- index++;
403
- if (c === CR) {
404
- // CR = part boundary
405
- flags |= F.PART_BOUNDARY;
406
- } else if (c === HYPHEN) {
407
- // HYPHEN = end boundary
408
- flags |= F.LAST_BOUNDARY;
409
- } else {
410
- index = 0;
411
- }
412
- } else if (index - 1 === boundary.length) {
413
- if (flags & F.PART_BOUNDARY) {
414
- index = 0;
415
- if (c === LF) {
416
- // unset the PART_BOUNDARY flag
417
- flags &= ~F.PART_BOUNDARY;
418
- callback('onPartEnd');
419
- callback('onPartBegin');
420
- state = S.HEADER_FIELD_START;
421
- break;
422
- }
423
- } else if (flags & F.LAST_BOUNDARY) {
424
- if (c === HYPHEN) {
425
- callback('onPartEnd');
426
- state = S.END;
427
- flags = 0;
428
- } else {
429
- index = 0;
430
- }
431
- } else {
432
- index = 0;
433
- }
434
- }
435
-
436
- if (index > 0) {
437
- // when matching a possible boundary, keep a lookbehind reference
438
- // in case it turns out to be a false lead
439
- lookbehind[index - 1] = c;
440
- } else if (previousIndex > 0) {
441
- // if our boundary turned out to be rubbish, the captured lookbehind
442
- // belongs to partData
443
- const _lookbehind = new Uint8Array(lookbehind.buffer, lookbehind.byteOffset, lookbehind.byteLength);
444
- callback('onPartData', 0, previousIndex, _lookbehind);
445
- previousIndex = 0;
446
- mark('onPartData');
447
-
448
- // reconsider the current character even so it interrupted the sequence
449
- // it could be the beginning of a new sequence
450
- i--;
451
- }
452
-
453
- break;
454
- case S.END:
455
- break;
456
- default:
457
- throw new Error(`Unexpected state entered: ${state}`);
458
- }
459
- }
460
-
461
- dataCallback('onHeaderField');
462
- dataCallback('onHeaderValue');
463
- dataCallback('onPartData');
464
-
465
- // Update properties for the next call
466
- this.index = index;
467
- this.state = state;
468
- this.flags = flags;
469
- }
470
-
471
- end() {
472
- if ((this.state === S.HEADER_FIELD_START && this.index === 0) ||
473
- (this.state === S.PART_DATA && this.index === this.boundary.length)) {
474
- this.onPartEnd();
475
- } else if (this.state !== S.END) {
476
- throw new Error('MultipartParser.end(): stream ended unexpectedly');
477
- }
478
- }
479
- }
480
-
481
- function _fileName(headerValue) {
482
- // matches either a quoted-string or a token (RFC 2616 section 19.5.1)
483
- const m = headerValue.match(/\bfilename=("(.*?)"|([^()<>@,;:\\"/[\]?={}\s\t]+))($|;\s)/i);
484
- if (!m) {
485
- return;
486
- }
487
-
488
- const match = m[2] || m[3] || '';
489
- let filename = match.slice(match.lastIndexOf('\\') + 1);
490
- filename = filename.replace(/%22/g, '"');
491
- filename = filename.replace(/&#(\d{4});/g, (m, code) => {
492
- return String.fromCharCode(code);
493
- });
494
- return filename;
495
- }
496
-
497
- async function toFormData(Body, ct) {
498
- if (!/multipart/i.test(ct)) {
499
- throw new TypeError('Failed to fetch');
500
- }
501
-
502
- const m = ct.match(/boundary=(?:"([^"]+)"|([^;]+))/i);
503
-
504
- if (!m) {
505
- throw new TypeError('no or bad content-type header, no multipart boundary');
506
- }
507
-
508
- const parser = new MultipartParser(m[1] || m[2]);
509
-
510
- let headerField;
511
- let headerValue;
512
- let entryValue;
513
- let entryName;
514
- let contentType;
515
- let filename;
516
- const entryChunks = [];
517
- const formData = new formdata_polyfill_esm_min_js__WEBPACK_IMPORTED_MODULE_1__.FormData();
518
-
519
- const onPartData = ui8a => {
520
- entryValue += decoder.decode(ui8a, {stream: true});
521
- };
522
-
523
- const appendToFile = ui8a => {
524
- entryChunks.push(ui8a);
525
- };
526
-
527
- const appendFileToFormData = () => {
528
- const file = new fetch_blob_from_js__WEBPACK_IMPORTED_MODULE_0__.File(entryChunks, filename, {type: contentType});
529
- formData.append(entryName, file);
530
- };
531
-
532
- const appendEntryToFormData = () => {
533
- formData.append(entryName, entryValue);
534
- };
535
-
536
- const decoder = new TextDecoder('utf-8');
537
- decoder.decode();
538
-
539
- parser.onPartBegin = function () {
540
- parser.onPartData = onPartData;
541
- parser.onPartEnd = appendEntryToFormData;
542
-
543
- headerField = '';
544
- headerValue = '';
545
- entryValue = '';
546
- entryName = '';
547
- contentType = '';
548
- filename = null;
549
- entryChunks.length = 0;
550
- };
551
-
552
- parser.onHeaderField = function (ui8a) {
553
- headerField += decoder.decode(ui8a, {stream: true});
554
- };
555
-
556
- parser.onHeaderValue = function (ui8a) {
557
- headerValue += decoder.decode(ui8a, {stream: true});
558
- };
559
-
560
- parser.onHeaderEnd = function () {
561
- headerValue += decoder.decode();
562
- headerField = headerField.toLowerCase();
563
-
564
- if (headerField === 'content-disposition') {
565
- // matches either a quoted-string or a token (RFC 2616 section 19.5.1)
566
- const m = headerValue.match(/\bname=("([^"]*)"|([^()<>@,;:\\"/[\]?={}\s\t]+))/i);
567
-
568
- if (m) {
569
- entryName = m[2] || m[3] || '';
570
- }
571
-
572
- filename = _fileName(headerValue);
573
-
574
- if (filename) {
575
- parser.onPartData = appendToFile;
576
- parser.onPartEnd = appendFileToFormData;
577
- }
578
- } else if (headerField === 'content-type') {
579
- contentType = headerValue;
580
- }
581
-
582
- headerValue = '';
583
- headerField = '';
584
- };
585
-
586
- for await (const chunk of Body) {
587
- parser.write(chunk);
588
- }
589
-
590
- parser.end();
591
-
592
- return formData;
593
- }
594
-
595
-
596
- /***/ })
597
-
598
- }]);
599
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVuZG9ycy1ub2RlX21vZHVsZXNfbm9kZS1mZXRjaF9zcmNfdXRpbHNfbXVsdGlwYXJ0LXBhcnNlcl9qcy5ub2RlLWFwaS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOztBQUVBO0FBQ0E7QUFDQSxZQUFZLGlCQUFpQixFQUFFLG1CQUFPLENBQUMsNklBQWdCO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNmb0U7QUFDaEM7QUFDUTs7QUFFaEI7QUFDQzs7QUFFN0IsUUFBUSxPQUFPLEVBQUUsNkNBQUU7O0FBRW5CO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQjtBQUNBLDhDQUE4QyxpREFBUTs7QUFFdEQ7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLGFBQWE7QUFDYjtBQUNBOztBQUVBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixhQUFhO0FBQ2I7QUFDQTs7QUFFQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkI7QUFDQSw4Q0FBOEMsaURBQVE7O0FBRXREO0FBQ0EsZ0RBQWdELGlEQUFJO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxNQUFNLE1BQU07O0FBRWI7QUFDQSxnREFBZ0QsZ0RBQUk7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLElBQUksbURBQVEsVUFBVSxrQ0FBa0M7O0FBRXpEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBLFlBQVksVUFBVTtBQUN0QjtBQUNBLGdCQUFnQiw4Q0FBWTtBQUM1QjtBQUNBLFlBQVks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QTs7QUFFQSwrQ0FBK0M7O0FBRS9DO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixrRUFBUTs7QUFFOUI7QUFDQSxzQ0FBc0MsYUFBYTtBQUNuRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsb0RBQUkseUJBQXlCLGtCQUFrQjtBQUNsRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUNBQXVDLGFBQWE7QUFDcEQ7O0FBRUE7QUFDQSx1Q0FBdUMsYUFBYTtBQUNwRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDREQUE0RCxZQUFZOztBQUV4RTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ub2RlQXBpLy4vbm9kZV9tb2R1bGVzL25vZGUtZG9tZXhjZXB0aW9uL2luZGV4LmpzIiwid2VicGFjazovL25vZGVBcGkvLi9ub2RlX21vZHVsZXMvZmV0Y2gtYmxvYi9mcm9tLmpzIiwid2VicGFjazovL25vZGVBcGkvLi9ub2RlX21vZHVsZXMvbm9kZS1mZXRjaC9zcmMvdXRpbHMvbXVsdGlwYXJ0LXBhcnNlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiEgbm9kZS1kb21leGNlcHRpb24uIE1JVCBMaWNlbnNlLiBKaW1teSBXw6RydGluZyA8aHR0cHM6Ly9qaW1teS53YXJ0aW5nLnNlL29wZW5zb3VyY2U+ICovXG5cbmlmICghZ2xvYmFsVGhpcy5ET01FeGNlcHRpb24pIHtcbiAgdHJ5IHtcbiAgICBjb25zdCB7IE1lc3NhZ2VDaGFubmVsIH0gPSByZXF1aXJlKCd3b3JrZXJfdGhyZWFkcycpLFxuICAgIHBvcnQgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKS5wb3J0MSxcbiAgICBhYiA9IG5ldyBBcnJheUJ1ZmZlcigpXG4gICAgcG9ydC5wb3N0TWVzc2FnZShhYiwgW2FiLCBhYl0pXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGVyci5jb25zdHJ1Y3Rvci5uYW1lID09PSAnRE9NRXhjZXB0aW9uJyAmJiAoXG4gICAgICBnbG9iYWxUaGlzLkRPTUV4Y2VwdGlvbiA9IGVyci5jb25zdHJ1Y3RvclxuICAgIClcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdsb2JhbFRoaXMuRE9NRXhjZXB0aW9uXG4iLCJpbXBvcnQgeyBzdGF0U3luYywgY3JlYXRlUmVhZFN0cmVhbSwgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdub2RlOmZzJ1xuaW1wb3J0IHsgYmFzZW5hbWUgfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgRE9NRXhjZXB0aW9uIGZyb20gJ25vZGUtZG9tZXhjZXB0aW9uJ1xuXG5pbXBvcnQgRmlsZSBmcm9tICcuL2ZpbGUuanMnXG5pbXBvcnQgQmxvYiBmcm9tICcuL2luZGV4LmpzJ1xuXG5jb25zdCB7IHN0YXQgfSA9IGZzXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggZmlsZXBhdGggb24gdGhlIGRpc2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBbdHlwZV0gbWltZXR5cGUgdG8gdXNlXG4gKi9cbmNvbnN0IGJsb2JGcm9tU3luYyA9IChwYXRoLCB0eXBlKSA9PiBmcm9tQmxvYihzdGF0U3luYyhwYXRoKSwgcGF0aCwgdHlwZSlcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBmaWxlcGF0aCBvbiB0aGUgZGlza1xuICogQHBhcmFtIHtzdHJpbmd9IFt0eXBlXSBtaW1ldHlwZSB0byB1c2VcbiAqIEByZXR1cm5zIHtQcm9taXNlPEJsb2I+fVxuICovXG5jb25zdCBibG9iRnJvbSA9IChwYXRoLCB0eXBlKSA9PiBzdGF0KHBhdGgpLnRoZW4oc3RhdCA9PiBmcm9tQmxvYihzdGF0LCBwYXRoLCB0eXBlKSlcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBmaWxlcGF0aCBvbiB0aGUgZGlza1xuICogQHBhcmFtIHtzdHJpbmd9IFt0eXBlXSBtaW1ldHlwZSB0byB1c2VcbiAqIEByZXR1cm5zIHtQcm9taXNlPEZpbGU+fVxuICovXG5jb25zdCBmaWxlRnJvbSA9IChwYXRoLCB0eXBlKSA9PiBzdGF0KHBhdGgpLnRoZW4oc3RhdCA9PiBmcm9tRmlsZShzdGF0LCBwYXRoLCB0eXBlKSlcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBmaWxlcGF0aCBvbiB0aGUgZGlza1xuICogQHBhcmFtIHtzdHJpbmd9IFt0eXBlXSBtaW1ldHlwZSB0byB1c2VcbiAqL1xuY29uc3QgZmlsZUZyb21TeW5jID0gKHBhdGgsIHR5cGUpID0+IGZyb21GaWxlKHN0YXRTeW5jKHBhdGgpLCBwYXRoLCB0eXBlKVxuXG4vLyBAdHMtaWdub3JlXG5jb25zdCBmcm9tQmxvYiA9IChzdGF0LCBwYXRoLCB0eXBlID0gJycpID0+IG5ldyBCbG9iKFtuZXcgQmxvYkRhdGFJdGVtKHtcbiAgcGF0aCxcbiAgc2l6ZTogc3RhdC5zaXplLFxuICBsYXN0TW9kaWZpZWQ6IHN0YXQubXRpbWVNcyxcbiAgc3RhcnQ6IDBcbn0pXSwgeyB0eXBlIH0pXG5cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IGZyb21GaWxlID0gKHN0YXQsIHBhdGgsIHR5cGUgPSAnJykgPT4gbmV3IEZpbGUoW25ldyBCbG9iRGF0YUl0ZW0oe1xuICBwYXRoLFxuICBzaXplOiBzdGF0LnNpemUsXG4gIGxhc3RNb2RpZmllZDogc3RhdC5tdGltZU1zLFxuICBzdGFydDogMFxufSldLCBiYXNlbmFtZShwYXRoKSwgeyB0eXBlLCBsYXN0TW9kaWZpZWQ6IHN0YXQubXRpbWVNcyB9KVxuXG4vKipcbiAqIFRoaXMgaXMgYSBibG9iIGJhY2tlZCB1cCBieSBhIGZpbGUgb24gdGhlIGRpc2tcbiAqIHdpdGggbWluaXVtIHJlcXVpcmVtZW50LiBJdHMgd3JhcHBlZCBhcm91bmQgYSBCbG9iIGFzIGEgYmxvYlBhcnRcbiAqIHNvIHlvdSBoYXZlIG5vIGRpcmVjdCBhY2Nlc3MgdG8gdGhpcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5jbGFzcyBCbG9iRGF0YUl0ZW0ge1xuICAjcGF0aFxuICAjc3RhcnRcblxuICBjb25zdHJ1Y3RvciAob3B0aW9ucykge1xuICAgIHRoaXMuI3BhdGggPSBvcHRpb25zLnBhdGhcbiAgICB0aGlzLiNzdGFydCA9IG9wdGlvbnMuc3RhcnRcbiAgICB0aGlzLnNpemUgPSBvcHRpb25zLnNpemVcbiAgICB0aGlzLmxhc3RNb2RpZmllZCA9IG9wdGlvbnMubGFzdE1vZGlmaWVkXG4gIH1cblxuICAvKipcbiAgICogU2xpY2luZyBhcmd1bWVudHMgaXMgZmlyc3QgdmFsaWRhdGVkIGFuZCBmb3JtYXR0ZWRcbiAgICogdG8gbm90IGJlIG91dCBvZiByYW5nZSBieSBCbG9iLnByb3RvdHlwZS5zbGljZVxuICAgKi9cbiAgc2xpY2UgKHN0YXJ0LCBlbmQpIHtcbiAgICByZXR1cm4gbmV3IEJsb2JEYXRhSXRlbSh7XG4gICAgICBwYXRoOiB0aGlzLiNwYXRoLFxuICAgICAgbGFzdE1vZGlmaWVkOiB0aGlzLmxhc3RNb2RpZmllZCxcbiAgICAgIHNpemU6IGVuZCAtIHN0YXJ0LFxuICAgICAgc3RhcnQ6IHRoaXMuI3N0YXJ0ICsgc3RhcnRcbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgKiBzdHJlYW0gKCkge1xuICAgIGNvbnN0IHsgbXRpbWVNcyB9ID0gYXdhaXQgc3RhdCh0aGlzLiNwYXRoKVxuICAgIGlmIChtdGltZU1zID4gdGhpcy5sYXN0TW9kaWZpZWQpIHtcbiAgICAgIHRocm93IG5ldyBET01FeGNlcHRpb24oJ1RoZSByZXF1ZXN0ZWQgZmlsZSBjb3VsZCBub3QgYmUgcmVhZCwgdHlwaWNhbGx5IGR1ZSB0byBwZXJtaXNzaW9uIHByb2JsZW1zIHRoYXQgaGF2ZSBvY2N1cnJlZCBhZnRlciBhIHJlZmVyZW5jZSB0byBhIGZpbGUgd2FzIGFjcXVpcmVkLicsICdOb3RSZWFkYWJsZUVycm9yJylcbiAgICB9XG4gICAgeWllbGQgKiBjcmVhdGVSZWFkU3RyZWFtKHRoaXMuI3BhdGgsIHtcbiAgICAgIHN0YXJ0OiB0aGlzLiNzdGFydCxcbiAgICAgIGVuZDogdGhpcy4jc3RhcnQgKyB0aGlzLnNpemUgLSAxXG4gICAgfSlcbiAgfVxuXG4gIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSAoKSB7XG4gICAgcmV0dXJuICdCbG9iJ1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJsb2JGcm9tU3luY1xuZXhwb3J0IHsgRmlsZSwgQmxvYiwgYmxvYkZyb20sIGJsb2JGcm9tU3luYywgZmlsZUZyb20sIGZpbGVGcm9tU3luYyB9XG4iLCJpbXBvcnQge0ZpbGV9IGZyb20gJ2ZldGNoLWJsb2IvZnJvbS5qcyc7XG5pbXBvcnQge0Zvcm1EYXRhfSBmcm9tICdmb3JtZGF0YS1wb2x5ZmlsbC9lc20ubWluLmpzJztcblxubGV0IHMgPSAwO1xuY29uc3QgUyA9IHtcblx0U1RBUlRfQk9VTkRBUlk6IHMrKyxcblx0SEVBREVSX0ZJRUxEX1NUQVJUOiBzKyssXG5cdEhFQURFUl9GSUVMRDogcysrLFxuXHRIRUFERVJfVkFMVUVfU1RBUlQ6IHMrKyxcblx0SEVBREVSX1ZBTFVFOiBzKyssXG5cdEhFQURFUl9WQUxVRV9BTE1PU1RfRE9ORTogcysrLFxuXHRIRUFERVJTX0FMTU9TVF9ET05FOiBzKyssXG5cdFBBUlRfREFUQV9TVEFSVDogcysrLFxuXHRQQVJUX0RBVEE6IHMrKyxcblx0RU5EOiBzKytcbn07XG5cbmxldCBmID0gMTtcbmNvbnN0IEYgPSB7XG5cdFBBUlRfQk9VTkRBUlk6IGYsXG5cdExBU1RfQk9VTkRBUlk6IGYgKj0gMlxufTtcblxuY29uc3QgTEYgPSAxMDtcbmNvbnN0IENSID0gMTM7XG5jb25zdCBTUEFDRSA9IDMyO1xuY29uc3QgSFlQSEVOID0gNDU7XG5jb25zdCBDT0xPTiA9IDU4O1xuY29uc3QgQSA9IDk3O1xuY29uc3QgWiA9IDEyMjtcblxuY29uc3QgbG93ZXIgPSBjID0+IGMgfCAweDIwO1xuXG5jb25zdCBub29wID0gKCkgPT4ge307XG5cbmNsYXNzIE11bHRpcGFydFBhcnNlciB7XG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gYm91bmRhcnlcblx0ICovXG5cdGNvbnN0cnVjdG9yKGJvdW5kYXJ5KSB7XG5cdFx0dGhpcy5pbmRleCA9IDA7XG5cdFx0dGhpcy5mbGFncyA9IDA7XG5cblx0XHR0aGlzLm9uSGVhZGVyRW5kID0gbm9vcDtcblx0XHR0aGlzLm9uSGVhZGVyRmllbGQgPSBub29wO1xuXHRcdHRoaXMub25IZWFkZXJzRW5kID0gbm9vcDtcblx0XHR0aGlzLm9uSGVhZGVyVmFsdWUgPSBub29wO1xuXHRcdHRoaXMub25QYXJ0QmVnaW4gPSBub29wO1xuXHRcdHRoaXMub25QYXJ0RGF0YSA9IG5vb3A7XG5cdFx0dGhpcy5vblBhcnRFbmQgPSBub29wO1xuXG5cdFx0dGhpcy5ib3VuZGFyeUNoYXJzID0ge307XG5cblx0XHRib3VuZGFyeSA9ICdcXHJcXG4tLScgKyBib3VuZGFyeTtcblx0XHRjb25zdCB1aThhID0gbmV3IFVpbnQ4QXJyYXkoYm91bmRhcnkubGVuZ3RoKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGJvdW5kYXJ5Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR1aThhW2ldID0gYm91bmRhcnkuY2hhckNvZGVBdChpKTtcblx0XHRcdHRoaXMuYm91bmRhcnlDaGFyc1t1aThhW2ldXSA9IHRydWU7XG5cdFx0fVxuXG5cdFx0dGhpcy5ib3VuZGFyeSA9IHVpOGE7XG5cdFx0dGhpcy5sb29rYmVoaW5kID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5ib3VuZGFyeS5sZW5ndGggKyA4KTtcblx0XHR0aGlzLnN0YXRlID0gUy5TVEFSVF9CT1VOREFSWTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGRhdGFcblx0ICovXG5cdHdyaXRlKGRhdGEpIHtcblx0XHRsZXQgaSA9IDA7XG5cdFx0Y29uc3QgbGVuZ3RoXyA9IGRhdGEubGVuZ3RoO1xuXHRcdGxldCBwcmV2aW91c0luZGV4ID0gdGhpcy5pbmRleDtcblx0XHRsZXQge2xvb2tiZWhpbmQsIGJvdW5kYXJ5LCBib3VuZGFyeUNoYXJzLCBpbmRleCwgc3RhdGUsIGZsYWdzfSA9IHRoaXM7XG5cdFx0Y29uc3QgYm91bmRhcnlMZW5ndGggPSB0aGlzLmJvdW5kYXJ5Lmxlbmd0aDtcblx0XHRjb25zdCBib3VuZGFyeUVuZCA9IGJvdW5kYXJ5TGVuZ3RoIC0gMTtcblx0XHRjb25zdCBidWZmZXJMZW5ndGggPSBkYXRhLmxlbmd0aDtcblx0XHRsZXQgYztcblx0XHRsZXQgY2w7XG5cblx0XHRjb25zdCBtYXJrID0gbmFtZSA9PiB7XG5cdFx0XHR0aGlzW25hbWUgKyAnTWFyayddID0gaTtcblx0XHR9O1xuXG5cdFx0Y29uc3QgY2xlYXIgPSBuYW1lID0+IHtcblx0XHRcdGRlbGV0ZSB0aGlzW25hbWUgKyAnTWFyayddO1xuXHRcdH07XG5cblx0XHRjb25zdCBjYWxsYmFjayA9IChjYWxsYmFja1N5bWJvbCwgc3RhcnQsIGVuZCwgdWk4YSkgPT4ge1xuXHRcdFx0aWYgKHN0YXJ0ID09PSB1bmRlZmluZWQgfHwgc3RhcnQgIT09IGVuZCkge1xuXHRcdFx0XHR0aGlzW2NhbGxiYWNrU3ltYm9sXSh1aThhICYmIHVpOGEuc3ViYXJyYXkoc3RhcnQsIGVuZCkpO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHRjb25zdCBkYXRhQ2FsbGJhY2sgPSAobmFtZSwgY2xlYXIpID0+IHtcblx0XHRcdGNvbnN0IG1hcmtTeW1ib2wgPSBuYW1lICsgJ01hcmsnO1xuXHRcdFx0aWYgKCEobWFya1N5bWJvbCBpbiB0aGlzKSkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGlmIChjbGVhcikge1xuXHRcdFx0XHRjYWxsYmFjayhuYW1lLCB0aGlzW21hcmtTeW1ib2xdLCBpLCBkYXRhKTtcblx0XHRcdFx0ZGVsZXRlIHRoaXNbbWFya1N5bWJvbF07XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjYWxsYmFjayhuYW1lLCB0aGlzW21hcmtTeW1ib2xdLCBkYXRhLmxlbmd0aCwgZGF0YSk7XG5cdFx0XHRcdHRoaXNbbWFya1N5bWJvbF0gPSAwO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoXzsgaSsrKSB7XG5cdFx0XHRjID0gZGF0YVtpXTtcblxuXHRcdFx0c3dpdGNoIChzdGF0ZSkge1xuXHRcdFx0XHRjYXNlIFMuU1RBUlRfQk9VTkRBUlk6XG5cdFx0XHRcdFx0aWYgKGluZGV4ID09PSBib3VuZGFyeS5sZW5ndGggLSAyKSB7XG5cdFx0XHRcdFx0XHRpZiAoYyA9PT0gSFlQSEVOKSB7XG5cdFx0XHRcdFx0XHRcdGZsYWdzIHw9IEYuTEFTVF9CT1VOREFSWTtcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYyAhPT0gQ1IpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRpbmRleCsrO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChpbmRleCAtIDEgPT09IGJvdW5kYXJ5Lmxlbmd0aCAtIDIpIHtcblx0XHRcdFx0XHRcdGlmIChmbGFncyAmIEYuTEFTVF9CT1VOREFSWSAmJiBjID09PSBIWVBIRU4pIHtcblx0XHRcdFx0XHRcdFx0c3RhdGUgPSBTLkVORDtcblx0XHRcdFx0XHRcdFx0ZmxhZ3MgPSAwO1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmICghKGZsYWdzICYgRi5MQVNUX0JPVU5EQVJZKSAmJiBjID09PSBMRikge1xuXHRcdFx0XHRcdFx0XHRpbmRleCA9IDA7XG5cdFx0XHRcdFx0XHRcdGNhbGxiYWNrKCdvblBhcnRCZWdpbicpO1xuXHRcdFx0XHRcdFx0XHRzdGF0ZSA9IFMuSEVBREVSX0ZJRUxEX1NUQVJUO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoYyAhPT0gYm91bmRhcnlbaW5kZXggKyAyXSkge1xuXHRcdFx0XHRcdFx0aW5kZXggPSAtMjtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoYyA9PT0gYm91bmRhcnlbaW5kZXggKyAyXSkge1xuXHRcdFx0XHRcdFx0aW5kZXgrKztcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBTLkhFQURFUl9GSUVMRF9TVEFSVDpcblx0XHRcdFx0XHRzdGF0ZSA9IFMuSEVBREVSX0ZJRUxEO1xuXHRcdFx0XHRcdG1hcmsoJ29uSGVhZGVyRmllbGQnKTtcblx0XHRcdFx0XHRpbmRleCA9IDA7XG5cdFx0XHRcdFx0Ly8gZmFsbHMgdGhyb3VnaFxuXHRcdFx0XHRjYXNlIFMuSEVBREVSX0ZJRUxEOlxuXHRcdFx0XHRcdGlmIChjID09PSBDUikge1xuXHRcdFx0XHRcdFx0Y2xlYXIoJ29uSGVhZGVyRmllbGQnKTtcblx0XHRcdFx0XHRcdHN0YXRlID0gUy5IRUFERVJTX0FMTU9TVF9ET05FO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aW5kZXgrKztcblx0XHRcdFx0XHRpZiAoYyA9PT0gSFlQSEVOKSB7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoYyA9PT0gQ09MT04pIHtcblx0XHRcdFx0XHRcdGlmIChpbmRleCA9PT0gMSkge1xuXHRcdFx0XHRcdFx0XHQvLyBlbXB0eSBoZWFkZXIgZmllbGRcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRkYXRhQ2FsbGJhY2soJ29uSGVhZGVyRmllbGQnLCB0cnVlKTtcblx0XHRcdFx0XHRcdHN0YXRlID0gUy5IRUFERVJfVkFMVUVfU1RBUlQ7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRjbCA9IGxvd2VyKGMpO1xuXHRcdFx0XHRcdGlmIChjbCA8IEEgfHwgY2wgPiBaKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgUy5IRUFERVJfVkFMVUVfU1RBUlQ6XG5cdFx0XHRcdFx0aWYgKGMgPT09IFNQQUNFKSB7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRtYXJrKCdvbkhlYWRlclZhbHVlJyk7XG5cdFx0XHRcdFx0c3RhdGUgPSBTLkhFQURFUl9WQUxVRTtcblx0XHRcdFx0XHQvLyBmYWxscyB0aHJvdWdoXG5cdFx0XHRcdGNhc2UgUy5IRUFERVJfVkFMVUU6XG5cdFx0XHRcdFx0aWYgKGMgPT09IENSKSB7XG5cdFx0XHRcdFx0XHRkYXRhQ2FsbGJhY2soJ29uSGVhZGVyVmFsdWUnLCB0cnVlKTtcblx0XHRcdFx0XHRcdGNhbGxiYWNrKCdvbkhlYWRlckVuZCcpO1xuXHRcdFx0XHRcdFx0c3RhdGUgPSBTLkhFQURFUl9WQUxVRV9BTE1PU1RfRE9ORTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBTLkhFQURFUl9WQUxVRV9BTE1PU1RfRE9ORTpcblx0XHRcdFx0XHRpZiAoYyAhPT0gTEYpIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRzdGF0ZSA9IFMuSEVBREVSX0ZJRUxEX1NUQVJUO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFMuSEVBREVSU19BTE1PU1RfRE9ORTpcblx0XHRcdFx0XHRpZiAoYyAhPT0gTEYpIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRjYWxsYmFjaygnb25IZWFkZXJzRW5kJyk7XG5cdFx0XHRcdFx0c3RhdGUgPSBTLlBBUlRfREFUQV9TVEFSVDtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBTLlBBUlRfREFUQV9TVEFSVDpcblx0XHRcdFx0XHRzdGF0ZSA9IFMuUEFSVF9EQVRBO1xuXHRcdFx0XHRcdG1hcmsoJ29uUGFydERhdGEnKTtcblx0XHRcdFx0XHQvLyBmYWxscyB0aHJvdWdoXG5cdFx0XHRcdGNhc2UgUy5QQVJUX0RBVEE6XG5cdFx0XHRcdFx0cHJldmlvdXNJbmRleCA9IGluZGV4O1xuXG5cdFx0XHRcdFx0aWYgKGluZGV4ID09PSAwKSB7XG5cdFx0XHRcdFx0XHQvLyBib3llci1tb29yZSBkZXJyaXZlZCBhbGdvcml0aG0gdG8gc2FmZWx5IHNraXAgbm9uLWJvdW5kYXJ5IGRhdGFcblx0XHRcdFx0XHRcdGkgKz0gYm91bmRhcnlFbmQ7XG5cdFx0XHRcdFx0XHR3aGlsZSAoaSA8IGJ1ZmZlckxlbmd0aCAmJiAhKGRhdGFbaV0gaW4gYm91bmRhcnlDaGFycykpIHtcblx0XHRcdFx0XHRcdFx0aSArPSBib3VuZGFyeUxlbmd0aDtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0aSAtPSBib3VuZGFyeUVuZDtcblx0XHRcdFx0XHRcdGMgPSBkYXRhW2ldO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmIChpbmRleCA8IGJvdW5kYXJ5Lmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0aWYgKGJvdW5kYXJ5W2luZGV4XSA9PT0gYykge1xuXHRcdFx0XHRcdFx0XHRpZiAoaW5kZXggPT09IDApIHtcblx0XHRcdFx0XHRcdFx0XHRkYXRhQ2FsbGJhY2soJ29uUGFydERhdGEnLCB0cnVlKTtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGluZGV4Kys7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpbmRleCA9IDA7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChpbmRleCA9PT0gYm91bmRhcnkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRpbmRleCsrO1xuXHRcdFx0XHRcdFx0aWYgKGMgPT09IENSKSB7XG5cdFx0XHRcdFx0XHRcdC8vIENSID0gcGFydCBib3VuZGFyeVxuXHRcdFx0XHRcdFx0XHRmbGFncyB8PSBGLlBBUlRfQk9VTkRBUlk7XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGMgPT09IEhZUEhFTikge1xuXHRcdFx0XHRcdFx0XHQvLyBIWVBIRU4gPSBlbmQgYm91bmRhcnlcblx0XHRcdFx0XHRcdFx0ZmxhZ3MgfD0gRi5MQVNUX0JPVU5EQVJZO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0aW5kZXggPSAwO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSBpZiAoaW5kZXggLSAxID09PSBib3VuZGFyeS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdGlmIChmbGFncyAmIEYuUEFSVF9CT1VOREFSWSkge1xuXHRcdFx0XHRcdFx0XHRpbmRleCA9IDA7XG5cdFx0XHRcdFx0XHRcdGlmIChjID09PSBMRikge1xuXHRcdFx0XHRcdFx0XHRcdC8vIHVuc2V0IHRoZSBQQVJUX0JPVU5EQVJZIGZsYWdcblx0XHRcdFx0XHRcdFx0XHRmbGFncyAmPSB+Ri5QQVJUX0JPVU5EQVJZO1xuXHRcdFx0XHRcdFx0XHRcdGNhbGxiYWNrKCdvblBhcnRFbmQnKTtcblx0XHRcdFx0XHRcdFx0XHRjYWxsYmFjaygnb25QYXJ0QmVnaW4nKTtcblx0XHRcdFx0XHRcdFx0XHRzdGF0ZSA9IFMuSEVBREVSX0ZJRUxEX1NUQVJUO1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGZsYWdzICYgRi5MQVNUX0JPVU5EQVJZKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChjID09PSBIWVBIRU4pIHtcblx0XHRcdFx0XHRcdFx0XHRjYWxsYmFjaygnb25QYXJ0RW5kJyk7XG5cdFx0XHRcdFx0XHRcdFx0c3RhdGUgPSBTLkVORDtcblx0XHRcdFx0XHRcdFx0XHRmbGFncyA9IDA7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0aW5kZXggPSAwO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpbmRleCA9IDA7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKGluZGV4ID4gMCkge1xuXHRcdFx0XHRcdFx0Ly8gd2hlbiBtYXRjaGluZyBhIHBvc3NpYmxlIGJvdW5kYXJ5LCBrZWVwIGEgbG9va2JlaGluZCByZWZlcmVuY2Vcblx0XHRcdFx0XHRcdC8vIGluIGNhc2UgaXQgdHVybnMgb3V0IHRvIGJlIGEgZmFsc2UgbGVhZFxuXHRcdFx0XHRcdFx0bG9va2JlaGluZFtpbmRleCAtIDFdID0gYztcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHByZXZpb3VzSW5kZXggPiAwKSB7XG5cdFx0XHRcdFx0XHQvLyBpZiBvdXIgYm91bmRhcnkgdHVybmVkIG91dCB0byBiZSBydWJiaXNoLCB0aGUgY2FwdHVyZWQgbG9va2JlaGluZFxuXHRcdFx0XHRcdFx0Ly8gYmVsb25ncyB0byBwYXJ0RGF0YVxuXHRcdFx0XHRcdFx0Y29uc3QgX2xvb2tiZWhpbmQgPSBuZXcgVWludDhBcnJheShsb29rYmVoaW5kLmJ1ZmZlciwgbG9va2JlaGluZC5ieXRlT2Zmc2V0LCBsb29rYmVoaW5kLmJ5dGVMZW5ndGgpO1xuXHRcdFx0XHRcdFx0Y2FsbGJhY2soJ29uUGFydERhdGEnLCAwLCBwcmV2aW91c0luZGV4LCBfbG9va2JlaGluZCk7XG5cdFx0XHRcdFx0XHRwcmV2aW91c0luZGV4ID0gMDtcblx0XHRcdFx0XHRcdG1hcmsoJ29uUGFydERhdGEnKTtcblxuXHRcdFx0XHRcdFx0Ly8gcmVjb25zaWRlciB0aGUgY3VycmVudCBjaGFyYWN0ZXIgZXZlbiBzbyBpdCBpbnRlcnJ1cHRlZCB0aGUgc2VxdWVuY2Vcblx0XHRcdFx0XHRcdC8vIGl0IGNvdWxkIGJlIHRoZSBiZWdpbm5pbmcgb2YgYSBuZXcgc2VxdWVuY2Vcblx0XHRcdFx0XHRcdGktLTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBTLkVORDpcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgc3RhdGUgZW50ZXJlZDogJHtzdGF0ZX1gKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRkYXRhQ2FsbGJhY2soJ29uSGVhZGVyRmllbGQnKTtcblx0XHRkYXRhQ2FsbGJhY2soJ29uSGVhZGVyVmFsdWUnKTtcblx0XHRkYXRhQ2FsbGJhY2soJ29uUGFydERhdGEnKTtcblxuXHRcdC8vIFVwZGF0ZSBwcm9wZXJ0aWVzIGZvciB0aGUgbmV4dCBjYWxsXG5cdFx0dGhpcy5pbmRleCA9IGluZGV4O1xuXHRcdHRoaXMuc3RhdGUgPSBzdGF0ZTtcblx0XHR0aGlzLmZsYWdzID0gZmxhZ3M7XG5cdH1cblxuXHRlbmQoKSB7XG5cdFx0aWYgKCh0aGlzLnN0YXRlID09PSBTLkhFQURFUl9GSUVMRF9TVEFSVCAmJiB0aGlzLmluZGV4ID09PSAwKSB8fFxuXHRcdFx0KHRoaXMuc3RhdGUgPT09IFMuUEFSVF9EQVRBICYmIHRoaXMuaW5kZXggPT09IHRoaXMuYm91bmRhcnkubGVuZ3RoKSkge1xuXHRcdFx0dGhpcy5vblBhcnRFbmQoKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuc3RhdGUgIT09IFMuRU5EKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ011bHRpcGFydFBhcnNlci5lbmQoKTogc3RyZWFtIGVuZGVkIHVuZXhwZWN0ZWRseScpO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBfZmlsZU5hbWUoaGVhZGVyVmFsdWUpIHtcblx0Ly8gbWF0Y2hlcyBlaXRoZXIgYSBxdW90ZWQtc3RyaW5nIG9yIGEgdG9rZW4gKFJGQyAyNjE2IHNlY3Rpb24gMTkuNS4xKVxuXHRjb25zdCBtID0gaGVhZGVyVmFsdWUubWF0Y2goL1xcYmZpbGVuYW1lPShcIiguKj8pXCJ8KFteKCk8PkAsOzpcXFxcXCIvW1xcXT89e31cXHNcXHRdKykpKCR8O1xccykvaSk7XG5cdGlmICghbSkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IG1hdGNoID0gbVsyXSB8fCBtWzNdIHx8ICcnO1xuXHRsZXQgZmlsZW5hbWUgPSBtYXRjaC5zbGljZShtYXRjaC5sYXN0SW5kZXhPZignXFxcXCcpICsgMSk7XG5cdGZpbGVuYW1lID0gZmlsZW5hbWUucmVwbGFjZSgvJTIyL2csICdcIicpO1xuXHRmaWxlbmFtZSA9IGZpbGVuYW1lLnJlcGxhY2UoLyYjKFxcZHs0fSk7L2csIChtLCBjb2RlKSA9PiB7XG5cdFx0cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSk7XG5cdH0pO1xuXHRyZXR1cm4gZmlsZW5hbWU7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0b0Zvcm1EYXRhKEJvZHksIGN0KSB7XG5cdGlmICghL211bHRpcGFydC9pLnRlc3QoY3QpKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRmFpbGVkIHRvIGZldGNoJyk7XG5cdH1cblxuXHRjb25zdCBtID0gY3QubWF0Y2goL2JvdW5kYXJ5PSg/OlwiKFteXCJdKylcInwoW147XSspKS9pKTtcblxuXHRpZiAoIW0pIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdubyBvciBiYWQgY29udGVudC10eXBlIGhlYWRlciwgbm8gbXVsdGlwYXJ0IGJvdW5kYXJ5Jyk7XG5cdH1cblxuXHRjb25zdCBwYXJzZXIgPSBuZXcgTXVsdGlwYXJ0UGFyc2VyKG1bMV0gfHwgbVsyXSk7XG5cblx0bGV0IGhlYWRlckZpZWxkO1xuXHRsZXQgaGVhZGVyVmFsdWU7XG5cdGxldCBlbnRyeVZhbHVlO1xuXHRsZXQgZW50cnlOYW1lO1xuXHRsZXQgY29udGVudFR5cGU7XG5cdGxldCBmaWxlbmFtZTtcblx0Y29uc3QgZW50cnlDaHVua3MgPSBbXTtcblx0Y29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcblxuXHRjb25zdCBvblBhcnREYXRhID0gdWk4YSA9PiB7XG5cdFx0ZW50cnlWYWx1ZSArPSBkZWNvZGVyLmRlY29kZSh1aThhLCB7c3RyZWFtOiB0cnVlfSk7XG5cdH07XG5cblx0Y29uc3QgYXBwZW5kVG9GaWxlID0gdWk4YSA9PiB7XG5cdFx0ZW50cnlDaHVua3MucHVzaCh1aThhKTtcblx0fTtcblxuXHRjb25zdCBhcHBlbmRGaWxlVG9Gb3JtRGF0YSA9ICgpID0+IHtcblx0XHRjb25zdCBmaWxlID0gbmV3IEZpbGUoZW50cnlDaHVua3MsIGZpbGVuYW1lLCB7dHlwZTogY29udGVudFR5cGV9KTtcblx0XHRmb3JtRGF0YS5hcHBlbmQoZW50cnlOYW1lLCBmaWxlKTtcblx0fTtcblxuXHRjb25zdCBhcHBlbmRFbnRyeVRvRm9ybURhdGEgPSAoKSA9PiB7XG5cdFx0Zm9ybURhdGEuYXBwZW5kKGVudHJ5TmFtZSwgZW50cnlWYWx1ZSk7XG5cdH07XG5cblx0Y29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigndXRmLTgnKTtcblx0ZGVjb2Rlci5kZWNvZGUoKTtcblxuXHRwYXJzZXIub25QYXJ0QmVnaW4gPSBmdW5jdGlvbiAoKSB7XG5cdFx0cGFyc2VyLm9uUGFydERhdGEgPSBvblBhcnREYXRhO1xuXHRcdHBhcnNlci5vblBhcnRFbmQgPSBhcHBlbmRFbnRyeVRvRm9ybURhdGE7XG5cblx0XHRoZWFkZXJGaWVsZCA9ICcnO1xuXHRcdGhlYWRlclZhbHVlID0gJyc7XG5cdFx0ZW50cnlWYWx1ZSA9ICcnO1xuXHRcdGVudHJ5TmFtZSA9ICcnO1xuXHRcdGNvbnRlbnRUeXBlID0gJyc7XG5cdFx0ZmlsZW5hbWUgPSBudWxsO1xuXHRcdGVudHJ5Q2h1bmtzLmxlbmd0aCA9IDA7XG5cdH07XG5cblx0cGFyc2VyLm9uSGVhZGVyRmllbGQgPSBmdW5jdGlvbiAodWk4YSkge1xuXHRcdGhlYWRlckZpZWxkICs9IGRlY29kZXIuZGVjb2RlKHVpOGEsIHtzdHJlYW06IHRydWV9KTtcblx0fTtcblxuXHRwYXJzZXIub25IZWFkZXJWYWx1ZSA9IGZ1bmN0aW9uICh1aThhKSB7XG5cdFx0aGVhZGVyVmFsdWUgKz0gZGVjb2Rlci5kZWNvZGUodWk4YSwge3N0cmVhbTogdHJ1ZX0pO1xuXHR9O1xuXG5cdHBhcnNlci5vbkhlYWRlckVuZCA9IGZ1bmN0aW9uICgpIHtcblx0XHRoZWFkZXJWYWx1ZSArPSBkZWNvZGVyLmRlY29kZSgpO1xuXHRcdGhlYWRlckZpZWxkID0gaGVhZGVyRmllbGQudG9Mb3dlckNhc2UoKTtcblxuXHRcdGlmIChoZWFkZXJGaWVsZCA9PT0gJ2NvbnRlbnQtZGlzcG9zaXRpb24nKSB7XG5cdFx0XHQvLyBtYXRjaGVzIGVpdGhlciBhIHF1b3RlZC1zdHJpbmcgb3IgYSB0b2tlbiAoUkZDIDI2MTYgc2VjdGlvbiAxOS41LjEpXG5cdFx0XHRjb25zdCBtID0gaGVhZGVyVmFsdWUubWF0Y2goL1xcYm5hbWU9KFwiKFteXCJdKilcInwoW14oKTw+QCw7OlxcXFxcIi9bXFxdPz17fVxcc1xcdF0rKSkvaSk7XG5cblx0XHRcdGlmIChtKSB7XG5cdFx0XHRcdGVudHJ5TmFtZSA9IG1bMl0gfHwgbVszXSB8fCAnJztcblx0XHRcdH1cblxuXHRcdFx0ZmlsZW5hbWUgPSBfZmlsZU5hbWUoaGVhZGVyVmFsdWUpO1xuXG5cdFx0XHRpZiAoZmlsZW5hbWUpIHtcblx0XHRcdFx0cGFyc2VyLm9uUGFydERhdGEgPSBhcHBlbmRUb0ZpbGU7XG5cdFx0XHRcdHBhcnNlci5vblBhcnRFbmQgPSBhcHBlbmRGaWxlVG9Gb3JtRGF0YTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKGhlYWRlckZpZWxkID09PSAnY29udGVudC10eXBlJykge1xuXHRcdFx0Y29udGVudFR5cGUgPSBoZWFkZXJWYWx1ZTtcblx0XHR9XG5cblx0XHRoZWFkZXJWYWx1ZSA9ICcnO1xuXHRcdGhlYWRlckZpZWxkID0gJyc7XG5cdH07XG5cblx0Zm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBCb2R5KSB7XG5cdFx0cGFyc2VyLndyaXRlKGNodW5rKTtcblx0fVxuXG5cdHBhcnNlci5lbmQoKTtcblxuXHRyZXR1cm4gZm9ybURhdGE7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
File without changes
@@ -1,2 +0,0 @@
1
- "use strict";
2
- //# sourceMappingURL=transactions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transactions.js","sourceRoot":"","sources":["../../../src/tools/transactions/transactions.ts"],"names":[],"mappings":""}