tedious 13.0.1 → 13.0.5
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.
- package/lib/all-headers.js +2 -1
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js +2 -1
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js +2 -1
- package/lib/always-encrypted/cek-entry.js +2 -1
- package/lib/always-encrypted/get-parameter-encryption-metadata.js +2 -1
- package/lib/always-encrypted/key-crypto.js +2 -1
- package/lib/always-encrypted/keystore-provider-azure-key-vault.js +4 -3
- package/lib/always-encrypted/symmetric-key-cache.js +2 -1
- package/lib/always-encrypted/symmetric-key.js +2 -1
- package/lib/always-encrypted/types.js +2 -1
- package/lib/always-encrypted/utils.js +2 -1
- package/lib/bulk-load-payload.js +2 -1
- package/lib/bulk-load.js +8 -5
- package/lib/collation.js +2 -1
- package/lib/connection.js +5 -4
- package/lib/connector.js +2 -1
- package/lib/data-type.js +2 -1
- package/lib/data-types/bigint.js +2 -1
- package/lib/data-types/binary.js +2 -1
- package/lib/data-types/bit.js +2 -1
- package/lib/data-types/bitn.js +2 -1
- package/lib/data-types/char.js +2 -1
- package/lib/data-types/date.js +2 -1
- package/lib/data-types/datetime.js +2 -1
- package/lib/data-types/datetime2.js +2 -1
- package/lib/data-types/datetimen.js +2 -1
- package/lib/data-types/datetimeoffset.js +2 -1
- package/lib/data-types/decimal.js +2 -1
- package/lib/data-types/decimaln.js +2 -1
- package/lib/data-types/float.js +2 -1
- package/lib/data-types/floatn.js +2 -1
- package/lib/data-types/image.js +2 -1
- package/lib/data-types/int.js +2 -1
- package/lib/data-types/intn.js +2 -1
- package/lib/data-types/money.js +2 -1
- package/lib/data-types/moneyn.js +2 -1
- package/lib/data-types/nchar.js +2 -1
- package/lib/data-types/ntext.js +2 -1
- package/lib/data-types/null.js +2 -1
- package/lib/data-types/numeric.js +2 -1
- package/lib/data-types/numericn.js +2 -1
- package/lib/data-types/nvarchar.js +2 -1
- package/lib/data-types/real.js +2 -1
- package/lib/data-types/smalldatetime.js +2 -1
- package/lib/data-types/smallint.js +2 -1
- package/lib/data-types/smallmoney.js +2 -1
- package/lib/data-types/sql-variant.js +2 -1
- package/lib/data-types/text.js +2 -1
- package/lib/data-types/time.js +2 -1
- package/lib/data-types/tinyint.js +2 -1
- package/lib/data-types/tvp.js +2 -1
- package/lib/data-types/udt.js +2 -1
- package/lib/data-types/uniqueidentifier.js +2 -1
- package/lib/data-types/varbinary.js +2 -1
- package/lib/data-types/varchar.js +2 -1
- package/lib/data-types/xml.js +2 -1
- package/lib/debug.js +2 -1
- package/lib/errors.js +2 -1
- package/lib/guid-parser.js +2 -1
- package/lib/incoming-message-stream.js +2 -1
- package/lib/instance-lookup.js +2 -1
- package/lib/library.js +2 -1
- package/lib/login7-payload.js +2 -1
- package/lib/message-io.js +2 -1
- package/lib/message.js +2 -1
- package/lib/metadata-parser.js +2 -1
- package/lib/ntlm-payload.js +2 -1
- package/lib/ntlm.js +2 -1
- package/lib/outgoing-message-stream.js +2 -1
- package/lib/packet.js +2 -1
- package/lib/prelogin-payload.js +2 -1
- package/lib/request.js +6 -12
- package/lib/rpcrequest-payload.js +2 -1
- package/lib/sender.js +2 -1
- package/lib/special-stored-procedure.js +2 -1
- package/lib/sqlbatch-payload.js +2 -1
- package/lib/tds-versions.js +2 -1
- package/lib/tedious.js +2 -1
- package/lib/token/colmetadata-token-parser.js +2 -1
- package/lib/token/done-token-parser.js +2 -1
- package/lib/token/env-change-token-parser.js +2 -1
- package/lib/token/feature-ext-ack-parser.js +2 -1
- package/lib/token/fedauth-info-parser.js +2 -1
- package/lib/token/infoerror-token-parser.js +2 -1
- package/lib/token/loginack-token-parser.js +2 -1
- package/lib/token/nbcrow-token-parser.js +2 -1
- package/lib/token/order-token-parser.js +2 -1
- package/lib/token/returnstatus-token-parser.js +2 -1
- package/lib/token/returnvalue-token-parser.js +2 -1
- package/lib/token/row-token-parser.js +3 -2
- package/lib/token/sspi-token-parser.js +2 -1
- package/lib/token/stream-parser.js +2 -1
- package/lib/token/token-stream-parser.js +2 -1
- package/lib/token/token.js +2 -1
- package/lib/tracking-buffer/writable-tracking-buffer.js +2 -1
- package/lib/transaction.js +2 -1
- package/lib/transient-error-lookup.js +2 -1
- package/lib/value-parser.js +2 -1
- package/package.json +3 -2
- package/tsconfig.json +2 -1
package/lib/all-headers.js
CHANGED
|
@@ -21,4 +21,5 @@ function writeToTrackingBuffer(buffer, txnDescriptor, outstandingRequestCount) {
|
|
|
21
21
|
const data = buffer.data;
|
|
22
22
|
data.writeUInt32LE(data.length, 0);
|
|
23
23
|
return buffer;
|
|
24
|
-
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hbGwtaGVhZGVycy50cyJdLCJuYW1lcyI6WyJUWVBFIiwiUVVFUllfTk9USUZJQ0FUSU9OUyIsIlRYTl9ERVNDUklQVE9SIiwiVFJBQ0VfQUNUSVZJVFkiLCJUWE5ERVNDUklQVE9SX0hFQURFUl9EQVRBX0xFTiIsIlRYTkRFU0NSSVBUT1JfSEVBREVSX0xFTiIsIndyaXRlVG9UcmFja2luZ0J1ZmZlciIsImJ1ZmZlciIsInR4bkRlc2NyaXB0b3IiLCJvdXRzdGFuZGluZ1JlcXVlc3RDb3VudCIsIndyaXRlVUludDMyTEUiLCJ3cml0ZVVJbnQxNkxFIiwid3JpdGVCdWZmZXIiLCJkYXRhIiwibGVuZ3RoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxNQUFNQSxJQUFJLEdBQUc7QUFDWEMsRUFBQUEsbUJBQW1CLEVBQUUsQ0FEVjtBQUVYQyxFQUFBQSxjQUFjLEVBQUUsQ0FGTDtBQUdYQyxFQUFBQSxjQUFjLEVBQUU7QUFITCxDQUFiO0FBTUEsTUFBTUMsNkJBQTZCLEdBQUcsSUFBSSxDQUExQztBQUVBLE1BQU1DLHdCQUF3QixHQUFHLElBQUksQ0FBSixHQUFRRCw2QkFBekM7O0FBRU8sU0FBU0UscUJBQVQsQ0FBK0JDLE1BQS9CLEVBQStEQyxhQUEvRCxFQUFzRkMsdUJBQXRGLEVBQXVIO0FBQzVIRixFQUFBQSxNQUFNLENBQUNHLGFBQVAsQ0FBcUIsQ0FBckI7QUFDQUgsRUFBQUEsTUFBTSxDQUFDRyxhQUFQLENBQXFCTCx3QkFBckI7QUFDQUUsRUFBQUEsTUFBTSxDQUFDSSxhQUFQLENBQXFCWCxJQUFJLENBQUNFLGNBQTFCO0FBQ0FLLEVBQUFBLE1BQU0sQ0FBQ0ssV0FBUCxDQUFtQkosYUFBbkI7QUFDQUQsRUFBQUEsTUFBTSxDQUFDRyxhQUFQLENBQXFCRCx1QkFBckI7QUFFQSxRQUFNSSxJQUFJLEdBQUdOLE1BQU0sQ0FBQ00sSUFBcEI7QUFDQUEsRUFBQUEsSUFBSSxDQUFDSCxhQUFMLENBQW1CRyxJQUFJLENBQUNDLE1BQXhCLEVBQWdDLENBQWhDO0FBQ0EsU0FBT1AsTUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIgZnJvbSAnLi90cmFja2luZy1idWZmZXIvd3JpdGFibGUtdHJhY2tpbmctYnVmZmVyJztcblxuY29uc3QgVFlQRSA9IHtcbiAgUVVFUllfTk9USUZJQ0FUSU9OUzogMSxcbiAgVFhOX0RFU0NSSVBUT1I6IDIsXG4gIFRSQUNFX0FDVElWSVRZOiAzXG59O1xuXG5jb25zdCBUWE5ERVNDUklQVE9SX0hFQURFUl9EQVRBX0xFTiA9IDQgKyA4O1xuXG5jb25zdCBUWE5ERVNDUklQVE9SX0hFQURFUl9MRU4gPSA0ICsgMiArIFRYTkRFU0NSSVBUT1JfSEVBREVSX0RBVEFfTEVOO1xuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVUb1RyYWNraW5nQnVmZmVyKGJ1ZmZlcjogV3JpdGFibGVUcmFja2luZ0J1ZmZlciwgdHhuRGVzY3JpcHRvcjogQnVmZmVyLCBvdXRzdGFuZGluZ1JlcXVlc3RDb3VudDogbnVtYmVyKSB7XG4gIGJ1ZmZlci53cml0ZVVJbnQzMkxFKDApO1xuICBidWZmZXIud3JpdGVVSW50MzJMRShUWE5ERVNDUklQVE9SX0hFQURFUl9MRU4pO1xuICBidWZmZXIud3JpdGVVSW50MTZMRShUWVBFLlRYTl9ERVNDUklQVE9SKTtcbiAgYnVmZmVyLndyaXRlQnVmZmVyKHR4bkRlc2NyaXB0b3IpO1xuICBidWZmZXIud3JpdGVVSW50MzJMRShvdXRzdGFuZGluZ1JlcXVlc3RDb3VudCk7XG5cbiAgY29uc3QgZGF0YSA9IGJ1ZmZlci5kYXRhO1xuICBkYXRhLndyaXRlVUludDMyTEUoZGF0YS5sZW5ndGgsIDApO1xuICByZXR1cm4gYnVmZmVyO1xufVxuIl19
|
|
@@ -108,4 +108,5 @@ class AeadAes256CbcHmac256Algorithm {
|
|
|
108
108
|
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
-
exports.AeadAes256CbcHmac256Algorithm = AeadAes256CbcHmac256Algorithm;
|
|
111
|
+
exports.AeadAes256CbcHmac256Algorithm = AeadAes256CbcHmac256Algorithm;
|
|
112
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbHdheXMtZW5jcnlwdGVkL2FlYWQtYWVzLTI1Ni1jYmMtaG1hYy1hbGdvcml0aG0udHMiXSwibmFtZXMiOlsiYWxnb3JpdGhtTmFtZSIsImFsZ29yaXRobVZlcnNpb24iLCJibG9ja1NpemVJbkJ5dGVzIiwiQWVhZEFlczI1NkNiY0htYWMyNTZBbGdvcml0aG0iLCJjb25zdHJ1Y3RvciIsImNvbHVtbkVuY3J5cHRpb25LZXkiLCJlbmNyeXB0aW9uVHlwZSIsImNvbHVtbkVuY3J5cHRpb25rZXkiLCJpc0RldGVybWluaXN0aWMiLCJrZXlTaXplSW5CeXRlcyIsInZlcnNpb24iLCJ2ZXJzaW9uU2l6ZSIsIm1pbmltdW1DaXBoZXJUZXh0TGVuZ3RoSW5CeXRlc05vQXV0aGVudGljYXRpb25UYWciLCJtaW5pbXVtQ2lwaGVyVGV4dExlbmd0aEluQnl0ZXNXaXRoQXV0aGVudGljYXRpb25UYWciLCJrZXlTaXplIiwiQnVmZmVyIiwiZnJvbSIsIlNRTFNlcnZlckVuY3J5cHRpb25UeXBlIiwiRGV0ZXJtaW5pc3RpYyIsImVuY3J5cHREYXRhIiwicGxhaW50VGV4dCIsIml2IiwiaG1hY0l2IiwiZ2V0SXZLZXkiLCJ1cGRhdGUiLCJkaWdlc3QiLCJzbGljZSIsImVuY3J5cHRDaXBoZXIiLCJnZXRFbmNyeXB0aW9uS2V5IiwiZW5jcnlwdGVkQnVmZmVyIiwiY29uY2F0IiwiZmluYWwiLCJhdXRoZW50aWNhdGlvblRhZyIsIl9wcmVwYXJlQXV0aGVudGljYXRpb25UYWciLCJsZW5ndGgiLCJkZWNyeXB0RGF0YSIsImNpcGhlclRleHQiLCJhbGxvYyIsIm1pbmltdW1DaXBlclRleHRMZW5ndGgiLCJFcnJvciIsInN0YXJ0SW5kZXgiLCJ0b1N0cmluZyIsImF1dGhlbnRpY2F0aW9uVGFnT2Zmc2V0IiwiY29weSIsImNpcGhlclRleHRPZmZzZXQiLCJjaXBoZXJUZXh0Q291bnQiLCJjb21wYXJlIiwiTWF0aCIsIm1pbiIsInBsYWluVGV4dCIsImRlY2lw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LE1BQUwsQ0FBWSxLQUFLYixXQUFqQjtBQUNBLFdBQU8yQyxJQUFJLENBQUM3QixNQUFMLEVBQVA7QUFDRDs7QUE3RnVFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBjb2RlIGlzIGJhc2VkIG9uIHRoZSBgbXNzcWwtamRiY2AgbGlicmFyeSBwdWJsaXNoZWQgdW5kZXIgdGhlIGNvbmRpdGlvbnMgb2YgTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgKGMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uXG5cbmltcG9ydCB7IEVuY3J5cHRpb25BbGdvcml0aG0sIFNRTFNlcnZlckVuY3J5cHRpb25UeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBjcmVhdGVIbWFjLCByYW5kb21CeXRlcywgY3JlYXRlQ2lwaGVyaXYsIGNyZWF0ZURlY2lwaGVyaXYgfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgQWVhZEFlczI1NkNiY0htYWMyNTZFbmNyeXB0aW9uS2V5LCBrZXlTaXplIH0gZnJvbSAnLi9hZWFkLWFlcy0yNTYtY2JjLWhtYWMtZW5jcnlwdGlvbi1rZXknO1xuXG5leHBvcnQgY29uc3QgYWxnb3JpdGhtTmFtZSA9ICdBRUFEX0FFU18yNTZfQ0JDX0hNQUNfU0hBMjU2JztcbmNvbnN0IGFsZ29yaXRobVZlcnNpb24gPSAweDE7XG5jb25zdCBibG9ja1NpemVJbkJ5dGVzID0gMTY7XG5cbmV4cG9ydCBjbGFzcyBBZWFkQWVzMjU2Q2JjSG1hYzI1NkFsZ29yaXRobSBpbXBsZW1lbnRzIEVuY3J5cHRpb25BbGdvcml0aG0ge1xuICBwcml2YXRlIGNvbHVtbkVuY3J5cHRpb25rZXk6IEFlYWRBZXMyNTZDYmNIbWFjMjU2RW5jcnlwdGlvbktleTtcbiAgcHJpdmF0ZSBpc0RldGVybWluaXN0aWM6IGJvb2xlYW47XG4gIHByaXZhdGUga2V5U2l6ZUluQnl0ZXM6IG51bWJlcjtcbiAgcHJpdmF0ZSB2ZXJzaW9uOiBCdWZmZXI7XG4gIHByaXZhdGUgdmVyc2lvblNpemU6IEJ1ZmZlcjtcbiAgcHJpdmF0ZSBtaW5pbXVtQ2lwaGVyVGV4dExlbmd0aEluQnl0ZXNOb0F1dGhlbnRpY2F0aW9uVGFnOiBudW1iZXI7XG4gIHByaXZhdGUgbWluaW11bUNpcGhlclRleHRMZW5ndGhJbkJ5dGVzV2l0aEF1dGhlbnRpY2F0aW9uVGFnOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoY29sdW1uRW5jcnlwdGlvbktleTogQWVhZEFlczI1NkNiY0htYWMyNTZFbmNyeXB0aW9uS2V5LCBlbmNyeXB0aW9uVHlwZTogU1FMU2VydmVyRW5jcnlwdGlvblR5cGUpIHtcbiAgICB0aGlzLmtleVNpemVJbkJ5dGVzID0ga2V5U2l6ZSAvIDg7XG4gICAgdGhpcy52ZXJzaW9uID0gQnVmZmVyLmZyb20oW2FsZ29yaXRobVZlcnNpb25dKTtcbiAgICB0aGlzLnZlcnNpb25TaXplID0gQnVmZmVyLmZyb20oWzFdKTtcbiAgICB0aGlzLm1pbmltdW1DaXBoZXJUZXh0TGVuZ3RoSW5CeXRlc05vQXV0aGVudGljYXRpb25UYWcgPSAxICsgYmxvY2tTaXplSW5CeXRlcyArIGJsb2NrU2l6ZUluQnl0ZXM7XG4gICAgdGhpcy5taW5pbXVtQ2lwaGVyVGV4dExlbmd0aEluQnl0ZXNXaXRoQXV0aGVudGljYXRpb25UYWcgPSB0aGlzLm1pbmltdW1DaXBoZXJUZXh0TGVuZ3RoSW5CeXRlc05vQXV0aGVudGljYXRpb25UYWcgKyB0aGlzLmtleVNpemVJbkJ5dGVzO1xuICAgIHRoaXMuY29sdW1uRW5jcnlwdGlvbmtleSA9IGNvbHVtbkVuY3J5cHRpb25LZXk7XG5cbiAgICB0aGlzLmlzRGV0ZXJtaW5pc3RpYyA9IGVuY3J5cHRpb25UeXBlID09PSBTUUxTZXJ2ZXJFbmNyeXB0aW9uVHlwZS5EZXRlcm1pbmlzdGljO1xuICB9XG5cbiAgZW5jcnlwdERhdGEocGxhaW50VGV4dDogQnVmZmVyKTogQnVmZmVyIHtcbiAgICBsZXQgaXY6IEJ1ZmZlcjtcblxuICAgIGlmICh0aGlzLmlzRGV0ZXJtaW5pc3RpYyA9PT0gdHJ1ZSkge1xuICAgICAgY29uc3QgaG1hY0l2ID0gY3JlYXRlSG1hYygnc2hhMjU2JywgdGhpcy5jb2x1bW5FbmNyeXB0aW9ua2V5LmdldEl2S2V5KCkpO1xuICAgICAgaG1hY0l2LnVwZGF0ZShwbGFpbnRUZXh0KTtcbiAgICAgIGl2ID0gaG1hY0l2LmRpZ2VzdCgpLnNsaWNlKDAsIGJsb2NrU2l6ZUluQnl0ZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpdiA9IHJhbmRvbUJ5dGVzKGJsb2NrU2l6ZUluQnl0ZXMpO1xuICAgIH1cblxuICAgIGNvbnN0IGVuY3J5cHRDaXBoZXIgPSBjcmVhdGVDaXBoZXJpdignYWVzLTI1Ni1jYmMnLCB0aGlzLmNvbHVtbkVuY3J5cHRpb25rZXkuZ2V0RW5jcnlwdGlvbktleSgpLCBpdik7XG5cbiAgICBjb25zdCBlbmNyeXB0ZWRCdWZmZXIgPSBCdWZmZXIuY29uY2F0KFtlbmNyeXB0Q2lwaGVyLnVwZGF0ZShwbGFpbnRUZXh0KSwgZW5jcnlwdENpcGhlci5maW5hbCgpXSk7XG5cbiAgICBjb25zdCBhdXRoZW50aWNhdGlvblRhZzogQnVmZmVyID0gdGhpcy5fcHJlcGFyZUF1dGhlbnRpY2F0aW9uVGFnKGl2LCBlbmNyeXB0ZWRCdWZmZXIsIDAsIGVuY3J5cHRlZEJ1ZmZlci5sZW5ndGgpO1xuXG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW0J1ZmZlci5mcm9tKFthbGdvcml0aG1WZXJzaW9uXSksIGF1dGhlbnRpY2F0aW9uVGFnLCBpdiwgZW5jcnlwdGVkQnVmZmVyXSk7XG4gIH1cblxuICBkZWNyeXB0RGF0YShjaXBoZXJUZXh0OiBCdWZmZXIpOiBCdWZmZXIge1xuICAgIGNvbnN0IGl2OiBCdWZmZXIgPSBCdWZmZXIuYWxsb2MoYmxvY2tTaXplSW5CeXRlcyk7XG5cbiAgICBjb25zdCBtaW5pbXVtQ2lwZXJUZXh0TGVuZ3RoOiBudW1iZXIgPSB0aGlzLm1pbmltdW1DaXBoZXJUZXh0TGVuZ3RoSW5CeXRlc1dpdGhBdXRoZW50aWNhdGlvblRhZztcblxuICAgIGlmIChjaXBoZXJUZXh0Lmxlbmd0aCA8IG1pbmltdW1DaXBlclRleHRMZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU3BlY2lmaWVkIGNpcGhlcnRleHQgaGFzIGFuIGludmFsaWQgc2l6ZSBvZiAke2NpcGhlclRleHQubGVuZ3RofSBieXRlcywgd2hpY2ggaXMgYmVsb3cgdGhlIG1pbmltdW0gJHttaW5pbXVtQ2lwZXJUZXh0TGVuZ3RofSBieXRlcyByZXF1aXJlZCBmb3IgZGVjcnlwdGlvbi5gKTtcbiAgICB9XG5cbiAgICBsZXQgc3RhcnRJbmRleCA9IDA7XG4gICAgaWYgKGNpcGhlclRleHRbMF0gIT09IGFsZ29yaXRobVZlcnNpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHNwZWNpZmllZCBjaXBoZXJ0ZXh0J3MgZW5jcnlwdGlvbiBhbGdvcml0aG0gdmVyc2lvbiAke0J1ZmZlci5mcm9tKFtjaXBoZXJUZXh0WzBdXSkudG9TdHJpbmcoJ2hleCcpfSBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZW5jcnlwdGlvbiBhbGdvcml0aG0gdmVyc2lvbiAke2FsZ29yaXRobVZlcnNpb259LmApO1xuICAgIH1cblxuICAgIHN0YXJ0SW5kZXggKz0gMTtcbiAgICBsZXQgYXV0aGVudGljYXRpb25UYWdPZmZzZXQgPSAwO1xuXG4gICAgYXV0aGVudGljYXRpb25UYWdPZmZzZXQgPSBzdGFydEluZGV4O1xuICAgIHN0YXJ0SW5kZXggKz0gdGhpcy5rZXlTaXplSW5CeXRlcztcblxuICAgIGNpcGhlclRleHQuY29weShpdiwgMCwgc3RhcnRJbmRleCwgc3RhcnRJbmRleCArIGl2Lmxlbmd0aCk7XG4gICAgc3RhcnRJbmRleCArPSBpdi5sZW5ndGg7XG5cbiAgICBjb25zdCBjaXBoZXJUZXh0T2Zmc2V0ID0gc3RhcnRJbmRleDtcbiAgICBjb25zdCBjaXBoZXJUZXh0Q291bnQgPSBjaXBoZXJUZXh0Lmxlbmd0aCAtIHN0YXJ0SW5kZXg7XG5cbiAgICBjb25zdCBhdXRoZW50aWNhdGlvblRhZzogQnVmZmVyID0gdGhpcy5fcHJlcGFyZUF1dGhlbnRpY2F0aW9uVGFnKGl2LCBjaXBoZXJUZXh0LCBjaXBoZXJUZXh0T2Zmc2V0LCBjaXBoZXJUZXh0Q291bnQpO1xuXG4gICAgaWYgKDAgIT09IGF1dGhlbnRpY2F0aW9uVGFnLmNvbXBhcmUoY2lwaGVyVGV4dCwgYXV0aGVudGljYXRpb25UYWdPZmZzZXQsIE1hdGgubWluKGF1dGhlbnRpY2F0aW9uVGFnT2Zmc2V0ICsgY2lwaGVyVGV4dENvdW50LCBhdXRoZW50aWNhdGlvblRhZ09mZnNldCArIGF1dGhlbnRpY2F0aW9uVGFnLmxlbmd0aCksIDAsIE1hdGgubWluKGNpcGhlclRleHRDb3VudCwgYXV0aGVudGljYXRpb25UYWcubGVuZ3RoKSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU3BlY2lmaWVkIGNpcGhlcnRleHQgaGFzIGFuIGludmFsaWQgYXV0aGVudGljYXRpb24gdGFnLicpO1xuICAgIH1cblxuICAgIGxldCBwbGFpblRleHQ6IEJ1ZmZlcjtcblxuICAgIGNvbnN0IGRlY2lwaGVyID0gY3JlYXRlRGVjaXBoZXJpdignYWVzLTI1Ni1jYmMnLCB0aGlzLmNvbHVtbkVuY3J5cHRpb25rZXkuZ2V0RW5jcnlwdGlvbktleSgpLCBpdik7XG4gICAgdHJ5IHtcbiAgICAgIHBsYWluVGV4dCA9IGRlY2lwaGVyLnVwZGF0ZShjaXBoZXJUZXh0LnNsaWNlKGNpcGhlclRleHRPZmZzZXQsIGNpcGhlclRleHRPZmZzZXQgKyBjaXBoZXJUZXh0Q291bnQpKTtcbiAgICAgIHBsYWluVGV4dCA9IEJ1ZmZlci5jb25jYXQoW3BsYWluVGV4dCwgZGVjaXBoZXIuZmluYWwoKV0pO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW50ZXJuYWwgZXJyb3Igd2hpbGUgZGVjcnlwdGlvbjogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgIH1cblxuICAgIHJldHVybiBwbGFpblRleHQ7XG4gIH1cblxuICBfcHJlcGFyZUF1dGhlbnRpY2F0aW9uVGFnKGl2OiBCdWZmZXIsIGNpcGhlclRleHQ6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIGxlbmd0aDogbnVtYmVyKTogQnVmZmVyIHtcbiAgICBjb25zdCBobWFjID0gY3JlYXRlSG1hYygnc2hhMjU2JywgdGhpcy5jb2x1bW5FbmNyeXB0aW9ua2V5LmdldE1hY0tleSgpKTtcblxuICAgIGhtYWMudXBkYXRlKHRoaXMudmVyc2lvbik7XG4gICAgaG1hYy51cGRhdGUoaXYpO1xuICAgIGhtYWMudXBkYXRlKGNpcGhlclRleHQuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBsZW5ndGgpKTtcbiAgICBobWFjLnVwZGF0ZSh0aGlzLnZlcnNpb25TaXplKTtcbiAgICByZXR1cm4gaG1hYy5kaWdlc3QoKTtcbiAgfVxufVxuIl19
|
|
@@ -74,4 +74,5 @@ class AeadAes256CbcHmac256EncryptionKey extends _symmetricKey.default {
|
|
|
74
74
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
exports.AeadAes256CbcHmac256EncryptionKey = AeadAes256CbcHmac256EncryptionKey;
|
|
77
|
+
exports.AeadAes256CbcHmac256EncryptionKey = AeadAes256CbcHmac256EncryptionKey;
|
|
78
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbHdheXMtZW5jcnlwdGVkL2FlYWQtYWVzLTI1Ni1jYmMtaG1hYy1lbmNyeXB0aW9uLWtleS50cyJdLCJuYW1lcyI6WyJrZXlTaXplIiwia2V5U2l6ZUluQnl0ZXMiLCJkZXJpdmVLZXkiLCJyb290S2V5Iiwic2FsdCIsImhtYWMiLCJ1cGRhdGUiLCJCdWZmZXIiLCJmcm9tIiwiZGlnZXN0IiwiZ2VuZXJhdGVLZXlTYWx0Iiwia2V5VHlwZSIsImFsZ29yaXRobU5hbWUiLCJBZWFkQWVzMjU2Q2JjSG1hYzI1NkVuY3J5cHRpb25LZXkiLCJTeW1tZXRyaWNLZXkiLCJjb25zdHJ1Y3RvciIsImVuY3J5cHRpb25LZXlTYWx0Rm9ybWF0IiwibWFjS2V5U2FsdEZvcm1hdCIsIml2S2V5U2FsdEZvcm1hdCIsImVuY3J5cHRpb25LZXkiLCJtYWNLZXkiLCJpdktleSIsImxlbmd0aCIsIkVycm9yIiwiZW5jS2V5QnVmZiIsIm1hY0tleUJ1ZmYiLCJpdktleUJ1ZmYiLCJlcnJvciIsIm1lc3NhZ2UiLCJnZXRFbmNyeXB0aW9uS2V5IiwiZ2V0TWFjS2V5IiwiZ2V0SXZLZXkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFHQTs7QUFDQTs7OztBQUpBO0FBQ0E7QUFLTyxNQUFNQSxPQUFPLEdBQUcsR0FBaEI7O0FBQ1AsTUFBTUMsY0FBYyxHQUFHRCxPQUFPLEdBQUcsQ0FBakM7O0FBRU8sTUFBTUUsU0FBUyxHQUFHLENBQUNDLE9BQUQsRUFBa0JDLElBQWxCLEtBQTJDO0FBQ2xFLFFBQU1DLElBQUksR0FBRyx3QkFBVyxRQUFYLEVBQXFCRixPQUFyQixDQUFiO0FBQ0FFLEVBQUFBLElBQUksQ0FBQ0MsTUFBTCxDQUFZQyxNQUFNLENBQUNDLElBQVAsQ0FBWUosSUFBWixFQUFrQixTQUFsQixDQUFaO0FBQ0EsU0FBT0MsSUFBSSxDQUFDSSxNQUFMLEVBQVA7QUFDRCxDQUpNOzs7O0FBTUEsTUFBTUMsZUFBZSxHQUFHLENBQzdCQyxPQUQ2QixFQUU3QkMsYUFGNkIsRUFHN0JaLE9BSDZCLEtBSzVCLDZCQUE0QlcsT0FBUSxPQUFyQyxHQUNDLDZCQUE0QkMsYUFBYyxtQkFBa0JaLE9BQVEsRUFOaEU7Ozs7QUFRQSxNQUFNYSxpQ0FBTixTQUFnREMscUJBQWhELENBQTZEO0FBU2xFQyxFQUFBQSxXQUFXLENBQUNaLE9BQUQsRUFBa0JTLGFBQWxCLEVBQXlDO0FBQ2xELFVBQU1ULE9BQU47QUFEa0QsU0FSbkNTLGFBUW1DO0FBQUEsU0FQNUNJLHVCQU80QztBQUFBLFNBTjVDQyxnQkFNNEM7QUFBQSxTQUw1Q0MsZUFLNEM7QUFBQSxTQUo1Q0MsYUFJNEM7QUFBQSxTQUg1Q0MsTUFHNEM7QUFBQSxTQUY1Q0MsS0FFNEM7QUFFbEQsU0FBS1QsYUFBTCxHQUFxQkEsYUFBckI7QUFDQSxTQUFLSSx1QkFBTCxHQUErQk4sZUFBZSxDQUFDLFlBQUQsRUFBZSxLQUFLRSxhQUFwQixFQUFtQ1osT0FBbkMsQ0FBOUM7QUFDQSxTQUFLaUIsZ0JBQUwsR0FBd0JQLGVBQWUsQ0FBQyxLQUFELEVBQVEsS0FBS0UsYUFBYixFQUE0QlosT0FBNUIsQ0FBdkM7QUFDQSxTQUFLa0IsZUFBTCxHQUF1QlIsZUFBZSxDQUFDLElBQUQsRUFBTyxLQUFLRSxhQUFaLEVBQTJCWixPQUEzQixDQUF0Qzs7QUFFQSxRQUFJRyxPQUFPLENBQUNtQixNQUFSLEtBQW1CckIsY0FBdkIsRUFBdUM7QUFDckMsWUFBTSxJQUFJc0IsS0FBSixDQUFXLDhFQUE2RXBCLE9BQU8sQ0FBQ21CLE1BQU8sK0JBQThCckIsY0FBZSxtQkFBa0IsS0FBS1csYUFBYyw2RUFBekwsQ0FBTjtBQUNEOztBQUVELFFBQUk7QUFDRixZQUFNWSxVQUFVLEdBQUd0QixTQUFTLENBQUNDLE9BQUQsRUFBVSxLQUFLYSx1QkFBZixDQUE1QjtBQUVBLFdBQUtHLGFBQUwsR0FBcUIsSUFBSUwscUJBQUosQ0FBaUJVLFVBQWpCLENBQXJCO0FBRUEsWUFBTUMsVUFBVSxHQUFHdkIsU0FBUyxDQUFDQyxPQUFELEVBQVUsS0FBS2MsZ0JBQWYsQ0FBNUI7QUFFQSxXQUFLRyxNQUFMLEdBQWMsSUFBSU4scUJBQUosQ0FBaUJXLFVBQWpCLENBQWQ7QUFFQSxZQUFNQyxTQUFTLEdBQUd4QixTQUFTLENBQUNDLE9BQUQsRUFBVSxLQUFLZSxlQUFmLENBQTNCO0FBRUEsV0FBS0csS0FBTCxHQUFhLElBQUlQLHFCQUFKLENBQWlCWSxTQUFqQixDQUFiO0FBQ0QsS0FaRCxDQVlFLE9BQU9DLEtBQVAsRUFBbUI7QUFDbkIsWUFBTSxJQUFJSixLQUFKLENBQVcsMkJBQTBCSSxLQUFLLENBQUNDLE9BQVEsR0FBbkQsQ0FBTjtBQUNEO0FBQ0Y7O0FBRURDLEVBQUFBLGdCQUFnQixHQUFXO0FBQ3pCLFdBQU8sS0FBS1YsYUFBTCxDQUFtQmhCLE9BQTFCO0FBQ0Q7O0FBRUQyQixFQUFBQSxTQUFTLEdBQVc7QUFDbEIsV0FBTyxLQUFLVixNQUFMLENBQVlqQixPQUFuQjtBQUNEOztBQUVENEIsRUFBQUEsUUFBUSxHQUFXO0FBQ2pCLFdBQU8sS0FBS1YsS0FBTCxDQUFXbEIsT0FBbEI7QUFDRDs7QUEvQ2lFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBjb2RlIGlzIGJhc2VkIG9uIHRoZSBgbXNzcWwtamRiY2AgbGlicmFyeSBwdWJsaXNoZWQgdW5kZXIgdGhlIGNvbmRpdGlvbnMgb2YgTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgKGMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uXG5cbmltcG9ydCB7IGNyZWF0ZUhtYWMgfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IFN5bW1ldHJpY0tleSBmcm9tICcuL3N5bW1ldHJpYy1rZXknO1xuXG5leHBvcnQgY29uc3Qga2V5U2l6ZSA9IDI1NjtcbmNvbnN0IGtleVNpemVJbkJ5dGVzID0ga2V5U2l6ZSAvIDg7XG5cbmV4cG9ydCBjb25zdCBkZXJpdmVLZXkgPSAocm9vdEtleTogQnVmZmVyLCBzYWx0OiBzdHJpbmcpOiBCdWZmZXIgPT4ge1xuICBjb25zdCBobWFjID0gY3JlYXRlSG1hYygnc2hhMjU2Jywgcm9vdEtleSk7XG4gIGhtYWMudXBkYXRlKEJ1ZmZlci5mcm9tKHNhbHQsICd1dGYxNmxlJykpO1xuICByZXR1cm4gaG1hYy5kaWdlc3QoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZUtleVNhbHQgPSAoXG4gIGtleVR5cGU6ICdlbmNyeXB0aW9uJyB8ICdNQUMnIHwgJ0lWJyxcbiAgYWxnb3JpdGhtTmFtZTogc3RyaW5nLFxuICBrZXlTaXplOiBudW1iZXIsXG4pOiBzdHJpbmcgPT5cbiAgYE1pY3Jvc29mdCBTUUwgU2VydmVyIGNlbGwgJHtrZXlUeXBlfSBrZXkgYCArXG4gIGB3aXRoIGVuY3J5cHRpb24gYWxnb3JpdGhtOiR7YWxnb3JpdGhtTmFtZX0gYW5kIGtleSBsZW5ndGg6JHtrZXlTaXplfWA7XG5cbmV4cG9ydCBjbGFzcyBBZWFkQWVzMjU2Q2JjSG1hYzI1NkVuY3J5cHRpb25LZXkgZXh0ZW5kcyBTeW1tZXRyaWNLZXkge1xuICBwcml2YXRlIHJlYWRvbmx5IGFsZ29yaXRobU5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBlbmNyeXB0aW9uS2V5U2FsdEZvcm1hdDogc3RyaW5nO1xuICBwcml2YXRlIG1hY0tleVNhbHRGb3JtYXQ6IHN0cmluZztcbiAgcHJpdmF0ZSBpdktleVNhbHRGb3JtYXQ6IHN0cmluZztcbiAgcHJpdmF0ZSBlbmNyeXB0aW9uS2V5OiBTeW1tZXRyaWNLZXk7XG4gIHByaXZhdGUgbWFjS2V5OiBTeW1tZXRyaWNLZXk7XG4gIHByaXZhdGUgaXZLZXk6IFN5bW1ldHJpY0tleTtcblxuICBjb25zdHJ1Y3Rvcihyb290S2V5OiBCdWZmZXIsIGFsZ29yaXRobU5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKHJvb3RLZXkpO1xuICAgIHRoaXMuYWxnb3JpdGhtTmFtZSA9IGFsZ29yaXRobU5hbWU7XG4gICAgdGhpcy5lbmNyeXB0aW9uS2V5U2FsdEZvcm1hdCA9IGdlbmVyYXRlS2V5U2FsdCgnZW5jcnlwdGlvbicsIHRoaXMuYWxnb3JpdGhtTmFtZSwga2V5U2l6ZSk7XG4gICAgdGhpcy5tYWNLZXlTYWx0Rm9ybWF0ID0gZ2VuZXJhdGVLZXlTYWx0KCdNQUMnLCB0aGlzLmFsZ29yaXRobU5hbWUsIGtleVNpemUpO1xuICAgIHRoaXMuaXZLZXlTYWx0Rm9ybWF0ID0gZ2VuZXJhdGVLZXlTYWx0KCdJVicsIHRoaXMuYWxnb3JpdGhtTmFtZSwga2V5U2l6ZSk7XG5cbiAgICBpZiAocm9vdEtleS5sZW5ndGggIT09IGtleVNpemVJbkJ5dGVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBjb2x1bW4gZW5jcnlwdGlvbiBrZXkgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGRlY3J5cHRlZCBidXQgaXQncyBsZW5ndGg6ICR7cm9vdEtleS5sZW5ndGh9IGRvZXMgbm90IG1hdGNoIHRoZSBsZW5ndGg6ICR7a2V5U2l6ZUluQnl0ZXN9IGZvciBhbGdvcml0aG0gXCIke3RoaXMuYWxnb3JpdGhtTmFtZX1cIi4gVmVyaWZ5IHRoZSBlbmNyeXB0ZWQgdmFsdWUgb2YgdGhlIGNvbHVtbiBlbmNyeXB0aW9uIGtleSBpbiB0aGUgZGF0YWJhc2UuYCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGVuY0tleUJ1ZmYgPSBkZXJpdmVLZXkocm9vdEtleSwgdGhpcy5lbmNyeXB0aW9uS2V5U2FsdEZvcm1hdCk7XG5cbiAgICAgIHRoaXMuZW5jcnlwdGlvbktleSA9IG5ldyBTeW1tZXRyaWNLZXkoZW5jS2V5QnVmZik7XG5cbiAgICAgIGNvbnN0IG1hY0tleUJ1ZmYgPSBkZXJpdmVLZXkocm9vdEtleSwgdGhpcy5tYWNLZXlTYWx0Rm9ybWF0KTtcblxuICAgICAgdGhpcy5tYWNLZXkgPSBuZXcgU3ltbWV0cmljS2V5KG1hY0tleUJ1ZmYpO1xuXG4gICAgICBjb25zdCBpdktleUJ1ZmYgPSBkZXJpdmVLZXkocm9vdEtleSwgdGhpcy5pdktleVNhbHRGb3JtYXQpO1xuXG4gICAgICB0aGlzLml2S2V5ID0gbmV3IFN5bW1ldHJpY0tleShpdktleUJ1ZmYpO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgS2V5IGV4dHJhY3Rpb24gZmFpbGVkIDogJHtlcnJvci5tZXNzYWdlfS5gKTtcbiAgICB9XG4gIH1cblxuICBnZXRFbmNyeXB0aW9uS2V5KCk6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIHRoaXMuZW5jcnlwdGlvbktleS5yb290S2V5O1xuICB9XG5cbiAgZ2V0TWFjS2V5KCk6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIHRoaXMubWFjS2V5LnJvb3RLZXk7XG4gIH1cblxuICBnZXRJdktleSgpOiBCdWZmZXIge1xuICAgIHJldHVybiB0aGlzLml2S2V5LnJvb3RLZXk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -48,4 +48,5 @@ class CEKEntry {
|
|
|
48
48
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
exports.CEKEntry = CEKEntry;
|
|
51
|
+
exports.CEKEntry = CEKEntry;
|
|
52
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbHdheXMtZW5jcnlwdGVkL2Nlay1lbnRyeS50cyJdLCJuYW1lcyI6WyJDRUtFbnRyeSIsImNvbnN0cnVjdG9yIiwib3JkaW5hbFZhbCIsImNvbHVtbkVuY3J5cHRpb25LZXlWYWx1ZXMiLCJvcmRpbmFsIiwiZGF0YWJhc2VJZCIsImNla0lkIiwiY2VrVmVyc2lvbiIsImNla01kVmVyc2lvbiIsIkJ1ZmZlciIsImFsbG9jIiwiYWRkIiwiZW5jcnlwdGVkS2V5IiwiZGJJZCIsImtleUlkIiwia2V5VmVyc2lvbiIsIm1kVmVyc2lvbiIsImtleVBhdGgiLCJrZXlTdG9yZU5hbWUiLCJhbGdvcml0aG1OYW1lIiwiZW5jcnlwdGlvbktleSIsInB1c2giLCJsZW5ndGgiLCJFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFJTyxNQUFNQSxRQUFOLENBQWU7QUFRcEJDLEVBQUFBLFdBQVcsQ0FBQ0MsVUFBRCxFQUFxQjtBQUFBLFNBUGhDQyx5QkFPZ0M7QUFBQSxTQU5oQ0MsT0FNZ0M7QUFBQSxTQUxoQ0MsVUFLZ0M7QUFBQSxTQUpoQ0MsS0FJZ0M7QUFBQSxTQUhoQ0MsVUFHZ0M7QUFBQSxTQUZoQ0MsWUFFZ0M7QUFDOUIsU0FBS0osT0FBTCxHQUFlRixVQUFmO0FBQ0EsU0FBS0csVUFBTCxHQUFrQixDQUFsQjtBQUNBLFNBQUtDLEtBQUwsR0FBYSxDQUFiO0FBQ0EsU0FBS0MsVUFBTCxHQUFrQixDQUFsQjtBQUNBLFNBQUtDLFlBQUwsR0FBb0JDLE1BQU0sQ0FBQ0MsS0FBUCxDQUFhLENBQWIsQ0FBcEI7QUFDQSxTQUFLUCx5QkFBTCxHQUFpQyxFQUFqQztBQUNEOztBQUVEUSxFQUFBQSxHQUFHLENBQUNDLFlBQUQsRUFBdUJDLElBQXZCLEVBQXFDQyxLQUFyQyxFQUFvREMsVUFBcEQsRUFBd0VDLFNBQXhFLEVBQTJGQyxPQUEzRixFQUE0R0MsWUFBNUcsRUFBa0lDLGFBQWxJLEVBQStKO0FBQ2hLLFVBQU1DLGFBQWdDLEdBQUc7QUFDdkNSLE1BQUFBLFlBRHVDO0FBRXZDQyxNQUFBQSxJQUZ1QztBQUd2Q0MsTUFBQUEsS0FIdUM7QUFJdkNDLE1BQUFBLFVBSnVDO0FBS3ZDQyxNQUFBQSxTQUx1QztBQU12Q0MsTUFBQUEsT0FOdUM7QUFPdkNDLE1BQUFBLFlBUHVDO0FBUXZDQyxNQUFBQTtBQVJ1QyxLQUF6QztBQVdBLFNBQUtoQix5QkFBTCxDQUErQmtCLElBQS9CLENBQW9DRCxhQUFwQzs7QUFFQSxRQUFJLEtBQUtmLFVBQUwsS0FBb0IsQ0FBeEIsRUFBMkI7QUFDekIsV0FBS0EsVUFBTCxHQUFrQlEsSUFBbEI7QUFDQSxXQUFLUCxLQUFMLEdBQWFRLEtBQWI7QUFDQSxXQUFLUCxVQUFMLEdBQWtCUSxVQUFsQjtBQUNBLFdBQUtQLFlBQUwsR0FBb0JRLFNBQXBCO0FBQ0QsS0FMRCxNQUtPLElBQUssS0FBS1gsVUFBTCxLQUFvQlEsSUFBckIsSUFBK0IsS0FBS1AsS0FBTCxLQUFlUSxLQUE5QyxJQUF5RCxLQUFLUCxVQUFMLEtBQW9CUSxVQUE3RSxJQUE0RixDQUFDLEtBQUtQLFlBQWxHLElBQWtILENBQUNRLFNBQW5ILElBQWdJLEtBQUtSLFlBQUwsQ0FBa0JjLE1BQWxCLEtBQTZCTixTQUFTLENBQUNNLE1BQTNLLEVBQW1MO0FBQ3hMLFlBQU0sSUFBSUMsS0FBSixDQUFVLHdEQUFWLENBQU47QUFDRDtBQUNGOztBQXZDbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGNvZGUgaXMgYmFzZWQgb24gdGhlIGBtc3NxbC1qZGJjYCBsaWJyYXJ5IHB1Ymxpc2hlZCB1bmRlciB0aGUgY29uZGl0aW9ucyBvZiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCAoYykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb25cblxuaW1wb3J0IHsgRW5jcnlwdGlvbktleUluZm8gfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIENFS0VudHJ5IHtcbiAgY29sdW1uRW5jcnlwdGlvbktleVZhbHVlczogRW5jcnlwdGlvbktleUluZm9bXTtcbiAgb3JkaW5hbDogbnVtYmVyO1xuICBkYXRhYmFzZUlkOiBudW1iZXI7XG4gIGNla0lkOiBudW1iZXI7XG4gIGNla1ZlcnNpb246IG51bWJlcjtcbiAgY2VrTWRWZXJzaW9uOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3Iob3JkaW5hbFZhbDogbnVtYmVyKSB7XG4gICAgdGhpcy5vcmRpbmFsID0gb3JkaW5hbFZhbDtcbiAgICB0aGlzLmRhdGFiYXNlSWQgPSAwO1xuICAgIHRoaXMuY2VrSWQgPSAwO1xuICAgIHRoaXMuY2VrVmVyc2lvbiA9IDA7XG4gICAgdGhpcy5jZWtNZFZlcnNpb24gPSBCdWZmZXIuYWxsb2MoMCk7XG4gICAgdGhpcy5jb2x1bW5FbmNyeXB0aW9uS2V5VmFsdWVzID0gW107XG4gIH1cblxuICBhZGQoZW5jcnlwdGVkS2V5OiBCdWZmZXIsIGRiSWQ6IG51bWJlciwga2V5SWQ6IG51bWJlciwga2V5VmVyc2lvbjogbnVtYmVyLCBtZFZlcnNpb246IEJ1ZmZlciwga2V5UGF0aDogc3RyaW5nLCBrZXlTdG9yZU5hbWU6IHN0cmluZywgYWxnb3JpdGhtTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZW5jcnlwdGlvbktleTogRW5jcnlwdGlvbktleUluZm8gPSB7XG4gICAgICBlbmNyeXB0ZWRLZXksXG4gICAgICBkYklkLFxuICAgICAga2V5SWQsXG4gICAgICBrZXlWZXJzaW9uLFxuICAgICAgbWRWZXJzaW9uLFxuICAgICAga2V5UGF0aCxcbiAgICAgIGtleVN0b3JlTmFtZSxcbiAgICAgIGFsZ29yaXRobU5hbWUsXG4gICAgfTtcblxuICAgIHRoaXMuY29sdW1uRW5jcnlwdGlvbktleVZhbHVlcy5wdXNoKGVuY3J5cHRpb25LZXkpO1xuXG4gICAgaWYgKHRoaXMuZGF0YWJhc2VJZCA9PT0gMCkge1xuICAgICAgdGhpcy5kYXRhYmFzZUlkID0gZGJJZDtcbiAgICAgIHRoaXMuY2VrSWQgPSBrZXlJZDtcbiAgICAgIHRoaXMuY2VrVmVyc2lvbiA9IGtleVZlcnNpb247XG4gICAgICB0aGlzLmNla01kVmVyc2lvbiA9IG1kVmVyc2lvbjtcbiAgICB9IGVsc2UgaWYgKCh0aGlzLmRhdGFiYXNlSWQgIT09IGRiSWQpIHx8ICh0aGlzLmNla0lkICE9PSBrZXlJZCkgfHwgKHRoaXMuY2VrVmVyc2lvbiAhPT0ga2V5VmVyc2lvbikgfHwgIXRoaXMuY2VrTWRWZXJzaW9uIHx8ICFtZFZlcnNpb24gfHwgdGhpcy5jZWtNZFZlcnNpb24ubGVuZ3RoICE9PSBtZFZlcnNpb24ubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZGF0YWJhc2VJZCwgY2VrSWQsIGNla1ZlcnNpb24gb3IgY2VrTWRWZXJzaW9uLicpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -108,4 +108,5 @@ const getParameterEncryptionMetadata = (connection, request, callback) => {
|
|
|
108
108
|
connection.makeRequest(metadataRequest, _packet.TYPE.RPC_REQUEST, new _rpcrequestPayload.default(metadataRequest.sqlTextOrProcedure, metadataRequest.parameters, connection.currentTransactionDescriptor(), connection.config.options, connection.databaseCollation));
|
|
109
109
|
};
|
|
110
110
|
|
|
111
|
-
exports.getParameterEncryptionMetadata = getParameterEncryptionMetadata;
|
|
111
|
+
exports.getParameterEncryptionMetadata = getParameterEncryptionMetadata;
|
|
112
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbHdheXMtZW5jcnlwdGVkL2dldC1wYXJhbWV0ZXItZW5jcnlwdGlvbi1tZXRhZGF0YS50cyJdLCJuYW1lcyI6WyJnZXRQYXJhbWV0ZXJFbmNyeXB0aW9uTWV0YWRhdGEiLCJjb25uZWN0aW9uIiwicmVxdWVzdCIsImNhbGxiYWNrIiwiY3J5cHRvTWV0YWRhdGFMb2FkZWQiLCJtZXRhZGF0YVJlcXVlc3QiLCJSZXF1ZXN0IiwiZXJyb3IiLCJkZWNyeXB0U3ltbWV0cmljS2V5UHJvbWlzZXMiLCJjZWtMaXN0IiwicGFyYW1Db3VudCIsImNvbHVtbnMiLCJyZXN1bHRSb3dzIiwiaXNGaXJzdFJlY29yZFNldCIsInNvbWUiLCJjb2wiLCJtZXRhZGF0YSIsImNvbE5hbWUiLCJjdXJyZW50T3JkaW5hbCIsIkRlc2NyaWJlUGFyYW1ldGVyRW5jcnlwdGlvblJlc3VsdFNldDEiLCJLZXlPcmRpbmFsIiwidmFsdWUiLCJjZWtFbnRyeSIsIkNFS0VudHJ5Iiwib3JkaW5hbCIsImFkZCIsIkVuY3J5cHRlZEtleSIsIkRiSWQiLCJLZXlJZCIsIktleVZlcnNpb24iLCJLZXlNZFZlcnNpb24iLCJLZXlQYXRoIiwiUHJvdmlkZXJOYW1lIiwiS2V5RW5jcnlwdGlvbkFsZ29yaXRobSIsInBhcmFtTmFtZSIsIkRlc2NyaWJlUGFyYW1ldGVyRW5jcnlwdGlvblJlc3VsdFNldDIiLCJQYXJhbWV0ZXJOYW1lIiwicGFyYW1JbmRleCIsInBhcmFtZXRlcnMiLCJmaW5kSW5kZXgiLCJwYXJhbSIsIm5hbWUiLCJjZWtPcmRpbmFsIiwiQ29sdW1uRW5jcnlwdGlvbktleU9yZGluYWwiLCJsZW5ndGgiLCJFcnJvciIsImVuY1R5cGUiLCJDb2x1bW5FbmNyeXRpb25UeXBlIiwiU1FMU2VydmVyRW5jcnlwdGlvblR5cGUiLCJQbGFpblRleHQiLCJjcnlwdG9NZXRhZGF0YSIsImNpcGhlckFsZ29yaXRobUlkIiwiQ29sdW1uRW5jcnlwdGlvbkFsZ29yaXRobSIsImVuY3J5cHRpb25UeXBlIiwibm9ybWFsaXphdGlvblJ1bGVWZXJzaW9uIiwiQnVmZmVyIiwiZnJvbSIsIk5vcm1hbGl6YXRpb25SdWxlVmVyc2lvbiIsInB1c2giLCJjb25maWciLCJvcHRpb25zIiwiZm9yY2VFbmNyeXB0Iiwic3FsVGV4dE9yUHJvY2VkdXJlIiwiUHJvbWlzZSIsImFsbCIsInRoZW4iLCJwcm9jZXNzIiwibmV4dFRpY2siLCJhZGRQYXJhbWV0ZXIiLCJUWVBFUyIsIk5WYXJDaGFyIiwibWFrZVBhcmFtc1BhcmFtZXRlciIsIm9uIiwibWFrZVJlcXVlc3QiLCJUWVBFIiwiUlBDX1JFUVVFU1QiLCJScGNSZXF1ZXN0UGF5bG9hZCIsImN1cnJlbnRUcmFuc2FjdGlvbkRlc2NyaXB0b3IiLCJkYXRhYmFzZUNvbGxhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOzs7O0FBVkE7QUFDQTtBQVdPLE1BQU1BLDhCQUE4QixHQUFHLENBQUNDLFVBQUQsRUFBeUJDLE9BQXpCLEVBQTJDQyxRQUEzQyxLQUFpRjtBQUM3SCxNQUFJRCxPQUFPLENBQUNFLG9CQUFSLEtBQWlDLElBQXJDLEVBQTJDO0FBQ3pDLFdBQU9ELFFBQVEsRUFBZjtBQUNEOztBQUVELFFBQU1FLGVBQWUsR0FBRyxJQUFJQyxnQkFBSixDQUFZLGtDQUFaLEVBQWlEQyxLQUFELElBQVc7QUFDakYsUUFBSUEsS0FBSixFQUFXO0FBQ1QsYUFBT0osUUFBUSxDQUFDSSxLQUFELENBQWY7QUFDRDs7QUFFRCxVQUFNQywyQkFBNEMsR0FBRyxFQUFyRDtBQUNBLFVBQU1DLE9BQW1CLEdBQUcsRUFBNUI7QUFDQSxRQUFJQyxVQUFVLEdBQUcsQ0FBakI7O0FBRUEsU0FBSyxNQUFNQyxPQUFYLElBQXNCQyxVQUF0QixFQUFrQztBQUNoQyxVQUFJO0FBQ0YsY0FBTUMsZ0JBQWdCLEdBQUdGLE9BQU8sQ0FBQ0csSUFBUixDQUFjQyxHQUFELElBQWMsQ0FBQ0EsR0FBRyxJQUFJQSxH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TUFBN0IsRUFBcUNDLHFCQUFNQyxRQUEzQyxFQUFxRHBFLE9BQU8sQ0FBQzRELGtCQUE3RDs7QUFDQSxNQUFJNUQsT0FBTyxDQUFDb0MsVUFBUixDQUFtQk0sTUFBdkIsRUFBK0I7QUFDN0J2QyxJQUFBQSxlQUFlLENBQUMrRCxZQUFoQixDQUE2QixRQUE3QixFQUF1Q0MscUJBQU1DLFFBQTdDLEVBQXVEakUsZUFBZSxDQUFDa0UsbUJBQWhCLENBQW9DckUsT0FBTyxDQUFDb0MsVUFBNUMsQ0FBdkQ7QUFDRDs7QUFFRCxRQUFNMUIsVUFBaUIsR0FBRyxFQUExQjtBQUVBUCxFQUFBQSxlQUFlLENBQUNtRSxFQUFoQixDQUFtQixLQUFuQixFQUEyQjdELE9BQUQsSUFBa0I7QUFDMUNDLElBQUFBLFVBQVUsQ0FBQzhDLElBQVgsQ0FBZ0IvQyxPQUFoQjtBQUNELEdBRkQ7QUFJQVYsRUFBQUEsVUFBVSxDQUFDd0UsV0FBWCxDQUF1QnBFLGVBQXZCLEVBQXdDcUUsYUFBS0MsV0FBN0MsRUFBMEQsSUFBSUMsMEJBQUosQ0FBc0J2RSxlQUFlLENBQUN5RCxrQkFBdEMsRUFBMkR6RCxlQUFlLENBQUNpQyxVQUEzRSxFQUF1RnJDLFVBQVUsQ0FBQzRFLDRCQUFYLEVBQXZGLEVBQWtJNUUsVUFBVSxDQUFDMEQsTUFBWCxDQUFrQkMsT0FBcEosRUFBNkozRCxVQUFVLENBQUM2RSxpQkFBeEssQ0FBMUQ7QUFDRCxDQXhGTSIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgY29kZSBpcyBiYXNlZCBvbiB0aGUgYG1zc3FsLWpkYmNgIGxpYnJhcnkgcHVibGlzaGVkIHVuZGVyIHRoZSBjb25kaXRpb25zIG9mIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IChjKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvblxuXG5pbXBvcnQgeyBTUUxTZXJ2ZXJFbmNyeXB0aW9uVHlwZSwgQ3J5cHRvTWV0YWRhdGEsIERlc2NyaWJlUGFyYW1ldGVyRW5jcnlwdGlvblJlc3VsdFNldDEsIERlc2NyaWJlUGFyYW1ldGVyRW5jcnlwdGlvblJlc3VsdFNldDIgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IENFS0VudHJ5IH0gZnJvbSAnLi9jZWstZW50cnknO1xuaW1wb3J0IHsgZGVjcnlwdFN5bW1ldHJpY0tleSB9IGZyb20gJy4va2V5LWNyeXB0byc7XG5pbXBvcnQgeyB0eXBlQnlOYW1lIGFzIFRZUEVTLCBQYXJhbWV0ZXIgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuaW1wb3J0IFJlcXVlc3QgZnJvbSAnLi4vcmVxdWVzdCc7XG5pbXBvcnQgQ29ubmVjdGlvbiBmcm9tICcuLi9jb25uZWN0aW9uJztcbmltcG9ydCBScGNSZXF1ZXN0UGF5bG9hZCBmcm9tICcuLi9ycGNyZXF1ZXN0LXBheWxvYWQnO1xuaW1wb3J0IHsgVFlQRSB9IGZyb20gJy4uL3BhY2tldCc7XG5cbmV4cG9ydCBjb25zdCBnZXRQYXJhbWV0ZXJFbmNyeXB0aW9uTWV0YWRhdGEgPSAoY29ubmVjdGlvbjogQ29ubmVjdGlvbiwgcmVxdWVzdDogUmVxdWVzdCwgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKSA9PiB7XG4gIGlmIChyZXF1ZXN0LmNyeXB0b01ldGFkYXRhTG9hZGVkID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gIH1cblxuICBjb25zdCBtZXRhZGF0YVJlcXVlc3QgPSBuZXcgUmVxdWVzdCgnc3BfZGVzY3JpYmVfcGFyYW1ldGVyX2VuY3J5cHRpb24nLCAoZXJyb3IpID0+IHtcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhlcnJvcik7XG4gICAgfVxuXG4gICAgY29uc3QgZGVjcnlwdFN5bW1ldHJpY0tleVByb21pc2VzOiBQcm9taXNlPHZvaWQ+W10gPSBbXTtcbiAgICBjb25zdCBjZWtMaXN0OiBDRUtFbnRyeVtdID0gW107XG4gICAgbGV0IHBhcmFtQ291bnQgPSAwO1xuXG4gICAgZm9yIChjb25zdCBjb2x1bW5zIG9mIHJlc3VsdFJvd3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGlzRmlyc3RSZWNvcmRTZXQgPSBjb2x1bW5zLnNvbWUoKGNvbDogYW55KSA9PiAoY29sICYmIGNvbC5tZXRhZGF0YSAmJiBjb2wubWV0YWRhdGEuY29sTmFtZSkgPT09ICdkYXRhYmFzZV9pZCcpO1xuICAgICAgICBpZiAoaXNGaXJzdFJlY29yZFNldCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRPcmRpbmFsID0gY29sdW1uc1tEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQxLktleU9yZGluYWxdLnZhbHVlO1xuICAgICAgICAgIGxldCBjZWtFbnRyeTogQ0VLRW50cnk7XG4gICAgICAgICAgaWYgKCFjZWtMaXN0W2N1cnJlbnRPcmRpbmFsXSkge1xuICAgICAgICAgICAgY2VrRW50cnkgPSBuZXcgQ0VLRW50cnkoY3VycmVudE9yZGluYWwpO1xuICAgICAgICAgICAgY2VrTGlzdFtjZWtFbnRyeS5vcmRpbmFsXSA9IGNla0VudHJ5O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjZWtFbnRyeSA9IGNla0xpc3RbY3VycmVudE9yZGluYWxdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjZWtFbnRyeS5hZGQoY29sdW1uc1tEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQxLkVuY3J5cHRlZEtleV0udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnNbRGVzY3JpYmVQYXJhbWV0ZXJFbmNyeXB0aW9uUmVzdWx0U2V0MS5EYklkXS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uc1tEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQxLktleUlkXS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uc1tEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQxLktleVZlcnNpb25dLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zW0Rlc2NyaWJlUGFyYW1ldGVyRW5jcnlwdGlvblJlc3VsdFNldDEuS2V5TWRWZXJzaW9uXS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uc1tEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQxLktleVBhdGhdLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zW0Rlc2NyaWJlUGFyYW1ldGVyRW5jcnlwdGlvblJlc3VsdFNldDEuUHJvdmlkZXJOYW1lXS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uc1tEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQxLktleUVuY3J5cHRpb25BbGdvcml0aG1dLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwYXJhbUNvdW50Kys7XG4gICAgICAgICAgY29uc3QgcGFyYW1OYW1lOiBzdHJpbmcgPSBjb2x1bW5zW0Rlc2NyaWJlUGFyYW1ldGVyRW5jcnlwdGlvblJlc3VsdFNldDIuUGFyYW1ldGVyTmFtZV0udmFsdWU7XG4gICAgICAgICAgY29uc3QgcGFyYW1JbmRleDogbnVtYmVyID0gcmVxdWVzdC5wYXJhbWV0ZXJzLmZpbmRJbmRleCgocGFyYW06IFBhcmFtZXRlcikgPT4gcGFyYW1OYW1lID09PSBgQCR7cGFyYW0ubmFtZX1gKTtcbiAgICAgICAgICBjb25zdCBjZWtPcmRpbmFsOiBudW1iZXIgPSBjb2x1bW5zW0Rlc2NyaWJlUGFyYW1ldGVyRW5jcnlwdGlvblJlc3VsdFNldDIuQ29sdW1uRW5jcnlwdGlvbktleU9yZGluYWxdLnZhbHVlO1xuICAgICAgICAgIGNvbnN0IGNla0VudHJ5OiBDRUtFbnRyeSA9IGNla0xpc3RbY2VrT3JkaW5hbF07XG5cbiAgICAgICAgICBpZiAoY2VrRW50cnkgJiYgY2VrTGlzdC5sZW5ndGggPCBjZWtPcmRpbmFsKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKGBJbnRlcm5hbCBlcnJvci4gVGhlIHJlZmVyZW5jZWQgY29sdW1uIGVuY3J5cHRpb24ga2V5IG9yZGluYWwgXCIke2Nla09yZGluYWx9XCIgaXMgbWlzc2luZyBpbiB0aGUgZW5jcnlwdGlvbiBtZXRhZGF0YSByZXR1cm5lZCBieSBzcF9kZXNjcmliZV9wYXJhbWV0ZXJfZW5jcnlwdGlvbi4gTWF4IG9yZGluYWwgaXMgXCIke2Nla0xpc3QubGVuZ3RofVwiLmApKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBlbmNUeXBlID0gY29sdW1uc1tEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQyLkNvbHVtbkVuY3J5dGlvblR5cGVdLnZhbHVlO1xuICAgICAgICAgIGlmIChTUUxTZXJ2ZXJFbmNyeXB0aW9uVHlwZS5QbGFpblRleHQgIT09IGVuY1R5cGUpIHtcbiAgICAgICAgICAgIHJlcXVlc3QucGFyYW1ldGVyc1twYXJhbUluZGV4XS5jcnlwdG9NZXRhZGF0YSA9IHtcbiAgICAgICAgICAgICAgY2VrRW50cnk6IGNla0VudHJ5LFxuICAgICAgICAgICAgICBvcmRpbmFsOiBjZWtPcmRpbmFsLFxuICAgICAgICAgICAgICBjaXBoZXJBbGdvcml0aG1JZDogY29sdW1uc1tEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQyLkNvbHVtbkVuY3J5cHRpb25BbGdvcml0aG1dLnZhbHVlLFxuICAgICAgICAgICAgICBlbmNyeXB0aW9uVHlwZTogZW5jVHlwZSxcbiAgICAgICAgICAgICAgbm9ybWFsaXphdGlvblJ1bGVWZXJzaW9uOiBCdWZmZXIuZnJvbShbY29sdW1uc1tEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQyLk5vcm1hbGl6YXRpb25SdWxlVmVyc2lvbl0udmFsdWVdKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBkZWNyeXB0U3ltbWV0cmljS2V5UHJvbWlzZXMucHVzaChkZWNyeXB0U3ltbWV0cmljS2V5KHJlcXVlc3QucGFyYW1ldGVyc1twYXJhbUluZGV4XS5jcnlwdG9NZXRhZGF0YSBhcyBDcnlwdG9NZXRhZGF0YSwgY29ubmVjdGlvbi5jb25maWcub3B0aW9ucykpO1xuICAgICAgICAgIH0gZWxzZSBpZiAocmVxdWVzdC5wYXJhbWV0ZXJzW3BhcmFtSW5kZXhdLmZvcmNlRW5jcnlwdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBFcnJvcihgQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50IG9yIHByb2NlZHVyZSAke3JlcXVlc3Quc3FsVGV4dE9yUHJvY2VkdXJlfSBiZWNhdXNlIEZvcmNlIEVuY3J5cHRpb24gd2FzIHNldCBhcyB0cnVlIGZvciBwYXJhbWV0ZXIgJHtwYXJhbUluZGV4ICsgMX0gYW5kIHRoZSBkYXRhYmFzZSBleHBlY3RzIHRoaXMgcGFyYW1ldGVyIHRvIGJlIHNlbnQgYXMgcGxhaW50ZXh0LiBUaGlzIG1heSBiZSBkdWUgdG8gYSBjb25maWd1cmF0aW9uIGVycm9yLmApKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKGBJbnRlcm5hbCBlcnJvci4gVW5hYmxlIHRvIHBhcnNlIHBhcmFtZXRlciBlbmNyeXB0aW9uIG1ldGFkYXRhIGluIHN0YXRlbWVudCBvciBwcm9jZWR1cmUgXCIke3JlcXVlc3Quc3FsVGV4dE9yUHJvY2VkdXJlfVwiYCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYXJhbUNvdW50ICE9PSByZXF1ZXN0LnBhcmFtZXRlcnMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKGBJbnRlcm5hbCBlcnJvci4gTWV0YWRhdGEgZm9yIHNvbWUgcGFyYW1ldGVycyBpbiBzdGF0ZW1lbnQgb3IgcHJvY2VkdXJlIFwiJHtyZXF1ZXN0LnNxbFRleHRPclByb2NlZHVyZX1cIiBpcyBtaXNzaW5nIGluIHRoZSByZXN1bHRzZXQgcmV0dXJuZWQgYnkgc3BfZGVzY3JpYmVfcGFyYW1ldGVyX2VuY3J5cHRpb24uYCkpO1xuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLmFsbChkZWNyeXB0U3ltbWV0cmljS2V5UHJvbWlzZXMpLnRoZW4oKCkgPT4ge1xuICAgICAgcmVxdWVzdC5jcnlwdG9NZXRhZGF0YUxvYWRlZCA9IHRydWU7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGNhbGxiYWNrKTtcbiAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2ssIGVycm9yKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgbWV0YWRhdGFSZXF1ZXN0LmFkZFBhcmFtZXRlcigndHNxbCcsIFRZUEVTLk5WYXJDaGFyLCByZXF1ZXN0LnNxbFRleHRPclByb2NlZHVyZSk7XG4gIGlmIChyZXF1ZXN0LnBhcmFtZXRlcnMubGVuZ3RoKSB7XG4gICAgbWV0YWRhdGFSZXF1ZXN0LmFkZFBhcmFtZXRlcigncGFyYW1zJywgVFlQRVMuTlZhckNoYXIsIG1ldGFkYXRhUmVxdWVzdC5tYWtlUGFyYW1zUGFyYW1ldGVyKHJlcXVlc3QucGFyYW1ldGVycykpO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0Um93czogYW55W10gPSBbXTtcblxuICBtZXRhZGF0YVJlcXVlc3Qub24oJ3JvdycsIChjb2x1bW5zOiBhbnkpID0+IHtcbiAgICByZXN1bHRSb3dzLnB1c2goY29sdW1ucyk7XG4gIH0pO1xuXG4gIGNvbm5lY3Rpb24ubWFrZVJlcXVlc3QobWV0YWRhdGFSZXF1ZXN0LCBUWVBFLlJQQ19SRVFVRVNULCBuZXcgUnBjUmVxdWVzdFBheWxvYWQobWV0YWRhdGFSZXF1ZXN0LnNxbFRleHRPclByb2NlZHVyZSEsIG1ldGFkYXRhUmVxdWVzdC5wYXJhbWV0ZXJzLCBjb25uZWN0aW9uLmN1cnJlbnRUcmFuc2FjdGlvbkRlc2NyaXB0b3IoKSwgY29ubmVjdGlvbi5jb25maWcub3B0aW9ucywgY29ubmVjdGlvbi5kYXRhYmFzZUNvbGxhdGlvbikpO1xufTtcbiJdfQ==
|
|
@@ -115,4 +115,5 @@ const decryptSymmetricKey = async (md, options) => {
|
|
|
115
115
|
md.encryptionKeyInfo = encryptionKeyInfoChosen;
|
|
116
116
|
};
|
|
117
117
|
|
|
118
|
-
exports.decryptSymmetricKey = decryptSymmetricKey;
|
|
118
|
+
exports.decryptSymmetricKey = decryptSymmetricKey;
|
|
119
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbHdheXMtZW5jcnlwdGVkL2tleS1jcnlwdG8udHMiXSwibmFtZXMiOlsidmFsaWRhdGVBbmRHZXRFbmNyeXB0aW9uQWxnb3JpdGhtTmFtZSIsImNpcGhlckFsZ29yaXRobUlkIiwiY2lwaGVyQWxnb3JpdGhtTmFtZSIsIkVycm9yIiwiYWxnb3JpdGhtTmFtZSIsImVuY3J5cHRXaXRoS2V5IiwicGxhaW50ZXh0IiwibWQiLCJvcHRpb25zIiwidHJ1c3RlZFNlcnZlck5hbWVBRSIsImNpcGhlckFsZ29yaXRobSIsImRlY3J5cHRTeW1tZXRyaWNLZXkiLCJjaXBoZXJUZXh0IiwiZW5jcnlwdERhdGEiLCJkZWNyeXB0V2l0aEtleSIsInBsYWluVGV4dCIsImRlY3J5cHREYXRhIiwiY2VrRW50cnkiLCJjb2x1bW5FbmNyeXB0aW9uS2V5VmFsdWVzIiwic3ltS2V5IiwiZW5jcnlwdGlvbktleUluZm9DaG9zZW4iLCJDRUtWYWx1ZXMiLCJsYXN0RXJyb3IiLCJDRUtWYWx1ZSIsImVycm9yIiwiQWVhZEFlczI1NkNiY0htYWMyNTZBbGdvcml0aG0iLCJBZWFkQWVzMjU2Q2JjSG1hYzI1NkVuY3J5cHRpb25LZXkiLCJyb290S2V5IiwiZW5jcnlwdGlvblR5cGUiLCJlbmNyeXB0aW9uS2V5SW5mbyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQU1BOztBQUNBOztBQUNBOztBQVJBO0FBQ0E7QUFTTyxNQUFNQSxxQ0FBcUMsR0FBRyxDQUFDQyxpQkFBRCxFQUE0QkMsbUJBQTVCLEtBQXFFO0FBQ3hILE1BQUlELGlCQUFpQixLQUFLLENBQTFCLEVBQTZCO0FBQzNCLFVBQU0sSUFBSUUsS0FBSixDQUFVLHdDQUFWLENBQU47QUFDRDs7QUFFRCxTQUFPQyx5Q0FBUDtBQUNELENBTk07Ozs7QUFRQSxNQUFNQyxjQUFjLEdBQUcsT0FBT0MsU0FBUCxFQUEwQkMsRUFBMUIsRUFBOENDLE9BQTlDLEtBQThGO0FBQzFILE1BQUksQ0FBQ0EsT0FBTyxDQUFDQyxtQkFB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Q0FBeEI7QUFFQXJCLEVBQUFBLEVBQUUsQ0FBQ0csZUFBSCxHQUFxQkEsZUFBckI7QUFDQUgsRUFBQUEsRUFBRSxDQUFDc0IsaUJBQUgsR0FBdUJULHVCQUF2QjtBQUNELENBM0NNIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBjb2RlIGlzIGJhc2VkIG9uIHRoZSBgbXNzcWwtamRiY2AgbGlicmFyeSBwdWJsaXNoZWQgdW5kZXIgdGhlIGNvbmRpdGlvbnMgb2YgTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgKGMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uXG5cbmltcG9ydCB7IENyeXB0b01ldGFkYXRhLCBFbmNyeXB0aW9uS2V5SW5mbyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgSW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucyBhcyBDb25uZWN0aW9uT3B0aW9ucyB9IGZyb20gJy4uL2Nvbm5lY3Rpb24nO1xuaW1wb3J0IFN5bW1ldHJpY0tleSBmcm9tICcuL3N5bW1ldHJpYy1rZXknO1xuaW1wb3J0IHsgZ2V0S2V5IH0gZnJvbSAnLi9zeW1tZXRyaWMta2V5LWNhY2hlJztcbmltcG9ydCB7IEFlYWRBZXMyNTZDYmNIbWFjMjU2QWxnb3JpdGhtLCBhbGdvcml0aG1OYW1lIH0gZnJvbSAnLi9hZWFkLWFlcy0yNTYtY2JjLWhtYWMtYWxnb3JpdGhtJztcbmltcG9ydCB7IEFlYWRBZXMyNTZDYmNIbWFjMjU2RW5jcnlwdGlvbktleSB9IGZyb20gJy4vYWVhZC1hZXMtMjU2LWNiYy1obWFjLWVuY3J5cHRpb24ta2V5JztcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlQW5kR2V0RW5jcnlwdGlvbkFsZ29yaXRobU5hbWUgPSAoY2lwaGVyQWxnb3JpdGhtSWQ6IG51bWJlciwgY2lwaGVyQWxnb3JpdGhtTmFtZT86IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGlmIChjaXBoZXJBbGdvcml0aG1JZCAhPT0gMikge1xuICAgIHRocm93IG5ldyBFcnJvcignQ3VzdG9tIGNpcGhlciBhbGdvcml0aG0gbm90IHN1cHBvcnRlZC4nKTtcbiAgfVxuXG4gIHJldHVybiBhbGdvcml0aG1OYW1lO1xufTtcblxuZXhwb3J0IGNvbnN0IGVuY3J5cHRXaXRoS2V5ID0gYXN5bmMgKHBsYWludGV4dDogQnVmZmVyLCBtZDogQ3J5cHRvTWV0YWRhdGEsIG9wdGlvbnM6IENvbm5lY3Rpb25PcHRpb25zKTogUHJvbWlzZTxCdWZmZXI+ID0+IHtcbiAgaWYgKCFvcHRpb25zLnRydXN0ZWRTZXJ2ZXJOYW1lQUUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlcnZlciBuYW1lIHNob3VsZCBub3QgYmUgbnVsbCBpbiBFbmNyeXB0V2l0aEtleScpO1xuICB9XG5cbiAgaWYgKCFtZC5jaXBoZXJBbGdvcml0aG0pIHtcbiAgICBhd2FpdCBkZWNyeXB0U3ltbWV0cmljS2V5KG1kLCBvcHRpb25zKTtcbiAgfVxuXG4gIGlmICghbWQuY2lwaGVyQWxnb3JpdGhtKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDaXBoZXIgQWxnb3JpdGhtIHNob3VsZCBub3QgYmUgbnVsbCBpbiBFbmNyeXB0V2l0aEtleScpO1xuICB9XG5cbiAgY29uc3QgY2lwaGVyVGV4dDogQnVmZmVyID0gbWQuY2lwaGVyQWxnb3JpdGhtLmVuY3J5cHREYXRhKHBsYWludGV4dCk7XG5cbiAgaWYgKCFjaXBoZXJUZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnRlcm5hbCBlcnJvci4gQ2lwaGVydGV4dCB2YWx1ZSBjYW5ub3QgYmUgbnVsbC4nKTtcbiAgfVxuXG4gIHJldHVybiBjaXBoZXJUZXh0O1xufTtcblxuZXhwb3J0IGNvbnN0IGRlY3J5cHRXaXRoS2V5ID0gKGNpcGhlclRleHQ6IEJ1ZmZlciwgbWQ6IENyeXB0b01ldGFkYXRhLCBvcHRpb25zOiBDb25uZWN0aW9uT3B0aW9ucyk6IEJ1ZmZlciA9PiB7XG4gIGlmICghb3B0aW9ucy50cnVzdGVkU2VydmVyTmFtZUFFKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTZXJ2ZXIgbmFtZSBzaG91bGQgbm90IGJlIG51bGwgaW4gRGVjcnlwdFdpdGhLZXknKTtcbiAgfVxuXG4gIC8vIGlmICghbWQuY2lwaGVyQWxnb3JpdGhtKSB7XG4gIC8vICAgYXdhaXQgZGVjcnlwdFN5bW1ldHJpY0tleShtZCwgb3B0aW9ucyk7XG4gIC8vIH1cblxuICBpZiAoIW1kLmNpcGhlckFsZ29yaXRobSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2lwaGVyIEFsZ29yaXRobSBzaG91bGQgbm90IGJlIG51bGwgaW4gRGVjcnlwdFdpdGhLZXknKTtcbiAgfVxuXG4gIGNvbnN0IHBsYWluVGV4dDogQnVmZmVyID0gbWQuY2lwaGVyQWxnb3JpdGhtLmRlY3J5cHREYXRhKGNpcGhlclRleHQpO1xuXG4gIGlmICghcGxhaW5UZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnRlcm5hbCBlcnJvci4gUGxhaW50ZXh0IHZhbHVlIGNhbm5vdCBiZSBudWxsLicpO1xuICB9XG5cbiAgcmV0dXJuIHBsYWluVGV4dDtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWNyeXB0U3ltbWV0cmljS2V5ID0gYXN5bmMgKG1kOiBDcnlwdG9NZXRhZGF0YSwgb3B0aW9uczogQ29ubmVjdGlvbk9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgaWYgKCFtZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbWQgc2hvdWxkIG5vdCBiZSBudWxsIGluIERlY3J5cHRTeW1tZXRyaWNLZXkuJyk7XG4gIH1cblxuICBpZiAoIW1kLmNla0VudHJ5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtZC5FbmNyeXB0aW9uSW5mbyBzaG91bGQgbm90IGJlIG51bGwgaW4gRGVjcnlwdFN5bW1ldHJpY0tleS4nKTtcbiAgfVxuXG4gIGlmICghbWQuY2VrRW50cnkuY29sdW1uRW5jcnlwdGlvbktleVZhbHVlcykge1xuICAgIHRocm93IG5ldyBFcnJvcignbWQuRW5jcnlwdGlvbkluZm8uQ29sdW1uRW5jcnlwdGlvbktleVZhbHVlcyBzaG91bGQgbm90IGJlIG51bGwgaW4gRGVjcnlwdFN5bW1ldHJpY0tleS4nKTtcbiAgfVxuXG4gIGxldCBzeW1LZXk6IFN5bW1ldHJpY0tleSB8IHVuZGVmaW5lZDtcbiAgbGV0IGVuY3J5cHRpb25LZXlJbmZvQ2hvc2VuOiBFbmNyeXB0aW9uS2V5SW5mbyB8IHVuZGVmaW5lZDtcbiAgY29uc3QgQ0VLVmFsdWVzOiBFbmNyeXB0aW9uS2V5SW5mb1tdID0gbWQuY2VrRW50cnkuY29sdW1uRW5jcnlwdGlvbktleVZhbHVlcztcbiAgbGV0IGxhc3RFcnJvcjogRXJyb3IgfCB1bmRlZmluZWQ7XG5cbiAgZm9yIChjb25zdCBDRUtWYWx1ZSBvZiBDRUtWYWx1ZXMpIHtcbiAgICB0cnkge1xuICAgICAgc3ltS2V5ID0gYXdhaXQgZ2V0S2V5KENFS1ZhbHVlLCBvcHRpb25zKTtcbiAgICAgIGlmIChzeW1LZXkpIHtcbiAgICAgICAgZW5jcnlwdGlvbktleUluZm9DaG9zZW4gPSBDRUtWYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgbGFzdEVycm9yID0gZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFzeW1LZXkpIHtcbiAgICBpZiAobGFzdEVycm9yKSB7XG4gICAgICB0aHJvdyBsYXN0RXJyb3I7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhjZXB0aW9uIHdoaWxlIGRlY3J5cHRpb24gb2YgZW5jcnlwdGVkIGNvbHVtbiBlbmNyeXB0aW9uIGtleS4nKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBhbGdvcml0aG1OYW1lID0gdmFsaWRhdGVBbmRHZXRFbmNyeXB0aW9uQWxnb3JpdGhtTmFtZShtZC5jaXBoZXJBbGdvcml0aG1JZCwgbWQuY2lwaGVyQWxnb3JpdGhtTmFtZSk7XG4gIGNvbnN0IGNpcGhlckFsZ29yaXRobSA9IG5ldyBBZWFkQWVzMjU2Q2JjSG1hYzI1NkFsZ29yaXRobShuZXcgQWVhZEFlczI1NkNiY0htYWMyNTZFbmNyeXB0aW9uS2V5KHN5bUtleS5yb290S2V5LCBhbGdvcml0aG1OYW1lKSwgbWQuZW5jcnlwdGlvblR5cGUpO1xuXG4gIG1kLmNpcGhlckFsZ29yaXRobSA9IGNpcGhlckFsZ29yaXRobTtcbiAgbWQuZW5jcnlwdGlvbktleUluZm8gPSBlbmNyeXB0aW9uS2V5SW5mb0Nob3NlbiBhcyBFbmNyeXB0aW9uS2V5SW5mbztcbn07XG4iXX0=
|
|
@@ -167,9 +167,9 @@ class ColumnEncryptionAzureKeyVaultProvider {
|
|
|
167
167
|
|
|
168
168
|
const keyParts = this.parsePath(masterKeyPath);
|
|
169
169
|
this.createKeyClient(keyParts.vaultUrl);
|
|
170
|
-
return this.keyClient.getKey(keyParts.name, {
|
|
170
|
+
return this.keyClient.getKey(keyParts.name, keyParts.version ? {
|
|
171
171
|
version: keyParts.version
|
|
172
|
-
});
|
|
172
|
+
} : {});
|
|
173
173
|
}
|
|
174
174
|
|
|
175
175
|
createKeyClient(keyVaultUrl) {
|
|
@@ -311,4 +311,5 @@ class ColumnEncryptionAzureKeyVaultProvider {
|
|
|
311
311
|
|
|
312
312
|
}
|
|
313
313
|
|
|
314
|
-
exports.ColumnEncryptionAzureKeyVaultProvider = ColumnEncryptionAzureKeyVaultProvider;
|
|
314
|
+
exports.ColumnEncryptionAzureKeyVaultProvider = ColumnEncryptionAzureKeyVaultProvider;
|
|
315
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbHdheXMtZW5jcnlwdGVkL2tleXN0b3JlLXByb3ZpZGVyLWF6dXJlLWtleS12YXVsdC50cyJdLCJuYW1lcyI6WyJDb2x1bW5FbmNyeXB0aW9uQXp1cmVLZXlWYXVsdFByb3ZpZGVyIiwiY29uc3RydWN0b3IiLCJjbGllbnRJZCIsImNsaWVudEtleSIsInRlbmFudElkIiwibmFtZSIsInVybCIsInJzYUVuY3J5cHRpb25BbGdvcml0aG1XaXRoT0FFUEZvckFLViIsImZpcnN0VmVyc2lvbiIsImNyZWRlbnRpYWxzIiwiYXp1cmVLZXlWYXVsdERvbWFpbk5hbWUiLCJrZXlDbGllbnQiLCJCdWZmZXIiLCJmcm9tIiwiQ2xpZW50U2VjcmV0Q3JlZGVudGlhbCIsImRlY3J5cHRDb2x1bW5FbmNyeXB0aW9uS2V5IiwibWFzdGVyS2V5UGF0aCIsImVuY3J5cHRpb25BbGdvcml0aG0iLCJlbmNyeXB0ZWRDb2x1bW5FbmNyeXB0aW9uS2V5IiwiRXJyb3IiLCJsZW5ndGgiLCJ2YWxpZGF0ZUVuY3J5cHRpb25BbGdvcml0aG0iLCJtYXN0ZXJLZXkiLCJnZXRNYXN0ZXJLZXkiLCJrZXlTaXplSW5CeXRlcyIsImdldEFLVktleVNpemUiLCJjcnlwdG9DbGllbnQiLCJjcmVhdGVDcnlwdG9DbGllbnQiLCJ0b1N0cmluZyIsImN1cnJlbnRJbmRleCIsImtleVBhdGhMZW5ndGgiLCJyZWFkSW50MTZMRSIsImNpcGhlclRleHRMZW5ndGgiLCJzaWduYXR1cmVMZW5ndGgiLCJjaXBoZXJUZXh0IiwiYWxsb2MiLCJjb3B5Iiwic2lnbmF0dXJlIiwiaGFzaCIsIm1lc3NhZ2VEaWdlc3QiLCJ1cGRhdGUiLCJkYXRhVG9WZXJpZnkiLCJkaWdlc3QiLCJ2ZXJpZnlLZXkiLCJ2ZXJpZnkiLCJyZXN1bHQiLCJkZWNyeXB0ZWRDRUsiLCJhenVyZUtleVZhdWx0VW5XcmFwIiwiZW5jcnlwdENvbHVtbkVuY3J5cHRpb25LZXkiLCJjb2x1bW5FbmNyeXB0aW9uS2V5IiwidmVyc2lvbiIsIm1hc3RlcktleVBhdGhCeXRlcyIsInRvTG93ZXJDYXNlIiwiYXp1cmVLZXlWYXVsdFdyYXAiLCJkYXRhVG9IYXNoIiwiZGVzdGluYXRpb25Qb3NpdGlvbiIsImRhdGFUb1NpZ24iLCJzaWduZWRIYXNoIiwiYXp1cmVLZXlWYXVsdFNpZ25lZEhhc2hlZERhdGEiLCJlbmNyeXB0ZWRDb2x1bW5FbmNyeXB0aW9uS2V5TGVuZ3RoIiwia2V5UGFydHMiLCJwYXJzZVBhdGgiLCJjcmVhdGVLZXlDbGllbnQiLCJ2YXVsdFVybCIsImdldEtleSIsImtleVZhdWx0VXJsIiwiS2V5Q2xpZW50IiwiQ3J5cHRvZ3JhcGh5Q2xpZW50IiwidHJpbSIsImJhc2VVcmkiLCJob3N0bmFtZSIsImVuZHNXaXRoIiwic2VnbWVudHMiLCJwYXRobmFtZSIsInNwbGl0IiwicHJvdG9jb2wiLCJob3N0IiwidW5kZWZpbmVkIiwic2lnbmVkRGF0YSIsInNpZ24iLCJ3cmFwcGVkS2V5Iiwid3JhcEtleSIsInVud3JhcHBlZEtleSIsInVud3JhcEtleSIsInJldHJpZXZlZEtleSIsImtleSIsImt0eSIsInRvVXBwZXJDYXNlIiwibG9jYWxlQ29tcGFyZSIsImtleUxlbmd0aCIsIm4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFOQTtBQUNBO0FBYU8sTUFBTUEscUNBQU4sQ0FBNEM7QUFTakRDLEVBQUFBLFdBQVcsQ0FBQ0MsUUFBRCxFQUFtQkMsU0FBbkIsRUFBc0NDLFFBQXRDLEVBQXdEO0FBQUEsU0FSbkRDLElBUW1EO0FBQUEsU0FQM0RDLEdBTzJEO0FBQUEsU0FObERDLG9DQU1rRDtBQUFBLFNBTGxEQyxZQUtrRDtBQUFBLFNBSjNEQyxXQUkyRDtBQUFBLFNBSGxEQyx1QkFHa0Q7QUFBQSxTQUYzREMsU0FFMkQ7QUFDakUsU0FBS04sSUFBTCxHQUFZLGlCQUFaO0FBQ0EsU0FBS0ssdUJBQUwsR0FBK0IsaUJBQS9CO0FBQ0EsU0FBS0gsb0NBQUwsR0FBNEMsVUFBNUM7QUFDQSxT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S0FBSixDQUFVLDBDQUFWLENBQU47QUFDRDs7QUFFRCxRQUFJLFdBQVdxRSxhQUFYLENBQXlCdkUsbUJBQW1CLENBQUNzRSxXQUFwQixFQUF6QixFQUE0RCxJQUE1RCxNQUFzRSxDQUExRSxFQUE2RTtBQUMzRXRFLE1BQUFBLG1CQUFtQixHQUFHLFVBQXRCO0FBQ0Q7O0FBRUQsUUFBSSxLQUFLVixvQ0FBTCxDQUEwQ2lGLGFBQTFDLENBQXdEdkUsbUJBQW1CLENBQUNtRCxJQUFwQixHQUEyQm1CLFdBQTNCLEVBQXhELEVBQWtHLElBQWxHLE1BQTRHLENBQWhILEVBQW1IO0FBQ2pILFlBQU0sSUFBSXBFLEtBQUosQ0FBVywrQ0FBOENGLG1CQUFvQixxQkFBb0IsS0FBS1Ysb0NBQXFDLEdBQTNJLENBQU47QUFDRDs7QUFFRCxXQUFPVSxtQkFBUDtBQUNEOztBQTFVZ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGNvZGUgaXMgYmFzZWQgb24gdGhlIGBtc3NxbC1qZGJjYCBsaWJyYXJ5IHB1Ymxpc2hlZCB1bmRlciB0aGUgY29uZGl0aW9ucyBvZiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCAoYykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb25cblxuaW1wb3J0IHsgQ2xpZW50U2VjcmV0Q3JlZGVudGlhbCB9IGZyb20gJ0BhenVyZS9pZGVudGl0eSc7XG5pbXBvcnQgeyBDcnlwdG9ncmFwaHlDbGllbnQsIEtleVdyYXBBbGdvcml0aG0sIEtleUNsaWVudCwgS2V5VmF1bHRLZXkgfSBmcm9tICdAYXp1cmUva2V5dmF1bHQta2V5cyc7XG5pbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IHBhcnNlIH0gZnJvbSAndXJsJztcblxuaW50ZXJmYWNlIFBhcnNlZEtleVBhdGgge1xuICB2YXVsdFVybDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHZlcnNpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBDb2x1bW5FbmNyeXB0aW9uQXp1cmVLZXlWYXVsdFByb3ZpZGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSB1cmw6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSByc2FFbmNyeXB0aW9uQWxnb3JpdGhtV2l0aE9BRVBGb3JBS1Y6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBmaXJzdFZlcnNpb246IEJ1ZmZlcjtcbiAgcHJpdmF0ZSBjcmVkZW50aWFsczogQ2xpZW50U2VjcmV0Q3JlZGVudGlhbDtcbiAgcHJpdmF0ZSByZWFkb25seSBhenVyZUtleVZhdWx0RG9tYWluTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIGtleUNsaWVudDogdW5kZWZpbmVkIHwgS2V5Q2xpZW50O1xuXG4gIGNvbnN0cnVjdG9yKGNsaWVudElkOiBzdHJpbmcsIGNsaWVudEtleTogc3RyaW5nLCB0ZW5hbnRJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5uYW1lID0gJ0FaVVJFX0tFWV9WQVVMVCc7XG4gICAgdGhpcy5henVyZUtleVZhdWx0RG9tYWluTmFtZSA9ICd2YXVsdC5henVyZS5uZXQnO1xuICAgIHRoaXMucnNhRW5jcnlwdGlvbkFsZ29yaXRobVdpdGhPQUVQRm9yQUtWID0gJ1JTQS1PQUVQJztcbiAgICB0aGlzLmZpcnN0VmVyc2lvbiA9IEJ1ZmZlci5mcm9tKFsweDAxXSk7XG4gICAgdGhpcy5jcmVkZW50aWFscyA9IG5ldyBDbGllbnRTZWNyZXRDcmVkZW50aWFsKHRlbmFudElkLCBjbGllbnRJZCwgY2xpZW50S2V5KTtcbiAgfVxuXG4gIGFzeW5jIGRlY3J5cHRDb2x1bW5FbmNyeXB0aW9uS2V5KG1hc3RlcktleVBhdGg6IHN0cmluZywgZW5jcnlwdGlvbkFsZ29yaXRobTogc3RyaW5nLCBlbmNyeXB0ZWRDb2x1bW5FbmNyeXB0aW9uS2V5OiBCdWZmZXIpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgIGlmICghZW5jcnlwdGVkQ29sdW1uRW5jcnlwdGlvbktleSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnRlcm5hbCBlcnJvci4gRW5jcnlwdGVkIGNvbHVtbiBlbmNyeXB0aW9uIGtleSBjYW5ub3QgYmUgbnVsbC4nKTtcbiAgICB9XG5cbiAgICBpZiAoZW5jcnlwdGVkQ29sdW1uRW5jcnlwdGlvbktleS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW50ZXJuYWwgZXJyb3IuIEVtcHR5IGVuY3J5cHRlZCBjb2x1bW4gZW5jcnlwdGlvbiBrZXkgc3BlY2lmaWVkLicpO1xuICAgIH1cblxuICAgIGVuY3J5cHRpb25BbGdvcml0aG0gPSB0aGlzLnZhbGlkYXRlRW5jcnlwdGlvbkFsZ29yaXRobShlbmNyeXB0aW9uQWxnb3JpdGhtKTtcblxuICAgIGNvbnN0IG1hc3RlcktleSA9IGF3YWl0IHRoaXMuZ2V0TWFzdGVyS2V5KG1hc3RlcktleVBhdGgpO1xuXG4gICAgY29uc3Qga2V5U2l6ZUluQnl0ZXMgPSB0aGlzLmdldEFLVktleVNpemUobWFzdGVyS2V5KTtcblxuICAgIGNvbnN0IGNyeXB0b0NsaWVudCA9IHRoaXMuY3JlYXRlQ3J5cHRvQ2xpZW50KG1hc3RlcktleSk7XG5cbiAgICBpZiAoZW5jcnlwdGVkQ29sdW1uRW5jcnlwdGlvbktleVswXSAhPT0gdGhpcy5maXJzdFZlcnNpb25bMF0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU3BlY2lmaWVkIGVuY3J5cHRlZCBjb2x1bW4gZW5jcnlwdGlvbiBrZXkgY29udGFpbnMgYW4gaW52YWxpZCBlbmNyeXB0aW9uIGFsZ29yaXRobSB2ZXJzaW9uICR7QnVmZmVyLmZyb20oW2VuY3J5cHRlZENvbHVtbkVuY3J5cHRpb25LZXlbMF1dKS50b1N0cmluZygnaGV4Jyl9LiBFeHBlY3RlZCB2ZXJzaW9uIGlzICR7QnVmZmVyLmZyb20oW3RoaXMuZmlyc3RWZXJzaW9uWzBdXSkudG9TdHJpbmcoJ2hleCcpfS5gKTtcbiAgICB9XG5cbiAgICBsZXQgY3VycmVudEluZGV4ID0gdGhpcy5maXJzdFZlcnNpb24ubGVuZ3RoO1xuICAgIGNvbnN0IGtleVBhdGhMZW5ndGg6IG51bWJlciA9IGVuY3J5cHRlZENvbHVtbkVuY3J5cHRpb25LZXkucmVhZEludDE2TEUoY3VycmVudEluZGV4KTtcblxuICAgIGN1cnJlbnRJbmRleCArPSAyO1xuXG4gICAgY29uc3QgY2lwaGVyVGV4dExlbmd0aDogbnVtYmVyID0gZW5jcnlwdGVkQ29sdW1uRW5jcnlwdGlvbktleS5yZWFkSW50MTZMRShjdXJyZW50SW5kZXgpO1xuXG4gICAgY3VycmVudEluZGV4ICs9IDI7XG5cbiAgICBjdXJyZW50SW5kZXggKz0ga2V5UGF0aExlbmd0aDtcblxuICAgIGlmIChjaXBoZXJUZXh0TGVuZ3RoICE9PSBrZXlTaXplSW5CeXRlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgc3BlY2lmaWVkIGVuY3J5cHRlZCBjb2x1bW4gZW5jcnlwdGlvbiBrZXkncyBjaXBoZXJ0ZXh0IGxlbmd0aDogJHtjaXBoZXJUZXh0TGVuZ3RofSBkb2VzIG5vdCBtYXRjaCB0aGUgY2lwaGVydGV4dCBsZW5ndGg6ICR7a2V5U2l6ZUluQnl0ZXN9IHdoZW4gdXNpbmcgY29sdW1uIG1hc3RlciBrZXkgKEF6dXJlIEtleSBWYXVsdCBrZXkpIGluICR7bWFzdGVyS2V5UGF0aH0uIFRoZSBlbmNyeXB0ZWQgY29sdW1uIGVuY3J5cHRpb24ga2V5IG1heSBiZSBjb3JydXB0LCBvciB0aGUgc3BlY2lmaWVkIEF6dXJlIEtleSBWYXVsdCBrZXkgcGF0aCBtYXkgYmUgaW5jb3JyZWN0LmApO1xuICAgIH1cblxuICAgIGNvbnN0IHNpZ25hdHVyZUxlbmd0aDogbnVtYmVyID0gZW5jcnlwdGVkQ29sdW1uRW5jcnlwdGlvbktleS5sZW5ndGggLSBjdXJyZW50SW5kZXggLSBjaXBoZXJUZXh0TGVuZ3RoO1xuXG4gICAgaWYgKHNpZ25hdHVyZUxlbmd0aCAhPT0ga2V5U2l6ZUluQnl0ZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHNwZWNpZmllZCBlbmNyeXB0ZWQgY29sdW1uIGVuY3J5cHRpb24ga2V5J3Mgc2lnbmF0dXJlIGxlbmd0aDogJHtzaWduYXR1cmVMZW5ndGh9IGRvZXMgbm90IG1hdGNoIHRoZSBzaWduYXR1cmUgbGVuZ3RoOiAke2tleVNpemVJbkJ5dGVzfSB3aGVuIHVzaW5nIGNvbHVtbiBtYXN0ZXIga2V5IChBenVyZSBLZXkgVmF1bHQga2V5KSBpbiAke21hc3RlcktleVBhdGh9LiBUaGUgZW5jcnlwdGVkIGNvbHVtbiBlbmNyeXB0aW9uIGtleSBtYXkgYmUgY29ycnVwdCwgb3IgdGhlIHNwZWNpZmllZCBBenVyZSBLZXkgVmF1bHQga2V5IHBhdGggbWF5IGJlIGluY29ycmVjdC5gKTtcbiAgICB9XG5cbiAgICBjb25zdCBjaXBoZXJUZXh0ID0gQnVmZmVyLmFsbG9jKGNpcGhlclRleHRMZW5ndGgpO1xuICAgIGVuY3J5cHRlZENvbHVtbkVuY3J5cHRpb25LZXkuY29weShjaXBoZXJUZXh0LCAwLCBjdXJyZW50SW5kZXgsIGN1cnJlbnRJbmRleCArIGNpcGhlclRleHRMZW5ndGgpO1xuICAgIGN1cnJlbnRJbmRleCArPSBjaXBoZXJUZXh0TGVuZ3RoO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlID0gQnVmZmVyLmFsbG9jKHNpZ25hdHVyZUxlbmd0aCk7XG4gICAgZW5jcnlwdGVkQ29sdW1uRW5jcnlwdGlvbktleS5jb3B5KHNpZ25hdHVyZSwgMCwgY3VycmVudEluZGV4LCBjdXJyZW50SW5kZXggKyBzaWduYXR1cmVMZW5ndGgpO1xuXG4gICAgY29uc3QgaGFzaCA9IEJ1ZmZlci5hbGxvYyhlbmNyeXB0ZWRDb2x1bW5FbmNyeXB0aW9uS2V5Lmxlbmd0aCAtIHNpZ25hdHVyZS5sZW5ndGgpO1xuICAgIGVuY3J5cHRlZENvbHVtbkVuY3J5cHRpb25LZXkuY29weShoYXNoLCAwLCAwLCBlbmNyeXB0ZWRDb2x1bW5FbmNyeXB0aW9uS2V5Lmxlbmd0aCAtIHNpZ25hdHVyZS5sZW5ndGgpO1xuXG4gICAgY29uc3QgbWVzc2FnZURpZ2VzdCA9IGNyZWF0ZUhhc2goJ3NoYTI1NicpO1xuICAgIG1lc3NhZ2VEaWdlc3QudXBkYXRlKGhhc2gpO1xuXG4gICAgY29uc3QgZGF0YVRvVmVyaWZ5OiBCdWZmZXIgPSBtZXNzYWdlRGlnZXN0LmRpZ2VzdCgpO1xuXG4gICAgaWYgKCFkYXRhVG9WZXJpZnkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSGFzaCBzaG91bGQgbm90IGJlIG51bGwgd2hpbGUgZGVjcnlwdGluZyBlbmNyeXB0ZWQgY29sdW1uIGVuY3J5cHRpb24ga2V5LicpO1xuICAgIH1cblxuICAgIGNvbnN0IHZlcmlmeUtleSA9IGF3YWl0IGNyeXB0b0NsaWVudC52ZXJpZnkoJ1JTMjU2JywgZGF0YVRvVmVyaWZ5LCBzaWduYXR1cmUpO1xuICAgIGlmICghdmVyaWZ5S2V5LnJlc3VsdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgc3BlY2lmaWVkIGVuY3J5cHRlZCBjb2x1bW4gZW5jcnlwdGlvbiBrZXkgc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoIHRoZSBzaWduYXR1cmUgY29tcHV0ZWQgd2l0aCB0aGUgY29sdW1uIG1hc3RlciBrZXkgKEFzeW1tZXRyaWMga2V5IGluIEF6dXJlIEtleSBWYXVsdCkgaW4gJHttYXN0ZXJLZXlQYXRofS4gVGhlIGVuY3J5cHRlZCBjb2x1bW4gZW5jcnlwdGlvbiBrZXkgbWF5IGJlIGNvcnJ1cHQsIG9yIHRoZSBzcGVjaWZpZWQgcGF0aCBtYXkgYmUgaW5jb3JyZWN0LmApO1xuICAgIH1cblxuICAgIGNvbnN0IGRlY3J5cHRlZENFSzogQnVmZmVyID0gYXdhaXQgdGhpcy5henVyZUtleVZhdWx0VW5XcmFwKGNyeXB0b0NsaWVudCwgZW5jcnlwdGlvbkFsZ29yaXRobSwgY2lwaGVyVGV4dCk7XG5cbiAgICByZXR1cm4gZGVjcnlwdGVkQ0VLO1xuICB9XG5cbiAgYXN5bmMgZW5jcnlwdENvbHVtbkVuY3J5cHRpb25LZXkobWFzdGVyS2V5UGF0aDogc3RyaW5nLCBlbmNyeXB0aW9uQWxnb3JpdGhtOiBzdHJpbmcsIGNvbHVtbkVuY3J5cHRpb25LZXk6IEJ1ZmZlcik6IFByb21pc2U8QnVmZmVyPiB7XG4gICAgaWYgKCFjb2x1bW5FbmNyeXB0aW9uS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbHVtbiBlbmNyeXB0aW9uIGtleSBjYW5ub3QgYmUgbnVsbC4nKTtcbiAgICB9XG5cbiAgICBpZiAoY29sdW1uRW5jcnlwdGlvbktleS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRW1wdHkgY29sdW1uIGVuY3J5cHRpb24ga2V5IHNwZWNpZmllZC4nKTtcbiAgICB9XG5cbiAgICBlbmNyeXB0aW9uQWxnb3JpdGhtID0gdGhpcy52YWxpZGF0ZUVuY3J5cHRpb25BbGdvcml0aG0oZW5jcnlwdGlvbkFsZ29yaXRobSk7XG5cbiAgICBjb25zdCBtYXN0ZXJLZXkgPSBhd2FpdCB0aGlzLmdldE1hc3RlcktleShtYXN0ZXJLZXlQYXRoKTtcblxuICAgIGNvbnN0IGtleVNpemVJbkJ5dGVzID0gdGhpcy5nZXRBS1ZLZXlTaXplKG1hc3RlcktleSk7XG5cbiAgICBjb25zdCBjcnlwdG9DbGllbnQgPSB0aGlzLmNyZWF0ZUNyeXB0b0NsaWVudChtYXN0ZXJLZXkpO1xuXG4gICAgY29uc3QgdmVyc2lvbiA9IEJ1ZmZlci5mcm9tKFt0aGlzLmZpcnN0VmVyc2lvblswXV0pO1xuXG4gICAgY29uc3QgbWFzdGVyS2V5UGF0aEJ5dGVzOiBCdWZmZXIgPSBCdWZmZXIuZnJvbShtYXN0ZXJLZXlQYXRoLnRvTG93ZXJDYXNlKCksICd1dGY4Jyk7XG5cbiAgICBjb25zdCBrZXlQYXRoTGVuZ3RoOiBCdWZmZXIgPSBCdWZmZXIuYWxsb2MoMik7XG5cbiAgICBrZXlQYXRoTGVuZ3RoWzBdID0gbWFzdGVyS2V5UGF0aEJ5dGVzLmxlbmd0aCAmIDB4ZmY7XG4gICAga2V5UGF0aExlbmd0aFsxXSA9IG1hc3RlcktleVBhdGhCeXRlcy5sZW5ndGggPj4gOCAmIDB4ZmY7XG5cbiAgICBjb25zdCBjaXBoZXJUZXh0OiBCdWZmZXIgPSBhd2FpdCB0aGlzLmF6dXJlS2V5VmF1bHRXcmFwKGNyeXB0b0NsaWVudCwgZW5jcnlwdGlvbkFsZ29yaXRobSwgY29sdW1uRW5jcnlwdGlvbktleSk7XG5cbiAgICBjb25zdCBjaXBoZXJUZXh0TGVuZ3RoOiBCdWZmZXIgPSBCdWZmZXIuYWxsb2MoMik7XG5cbiAgICBjaXBoZXJUZXh0TGVuZ3RoWzBdID0gY2lwaGVyVGV4dC5sZW5ndGggJiAweGZmO1xuICAgIGNpcGhlclRleHRMZW5ndGhbMV0gPSBjaXBoZXJUZXh0Lmxlbmd0aCA+PiA4ICYgMHhmZjtcblxuICAgIGlmIChjaXBoZXJUZXh0Lmxlbmd0aCAhPT0ga2V5U2l6ZUluQnl0ZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2lwaGVyVGV4dCBsZW5ndGggZG9lcyBub3QgbWF0Y2ggdGhlIFJTQSBrZXkgc2l6ZS4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhVG9IYXNoOiBCdWZmZXIgPSBCdWZmZXIuYWxsb2ModmVyc2lvbi5sZW5ndGggKyBrZXlQYXRoTGVuZ3RoLmxlbmd0aCArIGNpcGhlclRleHRMZW5ndGgubGVuZ3RoICsgbWFzdGVyS2V5UGF0aEJ5dGVzLmxlbmd0aCArIGNpcGhlclRleHQubGVuZ3RoKTtcbiAgICBsZXQgZGVzdGluYXRpb25Qb3NpdGlvbjogbnVtYmVyID0gdmVyc2lvbi5sZW5ndGg7XG4gICAgdmVyc2lvbi5jb3B5KGRhdGFUb0hhc2gsIDAsIDAsIHZlcnNpb24ubGVuZ3RoKTtcblxuICAgIGtleVBhdGhMZW5ndGguY29weShkYXRhVG9IYXNoLCBkZXN0aW5hdGlvblBvc2l0aW9uLCAwLCBrZXlQYXRoTGVuZ3RoLmxlbmd0aCk7XG4gICAgZGVzdGluYXRpb25Qb3NpdGlvbiArPSBrZXlQYXRoTGVuZ3RoLmxlbmd0aDtcblxuICAgIGNpcGhlclRleHRMZW5ndGguY29weShkYXRhVG9IYXNoLCBkZXN0aW5hdGlvblBvc2l0aW9uLCAwLCBjaXBoZXJUZXh0TGVuZ3RoLmxlbmd0aCk7XG4gICAgZGVzdGluYXRpb25Qb3NpdGlvbiArPSBjaXBoZXJUZXh0TGVuZ3RoLmxlbmd0aDtcblxuICAgIG1hc3RlcktleVBhdGhCeXRlcy5jb3B5KGRhdGFUb0hhc2gsIGRlc3RpbmF0aW9uUG9zaXRpb24sIDAsIG1hc3RlcktleVBhdGhCeXRlcy5sZW5ndGgpO1xuICAgIGRlc3RpbmF0aW9uUG9zaXRpb24gKz0gbWFzdGVyS2V5UGF0aEJ5dGVzLmxlbmd0aDtcblxuICAgIGNpcGhlclRleHQuY29weShkYXRhVG9IYXNoLCBkZXN0aW5hdGlvblBvc2l0aW9uLCAwLCBjaXBoZXJUZXh0Lmxlbmd0aCk7XG5cbiAgICBjb25zdCBtZXNzYWdlRGlnZXN0ID0gY3JlYXRlSGFzaCgnc2hhMjU2Jyk7XG5cbiAgICBtZXNzYWdlRGlnZXN0LnVwZGF0ZShkYXRhVG9IYXNoKTtcblxuICAgIGNvbnN0IGRhdGFUb1NpZ246IEJ1ZmZlciA9IG1lc3NhZ2VEaWdlc3QuZGlnZXN0KCk7XG5cbiAgICBjb25zdCBzaWduZWRIYXNoOiBCdWZmZXIgPSBhd2FpdCB0aGlzLmF6dXJlS2V5VmF1bHRTaWduZWRIYXNoZWREYXRhKGNyeXB0b0NsaWVudCwgZGF0YVRvU2lnbik7XG4gICAgaWYgKHNpZ25lZEhhc2gubGVuZ3RoICE9PSBrZXlTaXplSW5CeXRlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTaWduZWQgaGFzaCBsZW5ndGggZG9lcyBub3QgbWF0Y2ggdGhlIFJTQSBrZXkgc2l6ZS4nKTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXJpZnlLZXkgPSBhd2FpdCBjcnlwdG9DbGllbnQudmVyaWZ5KCdSUzI1NicsIGRhdGFUb1NpZ24sIHNpZ25lZEhhc2gpO1xuXG4gICAgaWYgKCF2ZXJpZnlLZXkucmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc2lnbmF0dXJlIG9mIHRoZSBlbmNyeXB0ZWQgY29sdW1uIGVuY3J5cHRpb24ga2V5IGNvbXB1dGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGVuY3J5cHRlZENvbHVtbkVuY3J5cHRpb25LZXlMZW5ndGg6IG51bWJlciA9IHZlcnNpb24ubGVuZ3RoICsgY2lwaGVyVGV4dExlbmd0aC5sZW5ndGggKyBrZXlQYXRoTGVuZ3RoLmxlbmd0aCArIGNpcGhlclRleHQubGVuZ3RoICsgbWFzdGVyS2V5UGF0aEJ5dGVzLmxlbmd0aCArIHNpZ25lZEhhc2gubGVuZ3RoO1xuICAgIGNvbnN0IGVuY3J5cHRlZENvbHVtbkVuY3J5cHRpb25LZXk6IEJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyhlbmNyeXB0ZWRDb2x1bW5FbmNyeXB0aW9uS2V5TGVuZ3RoKTtcblxuICAgIGxldCBjdXJyZW50SW5kZXggPSAwO1xuICAgIHZlcnNpb24uY29weShlbmNyeXB0ZWRDb2x1bW5FbmNyeXB0aW9uS2V5LCBjdXJyZW50SW5kZXgsIDAsIHZlcnNpb24ubGVuZ3RoKTtcbiAgICBjdXJyZW50SW5kZXggKz0gdmVyc2lvbi5sZW5ndGg7XG5cbiAgICBrZXlQYXRoTGVuZ3RoLmNvcHkoZW5jcnlwdGVkQ29sdW1uRW5jcnlwdGlvbktleSwgY3VycmVudEluZGV4LCAwLCBrZXlQYXRoTGVuZ3RoLmxlbmd0aCk7XG4gICAgY3VycmVudEluZGV4ICs9IGtleVBhdGhMZW5ndGgubGVuZ3RoO1xuXG4gICAgY2lwaGVyVGV4dExlbmd0aC5jb3B5KGVuY3J5cHRlZENvbHVtbkVuY3J5cHRpb25LZXksIGN1cnJlbnRJbmRleCwgMCwgY2lwaGVyVGV4dExlbmd0aC5sZW5ndGgpO1xuICAgIGN1cnJlbnRJbmRleCArPSBjaXBoZXJUZXh0TGVuZ3RoLmxlbmd0aDtcblxuICAgIG1hc3RlcktleVBhdGhCeXRlcy5jb3B5KGVuY3J5cHRlZENvbHVtbkVuY3J5cHRpb25LZXksIGN1cnJlbnRJbmRleCwgMCwgbWFzdGVyS2V5UGF0aEJ5dGVzLmxlbmd0aCk7XG4gICAgY3VycmVudEluZGV4ICs9IG1hc3RlcktleVBhdGhCeXRlcy5sZW5ndGg7XG5cbiAgICBjaXBoZXJUZXh0LmNvcHkoZW5jcnlwdGVkQ29sdW1uRW5jcnlwdGlvbktleSwgY3VycmVudEluZGV4LCAwLCBjaXBoZXJUZXh0Lmxlbmd0aCk7XG4gICAgY3VycmVudEluZGV4ICs9IGNpcGhlclRleHQubGVuZ3RoO1xuXG4gICAgc2lnbmVkSGFzaC5jb3B5KGVuY3J5cHRlZENvbHVtbkVuY3J5cHRpb25LZXksIGN1cnJlbnRJbmRleCwgMCwgc2lnbmVkSGFzaC5sZW5ndGgpO1xuXG4gICAgcmV0dXJuIGVuY3J5cHRlZENvbHVtbkVuY3J5cHRpb25LZXk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldE1hc3RlcktleShtYXN0ZXJLZXlQYXRoOiBzdHJpbmcpOiBQcm9taXNlPEtleVZhdWx0S2V5PiB7XG4gICAgaWYgKCFtYXN0ZXJLZXlQYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hc3RlciBrZXkgcGF0aCBjYW5ub3QgYmUgbnVsbCBvciB1bmRlZmluZWQnKTtcbiAgICB9XG4gICAgY29uc3Qga2V5UGFydHMgPSB0aGlzLnBhcnNlUGF0aChtYXN0ZXJLZXlQYXRoKTtcblxuICAgIHRoaXMuY3JlYXRlS2V5Q2xpZW50KGtleVBhcnRzLnZhdWx0VXJsKTtcblxuICAgIHJldHVybiAodGhpcy5rZXlDbGllbnQgYXMgS2V5Q2xpZW50KS5nZXRLZXkoa2V5UGFydHMubmFtZSwga2V5UGFydHMudmVyc2lvbiA/IHsgdmVyc2lvbjoga2V5UGFydHMudmVyc2lvbiB9IDoge30pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVLZXlDbGllbnQoa2V5VmF1bHRVcmw6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICgha2V5VmF1bHRVcmwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNyZWF0ZSBrZXkgY2xpZW50IHdpdGggbnVsbCBvciB1bmRlZmluZWQga2V5VmF1bHRVcmwnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmtleUNsaWVudCkge1xuICAgICAgdGhpcy51cmwgPSBrZXlWYXVsdFVybDtcbiAgICAgIHRoaXMua2V5Q2xpZW50ID0gbmV3IEtleUNsaWVudChrZXlWYXVsdFVybCwgdGhpcy5jcmVkZW50aWFscyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDcnlwdG9DbGllbnQobWFzdGVyS2V5OiBLZXlWYXVsdEtleSk6IENyeXB0b2dyYXBoeUNsaWVudCB7XG4gICAgaWYgKCFtYXN0ZXJLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNyZWF0ZSBDcnlwdG9ncmFwaHlDbGllbnQgd2l0aCBudWxsIG9yIHVuZGVmaW5lZCBtYXN0ZXJLZXknKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBDcnlwdG9ncmFwaHlDbGllbnQobWFzdGVyS2V5LCB0aGlzLmNyZWRlbnRpYWxzKTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VQYXRoKG1hc3RlcktleVBhdGg6IHN0cmluZyk6IFBhcnNlZEtleVBhdGgge1xuICAgIGlmICghbWFzdGVyS2V5UGF0aCB8fCBtYXN0ZXJLZXlQYXRoLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXp1cmUgS2V5IFZhdWx0IGtleSBwYXRoIGNhbm5vdCBiZSBudWxsLicpO1xuICAgIH1cblxuICAgIGxldCBiYXNlVXJpO1xuICAgIHRyeSB7XG4gICAgICBiYXNlVXJpID0gcGFyc2UobWFzdGVyS2V5UGF0aCwgdHJ1ZSwgdHJ1ZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQga2V5cyBpZGVudGlmaWVyOiAke21hc3RlcktleVBhdGh9LiBOb3QgYSB2YWxpZCBVUklgKTtcbiAgICB9XG5cbiAgICBpZiAoIWJhc2VVcmkuaG9zdG5hbWUgfHwgIWJhc2VVcmkuaG9zdG5hbWUudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCh0aGlzLmF6dXJlS2V5VmF1bHREb21haW5OYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIEF6dXJlIEtleSBWYXVsdCBrZXkgcGF0aCBzcGVjaWZpZWQ6ICR7bWFzdGVyS2V5UGF0aH0uYCk7XG4gICAgfVxuXG4gICAgLy8gUGF0aCBpcyBvZiB0aGUgZm9ybSAnL2NvbGxlY3Rpb24vbmFtZVsvdmVyc2lvbl0nXG4gICAgY29uc3Qgc2VnbWVudHMgPSAoYmFzZVVyaS5wYXRobmFtZSB8fCAnJykuc3BsaXQoJy8nKTtcbiAgICBpZiAoc2VnbWVudHMubGVuZ3RoICE9PSAzICYmIHNlZ21lbnRzLmxlbmd0aCAhPT0gNCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW52YWxpZCBrZXlzIGlkZW50aWZpZXI6ICR7bWFzdGVyS2V5UGF0aH0uIEJhZCBudW1iZXIgb2Ygc2VnbWVudHM6ICR7c2VnbWVudHMubGVuZ3RofWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCdrZXlzJyAhPT0gc2VnbWVudHNbMV0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEludmFsaWQga2V5cyBpZGVudGlmaWVyOiAke21hc3RlcktleVBhdGh9LiBzZWdtZW50IFsxXSBzaG91bGQgYmUgXCJrZXlzXCIsIGZvdW5kIFwiJHtzZWdtZW50c1sxXX1cImBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgdmF1bHRVcmwgPSBgJHtiYXNlVXJpLnByb3RvY29sfS8vJHtiYXNlVXJpLmhvc3R9YDtcbiAgICBjb25zdCBuYW1lID0gc2VnbWVudHNbMl07XG4gICAgY29uc3QgdmVyc2lvbiA9IHNlZ21lbnRzLmxlbmd0aCA9PT0gNCA/IHNlZ21lbnRzWzNdIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiB7XG4gICAgICB2YXVsdFVybCxcbiAgICAgIG5hbWUsXG4gICAgICB2ZXJzaW9uXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYXp1cmVLZXlWYXVsdFNpZ25lZEhhc2hlZERhdGEoY3J5cHRvQ2xpZW50OiBDcnlwdG9ncmFwaHlDbGllbnQsIGRhdGFUb1NpZ246IEJ1ZmZlcik6IFByb21pc2U8QnVmZmVyPiB7XG4gICAgaWYgKCFjcnlwdG9DbGllbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXp1cmUgS1ZTIENyeXB0byBDbGllbnQgaXMgbm90IGRlZmluZWQuJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2lnbmVkRGF0YSA9IGF3YWl0IGNyeXB0b0NsaWVudC5zaWduKCdSUzI1NicsIGRhdGFUb1NpZ24pO1xuXG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHNpZ25lZERhdGEucmVzdWx0KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYXp1cmVLZXlWYXVsdFdyYXAoY3J5cHRvQ2xpZW50OiBDcnlwdG9ncmFwaHlDbGllbnQsIGVuY3J5cHRpb25BbGdvcml0aG06IHN0cmluZywgY29sdW1uRW5jcnlwdGlvbktleTogQnVmZmVyKTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICBpZiAoIWNyeXB0b0NsaWVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBenVyZSBLVlMgQ3J5cHRvIENsaWVudCBpcyBub3QgZGVmaW5lZC4nKTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbHVtbkVuY3J5cHRpb25LZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ29sdW1uIGVuY3J5cHRpb24ga2V5IGNhbm5vdCBiZSBudWxsLicpO1xuICAgIH1cblxuICAgIGNvbnN0IHdyYXBwZWRLZXkgPSBhd2FpdCBjcnlwdG9DbGllbnQud3JhcEtleShlbmNyeXB0aW9uQWxnb3JpdGhtIGFzIEtleVdyYXBBbGdvcml0aG0sIGNvbHVtbkVuY3J5cHRpb25LZXkpO1xuXG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHdyYXBwZWRLZXkucmVzdWx0KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYXp1cmVLZXlWYXVsdFVuV3JhcChjcnlwdG9DbGllbnQ6IENyeXB0b2dyYXBoeUNsaWVudCwgZW5jcnlwdGlvbkFsZ29yaXRobTogc3RyaW5nLCBlbmNyeXB0ZWRDb2x1bW5FbmNyeXB0aW9uS2V5OiBCdWZmZXIpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgIGlmICghY3J5cHRvQ2xpZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F6dXJlIEtWUyBDcnlwdG8gQ2xpZW50IGlzIG5vdCBkZWZpbmVkLicpO1xuICAgIH1cblxuICAgIGlmICghZW5jcnlwdGlvbkFsZ29yaXRobSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbmNyeXB0aW9uIEFsZ29yaXRobSBjYW5ub3QgYmUgbnVsbCBvciB1bmRlZmluZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoIWVuY3J5cHRlZENvbHVtbkVuY3J5cHRpb25LZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRW5jcnlwdGVkIGNvbHVtbiBlbmNyeXB0aW9uIGtleSBjYW5ub3QgYmUgbnVsbC4nKTtcbiAgICB9XG5cbiAgICBpZiAoZW5jcnlwdGVkQ29sdW1uRW5jcnlwdGlvbktleS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRW5jcnlwdGVkIENvbHVtbiBFbmNyeXB0aW9uIEtleSBsZW5ndGggc2hvdWxkIG5vdCBiZSB6ZXJvLicpO1xuICAgIH1cblxuICAgIGNvbnN0IHVud3JhcHBlZEtleSA9IGF3YWl0IGNyeXB0b0NsaWVudC51bndyYXBLZXkoZW5jcnlwdGlvbkFsZ29yaXRobSBhcyBLZXlXcmFwQWxnb3JpdGhtLCBlbmNyeXB0ZWRDb2x1bW5FbmNyeXB0aW9uS2V5KTtcblxuICAgIHJldHVybiBCdWZmZXIuZnJvbSh1bndyYXBwZWRLZXkucmVzdWx0KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QUtWS2V5U2l6ZShyZXRyaWV2ZWRLZXk6IEtleVZhdWx0S2V5KTogbnVtYmVyIHtcbiAgICBpZiAoIXJldHJpZXZlZEtleSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXRyaWV2ZWQga2V5IGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCcpO1xuICAgIH1cbiAgICBjb25zdCBrZXkgPSByZXRyaWV2ZWRLZXkua2V5O1xuXG4gICAgaWYgKCFrZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgS2V5IGRvZXMgbm90IGV4aXN0ICR7cmV0cmlldmVkS2V5Lm5hbWV9YCk7XG4gICAgfVxuXG4gICAgY29uc3Qga3R5OiBzdHJpbmcgfCB1bmRlZmluZWQgPSBrZXkgJiYga2V5Lmt0eSAmJiBrZXkua3R5LnRvU3RyaW5nKCkudG9VcHBlckNhc2UoKTtcblxuICAgIGlmICgha3R5IHx8ICdSU0EnLmxvY2FsZUNvbXBhcmUoa3R5LCAnZW4nKSAhPT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgdXNlIGEgbm9uLVJTQSBrZXk6ICR7a3R5fS5gKTtcbiAgICB9XG5cbiAgICBjb25zdCBrZXlMZW5ndGggPSBrZXkgJiYga2V5Lm4gJiYga2V5Lm4ubGVuZ3RoO1xuXG4gICAgcmV0dXJuIGtleUxlbmd0aCB8fCAwO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUVuY3J5cHRpb25BbGdvcml0aG0oZW5jcnlwdGlvbkFsZ29yaXRobTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWVuY3J5cHRpb25BbGdvcml0aG0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignS2V5IGVuY3J5cHRpb24gYWxnb3JpdGhtIGNhbm5vdCBiZSBudWxsLicpO1xuICAgIH1cblxuICAgIGlmICgnUlNBX09BRVAnLmxvY2FsZUNvbXBhcmUoZW5jcnlwdGlvbkFsZ29yaXRobS50b1VwcGVyQ2FzZSgpLCAnZW4nKSA9PT0gMCkge1xuICAgICAgZW5jcnlwdGlvbkFsZ29yaXRobSA9ICdSU0EtT0FFUCc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucnNhRW5jcnlwdGlvbkFsZ29yaXRobVdpdGhPQUVQRm9yQUtWLmxvY2FsZUNvbXBhcmUoZW5jcnlwdGlvbkFsZ29yaXRobS50cmltKCkudG9VcHBlckNhc2UoKSwgJ2VuJykgIT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBrZXkgZW5jcnlwdGlvbiBhbGdvcml0aG0gc3BlY2lmaWVkOiAke2VuY3J5cHRpb25BbGdvcml0aG19LiBFeHBlY3RlZCB2YWx1ZTogJHt0aGlzLnJzYUVuY3J5cHRpb25BbGdvcml0aG1XaXRoT0FFUEZvckFLVn0uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVuY3J5cHRpb25BbGdvcml0aG07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -43,4 +43,5 @@ const getKey = async (keyInfo, options) => {
|
|
|
43
43
|
}
|
|
44
44
|
};
|
|
45
45
|
|
|
46
|
-
exports.getKey = getKey;
|
|
46
|
+
exports.getKey = getKey;
|
|
47
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbHdheXMtZW5jcnlwdGVkL3N5bW1ldHJpYy1rZXktY2FjaGUudHMiXSwibmFtZXMiOlsiY2FjaGUiLCJMUlUiLCJnZXRLZXkiLCJrZXlJbmZvIiwib3B0aW9ucyIsInRydXN0ZWRTZXJ2ZXJOYW1lQUUiLCJFcnJvciIsInNlcnZlck5hbWUiLCJrZXlMb29rdXBWYWx1ZSIsIkJ1ZmZlciIsImZyb20iLCJlbmNyeXB0ZWRLZXkiLCJ0b1N0cmluZyIsImtleVN0b3JlTmFtZSIsImhhcyIsImdldCIsInByb3ZpZGVyIiwiZW5jcnlwdGlvbktleVN0b3JlUHJvdmlkZXJzIiwicGxhaW50ZXh0S2V5IiwiZGVjcnlwdENvbHVtbkVuY3J5cHRpb25LZXkiLCJrZXlQYXRoIiwiYWxnb3JpdGhtTmFtZSIsImVuY3J5cHRpb25LZXkiLCJTeW1tZXRyaWNLZXkiLCJjb2x1bW5FbmNyeXB0aW9uS2V5Q2FjaGVUVEwiLCJzZXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQTs7QUFFQTs7OztBQU5BO0FBQ0E7QUFPQSxNQUFNQSxLQUFLLEdBQUcsSUFBSUMsaUJBQUosQ0FBOEIsQ0FBOUIsQ0FBZDs7QUFFTyxNQUFNQyxNQUFNLEdBQUcsT0FBT0MsT0FBUCxFQUFtQ0MsT0FBbkMsS0FBeUY7QUFDN0csTUFBSSxDQUFDQSxPQUFPLENBQUNDLG1CQUFiLEVBQWtDO0FBQ2hDLFVBQU0sSUFBSUMsS0FBSixDQUFVLDBDQUFWLENBQU47QUFDRDs7QUFFRCxRQUFNQyxVQUFrQixHQUFHSCxPQUFPLENBQUNDLG1CQUFuQztBQUVBLFFBQU1HLGNBQWMsR0FBSSxHQUFFRCxVQUFXLElBQUdFLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZUCxPQUFPLENBQUNRLFlBQXBCLEVBQWtDQyxRQUFsQyxDQUEyQyxRQUEzQyxDQUFxRCxJQUFHVCxPQUFPLENBQUNVLFlBQWEsRUFBckg7O0FBRUEsTUFBSWIsS0FBSyxDQUFDYyxHQUFOLENBQVVOLGNBQVYsQ0FBSixFQUErQjtBQUM3QixXQUFPUixLQUFLLENBQUNlLEdBQU4sQ0FBVVAsY0FBVixDQUFQO0FBQ0QsR0FGRCxNQUVPO0FBQ0wsVUFBTVEsUUFBUSxHQUFHWixPQUFPLENBQUNhLDJCQUFSLElBQXVDYixPQUFPLENBQUNhLDJCQUFSLENBQW9DZCxPQUFPLENBQUNVLFlBQTVDLENBQXhEOztBQUNBLFFBQUksQ0FBQ0csUUFBTCxFQUFlO0FBQ2IsWUFBTSxJQUFJVixLQUFKLENBQVcsK0VBQThFSCxPQUFPLENBQUNVLFlBQWEsMkxBQTBMVCxPQUFPLENBQUNhLDJCQUE0Qiw4TEFBNVUsQ0FBTjtBQUNEOztBQUVELFVBQU1DLFlBQW9CLEdBQUcsTUFBTUYsUUFBUSxDQUFDRywwQkFBVCxDQUFvQ2hCLE9BQU8sQ0FBQ2lCLE9BQTVDLEVBQXFEakIsT0FBTyxDQUFDa0IsYUFBN0QsRUFBNEVsQixPQUFPLENBQUNRLFlBQXBGLENBQW5DO0FBRUEsVUFBTVcsYUFBYSxHQUFHLElBQUlDLHFCQUFKLENBQWlCTCxZQUFqQixDQUF0Qjs7QUFFQSxRQUFJZCxPQUFPLENBQUNvQiwyQkFBUixHQUFzQyxDQUExQyxFQUE2QztBQUMzQ3hCLE1BQUFBLEtBQUssQ0FBQ3lCLEdBQU4sQ0FBVWpCLGNBQVYsRUFBMEJjLGFBQTFCLEVBQXlDbEIsT0FBTyxDQUFDb0IsMkJBQWpEO0FBQ0Q7O0FBRUQsV0FBT0YsYUFBUDtBQUNEO0FBQ0YsQ0EzQk0iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGNvZGUgaXMgYmFzZWQgb24gdGhlIGBtc3NxbC1qZGJjYCBsaWJyYXJ5IHB1Ymxpc2hlZCB1bmRlciB0aGUgY29uZGl0aW9ucyBvZiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCAoYykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb25cblxuaW1wb3J0IHsgRW5jcnlwdGlvbktleUluZm8gfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCBTeW1tZXRyaWNLZXkgZnJvbSAnLi9zeW1tZXRyaWMta2V5JztcbmltcG9ydCB7IEludGVybmFsQ29ubmVjdGlvbk9wdGlvbnMgYXMgQ29ubmVjdGlvbk9wdGlvbnMgfSBmcm9tICcuLi9jb25uZWN0aW9uJztcbmltcG9ydCBMUlUgZnJvbSAnbHJ1LWNhY2hlJztcblxuY29uc3QgY2FjaGUgPSBuZXcgTFJVPHN0cmluZywgU3ltbWV0cmljS2V5PigwKTtcblxuZXhwb3J0IGNvbnN0IGdldEtleSA9IGFzeW5jIChrZXlJbmZvOiBFbmNyeXB0aW9uS2V5SW5mbywgb3B0aW9uczogQ29ubmVjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFN5bW1ldHJpY0tleT4gPT4ge1xuICBpZiAoIW9wdGlvbnMudHJ1c3RlZFNlcnZlck5hbWVBRSkge1xuICAgIHRocm93IG5ldyBFcnJvcignU2VydmVyIG5hbWUgc2hvdWxkIG5vdCBiZSBudWxsIGluIGdldEtleScpO1xuICB9XG5cbiAgY29uc3Qgc2VydmVyTmFtZTogc3RyaW5nID0gb3B0aW9ucy50cnVzdGVkU2VydmVyTmFtZUFFO1xuXG4gIGNvbnN0IGtleUxvb2t1cFZhbHVlID0gYCR7c2VydmVyTmFtZX06JHtCdWZmZXIuZnJvbShrZXlJbmZvLmVuY3J5cHRlZEtleSkudG9TdHJpbmcoJ2Jhc2U2NCcpfToke2tleUluZm8ua2V5U3RvcmVOYW1lfWA7XG5cbiAgaWYgKGNhY2hlLmhhcyhrZXlMb29rdXBWYWx1ZSkpIHtcbiAgICByZXR1cm4gY2FjaGUuZ2V0KGtleUxvb2t1cFZhbHVlKSBhcyBTeW1tZXRyaWNLZXk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcHJvdmlkZXIgPSBvcHRpb25zLmVuY3J5cHRpb25LZXlTdG9yZVByb3ZpZGVycyAmJiBvcHRpb25zLmVuY3J5cHRpb25LZXlTdG9yZVByb3ZpZGVyc1trZXlJbmZvLmtleVN0b3JlTmFtZV07XG4gICAgaWYgKCFwcm92aWRlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZGVjcnlwdCBhIGNvbHVtbiBlbmNyeXB0aW9uIGtleS4gSW52YWxpZCBrZXkgc3RvcmUgcHJvdmlkZXIgbmFtZTogJHtrZXlJbmZvLmtleVN0b3JlTmFtZX0uIEEga2V5IHN0b3JlIHByb3ZpZGVyIG5hbWUgbXVzdCBkZW5vdGUgZWl0aGVyIGEgc3lzdGVtIGtleSBzdG9yZSBwcm92aWRlciBvciBhIHJlZ2lzdGVyZWQgY3VzdG9tIGtleSBzdG9yZSBwcm92aWRlci4gVmFsaWQgKGN1cnJlbnRseSByZWdpc3RlcmVkKSBjdXN0b20ga2V5IHN0b3JlIHByb3ZpZGVyIG5hbWVzIGFyZTogJHtvcHRpb25zLmVuY3J5cHRpb25LZXlTdG9yZVByb3ZpZGVyc30uIFBsZWFzZSB2ZXJpZnkga2V5IHN0b3JlIHByb3ZpZGVyIGluZm9ybWF0aW9uIGluIGNvbHVtbiBtYXN0ZXIga2V5IGRlZmluaXRpb25zIGluIHRoZSBkYXRhYmFzZSwgYW5kIHZlcmlmeSBhbGwgY3VzdG9tIGtleSBzdG9yZSBwcm92aWRlcnMgdXNlZCBpbiB5b3VyIGFwcGxpY2F0aW9uIGFyZSByZWdpc3RlcmVkIHByb3Blcmx5LmApO1xuICAgIH1cblxuICAgIGNvbnN0IHBsYWludGV4dEtleTogQnVmZmVyID0gYXdhaXQgcHJvdmlkZXIuZGVjcnlwdENvbHVtbkVuY3J5cHRpb25LZXkoa2V5SW5mby5rZXlQYXRoLCBrZXlJbmZvLmFsZ29yaXRobU5hbWUsIGtleUluZm8uZW5jcnlwdGVkS2V5KTtcblxuICAgIGNvbnN0IGVuY3J5cHRpb25LZXkgPSBuZXcgU3ltbWV0cmljS2V5KHBsYWludGV4dEtleSk7XG5cbiAgICBpZiAob3B0aW9ucy5jb2x1bW5FbmNyeXB0aW9uS2V5Q2FjaGVUVEwgPiAwKSB7XG4gICAgICBjYWNoZS5zZXQoa2V5TG9va3VwVmFsdWUsIGVuY3J5cHRpb25LZXksIG9wdGlvbnMuY29sdW1uRW5jcnlwdGlvbktleUNhY2hlVFRMKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW5jcnlwdGlvbktleTtcbiAgfVxufTtcbiJdfQ==
|
|
@@ -28,4 +28,5 @@ class SymmetricKey {
|
|
|
28
28
|
|
|
29
29
|
exports.SymmetricKey = SymmetricKey;
|
|
30
30
|
var _default = SymmetricKey;
|
|
31
|
-
exports.default = _default;
|
|
31
|
+
exports.default = _default;
|
|
32
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbHdheXMtZW5jcnlwdGVkL3N5bW1ldHJpYy1rZXkudHMiXSwibmFtZXMiOlsiU3ltbWV0cmljS2V5IiwiY29uc3RydWN0b3IiLCJyb290S2V5IiwiRXJyb3IiLCJsZW5ndGgiLCJ6ZXJvT3V0S2V5IiwiQnVmZmVyIiwiYWxsb2MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBRU8sTUFBTUEsWUFBTixDQUFtQjtBQUd4QkMsRUFBQUEsV0FBVyxDQUFDQyxPQUFELEVBQWtCO0FBQUEsU0FGN0JBLE9BRTZCOztBQUMzQixRQUFJLENBQUNBLE9BQUwsRUFBYztBQUNaLFlBQU0sSUFBSUMsS0FBSixDQUFVLHVDQUFWLENBQU47QUFDRCxLQUZELE1BRU8sSUFBSSxNQUFNRCxPQUFPLENBQUNFLE1BQWxCLEVBQTBCO0FBQy9CLFlBQU0sSUFBSUQsS0FBSixDQUFVLHdDQUFWLENBQU47QUFDRDs7QUFDRCxTQUFLRCxPQUFMLEdBQWVBLE9BQWY7QUFDRDs7QUFFREcsRUFBQUEsVUFBVSxHQUFHO0FBQ1gsU0FBS0gsT0FBTCxHQUFlSSxNQUFNLENBQUNDLEtBQVAsQ0FBYSxLQUFLTCxPQUFMLENBQWFFLE1BQTFCLENBQWY7QUFDRDs7QUFkdUI7OztlQWdCWEosWSIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgY29kZSBpcyBiYXNlZCBvbiB0aGUgYG1zc3FsLWpkYmNgIGxpYnJhcnkgcHVibGlzaGVkIHVuZGVyIHRoZSBjb25kaXRpb25zIG9mIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IChjKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvblxuXG5leHBvcnQgY2xhc3MgU3ltbWV0cmljS2V5IHtcbiAgcm9vdEtleTogQnVmZmVyO1xuXG4gIGNvbnN0cnVjdG9yKHJvb3RLZXk6IEJ1ZmZlcikge1xuICAgIGlmICghcm9vdEtleSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb2x1bW4gZW5jcnlwdGlvbiBrZXkgY2Fubm90IGJlIG51bGwuJyk7XG4gICAgfSBlbHNlIGlmICgwID09PSByb290S2V5Lmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbXB0eSBjb2x1bW4gZW5jcnlwdGlvbiBrZXkgc3BlY2lmaWVkLicpO1xuICAgIH1cbiAgICB0aGlzLnJvb3RLZXkgPSByb290S2V5O1xuICB9XG5cbiAgemVyb091dEtleSgpIHtcbiAgICB0aGlzLnJvb3RLZXkgPSBCdWZmZXIuYWxsb2ModGhpcy5yb290S2V5Lmxlbmd0aCk7XG4gIH1cbn1cbmV4cG9ydCBkZWZhdWx0IFN5bW1ldHJpY0tleTtcbiJdfQ==
|
|
@@ -56,4 +56,5 @@ exports.SQLServerStatementColumnEncryptionSetting = SQLServerStatementColumnEncr
|
|
|
56
56
|
SQLServerStatementColumnEncryptionSetting[SQLServerStatementColumnEncryptionSetting["Enabled"] = 1] = "Enabled";
|
|
57
57
|
SQLServerStatementColumnEncryptionSetting[SQLServerStatementColumnEncryptionSetting["ResultSetOnly"] = 2] = "ResultSetOnly";
|
|
58
58
|
SQLServerStatementColumnEncryptionSetting[SQLServerStatementColumnEncryptionSetting["Disabled"] = 3] = "Disabled";
|
|
59
|
-
})(SQLServerStatementColumnEncryptionSetting || (exports.SQLServerStatementColumnEncryptionSetting = SQLServerStatementColumnEncryptionSetting = {}));
|
|
59
|
+
})(SQLServerStatementColumnEncryptionSetting || (exports.SQLServerStatementColumnEncryptionSetting = SQLServerStatementColumnEncryptionSetting = {}));
|
|
60
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbHdheXMtZW5jcnlwdGVkL3R5cGVzLnRzIl0sIm5hbWVzIjpbIlNRTFNlcnZlckVuY3J5cHRpb25UeXBlIiwiRGVzY3JpYmVQYXJhbWV0ZXJFbmNyeXB0aW9uUmVzdWx0U2V0MSIsIkRlc2NyaWJlUGFyYW1ldGVyRW5jcnlwdGlvblJlc3VsdFNldDIiLCJTUUxTZXJ2ZXJTdGF0ZW1lbnRDb2x1bW5FbmNyeXB0aW9uU2V0dGluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtJQWdCWUEsdUI7OztXQUFBQSx1QjtBQUFBQSxFQUFBQSx1QixDQUFBQSx1QjtBQUFBQSxFQUFBQSx1QixDQUFBQSx1QjtBQUFBQSxFQUFBQSx1QixDQUFBQSx1QjtHQUFBQSx1Qix1Q0FBQUEsdUI7O0FBNEJaO0FBQ0E7QUFDQTtJQUNZQyxxQyxFQWFaO0FBQ0E7QUFDQTs7OztXQWZZQSxxQztBQUFBQSxFQUFBQSxxQyxDQUFBQSxxQztBQUFBQSxFQUFBQSxxQyxDQUFBQSxxQztBQUFBQSxFQUFBQSxxQyxDQUFBQSxxQztBQUFBQSxFQUFBQSxxQyxDQUFBQSxxQztBQUFBQSxFQUFBQSxxQyxDQUFBQSxxQztBQUFBQSxFQUFBQSxxQyxDQUFBQSxxQztBQUFBQSxFQUFBQSxxQyxDQUFBQSxxQztBQUFBQSxFQUFBQSxxQyxDQUFBQSxxQztBQUFBQSxFQUFBQSxxQyxDQUFBQSxxQztHQUFBQSxxQyxxREFBQUEscUM7O0lBZ0JBQyxxQzs7O1dBQUFBLHFDO0FBQUFBLEVBQUFBLHFDLENBQUFBLHFDO0FBQUFBLEVBQUFBLHFDLENBQUFBLHFDO0FBQUFBLEVBQUFBLHFDLENBQUFBLHFDO0FBQUFBLEVBQUFBLHFDLENBQUFBLHFDO0FBQUFBLEVBQUFBLHFDLENBQUFBLHFDO0FBQUFBLEVBQUFBLHFDLENBQUFBLHFDO0dBQUFBLHFDLHFEQUFBQSxxQzs7SUFTQUMseUM7OztXQUFBQSx5QztBQUFBQSxFQUFBQSx5QyxDQUFBQSx5QztBQUFBQSxFQUFBQSx5QyxDQUFBQSx5QztBQUFBQSxFQUFBQSx5QyxDQUFBQSx5QztBQUFBQSxFQUFBQSx5QyxDQUFBQSx5QztHQUFBQSx5Qyx5REFBQUEseUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGNvZGUgaXMgYmFzZWQgb24gdGhlIGBtc3NxbC1qZGJjYCBsaWJyYXJ5IHB1Ymxpc2hlZCB1bmRlciB0aGUgY29uZGl0aW9ucyBvZiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCAoYykgMjAxOSBNaWNyb3NvZnQgQ29ycG9yYXRpb25cblxuaW1wb3J0IHsgQ0VLRW50cnkgfSBmcm9tICcuL2Nlay1lbnRyeSc7XG5pbXBvcnQgeyBCYXNlTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS1wYXJzZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVuY3J5cHRpb25LZXlJbmZvIHtcbiAgZW5jcnlwdGVkS2V5OiBCdWZmZXI7XG4gIGRiSWQ6IG51bWJlcjtcbiAga2V5SWQ6IG51bWJlcjtcbiAga2V5VmVyc2lvbjogbnVtYmVyO1xuICBtZFZlcnNpb246IEJ1ZmZlcjtcbiAga2V5UGF0aDogc3RyaW5nO1xuICBrZXlTdG9yZU5hbWU6IHN0cmluZztcbiAgYWxnb3JpdGhtTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBTUUxTZXJ2ZXJFbmNyeXB0aW9uVHlwZSB7XG4gIERldGVybWluaXN0aWMgPSAxLFxuICBSYW5kb21pemVkID0gMixcbiAgUGxhaW5UZXh0ID0gMCxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbmNyeXB0aW9uQWxnb3JpdGhtIHtcbiAgZW5jcnlwdERhdGE6IChwbGFpblRleHQ6IEJ1ZmZlcikgPT4gQnVmZmVyO1xuICBkZWNyeXB0RGF0YTogKGNpcGhlclRleHQ6IEJ1ZmZlcikgPT4gQnVmZmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyeXB0b01ldGFkYXRhIHtcbiAgY2VrRW50cnk/OiBDRUtFbnRyeTtcbiAgY2lwaGVyQWxnb3JpdGhtSWQ6IG51bWJlcjtcbiAgY2lwaGVyQWxnb3JpdGhtTmFtZT86IHN0cmluZztcbiAgbm9ybWFsaXphdGlvblJ1bGVWZXJzaW9uOiBCdWZmZXI7XG4gIGVuY3J5cHRpb25LZXlJbmZvPzogRW5jcnlwdGlvbktleUluZm87XG4gIG9yZGluYWw6IG51bWJlcjtcbiAgZW5jcnlwdGlvblR5cGU6IFNRTFNlcnZlckVuY3J5cHRpb25UeXBlO1xuICBjaXBoZXJBbGdvcml0aG0/OiBFbmNyeXB0aW9uQWxnb3JpdGhtO1xuICBiYXNlVHlwZUluZm8/OiBCYXNlTWV0YWRhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGFzaE1hcDxUPiB7XG4gIFtoYXNoOiBzdHJpbmddOiBUO1xufVxuXG5cbi8vIEZpZWxkcyBpbiB0aGUgZmlyc3QgcmVzdWx0c2V0IG9mIFwic3BfZGVzY3JpYmVfcGFyYW1ldGVyX2VuY3J5cHRpb25cIlxuLy8gV2UgZXhwZWN0IHRoZSBzZXJ2ZXIgdG8gcmV0dXJuIHRoZSBmaWVsZHMgaW4gdGhlIHJlc3VsdHNldCBpbiB0aGUgc2FtZSBvcmRlciBhcyBtZW50aW9uZWQgYmVsb3cuXG4vLyBJZiB0aGUgc2VydmVyIGNoYW5nZXMgdGhlIGJlbG93IG9yZGVyLCB0aGVuIHRyYW5zcGFyZW50IHBhcmFtZXRlciBlbmNyeXB0aW9uIHdpbGwgYnJlYWsuXG5leHBvcnQgZW51bSBEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQxIHtcbiAgS2V5T3JkaW5hbCxcbiAgRGJJZCxcbiAgS2V5SWQsXG4gIEtleVZlcnNpb24sXG4gIEtleU1kVmVyc2lvbixcbiAgRW5jcnlwdGVkS2V5LFxuICBQcm92aWRlck5hbWUsXG4gIEtleVBhdGgsXG4gIEtleUVuY3J5cHRpb25BbGdvcml0aG1cbn1cblxuXG4vLyBGaWVsZHMgaW4gdGhlIHNlY29uZCByZXN1bHRzZXQgb2YgXCJzcF9kZXNjcmliZV9wYXJhbWV0ZXJfZW5jcnlwdGlvblwiXG4vLyBXZSBleHBlY3QgdGhlIHNlcnZlciB0byByZXR1cm4gdGhlIGZpZWxkcyBpbiB0aGUgcmVzdWx0c2V0IGluIHRoZSBzYW1lIG9yZGVyIGFzIG1lbnRpb25lZCBiZWxvdy5cbi8vIElmIHRoZSBzZXJ2ZXIgY2hhbmdlcyB0aGUgYmVsb3cgb3JkZXIsIHRoZW4gdHJhbnNwYXJlbnQgcGFyYW1ldGVyIGVuY3J5cHRpb24gd2lsbCBicmVhay5cbmV4cG9ydCBlbnVtIERlc2NyaWJlUGFyYW1ldGVyRW5jcnlwdGlvblJlc3VsdFNldDIge1xuICBQYXJhbWV0ZXJPcmRpbmFsLFxuICBQYXJhbWV0ZXJOYW1lLFxuICBDb2x1bW5FbmNyeXB0aW9uQWxnb3JpdGhtLFxuICBDb2x1bW5FbmNyeXRpb25UeXBlLFxuICBDb2x1bW5FbmNyeXB0aW9uS2V5T3JkaW5hbCxcbiAgTm9ybWFsaXphdGlvblJ1bGVWZXJzaW9uXG59XG5cbmV4cG9ydCBlbnVtIFNRTFNlcnZlclN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nIHtcbiAgLyoqXG4gICAqIGlmIFwiQ29sdW1uIEVuY3J5cHRpb24gU2V0dGluZz1FbmFibGVkXCIgaW4gdGhlIGNvbm5lY3Rpb24gc3RyaW5nLCB1c2UgRW5hYmxlZC4gT3RoZXJ3aXNlLCBtYXBzIHRvIERpc2FibGVkLlxuICAgKi9cbiAgVXNlQ29ubmVjdGlvblNldHRpbmcsXG4gIC8qKlxuICAgKiBFbmFibGVzIFRDRSBmb3IgdGhlIGNvbW1hbmQuIE92ZXJyaWRlcyB0aGUgY29ubmVjdGlvbiBsZXZlbCBzZXR0aW5nIGZvciB0aGlzIGNvbW1hbmQuXG4gICAqL1xuICBFbmFibGVkLFxuICAvKipcbiAgICogUGFyYW1ldGVycyB3aWxsIG5vdCBiZSBlbmNyeXB0ZWQsIG9ubHkgdGhlIFJlc3VsdFNldCB3aWxsIGJlIGRlY3J5cHRlZC4gVGhpcyBpcyBhbiBvcHRpbWl6YXRpb24gZm9yIHF1ZXJpZXMgdGhhdFxuICAgKiBkbyBub3QgcGFzcyBhbnkgZW5jcnlwdGVkIGlucHV0IHBhcmFtZXRlcnMuIE92ZXJyaWRlcyB0aGUgY29ubmVjdGlvbiBsZXZlbCBzZXR0aW5nIGZvciB0aGlzIGNvbW1hbmQuXG4gICAqL1xuICBSZXN1bHRTZXRPbmx5LFxuICAvKipcbiAgICogRGlzYWJsZXMgVENFIGZvciB0aGUgY29tbWFuZC5PdmVycmlkZXMgdGhlIGNvbm5lY3Rpb24gbGV2ZWwgc2V0dGluZyBmb3IgdGhpcyBjb21tYW5kLlxuICAgKi9cbiAgRGlzYWJsZWQsXG59XG4iXX0=
|
|
@@ -23,4 +23,5 @@ const shouldHonorAE = (stmtColumnEncryptionSetting, columnEncryptionSetting) =>
|
|
|
23
23
|
}
|
|
24
24
|
};
|
|
25
25
|
|
|
26
|
-
exports.shouldHonorAE = shouldHonorAE;
|
|
26
|
+
exports.shouldHonorAE = shouldHonorAE;
|
|
27
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbHdheXMtZW5jcnlwdGVkL3V0aWxzLnRzIl0sIm5hbWVzIjpbInNob3VsZEhvbm9yQUUiLCJzdG10Q29sdW1uRW5jcnlwdGlvblNldHRpbmciLCJjb2x1bW5FbmNyeXB0aW9uU2V0dGluZyIsIlNRTFNlcnZlclN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nIiwiRGlzYWJsZWQiLCJSZXN1bHRTZXRPbmx5IiwiRW5hYmxlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBOztBQUhBO0FBQ0E7QUFJTyxNQUFNQSxhQUFhLEdBQUcsQ0FBQ0MsMkJBQUQsRUFBeUVDLHVCQUF6RSxLQUF1SDtBQUNsSixVQUFRRCwyQkFBUjtBQUNFLFNBQUtFLGlEQUEwQ0MsUUFBL0M7QUFDQSxTQUFLRCxpREFBMENFLGFBQS9DO0FBQ0UsYUFBTyxLQUFQOztBQUNGLFNBQUtGLGlEQUEwQ0csT0FBL0M7QUFDRSxhQUFPLElBQVA7O0FBQ0Y7QUFDRSxhQUFPSix1QkFBUDtBQVBKO0FBU0QsQ0FWTSIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgY29kZSBpcyBiYXNlZCBvbiB0aGUgYG1zc3FsLWpkYmNgIGxpYnJhcnkgcHVibGlzaGVkIHVuZGVyIHRoZSBjb25kaXRpb25zIG9mIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IChjKSAyMDE5IE1pY3Jvc29mdCBDb3Jwb3JhdGlvblxuXG5pbXBvcnQgeyBTUUxTZXJ2ZXJTdGF0ZW1lbnRDb2x1bW5FbmNyeXB0aW9uU2V0dGluZyB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3Qgc2hvdWxkSG9ub3JBRSA9IChzdG10Q29sdW1uRW5jcnlwdGlvblNldHRpbmc6IFNRTFNlcnZlclN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nLCBjb2x1bW5FbmNyeXB0aW9uU2V0dGluZzogYm9vbGVhbik6IGJvb2xlYW4gPT4ge1xuICBzd2l0Y2ggKHN0bXRDb2x1bW5FbmNyeXB0aW9uU2V0dGluZykge1xuICAgIGNhc2UgU1FMU2VydmVyU3RhdGVtZW50Q29sdW1uRW5jcnlwdGlvblNldHRpbmcuRGlzYWJsZWQ6XG4gICAgY2FzZSBTUUxTZXJ2ZXJTdGF0ZW1lbnRDb2x1bW5FbmNyeXB0aW9uU2V0dGluZy5SZXN1bHRTZXRPbmx5OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGNhc2UgU1FMU2VydmVyU3RhdGVtZW50Q29sdW1uRW5jcnlwdGlvblNldHRpbmcuRW5hYmxlZDpcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gY29sdW1uRW5jcnlwdGlvblNldHRpbmc7XG4gIH1cbn07XG4iXX0=
|
package/lib/bulk-load-payload.js
CHANGED
|
@@ -47,4 +47,5 @@ class BulkLoadPayload {
|
|
|
47
47
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
exports.BulkLoadPayload = BulkLoadPayload;
|
|
50
|
+
exports.BulkLoadPayload = BulkLoadPayload;
|
|
51
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9idWxrLWxvYWQtcGF5bG9hZC50cyJdLCJuYW1lcyI6WyJTeW1ib2wiLCJhc3luY0l0ZXJhdG9yIiwiQnVsa0xvYWRQYXlsb2FkIiwiY29uc3RydWN0b3IiLCJidWxrTG9hZCIsIml0ZXJhdG9yIiwicm93VG9QYWNrZXRUcmFuc2Zvcm0iLCJvbmNlIiwicmVtb3ZlTGlzdGVuZXIiLCJvbkNhbmNlbCIsInN0cmVhbWluZ01vZGUiLCJkZXN0cm95IiwiUmVxdWVzdEVycm9yIiwidG9TdHJpbmciLCJpbmRlbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7Ozt3QkErQkdBLE1BQU0sQ0FBQ0MsYTs7QUE3QkgsTUFBTUMsZUFBTixDQUF1RDtBQUk1REMsRUFBQUEsV0FBVyxDQUFDQyxRQUFELEVBQXFCO0FBQUEsU0FIaENBLFFBR2dDO0FBQUEsU0FGaENDLFFBRWdDO0FBQzlCLFNBQUtELFFBQUwsR0FBZ0JBLFFBQWhCLENBRDhCLENBRzlCO0FBQ0E7O0FBQ0EsU0FBS0MsUUFBTCxHQUFnQixLQUFLRCxRQUFMLENBQWNFLG9CQUFkLENBQW1DTixNQUFNLENBQUNDLGFBQTFDLEdBQWhCO0FBRUEsU0FBS0csUUFBTCxDQUFjRSxvQkFBZCxDQUFtQ0MsSUFBbkMsQ0FBd0MsUUFBeEMsRUFBa0QsTUFBTTtBQUN0RCxXQUFLSCxRQUFMLENBQWNJLGNBQWQsQ0FBNkIsUUFBN0IsRUFBdUNDLFFBQXZDO0FBQ0QsS0FGRDtBQUlBLFFBQUlBLFFBQUo7O0FBQ0EsUUFBSSxLQUFLTCxRQUFMLENBQWNNLGFBQWxCLEVBQWlDO0FBQy9CRCxNQUFBQSxRQUFRLEdBQUcsTUFBTTtBQUNmLGFBQUtMLFFBQUwsQ0FBY0Usb0JBQWQsQ0FBbUNLLE9BQW5DLENBQTJDLElBQUlDLG9CQUFKLENBQWlCLFdBQWpCLEVBQThCLFNBQTlCLENBQTNDO0FBQ0QsT0FGRDtBQUdELEtBSkQsTUFJTztBQUNMSCxNQUFBQSxRQUFRLEdBQUcsTUFBTTtBQUNmLGFBQUtMLFFBQUwsQ0FBY0Usb0JBQWQsQ0FBbUNLLE9BQW5DO0FBQ0QsT0FGRDtBQUdEOztBQUVELFNBQUtQLFFBQUwsQ0FBY0csSUFBZCxDQUFtQixRQUFuQixFQUE2QkUsUUFBN0I7QUFDRDs7QUFFRCw0QkFBeUI7QUFDdkIsV0FBTyxLQUFLSixRQUFaO0FBQ0Q7O0FBRURRLEVBQUFBLFFBQVEsQ0FBQ0MsTUFBTSxHQUFHLEVBQVYsRUFBYztBQUNwQixXQUFPQSxNQUFNLEdBQUksVUFBakI7QUFDRDs7QUFuQzJEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1bGtMb2FkIGZyb20gJy4vYnVsay1sb2FkJztcbmltcG9ydCB7IFJlcXVlc3RFcnJvciB9IGZyb20gJy4vZXJyb3JzJztcblxuZXhwb3J0IGNsYXNzIEJ1bGtMb2FkUGF5bG9hZCBpbXBsZW1lbnRzIEFzeW5jSXRlcmFibGU8QnVmZmVyPiB7XG4gIGJ1bGtMb2FkOiBCdWxrTG9hZDtcbiAgaXRlcmF0b3I6IEFzeW5jSXRlcmFibGVJdGVyYXRvcjxCdWZmZXI+O1xuXG4gIGNvbnN0cnVjdG9yKGJ1bGtMb2FkOiBCdWxrTG9hZCkge1xuICAgIHRoaXMuYnVsa0xvYWQgPSBidWxrTG9hZDtcblxuICAgIC8vIFdlIG5lZWQgdG8gZ3JhYiB0aGUgaXRlcmF0b3IgaGVyZSBzbyB0aGF0IGBlcnJvcmAgZXZlbnQgaGFuZGxlcnMgYXJlIHNldCB1cFxuICAgIC8vIGFzIGVhcmx5IGFzIHBvc3NpYmxlIChhbmQgYXJlIG5vdCBwb3RlbnRpYWxseSBsb3N0KS5cbiAgICB0aGlzLml0ZXJhdG9yID0gdGhpcy5idWxrTG9hZC5yb3dUb1BhY2tldFRyYW5zZm9ybVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKTtcblxuICAgIHRoaXMuYnVsa0xvYWQucm93VG9QYWNrZXRUcmFuc2Zvcm0ub25jZSgnZmluaXNoJywgKCkgPT4ge1xuICAgICAgdGhpcy5idWxrTG9hZC5yZW1vdmVMaXN0ZW5lcignY2FuY2VsJywgb25DYW5jZWwpO1xuICAgIH0pO1xuXG4gICAgbGV0IG9uQ2FuY2VsOiAoKSA9PiB2b2lkO1xuICAgIGlmICh0aGlzLmJ1bGtMb2FkLnN0cmVhbWluZ01vZGUpIHtcbiAgICAgIG9uQ2FuY2VsID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmJ1bGtMb2FkLnJvd1RvUGFja2V0VHJhbnNmb3JtLmRlc3Ryb3kobmV3IFJlcXVlc3RFcnJvcignQ2FuY2VsZWQuJywgJ0VDQU5DRUwnKSk7XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBvbkNhbmNlbCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5idWxrTG9hZC5yb3dUb1BhY2tldFRyYW5zZm9ybS5kZXN0cm95KCk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMuYnVsa0xvYWQub25jZSgnY2FuY2VsJywgb25DYW5jZWwpO1xuICB9XG5cbiAgW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpIHtcbiAgICByZXR1cm4gdGhpcy5pdGVyYXRvcjtcbiAgfVxuXG4gIHRvU3RyaW5nKGluZGVudCA9ICcnKSB7XG4gICAgcmV0dXJuIGluZGVudCArICgnQnVsa0xvYWQnKTtcbiAgfVxufVxuIl19
|
package/lib/bulk-load.js
CHANGED
|
@@ -111,10 +111,12 @@ class RowTransform extends _stream.Transform {
|
|
|
111
111
|
const c = this.columns[i];
|
|
112
112
|
let value = Array.isArray(row) ? row[i] : row[c.objName];
|
|
113
113
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
114
|
+
if (!this.bulkLoad.firstRowWritten) {
|
|
115
|
+
try {
|
|
116
|
+
value = c.type.validate(value, c.collation);
|
|
117
|
+
} catch (error) {
|
|
118
|
+
return callback(error);
|
|
119
|
+
}
|
|
118
120
|
}
|
|
119
121
|
|
|
120
122
|
const parameter = {
|
|
@@ -664,4 +666,5 @@ class BulkLoad extends _events.EventEmitter {
|
|
|
664
666
|
|
|
665
667
|
var _default = BulkLoad;
|
|
666
668
|
exports.default = _default;
|
|
667
|
-
module.exports = BulkLoad;
|
|
669
|
+
module.exports = BulkLoad;
|
|
670
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9idWxrLWxvYWQudHMiXSwibmFtZXMiOlsiRkxBR1MiLCJudWxsYWJsZSIsImNhc2VTZW4iLCJ1cGRhdGVhYmxlUmVhZFdyaXRlIiwidXBkYXRlYWJsZVVua25vd24iLCJpZGVudGl0eSIsImNvbXB1dGVkIiwiZml4ZWRMZW5DTFJUeXBlIiwic3BhcnNlQ29sdW1uU2V0IiwiaGlkZGVuIiwia2V5IiwibnVsbGFibGVVbmtub3duIiwiRE9ORV9TVEFUVVMiLCJGSU5BTCIsIk1PUkUiLCJFUlJPUiIsIklOWEFDVCIsIkNPVU5UIiwiQVRUTiIsIlNSVkVSUk9SIiwicm93VG9rZW5CdWZmZXIiLCJCdWZmZXIiLCJmcm9tIiwiVE9LRU5fVFlQRSIsIlJPVyIsInRleHRQb2ludGVyQW5kVGltZXN0YW1wQnVmZmVyIiwidGV4dFBvaW50ZXJOdWxsQnVmZmVyIiwiUm93VHJhbnNmb3JtIiwiVHJhbnNmb3JtIiwiY29uc3RydWN0b3IiLCJidWxrTG9hZCIsIndyaXRhYmxlT2JqZWN0TW9kZSIsImNvbHVtbk1ldGFkYXRhV3JpdHRlbiIsIm1haW5PcHRpb25zIiwiY29sdW1ucyIsIm9wdGlvbnMiLCJfdHJhbnNmb3JtIiwicm93IiwiX2VuY29kaW5nIiwiY2FsbGJhY2siLCJwdXNoIiwiZ2V0Q29sTWV0YURhdGEiLCJpIiwibGVuZ3RoIiwiYyIsInZhbHVlIiwiQXJyYXkiLCJpc0FycmF5Iiwib2JqTmFtZSIsImZpcnN0Um93V3JpdHRlbiIsInR5cGUiLCJ2YWxpZGF0ZSIsImNvbGxhdGlvbiIsImVycm9yIiwicGFyYW1ldGVyIiwic2NhbGUiLCJwcmVjaXNpb24iLCJuYW1lIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJjaHVuayIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsInByb2Nlc3MiLCJuZXh0VGljayIsIl9mbHVzaCIsImNyZWF0ZURvbmVUb2tlbiIsIkJ1bGtMb2FkIiwiRXZlbnRFbWl0dGVyIiwidGFibGUiLCJjb25uZWN0aW9uT3B0aW9ucyIsImNoZWNrQ29uc3RyYWludHMiLCJmaXJlVHJpZ2dlcnMiLCJrZWVwTnVsbHMiLCJsb2NrVGFibGUiLCJvcmRlciIsIlR5cGVFcnJvciIsImNvbHVtbiIsImRpcmVjdGlvbiIsIk9iamVjdCIsImVudHJpZXMiLCJjYW5jZWxlZCIsImV4ZWN1dGlvblN0YXJ0ZWQiLCJzdHJlYW1pbmdNb2RlIiwidGltZW91dCIsImNvbHVtbnNCeU5hbWUiLCJyb3dUb1BhY2tldFRyYW5zZm9ybSIsImJ1bGtPcHRpb25zIiwiY29ubmVjdGlvbiIsInJvd3MiLCJyc3QiLCJyb3dDb3VudCIsInVuZGVmaW5lZCIsImFkZENvbHVtbiIsIm91dHB1dCIsIkVycm9yIiwiaWQiLCJyZXNvbHZlTGVuZ3RoIiwicmVzb2x2ZVByZWNpc2lvbiIsInJlc29sdmVTY2FsZSIsImFkZFJvdyIsImlucHV0Iiwid3JpdGUiLCJtYXAiLCJnZXRPcHRpb25zU3FsIiwiYWRkT3B0aW9ucyIsIm9yZGVyQ29sdW1ucyIsImpvaW4iLCJnZXRCdWxrSW5zZXJ0U3FsIiwic3FsIiwibGVuIiwiZGVjbGFyYXRpb24iLCJnZXRUYWJsZUNyZWF0aW9uU3FsIiwidEJ1ZiIsIldyaXRhYmxlVHJhY2tpbmdCdWZmZXIiLCJ3cml0ZVVJbnQ4IiwiQ09MTUVUQURBVEEiLCJ3cml0ZVVJbnQxNkxFIiwiaiIsInRkc1ZlcnNpb24iLCJ3cml0ZVVJbnQzMkxFIiwiZmxhZ3MiLCJ3cml0ZUJ1ZmZlciIsImdlbmVyYXRlVHlwZUluZm8iLCJoYXNUYWJsZU5hbWUiLCJ3cml0ZVVzVmFyY2hhciIsIndyaXRlQlZhcmNoYXIiLCJkYXRhIiwic2V0VGltZW91dCIsIkRPTkUiLCJzdGF0dXMiLCJnZXRSb3dTdHJlYW0iLCJjYW5jZWwiLCJlbWl0IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUdBOztBQUNBOzs7O0FBS0E7QUFDQTtBQUNBO0FBQ0EsTUFBTUEsS0FBSyxHQUFHO0FBQ1pDLEVBQUFBLFFBQVEsRUFBRSxL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LFdBQU9QLElBQUksQ0FBQ2MsSUFBWjtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0VJLEVBQUFBLFlBQVksR0FBRztBQUNiLFFBQUksS0FBS2hGLGVBQVQsRUFBMEI7QUFDeEIsWUFBTSxJQUFJNEMsS0FBSixDQUFVLGdHQUFWLENBQU47QUFDRDs7QUFDRCxRQUFJLEtBQUtiLGdCQUFULEVBQTJCO0FBQ3pCLFlBQU0sSUFBSWEsS0FBSixDQUFVLDRFQUFWLENBQU47QUFDRDs7QUFFRCxTQUFLWixhQUFMLEdBQXFCLElBQXJCO0FBRUEsV0FBTyxLQUFLRyxvQkFBWjtBQUNEO0FBRUQ7QUFDRjtBQUNBOzs7QUFDRThDLEVBQUFBLE1BQU0sR0FBRztBQUNQLFFBQUksS0FBS25ELFFBQVQsRUFBbUI7QUFDakI7QUFDRDs7QUFFRCxTQUFLQSxRQUFMLEdBQWdCLElBQWhCO0FBQ0EsU0FBS29ELElBQUwsQ0FBVSxRQUFWO0FBQ0Q7O0FBbGRpQzs7ZUFxZHJCbEUsUTs7QUFDZm1FLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQnBFLFFBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcbmltcG9ydCBXcml0YWJsZVRyYWNraW5nQnVmZmVyIGZyb20gJy4vdHJhY2tpbmctYnVmZmVyL3dyaXRhYmxlLXRyYWNraW5nLWJ1ZmZlcic7XG5pbXBvcnQgQ29ubmVjdGlvbiwgeyBJbnRlcm5hbENvbm5lY3Rpb25PcHRpb25zIH0gZnJvbSAnLi9jb25uZWN0aW9uJztcblxuaW1wb3J0IHsgVHJhbnNmb3JtIH0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCB7IFRZUEUgYXMgVE9LRU5fVFlQRSB9IGZyb20gJy4vdG9rZW4vdG9rZW4nO1xuXG5pbXBvcnQgeyBEYXRhVHlwZSwgUGFyYW1ldGVyIH0gZnJvbSAnLi9kYXRhLXR5cGUnO1xuaW1wb3J0IHsgQ29sbGF0aW9uIH0gZnJvbSAnLi9jb2xsYXRpb24nO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmNvbnN0IEZMQUdTID0ge1xuICBudWxsYWJsZTogMSA8PCAwLFxuICBjYXNlU2VuOiAxIDw8IDEsXG4gIHVwZGF0ZWFibGVSZWFkV3JpdGU6IDEgPDwgMixcbiAgdXBkYXRlYWJsZVVua25vd246IDEgPDwgMyxcbiAgaWRlbnRpdHk6IDEgPDwgNCxcbiAgY29tcHV0ZWQ6IDEgPDwgNSwgLy8gaW50cm9kdWNlZCBpbiBURFMgNy4yXG4gIGZpeGVkTGVuQ0xSVHlwZTogMSA8PCA4LCAvLyBpbnRyb2R1Y2VkIGluIFREUyA3LjJcbiAgc3BhcnNlQ29sdW1uU2V0OiAxIDw8IDEwLCAvLyBpbnRyb2R1Y2VkIGluIFREUyA3LjMuQlxuICBoaWRkZW46IDEgPDwgMTMsIC8vIGludHJvZHVjZWQgaW4gVERTIDcuMlxuICBrZXk6IDEgPDwgMTQsIC8vIGludHJvZHVjZWQgaW4gVERTIDcuMlxuICBudWxsYWJsZVVua25vd246IDEgPDwgMTUgLy8gaW50cm9kdWNlZCBpbiBURFMgNy4yXG59O1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmNvbnN0IERPTkVfU1RBVFVTID0ge1xuICBGSU5BTDogMHgwMCxcbiAgTU9SRTogMHgxLFxuICBFUlJPUjogMHgyLFxuICBJTlhBQ1Q6IDB4NCxcbiAgQ09VTlQ6IDB4MTAsXG4gIEFUVE46IDB4MjAsXG4gIFNSVkVSUk9SOiAweDEwMFxufTtcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5pbnRlcmZhY2UgSW50ZXJuYWxPcHRpb25zIHtcbiAgY2hlY2tDb25zdHJhaW50czogYm9vbGVhbjtcbiAgZmlyZVRyaWdnZXJzOiBib29sZWFuO1xuICBrZWVwTnVsbHM6IGJvb2xlYW47XG4gIGxvY2tUYWJsZTogYm9vbGVhbjtcbiAgb3JkZXI6IHsgW2NvbHVtbk5hbWU6IHN0cmluZ106ICdBU0MnIHwgJ0RFU0MnIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBIb25vcnMgY29uc3RyYWludHMgZHVyaW5nIGJ1bGsgbG9hZCwgdXNpbmcgVC1TUUxcbiAgICogW0NIRUNLX0NPTlNUUkFJTlRTXShodHRwczovL3RlY2huZXQubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zMTg2MjQ3KHY9c3FsLjEwNSkuYXNweCkuXG4gICAqIChkZWZhdWx0OiBgZmFsc2VgKVxuICAgKi9cbiAgY2hlY2tDb25zdHJhaW50cz86IEludGVybmFsT3B0aW9uc1snY2hlY2tDb25zdHJhaW50cyddIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBIb25vcnMgaW5zZXJ0IHRyaWdnZXJzIGR1cmluZyBidWxrIGxvYWQsIHVzaW5nIHRoZSBULVNRTCBbRklSRV9UUklHR0VSU10oaHR0cHM6Ly90ZWNobmV0Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczE4NzY0MCh2PXNxbC4xMDUpLmFzcHgpLiAoZGVmYXVsdDogYGZhbHNlYClcbiAgICovXG4gIGZpcmVUcmlnZ2Vycz86IEludGVybmFsT3B0aW9uc1snZmlyZVRyaWdnZXJzJ10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEhvbm9ycyBudWxsIHZhbHVlIHBhc3NlZCwgaWdub3JlcyB0aGUgZGVmYXVsdCB2YWx1ZXMgc2V0IG9uIHRhYmxlLCB1c2luZyBULVNRTCBbS0VFUF9OVUxMU10oaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczE4Nzg4Nyh2PXNxbC4xMjApLmFzcHgpLiAoZGVmYXVsdDogYGZhbHNlYClcbiAgICovXG4gIGtlZXBOdWxscz86IEludGVybmFsT3B0aW9uc1sna2VlcE51bGxzJ10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFBsYWNlcyBhIGJ1bGsgdXBkYXRlKEJVKSBsb2NrIG9uIHRhYmxlIHdoaWxlIHBlcmZvcm1pbmcgYnVsayBsb2FkLCB1c2luZyBULVNRTCBbVEFCTE9DS10oaHR0cHM6Ly90ZWNobmV0Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczE4MDg3Nih2PXNxbC4xMDUpLmFzcHgpLiAoZGVmYXVsdDogYGZhbHNlYClcbiAgICovXG4gIGxvY2tUYWJsZT86IEludGVybmFsT3B0aW9uc1snbG9ja1RhYmxlJ10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgb3JkZXJpbmcgb2YgdGhlIGRhdGEgdG8gcG9zc2libHkgaW5jcmVhc2UgYnVsayBpbnNlcnQgcGVyZm9ybWFuY2UsIHVzaW5nIFQtU1FMIFtPUkRFUl0oaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvcHJldmlvdXMtdmVyc2lvbnMvc3FsL3NxbC1zZXJ2ZXItMjAwOC1yMi9tczE3NzQ2OCh2PXNxbC4xMDUpKS4gKGRlZmF1bHQ6IGB7fWApXG4gICAqL1xuICBvcmRlcj86IEludGVybmFsT3B0aW9uc1snb3JkZXInXSB8IHVuZGVmaW5lZDtcbn1cblxuXG5leHBvcnQgdHlwZSBDYWxsYmFjayA9XG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHdoaWNoIHdpbGwgYmUgY2FsbGVkIGFmdGVyIHRoZSBbW0J1bGtMb2FkXV0gZmluaXNoZXMgZXhlY3V0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gcm93Q291bnQgdGhlIG51bWJlciBvZiByb3dzIGluc2VydGVkXG4gICAqL1xuICAoZXJyOiBFcnJvciB8IHVuZGVmaW5lZCB8IG51bGwsIHJvd0NvdW50PzogbnVtYmVyKSA9PiB2b2lkO1xuXG5pbnRlcmZhY2UgQ29sdW1uIGV4dGVuZHMgUGFyYW1ldGVyIHtcbiAgb2JqTmFtZTogc3RyaW5nO1xuICBjb2xsYXRpb246IENvbGxhdGlvbiB8IHVuZGVmaW5lZDtcbn1cblxuaW50ZXJmYWNlIENvbHVtbk9wdGlvbnMge1xuICBvdXRwdXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBGb3IgVmFyQ2hhciwgTlZhckNoYXIsIFZhckJpbmFyeS4gVXNlIGxlbmd0aCBhcyBgSW5maW5pdHlgIGZvciBWYXJDaGFyKG1heCksIE5WYXJDaGFyKG1heCkgYW5kIFZhckJpbmFyeShtYXgpLlxuICAgKi9cbiAgbGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBGb3IgTnVtZXJpYywgRGVjaW1hbC5cbiAgICovXG4gIHByZWNpc2lvbj86IG51bWJlcjtcblxuICAvKipcbiAgICogRm9yIE51bWVyaWMsIERlY2ltYWwsIFRpbWUsIERhdGVUaW1lMiwgRGF0ZVRpbWVPZmZzZXQuXG4gICAqL1xuICBzY2FsZT86IG51bWJlcjtcblxuICAvKipcbiAgICogSWYgdGhlIG5hbWUgb2YgdGhlIGNvbHVtbiBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgZm91bmQgb24gYHJvd09iamAgYXJndW1lbnRzIHBhc3NlZCB0byBbW2FkZFJvd11dLCB0aGVuIHlvdSBjYW4gdXNlIHRoaXMgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIHByb3BlcnR5IG5hbWUuXG4gICAqL1xuICBvYmpOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgY29sdW1uIGFjY2VwdHMgTlVMTCB2YWx1ZXMuXG4gICAqL1xuICBudWxsYWJsZT86IGJvb2xlYW47XG59XG5cbmNvbnN0IHJvd1Rva2VuQnVmZmVyID0gQnVmZmVyLmZyb20oWyBUT0tFTl9UWVBFLlJPVyBdKTtcbmNvbnN0IHRleHRQb2ludGVyQW5kVGltZXN0YW1wQnVmZmVyID0gQnVmZmVyLmZyb20oW1xuICAvLyBUZXh0UG9pbnRlciBsZW5ndGhcbiAgMHgxMCxcblxuICAvLyBUZXh0UG9pbnRlclxuICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLFxuXG4gIC8vIFRpbWVzdGFtcFxuICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwXG5dKTtcbmNvbnN0IHRleHRQb2ludGVyTnVsbEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKFsweDAwXSk7XG5cbi8vIEEgdHJhbnNmb3JtIHRoYXQgY29udmVydHMgcm93cyB0byBwYWNrZXRzLlxuY2xhc3MgUm93VHJhbnNmb3JtIGV4dGVuZHMgVHJhbnNmb3JtIHtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb2x1bW5NZXRhZGF0YVdyaXR0ZW46IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgYnVsa0xvYWQ6IEJ1bGtMb2FkO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIG1haW5PcHRpb25zOiBCdWxrTG9hZFsnb3B0aW9ucyddO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNvbHVtbnM6IEJ1bGtMb2FkWydjb2x1bW5zJ107XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihidWxrTG9hZDogQnVsa0xvYWQpIHtcbiAgICBzdXBlcih7IHdyaXRhYmxlT2JqZWN0TW9kZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMuYnVsa0xvYWQgPSBidWxrTG9hZDtcbiAgICB0aGlzLm1haW5PcHRpb25zID0gYnVsa0xvYWQub3B0aW9ucztcbiAgICB0aGlzLmNvbHVtbnMgPSBidWxrTG9hZC5jb2x1bW5zO1xuXG4gICAgdGhpcy5jb2x1bW5NZXRhZGF0YVdyaXR0ZW4gPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3RyYW5zZm9ybShyb3c6IEFycmF5PHVua25vd24+IHwgeyBbY29sTmFtZTogc3RyaW5nXTogdW5rbm93biB9LCBfZW5jb2Rpbmc6IHN0cmluZywgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKSB7XG4gICAgaWYgKCF0aGlzLmNvbHVtbk1ldGFkYXRhV3JpdHRlbikge1xuICAgICAgdGhpcy5wdXNoKHRoaXMuYnVsa0xvYWQuZ2V0Q29sTWV0YURhdGEoKSk7XG4gICAgICB0aGlzLmNvbHVtbk1ldGFkYXRhV3JpdHRlbiA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5wdXNoKHJvd1Rva2VuQnVmZmVyKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjID0gdGhpcy5jb2x1bW5zW2ldO1xuICAgICAgbGV0IHZhbHVlID0gQXJyYXkuaXNBcnJheShyb3cpID8gcm93W2ldIDogcm93W2Mub2JqTmFtZV07XG5cbiAgICAgIGlmICghdGhpcy5idWxrTG9hZC5maXJzdFJvd1dyaXR0ZW4pIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB2YWx1ZSA9IGMudHlwZS52YWxpZGF0ZSh2YWx1ZSwgYy5jb2xsYXRpb24pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBwYXJhbWV0ZXIgPSB7XG4gICAgICAgIGxlbmd0aDogYy5sZW5ndGgsXG4gICAgICAgIHNjYWxlOiBjLnNjYWxlLFxuICAgICAgICBwcmVjaXNpb246IGMucHJlY2lzaW9uLFxuICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgIH07XG5cbiAgICAgIGlmIChjLnR5cGUubmFtZSA9PT0gJ1RleHQnIHx8IGMudHlwZS5uYW1lID09PSAnSW1hZ2UnIHx8IGMudHlwZS5uYW1lID09PSAnTlRleHQnKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5wdXNoKHRleHRQb2ludGVyTnVsbEJ1ZmZlcik7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnB1c2godGV4dFBvaW50ZXJBbmRUaW1lc3RhbXBCdWZmZXIpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnB1c2goYy50eXBlLmdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgdGhpcy5tYWluT3B0aW9ucykpO1xuICAgICAgZm9yIChjb25zdCBjaHVuayBvZiBjLnR5cGUuZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKHBhcmFtZXRlciwgdGhpcy5tYWluT3B0aW9ucykpIHtcbiAgICAgICAgdGhpcy5wdXNoKGNodW5rKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcm9jZXNzLm5leHRUaWNrKGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2ZsdXNoKGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5wdXNoKHRoaXMuYnVsa0xvYWQuY3JlYXRlRG9uZVRva2VuKCkpO1xuXG4gICAgcHJvY2Vzcy5uZXh0VGljayhjYWxsYmFjayk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIEJ1bGtMb2FkIGluc3RhbmNlIGlzIHVzZWQgdG8gcGVyZm9ybSBhIGJ1bGsgaW5zZXJ0LlxuICpcbiAqIFVzZSBbW0Nvbm5lY3Rpb24ubmV3QnVsa0xvYWRdXSB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2UsIGFuZCBbW0Nvbm5lY3Rpb24uZXhlY0J1bGtMb2FkXV0gdG8gZXhlY3V0ZSBpdC5cbiAqXG4gKiBFeGFtcGxlIG9mIEJ1bGtMb2FkIFVzYWdlczpcbiAqXG4gKiBgYGBqc1xuICogLy8gb3B0aW9uYWwgQnVsa0xvYWQgb3B0aW9uc1xuICogY29uc3Qgb3B0aW9ucyA9IHsga2VlcE51bGxzOiB0cnVlIH07XG4gKlxuICogLy8gaW5zdGFudGlhdGUgLSBwcm92aWRlIHRoZSB0YWJsZSB3aGVyZSB5b3UnbGwgYmUgaW5zZXJ0aW5nIHRvLCBvcHRpb25zIGFuZCBhIGNhbGxiYWNrXG4gKiBjb25zdCBidWxrTG9hZCA9IGNvbm5lY3Rpb24ubmV3QnVsa0xvYWQoJ015VGFibGUnLCBvcHRpb25zLCAoZXJyb3IsIHJvd0NvdW50KSA9PiB7XG4gKiAgIGNvbnNvbGUubG9nKCdpbnNlcnRlZCAlZCByb3dzJywgcm93Q291bnQpO1xuICogfSk7XG4gKlxuICogLy8gc2V0dXAgeW91ciBjb2x1bW5zIC0gYWx3YXlzIGluZGljYXRlIHdoZXRoZXIgdGhlIGNvbHVtbiBpcyBudWxsYWJsZVxuICogYnVsa0xvYWQuYWRkQ29sdW1uKCdteUludCcsIFRZUEVTLkludCwgeyBudWxsYWJsZTogZmFsc2UgfSk7XG4gKiBidWxrTG9hZC5hZGRDb2x1bW4oJ215U3RyaW5nJywgVFlQRVMuTlZhckNoYXIsIHsgbGVuZ3RoOiA1MCwgbnVsbGFibGU6IHRydWUgfSk7XG4gKlxuICogLy8gZXhlY3V0ZVxuICogY29ubmVjdGlvbi5leGVjQnVsa0xvYWQoYnVsa0xvYWQsIFtcbiAqICAgeyBteUludDogNywgbXlTdHJpbmc6ICdoZWxsbycgfSxcbiAqICAgeyBteUludDogMjMsIG15U3RyaW5nOiAnd29ybGQnIH1cbiAqIF0pO1xuICogYGBgXG4gKi9cbmNsYXNzIEJ1bGtMb2FkIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlcnJvcjogRXJyb3IgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY2FuY2VsZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZXhlY3V0aW9uU3RhcnRlZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzdHJlYW1pbmdNb2RlOiBib29sZWFuO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHRhYmxlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgdGltZW91dDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgb3B0aW9uczogSW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucztcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjYWxsYmFjazogQ2FsbGJhY2s7XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb2x1bW5zOiBBcnJheTxDb2x1bW4+O1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNvbHVtbnNCeU5hbWU6IHsgW25hbWU6IHN0cmluZ106IENvbHVtbiB9O1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZmlyc3RSb3dXcml0dGVuOiBib29sZWFuO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHJvd1RvUGFja2V0VHJhbnNmb3JtOiBSb3dUcmFuc2Zvcm07XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBidWxrT3B0aW9uczogSW50ZXJuYWxPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY29ubmVjdGlvbjogQ29ubmVjdGlvbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICByb3dzOiBBcnJheTxhbnk+IHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHJzdDogQXJyYXk8YW55PiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICByb3dDb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIGNvbGxhdGlvbjogQ29sbGF0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY29uc3RydWN0b3IodGFibGU6IHN0cmluZywgY29sbGF0aW9uOiBDb2xsYXRpb24gfCB1bmRlZmluZWQsIGNvbm5lY3Rpb25PcHRpb25zOiBJbnRlcm5hbENvbm5lY3Rpb25PcHRpb25zLCB7XG4gICAgY2hlY2tDb25zdHJhaW50cyA9IGZhbHNlLFxuICAgIGZpcmVUcmlnZ2VycyA9IGZhbHNlLFxuICAgIGtlZXBOdWxscyA9IGZhbHNlLFxuICAgIGxvY2tUYWJsZSA9IGZhbHNlLFxuICAgIG9yZGVyID0ge30sXG4gIH06IE9wdGlvbnMsIGNhbGxiYWNrOiBDYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgY2hlY2tDb25zdHJhaW50cyAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJvcHRpb25zLmNoZWNrQ29uc3RyYWludHNcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbi4nKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGZpcmVUcmlnZ2VycyAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJvcHRpb25zLmZpcmVUcmlnZ2Vyc1wiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuLicpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Yga2VlcE51bGxzICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcIm9wdGlvbnMua2VlcE51bGxzXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIGJvb2xlYW4uJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBsb2NrVGFibGUgIT09ICdib29sZWFuJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwib3B0aW9ucy5sb2NrVGFibGVcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbi4nKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9yZGVyICE9PSAnb2JqZWN0JyB8fCBvcmRlciA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwib3B0aW9ucy5vcmRlclwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBvYmplY3QuJyk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbY29sdW1uLCBkaXJlY3Rpb25dIG9mIE9iamVjdC5lbnRyaWVzKG9yZGVyKSkge1xuICAgICAgaWYgKGRpcmVjdGlvbiAhPT0gJ0FTQycgJiYgZGlyZWN0aW9uICE9PSAnREVTQycpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIHZhbHVlIG9mIHRoZSBcIicgKyBjb2x1bW4gKyAnXCIga2V5IGluIHRoZSBcIm9wdGlvbnMub3JkZXJcIiBvYmplY3QgbXVzdCBiZSBlaXRoZXIgXCJBU0NcIiBvciBcIkRFU0NcIi4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5lcnJvciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmNhbmNlbGVkID0gZmFsc2U7XG4gICAgdGhpcy5leGVjdXRpb25TdGFydGVkID0gZmFsc2U7XG5cbiAgICB0aGlzLmNvbGxhdGlvbiA9IGNvbGxhdGlvbjtcblxuICAgIHRoaXMudGFibGUgPSB0YWJsZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBjb25uZWN0aW9uT3B0aW9ucztcbiAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgdGhpcy5jb2x1bW5zID0gW107XG4gICAgdGhpcy5jb2x1bW5zQnlOYW1lID0ge307XG4gICAgdGhpcy5maXJzdFJvd1dyaXR0ZW4gPSBmYWxzZTtcbiAgICB0aGlzLnN0cmVhbWluZ01vZGUgPSBmYWxzZTtcblxuICAgIHRoaXMucm93VG9QYWNrZXRUcmFuc2Zvcm0gPSBuZXcgUm93VHJhbnNmb3JtKHRoaXMpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG5cbiAgICB0aGlzLmJ1bGtPcHRpb25zID0geyBjaGVja0NvbnN0cmFpbnRzLCBmaXJlVHJpZ2dlcnMsIGtlZXBOdWxscywgbG9ja1RhYmxlLCBvcmRlciB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjb2x1bW4gdG8gdGhlIGJ1bGsgbG9hZC5cbiAgICpcbiAgICogVGhlIGNvbHVtbiBkZWZpbml0aW9ucyBzaG91bGQgbWF0Y2ggdGhlIHRhYmxlIHlvdSBhcmUgdHJ5aW5nIHRvIGluc2VydCBpbnRvLlxuICAgKiBBdHRlbXB0aW5nIHRvIGNhbGwgYWRkQ29sdW1uIGFmdGVyIHRoZSBmaXJzdCByb3cgaGFzIGJlZW4gYWRkZWQgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24uXG4gICAqXG4gICAqIGBgYGpzXG4gICAqIGJ1bGtMb2FkLmFkZENvbHVtbignTXlJbnRDb2x1bW4nLCBUWVBFUy5JbnQsIHsgbnVsbGFibGU6IGZhbHNlIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGNvbHVtbi5cbiAgICogQHBhcmFtIHR5cGUgT25lIG9mIHRoZSBzdXBwb3J0ZWQgYGRhdGEgdHlwZXNgLlxuICAgKiBAcGFyYW0gX19uYW1lZFBhcmFtZXRlcnMgQWRkaXRpb25hbCBjb2x1bW4gdHlwZSBpbmZvcm1hdGlvbi4gQXQgYSBtaW5pbXVtLCBgbnVsbGFibGVgIG11c3QgYmUgc2V0IHRvIHRydWUgb3IgZmFsc2UuXG4gICAqIEBwYXJhbSBsZW5ndGggRm9yIFZhckNoYXIsIE5WYXJDaGFyLCBWYXJCaW5hcnkuIFVzZSBsZW5ndGggYXMgYEluZmluaXR5YCBmb3IgVmFyQ2hhcihtYXgpLCBOVmFyQ2hhcihtYXgpIGFuZCBWYXJCaW5hcnkobWF4KS5cbiAgICogQHBhcmFtIG51bGxhYmxlIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjb2x1bW4gYWNjZXB0cyBOVUxMIHZhbHVlcy5cbiAgICogQHBhcmFtIG9iak5hbWUgSWYgdGhlIG5hbWUgb2YgdGhlIGNvbHVtbiBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgZm91bmQgb24gYHJvd09iamAgYXJndW1lbnRzIHBhc3NlZCB0byBbW2FkZFJvd11dIG9yIFtbQ29ubmVjdGlvbi5leGVjQnVsa0xvYWRdXSwgdGhlbiB5b3UgY2FuIHVzZSB0aGlzIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBwcm9wZXJ0eSBuYW1lLlxuICAgKiBAcGFyYW0gcHJlY2lzaW9uIEZvciBOdW1lcmljLCBEZWNpbWFsLlxuICAgKiBAcGFyYW0gc2NhbGUgRm9yIE51bWVyaWMsIERlY2ltYWwsIFRpbWUsIERhdGVUaW1lMiwgRGF0ZVRpbWVPZmZzZXQuXG4gICovXG4gIGFkZENvbHVtbihuYW1lOiBzdHJpbmcsIHR5cGU6IERhdGFUeXBlLCB7IG91dHB1dCA9IGZhbHNlLCBsZW5ndGgsIHByZWNpc2lvbiwgc2NhbGUsIG9iak5hbWUgPSBuYW1lLCBudWxsYWJsZSA9IHRydWUgfTogQ29sdW1uT3B0aW9ucykge1xuICAgIGlmICh0aGlzLmZpcnN0Um93V3JpdHRlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb2x1bW5zIGNhbm5vdCBiZSBhZGRlZCB0byBidWxrIGluc2VydCBhZnRlciB0aGUgZmlyc3Qgcm93IGhhcyBiZWVuIHdyaXR0ZW4uJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmV4ZWN1dGlvblN0YXJ0ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ29sdW1ucyBjYW5ub3QgYmUgYWRkZWQgdG8gYnVsayBpbnNlcnQgYWZ0ZXIgZXhlY3V0aW9uIGhhcyBzdGFydGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbHVtbjogQ29sdW1uID0ge1xuICAgICAgdHlwZTogdHlwZSxcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICB2YWx1ZTogbnVsbCxcbiAgICAgIG91dHB1dDogb3V0cHV0LFxuICAgICAgbGVuZ3RoOiBsZW5ndGgsXG4gICAgICBwcmVjaXNpb246IHByZWNpc2lvbixcbiAgICAgIHNjYWxlOiBzY2FsZSxcbiAgICAgIG9iak5hbWU6IG9iak5hbWUsXG4gICAgICBudWxsYWJsZTogbnVsbGFibGUsXG4gICAgICBjb2xsYXRpb246IHRoaXMuY29sbGF0aW9uXG4gICAgfTtcblxuICAgIGlmICgodHlwZS5pZCAmIDB4MzApID09PSAweDIwKSB7XG4gICAgICBpZiAoY29sdW1uLmxlbmd0aCA9PSBudWxsICYmIHR5cGUucmVzb2x2ZUxlbmd0aCkge1xuICAgICAgICBjb2x1bW4ubGVuZ3RoID0gdHlwZS5yZXNvbHZlTGVuZ3RoKGNvbHVtbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGUucmVzb2x2ZVByZWNpc2lvbiAmJiBjb2x1bW4ucHJlY2lzaW9uID09IG51bGwpIHtcbiAgICAgIGNvbHVtbi5wcmVjaXNpb24gPSB0eXBlLnJlc29sdmVQcmVjaXNpb24oY29sdW1uKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZS5yZXNvbHZlU2NhbGUgJiYgY29sdW1uLnNjYWxlID09IG51bGwpIHtcbiAgICAgIGNvbHVtbi5zY2FsZSA9IHR5cGUucmVzb2x2ZVNjYWxlKGNvbHVtbik7XG4gICAgfVxuXG4gICAgdGhpcy5jb2x1bW5zLnB1c2goY29sdW1uKTtcblxuICAgIHRoaXMuY29sdW1uc0J5TmFtZVtuYW1lXSA9IGNvbHVtbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcm93IHRvIHRoZSBidWxrIGluc2VydC5cbiAgICpcbiAgICogYGBganNcbiAgICogYnVsa0xvYWQuYWRkUm93KHsgZmlyc3RfbmFtZTogJ0JpbGwnLCBsYXN0X25hbWU6ICdHYXRlcycgfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0gcm93IEFuIG9iamVjdCBvZiBrZXkvdmFsdWUgcGFpcnMgcmVwcmVzZW50aW5nIGNvbHVtbiBuYW1lIChvciBvYmpOYW1lKSBhbmQgdmFsdWUuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQgb2YgYWRkaW5nIHJvd3MgaW5kaXZpZHVhbGx5LCB5b3Ugc2hvdWxkIHBhc3NcbiAgICogICBhbGwgcm93IG9iamVjdHMgd2hlbiBjYWxsaW5nIFtbQ29ubmVjdGlvbi5leGVjQnVsa0xvYWRdXS4gVGhpcyBtZXRob2Qgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuXG4gICAqL1xuICBhZGRSb3cocm93OiB7IFtjb2x1bW5OYW1lOiBzdHJpbmddOiB1bmtub3duIH0pOiB2b2lkXG5cbiAgLyoqXG4gICAqIEFkZHMgYSByb3cgdG8gdGhlIGJ1bGsgaW5zZXJ0LlxuICAgKlxuICAgKiBgYGBqc1xuICAgKiBidWxrTG9hZC5hZGRSb3coJ0JpbGwnLCAnR2F0ZXMnKTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSByb3cgSWYgdGhlcmUgYXJlIGF0IGxlYXN0IHR3byBjb2x1bW5zLCB2YWx1ZXMgY2FuIGJlIHBhc3NlZCBhcyBtdWx0aXBsZSBhcmd1bWVudHMgaW5zdGVhZCBvZiBhbiBhcnJheS4gVGhleVxuICAgKiAgIG11c3QgYmUgaW4gdGhlIHNhbWUgb3JkZXIgdGhlIGNvbHVtbnMgd2VyZSBhZGRlZCBpbi5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCBvZiBhZGRpbmcgcm93cyBpbmRpdmlkdWFsbHksIHlvdSBzaG91bGQgcGFzc1xuICAgKiAgIGFsbCByb3cgb2JqZWN0cyB3aGVuIGNhbGxpbmcgW1tDb25uZWN0aW9uLmV4ZWNCdWxrTG9hZF1dLiBUaGlzIG1ldGhvZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS5cbiAgICovXG4gIGFkZFJvdyguLi5yb3c6IHVua25vd25bXSk6IHZvaWRcblxuICAvKipcbiAgICogQWRkcyBhIHJvdyB0byB0aGUgYnVsayBpbnNlcnQuXG4gICAqXG4gICAqIGBgYGpzXG4gICAqIGJ1bGtMb2FkLmFkZFJvdyhbJ0JpbGwnLCAnR2F0ZXMnXSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0gcm93IEFuIGFycmF5IHJlcHJlc2VudGluZyB0aGUgdmFsdWVzIG9mIGVhY2ggY29sdW1uIGluIHRoZSBzYW1lIG9yZGVyIHdoaWNoIHRoZXkgd2VyZSBhZGRlZCB0byB0aGUgYnVsa0xvYWQgb2JqZWN0LlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkIG9mIGFkZGluZyByb3dzIGluZGl2aWR1YWxseSwgeW91IHNob3VsZCBwYXNzXG4gICAqICAgYWxsIHJvdyBvYmplY3RzIHdoZW4gY2FsbGluZyBbW0Nvbm5lY3Rpb24uZXhlY0J1bGtMb2FkXV0uIFRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLlxuICAgKi9cbiAgYWRkUm93KHJvdzogdW5rbm93bltdKTogdm9pZFxuXG4gIGFkZFJvdyguLi5pbnB1dDogWyB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSBdIHwgdW5rbm93bltdKSB7XG4gICAgdGhpcy5maXJzdFJvd1dyaXR0ZW4gPSB0cnVlO1xuXG4gICAgbGV0IHJvdzogYW55O1xuICAgIGlmIChpbnB1dC5sZW5ndGggPiAxIHx8ICFpbnB1dFswXSB8fCB0eXBlb2YgaW5wdXRbMF0gIT09ICdvYmplY3QnKSB7XG4gICAgICByb3cgPSBpbnB1dDtcbiAgICB9IGVsc2Uge1xuICAgICAgcm93ID0gaW5wdXRbMF07XG4gICAgfVxuXG4gICAgLy8gd3JpdGUgZWFjaCBjb2x1bW5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShyb3cpKSB7XG4gICAgICB0aGlzLnJvd1RvUGFja2V0VHJhbnNmb3JtLndyaXRlKHRoaXMuY29sdW1ucy5tYXAoKGNvbHVtbiwgaSkgPT4ge1xuICAgICAgICByZXR1cm4gY29sdW1uLnR5cGUudmFsaWRhdGUocm93W2ldLCBjb2x1bW4uY29sbGF0aW9uKTtcbiAgICAgIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3dUb1BhY2tldFRyYW5zZm9ybS53cml0ZSh0aGlzLmNvbHVtbnMubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbi50eXBlLnZhbGlkYXRlKHJvd1tjb2x1bW4ub2JqTmFtZV0sIGNvbHVtbi5jb2xsYXRpb24pO1xuICAgICAgfSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZ2V0T3B0aW9uc1NxbCgpIHtcbiAgICBjb25zdCBhZGRPcHRpb25zID0gW107XG5cbiAgICBpZiAodGhpcy5idWxrT3B0aW9ucy5jaGVja0NvbnN0cmFpbnRzKSB7XG4gICAgICBhZGRPcHRpb25zLnB1c2goJ0NIRUNLX0NPTlNUUkFJTlRTJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYnVsa09wdGlvbnMuZmlyZVRyaWdnZXJzKSB7XG4gICAgICBhZGRPcHRpb25zLnB1c2goJ0ZJUkVfVFJJR0dFUlMnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5idWxrT3B0aW9ucy5rZWVwTnVsbHMpIHtcbiAgICAgIGFkZE9wdGlvbnMucHVzaCgnS0VFUF9OVUxMUycpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmJ1bGtPcHRpb25zLmxvY2tUYWJsZSkge1xuICAgICAgYWRkT3B0aW9ucy5wdXNoKCdUQUJMT0NLJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYnVsa09wdGlvbnMub3JkZXIpIHtcbiAgICAgIGNvbnN0IG9yZGVyQ29sdW1ucyA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IFtjb2x1bW4sIGRpcmVjdGlvbl0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5idWxrT3B0aW9ucy5vcmRlcikpIHtcbiAgICAgICAgb3JkZXJDb2x1bW5zLnB1c2goYCR7Y29sdW1ufSAke2RpcmVjdGlvbn1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9yZGVyQ29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgYWRkT3B0aW9ucy5wdXNoKGBPUkRFUiAoJHtvcmRlckNvbHVtbnMuam9pbignLCAnKX0pYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGFkZE9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGAgV0lUSCAoJHthZGRPcHRpb25zLmpvaW4oJywnKX0pYDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZ2V0QnVsa0luc2VydFNxbCgpIHtcbiAgICBsZXQgc3FsID0gJ2luc2VydCBidWxrICcgKyB0aGlzLnRhYmxlICsgJygnO1xuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLmNvbHVtbnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IGMgPSB0aGlzLmNvbHVtbnNbaV07XG4gICAgICBpZiAoaSAhPT0gMCkge1xuICAgICAgICBzcWwgKz0gJywgJztcbiAgICAgIH1cbiAgICAgIHNxbCArPSAnWycgKyBjLm5hbWUgKyAnXSAnICsgKGMudHlwZS5kZWNsYXJhdGlvbihjKSk7XG4gICAgfVxuICAgIHNxbCArPSAnKSc7XG5cbiAgICBzcWwgKz0gdGhpcy5nZXRPcHRpb25zU3FsKCk7XG4gICAgcmV0dXJuIHNxbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIHNpbXBseSBhIGhlbHBlciB1dGlsaXR5IGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYSBgQ1JFQVRFIFRBQkxFIFNRTGAgc3RhdGVtZW50IGJhc2VkIG9uIHRoZSBjb2x1bW5zIGFkZGVkIHRvIHRoZSBidWxrTG9hZCBvYmplY3QuXG4gICAqIFRoaXMgbWF5IGJlIHBhcnRpY3VsYXJseSBoYW5keSB3aGVuIHlvdSB3YW50IHRvIGluc2VydCBpbnRvIGEgdGVtcG9yYXJ5IHRhYmxlIChhIHRhYmxlIHdoaWNoIHN0YXJ0cyB3aXRoIGAjYCkuXG4gICAqXG4gICAqIGBgYGpzXG4gICAqIHZhciBzcWwgPSBidWxrTG9hZC5nZXRUYWJsZUNyZWF0aW9uU3FsKCk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBBIHNpZGUgbm90ZSBvbiBidWxrIGluc2VydGluZyBpbnRvIHRlbXBvcmFyeSB0YWJsZXM6IGlmIHlvdSB3YW50IHRvIGFjY2VzcyBhIGxvY2FsIHRlbXBvcmFyeSB0YWJsZSBhZnRlciBleGVjdXRpbmcgdGhlIGJ1bGsgbG9hZCxcbiAgICogeW91J2xsIG5lZWQgdG8gdXNlIHRoZSBzYW1lIGNvbm5lY3Rpb24gYW5kIGV4ZWN1dGUgeW91ciByZXF1ZXN0cyB1c2luZyBbW0Nvbm5lY3Rpb24uZXhlY1NxbEJhdGNoXV0gaW5zdGVhZCBvZiBbW0Nvbm5lY3Rpb24uZXhlY1NxbF1dXG4gICAqL1xuICBnZXRUYWJsZUNyZWF0aW9uU3FsKCkge1xuICAgIGxldCBzcWwgPSAnQ1JFQVRFIFRBQkxFICcgKyB0aGlzLnRhYmxlICsgJyhcXG4nO1xuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLmNvbHVtbnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IGMgPSB0aGlzLmNvbHVtbnNbaV07XG4gICAgICBpZiAoaSAhPT0gMCkge1xuICAgICAgICBzcWwgKz0gJyxcXG4nO1xuICAgICAgfVxuICAgICAgc3FsICs9ICdbJyArIGMubmFtZSArICddICcgKyAoYy50eXBlLmRlY2xhcmF0aW9uKGMpKTtcbiAgICAgIGlmIChjLm51bGxhYmxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc3FsICs9ICcgJyArIChjLm51bGxhYmxlID8gJ05VTEwnIDogJ05PVCBOVUxMJyk7XG4gICAgICB9XG4gICAgfVxuICAgIHNxbCArPSAnXFxuKSc7XG4gICAgcmV0dXJuIHNxbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZ2V0Q29sTWV0YURhdGEoKSB7XG4gICAgY29uc3QgdEJ1ZiA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKDEwMCwgbnVsbCwgdHJ1ZSk7XG4gICAgLy8gVG9rZW5UeXBlXG4gICAgdEJ1Zi53cml0ZVVJbnQ4KFRPS0VOX1RZUEUuQ09MTUVUQURBVEEpO1xuICAgIC8vIENvdW50XG4gICAgdEJ1Zi53cml0ZVVJbnQxNkxFKHRoaXMuY29sdW1ucy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaiA9IDAsIGxlbiA9IHRoaXMuY29sdW1ucy5sZW5ndGg7IGogPCBsZW47IGorKykge1xuICAgICAgY29uc3QgYyA9IHRoaXMuY29sdW1uc1tqXTtcbiAgICAgIC8vIFVzZXJUeXBlXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnRkc1ZlcnNpb24gPCAnN18yJykge1xuICAgICAgICB0QnVmLndyaXRlVUludDE2TEUoMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0QnVmLndyaXRlVUludDMyTEUoMCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEZsYWdzXG4gICAgICBsZXQgZmxhZ3MgPSBGTEFHUy51cGRhdGVhYmxlUmVhZFdyaXRlO1xuICAgICAgaWYgKGMubnVsbGFibGUpIHtcbiAgICAgICAgZmxhZ3MgfD0gRkxBR1MubnVsbGFibGU7XG4gICAgICB9IGVsc2UgaWYgKGMubnVsbGFibGUgPT09IHVuZGVmaW5lZCAmJiB0aGlzLm9wdGlvbnMudGRzVmVyc2lvbiA+PSAnN18yJykge1xuICAgICAgICBmbGFncyB8PSBGTEFHUy5udWxsYWJsZVVua25vd247XG4gICAgICB9XG4gICAgICB0QnVmLndyaXRlVUludDE2TEUoZmxhZ3MpO1xuXG4gICAgICAvLyBUWVBFX0lORk9cbiAgICAgIHRCdWYud3JpdGVCdWZmZXIoYy50eXBlLmdlbmVyYXRlVHlwZUluZm8oYywgdGhpcy5vcHRpb25zKSk7XG5cbiAgICAgIC8vIFRhYmxlTmFtZVxuICAgICAgaWYgKGMudHlwZS5oYXNUYWJsZU5hbWUpIHtcbiAgICAgICAgdEJ1Zi53cml0ZVVzVmFyY2hhcih0aGlzLnRhYmxlLCAndWNzMicpO1xuICAgICAgfVxuXG4gICAgICAvLyBDb2xOYW1lXG4gICAgICB0QnVmLndyaXRlQlZhcmNoYXIoYy5uYW1lLCAndWNzMicpO1xuICAgIH1cbiAgICByZXR1cm4gdEJ1Zi5kYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYSB0aW1lb3V0IGZvciB0aGlzIGJ1bGsgbG9hZC5cbiAgICpcbiAgICogYGBganNcbiAgICogYnVsa0xvYWQuc2V0VGltZW91dCh0aW1lb3V0KTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSB0aW1lb3V0IFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJlZm9yZSB0aGUgYnVsayBsb2FkIGlzIGNvbnNpZGVyZWQgZmFpbGVkLCBvciAwIGZvciBubyB0aW1lb3V0LlxuICAgKiAgIFdoZW4gbm8gdGltZW91dCBpcyBzZXQgZm9yIHRoZSBidWxrIGxvYWQsIHRoZSBbW0Nvbm5lY3Rpb25PcHRpb25zLnJlcXVlc3RUaW1lb3V0XV0gb2YgdGhlIENvbm5lY3Rpb24gaXMgdXNlZC5cbiAgICovXG4gIHNldFRpbWVvdXQodGltZW91dD86IG51bWJlcikge1xuICAgIHRoaXMudGltZW91dCA9IHRpbWVvdXQ7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNyZWF0ZURvbmVUb2tlbigpIHtcbiAgICAvLyBJdCBtaWdodCBiZSBuaWNlIHRvIG1ha2UgRG9uZVRva2VuIGEgY2xhc3MgaWYgYW55dGhpbmcgbmVlZHMgdG8gY3JlYXRlIHRoZW0sIGJ1dCBmb3Igbm93LCBqdXN0IGRvIGl0IGhlcmVcbiAgICBjb25zdCB0QnVmID0gbmV3IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIodGhpcy5vcHRpb25zLnRkc1ZlcnNpb24gPCAnN18yJyA/IDkgOiAxMyk7XG4gICAgdEJ1Zi53cml0ZVVJbnQ4KFRPS0VOX1RZUEUuRE9ORSk7XG4gICAgY29uc3Qgc3RhdHVzID0gRE9ORV9TVEFUVVMuRklOQUw7XG4gICAgdEJ1Zi53cml0ZVVJbnQxNkxFKHN0YXR1cyk7XG4gICAgdEJ1Zi53cml0ZVVJbnQxNkxFKDApOyAvLyBDdXJDbWQgKFREUyBpZ25vcmVzIHRoaXMpXG4gICAgdEJ1Zi53cml0ZVVJbnQzMkxFKDApOyAvLyByb3cgY291bnQgLSBkb2Vzbid0IHJlYWxseSBtYXR0ZXJcbiAgICBpZiAodGhpcy5vcHRpb25zLnRkc1ZlcnNpb24gPj0gJzdfMicpIHtcbiAgICAgIHRCdWYud3JpdGVVSW50MzJMRSgwKTsgLy8gcm93IGNvdW50IGlzIDY0IGJpdHMgaW4gPj0gVERTIDcuMlxuICAgIH1cbiAgICByZXR1cm4gdEJ1Zi5kYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFN3aXRjaGVzIHRoZSBgQnVsa0xvYWRgIG9iamVjdCBpbnRvIHN0cmVhbWluZyBtb2RlIGFuZCByZXR1cm5zIGFcbiAgICogW3dyaXRhYmxlIHN0cmVhbV0oaHR0cHM6Ly9ub2RlanMub3JnL2Rpc3QvbGF0ZXN0LXYxMC54L2RvY3MvYXBpL3N0cmVhbS5odG1sI3N0cmVhbV93cml0YWJsZV9zdHJlYW1zKVxuICAgKiB0aGF0IGNhbiBiZSB1c2VkIHRvIHNlbmQgYSBsYXJnZSBhbW91bnQgb2Ygcm93cyB0byB0aGUgc2VydmVyLlxuICAgKlxuICAgKiBgYGBqc1xuICAgKiBjb25zdCBidWxrTG9hZCA9IGNvbm5lY3Rpb24ubmV3QnVsa0xvYWQoLi4uKTtcbiAgICogYnVsa0xvYWQuYWRkQ29sdW1uKC4uLik7XG4gICAqXG4gICAqIGNvbnN0IHJvd1N0cmVhbSA9IGJ1bGtMb2FkLmdldFJvd1N0cmVhbSgpO1xuICAgKlxuICAgKiBjb25uZWN0aW9uLmV4ZWNCdWxrTG9hZChidWxrTG9hZCk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBJbiBzdHJlYW1pbmcgbW9kZSwgW1thZGRSb3ddXSBjYW5ub3QgYmUgdXNlZC4gSW5zdGVhZCBhbGwgZGF0YSByb3dzIG11c3QgYmUgd3JpdHRlbiB0byB0aGUgcmV0dXJuZWQgc3RyZWFtIG9iamVjdC5cbiAgICogVGhlIHN0cmVhbSBpbXBsZW1lbnRhdGlvbiB1c2VzIGRhdGEgZmxvdyBjb250cm9sIHRvIHByZXZlbnQgbWVtb3J5IG92ZXJsb2FkLiBbYHN0cmVhbS53cml0ZSgpYF0oaHR0cHM6Ly9ub2RlanMub3JnL2Rpc3QvbGF0ZXN0LXYxMC54L2RvY3MvYXBpL3N0cmVhbS5odG1sI3N0cmVhbV93cml0YWJsZV93cml0ZV9jaHVua19lbmNvZGluZ19jYWxsYmFjaylcbiAgICogcmV0dXJucyBgZmFsc2VgIHRvIGluZGljYXRlIHRoYXQgZGF0YSB0cmFuc2ZlciBzaG91bGQgYmUgcGF1c2VkLlxuICAgKlxuICAgKiBBZnRlciB0aGF0LCB0aGUgc3RyZWFtIGVtaXRzIGEgWydkcmFpbicgZXZlbnRdKGh0dHBzOi8vbm9kZWpzLm9yZy9kaXN0L2xhdGVzdC12MTAueC9kb2NzL2FwaS9zdHJlYW0uaHRtbCNzdHJlYW1fZXZlbnRfZHJhaW4pXG4gICAqIHdoZW4gaXQgaXMgcmVhZHkgdG8gcmVzdW1lIGRhdGEgdHJhbnNmZXIuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCBvZiB3cml0aW5nIHJvd3MgdG8gdGhlIHN0cmVhbSByZXR1cm5lZCBieSB0aGlzIG1ldGhvZCxcbiAgICogICB5b3UgY2FuIHBhc3MgYW55IG9iamVjdCB0aGF0IGltcGxlbWVudHMgdGhlIGBJdGVyYWJsZWAgb3IgYEFzeW5jSXRlcmFibGVgIGludGVyZmFjZSAoZS5nLiBhIGBSZWFkYWJsZWBcbiAgICogICBzdHJlYW0gb3IgYW4gYEFzeW5jR2VuZXJhdG9yYCkgd2hlbiBjYWxsaW5nIFtbQ29ubmVjdGlvbi5leGVjQnVsa0xvYWRdXS4gVGhpcyBtZXRob2Qgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuXG4gICAqL1xuICBnZXRSb3dTdHJlYW0oKSB7XG4gICAgaWYgKHRoaXMuZmlyc3RSb3dXcml0dGVuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0J1bGtMb2FkIGNhbm5vdCBiZSBzd2l0Y2hlZCB0byBzdHJlYW1pbmcgbW9kZSBhZnRlciBmaXJzdCByb3cgaGFzIGJlZW4gd3JpdHRlbiB1c2luZyBhZGRSb3coKS4nKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZXhlY3V0aW9uU3RhcnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdCdWxrTG9hZCBjYW5ub3QgYmUgc3dpdGNoZWQgdG8gc3RyZWFtaW5nIG1vZGUgYWZ0ZXIgZXhlY3V0aW9uIGhhcyBzdGFydGVkLicpO1xuICAgIH1cblxuICAgIHRoaXMuc3RyZWFtaW5nTW9kZSA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5yb3dUb1BhY2tldFRyYW5zZm9ybTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY2FuY2VsKCkge1xuICAgIGlmICh0aGlzLmNhbmNlbGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jYW5jZWxlZCA9IHRydWU7XG4gICAgdGhpcy5lbWl0KCdjYW5jZWwnKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBCdWxrTG9hZDtcbm1vZHVsZS5leHBvcnRzID0gQnVsa0xvYWQ7XG4iXX0=
|
package/lib/collation.js
CHANGED
|
@@ -361,4 +361,5 @@ class Collation {
|
|
|
361
361
|
|
|
362
362
|
}
|
|
363
363
|
|
|
364
|
-
exports.Collation = Collation;
|
|
364
|
+
exports.Collation = Collation;
|
|
365
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb2xsYXRpb24udHMiXSwibmFtZXMiOlsiY29kZXBhZ2VCeUxhbmd1YWdlSWQiLCJjb2RlcGFnZUJ5U29ydElkIiwiRmxhZ3MiLCJJR05PUkVfQ0FTRSIsIklHTk9SRV9BQ0NFTlQiLCJJR05PUkVfS0FOQSIsIklHTk9SRV9XSURUSCIsIkJJTkFSWSIsIkJJTkFSWTIiLCJVVEY4IiwiQ29sbGF0aW9uIiwiZnJvbUJ1ZmZlciIsImJ1ZmZlciIsIm9mZnNldCIsImxjaWQiLCJmbGFncyIsInZlcnNpb24iLCJzb3J0SWQiLCJjb25zdHJ1Y3RvciIsImNvZGVwYWdlIiwidW5kZWZpbmVkIiwibGFuZ3VhZ2VJZCIsInRvQnVmZmVyIiwiQnVmZmVyIiwiYWxsb2MiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBO0FBQ08sTUFBTUEsb0JBQWlELEdBQUc7QUFDL0Q7QUFDQSxHQUFDLE1BQUQsR0FBVSxRQUZxRDtBQUkvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUMsTUFBRCxHQUFVLE9BUnFEO0FBVS9EO0FBQ0EsR0FBQyxNQUFELEdBQVUsUUFYcUQ7QUFhL0Q7QUFDQTtBQUNBLEdBQUMsTUFBRCxHQUFVLFFBZnFEO0FBaUIvRDtBQUNBLEdBQUMsTUFBRCxHQUFVLFFBbEJxRDtBQW9CL0Q7QUFDQSxHQUFDLE1BQUQsR0FBVSxRQXJCcUQ7QUF1Qi9EO0FBQ0EsR0FBQyxNQUFELEdBQVUsUUF4QnFEO0FBMEIvRDtBQUNBLEdBQUMsTUFBRCxHQUFVLFFBM0JxRDtBQTZCL0Q7QUFDQSxHQUFDLE1BQUQsR0FBVSxRQTlCcUQ7QUFnQy9EO0FBQ0EsR0FBQyxNQUFELEdBQVUsUUFqQ3FEO0FBbUMvRDtBQUNBO0FBQ0EsR0FBQyxNQUFELEdBQVUsUUFyQ3FEO0FBdUMvRDtBQUNBLEdBQUMsTUFBRCxHQUFVLFFBeENxRDtBQTBDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFDLE1BQUQsR0FBVSxPQTlDcUQ7QUFnRC9EO0FBQ0E7QUFDQSxHQUFDLE1BQUQsR0FBVSxPQWxEcUQ7QUFvRC9EO0FBQ0EsR0FBQyxNQUFELEdBQVUsUUFyRHFEO0FBdUQvRDtBQUNBLEdBQUMsTUFBRCxHQUFVLFFBeERxRDtBQTBEL0Q7QUFDQSxHQUFDLE1BQUQsR0FBVSxRQTNEcUQ7QUE2RC9EO0FBQ0EsR0FBQyxNQUFELEdBQVUsUUE5RHFEO0FBZ0UvRDtBQUNBLEdBQUMsTUFBRCxHQUFVLFFBakVxRDtBQW1FL0Q7QUFDQSxHQUFDLE1BQUQsR0FBVSxRQXBFcUQ7QUFzRS9EO0FBQ0EsR0FBQyxNQUFELEdBQVUsUUF2RXFEO0FBeUUvRDtBQUNBLEdBQUMsTUFBRCxHQUFVLFFBMUVxRDtBQTRFL0Q7QUFDQSxHQUFDLE1BQUQsR0FBVSxPQTdFcUQ7QUErRS9EO0FBQ0EsR0FBQyxNQUFELEdBQVUsUUFoRnFEO0FBa0YvRDtBQUNBLEdBQUMsTUFBRCxHQUFVLFFBbkZxRDtBQXFGL0Q7QUFDQSxHQUFDLE1BQUQsR0FBVSxRQXRGcUQ7QUF3Ri9EO0FBQ0EsR0FBQyxNQUFELEdBQVUsUUF6RnFEO0FBMkYvRDtBQUNBLEdBQUMsTUFBRCxHQUFVLFFBNUZxRDtBQThGL0Q7QUFDQSxHQUFDLE1BQUQsR0FBVSxRQS9GcUQ7QUFpRy9EO0FBQ0EsR0FBQyxNQUFELEdBQVUsUUFsR3FEO0FBb0cvRDtBQUNBLEdBQUMsTUFBRCxHQUFVLFFBckdxRDtBQXVHL0Q7QUFDQSxHQUFDLE1BQUQsR0FBVSxRQXhHcUQ7QUEwRy9EO0FBQ0EsR0FBQyxNQUFELEdBQVUsUUEzR3FEO0FBNkcvRDtBQUNBLEdBQUMsTUFBRCxHQUFVLFFBOUdxRDtBQWdIL0Q7QUFDQSxHQUFDLE1BQUQsR0FBVSxRQWpIcUQ7QUFtSC9EO0FBQ0EsR0FBQyxNQUFELEdBQVUsUUFwSHFEO0FBc0gvRDtBQUNBLEdBQUMsTUFBRCxHQUFVLFFBdkhxRDtBQXlIL0Q7QUFDQSxHQUFDLE1BQUQsR0FBVSxRQTFIcUQ7QUE0SC9EO0FBQ0EsR0FBQyxNQUFELEdBQVUsUUE3SHFEO0FBK0gvRDtBQUNBLEdBQUMsTUFBRCxHQUFVLFFBaElxRDtBQWtJL0Q7QUFDQSxHQUFDLE1BQUQsR0FBVSxRQW5JcUQ7QUFxSS9EO0FBQ0EsR0FBQyxNQUFELEdBQVUsUUF0SXFEO0FBd0kvRDtBQUNBLEdBQUMsTUFBRCxHQUFVLFFBeklxRDtBQTJJL0Q7QUFDQSxHQUFDLE1BQUQsR0FBVSxRQTVJcUQ7QUE4SS9EO0FBQ0EsR0FBQyxNQUFELEdBQVUsUUEvSXFEO0FBaUovRDtBQUNBLEdBQUMsTUFBRCxHQUFVLFFBbEpxRDtBQW9KL0Q7QUFDQSxHQUFDLE1BQUQsR0FBVSxRQXJKcUQ7QUF1Si9EO0FBQ0EsR0FBQyxNQUFELEdBQVUsUUF4SnFEO0FBMEovRDtBQUNBLEdBQUMsTUFBRCxHQUFVLFFBM0pxRDtBQTZKL0Q7QUFDQSxHQUFDLE1BQUQsR0FBVSxRQTlKcUQ7QUFnSy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBQyxNQUFELEdBQVUsT0FwS3FEO0FBc0svRDtBQUNBLEdBQUMsTUFBRCxHQUFVLFFBdktxRDtBQXlLL0Q7QUFDQSxHQUFDLE1BQUQsR0FBVSxRQTFLcUQ7QUE0Sy9EO0FBQ0EsR0FBQyxNQUFELEdBQVUsUUE3S3FEO0FBK0svRDtBQUNBLEdBQUMsTUFBRCxHQUFVLFFBaExxRDtBQWtML0Q7QUFDQSxHQUFDLE1BQUQsR0FBVSxPQW5McUQ7QUFxTC9EO0FBQ0EsR0FBQyxNQUFELEdBQVUsUUF0THFEO0FBd0wvRDtBQUNBLEdBQUMsTUFBRCxHQUFVLFFBekxxRDtBQTJML0Q7QUFDQTtBQUNBLEdBQUMsTUFBRCxHQUFVLE9BN0xxRDtBQStML0Q7QUFDQSxHQUFDLE1BQUQsR0FBVSxRQWhNcUQ7QUFrTS9EO0FBQ0EsR0FBQyxNQUFELEdBQVUsUUFuTXFEO0FBcU0vRDtBQUNBO0FBQ0EsR0FBQyxNQUFELEdBQVUsUUF2TXFEO0FBeU0vRDtBQUNBLEdBQUMsTUFBRCxHQUFVO0FBMU1xRCxDQUExRDs7QUE2TUEsTUFBTUMsZ0JBQTZDLEdBQUc7QUFDM0QsR0FBQyxFQUFELEdBQU0sT0FEcUQ7QUFDNUM7QUFDZixHQUFDLEVBQUQsR0FBTSxPQUZxRDtBQUU1QztBQUNmLEdBQUMsRUFBRCxHQUFNLE9BSHFEO0FBRzVDO0FBQ2YsR0FBQyxFQUFELEdBQU0sT0FKcUQ7QUFJNUM7QUFDZixHQUFDLEVBQUQsR0FBTSxPQUxxRDtBQUs1QztBQUNmLEdBQUMsRUFBRCxHQUFNLE9BTnFEO0FBTTVDO0FBQ2YsR0FBQyxFQUFELEdBQU0sT0FQcUQ7QUFPNUM7QUFDZixHQUFDLEVBQUQsR0FBTSxPQVJxRDtBQVE1QztBQUNmLEdBQUMsRUFBRCxHQUFNLE9BVHFEO0FBUzVDO0FBQ2YsR0FBQyxFQUFELEdBQU0sT0FWcUQ7QUFVNUM7QUFDZixHQUFDLEVBQUQsR0FBTSxPQVhxRDtBQVc1QztBQUNmLEdBQUMsRUFBRCxHQUFNLFFBWnFEO0FBWTNDO0FBQ2hCLEdBQUMsRUFBRCxHQUFNLFFBYnFEO0FBYTNDO0FBQ2hCLEdBQUMsRUFBRCxHQUFNLFFBZHFEO0FBYzNDO0FBQ2hCLEdBQUMsRUFBRCxHQUFNLFFBZnFEO0FBZTNDO0FBQ2hCLEdBQUMsRUFBRCxHQUFNLE9BaEJxRDtBQWdCNUM7QUFDZixHQUFDLEVBQUQsR0FBTSxPQWpCcUQ7QUFpQjVDO0FBQ2YsR0FBQyxFQUFELEdBQU0sT0FsQnFEO0FBa0I1QztBQUNmLEdBQUMsRUFBRCxHQUFNLE9BbkJxRDtBQW1CNUM7QUFDZixHQUFDLEVBQUQsR0FBTSxPQXBCcUQ7QUFvQjVDO0FBQ2YsR0FBQyxFQUFELEdBQU0sT0FyQnFEO0FBcUI1QztBQUNmLEdBQUMsRUFBRCxHQUFNLE9BdEJxRDtBQXNCNUM7QUFDZixHQUFDLEVBQUQsR0FBTSxRQXZCcUQ7QUF1QjNDO0FBQ2hCLEdBQUMsRUFBRCxHQUFNLFFBeEJxRDtBQXdCM0M7QUFDaEIsR0FBQyxFQUFELEdBQU0sUUF6QnFEO0FBeUIzQztBQUNoQixHQUFDLEVBQUQsR0FBTSxRQTFCcUQ7QUEwQjNDO0FBQ2hCLEdBQUMsRUFBRCxHQUFNLFFBM0JxRDtBQTJCM0M7QUFDaEIsR0FBQyxFQUFELEdBQU0sUUE1QnFEO0FBNEIzQztBQUNoQixHQUFDLEVBQUQsR0FBTSxRQTdCcUQ7QUE2QjNDO0FBQ2hCLEdBQUMsRUFBRCxHQUFNLFFBOUJxRDtBQThCM0M7QUFDaEIsR0FBQyxFQUFELEdBQU0sUUEvQnFEO0FBK0IzQztBQUNoQixHQUFDLEVBQUQsR0FBTSxRQWhDcUQ7QUFnQzNDO0FBQ2hCLEdBQUMsRUFBRCxHQUFNLFFBakNxRDtBQWlDM0M7QUFDaEIsR0FBQyxFQUFELEdBQU0sUUFsQ3FEO0FBa0MzQztBQUNoQixHQUFDLEVBQUQsR0FBTSxRQW5DcUQ7QUFtQzNDO0FBQ2hCLEdBQUMsRUFBRCxHQUFNLFFBcENxRDtBQW9DM0M7QUFDaEIsR0FBQyxFQUFELEdBQU0sUUFyQ3FEO0FBcUMzQztBQUNoQixHQUFDLEVBQUQsR0FBTSxRQXRDcUQ7QUFzQzNDO0FBQ2hCLEdBQUMsRUFBRCxHQUFNLFFBdkNxRDtBQXVDM0M7QUFDaEIsR0FBQyxHQUFELEdBQU8sUUF4Q29EO0FBd0MxQztBQUNqQixHQUFDLEdBQUQsR0FBTyxRQXpDb0Q7QUF5QzFDO0FBQ2pCLEdBQUMsR0FBRCxHQUFPLFFBMUNvRDtBQTBDMUM7QUFDakIsR0FBQyxHQUFELEdBQU8sUUEzQ29EO0FBMkMxQztBQUNqQixHQUFDLEdBQUQsR0FBTyxRQTVDb0Q7QUE0QzFDO0FBQ2pCLEdBQUMsR0FBRCxHQUFPLFFBN0NvRDtBQTZDMUM7QUFDakIsR0FBQyxHQUFELEdBQU8sUUE5Q29EO0FBOEMxQztBQUNqQixHQUFDLEdBQUQsR0FBTyxRQS9Db0Q7QUErQzFDO0FBQ2pCLEdBQUMsR0FBRCxHQUFPLFFBaERvRDtBQWdEMUM7QUFDakIsR0FBQyxHQUFELEdBQU8sUUFqRG9EO0FBaUQxQztBQUNqQixHQUFDLEdBQUQsR0FBTyxRQWxEb0Q7QUFrRDFDO0FBQ2pCLEdBQUMsR0FBRCxHQUFPLFFBbkRvRDtBQW1EMUM7QUFDakIsR0FBQyxHQUFELEdBQU8sUUFwRG9EO0FBb0QxQztBQUNqQixHQUFDLEdBQUQsR0FBTyxRQXJEb0Q7QUFxRDFDO0FBQ2pCLEdBQUMsR0FBRCxHQUFPLFFBdERvRDtBQXNEMUM7QUFDakIsR0FBQyxHQUFELEdBQU8sUUF2RG9EO0FBdUQxQztBQUNqQixHQUFDLEdBQUQsR0FBTyxRQXhEb0Q7QUF3RDFDO0FBQ2pCLEdBQUMsR0FBRCxHQUFPLFFBekRvRDtBQXlEMUM7QUFDakIsR0FBQyxHQUFELEdBQU8sUUExRG9EO0FBMEQxQztBQUNqQixHQUFDLEdBQUQsR0FBTyxRQTNEb0Q7QUEyRDFDO0FBQ2pCLEdBQUMsR0FBRCxHQUFPLFFBNURvRDtBQTREMUM7QUFDakIsR0FBQyxHQUFELEdBQU8sUUE3RG9EO0FBNkQxQztBQUNqQixHQUFDLEdBQUQsR0FBTyxRQTlEb0Q7QUE4RDFDO0FBQ2pCLEdBQUMsR0FBRCxHQUFPLFFBL0RvRDtBQStEMUM7QUFDakIsR0FBQyxHQUFELEdBQU8sUUFoRW9EO0FBZ0UxQztBQUNqQixHQUFDLEdBQUQsR0FBTyxRQWpFb0Q7QUFpRTFDO0FBQ2pCLEdBQUMsR0FBRCxHQUFPLFFBbEVvRDtBQWtFMUM7QUFDakIsR0FBQyxHQUFELEdBQU8sUUFuRW9EO0FBbUUxQztBQUNqQixHQUFDLEdBQUQsR0FBTyxRQXBFb0Q7QUFvRTFDO0FBQ2pCLEdBQUMsR0FBRCxHQUFPLFFBckVvRDtBQXFFMUM7QUFDakIsR0FBQyxHQUFELEdBQU8sUUF0RW9EO0FBc0UxQztBQUNqQixHQUFDLEdBQUQsR0FBTyxRQXZFb0Q7QUF1RTFDO0FBQ2pCLEdBQUMsR0FBRCxHQUFPLFFBeEVvRDtBQXdFMUM7QUFDakIsR0FBQyxHQUFELEdBQU8sUUF6RW9ELENBeUUzQzs7QUF6RTJDLENBQXREOztBQTRFQSxNQUFNQyxLQUFLLEdBQUc7QUFDbkJDLEVBQUFBLFdBQVcsRUFBRSxLQUFLLENBREM7QUFFbkJDLEVBQUFBLGFBQWEsRUFBRSxLQUFLLENBRkQ7QUFHbkJDLEVBQUFBLFdBQVcsRUFBRSxLQUFLLENBSEM7QUFJbkJDLEVBQUFBLFlBQVksRUFBRSxLQUFLLENBSkE7QUFLbkJDLEVBQUFBLE1BQU0sRUFBRSxLQUFLLENBTE07QUFNbkJDLEVBQUFBLE9BQU8sRUFBRSxLQUFLLENBTks7QUFPbkJDLEVBQUFBLElBQUksRUFBRSxLQUFLO0FBUFEsQ0FBZDs7O0FBVUEsTUFBTUMsU0FBTixDQUFnQjtBQVNKLFNBQVZDLFVBQVUsQ0FBQ0MsTUFBRCxFQUFpQkMsTUFBTSxHQUFHLENBQTFCLEVBQTZCO0FBQzVDLFFBQUlDLElBQUksR0FBRyxDQUFDRixNQUFNLENBQUNDLE1BQU0sR0FBRyxDQUFWLENBQU4sR0FBcUIsSUFBdEIsS0FBK0IsRUFBMUM7QUFDQUMsSUFBQUEsSUFBSSxJQUFJRixNQUFNLENBQUNDLE1BQU0sR0FBRyxDQUFWLENBQU4sSUFBc0IsQ0FBOUI7QUFDQUMsSUFBQUEsSUFBSSxJQUFJRixNQUFNLENBQUNDLE1BQU0sR0FBRyxDQUFWLENBQWQ7QUFFQSxRQUFJRSxLQUFLLEdBQUcsQ0FBQ0gsTUFBTSxDQUFDQyxNQUFNLEdBQUcsQ0FBVixDQUFOLEdBQXFCLElBQXRCLEtBQStCLENBQTNDO0FBQ0FFLElBQUFBLEtBQUssSUFBSSxDQUFDSCxNQUFNLENBQUNDLE1BQU0sR0FBRyxDQUFWLENBQU4sR0FBcUIsSUFBdEIsTUFBZ0MsQ0FBekM7QUFFQSxVQUFNRyxPQUFPLEdBQUcsQ0FBQ0osTUFBTSxDQUFDQyxNQUFNLEdBQUcsQ0FBVixDQUFOLEdBQXFCLElBQXRCLE1BQWdDLENBQWhEO0FBRUEsVUFBTUksTUFBTSxHQUFHTCxNQUFNLENBQUNDLE1BQU0sR0FBRyxDQUFWLENBQXJCO0FBRUEsV0FBTyxJQUFJLElBQUosQ0FBU0MsSUFBVCxFQUFlQyxLQUFmLEVBQXNCQyxPQUF0QixFQUErQkMsTUFBL0IsQ0FBUDtBQUNEOztBQUVEQyxFQUFBQSxXQUFXLENBQUNKLElBQUQsRUFBZUMsS0FBZixFQUE4QkMsT0FBOUIsRUFBK0NDLE1BQS9DLEVBQStEO0FBQUEsU0F2QmpFSCxJQXVCaUU7QUFBQSxTQXRCakVDLEtBc0JpRTtBQUFBLFNBckJqRUMsT0FxQmlFO0FBQUEsU0FwQmpFQyxNQW9CaUU7QUFBQSxTQW5CakVFLFFBbUJpRTtBQUFBLFNBakJsRVAsTUFpQmtFO0FBQ3hFLFNBQUtBLE1BQUwsR0FBY1EsU0FBZDtBQUVBLFNBQUtOLElBQUwsR0FBWUEsSUFBWjtBQUNBLFNBQUtDLEtBQUwsR0FBYUEsS0FBYjtBQUNBLFNBQUtDLE9BQUwsR0FBZUEsT0FBZjtBQUNBLFNBQUtDLE1BQUwsR0FBY0EsTUFBZDs7QUFFQSxRQUFJLEtBQUtGLEtBQUwsR0FBYWIsS0FBSyxDQUFDTyxJQUF2QixFQUE2QjtBQUMzQixXQUFLVSxRQUFMLEdBQWdCLE9BQWhCO0FBQ0QsS0FGRCxNQUVPLElBQUksS0FBS0YsTUFBVCxFQUFpQjtBQUN0QixXQUFLRSxRQUFMLEdBQWdCbEIsZ0JBQWdCLENBQUMsS0FBS2dCLE1BQU4sQ0FBaEM7QUFDRCxLQUZNLE1BRUE7QUFDTDtBQUNBO0FBQ0EsWUFBTUksVUFBVSxHQUFHLEtBQUtQLElBQUwsR0FBWSxNQUEvQjtBQUNBLFdBQUtLLFFBQUwsR0FBZ0JuQixvQkFBb0IsQ0FBQ3FCLFVBQUQsQ0FBcEM7QUFDRDtBQUNGOztBQUVEQyxFQUFBQSxRQUFRLEdBQVc7QUFDakIsUUFBSSxLQUFLVixNQUFULEVBQWlCO0FBQ2YsYUFBTyxLQUFLQSxNQUFaO0FBQ0Q7O0FBRUQsU0FBS0EsTUFBTCxHQUFjVyxNQUFNLENBQUNDLEtBQVAsQ0FBYSxDQUFiLENBQWQ7QUFFQSxTQUFLWixNQUFMLENBQVksQ0FBWixJQUFpQixLQUFLRSxJQUFMLEdBQVksSUFBN0I7QUFDQSxTQUFLRixNQUFMLENBQVksQ0FBWixJQUFrQixLQUFLRSxJQUFMLEtBQWMsQ0FBZixHQUFvQixJQUFyQztBQUNBLFNBQUtGLE1BQUwsQ0FBWSxDQUFaLElBQW1CLEtBQUtFLElBQUwsS0FBYyxFQUFmLEdBQXFCLElBQXRCLEdBQStCLENBQUMsS0FBS0MsS0FBTCxHQUFhLElBQWQsS0FBdUIsQ0FBdkU7QUFDQSxTQUFLSCxNQUFMLENBQVksQ0FBWixJQUFrQixDQUFDLEtBQUtHLEtBQUwsR0FBYSxJQUFkLE1BQXdCLENBQXpCLEdBQStCLENBQUMsS0FBS0MsT0FBTCxHQUFlLElBQWhCLEtBQXlCLENBQXpFO0FBQ0EsU0FBS0osTUFBTCxDQUFZLENBQVosSUFBaUIsS0FBS0ssTUFBTCxHQUFjLElBQS9CO0FBRUEsV0FBTyxLQUFLTCxNQUFaO0FBQ0Q7O0FBMURvQiIsInNvdXJjZXNDb250ZW50IjpbInR5cGUgRW5jb2RpbmcgPSAndXRmLTgnIHwgJ0NQNDM3JyB8ICdDUDg1MCcgfCAnQ1A4NzQnIHwgJ0NQOTMyJyB8ICdDUDkzNicgfCAnQ1A5NDknIHwgJ0NQOTUwJyB8ICdDUDEyNTAnIHwgJ0NQMTI1MScgfCAnQ1AxMjUyJyB8ICdDUDEyNTMnIHwgJ0NQMTI1NCcgfCAnQ1AxMjU1JyB8ICdDUDEyNTYnIHwgJ0NQMTI1NycgfCAnQ1AxMjU4JztcblxuLy8gaHR0cDovL3RlY2huZXQubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2FhMTc2NTUzKHY9c3FsLjgwKS5hc3B4XG5leHBvcnQgY29uc3QgY29kZXBhZ2VCeUxhbmd1YWdlSWQ6IHsgW2tleTogbnVtYmVyXTogRW5jb2RpbmcgfSA9IHtcbiAgLy8gQXJhYmljXypcbiAgWzB4MDQwMV06ICdDUDEyNTYnLFxuXG4gIC8vIENoaW5lc2VfVGFpd2FuX1N0cm9rZV8qXG4gIC8vIENoaW5lc2VfVHJhZGl0aW9uYWxfU3Ryb2tlX0NvdW50XypcbiAgLy8gQ2hpbmVzZV9UYWl3YW5fQm9wb21vZm9fKlxuICAvLyBDaGluZXNlX1RyYWRpdGlvbmFsX0JvcG9tb2ZvXypcbiAgWzB4MDQwNF06ICdDUDk1MCcsXG5cbiAgLy8gQ3plY2hfKlxuICBbMHgwNDA1XTogJ0NQMTI1MCcsXG5cbiAgLy8gRGFuaXNoX0dyZWVubGFuZGljXypcbiAgLy8gRGFuaXNoX05vcndlZ2lhbl8qXG4gIFsweDA0MDZdOiAnQ1AxMjUyJyxcblxuICAvLyBHcmVla18qXG4gIFsweDA0MDhdOiAnQ1AxMjUzJyxcblxuICAvLyBMYXRpbjFfR2VuZXJhbF8qXG4gIFsweDA0MDldOiAnQ1AxMjUyJyxcblxuICAvLyBUcmFkaXRpb25hbF9TcGFuaXNoXypcbiAgWzB4MDQwQV06ICdDUDEyNTInLFxuXG4gIC8vIEZpbm5pc2hfU3dlZGlzaF8qXG4gIFsweDA0MEJdOiAnQ1AxMjUyJyxcblxuICAvLyBGcmVuY2hfKlxuICBbMHgwNDBDXTogJ0NQMTI1MicsXG5cbiAgLy8gSGVicmV3XypcbiAgWzB4MDQwRF06ICdDUDEyNTUnLFxuXG4gIC8vIEh1bmdhcmlhbl8qXG4gIC8vIEh1bmdhcmlhbl9UZWNobmljYWxfKlxuICBbMHgwNDBFXTogJ0NQMTI1MCcsXG5cbiAgLy8gSWNlbGFuZGljXypcbiAgWzB4MDQwRl06ICdDUDEyNTInLFxuXG4gIC8vIEphcGFuZXNlXypcbiAgLy8gSmFwYW5lc2VfWEpJU18qXG4gIC8vIEphcGFuZXNlX1VuaWNvZGVfKlxuICAvLyBKYXBhbmVzZV9CdXNodV9LYWt1c3VfKlxuICBbMHgwNDExXTogJ0NQOTMyJyxcblxuICAvLyBLb3JlYW5fKlxuICAvLyBLb3JlYW5fV2Fuc3VuZ18qXG4gIFsweDA0MTJdOiAnQ1A5NDknLFxuXG4gIC8vIE5vcndlZ2lhbl8qXG4gIFsweDA0MTRdOiAnQ1AxMjUyJyxcblxuICAvLyBQb2xpc2hfKlxuICBbMHgwNDE1XTogJ0NQMTI1MCcsXG5cbiAgLy8gUm9tYW5zaF8qXG4gIFsweDA0MTddOiAnQ1AxMjUyJyxcblxuICAvLyBSb21hbmlhbl8qXG4gIFsweDA0MThdOiAnQ1AxMjUwJyxcblxuICAvLyBDeXJpbGxpY18qXG4gIFsweDA0MTldOiAnQ1AxMjUxJyxcblxuICAvLyBDcm9hdGlhbl8qXG4gIFsweDA0MUFdOiAnQ1AxMjUwJyxcblxuICAvLyBTbG92YWtfKlxuICBbMHgwNDFCXTogJ0NQMTI1MCcsXG5cbiAgLy8gQWxiYW5pYW5fKlxuICBbMHgwNDFDXTogJ0NQMTI1MCcsXG5cbiAgLy8gVGhhaV8qXG4gIFsweDA0MUVdOiAnQ1A4NzQnLFxuXG4gIC8vIFR1cmtpc2hfKlxuICBbMHgwNDFGXTogJ0NQMTI1NCcsXG5cbiAgLy8gVXJkdV8qXG4gIFsweDA0MjBdOiAnQ1AxMjU2JyxcblxuICAvLyBVa3JhaW5pYW5fKlxuICBbMHgwNDIyXTogJ0NQMTI1MScsXG5cbiAgLy8gU2xvdmVuaWFuXypcbiAgWzB4MDQyNF06ICdDUDEyNTAnLFxuXG4gIC8vIEVzdG9uaWFuXypcbiAgWzB4MDQyNV06ICdDUDEyNTcnLFxuXG4gIC8vIExhdHZpYW5fKlxuICBbMHgwNDI2XTogJ0NQMTI1NycsXG5cbiAgLy8gTGl0aHVhbmlhbl8qXG4gIFsweDA0MjddOiAnQ1AxMjU3JyxcblxuICAvLyBQZXJzaWFuXypcbiAgWzB4MDQyOV06ICdDUDEyNTYnLFxuXG4gIC8vIFZpZXRuYW1lc2VfKlxuICBbMHgwNDJBXTogJ0NQMTI1OCcsXG5cbiAgLy8gQXplcmlfTGF0aW5fKlxuICBbMHgwNDJDXTogJ0NQMTI1NCcsXG5cbiAgLy8gVXBwZXJfU29yYmlhbl8qXG4gIFsweDA0MkVdOiAnQ1AxMjUyJyxcblxuICAvLyBNYWNlZG9uaWFuX0ZZUk9NXypcbiAgWzB4MDQyRl06ICdDUDEyNTEnLFxuXG4gIC8vIFNhbWlfTm9yd2F5XypcbiAgWzB4MDQzQl06ICdDUDEyNTInLFxuXG4gIC8vIEthemFraF8qXG4gIFsweDA0M0ZdOiAnQ1AxMjUxJyxcblxuICAvLyBUdXJrbWVuXypcbiAgWzB4MDQ0Ml06ICdDUDEyNTAnLFxuXG4gIC8vIFV6YmVrX0xhdGluXypcbiAgWzB4MDQ0M106ICdDUDEyNTQnLFxuXG4gIC8vIFRhdGFyXypcbiAgWzB4MDQ0NF06ICdDUDEyNTEnLFxuXG4gIC8vIFdlbHNoXypcbiAgWzB4MDQ1Ml06ICdDUDEyNTInLFxuXG4gIC8vIEZyaXNpYW5fKlxuICBbMHgwNDYyXTogJ0NQMTI1MicsXG5cbiAgLy8gQmFzaGtpcl8qXG4gIFsweDA0NkRdOiAnQ1AxMjUxJyxcblxuICAvLyBNYXB1ZHVuZ2FuXypcbiAgWzB4MDQ3QV06ICdDUDEyNTInLFxuXG4gIC8vIE1vaGF3a18qXG4gIFsweDA0N0NdOiAnQ1AxMjUyJyxcblxuICAvLyBCcmV0b25fKlxuICBbMHgwNDdFXTogJ0NQMTI1MicsXG5cbiAgLy8gVWlnaHVyXypcbiAgWzB4MDQ4MF06ICdDUDEyNTYnLFxuXG4gIC8vIENvcnNpY2FuXypcbiAgWzB4MDQ4M106ICdDUDEyNTInLFxuXG4gIC8vIFlha3V0XypcbiAgWzB4MDQ4NV06ICdDUDEyNTEnLFxuXG4gIC8vIERhcmlfKlxuICBbMHgwNDhDXTogJ0NQMTI1NicsXG5cbiAgLy8gQ2hpbmVzZV9QUkNfKlxuICAvLyBDaGluZXNlX1NpbXBsaWZpZWRfUGlueWluXypcbiAgLy8gQ2hpbmVzZV9QUkNfU3Ryb2tlXypcbiAgLy8gQ2hpbmVzZV9TaW1wbGlmaWVkX1N0cm9rZV9PcmRlcl8qXG4gIFsweDA4MDRdOiAnQ1A5MzYnLFxuXG4gIC8vIFNlcmJpYW5fTGF0aW5fKlxuICBbMHgwODFBXTogJ0NQMTI1MCcsXG5cbiAgLy8gQXplcmlfQ3lyaWxsaWNfKlxuICBbMHgwODJDXTogJ0NQMTI1MScsXG5cbiAgLy8gU2FtaV9Td2VkZW5fRmlubGFuZF8qXG4gIFsweDA4M0JdOiAnQ1AxMjUyJyxcblxuICAvLyBUYW1hemlnaHRfKlxuICBbMHgwODVGXTogJ0NQMTI1MicsXG5cbiAgLy8gQ2hpbmVzZV9Ib25nX0tvbmdfU3Ryb2tlXypcbiAgWzB4MEMwNF06ICdDUDk1MCcsXG5cbiAgLy8gTW9kZXJuX1NwYW5pc2hfKlxuICBbMHgwQzBBXTogJ0NQMTI1MicsXG5cbiAgLy8gU2VyYmlhbl9DeXJpbGxpY18qXG4gIFsweDBDMUFdOiAnQ1AxMjUxJyxcblxuICAvLyBDaGluZXNlX1RyYWRpdGlvbmFsX1Bpbnlpbl8qXG4gIC8vIENoaW5lc2VfVHJhZGl0aW9uYWxfU3Ryb2tlX09yZGVyXypcbiAgWzB4MTQwNF06ICdDUDk1MCcsXG5cbiAgLy8gQm9zbmlhbl9MYXRpbl8qXG4gIFsweDE0MUFdOiAnQ1AxMjUwJyxcblxuICAvLyBCb3NuaWFuX0N5cmlsbGljXypcbiAgWzB4MjAxQV06ICdDUDEyNTEnLFxuXG4gIC8vIEdlcm1hblxuICAvLyBHZXJtYW5fUGhvbmVCb29rXypcbiAgWzB4MDQwN106ICdDUDEyNTInLFxuXG4gIC8vIEdlb3JnaWFuX01vZGVybl9Tb3J0XypcbiAgWzB4MDQzN106ICdDUDEyNTInXG59O1xuXG5leHBvcnQgY29uc3QgY29kZXBhZ2VCeVNvcnRJZDogeyBba2V5OiBudW1iZXJdOiBFbmNvZGluZyB9ID0ge1xuICBbMzBdOiAnQ1A0MzcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1A0MzdfQklOXG4gIFszMV06ICdDUDQzNycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDQzN19DU19BU1xuICBbMzJdOiAnQ1A0MzcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1A0MzdfQ0lfQVNcbiAgWzMzXTogJ0NQNDM3JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX1ByZWZfQ1A0MzdfQ0lfQVNcbiAgWzM0XTogJ0NQNDM3JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQNDM3X0NJX0FJXG4gIFs0MF06ICdDUDg1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDg1MF9CSU5cbiAgWzQxXTogJ0NQODUwJywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQODUwX0NTX0FTXG4gIFs0Ml06ICdDUDg1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDg1MF9DSV9BU1xuICBbNDNdOiAnQ1A4NTAnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfUHJlZl9DUDg1MF9DSV9BU1xuICBbNDRdOiAnQ1A4NTAnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1A4NTBfQ0lfQUlcbiAgWzQ5XTogJ0NQODUwJywgLy8gU1FMXzF4Q29tcGF0X0NQODUwX0NJX0FTXG4gIFs1MV06ICdDUDEyNTInLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ3AxX0NTX0FTX0tJX1dJXG4gIFs1Ml06ICdDUDEyNTInLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ3AxX0NJX0FTX0tJX1dJXG4gIFs1M106ICdDUDEyNTInLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfUHJlZl9DcDFfQ0lfQVNfS0lfV0lcbiAgWzU0XTogJ0NQMTI1MicsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DcDFfQ0lfQUlfS0lfV0lcbiAgWzU1XTogJ0NQODUwJywgLy8gU1FMX0FsdERpY3Rpb25fQ1A4NTBfQ1NfQVNcbiAgWzU2XTogJ0NQODUwJywgLy8gU1FMX0FsdERpY3Rpb25fUHJlZl9DUDg1MF9DSV9BU1xuICBbNTddOiAnQ1A4NTAnLCAvLyBTUUxfQWx0RGljdGlvbl9DUDg1MF9DSV9BSVxuICBbNThdOiAnQ1A4NTAnLCAvLyBTUUxfU2NhbmRpbmF2aWFuX1ByZWZfQ1A4NTBfQ0lfQVNcbiAgWzU5XTogJ0NQODUwJywgLy8gU1FMX1NjYW5kaW5hdmlhbl9DUDg1MF9DU19BU1xuICBbNjBdOiAnQ1A4NTAnLCAvLyBTUUxfU2NhbmRpbmF2aWFuX0NQODUwX0NJX0FTXG4gIFs2MV06ICdDUDg1MCcsIC8vIFNRTF9BbHREaWN0aW9uX0NQODUwX0NJX0FTXG4gIFs4MF06ICdDUDEyNTAnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfMTI1MF9CSU5cbiAgWzgxXTogJ0NQMTI1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTBfQ1NfQVNcbiAgWzgyXTogJ0NQMTI1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DcDEyNTBfQ0lfQVNfS0lfV0lcbiAgWzgzXTogJ0NQMTI1MCcsIC8vIFNRTF9DemVjaF9DcDEyNTBfQ1NfQVNfS0lfV0lcbiAgWzg0XTogJ0NQMTI1MCcsIC8vIFNRTF9DemVjaF9DcDEyNTBfQ0lfQVNfS0lfV0lcbiAgWzg1XTogJ0NQMTI1MCcsIC8vIFNRTF9IdW5nYXJpYW5fQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs4Nl06ICdDUDEyNTAnLCAvLyBTUUxfSHVuZ2FyaWFuX0NwMTI1MF9DSV9BU19LSV9XSVxuICBbODddOiAnQ1AxMjUwJywgLy8gU1FMX1BvbGlzaF9DcDEyNTBfQ1NfQVNfS0lfV0lcbiAgWzg4XTogJ0NQMTI1MCcsIC8vIFNRTF9Qb2xpc2hfQ3AxMjUwX0NJX0FTX0tJX1dJXG4gIFs4OV06ICdDUDEyNTAnLCAvLyBTUUxfUm9tYW5pYW5fQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs5MF06ICdDUDEyNTAnLCAvLyBTUUxfUm9tYW5pYW5fQ3AxMjUwX0NJX0FTX0tJX1dJXG4gIFs5MV06ICdDUDEyNTAnLCAvLyBTUUxfQ3JvYXRpYW5fQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs5Ml06ICdDUDEyNTAnLCAvLyBTUUxfQ3JvYXRpYW5fQ3AxMjUwX0NJX0FTX0tJX1dJXG4gIFs5M106ICdDUDEyNTAnLCAvLyBTUUxfU2xvdmFrX0NwMTI1MF9DU19BU19LSV9XSVxuICBbOTRdOiAnQ1AxMjUwJywgLy8gU1FMX1Nsb3Zha19DcDEyNTBfQ0lfQVNfS0lfV0lcbiAgWzk1XTogJ0NQMTI1MCcsIC8vIFNRTF9TbG92ZW5pYW5fQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs5Nl06ICdDUDEyNTAnLCAvLyBTUUxfU2xvdmVuaWFuX0NwMTI1MF9DSV9BU19LSV9XSVxuICBbMTA0XTogJ0NQMTI1MScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF8xMjUxX0JJTlxuICBbMTA1XTogJ0NQMTI1MScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTFfQ1NfQVNcbiAgWzEwNl06ICdDUDEyNTEnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjUxX0NJX0FTXG4gIFsxMDddOiAnQ1AxMjUxJywgLy8gU1FMX1VrcmFpbmlhbl9DcDEyNTFfQ1NfQVNfS0lfV0lcbiAgWzEwOF06ICdDUDEyNTEnLCAvLyBTUUxfVWtyYWluaWFuX0NwMTI1MV9DSV9BU19LSV9XSVxuICBbMTEyXTogJ0NQMTI1MycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF8xMjUzX0JJTlxuICBbMTEzXTogJ0NQMTI1MycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTNfQ1NfQVNcbiAgWzExNF06ICdDUDEyNTMnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjUzX0NJX0FTXG4gIFsxMjBdOiAnQ1AxMjUzJywgLy8gU1FMX01peERpY3Rpb25fQ1AxMjUzX0NTX0FTXG4gIFsxMjFdOiAnQ1AxMjUzJywgLy8gU1FMX0FsdERpY3Rpb25fQ1AxMjUzX0NTX0FTXG4gIFsxMjJdOiAnQ1AxMjUzJywgLy8gU1FMX0FsdERpY3Rpb24yX0NQMTI1M19DU19BU1xuICBbMTI0XTogJ0NQMTI1MycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTNfQ0lfQUlcbiAgWzEyOF06ICdDUDEyNTQnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfMTI1NF9CSU5cbiAgWzEyOV06ICdDUDEyNTQnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ3AxMjU0X0NTX0FTX0tJX1dJXG4gIFsxMzBdOiAnQ1AxMjU0JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NwMTI1NF9DSV9BU19LSV9XSVxuICBbMTM2XTogJ0NQMTI1NScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF8xMjU1X0JJTlxuICBbMTM3XTogJ0NQMTI1NScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTVfQ1NfQVNcbiAgWzEzOF06ICdDUDEyNTUnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjU1X0NJX0FTXG4gIFsxNDRdOiAnQ1AxMjU2JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsXzEyNTZfQklOXG4gIFsxNDVdOiAnQ1AxMjU2JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQMTI1Nl9DU19BU1xuICBbMTQ2XTogJ0NQMTI1NicsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTZfQ0lfQVNcbiAgWzE1Ml06ICdDUDEyNTcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfMTI1N19CSU5cbiAgWzE1M106ICdDUDEyNTcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjU3X0NTX0FTXG4gIFsxNTRdOiAnQ1AxMjU3JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQMTI1N19DSV9BU1xuICBbMTU1XTogJ0NQMTI1NycsIC8vIFNRTF9Fc3Rvbmlhbl9DcDEyNTdfQ1NfQVNfS0lfV0lcbiAgWzE1Nl06ICdDUDEyNTcnLCAvLyBTUUxfRXN0b25pYW5fQ3AxMjU3X0NJX0FTX0tJX1dJXG4gIFsxNTddOiAnQ1AxMjU3JywgLy8gU1FMX0xhdHZpYW5fQ3AxMjU3X0NTX0FTX0tJX1dJXG4gIFsxNThdOiAnQ1AxMjU3JywgLy8gU1FMX0xhdHZpYW5fQ3AxMjU3X0NJX0FTX0tJX1dJXG4gIFsxNTldOiAnQ1AxMjU3JywgLy8gU1FMX0xpdGh1YW5pYW5fQ3AxMjU3X0NTX0FTX0tJX1dJXG4gIFsxNjBdOiAnQ1AxMjU3JywgLy8gU1FMX0xpdGh1YW5pYW5fQ3AxMjU3X0NJX0FTX0tJX1dJXG4gIFsxODNdOiAnQ1AxMjUyJywgLy8gU1FMX0RhbmlzaF9QcmVmX0NwMV9DSV9BU19LSV9XSVxuICBbMTg0XTogJ0NQMTI1MicsIC8vIFNRTF9Td2VkaXNoUGhvbmVfUHJlZl9DcDFfQ0lfQVNfS0lfV0lcbiAgWzE4NV06ICdDUDEyNTInLCAvLyBTUUxfU3dlZGlzaFN0ZF9QcmVmX0NwMV9DSV9BU19LSV9XSVxuICBbMTg2XTogJ0NQMTI1MicgLy8gU1FMX0ljZWxhbmRpY19QcmVmX0NwMV9DSV9BU19LSV9XSVxufTtcblxuZXhwb3J0IGNvbnN0IEZsYWdzID0ge1xuICBJR05PUkVfQ0FTRTogMSA8PCAwLFxuICBJR05PUkVfQUNDRU5UOiAxIDw8IDEsXG4gIElHTk9SRV9LQU5BOiAxIDw8IDIsXG4gIElHTk9SRV9XSURUSDogMSA8PCAzLFxuICBCSU5BUlk6IDEgPDwgNCxcbiAgQklOQVJZMjogMSA8PCA1LFxuICBVVEY4OiAxIDw8IDYsXG59O1xuXG5leHBvcnQgY2xhc3MgQ29sbGF0aW9uIHtcbiAgcmVhZG9ubHkgbGNpZDogbnVtYmVyO1xuICByZWFkb25seSBmbGFnczogbnVtYmVyO1xuICByZWFkb25seSB2ZXJzaW9uOiBudW1iZXI7XG4gIHJlYWRvbmx5IHNvcnRJZDogbnVtYmVyO1xuICByZWFkb25seSBjb2RlcGFnZTogRW5jb2RpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBidWZmZXI6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcblxuICBzdGF0aWMgZnJvbUJ1ZmZlcihidWZmZXI6IEJ1ZmZlciwgb2Zmc2V0ID0gMCkge1xuICAgIGxldCBsY2lkID0gKGJ1ZmZlcltvZmZzZXQgKyAyXSAmIDB4MEYpIDw8IDE2O1xuICAgIGxjaWQgfD0gYnVmZmVyW29mZnNldCArIDFdIDw8IDg7XG4gICAgbGNpZCB8PSBidWZmZXJbb2Zmc2V0ICsgMF07XG5cbiAgICBsZXQgZmxhZ3MgPSAoYnVmZmVyW29mZnNldCArIDNdICYgMHgwRikgPDwgNDtcbiAgICBmbGFncyB8PSAoYnVmZmVyW29mZnNldCArIDJdICYgMHhGMCkgPj4+IDQ7XG5cbiAgICBjb25zdCB2ZXJzaW9uID0gKGJ1ZmZlcltvZmZzZXQgKyAzXSAmIDB4RjApID4+PiA0O1xuXG4gICAgY29uc3Qgc29ydElkID0gYnVmZmVyW29mZnNldCArIDRdO1xuXG4gICAgcmV0dXJuIG5ldyB0aGlzKGxjaWQsIGZsYWdzLCB2ZXJzaW9uLCBzb3J0SWQpO1xuICB9XG5cbiAgY29uc3RydWN0b3IobGNpZDogbnVtYmVyLCBmbGFnczogbnVtYmVyLCB2ZXJzaW9uOiBudW1iZXIsIHNvcnRJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5idWZmZXIgPSB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLmxjaWQgPSBsY2lkO1xuICAgIHRoaXMuZmxhZ3MgPSBmbGFncztcbiAgICB0aGlzLnZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIHRoaXMuc29ydElkID0gc29ydElkO1xuXG4gICAgaWYgKHRoaXMuZmxhZ3MgJiBGbGFncy5VVEY4KSB7XG4gICAgICB0aGlzLmNvZGVwYWdlID0gJ3V0Zi04JztcbiAgICB9IGVsc2UgaWYgKHRoaXMuc29ydElkKSB7XG4gICAgICB0aGlzLmNvZGVwYWdlID0gY29kZXBhZ2VCeVNvcnRJZFt0aGlzLnNvcnRJZF07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZSBsYXN0IDE2IGJpdHMgb2YgdGhlIExDSUQgYXJlIHRoZSBsYW5ndWFnZSBpZC5cbiAgICAgIC8vIFRoZSBmaXJzdCA0IGJpdHMgZGVmaW5lIGFkZGl0aW9uYWwgc29ydCBvcmRlcnMuXG4gICAgICBjb25zdCBsYW5ndWFnZUlkID0gdGhpcy5sY2lkICYgMHhGRkZGO1xuICAgICAgdGhpcy5jb2RlcGFnZSA9IGNvZGVwYWdlQnlMYW5ndWFnZUlkW2xhbmd1YWdlSWRdO1xuICAgIH1cbiAgfVxuXG4gIHRvQnVmZmVyKCk6IEJ1ZmZlciB7XG4gICAgaWYgKHRoaXMuYnVmZmVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5idWZmZXI7XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgPSBCdWZmZXIuYWxsb2MoNSk7XG5cbiAgICB0aGlzLmJ1ZmZlclswXSA9IHRoaXMubGNpZCAmIDB4RkY7XG4gICAgdGhpcy5idWZmZXJbMV0gPSAodGhpcy5sY2lkID4+PiA4KSAmIDB4RkY7XG4gICAgdGhpcy5idWZmZXJbMl0gPSAoKHRoaXMubGNpZCA+Pj4gMTYpICYgMHgwRikgfCAoKHRoaXMuZmxhZ3MgJiAweDBGKSA8PCA0KTtcbiAgICB0aGlzLmJ1ZmZlclszXSA9ICgodGhpcy5mbGFncyAmIDB4RjApID4+PiA0KSB8ICgodGhpcy52ZXJzaW9uICYgMHgwRikgPDwgNCk7XG4gICAgdGhpcy5idWZmZXJbNF0gPSB0aGlzLnNvcnRJZCAmIDB4RkY7XG5cbiAgICByZXR1cm4gdGhpcy5idWZmZXI7XG4gIH1cbn1cbiJdfQ==
|