tedious 19.0.0 → 19.0.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 (219) hide show
  1. package/README.md +1 -1
  2. package/lib/all-headers.js +1 -1
  3. package/lib/all-headers.js.map +1 -1
  4. package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js +1 -1
  5. package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js.map +1 -1
  6. package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js +2 -2
  7. package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js.map +1 -1
  8. package/lib/always-encrypted/cek-entry.js +1 -1
  9. package/lib/always-encrypted/cek-entry.js.map +1 -1
  10. package/lib/always-encrypted/get-parameter-encryption-metadata.js +2 -2
  11. package/lib/always-encrypted/get-parameter-encryption-metadata.js.map +1 -1
  12. package/lib/always-encrypted/key-crypto.js +1 -1
  13. package/lib/always-encrypted/key-crypto.js.map +1 -1
  14. package/lib/always-encrypted/keystore-provider-azure-key-vault.js +1 -1
  15. package/lib/always-encrypted/keystore-provider-azure-key-vault.js.map +1 -1
  16. package/lib/always-encrypted/symmetric-key-cache.js +2 -2
  17. package/lib/always-encrypted/symmetric-key-cache.js.map +1 -1
  18. package/lib/always-encrypted/symmetric-key.js +1 -1
  19. package/lib/always-encrypted/symmetric-key.js.map +1 -1
  20. package/lib/always-encrypted/types.js +1 -1
  21. package/lib/always-encrypted/types.js.map +1 -1
  22. package/lib/always-encrypted/utils.js +1 -1
  23. package/lib/always-encrypted/utils.js.map +1 -1
  24. package/lib/bulk-load-payload.js +1 -1
  25. package/lib/bulk-load-payload.js.map +1 -1
  26. package/lib/bulk-load.js +2 -2
  27. package/lib/bulk-load.js.map +1 -1
  28. package/lib/collation.js +1 -1
  29. package/lib/collation.js.map +1 -1
  30. package/lib/connection.d.ts +44 -50
  31. package/lib/connection.js +579 -580
  32. package/lib/connection.js.map +1 -1
  33. package/lib/connector.js +2 -2
  34. package/lib/connector.js.map +1 -1
  35. package/lib/data-type.js +2 -2
  36. package/lib/data-type.js.map +1 -1
  37. package/lib/data-types/bigint.js +2 -2
  38. package/lib/data-types/bigint.js.map +1 -1
  39. package/lib/data-types/binary.js +1 -1
  40. package/lib/data-types/binary.js.map +1 -1
  41. package/lib/data-types/bit.js +2 -2
  42. package/lib/data-types/bit.js.map +1 -1
  43. package/lib/data-types/bitn.js +1 -1
  44. package/lib/data-types/bitn.js.map +1 -1
  45. package/lib/data-types/char.js +2 -2
  46. package/lib/data-types/char.js.map +1 -1
  47. package/lib/data-types/date.js +1 -1
  48. package/lib/data-types/date.js.map +1 -1
  49. package/lib/data-types/datetime.js +2 -2
  50. package/lib/data-types/datetime.js.map +1 -1
  51. package/lib/data-types/datetime2.js +2 -2
  52. package/lib/data-types/datetime2.js.map +1 -1
  53. package/lib/data-types/datetimen.js +1 -1
  54. package/lib/data-types/datetimen.js.map +1 -1
  55. package/lib/data-types/datetimeoffset.js +2 -2
  56. package/lib/data-types/datetimeoffset.js.map +1 -1
  57. package/lib/data-types/decimal.js +2 -2
  58. package/lib/data-types/decimal.js.map +1 -1
  59. package/lib/data-types/decimaln.js +1 -1
  60. package/lib/data-types/decimaln.js.map +1 -1
  61. package/lib/data-types/float.js +2 -2
  62. package/lib/data-types/float.js.map +1 -1
  63. package/lib/data-types/floatn.js +1 -1
  64. package/lib/data-types/floatn.js.map +1 -1
  65. package/lib/data-types/image.js +1 -1
  66. package/lib/data-types/image.js.map +1 -1
  67. package/lib/data-types/int.js +2 -2
  68. package/lib/data-types/int.js.map +1 -1
  69. package/lib/data-types/intn.js +1 -1
  70. package/lib/data-types/intn.js.map +1 -1
  71. package/lib/data-types/money.js +2 -2
  72. package/lib/data-types/money.js.map +1 -1
  73. package/lib/data-types/moneyn.js +1 -1
  74. package/lib/data-types/moneyn.js.map +1 -1
  75. package/lib/data-types/nchar.js +1 -1
  76. package/lib/data-types/nchar.js.map +1 -1
  77. package/lib/data-types/ntext.js +1 -1
  78. package/lib/data-types/ntext.js.map +1 -1
  79. package/lib/data-types/null.js +1 -1
  80. package/lib/data-types/null.js.map +1 -1
  81. package/lib/data-types/numeric.js +2 -2
  82. package/lib/data-types/numeric.js.map +1 -1
  83. package/lib/data-types/numericn.js +1 -1
  84. package/lib/data-types/numericn.js.map +1 -1
  85. package/lib/data-types/nvarchar.js +1 -1
  86. package/lib/data-types/nvarchar.js.map +1 -1
  87. package/lib/data-types/real.js +2 -2
  88. package/lib/data-types/real.js.map +1 -1
  89. package/lib/data-types/smalldatetime.js +2 -2
  90. package/lib/data-types/smalldatetime.js.map +1 -1
  91. package/lib/data-types/smallint.js +2 -2
  92. package/lib/data-types/smallint.js.map +1 -1
  93. package/lib/data-types/smallmoney.js +2 -2
  94. package/lib/data-types/smallmoney.js.map +1 -1
  95. package/lib/data-types/sql-variant.js +1 -1
  96. package/lib/data-types/sql-variant.js.map +1 -1
  97. package/lib/data-types/text.js +2 -2
  98. package/lib/data-types/text.js.map +1 -1
  99. package/lib/data-types/time.js +2 -2
  100. package/lib/data-types/time.js.map +1 -1
  101. package/lib/data-types/tinyint.js +2 -2
  102. package/lib/data-types/tinyint.js.map +1 -1
  103. package/lib/data-types/tvp.js +2 -2
  104. package/lib/data-types/tvp.js.map +1 -1
  105. package/lib/data-types/udt.js +1 -1
  106. package/lib/data-types/udt.js.map +1 -1
  107. package/lib/data-types/uniqueidentifier.js +1 -1
  108. package/lib/data-types/uniqueidentifier.js.map +1 -1
  109. package/lib/data-types/varbinary.js +1 -1
  110. package/lib/data-types/varbinary.js.map +1 -1
  111. package/lib/data-types/varchar.js +2 -2
  112. package/lib/data-types/varchar.js.map +1 -1
  113. package/lib/data-types/xml.js +1 -1
  114. package/lib/data-types/xml.js.map +1 -1
  115. package/lib/debug.js +2 -2
  116. package/lib/debug.js.map +1 -1
  117. package/lib/errors.js +1 -1
  118. package/lib/errors.js.map +1 -1
  119. package/lib/guid-parser.js +1 -1
  120. package/lib/guid-parser.js.map +1 -1
  121. package/lib/incoming-message-stream.js +2 -2
  122. package/lib/incoming-message-stream.js.map +1 -1
  123. package/lib/instance-lookup.js +2 -2
  124. package/lib/instance-lookup.js.map +1 -1
  125. package/lib/library.js +1 -1
  126. package/lib/library.js.map +1 -1
  127. package/lib/login7-payload.js +1 -1
  128. package/lib/login7-payload.js.map +1 -1
  129. package/lib/message-io.js +3 -3
  130. package/lib/message-io.js.map +1 -1
  131. package/lib/message.js +1 -1
  132. package/lib/message.js.map +1 -1
  133. package/lib/metadata-parser.js +1 -1
  134. package/lib/metadata-parser.js.map +1 -1
  135. package/lib/ntlm-payload.js +3 -3
  136. package/lib/ntlm-payload.js.map +1 -1
  137. package/lib/ntlm.js +1 -1
  138. package/lib/ntlm.js.map +1 -1
  139. package/lib/outgoing-message-stream.js +2 -2
  140. package/lib/outgoing-message-stream.js.map +1 -1
  141. package/lib/packet.js +1 -1
  142. package/lib/packet.js.map +1 -1
  143. package/lib/prelogin-payload.js +2 -2
  144. package/lib/prelogin-payload.js.map +1 -1
  145. package/lib/request.js +1 -1
  146. package/lib/request.js.map +1 -1
  147. package/lib/rpcrequest-payload.js +2 -2
  148. package/lib/rpcrequest-payload.js.map +1 -1
  149. package/lib/sender.js +2 -2
  150. package/lib/sender.js.map +1 -1
  151. package/lib/special-stored-procedure.js +1 -1
  152. package/lib/special-stored-procedure.js.map +1 -1
  153. package/lib/sqlbatch-payload.js +2 -2
  154. package/lib/sqlbatch-payload.js.map +1 -1
  155. package/lib/tds-versions.js +1 -1
  156. package/lib/tds-versions.js.map +1 -1
  157. package/lib/tedious.js +2 -2
  158. package/lib/tedious.js.map +1 -1
  159. package/lib/token/colmetadata-token-parser.js +1 -1
  160. package/lib/token/colmetadata-token-parser.js.map +1 -1
  161. package/lib/token/done-token-parser.js +1 -1
  162. package/lib/token/done-token-parser.js.map +1 -1
  163. package/lib/token/env-change-token-parser.js +1 -1
  164. package/lib/token/env-change-token-parser.js.map +1 -1
  165. package/lib/token/feature-ext-ack-parser.js +1 -1
  166. package/lib/token/feature-ext-ack-parser.js.map +1 -1
  167. package/lib/token/fedauth-info-parser.js +1 -1
  168. package/lib/token/fedauth-info-parser.js.map +1 -1
  169. package/lib/token/handler.js +2 -2
  170. package/lib/token/handler.js.map +1 -1
  171. package/lib/token/helpers.js +1 -1
  172. package/lib/token/helpers.js.map +1 -1
  173. package/lib/token/infoerror-token-parser.js +1 -1
  174. package/lib/token/infoerror-token-parser.js.map +1 -1
  175. package/lib/token/loginack-token-parser.js +1 -1
  176. package/lib/token/loginack-token-parser.js.map +1 -1
  177. package/lib/token/nbcrow-token-parser.js +2 -2
  178. package/lib/token/nbcrow-token-parser.js.map +1 -1
  179. package/lib/token/order-token-parser.js +1 -1
  180. package/lib/token/order-token-parser.js.map +1 -1
  181. package/lib/token/returnstatus-token-parser.js +1 -1
  182. package/lib/token/returnstatus-token-parser.js.map +1 -1
  183. package/lib/token/returnvalue-token-parser.js +2 -2
  184. package/lib/token/returnvalue-token-parser.js.map +1 -1
  185. package/lib/token/row-token-parser.js +2 -2
  186. package/lib/token/row-token-parser.js.map +1 -1
  187. package/lib/token/sspi-token-parser.js +1 -1
  188. package/lib/token/sspi-token-parser.js.map +1 -1
  189. package/lib/token/stream-parser.js +2 -2
  190. package/lib/token/stream-parser.js.map +1 -1
  191. package/lib/token/token-stream-parser.js +2 -2
  192. package/lib/token/token-stream-parser.js.map +1 -1
  193. package/lib/token/token.js +1 -1
  194. package/lib/token/token.js.map +1 -1
  195. package/lib/tracking-buffer/writable-tracking-buffer.js +1 -1
  196. package/lib/tracking-buffer/writable-tracking-buffer.js.map +1 -1
  197. package/lib/transaction.js +2 -2
  198. package/lib/transaction.js.map +1 -1
  199. package/lib/transient-error-lookup.js +1 -1
  200. package/lib/transient-error-lookup.js.map +1 -1
  201. package/lib/value-parser.js +2 -2
  202. package/lib/value-parser.js.map +1 -1
  203. package/package.json +18 -19
  204. package/benchmarks/README.md +0 -12
  205. package/benchmarks/bulk-load/iterable.js +0 -61
  206. package/benchmarks/common.js +0 -287
  207. package/benchmarks/connection/open.js +0 -26
  208. package/benchmarks/package-lock.json +0 -21173
  209. package/benchmarks/package.json +0 -11
  210. package/benchmarks/query/call-tvp.js +0 -105
  211. package/benchmarks/query/insert-varbinary.js +0 -46
  212. package/benchmarks/query/select-many-rows.js +0 -63
  213. package/benchmarks/query/select-nvarchar.js +0 -50
  214. package/benchmarks/query/select-varbinary.js +0 -50
  215. package/benchmarks/request/rpcrequest-payload-tvp.js +0 -45
  216. package/benchmarks/request/rpcrequest-payload-varbinary.js +0 -37
  217. package/benchmarks/token-parser/colmetadata-token.js +0 -27
  218. package/benchmarks/token-parser/done-token.js +0 -28
  219. package/benchmarks/token-parser/simple-tokens.js +0 -363
