@bitgo/sdk-coin-icp 1.10.1 → 1.11.0
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/CHANGELOG.md +6 -0
- package/dist/src/lib/iface.d.ts +3 -27
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +2 -4
- package/dist/src/lib/signedTransactionBuilder.d.ts +1 -1
- package/dist/src/lib/signedTransactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/signedTransactionBuilder.js +27 -32
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +3 -13
- package/dist/src/lib/transactionBuilder.d.ts +3 -2
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +6 -3
- package/dist/src/lib/unsignedTransactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/unsignedTransactionBuilder.js +18 -24
- package/dist/src/lib/utils.d.ts +1 -17
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +2 -33
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [1.11.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-icp@1.10.1...@bitgo/sdk-coin-icp@1.11.0) (2025-04-04)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- **sdk-coin-icp:** reduce the payload to 1 ([c6905ce](https://github.com/BitGo/BitGoJS/commit/c6905ce4b205c1c2a265b89e657f16d5b29c564d))
|
|
11
|
+
|
|
6
12
|
## [1.10.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-icp@1.10.0...@bitgo/sdk-coin-icp@1.10.1) (2025-04-02)
|
|
7
13
|
|
|
8
14
|
**Note:** Version bump only for package @bitgo/sdk-coin-icp
|
package/dist/src/lib/iface.d.ts
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { TransactionExplanation as BaseTransactionExplanation, TransactionType as BitGoTransactionType } from '@bitgo/sdk-core';
|
|
2
|
-
export declare const REQUEST_STATUS = "request_status";
|
|
3
2
|
export declare const MAX_INGRESS_TTL: number;
|
|
4
3
|
export declare const PERMITTED_DRIFT: number;
|
|
5
4
|
export declare const LEDGER_CANISTER_ID: Uint8Array<ArrayBuffer>;
|
|
6
5
|
export declare enum RequestType {
|
|
7
|
-
CALL = "call"
|
|
8
|
-
READ_STATE = "read_state"
|
|
6
|
+
CALL = "call"
|
|
9
7
|
}
|
|
10
8
|
export declare enum SignatureType {
|
|
11
9
|
ECDSA = "ecdsa"
|
|
@@ -114,28 +112,11 @@ export interface Signatures {
|
|
|
114
112
|
hex_bytes: string;
|
|
115
113
|
}
|
|
116
114
|
export interface CborUnsignedTransaction {
|
|
117
|
-
updates: [
|
|
115
|
+
updates: [HttpCanisterUpdate][];
|
|
118
116
|
ingress_expiries: bigint[];
|
|
119
117
|
}
|
|
120
|
-
export interface ReadState {
|
|
121
|
-
sender: Uint8Array;
|
|
122
|
-
paths: Array<[Buffer, Buffer]>;
|
|
123
|
-
ingress_expiry: bigint;
|
|
124
|
-
}
|
|
125
118
|
export interface UpdateEnvelope {
|
|
126
|
-
content: {
|
|
127
|
-
request_type: RequestType;
|
|
128
|
-
canister_id: Uint8Array;
|
|
129
|
-
method_name: MethodName;
|
|
130
|
-
arg: Uint8Array;
|
|
131
|
-
sender: Uint8Array;
|
|
132
|
-
ingress_expiry: bigint;
|
|
133
|
-
};
|
|
134
|
-
sender_pubkey: Uint8Array;
|
|
135
|
-
sender_sig: Uint8Array;
|
|
136
|
-
}
|
|
137
|
-
export interface ReadStateEnvelope {
|
|
138
|
-
content: ReadState & {
|
|
119
|
+
content: HttpCanisterUpdate & {
|
|
139
120
|
request_type: RequestType;
|
|
140
121
|
};
|
|
141
122
|
sender_pubkey: Uint8Array;
|
|
@@ -143,7 +124,6 @@ export interface ReadStateEnvelope {
|
|
|
143
124
|
}
|
|
144
125
|
export interface RequestEnvelope {
|
|
145
126
|
update: UpdateEnvelope;
|
|
146
|
-
read_state: ReadStateEnvelope;
|
|
147
127
|
}
|
|
148
128
|
/**
|
|
149
129
|
* The transaction data returned from the toJson() function of a transaction
|
|
@@ -166,10 +146,6 @@ export interface NetworkIdentifier {
|
|
|
166
146
|
blockchain: string;
|
|
167
147
|
network: string;
|
|
168
148
|
}
|
|
169
|
-
export interface SignedTransactionRequest {
|
|
170
|
-
network_identifier: NetworkIdentifier;
|
|
171
|
-
signed_transaction: string;
|
|
172
|
-
}
|
|
173
149
|
export interface RawTransaction {
|
|
174
150
|
serializedTxHex: string;
|
|
175
151
|
publicKey: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,IAAI,0BAA0B,EACpD,eAAe,IAAI,oBAAoB,EACxC,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"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"}
|
package/dist/src/lib/iface.js
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Network = exports.MethodName = exports.OperationType = exports.CurveType = exports.SignatureType = exports.RequestType = exports.LEDGER_CANISTER_ID = exports.PERMITTED_DRIFT = exports.MAX_INGRESS_TTL =
|
|
4
|
-
exports.REQUEST_STATUS = 'request_status';
|
|
3
|
+
exports.Network = exports.MethodName = exports.OperationType = exports.CurveType = exports.SignatureType = exports.RequestType = exports.LEDGER_CANISTER_ID = exports.PERMITTED_DRIFT = exports.MAX_INGRESS_TTL = void 0;
|
|
5
4
|
exports.MAX_INGRESS_TTL = 5 * 60 * 1000000000; // 5 minutes in nanoseconds
|
|
6
5
|
exports.PERMITTED_DRIFT = 60 * 1000000000; // 60 seconds in nanoseconds
|
|
7
6
|
exports.LEDGER_CANISTER_ID = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 2, 1, 1]); // Uint8Array value for "00000000000000020101" and the string value is "ryjl3-tyaaa-aaaaa-aaaba-cai"
|
|
8
7
|
var RequestType;
|
|
9
8
|
(function (RequestType) {
|
|
10
9
|
RequestType["CALL"] = "call";
|
|
11
|
-
RequestType["READ_STATE"] = "read_state";
|
|
12
10
|
})(RequestType || (exports.RequestType = RequestType = {}));
|
|
13
11
|
var SignatureType;
|
|
14
12
|
(function (SignatureType) {
|
|
@@ -31,4 +29,4 @@ var Network;
|
|
|
31
29
|
(function (Network) {
|
|
32
30
|
Network["ID"] = "00000000000000020101";
|
|
33
31
|
})(Network || (exports.Network = Network = {}));
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUthLFFBQUEsZUFBZSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsVUFBWSxDQUFDLENBQUMsMkJBQTJCO0FBQ3BFLFFBQUEsZUFBZSxHQUFHLEVBQUUsR0FBRyxVQUFZLENBQUMsQ0FBQyw0QkFBNEI7QUFDakUsUUFBQSxrQkFBa0IsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvR0FBb0c7QUFFdEwsSUFBWSxXQUVYO0FBRkQsV0FBWSxXQUFXO0lBQ3JCLDRCQUFhLENBQUE7QUFDZixDQUFDLEVBRlcsV0FBVywyQkFBWCxXQUFXLFFBRXRCO0FBRUQsSUFBWSxhQUVYO0FBRkQsV0FBWSxhQUFhO0lBQ3ZCLGdDQUFlLENBQUE7QUFDakIsQ0FBQyxFQUZXLGFBQWEsNkJBQWIsYUFBYSxRQUV4QjtBQUVELElBQVksU0FFWDtBQUZELFdBQVksU0FBUztJQUNuQixvQ0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBRlcsU0FBUyx5QkFBVCxTQUFTLFFBRXBCO0FBRUQsSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLDRDQUEyQixDQUFBO0lBQzNCLDRCQUFXLENBQUE7QUFDYixDQUFDLEVBSFcsYUFBYSw2QkFBYixhQUFhLFFBR3hCO0FBRUQsSUFBWSxVQUVYO0FBRkQsV0FBWSxVQUFVO0lBQ3BCLGlDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFGVyxVQUFVLDBCQUFWLFVBQVUsUUFFckI7QUFFRCxJQUFZLE9BRVg7QUFGRCxXQUFZLE9BQU87SUFDakIsc0NBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQUZXLE9BQU8sdUJBQVAsT0FBTyxRQUVsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gYXMgQmFzZVRyYW5zYWN0aW9uRXhwbGFuYXRpb24sXG4gIFRyYW5zYWN0aW9uVHlwZSBhcyBCaXRHb1RyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcblxuZXhwb3J0IGNvbnN0IE1BWF9JTkdSRVNTX1RUTCA9IDUgKiA2MCAqIDEwMDBfMDAwXzAwMDsgLy8gNSBtaW51dGVzIGluIG5hbm9zZWNvbmRzXG5leHBvcnQgY29uc3QgUEVSTUlUVEVEX0RSSUZUID0gNjAgKiAxMDAwXzAwMF8wMDA7IC8vIDYwIHNlY29uZHMgaW4gbmFub3NlY29uZHNcbmV4cG9ydCBjb25zdCBMRURHRVJfQ0FOSVNURVJfSUQgPSBuZXcgVWludDhBcnJheShbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMiwgMSwgMV0pOyAvLyBVaW50OEFycmF5IHZhbHVlIGZvciBcIjAwMDAwMDAwMDAwMDAwMDIwMTAxXCIgYW5kIHRoZSBzdHJpbmcgdmFsdWUgaXMgXCJyeWpsMy10eWFhYS1hYWFhYS1hYWFiYS1jYWlcIlxuXG5leHBvcnQgZW51bSBSZXF1ZXN0VHlwZSB7XG4gIENBTEwgPSAnY2FsbCcsXG59XG5cbmV4cG9ydCBlbnVtIFNpZ25hdHVyZVR5cGUge1xuICBFQ0RTQSA9ICdlY2RzYScsXG59XG5cbmV4cG9ydCBlbnVtIEN1cnZlVHlwZSB7XG4gIFNFQ1AyNTZLMSA9ICdzZWNwMjU2azEnLFxufVxuXG5leHBvcnQgZW51bSBPcGVyYXRpb25UeXBlIHtcbiAgVFJBTlNBQ1RJT04gPSAnVFJBTlNBQ1RJT04nLFxuICBGRUUgPSAnRkVFJyxcbn1cblxuZXhwb3J0IGVudW0gTWV0aG9kTmFtZSB7XG4gIFNFTkRfUEIgPSAnc2VuZF9wYicsIC8vIHNlbmRfcGIgaXMgdGhlIG1ldGhvZCBuYW1lIGZvciBJQ1AgdHJhbnNmZXIgdHJhbnNhY3Rpb25cbn1cblxuZXhwb3J0IGVudW0gTmV0d29yayB7XG4gIElEID0gJzAwMDAwMDAwMDAwMDAwMDIwMTAxJywgLy8gSUNQIGRvZXMgbm90IGhhdmUgZGlmZmVyZW50IG5ldHdvcmsgSURzIGZvciBtYWlubmV0IGFuZCB0ZXN0bmV0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWNwVHJhbnNhY3Rpb25EYXRhIHtcbiAgc2VuZGVyQWRkcmVzczogc3RyaW5nO1xuICByZWNlaXZlckFkZHJlc3M6IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmc7XG4gIGZlZTogc3RyaW5nO1xuICBzZW5kZXJQdWJsaWNLZXlIZXg6IHN0cmluZztcbiAgbWVtbzogbnVtYmVyIHwgQmlnSW50OyAvLyBtZW1vIGluIHN0cmluZyBpcyBub3QgYWNjZXB0ZWQgYnkgSUNQIGNoYWluLlxuICB0cmFuc2FjdGlvblR5cGU6IE9wZXJhdGlvblR5cGU7XG4gIGV4cGlyeVRpbWU6IG51bWJlciB8IEJpZ0ludDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJY3BQdWJsaWNLZXkge1xuICBoZXhfYnl0ZXM6IHN0cmluZztcbiAgY3VydmVfdHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEljcEFjY291bnQge1xuICBhZGRyZXNzOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWNwQ3VycmVuY3kge1xuICBzeW1ib2w6IHN0cmluZztcbiAgZGVjaW1hbHM6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJY3BBbW91bnQge1xuICB2YWx1ZTogc3RyaW5nO1xuICBjdXJyZW5jeTogSWNwQ3VycmVuY3k7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWNwT3BlcmF0aW9uIHtcbiAgdHlwZTogc3RyaW5nO1xuICBhY2NvdW50OiBJY3BBY2NvdW50O1xuICBhbW91bnQ6IEljcEFtb3VudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJY3BNZXRhZGF0YSB7XG4gIGNyZWF0ZWRfYXRfdGltZTogbnVtYmVyO1xuICBtZW1vOiBudW1iZXIgfCBCaWdJbnQ7IC8vIG1lbW8gaW4gc3RyaW5nIGlzIG5vdCBhY2NlcHRlZCBieSBJQ1AgY2hhaW4uXG4gIGluZ3Jlc3Nfc3RhcnQ/OiBudW1iZXIgfCBCaWdJbnQ7IC8vIGl0IHNob3VsZCBiZSBuYW5vIHNlY29uZHNcbiAgaW5ncmVzc19lbmQ/OiBudW1iZXIgfCBCaWdJbnQ7IC8vIGl0IHNob3VsZCBiZSBuYW5vIHNlY29uZHNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJY3BUcmFuc2FjdGlvbiB7XG4gIHB1YmxpY19rZXlzOiBJY3BQdWJsaWNLZXlbXTtcbiAgb3BlcmF0aW9uczogSWNwT3BlcmF0aW9uW107XG4gIG1ldGFkYXRhOiBJY3BNZXRhZGF0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRUcmFuc2FjdGlvbiB7XG4gIG9wZXJhdGlvbnM6IEljcE9wZXJhdGlvbltdO1xuICBhY2NvdW50X2lkZW50aWZpZXJfc2lnbmVyczogSWNwQWNjb3VudFtdO1xuICBtZXRhZGF0YTogSWNwTWV0YWRhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWNwQWNjb3VudElkZW50aWZpZXIge1xuICBhZGRyZXNzOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VuZEFyZ3Mge1xuICBtZW1vOiB7IG1lbW86IG51bWJlciB8IEJpZ0ludCB9O1xuICBwYXltZW50OiB7IHJlY2VpdmVyR2V0czogeyBlOHM6IG51bWJlciB9IH07XG4gIG1heEZlZTogeyBlOHM6IG51bWJlciB9O1xuICB0bzogeyBoYXNoOiBCdWZmZXIgfTtcbiAgY3JlYXRlZEF0VGltZTogeyB0aW1lc3RhbXBOYW5vczogbnVtYmVyIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cENhbmlzdGVyVXBkYXRlIHtcbiAgY2FuaXN0ZXJfaWQ6IFVpbnQ4QXJyYXk7XG4gIG1ldGhvZF9uYW1lOiBNZXRob2ROYW1lO1xuICBhcmc6IFVpbnQ4QXJyYXk7XG4gIHNlbmRlcjogVWludDhBcnJheTtcbiAgaW5ncmVzc19leHBpcnk6IGJpZ2ludDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWduaW5nUGF5bG9hZCB7XG4gIGFjY291bnRfaWRlbnRpZmllcjogSWNwQWNjb3VudElkZW50aWZpZXI7XG4gIGhleF9ieXRlczogc3RyaW5nO1xuICBzaWduYXR1cmVfdHlwZTogU2lnbmF0dXJlVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXlsb2Fkc0RhdGEge1xuICBwYXlsb2FkczogU2lnbmluZ1BheWxvYWRbXTtcbiAgdW5zaWduZWRfdHJhbnNhY3Rpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWduYXR1cmVzIHtcbiAgc2lnbmluZ19wYXlsb2FkOiBTaWduaW5nUGF5bG9hZDtcbiAgc2lnbmF0dXJlX3R5cGU6IFNpZ25hdHVyZVR5cGU7XG4gIHB1YmxpY19rZXk6IEljcFB1YmxpY0tleTtcbiAgaGV4X2J5dGVzOiBzdHJpbmc7XG59XG5cbi8vVG9kbzogcmVtb3ZlIHRoaXMgaW50ZXJmYWNlIHdoZW4gd2UgaGF2ZSBhIGJldHRlciB3YXkgdG8gaGFuZGxlIHRoZSB0cmFuc2FjdGlvblxuZXhwb3J0IGludGVyZmFjZSBDYm9yVW5zaWduZWRUcmFuc2FjdGlvbiB7XG4gIHVwZGF0ZXM6IFtIdHRwQ2FuaXN0ZXJVcGRhdGVdW107XG4gIGluZ3Jlc3NfZXhwaXJpZXM6IGJpZ2ludFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZUVudmVsb3BlIHtcbiAgY29udGVudDogSHR0cENhbmlzdGVyVXBkYXRlICYge1xuICAgIHJlcXVlc3RfdHlwZTogUmVxdWVzdFR5cGU7XG4gIH07XG4gIHNlbmRlcl9wdWJrZXk6IFVpbnQ4QXJyYXk7XG4gIHNlbmRlcl9zaWc6IFVpbnQ4QXJyYXk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdEVudmVsb3BlIHtcbiAgdXBkYXRlOiBVcGRhdGVFbnZlbG9wZTtcbn1cblxuLyoqXG4gKiBUaGUgdHJhbnNhY3Rpb24gZGF0YSByZXR1cm5lZCBmcm9tIHRoZSB0b0pzb24oKSBmdW5jdGlvbiBvZiBhIHRyYW5zYWN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHhEYXRhIHtcbiAgaWQ/OiBzdHJpbmc7XG4gIHNlbmRlcjogc3RyaW5nO1xuICBzZW5kZXJQdWJsaWNLZXk6IHN0cmluZztcbiAgcmVjaXBpZW50OiBzdHJpbmc7XG4gIG1lbW86IG51bWJlciB8IEJpZ0ludDtcbiAgZmVlQW1vdW50OiBzdHJpbmc7XG4gIGV4cGlyYXRpb25UaW1lOiBudW1iZXIgfCBCaWdJbnQ7XG4gIHR5cGU/OiBCaXRHb1RyYW5zYWN0aW9uVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJY3BUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICBzZW5kZXI/OiBzdHJpbmc7XG4gIHR5cGU/OiBCaXRHb1RyYW5zYWN0aW9uVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrSWRlbnRpZmllciB7XG4gIGJsb2NrY2hhaW46IHN0cmluZztcbiAgbmV0d29yazogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhd1RyYW5zYWN0aW9uIHtcbiAgc2VyaWFsaXplZFR4SGV4OiBzdHJpbmc7XG4gIHB1YmxpY0tleTogc3RyaW5nO1xufVxuIl19
|
|
@@ -4,6 +4,6 @@ export declare class SignedTransactionBuilder {
|
|
|
4
4
|
protected _signaturePayload: Signatures[];
|
|
5
5
|
constructor(unsigned_transaction: string, signatures: Signatures[]);
|
|
6
6
|
getSignTransaction(): string;
|
|
7
|
-
getEnvelopes(unsignedTransaction: CborUnsignedTransaction, signatureMap: Map<string, Signatures>): [
|
|
7
|
+
getEnvelopes(unsignedTransaction: CborUnsignedTransaction, signatureMap: Map<string, Signatures>): [RequestEnvelope[]][];
|
|
8
8
|
}
|
|
9
9
|
//# sourceMappingURL=signedTransactionBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signedTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/signedTransactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EAEvB,UAAU,
|
|
1
|
+
{"version":3,"file":"signedTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/signedTransactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EAEvB,UAAU,EAEV,eAAe,EAEhB,MAAM,SAAS,CAAC;AAIjB,qBAAa,wBAAwB;IACnC,SAAS,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACxC,SAAS,CAAC,iBAAiB,EAAE,UAAU,EAAE,CAAC;gBAE9B,oBAAoB,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE;IAKlE,kBAAkB,IAAI,MAAM;IAwB5B,YAAY,CACV,mBAAmB,EAAE,uBAAuB,EAC5C,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,GACpC,CAAC,eAAe,EAAE,CAAC,EAAE;CA8BzB"}
|
|
@@ -22,48 +22,43 @@ class SignedTransactionBuilder {
|
|
|
22
22
|
signatureMap.set(sig.signing_payload.hex_bytes, sig);
|
|
23
23
|
}
|
|
24
24
|
const unsignedTransaction = utils_1.default.cborDecode(utils_1.default.blobFromHex(combineRequest.unsigned_transaction));
|
|
25
|
-
|
|
25
|
+
// at present we expect only one request type and one signature
|
|
26
|
+
(0, assert_1.default)(combineRequest.signatures.length === 1);
|
|
26
27
|
(0, assert_1.default)(unsignedTransaction.updates.length === 1);
|
|
27
28
|
const envelopes = this.getEnvelopes(unsignedTransaction, signatureMap);
|
|
28
|
-
const
|
|
29
|
-
const
|
|
29
|
+
const requestEnvelopeArray = envelopes[0];
|
|
30
|
+
const requestEnvelopes = requestEnvelopeArray[0];
|
|
31
|
+
(0, assert_1.default)(requestEnvelopes.length === 1);
|
|
32
|
+
const requestEnvelope = requestEnvelopes[0];
|
|
33
|
+
const signedTransaction = utils_1.default.cborEncode(requestEnvelope.update);
|
|
30
34
|
return signedTransaction;
|
|
31
35
|
}
|
|
32
36
|
getEnvelopes(unsignedTransaction, signatureMap) {
|
|
33
37
|
const envelopes = [];
|
|
34
|
-
for (const [
|
|
38
|
+
for (const [, update] of unsignedTransaction.updates) {
|
|
35
39
|
const requestEnvelopes = [];
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const readState = utils_1.default.makeReadStateFromUpdate(update);
|
|
39
|
-
const transactionSignature = utils_1.default.getTransactionSignature(signatureMap, update);
|
|
40
|
-
if (!transactionSignature) {
|
|
41
|
-
throw new Error('Transaction signature is invalid');
|
|
42
|
-
}
|
|
43
|
-
const readStateSignature = utils_1.default.getReadStateSignature(signatureMap, readState);
|
|
44
|
-
if (!readStateSignature) {
|
|
45
|
-
throw new Error('read state signature is invalid');
|
|
46
|
-
}
|
|
47
|
-
const pk_der = utils_1.default.getPublicKeyInDERFormat(transactionSignature.public_key.hex_bytes);
|
|
48
|
-
const updateEnvelope = {
|
|
49
|
-
content: { request_type: iface_1.RequestType.CALL, ...update },
|
|
50
|
-
sender_pubkey: pk_der,
|
|
51
|
-
sender_sig: utils_1.default.blobFromHex(transactionSignature.hex_bytes),
|
|
52
|
-
};
|
|
53
|
-
const readStateEnvelope = {
|
|
54
|
-
content: { request_type: iface_1.RequestType.READ_STATE, ...readState },
|
|
55
|
-
sender_pubkey: pk_der,
|
|
56
|
-
sender_sig: utils_1.default.blobFromHex(readStateSignature.hex_bytes),
|
|
57
|
-
};
|
|
58
|
-
requestEnvelopes.push({
|
|
59
|
-
update: updateEnvelope,
|
|
60
|
-
read_state: readStateEnvelope,
|
|
61
|
-
});
|
|
40
|
+
if (unsignedTransaction.ingress_expiries.length != 1) {
|
|
41
|
+
throw new Error('ingress expiry can have only one entry');
|
|
62
42
|
}
|
|
63
|
-
|
|
43
|
+
const ingressExpiry = unsignedTransaction.ingress_expiries[0];
|
|
44
|
+
update.ingress_expiry = ingressExpiry;
|
|
45
|
+
const transactionSignature = utils_1.default.getTransactionSignature(signatureMap, update);
|
|
46
|
+
if (!transactionSignature) {
|
|
47
|
+
throw new Error('Transaction signature is invalid');
|
|
48
|
+
}
|
|
49
|
+
const pk_der = utils_1.default.getPublicKeyInDERFormat(transactionSignature.public_key.hex_bytes);
|
|
50
|
+
const updateEnvelope = {
|
|
51
|
+
content: { request_type: iface_1.RequestType.CALL, ...update },
|
|
52
|
+
sender_pubkey: pk_der,
|
|
53
|
+
sender_sig: utils_1.default.blobFromHex(transactionSignature.hex_bytes),
|
|
54
|
+
};
|
|
55
|
+
requestEnvelopes.push({
|
|
56
|
+
update: updateEnvelope,
|
|
57
|
+
});
|
|
58
|
+
envelopes.push([requestEnvelopes]);
|
|
64
59
|
}
|
|
65
60
|
return envelopes;
|
|
66
61
|
}
|
|
67
62
|
}
|
|
68
63
|
exports.SignedTransactionBuilder = SignedTransactionBuilder;
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zaWduZWRUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbUNBT2lCO0FBQ2pCLG9EQUE0QjtBQUM1QixvREFBNEI7QUFFNUIsTUFBYSx3QkFBd0I7SUFJbkMsWUFBWSxvQkFBNEIsRUFBRSxVQUF3QjtRQUNoRSxJQUFJLENBQUMscUJBQXFCLEdBQUcsb0JBQW9CLENBQUM7UUFDbEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFVBQVUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE1BQU0sY0FBYyxHQUFHO1lBQ3JCLFVBQVUsRUFBRSxJQUFJLENBQUMsaUJBQWlCO1lBQ2xDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxxQkFBcUI7U0FDakQsQ0FBQztRQUNGLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDL0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDNUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBQ0QsTUFBTSxtQkFBbUIsR0FBRyxlQUFLLENBQUMsVUFBVSxDQUMxQyxlQUFLLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUM1QixDQUFDO1FBQzdCLCtEQUErRDtRQUMvRCxJQUFBLGdCQUFNLEVBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDL0MsSUFBQSxnQkFBTSxFQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDakQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN2RSxNQUFNLG9CQUFvQixHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQXdCLENBQUM7UUFDakUsTUFBTSxnQkFBZ0IsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLENBQXNCLENBQUM7UUFDdEUsSUFBQSxnQkFBTSxFQUFDLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN0QyxNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQW9CLENBQUM7UUFDL0QsTUFBTSxpQkFBaUIsR0FBRyxlQUFLLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxNQUF3QixDQUFDLENBQUM7UUFDckYsT0FBTyxpQkFBaUIsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWSxDQUNWLG1CQUE0QyxFQUM1QyxZQUFxQztRQUVyQyxNQUFNLFNBQVMsR0FBMEIsRUFBRSxDQUFDO1FBQzVDLEtBQUssTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksbUJBQW1CLENBQUMsT0FBb0QsRUFBRSxDQUFDO1lBQ2xHLE1BQU0sZ0JBQWdCLEdBQXNCLEVBQUUsQ0FBQztZQUMvQyxJQUFJLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDckQsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1lBQzVELENBQUM7WUFDRCxNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5RCxNQUFNLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztZQUV0QyxNQUFNLG9CQUFvQixHQUFHLGVBQUssQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDakYsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztZQUN0RCxDQUFDO1lBRUQsTUFBTSxNQUFNLEdBQUcsZUFBSyxDQUFDLHVCQUF1QixDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN4RixNQUFNLGNBQWMsR0FBbUI7Z0JBQ3JDLE9BQU8sRUFBRSxFQUFFLFlBQVksRUFBRSxtQkFBVyxDQUFDLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRTtnQkFDdEQsYUFBYSxFQUFFLE1BQU07Z0JBQ3JCLFVBQVUsRUFBRSxlQUFLLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQzthQUM5RCxDQUFDO1lBRUYsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO2dCQUNwQixNQUFNLEVBQUUsY0FBYzthQUN2QixDQUFDLENBQUM7WUFFSCxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0NBQ0Y7QUFsRUQsNERBa0VDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2JvclVuc2lnbmVkVHJhbnNhY3Rpb24sXG4gIFJlcXVlc3RUeXBlLFxuICBTaWduYXR1cmVzLFxuICBVcGRhdGVFbnZlbG9wZSxcbiAgUmVxdWVzdEVudmVsb3BlLFxuICBIdHRwQ2FuaXN0ZXJVcGRhdGUsXG59IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5leHBvcnQgY2xhc3MgU2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF91bnNpZ25lZF90cmFuc2FjdGlvbjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3NpZ25hdHVyZVBheWxvYWQ6IFNpZ25hdHVyZXNbXTtcblxuICBjb25zdHJ1Y3Rvcih1bnNpZ25lZF90cmFuc2FjdGlvbjogc3RyaW5nLCBzaWduYXR1cmVzOiBTaWduYXR1cmVzW10pIHtcbiAgICB0aGlzLl91bnNpZ25lZF90cmFuc2FjdGlvbiA9IHVuc2lnbmVkX3RyYW5zYWN0aW9uO1xuICAgIHRoaXMuX3NpZ25hdHVyZVBheWxvYWQgPSBzaWduYXR1cmVzO1xuICB9XG5cbiAgZ2V0U2lnblRyYW5zYWN0aW9uKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29tYmluZVJlcXVlc3QgPSB7XG4gICAgICBzaWduYXR1cmVzOiB0aGlzLl9zaWduYXR1cmVQYXlsb2FkLFxuICAgICAgdW5zaWduZWRfdHJhbnNhY3Rpb246IHRoaXMuX3Vuc2lnbmVkX3RyYW5zYWN0aW9uLFxuICAgIH07XG4gICAgY29uc3Qgc2lnbmF0dXJlTWFwID0gbmV3IE1hcCgpO1xuICAgIGZvciAoY29uc3Qgc2lnIG9mIGNvbWJpbmVSZXF1ZXN0LnNpZ25hdHVyZXMpIHtcbiAgICAgIHNpZ25hdHVyZU1hcC5zZXQoc2lnLnNpZ25pbmdfcGF5bG9hZC5oZXhfYnl0ZXMsIHNpZyk7XG4gICAgfVxuICAgIGNvbnN0IHVuc2lnbmVkVHJhbnNhY3Rpb24gPSB1dGlscy5jYm9yRGVjb2RlKFxuICAgICAgdXRpbHMuYmxvYkZyb21IZXgoY29tYmluZVJlcXVlc3QudW5zaWduZWRfdHJhbnNhY3Rpb24pXG4gICAgKSBhcyBDYm9yVW5zaWduZWRUcmFuc2FjdGlvbjtcbiAgICAvLyBhdCBwcmVzZW50IHdlIGV4cGVjdCBvbmx5IG9uZSByZXF1ZXN0IHR5cGUgYW5kIG9uZSBzaWduYXR1cmVcbiAgICBhc3NlcnQoY29tYmluZVJlcXVlc3Quc2lnbmF0dXJlcy5sZW5ndGggPT09IDEpO1xuICAgIGFzc2VydCh1bnNpZ25lZFRyYW5zYWN0aW9uLnVwZGF0ZXMubGVuZ3RoID09PSAxKTtcbiAgICBjb25zdCBlbnZlbG9wZXMgPSB0aGlzLmdldEVudmVsb3Blcyh1bnNpZ25lZFRyYW5zYWN0aW9uLCBzaWduYXR1cmVNYXApO1xuICAgIGNvbnN0IHJlcXVlc3RFbnZlbG9wZUFycmF5ID0gZW52ZWxvcGVzWzBdIGFzIFtSZXF1ZXN0RW52ZWxvcGVbXV07XG4gICAgY29uc3QgcmVxdWVzdEVudmVsb3BlcyA9IHJlcXVlc3RFbnZlbG9wZUFycmF5WzBdIGFzIFJlcXVlc3RFbnZlbG9wZVtdO1xuICAgIGFzc2VydChyZXF1ZXN0RW52ZWxvcGVzLmxlbmd0aCA9PT0gMSk7XG4gICAgY29uc3QgcmVxdWVzdEVudmVsb3BlID0gcmVxdWVzdEVudmVsb3Blc1swXSBhcyBSZXF1ZXN0RW52ZWxvcGU7XG4gICAgY29uc3Qgc2lnbmVkVHJhbnNhY3Rpb24gPSB1dGlscy5jYm9yRW5jb2RlKHJlcXVlc3RFbnZlbG9wZS51cGRhdGUgYXMgVXBkYXRlRW52ZWxvcGUpO1xuICAgIHJldHVybiBzaWduZWRUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIGdldEVudmVsb3BlcyhcbiAgICB1bnNpZ25lZFRyYW5zYWN0aW9uOiBDYm9yVW5zaWduZWRUcmFuc2FjdGlvbixcbiAgICBzaWduYXR1cmVNYXA6IE1hcDxzdHJpbmcsIFNpZ25hdHVyZXM+XG4gICk6IFtSZXF1ZXN0RW52ZWxvcGVbXV1bXSB7XG4gICAgY29uc3QgZW52ZWxvcGVzOiBbUmVxdWVzdEVudmVsb3BlW11dW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IFssIHVwZGF0ZV0gb2YgdW5zaWduZWRUcmFuc2FjdGlvbi51cGRhdGVzIGFzIHVua25vd24gYXMgW3N0cmluZywgSHR0cENhbmlzdGVyVXBkYXRlXVtdKSB7XG4gICAgICBjb25zdCByZXF1ZXN0RW52ZWxvcGVzOiBSZXF1ZXN0RW52ZWxvcGVbXSA9IFtdO1xuICAgICAgaWYgKHVuc2lnbmVkVHJhbnNhY3Rpb24uaW5ncmVzc19leHBpcmllcy5sZW5ndGggIT0gMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2luZ3Jlc3MgZXhwaXJ5IGNhbiBoYXZlIG9ubHkgb25lIGVudHJ5Jyk7XG4gICAgICB9XG4gICAgICBjb25zdCBpbmdyZXNzRXhwaXJ5ID0gdW5zaWduZWRUcmFuc2FjdGlvbi5pbmdyZXNzX2V4cGlyaWVzWzBdO1xuICAgICAgdXBkYXRlLmluZ3Jlc3NfZXhwaXJ5ID0gaW5ncmVzc0V4cGlyeTtcblxuICAgICAgY29uc3QgdHJhbnNhY3Rpb25TaWduYXR1cmUgPSB1dGlscy5nZXRUcmFuc2FjdGlvblNpZ25hdHVyZShzaWduYXR1cmVNYXAsIHVwZGF0ZSk7XG4gICAgICBpZiAoIXRyYW5zYWN0aW9uU2lnbmF0dXJlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVHJhbnNhY3Rpb24gc2lnbmF0dXJlIGlzIGludmFsaWQnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGtfZGVyID0gdXRpbHMuZ2V0UHVibGljS2V5SW5ERVJGb3JtYXQodHJhbnNhY3Rpb25TaWduYXR1cmUucHVibGljX2tleS5oZXhfYnl0ZXMpO1xuICAgICAgY29uc3QgdXBkYXRlRW52ZWxvcGU6IFVwZGF0ZUVudmVsb3BlID0ge1xuICAgICAgICBjb250ZW50OiB7IHJlcXVlc3RfdHlwZTogUmVxdWVzdFR5cGUuQ0FMTCwgLi4udXBkYXRlIH0sXG4gICAgICAgIHNlbmRlcl9wdWJrZXk6IHBrX2RlcixcbiAgICAgICAgc2VuZGVyX3NpZzogdXRpbHMuYmxvYkZyb21IZXgodHJhbnNhY3Rpb25TaWduYXR1cmUuaGV4X2J5dGVzKSxcbiAgICAgIH07XG5cbiAgICAgIHJlcXVlc3RFbnZlbG9wZXMucHVzaCh7XG4gICAgICAgIHVwZGF0ZTogdXBkYXRlRW52ZWxvcGUsXG4gICAgICB9KTtcblxuICAgICAgZW52ZWxvcGVzLnB1c2goW3JlcXVlc3RFbnZlbG9wZXNdKTtcbiAgICB9XG4gICAgcmV0dXJuIGVudmVsb3BlcztcbiAgfVxufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,eAAe,EAKhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,YAAY,EAEZ,UAAU,EACV,MAAM,EACN,yBAAyB,
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,eAAe,EAKhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,YAAY,EAEZ,UAAU,EACV,MAAM,EACN,yBAAyB,EAGzB,iBAAiB,EAOlB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,qBAAa,WAAY,SAAQ,eAAe;IAC9C,SAAS,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;IAClD,SAAS,CAAC,eAAe,EAAE,cAAc,CAAC;IAC1C,SAAS,CAAC,aAAa,EAAE,YAAY,CAAC;IACtC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,iBAAiB,EAAE,UAAU,EAAE,CAAC;IAC1C,SAAS,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACzD,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC;gBAEZ,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK;IAK3D,IAAI,kBAAkB,IAAI,kBAAkB,CAE3C;IAED,IAAI,kBAAkB,CAAC,kBAAkB,EAAE,kBAAkB,EAE5D;IAED,IAAI,cAAc,IAAI,cAAc,CAEnC;IAED,IAAI,cAAc,CAAC,cAAc,EAAE,cAAc,EAEhD;IAED,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED,IAAI,gBAAgB,IAAI,UAAU,EAAE,CAEnC;IAED,IAAI,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAEtC;IAED,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,IAAI,YAAY,CAAC,YAAY,EAAE,YAAY,EAE1C;IAED,IAAI,YAAY,IAAI,YAAY,CAE/B;IAED,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,EAE5C;IAED,IAAI,gBAAgB,IAAI,MAAM,GAAG,MAAM,GAAG,SAAS,CAElD;IAEK,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B/D,YAAY,CAAC,iBAAiB,EAAE,UAAU,EAAE,GAAG,IAAI;IAUnD,kBAAkB;IAClB,MAAM,IAAI,MAAM;IAqBhB,kBAAkB;IAClB,kBAAkB,IAAI,yBAAyB;IAwB/C;;;;;OAKG;IACH,0BAA0B,CAAC,iBAAiB,EAAE,yBAAyB,GAAG,yBAAyB;IAcnG,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAO3B,SAAS,IAAI,MAAM;IAIb,wBAAwB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;YASpE,8BAA8B;IA+DtC,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAMhF,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;CAG/B"}
|
|
@@ -150,14 +150,7 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
150
150
|
return this.serialize();
|
|
151
151
|
}
|
|
152
152
|
serialize() {
|
|
153
|
-
|
|
154
|
-
signed_transaction: this._signedTransaction,
|
|
155
|
-
network_identifier: {
|
|
156
|
-
blockchain: this._coinConfig.fullName,
|
|
157
|
-
network: iface_1.Network.ID,
|
|
158
|
-
},
|
|
159
|
-
};
|
|
160
|
-
return JSON.stringify(transaction);
|
|
153
|
+
return this._signedTransaction;
|
|
161
154
|
}
|
|
162
155
|
async parseUnsignedTransaction(rawTransaction) {
|
|
163
156
|
const unsignedTransaction = this._utils.cborDecode(this._utils.blobFromHex(rawTransaction));
|
|
@@ -221,10 +214,7 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
221
214
|
}
|
|
222
215
|
async parseSignedTransaction(rawTransaction) {
|
|
223
216
|
const signedTransaction = this._utils.cborDecode(this._utils.blobFromHex(rawTransaction));
|
|
224
|
-
const
|
|
225
|
-
const envelopes = signedTransactionTyped.requests[0][1];
|
|
226
|
-
const updates = envelopes.map((envelope) => envelope.update);
|
|
227
|
-
const httpCanisterUpdate = updates[0].content;
|
|
217
|
+
const httpCanisterUpdate = signedTransaction.content;
|
|
228
218
|
return await this.getParsedTransactionFromUpdate(httpCanisterUpdate, true);
|
|
229
219
|
}
|
|
230
220
|
/** @inheritdoc */
|
|
@@ -233,4 +223,4 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
233
223
|
}
|
|
234
224
|
}
|
|
235
225
|
exports.Transaction = Transaction;
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDhDQU95QjtBQUV6QixtQ0FrQmlCO0FBR2pCLE1BQWEsV0FBWSxTQUFRLDBCQUFlO0lBUzlDLFlBQVksV0FBaUMsRUFBRSxLQUFZO1FBQ3pELEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksa0JBQWtCLENBQUMsa0JBQXNDO1FBQzNELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxjQUFjLENBQUMsY0FBOEI7UUFDL0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQztJQUNqRCxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksaUJBQWlCLENBQUMsU0FBaUI7UUFDckMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksWUFBWSxDQUFDLFlBQTBCO1FBQ3pDLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO0lBQ3BDLENBQUM7SUFF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QUEvUUQsa0NBK1FDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvblJlY2lwaWVudCxcbiAgVHJhbnNhY3Rpb25UeXBlLFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgVHJhbnNhY3Rpb25UeXBlIGFzIEJpdEdvVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7XG4gIEljcFRyYW5zYWN0aW9uLFxuICBJY3BUcmFuc2FjdGlvbkRhdGEsXG4gIFBheWxvYWRzRGF0YSxcbiAgT3BlcmF0aW9uVHlwZSxcbiAgU2lnbmF0dXJlcyxcbiAgVHhEYXRhLFxuICBJY3BUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLFxuICBTaWduZWRUcmFuc2FjdGlvblJlcXVlc3QsXG4gIE5ldHdvcmssXG4gIENib3JVbnNpZ25lZFRyYW5zYWN0aW9uLFxuICBIdHRwQ2FuaXN0ZXJVcGRhdGUsXG4gIFBhcnNlZFRyYW5zYWN0aW9uLFxuICBJY3BPcGVyYXRpb24sXG4gIEljcEFjY291bnQsXG4gIE1BWF9JTkdSRVNTX1RUTCxcbiAgUEVSTUlUVEVEX0RSSUZULFxuICBSYXdUcmFuc2FjdGlvbixcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBwcm90ZWN0ZWQgX2ljcFRyYW5zYWN0aW9uRGF0YTogSWNwVHJhbnNhY3Rpb25EYXRhO1xuICBwcm90ZWN0ZWQgX2ljcFRyYW5zYWN0aW9uOiBJY3BUcmFuc2FjdGlvbjtcbiAgcHJvdGVjdGVkIF9wYXlsb2Fkc0RhdGE6IFBheWxvYWRzRGF0YTtcbiAgcHJvdGVjdGVkIF9zaWduZWRUcmFuc2FjdGlvbjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3NpZ25hdHVyZVBheWxvYWQ6IFNpZ25hdHVyZXNbXTtcbiAgcHJvdGVjdGVkIF9jcmVhdGVkVGltZXN0YW1wOiBudW1iZXIgfCBiaWdpbnQgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBfdXRpbHM6IFV0aWxzO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPiwgdXRpbHM6IFV0aWxzKSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3V0aWxzID0gdXRpbHM7XG4gIH1cblxuICBnZXQgaWNwVHJhbnNhY3Rpb25EYXRhKCk6IEljcFRyYW5zYWN0aW9uRGF0YSB7XG4gICAgcmV0dXJuIHRoaXMuX2ljcFRyYW5zYWN0aW9uRGF0YTtcbiAgfVxuXG4gIHNldCBpY3BUcmFuc2FjdGlvbkRhdGEoaWNwVHJhbnNhY3Rpb25EYXRhOiBJY3BUcmFuc2FjdGlvbkRhdGEpIHtcbiAgICB0aGlzLl9pY3BUcmFuc2FjdGlvbkRhdGEgPSBpY3BUcmFuc2FjdGlvbkRhdGE7XG4gIH1cblxuICBnZXQgaWNwVHJhbnNhY3Rpb24oKTogSWNwVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl9pY3BUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIHNldCBpY3BUcmFuc2FjdGlvbihpY3BUcmFuc2FjdGlvbjogSWNwVHJhbnNhY3Rpb24pIHtcbiAgICB0aGlzLl9pY3BUcmFuc2FjdGlvbiA9IGljcFRyYW5zYWN0aW9uO1xuICB9XG5cbiAgZ2V0IHVuc2lnbmVkVHJhbnNhY3Rpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcGF5bG9hZHNEYXRhLnVuc2lnbmVkX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgZ2V0IHNpZ25hdHVyZVBheWxvYWQoKTogU2lnbmF0dXJlc1tdIHtcbiAgICByZXR1cm4gdGhpcy5fc2lnbmF0dXJlUGF5bG9hZDtcbiAgfVxuXG4gIHNldCBzaWduZWRUcmFuc2FjdGlvbihzaWduYXR1cmU6IHN0cmluZykge1xuICAgIHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uID0gc2lnbmF0dXJlO1xuICB9XG5cbiAgZ2V0IHNpZ25lZFRyYW5zYWN0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uO1xuICB9XG5cbiAgc2V0IHBheWxvYWRzRGF0YShwYXlsb2Fkc0RhdGE6IFBheWxvYWRzRGF0YSkge1xuICAgIHRoaXMuX3BheWxvYWRzRGF0YSA9IHBheWxvYWRzRGF0YTtcbiAgfVxuXG4gIGdldCBwYXlsb2Fkc0RhdGEoKTogUGF5bG9hZHNEYXRhIHtcbiAgICByZXR1cm4gdGhpcy5fcGF5bG9hZHNEYXRhO1xuICB9XG5cbiAgc2V0IGNyZWF0ZWRUaW1lc3RhbXAoY3JlYXRlZFRpbWVzdGFtcDogbnVtYmVyKSB7XG4gICAgdGhpcy5fY3JlYXRlZFRpbWVzdGFtcCA9IGNyZWF0ZWRUaW1lc3RhbXA7XG4gIH1cblxuICBnZXQgY3JlYXRlZFRpbWVzdGFtcCgpOiBudW1iZXIgfCBiaWdpbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVkVGltZXN0YW1wO1xuICB9XG5cbiAgYXN5bmMgZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QganNvblJhd1RyYW5zYWN0aW9uOiBSYXdUcmFuc2FjdGlvbiA9IEpTT04ucGFyc2UocmF3VHJhbnNhY3Rpb24pO1xuICAgICAgY29uc3QgcGFyc2VkVHggPSBhd2FpdCB0aGlzLnBhcnNlVW5zaWduZWRUcmFuc2FjdGlvbihqc29uUmF3VHJhbnNhY3Rpb24uc2VyaWFsaXplZFR4SGV4KTtcbiAgICAgIGNvbnN0IHNlbmRlclB1YmxpY0tleUhleCA9IGpzb25SYXdUcmFuc2FjdGlvbi5wdWJsaWNLZXk7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvblR5cGUgPSBwYXJzZWRUeC5vcGVyYXRpb25zWzBdLnR5cGU7XG4gICAgICBzd2l0Y2ggKHRyYW5zYWN0aW9uVHlwZSkge1xuICAgICAgICBjYXNlIE9wZXJhdGlvblR5cGUuVFJBTlNBQ1RJT046XG4gICAgICAgICAgdGhpcy5faWNwVHJhbnNhY3Rpb25EYXRhID0ge1xuICAgICAgICAgICAgc2VuZGVyQWRkcmVzczogcGFyc2VkVHgub3BlcmF0aW9uc1swXS5hY2NvdW50LmFkZHJlc3MsXG4gICAgICAgICAgICByZWNlaXZlckFkZHJlc3M6IHBhcnNlZFR4Lm9wZXJhdGlvbnNbMV0uYWNjb3VudC5hZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiBwYXJzZWRUeC5vcGVyYXRpb25zWzFdLmFtb3VudC52YWx1ZSxcbiAgICAgICAgICAgIGZlZTogcGFyc2VkVHgub3BlcmF0aW9uc1syXS5hbW91bnQudmFsdWUsXG4gICAgICAgICAgICBzZW5kZXJQdWJsaWNLZXlIZXg6IHNlbmRlclB1YmxpY0tleUhleCxcbiAgICAgICAgICAgIG1lbW86IHBhcnNlZFR4Lm1ldGFkYXRhLm1lbW8sXG4gICAgICAgICAgICB0cmFuc2FjdGlvblR5cGU6IHRyYW5zYWN0aW9uVHlwZSxcbiAgICAgICAgICAgIGV4cGlyeVRpbWU6IE51bWJlcihwYXJzZWRUeC5tZXRhZGF0YS5jcmVhdGVkX2F0X3RpbWUgKyAoTUFYX0lOR1JFU1NfVFRMIC0gUEVSTUlUVEVEX0RSSUZUKSksXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLl91dGlscy52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHRoaXMuX2ljcFRyYW5zYWN0aW9uRGF0YSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uIHR5cGUnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgfVxuXG4gIGFkZFNpZ25hdHVyZShzaWduYXR1cmVQYXlsb2FkczogU2lnbmF0dXJlc1tdKTogdm9pZCB7XG4gICAgaWYgKCFzaWduYXR1cmVQYXlsb2Fkcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzaWduYXR1cmVzIG5vdCBwcm92aWRlZCcpO1xuICAgIH1cbiAgICBpZiAoc2lnbmF0dXJlUGF5bG9hZHMubGVuZ3RoICE9PSB0aGlzLl9wYXlsb2Fkc0RhdGEucGF5bG9hZHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3NpZ25hdHVyZXMgbGVuZ3RoIGlzIG5vdCBtYXRjaGluZycpO1xuICAgIH1cbiAgICB0aGlzLl9zaWduYXR1cmVQYXlsb2FkID0gc2lnbmF0dXJlUGF5bG9hZHM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgaWYgKCF0aGlzLl9pY3BUcmFuc2FjdGlvbkRhdGEpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgc3dpdGNoICh0aGlzLl9pY3BUcmFuc2FjdGlvbkRhdGEudHJhbnNhY3Rpb25UeXBlKSB7XG4gICAgICBjYXNlIE9wZXJhdGlvblR5cGUuVFJBTlNBQ1RJT046XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaWQ6IHRoaXMuX2lkLFxuICAgICAgICAgIHNlbmRlcjogdGhpcy5faWNwVHJhbnNhY3Rpb25EYXRhLnNlbmRlckFkZHJlc3MsXG4gICAgICAgICAgc2VuZGVyUHVibGljS2V5OiB0aGlzLl9pY3BUcmFuc2FjdGlvbkRhdGEuc2VuZGVyUHVibGljS2V5SGV4LFxuICAgICAgICAgIHJlY2lwaWVudDogdGhpcy5faWNwVHJhbnNhY3Rpb25EYXRhLnJlY2VpdmVyQWRkcmVzcyxcbiAgICAgICAgICBtZW1vOiB0aGlzLl9pY3BUcmFuc2FjdGlvbkRhdGEubWVtbyxcbiAgICAgICAgICBmZWVBbW91bnQ6IHRoaXMuX2ljcFRyYW5zYWN0aW9uRGF0YS5mZWUsXG4gICAgICAgICAgZXhwaXJhdGlvblRpbWU6IHRoaXMuX2ljcFRyYW5zYWN0aW9uRGF0YS5leHBpcnlUaW1lLFxuICAgICAgICAgIHR5cGU6IEJpdEdvVHJhbnNhY3Rpb25UeXBlLlNlbmQsXG4gICAgICAgIH07XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHRyYW5zYWN0aW9uIHR5cGUnKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZXhwbGFpblRyYW5zYWN0aW9uKCk6IEljcFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMudG9Kc29uKCk7XG4gICAgY29uc3QgZGlzcGxheU9yZGVyID0gWydpZCcsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlQW1vdW50JywgJ291dHB1dHMnLCAnY2hhbmdlT3V0cHV0cycsICdmZWUnXTtcbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdID0gW107XG5cbiAgICBjb25zdCBleHBsYW5hdGlvblJlc3VsdCA9IHtcbiAgICAgIGRpc3BsYXlPcmRlcixcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgb3V0cHV0cyxcbiAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgZmVlOiB7IGZlZTogJzAnIH0sXG4gICAgICB0eXBlOiByZXN1bHQudHlwZSxcbiAgICAgIGNoYW5nZU91dHB1dHM6IFtdLCAvLyBhY2NvdW50IGJhc2VkIGRvZXMgbm90IHVzZSBjaGFuZ2Ugb3V0cHV0c1xuICAgICAgY2hhbmdlQW1vdW50OiAnMCcsIC8vIGFjY291bnQgYmFzZWQgZG9lcyBub3QgbWFrZSBjaGFuZ2VcbiAgICB9O1xuXG4gICAgc3dpdGNoIChleHBsYW5hdGlvblJlc3VsdC50eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgICByZXR1cm4gdGhpcy5leHBsYWluVHJhbnNmZXJUcmFuc2FjdGlvbihleHBsYW5hdGlvblJlc3VsdCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIHR5cGUgbm90IHN1cHBvcnRlZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBsYWlucyBhIHRyYW5zZmVyIHRyYW5zYWN0aW9uIGJ5IHByb3ZpZGluZyBkZXRhaWxzIGFib3V0IHRoZSByZWNpcGllbnRzIGFuZCB0aGUgdG90YWwgb3V0cHV0IGFtb3VudC5cbiAgICpcbiAgICogQHBhcmFtIHtJY3BUcmFuc2FjdGlvbkV4cGxhbmF0aW9ufSBleHBsYW5hdGlvblJlc3VsdCAtIFRoZSBpbml0aWFsIGV4cGxhbmF0aW9uIHJlc3VsdCB0byBiZSBleHRlbmRlZC5cbiAgICogQHJldHVybnMge0ljcFRyYW5zYWN0aW9uRXhwbGFuYXRpb259IFRoZSBleHRlbmRlZCBleHBsYW5hdGlvbiByZXN1bHQgaW5jbHVkaW5nIHRoZSBvdXRwdXQgYW1vdW50IGFuZCByZWNpcGllbnRzLlxuICAgKi9cbiAgZXhwbGFpblRyYW5zZmVyVHJhbnNhY3Rpb24oZXhwbGFuYXRpb25SZXN1bHQ6IEljcFRyYW5zYWN0aW9uRXhwbGFuYXRpb24pOiBJY3BUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICBleHBsYW5hdGlvblJlc3VsdC5mZWUgPSB7IGZlZTogdGhpcy5pY3BUcmFuc2FjdGlvbkRhdGEuZmVlIH07XG4gICAgY29uc3QgcmVjaXBpZW50cyA9IHRoaXMuX3V0aWxzLmdldFJlY2lwaWVudHModGhpcy5pY3BUcmFuc2FjdGlvbkRhdGEpO1xuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10gPSBbcmVjaXBpZW50c107XG4gICAgY29uc3Qgb3V0cHV0QW1vdW50Qk4gPSByZWNpcGllbnRzLmFtb3VudDtcbiAgICBjb25zdCBvdXRwdXRBbW91bnQgPSBvdXRwdXRBbW91bnRCTi50b1N0cmluZygpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmV4cGxhbmF0aW9uUmVzdWx0LFxuICAgICAgb3V0cHV0QW1vdW50LFxuICAgICAgb3V0cHV0cyxcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl9zaWduZWRUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIHNlcmlhbGl6ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uOiBTaWduZWRUcmFuc2FjdGlvblJlcXVlc3QgPSB7XG4gICAgICBzaWduZWRfdHJhbnNhY3Rpb246IHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uLFxuICAgICAgbmV0d29ya19pZGVudGlmaWVyOiB7XG4gICAgICAgIGJsb2NrY2hhaW46IHRoaXMuX2NvaW5Db25maWcuZnVsbE5hbWUsXG4gICAgICAgIG5ldHdvcms6IE5ldHdvcmsuSUQsXG4gICAgICB9LFxuICAgIH07XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIGFzeW5jIHBhcnNlVW5zaWduZWRUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IHVuc2lnbmVkVHJhbnNhY3Rpb24gPSB0aGlzLl91dGlscy5jYm9yRGVjb2RlKFxuICAgICAgdGhpcy5fdXRpbHMuYmxvYkZyb21IZXgocmF3VHJhbnNhY3Rpb24pXG4gICAgKSBhcyBDYm9yVW5zaWduZWRUcmFuc2FjdGlvbjtcbiAgICBjb25zdCB1cGRhdGUgPSB1bnNpZ25lZFRyYW5zYWN0aW9uLnVwZGF0ZXNbMF07XG4gICAgY29uc3QgaHR0cENhbmlzdGVyVXBkYXRlID0gdXBkYXRlWzFdIGFzIEh0dHBDYW5pc3RlclVwZGF0ZTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRQYXJzZWRUcmFuc2FjdGlvbkZyb21VcGRhdGUoaHR0cENhbmlzdGVyVXBkYXRlLCBmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFBhcnNlZFRyYW5zYWN0aW9uRnJvbVVwZGF0ZShcbiAgICBodHRwQ2FuaXN0ZXJVcGRhdGU6IEh0dHBDYW5pc3RlclVwZGF0ZSxcbiAgICBpc1NpZ25lZDogYm9vbGVhblxuICApOiBQcm9taXNlPFBhcnNlZFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3Qgc2VuZGVyUHJpbmNpcGFsID0gdGhpcy5fdXRpbHMuY29udmVydFNlbmRlckJsb2JUb1ByaW5jaXBhbChodHRwQ2FuaXN0ZXJVcGRhdGUuc2VuZGVyKTtcbiAgICBjb25zdCBBQ0NPVU5UX0lEX1BSRUZJWCA9IHRoaXMuX3V0aWxzLmdldEFjY291bnRJZFByZWZpeCgpO1xuICAgIGNvbnN0IHN1YkFjY291bnQgPSBuZXcgVWludDhBcnJheSgzMik7XG4gICAgY29uc3Qgc2VuZGVyQWNjb3VudCA9IHRoaXMuX3V0aWxzLmdldEFjY291bnRJZEZyb21QcmluY2lwYWxCeXRlcyhcbiAgICAgIEFDQ09VTlRfSURfUFJFRklYLFxuICAgICAgQnVmZmVyLmZyb20oc2VuZGVyUHJpbmNpcGFsLmJ1ZmZlciksXG4gICAgICBzdWJBY2NvdW50XG4gICAgKTtcbiAgICBjb25zdCBhcmdzID0gYXdhaXQgdGhpcy5fdXRpbHMuZnJvbUFyZ3MoaHR0cENhbmlzdGVyVXBkYXRlLmFyZyk7XG4gICAgY29uc3Qgc2VuZGVyT3BlcmF0aW9uOiBJY3BPcGVyYXRpb24gPSB7XG4gICAgICB0eXBlOiBPcGVyYXRpb25UeXBlLlRSQU5TQUNUSU9OLFxuICAgICAgYWNjb3VudDogeyBhZGRyZXNzOiBzZW5kZXJBY2NvdW50IH0sXG4gICAgICBhbW91bnQ6IHtcbiAgICAgICAgdmFsdWU6IGAtJHthcmdzLnBheW1lbnQucmVjZWl2ZXJHZXRzLmU4cy50b1N0cmluZygpfWAsXG4gICAgICAgIGN1cnJlbmN5OiB7XG4gICAgICAgICAgc3ltYm9sOiB0aGlzLl9jb2luQ29uZmlnLmZhbWlseSxcbiAgICAgICAgICBkZWNpbWFsczogdGhpcy5fY29pbkNvbmZpZy5kZWNpbWFsUGxhY2VzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICAgIGNvbnN0IHJlY2VpdmVyT3BlcmF0aW9uOiBJY3BPcGVyYXRpb24gPSB7XG4gICAgICB0eXBlOiBPcGVyYXRpb25UeXBlLlRSQU5TQUNUSU9OLFxuICAgICAgYWNjb3VudDogeyBhZGRyZXNzOiBhcmdzLnRvLmhhc2gudG9TdHJpbmcoJ2hleCcpIH0sXG4gICAgICBhbW91bnQ6IHtcbiAgICAgICAgdmFsdWU6IGFyZ3MucGF5bWVudC5yZWNlaXZlckdldHMuZThzLnRvU3RyaW5nKCksXG4gICAgICAgIGN1cnJlbmN5OiB7XG4gICAgICAgICAgc3ltYm9sOiB0aGlzLl9jb2luQ29uZmlnLmZhbWlseSxcbiAgICAgICAgICBkZWNpbWFsczogdGhpcy5fY29pbkNvbmZpZy5kZWNpbWFsUGxhY2VzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgZmVlT3BlcmF0aW9uOiBJY3BPcGVyYXRpb24gPSB7XG4gICAgICB0eXBlOiBPcGVyYXRpb25UeXBlLkZFRSxcbiAgICAgIGFjY291bnQ6IHsgYWRkcmVzczogc2VuZGVyQWNjb3VudCB9LFxuICAgICAgYW1vdW50OiB7XG4gICAgICAgIHZhbHVlOiBgLSR7YXJncy5tYXhGZWUuZThzLnRvU3RyaW5nKCl9YCxcbiAgICAgICAgY3VycmVuY3k6IHtcbiAgICAgICAgICBzeW1ib2w6IHRoaXMuX2NvaW5Db25maWcuZmFtaWx5LFxuICAgICAgICAgIGRlY2ltYWxzOiB0aGlzLl9jb2luQ29uZmlnLmRlY2ltYWxQbGFjZXMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gICAgY29uc3QgYWNjb3VudElkZW50aWZpZXJTaWduZXJzOiBJY3BBY2NvdW50W10gPSBbXTtcbiAgICBpZiAoaXNTaWduZWQpIHtcbiAgICAgIGFjY291bnRJZGVudGlmaWVyU2lnbmVycy5wdXNoKHsgYWRkcmVzczogc2VuZGVyQWNjb3VudCB9KTtcbiAgICB9XG4gICAgY29uc3QgcGFyc2VkVHhuOiBQYXJzZWRUcmFuc2FjdGlvbiA9IHtcbiAgICAgIG9wZXJhdGlvbnM6IFtzZW5kZXJPcGVyYXRpb24sIHJlY2VpdmVyT3BlcmF0aW9uLCBmZWVPcGVyYXRpb25dLFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgY3JlYXRlZF9hdF90aW1lOiBhcmdzLmNyZWF0ZWRBdFRpbWUudGltZXN0YW1wTmFub3MsXG4gICAgICAgIG1lbW86IE51bWJlcihhcmdzLm1lbW8ubWVtbyksXG4gICAgICB9LFxuICAgICAgYWNjb3VudF9pZGVudGlmaWVyX3NpZ25lcnM6IGFjY291bnRJZGVudGlmaWVyU2lnbmVycyxcbiAgICB9O1xuICAgIHRoaXMuY3JlYXRlZFRpbWVzdGFtcCA9IGFyZ3MuY3JlYXRlZEF0VGltZS50aW1lc3RhbXBOYW5vcztcbiAgICByZXR1cm4gcGFyc2VkVHhuO1xuICB9XG5cbiAgYXN5bmMgcGFyc2VTaWduZWRUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IHNpZ25lZFRyYW5zYWN0aW9uID0gdGhpcy5fdXRpbHMuY2JvckRlY29kZSh0aGlzLl91dGlscy5ibG9iRnJvbUhleChyYXdUcmFuc2FjdGlvbikpO1xuICAgIGNvbnN0IHNpZ25lZFRyYW5zYWN0aW9uVHlwZWQgPSBzaWduZWRUcmFuc2FjdGlvbiBhcyB7IHJlcXVlc3RzOiBhbnlbXSB9O1xuICAgIGNvbnN0IGVudmVsb3BlcyA9IHNpZ25lZFRyYW5zYWN0aW9uVHlwZWQucmVxdWVzdHNbMF1bMV07XG4gICAgY29uc3QgdXBkYXRlcyA9IGVudmVsb3Blcy5tYXAoKGVudmVsb3BlKSA9PiBlbnZlbG9wZS51cGRhdGUpO1xuICAgIGNvbnN0IGh0dHBDYW5pc3RlclVwZGF0ZSA9IHVwZGF0ZXNbMF0uY29udGVudCBhcyBIdHRwQ2FuaXN0ZXJVcGRhdGU7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0UGFyc2VkVHJhbnNhY3Rpb25Gcm9tVXBkYXRlKGh0dHBDYW5pc3RlclVwZGF0ZSwgdHJ1ZSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgY2FuU2lnbihrZXk6IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19
|
|
226
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDhDQU95QjtBQUV6QixtQ0FpQmlCO0FBR2pCLE1BQWEsV0FBWSxTQUFRLDBCQUFlO0lBUzlDLFlBQVksV0FBaUMsRUFBRSxLQUFZO1FBQ3pELEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksa0JBQWtCLENBQUMsa0JBQXNDO1FBQzNELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxjQUFjLENBQUMsY0FBOEI7UUFDL0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQztJQUNqRCxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksaUJBQWlCLENBQUMsU0FBaUI7UUFDckMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksWUFBWSxDQUFDLFlBQTBCO1FBQ3pDLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO0lBQ3BDLENBQUM7SUFF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Q2xELElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDN0I7WUFDRCwwQkFBMEIsRUFBRSx3QkFBd0I7U0FDckQsQ0FBQztRQUNGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQztRQUMxRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLHNCQUFzQixDQUFDLGNBQXNCO1FBQ2pELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUMxRixNQUFNLGtCQUFrQixHQUFJLGlCQUFvQyxDQUFDLE9BQTZCLENBQUM7UUFDL0YsT0FBTyxNQUFNLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLE9BQU8sQ0FBQyxHQUFZO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGO0FBclFELGtDQXFRQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VLZXksXG4gIEJhc2VUcmFuc2FjdGlvbixcbiAgVHJhbnNhY3Rpb25SZWNpcGllbnQsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFRyYW5zYWN0aW9uVHlwZSBhcyBCaXRHb1RyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQge1xuICBJY3BUcmFuc2FjdGlvbixcbiAgSWNwVHJhbnNhY3Rpb25EYXRhLFxuICBQYXlsb2Fkc0RhdGEsXG4gIE9wZXJhdGlvblR5cGUsXG4gIFNpZ25hdHVyZXMsXG4gIFR4RGF0YSxcbiAgSWNwVHJhbnNhY3Rpb25FeHBsYW5hdGlvbixcbiAgQ2JvclVuc2lnbmVkVHJhbnNhY3Rpb24sXG4gIEh0dHBDYW5pc3RlclVwZGF0ZSxcbiAgUGFyc2VkVHJhbnNhY3Rpb24sXG4gIEljcE9wZXJhdGlvbixcbiAgVXBkYXRlRW52ZWxvcGUsXG4gIEljcEFjY291bnQsXG4gIE1BWF9JTkdSRVNTX1RUTCxcbiAgUEVSTUlUVEVEX0RSSUZULFxuICBSYXdUcmFuc2FjdGlvbixcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBwcm90ZWN0ZWQgX2ljcFRyYW5zYWN0aW9uRGF0YTogSWNwVHJhbnNhY3Rpb25EYXRhO1xuICBwcm90ZWN0ZWQgX2ljcFRyYW5zYWN0aW9uOiBJY3BUcmFuc2FjdGlvbjtcbiAgcHJvdGVjdGVkIF9wYXlsb2Fkc0RhdGE6IFBheWxvYWRzRGF0YTtcbiAgcHJvdGVjdGVkIF9zaWduZWRUcmFuc2FjdGlvbjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3NpZ25hdHVyZVBheWxvYWQ6IFNpZ25hdHVyZXNbXTtcbiAgcHJvdGVjdGVkIF9jcmVhdGVkVGltZXN0YW1wOiBudW1iZXIgfCBiaWdpbnQgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBfdXRpbHM6IFV0aWxzO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPiwgdXRpbHM6IFV0aWxzKSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3V0aWxzID0gdXRpbHM7XG4gIH1cblxuICBnZXQgaWNwVHJhbnNhY3Rpb25EYXRhKCk6IEljcFRyYW5zYWN0aW9uRGF0YSB7XG4gICAgcmV0dXJuIHRoaXMuX2ljcFRyYW5zYWN0aW9uRGF0YTtcbiAgfVxuXG4gIHNldCBpY3BUcmFuc2FjdGlvbkRhdGEoaWNwVHJhbnNhY3Rpb25EYXRhOiBJY3BUcmFuc2FjdGlvbkRhdGEpIHtcbiAgICB0aGlzLl9pY3BUcmFuc2FjdGlvbkRhdGEgPSBpY3BUcmFuc2FjdGlvbkRhdGE7XG4gIH1cblxuICBnZXQgaWNwVHJhbnNhY3Rpb24oKTogSWNwVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl9pY3BUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIHNldCBpY3BUcmFuc2FjdGlvbihpY3BUcmFuc2FjdGlvbjogSWNwVHJhbnNhY3Rpb24pIHtcbiAgICB0aGlzLl9pY3BUcmFuc2FjdGlvbiA9IGljcFRyYW5zYWN0aW9uO1xuICB9XG5cbiAgZ2V0IHVuc2lnbmVkVHJhbnNhY3Rpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcGF5bG9hZHNEYXRhLnVuc2lnbmVkX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgZ2V0IHNpZ25hdHVyZVBheWxvYWQoKTogU2lnbmF0dXJlc1tdIHtcbiAgICByZXR1cm4gdGhpcy5fc2lnbmF0dXJlUGF5bG9hZDtcbiAgfVxuXG4gIHNldCBzaWduZWRUcmFuc2FjdGlvbihzaWduYXR1cmU6IHN0cmluZykge1xuICAgIHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uID0gc2lnbmF0dXJlO1xuICB9XG5cbiAgZ2V0IHNpZ25lZFRyYW5zYWN0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uO1xuICB9XG5cbiAgc2V0IHBheWxvYWRzRGF0YShwYXlsb2Fkc0RhdGE6IFBheWxvYWRzRGF0YSkge1xuICAgIHRoaXMuX3BheWxvYWRzRGF0YSA9IHBheWxvYWRzRGF0YTtcbiAgfVxuXG4gIGdldCBwYXlsb2Fkc0RhdGEoKTogUGF5bG9hZHNEYXRhIHtcbiAgICByZXR1cm4gdGhpcy5fcGF5bG9hZHNEYXRhO1xuICB9XG5cbiAgc2V0IGNyZWF0ZWRUaW1lc3RhbXAoY3JlYXRlZFRpbWVzdGFtcDogbnVtYmVyKSB7XG4gICAgdGhpcy5fY3JlYXRlZFRpbWVzdGFtcCA9IGNyZWF0ZWRUaW1lc3RhbXA7XG4gIH1cblxuICBnZXQgY3JlYXRlZFRpbWVzdGFtcCgpOiBudW1iZXIgfCBiaWdpbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVkVGltZXN0YW1wO1xuICB9XG5cbiAgYXN5bmMgZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QganNvblJhd1RyYW5zYWN0aW9uOiBSYXdUcmFuc2FjdGlvbiA9IEpTT04ucGFyc2UocmF3VHJhbnNhY3Rpb24pO1xuICAgICAgY29uc3QgcGFyc2VkVHggPSBhd2FpdCB0aGlzLnBhcnNlVW5zaWduZWRUcmFuc2FjdGlvbihqc29uUmF3VHJhbnNhY3Rpb24uc2VyaWFsaXplZFR4SGV4KTtcbiAgICAgIGNvbnN0IHNlbmRlclB1YmxpY0tleUhleCA9IGpzb25SYXdUcmFuc2FjdGlvbi5wdWJsaWNLZXk7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvblR5cGUgPSBwYXJzZWRUeC5vcGVyYXRpb25zWzBdLnR5cGU7XG4gICAgICBzd2l0Y2ggKHRyYW5zYWN0aW9uVHlwZSkge1xuICAgICAgICBjYXNlIE9wZXJhdGlvblR5cGUuVFJBTlNBQ1RJT046XG4gICAgICAgICAgdGhpcy5faWNwVHJhbnNhY3Rpb25EYXRhID0ge1xuICAgICAgICAgICAgc2VuZGVyQWRkcmVzczogcGFyc2VkVHgub3BlcmF0aW9uc1swXS5hY2NvdW50LmFkZHJlc3MsXG4gICAgICAgICAgICByZWNlaXZlckFkZHJlc3M6IHBhcnNlZFR4Lm9wZXJhdGlvbnNbMV0uYWNjb3VudC5hZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiBwYXJzZWRUeC5vcGVyYXRpb25zWzFdLmFtb3VudC52YWx1ZSxcbiAgICAgICAgICAgIGZlZTogcGFyc2VkVHgub3BlcmF0aW9uc1syXS5hbW91bnQudmFsdWUsXG4gICAgICAgICAgICBzZW5kZXJQdWJsaWNLZXlIZXg6IHNlbmRlclB1YmxpY0tleUhleCxcbiAgICAgICAgICAgIG1lbW86IHBhcnNlZFR4Lm1ldGFkYXRhLm1lbW8sXG4gICAgICAgICAgICB0cmFuc2FjdGlvblR5cGU6IHRyYW5zYWN0aW9uVHlwZSxcbiAgICAgICAgICAgIGV4cGlyeVRpbWU6IE51bWJlcihwYXJzZWRUeC5tZXRhZGF0YS5jcmVhdGVkX2F0X3RpbWUgKyAoTUFYX0lOR1JFU1NfVFRMIC0gUEVSTUlUVEVEX0RSSUZUKSksXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLl91dGlscy52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHRoaXMuX2ljcFRyYW5zYWN0aW9uRGF0YSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uIHR5cGUnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgfVxuXG4gIGFkZFNpZ25hdHVyZShzaWduYXR1cmVQYXlsb2FkczogU2lnbmF0dXJlc1tdKTogdm9pZCB7XG4gICAgaWYgKCFzaWduYXR1cmVQYXlsb2Fkcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzaWduYXR1cmVzIG5vdCBwcm92aWRlZCcpO1xuICAgIH1cbiAgICBpZiAoc2lnbmF0dXJlUGF5bG9hZHMubGVuZ3RoICE9PSB0aGlzLl9wYXlsb2Fkc0RhdGEucGF5bG9hZHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3NpZ25hdHVyZXMgbGVuZ3RoIGlzIG5vdCBtYXRjaGluZycpO1xuICAgIH1cbiAgICB0aGlzLl9zaWduYXR1cmVQYXlsb2FkID0gc2lnbmF0dXJlUGF5bG9hZHM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgaWYgKCF0aGlzLl9pY3BUcmFuc2FjdGlvbkRhdGEpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgc3dpdGNoICh0aGlzLl9pY3BUcmFuc2FjdGlvbkRhdGEudHJhbnNhY3Rpb25UeXBlKSB7XG4gICAgICBjYXNlIE9wZXJhdGlvblR5cGUuVFJBTlNBQ1RJT046XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaWQ6IHRoaXMuX2lkLFxuICAgICAgICAgIHNlbmRlcjogdGhpcy5faWNwVHJhbnNhY3Rpb25EYXRhLnNlbmRlckFkZHJlc3MsXG4gICAgICAgICAgc2VuZGVyUHVibGljS2V5OiB0aGlzLl9pY3BUcmFuc2FjdGlvbkRhdGEuc2VuZGVyUHVibGljS2V5SGV4LFxuICAgICAgICAgIHJlY2lwaWVudDogdGhpcy5faWNwVHJhbnNhY3Rpb25EYXRhLnJlY2VpdmVyQWRkcmVzcyxcbiAgICAgICAgICBtZW1vOiB0aGlzLl9pY3BUcmFuc2FjdGlvbkRhdGEubWVtbyxcbiAgICAgICAgICBmZWVBbW91bnQ6IHRoaXMuX2ljcFRyYW5zYWN0aW9uRGF0YS5mZWUsXG4gICAgICAgICAgZXhwaXJhdGlvblRpbWU6IHRoaXMuX2ljcFRyYW5zYWN0aW9uRGF0YS5leHBpcnlUaW1lLFxuICAgICAgICAgIHR5cGU6IEJpdEdvVHJhbnNhY3Rpb25UeXBlLlNlbmQsXG4gICAgICAgIH07XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHRyYW5zYWN0aW9uIHR5cGUnKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZXhwbGFpblRyYW5zYWN0aW9uKCk6IEljcFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMudG9Kc29uKCk7XG4gICAgY29uc3QgZGlzcGxheU9yZGVyID0gWydpZCcsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlQW1vdW50JywgJ291dHB1dHMnLCAnY2hhbmdlT3V0cHV0cycsICdmZWUnXTtcbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdID0gW107XG5cbiAgICBjb25zdCBleHBsYW5hdGlvblJlc3VsdCA9IHtcbiAgICAgIGRpc3BsYXlPcmRlcixcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgb3V0cHV0cyxcbiAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgZmVlOiB7IGZlZTogJzAnIH0sXG4gICAgICB0eXBlOiByZXN1bHQudHlwZSxcbiAgICAgIGNoYW5nZU91dHB1dHM6IFtdLCAvLyBhY2NvdW50IGJhc2VkIGRvZXMgbm90IHVzZSBjaGFuZ2Ugb3V0cHV0c1xuICAgICAgY2hhbmdlQW1vdW50OiAnMCcsIC8vIGFjY291bnQgYmFzZWQgZG9lcyBub3QgbWFrZSBjaGFuZ2VcbiAgICB9O1xuXG4gICAgc3dpdGNoIChleHBsYW5hdGlvblJlc3VsdC50eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgICByZXR1cm4gdGhpcy5leHBsYWluVHJhbnNmZXJUcmFuc2FjdGlvbihleHBsYW5hdGlvblJlc3VsdCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIHR5cGUgbm90IHN1cHBvcnRlZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBsYWlucyBhIHRyYW5zZmVyIHRyYW5zYWN0aW9uIGJ5IHByb3ZpZGluZyBkZXRhaWxzIGFib3V0IHRoZSByZWNpcGllbnRzIGFuZCB0aGUgdG90YWwgb3V0cHV0IGFtb3VudC5cbiAgICpcbiAgICogQHBhcmFtIHtJY3BUcmFuc2FjdGlvbkV4cGxhbmF0aW9ufSBleHBsYW5hdGlvblJlc3VsdCAtIFRoZSBpbml0aWFsIGV4cGxhbmF0aW9uIHJlc3VsdCB0byBiZSBleHRlbmRlZC5cbiAgICogQHJldHVybnMge0ljcFRyYW5zYWN0aW9uRXhwbGFuYXRpb259IFRoZSBleHRlbmRlZCBleHBsYW5hdGlvbiByZXN1bHQgaW5jbHVkaW5nIHRoZSBvdXRwdXQgYW1vdW50IGFuZCByZWNpcGllbnRzLlxuICAgKi9cbiAgZXhwbGFpblRyYW5zZmVyVHJhbnNhY3Rpb24oZXhwbGFuYXRpb25SZXN1bHQ6IEljcFRyYW5zYWN0aW9uRXhwbGFuYXRpb24pOiBJY3BUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICBleHBsYW5hdGlvblJlc3VsdC5mZWUgPSB7IGZlZTogdGhpcy5pY3BUcmFuc2FjdGlvbkRhdGEuZmVlIH07XG4gICAgY29uc3QgcmVjaXBpZW50cyA9IHRoaXMuX3V0aWxzLmdldFJlY2lwaWVudHModGhpcy5pY3BUcmFuc2FjdGlvbkRhdGEpO1xuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10gPSBbcmVjaXBpZW50c107XG4gICAgY29uc3Qgb3V0cHV0QW1vdW50Qk4gPSByZWNpcGllbnRzLmFtb3VudDtcbiAgICBjb25zdCBvdXRwdXRBbW91bnQgPSBvdXRwdXRBbW91bnRCTi50b1N0cmluZygpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmV4cGxhbmF0aW9uUmVzdWx0LFxuICAgICAgb3V0cHV0QW1vdW50LFxuICAgICAgb3V0cHV0cyxcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl9zaWduZWRUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIHNlcmlhbGl6ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zaWduZWRUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIGFzeW5jIHBhcnNlVW5zaWduZWRUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IHVuc2lnbmVkVHJhbnNhY3Rpb24gPSB0aGlzLl91dGlscy5jYm9yRGVjb2RlKFxuICAgICAgdGhpcy5fdXRpbHMuYmxvYkZyb21IZXgocmF3VHJhbnNhY3Rpb24pXG4gICAgKSBhcyBDYm9yVW5zaWduZWRUcmFuc2FjdGlvbjtcbiAgICBjb25zdCB1cGRhdGUgPSB1bnNpZ25lZFRyYW5zYWN0aW9uLnVwZGF0ZXNbMF07XG4gICAgY29uc3QgaHR0cENhbmlzdGVyVXBkYXRlID0gKHVwZGF0ZSBhcyB1bmtub3duIGFzIFtzdHJpbmcsIEh0dHBDYW5pc3RlclVwZGF0ZV0pWzFdO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmdldFBhcnNlZFRyYW5zYWN0aW9uRnJvbVVwZGF0ZShodHRwQ2FuaXN0ZXJVcGRhdGUsIGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0UGFyc2VkVHJhbnNhY3Rpb25Gcm9tVXBkYXRlKFxuICAgIGh0dHBDYW5pc3RlclVwZGF0ZTogSHR0cENhbmlzdGVyVXBkYXRlLFxuICAgIGlzU2lnbmVkOiBib29sZWFuXG4gICk6IFByb21pc2U8UGFyc2VkVHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCBzZW5kZXJQcmluY2lwYWwgPSB0aGlzLl91dGlscy5jb252ZXJ0U2VuZGVyQmxvYlRvUHJpbmNpcGFsKGh0dHBDYW5pc3RlclVwZGF0ZS5zZW5kZXIpO1xuICAgIGNvbnN0IEFDQ09VTlRfSURfUFJFRklYID0gdGhpcy5fdXRpbHMuZ2V0QWNjb3VudElkUHJlZml4KCk7XG4gICAgY29uc3Qgc3ViQWNjb3VudCA9IG5ldyBVaW50OEFycmF5KDMyKTtcbiAgICBjb25zdCBzZW5kZXJBY2NvdW50ID0gdGhpcy5fdXRpbHMuZ2V0QWNjb3VudElkRnJvbVByaW5jaXBhbEJ5dGVzKFxuICAgICAgQUNDT1VOVF9JRF9QUkVGSVgsXG4gICAgICBCdWZmZXIuZnJvbShzZW5kZXJQcmluY2lwYWwuYnVmZmVyKSxcbiAgICAgIHN1YkFjY291bnRcbiAgICApO1xuICAgIGNvbnN0IGFyZ3MgPSBhd2FpdCB0aGlzLl91dGlscy5mcm9tQXJncyhodHRwQ2FuaXN0ZXJVcGRhdGUuYXJnKTtcbiAgICBjb25zdCBzZW5kZXJPcGVyYXRpb246IEljcE9wZXJhdGlvbiA9IHtcbiAgICAgIHR5cGU6IE9wZXJhdGlvblR5cGUuVFJBTlNBQ1RJT04sXG4gICAgICBhY2NvdW50OiB7IGFkZHJlc3M6IHNlbmRlckFjY291bnQgfSxcbiAgICAgIGFtb3VudDoge1xuICAgICAgICB2YWx1ZTogYC0ke2FyZ3MucGF5bWVudC5yZWNlaXZlckdldHMuZThzLnRvU3RyaW5nKCl9YCxcbiAgICAgICAgY3VycmVuY3k6IHtcbiAgICAgICAgICBzeW1ib2w6IHRoaXMuX2NvaW5Db25maWcuZmFtaWx5LFxuICAgICAgICAgIGRlY2ltYWxzOiB0aGlzLl9jb2luQ29uZmlnLmRlY2ltYWxQbGFjZXMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gICAgY29uc3QgcmVjZWl2ZXJPcGVyYXRpb246IEljcE9wZXJhdGlvbiA9IHtcbiAgICAgIHR5cGU6IE9wZXJhdGlvblR5cGUuVFJBTlNBQ1RJT04sXG4gICAgICBhY2NvdW50OiB7IGFkZHJlc3M6IGFyZ3MudG8uaGFzaC50b1N0cmluZygnaGV4JykgfSxcbiAgICAgIGFtb3VudDoge1xuICAgICAgICB2YWx1ZTogYXJncy5wYXltZW50LnJlY2VpdmVyR2V0cy5lOHMudG9TdHJpbmcoKSxcbiAgICAgICAgY3VycmVuY3k6IHtcbiAgICAgICAgICBzeW1ib2w6IHRoaXMuX2NvaW5Db25maWcuZmFtaWx5LFxuICAgICAgICAgIGRlY2ltYWxzOiB0aGlzLl9jb2luQ29uZmlnLmRlY2ltYWxQbGFjZXMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBmZWVPcGVyYXRpb246IEljcE9wZXJhdGlvbiA9IHtcbiAgICAgIHR5cGU6IE9wZXJhdGlvblR5cGUuRkVFLFxuICAgICAgYWNjb3VudDogeyBhZGRyZXNzOiBzZW5kZXJBY2NvdW50IH0sXG4gICAgICBhbW91bnQ6IHtcbiAgICAgICAgdmFsdWU6IGAtJHthcmdzLm1heEZlZS5lOHMudG9TdHJpbmcoKX1gLFxuICAgICAgICBjdXJyZW5jeToge1xuICAgICAgICAgIHN5bWJvbDogdGhpcy5fY29pbkNvbmZpZy5mYW1pbHksXG4gICAgICAgICAgZGVjaW1hbHM6IHRoaXMuX2NvaW5Db25maWcuZGVjaW1hbFBsYWNlcyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCBhY2NvdW50SWRlbnRpZmllclNpZ25lcnM6IEljcEFjY291bnRbXSA9IFtdO1xuICAgIGlmIChpc1NpZ25lZCkge1xuICAgICAgYWNjb3VudElkZW50aWZpZXJTaWduZXJzLnB1c2goeyBhZGRyZXNzOiBzZW5kZXJBY2NvdW50IH0pO1xuICAgIH1cbiAgICBjb25zdCBwYXJzZWRUeG46IFBhcnNlZFRyYW5zYWN0aW9uID0ge1xuICAgICAgb3BlcmF0aW9uczogW3NlbmRlck9wZXJhdGlvbiwgcmVjZWl2ZXJPcGVyYXRpb24sIGZlZU9wZXJhdGlvbl0sXG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICBjcmVhdGVkX2F0X3RpbWU6IGFyZ3MuY3JlYXRlZEF0VGltZS50aW1lc3RhbXBOYW5vcyxcbiAgICAgICAgbWVtbzogTnVtYmVyKGFyZ3MubWVtby5tZW1vKSxcbiAgICAgIH0sXG4gICAgICBhY2NvdW50X2lkZW50aWZpZXJfc2lnbmVyczogYWNjb3VudElkZW50aWZpZXJTaWduZXJzLFxuICAgIH07XG4gICAgdGhpcy5jcmVhdGVkVGltZXN0YW1wID0gYXJncy5jcmVhdGVkQXRUaW1lLnRpbWVzdGFtcE5hbm9zO1xuICAgIHJldHVybiBwYXJzZWRUeG47XG4gIH1cblxuICBhc3luYyBwYXJzZVNpZ25lZFRyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBQcm9taXNlPFBhcnNlZFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3Qgc2lnbmVkVHJhbnNhY3Rpb24gPSB0aGlzLl91dGlscy5jYm9yRGVjb2RlKHRoaXMuX3V0aWxzLmJsb2JGcm9tSGV4KHJhd1RyYW5zYWN0aW9uKSk7XG4gICAgY29uc3QgaHR0cENhbmlzdGVyVXBkYXRlID0gKHNpZ25lZFRyYW5zYWN0aW9uIGFzIFVwZGF0ZUVudmVsb3BlKS5jb250ZW50IGFzIEh0dHBDYW5pc3RlclVwZGF0ZTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRQYXJzZWRUcmFuc2FjdGlvbkZyb21VcGRhdGUoaHR0cENhbmlzdGVyVXBkYXRlLCB0cnVlKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKGtleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=
|
|
@@ -2,7 +2,7 @@ import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
|
2
2
|
import BigNumber from 'bignumber.js';
|
|
3
3
|
import { BaseTransactionBuilder, BaseAddress, BaseKey } from '@bitgo/sdk-core';
|
|
4
4
|
import { Transaction } from './transaction';
|
|
5
|
-
import { IcpTransactionData, Signatures } from './iface';
|
|
5
|
+
import { IcpTransaction, IcpTransactionData, PayloadsData, Signatures } from './iface';
|
|
6
6
|
export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
|
|
7
7
|
protected _transaction: Transaction;
|
|
8
8
|
protected _sender: string;
|
|
@@ -12,7 +12,8 @@ export declare abstract class TransactionBuilder extends BaseTransactionBuilder
|
|
|
12
12
|
protected _amount: string;
|
|
13
13
|
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
14
14
|
signaturePayload(): Signatures[];
|
|
15
|
-
|
|
15
|
+
payloadData(): PayloadsData;
|
|
16
|
+
icpTransaction(): IcpTransaction;
|
|
16
17
|
/**
|
|
17
18
|
* Sets the public key and the address of the sender of this transaction.
|
|
18
19
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,sBAAsB,EAAyB,WAAW,EAAgB,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACpH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,sBAAsB,EAAyB,WAAW,EAAgB,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACpH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGvF,8BAAsB,kBAAmB,SAAQ,sBAAsB;IACrE,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;IACpC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEd,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAKtC,gBAAgB,IAAI,UAAU,EAAE;IAIhC,WAAW,IAAI,YAAY;IAI3B,cAAc,IAAI,cAAc;IAIvC;;;;;;OAMG;IACI,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAYpD;;;;;OAKG;IACI,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQ/B;;;;;OAKG;IACI,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAQ1C,kBAAkB;IAClB,IAAI,WAAW,IAAI,WAAW,CAE7B;IAED,kBAAkB;IAClB,IAAI,WAAW,CAAC,WAAW,EAAE,WAAW,EAEvC;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,kBAAkB;IAClB,kBAAkB,CAAC,cAAc,EAAE,kBAAkB,GAAG,WAAW;IAMnE,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAOnD;;;;;OAKG;IACI,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMlC,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAIrC;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAUlC,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAM3C,sBAAsB,CAAC,cAAc,EAAE,kBAAkB,GAAG,IAAI;IAIhE,kBAAkB;IAClB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAUxB,OAAO,IAAI,IAAI;CAOvB"}
|
|
@@ -17,8 +17,11 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
|
17
17
|
signaturePayload() {
|
|
18
18
|
return this._transaction.signaturePayload;
|
|
19
19
|
}
|
|
20
|
-
|
|
21
|
-
return this._transaction.payloadsData
|
|
20
|
+
payloadData() {
|
|
21
|
+
return this._transaction.payloadsData;
|
|
22
|
+
}
|
|
23
|
+
icpTransaction() {
|
|
24
|
+
return this._transaction.icpTransaction;
|
|
22
25
|
}
|
|
23
26
|
/**
|
|
24
27
|
* Sets the public key and the address of the sender of this transaction.
|
|
@@ -140,4 +143,4 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
|
140
143
|
}
|
|
141
144
|
}
|
|
142
145
|
exports.TransactionBuilder = TransactionBuilder;
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsZ0VBQXFDO0FBQ3JDLDhDQUFvSDtBQUNwSCwrQ0FBNEM7QUFDNUMsb0RBQTRCO0FBRTVCLHlFQUFzRTtBQUV0RSxNQUFzQixrQkFBbUIsU0FBUSxpQ0FBc0I7SUFRckUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHlCQUFXLENBQUMsV0FBVyxFQUFFLGVBQUssQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDO0lBQzVDLENBQUM7SUFFTSxtQkFBbUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLE9BQWUsRUFBRSxNQUFjO1FBQzNDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxlQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDMUQsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG1DQUFtQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsZUFBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDL0MsTUFBTSxJQUFJLGdDQUFxQixDQUFDLGtDQUFrQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBQy9FLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFH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Q0FBQztRQUNyRCxDQUFDO0lBQ0gsQ0FBQztJQUVELHNCQUFzQixDQUFDLGNBQWtDO1FBQ3ZELGVBQUssQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFdBQVcsQ0FBQyxHQUFZO1FBQ3RCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDckIsTUFBTSxJQUFJLHVCQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN0QyxNQUFNLElBQUksdUJBQVksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2hELENBQUM7SUFDSCxDQUFDO0lBRUQsbUdBQW1HO0lBQzVGLE9BQU87UUFDWixNQUFNLHdCQUF3QixHQUFHLElBQUksbURBQXdCLENBQzNELElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQ25DLENBQUM7UUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixHQUFHLHdCQUF3QixDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDdEYsQ0FBQztDQUNGO0FBNUpELGdEQTRKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyLCBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIEJhc2VBZGRyZXNzLCBTaWduaW5nRXJyb3IsIEJhc2VLZXkgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEljcFRyYW5zYWN0aW9uRGF0YSwgU2lnbmF0dXJlcyB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgU2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi9zaWduZWRUcmFuc2FjdGlvbkJ1aWxkZXInO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uO1xuICBwcm90ZWN0ZWQgX3NlbmRlcjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3B1YmxpY0tleTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX21lbW86IG51bWJlciB8IEJpZ0ludDtcbiAgcHJvdGVjdGVkIF9yZWNlaXZlcklkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfYW1vdW50OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKF9jb2luQ29uZmlnLCB1dGlscyk7XG4gIH1cblxuICBwdWJsaWMgc2lnbmF0dXJlUGF5bG9hZCgpOiBTaWduYXR1cmVzW10ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbi5zaWduYXR1cmVQYXlsb2FkO1xuICB9XG5cbiAgcHVibGljIHVuc2lnbmVkVHJhbnNhY3Rpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb24ucGF5bG9hZHNEYXRhLnVuc2lnbmVkX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHB1YmxpYyBrZXkgYW5kIHRoZSBhZGRyZXNzIG9mIHRoZSBzZW5kZXIgb2YgdGhpcyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgdGhlIGFjY291bnQgdGhhdCBpcyBzZW5kaW5nIHRoaXMgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IHB1YktleSB0aGUgcHVibGljIGtleSB0aGF0IGlzIHNlbmRpbmcgdGhpcyB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIHB1YmxpYyBzZW5kZXIoYWRkcmVzczogc3RyaW5nLCBwdWJLZXk6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghYWRkcmVzcyB8fCAhdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcy50b1N0cmluZygpKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBvciBtaXNzaW5nIGFkZHJlc3MsIGdvdDogJyArIGFkZHJlc3MpO1xuICAgIH1cbiAgICBpZiAoIXB1YktleSB8fCAhdXRpbHMuaXNWYWxpZFB1YmxpY0tleShwdWJLZXkpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIG9yIG1pc3NpbmcgcHViS2V5LCBnb3Q6ICcgKyBwdWJLZXkpO1xuICAgIH1cbiAgICB0aGlzLl9zZW5kZXIgPSBhZGRyZXNzO1xuICAgIHRoaXMuX3B1YmxpY0tleSA9IHB1YktleTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG1lbW9cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IG1lbW8gLSBudW1iZXIgdGhhdCB0byBiZSB1c2VkIGFzIG1lbW9cbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBwdWJsaWMgbWVtbyhtZW1vOiBudW1iZXIpOiB0aGlzIHtcbiAgICBpZiAobWVtbyA8IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgbWVtbzogJHttZW1vfWApO1xuICAgIH1cbiAgICB0aGlzLl9tZW1vID0gbWVtbztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhY2NvdW50IElkIG9mIHRoZSByZWNlaXZlciBvZiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWNjb3VudElkIHRoZSBhY2NvdW50IGlkIG9mIHRoZSBhY2NvdW50IHRoYXQgaXMgcmVjZWl2aW5nIHRoaXMgdHJhbnNhY3Rpb25cbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBwdWJsaWMgcmVjZWl2ZXJJZChhY2NvdW50SWQ6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghYWNjb3VudElkIHx8ICF1dGlscy5pc1ZhbGlkQWRkcmVzcyhhY2NvdW50SWQpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIG9yIG1pc3NpbmcgYWNjb3VudElkIGZvciByZWNlaXZlciwgZ290OiAnICsgYWNjb3VudElkKTtcbiAgICB9XG4gICAgdGhpcy5fcmVjZWl2ZXJJZCA9IGFjY291bnRJZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXQgdHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBzZXQgdHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKSB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIGdldCB0cmFuc2FjdGlvblR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb24uaWNwVHJhbnNhY3Rpb25EYXRhLnRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IEljcFRyYW5zYWN0aW9uRGF0YSk6IFRyYW5zYWN0aW9uIHtcbiAgICB0aGlzLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHRoaXMuYnVpbGRJbXBsZW1lbnRhdGlvbigpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24uaWNwVHJhbnNhY3Rpb25EYXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHV0aWxzLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24odHJhbnNhY3Rpb24uaWNwVHJhbnNhY3Rpb25EYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhbW91bnQgb2YgdGhpcyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIHRoZSBhbW91bnQgdG8gYmUgc2VudCBpbiBlOHMgKDEgSUNQID0gMWU4IGU4cylcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBwdWJsaWMgYW1vdW50KHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB1dGlscy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIodmFsdWUpKTtcbiAgICB0aGlzLl9hbW91bnQgPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHZhbGlkYXRlVmFsdWUodmFsdWU6IEJpZ051bWJlcik6IHZvaWQge1xuICAgIHV0aWxzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcih2YWx1ZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZmllbGRzIHVzaW5nIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHggdGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHg7XG4gICAgY29uc3QgaWNwVHJhbnNhY3Rpb25EYXRhID0gdHguaWNwVHJhbnNhY3Rpb25EYXRhO1xuICAgIHRoaXMuX3NlbmRlciA9IGljcFRyYW5zYWN0aW9uRGF0YS5zZW5kZXJBZGRyZXNzO1xuICAgIHRoaXMuX21lbW8gPSBpY3BUcmFuc2FjdGlvbkRhdGEubWVtbztcbiAgICB0aGlzLl9yZWNlaXZlcklkID0gaWNwVHJhbnNhY3Rpb25EYXRhLnJlY2VpdmVyQWRkcmVzcztcbiAgICB0aGlzLl9wdWJsaWNLZXkgPSBpY3BUcmFuc2FjdGlvbkRhdGEuc2VuZGVyUHVibGljS2V5SGV4O1xuICAgIHRoaXMuX2Ftb3VudCA9IGljcFRyYW5zYWN0aW9uRGF0YS5hbW91bnQ7XG4gIH1cblxuICB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzczogQmFzZUFkZHJlc3MpOiB2b2lkIHtcbiAgICBpZiAoIXV0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MuYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgYWRkcmVzcycpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IEljcFRyYW5zYWN0aW9uRGF0YSk6IHZvaWQge1xuICAgIHV0aWxzLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlS2V5KGtleTogQmFzZUtleSk6IHZvaWQge1xuICAgIGlmICgha2V5IHx8ICFrZXkua2V5KSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdLZXkgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgaWYgKCF1dGlscy5pc1ZhbGlkUHJpdmF0ZUtleShrZXkua2V5KSkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignSW52YWxpZCBwcml2YXRlIGtleScpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGNvbWJpbmUgdGhlIHVuc2lnbmVkIHRyYW5zYWN0aW9uIHdpdGggdGhlIHNpZ25hdHVyZSBwYXlsb2FkIGFuZCBnZW5lcmF0ZXMgdGhlIHNpZ25lZCB0cmFuc2FjdGlvblxuICBwdWJsaWMgY29tYmluZSgpOiB2b2lkIHtcbiAgICBjb25zdCBzaWduZWRUcmFuc2FjdGlvbkJ1aWxkZXIgPSBuZXcgU2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyKFxuICAgICAgdGhpcy5fdHJhbnNhY3Rpb24udW5zaWduZWRUcmFuc2FjdGlvbixcbiAgICAgIHRoaXMuX3RyYW5zYWN0aW9uLnNpZ25hdHVyZVBheWxvYWRcbiAgICApO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLnNpZ25lZFRyYW5zYWN0aW9uID0gc2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyLmdldFNpZ25UcmFuc2FjdGlvbigpO1xuICB9XG59XG4iXX0=
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsZ0VBQXFDO0FBQ3JDLDhDQUFvSDtBQUNwSCwrQ0FBNEM7QUFDNUMsb0RBQTRCO0FBRTVCLHlFQUFzRTtBQUV0RSxNQUFzQixrQkFBbUIsU0FBUSxpQ0FBc0I7SUFRckUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHlCQUFXLENBQUMsV0FBVyxFQUFFLGVBQUssQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDO0lBQzVDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUM7SUFDeEMsQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLE9BQWUsRUFBRSxNQUFjO1FBQzNDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxlQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDMUQsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG1DQUFtQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsZUFBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDL0MsTUFBTSxJQUFJLGdDQUFxQixDQUFDLGtDQUFrQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBQy9FLENBQUM7UUFDRCxJQUFJLENB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QUUsQ0FBQztZQUMzQyxNQUFNLElBQUksZ0NBQXFCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNyRCxDQUFDO0lBQ0gsQ0FBQztJQUVELHNCQUFzQixDQUFDLGNBQWtDO1FBQ3ZELGVBQUssQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFdBQVcsQ0FBQyxHQUFZO1FBQ3RCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDckIsTUFBTSxJQUFJLHVCQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN0QyxNQUFNLElBQUksdUJBQVksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2hELENBQUM7SUFDSCxDQUFDO0lBRUQsbUdBQW1HO0lBQzVGLE9BQU87UUFDWixNQUFNLHdCQUF3QixHQUFHLElBQUksbURBQXdCLENBQzNELElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQ25DLENBQUM7UUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixHQUFHLHdCQUF3QixDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDdEYsQ0FBQztDQUNGO0FBaEtELGdEQWdLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyLCBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIEJhc2VBZGRyZXNzLCBTaWduaW5nRXJyb3IsIEJhc2VLZXkgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEljcFRyYW5zYWN0aW9uLCBJY3BUcmFuc2FjdGlvbkRhdGEsIFBheWxvYWRzRGF0YSwgU2lnbmF0dXJlcyB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgU2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi9zaWduZWRUcmFuc2FjdGlvbkJ1aWxkZXInO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uO1xuICBwcm90ZWN0ZWQgX3NlbmRlcjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3B1YmxpY0tleTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX21lbW86IG51bWJlciB8IEJpZ0ludDtcbiAgcHJvdGVjdGVkIF9yZWNlaXZlcklkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfYW1vdW50OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKF9jb2luQ29uZmlnLCB1dGlscyk7XG4gIH1cblxuICBwdWJsaWMgc2lnbmF0dXJlUGF5bG9hZCgpOiBTaWduYXR1cmVzW10ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbi5zaWduYXR1cmVQYXlsb2FkO1xuICB9XG5cbiAgcHVibGljIHBheWxvYWREYXRhKCk6IFBheWxvYWRzRGF0YSB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uLnBheWxvYWRzRGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBpY3BUcmFuc2FjdGlvbigpOiBJY3BUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uLmljcFRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHB1YmxpYyBrZXkgYW5kIHRoZSBhZGRyZXNzIG9mIHRoZSBzZW5kZXIgb2YgdGhpcyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgdGhlIGFjY291bnQgdGhhdCBpcyBzZW5kaW5nIHRoaXMgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IHB1YktleSB0aGUgcHVibGljIGtleSB0aGF0IGlzIHNlbmRpbmcgdGhpcyB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIHB1YmxpYyBzZW5kZXIoYWRkcmVzczogc3RyaW5nLCBwdWJLZXk6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghYWRkcmVzcyB8fCAhdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcy50b1N0cmluZygpKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBvciBtaXNzaW5nIGFkZHJlc3MsIGdvdDogJyArIGFkZHJlc3MpO1xuICAgIH1cbiAgICBpZiAoIXB1YktleSB8fCAhdXRpbHMuaXNWYWxpZFB1YmxpY0tleShwdWJLZXkpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIG9yIG1pc3NpbmcgcHViS2V5LCBnb3Q6ICcgKyBwdWJLZXkpO1xuICAgIH1cbiAgICB0aGlzLl9zZW5kZXIgPSBhZGRyZXNzO1xuICAgIHRoaXMuX3B1YmxpY0tleSA9IHB1YktleTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG1lbW9cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IG1lbW8gLSBudW1iZXIgdGhhdCB0byBiZSB1c2VkIGFzIG1lbW9cbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBwdWJsaWMgbWVtbyhtZW1vOiBudW1iZXIpOiB0aGlzIHtcbiAgICBpZiAobWVtbyA8IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgbWVtbzogJHttZW1vfWApO1xuICAgIH1cbiAgICB0aGlzLl9tZW1vID0gbWVtbztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhY2NvdW50IElkIG9mIHRoZSByZWNlaXZlciBvZiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWNjb3VudElkIHRoZSBhY2NvdW50IGlkIG9mIHRoZSBhY2NvdW50IHRoYXQgaXMgcmVjZWl2aW5nIHRoaXMgdHJhbnNhY3Rpb25cbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBwdWJsaWMgcmVjZWl2ZXJJZChhY2NvdW50SWQ6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghYWNjb3VudElkIHx8ICF1dGlscy5pc1ZhbGlkQWRkcmVzcyhhY2NvdW50SWQpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIG9yIG1pc3NpbmcgYWNjb3VudElkIGZvciByZWNlaXZlciwgZ290OiAnICsgYWNjb3VudElkKTtcbiAgICB9XG4gICAgdGhpcy5fcmVjZWl2ZXJJZCA9IGFjY291bnRJZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXQgdHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBzZXQgdHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKSB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIGdldCB0cmFuc2FjdGlvblR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb24uaWNwVHJhbnNhY3Rpb25EYXRhLnRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IEljcFRyYW5zYWN0aW9uRGF0YSk6IFRyYW5zYWN0aW9uIHtcbiAgICB0aGlzLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHRoaXMuYnVpbGRJbXBsZW1lbnRhdGlvbigpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24uaWNwVHJhbnNhY3Rpb25EYXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHV0aWxzLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24odHJhbnNhY3Rpb24uaWNwVHJhbnNhY3Rpb25EYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhbW91bnQgb2YgdGhpcyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIHRoZSBhbW91bnQgdG8gYmUgc2VudCBpbiBlOHMgKDEgSUNQID0gMWU4IGU4cylcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBwdWJsaWMgYW1vdW50KHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB1dGlscy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIodmFsdWUpKTtcbiAgICB0aGlzLl9hbW91bnQgPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHZhbGlkYXRlVmFsdWUodmFsdWU6IEJpZ051bWJlcik6IHZvaWQge1xuICAgIHV0aWxzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcih2YWx1ZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZmllbGRzIHVzaW5nIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHggdGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHg7XG4gICAgY29uc3QgaWNwVHJhbnNhY3Rpb25EYXRhID0gdHguaWNwVHJhbnNhY3Rpb25EYXRhO1xuICAgIHRoaXMuX3NlbmRlciA9IGljcFRyYW5zYWN0aW9uRGF0YS5zZW5kZXJBZGRyZXNzO1xuICAgIHRoaXMuX21lbW8gPSBpY3BUcmFuc2FjdGlvbkRhdGEubWVtbztcbiAgICB0aGlzLl9yZWNlaXZlcklkID0gaWNwVHJhbnNhY3Rpb25EYXRhLnJlY2VpdmVyQWRkcmVzcztcbiAgICB0aGlzLl9wdWJsaWNLZXkgPSBpY3BUcmFuc2FjdGlvbkRhdGEuc2VuZGVyUHVibGljS2V5SGV4O1xuICAgIHRoaXMuX2Ftb3VudCA9IGljcFRyYW5zYWN0aW9uRGF0YS5hbW91bnQ7XG4gIH1cblxuICB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzczogQmFzZUFkZHJlc3MpOiB2b2lkIHtcbiAgICBpZiAoIXV0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MuYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgYWRkcmVzcycpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IEljcFRyYW5zYWN0aW9uRGF0YSk6IHZvaWQge1xuICAgIHV0aWxzLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlS2V5KGtleTogQmFzZUtleSk6IHZvaWQge1xuICAgIGlmICgha2V5IHx8ICFrZXkua2V5KSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdLZXkgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgaWYgKCF1dGlscy5pc1ZhbGlkUHJpdmF0ZUtleShrZXkua2V5KSkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignSW52YWxpZCBwcml2YXRlIGtleScpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGNvbWJpbmUgdGhlIHVuc2lnbmVkIHRyYW5zYWN0aW9uIHdpdGggdGhlIHNpZ25hdHVyZSBwYXlsb2FkIGFuZCBnZW5lcmF0ZXMgdGhlIHNpZ25lZCB0cmFuc2FjdGlvblxuICBwdWJsaWMgY29tYmluZSgpOiB2b2lkIHtcbiAgICBjb25zdCBzaWduZWRUcmFuc2FjdGlvbkJ1aWxkZXIgPSBuZXcgU2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyKFxuICAgICAgdGhpcy5fdHJhbnNhY3Rpb24udW5zaWduZWRUcmFuc2FjdGlvbixcbiAgICAgIHRoaXMuX3RyYW5zYWN0aW9uLnNpZ25hdHVyZVBheWxvYWRcbiAgICApO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLnNpZ25lZFRyYW5zYWN0aW9uID0gc2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyLmdldFNpZ25UcmFuc2FjdGlvbigpO1xuICB9XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unsignedTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/unsignedTransactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,QAAQ,EACR,kBAAkB,EAClB,cAAc,EACd,YAAY,EAOb,MAAM,SAAS,CAAC;AAGjB,qBAAa,0BAA0B;IACrC,OAAO,CAAC,sBAAsB,CAAiB;gBACnC,qBAAqB,EAAE,cAAc;IAI3C,sBAAsB,IAAI,OAAO,CAAC,YAAY,CAAC;IA+BrD,WAAW,CACT,QAAQ,EAAE,cAAc,EAAE,EAC1B,eAAe,EAAE,MAAM,EAAE,EACzB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,kBAAkB,GACzB,cAAc,EAAE;
|
|
1
|
+
{"version":3,"file":"unsignedTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/unsignedTransactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,QAAQ,EACR,kBAAkB,EAClB,cAAc,EACd,YAAY,EAOb,MAAM,SAAS,CAAC;AAGjB,qBAAa,0BAA0B;IACrC,OAAO,CAAC,sBAAsB,CAAiB;gBACnC,qBAAqB,EAAE,cAAc;IAI3C,sBAAsB,IAAI,OAAO,CAAC,YAAY,CAAC;IA+BrD,WAAW,CACT,QAAQ,EAAE,cAAc,EAAE,EAC1B,eAAe,EAAE,MAAM,EAAE,EACzB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,kBAAkB,GACzB,cAAc,EAAE;IAuBnB,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAWlH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ;IAW9G,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAcvF"}
|
|
@@ -30,30 +30,24 @@ class UnsignedTransactionBuilder {
|
|
|
30
30
|
return payloadsData;
|
|
31
31
|
}
|
|
32
32
|
getPayloads(payloads, ingressExpiries, accountAddress, update) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
canister_id: Buffer.from(update.canister_id),
|
|
36
|
-
method_name: update.method_name,
|
|
37
|
-
arg: update.arg,
|
|
38
|
-
sender: update.sender,
|
|
39
|
-
ingress_expiry: ingressExpiry,
|
|
40
|
-
};
|
|
41
|
-
const representationIndependentHash = utils_1.default.HttpCanisterUpdateRepresentationIndependentHash(clonedUpdate);
|
|
42
|
-
const transactionPayload = {
|
|
43
|
-
hex_bytes: utils_1.default.blobToHex(utils_1.default.makeSignatureData(representationIndependentHash)),
|
|
44
|
-
account_identifier: { address: accountAddress },
|
|
45
|
-
signature_type: iface_1.SignatureType.ECDSA,
|
|
46
|
-
};
|
|
47
|
-
payloads.push(transactionPayload);
|
|
48
|
-
const readState = utils_1.default.makeReadStateFromUpdate(clonedUpdate);
|
|
49
|
-
const readStateMessageId = utils_1.default.HttpReadStateRepresentationIndependentHash(readState);
|
|
50
|
-
const readStatePayload = {
|
|
51
|
-
hex_bytes: utils_1.default.blobToHex(utils_1.default.makeSignatureData(readStateMessageId)),
|
|
52
|
-
account_identifier: { address: accountAddress },
|
|
53
|
-
signature_type: iface_1.SignatureType.ECDSA,
|
|
54
|
-
};
|
|
55
|
-
payloads.push(readStatePayload);
|
|
33
|
+
if (ingressExpiries.length != 1) {
|
|
34
|
+
throw new Error('ingress expiry can have only one entry');
|
|
56
35
|
}
|
|
36
|
+
const ingressExpiry = ingressExpiries[0];
|
|
37
|
+
const clonedUpdate = {
|
|
38
|
+
canister_id: Buffer.from(update.canister_id),
|
|
39
|
+
method_name: update.method_name,
|
|
40
|
+
arg: update.arg,
|
|
41
|
+
sender: update.sender,
|
|
42
|
+
ingress_expiry: ingressExpiry,
|
|
43
|
+
};
|
|
44
|
+
const representationIndependentHash = utils_1.default.HttpCanisterUpdateRepresentationIndependentHash(clonedUpdate);
|
|
45
|
+
const transactionPayload = {
|
|
46
|
+
hex_bytes: utils_1.default.blobToHex(utils_1.default.makeSignatureData(representationIndependentHash)),
|
|
47
|
+
account_identifier: { address: accountAddress },
|
|
48
|
+
signature_type: iface_1.SignatureType.ECDSA,
|
|
49
|
+
};
|
|
50
|
+
payloads.push(transactionPayload);
|
|
57
51
|
return payloads;
|
|
58
52
|
}
|
|
59
53
|
getIngressExpiries(ingressStartTime, ingressEndTime, interval) {
|
|
@@ -90,4 +84,4 @@ class UnsignedTransactionBuilder {
|
|
|
90
84
|
}
|
|
91
85
|
}
|
|
92
86
|
exports.UnsignedTransactionBuilder = UnsignedTransactionBuilder;
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5zaWduZWRUcmFuc2FjdGlvbkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Vuc2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1DQVlpQjtBQUNqQixvREFBNEI7QUFFNUIsTUFBYSwwQkFBMEI7SUFFckMsWUFBWSxxQkFBcUM7UUFDL0MsSUFBSSxDQUFDLHNCQUFzQixHQUFHLHFCQUFxQixDQUFDO0lBQ3RELENBQUM7SUFFRCxLQUFLLENBQUMsc0JBQXNCO1FBQzFCLHFRQUFxUTtRQUNyUSxNQUFNLFFBQVEsR0FDWixNQUFNLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7WUFDeEQsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxzQkFBc0I7UUFDcEYsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUM3QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLGFBQWMsRUFDbkQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxXQUFZLEVBQ2pELFFBQVEsQ0FDVCxDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FDL0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQ3pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUNwRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQ3RELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFDdEQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENB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QUMsUUFBUSxDQUFDLENBQUM7UUFDekMsTUFBTSxNQUFNLEdBQXVCO1lBQ2pDLFdBQVcsRUFBRSxnQkFBZ0I7WUFDN0IsV0FBVyxFQUFFLGtCQUFVLENBQUMsT0FBTztZQUMvQixHQUFHLEVBQUUsSUFBSTtZQUNULE1BQU0sRUFBRSxVQUFVO1lBQ2xCLGNBQWMsRUFBRSxFQUFFO1NBQ25CLENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0Y7QUE3R0QsZ0VBNkdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSWNwVHJhbnNhY3Rpb24sXG4gIFNlbmRBcmdzLFxuICBIdHRwQ2FuaXN0ZXJVcGRhdGUsXG4gIFNpZ25pbmdQYXlsb2FkLFxuICBQYXlsb2Fkc0RhdGEsXG4gIFNpZ25hdHVyZVR5cGUsXG4gIE9wZXJhdGlvblR5cGUsXG4gIE1ldGhvZE5hbWUsXG4gIE1BWF9JTkdSRVNTX1RUTCxcbiAgUEVSTUlUVEVEX0RSSUZULFxuICBMRURHRVJfQ0FOSVNURVJfSUQsXG59IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgVW5zaWduZWRUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF9pY3BUcmFuc2FjdGlvblBheWxvYWQ6IEljcFRyYW5zYWN0aW9uO1xuICBjb25zdHJ1Y3RvcihpY3BUcmFuc2FjdGlvblBheWxvYWQ6IEljcFRyYW5zYWN0aW9uKSB7XG4gICAgdGhpcy5faWNwVHJhbnNhY3Rpb25QYXlsb2FkID0gaWNwVHJhbnNhY3Rpb25QYXlsb2FkO1xuICB9XG5cbiAgYXN5bmMgZ2V0VW5zaWduZWRUcmFuc2FjdGlvbigpOiBQcm9taXNlPFBheWxvYWRzRGF0YT4ge1xuICAgIC8vIGludGVydmFsIHZhbHVlIGNhbiBiZSBhbHRlcmVkIGhlcmUgdG8gY2hhbmdlIHRoZSBjb3VudCBvZiBpbmdyZXNzRXhwaXJpZXMgd2hpY2ggZXZlbnR1YWxseSBjaGFuZ2VzIHRoZSBudW1iZXIgb2YgaW50ZXJ2YWwgdmFsdWUgY2FuIGJlIGFsdGVyZWQgaGVyZSB0byBjaGFuZ2UgdGhlIGNvdW50IG9mIGluZ3Jlc3NFeHBpcmllcyB3aGljaCBldmVudHVhbGx5IGNoYW5nZXMgdGhlIG51bWJlciBvZiBwYXlsb2FkcyB0aGF0IG5lZWRzIHRvIGJlIHNpZ25lZFxuICAgIGNvbnN0IGludGVydmFsID1cbiAgICAgIE51bWJlcih0aGlzLl9pY3BUcmFuc2FjdGlvblBheWxvYWQubWV0YWRhdGEuaW5ncmVzc19lbmQpIC1cbiAgICAgIE51bWJlcih0aGlzLl9pY3BUcmFuc2FjdGlvblBheWxvYWQubWV0YWRhdGEuaW5ncmVzc19zdGFydCk7IC8vIDMwMHMgaW4gbmFub3NlY29uZHNcbiAgICBjb25zdCBpbmdyZXNzRXhwaXJpZXMgPSB0aGlzLmdldEluZ3Jlc3NFeHBpcmllcyhcbiAgICAgIHRoaXMuX2ljcFRyYW5zYWN0aW9uUGF5bG9hZC5tZXRhZGF0YS5pbmdyZXNzX3N0YXJ0ISxcbiAgICAgIHRoaXMuX2ljcFRyYW5zYWN0aW9uUGF5bG9hZC5tZXRhZGF0YS5pbmdyZXNzX2VuZCEsXG4gICAgICBpbnRlcnZhbFxuICAgICk7XG4gICAgY29uc3Qgc2VuZEFyZ3MgPSB0aGlzLmdldFNlbmRBcmdzKFxuICAgICAgdGhpcy5faWNwVHJhbnNhY3Rpb25QYXlsb2FkLm1ldGFkYXRhLm1lbW8sXG4gICAgICB0aGlzLl9pY3BUcmFuc2FjdGlvblBheWxvYWQubWV0YWRhdGEuY3JlYXRlZF9hdF90aW1lLFxuICAgICAgdGhpcy5faWNwVHJhbnNhY3Rpb25QYXlsb2FkLm9wZXJhdGlvbnNbMV0uYW1vdW50LnZhbHVlLFxuICAgICAgdGhpcy5faWNwVHJhbnNhY3Rpb25QYXlsb2FkLm9wZXJhdGlvbnNbMl0uYW1vdW50LnZhbHVlLFxuICAgICAgdGhpcy5faWNwVHJhbnNhY3Rpb25QYXlsb2FkLm9wZXJhdGlvbnNbMV0uYWNjb3VudC5hZGRyZXNzXG4gICAgKTtcbiAgICBjb25zdCB1cGRhdGUgPSBhd2FpdCB0aGlzLmdldFVwZGF0ZShzZW5kQXJncywgdGhpcy5faWNwVHJhbnNhY3Rpb25QYXlsb2FkLnB1YmxpY19rZXlzWzBdLmhleF9ieXRlcyk7XG4gICAgY29uc3QgdXBkYXRlczogW3N0cmluZywgSHR0cENhbmlzdGVyVXBkYXRlXVtdID0gW107XG4gICAgdXBkYXRlcy5wdXNoKFtPcGVyYXRpb25UeXBlLlRSQU5TQUNUSU9OLCB1cGRhdGVdKTtcbiAgICBjb25zdCB0eG4gPSB7IHVwZGF0ZXM6IHVwZGF0ZXMsIGluZ3Jlc3NfZXhwaXJpZXM6IGluZ3Jlc3NFeHBpcmllcyB9O1xuICAgIGNvbnN0IHVuc2lnbmVkVHJhbnNhY3Rpb24gPSB1dGlscy5jYm9yRW5jb2RlKHR4bik7XG4gICAgY29uc3QgcGF5bG9hZHM6IFNpZ25pbmdQYXlsb2FkW10gPSBbXTtcbiAgICB0aGlzLmdldFBheWxvYWRzKHBheWxvYWRzLCBpbmdyZXNzRXhwaXJpZXMsIHRoaXMuX2ljcFRyYW5zYWN0aW9uUGF5bG9hZC5vcGVyYXRpb25zWzBdLmFjY291bnQuYWRkcmVzcywgdXBkYXRlKTtcbiAgICBjb25zdCBwYXlsb2Fkc0RhdGEgPSB7XG4gICAgICBwYXlsb2FkczogcGF5bG9hZHMsXG4gICAgICB1bnNpZ25lZF90cmFuc2FjdGlvbjogdW5zaWduZWRUcmFuc2FjdGlvbixcbiAgICB9O1xuICAgIHJldHVybiBwYXlsb2Fkc0RhdGE7XG4gIH1cblxuICBnZXRQYXlsb2FkcyhcbiAgICBwYXlsb2FkczogU2lnbmluZ1BheWxvYWRbXSxcbiAgICBpbmdyZXNzRXhwaXJpZXM6IGJpZ2ludFtdLFxuICAgIGFjY291bnRBZGRyZXNzOiBzdHJpbmcsXG4gICAgdXBkYXRlOiBIdHRwQ2FuaXN0ZXJVcGRhdGVcbiAgKTogU2lnbmluZ1BheWxvYWRbXSB7XG4gICAgZm9yIChjb25zdCBpbmdyZXNzRXhwaXJ5IG9mIGluZ3Jlc3NFeHBpcmllcykge1xuICAgICAgY29uc3QgY2xvbmVkVXBkYXRlOiBIdHRwQ2FuaXN0ZXJVcGRhdGUgPSB7XG4gICAgICAgIGNhbmlzdGVyX2lkOiBCdWZmZXIuZnJvbSh1cGRhdGUuY2FuaXN0ZXJfaWQpLFxuICAgICAgICBtZXRob2RfbmFtZTogdXBkYXRlLm1ldGhvZF9uYW1lLFxuICAgICAgICBhcmc6IHVwZGF0ZS5hcmcsXG4gICAgICAgIHNlbmRlcjogdXBkYXRlLnNlbmRlcixcbiAgICAgICAgaW5ncmVzc19leHBpcnk6IGluZ3Jlc3NFeHBpcnksXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXByZXNlbnRhdGlvbkluZGVwZW5kZW50SGFzaCA9IHV0aWxzLkh0dHBDYW5pc3RlclVwZGF0ZVJlcHJlc2VudGF0aW9uSW5kZXBlbmRlbnRIYXNoKGNsb25lZFVwZGF0ZSk7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvblBheWxvYWQ6IFNpZ25pbmdQYXlsb2FkID0ge1xuICAgICAgICBoZXhfYnl0ZXM6IHV0aWxzLmJsb2JUb0hleCh1dGlscy5tYWtlU2lnbmF0dXJlRGF0YShyZXByZXNlbnRhdGlvbkluZGVwZW5kZW50SGFzaCkpLFxuICAgICAgICBhY2NvdW50X2lkZW50aWZpZXI6IHsgYWRkcmVzczogYWNjb3VudEFkZHJlc3MgfSxcbiAgICAgICAgc2lnbmF0dXJlX3R5cGU6IFNpZ25hdHVyZVR5cGUuRUNEU0EsXG4gICAgICB9O1xuICAgICAgcGF5bG9hZHMucHVzaCh0cmFuc2FjdGlvblBheWxvYWQpO1xuXG4gICAgICBjb25zdCByZWFkU3RhdGUgPSB1dGlscy5tYWtlUmVhZFN0YXRlRnJvbVVwZGF0ZShjbG9uZWRVcGRhdGUpO1xuICAgICAgY29uc3QgcmVhZFN0YXRlTWVzc2FnZUlkID0gdXRpbHMuSHR0cFJlYWRTdGF0ZVJlcHJlc2VudGF0aW9uSW5kZXBlbmRlbnRIYXNoKHJlYWRTdGF0ZSk7XG4gICAgICBjb25zdCByZWFkU3RhdGVQYXlsb2FkOiBTaWduaW5nUGF5bG9hZCA9IHtcbiAgICAgICAgaGV4X2J5dGVzOiB1dGlscy5ibG9iVG9IZXgodXRpbHMubWFrZVNpZ25hdHVyZURhdGEocmVhZFN0YXRlTWVzc2FnZUlkKSksXG4gICAgICAgIGFjY291bnRfaWRlbnRpZmllcjogeyBhZGRyZXNzOiBhY2NvdW50QWRkcmVzcyB9LFxuICAgICAgICBzaWduYXR1cmVfdHlwZTogU2lnbmF0dXJlVHlwZS5FQ0RTQSxcbiAgICAgIH07XG4gICAgICBwYXlsb2Fkcy5wdXNoKHJlYWRTdGF0ZVBheWxvYWQpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXlsb2FkcztcbiAgfVxuXG4gIGdldEluZ3Jlc3NFeHBpcmllcyhpbmdyZXNzU3RhcnRUaW1lOiBudW1iZXIgfCBCaWdJbnQsIGluZ3Jlc3NFbmRUaW1lOiBudW1iZXIgfCBCaWdJbnQsIGludGVydmFsOiBudW1iZXIpOiBiaWdpbnRbXSB7XG4gICAgY29uc3QgaW5ncmVzc0V4cGlyaWVzOiBiaWdpbnRbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgbm93ID0gTnVtYmVyKGluZ3Jlc3NTdGFydFRpbWUpOyBub3cgPCBOdW1iZXIoaW5ncmVzc0VuZFRpbWUpOyBub3cgKz0gaW50ZXJ2YWwpIHtcbiAgICAgIGNvbnN0IGluZ3Jlc3NFeHBpcnkgPSBCaWdJbnQobm93ICsgKE1BWF9JTkdSRVNTX1RUTCAtIFBFUk1JVFRFRF9EUklGVCkpO1xuICAgICAgaW5ncmVzc0V4cGlyaWVzLnB1c2goaW5ncmVzc0V4cGlyeSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGluZ3Jlc3NFeHBpcmllcztcbiAgfVxuXG4gIGdldFNlbmRBcmdzKG1lbW86IG51bWJlciB8IEJpZ0ludCwgY3JlYXRlZF9hdF90aW1lOiBudW1iZXIsIGFtb3VudDogc3RyaW5nLCBmZWU6IHN0cmluZywgcmVjZWl2ZXI6IHN0cmluZyk6IFNlbmRBcmdzIHtcbiAgICBjb25zdCBzZW5kQXJnczogU2VuZEFyZ3MgPSB7XG4gICAgICBtZW1vOiB7IG1lbW86IG1lbW8gfSxcbiAgICAgIHBheW1lbnQ6IHsgcmVjZWl2ZXJHZXRzOiB7IGU4czogTnVtYmVyKGFtb3VudCkgfSB9LFxuICAgICAgbWF4RmVlOiB7IGU4czogLU51bWJlcihmZWUpIH0sXG4gICAgICB0bzogeyBoYXNoOiBCdWZmZXIuZnJvbShyZWNlaXZlciwgJ2hleCcpIH0sXG4gICAgICBjcmVhdGVkQXRUaW1lOiB7IHRpbWVzdGFtcE5hbm9zOiBOdW1iZXIoY3JlYXRlZF9hdF90aW1lKSB9LFxuICAgIH07XG4gICAgcmV0dXJuIHNlbmRBcmdzO1xuICB9XG5cbiAgYXN5bmMgZ2V0VXBkYXRlKHNlbmRBcmdzOiBTZW5kQXJncywgcHVibGljS2V5SGV4OiBzdHJpbmcpOiBQcm9taXNlPEh0dHBDYW5pc3RlclVwZGF0ZT4ge1xuICAgIGNvbnN0IHByaW5jaXBhbElkID0gdXRpbHMuZ2V0UHJpbmNpcGFsSWRGcm9tUHVibGljS2V5KHB1YmxpY0tleUhleCkudG9VaW50OEFycmF5KCk7XG4gICAgY29uc3Qgc2VuZGVyQmxvYiA9IEJ1ZmZlci5mcm9tKHByaW5jaXBhbElkKTtcbiAgICBjb25zdCBjYW5pc3RlcklkQnVmZmVyID0gQnVmZmVyLmZyb20oTEVER0VSX0NBTklTVEVSX0lEKTtcbiAgICBjb25zdCBhcmdzID0gYXdhaXQgdXRpbHMudG9Bcmcoc2VuZEFyZ3MpO1xuICAgIGNvbnN0IHVwZGF0ZTogSHR0cENhbmlzdGVyVXBkYXRlID0ge1xuICAgICAgY2FuaXN0ZXJfaWQ6IGNhbmlzdGVySWRCdWZmZXIsXG4gICAgICBtZXRob2RfbmFtZTogTWV0aG9kTmFtZS5TRU5EX1BCLFxuICAgICAgYXJnOiBhcmdzLFxuICAgICAgc2VuZGVyOiBzZW5kZXJCbG9iLFxuICAgICAgaW5ncmVzc19leHBpcnk6IDBuLFxuICAgIH07XG4gICAgcmV0dXJuIHVwZGF0ZTtcbiAgfVxufVxuIl19
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5zaWduZWRUcmFuc2FjdGlvbkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Vuc2lnbmVkVHJhbnNhY3Rpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1DQVlpQjtBQUNqQixvREFBNEI7QUFFNUIsTUFBYSwwQkFBMEI7SUFFckMsWUFBWSxxQkFBcUM7UUFDL0MsSUFBSSxDQUFDLHNCQUFzQixHQUFHLHFCQUFxQixDQUFDO0lBQ3RELENBQUM7SUFFRCxLQUFLLENBQUMsc0JBQXNCO1FBQzFCLHFRQUFxUTtRQUNyUSxNQUFNLFFBQVEsR0FDWixNQUFNLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7WUFDeEQsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxzQkFBc0I7UUFDcEYsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUM3QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLGFBQWMsRUFDbkQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxXQUFZLEVBQ2pELFFBQVEsQ0FDVCxDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FDL0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQ3pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUNwRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQ3RELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFDdEQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENB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bixcbiAgU2VuZEFyZ3MsXG4gIEh0dHBDYW5pc3RlclVwZGF0ZSxcbiAgU2lnbmluZ1BheWxvYWQsXG4gIFBheWxvYWRzRGF0YSxcbiAgU2lnbmF0dXJlVHlwZSxcbiAgT3BlcmF0aW9uVHlwZSxcbiAgTWV0aG9kTmFtZSxcbiAgTUFYX0lOR1JFU1NfVFRMLFxuICBQRVJNSVRURURfRFJJRlQsXG4gIExFREdFUl9DQU5JU1RFUl9JRCxcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBVbnNpZ25lZFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX2ljcFRyYW5zYWN0aW9uUGF5bG9hZDogSWNwVHJhbnNhY3Rpb247XG4gIGNvbnN0cnVjdG9yKGljcFRyYW5zYWN0aW9uUGF5bG9hZDogSWNwVHJhbnNhY3Rpb24pIHtcbiAgICB0aGlzLl9pY3BUcmFuc2FjdGlvblBheWxvYWQgPSBpY3BUcmFuc2FjdGlvblBheWxvYWQ7XG4gIH1cblxuICBhc3luYyBnZXRVbnNpZ25lZFRyYW5zYWN0aW9uKCk6IFByb21pc2U8UGF5bG9hZHNEYXRhPiB7XG4gICAgLy8gaW50ZXJ2YWwgdmFsdWUgY2FuIGJlIGFsdGVyZWQgaGVyZSB0byBjaGFuZ2UgdGhlIGNvdW50IG9mIGluZ3Jlc3NFeHBpcmllcyB3aGljaCBldmVudHVhbGx5IGNoYW5nZXMgdGhlIG51bWJlciBvZiBpbnRlcnZhbCB2YWx1ZSBjYW4gYmUgYWx0ZXJlZCBoZXJlIHRvIGNoYW5nZSB0aGUgY291bnQgb2YgaW5ncmVzc0V4cGlyaWVzIHdoaWNoIGV2ZW50dWFsbHkgY2hhbmdlcyB0aGUgbnVtYmVyIG9mIHBheWxvYWRzIHRoYXQgbmVlZHMgdG8gYmUgc2lnbmVkXG4gICAgY29uc3QgaW50ZXJ2YWwgPVxuICAgICAgTnVtYmVyKHRoaXMuX2ljcFRyYW5zYWN0aW9uUGF5bG9hZC5tZXRhZGF0YS5pbmdyZXNzX2VuZCkgLVxuICAgICAgTnVtYmVyKHRoaXMuX2ljcFRyYW5zYWN0aW9uUGF5bG9hZC5tZXRhZGF0YS5pbmdyZXNzX3N0YXJ0KTsgLy8gMzAwcyBpbiBuYW5vc2Vjb25kc1xuICAgIGNvbnN0IGluZ3Jlc3NFeHBpcmllcyA9IHRoaXMuZ2V0SW5ncmVzc0V4cGlyaWVzKFxuICAgICAgdGhpcy5faWNwVHJhbnNhY3Rpb25QYXlsb2FkLm1ldGFkYXRhLmluZ3Jlc3Nfc3RhcnQhLFxuICAgICAgdGhpcy5faWNwVHJhbnNhY3Rpb25QYXlsb2FkLm1ldGFkYXRhLmluZ3Jlc3NfZW5kISxcbiAgICAgIGludGVydmFsXG4gICAgKTtcbiAgICBjb25zdCBzZW5kQXJncyA9IHRoaXMuZ2V0U2VuZEFyZ3MoXG4gICAgICB0aGlzLl9pY3BUcmFuc2FjdGlvblBheWxvYWQubWV0YWRhdGEubWVtbyxcbiAgICAgIHRoaXMuX2ljcFRyYW5zYWN0aW9uUGF5bG9hZC5tZXRhZGF0YS5jcmVhdGVkX2F0X3RpbWUsXG4gICAgICB0aGlzLl9pY3BUcmFuc2FjdGlvblBheWxvYWQub3BlcmF0aW9uc1sxXS5hbW91bnQudmFsdWUsXG4gICAgICB0aGlzLl9pY3BUcmFuc2FjdGlvblBheWxvYWQub3BlcmF0aW9uc1syXS5hbW91bnQudmFsdWUsXG4gICAgICB0aGlzLl9pY3BUcmFuc2FjdGlvblBheWxvYWQub3BlcmF0aW9uc1sxXS5hY2NvdW50LmFkZHJlc3NcbiAgICApO1xuICAgIGNvbnN0IHVwZGF0ZSA9IGF3YWl0IHRoaXMuZ2V0VXBkYXRlKHNlbmRBcmdzLCB0aGlzLl9pY3BUcmFuc2FjdGlvblBheWxvYWQucHVibGljX2tleXNbMF0uaGV4X2J5dGVzKTtcbiAgICBjb25zdCB1cGRhdGVzOiBbc3RyaW5nLCBIdHRwQ2FuaXN0ZXJVcGRhdGVdW10gPSBbXTtcbiAgICB1cGRhdGVzLnB1c2goW09wZXJhdGlvblR5cGUuVFJBTlNBQ1RJT04sIHVwZGF0ZV0pO1xuICAgIGNvbnN0IHR4biA9IHsgdXBkYXRlczogdXBkYXRlcywgaW5ncmVzc19leHBpcmllczogaW5ncmVzc0V4cGlyaWVzIH07XG4gICAgY29uc3QgdW5zaWduZWRUcmFuc2FjdGlvbiA9IHV0aWxzLmNib3JFbmNvZGUodHhuKTtcbiAgICBjb25zdCBwYXlsb2FkczogU2lnbmluZ1BheWxvYWRbXSA9IFtdO1xuICAgIHRoaXMuZ2V0UGF5bG9hZHMocGF5bG9hZHMsIGluZ3Jlc3NFeHBpcmllcywgdGhpcy5faWNwVHJhbnNhY3Rpb25QYXlsb2FkLm9wZXJhdGlvbnNbMF0uYWNjb3VudC5hZGRyZXNzLCB1cGRhdGUpO1xuICAgIGNvbnN0IHBheWxvYWRzRGF0YSA9IHtcbiAgICAgIHBheWxvYWRzOiBwYXlsb2FkcyxcbiAgICAgIHVuc2lnbmVkX3RyYW5zYWN0aW9uOiB1bnNpZ25lZFRyYW5zYWN0aW9uLFxuICAgIH07XG4gICAgcmV0dXJuIHBheWxvYWRzRGF0YTtcbiAgfVxuXG4gIGdldFBheWxvYWRzKFxuICAgIHBheWxvYWRzOiBTaWduaW5nUGF5bG9hZFtdLFxuICAgIGluZ3Jlc3NFeHBpcmllczogYmlnaW50W10sXG4gICAgYWNjb3VudEFkZHJlc3M6IHN0cmluZyxcbiAgICB1cGRhdGU6IEh0dHBDYW5pc3RlclVwZGF0ZVxuICApOiBTaWduaW5nUGF5bG9hZFtdIHtcbiAgICBpZiAoaW5ncmVzc0V4cGlyaWVzLmxlbmd0aCAhPSAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2luZ3Jlc3MgZXhwaXJ5IGNhbiBoYXZlIG9ubHkgb25lIGVudHJ5Jyk7XG4gICAgfVxuICAgIGNvbnN0IGluZ3Jlc3NFeHBpcnkgPSBpbmdyZXNzRXhwaXJpZXNbMF07XG4gICAgY29uc3QgY2xvbmVkVXBkYXRlOiBIdHRwQ2FuaXN0ZXJVcGRhdGUgPSB7XG4gICAgICBjYW5pc3Rlcl9pZDogQnVmZmVyLmZyb20odXBkYXRlLmNhbmlzdGVyX2lkKSxcbiAgICAgIG1ldGhvZF9uYW1lOiB1cGRhdGUubWV0aG9kX25hbWUsXG4gICAgICBhcmc6IHVwZGF0ZS5hcmcsXG4gICAgICBzZW5kZXI6IHVwZGF0ZS5zZW5kZXIsXG4gICAgICBpbmdyZXNzX2V4cGlyeTogaW5ncmVzc0V4cGlyeSxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVwcmVzZW50YXRpb25JbmRlcGVuZGVudEhhc2ggPSB1dGlscy5IdHRwQ2FuaXN0ZXJVcGRhdGVSZXByZXNlbnRhdGlvbkluZGVwZW5kZW50SGFzaChjbG9uZWRVcGRhdGUpO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uUGF5bG9hZDogU2lnbmluZ1BheWxvYWQgPSB7XG4gICAgICBoZXhfYnl0ZXM6IHV0aWxzLmJsb2JUb0hleCh1dGlscy5tYWtlU2lnbmF0dXJlRGF0YShyZXByZXNlbnRhdGlvbkluZGVwZW5kZW50SGFzaCkpLFxuICAgICAgYWNjb3VudF9pZGVudGlmaWVyOiB7IGFkZHJlc3M6IGFjY291bnRBZGRyZXNzIH0sXG4gICAgICBzaWduYXR1cmVfdHlwZTogU2lnbmF0dXJlVHlwZS5FQ0RTQSxcbiAgICB9O1xuICAgIHBheWxvYWRzLnB1c2godHJhbnNhY3Rpb25QYXlsb2FkKTtcbiAgICByZXR1cm4gcGF5bG9hZHM7XG4gIH1cblxuICBnZXRJbmdyZXNzRXhwaXJpZXMoaW5ncmVzc1N0YXJ0VGltZTogbnVtYmVyIHwgQmlnSW50LCBpbmdyZXNzRW5kVGltZTogbnVtYmVyIHwgQmlnSW50LCBpbnRlcnZhbDogbnVtYmVyKTogYmlnaW50W10ge1xuICAgIGNvbnN0IGluZ3Jlc3NFeHBpcmllczogYmlnaW50W10gPSBbXTtcblxuICAgIGZvciAobGV0IG5vdyA9IE51bWJlcihpbmdyZXNzU3RhcnRUaW1lKTsgbm93IDwgTnVtYmVyKGluZ3Jlc3NFbmRUaW1lKTsgbm93ICs9IGludGVydmFsKSB7XG4gICAgICBjb25zdCBpbmdyZXNzRXhwaXJ5ID0gQmlnSW50KG5vdyArIChNQVhfSU5HUkVTU19UVEwgLSBQRVJNSVRURURfRFJJRlQpKTtcbiAgICAgIGluZ3Jlc3NFeHBpcmllcy5wdXNoKGluZ3Jlc3NFeHBpcnkpO1xuICAgIH1cblxuICAgIHJldHVybiBpbmdyZXNzRXhwaXJpZXM7XG4gIH1cblxuICBnZXRTZW5kQXJncyhtZW1vOiBudW1iZXIgfCBCaWdJbnQsIGNyZWF0ZWRfYXRfdGltZTogbnVtYmVyLCBhbW91bnQ6IHN0cmluZywgZmVlOiBzdHJpbmcsIHJlY2VpdmVyOiBzdHJpbmcpOiBTZW5kQXJncyB7XG4gICAgY29uc3Qgc2VuZEFyZ3M6IFNlbmRBcmdzID0ge1xuICAgICAgbWVtbzogeyBtZW1vOiBtZW1vIH0sXG4gICAgICBwYXltZW50OiB7IHJlY2VpdmVyR2V0czogeyBlOHM6IE51bWJlcihhbW91bnQpIH0gfSxcbiAgICAgIG1heEZlZTogeyBlOHM6IC1OdW1iZXIoZmVlKSB9LFxuICAgICAgdG86IHsgaGFzaDogQnVmZmVyLmZyb20ocmVjZWl2ZXIsICdoZXgnKSB9LFxuICAgICAgY3JlYXRlZEF0VGltZTogeyB0aW1lc3RhbXBOYW5vczogTnVtYmVyKGNyZWF0ZWRfYXRfdGltZSkgfSxcbiAgICB9O1xuICAgIHJldHVybiBzZW5kQXJncztcbiAgfVxuXG4gIGFzeW5jIGdldFVwZGF0ZShzZW5kQXJnczogU2VuZEFyZ3MsIHB1YmxpY0tleUhleDogc3RyaW5nKTogUHJvbWlzZTxIdHRwQ2FuaXN0ZXJVcGRhdGU+IHtcbiAgICBjb25zdCBwcmluY2lwYWxJZCA9IHV0aWxzLmdldFByaW5jaXBhbElkRnJvbVB1YmxpY0tleShwdWJsaWNLZXlIZXgpLnRvVWludDhBcnJheSgpO1xuICAgIGNvbnN0IHNlbmRlckJsb2IgPSBCdWZmZXIuZnJvbShwcmluY2lwYWxJZCk7XG4gICAgY29uc3QgY2FuaXN0ZXJJZEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKExFREdFUl9DQU5JU1RFUl9JRCk7XG4gICAgY29uc3QgYXJncyA9IGF3YWl0IHV0aWxzLnRvQXJnKHNlbmRBcmdzKTtcbiAgICBjb25zdCB1cGRhdGU6IEh0dHBDYW5pc3RlclVwZGF0ZSA9IHtcbiAgICAgIGNhbmlzdGVyX2lkOiBjYW5pc3RlcklkQnVmZmVyLFxuICAgICAgbWV0aG9kX25hbWU6IE1ldGhvZE5hbWUuU0VORF9QQixcbiAgICAgIGFyZzogYXJncyxcbiAgICAgIHNlbmRlcjogc2VuZGVyQmxvYixcbiAgICAgIGluZ3Jlc3NfZXhwaXJ5OiAwbixcbiAgICB9O1xuICAgIHJldHVybiB1cGRhdGU7XG4gIH1cbn1cbiJdfQ==
|
package/dist/src/lib/utils.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { BaseUtils, KeyPair, Recipient } from '@bitgo/sdk-core';
|
|
2
2
|
import { Principal as DfinityPrincipal } from '@dfinity/principal';
|
|
3
|
-
import { HttpCanisterUpdate, IcpTransactionData,
|
|
3
|
+
import { HttpCanisterUpdate, IcpTransactionData, Signatures, IcpMetadata, SendArgs, PayloadsData } from './iface';
|
|
4
4
|
import BigNumber from 'bignumber.js';
|
|
5
|
-
export declare const REQUEST_STATUS = "request_status";
|
|
6
5
|
export declare class Utils implements BaseUtils {
|
|
7
6
|
/** @inheritdoc */
|
|
8
7
|
isValidSignature(signature: string): boolean;
|
|
@@ -264,20 +263,6 @@ export declare class Utils implements BaseUtils {
|
|
|
264
263
|
* @returns {Buffer} - The concatenated buffer containing the domain IC request and the message ID.
|
|
265
264
|
*/
|
|
266
265
|
makeSignatureData(messageId: Buffer): Buffer;
|
|
267
|
-
/**
|
|
268
|
-
* Generates a read state object from an HTTP canister update.
|
|
269
|
-
*
|
|
270
|
-
* @param {HttpCanisterUpdate} update - The HTTP canister update object.
|
|
271
|
-
* @returns {ReadState} The read state object containing the sender, paths, and ingress expiry.
|
|
272
|
-
*/
|
|
273
|
-
makeReadStateFromUpdate(update: HttpCanisterUpdate): ReadState;
|
|
274
|
-
/**
|
|
275
|
-
* Generates a representation-independent hash for an HTTP read state object.
|
|
276
|
-
*
|
|
277
|
-
* @param {ReadState} readState - The HTTP read state object.
|
|
278
|
-
* @returns {Buffer} - The hash of the read state object.
|
|
279
|
-
*/
|
|
280
|
-
HttpReadStateRepresentationIndependentHash(readState: ReadState): Buffer;
|
|
281
266
|
/**
|
|
282
267
|
* Extracts the recipient information from the provided ICP transaction data.
|
|
283
268
|
*
|
|
@@ -286,7 +271,6 @@ export declare class Utils implements BaseUtils {
|
|
|
286
271
|
*/
|
|
287
272
|
getRecipients(icpTransactionData: IcpTransactionData): Recipient;
|
|
288
273
|
getTransactionSignature(signatureMap: Map<string, Signatures>, update: HttpCanisterUpdate): Signatures | undefined;
|
|
289
|
-
getReadStateSignature(signatureMap: Map<string, Signatures>, readState: ReadState): Signatures | undefined;
|
|
290
274
|
getMetaData(memo: number | BigInt, timestamp: number | bigint | undefined): {
|
|
291
275
|
metaData: IcpMetadata;
|
|
292
276
|
ingressEndTime: number | BigInt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,OAAO,EAEP,SAAS,EAGV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAInE,OAAO,EACL,kBAAkB,EAClB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/src/lib/utils.js
CHANGED
|
@@ -36,7 +36,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.Utils =
|
|
39
|
+
exports.Utils = void 0;
|
|
40
40
|
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
41
41
|
const principal_1 = require("@dfinity/principal");
|
|
42
42
|
const agent = __importStar(require("@dfinity/agent"));
|
|
@@ -50,7 +50,6 @@ const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
|
50
50
|
const secp256k1_1 = require("@noble/curves/secp256k1");
|
|
51
51
|
const protobufjs_1 = __importDefault(require("protobufjs"));
|
|
52
52
|
const protoDefinition_1 = require("./protoDefinition");
|
|
53
|
-
exports.REQUEST_STATUS = 'request_status';
|
|
54
53
|
class Utils {
|
|
55
54
|
constructor() {
|
|
56
55
|
this.signPayload = (privateKey, payloadHex) => {
|
|
@@ -546,33 +545,6 @@ class Utils {
|
|
|
546
545
|
makeSignatureData(messageId) {
|
|
547
546
|
return Buffer.concat([this.getDomainICRequest(), messageId]);
|
|
548
547
|
}
|
|
549
|
-
/**
|
|
550
|
-
* Generates a read state object from an HTTP canister update.
|
|
551
|
-
*
|
|
552
|
-
* @param {HttpCanisterUpdate} update - The HTTP canister update object.
|
|
553
|
-
* @returns {ReadState} The read state object containing the sender, paths, and ingress expiry.
|
|
554
|
-
*/
|
|
555
|
-
makeReadStateFromUpdate(update) {
|
|
556
|
-
return {
|
|
557
|
-
sender: update.sender,
|
|
558
|
-
paths: [[Buffer.from(exports.REQUEST_STATUS), this.generateHttpCanisterUpdateId(update)]],
|
|
559
|
-
ingress_expiry: update.ingress_expiry,
|
|
560
|
-
};
|
|
561
|
-
}
|
|
562
|
-
/**
|
|
563
|
-
* Generates a representation-independent hash for an HTTP read state object.
|
|
564
|
-
*
|
|
565
|
-
* @param {ReadState} readState - The HTTP read state object.
|
|
566
|
-
* @returns {Buffer} - The hash of the read state object.
|
|
567
|
-
*/
|
|
568
|
-
HttpReadStateRepresentationIndependentHash(readState) {
|
|
569
|
-
return this.hashOfMap({
|
|
570
|
-
request_type: iface_1.RequestType.READ_STATE,
|
|
571
|
-
ingress_expiry: readState.ingress_expiry,
|
|
572
|
-
paths: readState.paths,
|
|
573
|
-
sender: readState.sender,
|
|
574
|
-
});
|
|
575
|
-
}
|
|
576
548
|
/**
|
|
577
549
|
* Extracts the recipient information from the provided ICP transaction data.
|
|
578
550
|
*
|
|
@@ -588,9 +560,6 @@ class Utils {
|
|
|
588
560
|
getTransactionSignature(signatureMap, update) {
|
|
589
561
|
return signatureMap.get(this.blobToHex(this.makeSignatureData(this.generateHttpCanisterUpdateId(update))));
|
|
590
562
|
}
|
|
591
|
-
getReadStateSignature(signatureMap, readState) {
|
|
592
|
-
return signatureMap.get(this.blobToHex(this.makeSignatureData(this.HttpReadStateRepresentationIndependentHash(readState))));
|
|
593
|
-
}
|
|
594
563
|
getMetaData(memo, timestamp) {
|
|
595
564
|
let currentTime = Date.now() * 1000000;
|
|
596
565
|
if (timestamp) {
|
|
@@ -673,4 +642,4 @@ class Utils {
|
|
|
673
642
|
exports.Utils = Utils;
|
|
674
643
|
const utils = new Utils();
|
|
675
644
|
exports.default = utils;
|
|
676
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQU95QjtBQUN6QixrREFBbUU7QUFDbkUsc0RBQXdDO0FBQ3hDLG9EQUE0QjtBQUM1QixvREFBMkI7QUFDM0IsbUNBVWlCO0FBQ2pCLHVDQUFrRDtBQUNsRCxtQ0FBd0MsQ0FBQyxnTUFBZ007QUFDek8sMERBQWtDO0FBQ2xDLGdFQUFxQztBQUNyQyx1REFBb0Q7QUFDcEQsNERBQWtDO0FBQ2xDLHVEQUFvRDtBQUV2QyxRQUFBLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQztBQUUvQyxNQUFhLEtBQUs7SUFBbEI7UUEwcEJFLGdCQUFXLEdBQUcsQ0FBQyxVQUFrQixFQUFFLFVBQWtCLEVBQVUsRUFBRTtZQUMvRCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN2RCxNQUFNLFdBQVcsR0FBRyxnQkFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckcsTUFBTSxTQUFTLEdBQUcscUJBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQy9ELE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN6RSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFD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LENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixvQkFBb0IsQ0FBQyxJQUFZO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsYUFBYSxDQUFDLFlBQTBCLEVBQUUsZUFBdUIsRUFBRSxnQkFBd0I7UUFDekYsT0FBTyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3QyxlQUFlLEVBQUUsT0FBTztZQUN4QixjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWM7WUFDdEMsVUFBVSxFQUFFO2dCQUNWLFNBQVMsRUFBRSxlQUFlO2dCQUMxQixVQUFVLEVBQUUsaUJBQVMsQ0FBQyxTQUFTO2FBQ2hDO1lBQ0QsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQztTQUNqRSxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7Q0FVRjtBQWxxQkQsc0JBa3FCQztBQUVELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7QUFDMUIsa0JBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZVV0aWxzLFxuICBLZXlQYWlyLFxuICBQYXJzZVRyYW5zYWN0aW9uRXJyb3IsXG4gIFJlY2lwaWVudCxcbiAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxuICBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgUHJpbmNpcGFsIGFzIERmaW5pdHlQcmluY2lwYWwgfSBmcm9tICdAZGZpbml0eS9wcmluY2lwYWwnO1xuaW1wb3J0ICogYXMgYWdlbnQgZnJvbSAnQGRmaW5pdHkvYWdlbnQnO1xuaW1wb3J0IGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IGNyYzMyIGZyb20gJ2NyYy0zMic7XG5pbXBvcnQge1xuICBIdHRwQ2FuaXN0ZXJVcGRhdGUsXG4gIEljcFRyYW5zYWN0aW9uRGF0YSxcbiAgUmVhZFN0YXRlLFxuICBSZXF1ZXN0VHlwZSxcbiAgU2lnbmF0dXJlcyxcbiAgSWNwTWV0YWRhdGEsXG4gIFNlbmRBcmdzLFxuICBQYXlsb2Fkc0RhdGEsXG4gIEN1cnZlVHlwZSxcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBLZXlQYWlyIGFzIEljcEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IHsgZGVjb2RlLCBlbmNvZGUgfSBmcm9tICdjYm9yLXgnOyAvLyBUaGUgXCJjYm9yLXhcIiBsaWJyYXJ5IGlzIHVzZWQgaGVyZSBiZWNhdXNlIGl0IHN1cHBvcnRzIG1vZGVybiBmZWF0dXJlcyBsaWtlIEJpZ0ludC4gZG8gbm90IHJlcGxhY2UgaXQgd2l0aCBcImNib3IgYXMgXCJjYm9yXCIgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBSdXN0J3Mgc2VyZGVfY2JvciB3aGVuIGhhbmRsaW5nIGJpZyBudW1iZXJzLlxuaW1wb3J0IGpzX3NoYTI1NiBmcm9tICdqcy1zaGEyNTYnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgc2VjcDI1NmsxIH0gZnJvbSAnQG5vYmxlL2N1cnZlcy9zZWNwMjU2azEnO1xuaW1wb3J0IHByb3RvYnVmIGZyb20gJ3Byb3RvYnVmanMnO1xuaW1wb3J0IHsgcHJvdG9EZWZpbml0aW9uIH0gZnJvbSAnLi9wcm90b0RlZmluaXRpb24nO1xuXG5leHBvcnQgY29uc3QgUkVRVUVTVF9TVEFUVVMgPSAncmVxdWVzdF9zdGF0dXMnO1xuXG5leHBvcnQgY2xhc3MgVXRpbHMgaW1wbGVtZW50cyBCYXNlVXRpbHMge1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0cyB0aGUgZ2FzIGRhdGEgb2YgdGhpcyB0cmFuc2FjdGlvbi5cbiAgICovXG4gIC8vVE9ETyBXSU4tNDI0MjogdG8gbW92ZWQgdG8gYSBjb25maWcgYW5kIGV2ZW50dWFsbHkgdG8gYW4gQVBJIGZvciBkeW5hbWljIHZhbHVlXG4gIGdhc0RhdGEoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJy0xMDAwMCc7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBwcm92aWRlZCBhZGRyZXNzIGlzIGEgdmFsaWQgSUNQIGFkZHJlc3MuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIC0gVGhlIGFkZHJlc3MgdG8gdmFsaWRhdGUuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgYHRydWVgIGlmIHRoZSBhZGRyZXNzIGlzIHZhbGlkLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAgICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJvb3RBZGRyZXNzID0gdGhpcy52YWxpZGF0ZU1lbW9BbmRSZXR1cm5Sb290QWRkcmVzcyhhZGRyZXNzKTtcbiAgICByZXR1cm4gcm9vdEFkZHJlc3MgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmlzVmFsaWRIYXNoKHJvb3RBZGRyZXNzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIG1lbW8gSUQgaW4gdGhlIGFkZHJlc3MgYW5kIHJldHVybnMgdGhlIHJvb3QgYWRkcmVzcy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBUaGUgYWRkcmVzcyB0byB2YWxpZGF0ZSBhbmQgZXh0cmFjdCB0aGUgcm9vdCBhZGRyZXNzIGZyb20uXG4gICAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9IC0gVGhlIHJvb3QgYWRkcmVzcyBpZiB2YWxpZCwgb3RoZXJ3aXNlIGB1bmRlZmluZWRgLlxuICAgKi9cbiAgdmFsaWRhdGVNZW1vQW5kUmV0dXJuUm9vdEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIWFkZHJlc3MpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IFtyb290QWRkcmVzcywgbWVtb0lkXSA9IGFkZHJlc3Muc3BsaXQoJz9tZW1vSWQ9Jyk7XG4gICAgaWYgKG1lbW9JZCAmJiB0aGlzLnZhbGlkYXRlTWVtbyhCaWdJbnQobWVtb0lkKSkpIHtcbiAgICAgIHJldHVybiByb290QWRkcmVzcztcbiAgICB9XG4gICAgcmV0dXJuIGFkZHJlc3M7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBwcm92aWRlZCBoZXggc3RyaW5nIGlzIGEgdmFsaWQgcHVibGljIGtleS5cbiAgICpcbiAgICogQSB2YWxpZCBwdWJsaWMga2V5IGNhbiBiZSBlaXRoZXIgY29tcHJlc3NlZCBvciB1bmNvbXByZXNzZWQ6XG4gICAqIC0gQ29tcHJlc3NlZCBwdWJsaWMga2V5cyBhcmUgMzMgYnl0ZXMgbG9uZyBhbmQgc3RhcnQgd2l0aCBlaXRoZXIgMHgwMiBvciAweDAzLlxuICAgKiAtIFVuY29tcHJlc3NlZCBwdWJsaWMga2V5cyBhcmUgNjUgYnl0ZXMgbG9uZyBhbmQgc3RhcnQgd2l0aCAweDA0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaGV4U3RyIC0gVGhlIGhleCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHB1YmxpYyBrZXkgdG8gdmFsaWRhdGUuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgYHRydWVgIGlmIHRoZSBoZXggc3RyaW5nIGlzIGEgdmFsaWQgcHVibGljIGtleSwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gICAqL1xuICBpc1ZhbGlkUHVibGljS2V5KGhleFN0cjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWRIZXgoaGV4U3RyKSB8fCAhdGhpcy5pc1ZhbGlkTGVuZ3RoKGhleFN0cikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBwdWJLZXlCeXRlcyA9IHRoaXMuaGV4VG9CeXRlcyhoZXhTdHIpO1xuICAgIGNvbnN0IGZpcnN0Qnl0ZSA9IHB1YktleUJ5dGVzWzBdO1xuICAgIGNvbnN0IHZhbGlkQ29tcHJlc3NlZCA9IHB1YktleUJ5dGVzLmxlbmd0aCA9PT0gMzMgJiYgKGZpcnN0Qnl0ZSA9PT0gMiB8fCBmaXJzdEJ5dGUgPT09IDMpO1xuICAgIGNvbnN0IHZhbGlkVW5jb21wcmVzc2VkID0gcHViS2V5Qnl0ZXMubGVuZ3RoID09PSA2NSAmJiBmaXJzdEJ5dGUgPT09IDQ7XG5cbiAgICByZXR1cm4gdmFsaWRDb21wcmVzc2VkIHx8IHZhbGlkVW5jb21wcmVzc2VkO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY29kZXMgYSB2YWx1ZSBpbnRvIENCT1IgZm9ybWF0IGFuZCByZXR1cm5zIGl0IGFzIGEgaGV4IHN0cmluZy5cbiAgICpcbiAgICogQHBhcmFtIHt1bmtub3dufSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBlbmNvZGUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIENCT1IgZW5jb2RlZCB2YWx1ZSBhcyBhIGhleCBzdHJpbmcuXG4gICAqL1xuICBjYm9yRW5jb2RlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdWYWx1ZSB0byBlbmNvZGUgY2Fubm90IGJlIHVuZGVmaW5lZC4nKTtcbiAgICB9XG4gICAgY29uc3QgY2JvckRhdGEgPSBlbmNvZGUodmFsdWUpO1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShjYm9yRGF0YSkudG9TdHJpbmcoJ2hleCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgbGVuZ3RoIG9mIHRoZSBnaXZlbiBoZXhhZGVjaW1hbCBzdHJpbmcgaXMgdmFsaWQuXG4gICAqIEEgdmFsaWQgbGVuZ3RoIGlzIGVpdGhlciA2NiBjaGFyYWN0ZXJzICgzMyBieXRlcykgb3IgMTMwIGNoYXJhY3RlcnMgKDY1IGJ5dGVzKS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGhleFN0ciAtIFRoZSBoZXhhZGVjaW1hbCBzdHJpbmcgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgYHRydWVgIGlmIHRoZSBsZW5ndGggaXMgdmFsaWQsIG90aGVyd2lzZSBgZmFsc2VgLlxuICAgKi9cbiAgaXNWYWxpZExlbmd0aChoZXhTdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBoZXhTdHIubGVuZ3RoIC8gMiA9PT0gMzMgfHwgaGV4U3RyLmxlbmd0aCAvIDIgPT09IDY1O1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgcHJvdmlkZWQgc3RyaW5nIGlzIGEgdmFsaWQgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICAgKlxuICAgKiBBIHZhbGlkIGhleGFkZWNpbWFsIHN0cmluZyBjb25zaXN0cyBvZiBwYWlycyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMgKDAtOSwgYS1mLCBBLUYpLlxuICAgKlxuICAgKiBAcGFyYW0gaGV4U3RyIC0gVGhlIHN0cmluZyB0byBiZSB2YWxpZGF0ZWQgYXMgYSBoZXhhZGVjaW1hbCBzdHJpbmcuXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGhleGFkZWNpbWFsIHN0cmluZywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgaXNWYWxpZEhleChoZXhTdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvXihbMC05YS1mQS1GXXsyfSkrJC8udGVzdChoZXhTdHIpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgaGV4YWRlY2ltYWwgc3RyaW5nIHRvIGEgVWludDhBcnJheS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGhleCAtIFRoZSBoZXhhZGVjaW1hbCBzdHJpbmcgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge1VpbnQ4QXJyYXl9IFRoZSByZXN1bHRpbmcgYnl0ZSBhcnJheS5cbiAgICovXG4gIGhleFRvQnl0ZXMoaGV4OiBzdHJpbmcpOiBVaW50OEFycmF5IHtcbiAgICBjb25zdCBieXRlcyA9IG5ldyBVaW50OEFycmF5KGhleC5sZW5ndGggLyAyKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhleC5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgYnl0ZXNbaSAvIDJdID0gcGFyc2VJbnQoaGV4LnN1YnN0cihpLCAyKSwgMTYpO1xuICAgIH1cbiAgICByZXR1cm4gYnl0ZXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFByaXZhdGVLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkS2V5KGtleSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIGtleSBpcyBhIHZhbGlkIElDUCBwcml2YXRlIGtleS5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBhdHRlbXB0cyB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgYEljcEtleVBhaXJgIHVzaW5nIHRoZSBwcm92aWRlZCBrZXkuXG4gICAqIElmIHRoZSBrZXkgaXMgdmFsaWQsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGB0cnVlYC4gSWYgdGhlIGtleSBpcyBpbnZhbGlkLCBhbiBlcnJvciBpcyB0aHJvd24sXG4gICAqIGFuZCB0aGUgZnVuY3Rpb24gcmV0dXJucyBgZmFsc2VgLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIHByaXZhdGUga2V5IHRvIHZhbGlkYXRlLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBgdHJ1ZWAgaWYgdGhlIGtleSBpcyB2YWxpZCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqL1xuICBpc1ZhbGlkS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBJY3BLZXlQYWlyKHsgcHJ2OiBrZXkgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29tcHJlc3NlcyBhbiB1bmNvbXByZXNzZWQgcHVibGljIGtleS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVuY29tcHJlc3NlZEtleSAtIFRoZSB1bmNvbXByZXNzZWQgcHVibGljIGtleSBpbiBoZXhhZGVjaW1hbCBmb3JtYXQuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIGNvbXByZXNzZWQgcHVibGljIGtleSBpbiBoZXhhZGVjaW1hbCBmb3JtYXQuXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIElmIHRoZSBpbnB1dCBrZXkgaXMgbm90IGEgdmFsaWQgdW5jb21wcmVzc2VkIHB1YmxpYyBrZXkuXG4gICAqL1xuICBjb21wcmVzc1B1YmxpY0tleSh1bmNvbXByZXNzZWRLZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHVuY29tcHJlc3NlZEtleS5zdGFydHNXaXRoKCcwMicpIHx8IHVuY29tcHJlc3NlZEtleS5zdGFydHNXaXRoKCcwMycpKSB7XG4gICAgICByZXR1cm4gdW5jb21wcmVzc2VkS2V5O1xuICAgIH1cbiAgICBpZiAoIXVuY29tcHJlc3NlZEtleS5zdGFydHNXaXRoKCcwNCcpIHx8IHVuY29tcHJlc3NlZEtleS5sZW5ndGggIT09IDEzMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHVuY29tcHJlc3NlZCBwdWJsaWMga2V5IGZvcm1hdC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCB4SGV4ID0gdW5jb21wcmVzc2VkS2V5LnNsaWNlKDIsIDY2KTtcbiAgICBjb25zdCB5SGV4ID0gdW5jb21wcmVzc2VkS2V5LnNsaWNlKDY2KTtcbiAgICBjb25zdCB5ID0gQmlnSW50KGAweCR7eUhleH1gKTtcbiAgICBjb25zdCBwcmVmaXggPSB5ICUgMm4gPT09IDBuID8gJzAyJyA6ICcwMyc7XG5cbiAgICByZXR1cm4gYCR7cHJlZml4fSR7eEhleH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgcHVibGljIGtleSBmcm9tIGl0cyBoZXhhZGVjaW1hbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gdG8gREVSIGZvcm1hdC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHB1YmxpY0tleUhleCAtIFRoZSBwdWJsaWMga2V5IGluIGhleGFkZWNpbWFsIHN0cmluZyBmb3JtYXQuXG4gICAqIEByZXR1cm5zIFRoZSBwdWJsaWMga2V5IGluIERFUiBmb3JtYXQgYXMgYSBVaW50OEFycmF5LlxuICAgKi9cbiAgZ2V0UHVibGljS2V5SW5ERVJGb3JtYXQocHVibGljS2V5SGV4OiBzdHJpbmcpOiBVaW50OEFycmF5IHtcbiAgICBjb25zdCBwdWJsaWNLZXlCdWZmZXIgPSBCdWZmZXIuZnJvbShwdWJsaWNLZXlIZXgsICdoZXgnKTtcbiAgICBjb25zdCBlbGxpcHRpY0tleSA9IHNlY3AyNTZrMS5Qcm9qZWN0aXZlUG9pbnQuZnJvbUhleChwdWJsaWNLZXlCdWZmZXIudG9TdHJpbmcoJ2hleCcpKTtcbiAgICBjb25zdCB1bmNvbXByZXNzZWRQdWJsaWNLZXlIZXggPSBlbGxpcHRpY0tleS50b0hleChmYWxzZSk7XG4gICAgY29uc3QgZGVyRW5jb2RlZEtleSA9IGFnZW50LndyYXBERVIoQnVmZmVyLmZyb20odW5jb21wcmVzc2VkUHVibGljS2V5SGV4LCAnaGV4JyksIGFnZW50LlNFQ1AyNTZLMV9PSUQpO1xuICAgIHJldHVybiBkZXJFbmNvZGVkS2V5O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgcHVibGljIGtleSBpbiBoZXhhZGVjaW1hbCBmb3JtYXQgdG8gYSBEZmluaXR5IFByaW5jaXBhbCBJRC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHB1YmxpY0tleUhleCAtIFRoZSBwdWJsaWMga2V5IGluIGhleGFkZWNpbWFsIGZvcm1hdC5cbiAgICogQHJldHVybnMgVGhlIGNvcnJlc3BvbmRpbmcgRGZpbml0eSBQcmluY2lwYWwgSUQuXG4gICAqL1xuICBnZXRQcmluY2lwYWxJZEZyb21QdWJsaWNLZXkocHVibGljS2V5SGV4OiBzdHJpbmcpOiBEZmluaXR5UHJpbmNpcGFsIHtcbiAgICBjb25zdCBkZXJFbmNvZGVkS2V5ID0gdGhpcy5nZXRQdWJsaWNLZXlJbkRFUkZvcm1hdChwdWJsaWNLZXlIZXgpO1xuICAgIGNvbnN0IHByaW5jaXBhbElkID0gRGZpbml0eVByaW5jaXBhbC5zZWxmQXV0aGVudGljYXRpbmcoQnVmZmVyLmZyb20oZGVyRW5jb2RlZEtleSkpO1xuICAgIHJldHVybiBwcmluY2lwYWxJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXJpdmVzIGEgRGZpbml0eVByaW5jaXBhbCBmcm9tIGEgZ2l2ZW4gcHVibGljIGtleSBpbiBoZXhhZGVjaW1hbCBmb3JtYXQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwdWJsaWNLZXlIZXggLSBUaGUgcHVibGljIGtleSBpbiBoZXhhZGVjaW1hbCBmb3JtYXQuXG4gICAqIEByZXR1cm5zIFRoZSBkZXJpdmVkIERmaW5pdHlQcmluY2lwYWwuXG4gICAqIEB0aHJvd3MgV2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgcHJpbmNpcGFsIGNhbm5vdCBiZSBkZXJpdmVkIGZyb20gdGhlIHB1YmxpYyBrZXkuXG4gICAqL1xuICBkZXJpdmVQcmluY2lwYWxGcm9tUHVibGljS2V5KHB1YmxpY0tleUhleDogc3RyaW5nKTogRGZpbml0eVByaW5jaXBhbCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlckVuY29kZWRLZXkgPSB0aGlzLmdldFB1YmxpY0tleUluREVSRm9ybWF0KHB1YmxpY0tleUhleCk7XG4gICAgICBjb25zdCBwcmluY2lwYWxJZCA9IERmaW5pdHlQcmluY2lwYWwuc2VsZkF1dGhlbnRpY2F0aW5nKEJ1ZmZlci5mcm9tKGRlckVuY29kZWRLZXkpKTtcbiAgICAgIGNvbnN0IHByaW5jaXBhbCA9IERmaW5pdHlQcmluY2lwYWwuZnJvbVVpbnQ4QXJyYXkocHJpbmNpcGFsSWQudG9VaW50OEFycmF5KCkpO1xuICAgICAgcmV0dXJuIHByaW5jaXBhbDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZGVyaXZlIHByaW5jaXBhbCBmcm9tIHB1YmxpYyBrZXk6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBEZmluaXR5UHJpbmNpcGFsIGFuZCBhbiBvcHRpb25hbCBzdWJBY2NvdW50IHRvIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIGFjY291bnQgSUQuXG4gICAqXG4gICAqIEBwYXJhbSB7RGZpbml0eVByaW5jaXBhbH0gcHJpbmNpcGFsIC0gVGhlIHByaW5jaXBhbCB0byBjb252ZXJ0LlxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IFtzdWJBY2NvdW50PW5ldyBVaW50OEFycmF5KDMyKV0gLSBBbiBvcHRpb25hbCBzdWItYWNjb3VudCwgZGVmYXVsdHMgdG8gYSAzMi1ieXRlIGFycmF5IG9mIHplcm9zLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgaGV4YWRlY2ltYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBhY2NvdW50IElELlxuICAgKi9cbiAgZnJvbVByaW5jaXBhbChwcmluY2lwYWw6IERmaW5pdHlQcmluY2lwYWwsIHN1YkFjY291bnQ6IFVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheSgzMikpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByaW5jaXBhbEJ5dGVzID0gQnVmZmVyLmZyb20ocHJpbmNpcGFsLnRvVWludDhBcnJheSgpLmJ1ZmZlcik7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWNjb3VudElkRnJvbVByaW5jaXBhbEJ5dGVzKHRoaXMuZ2V0QWNjb3VudElkUHJlZml4KCksIHByaW5jaXBhbEJ5dGVzLCBzdWJBY2NvdW50KTtcbiAgfVxuXG4gIGdldEFjY291bnRJZEZyb21QcmluY2lwYWxCeXRlcyhcbiAgICBBQ0NPVU5UX0lEX1BSRUZJWDogQnVmZmVyPEFycmF5QnVmZmVyPixcbiAgICBwcmluY2lwYWxCeXRlczogQnVmZmVyPEFycmF5QnVmZmVyTGlrZT4sXG4gICAgc3ViQWNjb3VudDogVWludDhBcnJheTxBcnJheUJ1ZmZlckxpa2U+XG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgY29tYmluZWRCeXRlcyA9IEJ1ZmZlci5jb25jYXQoW0FDQ09VTlRfSURfUFJFRklYLCBwcmluY2lwYWxCeXRlcywgc3ViQWNjb3VudF0pO1xuICAgIGNvbnN0IHNoYTIyNEhhc2ggPSBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjI0JykudXBkYXRlKGNvbWJpbmVkQnl0ZXMpLmRpZ2VzdCgpO1xuICAgIGNvbnN0IGNoZWNrc3VtID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgIGNoZWNrc3VtLndyaXRlVUludDMyQkUoY3JjMzIuYnVmKHNoYTIyNEhhc2gpID4+PiAwLCAwKTtcbiAgICBjb25zdCBhY2NvdW50SWRCeXRlcyA9IEJ1ZmZlci5jb25jYXQoW2NoZWNrc3VtLCBzaGEyMjRIYXNoXSk7XG4gICAgcmV0dXJuIGFjY291bnRJZEJ5dGVzLnRvU3RyaW5nKCdoZXgnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gaGV4LWVuY29kZWQgcHVibGljIGtleS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGhleEVuY29kZWRQdWJsaWNLZXkgLSBUaGUgcHVibGljIGtleSBpbiBoZXgtZW5jb2RlZCBmb3JtYXQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBhZGRyZXNzIGRlcml2ZWQgZnJvbSB0aGUgcHJvdmlkZWQgcHVibGljIGtleS5cbiAgICogQHRocm93cyB7RXJyb3J9IFRocm93cyBhbiBlcnJvciBpZiB0aGUgcHJvdmlkZWQgcHVibGljIGtleSBpcyBub3QgaW4gYSB2YWxpZCBoZXgtZW5jb2RlZCBmb3JtYXQuXG4gICAqL1xuICBhc3luYyBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleShoZXhFbmNvZGVkUHVibGljS2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkUHVibGljS2V5KGhleEVuY29kZWRQdWJsaWNLZXkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaGV4LWVuY29kZWQgcHVibGljIGtleSBmb3JtYXQuJyk7XG4gICAgfVxuICAgIGNvbnN0IGNvbXByZXNzZWRLZXkgPSB0aGlzLmNvbXByZXNzUHVibGljS2V5KGhleEVuY29kZWRQdWJsaWNLZXkpO1xuICAgIGNvbnN0IGtleVBhaXIgPSBuZXcgSWNwS2V5UGFpcih7IHB1YjogY29tcHJlc3NlZEtleSB9KTtcbiAgICByZXR1cm4ga2V5UGFpci5nZXRBZGRyZXNzKCk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgbmV3IGtleSBwYWlyLiBJZiBhIHNlZWQgaXMgcHJvdmlkZWQsIGl0IHdpbGwgYmUgdXNlZCB0byBnZW5lcmF0ZSB0aGUga2V5IHBhaXIuXG4gICAqXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBbc2VlZF0gLSBPcHRpb25hbCBzZWVkIGZvciBrZXkgZ2VuZXJhdGlvbi5cbiAgICogQHJldHVybnMge0tleVBhaXJ9IC0gVGhlIGdlbmVyYXRlZCBrZXkgcGFpciBjb250YWluaW5nIGJvdGggcHVibGljIGFuZCBwcml2YXRlIGtleXMuXG4gICAqIEB0aHJvd3Mge0Vycm9yfSAtIElmIHRoZSBwcml2YXRlIGtleSBpcyBtaXNzaW5nIGluIHRoZSBnZW5lcmF0ZWQga2V5IHBhaXIuXG4gICAqL1xuICBwdWJsaWMgZ2VuZXJhdGVLZXlQYWlyKHNlZWQ/OiBCdWZmZXIpOiBLZXlQYWlyIHtcbiAgICBjb25zdCBrZXlQYWlyID0gc2VlZCA/IG5ldyBJY3BLZXlQYWlyKHsgc2VlZCB9KSA6IG5ldyBJY3BLZXlQYWlyKCk7XG4gICAgY29uc3QgeyBwdWIsIHBydiB9ID0ga2V5UGFpci5nZXRLZXlzKCk7XG4gICAgaWYgKCFwcnYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUHJpdmF0ZSBrZXkgaXMgbWlzc2luZyBpbiB0aGUgZ2VuZXJhdGVkIGtleSBwYWlyLicpO1xuICAgIH1cbiAgICByZXR1cm4geyBwdWIsIHBydiB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgcHJvdmlkZWQgZmVlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmVlIC0gVGhlIGZlZSB0byB2YWxpZGF0ZS5cbiAgICogQHRocm93cyB7QnVpbGRUcmFuc2FjdGlvbkVycm9yfSAtIElmIHRoZSBmZWUgaXMgemVybyBvciBpbnZhbGlkLlxuICAgKi9cbiAgdmFsaWRhdGVGZWUoZmVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBmZWVWYWx1ZSA9IG5ldyBCaWdOdW1iZXIoZmVlKTtcbiAgICBpZiAoZmVlVmFsdWUuaXNaZXJvKCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ZlZSBjYW5ub3QgYmUgemVybycpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAodmFsdWUuaXNMZXNzVGhhbk9yRXF1YWxUbygwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignYW1vdW50IGNhbm5vdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gemVybycpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIHByb3ZpZGVkIG1lbW8uXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyIHwgQmlnSW50fSBtZW1vIC0gVGhlIG1lbW8gdG8gdmFsaWRhdGUuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgYHRydWVgIGlmIHRoZSBtZW1vIGlzIHZhbGlkLlxuICAgKiBAdGhyb3dzIHtCdWlsZFRyYW5zYWN0aW9uRXJyb3J9IC0gSWYgdGhlIG1lbW8gaXMgaW52YWxpZC5cbiAgICovXG4gIHZhbGlkYXRlTWVtbyhtZW1vOiBudW1iZXIgfCBCaWdJbnQpOiBib29sZWFuIHtcbiAgICBjb25zdCBtZW1vTnVtYmVyID0gTnVtYmVyKG1lbW8pO1xuICAgIGlmIChtZW1vTnVtYmVyIDwgMCB8fCBOdW1iZXIuaXNOYU4obWVtb051bWJlcikpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgbWVtbycpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhbGlkYXRlRXhwaXJlVGltZShleHBpcmVUaW1lOiBudW1iZXIgfCBCaWdJbnQpOiBib29sZWFuIHtcbiAgICBpZiAoTnVtYmVyKGV4cGlyZVRpbWUpIDwgRGF0ZS5ub3coKSAqIDEwMDBfMDAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGV4cGlyeSB0aW1lJyk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgcmF3IHRyYW5zYWN0aW9uIGRhdGEgdG8gZW5zdXJlIGl0IGhhcyBhIHZhbGlkIGZvcm1hdCBpbiB0aGUgYmxvY2tjaGFpbiBjb250ZXh0LlxuICAgKlxuICAgKiBAcGFyYW0ge0ljcFRyYW5zYWN0aW9uRGF0YX0gdHJhbnNhY3Rpb25EYXRhIC0gVGhlIHRyYW5zYWN0aW9uIGRhdGEgdG8gdmFsaWRhdGUuXG4gICAqIEB0aHJvd3Mge1BhcnNlVHJhbnNhY3Rpb25FcnJvcn0gSWYgdGhlIHRyYW5zYWN0aW9uIGRhdGEgaXMgaW52YWxpZC5cbiAgICovXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25EYXRhOiBJY3BUcmFuc2FjdGlvbkRhdGEpOiB2b2lkIHtcbiAgICBpZiAoIXRyYW5zYWN0aW9uRGF0YSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gZGF0YSBpcyBtaXNzaW5nLicpO1xuICAgIH1cbiAgICBjb25zdCB7IHNlbmRlclB1YmxpY0tleUhleCwgc2VuZGVyQWRkcmVzcywgcmVjZWl2ZXJBZGRyZXNzIH0gPSB0cmFuc2FjdGlvbkRhdGE7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWRQdWJsaWNLZXkoc2VuZGVyUHVibGljS2V5SGV4KSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignU2VuZGVyIHB1YmxpYyBrZXkgaXMgaW52YWxpZC4nKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmlzVmFsaWRBZGRyZXNzKHNlbmRlckFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdTZW5kZXIgYWRkcmVzcyBpcyBpbnZhbGlkLicpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuaXNWYWxpZEFkZHJlc3MocmVjZWl2ZXJBZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignUmVjZWl2ZXIgYWRkcmVzcyBpcyBpbnZhbGlkLicpO1xuICAgIH1cbiAgICB0aGlzLnZhbGlkYXRlRmVlKHRyYW5zYWN0aW9uRGF0YS5mZWUpO1xuICAgIHRoaXMudmFsaWRhdGVWYWx1ZShuZXcgQmlnTnVtYmVyKHRyYW5zYWN0aW9uRGF0YS5hbW91bnQpKTtcbiAgICB0aGlzLnZhbGlkYXRlTWVtbyh0cmFuc2FjdGlvbkRhdGEubWVtbyk7XG4gICAgdGhpcy52YWxpZGF0ZUV4cGlyZVRpbWUodHJhbnNhY3Rpb25EYXRhLmV4cGlyeVRpbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSB1cGRhdGVcbiAgICogQHJldHVybnMge0J1ZmZlcn1cbiAgICovXG4gIGdlbmVyYXRlSHR0cENhbmlzdGVyVXBkYXRlSWQodXBkYXRlOiBIdHRwQ2FuaXN0ZXJVcGRhdGUpOiBCdWZmZXIge1xuICAgIHJldHVybiB0aGlzLkh0dHBDYW5pc3RlclVwZGF0ZVJlcHJlc2VudGF0aW9uSW5kZXBlbmRlbnRIYXNoKHVwZGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgcmVwcmVzZW50YXRpb24taW5kZXBlbmRlbnQgaGFzaCBmb3IgYW4gSFRUUCBjYW5pc3RlciB1cGRhdGUuXG4gICAqXG4gICAqIEBwYXJhbSB7SHR0cENhbmlzdGVyVXBkYXRlfSB1cGRhdGUgLSBUaGUgSFRUUCBjYW5pc3RlciB1cGRhdGUgb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7QnVmZmVyfSAtIFRoZSBoYXNoIG9mIHRoZSB1cGRhdGUgb2JqZWN0LlxuICAgKi9cbiAgSHR0cENhbmlzdGVyVXBkYXRlUmVwcmVzZW50YXRpb25JbmRlcGVuZGVudEhhc2godXBkYXRlOiBIdHRwQ2FuaXN0ZXJVcGRhdGUpOiBCdWZmZXIge1xuICAgIGNvbnN0IHVwZGF0ZU1hcCA9IHtcbiAgICAgIHJlcXVlc3RfdHlwZTogUmVxdWVzdFR5cGUuQ0FMTCxcbiAgICAgIGNhbmlzdGVyX2lkOiB1cGRhdGUuY2FuaXN0ZXJfaWQsXG4gICAgICBtZXRob2RfbmFtZTogdXBkYXRlLm1ldGhvZF9uYW1lLFxuICAgICAgYXJnOiB1cGRhdGUuYXJnLFxuICAgICAgaW5ncmVzc19leHBpcnk6IHVwZGF0ZS5pbmdyZXNzX2V4cGlyeSxcbiAgICAgIHNlbmRlcjogdXBkYXRlLnNlbmRlcixcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmhhc2hPZk1hcCh1cGRhdGVNYXApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIFNIQS0yNTYgaGFzaCBmb3IgYSBnaXZlbiBtYXAgb2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSBtYXAgLSBUaGUgbWFwIG9iamVjdCB0byBoYXNoLlxuICAgKiBAcmV0dXJucyB7QnVmZmVyfSAtIFRoZSByZXN1bHRpbmcgaGFzaCBhcyBhIEJ1ZmZlci5cbiAgICovXG4gIGhhc2hPZk1hcChtYXA6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBCdWZmZXIge1xuICAgIGNvbnN0IGhhc2hlczogQnVmZmVyW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBtYXApIHtcbiAgICAgIGhhc2hlcy5wdXNoKHRoaXMuaGFzaEtleVZhbChrZXksIG1hcFtrZXldKSk7XG4gICAgfVxuICAgIGhhc2hlcy5zb3J0KChidWYwLCBidWYxKSA9PiBidWYwLmNvbXBhcmUoYnVmMSkpO1xuICAgIHJldHVybiB0aGlzLnNoYTI1NihoYXNoZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIGhhc2ggZm9yIGEga2V5LXZhbHVlIHBhaXIuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUga2V5IHRvIGhhc2guXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgQnVmZmVyIHwgQmlnSW50fSB2YWwgLSBUaGUgdmFsdWUgdG8gaGFzaC5cbiAgICogQHJldHVybnMge0J1ZmZlcn0gLSBUaGUgcmVzdWx0aW5nIGhhc2ggYXMgYSBCdWZmZXIuXG4gICAqL1xuICBoYXNoS2V5VmFsKGtleTogc3RyaW5nLCB2YWw6IGFueSk6IEJ1ZmZlciB7XG4gICAgY29uc3Qga2V5SGFzaCA9IHRoaXMuaGFzaFN0cmluZyhrZXkpO1xuICAgIGNvbnN0IHZhbEhhc2ggPSB0aGlzLmhhc2hWYWwodmFsKTtcbiAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChba2V5SGFzaCwgdmFsSGFzaF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIFNIQS0yNTYgaGFzaCBmb3IgYSBnaXZlbiBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIFRoZSBzdHJpbmcgdG8gaGFzaC5cbiAgICogQHJldHVybnMge0J1ZmZlcn0gLSBUaGUgcmVzdWx0aW5nIGhhc2ggYXMgYSBCdWZmZXIuXG4gICAqL1xuICBoYXNoU3RyaW5nKHZhbHVlOiBzdHJpbmcpOiBCdWZmZXIge1xuICAgIHJldHVybiB0aGlzLnNoYTI1NihbQnVmZmVyLmZyb20odmFsdWUpXSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgaGFzaCBmb3IgYSA2NC1iaXQgdW5zaWduZWQgaW50ZWdlci5cbiAgICpcbiAgICogQHBhcmFtIHtiaWdpbnR9IG4gLSBUaGUgNjQtYml0IHVuc2lnbmVkIGludGVnZXIgdG8gaGFzaC5cbiAgICogQHJldHVybnMge0J1ZmZlcn0gLSBUaGUgcmVzdWx0aW5nIGhhc2ggYXMgYSBCdWZmZXIuXG4gICAqL1xuICBoYXNoVTY0KG46IGJpZ2ludCk6IEJ1ZmZlciB7XG4gICAgY29uc3QgYnVmID0gQnVmZmVyLmFsbG9jVW5zYWZlKDEwKTtcbiAgICBsZXQgaSA9IDA7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGNvbnN0IGJ5dGUgPSBOdW1iZXIobiAmIEJpZ0ludCgweDdmKSk7XG4gICAgICBuID4+PSBCaWdJbnQoNyk7XG4gICAgICBpZiAobiA9PT0gQmlnSW50KDApKSB7XG4gICAgICAgIGJ1ZltpXSA9IGJ5dGU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnVmW2ldID0gYnl0ZSB8IDB4ODA7XG4gICAgICAgICsraTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaGFzaEJ5dGVzKGJ1Zi5zdWJhcnJheSgwLCBpICsgMSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIFNIQS0yNTYgaGFzaCBmb3IgYW4gYXJyYXkgb2YgZWxlbWVudHMuXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXk8YW55Pn0gZWxlbWVudHMgLSBUaGUgYXJyYXkgb2YgZWxlbWVudHMgdG8gaGFzaC5cbiAgICogQHJldHVybnMge0J1ZmZlcn0gLSBUaGUgcmVzdWx0aW5nIGhhc2ggYXMgYSBCdWZmZXIuXG4gICAqL1xuICBoYXNoQXJyYXkoZWxlbWVudHM6IEFycmF5PGFueT4pOiBCdWZmZXIge1xuICAgIHJldHVybiB0aGlzLnNoYTI1NihlbGVtZW50cy5tYXAodGhpcy5oYXNoVmFsKSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgaGFzaCBmb3IgYSBnaXZlbiB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBCdWZmZXIgfCBCaWdJbnQgfCBudW1iZXIgfCBBcnJheTx1bmtub3duPn0gdmFsIC0gVGhlIHZhbHVlIHRvIGhhc2guXG4gICAqIEByZXR1cm5zIHtCdWZmZXJ9IC0gVGhlIHJlc3VsdGluZyBoYXNoIGFzIGEgQnVmZmVyLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBJZiB0aGUgdmFsdWUgdHlwZSBpcyB1bnN1cHBvcnRlZC5cbiAgICovXG4gIGhhc2hWYWwodmFsOiBzdHJpbmcgfCBCdWZmZXIgfCBCaWdJbnQgfCBudW1iZXIgfCBBcnJheTx1bmtub3duPik6IEJ1ZmZlciB7XG4gICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdXRpbHMuaGFzaFN0cmluZyh2YWwpO1xuICAgIH0gZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKHZhbCkpIHtcbiAgICAgIHJldHVybiB1dGlscy5oYXNoQnl0ZXModmFsKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdiaWdpbnQnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gdXRpbHMuaGFzaFU2NChCaWdJbnQodmFsKSk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgIHJldHVybiB1dGlscy5oYXNoQXJyYXkodmFsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCB2YWx1ZSB0eXBlIGZvciBoYXNoaW5nOiAke3R5cGVvZiB2YWx9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIHRoZSBTSEEtMjU2IGhhc2ggb2YgdGhlIGdpdmVuIGJ1ZmZlci5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGJ1ZmZlciB0byBoYXNoLlxuICAgKiBAcmV0dXJucyBUaGUgU0hBLTI1NiBoYXNoIG9mIHRoZSBpbnB1dCBidWZmZXIuXG4gICAqL1xuICBoYXNoQnl0ZXModmFsdWU6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIHRoaXMuc2hhMjU2KFt2YWx1ZV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIHRoZSBTSEEtMjU2IGhhc2ggb2YgdGhlIHByb3ZpZGVkIGFycmF5IG9mIEJ1ZmZlciBjaHVua3MuXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXk8QnVmZmVyPn0gY2h1bmtzIC0gQW4gYXJyYXkgb2YgQnVmZmVyIG9iamVjdHMgdG8gYmUgaGFzaGVkLlxuICAgKiBAcmV0dXJucyB7QnVmZmVyfSAtIFRoZSByZXN1bHRpbmcgU0hBLTI1NiBoYXNoIGFzIGEgQnVmZmVyLlxuICAgKi9cbiAgc2hhMjU2KGNodW5rczogQXJyYXk8QnVmZmVyPik6IEJ1ZmZlciB7XG4gICAgY29uc3QgaGFzaGVyID0ganNfc2hhMjU2LnNoYTI1Ni5jcmVhdGUoKTtcbiAgICBjaHVua3MuZm9yRWFjaCgoY2h1bmspID0+IGhhc2hlci51cGRhdGUoY2h1bmspKTtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oaGFzaGVyLmFycmF5QnVmZmVyKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgaGV4YWRlY2ltYWwgc3RyaW5nIHRvIGEgQnVmZmVyLlxuICAgKlxuICAgKiBAcGFyYW0gaGV4IC0gVGhlIGhleGFkZWNpbWFsIHN0cmluZyB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyBBIEJ1ZmZlciBjb250YWluaW5nIHRoZSBiaW5hcnkgZGF0YSByZXByZXNlbnRlZCBieSB0aGUgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICAgKi9cbiAgYmxvYkZyb21IZXgoaGV4OiBzdHJpbmcpOiBCdWZmZXIge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShoZXgsICdoZXgnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIGJpbmFyeSBibG9iIChCdWZmZXIpIHRvIGEgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gYmxvYiAtIFRoZSBiaW5hcnkgZGF0YSB0byBiZSBjb252ZXJ0ZWQuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgYmluYXJ5IGRhdGEuXG4gICAqL1xuICBibG9iVG9IZXgoYmxvYjogQnVmZmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYmxvYi50b1N0cmluZygnaGV4Jyk7XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyBhIGdpdmVuIENCT1ItZW5jb2RlZCBidWZmZXIuXG4gICAqXG4gICAqIEBwYXJhbSBidWZmZXIgLSBUaGUgQ0JPUi1lbmNvZGVkIGJ1ZmZlciB0byBkZWNvZGUuXG4gICAqIEByZXR1cm5zIFRoZSBkZWNvZGVkIGRhdGEuXG4gICAqL1xuICBjYm9yRGVjb2RlKGJ1ZmZlcjogQnVmZmVyKTogdW5rbm93biB7XG4gICAgY29uc3QgcmVzID0gZGVjb2RlKGJ1ZmZlcik7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBCdWZmZXIgY29udGFpbmluZyB0aGUgZG9tYWluIElDIHJlcXVlc3Qgc3RyaW5nLlxuICAgKlxuICAgKiBAcmV0dXJucyB7QnVmZmVyfSBBIEJ1ZmZlciBvYmplY3QgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc3RyaW5nICdcXHgwQWljLXJlcXVlc3QnLlxuICAgKi9cbiAgZ2V0RG9tYWluSUNSZXF1ZXN0KCk6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKCdcXHgwQWljLXJlcXVlc3QnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21iaW5lcyB0aGUgZG9tYWluIElDIHJlcXVlc3QgYnVmZmVyIHdpdGggdGhlIHByb3ZpZGVkIG1lc3NhZ2UgSUQgYnVmZmVyIHRvIGNyZWF0ZSBzaWduYXR1cmUgZGF0YS5cbiAgICpcbiAgICogQHBhcmFtIHtCdWZmZXJ9IG1lc3NhZ2VJZCAtIFRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgbWVzc2FnZSBJRC5cbiAgICogQHJldHVybnMge0J1ZmZlcn0gLSBUaGUgY29uY2F0ZW5hdGVkIGJ1ZmZlciBjb250YWluaW5nIHRoZSBkb21haW4gSUMgcmVxdWVzdCBhbmQgdGhlIG1lc3NhZ2UgSUQuXG4gICAqL1xuICBtYWtlU2lnbmF0dXJlRGF0YShtZXNzYWdlSWQ6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW3RoaXMuZ2V0RG9tYWluSUNSZXF1ZXN0KCksIG1lc3NhZ2VJZF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIHJlYWQgc3RhdGUgb2JqZWN0IGZyb20gYW4gSFRUUCBjYW5pc3RlciB1cGRhdGUuXG4gICAqXG4gICAqIEBwYXJhbSB7SHR0cENhbmlzdGVyVXBkYXRlfSB1cGRhdGUgLSBUaGUgSFRUUCBjYW5pc3RlciB1cGRhdGUgb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7UmVhZFN0YXRlfSBUaGUgcmVhZCBzdGF0ZSBvYmplY3QgY29udGFpbmluZyB0aGUgc2VuZGVyLCBwYXRocywgYW5kIGluZ3Jlc3MgZXhwaXJ5LlxuICAgKi9cbiAgbWFrZVJlYWRTdGF0ZUZyb21VcGRhdGUodXBkYXRlOiBIdHRwQ2FuaXN0ZXJVcGRhdGUpOiBSZWFkU3RhdGUge1xuICAgIHJldHVybiB7XG4gICAgICBzZW5kZXI6IHVwZGF0ZS5zZW5kZXIsXG4gICAgICBwYXRoczogW1tCdWZmZXIuZnJvbShSRVFVRVNUX1NUQVRVUyksIHRoaXMuZ2VuZXJhdGVIdHRwQ2FuaXN0ZXJVcGRhdGVJZCh1cGRhdGUpXV0sXG4gICAgICBpbmdyZXNzX2V4cGlyeTogdXBkYXRlLmluZ3Jlc3NfZXhwaXJ5LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgcmVwcmVzZW50YXRpb24taW5kZXBlbmRlbnQgaGFzaCBmb3IgYW4gSFRUUCByZWFkIHN0YXRlIG9iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFkU3RhdGV9IHJlYWRTdGF0ZSAtIFRoZSBIVFRQIHJlYWQgc3RhdGUgb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7QnVmZmVyfSAtIFRoZSBoYXNoIG9mIHRoZSByZWFkIHN0YXRlIG9iamVjdC5cbiAgICovXG4gIEh0dHBSZWFkU3RhdGVSZXByZXNlbnRhdGlvbkluZGVwZW5kZW50SGFzaChyZWFkU3RhdGU6IFJlYWRTdGF0ZSk6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIHRoaXMuaGFzaE9mTWFwKHtcbiAgICAgIHJlcXVlc3RfdHlwZTogUmVxdWVzdFR5cGUuUkVBRF9TVEFURSxcbiAgICAgIGluZ3Jlc3NfZXhwaXJ5OiByZWFkU3RhdGUuaW5ncmVzc19leHBpcnksXG4gICAgICBwYXRoczogcmVhZFN0YXRlLnBhdGhzLFxuICAgICAgc2VuZGVyOiByZWFkU3RhdGUuc2VuZGVyLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3RzIHRoZSByZWNpcGllbnQgaW5mb3JtYXRpb24gZnJvbSB0aGUgcHJvdmlkZWQgSUNQIHRyYW5zYWN0aW9uIGRhdGEuXG4gICAqXG4gICAqIEBwYXJhbSB7SWNwVHJhbnNhY3Rpb25EYXRhfSBpY3BUcmFuc2FjdGlvbkRhdGEgLSBUaGUgSUNQIHRyYW5zYWN0aW9uIGRhdGEgY29udGFpbmluZyB0aGUgcmVjZWl2ZXIncyBhZGRyZXNzIGFuZCBhbW91bnQuXG4gICAqIEByZXR1cm5zIHtSZWNpcGllbnRbXX0gQW4gYXJyYXkgY29udGFpbmluZyBhIHNpbmdsZSByZWNpcGllbnQgb2JqZWN0IHdpdGggdGhlIHJlY2VpdmVyJ3MgYWRkcmVzcyBhbmQgYW1vdW50LlxuICAgKi9cbiAgZ2V0UmVjaXBpZW50cyhpY3BUcmFuc2FjdGlvbkRhdGE6IEljcFRyYW5zYWN0aW9uRGF0YSk6IFJlY2lwaWVudCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFkZHJlc3M6IGljcFRyYW5zYWN0aW9uRGF0YS5yZWNlaXZlckFkZHJlc3MsXG4gICAgICBhbW91bnQ6IGljcFRyYW5zYWN0aW9uRGF0YS5hbW91bnQsXG4gICAgfTtcbiAgfVxuXG4gIGdldFRyYW5zYWN0aW9uU2lnbmF0dXJlKHNpZ25hdHVyZU1hcDogTWFwPHN0cmluZywgU2lnbmF0dXJlcz4sIHVwZGF0ZTogSHR0cENhbmlzdGVyVXBkYXRlKTogU2lnbmF0dXJlcyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHNpZ25hdHVyZU1hcC5nZXQodGhpcy5ibG9iVG9IZXgodGhpcy5tYWtlU2lnbmF0dXJlRGF0YSh0aGlzLmdlbmVyYXRlSHR0cENhbmlzdGVyVXBkYXRlSWQodXBkYXRlKSkpKTtcbiAgfVxuXG4gIGdldFJlYWRTdGF0ZVNpZ25hdHVyZShzaWduYXR1cmVNYXA6IE1hcDxzdHJpbmcsIFNpZ25hdHVyZXM+LCByZWFkU3RhdGU6IFJlYWRTdGF0ZSk6IFNpZ25hdHVyZXMgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBzaWduYXR1cmVNYXAuZ2V0KFxuICAgICAgdGhpcy5ibG9iVG9IZXgodGhpcy5tYWtlU2lnbmF0dXJlRGF0YSh0aGlzLkh0dHBSZWFkU3RhdGVSZXByZXNlbnRhdGlvbkluZGVwZW5kZW50SGFzaChyZWFkU3RhdGUpKSlcbiAgICApO1xuICB9XG5cbiAgZ2V0TWV0YURhdGEoXG4gICAgbWVtbzogbnVtYmVyIHwgQmlnSW50LFxuICAgIHRpbWVzdGFtcDogbnVtYmVyIHwgYmlnaW50IHwgdW5kZWZpbmVkXG4gICk6IHsgbWV0YURhdGE6IEljcE1ldGFkYXRhOyBpbmdyZXNzRW5kVGltZTogbnVtYmVyIHwgQmlnSW50IH0ge1xuICAgIGxldCBjdXJyZW50VGltZSA9IERhdGUubm93KCkgKiAxMDAwMDAwO1xuICAgIGlmICh0aW1lc3RhbXApIHtcbiAgICAgIGN1cnJlbnRUaW1lID0gTnVtYmVyKHRpbWVzdGFtcCk7XG4gICAgfVxuICAgIGNvbnN0IGluZ3Jlc3NTdGFydFRpbWUgPSBjdXJyZW50VGltZTtcbiAgICBjb25zdCBpbmdyZXNzRW5kVGltZSA9IGluZ3Jlc3NTdGFydFRpbWUgKyA1ICogNjAgKiAxMDAwMDAwMDAwOyAvLyA1IG1pbnMgaW4gbmFub3NlY29uZHNcbiAgICBjb25zdCBtZXRhRGF0YTogSWNwTWV0YWRhdGEgPSB7XG4gICAgICBjcmVhdGVkX2F0X3RpbWU6IGN1cnJlbnRUaW1lLFxuICAgICAgbWVtbzogbWVtbyxcbiAgICAgIGluZ3Jlc3Nfc3RhcnQ6IGluZ3Jlc3NTdGFydFRpbWUsXG4gICAgICBpbmdyZXNzX2VuZDogaW5ncmVzc0VuZFRpbWUsXG4gICAgfTtcbiAgICByZXR1cm4geyBtZXRhRGF0YSwgaW5ncmVzc0VuZFRpbWUgfTtcbiAgfVxuXG4gIGNvbnZlcnRTZW5kZXJCbG9iVG9QcmluY2lwYWwoc2VuZGVyQmxvYjogVWludDhBcnJheSk6IFVpbnQ4QXJyYXkge1xuICAgIGNvbnN0IE1BWF9MRU5HVEhfSU5fQllURVMgPSAyOTtcbiAgICBpZiAoc2VuZGVyQmxvYi5sZW5ndGggPiBNQVhfTEVOR1RIX0lOX0JZVEVTKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0J5dGVzIHRvbyBsb25nIGZvciBhIHZhbGlkIFByaW5jaXBhbCcpO1xuICAgIH1cbiAgICBjb25zdCBwcmluY2lwYWxCeXRlcyA9IG5ldyBVaW50OEFycmF5KE1BWF9MRU5HVEhfSU5fQllURVMpO1xuICAgIHByaW5jaXBhbEJ5dGVzLnNldChzZW5kZXJCbG9iLnNsaWNlKDAsIHNlbmRlckJsb2IubGVuZ3RoKSk7XG4gICAgcmV0dXJuIHByaW5jaXBhbEJ5dGVzO1xuICB9XG5cbiAgYXN5bmMgZnJvbUFyZ3MoYXJnOiBVaW50OEFycmF5KTogUHJvbWlzZTxTZW5kQXJncz4ge1xuICAgIGNvbnN0IHJvb3QgPSBwcm90b2J1Zi5wYXJzZShwcm90b0RlZmluaXRpb24pLnJvb3Q7XG4gICAgY29uc3QgU2VuZFJlcXVlc3RNZXNzYWdlID0gcm9vdC5sb29rdXBUeXBlKCdTZW5kUmVxdWVzdCcpO1xuICAgIGNvbnN0IGFyZ3MgPSBTZW5kUmVxdWVzdE1lc3NhZ2UuZGVjb2RlKGFyZykgYXMgdW5rbm93biBhcyBTZW5kQXJncztcbiAgICBjb25zdCB0cmFuc2Zvcm1lZEFyZ3M6IFNlbmRBcmdzID0ge1xuICAgICAgbWVtbzogeyBtZW1vOiBCaWdJbnQoYXJncy5tZW1vLm1lbW8udG9TdHJpbmcoKSkgfSxcbiAgICAgIHBheW1lbnQ6IHsgcmVjZWl2ZXJHZXRzOiB7IGU4czogYXJncy5wYXltZW50LnJlY2VpdmVyR2V0cy5lOHMgfSB9LFxuICAgICAgbWF4RmVlOiB7IGU4czogYXJncy5tYXhGZWUuZThzIH0sXG4gICAgICB0bzogeyBoYXNoOiBCdWZmZXIuZnJvbShhcmdzLnRvLmhhc2gpIH0sXG4gICAgICBjcmVhdGVkQXRUaW1lOiB7IHRpbWVzdGFtcE5hbm9zOiBCaWdOdW1iZXIoYXJncy5jcmVhdGVkQXRUaW1lLnRpbWVzdGFtcE5hbm9zLnRvU3RyaW5nKCkpLnRvTnVtYmVyKCkgfSxcbiAgICB9O1xuICAgIHJldHVybiB0cmFuc2Zvcm1lZEFyZ3M7XG4gIH1cblxuICBhc3luYyB0b0FyZyhhcmdzOiBTZW5kQXJncyk6IFByb21pc2U8VWludDhBcnJheT4ge1xuICAgIGNvbnN0IHJvb3QgPSBwcm90b2J1Zi5wYXJzZShwcm90b0RlZmluaXRpb24pLnJvb3Q7XG4gICAgY29uc3QgU2VuZFJlcXVlc3RNZXNzYWdlID0gcm9vdC5sb29rdXBUeXBlKCdTZW5kUmVxdWVzdCcpO1xuICAgIGNvbnN0IGVyck1zZyA9IFNlbmRSZXF1ZXN0TWVzc2FnZS52ZXJpZnkoYXJncyk7XG4gICAgaWYgKGVyck1zZykgdGhyb3cgbmV3IEVycm9yKGVyck1zZyk7XG4gICAgY29uc3QgbWVzc2FnZSA9IFNlbmRSZXF1ZXN0TWVzc2FnZS5jcmVhdGUoYXJncyk7XG4gICAgcmV0dXJuIFNlbmRSZXF1ZXN0TWVzc2FnZS5lbmNvZGUobWVzc2FnZSkuZmluaXNoKCk7XG4gIH1cblxuICBnZXRBY2NvdW50SWRQcmVmaXgoKTogQnVmZmVyPEFycmF5QnVmZmVyPiB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFsweDBhLCAuLi5CdWZmZXIuZnJvbSgnYWNjb3VudC1pZCcpXSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZEJsb2NrSWQoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgLy8gSUNQIGJsb2NrIGhhc2hlcyBhcmUgNjQtY2hhcmFjdGVyIGhleGFkZWNpbWFsIHN0cmluZ3NcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkSGFzaChoYXNoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBJQ1AgaGFzaFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaGFzaCAtIHN0cmluZyB0byB2YWxpZGF0ZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIGlzVmFsaWRIYXNoKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgaGFzaCA9PT0gJ3N0cmluZycgJiYgL15bMC05YS1mQS1GXXs2NH0kLy50ZXN0KGhhc2gpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRIYXNoKHR4SWQpO1xuICB9XG5cbiAgZ2V0U2lnbmF0dXJlcyhwYXlsb2Fkc0RhdGE6IFBheWxvYWRzRGF0YSwgc2VuZGVyUHVibGljS2V5OiBzdHJpbmcsIHNlbmRlclByaXZhdGVLZXk6IHN0cmluZyk6IFNpZ25hdHVyZXNbXSB7XG4gICAgcmV0dXJuIHBheWxvYWRzRGF0YS5wYXlsb2Fkcy5tYXAoKHBheWxvYWQpID0+ICh7XG4gICAgICBzaWduaW5nX3BheWxvYWQ6IHBheWxvYWQsXG4gICAgICBzaWduYXR1cmVfdHlwZTogcGF5bG9hZC5zaWduYXR1cmVfdHlwZSxcbiAgICAgIHB1YmxpY19rZXk6IHtcbiAgICAgICAgaGV4X2J5dGVzOiBzZW5kZXJQdWJsaWNLZXksXG4gICAgICAgIGN1cnZlX3R5cGU6IEN1cnZlVHlwZS5TRUNQMjU2SzEsXG4gICAgICB9LFxuICAgICAgaGV4X2J5dGVzOiB0aGlzLnNpZ25QYXlsb2FkKHNlbmRlclByaXZhdGVLZXksIHBheWxvYWQuaGV4X2J5dGVzKSxcbiAgICB9KSk7XG4gIH1cblxuICBzaWduUGF5bG9hZCA9IChwcml2YXRlS2V5OiBzdHJpbmcsIHBheWxvYWRIZXg6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgY29uc3QgcHJpdmF0ZUtleUJ5dGVzID0gQnVmZmVyLmZyb20ocHJpdmF0ZUtleSwgJ2hleCcpO1xuICAgIGNvbnN0IHBheWxvYWRIYXNoID0gY3J5cHRvLmNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShCdWZmZXIuZnJvbShwYXlsb2FkSGV4LCAnaGV4JykpLmRpZ2VzdCgnaGV4Jyk7XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gc2VjcDI1NmsxLnNpZ24ocGF5bG9hZEhhc2gsIHByaXZhdGVLZXlCeXRlcyk7XG4gICAgY29uc3QgciA9IEJ1ZmZlci5mcm9tKHNpZ25hdHVyZS5yLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg2NCwgJzAnKSwgJ2hleCcpO1xuICAgIGNvbnN0IHMgPSBCdWZmZXIuZnJvbShzaWduYXR1cmUucy50b1N0cmluZygxNikucGFkU3RhcnQoNjQsICcwJyksICdoZXgnKTtcbiAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChbciwgc10pLnRvU3RyaW5nKCdoZXgnKTtcbiAgfTtcbn1cblxuY29uc3QgdXRpbHMgPSBuZXcgVXRpbHMoKTtcbmV4cG9ydCBkZWZhdWx0IHV0aWxzO1xuIl19
|
|
645
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQU95QjtBQUN6QixrREFBbUU7QUFDbkUsc0RBQXdDO0FBQ3hDLG9EQUE0QjtBQUM1QixvREFBMkI7QUFDM0IsbUNBU2lCO0FBQ2pCLHVDQUFrRDtBQUNsRCxtQ0FBd0MsQ0FBQyxnTUFBZ007QUFDek8sMERBQWtDO0FBQ2xDLGdFQUFxQztBQUNyQyx1REFBb0Q7QUFDcEQsNERBQWtDO0FBQ2xDLHVEQUFvRDtBQUVwRCxNQUFhLEtBQUs7SUFBbEI7UUF1bkJFLGdCQUFXLEdBQUcsQ0FBQyxVQUFrQixFQUFFLFVBQWtCLEVBQVUsRUFBRTtZQUMvRCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN2RCxNQUFNLFdBQVcsR0FBRyxnQkFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckcsTUFBTSxTQUFTLEdBQUcscUJBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQy9ELE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN6RSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFB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QU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsY0FBYyxDQUFDLElBQVk7UUFDekIsd0RBQXdEO1FBQ3hELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxXQUFXLENBQUMsSUFBWTtRQUN0QixPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixvQkFBb0IsQ0FBQyxJQUFZO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsYUFBYSxDQUFDLFlBQTBCLEVBQUUsZUFBdUIsRUFBRSxnQkFBd0I7UUFDekYsT0FBTyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3QyxlQUFlLEVBQUUsT0FBTztZQUN4QixjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWM7WUFDdEMsVUFBVSxFQUFFO2dCQUNWLFNBQVMsRUFBRSxlQUFlO2dCQUMxQixVQUFVLEVBQUUsaUJBQVMsQ0FBQyxTQUFTO2FBQ2hDO1lBQ0QsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQztTQUNqRSxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7Q0FVRjtBQS9uQkQsc0JBK25CQztBQUVELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7QUFDMUIsa0JBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZVV0aWxzLFxuICBLZXlQYWlyLFxuICBQYXJzZVRyYW5zYWN0aW9uRXJyb3IsXG4gIFJlY2lwaWVudCxcbiAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxuICBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgUHJpbmNpcGFsIGFzIERmaW5pdHlQcmluY2lwYWwgfSBmcm9tICdAZGZpbml0eS9wcmluY2lwYWwnO1xuaW1wb3J0ICogYXMgYWdlbnQgZnJvbSAnQGRmaW5pdHkvYWdlbnQnO1xuaW1wb3J0IGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IGNyYzMyIGZyb20gJ2NyYy0zMic7XG5pbXBvcnQge1xuICBIdHRwQ2FuaXN0ZXJVcGRhdGUsXG4gIEljcFRyYW5zYWN0aW9uRGF0YSxcbiAgUmVxdWVzdFR5cGUsXG4gIFNpZ25hdHVyZXMsXG4gIEljcE1ldGFkYXRhLFxuICBTZW5kQXJncyxcbiAgUGF5bG9hZHNEYXRhLFxuICBDdXJ2ZVR5cGUsXG59IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgS2V5UGFpciBhcyBJY3BLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IGRlY29kZSwgZW5jb2RlIH0gZnJvbSAnY2Jvci14JzsgLy8gVGhlIFwiY2Jvci14XCIgbGlicmFyeSBpcyB1c2VkIGhlcmUgYmVjYXVzZSBpdCBzdXBwb3J0cyBtb2Rlcm4gZmVhdHVyZXMgbGlrZSBCaWdJbnQuIGRvIG5vdCByZXBsYWNlIGl0IHdpdGggXCJjYm9yIGFzIFwiY2JvclwiIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggUnVzdCdzIHNlcmRlX2Nib3Igd2hlbiBoYW5kbGluZyBiaWcgbnVtYmVycy5cbmltcG9ydCBqc19zaGEyNTYgZnJvbSAnanMtc2hhMjU2JztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IHNlY3AyNTZrMSB9IGZyb20gJ0Bub2JsZS9jdXJ2ZXMvc2VjcDI1NmsxJztcbmltcG9ydCBwcm90b2J1ZiBmcm9tICdwcm90b2J1ZmpzJztcbmltcG9ydCB7IHByb3RvRGVmaW5pdGlvbiB9IGZyb20gJy4vcHJvdG9EZWZpbml0aW9uJztcblxuZXhwb3J0IGNsYXNzIFV0aWxzIGltcGxlbWVudHMgQmFzZVV0aWxzIHtcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgTWV0aG9kTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldHMgdGhlIGdhcyBkYXRhIG9mIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqL1xuICAvL1RPRE8gV0lOLTQyNDI6IHRvIG1vdmVkIHRvIGEgY29uZmlnIGFuZCBldmVudHVhbGx5IHRvIGFuIEFQSSBmb3IgZHluYW1pYyB2YWx1ZVxuICBnYXNEYXRhKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICctMTAwMDAnO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgcHJvdmlkZWQgYWRkcmVzcyBpcyBhIHZhbGlkIElDUCBhZGRyZXNzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIFRoZSBhZGRyZXNzIHRvIHZhbGlkYXRlLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYWRkcmVzcyBpcyB2YWxpZCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gICAqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCByb290QWRkcmVzcyA9IHRoaXMudmFsaWRhdGVNZW1vQW5kUmV0dXJuUm9vdEFkZHJlc3MoYWRkcmVzcyk7XG4gICAgcmV0dXJuIHJvb3RBZGRyZXNzICE9PSB1bmRlZmluZWQgJiYgdGhpcy5pc1ZhbGlkSGFzaChyb290QWRkcmVzcyk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBtZW1vIElEIGluIHRoZSBhZGRyZXNzIGFuZCByZXR1cm5zIHRoZSByb290IGFkZHJlc3MuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIC0gVGhlIGFkZHJlc3MgdG8gdmFsaWRhdGUgYW5kIGV4dHJhY3QgdGhlIHJvb3QgYWRkcmVzcyBmcm9tLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSAtIFRoZSByb290IGFkZHJlc3MgaWYgdmFsaWQsIG90aGVyd2lzZSBgdW5kZWZpbmVkYC5cbiAgICovXG4gIHZhbGlkYXRlTWVtb0FuZFJldHVyblJvb3RBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFhZGRyZXNzKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBbcm9vdEFkZHJlc3MsIG1lbW9JZF0gPSBhZGRyZXNzLnNwbGl0KCc/bWVtb0lkPScpO1xuICAgIGlmIChtZW1vSWQgJiYgdGhpcy52YWxpZGF0ZU1lbW8oQmlnSW50KG1lbW9JZCkpKSB7XG4gICAgICByZXR1cm4gcm9vdEFkZHJlc3M7XG4gICAgfVxuICAgIHJldHVybiBhZGRyZXNzO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgcHJvdmlkZWQgaGV4IHN0cmluZyBpcyBhIHZhbGlkIHB1YmxpYyBrZXkuXG4gICAqXG4gICAqIEEgdmFsaWQgcHVibGljIGtleSBjYW4gYmUgZWl0aGVyIGNvbXByZXNzZWQgb3IgdW5jb21wcmVzc2VkOlxuICAgKiAtIENvbXByZXNzZWQgcHVibGljIGtleXMgYXJlIDMzIGJ5dGVzIGxvbmcgYW5kIHN0YXJ0IHdpdGggZWl0aGVyIDB4MDIgb3IgMHgwMy5cbiAgICogLSBVbmNvbXByZXNzZWQgcHVibGljIGtleXMgYXJlIDY1IGJ5dGVzIGxvbmcgYW5kIHN0YXJ0IHdpdGggMHgwNC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGhleFN0ciAtIFRoZSBoZXggc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwdWJsaWMga2V5IHRvIHZhbGlkYXRlLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgaGV4IHN0cmluZyBpcyBhIHZhbGlkIHB1YmxpYyBrZXksIG90aGVyd2lzZSBgZmFsc2VgLlxuICAgKi9cbiAgaXNWYWxpZFB1YmxpY0tleShoZXhTdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkSGV4KGhleFN0cikgfHwgIXRoaXMuaXNWYWxpZExlbmd0aChoZXhTdHIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgcHViS2V5Qnl0ZXMgPSB0aGlzLmhleFRvQnl0ZXMoaGV4U3RyKTtcbiAgICBjb25zdCBmaXJzdEJ5dGUgPSBwdWJLZXlCeXRlc1swXTtcbiAgICBjb25zdCB2YWxpZENvbXByZXNzZWQgPSBwdWJLZXlCeXRlcy5sZW5ndGggPT09IDMzICYmIChmaXJzdEJ5dGUgPT09IDIgfHwgZmlyc3RCeXRlID09PSAzKTtcbiAgICBjb25zdCB2YWxpZFVuY29tcHJlc3NlZCA9IHB1YktleUJ5dGVzLmxlbmd0aCA9PT0gNjUgJiYgZmlyc3RCeXRlID09PSA0O1xuXG4gICAgcmV0dXJuIHZhbGlkQ29tcHJlc3NlZCB8fCB2YWxpZFVuY29tcHJlc3NlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNvZGVzIGEgdmFsdWUgaW50byBDQk9SIGZvcm1hdCBhbmQgcmV0dXJucyBpdCBhcyBhIGhleCBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB7dW5rbm93bn0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gZW5jb2RlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSBDQk9SIGVuY29kZWQgdmFsdWUgYXMgYSBoZXggc3RyaW5nLlxuICAgKi9cbiAgY2JvckVuY29kZSh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVmFsdWUgdG8gZW5jb2RlIGNhbm5vdCBiZSB1bmRlZmluZWQuJyk7XG4gICAgfVxuICAgIGNvbnN0IGNib3JEYXRhID0gZW5jb2RlKHZhbHVlKTtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oY2JvckRhdGEpLnRvU3RyaW5nKCdoZXgnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGxlbmd0aCBvZiB0aGUgZ2l2ZW4gaGV4YWRlY2ltYWwgc3RyaW5nIGlzIHZhbGlkLlxuICAgKiBBIHZhbGlkIGxlbmd0aCBpcyBlaXRoZXIgNjYgY2hhcmFjdGVycyAoMzMgYnl0ZXMpIG9yIDEzMCBjaGFyYWN0ZXJzICg2NSBieXRlcykuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBoZXhTdHIgLSBUaGUgaGV4YWRlY2ltYWwgc3RyaW5nIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgbGVuZ3RoIGlzIHZhbGlkLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAgICovXG4gIGlzVmFsaWRMZW5ndGgoaGV4U3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaGV4U3RyLmxlbmd0aCAvIDIgPT09IDMzIHx8IGhleFN0ci5sZW5ndGggLyAyID09PSA2NTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIHByb3ZpZGVkIHN0cmluZyBpcyBhIHZhbGlkIGhleGFkZWNpbWFsIHN0cmluZy5cbiAgICpcbiAgICogQSB2YWxpZCBoZXhhZGVjaW1hbCBzdHJpbmcgY29uc2lzdHMgb2YgcGFpcnMgb2YgaGV4YWRlY2ltYWwgZGlnaXRzICgwLTksIGEtZiwgQS1GKS5cbiAgICpcbiAgICogQHBhcmFtIGhleFN0ciAtIFRoZSBzdHJpbmcgdG8gYmUgdmFsaWRhdGVkIGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBoZXhhZGVjaW1hbCBzdHJpbmcsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGlzVmFsaWRIZXgoaGV4U3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL14oWzAtOWEtZkEtRl17Mn0pKyQvLnRlc3QoaGV4U3RyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIGhleGFkZWNpbWFsIHN0cmluZyB0byBhIFVpbnQ4QXJyYXkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBoZXggLSBUaGUgaGV4YWRlY2ltYWwgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtVaW50OEFycmF5fSBUaGUgcmVzdWx0aW5nIGJ5dGUgYXJyYXkuXG4gICAqL1xuICBoZXhUb0J5dGVzKGhleDogc3RyaW5nKTogVWludDhBcnJheSB7XG4gICAgY29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShoZXgubGVuZ3RoIC8gMik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZXgubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgIGJ5dGVzW2kgLyAyXSA9IHBhcnNlSW50KGhleC5zdWJzdHIoaSwgMiksIDE2KTtcbiAgICB9XG4gICAgcmV0dXJuIGJ5dGVzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRQcml2YXRlS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZEtleShrZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBrZXkgaXMgYSB2YWxpZCBJQ1AgcHJpdmF0ZSBrZXkuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gYXR0ZW1wdHMgdG8gY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGBJY3BLZXlQYWlyYCB1c2luZyB0aGUgcHJvdmlkZWQga2V5LlxuICAgKiBJZiB0aGUga2V5IGlzIHZhbGlkLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBgdHJ1ZWAuIElmIHRoZSBrZXkgaXMgaW52YWxpZCwgYW4gZXJyb3IgaXMgdGhyb3duLFxuICAgKiBhbmQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYGZhbHNlYC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBwcml2YXRlIGtleSB0byB2YWxpZGF0ZS5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gYHRydWVgIGlmIHRoZSBrZXkgaXMgdmFsaWQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgaXNWYWxpZEtleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBuZXcgSWNwS2V5UGFpcih7IHBydjoga2V5IH0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbXByZXNzZXMgYW4gdW5jb21wcmVzc2VkIHB1YmxpYyBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1bmNvbXByZXNzZWRLZXkgLSBUaGUgdW5jb21wcmVzc2VkIHB1YmxpYyBrZXkgaW4gaGV4YWRlY2ltYWwgZm9ybWF0LlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSBjb21wcmVzc2VkIHB1YmxpYyBrZXkgaW4gaGV4YWRlY2ltYWwgZm9ybWF0LlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBJZiB0aGUgaW5wdXQga2V5IGlzIG5vdCBhIHZhbGlkIHVuY29tcHJlc3NlZCBwdWJsaWMga2V5LlxuICAgKi9cbiAgY29tcHJlc3NQdWJsaWNLZXkodW5jb21wcmVzc2VkS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh1bmNvbXByZXNzZWRLZXkuc3RhcnRzV2l0aCgnMDInKSB8fCB1bmNvbXByZXNzZWRLZXkuc3RhcnRzV2l0aCgnMDMnKSkge1xuICAgICAgcmV0dXJuIHVuY29tcHJlc3NlZEtleTtcbiAgICB9XG4gICAgaWYgKCF1bmNvbXByZXNzZWRLZXkuc3RhcnRzV2l0aCgnMDQnKSB8fCB1bmNvbXByZXNzZWRLZXkubGVuZ3RoICE9PSAxMzApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB1bmNvbXByZXNzZWQgcHVibGljIGtleSBmb3JtYXQuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgeEhleCA9IHVuY29tcHJlc3NlZEtleS5zbGljZSgyLCA2Nik7XG4gICAgY29uc3QgeUhleCA9IHVuY29tcHJlc3NlZEtleS5zbGljZSg2Nik7XG4gICAgY29uc3QgeSA9IEJpZ0ludChgMHgke3lIZXh9YCk7XG4gICAgY29uc3QgcHJlZml4ID0geSAlIDJuID09PSAwbiA/ICcwMicgOiAnMDMnO1xuXG4gICAgcmV0dXJuIGAke3ByZWZpeH0ke3hIZXh9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIHB1YmxpYyBrZXkgZnJvbSBpdHMgaGV4YWRlY2ltYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIHRvIERFUiBmb3JtYXQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwdWJsaWNLZXlIZXggLSBUaGUgcHVibGljIGtleSBpbiBoZXhhZGVjaW1hbCBzdHJpbmcgZm9ybWF0LlxuICAgKiBAcmV0dXJucyBUaGUgcHVibGljIGtleSBpbiBERVIgZm9ybWF0IGFzIGEgVWludDhBcnJheS5cbiAgICovXG4gIGdldFB1YmxpY0tleUluREVSRm9ybWF0KHB1YmxpY0tleUhleDogc3RyaW5nKTogVWludDhBcnJheSB7XG4gICAgY29uc3QgcHVibGljS2V5QnVmZmVyID0gQnVmZmVyLmZyb20ocHVibGljS2V5SGV4LCAnaGV4Jyk7XG4gICAgY29uc3QgZWxsaXB0aWNLZXkgPSBzZWNwMjU2azEuUHJvamVjdGl2ZVBvaW50LmZyb21IZXgocHVibGljS2V5QnVmZmVyLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgY29uc3QgdW5jb21wcmVzc2VkUHVibGljS2V5SGV4ID0gZWxsaXB0aWNLZXkudG9IZXgoZmFsc2UpO1xuICAgIGNvbnN0IGRlckVuY29kZWRLZXkgPSBhZ2VudC53cmFwREVSKEJ1ZmZlci5mcm9tKHVuY29tcHJlc3NlZFB1YmxpY0tleUhleCwgJ2hleCcpLCBhZ2VudC5TRUNQMjU2SzFfT0lEKTtcbiAgICByZXR1cm4gZGVyRW5jb2RlZEtleTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIHB1YmxpYyBrZXkgaW4gaGV4YWRlY2ltYWwgZm9ybWF0IHRvIGEgRGZpbml0eSBQcmluY2lwYWwgSUQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwdWJsaWNLZXlIZXggLSBUaGUgcHVibGljIGtleSBpbiBoZXhhZGVjaW1hbCBmb3JtYXQuXG4gICAqIEByZXR1cm5zIFRoZSBjb3JyZXNwb25kaW5nIERmaW5pdHkgUHJpbmNpcGFsIElELlxuICAgKi9cbiAgZ2V0UHJpbmNpcGFsSWRGcm9tUHVibGljS2V5KHB1YmxpY0tleUhleDogc3RyaW5nKTogRGZpbml0eVByaW5jaXBhbCB7XG4gICAgY29uc3QgZGVyRW5jb2RlZEtleSA9IHRoaXMuZ2V0UHVibGljS2V5SW5ERVJGb3JtYXQocHVibGljS2V5SGV4KTtcbiAgICBjb25zdCBwcmluY2lwYWxJZCA9IERmaW5pdHlQcmluY2lwYWwuc2VsZkF1dGhlbnRpY2F0aW5nKEJ1ZmZlci5mcm9tKGRlckVuY29kZWRLZXkpKTtcbiAgICByZXR1cm4gcHJpbmNpcGFsSWQ7XG4gIH1cblxuICAvKipcbiAgICogRGVyaXZlcyBhIERmaW5pdHlQcmluY2lwYWwgZnJvbSBhIGdpdmVuIHB1YmxpYyBrZXkgaW4gaGV4YWRlY2ltYWwgZm9ybWF0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHVibGljS2V5SGV4IC0gVGhlIHB1YmxpYyBrZXkgaW4gaGV4YWRlY2ltYWwgZm9ybWF0LlxuICAgKiBAcmV0dXJucyBUaGUgZGVyaXZlZCBEZmluaXR5UHJpbmNpcGFsLlxuICAgKiBAdGhyb3dzIFdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIHByaW5jaXBhbCBjYW5ub3QgYmUgZGVyaXZlZCBmcm9tIHRoZSBwdWJsaWMga2V5LlxuICAgKi9cbiAgZGVyaXZlUHJpbmNpcGFsRnJvbVB1YmxpY0tleShwdWJsaWNLZXlIZXg6IHN0cmluZyk6IERmaW5pdHlQcmluY2lwYWwge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZXJFbmNvZGVkS2V5ID0gdGhpcy5nZXRQdWJsaWNLZXlJbkRFUkZvcm1hdChwdWJsaWNLZXlIZXgpO1xuICAgICAgY29uc3QgcHJpbmNpcGFsSWQgPSBEZmluaXR5UHJpbmNpcGFsLnNlbGZBdXRoZW50aWNhdGluZyhCdWZmZXIuZnJvbShkZXJFbmNvZGVkS2V5KSk7XG4gICAgICBjb25zdCBwcmluY2lwYWwgPSBEZmluaXR5UHJpbmNpcGFsLmZyb21VaW50OEFycmF5KHByaW5jaXBhbElkLnRvVWludDhBcnJheSgpKTtcbiAgICAgIHJldHVybiBwcmluY2lwYWw7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGRlcml2ZSBwcmluY2lwYWwgZnJvbSBwdWJsaWMga2V5OiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgRGZpbml0eVByaW5jaXBhbCBhbmQgYW4gb3B0aW9uYWwgc3ViQWNjb3VudCB0byBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBhY2NvdW50IElELlxuICAgKlxuICAgKiBAcGFyYW0ge0RmaW5pdHlQcmluY2lwYWx9IHByaW5jaXBhbCAtIFRoZSBwcmluY2lwYWwgdG8gY29udmVydC5cbiAgICogQHBhcmFtIHtVaW50OEFycmF5fSBbc3ViQWNjb3VudD1uZXcgVWludDhBcnJheSgzMildIC0gQW4gb3B0aW9uYWwgc3ViLWFjY291bnQsIGRlZmF1bHRzIHRvIGEgMzItYnl0ZSBhcnJheSBvZiB6ZXJvcy5cbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGhleGFkZWNpbWFsIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgYWNjb3VudCBJRC5cbiAgICovXG4gIGZyb21QcmluY2lwYWwocHJpbmNpcGFsOiBEZmluaXR5UHJpbmNpcGFsLCBzdWJBY2NvdW50OiBVaW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoMzIpKTogc3RyaW5nIHtcbiAgICBjb25zdCBwcmluY2lwYWxCeXRlcyA9IEJ1ZmZlci5mcm9tKHByaW5jaXBhbC50b1VpbnQ4QXJyYXkoKS5idWZmZXIpO1xuICAgIHJldHVybiB0aGlzLmdldEFjY291bnRJZEZyb21QcmluY2lwYWxCeXRlcyh0aGlzLmdldEFjY291bnRJZFByZWZpeCgpLCBwcmluY2lwYWxCeXRlcywgc3ViQWNjb3VudCk7XG4gIH1cblxuICBnZXRBY2NvdW50SWRGcm9tUHJpbmNpcGFsQnl0ZXMoXG4gICAgQUNDT1VOVF9JRF9QUkVGSVg6IEJ1ZmZlcjxBcnJheUJ1ZmZlcj4sXG4gICAgcHJpbmNpcGFsQnl0ZXM6IEJ1ZmZlcjxBcnJheUJ1ZmZlckxpa2U+LFxuICAgIHN1YkFjY291bnQ6IFVpbnQ4QXJyYXk8QXJyYXlCdWZmZXJMaWtlPlxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvbWJpbmVkQnl0ZXMgPSBCdWZmZXIuY29uY2F0KFtBQ0NPVU5UX0lEX1BSRUZJWCwgcHJpbmNpcGFsQnl0ZXMsIHN1YkFjY291bnRdKTtcbiAgICBjb25zdCBzaGEyMjRIYXNoID0gY3J5cHRvLmNyZWF0ZUhhc2goJ3NoYTIyNCcpLnVwZGF0ZShjb21iaW5lZEJ5dGVzKS5kaWdlc3QoKTtcbiAgICBjb25zdCBjaGVja3N1bSA9IEJ1ZmZlci5hbGxvYyg0KTtcbiAgICBjaGVja3N1bS53cml0ZVVJbnQzMkJFKGNyYzMyLmJ1ZihzaGEyMjRIYXNoKSA+Pj4gMCwgMCk7XG4gICAgY29uc3QgYWNjb3VudElkQnl0ZXMgPSBCdWZmZXIuY29uY2F0KFtjaGVja3N1bSwgc2hhMjI0SGFzaF0pO1xuICAgIHJldHVybiBhY2NvdW50SWRCeXRlcy50b1N0cmluZygnaGV4Jyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGhleC1lbmNvZGVkIHB1YmxpYyBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBoZXhFbmNvZGVkUHVibGljS2V5IC0gVGhlIHB1YmxpYyBrZXkgaW4gaGV4LWVuY29kZWQgZm9ybWF0LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgYWRkcmVzcyBkZXJpdmVkIGZyb20gdGhlIHByb3ZpZGVkIHB1YmxpYyBrZXkuXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIHByb3ZpZGVkIHB1YmxpYyBrZXkgaXMgbm90IGluIGEgdmFsaWQgaGV4LWVuY29kZWQgZm9ybWF0LlxuICAgKi9cbiAgYXN5bmMgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkoaGV4RW5jb2RlZFB1YmxpY0tleTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZFB1YmxpY0tleShoZXhFbmNvZGVkUHVibGljS2V5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGhleC1lbmNvZGVkIHB1YmxpYyBrZXkgZm9ybWF0LicpO1xuICAgIH1cbiAgICBjb25zdCBjb21wcmVzc2VkS2V5ID0gdGhpcy5jb21wcmVzc1B1YmxpY0tleShoZXhFbmNvZGVkUHVibGljS2V5KTtcbiAgICBjb25zdCBrZXlQYWlyID0gbmV3IEljcEtleVBhaXIoeyBwdWI6IGNvbXByZXNzZWRLZXkgfSk7XG4gICAgcmV0dXJuIGtleVBhaXIuZ2V0QWRkcmVzcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIG5ldyBrZXkgcGFpci4gSWYgYSBzZWVkIGlzIHByb3ZpZGVkLCBpdCB3aWxsIGJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGtleSBwYWlyLlxuICAgKlxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gW3NlZWRdIC0gT3B0aW9uYWwgc2VlZCBmb3Iga2V5IGdlbmVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtLZXlQYWlyfSAtIFRoZSBnZW5lcmF0ZWQga2V5IHBhaXIgY29udGFpbmluZyBib3RoIHB1YmxpYyBhbmQgcHJpdmF0ZSBrZXlzLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBJZiB0aGUgcHJpdmF0ZSBrZXkgaXMgbWlzc2luZyBpbiB0aGUgZ2VuZXJhdGVkIGtleSBwYWlyLlxuICAgKi9cbiAgcHVibGljIGdlbmVyYXRlS2V5UGFpcihzZWVkPzogQnVmZmVyKTogS2V5UGFpciB7XG4gICAgY29uc3Qga2V5UGFpciA9IHNlZWQgPyBuZXcgSWNwS2V5UGFpcih7IHNlZWQgfSkgOiBuZXcgSWNwS2V5UGFpcigpO1xuICAgIGNvbnN0IHsgcHViLCBwcnYgfSA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICAgIGlmICghcHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ByaXZhdGUga2V5IGlzIG1pc3NpbmcgaW4gdGhlIGdlbmVyYXRlZCBrZXkgcGFpci4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgcHViLCBwcnYgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIHByb3ZpZGVkIGZlZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZlZSAtIFRoZSBmZWUgdG8gdmFsaWRhdGUuXG4gICAqIEB0aHJvd3Mge0J1aWxkVHJhbnNhY3Rpb25FcnJvcn0gLSBJZiB0aGUgZmVlIGlzIHplcm8gb3IgaW52YWxpZC5cbiAgICovXG4gIHZhbGlkYXRlRmVlKGZlZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZmVlVmFsdWUgPSBuZXcgQmlnTnVtYmVyKGZlZSk7XG4gICAgaWYgKGZlZVZhbHVlLmlzWmVybygpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdGZWUgY2Fubm90IGJlIHplcm8nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogQmlnTnVtYmVyKTogYm9vbGVhbiB7XG4gICAgaWYgKHZhbHVlLmlzTGVzc1RoYW5PckVxdWFsVG8oMCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ2Ftb3VudCBjYW5ub3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHplcm8nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBwcm92aWRlZCBtZW1vLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlciB8IEJpZ0ludH0gbWVtbyAtIFRoZSBtZW1vIHRvIHZhbGlkYXRlLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgbWVtbyBpcyB2YWxpZC5cbiAgICogQHRocm93cyB7QnVpbGRUcmFuc2FjdGlvbkVycm9yfSAtIElmIHRoZSBtZW1vIGlzIGludmFsaWQuXG4gICAqL1xuICB2YWxpZGF0ZU1lbW8obWVtbzogbnVtYmVyIHwgQmlnSW50KTogYm9vbGVhbiB7XG4gICAgY29uc3QgbWVtb051bWJlciA9IE51bWJlcihtZW1vKTtcbiAgICBpZiAobWVtb051bWJlciA8IDAgfHwgTnVtYmVyLmlzTmFOKG1lbW9OdW1iZXIpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIG1lbW8nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB2YWxpZGF0ZUV4cGlyZVRpbWUoZXhwaXJlVGltZTogbnVtYmVyIHwgQmlnSW50KTogYm9vbGVhbiB7XG4gICAgaWYgKE51bWJlcihleHBpcmVUaW1lKSA8IERhdGUubm93KCkgKiAxMDAwXzAwMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBleHBpcnkgdGltZScpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIHJhdyB0cmFuc2FjdGlvbiBkYXRhIHRvIGVuc3VyZSBpdCBoYXMgYSB2YWxpZCBmb3JtYXQgaW4gdGhlIGJsb2NrY2hhaW4gY29udGV4dC5cbiAgICpcbiAgICogQHBhcmFtIHtJY3BUcmFuc2FjdGlvbkRhdGF9IHRyYW5zYWN0aW9uRGF0YSAtIFRoZSB0cmFuc2FjdGlvbiBkYXRhIHRvIHZhbGlkYXRlLlxuICAgKiBAdGhyb3dzIHtQYXJzZVRyYW5zYWN0aW9uRXJyb3J9IElmIHRoZSB0cmFuc2FjdGlvbiBkYXRhIGlzIGludmFsaWQuXG4gICAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uRGF0YTogSWNwVHJhbnNhY3Rpb25EYXRhKTogdm9pZCB7XG4gICAgaWYgKCF0cmFuc2FjdGlvbkRhdGEpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIGRhdGEgaXMgbWlzc2luZy4nKTtcbiAgICB9XG4gICAgY29uc3QgeyBzZW5kZXJQdWJsaWNLZXlIZXgsIHNlbmRlckFkZHJlc3MsIHJlY2VpdmVyQWRkcmVzcyB9ID0gdHJhbnNhY3Rpb25EYXRhO1xuICAgIGlmICghdGhpcy5pc1ZhbGlkUHVibGljS2V5KHNlbmRlclB1YmxpY0tleUhleCkpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ1NlbmRlciBwdWJsaWMga2V5IGlzIGludmFsaWQuJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5pc1ZhbGlkQWRkcmVzcyhzZW5kZXJBZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignU2VuZGVyIGFkZHJlc3MgaXMgaW52YWxpZC4nKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmlzVmFsaWRBZGRyZXNzKHJlY2VpdmVyQWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ1JlY2VpdmVyIGFkZHJlc3MgaXMgaW52YWxpZC4nKTtcbiAgICB9XG4gICAgdGhpcy52YWxpZGF0ZUZlZSh0cmFuc2FjdGlvbkRhdGEuZmVlKTtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcih0cmFuc2FjdGlvbkRhdGEuYW1vdW50KSk7XG4gICAgdGhpcy52YWxpZGF0ZU1lbW8odHJhbnNhY3Rpb25EYXRhLm1lbW8pO1xuICAgIHRoaXMudmFsaWRhdGVFeHBpcmVUaW1lKHRyYW5zYWN0aW9uRGF0YS5leHBpcnlUaW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gdXBkYXRlXG4gICAqIEByZXR1cm5zIHtCdWZmZXJ9XG4gICAqL1xuICBnZW5lcmF0ZUh0dHBDYW5pc3RlclVwZGF0ZUlkKHVwZGF0ZTogSHR0cENhbmlzdGVyVXBkYXRlKTogQnVmZmVyIHtcbiAgICByZXR1cm4gdGhpcy5IdHRwQ2FuaXN0ZXJVcGRhdGVSZXByZXNlbnRhdGlvbkluZGVwZW5kZW50SGFzaCh1cGRhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIHJlcHJlc2VudGF0aW9uLWluZGVwZW5kZW50IGhhc2ggZm9yIGFuIEhUVFAgY2FuaXN0ZXIgdXBkYXRlLlxuICAgKlxuICAgKiBAcGFyYW0ge0h0dHBDYW5pc3RlclVwZGF0ZX0gdXBkYXRlIC0gVGhlIEhUVFAgY2FuaXN0ZXIgdXBkYXRlIG9iamVjdC5cbiAgICogQHJldHVybnMge0J1ZmZlcn0gLSBUaGUgaGFzaCBvZiB0aGUgdXBkYXRlIG9iamVjdC5cbiAgICovXG4gIEh0dHBDYW5pc3RlclVwZGF0ZVJlcHJlc2VudGF0aW9uSW5kZXBlbmRlbnRIYXNoKHVwZGF0ZTogSHR0cENhbmlzdGVyVXBkYXRlKTogQnVmZmVyIHtcbiAgICBjb25zdCB1cGRhdGVNYXAgPSB7XG4gICAgICByZXF1ZXN0X3R5cGU6IFJlcXVlc3RUeXBlLkNBTEwsXG4gICAgICBjYW5pc3Rlcl9pZDogdXBkYXRlLmNhbmlzdGVyX2lkLFxuICAgICAgbWV0aG9kX25hbWU6IHVwZGF0ZS5tZXRob2RfbmFtZSxcbiAgICAgIGFyZzogdXBkYXRlLmFyZyxcbiAgICAgIGluZ3Jlc3NfZXhwaXJ5OiB1cGRhdGUuaW5ncmVzc19leHBpcnksXG4gICAgICBzZW5kZXI6IHVwZGF0ZS5zZW5kZXIsXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5oYXNoT2ZNYXAodXBkYXRlTWFwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBTSEEtMjU2IGhhc2ggZm9yIGEgZ2l2ZW4gbWFwIG9iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gbWFwIC0gVGhlIG1hcCBvYmplY3QgdG8gaGFzaC5cbiAgICogQHJldHVybnMge0J1ZmZlcn0gLSBUaGUgcmVzdWx0aW5nIGhhc2ggYXMgYSBCdWZmZXIuXG4gICAqL1xuICBoYXNoT2ZNYXAobWFwOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogQnVmZmVyIHtcbiAgICBjb25zdCBoYXNoZXM6IEJ1ZmZlcltdID0gW107XG4gICAgZm9yIChjb25zdCBrZXkgaW4gbWFwKSB7XG4gICAgICBoYXNoZXMucHVzaCh0aGlzLmhhc2hLZXlWYWwoa2V5LCBtYXBba2V5XSkpO1xuICAgIH1cbiAgICBoYXNoZXMuc29ydCgoYnVmMCwgYnVmMSkgPT4gYnVmMC5jb21wYXJlKGJ1ZjEpKTtcbiAgICByZXR1cm4gdGhpcy5zaGEyNTYoaGFzaGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBoYXNoIGZvciBhIGtleS12YWx1ZSBwYWlyLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIGtleSB0byBoYXNoLlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IEJ1ZmZlciB8IEJpZ0ludH0gdmFsIC0gVGhlIHZhbHVlIHRvIGhhc2guXG4gICAqIEByZXR1cm5zIHtCdWZmZXJ9IC0gVGhlIHJlc3VsdGluZyBoYXNoIGFzIGEgQnVmZmVyLlxuICAgKi9cbiAgaGFzaEtleVZhbChrZXk6IHN0cmluZywgdmFsOiBhbnkpOiBCdWZmZXIge1xuICAgIGNvbnN0IGtleUhhc2ggPSB0aGlzLmhhc2hTdHJpbmcoa2V5KTtcbiAgICBjb25zdCB2YWxIYXNoID0gdGhpcy5oYXNoVmFsKHZhbCk7XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW2tleUhhc2gsIHZhbEhhc2hdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBTSEEtMjU2IGhhc2ggZm9yIGEgZ2l2ZW4gc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLSBUaGUgc3RyaW5nIHRvIGhhc2guXG4gICAqIEByZXR1cm5zIHtCdWZmZXJ9IC0gVGhlIHJlc3VsdGluZyBoYXNoIGFzIGEgQnVmZmVyLlxuICAgKi9cbiAgaGFzaFN0cmluZyh2YWx1ZTogc3RyaW5nKTogQnVmZmVyIHtcbiAgICByZXR1cm4gdGhpcy5zaGEyNTYoW0J1ZmZlci5mcm9tKHZhbHVlKV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIGhhc2ggZm9yIGEgNjQtYml0IHVuc2lnbmVkIGludGVnZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7YmlnaW50fSBuIC0gVGhlIDY0LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHRvIGhhc2guXG4gICAqIEByZXR1cm5zIHtCdWZmZXJ9IC0gVGhlIHJlc3VsdGluZyBoYXNoIGFzIGEgQnVmZmVyLlxuICAgKi9cbiAgaGFzaFU2NChuOiBiaWdpbnQpOiBCdWZmZXIge1xuICAgIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgxMCk7XG4gICAgbGV0IGkgPSAwO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBjb25zdCBieXRlID0gTnVtYmVyKG4gJiBCaWdJbnQoMHg3ZikpO1xuICAgICAgbiA+Pj0gQmlnSW50KDcpO1xuICAgICAgaWYgKG4gPT09IEJpZ0ludCgwKSkge1xuICAgICAgICBidWZbaV0gPSBieXRlO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJ1ZltpXSA9IGJ5dGUgfCAweDgwO1xuICAgICAgICArK2k7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmhhc2hCeXRlcyhidWYuc3ViYXJyYXkoMCwgaSArIDEpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBTSEEtMjU2IGhhc2ggZm9yIGFuIGFycmF5IG9mIGVsZW1lbnRzLlxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5PGFueT59IGVsZW1lbnRzIC0gVGhlIGFycmF5IG9mIGVsZW1lbnRzIHRvIGhhc2guXG4gICAqIEByZXR1cm5zIHtCdWZmZXJ9IC0gVGhlIHJlc3VsdGluZyBoYXNoIGFzIGEgQnVmZmVyLlxuICAgKi9cbiAgaGFzaEFycmF5KGVsZW1lbnRzOiBBcnJheTxhbnk+KTogQnVmZmVyIHtcbiAgICByZXR1cm4gdGhpcy5zaGEyNTYoZWxlbWVudHMubWFwKHRoaXMuaGFzaFZhbCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIGhhc2ggZm9yIGEgZ2l2ZW4gdmFsdWUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgQnVmZmVyIHwgQmlnSW50IHwgbnVtYmVyIHwgQXJyYXk8dW5rbm93bj59IHZhbCAtIFRoZSB2YWx1ZSB0byBoYXNoLlxuICAgKiBAcmV0dXJucyB7QnVmZmVyfSAtIFRoZSByZXN1bHRpbmcgaGFzaCBhcyBhIEJ1ZmZlci5cbiAgICogQHRocm93cyB7RXJyb3J9IC0gSWYgdGhlIHZhbHVlIHR5cGUgaXMgdW5zdXBwb3J0ZWQuXG4gICAqL1xuICBoYXNoVmFsKHZhbDogc3RyaW5nIHwgQnVmZmVyIHwgQmlnSW50IHwgbnVtYmVyIHwgQXJyYXk8dW5rbm93bj4pOiBCdWZmZXIge1xuICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHV0aWxzLmhhc2hTdHJpbmcodmFsKTtcbiAgICB9IGVsc2UgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWwpKSB7XG4gICAgICByZXR1cm4gdXRpbHMuaGFzaEJ5dGVzKHZhbCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnYmlnaW50JyB8fCB0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHV0aWxzLmhhc2hVNjQoQmlnSW50KHZhbCkpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgICByZXR1cm4gdXRpbHMuaGFzaEFycmF5KHZhbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgdmFsdWUgdHlwZSBmb3IgaGFzaGluZzogJHt0eXBlb2YgdmFsfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgU0hBLTI1NiBoYXNoIG9mIHRoZSBnaXZlbiBidWZmZXIuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBidWZmZXIgdG8gaGFzaC5cbiAgICogQHJldHVybnMgVGhlIFNIQS0yNTYgaGFzaCBvZiB0aGUgaW5wdXQgYnVmZmVyLlxuICAgKi9cbiAgaGFzaEJ5dGVzKHZhbHVlOiBCdWZmZXIpOiBCdWZmZXIge1xuICAgIHJldHVybiB0aGlzLnNoYTI1NihbdmFsdWVdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgU0hBLTI1NiBoYXNoIG9mIHRoZSBwcm92aWRlZCBhcnJheSBvZiBCdWZmZXIgY2h1bmtzLlxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5PEJ1ZmZlcj59IGNodW5rcyAtIEFuIGFycmF5IG9mIEJ1ZmZlciBvYmplY3RzIHRvIGJlIGhhc2hlZC5cbiAgICogQHJldHVybnMge0J1ZmZlcn0gLSBUaGUgcmVzdWx0aW5nIFNIQS0yNTYgaGFzaCBhcyBhIEJ1ZmZlci5cbiAgICovXG4gIHNoYTI1NihjaHVua3M6IEFycmF5PEJ1ZmZlcj4pOiBCdWZmZXIge1xuICAgIGNvbnN0IGhhc2hlciA9IGpzX3NoYTI1Ni5zaGEyNTYuY3JlYXRlKCk7XG4gICAgY2h1bmtzLmZvckVhY2goKGNodW5rKSA9PiBoYXNoZXIudXBkYXRlKGNodW5rKSk7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGhhc2hlci5hcnJheUJ1ZmZlcigpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIGhleGFkZWNpbWFsIHN0cmluZyB0byBhIEJ1ZmZlci5cbiAgICpcbiAgICogQHBhcmFtIGhleCAtIFRoZSBoZXhhZGVjaW1hbCBzdHJpbmcgdG8gY29udmVydC5cbiAgICogQHJldHVybnMgQSBCdWZmZXIgY29udGFpbmluZyB0aGUgYmluYXJ5IGRhdGEgcmVwcmVzZW50ZWQgYnkgdGhlIGhleGFkZWNpbWFsIHN0cmluZy5cbiAgICovXG4gIGJsb2JGcm9tSGV4KGhleDogc3RyaW5nKTogQnVmZmVyIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oaGV4LCAnaGV4Jyk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBiaW5hcnkgYmxvYiAoQnVmZmVyKSB0byBhIGhleGFkZWNpbWFsIHN0cmluZy5cbiAgICpcbiAgICogQHBhcmFtIHtCdWZmZXJ9IGJsb2IgLSBUaGUgYmluYXJ5IGRhdGEgdG8gYmUgY29udmVydGVkLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGJpbmFyeSBkYXRhLlxuICAgKi9cbiAgYmxvYlRvSGV4KGJsb2I6IEJ1ZmZlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGJsb2IudG9TdHJpbmcoJ2hleCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZXMgYSBnaXZlbiBDQk9SLWVuY29kZWQgYnVmZmVyLlxuICAgKlxuICAgKiBAcGFyYW0gYnVmZmVyIC0gVGhlIENCT1ItZW5jb2RlZCBidWZmZXIgdG8gZGVjb2RlLlxuICAgKiBAcmV0dXJucyBUaGUgZGVjb2RlZCBkYXRhLlxuICAgKi9cbiAgY2JvckRlY29kZShidWZmZXI6IEJ1ZmZlcik6IHVua25vd24ge1xuICAgIGNvbnN0IHJlcyA9IGRlY29kZShidWZmZXIpO1xuICAgIHJldHVybiByZXM7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgQnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRvbWFpbiBJQyByZXF1ZXN0IHN0cmluZy5cbiAgICpcbiAgICogQHJldHVybnMge0J1ZmZlcn0gQSBCdWZmZXIgb2JqZWN0IGluaXRpYWxpemVkIHdpdGggdGhlIHN0cmluZyAnXFx4MEFpYy1yZXF1ZXN0Jy5cbiAgICovXG4gIGdldERvbWFpbklDUmVxdWVzdCgpOiBCdWZmZXIge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSgnXFx4MEFpYy1yZXF1ZXN0Jyk7XG4gIH1cblxuICAvKipcbiAgICogQ29tYmluZXMgdGhlIGRvbWFpbiBJQyByZXF1ZXN0IGJ1ZmZlciB3aXRoIHRoZSBwcm92aWRlZCBtZXNzYWdlIElEIGJ1ZmZlciB0byBjcmVhdGUgc2lnbmF0dXJlIGRhdGEuXG4gICAqXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBtZXNzYWdlSWQgLSBUaGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIG1lc3NhZ2UgSUQuXG4gICAqIEByZXR1cm5zIHtCdWZmZXJ9IC0gVGhlIGNvbmNhdGVuYXRlZCBidWZmZXIgY29udGFpbmluZyB0aGUgZG9tYWluIElDIHJlcXVlc3QgYW5kIHRoZSBtZXNzYWdlIElELlxuICAgKi9cbiAgbWFrZVNpZ25hdHVyZURhdGEobWVzc2FnZUlkOiBCdWZmZXIpOiBCdWZmZXIge1xuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KFt0aGlzLmdldERvbWFpbklDUmVxdWVzdCgpLCBtZXNzYWdlSWRdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0cyB0aGUgcmVjaXBpZW50IGluZm9ybWF0aW9uIGZyb20gdGhlIHByb3ZpZGVkIElDUCB0cmFuc2FjdGlvbiBkYXRhLlxuICAgKlxuICAgKiBAcGFyYW0ge0ljcFRyYW5zYWN0aW9uRGF0YX0gaWNwVHJhbnNhY3Rpb25EYXRhIC0gVGhlIElDUCB0cmFuc2FjdGlvbiBkYXRhIGNvbnRhaW5pbmcgdGhlIHJlY2VpdmVyJ3MgYWRkcmVzcyBhbmQgYW1vdW50LlxuICAgKiBAcmV0dXJucyB7UmVjaXBpZW50W119IEFuIGFycmF5IGNvbnRhaW5pbmcgYSBzaW5nbGUgcmVjaXBpZW50IG9iamVjdCB3aXRoIHRoZSByZWNlaXZlcidzIGFkZHJlc3MgYW5kIGFtb3VudC5cbiAgICovXG4gIGdldFJlY2lwaWVudHMoaWNwVHJhbnNhY3Rpb25EYXRhOiBJY3BUcmFuc2FjdGlvbkRhdGEpOiBSZWNpcGllbnQge1xuICAgIHJldHVybiB7XG4gICAgICBhZGRyZXNzOiBpY3BUcmFuc2FjdGlvbkRhdGEucmVjZWl2ZXJBZGRyZXNzLFxuICAgICAgYW1vdW50OiBpY3BUcmFuc2FjdGlvbkRhdGEuYW1vdW50LFxuICAgIH07XG4gIH1cblxuICBnZXRUcmFuc2FjdGlvblNpZ25hdHVyZShzaWduYXR1cmVNYXA6IE1hcDxzdHJpbmcsIFNpZ25hdHVyZXM+LCB1cGRhdGU6IEh0dHBDYW5pc3RlclVwZGF0ZSk6IFNpZ25hdHVyZXMgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBzaWduYXR1cmVNYXAuZ2V0KHRoaXMuYmxvYlRvSGV4KHRoaXMubWFrZVNpZ25hdHVyZURhdGEodGhpcy5nZW5lcmF0ZUh0dHBDYW5pc3RlclVwZGF0ZUlkKHVwZGF0ZSkpKSk7XG4gIH1cblxuICBnZXRNZXRhRGF0YShcbiAgICBtZW1vOiBudW1iZXIgfCBCaWdJbnQsXG4gICAgdGltZXN0YW1wOiBudW1iZXIgfCBiaWdpbnQgfCB1bmRlZmluZWRcbiAgKTogeyBtZXRhRGF0YTogSWNwTWV0YWRhdGE7IGluZ3Jlc3NFbmRUaW1lOiBudW1iZXIgfCBCaWdJbnQgfSB7XG4gICAgbGV0IGN1cnJlbnRUaW1lID0gRGF0ZS5ub3coKSAqIDEwMDAwMDA7XG4gICAgaWYgKHRpbWVzdGFtcCkge1xuICAgICAgY3VycmVudFRpbWUgPSBOdW1iZXIodGltZXN0YW1wKTtcbiAgICB9XG4gICAgY29uc3QgaW5ncmVzc1N0YXJ0VGltZSA9IGN1cnJlbnRUaW1lO1xuICAgIGNvbnN0IGluZ3Jlc3NFbmRUaW1lID0gaW5ncmVzc1N0YXJ0VGltZSArIDUgKiA2MCAqIDEwMDAwMDAwMDA7IC8vIDUgbWlucyBpbiBuYW5vc2Vjb25kc1xuICAgIGNvbnN0IG1ldGFEYXRhOiBJY3BNZXRhZGF0YSA9IHtcbiAgICAgIGNyZWF0ZWRfYXRfdGltZTogY3VycmVudFRpbWUsXG4gICAgICBtZW1vOiBtZW1vLFxuICAgICAgaW5ncmVzc19zdGFydDogaW5ncmVzc1N0YXJ0VGltZSxcbiAgICAgIGluZ3Jlc3NfZW5kOiBpbmdyZXNzRW5kVGltZSxcbiAgICB9O1xuICAgIHJldHVybiB7IG1ldGFEYXRhLCBpbmdyZXNzRW5kVGltZSB9O1xuICB9XG5cbiAgY29udmVydFNlbmRlckJsb2JUb1ByaW5jaXBhbChzZW5kZXJCbG9iOiBVaW50OEFycmF5KTogVWludDhBcnJheSB7XG4gICAgY29uc3QgTUFYX0xFTkdUSF9JTl9CWVRFUyA9IDI5O1xuICAgIGlmIChzZW5kZXJCbG9iLmxlbmd0aCA+IE1BWF9MRU5HVEhfSU5fQllURVMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQnl0ZXMgdG9vIGxvbmcgZm9yIGEgdmFsaWQgUHJpbmNpcGFsJyk7XG4gICAgfVxuICAgIGNvbnN0IHByaW5jaXBhbEJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoTUFYX0xFTkdUSF9JTl9CWVRFUyk7XG4gICAgcHJpbmNpcGFsQnl0ZXMuc2V0KHNlbmRlckJsb2Iuc2xpY2UoMCwgc2VuZGVyQmxvYi5sZW5ndGgpKTtcbiAgICByZXR1cm4gcHJpbmNpcGFsQnl0ZXM7XG4gIH1cblxuICBhc3luYyBmcm9tQXJncyhhcmc6IFVpbnQ4QXJyYXkpOiBQcm9taXNlPFNlbmRBcmdzPiB7XG4gICAgY29uc3Qgcm9vdCA9IHByb3RvYnVmLnBhcnNlKHByb3RvRGVmaW5pdGlvbikucm9vdDtcbiAgICBjb25zdCBTZW5kUmVxdWVzdE1lc3NhZ2UgPSByb290Lmxvb2t1cFR5cGUoJ1NlbmRSZXF1ZXN0Jyk7XG4gICAgY29uc3QgYXJncyA9IFNlbmRSZXF1ZXN0TWVzc2FnZS5kZWNvZGUoYXJnKSBhcyB1bmtub3duIGFzIFNlbmRBcmdzO1xuICAgIGNvbnN0IHRyYW5zZm9ybWVkQXJnczogU2VuZEFyZ3MgPSB7XG4gICAgICBtZW1vOiB7IG1lbW86IEJpZ0ludChhcmdzLm1lbW8ubWVtby50b1N0cmluZygpKSB9LFxuICAgICAgcGF5bWVudDogeyByZWNlaXZlckdldHM6IHsgZThzOiBhcmdzLnBheW1lbnQucmVjZWl2ZXJHZXRzLmU4cyB9IH0sXG4gICAgICBtYXhGZWU6IHsgZThzOiBhcmdzLm1heEZlZS5lOHMgfSxcbiAgICAgIHRvOiB7IGhhc2g6IEJ1ZmZlci5mcm9tKGFyZ3MudG8uaGFzaCkgfSxcbiAgICAgIGNyZWF0ZWRBdFRpbWU6IHsgdGltZXN0YW1wTmFub3M6IEJpZ051bWJlcihhcmdzLmNyZWF0ZWRBdFRpbWUudGltZXN0YW1wTmFub3MudG9TdHJpbmcoKSkudG9OdW1iZXIoKSB9LFxuICAgIH07XG4gICAgcmV0dXJuIHRyYW5zZm9ybWVkQXJncztcbiAgfVxuXG4gIGFzeW5jIHRvQXJnKGFyZ3M6IFNlbmRBcmdzKTogUHJvbWlzZTxVaW50OEFycmF5PiB7XG4gICAgY29uc3Qgcm9vdCA9IHByb3RvYnVmLnBhcnNlKHByb3RvRGVmaW5pdGlvbikucm9vdDtcbiAgICBjb25zdCBTZW5kUmVxdWVzdE1lc3NhZ2UgPSByb290Lmxvb2t1cFR5cGUoJ1NlbmRSZXF1ZXN0Jyk7XG4gICAgY29uc3QgZXJyTXNnID0gU2VuZFJlcXVlc3RNZXNzYWdlLnZlcmlmeShhcmdzKTtcbiAgICBpZiAoZXJyTXNnKSB0aHJvdyBuZXcgRXJyb3IoZXJyTXNnKTtcbiAgICBjb25zdCBtZXNzYWdlID0gU2VuZFJlcXVlc3RNZXNzYWdlLmNyZWF0ZShhcmdzKTtcbiAgICByZXR1cm4gU2VuZFJlcXVlc3RNZXNzYWdlLmVuY29kZShtZXNzYWdlKS5maW5pc2goKTtcbiAgfVxuXG4gIGdldEFjY291bnRJZFByZWZpeCgpOiBCdWZmZXI8QXJyYXlCdWZmZXI+IHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oWzB4MGEsIC4uLkJ1ZmZlci5mcm9tKCdhY2NvdW50LWlkJyldKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQmxvY2tJZChoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBJQ1AgYmxvY2sgaGFzaGVzIGFyZSA2NC1jaGFyYWN0ZXIgaGV4YWRlY2ltYWwgc3RyaW5nc1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRIYXNoKGhhc2gpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIElDUCBoYXNoXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBoYXNoIC0gc3RyaW5nIHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgaXNWYWxpZEhhc2goaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBoYXNoID09PSAnc3RyaW5nJyAmJiAvXlswLTlhLWZBLUZdezY0fSQvLnRlc3QoaGFzaCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFRyYW5zYWN0aW9uSWQodHhJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZEhhc2godHhJZCk7XG4gIH1cblxuICBnZXRTaWduYXR1cmVzKHBheWxvYWRzRGF0YTogUGF5bG9hZHNEYXRhLCBzZW5kZXJQdWJsaWNLZXk6IHN0cmluZywgc2VuZGVyUHJpdmF0ZUtleTogc3RyaW5nKTogU2lnbmF0dXJlc1tdIHtcbiAgICByZXR1cm4gcGF5bG9hZHNEYXRhLnBheWxvYWRzLm1hcCgocGF5bG9hZCkgPT4gKHtcbiAgICAgIHNpZ25pbmdfcGF5bG9hZDogcGF5bG9hZCxcbiAgICAgIHNpZ25hdHVyZV90eXBlOiBwYXlsb2FkLnNpZ25hdHVyZV90eXBlLFxuICAgICAgcHVibGljX2tleToge1xuICAgICAgICBoZXhfYnl0ZXM6IHNlbmRlclB1YmxpY0tleSxcbiAgICAgICAgY3VydmVfdHlwZTogQ3VydmVUeXBlLlNFQ1AyNTZLMSxcbiAgICAgIH0sXG4gICAgICBoZXhfYnl0ZXM6IHRoaXMuc2lnblBheWxvYWQoc2VuZGVyUHJpdmF0ZUtleSwgcGF5bG9hZC5oZXhfYnl0ZXMpLFxuICAgIH0pKTtcbiAgfVxuXG4gIHNpZ25QYXlsb2FkID0gKHByaXZhdGVLZXk6IHN0cmluZywgcGF5bG9hZEhleDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICBjb25zdCBwcml2YXRlS2V5Qnl0ZXMgPSBCdWZmZXIuZnJvbShwcml2YXRlS2V5LCAnaGV4Jyk7XG4gICAgY29uc3QgcGF5bG9hZEhhc2ggPSBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKEJ1ZmZlci5mcm9tKHBheWxvYWRIZXgsICdoZXgnKSkuZGlnZXN0KCdoZXgnKTtcbiAgICBjb25zdCBzaWduYXR1cmUgPSBzZWNwMjU2azEuc2lnbihwYXlsb2FkSGFzaCwgcHJpdmF0ZUtleUJ5dGVzKTtcbiAgICBjb25zdCByID0gQnVmZmVyLmZyb20oc2lnbmF0dXJlLnIudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDY0LCAnMCcpLCAnaGV4Jyk7XG4gICAgY29uc3QgcyA9IEJ1ZmZlci5mcm9tKHNpZ25hdHVyZS5zLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg2NCwgJzAnKSwgJ2hleCcpO1xuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KFtyLCBzXSkudG9TdHJpbmcoJ2hleCcpO1xuICB9O1xufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuZXhwb3J0IGRlZmF1bHQgdXRpbHM7XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitgo/sdk-coin-icp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.11.0",
|
|
4
4
|
"description": "BitGo SDK coin library for Internet Computer",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -40,9 +40,9 @@
|
|
|
40
40
|
]
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@bitgo/sdk-core": "^32.0
|
|
43
|
+
"@bitgo/sdk-core": "^32.1.0",
|
|
44
44
|
"@bitgo/secp256k1": "^1.3.3",
|
|
45
|
-
"@bitgo/statics": "^51.
|
|
45
|
+
"@bitgo/statics": "^51.7.0",
|
|
46
46
|
"@dfinity/agent": "^2.2.0",
|
|
47
47
|
"@dfinity/candid": "^2.2.0",
|
|
48
48
|
"@dfinity/principal": "^2.2.0",
|
|
@@ -54,8 +54,8 @@
|
|
|
54
54
|
"protobufjs": "^7.2.5"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
|
-
"@bitgo/sdk-api": "^1.61.
|
|
58
|
-
"@bitgo/sdk-test": "^8.0.
|
|
57
|
+
"@bitgo/sdk-api": "^1.61.5",
|
|
58
|
+
"@bitgo/sdk-test": "^8.0.80"
|
|
59
59
|
},
|
|
60
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "3d041b569cc17b4814f1468f66abd9ca9969c5a9"
|
|
61
61
|
}
|