@@ -8,8 +8,8 @@ var _writableTrackingBuffer = _interopRequireDefault(require("./tracking-buffer/
8
8
  var crypto = _interopRequireWildcard(require("crypto"));
9
9
  var _jsMd = _interopRequireDefault(require("js-md4"));
10
10
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
11
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
13
  class NTLMResponsePayload {
14
14
  constructor(loginData) {
15
15
  this.data = this.createResponse(loginData);
@@ -133,4 +133,4 @@ class NTLMResponsePayload {
133
133
  }
134
134
  var _default = exports.default = NTLMResponsePayload;
135
135
  module.exports = NTLMResponsePayload;
136
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiY3J5cHRvIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfanNNZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm9iaiIsIk5UTE1SZXNwb25zZVBheWxvYWQiLCJjb25zdHJ1Y3RvciIsImxvZ2luRGF0YSIsImRhdGEiLCJjcmVhdGVSZXNwb25zZSIsInRvU3RyaW5nIiwiaW5kZW50IiwiY2hhbGxlbmdlIiwiY2xpZW50X25vbmNlIiwiY3JlYXRlQ2xpZW50Tm9uY2UiLCJsbXYybGVuIiwibnRsbXYybGVuIiwiZG9tYWluIiwidXNlcm5hbWUiLCJ1c2VyTmFtZSIsInBhc3N3b3JkIiwibnRsbURhdGEiLCJudGxtcGFja2V0Iiwic2VydmVyX2RhdGEiLCJ0YXJnZXQiLCJzZXJ2ZXJfbm9uY2UiLCJub25jZSIsImJ1ZmZlckxlbmd0aCIsImxlbmd0aCIsIldyaXRhYmxlVHJhY2tpbmdCdWZmZXIiLCJwb3NpdGlvbiIsIndyaXRlU3RyaW5nIiwid3JpdGVVSW50MzJMRSIsImJhc2VJZHgiLCJkbklkeCIsInVuSWR4IiwibDJJZHgiLCJudElkeCIsIndyaXRlVUludDE2TEUiLCJsbXYyRGF0YSIsImxtdjJSZXNwb25zZSIsImNvcHlGcm9tIiwiZ2VuVGltZSIsIkRhdGUiLCJnZXRUaW1lIiwibnRsbURhdGFCdWZmZXIiLCJudGxtdjJSZXNwb25zZSIsInRpbWVzdGFtcCIsImNyZWF0ZVRpbWVzdGFtcCIsIkJ1ZmZlciIsImFsbG9jIiwibmlkeCIsIndyaXRlVUludDgiLCJNYXRoIiwiY2VpbCIsInJhbmRvbSIsInVzZXIiLCJzZXJ2ZXJOb25jZSIsInRhcmdldEluZm8iLCJjbGllbnROb25jZSIsIm15dGltZSIsImhhc2giLCJudHYySGFzaCIsImRhdGFMZW5ndGgiLCJjb3B5IiwiaG1hY01ENSIsInRpbWUiLCJ0ZW50aHNPZkFNaWNyb3NlY29uZCIsIkJpZ0ludCIsImxvIiwiTnVtYmVyIiwiaGkiLCJyZXN1bHQiLCJuZXdoYXNoIiwicmVzcG9uc2UiLCJudEhhc2giLCJpZGVudGl0eSIsImZyb20iLCJ0b1VwcGVyQ2FzZSIsInRleHQiLCJ1bmljb2RlU3RyaW5nIiwibWQ0IiwiYXJyYXlCdWZmZXIiLCJrZXkiLCJjcmVhdGVIbWFjIiwidXBkYXRlIiwiZGlnZXN0IiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vc3JjL250bG0tcGF5bG9hZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgV3JpdGFibGVUcmFja2luZ0J1ZmZlciBmcm9tICcuL3RyYWNraW5nLWJ1ZmZlci93cml0YWJsZS10cmFja2luZy1idWZmZXInO1xuaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgbWQ0IGZyb20gJ2pzLW1kNCc7XG5cbmludGVyZmFjZSBPcHRpb25zIHtcbiAgZG9tYWluOiBzdHJpbmc7XG4gIHVzZXJOYW1lOiBzdHJpbmc7XG4gIHBhc3N3b3JkOiBzdHJpbmc7XG4gIG50bG1wYWNrZXQ6IHtcbiAgICB0YXJnZXQ6IEJ1ZmZlcjtcbiAgICBub25jZTogQnVmZmVyO1xuICB9O1xufVxuXG5jbGFzcyBOVExNUmVzcG9uc2VQYXlsb2FkIHtcbiAgZGVjbGFyZSBkYXRhOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IobG9naW5EYXRhOiBPcHRpb25zKSB7XG4gICAgdGhpcy5kYXRhID0gdGhpcy5jcmVhdGVSZXNwb25zZShsb2dpbkRhdGEpO1xuICB9XG5cbiAgdG9TdHJpbmcoaW5kZW50ID0gJycpIHtcbiAgICByZXR1cm4gaW5kZW50ICsgJ05UTE0gQXV0aCc7XG4gIH1cblxuICBjcmVhdGVSZXNwb25zZShjaGFsbGVuZ2U6IE9wdGlvbnMpIHtcbiAgICBjb25zdCBjbGllbnRfbm9uY2UgPSB0aGlzLmNyZWF0ZUNsaWVudE5vbmNlKCk7XG4gICAgY29uc3QgbG12MmxlbiA9IDI0O1xuICAgIGNvbnN0IG50bG12MmxlbiA9IDE2O1xuICAgIGNvbnN0IGRvbWFpbiA9IGNoYWxsZW5nZS5kb21haW47XG4gICAgY29uc3QgdXNlcm5hbWUgPSBjaGFsbGVuZ2UudXNlck5hbWU7XG4gICAgY29uc3QgcGFzc3dvcmQgPSBjaGFsbGVuZ2UucGFzc3dvcmQ7XG4gICAgY29uc3QgbnRsbURhdGEgPSBjaGFsbGVuZ2UubnRsbXBhY2tldDtcbiAgICBjb25zdCBzZXJ2ZXJfZGF0YSA9IG50bG1EYXRhLnRhcmdldDtcbiAgICBjb25zdCBzZXJ2ZXJfbm9uY2UgPSBudGxtRGF0YS5ub25jZTtcbiAgICBjb25zdCBidWZmZXJMZW5ndGggPSA2NCArIChkb21haW4ubGVuZ3RoICogMikgKyAodXNlcm5hbWUubGVuZ3RoICogMikgKyBsbXYybGVuICsgbnRsbXYybGVuICsgOCArIDggKyA4ICsgNCArIHNlcnZlcl9kYXRhLmxlbmd0aCArIDQ7XG4gICAgY29uc3QgZGF0YSA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKGJ1ZmZlckxlbmd0aCk7XG4gICAgZGF0YS5wb3NpdGlvbiA9IDA7XG4gICAgZGF0YS53cml0ZVN0cmluZygnTlRMTVNTUFxcdTAwMDAnLCAndXRmOCcpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDAzKTtcbiAgICBjb25zdCBiYXNlSWR4ID0gNjQ7XG4gICAgY29uc3QgZG5JZHggPSBiYXNlSWR4O1xuICAgIGNvbnN0IHVuSWR4ID0gZG5JZHggKyBkb21haW4ubGVuZ3RoICogMjtcbiAgICBjb25zdCBsMklkeCA9IHVuSWR4ICsgdXNlcm5hbWUubGVuZ3RoICogMjtcbiAgICBjb25zdCBudElkeCA9IGwySWR4ICsgbG12MmxlbjtcbiAgICBkYXRhLndyaXRlVUludDE2TEUobG12Mmxlbik7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKGxtdjJsZW4pO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRShsMklkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKG50bG12Mmxlbik7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKG50bG12Mmxlbik7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKG50SWR4KTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUoZG9tYWluLmxlbmd0aCAqIDIpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRShkb21haW4ubGVuZ3RoICogMik7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKGRuSWR4KTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUodXNlcm5hbWUubGVuZ3RoICogMik7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKHVzZXJuYW1lLmxlbmd0aCAqIDIpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSh1bklkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKDApO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSgwKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoYmFzZUlkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKDApO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSgwKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoYmFzZUlkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKDB4ODIwMSk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKDB4MDgpO1xuICAgIGRhdGEud3JpdGVTdHJpbmcoZG9tYWluLCAndWNzMicpO1xuICAgIGRhdGEud3JpdGVTdHJpbmcodXNlcm5hbWUsICd1Y3MyJyk7XG4gICAgY29uc3QgbG12MkRhdGEgPSB0aGlzLmxtdjJSZXNwb25zZShkb21haW4sIHVzZXJuYW1lLCBwYXNzd29yZCwgc2VydmVyX25vbmNlLCBjbGllbnRfbm9uY2UpO1xuICAgIGRhdGEuY29weUZyb20obG12MkRhdGEpO1xuICAgIGNvbnN0IGdlblRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICBjb25zdCBudGxtRGF0YUJ1ZmZlciA9IHRoaXMubnRsbXYyUmVzcG9uc2UoZG9tYWluLCB1c2VybmFtZSwgcGFzc3dvcmQsIHNlcnZlcl9ub25jZSwgc2VydmVyX2RhdGEsIGNsaWVudF9ub25jZSwgZ2VuVGltZSk7XG4gICAgZGF0YS5jb3B5RnJvbShudGxtRGF0YUJ1ZmZlcik7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MDEwMSk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MDAwMCk7XG4gICAgY29uc3QgdGltZXN0YW1wID0gdGhpcy5jcmVhdGVUaW1lc3RhbXAoZ2VuVGltZSk7XG4gICAgZGF0YS5jb3B5RnJvbSh0aW1lc3RhbXApO1xuICAgIGRhdGEuY29weUZyb20oY2xpZW50X25vbmNlKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwMDAwKTtcbiAgICBkYXRhLmNvcHlGcm9tKHNlcnZlcl9kYXRhKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwMDAwKTtcbiAgICByZXR1cm4gZGF0YS5kYXRhO1xuICB9XG5cbiAgY3JlYXRlQ2xpZW50Tm9uY2UoKSB7XG4gICAgY29uc3QgY2xpZW50X25vbmNlID0gQnVmZmVyLmFsbG9jKDgsIDApO1xuICAgIGxldCBuaWR4ID0gMDtcbiAgICB3aGlsZSAobmlkeCA8IDgpIHtcbiAgICAgIGNsaWVudF9ub25jZS53cml0ZVVJbnQ4KE1hdGguY2VpbChNYXRoLnJhbmRvbSgpICogMjU1KSwgbmlkeCk7XG4gICAgICBuaWR4Kys7XG4gICAgfVxuICAgIHJldHVybiBjbGllbnRfbm9uY2U7XG4gIH1cblxuICBudGxtdjJSZXNwb25zZShkb21haW46IHN0cmluZywgdXNlcjogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBzZXJ2ZXJOb25jZTogQnVmZmVyLCB0YXJnZXRJbmZvOiBCdWZmZXIsIGNsaWVudE5vbmNlOiBCdWZmZXIsIG15dGltZTogbnVtYmVyKSB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gdGhpcy5jcmVhdGVUaW1lc3RhbXAobXl0aW1lKTtcbiAgICBjb25zdCBoYXNoID0gdGhpcy5udHYySGFzaChkb21haW4sIHVzZXIsIHBhc3N3b3JkKTtcbiAgICBjb25zdCBkYXRhTGVuZ3RoID0gNDAgKyB0YXJnZXRJbmZvLmxlbmd0aDtcbiAgICBjb25zdCBkYXRhID0gQnVmZmVyLmFsbG9jKGRhdGFMZW5ndGgsIDApO1xuICAgIHNlcnZlck5vbmNlLmNvcHkoZGF0YSwgMCwgMCwgOCk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MTAxLCA4KTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwLCAxMik7XG4gICAgdGltZXN0YW1wLmNvcHkoZGF0YSwgMTYsIDAsIDgpO1xuICAgIGNsaWVudE5vbmNlLmNvcHkoZGF0YSwgMjQsIDAsIDgpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDAsIDMyKTtcbiAgICB0YXJnZXRJbmZvLmNvcHkoZGF0YSwgMzYsIDAsIHRhcmdldEluZm8ubGVuZ3RoKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwLCAzNiArIHRhcmdldEluZm8ubGVuZ3RoKTtcbiAgICByZXR1cm4gdGhpcy5obWFjTUQ1KGRhdGEsIGhhc2gpO1xuICB9XG5cbiAgY3JlYXRlVGltZXN0YW1wKHRpbWU6IG51bWJlcikge1xuICAgIGNvbnN0IHRlbnRoc09mQU1pY3Jvc2Vjb25kID0gKEJpZ0ludCh0aW1lKSArIEJpZ0ludCgxMTY0NDQ3MzYwMCkpICogQmlnSW50KDEwMDAwMDAwKTtcblxuICAgIGNvbnN0IGxvID0gTnVtYmVyKHRlbnRoc09mQU1pY3Jvc2Vjb25kICYgQmlnSW50KDB4ZmZmZmZmZmYpKTtcbiAgICBjb25zdCBoaSA9IE51bWJlcigodGVudGhzT2ZBTWljcm9zZWNvbmQgPj4gQmlnSW50KDMyKSkgJiBCaWdJbnQoMHhmZmZmZmZmZikpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gQnVmZmVyLmFsbG9jKDgpO1xuICAgIHJlc3VsdC53cml0ZVVJbnQzMkxFKGxvLCAwKTtcbiAgICByZXN1bHQud3JpdGVVSW50MzJMRShoaSwgNCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGxtdjJSZXNwb25zZShkb21haW46IHN0cmluZywgdXNlcjogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBzZXJ2ZXJOb25jZTogQnVmZmVyLCBjbGllbnROb25jZTogQnVmZmVyKSB7XG4gICAgY29uc3QgaGFzaCA9IHRoaXMubnR2Mkhhc2goZG9tYWluLCB1c2VyLCBwYXNzd29yZCk7XG4gICAgY29uc3QgZGF0YSA9IEJ1ZmZlci5hbGxvYyhzZXJ2ZXJOb25jZS5sZW5ndGggKyBjbGllbnROb25jZS5sZW5ndGgsIDApO1xuXG4gICAgc2VydmVyTm9uY2UuY29weShkYXRhKTtcbiAgICBjbGllbnROb25jZS5jb3B5KGRhdGEsIHNlcnZlck5vbmNlLmxlbmd0aCwgMCwgY2xpZW50Tm9uY2UubGVuZ3RoKTtcblxuICAgIGNvbnN0IG5ld2hhc2ggPSB0aGlzLmhtYWNNRDUoZGF0YSwgaGFzaCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBCdWZmZXIuYWxsb2MobmV3aGFzaC5sZW5ndGggKyBjbGllbnROb25jZS5sZW5ndGgsIDApO1xuXG4gICAgbmV3aGFzaC5jb3B5KHJlc3BvbnNlKTtcbiAgICBjbGllbnROb25jZS5jb3B5KHJlc3BvbnNlLCBuZXdoYXNoLmxlbmd0aCwgMCwgY2xpZW50Tm9uY2UubGVuZ3RoKTtcblxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIG50djJIYXNoKGRvbWFpbjogc3RyaW5nLCB1c2VyOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoYXNoID0gdGhpcy5udEhhc2gocGFzc3dvcmQpO1xuICAgIGNvbnN0IGlkZW50aXR5ID0gQnVmZmVyLmZyb20odXNlci50b1VwcGVyQ2FzZSgpICsgZG9tYWluLnRvVXBwZXJDYXNlKCksICd1Y3MyJyk7XG4gICAgcmV0dXJuIHRoaXMuaG1hY01ENShpZGVudGl0eSwgaGFzaCk7XG4gIH1cblxuICBudEhhc2godGV4dDogc3RyaW5nKSB7XG4gICAgY29uc3QgdW5pY29kZVN0cmluZyA9IEJ1ZmZlci5mcm9tKHRleHQsICd1Y3MyJyk7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKG1kNC5hcnJheUJ1ZmZlcih1bmljb2RlU3RyaW5nKSk7XG4gIH1cblxuICBobWFjTUQ1KGRhdGE6IEJ1ZmZlciwga2V5OiBCdWZmZXIpIHtcbiAgICByZXR1cm4gY3J5cHRvLmNyZWF0ZUhtYWMoJ01ENScsIGtleSkudXBkYXRlKGRhdGEpLmRpZ2VzdCgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE5UTE1SZXNwb25zZVBheWxvYWQ7XG5tb2R1bGUuZXhwb3J0cyA9IE5UTE1SZXNwb25zZVBheWxvYWQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLHVCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxLQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFBeUIsU0FBQUkseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUgsd0JBQUFHLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FBQSxXQUFBSyxPQUFBLEVBQUFMLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEs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
136
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiY3J5cHRvIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfanNNZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIk5UTE1SZXNwb25zZVBheWxvYWQiLCJjb25zdHJ1Y3RvciIsImxvZ2luRGF0YSIsImRhdGEiLCJjcmVhdGVSZXNwb25zZSIsInRvU3RyaW5nIiwiaW5kZW50IiwiY2hhbGxlbmdlIiwiY2xpZW50X25vbmNlIiwiY3JlYXRlQ2xpZW50Tm9uY2UiLCJsbXYybGVuIiwibnRsbXYybGVuIiwiZG9tYWluIiwidXNlcm5hbWUiLCJ1c2VyTmFtZSIsInBhc3N3b3JkIiwibnRsbURhdGEiLCJudGxtcGFja2V0Iiwic2VydmVyX2RhdGEiLCJ0YXJnZXQiLCJzZXJ2ZXJfbm9uY2UiLCJub25jZSIsImJ1ZmZlckxlbmd0aCIsImxlbmd0aCIsIldyaXRhYmxlVHJhY2tpbmdCdWZmZXIiLCJwb3NpdGlvbiIsIndyaXRlU3RyaW5nIiwid3JpdGVVSW50MzJMRSIsImJhc2VJZHgiLCJkbklkeCIsInVuSWR4IiwibDJJZHgiLCJudElkeCIsIndyaXRlVUludDE2TEUiLCJsbXYyRGF0YSIsImxtdjJSZXNwb25zZSIsImNvcHlGcm9tIiwiZ2VuVGltZSIsIkRhdGUiLCJnZXRUaW1lIiwibnRsbURhdGFCdWZmZXIiLCJudGxtdjJSZXNwb25zZSIsInRpbWVzdGFtcCIsImNyZWF0ZVRpbWVzdGFtcCIsIkJ1ZmZlciIsImFsbG9jIiwibmlkeCIsIndyaXRlVUludDgiLCJNYXRoIiwiY2VpbCIsInJhbmRvbSIsInVzZXIiLCJzZXJ2ZXJOb25jZSIsInRhcmdldEluZm8iLCJjbGllbnROb25jZSIsIm15dGltZSIsImhhc2giLCJudHYySGFzaCIsImRhdGFMZW5ndGgiLCJjb3B5IiwiaG1hY01ENSIsInRpbWUiLCJ0ZW50aHNPZkFNaWNyb3NlY29uZCIsIkJpZ0ludCIsImxvIiwiTnVtYmVyIiwiaGkiLCJyZXN1bHQiLCJuZXdoYXNoIiwicmVzcG9uc2UiLCJudEhhc2giLCJpZGVudGl0eSIsImZyb20iLCJ0b1VwcGVyQ2FzZSIsInRleHQiLCJ1bmljb2RlU3RyaW5nIiwibWQ0IiwiYXJyYXlCdWZmZXIiLCJrZXkiLCJjcmVhdGVIbWFjIiwidXBkYXRlIiwiZGlnZXN0IiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vc3JjL250bG0tcGF5bG9hZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgV3JpdGFibGVUcmFja2luZ0J1ZmZlciBmcm9tICcuL3RyYWNraW5nLWJ1ZmZlci93cml0YWJsZS10cmFja2luZy1idWZmZXInO1xuaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgbWQ0IGZyb20gJ2pzLW1kNCc7XG5cbmludGVyZmFjZSBPcHRpb25zIHtcbiAgZG9tYWluOiBzdHJpbmc7XG4gIHVzZXJOYW1lOiBzdHJpbmc7XG4gIHBhc3N3b3JkOiBzdHJpbmc7XG4gIG50bG1wYWNrZXQ6IHtcbiAgICB0YXJnZXQ6IEJ1ZmZlcjtcbiAgICBub25jZTogQnVmZmVyO1xuICB9O1xufVxuXG5jbGFzcyBOVExNUmVzcG9uc2VQYXlsb2FkIHtcbiAgZGVjbGFyZSBkYXRhOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IobG9naW5EYXRhOiBPcHRpb25zKSB7XG4gICAgdGhpcy5kYXRhID0gdGhpcy5jcmVhdGVSZXNwb25zZShsb2dpbkRhdGEpO1xuICB9XG5cbiAgdG9TdHJpbmcoaW5kZW50ID0gJycpIHtcbiAgICByZXR1cm4gaW5kZW50ICsgJ05UTE0gQXV0aCc7XG4gIH1cblxuICBjcmVhdGVSZXNwb25zZShjaGFsbGVuZ2U6IE9wdGlvbnMpIHtcbiAgICBjb25zdCBjbGllbnRfbm9uY2UgPSB0aGlzLmNyZWF0ZUNsaWVudE5vbmNlKCk7XG4gICAgY29uc3QgbG12MmxlbiA9IDI0O1xuICAgIGNvbnN0IG50bG12MmxlbiA9IDE2O1xuICAgIGNvbnN0IGRvbWFpbiA9IGNoYWxsZW5nZS5kb21haW47XG4gICAgY29uc3QgdXNlcm5hbWUgPSBjaGFsbGVuZ2UudXNlck5hbWU7XG4gICAgY29uc3QgcGFzc3dvcmQgPSBjaGFsbGVuZ2UucGFzc3dvcmQ7XG4gICAgY29uc3QgbnRsbURhdGEgPSBjaGFsbGVuZ2UubnRsbXBhY2tldDtcbiAgICBjb25zdCBzZXJ2ZXJfZGF0YSA9IG50bG1EYXRhLnRhcmdldDtcbiAgICBjb25zdCBzZXJ2ZXJfbm9uY2UgPSBudGxtRGF0YS5ub25jZTtcbiAgICBjb25zdCBidWZmZXJMZW5ndGggPSA2NCArIChkb21haW4ubGVuZ3RoICogMikgKyAodXNlcm5hbWUubGVuZ3RoICogMikgKyBsbXYybGVuICsgbnRsbXYybGVuICsgOCArIDggKyA4ICsgNCArIHNlcnZlcl9kYXRhLmxlbmd0aCArIDQ7XG4gICAgY29uc3QgZGF0YSA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKGJ1ZmZlckxlbmd0aCk7XG4gICAgZGF0YS5wb3NpdGlvbiA9IDA7XG4gICAgZGF0YS53cml0ZVN0cmluZygnTlRMTVNTUFxcdTAwMDAnLCAndXRmOCcpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDAzKTtcbiAgICBjb25zdCBiYXNlSWR4ID0gNjQ7XG4gICAgY29uc3QgZG5JZHggPSBiYXNlSWR4O1xuICAgIGNvbnN0IHVuSWR4ID0gZG5JZHggKyBkb21haW4ubGVuZ3RoICogMjtcbiAgICBjb25zdCBsMklkeCA9IHVuSWR4ICsgdXNlcm5hbWUubGVuZ3RoICogMjtcbiAgICBjb25zdCBudElkeCA9IGwySWR4ICsgbG12MmxlbjtcbiAgICBkYXRhLndyaXRlVUludDE2TEUobG12Mmxlbik7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKGxtdjJsZW4pO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRShsMklkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKG50bG12Mmxlbik7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKG50bG12Mmxlbik7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKG50SWR4KTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUoZG9tYWluLmxlbmd0aCAqIDIpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRShkb21haW4ubGVuZ3RoICogMik7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKGRuSWR4KTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUodXNlcm5hbWUubGVuZ3RoICogMik7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKHVzZXJuYW1lLmxlbmd0aCAqIDIpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSh1bklkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKDApO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSgwKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoYmFzZUlkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKDApO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSgwKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoYmFzZUlkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKDB4ODIwMSk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKDB4MDgpO1xuICAgIGRhdGEud3JpdGVTdHJpbmcoZG9tYWluLCAndWNzMicpO1xuICAgIGRhdGEud3JpdGVTdHJpbmcodXNlcm5hbWUsICd1Y3MyJyk7XG4gICAgY29uc3QgbG12MkRhdGEgPSB0aGlzLmxtdjJSZXNwb25zZShkb21haW4sIHVzZXJuYW1lLCBwYXNzd29yZCwgc2VydmVyX25vbmNlLCBjbGllbnRfbm9uY2UpO1xuICAgIGRhdGEuY29weUZyb20obG12MkRhdGEpO1xuICAgIGNvbnN0IGdlblRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICBjb25zdCBudGxtRGF0YUJ1ZmZlciA9IHRoaXMubnRsbXYyUmVzcG9uc2UoZG9tYWluLCB1c2VybmFtZSwgcGFzc3dvcmQsIHNlcnZlcl9ub25jZSwgc2VydmVyX2RhdGEsIGNsaWVudF9ub25jZSwgZ2VuVGltZSk7XG4gICAgZGF0YS5jb3B5RnJvbShudGxtRGF0YUJ1ZmZlcik7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MDEwMSk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MDAwMCk7XG4gICAgY29uc3QgdGltZXN0YW1wID0gdGhpcy5jcmVhdGVUaW1lc3RhbXAoZ2VuVGltZSk7XG4gICAgZGF0YS5jb3B5RnJvbSh0aW1lc3RhbXApO1xuICAgIGRhdGEuY29weUZyb20oY2xpZW50X25vbmNlKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwMDAwKTtcbiAgICBkYXRhLmNvcHlGcm9tKHNlcnZlcl9kYXRhKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwMDAwKTtcbiAgICByZXR1cm4gZGF0YS5kYXRhO1xuICB9XG5cbiAgY3JlYXRlQ2xpZW50Tm9uY2UoKSB7XG4gICAgY29uc3QgY2xpZW50X25vbmNlID0gQnVmZmVyLmFsbG9jKDgsIDApO1xuICAgIGxldCBuaWR4ID0gMDtcbiAgICB3aGlsZSAobmlkeCA8IDgpIHtcbiAgICAgIGNsaWVudF9ub25jZS53cml0ZVVJbnQ4KE1hdGguY2VpbChNYXRoLnJhbmRvbSgpICogMjU1KSwgbmlkeCk7XG4gICAgICBuaWR4Kys7XG4gICAgfVxuICAgIHJldHVybiBjbGllbnRfbm9uY2U7XG4gIH1cblxuICBudGxtdjJSZXNwb25zZShkb21haW46IHN0cmluZywgdXNlcjogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBzZXJ2ZXJOb25jZTogQnVmZmVyLCB0YXJnZXRJbmZvOiBCdWZmZXIsIGNsaWVudE5vbmNlOiBCdWZmZXIsIG15dGltZTogbnVtYmVyKSB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gdGhpcy5jcmVhdGVUaW1lc3RhbXAobXl0aW1lKTtcbiAgICBjb25zdCBoYXNoID0gdGhpcy5udHYySGFzaChkb21haW4sIHVzZXIsIHBhc3N3b3JkKTtcbiAgICBjb25zdCBkYXRhTGVuZ3RoID0gNDAgKyB0YXJnZXRJbmZvLmxlbmd0aDtcbiAgICBjb25zdCBkYXRhID0gQnVmZmVyLmFsbG9jKGRhdGFMZW5ndGgsIDApO1xuICAgIHNlcnZlck5vbmNlLmNvcHkoZGF0YSwgMCwgMCwgOCk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MTAxLCA4KTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwLCAxMik7XG4gICAgdGltZXN0YW1wLmNvcHkoZGF0YSwgMTYsIDAsIDgpO1xuICAgIGNsaWVudE5vbmNlLmNvcHkoZGF0YSwgMjQsIDAsIDgpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDAsIDMyKTtcbiAgICB0YXJnZXRJbmZvLmNvcHkoZGF0YSwgMzYsIDAsIHRhcmdldEluZm8ubGVuZ3RoKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwLCAzNiArIHRhcmdldEluZm8ubGVuZ3RoKTtcbiAgICByZXR1cm4gdGhpcy5obWFjTUQ1KGRhdGEsIGhhc2gpO1xuICB9XG5cbiAgY3JlYXRlVGltZXN0YW1wKHRpbWU6IG51bWJlcikge1xuICAgIGNvbnN0IHRlbnRoc09mQU1pY3Jvc2Vjb25kID0gKEJpZ0ludCh0aW1lKSArIEJpZ0ludCgxMTY0NDQ3MzYwMCkpICogQmlnSW50KDEwMDAwMDAwKTtcblxuICAgIGNvbnN0IGxvID0gTnVtYmVyKHRlbnRoc09mQU1pY3Jvc2Vjb25kICYgQmlnSW50KDB4ZmZmZmZmZmYpKTtcbiAgICBjb25zdCBoaSA9IE51bWJlcigodGVudGhzT2ZBTWljcm9zZWNvbmQgPj4gQmlnSW50KDMyKSkgJiBCaWdJbnQoMHhmZmZmZmZmZikpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gQnVmZmVyLmFsbG9jKDgpO1xuICAgIHJlc3VsdC53cml0ZVVJbnQzMkxFKGxvLCAwKTtcbiAgICByZXN1bHQud3JpdGVVSW50MzJMRShoaSwgNCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGxtdjJSZXNwb25zZShkb21haW46IHN0cmluZywgdXNlcjogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBzZXJ2ZXJOb25jZTogQnVmZmVyLCBjbGllbnROb25jZTogQnVmZmVyKSB7XG4gICAgY29uc3QgaGFzaCA9IHRoaXMubnR2Mkhhc2goZG9tYWluLCB1c2VyLCBwYXNzd29yZCk7XG4gICAgY29uc3QgZGF0YSA9IEJ1ZmZlci5hbGxvYyhzZXJ2ZXJOb25jZS5sZW5ndGggKyBjbGllbnROb25jZS5sZW5ndGgsIDApO1xuXG4gICAgc2VydmVyTm9uY2UuY29weShkYXRhKTtcbiAgICBjbGllbnROb25jZS5jb3B5KGRhdGEsIHNlcnZlck5vbmNlLmxlbmd0aCwgMCwgY2xpZW50Tm9uY2UubGVuZ3RoKTtcblxuICAgIGNvbnN0IG5ld2hhc2ggPSB0aGlzLmhtYWNNRDUoZGF0YSwgaGFzaCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBCdWZmZXIuYWxsb2MobmV3aGFzaC5sZW5ndGggKyBjbGllbnROb25jZS5sZW5ndGgsIDApO1xuXG4gICAgbmV3aGFzaC5jb3B5KHJlc3BvbnNlKTtcbiAgICBjbGllbnROb25jZS5jb3B5KHJlc3BvbnNlLCBuZXdoYXNoLmxlbmd0aCwgMCwgY2xpZW50Tm9uY2UubGVuZ3RoKTtcblxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIG50djJIYXNoKGRvbWFpbjogc3RyaW5nLCB1c2VyOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoYXNoID0gdGhpcy5udEhhc2gocGFzc3dvcmQpO1xuICAgIGNvbnN0IGlkZW50aXR5ID0gQnVmZmVyLmZyb20odXNlci50b1VwcGVyQ2FzZSgpICsgZG9tYWluLnRvVXBwZXJDYXNlKCksICd1Y3MyJyk7XG4gICAgcmV0dXJuIHRoaXMuaG1hY01ENShpZGVudGl0eSwgaGFzaCk7XG4gIH1cblxuICBudEhhc2godGV4dDogc3RyaW5nKSB7XG4gICAgY29uc3QgdW5pY29kZVN0cmluZyA9IEJ1ZmZlci5mcm9tKHRleHQsICd1Y3MyJyk7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKG1kNC5hcnJheUJ1ZmZlcih1bmljb2RlU3RyaW5nKSk7XG4gIH1cblxuICBobWFjTUQ1KGRhdGE6IEJ1ZmZlciwga2V5OiBCdWZmZXIpIHtcbiAgICByZXR1cm4gY3J5cHRvLmNyZWF0ZUhtYWMoJ01ENScsIGtleSkudXBkYXRlKGRhdGEpLmRpZ2VzdCgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE5UTE1SZXNwb25zZVBheWxvYWQ7XG5tb2R1bGUuZXhwb3J0cyA9IE5UTE1SZXNwb25zZVBheWxvYWQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLHVCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxLQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFBeUIsU0FBQUkseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUgsd0JBQUFHLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FBQSxXQUFBSyxPQUFBLEVBQUFMLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENB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
@@ -1 +1 @@
1
- {"version":3,"file":"ntlm-payload.js","names":["_writableTrackingBuffer","_interopRequireDefault","require","crypto","_interopRequireWildcard","_jsMd","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","NTLMResponsePayload","constructor","loginData","data","createResponse","toString","indent","challenge","client_nonce","createClientNonce","lmv2len","ntlmv2len","domain","username","userName","password","ntlmData","ntlmpacket","server_data","target","server_nonce","nonce","bufferLength","length","WritableTrackingBuffer","position","writeString","writeUInt32LE","baseIdx","dnIdx","unIdx","l2Idx","ntIdx","writeUInt16LE","lmv2Data","lmv2Response","copyFrom","genTime","Date","getTime","ntlmDataBuffer","ntlmv2Response","timestamp","createTimestamp","Buffer","alloc","nidx","writeUInt8","Math","ceil","random","user","serverNonce","targetInfo","clientNonce","mytime","hash","ntv2Hash","dataLength","copy","hmacMD5","time","tenthsOfAMicrosecond","BigInt","lo","Number","hi","result","newhash","response","ntHash","identity","from","toUpperCase","text","unicodeString","md4","arrayBuffer","key","createHmac","update","digest","_default","exports","module"],"sources":["../src/ntlm-payload.ts"],"sourcesContent":["import WritableTrackingBuffer from './tracking-buffer/writable-tracking-buffer';\nimport * as crypto from 'crypto';\nimport md4 from 'js-md4';\n\ninterface Options {\n domain: string;\n userName: string;\n password: string;\n ntlmpacket: {\n target: Buffer;\n nonce: Buffer;\n };\n}\n\nclass NTLMResponsePayload {\n declare data: Buffer;\n\n constructor(loginData: Options) {\n this.data = this.createResponse(loginData);\n }\n\n toString(indent = '') {\n return indent + 'NTLM Auth';\n }\n\n createResponse(challenge: Options) {\n const client_nonce = this.createClientNonce();\n const lmv2len = 24;\n const ntlmv2len = 16;\n const domain = challenge.domain;\n const username = challenge.userName;\n const password = challenge.password;\n const ntlmData = challenge.ntlmpacket;\n const server_data = ntlmData.target;\n const server_nonce = ntlmData.nonce;\n const bufferLength = 64 + (domain.length * 2) + (username.length * 2) + lmv2len + ntlmv2len + 8 + 8 + 8 + 4 + server_data.length + 4;\n const data = new WritableTrackingBuffer(bufferLength);\n data.position = 0;\n data.writeString('NTLMSSP\\u0000', 'utf8');\n data.writeUInt32LE(0x03);\n const baseIdx = 64;\n const dnIdx = baseIdx;\n const unIdx = dnIdx + domain.length * 2;\n const l2Idx = unIdx + username.length * 2;\n const ntIdx = l2Idx + lmv2len;\n data.writeUInt16LE(lmv2len);\n data.writeUInt16LE(lmv2len);\n data.writeUInt32LE(l2Idx);\n data.writeUInt16LE(ntlmv2len);\n data.writeUInt16LE(ntlmv2len);\n data.writeUInt32LE(ntIdx);\n data.writeUInt16LE(domain.length * 2);\n data.writeUInt16LE(domain.length * 2);\n data.writeUInt32LE(dnIdx);\n data.writeUInt16LE(username.length * 2);\n data.writeUInt16LE(username.length * 2);\n data.writeUInt32LE(unIdx);\n data.writeUInt16LE(0);\n data.writeUInt16LE(0);\n data.writeUInt32LE(baseIdx);\n data.writeUInt16LE(0);\n data.writeUInt16LE(0);\n data.writeUInt32LE(baseIdx);\n data.writeUInt16LE(0x8201);\n data.writeUInt16LE(0x08);\n data.writeString(domain, 'ucs2');\n data.writeString(username, 'ucs2');\n const lmv2Data = this.lmv2Response(domain, username, password, server_nonce, client_nonce);\n data.copyFrom(lmv2Data);\n const genTime = new Date().getTime();\n const ntlmDataBuffer = this.ntlmv2Response(domain, username, password, server_nonce, server_data, client_nonce, genTime);\n data.copyFrom(ntlmDataBuffer);\n data.writeUInt32LE(0x0101);\n data.writeUInt32LE(0x0000);\n const timestamp = this.createTimestamp(genTime);\n data.copyFrom(timestamp);\n data.copyFrom(client_nonce);\n data.writeUInt32LE(0x0000);\n data.copyFrom(server_data);\n data.writeUInt32LE(0x0000);\n return data.data;\n }\n\n createClientNonce() {\n const client_nonce = Buffer.alloc(8, 0);\n let nidx = 0;\n while (nidx < 8) {\n client_nonce.writeUInt8(Math.ceil(Math.random() * 255), nidx);\n nidx++;\n }\n return client_nonce;\n }\n\n ntlmv2Response(domain: string, user: string, password: string, serverNonce: Buffer, targetInfo: Buffer, clientNonce: Buffer, mytime: number) {\n const timestamp = this.createTimestamp(mytime);\n const hash = this.ntv2Hash(domain, user, password);\n const dataLength = 40 + targetInfo.length;\n const data = Buffer.alloc(dataLength, 0);\n serverNonce.copy(data, 0, 0, 8);\n data.writeUInt32LE(0x101, 8);\n data.writeUInt32LE(0x0, 12);\n timestamp.copy(data, 16, 0, 8);\n clientNonce.copy(data, 24, 0, 8);\n data.writeUInt32LE(0x0, 32);\n targetInfo.copy(data, 36, 0, targetInfo.length);\n data.writeUInt32LE(0x0, 36 + targetInfo.length);\n return this.hmacMD5(data, hash);\n }\n\n createTimestamp(time: number) {\n const tenthsOfAMicrosecond = (BigInt(time) + BigInt(11644473600)) * BigInt(10000000);\n\n const lo = Number(tenthsOfAMicrosecond & BigInt(0xffffffff));\n const hi = Number((tenthsOfAMicrosecond >> BigInt(32)) & BigInt(0xffffffff));\n\n const result = Buffer.alloc(8);\n result.writeUInt32LE(lo, 0);\n result.writeUInt32LE(hi, 4);\n return result;\n }\n\n lmv2Response(domain: string, user: string, password: string, serverNonce: Buffer, clientNonce: Buffer) {\n const hash = this.ntv2Hash(domain, user, password);\n const data = Buffer.alloc(serverNonce.length + clientNonce.length, 0);\n\n serverNonce.copy(data);\n clientNonce.copy(data, serverNonce.length, 0, clientNonce.length);\n\n const newhash = this.hmacMD5(data, hash);\n const response = Buffer.alloc(newhash.length + clientNonce.length, 0);\n\n newhash.copy(response);\n clientNonce.copy(response, newhash.length, 0, clientNonce.length);\n\n return response;\n }\n\n ntv2Hash(domain: string, user: string, password: string) {\n const hash = this.ntHash(password);\n const identity = Buffer.from(user.toUpperCase() + domain.toUpperCase(), 'ucs2');\n return this.hmacMD5(identity, hash);\n }\n\n ntHash(text: string) {\n const unicodeString = Buffer.from(text, 'ucs2');\n return Buffer.from(md4.arrayBuffer(unicodeString));\n }\n\n hmacMD5(data: Buffer, key: Buffer) {\n return crypto.createHmac('MD5', key).update(data).digest();\n }\n}\n\nexport default NTLMResponsePayload;\nmodule.exports = NTLMResponsePayload;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ntlm-payload.js","names":["_writableTrackingBuffer","_interopRequireDefault","require","crypto","_interopRequireWildcard","_jsMd","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","NTLMResponsePayload","constructor","loginData","data","createResponse","toString","indent","challenge","client_nonce","createClientNonce","lmv2len","ntlmv2len","domain","username","userName","password","ntlmData","ntlmpacket","server_data","target","server_nonce","nonce","bufferLength","length","WritableTrackingBuffer","position","writeString","writeUInt32LE","baseIdx","dnIdx","unIdx","l2Idx","ntIdx","writeUInt16LE","lmv2Data","lmv2Response","copyFrom","genTime","Date","getTime","ntlmDataBuffer","ntlmv2Response","timestamp","createTimestamp","Buffer","alloc","nidx","writeUInt8","Math","ceil","random","user","serverNonce","targetInfo","clientNonce","mytime","hash","ntv2Hash","dataLength","copy","hmacMD5","time","tenthsOfAMicrosecond","BigInt","lo","Number","hi","result","newhash","response","ntHash","identity","from","toUpperCase","text","unicodeString","md4","arrayBuffer","key","createHmac","update","digest","_default","exports","module"],"sources":["../src/ntlm-payload.ts"],"sourcesContent":["import WritableTrackingBuffer from './tracking-buffer/writable-tracking-buffer';\nimport * as crypto from 'crypto';\nimport md4 from 'js-md4';\n\ninterface Options {\n domain: string;\n userName: string;\n password: string;\n ntlmpacket: {\n target: Buffer;\n nonce: Buffer;\n };\n}\n\nclass NTLMResponsePayload {\n declare data: Buffer;\n\n constructor(loginData: Options) {\n this.data = this.createResponse(loginData);\n }\n\n toString(indent = '') {\n return indent + 'NTLM Auth';\n }\n\n createResponse(challenge: Options) {\n const client_nonce = this.createClientNonce();\n const lmv2len = 24;\n const ntlmv2len = 16;\n const domain = challenge.domain;\n const username = challenge.userName;\n const password = challenge.password;\n const ntlmData = challenge.ntlmpacket;\n const server_data = ntlmData.target;\n const server_nonce = ntlmData.nonce;\n const bufferLength = 64 + (domain.length * 2) + (username.length * 2) + lmv2len + ntlmv2len + 8 + 8 + 8 + 4 + server_data.length + 4;\n const data = new WritableTrackingBuffer(bufferLength);\n data.position = 0;\n data.writeString('NTLMSSP\\u0000', 'utf8');\n data.writeUInt32LE(0x03);\n const baseIdx = 64;\n const dnIdx = baseIdx;\n const unIdx = dnIdx + domain.length * 2;\n const l2Idx = unIdx + username.length * 2;\n const ntIdx = l2Idx + lmv2len;\n data.writeUInt16LE(lmv2len);\n data.writeUInt16LE(lmv2len);\n data.writeUInt32LE(l2Idx);\n data.writeUInt16LE(ntlmv2len);\n data.writeUInt16LE(ntlmv2len);\n data.writeUInt32LE(ntIdx);\n data.writeUInt16LE(domain.length * 2);\n data.writeUInt16LE(domain.length * 2);\n data.writeUInt32LE(dnIdx);\n data.writeUInt16LE(username.length * 2);\n data.writeUInt16LE(username.length * 2);\n data.writeUInt32LE(unIdx);\n data.writeUInt16LE(0);\n data.writeUInt16LE(0);\n data.writeUInt32LE(baseIdx);\n data.writeUInt16LE(0);\n data.writeUInt16LE(0);\n data.writeUInt32LE(baseIdx);\n data.writeUInt16LE(0x8201);\n data.writeUInt16LE(0x08);\n data.writeString(domain, 'ucs2');\n data.writeString(username, 'ucs2');\n const lmv2Data = this.lmv2Response(domain, username, password, server_nonce, client_nonce);\n data.copyFrom(lmv2Data);\n const genTime = new Date().getTime();\n const ntlmDataBuffer = this.ntlmv2Response(domain, username, password, server_nonce, server_data, client_nonce, genTime);\n data.copyFrom(ntlmDataBuffer);\n data.writeUInt32LE(0x0101);\n data.writeUInt32LE(0x0000);\n const timestamp = this.createTimestamp(genTime);\n data.copyFrom(timestamp);\n data.copyFrom(client_nonce);\n data.writeUInt32LE(0x0000);\n data.copyFrom(server_data);\n data.writeUInt32LE(0x0000);\n return data.data;\n }\n\n createClientNonce() {\n const client_nonce = Buffer.alloc(8, 0);\n let nidx = 0;\n while (nidx < 8) {\n client_nonce.writeUInt8(Math.ceil(Math.random() * 255), nidx);\n nidx++;\n }\n return client_nonce;\n }\n\n ntlmv2Response(domain: string, user: string, password: string, serverNonce: Buffer, targetInfo: Buffer, clientNonce: Buffer, mytime: number) {\n const timestamp = this.createTimestamp(mytime);\n const hash = this.ntv2Hash(domain, user, password);\n const dataLength = 40 + targetInfo.length;\n const data = Buffer.alloc(dataLength, 0);\n serverNonce.copy(data, 0, 0, 8);\n data.writeUInt32LE(0x101, 8);\n data.writeUInt32LE(0x0, 12);\n timestamp.copy(data, 16, 0, 8);\n clientNonce.copy(data, 24, 0, 8);\n data.writeUInt32LE(0x0, 32);\n targetInfo.copy(data, 36, 0, targetInfo.length);\n data.writeUInt32LE(0x0, 36 + targetInfo.length);\n return this.hmacMD5(data, hash);\n }\n\n createTimestamp(time: number) {\n const tenthsOfAMicrosecond = (BigInt(time) + BigInt(11644473600)) * BigInt(10000000);\n\n const lo = Number(tenthsOfAMicrosecond & BigInt(0xffffffff));\n const hi = Number((tenthsOfAMicrosecond >> BigInt(32)) & BigInt(0xffffffff));\n\n const result = Buffer.alloc(8);\n result.writeUInt32LE(lo, 0);\n result.writeUInt32LE(hi, 4);\n return result;\n }\n\n lmv2Response(domain: string, user: string, password: string, serverNonce: Buffer, clientNonce: Buffer) {\n const hash = this.ntv2Hash(domain, user, password);\n const data = Buffer.alloc(serverNonce.length + clientNonce.length, 0);\n\n serverNonce.copy(data);\n clientNonce.copy(data, serverNonce.length, 0, clientNonce.length);\n\n const newhash = this.hmacMD5(data, hash);\n const response = Buffer.alloc(newhash.length + clientNonce.length, 0);\n\n newhash.copy(response);\n clientNonce.copy(response, newhash.length, 0, clientNonce.length);\n\n return response;\n }\n\n ntv2Hash(domain: string, user: string, password: string) {\n const hash = this.ntHash(password);\n const identity = Buffer.from(user.toUpperCase() + domain.toUpperCase(), 'ucs2');\n return this.hmacMD5(identity, hash);\n }\n\n ntHash(text: string) {\n const unicodeString = Buffer.from(text, 'ucs2');\n return Buffer.from(md4.arrayBuffer(unicodeString));\n }\n\n hmacMD5(data: Buffer, key: Buffer) {\n return crypto.createHmac('MD5', key).update(data).digest();\n }\n}\n\nexport default NTLMResponsePayload;\nmodule.exports = NTLMResponsePayload;\n"],"mappings":"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","ignoreList":[]}
package/lib/ntlm.js CHANGED
@@ -69,4 +69,4 @@ function createNTLMRequest(options) {
69
69
  buffers.push(Buffer.from(domain, 'ascii'));
70
70
  return Buffer.concat(buffers);
71
71
  }
72
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOVExNRmxhZ3MiLCJOVExNX05lZ290aWF0ZVVuaWNvZGUiLCJOVExNX05lZ290aWF0ZU9FTSIsIk5UTE1fUmVxdWVzdFRhcmdldCIsIk5UTE1fVW5rbm93bjkiLCJOVExNX05lZ290aWF0ZVNpZ24iLCJOVExNX05lZ290aWF0ZVNlYWwiLCJOVExNX05lZ290aWF0ZURhdGFncmFtIiwiTlRMTV9OZWdvdGlhdGVMYW5NYW5hZ2VyS2V5IiwiTlRMTV9Vbmtub3duOCIsIk5UTE1fTmVnb3RpYXRlTlRMTSIsIk5UTE1fTmVnb3RpYXRlTlRPbmx5IiwiTlRMTV9Bbm9ueW1vdXMiLCJOVExNX05lZ290aWF0ZU9lbURvbWFpblN1cHBsaWVkIiwiTlRMTV9OZWdvdGlhdGVPZW1Xb3Jrc3RhdGlvblN1cHBsaWVkIiwiTlRMTV9Vbmtub3duNiIsIk5UTE1fTmVnb3RpYXRlQWx3YXlzU2lnbiIsIk5UTE1fVGFyZ2V0VHlwZURvbWFpbiIsIk5UTE1fVGFyZ2V0VHlwZVNlcnZlciIsIk5UTE1fVGFyZ2V0VHlwZVNoYXJlIiwiTlRMTV9OZWdvdGlhdGVFeHRlbmRlZFNlY3VyaXR5IiwiTlRMTV9OZWdvdGlhdGVJZGVudGlmeSIsIk5UTE1fVW5rbm93bjUiLCJOVExNX1JlcXVlc3ROb25OVFNlc3Npb25LZXkiLCJOVExNX05lZ290aWF0ZVRhcmdldEluZm8iLCJOVExNX1Vua25vd240IiwiTlRMTV9OZWdvdGlhdGVWZXJzaW9uIiwiTlRMTV9Vbmtub3duMyIsIk5UTE1fVW5rbm93bjIiLCJOVExNX1Vua25vd24xIiwiTlRMTV9OZWdvdGlhdGUxMjgiLCJOVExNX05lZ290aWF0ZUtleUV4Y2hhbmdlIiwiTlRMTV9OZWdvdGlhdGU1NiIsImNyZWF0ZU5UTE1SZXF1ZXN0Iiwib3B0aW9ucyIsImRvbWFpbiIsImVzY2FwZSIsInRvVXBwZXJDYXNlIiwid29ya3N0YXRpb24iLCJ0eXBlMWZsYWdzIiwiZml4ZWREYXRhIiwiQnVmZmVyIiwiYWxsb2MiLCJidWZmZXJzIiwib2Zmc2V0Iiwid3JpdGUiLCJ3cml0ZVVJbnQ4Iiwid3JpdGVVSW50MzJMRSIsIndyaXRlVUludDE2TEUiLCJsZW5ndGgiLCJwdXNoIiwiZnJvbSIsImNvbmNhdCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9udGxtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IE5UTE1GbGFncyA9IHtcbiAgTlRMTV9OZWdvdGlhdGVVbmljb2RlOiAweDAwMDAwMDAxLFxuICBOVExNX05lZ290aWF0ZU9FTTogMHgwMDAwMDAwMixcbiAgTlRMTV9SZXF1ZXN0VGFyZ2V0OiAweDAwMDAwMDA0LFxuICBOVExNX1Vua25vd245OiAweDAwMDAwMDA4LFxuICBOVExNX05lZ290aWF0ZVNpZ246IDB4MDAwMDAwMTAsXG4gIE5UTE1fTmVnb3RpYXRlU2VhbDogMHgwMDAwMDAyMCxcbiAgTlRMTV9OZWdvdGlhdGVEYXRhZ3JhbTogMHgwMDAwMDA0MCxcbiAgTlRMTV9OZWdvdGlhdGVMYW5NYW5hZ2VyS2V5OiAweDAwMDAwMDgwLFxuICBOVExNX1Vua25vd244OiAweDAwMDAwMTAwLFxuICBOVExNX05lZ290aWF0ZU5UTE06IDB4MDAwMDAyMDAsXG4gIE5UTE1fTmVnb3RpYXRlTlRPbmx5OiAweDAwMDAwNDAwLFxuICBOVExNX0Fub255bW91czogMHgwMDAwMDgwMCxcbiAgTlRMTV9OZWdvdGlhdGVPZW1Eb21haW5TdXBwbGllZDogMHgwMDAwMTAwMCxcbiAgTlRMTV9OZWdvdGlhdGVPZW1Xb3Jrc3RhdGlvblN1cHBsaWVkOiAweDAwMDAyMDAwLFxuICBOVExNX1Vua25vd242OiAweDAwMDA0MDAwLFxuICBOVExNX05lZ290aWF0ZUFsd2F5c1NpZ246IDB4MDAwMDgwMDAsXG4gIE5UTE1fVGFyZ2V0VHlwZURvbWFpbjogMHgwMDAxMDAwMCxcbiAgTlRMTV9UYXJnZXRUeXBlU2VydmVyOiAweDAwMDIwMDAwLFxuICBOVExNX1RhcmdldFR5cGVTaGFyZTogMHgwMDA0MDAwMCxcbiAgTlRMTV9OZWdvdGlhdGVFeHRlbmRlZFNlY3VyaXR5OiAweDAwMDgwMDAwLFxuICBOVExNX05lZ290aWF0ZUlkZW50aWZ5OiAweDAwMTAwMDAwLFxuICBOVExNX1Vua25vd241OiAweDAwMjAwMDAwLFxuICBOVExNX1JlcXVlc3ROb25OVFNlc3Npb25LZXk6IDB4MDA0MDAwMDAsXG4gIE5UTE1fTmVnb3RpYXRlVGFyZ2V0SW5mbzogMHgwMDgwMDAwMCxcbiAgTlRMTV9Vbmtub3duNDogMHgwMTAwMDAwMCxcbiAgTlRMTV9OZWdvdGlhdGVWZXJzaW9uOiAweDAyMDAwMDAwLFxuICBOVExNX1Vua25vd24zOiAweDA0MDAwMDAwLFxuICBOVExNX1Vua25vd24yOiAweDA4MDAwMDAwLFxuICBOVExNX1Vua25vd24xOiAweDEwMDAwMDAwLFxuICBOVExNX05lZ290aWF0ZTEyODogMHgyMDAwMDAwMCxcbiAgTlRMTV9OZWdvdGlhdGVLZXlFeGNoYW5nZTogMHg0MDAwMDAwMCxcbiAgTlRMTV9OZWdvdGlhdGU1NjogMHg4MDAwMDAwMFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5UTE1SZXF1ZXN0KG9wdGlvbnM6IHsgZG9tYWluOiBzdHJpbmcsIHdvcmtzdGF0aW9uPzogc3RyaW5nIH0pIHtcbiAgY29uc3QgZG9tYWluID0gZXNjYXBlKG9wdGlvbnMuZG9tYWluLnRvVXBwZXJDYXNlKCkpO1xuICBjb25zdCB3b3Jrc3RhdGlvbiA9IG9wdGlvbnMud29ya3N0YXRpb24gPyBlc2NhcGUob3B0aW9ucy53b3Jrc3RhdGlvbi50b1VwcGVyQ2FzZSgpKSA6ICcnO1xuXG4gIGxldCB0eXBlMWZsYWdzID0gTlRMTUZsYWdzLk5UTE1fTmVnb3RpYXRlVW5pY29kZSArIE5UTE1GbGFncy5OVExNX05lZ290aWF0ZU9FTSArIE5UTE1GbGFncy5OVExNX1JlcXVlc3RUYXJnZXQgKyBOVExNRmxhZ3MuTlRMTV9OZWdvdGlhdGVOVExNICsgTlRMTUZsYWdzLk5UTE1fTmVnb3RpYXRlT2VtRG9tYWluU3VwcGxpZWQgKyBOVExNRmxhZ3MuTlRMTV9OZWdvdGlhdGVPZW1Xb3Jrc3RhdGlvblN1cHBsaWVkICsgTlRMTUZsYWdzLk5UTE1fTmVnb3RpYXRlQWx3YXlzU2lnbiArIE5UTE1GbGFncy5OVExNX05lZ290aWF0ZVZlcnNpb24gKyBOVExNRmxhZ3MuTlRMTV9OZWdvdGlhdGVFeHRlbmRlZFNlY3VyaXR5ICsgTlRMTUZsYWdzLk5UTE1fTmVnb3RpYXRlMTI4ICsgTlRMTUZsYWdzLk5UTE1fTmVnb3RpYXRlNTY7XG4gIGlmICh3b3Jrc3RhdGlvbiA9PT0gJycpIHtcbiAgICB0eXBlMWZsYWdzIC09IE5UTE1GbGFncy5OVExNX05lZ290aWF0ZU9lbVdvcmtzdGF0aW9uU3VwcGxpZWQ7XG4gIH1cblxuICBjb25zdCBmaXhlZERhdGEgPSBCdWZmZXIuYWxsb2MoNDApO1xuICBjb25zdCBidWZmZXJzID0gW2ZpeGVkRGF0YV07XG4gIGxldCBvZmZzZXQgPSAwO1xuXG4gIG9mZnNldCArPSBmaXhlZERhdGEud3JpdGUoJ05UTE1TU1AnLCBvZmZzZXQsIDcsICdhc2NpaScpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50OCgwLCBvZmZzZXQpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MzJMRSgxLCBvZmZzZXQpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MzJMRSh0eXBlMWZsYWdzLCBvZmZzZXQpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRShkb21haW4ubGVuZ3RoLCBvZmZzZXQpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRShkb21haW4ubGVuZ3RoLCBvZmZzZXQpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MzJMRShmaXhlZERhdGEubGVuZ3RoICsgd29ya3N0YXRpb24ubGVuZ3RoLCBvZmZzZXQpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRSh3b3Jrc3RhdGlvbi5sZW5ndGgsIG9mZnNldCk7XG4gIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKHdvcmtzdGF0aW9uLmxlbmd0aCwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDMyTEUoZml4ZWREYXRhLmxlbmd0aCwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDgoNSwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDgoMCwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoMjE5NSwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDgoMCwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDgoMCwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDgoMCwgb2Zmc2V0KTtcbiAgZml4ZWREYXRhLndyaXRlVUludDgoMTUsIG9mZnNldCk7XG5cbiAgYnVmZmVycy5wdXNoKEJ1ZmZlci5mcm9tKHdvcmtzdGF0aW9uLCAnYXNjaWknKSk7XG4gIGJ1ZmZlcnMucHVzaChCdWZmZXIuZnJvbShkb21haW4sICdhc2NpaScpKTtcblxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChidWZmZXJzKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsTUFBTUEsU0FBUyxHQUFHO0VBQ2hCQyxxQkFBcUIsRUFBRSxVQUFVO0VBQ2pDQyxpQkFBaUIsRUFBRSxVQUFVO0VBQzdCQyxrQkFBa0IsRUFBRSxVQUFVO0VBQzlCQyxhQUFhLEVBQUUsVUFBVTtFQUN6QkMsa0JBQWtCLEVBQUUsVUFBVTtFQUM5QkMsa0JBQWtCLEVBQUUsVUFBVTtFQUM5QkMsc0JBQXNCLEVBQUUsVUFBVTtFQUNsQ0MsMkJBQTJCLEVBQUUsVUFBVTtFQUN2Q0MsYUFBYSxFQUFFLFVBQVU7RUFDekJDLGtCQUFrQixFQUFFLFVBQVU7RUFDOUJDLG9CQUFvQixFQUFFLFVBQVU7RUFDaENDLGNBQWMsRUFBRSxVQUFVO0VBQzFCQywrQkFBK0IsRUFBRSxVQUFVO0VBQzNDQyxvQ0FBb0MsRUFBRSxVQUFVO0VBQ2hEQyxhQUFhLEVBQUUsVUFBVTtFQUN6QkMsd0JBQXdCLEVBQUUsVUFBVTtFQUNwQ0MscUJBQXFCLEVBQUUsVUFBVTtFQUNqQ0MscUJBQXFCLEVBQUUsVUFBVTtFQUNqQ0Msb0JBQW9CLEVBQUUsVUFBVTtFQUNoQ0MsOEJBQThCLEVBQUUsVUFBVTtFQUMxQ0Msc0JBQXNCLEVBQUUsVUFBVTtFQUNsQ0MsYUFBYSxFQUFFLFVBQVU7RUFDekJDLDJCQUEyQixFQUFFLFVBQVU7RUFDdkNDLHdCQUF3QixFQUFFLFVBQVU7RUFDcENDLGFBQWEsRUFBRSxVQUFVO0VBQ3pCQyxxQkFBcUIsRUFBRSxVQUFVO0VBQ2pDQyxhQUFhLEVBQUUsVUFBVTtFQUN6QkMsYUFBYSxFQUFFLFVBQVU7RUFDekJDLGFBQWEsRUFBRSxVQUFVO0VBQ3pCQyxpQkFBaUIsRUFBRSxVQUFVO0VBQzdCQyx5QkFBeUIsRUFBRSxVQUFVO0VBQ3JDQyxnQkFBZ0IsRUFBRTtBQUNwQixDQUFDO0FBRU0sU0FBU0MsaUJBQWlCQSxDQUFDQyxPQUFpRCxFQUFFO0VBQ25GLE1BQU1DLE1BQU0sR0FBR0MsTUFBTSxDQUFDRixPQUFPLENBQUNDLE1BQU0sQ0FBQ0UsV0FBVyxDQUFDLENBQUMsQ0FBQztFQUNuRCxNQUFNQyxXQUFXLEdBQUdKLE9BQU8sQ0FBQ0ksV0FBVyxHQUFHRixNQUFNLENBQUNGLE9BQU8sQ0FBQ0ksV0FBVyxDQUFDRCxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRTtFQUV4RixJQUFJRSxVQUFVLEdBQUd2QyxTQUFTLENBQUNDLHFCQUFxQixHQUFHRCxTQUFTLENBQUNFLGlCQUFpQixHQUFHRixTQUFTLENBQUNHLGtCQUFrQixHQUFHSCxTQUFTLENBQUNVLGtCQUFrQixHQUFHVixTQUFTLENBQUNhLCtCQUErQixHQUFHYixTQUFTLENBQUNjLG9DQUFvQyxHQUFHZCxTQUFTLENBQUNnQix3QkFBd0IsR0FBR2hCLFNBQVMsQ0FBQzBCLHFCQUFxQixHQUFHMUIsU0FBUyxDQUFDb0IsOEJBQThCLEdBQUdwQixTQUFTLENBQUM4QixpQkFBaUIsR0FBRzlCLFNBQVMsQ0FBQ2dDLGdCQUFnQjtFQUN0WixJQUFJTSxXQUFXLEtBQUssRUFBRSxFQUFFO0lBQ3RCQyxVQUFVLElBQUl2QyxTQUFTLENBQUNjLG9DQUFvQztFQUM5RDtFQUVBLE1BQU0wQixTQUFTLEdBQUdDLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDLEVBQUUsQ0FBQztFQUNsQyxNQUFNQyxPQUFPLEdBQUcsQ0FBQ0gsU0FBUyxDQUFDO0VBQzNCLElBQUlJLE1BQU0sR0FBRyxDQUFDO0VBRWRBLE1BQU0sSUFBSUosU0FBUyxDQUFDSyxLQUFLLENBQUMsU0FBUyxFQUFFRCxNQUFNLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQztFQUN4REEsTUFBTSxHQUFHSixTQUFTLENBQUNNLFVBQVUsQ0FBQyxDQUFDLEVBQUVGLE1BQU0sQ0FBQztFQUN4Q0EsTUFBTSxHQUFHSixTQUFTLENBQUNPLGFBQWEsQ0FBQyxDQUFDLEVBQUVILE1BQU0sQ0FBQztFQUMzQ0EsTUFBTSxHQUFHSixTQUFTLENBQUNPLGFBQWEsQ0FBQ1IsVUFBVSxFQUFFSyxNQUFNLENBQUM7RUFDcERBLE1BQU0sR0FBR0osU0FBUyxDQUFDUSxhQUFhLENBQUNiLE1BQU0sQ0FBQ2MsTUFBTSxFQUFFTCxNQUFNLENBQUM7RUFDdkRBLE1BQU0sR0FBR0osU0FBUyxDQUFDUSxhQUFhLENBQUNiLE1BQU0sQ0FBQ2MsTUFBTSxFQUFFTCxNQUFNLENBQUM7RUFDdkRBLE1BQU0sR0FBR0osU0FBUyxDQUFDTyxhQUFhLENBQUNQLFNBQVMsQ0FBQ1MsTUFBTSxHQUFHWCxXQUFXLENBQUNXLE1BQU0sRUFBRUwsTUFBTSxDQUFDO0VBQy9FQSxNQUFNLEdBQUdKLFNBQVMsQ0FBQ1EsYUFBYSxDQUFDVixXQUFXLENBQUNXLE1BQU0sRUFBRUwsTUFBTSxDQUFDO0VBQzVEQSxNQUFNLEdBQUdKLFNBQVMsQ0FBQ1EsYUFBYSxDQUFDVixXQUFXLENBQUNXLE1BQU0sRUFBRUwsTUFBTSxDQUFDO0VBQzVEQSxNQUFNLEdBQUdKLFNBQVMsQ0FBQ08sYUFBYSxDQUFDUCxTQUFTLENBQUNTLE1BQU0sRUFBRUwsTUFBTSxDQUFDO0VBQzFEQSxNQUFNLEdBQUdKLFNBQVMsQ0FBQ00sVUFBVSxDQUFDLENBQUMsRUFBRUYsTUFBTSxDQUFDO0VBQ3hDQSxNQUFNLEdBQUdKLFNBQVMsQ0FBQ00sVUFBVSxDQUFDLENBQUMsRUFBRUYsTUFBTSxDQUFDO0VBQ3hDQSxNQUFNLEdBQUdKLFNBQVMsQ0FBQ1EsYUFBYSxDQUFDLElBQUksRUFBRUosTUFBTSxDQUFDO0VBQzlDQSxNQUFNLEdBQUdKLFNBQVMsQ0FBQ00sVUFBVSxDQUFDLENBQUMsRUFBRUYsTUFBTSxDQUFDO0VBQ3hDQSxNQUFNLEdBQUdKLFNBQVMsQ0FBQ00sVUFBVSxDQUFDLENBQUMsRUFBRUYsTUFBTSxDQUFDO0VBQ3hDQSxNQUFNLEdBQUdKLFNBQVMsQ0FBQ00sVUFBVSxDQUFDLENBQUMsRUFBRUYsTUFBTSxDQUFDO0VBQ3hDSixTQUFTLENBQUNNLFVBQVUsQ0FBQyxFQUFFLEVBQUVGLE1BQU0sQ0FBQztFQUVoQ0QsT0FBTyxDQUFDTyxJQUFJLENBQUNULE1BQU0sQ0FBQ1UsSUFBSSxDQUFDYixXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7RUFDL0NLLE9BQU8sQ0FBQ08sSUFBSSxDQUFDVCxNQUFNLENBQUNVLElBQUksQ0FBQ2hCLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztFQUUxQyxPQUFPTSxNQUFNLENBQUNXLE1BQU0sQ0FBQ1QsT0FBTyxDQUFDO0FBQy9CIn0=
72
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOVExNRmxhZ3MiLCJOVExNX05lZ290aWF0ZVVuaWNvZGUiLCJOVExNX05lZ290aWF0ZU9FTSIsIk5UTE1fUmVxdWVzdFRhcmdldCIsIk5UTE1fVW5rbm93bjkiLCJOVExNX05lZ290aWF0ZVNpZ24iLCJOVExNX05lZ290aWF0ZVNlYWwiLCJOVExNX05lZ290aWF0ZURhdGFncmFtIiwiTlRMTV9OZWdvdGlhdGVMYW5NYW5hZ2VyS2V5IiwiTlRMTV9Vbmtub3duOCIsIk5UTE1fTmVnb3RpYXRlTlRMTSIsIk5UTE1fTmVnb3RpYXRlTlRPbmx5IiwiTlRMTV9Bbm9ueW1vdXMiLCJOVExNX05lZ290aWF0ZU9lbURvbWFpblN1cHBsaWVkIiwiTlRMTV9OZWdvdGlhdGVPZW1Xb3Jrc3RhdGlvblN1cHBsaWVkIiwiTlRMTV9Vbmtub3duNiIsIk5UTE1fTmVnb3RpYXRlQWx3YXlzU2lnbiIsIk5UTE1fVGFyZ2V0VHlwZURvbWFpbiIsIk5UTE1fVGFyZ2V0VHlwZVNlcnZlciIsIk5UTE1fVGFyZ2V0VHlwZVNoYXJlIiwiTlRMTV9OZWdvdGlhdGVFeHRlbmRlZFNlY3VyaXR5IiwiTlRMTV9OZWdvdGlhdGVJZGVudGlmeSIsIk5UTE1fVW5rbm93bjUiLCJOVExNX1JlcXVlc3ROb25OVFNlc3Npb25LZXkiLCJOVExNX05lZ290aWF0ZVRhcmdldEluZm8iLCJOVExNX1Vua25vd240IiwiTlRMTV9OZWdvdGlhdGVWZXJzaW9uIiwiTlRMTV9Vbmtub3duMyIsIk5UTE1fVW5rbm93bjIiLCJOVExNX1Vua25vd24xIiwiTlRMTV9OZWdvdGlhdGUxMjgiLCJOVExNX05lZ290aWF0ZUtleUV4Y2hhbmdlIiwiTlRMTV9OZWdvdGlhdGU1NiIsImNyZWF0ZU5UTE1SZXF1ZXN0Iiwib3B0aW9ucyIsImRvbWFpbiIsImVzY2FwZSIsInRvVXBwZXJDYXNlIiwid29ya3N0YXRpb24iLCJ0eXBlMWZsYWdzIiwiZml4ZWREYXRhIiwiQnVmZmVyIiwiYWxsb2MiLCJidWZmZXJzIiwib2Zmc2V0Iiwid3JpdGUiLCJ3cml0ZVVJbnQ4Iiwid3JpdGVVSW50MzJMRSIsIndyaXRlVUludDE2TEUiLCJsZW5ndGgiLCJwdXNoIiwiZnJvbSIsImNvbmNhdCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9udGxtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IE5UTE1GbGFncyA9IHtcbiAgTlRMTV9OZWdvdGlhdGVVbmljb2RlOiAweDAwMDAwMDAxLFxuICBOVExNX05lZ290aWF0ZU9FTTogMHgwMDAwMDAwMixcbiAgTlRMTV9SZXF1ZXN0VGFyZ2V0OiAweDAwMDAwMDA0LFxuICBOVExNX1Vua25vd245OiAweDAwMDAwMDA4LFxuICBOVExNX05lZ290aWF0ZVNpZ246IDB4MDAwMDAwMTAsXG4gIE5UTE1fTmVnb3RpYXRlU2VhbDogMHgwMDAwMDAyMCxcbiAgTlRMTV9OZWdvdGlhdGVEYXRhZ3JhbTogMHgwMDAwMDA0MCxcbiAgTlRMTV9OZWdvdGlhdGVMYW5NYW5hZ2VyS2V5OiAweDAwMDAwMDgwLFxuICBOVExNX1Vua25vd244OiAweDAwMDAwMTAwLFxuICBOVExNX05lZ290aWF0ZU5UTE06IDB4MDAwMDAyMDAsXG4gIE5UTE1fTmVnb3RpYXRlTlRPbmx5OiAweDAwMDAwNDAwLFxuICBOVExNX0Fub255bW91czogMHgwMDAwMDgwMCxcbiAgTlRMTV9OZWdvdGlhdGVPZW1Eb21haW5TdXBwbGllZDogMHgwMDAwMTAwMCxcbiAgTlRMTV9OZWdvdGlhdGVPZW1Xb3Jrc3RhdGlvblN1cHBsaWVkOiAweDAwMDAyMDAwLFxuICBOVExNX1Vua25vd242OiAweDAwMDA0MDAwLFxuICBOVExNX05lZ290aWF0ZUFsd2F5c1NpZ246IDB4MDAwMDgwMDAsXG4gIE5UTE1fVGFyZ2V0VHlwZURvbWFpbjogMHgwMDAxMDAwMCxcbiAgTlRMTV9UYXJnZXRUeXBlU2VydmVyOiAweDAwMDIwMDAwLFxuICBOVExNX1RhcmdldFR5cGVTaGFyZTogMHgwMDA0MDAwMCxcbiAgTlRMTV9OZWdvdGlhdGVFeHRlbmRlZFNlY3VyaXR5OiAweDAwMDgwMDAwLFxuICBOVExNX05lZ290aWF0ZUlkZW50aWZ5OiAweDAwMTAwMDAwLFxuICBOVExNX1Vua25vd241OiAweDAwMjAwMDAwLFxuICBOVExNX1JlcXVlc3ROb25OVFNlc3Npb25LZXk6IDB4MDA0MDAwMDAsXG4gIE5UTE1fTmVnb3RpYXRlVGFyZ2V0SW5mbzogMHgwMDgwMDAwMCxcbiAgTlRMTV9Vbmtub3duNDogMHgwMTAwMDAwMCxcbiAgTlRMTV9OZWdvdGlhdGVWZXJzaW9uOiAweDAyMDAwMDAwLFxuICBOVExNX1Vua25vd24zOiAweDA0MDAwMDAwLFxuICBOVExNX1Vua25vd24yOiAweDA4MDAwMDAwLFxuICBOVExNX1Vua25vd24xOiAweDEwMDAwMDAwLFxuICBOVExNX05lZ290aWF0ZTEyODogMHgyMDAwMDAwMCxcbiAgTlRMTV9OZWdvdGlhdGVLZXlFeGNoYW5nZTogMHg0MDAwMDAwMCxcbiAgTlRMTV9OZWdvdGlhdGU1NjogMHg4MDAwMDAwMFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5UTE1SZXF1ZXN0KG9wdGlvbnM6IHsgZG9tYWluOiBzdHJpbmcsIHdvcmtzdGF0aW9uPzogc3RyaW5nIH0pIHtcbiAgY29uc3QgZG9tYWluID0gZXNjYXBlKG9wdGlvbnMuZG9tYWluLnRvVXBwZXJDYXNlKCkpO1xuICBjb25zdCB3b3Jrc3RhdGlvbiA9IG9wdGlvbnMud29ya3N0YXRpb24gPyBlc2NhcGUob3B0aW9ucy53b3Jrc3RhdGlvbi50b1VwcGVyQ2FzZSgpKSA6ICcnO1xuXG4gIGxldCB0eXBlMWZsYWdzID0gTlRMTUZsYWdzLk5UTE1fTmVnb3RpYXRlVW5pY29kZSArIE5UTE1GbGFncy5OVExNX05lZ290aWF0ZU9FTSArIE5UTE1GbGFncy5OVExNX1JlcXVlc3RUYXJnZXQgKyBOVExNRmxhZ3MuTlRMTV9OZWdvdGlhdGVOVExNICsgTlRMTUZsYWdzLk5UTE1fTmVnb3RpYXRlT2VtRG9tYWluU3VwcGxpZWQgKyBOVExNRmxhZ3MuTlRMTV9OZWdvdGlhdGVPZW1Xb3Jrc3RhdGlvblN1cHBsaWVkICsgTlRMTUZsYWdzLk5UTE1fTmVnb3RpYXRlQWx3YXlzU2lnbiArIE5UTE1GbGFncy5OVExNX05lZ290aWF0ZVZlcnNpb24gKyBOVExNRmxhZ3MuTlRMTV9OZWdvdGlhdGVFeHRlbmRlZFNlY3VyaXR5ICsgTlRMTUZsYWdzLk5UTE1fTmVnb3RpYXRlMTI4ICsgTlRMTUZsYWdzLk5UTE1fTmVnb3RpYXRlNTY7XG4gIGlmICh3b3Jrc3RhdGlvbiA9PT0gJycpIHtcbiAgICB0eXBlMWZsYWdzIC09IE5UTE1GbGFncy5OVExNX05lZ290aWF0ZU9lbVdvcmtzdGF0aW9uU3VwcGxpZWQ7XG4gIH1cblxuICBjb25zdCBmaXhlZERhdGEgPSBCdWZmZXIuYWxsb2MoNDApO1xuICBjb25zdCBidWZmZXJzID0gW2ZpeGVkRGF0YV07XG4gIGxldCBvZmZzZXQgPSAwO1xuXG4gIG9mZnNldCArPSBmaXhlZERhdGEud3JpdGUoJ05UTE1TU1AnLCBvZmZzZXQsIDcsICdhc2NpaScpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50OCgwLCBvZmZzZXQpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MzJMRSgxLCBvZmZzZXQpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MzJMRSh0eXBlMWZsYWdzLCBvZmZzZXQpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRShkb21haW4ubGVuZ3RoLCBvZmZzZXQpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRShkb21haW4ubGVuZ3RoLCBvZmZzZXQpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MzJMRShmaXhlZERhdGEubGVuZ3RoICsgd29ya3N0YXRpb24ubGVuZ3RoLCBvZmZzZXQpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRSh3b3Jrc3RhdGlvbi5sZW5ndGgsIG9mZnNldCk7XG4gIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKHdvcmtzdGF0aW9uLmxlbmd0aCwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDMyTEUoZml4ZWREYXRhLmxlbmd0aCwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDgoNSwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDgoMCwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoMjE5NSwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDgoMCwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDgoMCwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDgoMCwgb2Zmc2V0KTtcbiAgZml4ZWREYXRhLndyaXRlVUludDgoMTUsIG9mZnNldCk7XG5cbiAgYnVmZmVycy5wdXNoKEJ1ZmZlci5mcm9tKHdvcmtzdGF0aW9uLCAnYXNjaWknKSk7XG4gIGJ1ZmZlcnMucHVzaChCdWZmZXIuZnJvbShkb21haW4sICdhc2NpaScpKTtcblxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChidWZmZXJzKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsTUFBTUEsU0FBUyxHQUFHO0VBQ2hCQyxxQkFBcUIsRUFBRSxVQUFVO0VBQ2pDQyxpQkFBaUIsRUFBRSxVQUFVO0VBQzdCQyxrQkFBa0IsRUFBRSxVQUFVO0VBQzlCQyxhQUFhLEVBQUUsVUFBVTtFQUN6QkMsa0JBQWtCLEVBQUUsVUFBVTtFQUM5QkMsa0JBQWtCLEVBQUUsVUFBVTtFQUM5QkMsc0JBQXNCLEVBQUUsVUFBVTtFQUNsQ0MsMkJBQTJCLEVBQUUsVUFBVTtFQUN2Q0MsYUFBYSxFQUFFLFVBQVU7RUFDekJDLGtCQUFrQixFQUFFLFVBQVU7RUFDOUJDLG9CQUFvQixFQUFFLFVBQVU7RUFDaENDLGNBQWMsRUFBRSxVQUFVO0VBQzFCQywrQkFBK0IsRUFBRSxVQUFVO0VBQzNDQyxvQ0FB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
package/lib/ntlm.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ntlm.js","names":["NTLMFlags","NTLM_NegotiateUnicode","NTLM_NegotiateOEM","NTLM_RequestTarget","NTLM_Unknown9","NTLM_NegotiateSign","NTLM_NegotiateSeal","NTLM_NegotiateDatagram","NTLM_NegotiateLanManagerKey","NTLM_Unknown8","NTLM_NegotiateNTLM","NTLM_NegotiateNTOnly","NTLM_Anonymous","NTLM_NegotiateOemDomainSupplied","NTLM_NegotiateOemWorkstationSupplied","NTLM_Unknown6","NTLM_NegotiateAlwaysSign","NTLM_TargetTypeDomain","NTLM_TargetTypeServer","NTLM_TargetTypeShare","NTLM_NegotiateExtendedSecurity","NTLM_NegotiateIdentify","NTLM_Unknown5","NTLM_RequestNonNTSessionKey","NTLM_NegotiateTargetInfo","NTLM_Unknown4","NTLM_NegotiateVersion","NTLM_Unknown3","NTLM_Unknown2","NTLM_Unknown1","NTLM_Negotiate128","NTLM_NegotiateKeyExchange","NTLM_Negotiate56","createNTLMRequest","options","domain","escape","toUpperCase","workstation","type1flags","fixedData","Buffer","alloc","buffers","offset","write","writeUInt8","writeUInt32LE","writeUInt16LE","length","push","from","concat"],"sources":["../src/ntlm.ts"],"sourcesContent":["const NTLMFlags = {\n NTLM_NegotiateUnicode: 0x00000001,\n NTLM_NegotiateOEM: 0x00000002,\n NTLM_RequestTarget: 0x00000004,\n NTLM_Unknown9: 0x00000008,\n NTLM_NegotiateSign: 0x00000010,\n NTLM_NegotiateSeal: 0x00000020,\n NTLM_NegotiateDatagram: 0x00000040,\n NTLM_NegotiateLanManagerKey: 0x00000080,\n NTLM_Unknown8: 0x00000100,\n NTLM_NegotiateNTLM: 0x00000200,\n NTLM_NegotiateNTOnly: 0x00000400,\n NTLM_Anonymous: 0x00000800,\n NTLM_NegotiateOemDomainSupplied: 0x00001000,\n NTLM_NegotiateOemWorkstationSupplied: 0x00002000,\n NTLM_Unknown6: 0x00004000,\n NTLM_NegotiateAlwaysSign: 0x00008000,\n NTLM_TargetTypeDomain: 0x00010000,\n NTLM_TargetTypeServer: 0x00020000,\n NTLM_TargetTypeShare: 0x00040000,\n NTLM_NegotiateExtendedSecurity: 0x00080000,\n NTLM_NegotiateIdentify: 0x00100000,\n NTLM_Unknown5: 0x00200000,\n NTLM_RequestNonNTSessionKey: 0x00400000,\n NTLM_NegotiateTargetInfo: 0x00800000,\n NTLM_Unknown4: 0x01000000,\n NTLM_NegotiateVersion: 0x02000000,\n NTLM_Unknown3: 0x04000000,\n NTLM_Unknown2: 0x08000000,\n NTLM_Unknown1: 0x10000000,\n NTLM_Negotiate128: 0x20000000,\n NTLM_NegotiateKeyExchange: 0x40000000,\n NTLM_Negotiate56: 0x80000000\n};\n\nexport function createNTLMRequest(options: { domain: string, workstation?: string }) {\n const domain = escape(options.domain.toUpperCase());\n const workstation = options.workstation ? escape(options.workstation.toUpperCase()) : '';\n\n let type1flags = NTLMFlags.NTLM_NegotiateUnicode + NTLMFlags.NTLM_NegotiateOEM + NTLMFlags.NTLM_RequestTarget + NTLMFlags.NTLM_NegotiateNTLM + NTLMFlags.NTLM_NegotiateOemDomainSupplied + NTLMFlags.NTLM_NegotiateOemWorkstationSupplied + NTLMFlags.NTLM_NegotiateAlwaysSign + NTLMFlags.NTLM_NegotiateVersion + NTLMFlags.NTLM_NegotiateExtendedSecurity + NTLMFlags.NTLM_Negotiate128 + NTLMFlags.NTLM_Negotiate56;\n if (workstation === '') {\n type1flags -= NTLMFlags.NTLM_NegotiateOemWorkstationSupplied;\n }\n\n const fixedData = Buffer.alloc(40);\n const buffers = [fixedData];\n let offset = 0;\n\n offset += fixedData.write('NTLMSSP', offset, 7, 'ascii');\n offset = fixedData.writeUInt8(0, offset);\n offset = fixedData.writeUInt32LE(1, offset);\n offset = fixedData.writeUInt32LE(type1flags, offset);\n offset = fixedData.writeUInt16LE(domain.length, offset);\n offset = fixedData.writeUInt16LE(domain.length, offset);\n offset = fixedData.writeUInt32LE(fixedData.length + workstation.length, offset);\n offset = fixedData.writeUInt16LE(workstation.length, offset);\n offset = fixedData.writeUInt16LE(workstation.length, offset);\n offset = fixedData.writeUInt32LE(fixedData.length, offset);\n offset = fixedData.writeUInt8(5, offset);\n offset = fixedData.writeUInt8(0, offset);\n offset = fixedData.writeUInt16LE(2195, offset);\n offset = fixedData.writeUInt8(0, offset);\n offset = fixedData.writeUInt8(0, offset);\n offset = fixedData.writeUInt8(0, offset);\n fixedData.writeUInt8(15, offset);\n\n buffers.push(Buffer.from(workstation, 'ascii'));\n buffers.push(Buffer.from(domain, 'ascii'));\n\n return Buffer.concat(buffers);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ntlm.js","names":["NTLMFlags","NTLM_NegotiateUnicode","NTLM_NegotiateOEM","NTLM_RequestTarget","NTLM_Unknown9","NTLM_NegotiateSign","NTLM_NegotiateSeal","NTLM_NegotiateDatagram","NTLM_NegotiateLanManagerKey","NTLM_Unknown8","NTLM_NegotiateNTLM","NTLM_NegotiateNTOnly","NTLM_Anonymous","NTLM_NegotiateOemDomainSupplied","NTLM_NegotiateOemWorkstationSupplied","NTLM_Unknown6","NTLM_NegotiateAlwaysSign","NTLM_TargetTypeDomain","NTLM_TargetTypeServer","NTLM_TargetTypeShare","NTLM_NegotiateExtendedSecurity","NTLM_NegotiateIdentify","NTLM_Unknown5","NTLM_RequestNonNTSessionKey","NTLM_NegotiateTargetInfo","NTLM_Unknown4","NTLM_NegotiateVersion","NTLM_Unknown3","NTLM_Unknown2","NTLM_Unknown1","NTLM_Negotiate128","NTLM_NegotiateKeyExchange","NTLM_Negotiate56","createNTLMRequest","options","domain","escape","toUpperCase","workstation","type1flags","fixedData","Buffer","alloc","buffers","offset","write","writeUInt8","writeUInt32LE","writeUInt16LE","length","push","from","concat"],"sources":["../src/ntlm.ts"],"sourcesContent":["const NTLMFlags = {\n NTLM_NegotiateUnicode: 0x00000001,\n NTLM_NegotiateOEM: 0x00000002,\n NTLM_RequestTarget: 0x00000004,\n NTLM_Unknown9: 0x00000008,\n NTLM_NegotiateSign: 0x00000010,\n NTLM_NegotiateSeal: 0x00000020,\n NTLM_NegotiateDatagram: 0x00000040,\n NTLM_NegotiateLanManagerKey: 0x00000080,\n NTLM_Unknown8: 0x00000100,\n NTLM_NegotiateNTLM: 0x00000200,\n NTLM_NegotiateNTOnly: 0x00000400,\n NTLM_Anonymous: 0x00000800,\n NTLM_NegotiateOemDomainSupplied: 0x00001000,\n NTLM_NegotiateOemWorkstationSupplied: 0x00002000,\n NTLM_Unknown6: 0x00004000,\n NTLM_NegotiateAlwaysSign: 0x00008000,\n NTLM_TargetTypeDomain: 0x00010000,\n NTLM_TargetTypeServer: 0x00020000,\n NTLM_TargetTypeShare: 0x00040000,\n NTLM_NegotiateExtendedSecurity: 0x00080000,\n NTLM_NegotiateIdentify: 0x00100000,\n NTLM_Unknown5: 0x00200000,\n NTLM_RequestNonNTSessionKey: 0x00400000,\n NTLM_NegotiateTargetInfo: 0x00800000,\n NTLM_Unknown4: 0x01000000,\n NTLM_NegotiateVersion: 0x02000000,\n NTLM_Unknown3: 0x04000000,\n NTLM_Unknown2: 0x08000000,\n NTLM_Unknown1: 0x10000000,\n NTLM_Negotiate128: 0x20000000,\n NTLM_NegotiateKeyExchange: 0x40000000,\n NTLM_Negotiate56: 0x80000000\n};\n\nexport function createNTLMRequest(options: { domain: string, workstation?: string }) {\n const domain = escape(options.domain.toUpperCase());\n const workstation = options.workstation ? escape(options.workstation.toUpperCase()) : '';\n\n let type1flags = NTLMFlags.NTLM_NegotiateUnicode + NTLMFlags.NTLM_NegotiateOEM + NTLMFlags.NTLM_RequestTarget + NTLMFlags.NTLM_NegotiateNTLM + NTLMFlags.NTLM_NegotiateOemDomainSupplied + NTLMFlags.NTLM_NegotiateOemWorkstationSupplied + NTLMFlags.NTLM_NegotiateAlwaysSign + NTLMFlags.NTLM_NegotiateVersion + NTLMFlags.NTLM_NegotiateExtendedSecurity + NTLMFlags.NTLM_Negotiate128 + NTLMFlags.NTLM_Negotiate56;\n if (workstation === '') {\n type1flags -= NTLMFlags.NTLM_NegotiateOemWorkstationSupplied;\n }\n\n const fixedData = Buffer.alloc(40);\n const buffers = [fixedData];\n let offset = 0;\n\n offset += fixedData.write('NTLMSSP', offset, 7, 'ascii');\n offset = fixedData.writeUInt8(0, offset);\n offset = fixedData.writeUInt32LE(1, offset);\n offset = fixedData.writeUInt32LE(type1flags, offset);\n offset = fixedData.writeUInt16LE(domain.length, offset);\n offset = fixedData.writeUInt16LE(domain.length, offset);\n offset = fixedData.writeUInt32LE(fixedData.length + workstation.length, offset);\n offset = fixedData.writeUInt16LE(workstation.length, offset);\n offset = fixedData.writeUInt16LE(workstation.length, offset);\n offset = fixedData.writeUInt32LE(fixedData.length, offset);\n offset = fixedData.writeUInt8(5, offset);\n offset = fixedData.writeUInt8(0, offset);\n offset = fixedData.writeUInt16LE(2195, offset);\n offset = fixedData.writeUInt8(0, offset);\n offset = fixedData.writeUInt8(0, offset);\n offset = fixedData.writeUInt8(0, offset);\n fixedData.writeUInt8(15, offset);\n\n buffers.push(Buffer.from(workstation, 'ascii'));\n buffers.push(Buffer.from(domain, 'ascii'));\n\n return Buffer.concat(buffers);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -7,7 +7,7 @@ exports.default = void 0;
7
7
  var _bl = _interopRequireDefault(require("bl"));
8
8
  var _stream = require("stream");
9
9
  var _packet = require("./packet");
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
11
  class OutgoingMessageStream extends _stream.Duplex {
12
12
  constructor(debug, {
13
13
  packetSize
@@ -78,4 +78,4 @@ class OutgoingMessageStream extends _stream.Duplex {
78
78
  }
79
79
  var _default = exports.default = OutgoingMessageStream;
80
80
  module.exports = OutgoingMessageStream;
81
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmwiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHJlYW0iLCJfcGFja2V0Iiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJPdXRnb2luZ01lc3NhZ2VTdHJlYW0iLCJEdXBsZXgiLCJjb25zdHJ1Y3RvciIsImRlYnVnIiwicGFja2V0U2l6ZSIsIndyaXRhYmxlT2JqZWN0TW9kZSIsImJsIiwiQnVmZmVyTGlzdCIsIm9uIiwicHVzaCIsIl93cml0ZSIsIm1lc3NhZ2UiLCJfZW5jb2RpbmciLCJjYWxsYmFjayIsImxlbmd0aCIsIkhFQURFUl9MRU5HVEgiLCJwYWNrZXROdW1iZXIiLCJjdXJyZW50TWVzc2FnZSIsImRhdGEiLCJpZ25vcmUiLCJhcHBlbmQiLCJzbGljZSIsImNvbnN1bWUiLCJwYWNrZXQiLCJQYWNrZXQiLCJ0eXBlIiwicGFja2V0SWQiLCJyZXNldENvbm5lY3Rpb24iLCJhZGREYXRhIiwiYnVmZmVyIiwicGF1c2UiLCJsYXN0IiwidW5kZWZpbmVkIiwiX3JlYWQiLCJfc2l6ZSIsInJlc3VtZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9vdXRnb2luZy1tZXNzYWdlLXN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVmZmVyTGlzdCBmcm9tICdibCc7XG5pbXBvcnQgeyBEdXBsZXggfSBmcm9tICdzdHJlYW0nO1xuXG5pbXBvcnQgRGVidWcgZnJvbSAnLi9kZWJ1Zyc7XG5pbXBvcnQgTWVzc2FnZSBmcm9tICcuL21lc3NhZ2UnO1xuaW1wb3J0IHsgUGFja2V0LCBIRUFERVJfTEVOR1RIIH0gZnJvbSAnLi9wYWNrZXQnO1xuXG5jbGFzcyBPdXRnb2luZ01lc3NhZ2VTdHJlYW0gZXh0ZW5kcyBEdXBsZXgge1xuICBkZWNsYXJlIHBhY2tldFNpemU6IG51bWJlcjtcbiAgZGVjbGFyZSBkZWJ1ZzogRGVidWc7XG4gIGRlY2xhcmUgYmw6IGFueTtcblxuICBkZWNsYXJlIGN1cnJlbnRNZXNzYWdlOiBNZXNzYWdlIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKGRlYnVnOiBEZWJ1ZywgeyBwYWNrZXRTaXplIH06IHsgcGFja2V0U2l6ZTogbnVtYmVyIH0pIHtcbiAgICBzdXBlcih7IHdyaXRhYmxlT2JqZWN0TW9kZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMucGFja2V0U2l6ZSA9IHBhY2tldFNpemU7XG4gICAgdGhpcy5kZWJ1ZyA9IGRlYnVnO1xuICAgIHRoaXMuYmwgPSBuZXcgQnVmZmVyTGlzdCgpO1xuXG4gICAgLy8gV2hlbiB0aGUgd3JpdGFibGUgc2lkZSBpcyBlbmRlZCwgcHVzaCBgbnVsbGBcbiAgICAvLyB0byBhbHNvIGVuZCB0aGUgcmVhZGFibGUgc2lkZS5cbiAgICB0aGlzLm9uKCdmaW5pc2gnLCAoKSA9PiB7XG4gICAgICB0aGlzLnB1c2gobnVsbCk7XG4gICAgfSk7XG4gIH1cblxuICBfd3JpdGUobWVzc2FnZTogTWVzc2FnZSwgX2VuY29kaW5nOiBzdHJpbmcsIGNhbGxiYWNrOiAoZXJyPzogRXJyb3IgfCBudWxsKSA9PiB2b2lkKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5wYWNrZXRTaXplIC0gSEVBREVSX0xFTkdUSDtcbiAgICBsZXQgcGFja2V0TnVtYmVyID0gMDtcblxuICAgIHRoaXMuY3VycmVudE1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHRoaXMuY3VycmVudE1lc3NhZ2Uub24oJ2RhdGEnLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICBpZiAobWVzc2FnZS5pZ25vcmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmJsLmFwcGVuZChkYXRhKTtcblxuICAgICAgd2hpbGUgKHRoaXMuYmwubGVuZ3RoID4gbGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJsLnNsaWNlKDAsIGxlbmd0aCk7XG4gICAgICAgIHRoaXMuYmwuY29uc3VtZShsZW5ndGgpO1xuXG4gICAgICAgIC8vIFRPRE86IEdldCByaWQgb2YgY3JlYXRpbmcgYFBhY2tldGAgaW5zdGFuY2VzIGhlcmUuXG4gICAgICAgIGNvbnN0IHBhY2tldCA9IG5ldyBQYWNrZXQobWVzc2FnZS50eXBlKTtcbiAgICAgICAgcGFja2V0LnBhY2tldElkKHBhY2tldE51bWJlciArPSAxKTtcbiAgICAgICAgcGFja2V0LnJlc2V0Q29ubmVjdGlvbihtZXNzYWdlLnJlc2V0Q29ubmVjdGlvbik7XG4gICAgICAgIHBhY2tldC5hZGREYXRhKGRhdGEpO1xuXG4gICAgICAgIHRoaXMuZGVidWcucGFja2V0KCdTZW50JywgcGFja2V0KTtcbiAgICAgICAgdGhpcy5kZWJ1Zy5kYXRhKHBhY2tldCk7XG5cbiAgICAgICAgaWYgKHRoaXMucHVzaChwYWNrZXQuYnVmZmVyKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBtZXNzYWdlLnBhdXNlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY3VycmVudE1lc3NhZ2Uub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJsLnNsaWNlKCk7XG4gICAgICB0aGlzLmJsLmNvbnN1bWUoZGF0YS5sZW5ndGgpO1xuXG4gICAgICAvLyBUT0RPOiBHZXQgcmlkIG9mIGNyZWF0aW5nIGBQYWNrZXRgIGluc3RhbmNlcyBoZXJlLlxuICAgICAgY29uc3QgcGFja2V0ID0gbmV3IFBhY2tldChtZXNzYWdlLnR5cGUpO1xuICAgICAgcGFja2V0LnBhY2tldElkKHBhY2tldE51bWJlciArPSAxKTtcbiAgICAgIHBhY2tldC5yZXNldENvbm5lY3Rpb24obWVzc2FnZS5yZXNldENvbm5lY3Rpb24pO1xuICAgICAgcGFja2V0Lmxhc3QodHJ1ZSk7XG4gICAgICBwYWNrZXQuaWdub3JlKG1lc3NhZ2UuaWdub3JlKTtcbiAgICAgIHBhY2tldC5hZGREYXRhKGRhdGEpO1xuXG4gICAgICB0aGlzLmRlYnVnLnBhY2tldCgnU2VudCcsIHBhY2tldCk7XG4gICAgICB0aGlzLmRlYnVnLmRhdGEocGFja2V0KTtcblxuICAgICAgdGhpcy5wdXNoKHBhY2tldC5idWZmZXIpO1xuXG4gICAgICB0aGlzLmN1cnJlbnRNZXNzYWdlID0gdW5kZWZpbmVkO1xuXG4gICAgICBjYWxsYmFjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgX3JlYWQoX3NpemU6IG51bWJlcikge1xuICAgIC8vIElmIHdlIGRvIGhhdmUgYSBtZXNzYWdlLCByZXN1bWUgaXQgYW5kIGdldCBkYXRhIGZsb3dpbmcuXG4gICAgLy8gT3RoZXJ3aXNlLCB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLlxuICAgIGlmICh0aGlzLmN1cnJlbnRNZXNzYWdlKSB7XG4gICAgICB0aGlzLmN1cnJlbnRNZXNzYWdlLnJlc3VtZSgpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBPdXRnb2luZ01lc3NhZ2VTdHJlYW07XG5tb2R1bGUuZXhwb3J0cyA9IE91dGdvaW5nTWVzc2FnZVN0cmVhbTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsR0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBSUEsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBQWlELFNBQUFELHVCQUFBSSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBRWpELE1BQU1HLHFCQUFxQixTQUFTQyxjQUFNLENBQUM7RUFPekNDLFdBQVdBLENBQUNDLEtBQVksRUFBRTtJQUFFQztFQUFtQyxDQUFDLEVBQUU7SUFDaEUsS0FBSyxDQUFDO01BQUVDLGtCQUFrQixFQUFFO0lBQUssQ0FBQyxDQUFDO0lBRW5DLElBQUksQ0FBQ0QsVUFBVSxHQUFHQSxVQUFVO0lBQzVCLElBQUksQ0FBQ0QsS0FBSyxHQUFHQSxLQUFLO0lBQ2xCLElBQUksQ0FBQ0csRUFBRSxHQUFHLElBQUlDLFdBQVUsQ0FBQyxD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
81
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmwiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHJlYW0iLCJfcGFja2V0IiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiT3V0Z29pbmdNZXNzYWdlU3RyZWFtIiwiRHVwbGV4IiwiY29uc3RydWN0b3IiLCJkZWJ1ZyIsInBhY2tldFNpemUiLCJ3cml0YWJsZU9iamVjdE1vZGUiLCJibCIsIkJ1ZmZlckxpc3QiLCJvbiIsInB1c2giLCJfd3JpdGUiLCJtZXNzYWdlIiwiX2VuY29kaW5nIiwiY2FsbGJhY2siLCJsZW5ndGgiLCJIRUFERVJfTEVOR1RIIiwicGFja2V0TnVtYmVyIiwiY3VycmVudE1lc3NhZ2UiLCJkYXRhIiwiaWdub3JlIiwiYXBwZW5kIiwic2xpY2UiLCJjb25zdW1lIiwicGFja2V0IiwiUGFja2V0IiwidHlwZSIsInBhY2tldElkIiwicmVzZXRDb25uZWN0aW9uIiwiYWRkRGF0YSIsImJ1ZmZlciIsInBhdXNlIiwibGFzdCIsInVuZGVmaW5lZCIsIl9yZWFkIiwiX3NpemUiLCJyZXN1bWUiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi9zcmMvb3V0Z29pbmctbWVzc2FnZS1zdHJlYW0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1ZmZlckxpc3QgZnJvbSAnYmwnO1xuaW1wb3J0IHsgRHVwbGV4IH0gZnJvbSAnc3RyZWFtJztcblxuaW1wb3J0IERlYnVnIGZyb20gJy4vZGVidWcnO1xuaW1wb3J0IE1lc3NhZ2UgZnJvbSAnLi9tZXNzYWdlJztcbmltcG9ydCB7IFBhY2tldCwgSEVBREVSX0xFTkdUSCB9IGZyb20gJy4vcGFja2V0JztcblxuY2xhc3MgT3V0Z29pbmdNZXNzYWdlU3RyZWFtIGV4dGVuZHMgRHVwbGV4IHtcbiAgZGVjbGFyZSBwYWNrZXRTaXplOiBudW1iZXI7XG4gIGRlY2xhcmUgZGVidWc6IERlYnVnO1xuICBkZWNsYXJlIGJsOiBhbnk7XG5cbiAgZGVjbGFyZSBjdXJyZW50TWVzc2FnZTogTWVzc2FnZSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihkZWJ1ZzogRGVidWcsIHsgcGFja2V0U2l6ZSB9OiB7IHBhY2tldFNpemU6IG51bWJlciB9KSB7XG4gICAgc3VwZXIoeyB3cml0YWJsZU9iamVjdE1vZGU6IHRydWUgfSk7XG5cbiAgICB0aGlzLnBhY2tldFNpemUgPSBwYWNrZXRTaXplO1xuICAgIHRoaXMuZGVidWcgPSBkZWJ1ZztcbiAgICB0aGlzLmJsID0gbmV3IEJ1ZmZlckxpc3QoKTtcblxuICAgIC8vIFdoZW4gdGhlIHdyaXRhYmxlIHNpZGUgaXMgZW5kZWQsIHB1c2ggYG51bGxgXG4gICAgLy8gdG8gYWxzbyBlbmQgdGhlIHJlYWRhYmxlIHNpZGUuXG4gICAgdGhpcy5vbignZmluaXNoJywgKCkgPT4ge1xuICAgICAgdGhpcy5wdXNoKG51bGwpO1xuICAgIH0pO1xuICB9XG5cbiAgX3dyaXRlKG1lc3NhZ2U6IE1lc3NhZ2UsIF9lbmNvZGluZzogc3RyaW5nLCBjYWxsYmFjazogKGVycj86IEVycm9yIHwgbnVsbCkgPT4gdm9pZCkge1xuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMucGFja2V0U2l6ZSAtIEhFQURFUl9MRU5HVEg7XG4gICAgbGV0IHBhY2tldE51bWJlciA9IDA7XG5cbiAgICB0aGlzLmN1cnJlbnRNZXNzYWdlID0gbWVzc2FnZTtcbiAgICB0aGlzLmN1cnJlbnRNZXNzYWdlLm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgaWYgKG1lc3NhZ2UuaWdub3JlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5ibC5hcHBlbmQoZGF0YSk7XG5cbiAgICAgIHdoaWxlICh0aGlzLmJsLmxlbmd0aCA+IGxlbmd0aCkge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5ibC5zbGljZSgwLCBsZW5ndGgpO1xuICAgICAgICB0aGlzLmJsLmNvbnN1bWUobGVuZ3RoKTtcblxuICAgICAgICAvLyBUT0RPOiBHZXQgcmlkIG9mIGNyZWF0aW5nIGBQYWNrZXRgIGluc3RhbmNlcyBoZXJlLlxuICAgICAgICBjb25zdCBwYWNrZXQgPSBuZXcgUGFja2V0KG1lc3NhZ2UudHlwZSk7XG4gICAgICAgIHBhY2tldC5wYWNrZXRJZChwYWNrZXROdW1iZXIgKz0gMSk7XG4gICAgICAgIHBhY2tldC5yZXNldENvbm5lY3Rpb24obWVzc2FnZS5yZXNldENvbm5lY3Rpb24pO1xuICAgICAgICBwYWNrZXQuYWRkRGF0YShkYXRhKTtcblxuICAgICAgICB0aGlzLmRlYnVnLnBhY2tldCgnU2VudCcsIHBhY2tldCk7XG4gICAgICAgIHRoaXMuZGVidWcuZGF0YShwYWNrZXQpO1xuXG4gICAgICAgIGlmICh0aGlzLnB1c2gocGFja2V0LmJ1ZmZlcikgPT09IGZhbHNlKSB7XG4gICAgICAgICAgbWVzc2FnZS5wYXVzZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmN1cnJlbnRNZXNzYWdlLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5ibC5zbGljZSgpO1xuICAgICAgdGhpcy5ibC5jb25zdW1lKGRhdGEubGVuZ3RoKTtcblxuICAgICAgLy8gVE9ETzogR2V0IHJpZCBvZiBjcmVhdGluZyBgUGFja2V0YCBpbnN0YW5jZXMgaGVyZS5cbiAgICAgIGNvbnN0IHBhY2tldCA9IG5ldyBQYWNrZXQobWVzc2FnZS50eXBlKTtcbiAgICAgIHBhY2tldC5wYWNrZXRJZChwYWNrZXROdW1iZXIgKz0gMSk7XG4gICAgICBwYWNrZXQucmVzZXRDb25uZWN0aW9uKG1lc3NhZ2UucmVzZXRDb25uZWN0aW9uKTtcbiAgICAgIHBhY2tldC5sYXN0KHRydWUpO1xuICAgICAgcGFja2V0Lmlnbm9yZShtZXNzYWdlLmlnbm9yZSk7XG4gICAgICBwYWNrZXQuYWRkRGF0YShkYXRhKTtcblxuICAgICAgdGhpcy5kZWJ1Zy5wYWNrZXQoJ1NlbnQnLCBwYWNrZXQpO1xuICAgICAgdGhpcy5kZWJ1Zy5kYXRhKHBhY2tldCk7XG5cbiAgICAgIHRoaXMucHVzaChwYWNrZXQuYnVmZmVyKTtcblxuICAgICAgdGhpcy5jdXJyZW50TWVzc2FnZSA9IHVuZGVmaW5lZDtcblxuICAgICAgY2FsbGJhY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIF9yZWFkKF9zaXplOiBudW1iZXIpIHtcbiAgICAvLyBJZiB3ZSBkbyBoYXZlIGEgbWVzc2FnZSwgcmVzdW1lIGl0IGFuZCBnZXQgZGF0YSBmbG93aW5nLlxuICAgIC8vIE90aGVyd2lzZSwgdGhlcmUgaXMgbm90aGluZyB0byBkby5cbiAgICBpZiAodGhpcy5jdXJyZW50TWVzc2FnZSkge1xuICAgICAgdGhpcy5jdXJyZW50TWVzc2FnZS5yZXN1bWUoKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgT3V0Z29pbmdNZXNzYWdlU3RyZWFtO1xubW9kdWxlLmV4cG9ydHMgPSBPdXRnb2luZ01lc3NhZ2VTdHJlYW07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLEdBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUlBLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQUFpRCxTQUFBRCx1QkFBQUksQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUVqRCxNQUFNRyxxQkFBcUIsU0FBU0MsY0FBTSxDQUFDO0VBT3pDQyxXQUFXQSxDQUFDQyxLQUFZLEVBQUU7SUFBRUM7RUFBbUMsQ0FBQyxFQUFFO0lBQ2hFLEtBQUssQ0FBQztNQUFFQyxrQkFBa0IsRUFBRTtJQUFLLENBQUMsQ0FBQztJQUVuQyxJQUFJLENBQUNELFVBQVUsR0FBR0EsVUFBVTtJQUM1QixJQUFJLENBQUNELEtBQUssR0FBR0EsS0FBSztJQUNsQixJQUFJLENBQUNHLEVBQUUsR0FBRyxJQUFJQyxXQUFVLENBQUMsQ0FBQzs7SUFFMUI7SUFDQTtJQUNBLElBQUksQ0FBQ0MsRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNO01BQ3RCLElBQUksQ0FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQztJQUNqQixDQUFDLENBQUM7RUFDSjtFQUVBQyxNQUFNQSxDQUFDQyxPQUFnQixFQUFFQyxTQUFpQixFQUFFQyxRQUFzQyxFQUFFO0lBQ2xGLE1BQU1DLE1BQU0sR0FBRyxJQUFJLENBQUNWLFVBQVUsR0FBR1cscUJBQWE7SUFDOUMsSUFBSUMsWUFBWSxHQUFHLENBQUM7SUFFcEIsSUFBSSxDQUFDQyxjQUFjLEdBQUdOLE9BQU87SUFDN0IsSUFBSSxDQUFDTSxjQUFjLENBQUNULEVBQUUsQ0FBQyxNQUFNLEVBQUdVLElBQVksSUFBSztNQUMvQyxJQUFJUCxPQUFPLENBQUNRLE1BQU0sRUFBRTtRQUNsQjtNQUNGO01BRUEsSUFBSSxDQUFDYixFQUFFLENBQUNjLE1BQU0sQ0FBQ0YsSUFBSSxDQUFDO01BRXBCLE9BQU8sSUFBSSxDQUFDWixFQUFFLENBQUNRLE1BQU0sR0FBR0EsTUFBTSxFQUFFO1FBQzlCLE1BQU1JLElBQUksR0FBRyxJQUFJLENBQUNaLEVBQUUsQ0FBQ2UsS0FBSyxDQUFDLENBQUMsRUFBRVAsTUFBTSxDQUFDO1FBQ3JDLElBQUksQ0FBQ1IsRUFBRSxDQUFDZ0IsT0FBTyxDQUFDUixNQUFNLENBQUM7O1FBRXZCO1FBQ0EsTUFBTVMsTUFBTSxHQUFHLElBQUlDLGNBQU0sQ0FBQ2IsT0FBTyxDQUFDYyxJQUFJLENBQUM7UUFDdkNGLE1BQU0sQ0FBQ0csUUFBUSxDQUFDVixZQUFZLElBQUksQ0FBQyxDQUFDO1FBQ2xDTyxNQUFNLENBQUNJLGVBQWUsQ0FBQ2hCLE9BQU8sQ0FBQ2dCLGVBQWUsQ0FBQztRQUMvQ0osTUFBTSxDQUFDSyxPQUFPLENBQUNWLElBQUksQ0FBQztRQUVwQixJQUFJLENBQUNmLEtBQUssQ0FBQ29CLE1BQU0sQ0FBQyxNQUFNLEVBQUVBLE1BQU0sQ0FBQztRQUNqQyxJQUFJLENBQUNwQixLQUFLLENBQUNlLElBQUksQ0FBQ0ssTUFBTSxDQUFDO1FBRXZCLElBQUksSUFBSSxDQUFDZCxJQUFJLENBQUNjLE1BQU0sQ0FBQ00sTUFBTSxDQUFDLEtBQUssS0FBSyxFQUFFO1VBQ3RDbEIsT0FBTyxDQUFDbUIsS0FBSyxDQUFDLENBQUM7UUFDakI7TUFDRjtJQUNGLENBQUMsQ0FBQztJQUVGLElBQUksQ0FBQ2IsY0FBYyxDQUFDVCxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU07TUFDbEMsTUFBTVUsSUFBSSxHQUFHLElBQUksQ0FBQ1osRUFBRSxDQUFDZSxLQUFLLENBQUMsQ0FBQztNQUM1QixJQUFJLENBQUNmLEVBQUUsQ0FBQ2dCLE9BQU8sQ0FBQ0osSUFBSSxDQUFDSixNQUFNLENBQUM7O01BRTVCO01BQ0EsTUFBTVMsTUFBTSxHQUFHLElBQUlDLGNBQU0sQ0FBQ2IsT0FBTyxDQUFDYyxJQUFJLENBQUM7TUFDdkNGLE1BQU0sQ0FBQ0csUUFBUSxDQUFDVixZQUFZLElBQUksQ0FBQyxDQUFDO01BQ2xDTyxNQUFNLENBQUNJLGVBQWUsQ0FBQ2hCLE9BQU8sQ0FBQ2dCLGVBQWUsQ0FBQztNQUMvQ0osTUFBTSxDQUFDUSxJQUFJLENBQUMsSUFBSSxDQUFDO01BQ2pCUixNQUFNLENBQUNKLE1BQU0sQ0FBQ1IsT0FBTyxDQUFDUSxNQUFNLENBQUM7TUFDN0JJLE1BQU0sQ0FBQ0ssT0FBTyxDQUFDVixJQUFJLENBQUM7TUFFcEIsSUFBSSxDQUFDZixLQUFLLENBQUNvQixNQUFNLENBQUMsTUFBTSxFQUFFQSxNQUFNLENBQUM7TUFDakMsSUFBSSxDQUFDcEIsS0FBSyxDQUFDZSxJQUFJLENBQUNLLE1BQU0sQ0FBQztNQUV2QixJQUFJLENBQUNkLElBQUksQ0FBQ2MsTUFBTSxDQUFDTSxNQUFNLENBQUM7TUFFeEIsSUFBSSxDQUFDWixjQUFjLEdBQUdlLFNBQVM7TUFFL0JuQixRQUFRLENBQUMsQ0FBQztJQUNaLENBQUMsQ0FBQztFQUNKO0VBRUFvQixLQUFLQSxDQUFDQyxLQUFhLEVBQUU7SUFDbkI7SUFDQTtJQUNBLElBQUksSUFBSSxDQUFDakIsY0FBYyxFQUFFO01BQ3ZCLElBQUksQ0FBQ0EsY0FBYyxDQUFDa0IsTUFBTSxDQUFDLENBQUM7SUFDOUI7RUFDRjtBQUNGO0FBQUMsSUFBQUMsUUFBQSxHQUFBQyxPQUFBLENBQUF0QyxPQUFBLEdBRWNDLHFCQUFxQjtBQUNwQ3NDLE1BQU0sQ0FBQ0QsT0FBTyxHQUFHckMscUJBQXFCIiwiaWdub3JlTGlzdCI6W119
@@ -1 +1 @@
1
- {"version":3,"file":"outgoing-message-stream.js","names":["_bl","_interopRequireDefault","require","_stream","_packet","obj","__esModule","default","OutgoingMessageStream","Duplex","constructor","debug","packetSize","writableObjectMode","bl","BufferList","on","push","_write","message","_encoding","callback","length","HEADER_LENGTH","packetNumber","currentMessage","data","ignore","append","slice","consume","packet","Packet","type","packetId","resetConnection","addData","buffer","pause","last","undefined","_read","_size","resume","_default","exports","module"],"sources":["../src/outgoing-message-stream.ts"],"sourcesContent":["import BufferList from 'bl';\nimport { Duplex } from 'stream';\n\nimport Debug from './debug';\nimport Message from './message';\nimport { Packet, HEADER_LENGTH } from './packet';\n\nclass OutgoingMessageStream extends Duplex {\n declare packetSize: number;\n declare debug: Debug;\n declare bl: any;\n\n declare currentMessage: Message | undefined;\n\n constructor(debug: Debug, { packetSize }: { packetSize: number }) {\n super({ writableObjectMode: true });\n\n this.packetSize = packetSize;\n this.debug = debug;\n this.bl = new BufferList();\n\n // When the writable side is ended, push `null`\n // to also end the readable side.\n this.on('finish', () => {\n this.push(null);\n });\n }\n\n _write(message: Message, _encoding: string, callback: (err?: Error | null) => void) {\n const length = this.packetSize - HEADER_LENGTH;\n let packetNumber = 0;\n\n this.currentMessage = message;\n this.currentMessage.on('data', (data: Buffer) => {\n if (message.ignore) {\n return;\n }\n\n this.bl.append(data);\n\n while (this.bl.length > length) {\n const data = this.bl.slice(0, length);\n this.bl.consume(length);\n\n // TODO: Get rid of creating `Packet` instances here.\n const packet = new Packet(message.type);\n packet.packetId(packetNumber += 1);\n packet.resetConnection(message.resetConnection);\n packet.addData(data);\n\n this.debug.packet('Sent', packet);\n this.debug.data(packet);\n\n if (this.push(packet.buffer) === false) {\n message.pause();\n }\n }\n });\n\n this.currentMessage.on('end', () => {\n const data = this.bl.slice();\n this.bl.consume(data.length);\n\n // TODO: Get rid of creating `Packet` instances here.\n const packet = new Packet(message.type);\n packet.packetId(packetNumber += 1);\n packet.resetConnection(message.resetConnection);\n packet.last(true);\n packet.ignore(message.ignore);\n packet.addData(data);\n\n this.debug.packet('Sent', packet);\n this.debug.data(packet);\n\n this.push(packet.buffer);\n\n this.currentMessage = undefined;\n\n callback();\n });\n }\n\n _read(_size: number) {\n // If we do have a message, resume it and get data flowing.\n // Otherwise, there is nothing to do.\n if (this.currentMessage) {\n this.currentMessage.resume();\n }\n }\n}\n\nexport default OutgoingMessageStream;\nmodule.exports = OutgoingMessageStream;\n"],"mappings":"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"}
1
+ {"version":3,"file":"outgoing-message-stream.js","names":["_bl","_interopRequireDefault","require","_stream","_packet","e","__esModule","default","OutgoingMessageStream","Duplex","constructor","debug","packetSize","writableObjectMode","bl","BufferList","on","push","_write","message","_encoding","callback","length","HEADER_LENGTH","packetNumber","currentMessage","data","ignore","append","slice","consume","packet","Packet","type","packetId","resetConnection","addData","buffer","pause","last","undefined","_read","_size","resume","_default","exports","module"],"sources":["../src/outgoing-message-stream.ts"],"sourcesContent":["import BufferList from 'bl';\nimport { Duplex } from 'stream';\n\nimport Debug from './debug';\nimport Message from './message';\nimport { Packet, HEADER_LENGTH } from './packet';\n\nclass OutgoingMessageStream extends Duplex {\n declare packetSize: number;\n declare debug: Debug;\n declare bl: any;\n\n declare currentMessage: Message | undefined;\n\n constructor(debug: Debug, { packetSize }: { packetSize: number }) {\n super({ writableObjectMode: true });\n\n this.packetSize = packetSize;\n this.debug = debug;\n this.bl = new BufferList();\n\n // When the writable side is ended, push `null`\n // to also end the readable side.\n this.on('finish', () => {\n this.push(null);\n });\n }\n\n _write(message: Message, _encoding: string, callback: (err?: Error | null) => void) {\n const length = this.packetSize - HEADER_LENGTH;\n let packetNumber = 0;\n\n this.currentMessage = message;\n this.currentMessage.on('data', (data: Buffer) => {\n if (message.ignore) {\n return;\n }\n\n this.bl.append(data);\n\n while (this.bl.length > length) {\n const data = this.bl.slice(0, length);\n this.bl.consume(length);\n\n // TODO: Get rid of creating `Packet` instances here.\n const packet = new Packet(message.type);\n packet.packetId(packetNumber += 1);\n packet.resetConnection(message.resetConnection);\n packet.addData(data);\n\n this.debug.packet('Sent', packet);\n this.debug.data(packet);\n\n if (this.push(packet.buffer) === false) {\n message.pause();\n }\n }\n });\n\n this.currentMessage.on('end', () => {\n const data = this.bl.slice();\n this.bl.consume(data.length);\n\n // TODO: Get rid of creating `Packet` instances here.\n const packet = new Packet(message.type);\n packet.packetId(packetNumber += 1);\n packet.resetConnection(message.resetConnection);\n packet.last(true);\n packet.ignore(message.ignore);\n packet.addData(data);\n\n this.debug.packet('Sent', packet);\n this.debug.data(packet);\n\n this.push(packet.buffer);\n\n this.currentMessage = undefined;\n\n callback();\n });\n }\n\n _read(_size: number) {\n // If we do have a message, resume it and get data flowing.\n // Otherwise, there is nothing to do.\n if (this.currentMessage) {\n this.currentMessage.resume();\n }\n }\n}\n\nexport default OutgoingMessageStream;\nmodule.exports = OutgoingMessageStream;\n"],"mappings":"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","ignoreList":[]}
package/lib/packet.js CHANGED
@@ -188,4 +188,4 @@ function isPacketComplete(potentialPacketBuffer) {
188
188
  function packetLength(potentialPacketBuffer) {
189
189
  return potentialPacketBuffer.readUInt16BE(OFFSET.Length);
190
190
  }
191
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3ByaW50ZkpzIiwicmVxdWlyZSIsIkhFQURFUl9MRU5HVEgiLCJleHBvcnRzIiwiVFlQRSIsIlNRTF9CQVRDSCIsIlJQQ19SRVFVRVNUIiwiVEFCVUxBUl9SRVNVTFQiLCJBVFRFTlRJT04iLCJCVUxLX0xPQUQiLCJUUkFOU0FDVElPTl9NQU5BR0VSIiwiTE9HSU43IiwiTlRMTUFVVEhfUEtUIiwiUFJFTE9HSU4iLCJGRURBVVRIX1RPS0VOIiwidHlwZUJ5VmFsdWUiLCJuYW1lIiwiU1RBVFVTIiwiTk9STUFMIiwiRU9NIiwiSUdOT1JFIiwiUkVTRVRDT05ORUNUSU9OIiwiUkVTRVRDT05ORUNUSU9OU0tJUFRSQU4iLCJPRkZTRVQiLCJUeXBlIiwiU3RhdHVzIiwiTGVuZ3RoIiwiU1BJRCIsIlBhY2tldElEIiwiV2luZG93IiwiREVGQVVMVF9TUElEIiwiREVGQVVMVF9QQUNLRVRJRCIsIkRFRkFVTFRfV0lORE9XIiwiTkwiLCJQYWNrZXQiLCJjb25zdHJ1Y3RvciIsInR5cGVPckJ1ZmZlciIsIkJ1ZmZlciIsImJ1ZmZlciIsInR5cGUiLCJhbGxvYyIsIndyaXRlVUludDgiLCJ3cml0ZVVJbnQxNkJFIiwic2V0TGVuZ3RoIiwibGVuZ3RoIiwicmVhZFVJbnQxNkJFIiwicmVzZXRDb25uZWN0aW9uIiwicmVzZXQiLCJzdGF0dXMiLCJyZWFkVUludDgiLCJsYXN0IiwiYXJndW1lbnRzIiwiaXNMYXN0IiwiaWdub3JlIiwicGFja2V0SWQiLCJhZGREYXRhIiwiZGF0YSIsImNvbmNhdCIsInNsaWNlIiwic3RhdHVzQXNTdHJpbmciLCJzdGF0dXNlcyIsInZhbHVlIiwicHVzaCIsInVuZGVmaW5lZCIsImpvaW4iLCJ0cmltIiwiaGVhZGVyVG9TdHJpbmciLCJpbmRlbnQiLCJ0ZXh0Iiwic3ByaW50ZiIsImRhdGFUb1N0cmluZyIsIkJZVEVTX1BFUl9HUk9VUCIsIkNIQVJTX1BFUl9HUk9VUCIsIkJZVEVTX1BFUl9MSU5FIiwiZGF0YUR1bXAiLCJjaGFycyIsIm9mZnNldCIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsInRvU3RyaW5nIiwicGF5bG9hZFN0cmluZyIsImlzUGFja2V0Q29tcGxldGUiLCJwb3RlbnRpYWxQYWNrZXRCdWZmZXIiLCJwYWNrZXRMZW5ndGgiXSwic291cmNlcyI6WyIuLi9zcmMvcGFja2V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNwcmludGYgfSBmcm9tICdzcHJpbnRmLWpzJztcblxuZXhwb3J0IGNvbnN0IEhFQURFUl9MRU5HVEggPSA4O1xuXG5leHBvcnQgY29uc3QgVFlQRTogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHtcbiAgU1FMX0JBVENIOiAweDAxLFxuICBSUENfUkVRVUVTVDogMHgwMyxcbiAgVEFCVUxBUl9SRVNVTFQ6IDB4MDQsXG4gIEFUVEVOVElPTjogMHgwNixcbiAgQlVMS19MT0FEOiAweDA3LFxuICBUUkFOU0FDVElPTl9NQU5BR0VSOiAweDBFLFxuICBMT0dJTjc6IDB4MTAsXG4gIE5UTE1BVVRIX1BLVDogMHgxMSxcbiAgUFJFTE9HSU46IDB4MTIsXG4gIEZFREFVVEhfVE9LRU46IDB4MDhcbn07XG5cbmNvbnN0IHR5cGVCeVZhbHVlOiB7IFtrZXk6IG51bWJlcl06IHN0cmluZyB9ID0ge307XG5cbmZvciAoY29uc3QgbmFtZSBpbiBUWVBFKSB7XG4gIHR5cGVCeVZhbHVlW1RZUEVbbmFtZV1dID0gbmFtZTtcbn1cblxuY29uc3QgU1RBVFVTOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge1xuICBOT1JNQUw6IDB4MDAsXG4gIEVPTTogMHgwMSxcbiAgSUdOT1JFOiAweDAyLFxuICBSRVNFVENPTk5FQ1RJT046IDB4MDgsXG4gIFJFU0VUQ09OTkVDVElPTlNLSVBUUkFOOiAweDEwXG59O1xuXG5leHBvcnQgY29uc3QgT0ZGU0VUID0ge1xuICBUeXBlOiAwLFxuICBTdGF0dXM6IDEsXG4gIExlbmd0aDogMixcbiAgU1BJRDogNCxcbiAgUGFja2V0SUQ6IDYsXG4gIFdpbmRvdzogN1xufTtcblxuY29uc3QgREVGQVVMVF9TUElEID0gMDtcblxuY29uc3QgREVGQVVMVF9QQUNLRVRJRCA9IDE7XG5cbmNvbnN0IERFRkFVTFRfV0lORE9XID0gMDtcblxuY29uc3QgTkwgPSAnXFxuJztcblxuZXhwb3J0IGNsYXNzIFBhY2tldCB7XG4gIGRlY2xhcmUgYnVmZmVyOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IodHlwZU9yQnVmZmVyOiBCdWZmZXIgfCBudW1iZXIpIHtcbiAgICBpZiAodHlwZU9yQnVmZmVyIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICB0aGlzLmJ1ZmZlciA9IHR5cGVPckJ1ZmZlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZSA9IHR5cGVPckJ1ZmZlcjtcbiAgICAgIHRoaXMuYnVmZmVyID0gQnVmZmVyLmFsbG9jKEhFQURFUl9MRU5HVEgsIDApO1xuICAgICAgdGhpcy5idWZmZXIud3JpdGVVSW50OCh0eXBlLCBPRkZTRVQuVHlwZSk7XG4gICAgICB0aGlzLmJ1ZmZlci53cml0ZVVJbnQ4KFNUQVRVUy5OT1JNQUwsIE9GRlNFVC5TdGF0dXMpO1xuICAgICAgdGhpcy5idWZmZXIud3JpdGVVSW50MTZCRShERUZBVUxUX1NQSUQsIE9GRlNFVC5TUElEKTtcbiAgICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgoREVGQVVMVF9QQUNLRVRJRCwgT0ZGU0VULlBhY2tldElEKTtcbiAgICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgoREVGQVVMVF9XSU5ET1csIE9GRlNFVC5XaW5kb3cpO1xuICAgICAgdGhpcy5zZXRMZW5ndGgoKTtcbiAgICB9XG4gIH1cblxuICBzZXRMZW5ndGgoKSB7XG4gICAgdGhpcy5idWZmZXIud3JpdGVVSW50MTZCRSh0aGlzLmJ1ZmZlci5sZW5ndGgsIE9GRlNFVC5MZW5ndGgpO1xuICB9XG5cbiAgbGVuZ3RoKCkge1xuICAgIHJldHVybiB0aGlzLmJ1ZmZlci5yZWFkVUludDE2QkUoT0ZGU0VULkxlbmd0aCk7XG4gIH1cblxuICByZXNldENvbm5lY3Rpb24ocmVzZXQ6IGJvb2xlYW4pIHtcbiAgICBsZXQgc3RhdHVzID0gdGhpcy5idWZmZXIucmVhZFVJbnQ4KE9GRlNFVC5TdGF0dXMpO1xuICAgIGlmIChyZXNldCkge1xuICAgICAgc3RhdHVzIHw9IFNUQVRVUy5SRVNFVENPTk5FQ1RJT047XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXR1cyAmPSAweEZGIC0gU1RBVFVTLlJFU0VUQ09OTkVDVElPTjtcbiAgICB9XG4gICAgdGhpcy5idWZmZXIud3JpdGVVSW50OChzdGF0dXMsIE9GRlNFVC5TdGF0dXMpO1xuICB9XG5cbiAgbGFzdChsYXN0PzogYm9vbGVhbikge1xuICAgIGxldCBzdGF0dXMgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDgoT0ZGU0VULlN0YXR1cyk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAobGFzdCkge1xuICAgICAgICBzdGF0dXMgfD0gU1RBVFVTLkVPTTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXR1cyAmPSAweEZGIC0gU1RBVFVTLkVPTTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgoc3RhdHVzLCBPRkZTRVQuU3RhdHVzKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaXNMYXN0KCk7XG4gIH1cblxuICBpZ25vcmUobGFzdDogYm9vbGVhbikge1xuICAgIGxldCBzdGF0dXMgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDgoT0ZGU0VULlN0YXR1cyk7XG4gICAgaWYgKGxhc3QpIHtcbiAgICAgIHN0YXR1cyB8PSBTVEFUVVMuSUdOT1JFO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0dXMgJj0gMHhGRiAtIFNUQVRVUy5JR05PUkU7XG4gICAgfVxuICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgoc3RhdHVzLCBPRkZTRVQuU3RhdHVzKTtcbiAgfVxuXG4gIGlzTGFzdCgpIHtcbiAgICByZXR1cm4gISEodGhpcy5idWZmZXIucmVhZFVJbnQ4KE9GRlNFVC5TdGF0dXMpICYgU1RBVFVTLkVPTSk7XG4gIH1cblxuICBwYWNrZXRJZChwYWNrZXRJZD86IG51bWJlcikge1xuICAgIGlmIChwYWNrZXRJZCkge1xuICAgICAgdGhpcy5idWZmZXIud3JpdGVVSW50OChwYWNrZXRJZCAlIDI1NiwgT0ZGU0VULlBhY2tldElEKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYnVmZmVyLnJlYWRVSW50OChPRkZTRVQuUGFja2V0SUQpO1xuICB9XG5cbiAgYWRkRGF0YShkYXRhOiBCdWZmZXIpIHtcbiAgICB0aGlzLmJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuYnVmZmVyLCBkYXRhXSk7XG4gICAgdGhpcy5zZXRMZW5ndGgoKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVmZmVyLnNsaWNlKEhFQURFUl9MRU5HVEgpO1xuICB9XG5cbiAgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5idWZmZXIucmVhZFVJbnQ4KE9GRlNFVC5UeXBlKTtcbiAgfVxuXG4gIHN0YXR1c0FzU3RyaW5nKCkge1xuICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMuYnVmZmVyLnJlYWRVSW50OChPRkZTRVQuU3RhdHVzKTtcbiAgICBjb25zdCBzdGF0dXNlcyA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBuYW1lIGluIFNUQVRVUykge1xuICAgICAgY29uc3QgdmFsdWUgPSBTVEFUVVNbbmFtZV07XG5cbiAgICAgIGlmIChzdGF0dXMgJiB2YWx1ZSkge1xuICAgICAgICBzdGF0dXNlcy5wdXNoKG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdHVzZXMucHVzaCh1bmRlZmluZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdGF0dXNlcy5qb2luKCcgJykudHJpbSgpO1xuICB9XG5cbiAgaGVhZGVyVG9TdHJpbmcoaW5kZW50ID0gJycpIHtcbiAgICBjb25zdCB0ZXh0ID0gc3ByaW50ZigndHlwZToweCUwMlgoJXMpLCBzdGF0dXM6MHglMDJYKCVzKSwgbGVuZ3RoOjB4JTA0WCwgc3BpZDoweCUwNFgsIHBhY2tldElkOjB4JTAyWCwgd2luZG93OjB4JTAyWCcsIHRoaXMuYnVmZmVyLnJlYWRVSW50OChPRkZTRVQuVHlwZSksIHR5cGVCeVZhbHVlW3RoaXMuYnVmZmVyLnJlYWRVSW50OChPRkZTRVQuVHlwZSldLCB0aGlzLmJ1ZmZlci5yZWFkVUludDgoT0ZGU0VULlN0YXR1cyksIHRoaXMuc3RhdHVzQXNTdHJpbmcoKSwgdGhpcy5idWZmZXIucmVhZFVJbnQxNkJFKE9GRlNFVC5MZW5ndGgpLCB0aGlzLmJ1ZmZlci5yZWFkVUludDE2QkUoT0ZGU0VULlNQSUQpLCB0aGlzLmJ1ZmZlci5yZWFkVUludDgoT0ZGU0VULlBhY2tldElEKSwgdGhpcy5idWZmZXIucmVhZFVJbnQ4KE9GRlNFVC5XaW5kb3cpKTtcbiAgICByZXR1cm4gaW5kZW50ICsgdGV4dDtcbiAgfVxuXG4gIGRhdGFUb1N0cmluZyhpbmRlbnQgPSAnJykge1xuICAgIGNvbnN0IEJZVEVTX1BFUl9HUk9VUCA9IDB4MDQ7XG4gICAgY29uc3QgQ0hBUlNfUEVSX0dST1VQID0gMHgwODtcbiAgICBjb25zdCBCWVRFU19QRVJfTElORSA9IDB4MjA7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZGF0YSgpO1xuXG4gICAgbGV0IGRhdGFEdW1wID0gJyc7XG4gICAgbGV0IGNoYXJzID0gJyc7XG5cblxuICAgIGZvciAobGV0IG9mZnNldCA9IDA7IG9mZnNldCA8IGRhdGEubGVuZ3RoOyBvZmZzZXQrKykge1xuICAgICAgaWYgKG9mZnNldCAlIEJZVEVTX1BFUl9MSU5FID09PSAwKSB7XG4gICAgICAgIGRhdGFEdW1wICs9IGluZGVudDtcbiAgICAgICAgZGF0YUR1bXAgKz0gc3ByaW50ZignJTA0WCAgJywgb2Zmc2V0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGFbb2Zmc2V0XSA8IDB4MjAgfHwgZGF0YVtvZmZzZXRdID4gMHg3RSkge1xuICAgICAgICBjaGFycyArPSAnLic7XG4gICAgICAgIGlmICgoKG9mZnNldCArIDEpICUgQ0hBUlNfUEVSX0dST1VQID09PSAwKSAmJiAhKChvZmZzZXQgKyAxKSAlIEJZVEVTX1BFUl9MSU5FID09PSAwKSkge1xuICAgICAgICAgIGNoYXJzICs9ICcgJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hhcnMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShkYXRhW29mZnNldF0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YVtvZmZzZXRdICE9IG51bGwpIHtcbiAgICAgICAgZGF0YUR1bXAgKz0gc3ByaW50ZignJTAyWCcsIGRhdGFbb2Zmc2V0XSk7XG4gICAgICB9XG5cbiAgICAgIGlmICgoKG9mZnNldCArIDEpICUgQllURVNfUEVSX0dST1VQID09PSAwKSAmJiAhKChvZmZzZXQgKyAxKSAlIEJZVEVTX1BFUl9MSU5FID09PSAwKSkge1xuICAgICAgICBkYXRhRHVtcCArPSAnICc7XG4gICAgICB9XG5cbiAgICAgIGlmICgob2Zmc2V0ICsgMSkgJSBCWVRFU19QRVJfTElORSA9PT0gMCkge1xuICAgICAgICBkYXRhRHVtcCArPSAnICAnICsgY2hhcnM7XG4gICAgICAgIGNoYXJzID0gJyc7XG4gICAgICAgIGlmIChvZmZzZXQgPCBkYXRhLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBkYXRhRHVtcCArPSBOTDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGFycy5sZW5ndGgpIHtcbiAgICAgIGRhdGFEdW1wICs9ICcgICcgKyBjaGFycztcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YUR1bXA7XG4gIH1cblxuICB0b1N0cmluZyhpbmRlbnQgPSAnJykge1xuICAgIHJldHVybiB0aGlzLmhlYWRlclRvU3RyaW5nKGluZGVudCkgKyAnXFxuJyArIHRoaXMuZGF0YVRvU3RyaW5nKGluZGVudCArIGluZGVudCk7XG4gIH1cblxuICBwYXlsb2FkU3RyaW5nKCkge1xuICAgIHJldHVybiAnJztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQYWNrZXRDb21wbGV0ZShwb3RlbnRpYWxQYWNrZXRCdWZmZXI6IEJ1ZmZlcikge1xuICBpZiAocG90ZW50aWFsUGFja2V0QnVmZmVyLmxlbmd0aCA8IEhFQURFUl9MRU5HVEgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBvdGVudGlhbFBhY2tldEJ1ZmZlci5sZW5ndGggPj0gcG90ZW50aWFsUGFja2V0QnVmZmVyLnJlYWRVSW50MTZCRShPRkZTRVQuTGVuZ3RoKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFja2V0TGVuZ3RoKHBvdGVudGlhbFBhY2tldEJ1ZmZlcjogQnVmZmVyKSB7XG4gIHJldHVybiBwb3RlbnRpYWxQYWNrZXRCdWZmZXIucmVhZFVJbnQxNkJFKE9GRlNFVC5MZW5ndGgpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUVPLE1BQU1DLGFBQWEsR0FBQUMsT0FBQSxDQUFBRCxhQUFBLEdBQUcsQ0FBQztBQUV2QixNQUFNRSxJQUErQixHQUFBRCxPQUFBLENBQUFDLElBQUEsR0FBRztFQUM3Q0MsU0FBUyxFQUFFLElBQUk7RUFDZkMsV0FBVyxFQUFFLElBQUk7RUFDakJDLGNBQWMsRUFBRSxJQUFJO0VBQ3BCQyxTQUFTLEVBQUUsSUFBSTtFQUNmQyxTQUFTLEVBQUUsSUFBSTtFQUNmQyxtQkFBbUIsRUFBRSxJQUFJO0VBQ3pCQyxNQUFNLEVBQUUsSUFBSTtFQUNaQyxZQUFZLEVBQUUsSUFBSTtFQUNsQkMsUUFBUSxFQUFFLElBQUk7RUFDZEMsYUFBYSxFQUFFO0FBQ2pCLENBQUM7QUFFRCxNQUFNQyxXQUFzQyxHQUFHLENBQUMsQ0FBQztBQUVqRCxLQUFLLE1BQU1DLElBQUksSUFBSVosSUFBSSxFQUFFO0VBQ3ZCVyxXQUFXLENBQUNYLElBQUksQ0FBQ1ksSUFBSSxDQUFDLENBQUMs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
191
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3ByaW50ZkpzIiwicmVxdWlyZSIsIkhFQURFUl9MRU5HVEgiLCJleHBvcnRzIiwiVFlQRSIsIlNRTF9CQVRDSCIsIlJQQ19SRVFVRVNUIiwiVEFCVUxBUl9SRVNVTFQiLCJBVFRFTlRJT04iLCJCVUxLX0xPQUQiLCJUUkFOU0FDVElPTl9NQU5BR0VSIiwiTE9HSU43IiwiTlRMTUFVVEhfUEtUIiwiUFJFTE9HSU4iLCJGRURBVVRIX1RPS0VOIiwidHlwZUJ5VmFsdWUiLCJuYW1lIiwiU1RBVFVTIiwiTk9STUFMIiwiRU9NIiwiSUdOT1JFIiwiUkVTRVRDT05ORUNUSU9OIiwiUkVTRVRDT05ORUNUSU9OU0tJUFRSQU4iLCJPRkZTRVQiLCJUeXBlIiwiU3RhdHVzIiwiTGVuZ3RoIiwiU1BJRCIsIlBhY2tldElEIiwiV2luZG93IiwiREVGQVVMVF9TUElEIiwiREVGQVVMVF9QQUNLRVRJRCIsIkRFRkFVTFRfV0lORE9XIiwiTkwiLCJQYWNrZXQiLCJjb25zdHJ1Y3RvciIsInR5cGVPckJ1ZmZlciIsIkJ1ZmZlciIsImJ1ZmZlciIsInR5cGUiLCJhbGxvYyIsIndyaXRlVUludDgiLCJ3cml0ZVVJbnQxNkJFIiwic2V0TGVuZ3RoIiwibGVuZ3RoIiwicmVhZFVJbnQxNkJFIiwicmVzZXRDb25uZWN0aW9uIiwicmVzZXQiLCJzdGF0dXMiLCJyZWFkVUludDgiLCJsYXN0IiwiYXJndW1lbnRzIiwiaXNMYXN0IiwiaWdub3JlIiwicGFja2V0SWQiLCJhZGREYXRhIiwiZGF0YSIsImNvbmNhdCIsInNsaWNlIiwic3RhdHVzQXNTdHJpbmciLCJzdGF0dXNlcyIsInZhbHVlIiwicHVzaCIsInVuZGVmaW5lZCIsImpvaW4iLCJ0cmltIiwiaGVhZGVyVG9TdHJpbmciLCJpbmRlbnQiLCJ0ZXh0Iiwic3ByaW50ZiIsImRhdGFUb1N0cmluZyIsIkJZVEVTX1BFUl9HUk9VUCIsIkNIQVJTX1BFUl9HUk9VUCIsIkJZVEVTX1BFUl9MSU5FIiwiZGF0YUR1bXAiLCJjaGFycyIsIm9mZnNldCIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsInRvU3RyaW5nIiwicGF5bG9hZFN0cmluZyIsImlzUGFja2V0Q29tcGxldGUiLCJwb3RlbnRpYWxQYWNrZXRCdWZmZXIiLCJwYWNrZXRMZW5ndGgiXSwic291cmNlcyI6WyIuLi9zcmMvcGFja2V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNwcmludGYgfSBmcm9tICdzcHJpbnRmLWpzJztcblxuZXhwb3J0IGNvbnN0IEhFQURFUl9MRU5HVEggPSA4O1xuXG5leHBvcnQgY29uc3QgVFlQRTogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHtcbiAgU1FMX0JBVENIOiAweDAxLFxuICBSUENfUkVRVUVTVDogMHgwMyxcbiAgVEFCVUxBUl9SRVNVTFQ6IDB4MDQsXG4gIEFUVEVOVElPTjogMHgwNixcbiAgQlVMS19MT0FEOiAweDA3LFxuICBUUkFOU0FDVElPTl9NQU5BR0VSOiAweDBFLFxuICBMT0dJTjc6IDB4MTAsXG4gIE5UTE1BVVRIX1BLVDogMHgxMSxcbiAgUFJFTE9HSU46IDB4MTIsXG4gIEZFREFVVEhfVE9LRU46IDB4MDhcbn07XG5cbmNvbnN0IHR5cGVCeVZhbHVlOiB7IFtrZXk6IG51bWJlcl06IHN0cmluZyB9ID0ge307XG5cbmZvciAoY29uc3QgbmFtZSBpbiBUWVBFKSB7XG4gIHR5cGVCeVZhbHVlW1RZUEVbbmFtZV1dID0gbmFtZTtcbn1cblxuY29uc3QgU1RBVFVTOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge1xuICBOT1JNQUw6IDB4MDAsXG4gIEVPTTogMHgwMSxcbiAgSUdOT1JFOiAweDAyLFxuICBSRVNFVENPTk5FQ1RJT046IDB4MDgsXG4gIFJFU0VUQ09OTkVDVElPTlNLSVBUUkFOOiAweDEwXG59O1xuXG5leHBvcnQgY29uc3QgT0ZGU0VUID0ge1xuICBUeXBlOiAwLFxuICBTdGF0dXM6IDEsXG4gIExlbmd0aDogMixcbiAgU1BJRDogNCxcbiAgUGFja2V0SUQ6IDYsXG4gIFdpbmRvdzogN1xufTtcblxuY29uc3QgREVGQVVMVF9TUElEID0gMDtcblxuY29uc3QgREVGQVVMVF9QQUNLRVRJRCA9IDE7XG5cbmNvbnN0IERFRkFVTFRfV0lORE9XID0gMDtcblxuY29uc3QgTkwgPSAnXFxuJztcblxuZXhwb3J0IGNsYXNzIFBhY2tldCB7XG4gIGRlY2xhcmUgYnVmZmVyOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IodHlwZU9yQnVmZmVyOiBCdWZmZXIgfCBudW1iZXIpIHtcbiAgICBpZiAodHlwZU9yQnVmZmVyIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICB0aGlzLmJ1ZmZlciA9IHR5cGVPckJ1ZmZlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZSA9IHR5cGVPckJ1ZmZlcjtcbiAgICAgIHRoaXMuYnVmZmVyID0gQnVmZmVyLmFsbG9jKEhFQURFUl9MRU5HVEgsIDApO1xuICAgICAgdGhpcy5idWZmZXIud3JpdGVVSW50OCh0eXBlLCBPRkZTRVQuVHlwZSk7XG4gICAgICB0aGlzLmJ1ZmZlci53cml0ZVVJbnQ4KFNUQVRVUy5OT1JNQUwsIE9GRlNFVC5TdGF0dXMpO1xuICAgICAgdGhpcy5idWZmZXIud3JpdGVVSW50MTZCRShERUZBVUxUX1NQSUQsIE9GRlNFVC5TUElEKTtcbiAgICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgoREVGQVVMVF9QQUNLRVRJRCwgT0ZGU0VULlBhY2tldElEKTtcbiAgICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgoREVGQVVMVF9XSU5ET1csIE9GRlNFVC5XaW5kb3cpO1xuICAgICAgdGhpcy5zZXRMZW5ndGgoKTtcbiAgICB9XG4gIH1cblxuICBzZXRMZW5ndGgoKSB7XG4gICAgdGhpcy5idWZmZXIud3JpdGVVSW50MTZCRSh0aGlzLmJ1ZmZlci5sZW5ndGgsIE9GRlNFVC5MZW5ndGgpO1xuICB9XG5cbiAgbGVuZ3RoKCkge1xuICAgIHJldHVybiB0aGlzLmJ1ZmZlci5yZWFkVUludDE2QkUoT0ZGU0VULkxlbmd0aCk7XG4gIH1cblxuICByZXNldENvbm5lY3Rpb24ocmVzZXQ6IGJvb2xlYW4pIHtcbiAgICBsZXQgc3RhdHVzID0gdGhpcy5idWZmZXIucmVhZFVJbnQ4KE9GRlNFVC5TdGF0dXMpO1xuICAgIGlmIChyZXNldCkge1xuICAgICAgc3RhdHVzIHw9IFNUQVRVUy5SRVNFVENPTk5FQ1RJT047XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXR1cyAmPSAweEZGIC0gU1RBVFVTLlJFU0VUQ09OTkVDVElPTjtcbiAgICB9XG4gICAgdGhpcy5idWZmZXIud3JpdGVVSW50OChzdGF0dXMsIE9GRlNFVC5TdGF0dXMpO1xuICB9XG5cbiAgbGFzdChsYXN0PzogYm9vbGVhbikge1xuICAgIGxldCBzdGF0dXMgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDgoT0ZGU0VULlN0YXR1cyk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAobGFzdCkge1xuICAgICAgICBzdGF0dXMgfD0gU1RBVFVTLkVPTTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXR1cyAmPSAweEZGIC0gU1RBVFVTLkVPTTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgoc3RhdHVzLCBPRkZTRVQuU3RhdHVzKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaXNMYXN0KCk7XG4gIH1cblxuICBpZ25vcmUobGFzdDogYm9vbGVhbikge1xuICAgIGxldCBzdGF0dXMgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDgoT0ZGU0VULlN0YXR1cyk7XG4gICAgaWYgKGxhc3QpIHtcbiAgICAgIHN0YXR1cyB8PSBTVEFUVVMuSUdOT1JFO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0dXMgJj0gMHhGRiAtIFNUQVRVUy5JR05PUkU7XG4gICAgfVxuICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgoc3RhdHVzLCBPRkZTRVQuU3RhdHVzKTtcbiAgfVxuXG4gIGlzTGFzdCgpIHtcbiAgICByZXR1cm4gISEodGhpcy5idWZmZXIucmVhZFVJbnQ4KE9GRlNFVC5TdGF0dXMpICYgU1RBVFVTLkVPTSk7XG4gIH1cblxuICBwYWNrZXRJZChwYWNrZXRJZD86IG51bWJlcikge1xuICAgIGlmIChwYWNrZXRJZCkge1xuICAgICAgdGhpcy5idWZmZXIud3JpdGVVSW50OChwYWNrZXRJZCAlIDI1NiwgT0ZGU0VULlBhY2tldElEKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYnVmZmVyLnJlYWRVSW50OChPRkZTRVQuUGFja2V0SUQpO1xuICB9XG5cbiAgYWRkRGF0YShkYXRhOiBCdWZmZXIpIHtcbiAgICB0aGlzLmJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuYnVmZmVyLCBkYXRhXSk7XG4gICAgdGhpcy5zZXRMZW5ndGgoKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVmZmVyLnNsaWNlKEhFQURFUl9MRU5HVEgpO1xuICB9XG5cbiAgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5idWZmZXIucmVhZFVJbnQ4KE9GRlNFVC5UeXBlKTtcbiAgfVxuXG4gIHN0YXR1c0FzU3RyaW5nKCkge1xuICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMuYnVmZmVyLnJlYWRVSW50OChPRkZTRVQuU3RhdHVzKTtcbiAgICBjb25zdCBzdGF0dXNlcyA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBuYW1lIGluIFNUQVRVUykge1xuICAgICAgY29uc3QgdmFsdWUgPSBTVEFUVVNbbmFtZV07XG5cbiAgICAgIGlmIChzdGF0dXMgJiB2YWx1ZSkge1xuICAgICAgICBzdGF0dXNlcy5wdXNoKG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdHVzZXMucHVzaCh1bmRlZmluZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdGF0dXNlcy5qb2luKCcgJykudHJpbSgpO1xuICB9XG5cbiAgaGVhZGVyVG9TdHJpbmcoaW5kZW50ID0gJycpIHtcbiAgICBjb25zdCB0ZXh0ID0gc3ByaW50ZigndHlwZToweCUwMlgoJXMpLCBzdGF0dXM6MHglMDJYKCVzKSwgbGVuZ3RoOjB4JTA0WCwgc3BpZDoweCUwNFgsIHBhY2tldElkOjB4JTAyWCwgd2luZG93OjB4JTAyWCcsIHRoaXMuYnVmZmVyLnJlYWRVSW50OChPRkZTRVQuVHlwZSksIHR5cGVCeVZhbHVlW3RoaXMuYnVmZmVyLnJlYWRVSW50OChPRkZTRVQuVHlwZSldLCB0aGlzLmJ1ZmZlci5yZWFkVUludDgoT0ZGU0VULlN0YXR1cyksIHRoaXMuc3RhdHVzQXNTdHJpbmcoKSwgdGhpcy5idWZmZXIucmVhZFVJbnQxNkJFKE9GRlNFVC5MZW5ndGgpLCB0aGlzLmJ1ZmZlci5yZWFkVUludDE2QkUoT0ZGU0VULlNQSUQpLCB0aGlzLmJ1ZmZlci5yZWFkVUludDgoT0ZGU0VULlBhY2tldElEKSwgdGhpcy5idWZmZXIucmVhZFVJbnQ4KE9GRlNFVC5XaW5kb3cpKTtcbiAgICByZXR1cm4gaW5kZW50ICsgdGV4dDtcbiAgfVxuXG4gIGRhdGFUb1N0cmluZyhpbmRlbnQgPSAnJykge1xuICAgIGNvbnN0IEJZVEVTX1BFUl9HUk9VUCA9IDB4MDQ7XG4gICAgY29uc3QgQ0hBUlNfUEVSX0dST1VQID0gMHgwODtcbiAgICBjb25zdCBCWVRFU19QRVJfTElORSA9IDB4MjA7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZGF0YSgpO1xuXG4gICAgbGV0IGRhdGFEdW1wID0gJyc7XG4gICAgbGV0IGNoYXJzID0gJyc7XG5cblxuICAgIGZvciAobGV0IG9mZnNldCA9IDA7IG9mZnNldCA8IGRhdGEubGVuZ3RoOyBvZmZzZXQrKykge1xuICAgICAgaWYgKG9mZnNldCAlIEJZVEVTX1BFUl9MSU5FID09PSAwKSB7XG4gICAgICAgIGRhdGFEdW1wICs9IGluZGVudDtcbiAgICAgICAgZGF0YUR1bXAgKz0gc3ByaW50ZignJTA0WCAgJywgb2Zmc2V0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGFbb2Zmc2V0XSA8IDB4MjAgfHwgZGF0YVtvZmZzZXRdID4gMHg3RSkge1xuICAgICAgICBjaGFycyArPSAnLic7XG4gICAgICAgIGlmICgoKG9mZnNldCArIDEpICUgQ0hBUlNfUEVSX0dST1VQID09PSAwKSAmJiAhKChvZmZzZXQgKyAxKSAlIEJZVEVTX1BFUl9MSU5FID09PSAwKSkge1xuICAgICAgICAgIGNoYXJzICs9ICcgJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hhcnMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShkYXRhW29mZnNldF0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YVtvZmZzZXRdICE9IG51bGwpIHtcbiAgICAgICAgZGF0YUR1bXAgKz0gc3ByaW50ZignJTAyWCcsIGRhdGFbb2Zmc2V0XSk7XG4gICAgICB9XG5cbiAgICAgIGlmICgoKG9mZnNldCArIDEpICUgQllURVNfUEVSX0dST1VQID09PSAwKSAmJiAhKChvZmZzZXQgKyAxKSAlIEJZVEVTX1BFUl9MSU5FID09PSAwKSkge1xuICAgICAgICBkYXRhRHVtcCArPSAnICc7XG4gICAgICB9XG5cbiAgICAgIGlmICgob2Zmc2V0ICsgMSkgJSBCWVRFU19QRVJfTElORSA9PT0gMCkge1xuICAgICAgICBkYXRhRHVtcCArPSAnICAnICsgY2hhcnM7XG4gICAgICAgIGNoYXJzID0gJyc7XG4gICAgICAgIGlmIChvZmZzZXQgPCBkYXRhLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBkYXRhRHVtcCArPSBOTDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGFycy5sZW5ndGgpIHtcbiAgICAgIGRhdGFEdW1wICs9ICcgICcgKyBjaGFycztcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YUR1bXA7XG4gIH1cblxuICB0b1N0cmluZyhpbmRlbnQgPSAnJykge1xuICAgIHJldHVybiB0aGlzLmhlYWRlclRvU3RyaW5nKGluZGVudCkgKyAnXFxuJyArIHRoaXMuZGF0YVRvU3RyaW5nKGluZGVudCArIGluZGVudCk7XG4gIH1cblxuICBwYXlsb2FkU3RyaW5nKCkge1xuICAgIHJldHVybiAnJztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQYWNrZXRDb21wbGV0ZShwb3RlbnRpYWxQYWNrZXRCdWZmZXI6IEJ1ZmZlcikge1xuICBpZiAocG90ZW50aWFsUGFja2V0QnVmZmVyLmxlbmd0aCA8IEhFQURFUl9MRU5HVEgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBvdGVudGlhbFBhY2tldEJ1ZmZlci5sZW5ndGggPj0gcG90ZW50aWFsUGFja2V0QnVmZmVyLnJlYWRVSW50MTZCRShPRkZTRVQuTGVuZ3RoKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFja2V0TGVuZ3RoKHBvdGVudGlhbFBhY2tldEJ1ZmZlcjogQnVmZmVyKSB7XG4gIHJldHVybiBwb3RlbnRpYWxQYWNrZXRCdWZmZXIucmVhZFVJbnQxNkJFKE9GRlNFVC5MZW5ndGgpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUVPLE1BQU1DLGFBQWEsR0FBQUMsT0FBQSxDQUFBRCxhQUFBLEdBQUcsQ0FBQztBQUV2QixNQUFNRSxJQUErQixHQUFBRCxPQUFBLENBQUFDLElBQUEsR0FBRztFQUM3Q0MsU0FBUyxFQUFFLElBQUk7RUFDZkMsV0FBVyxFQUFFLElBQUk7RUFDakJDLGNBQWMsRUFBRSxJQUFJO0VBQ3BCQyxTQUFTLEVBQUUsSUFBSTtFQUNmQyxTQUFTLEVBQUUsSUFBSTtFQUNmQyxtQkFBbUIsRUFBRSxJQUFJO0VBQ3pCQyxNQUFNLEVBQUUsSUFBSTtFQUNaQyxZQUFZLEVBQUUsSUFBSTtFQUNsQkMsUUFBUSxFQUFFLElBQUk7RUFDZEMsYUFBYSxFQUFFO0FBQ2pCLENBQUM7QUFFRCxNQUFNQyxXQUFzQyxHQUFHLENBQUMsQ0FBQztBQUVqRCxLQUFLLE1BQU1DLElBQUksSUFBSVosSUFBSSxFQUFFO0VBQ3ZCVyxXQUFXLENBQUNYLElBQUksQ0FBQ1ksSUFBSSxDQUFDLENBQUMs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
package/lib/packet.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"packet.js","names":["_sprintfJs","require","HEADER_LENGTH","exports","TYPE","SQL_BATCH","RPC_REQUEST","TABULAR_RESULT","ATTENTION","BULK_LOAD","TRANSACTION_MANAGER","LOGIN7","NTLMAUTH_PKT","PRELOGIN","FEDAUTH_TOKEN","typeByValue","name","STATUS","NORMAL","EOM","IGNORE","RESETCONNECTION","RESETCONNECTIONSKIPTRAN","OFFSET","Type","Status","Length","SPID","PacketID","Window","DEFAULT_SPID","DEFAULT_PACKETID","DEFAULT_WINDOW","NL","Packet","constructor","typeOrBuffer","Buffer","buffer","type","alloc","writeUInt8","writeUInt16BE","setLength","length","readUInt16BE","resetConnection","reset","status","readUInt8","last","arguments","isLast","ignore","packetId","addData","data","concat","slice","statusAsString","statuses","value","push","undefined","join","trim","headerToString","indent","text","sprintf","dataToString","BYTES_PER_GROUP","CHARS_PER_GROUP","BYTES_PER_LINE","dataDump","chars","offset","String","fromCharCode","toString","payloadString","isPacketComplete","potentialPacketBuffer","packetLength"],"sources":["../src/packet.ts"],"sourcesContent":["import { sprintf } from 'sprintf-js';\n\nexport const HEADER_LENGTH = 8;\n\nexport const TYPE: { [key: string]: number } = {\n SQL_BATCH: 0x01,\n RPC_REQUEST: 0x03,\n TABULAR_RESULT: 0x04,\n ATTENTION: 0x06,\n BULK_LOAD: 0x07,\n TRANSACTION_MANAGER: 0x0E,\n LOGIN7: 0x10,\n NTLMAUTH_PKT: 0x11,\n PRELOGIN: 0x12,\n FEDAUTH_TOKEN: 0x08\n};\n\nconst typeByValue: { [key: number]: string } = {};\n\nfor (const name in TYPE) {\n typeByValue[TYPE[name]] = name;\n}\n\nconst STATUS: { [key: string]: number } = {\n NORMAL: 0x00,\n EOM: 0x01,\n IGNORE: 0x02,\n RESETCONNECTION: 0x08,\n RESETCONNECTIONSKIPTRAN: 0x10\n};\n\nexport const OFFSET = {\n Type: 0,\n Status: 1,\n Length: 2,\n SPID: 4,\n PacketID: 6,\n Window: 7\n};\n\nconst DEFAULT_SPID = 0;\n\nconst DEFAULT_PACKETID = 1;\n\nconst DEFAULT_WINDOW = 0;\n\nconst NL = '\\n';\n\nexport class Packet {\n declare buffer: Buffer;\n\n constructor(typeOrBuffer: Buffer | number) {\n if (typeOrBuffer instanceof Buffer) {\n this.buffer = typeOrBuffer;\n } else {\n const type = typeOrBuffer;\n this.buffer = Buffer.alloc(HEADER_LENGTH, 0);\n this.buffer.writeUInt8(type, OFFSET.Type);\n this.buffer.writeUInt8(STATUS.NORMAL, OFFSET.Status);\n this.buffer.writeUInt16BE(DEFAULT_SPID, OFFSET.SPID);\n this.buffer.writeUInt8(DEFAULT_PACKETID, OFFSET.PacketID);\n this.buffer.writeUInt8(DEFAULT_WINDOW, OFFSET.Window);\n this.setLength();\n }\n }\n\n setLength() {\n this.buffer.writeUInt16BE(this.buffer.length, OFFSET.Length);\n }\n\n length() {\n return this.buffer.readUInt16BE(OFFSET.Length);\n }\n\n resetConnection(reset: boolean) {\n let status = this.buffer.readUInt8(OFFSET.Status);\n if (reset) {\n status |= STATUS.RESETCONNECTION;\n } else {\n status &= 0xFF - STATUS.RESETCONNECTION;\n }\n this.buffer.writeUInt8(status, OFFSET.Status);\n }\n\n last(last?: boolean) {\n let status = this.buffer.readUInt8(OFFSET.Status);\n if (arguments.length > 0) {\n if (last) {\n status |= STATUS.EOM;\n } else {\n status &= 0xFF - STATUS.EOM;\n }\n this.buffer.writeUInt8(status, OFFSET.Status);\n }\n return this.isLast();\n }\n\n ignore(last: boolean) {\n let status = this.buffer.readUInt8(OFFSET.Status);\n if (last) {\n status |= STATUS.IGNORE;\n } else {\n status &= 0xFF - STATUS.IGNORE;\n }\n this.buffer.writeUInt8(status, OFFSET.Status);\n }\n\n isLast() {\n return !!(this.buffer.readUInt8(OFFSET.Status) & STATUS.EOM);\n }\n\n packetId(packetId?: number) {\n if (packetId) {\n this.buffer.writeUInt8(packetId % 256, OFFSET.PacketID);\n }\n return this.buffer.readUInt8(OFFSET.PacketID);\n }\n\n addData(data: Buffer) {\n this.buffer = Buffer.concat([this.buffer, data]);\n this.setLength();\n return this;\n }\n\n data() {\n return this.buffer.slice(HEADER_LENGTH);\n }\n\n type() {\n return this.buffer.readUInt8(OFFSET.Type);\n }\n\n statusAsString() {\n const status = this.buffer.readUInt8(OFFSET.Status);\n const statuses = [];\n\n for (const name in STATUS) {\n const value = STATUS[name];\n\n if (status & value) {\n statuses.push(name);\n } else {\n statuses.push(undefined);\n }\n }\n\n return statuses.join(' ').trim();\n }\n\n headerToString(indent = '') {\n const text = sprintf('type:0x%02X(%s), status:0x%02X(%s), length:0x%04X, spid:0x%04X, packetId:0x%02X, window:0x%02X', this.buffer.readUInt8(OFFSET.Type), typeByValue[this.buffer.readUInt8(OFFSET.Type)], this.buffer.readUInt8(OFFSET.Status), this.statusAsString(), this.buffer.readUInt16BE(OFFSET.Length), this.buffer.readUInt16BE(OFFSET.SPID), this.buffer.readUInt8(OFFSET.PacketID), this.buffer.readUInt8(OFFSET.Window));\n return indent + text;\n }\n\n dataToString(indent = '') {\n const BYTES_PER_GROUP = 0x04;\n const CHARS_PER_GROUP = 0x08;\n const BYTES_PER_LINE = 0x20;\n const data = this.data();\n\n let dataDump = '';\n let chars = '';\n\n\n for (let offset = 0; offset < data.length; offset++) {\n if (offset % BYTES_PER_LINE === 0) {\n dataDump += indent;\n dataDump += sprintf('%04X ', offset);\n }\n\n if (data[offset] < 0x20 || data[offset] > 0x7E) {\n chars += '.';\n if (((offset + 1) % CHARS_PER_GROUP === 0) && !((offset + 1) % BYTES_PER_LINE === 0)) {\n chars += ' ';\n }\n } else {\n chars += String.fromCharCode(data[offset]);\n }\n\n if (data[offset] != null) {\n dataDump += sprintf('%02X', data[offset]);\n }\n\n if (((offset + 1) % BYTES_PER_GROUP === 0) && !((offset + 1) % BYTES_PER_LINE === 0)) {\n dataDump += ' ';\n }\n\n if ((offset + 1) % BYTES_PER_LINE === 0) {\n dataDump += ' ' + chars;\n chars = '';\n if (offset < data.length - 1) {\n dataDump += NL;\n }\n }\n }\n\n if (chars.length) {\n dataDump += ' ' + chars;\n }\n\n return dataDump;\n }\n\n toString(indent = '') {\n return this.headerToString(indent) + '\\n' + this.dataToString(indent + indent);\n }\n\n payloadString() {\n return '';\n }\n}\n\nexport function isPacketComplete(potentialPacketBuffer: Buffer) {\n if (potentialPacketBuffer.length < HEADER_LENGTH) {\n return false;\n } else {\n return potentialPacketBuffer.length >= potentialPacketBuffer.readUInt16BE(OFFSET.Length);\n }\n}\n\nexport function packetLength(potentialPacketBuffer: Buffer) {\n return potentialPacketBuffer.readUInt16BE(OFFSET.Length);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"packet.js","names":["_sprintfJs","require","HEADER_LENGTH","exports","TYPE","SQL_BATCH","RPC_REQUEST","TABULAR_RESULT","ATTENTION","BULK_LOAD","TRANSACTION_MANAGER","LOGIN7","NTLMAUTH_PKT","PRELOGIN","FEDAUTH_TOKEN","typeByValue","name","STATUS","NORMAL","EOM","IGNORE","RESETCONNECTION","RESETCONNECTIONSKIPTRAN","OFFSET","Type","Status","Length","SPID","PacketID","Window","DEFAULT_SPID","DEFAULT_PACKETID","DEFAULT_WINDOW","NL","Packet","constructor","typeOrBuffer","Buffer","buffer","type","alloc","writeUInt8","writeUInt16BE","setLength","length","readUInt16BE","resetConnection","reset","status","readUInt8","last","arguments","isLast","ignore","packetId","addData","data","concat","slice","statusAsString","statuses","value","push","undefined","join","trim","headerToString","indent","text","sprintf","dataToString","BYTES_PER_GROUP","CHARS_PER_GROUP","BYTES_PER_LINE","dataDump","chars","offset","String","fromCharCode","toString","payloadString","isPacketComplete","potentialPacketBuffer","packetLength"],"sources":["../src/packet.ts"],"sourcesContent":["import { sprintf } from 'sprintf-js';\n\nexport const HEADER_LENGTH = 8;\n\nexport const TYPE: { [key: string]: number } = {\n SQL_BATCH: 0x01,\n RPC_REQUEST: 0x03,\n TABULAR_RESULT: 0x04,\n ATTENTION: 0x06,\n BULK_LOAD: 0x07,\n TRANSACTION_MANAGER: 0x0E,\n LOGIN7: 0x10,\n NTLMAUTH_PKT: 0x11,\n PRELOGIN: 0x12,\n FEDAUTH_TOKEN: 0x08\n};\n\nconst typeByValue: { [key: number]: string } = {};\n\nfor (const name in TYPE) {\n typeByValue[TYPE[name]] = name;\n}\n\nconst STATUS: { [key: string]: number } = {\n NORMAL: 0x00,\n EOM: 0x01,\n IGNORE: 0x02,\n RESETCONNECTION: 0x08,\n RESETCONNECTIONSKIPTRAN: 0x10\n};\n\nexport const OFFSET = {\n Type: 0,\n Status: 1,\n Length: 2,\n SPID: 4,\n PacketID: 6,\n Window: 7\n};\n\nconst DEFAULT_SPID = 0;\n\nconst DEFAULT_PACKETID = 1;\n\nconst DEFAULT_WINDOW = 0;\n\nconst NL = '\\n';\n\nexport class Packet {\n declare buffer: Buffer;\n\n constructor(typeOrBuffer: Buffer | number) {\n if (typeOrBuffer instanceof Buffer) {\n this.buffer = typeOrBuffer;\n } else {\n const type = typeOrBuffer;\n this.buffer = Buffer.alloc(HEADER_LENGTH, 0);\n this.buffer.writeUInt8(type, OFFSET.Type);\n this.buffer.writeUInt8(STATUS.NORMAL, OFFSET.Status);\n this.buffer.writeUInt16BE(DEFAULT_SPID, OFFSET.SPID);\n this.buffer.writeUInt8(DEFAULT_PACKETID, OFFSET.PacketID);\n this.buffer.writeUInt8(DEFAULT_WINDOW, OFFSET.Window);\n this.setLength();\n }\n }\n\n setLength() {\n this.buffer.writeUInt16BE(this.buffer.length, OFFSET.Length);\n }\n\n length() {\n return this.buffer.readUInt16BE(OFFSET.Length);\n }\n\n resetConnection(reset: boolean) {\n let status = this.buffer.readUInt8(OFFSET.Status);\n if (reset) {\n status |= STATUS.RESETCONNECTION;\n } else {\n status &= 0xFF - STATUS.RESETCONNECTION;\n }\n this.buffer.writeUInt8(status, OFFSET.Status);\n }\n\n last(last?: boolean) {\n let status = this.buffer.readUInt8(OFFSET.Status);\n if (arguments.length > 0) {\n if (last) {\n status |= STATUS.EOM;\n } else {\n status &= 0xFF - STATUS.EOM;\n }\n this.buffer.writeUInt8(status, OFFSET.Status);\n }\n return this.isLast();\n }\n\n ignore(last: boolean) {\n let status = this.buffer.readUInt8(OFFSET.Status);\n if (last) {\n status |= STATUS.IGNORE;\n } else {\n status &= 0xFF - STATUS.IGNORE;\n }\n this.buffer.writeUInt8(status, OFFSET.Status);\n }\n\n isLast() {\n return !!(this.buffer.readUInt8(OFFSET.Status) & STATUS.EOM);\n }\n\n packetId(packetId?: number) {\n if (packetId) {\n this.buffer.writeUInt8(packetId % 256, OFFSET.PacketID);\n }\n return this.buffer.readUInt8(OFFSET.PacketID);\n }\n\n addData(data: Buffer) {\n this.buffer = Buffer.concat([this.buffer, data]);\n this.setLength();\n return this;\n }\n\n data() {\n return this.buffer.slice(HEADER_LENGTH);\n }\n\n type() {\n return this.buffer.readUInt8(OFFSET.Type);\n }\n\n statusAsString() {\n const status = this.buffer.readUInt8(OFFSET.Status);\n const statuses = [];\n\n for (const name in STATUS) {\n const value = STATUS[name];\n\n if (status & value) {\n statuses.push(name);\n } else {\n statuses.push(undefined);\n }\n }\n\n return statuses.join(' ').trim();\n }\n\n headerToString(indent = '') {\n const text = sprintf('type:0x%02X(%s), status:0x%02X(%s), length:0x%04X, spid:0x%04X, packetId:0x%02X, window:0x%02X', this.buffer.readUInt8(OFFSET.Type), typeByValue[this.buffer.readUInt8(OFFSET.Type)], this.buffer.readUInt8(OFFSET.Status), this.statusAsString(), this.buffer.readUInt16BE(OFFSET.Length), this.buffer.readUInt16BE(OFFSET.SPID), this.buffer.readUInt8(OFFSET.PacketID), this.buffer.readUInt8(OFFSET.Window));\n return indent + text;\n }\n\n dataToString(indent = '') {\n const BYTES_PER_GROUP = 0x04;\n const CHARS_PER_GROUP = 0x08;\n const BYTES_PER_LINE = 0x20;\n const data = this.data();\n\n let dataDump = '';\n let chars = '';\n\n\n for (let offset = 0; offset < data.length; offset++) {\n if (offset % BYTES_PER_LINE === 0) {\n dataDump += indent;\n dataDump += sprintf('%04X ', offset);\n }\n\n if (data[offset] < 0x20 || data[offset] > 0x7E) {\n chars += '.';\n if (((offset + 1) % CHARS_PER_GROUP === 0) && !((offset + 1) % BYTES_PER_LINE === 0)) {\n chars += ' ';\n }\n } else {\n chars += String.fromCharCode(data[offset]);\n }\n\n if (data[offset] != null) {\n dataDump += sprintf('%02X', data[offset]);\n }\n\n if (((offset + 1) % BYTES_PER_GROUP === 0) && !((offset + 1) % BYTES_PER_LINE === 0)) {\n dataDump += ' ';\n }\n\n if ((offset + 1) % BYTES_PER_LINE === 0) {\n dataDump += ' ' + chars;\n chars = '';\n if (offset < data.length - 1) {\n dataDump += NL;\n }\n }\n }\n\n if (chars.length) {\n dataDump += ' ' + chars;\n }\n\n return dataDump;\n }\n\n toString(indent = '') {\n return this.headerToString(indent) + '\\n' + this.dataToString(indent + indent);\n }\n\n payloadString() {\n return '';\n }\n}\n\nexport function isPacketComplete(potentialPacketBuffer: Buffer) {\n if (potentialPacketBuffer.length < HEADER_LENGTH) {\n return false;\n } else {\n return potentialPacketBuffer.length >= potentialPacketBuffer.readUInt16BE(OFFSET.Length);\n }\n}\n\nexport function packetLength(potentialPacketBuffer: Buffer) {\n return potentialPacketBuffer.readUInt16BE(OFFSET.Length);\n}\n"],"mappings":"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","ignoreList":[]}