@bitgo/sdk-coin-xtz 2.4.12 → 2.5.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 CHANGED
@@ -3,6 +3,16 @@
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
+ # [2.5.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-xtz@2.4.13...@bitgo/sdk-coin-xtz@2.5.0) (2025-08-19)
7
+
8
+ ### Features
9
+
10
+ - **sdk-coin-xtz:** add xtz recovery ([8875500](https://github.com/BitGo/BitGoJS/commit/8875500a979e61c51a092c1e9c48810b906e1c16))
11
+
12
+ ## [2.4.13](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-xtz@2.4.12...@bitgo/sdk-coin-xtz@2.4.13) (2025-08-14)
13
+
14
+ **Note:** Version bump only for package @bitgo/sdk-coin-xtz
15
+
6
16
  ## [2.4.12](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-xtz@2.4.11...@bitgo/sdk-coin-xtz@2.4.12) (2025-08-07)
7
17
 
8
18
  **Note:** Version bump only for package @bitgo/sdk-coin-xtz
@@ -111,4 +111,38 @@ export interface Key extends BaseKey, IndexedData {
111
111
  export interface IndexedSignature extends IndexedData {
112
112
  signature: string;
113
113
  }
114
+ export type RecoverOptions = {
115
+ userKey: string;
116
+ backupKey: string;
117
+ walletPassphrase?: string;
118
+ walletContractAddress: string;
119
+ recoveryDestination: string;
120
+ krsProvider?: string;
121
+ gasPrice?: number;
122
+ gasLimit?: number;
123
+ bitgoFeeAddress?: string;
124
+ bitgoDestinationAddress?: string;
125
+ tokenContractAddress?: string;
126
+ intendedChain?: string;
127
+ derivationSeed?: string;
128
+ apiKey?: string;
129
+ isUnsignedSweep?: boolean;
130
+ };
131
+ export interface OfflineVaultTxInfo {
132
+ nextContractSequenceId?: string;
133
+ contractSequenceId?: string;
134
+ tx?: string;
135
+ txHex?: string;
136
+ userKey?: string;
137
+ backupKey?: string;
138
+ coin: string;
139
+ gasPrice: number;
140
+ gasLimit: number;
141
+ recipients: Recipient[];
142
+ walletContractAddress: string;
143
+ amount: string;
144
+ backupKeyNonce: number;
145
+ isEvmBasedCrossChainRecovery?: boolean;
146
+ walletVersion?: number;
147
+ }
114
148
  //# sourceMappingURL=iface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlRmVlLFxuICBCYXNlS2V5LFxuICBTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxuICBUcmFuc2FjdGlvbkZlZSxcbiAgVHJhbnNhY3Rpb25SZWNpcGllbnQgYXMgUmVjaXBpZW50LFxuICBUcmFuc2FjdGlvblByZWJ1aWxkIGFzIEJhc2VUcmFuc2FjdGlvblByZWJ1aWxkLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFh0elNpZ25UcmFuc2FjdGlvbk9wdGlvbnMgZXh0ZW5kcyBTaWduVHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhQcmVidWlsZDogVHJhbnNhY3Rpb25QcmVidWlsZDtcbiAgcHJ2OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHhJbmZvIHtcbiAgcmVjaXBpZW50czogUmVjaXBpZW50W107XG4gIGZyb206IHN0cmluZztcbiAgdHhpZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZHJlc3NJbmZvIHtcbiAgYWRkcmVzczogc3RyaW5nO1xuICBjaGFpbjogbnVtYmVyO1xuICBpbmRleDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uUHJlYnVpbGQgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25QcmVidWlsZCB7XG4gIHR4SGV4OiBzdHJpbmc7XG4gIHR4SW5mbzogVHhJbmZvO1xuICBhZGRyZXNzSW5mbzogQWRkcmVzc0luZm87XG4gIGZlZUluZm86IFh0elRyYW5zYWN0aW9uRmVlO1xuICBzb3VyY2U6IHN0cmluZztcbiAgZGF0YVRvU2lnbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFh0elRyYW5zYWN0aW9uRmVlIHtcbiAgZmVlOiBzdHJpbmc7XG4gIGdhc0xpbWl0Pzogc3RyaW5nO1xuICBzdG9yYWdlTGltaXQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhwbGFpblRyYW5zYWN0aW9uT3B0aW9ucyB7XG4gIHR4SGV4Pzogc3RyaW5nO1xuICBoYWxmU2lnbmVkPzoge1xuICAgIHR4SGV4OiBzdHJpbmc7XG4gIH07XG4gIGZlZUluZm86IFRyYW5zYWN0aW9uRmVlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhhc2hUeXBlIHtcbiAgcHJlZml4OiBCdWZmZXI7XG4gIGJ5dGVMZW5ndGg6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcGVyYXRpb24ge1xuICBraW5kOiBzdHJpbmc7XG4gIGNvdW50ZXI6IHN0cmluZztcbiAgc291cmNlOiBzdHJpbmc7XG4gIGZlZTogc3RyaW5nO1xuICBnYXNfbGltaXQ6IHN0cmluZztcbiAgc3RvcmFnZV9saW1pdDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJldmVhbE9wIGV4dGVuZHMgT3BlcmF0aW9uIHtcbiAgcHVibGljX2tleTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yaWdpbmF0aW9uT3AgZXh0ZW5kcyBPcGVyYXRpb24ge1xuICBiYWxhbmNlOiBzdHJpbmc7XG4gIHNjcmlwdDogYW55O1xuICBkZWxlZ2F0ZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvbk9wIGV4dGVuZHMgT3BlcmF0aW9uIHtcbiAgcGFyYW1ldGVycz86IGFueTtcbiAgZGVzdGluYXRpb246IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkVHJhbnNhY3Rpb24ge1xuICBicmFuY2g6IHN0cmluZztcbiAgY29udGVudHM6IE9wZXJhdGlvbltdO1xufVxuXG4vKipcbiAqIERpZmZlcmVudCBUZXpvcyBzcGVjaWZpYyBmZWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmVlIGV4dGVuZHMgQmFzZUZlZSB7XG4gIGdhc0xpbWl0Pzogc3RyaW5nO1xuICBzdG9yYWdlTGltaXQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogU2VuZCB0cmFuc2FjdGlvbiBpbmZvcm1hdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZmVyRGF0YSB7XG4gIGFtb3VudDogc3RyaW5nO1xuICBjb2luPzogc3RyaW5nO1xuICBmcm9tOiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG4gIGZlZTogRmVlO1xuICBkYXRhVG9TaWduPzogc3RyaW5nO1xuICBjb3VudGVyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9yaWdpbmF0aW9uIHRyYW5zYWN0aW9uIGluZm9ybWF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3JpZ2luYXRpb25EYXRhIHtcbiAgZmVlOiBGZWU7XG4gIGNvdW50ZXI/OiBzdHJpbmc7XG4gIGJhbGFuY2U/OiBzdHJpbmc7XG4gIGZyb20/OiBzdHJpbmc7XG4gIGZvcndhcmRlckRlc3RpbmF0aW9uPzogc3RyaW5nO1xufVxuLyoqXG4gKiBUYXF1aXRvIHJldHVybiB0eXBlIGZvciBzaWduIG9wZXJhdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaWduUmVzcG9uc2Uge1xuICBieXRlczogc3RyaW5nO1xuICBzaWc6IGFueTtcbiAgcHJlZml4U2lnOiBhbnk7XG4gIHNieXRlczogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluZGV4ZWREYXRhIHtcbiAgaW5kZXg/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVGV6b3Mga2V5cyBjYW4gaGF2ZSBhIHNwZWNpZmljIG9yZGVyIGluIHRoZSBzbWFydCBjb250cmFjdHMsIGhlbmNlIHRoZSBuZWVkIHRvIGFkZCBhbiBpbmRleCBmaWVsZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEtleSBleHRlbmRzIEJhc2VLZXksIEluZGV4ZWREYXRhIHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5kZXhlZFNpZ25hdHVyZSBleHRlbmRzIEluZGV4ZWREYXRhIHtcbiAgc2lnbmF0dXJlOiBzdHJpbmc7XG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlRmVlLFxuICBCYXNlS2V5LFxuICBTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxuICBUcmFuc2FjdGlvbkZlZSxcbiAgVHJhbnNhY3Rpb25SZWNpcGllbnQgYXMgUmVjaXBpZW50LFxuICBUcmFuc2FjdGlvblByZWJ1aWxkIGFzIEJhc2VUcmFuc2FjdGlvblByZWJ1aWxkLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFh0elNpZ25UcmFuc2FjdGlvbk9wdGlvbnMgZXh0ZW5kcyBTaWduVHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhQcmVidWlsZDogVHJhbnNhY3Rpb25QcmVidWlsZDtcbiAgcHJ2OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHhJbmZvIHtcbiAgcmVjaXBpZW50czogUmVjaXBpZW50W107XG4gIGZyb206IHN0cmluZztcbiAgdHhpZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZHJlc3NJbmZvIHtcbiAgYWRkcmVzczogc3RyaW5nO1xuICBjaGFpbjogbnVtYmVyO1xuICBpbmRleDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uUHJlYnVpbGQgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25QcmVidWlsZCB7XG4gIHR4SGV4OiBzdHJpbmc7XG4gIHR4SW5mbzogVHhJbmZvO1xuICBhZGRyZXNzSW5mbzogQWRkcmVzc0luZm87XG4gIGZlZUluZm86IFh0elRyYW5zYWN0aW9uRmVlO1xuICBzb3VyY2U6IHN0cmluZztcbiAgZGF0YVRvU2lnbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFh0elRyYW5zYWN0aW9uRmVlIHtcbiAgZmVlOiBzdHJpbmc7XG4gIGdhc0xpbWl0Pzogc3RyaW5nO1xuICBzdG9yYWdlTGltaXQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhwbGFpblRyYW5zYWN0aW9uT3B0aW9ucyB7XG4gIHR4SGV4Pzogc3RyaW5nO1xuICBoYWxmU2lnbmVkPzoge1xuICAgIHR4SGV4OiBzdHJpbmc7XG4gIH07XG4gIGZlZUluZm86IFRyYW5zYWN0aW9uRmVlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhhc2hUeXBlIHtcbiAgcHJlZml4OiBCdWZmZXI7XG4gIGJ5dGVMZW5ndGg6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcGVyYXRpb24ge1xuICBraW5kOiBzdHJpbmc7XG4gIGNvdW50ZXI6IHN0cmluZztcbiAgc291cmNlOiBzdHJpbmc7XG4gIGZlZTogc3RyaW5nO1xuICBnYXNfbGltaXQ6IHN0cmluZztcbiAgc3RvcmFnZV9saW1pdDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJldmVhbE9wIGV4dGVuZHMgT3BlcmF0aW9uIHtcbiAgcHVibGljX2tleTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yaWdpbmF0aW9uT3AgZXh0ZW5kcyBPcGVyYXRpb24ge1xuICBiYWxhbmNlOiBzdHJpbmc7XG4gIHNjcmlwdDogYW55O1xuICBkZWxlZ2F0ZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvbk9wIGV4dGVuZHMgT3BlcmF0aW9uIHtcbiAgcGFyYW1ldGVycz86IGFueTtcbiAgZGVzdGluYXRpb246IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkVHJhbnNhY3Rpb24ge1xuICBicmFuY2g6IHN0cmluZztcbiAgY29udGVudHM6IE9wZXJhdGlvbltdO1xufVxuXG4vKipcbiAqIERpZmZlcmVudCBUZXpvcyBzcGVjaWZpYyBmZWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmVlIGV4dGVuZHMgQmFzZUZlZSB7XG4gIGdhc0xpbWl0Pzogc3RyaW5nO1xuICBzdG9yYWdlTGltaXQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogU2VuZCB0cmFuc2FjdGlvbiBpbmZvcm1hdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZmVyRGF0YSB7XG4gIGFtb3VudDogc3RyaW5nO1xuICBjb2luPzogc3RyaW5nO1xuICBmcm9tOiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG4gIGZlZTogRmVlO1xuICBkYXRhVG9TaWduPzogc3RyaW5nO1xuICBjb3VudGVyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9yaWdpbmF0aW9uIHRyYW5zYWN0aW9uIGluZm9ybWF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3JpZ2luYXRpb25EYXRhIHtcbiAgZmVlOiBGZWU7XG4gIGNvdW50ZXI/OiBzdHJpbmc7XG4gIGJhbGFuY2U/OiBzdHJpbmc7XG4gIGZyb20/OiBzdHJpbmc7XG4gIGZvcndhcmRlckRlc3RpbmF0aW9uPzogc3RyaW5nO1xufVxuLyoqXG4gKiBUYXF1aXRvIHJldHVybiB0eXBlIGZvciBzaWduIG9wZXJhdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaWduUmVzcG9uc2Uge1xuICBieXRlczogc3RyaW5nO1xuICBzaWc6IGFueTtcbiAgcHJlZml4U2lnOiBhbnk7XG4gIHNieXRlczogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluZGV4ZWREYXRhIHtcbiAgaW5kZXg/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVGV6b3Mga2V5cyBjYW4gaGF2ZSBhIHNwZWNpZmljIG9yZGVyIGluIHRoZSBzbWFydCBjb250cmFjdHMsIGhlbmNlIHRoZSBuZWVkIHRvIGFkZCBhbiBpbmRleCBmaWVsZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEtleSBleHRlbmRzIEJhc2VLZXksIEluZGV4ZWREYXRhIHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5kZXhlZFNpZ25hdHVyZSBleHRlbmRzIEluZGV4ZWREYXRhIHtcbiAgc2lnbmF0dXJlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFJlY292ZXJPcHRpb25zID0ge1xuICB1c2VyS2V5OiBzdHJpbmc7XG4gIGJhY2t1cEtleTogc3RyaW5nO1xuICB3YWxsZXRQYXNzcGhyYXNlPzogc3RyaW5nO1xuICB3YWxsZXRDb250cmFjdEFkZHJlc3M6IHN0cmluZzsgLy8gdXNlIHRoaXMgYXMgd2FsbGV0QmFzZUFkZHJlc3MgZm9yIFRTU1xuICByZWNvdmVyeURlc3RpbmF0aW9uOiBzdHJpbmc7XG4gIGtyc1Byb3ZpZGVyPzogc3RyaW5nO1xuICBnYXNQcmljZT86IG51bWJlcjtcbiAgZ2FzTGltaXQ/OiBudW1iZXI7XG4gIGJpdGdvRmVlQWRkcmVzcz86IHN0cmluZztcbiAgYml0Z29EZXN0aW5hdGlvbkFkZHJlc3M/OiBzdHJpbmc7XG4gIHRva2VuQ29udHJhY3RBZGRyZXNzPzogc3RyaW5nO1xuICBpbnRlbmRlZENoYWluPzogc3RyaW5nO1xuICBkZXJpdmF0aW9uU2VlZD86IHN0cmluZztcbiAgYXBpS2V5Pzogc3RyaW5nO1xuICBpc1Vuc2lnbmVkU3dlZXA/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBPZmZsaW5lVmF1bHRUeEluZm8ge1xuICBuZXh0Q29udHJhY3RTZXF1ZW5jZUlkPzogc3RyaW5nO1xuICBjb250cmFjdFNlcXVlbmNlSWQ/OiBzdHJpbmc7XG4gIHR4Pzogc3RyaW5nO1xuICB0eEhleD86IHN0cmluZztcbiAgdXNlcktleT86IHN0cmluZztcbiAgYmFja3VwS2V5Pzogc3RyaW5nO1xuICBjb2luOiBzdHJpbmc7XG4gIGdhc1ByaWNlOiBudW1iZXI7XG4gIGdhc0xpbWl0OiBudW1iZXI7XG4gIHJlY2lwaWVudHM6IFJlY2lwaWVudFtdO1xuICB3YWxsZXRDb250cmFjdEFkZHJlc3M6IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmc7XG4gIGJhY2t1cEtleU5vbmNlOiBudW1iZXI7XG4gIGlzRXZtQmFzZWRDcm9zc0NoYWluUmVjb3Zlcnk/OiBib29sZWFuO1xuICB3YWxsZXRWZXJzaW9uPzogbnVtYmVyO1xufVxuIl19
@@ -261,4 +261,20 @@ export declare enum DEFAULT_STORAGE_LIMIT {
261
261
  TRANSFER = 257,
262
262
  REVEAL = 0
263
263
  }
264
+ export declare enum TRANSACTION_FEE {
265
+ ORIGINATION = 47640,
266
+ TRANSFER = 47640,
267
+ REVEAL = 1420
268
+ }
269
+ export declare enum TRANSACTION_STORAGE_LIMIT {
270
+ ORIGINATION = 3000,
271
+ TRANSFER = 300,
272
+ REVEAL = 5
273
+ }
274
+ export declare enum TRANSACTION_GAS_LIMIT {
275
+ ORIGINATION = 4600,
276
+ TRANSFER = 6000,
277
+ CONTRACT_TRANSFER = 20000,
278
+ REVEAL = 1500
279
+ }
264
280
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"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"}
@@ -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.DEFAULT_STORAGE_LIMIT = exports.DEFAULT_FEE = exports.DEFAULT_GAS_LIMIT = exports.hashTypes = exports.DEFAULT_WATERMARK = void 0;
39
+ exports.TRANSACTION_GAS_LIMIT = exports.TRANSACTION_STORAGE_LIMIT = exports.TRANSACTION_FEE = exports.DEFAULT_STORAGE_LIMIT = exports.DEFAULT_FEE = exports.DEFAULT_GAS_LIMIT = exports.hashTypes = exports.DEFAULT_WATERMARK = void 0;
40
40
  exports.base58encode = base58encode;
41
41
  exports.calculateTransactionId = calculateTransactionId;
42
42
  exports.calculateOriginatedAddress = calculateOriginatedAddress;
@@ -470,4 +470,23 @@ var DEFAULT_STORAGE_LIMIT;
470
470
  DEFAULT_STORAGE_LIMIT[DEFAULT_STORAGE_LIMIT["TRANSFER"] = 257] = "TRANSFER";
471
471
  DEFAULT_STORAGE_LIMIT[DEFAULT_STORAGE_LIMIT["REVEAL"] = 0] = "REVEAL";
472
472
  })(DEFAULT_STORAGE_LIMIT || (exports.DEFAULT_STORAGE_LIMIT = DEFAULT_STORAGE_LIMIT = {}));
473
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1CQSxvQ0FNQztBQVFELHdEQUtDO0FBU0QsZ0VBbUJDO0FBVUQsb0JBVUM7QUFXRCwwQ0FvQkM7QUFXRCxnREFhQztBQVNELGtDQWtCQztBQVFELHdDQUVDO0FBUUQsd0RBRUM7QUFRRCw0REFFQztBQVFELDRDQU9DO0FBUUQsNENBT0M7QUFRRCw4Q0FPQztBQVFELDRDQUVDO0FBUUQsd0RBRUM7QUFTRCxnQ0FFQztBQVNELDhCQU1DO0FBU0QsMENBTUM7QUFoVEQsOENBQTREO0FBQzVELDRDQUFpRDtBQUNqRCx1REFBeUM7QUFDekMsdURBQW9EO0FBQ3BELDRFQUF3QztBQUd4QyxtREFBNEQ7QUFFNUQsMENBQTBDO0FBQzdCLFFBQUEsaUJBQWlCLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXJEOzs7Ozs7R0FNRztBQUNILFNBQWdCLFlBQVksQ0FBQyxNQUFjLEVBQUUsT0FBZTtJQUMxRCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZELENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDZCxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFOUIsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNJLEtBQUssVUFBVSxzQkFBc0IsQ0FBQyxrQkFBMEI7SUFDckUsTUFBTSw0QkFBTSxDQUFDLEtBQUssQ0FBQztJQUNuQixNQUFNLHdCQUF3QixH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WDtBQUxELFdBQVksV0FBVztJQUNyQiw0REFBaUIsQ0FBQTtJQUNqQiwrREFBbUIsQ0FBQTtJQUNuQix5REFBZ0IsQ0FBQTtJQUNoQixvREFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUxXLFdBQVcsMkJBQVgsV0FBVyxRQUt0QjtBQUVELElBQVkscUJBS1g7QUFMRCxXQUFZLHFCQUFxQjtJQUMvQiw2RUFBYyxDQUFBO0lBQ2QsaUZBQWlCLENBQUE7SUFDakIsMkVBQWMsQ0FBQTtJQUNkLHFFQUFVLENBQUE7QUFDWixDQUFDLEVBTFcscUJBQXFCLHFDQUFyQixxQkFBcUIsUUFLaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1ZhbGlkWHB1YiwgU2lnbmluZ0Vycm9yIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEluTWVtb3J5U2lnbmVyIH0gZnJvbSAnQHRhcXVpdG8vc2lnbmVyJztcbmltcG9ydCAqIGFzIGJhc2U1OGNoZWNrIGZyb20gJ2JzNThjaGVjayc7XG5pbXBvcnQgeyBzZWNwMjU2azEgfSBmcm9tICdAbm9ibGUvY3VydmVzL3NlY3AyNTZrMSc7XG5pbXBvcnQgc29kaXVtIGZyb20gJ2xpYnNvZGl1bS13cmFwcGVycyc7XG5pbXBvcnQgeyBIYXNoVHlwZSwgU2lnblJlc3BvbnNlIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IGdlbmVyaWNNdWx0aXNpZ0RhdGFUb1NpZ24gfSBmcm9tICcuL211bHRpc2lnVXRpbHMnO1xuXG4vLyBCeSBkZWZhdWx0LCB1c2UgdGhlIHRyYW5zYWN0aW9ucyBwcmVmaXhcbmV4cG9ydCBjb25zdCBERUZBVUxUX1dBVEVSTUFSSyA9IG5ldyBVaW50OEFycmF5KFszXSk7XG5cbi8qKlxuICogRW5jb2RlIHRoZSBwYXlsb2FkIHRvIGJhc2U1OCB3aXRoIGEgc3BlY2lmaWMgVGV6b3MgcHJlZml4LlxuICpcbiAqIEBwYXJhbSB7QnVmZmVyfSBwcmVmaXggdG8gYWRkIHRvIHRoZSBlbmNvZGVkIHBheWxvYWRcbiAqIEBwYXJhbSB7QnVmZmVyfSBwYXlsb2FkIHRvIGVuY29kZVxuICogQHJldHVybnMge2FueX0gYmFzZTU4IHBheWxvYWQgd2l0aCBhIFRlem9zIHByZWZpeFxuICovXG5leHBvcnQgZnVuY3Rpb24gYmFzZTU4ZW5jb2RlKHByZWZpeDogQnVmZmVyLCBwYXlsb2FkOiBCdWZmZXIpOiBzdHJpbmcge1xuICBjb25zdCBuID0gQnVmZmVyLmFsbG9jKHByZWZpeC5sZW5ndGggKyBwYXlsb2FkLmxlbmd0aCk7XG4gIG4uc2V0KHByZWZpeCk7XG4gIG4uc2V0KHBheWxvYWQsIHByZWZpeC5sZW5ndGgpO1xuXG4gIHJldHVybiBiYXNlNThjaGVjay5lbmNvZGUobik7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSB0cmFuc2FjdGlvbiBpZCBmb3IgYSBmb3IgYSBzaWduZWQgdHJhbnNhY3Rpb24uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGVuY29kZWRUcmFuc2FjdGlvbiBTaWduZWQgdHJhbnNhY3Rpb24gaW4gaGV4YWRlY2ltYWxcbiAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59IFRoZSB0cmFuc2FjdGlvbiBpZFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2FsY3VsYXRlVHJhbnNhY3Rpb25JZChlbmNvZGVkVHJhbnNhY3Rpb246IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGF3YWl0IHNvZGl1bS5yZWFkeTtcbiAgY29uc3QgZW5jb2RlZFRyYW5zYWN0aW9uQnVmZmVyID0gVWludDhBcnJheS5mcm9tKEJ1ZmZlci5mcm9tKGVuY29kZWRUcmFuc2FjdGlvbiwgJ2hleCcpKTtcbiAgY29uc3Qgb3BlcmF0aW9uSGFzaFBheWxvYWQgPSBzb2RpdW0uY3J5cHRvX2dlbmVyaWNoYXNoKDMyLCBlbmNvZGVkVHJhbnNhY3Rpb25CdWZmZXIpO1xuICByZXR1cm4gYmFzZTU4ZW5jb2RlKGhhc2hUeXBlcy5vLnByZWZpeCwgQnVmZmVyLmZyb20ob3BlcmF0aW9uSGFzaFBheWxvYWQpKTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGFkZHJlc3Mgb2YgYSBuZXcgb3JpZ2luYXRlZCBhY2NvdW50LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0cmFuc2FjdGlvbklkIFRoZSB0cmFuc2FjdGlvbiBpZFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IFRoZSBpbmRleCBvZiB0aGUgb3JpZ2luYXRpb24gb3BlcmF0aW9uIGluc2lkZSB0aGUgdHJhbnNhY3Rpb24gKHN0YXJ0cyBhdCAwKVxuICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gQW4gb3JpZ2luYXRlZCBhZGRyZXNzIHdpdGggdGhlIEtUIHByZWZpeFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2FsY3VsYXRlT3JpZ2luYXRlZEFkZHJlc3ModHJhbnNhY3Rpb25JZDogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgLy8gRnJvbSBodHRwczovL2dpdGh1Yi5jb20vVGV6VGVjaC9lenR6L2Jsb2IvY2ZkYzRmY2ZjODkxZjRmNGYwNzdjMzA1NmY0MTQ0NzZkZGUzNjEwYi9zcmMvbWFpbi5qcyNMNzY4XG4gIGNvbnN0IG9iID0gYmFzZTU4Y2hlY2suZGVjb2RlKHRyYW5zYWN0aW9uSWQpLnNsaWNlKGhhc2hUeXBlcy5vLnByZWZpeC5sZW5ndGgpO1xuXG4gIGxldCB0dDogbnVtYmVyW10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYi5sZW5ndGg7IGkrKykge1xuICAgIHR0LnB1c2gob2JbaV0pO1xuICB9XG5cbiAgdHQgPSB0dC5jb25jYXQoW1xuICAgIChpbmRleCAmIDB4ZmYwMDAwMDApID4+IDI0LFxuICAgIChpbmRleCAmIDB4MDBmZjAwMDApID4+IDE2LFxuICAgIChpbmRleCAmIDB4MDAwMGZmMDApID4+IDgsXG4gICAgaW5kZXggJiAweDAwMDAwMGZmLFxuICBdKTtcblxuICBhd2FpdCBzb2RpdW0ucmVhZHk7XG4gIGNvbnN0IHBheWxvYWQgPSBzb2RpdW0uY3J5cHRvX2dlbmVyaWNoYXNoKDIwLCBuZXcgVWludDhBcnJheSh0dCkpO1xuICByZXR1cm4gYmFzZTU4ZW5jb2RlKGhhc2hUeXBlcy5LVC5wcmVmaXgsIEJ1ZmZlci5mcm9tKHBheWxvYWQpKTtcbn1cblxuLyoqXG4gKiBHZW5lcmljIGRhdGEgc2lnbmluZyB1c2luZyBUZXpvcyBsaWJyYXJ5LlxuICpcbiAqIEBwYXJhbSB7S2V5UGFpcn0ga2V5UGFpciBBIEtleSBQYWlyIHdpdGggYSBwcml2YXRlIGtleSBzZXRcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIFRoZSBkYXRhIGluIGhleGFkZWNpbWFsIHRvIHNpZ25cbiAqIEBwYXJhbSB7VWludDhBcnJheX0gd2F0ZXJtYXJrIE1hZ2ljIGJ5dGU6IDEgZm9yIGJsb2NrLCAyIGZvciBlbmRvcnNlbWVudCwgMyBmb3IgZ2VuZXJpY1xuICogQHJldHVybnMge1Byb21pc2U8U2lnblJlc3BvbnNlPn1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNpZ24oXG4gIGtleVBhaXI6IEtleVBhaXIsXG4gIGRhdGE6IHN0cmluZyxcbiAgd2F0ZXJtYXJrOiBVaW50OEFycmF5ID0gREVGQVVMVF9XQVRFUk1BUktcbik6IFByb21pc2U8U2lnblJlc3BvbnNlPiB7XG4gIGlmICgha2V5UGFpci5nZXRLZXlzKCkucHJ2KSB7XG4gICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignTWlzc2luZyBwcml2YXRlIGtleScpO1xuICB9XG4gIGNvbnN0IHNpZ25lciA9IG5ldyBJbk1lbW9yeVNpZ25lcihrZXlQYWlyLmdldEtleXMoKS5wcnYhKTtcbiAgcmV0dXJuIHNpZ25lci5zaWduKGRhdGEsIHdhdGVybWFyayk7XG59XG5cbi8qKlxuICogVmVyaWZpZXMgdGhlIHNpZ25hdHVyZSBwcm9kdWNlZCBmb3IgYSBnaXZlbiBtZXNzYWdlIGJlbG9uZ3MgdG8gYSBzZWNwMjU2azEgcHVibGljIGtleS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBNZXNzYWdlIGluIGhleCBmb3JtYXQgdG8gdmVyaWZ5XG4gKiBAcGFyYW0ge3N0cmluZ30gcHVibGljS2V5IHNlY3AyNTZrMSBwdWJsaWMga2V5IHdpdGggXCJzcHBrXCIgcHJlZml4IHRvIHZlcmlmeSB0aGUgc2lnbmF0dXJlIHdpdGhcbiAqIEBwYXJhbSB7c3RyaW5nfSBzaWduYXR1cmUgVGV6b3Mgc2lnbmF0dXJlIHdpdGggXCJzaWdcIiBwcmVmaXhcbiAqIEBwYXJhbSB7VWludDhBcnJheX0gd2F0ZXJtYXJrIE9wdGlvbmFsIHdhdGVybWFyayB1c2VkIHRvIGdlbmVyYXRlIHRoZSBzaWduYXR1cmVcbiAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5U2lnbmF0dXJlKFxuICBtZXNzYWdlOiBzdHJpbmcsXG4gIHB1YmxpY0tleTogc3RyaW5nLFxuICBzaWduYXR1cmU6IHN0cmluZyxcbiAgd2F0ZXJtYXJrOiBVaW50OEFycmF5ID0gREVGQVVMVF9XQVRFUk1BUktcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCByYXdQdWJsaWNLZXkgPSBkZWNvZGVLZXkocHVibGljS2V5LCBoYXNoVHlwZXMuc3BwaykudG9TdHJpbmcoJ2hleCcpO1xuICBjb25zdCBrZXkgPSBzZWNwMjU2azEuUHJvamVjdGl2ZVBvaW50LmZyb21IZXgocmF3UHVibGljS2V5KTtcblxuICBjb25zdCBtZXNzYWdlQnVmZmVyID0gVWludDhBcnJheS5mcm9tKEJ1ZmZlci5mcm9tKG1lc3NhZ2UsICdoZXgnKSk7XG4gIC8vIFRlem9zIHNpZ25hdHVyZXMgYWx3YXlzIGhhdmUgYSB3YXRlcm1hcmtcbiAgY29uc3QgbWVzc2FnZVdpdGhXYXRlcm1hcmsgPSBuZXcgVWludDhBcnJheSh3YXRlcm1hcmsubGVuZ3RoICsgbWVzc2FnZUJ1ZmZlci5sZW5ndGgpO1xuICBtZXNzYWdlV2l0aFdhdGVybWFyay5zZXQod2F0ZXJtYXJrKTtcbiAgbWVzc2FnZVdpdGhXYXRlcm1hcmsuc2V0KG1lc3NhZ2VCdWZmZXIsIHdhdGVybWFyay5sZW5ndGgpO1xuXG4gIGF3YWl0IHNvZGl1bS5yZWFkeTtcbiAgY29uc3QgYnl0ZXNIYXNoID0gQnVmZmVyLmZyb20oc29kaXVtLmNyeXB0b19nZW5lcmljaGFzaCgzMiwgbWVzc2FnZVdpdGhXYXRlcm1hcmspKTtcblxuICBjb25zdCByYXdTaWduYXR1cmUgPSBkZWNvZGVTaWduYXR1cmUoc2lnbmF0dXJlLCBoYXNoVHlwZXMuc2lnKTtcbiAgcmV0dXJuIHNlY3AyNTZrMS52ZXJpZnkocmF3U2lnbmF0dXJlLCBieXRlc0hhc2gsIGtleS50b0hleCgpKTtcbn1cblxuLyoqXG4gKiBVc2VmdWwgd3JhcHBlciB0byBjcmVhdGUgdGhlIGdlbmVyaWMgbXVsdGlzaWcgY29udHJhY3QgZGF0YSB0byBzaWduIHdoZW4gbW92aW5nIGZ1bmRzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250cmFjdEFkZHJlc3MgVGhlIHdhbGxldCBjb250cmFjdCBhZGRyZXNzIHdpdGggdGhlIGZ1bmRzIHRvIHdpdGhkcmF3XG4gKiBAcGFyYW0ge3N0cmluZ30gZGVzdGluYXRpb25BZGRyZXNzIFRoZSBhZGRyZXNzIHRvIHRyYW5zZmVyIHRoZSBmdW5kcyB0b1xuICogQHBhcmFtIHtudW1iZXJ9IGFtb3VudCBOdW1iZXIgbXV0ZXogdG8gdHJhbnNmZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250cmFjdENvdW50ZXIgV2FsbGV0IGNvdW50ZXIgdG8gdXNlIGluIHRoZSB0cmFuc2FjdGlvblxuICogQHJldHVybnMge2FueX0gQSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBNaWNoZWxzb24gc2NyaXB0IHRvIHNpZ24gYW5kIGFwcHJvdmUgYSB0cmFuc2ZlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVEYXRhVG9TaWduKFxuICBjb250cmFjdEFkZHJlc3M6IHN0cmluZyxcbiAgZGVzdGluYXRpb25BZGRyZXNzOiBzdHJpbmcsXG4gIGFtb3VudDogc3RyaW5nLFxuICBjb250cmFjdENvdW50ZXI6IHN0cmluZ1xuKTogYW55IHtcbiAgaWYgKCFpc1ZhbGlkT3JpZ2luYXRlZEFkZHJlc3MoY29udHJhY3RBZGRyZXNzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb250cmFjdCBhZGRyZXNzICcgKyBjb250cmFjdEFkZHJlc3MgKyAnLiBBbiBvcmlnaW5hdGVkIGFjY291bnQgYWRkcmVzcyB3YXMgZXhwZWN0ZWQnKTtcbiAgfVxuICBpZiAoIWlzVmFsaWRBZGRyZXNzKGRlc3RpbmF0aW9uQWRkcmVzcykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZGVzdGluYXRpb24gYWRkcmVzcyAnICsgZGVzdGluYXRpb25BZGRyZXNzKTtcbiAgfVxuICByZXR1cm4gZ2VuZXJpY011bHRpc2lnRGF0YVRvU2lnbihjb250cmFjdEFkZHJlc3MsIGRlc3RpbmF0aW9uQWRkcmVzcywgYW1vdW50LCBjb250cmFjdENvdW50ZXIpO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIFRlem9zIGhhc2ggb2YgdGhlIGdpdmVuIHR5cGVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaGFzaCAtIHRoZSBzdHJpbmcgdG8gdmFsaWRhdGVcbiAqIEBwYXJhbSB7SGFzaFR5cGV9IGhhc2hUeXBlIC0gdGhlIHR5cGUgb2YgdGhlIHByb3ZpZGVkIGhhc2hcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEhhc2goaGFzaDogc3RyaW5nLCBoYXNoVHlwZTogSGFzaFR5cGUpOiBib29sZWFuIHtcbiAgLy8gVmFsaWRhdGUgZW5jb2RpbmdcbiAgbGV0IGRlY29kZWRIYXNoO1xuICB0cnkge1xuICAgIGRlY29kZWRIYXNoID0gYmFzZTU4Y2hlY2suZGVjb2RlKGhhc2gpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IGhhc2hQcmVmaXggPSBkZWNvZGVkSGFzaC5zbGljZSgwLCBoYXNoVHlwZS5wcmVmaXgubGVuZ3RoKTtcblxuICAvLyBDaGVjayBwcmVmaXhcbiAgaWYgKCFoYXNoUHJlZml4LmVxdWFscyhCdWZmZXIuZnJvbShoYXNoVHlwZS5wcmVmaXgpKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENoZWNrIGxlbmd0aFxuICBjb25zdCBoYXNoTGVuZ3RoID0gZGVjb2RlZEhhc2gubGVuZ3RoIC0gaGFzaFByZWZpeC5sZW5ndGg7XG4gIHJldHVybiBoYXNoTGVuZ3RoID09PSBoYXNoVHlwZS5ieXRlTGVuZ3RoO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIFRlem9zIGFkZHJlc3NcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaGFzaCAtIHRoZSBhZGRyZXNzIHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRBZGRyZXNzKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNWYWxpZEltcGxpY2l0QWRkcmVzcyhoYXNoKSB8fCBpc1ZhbGlkSGFzaChoYXNoLCBoYXNoVHlwZXMuS1QpO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIFRlem9zIGltcGxpY2l0IGFjY291bnQgYWRkcmVzc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBoYXNoIC0gdGhlIGFkZHJlc3MgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEltcGxpY2l0QWRkcmVzcyhoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzVmFsaWRIYXNoKGhhc2gsIGhhc2hUeXBlcy50ejEpIHx8IGlzVmFsaWRIYXNoKGhhc2gsIGhhc2hUeXBlcy50ejIpIHx8IGlzVmFsaWRIYXNoKGhhc2gsIGhhc2hUeXBlcy50ejMpO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIFRlem9zIG9yaWdpbmF0ZWQgYWNjb3VudCBhZGRyZXNzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGhhc2ggLSB0aGUgYWRkcmVzcyB0byB2YWxpZGF0ZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkT3JpZ2luYXRlZEFkZHJlc3MoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1ZhbGlkSGFzaChoYXNoLCBoYXNoVHlwZXMuS1QpO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIFRlem9zIHNpZ25hdHVyZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBoYXNoIC0gdGhlIHNpZ25hdHVyZSB0byB2YWxpZGF0ZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkU2lnbmF0dXJlKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIGlzVmFsaWRIYXNoKGhhc2gsIGhhc2hUeXBlcy5lZHNpZykgfHxcbiAgICBpc1ZhbGlkSGFzaChoYXNoLCBoYXNoVHlwZXMuc3BzaWcxKSB8fFxuICAgIGlzVmFsaWRIYXNoKGhhc2gsIGhhc2hUeXBlcy5wMnNpZykgfHxcbiAgICBpc1ZhbGlkSGFzaChoYXNoLCBoYXNoVHlwZXMuc2lnKVxuICApO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIFRlem9zIHB1YmxpYyBrZXlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHVibGljS2V5IFRoZSBwdWJsaWMga2V5IHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRQdWJsaWNLZXkocHVibGljS2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBpc1ZhbGlkSGFzaChwdWJsaWNLZXksIGhhc2hUeXBlcy5zcHBrKSB8fFxuICAgIGlzVmFsaWRIYXNoKHB1YmxpY0tleSwgaGFzaFR5cGVzLnAycGspIHx8XG4gICAgaXNWYWxpZEhhc2gocHVibGljS2V5LCBoYXNoVHlwZXMuZWRwaykgfHxcbiAgICBpc1ZhbGlkWHB1YihwdWJsaWNLZXkpIC8vIHhwdWJzIGFyZSB2YWxpZCB0b28uXG4gICk7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgVGV6b3MgcHJpdmF0ZSBrZXlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJpdmF0ZUtleSBUaGUgcHJpdmF0ZSBrZXkgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFByaXZhdGVLZXkocHJpdmF0ZUtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgaXNWYWxpZEhhc2gocHJpdmF0ZUtleSwgaGFzaFR5cGVzLmVkZXNrKSB8fFxuICAgIGlzVmFsaWRIYXNoKHByaXZhdGVLZXksIGhhc2hUeXBlcy5lZHNrKSB8fFxuICAgIGlzVmFsaWRIYXNoKHByaXZhdGVLZXksIGhhc2hUeXBlcy5zcHNrKSB8fFxuICAgIGlzVmFsaWRIYXNoKHByaXZhdGVLZXksIGhhc2hUeXBlcy5wMnNrKVxuICApO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIFRlem9zIGJsb2NrIGhhc2hcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaGFzaCAtIHRoZSBhZGRyZXNzIHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRCbG9ja0hhc2goaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1ZhbGlkSGFzaChoYXNoLCBoYXNoVHlwZXMuYik7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgVGV6b3MgdHJhbnNhY3Rpb24gaGFzaFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBoYXNoIC0gdGhlIGFkZHJlc3MgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFRyYW5zYWN0aW9uSGFzaChoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzVmFsaWRIYXNoKGhhc2gsIGhhc2hUeXBlcy5vKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBUZXpvcyBrZXkgZ2l2ZW4gYSBwcmVmaXhcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaGFzaCAtIHRoZSBrZXkgdG8gdmFsaWRhdGVcbiAqIEBwYXJhbSB7SGFzaFR5cGV9IGhhc2hUeXBlIC0gdGhlIHR5cGUgb2YgdGhlIHByb3ZpZGVkIGhhc2hcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEtleShoYXNoOiBzdHJpbmcsIGhhc2hUeXBlOiBIYXNoVHlwZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNWYWxpZEhhc2goaGFzaCwgaGFzaFR5cGUpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgb3JpZ2luYWwga2V5IGZvcm0gdGhlIHRleHQgd2l0aG91dCB0aGUgZ2l2ZW4gcHJlZml4LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBoYXNoIC0gYmFzZTU4IGVuY29kZWQga2V5IHdpdGggYSBUZXpvcyBwcmVmaXhcbiAqIEBwYXJhbSB7SGFzaFR5cGV9IGhhc2hUeXBlIC0gdGhlIHR5cGUgb2YgdGhlIHByb3ZpZGVkIGhhc2hcbiAqIEByZXR1cm5zIHtCdWZmZXJ9IHRoZSBvcmlnaW5hbCBkZWNvZGVkIGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlS2V5KGhhc2g6IHN0cmluZywgaGFzaFR5cGU6IEhhc2hUeXBlKTogQnVmZmVyIHtcbiAgaWYgKCFpc1ZhbGlkS2V5KGhhc2gsIGhhc2hUeXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgcHJpdmF0ZSBrZXknKTtcbiAgfVxuICBjb25zdCBkZWNvZGVkUHJ2ID0gYmFzZTU4Y2hlY2suZGVjb2RlKGhhc2gpO1xuICByZXR1cm4gQnVmZmVyLmZyb20oZGVjb2RlZFBydi5zbGljZShoYXNoVHlwZS5wcmVmaXgubGVuZ3RoLCBkZWNvZGVkUHJ2Lmxlbmd0aCkpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgcmF3IHNpZ25hdHVyZSBmcm9tIGEgVGV6b3MgZW5jb2RlZCBvbmUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHNpZ25hdHVyZSBUZXpvcyBzaWduYXR1cmVzIHByZWZpeGVkIHdpdGggc2lnLCBlZHNpZywgcDJzaWcgb3Igc3BzaWdcbiAqIEBwYXJhbSB7SGFzaFR5cGV9IGhhc2hUeXBlIFRoZSBwcmVmaXggb2YgcmVtb3ZlXG4gKiBAcmV0dXJucyB7QnVmZmVyfSBUaGUgZGVjb2RlZCBzaWduYXR1cmUgd2l0aG91dCBwcmVmaXhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZywgaGFzaFR5cGU6IEhhc2hUeXBlKTogQnVmZmVyIHtcbiAgaWYgKCFpc1ZhbGlkU2lnbmF0dXJlKHNpZ25hdHVyZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHNpZ25hdHVyZScpO1xuICB9XG4gIGNvbnN0IGRlY29kZWRQcnYgPSBiYXNlNThjaGVjay5kZWNvZGUoc2lnbmF0dXJlKTtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGRlY29kZWRQcnYuc2xpY2UoaGFzaFR5cGUucHJlZml4Lmxlbmd0aCwgZGVjb2RlZFBydi5sZW5ndGgpKTtcbn1cblxuLy8gQmFzZTU4Q2hlY2sgaXMgdXNlZCBmb3IgZW5jb2Rpbmdcbi8vIGhhc2hlZFR5cGVzIGlzIHVzZWQgdG8gdmFsaWRhdGUgaGFzaGVzIGJ5IHR5cGUsIGJ5IGNoZWNraW5nIHRoZWlyIHByZWZpeCBhbmRcbi8vIHRoZSBsZW5ndGggb2YgdGhlIEJ1ZmZlciBvYnRhaW5lZCBieSBkZWNvZGluZyB0aGUgaGFzaCAoZXhjbHVkaW5nIHRoZSBwcmVmaXgpXG5leHBvcnQgY29uc3QgaGFzaFR5cGVzID0ge1xuICAvKiAyMCBieXRlcyBsb25nICovXG4gIC8vIGVkMjU1MTkgcHVibGljIGtleSBoYXNoXG4gIHR6MToge1xuICAgIHByZWZpeDogQnVmZmVyLmZyb20oWzYsIDE2MSwgMTU5XSksXG4gICAgYnl0ZUxlbmd0aDogMjAsXG4gIH0sXG4gIC8vIHNlY3AyNTZrMSBwdWJsaWMga2V5IGhhc2hcbiAgdHoyOiB7XG4gICAgcHJlZml4OiBCdWZmZXIuZnJvbShbNiwgMTYxLCAxNjFdKSxcbiAgICBieXRlTGVuZ3RoOiAyMCxcbiAgfSxcbiAgLy8gcDI1NiBwdWJsaWMga2V5IGhhc2hcbiAgdHozOiB7XG4gICAgcHJlZml4OiBCdWZmZXIuZnJvbShbNiwgMTYxLCAxNjRdKSxcbiAgICBieXRlTGVuZ3RoOiAyMCxcbiAgfSxcbiAgS1Q6IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFsyLCA5MCwgMTIxXSksXG4gICAgYnl0ZUxlbmd0aDogMjAsXG4gIH0sXG4gIC8qIDMyIGJ5dGVzIGxvbmcgKi9cbiAgLy8gZWQyNTUxOSBwdWJsaWMga2V5XG4gIGVkcGs6IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFsxMywgMTUsIDM3LCAyMTddKSxcbiAgICBieXRlTGVuZ3RoOiAzMixcbiAgfSxcbiAgLy8gZWQyNTUxOSBzZWNyZXQga2V5XG4gIGVkc2syOiB7XG4gICAgcHJlZml4OiBCdWZmZXIuZnJvbShbMTMsIDE1LCA1OCwgN10pLFxuICAgIGJ5dGVMZW5ndGg6IDMyLFxuICB9LFxuICAvLyBzZWNwMjU2azEgc2VjcmV0IGtleVxuICBzcHNrOiB7XG4gICAgcHJlZml4OiBCdWZmZXIuZnJvbShbMTcsIDE2MiwgMjI0LCAyMDFdKSxcbiAgICBieXRlTGVuZ3RoOiAzMixcbiAgfSxcbiAgLy8gcDI1NiBzZWNyZXQga2V5XG4gIHAyc2s6IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFsxNiwgODEsIDIzOCwgMTg5XSksXG4gICAgYnl0ZUxlbmd0aDogMzIsXG4gIH0sXG4gIC8vIGJsb2NrIGhhc2hcbiAgYjoge1xuICAgIHByZWZpeDogQnVmZmVyLmZyb20oWzEsIDUyXSksXG4gICAgYnl0ZUxlbmd0aDogMzIsXG4gIH0sXG4gIC8vIG9wZXJhdGlvbiBoYXNoXG4gIG86IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFs1LCAxMTZdKSxcbiAgICBieXRlTGVuZ3RoOiAzMixcbiAgfSxcbiAgLy8gb3BlcmF0aW9uIGxpc3QgaGFzaFxuICBMbzoge1xuICAgIHByZWZpeDogQnVmZmVyLmZyb20oWzEzMywgMjMzXSksXG4gICAgYnl0ZUxlbmd0aDogMzIsXG4gIH0sXG4gIC8vIG9wZXJhdGlvbiBsaXN0IGxpc3QgaGFzaFxuICBMTG86IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFsyOSwgMTU5LCAxMDldKSxcbiAgICBieXRlTGVuZ3RoOiAzMixcbiAgfSxcbiAgLy8gcHJvdG9jb2wgaGFzaFxuICBQOiB7XG4gICAgcHJlZml4OiBCdWZmZXIuZnJvbShbMiwgMTcwXSksXG4gICAgYnl0ZUxlbmd0aDogMzIsXG4gIH0sXG4gIC8vIGNvbnRleHQgaGFzaFxuICBDbzoge1xuICAgIHByZWZpeDogQnVmZmVyLmZyb20oWzc5LCAxNzldKSxcbiAgICBieXRlTGVuZ3RoOiAzMixcbiAgfSxcbiAgLyogMzMgYnl0ZXMgbG9uZyAqL1xuICAvLyBzZWNwMjU2azEgcHVibGljIGtleVxuICBzcHBrOiB7XG4gICAgcHJlZml4OiBCdWZmZXIuZnJvbShbMywgMjU0LCAyMjYsIDg2XSksXG4gICAgYnl0ZUxlbmd0aDogMzMsXG4gIH0sXG4gIC8vIHAyNTYgcHVibGljIGtleVxuICBwMnBrOiB7XG4gICAgcHJlZml4OiBCdWZmZXIuZnJvbShbMywgMTc4LCAxMzksIDEyN10pLFxuICAgIGJ5dGVMZW5ndGg6IDMzLFxuICB9LFxuICAvKiA1NiBieXRlcyBsb25nICovXG4gIC8vIGVkMjU1MTkgZW5jcnlwdGVkIHNlZWRcbiAgZWRlc2s6IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFs3LCA5MCwgNjAsIDE3OSwgNDFdKSxcbiAgICBieXRlTGVuZ3RoOiA1NixcbiAgfSxcbiAgLyogNjMgYnl0ZXMgbG9uZyAqL1xuICAvLyBlZDI1NTE5IHNlY3JldCBrZXlcbiAgZWRzazoge1xuICAgIHByZWZpeDogQnVmZmVyLmZyb20oWzQzLCAyNDYsIDc4LCA3XSksXG4gICAgYnl0ZUxlbmd0aDogNjQsXG4gIH0sXG4gIC8vIGVkMjU1MTkgc2lnbmF0dXJlXG4gIGVkc2lnOiB7XG4gICAgcHJlZml4OiBCdWZmZXIuZnJvbShbOSwgMjQ1LCAyMDUsIDEzNCwgMThdKSxcbiAgICBieXRlTGVuZ3RoOiA2NCxcbiAgfSxcbiAgLy8gc2VjcDI1NmsxIHNpZ25hdHVyZVxuICBzcHNpZzE6IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFsxMywgMTE1LCAxMDEsIDE5LCA2M10pLFxuICAgIGJ5dGVMZW5ndGg6IDY0LFxuICB9LFxuICAvLyBwMjU2X3NpZ25hdHVyZVxuICBwMnNpZzoge1xuICAgIHByZWZpeDogQnVmZmVyLmZyb20oWzU0LCAyNDAsIDQ0LCA1Ml0pLFxuICAgIGJ5dGVMZW5ndGg6IDY0LFxuICB9LFxuICAvLyBnZW5lcmljIHNpZ25hdHVyZVxuICBzaWc6IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFs0LCAxMzAsIDQzXSksXG4gICAgYnl0ZUxlbmd0aDogNjQsXG4gIH0sXG4gIC8qIDE1IGJ5dGVzIGxvbmcgKi9cbiAgLy8gbmV0d29yayBoYXNoXG4gIE5ldDoge1xuICAgIHByZWZpeDogQnVmZmVyLmZyb20oWzg3LCA4MiwgMF0pLFxuICAgIGJ5dGVMZW5ndGg6IDE1LFxuICB9LFxuICAvLyBub25jZSBoYXNoXG4gIG5jZToge1xuICAgIHByZWZpeDogQnVmZmVyLmZyb20oWzY5LCAyMjAsIDE2OV0pLFxuICAgIGJ5dGVMZW5ndGg6IDE1LFxuICB9LFxuICAvKiA0IGJ5dGVzIGxvbmcgKi9cbiAgLy8gY2hhaW4gaWRcbiAgaWQ6IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFsxNTMsIDEwM10pLFxuICAgIGJ5dGVMZW5ndGg6IDQsXG4gIH0sXG59O1xuXG4vLyBGcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9lY2FkbGFicy90YXF1aXRvL2Jsb2IvbWFzdGVyL3BhY2thZ2VzL3RhcXVpdG8vc3JjL2NvbnN0YW50cy50c1xuXG5leHBvcnQgZW51bSBERUZBVUxUX0dBU19MSU1JVCB7XG4gIERFTEVHQVRJT04gPSAxMDYwMCxcbiAgT1JJR0lOQVRJT04gPSAxMDYwMCxcbiAgVFJBTlNGRVIgPSAxMDYwMCxcbiAgUkVWRUFMID0gMTA2MDAsXG59XG5cbmV4cG9ydCBlbnVtIERFRkFVTFRfRkVFIHtcbiAgREVMRUdBVElPTiA9IDEyNTcsXG4gIE9SSUdJTkFUSU9OID0gMTAwMDAsXG4gIFRSQU5TRkVSID0gMTAwMDAsXG4gIFJFVkVBTCA9IDE0MjAsXG59XG5cbmV4cG9ydCBlbnVtIERFRkFVTFRfU1RPUkFHRV9MSU1JVCB7XG4gIERFTEVHQVRJT04gPSAwLFxuICBPUklHSU5BVElPTiA9IDI1NyxcbiAgVFJBTlNGRVIgPSAyNTcsXG4gIFJFVkVBTCA9IDAsXG59XG4iXX0=
473
+ var TRANSACTION_FEE;
474
+ (function (TRANSACTION_FEE) {
475
+ TRANSACTION_FEE[TRANSACTION_FEE["ORIGINATION"] = 47640] = "ORIGINATION";
476
+ TRANSACTION_FEE[TRANSACTION_FEE["TRANSFER"] = 47640] = "TRANSFER";
477
+ TRANSACTION_FEE[TRANSACTION_FEE["REVEAL"] = 1420] = "REVEAL";
478
+ })(TRANSACTION_FEE || (exports.TRANSACTION_FEE = TRANSACTION_FEE = {}));
479
+ var TRANSACTION_STORAGE_LIMIT;
480
+ (function (TRANSACTION_STORAGE_LIMIT) {
481
+ TRANSACTION_STORAGE_LIMIT[TRANSACTION_STORAGE_LIMIT["ORIGINATION"] = 3000] = "ORIGINATION";
482
+ TRANSACTION_STORAGE_LIMIT[TRANSACTION_STORAGE_LIMIT["TRANSFER"] = 300] = "TRANSFER";
483
+ TRANSACTION_STORAGE_LIMIT[TRANSACTION_STORAGE_LIMIT["REVEAL"] = 5] = "REVEAL";
484
+ })(TRANSACTION_STORAGE_LIMIT || (exports.TRANSACTION_STORAGE_LIMIT = TRANSACTION_STORAGE_LIMIT = {}));
485
+ var TRANSACTION_GAS_LIMIT;
486
+ (function (TRANSACTION_GAS_LIMIT) {
487
+ TRANSACTION_GAS_LIMIT[TRANSACTION_GAS_LIMIT["ORIGINATION"] = 4600] = "ORIGINATION";
488
+ TRANSACTION_GAS_LIMIT[TRANSACTION_GAS_LIMIT["TRANSFER"] = 6000] = "TRANSFER";
489
+ TRANSACTION_GAS_LIMIT[TRANSACTION_GAS_LIMIT["CONTRACT_TRANSFER"] = 20000] = "CONTRACT_TRANSFER";
490
+ TRANSACTION_GAS_LIMIT[TRANSACTION_GAS_LIMIT["REVEAL"] = 1500] = "REVEAL";
491
+ })(TRANSACTION_GAS_LIMIT || (exports.TRANSACTION_GAS_LIMIT = TRANSACTION_GAS_LIMIT = {}));
492
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1CQSxvQ0FNQztBQVFELHdEQUtDO0FBU0QsZ0VBbUJDO0FBVUQsb0JBVUM7QUFXRCwwQ0FvQkM7QUFXRCxnREFhQztBQVNELGtDQWtCQztBQVFELHdDQUVDO0FBUUQsd0RBRUM7QUFRRCw0REFFQztBQVFELDRDQU9DO0FBUUQsNENBT0M7QUFRRCw4Q0FPQztBQVFELDRDQUVDO0FBUUQsd0RBRUM7QUFTRCxnQ0FFQztBQVNELDhCQU1DO0FBU0QsMENBTUM7QUFoVEQsOENBQTREO0FBQzVELDRDQUFpRDtBQUNqRCx1REFBeUM7QUFDekMsdURBQW9EO0FBQ3BELDRFQUF3QztBQUd4QyxtREFBNEQ7QUFFNUQsMENBQTBDO0FBQzdCLFFBQUEsaUJBQWlCLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXJEOzs7Ozs7R0FNRztBQUNILFNBQWdCLFlBQVksQ0FBQyxNQUFjLEVBQUUsT0FBZTtJQUMxRCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZELENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDZCxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFOUIsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNJLEtBQUssVUFBVSxzQkFBc0IsQ0FBQyxrQkFBMEI7SUFDckUsTUFBTSw0QkFBTSxDQUFDLEtBQUssQ0FBQztJQUNuQixNQUFNLHdCQUF3QixH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WDtBQUxELFdBQVksV0FBVztJQUNyQiw0REFBaUIsQ0FBQTtJQUNqQiwrREFBbUIsQ0FBQTtJQUNuQix5REFBZ0IsQ0FBQTtJQUNoQixvREFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUxXLFdBQVcsMkJBQVgsV0FBVyxRQUt0QjtBQUVELElBQVkscUJBS1g7QUFMRCxXQUFZLHFCQUFxQjtJQUMvQiw2RUFBYyxDQUFBO0lBQ2QsaUZBQWlCLENBQUE7SUFDakIsMkVBQWMsQ0FBQTtJQUNkLHFFQUFVLENBQUE7QUFDWixDQUFDLEVBTFcscUJBQXFCLHFDQUFyQixxQkFBcUIsUUFLaEM7QUFFRCxJQUFZLGVBSVg7QUFKRCxXQUFZLGVBQWU7SUFDekIsdUVBQW1CLENBQUE7SUFDbkIsaUVBQWdCLENBQUE7SUFDaEIsNERBQWEsQ0FBQTtBQUNmLENBQUMsRUFKVyxlQUFlLCtCQUFmLGVBQWUsUUFJMUI7QUFFRCxJQUFZLHlCQUlYO0FBSkQsV0FBWSx5QkFBeUI7SUFDbkMsMEZBQWtCLENBQUE7SUFDbEIsbUZBQWMsQ0FBQTtJQUNkLDZFQUFVLENBQUE7QUFDWixDQUFDLEVBSlcseUJBQXlCLHlDQUF6Qix5QkFBeUIsUUFJcEM7QUFFRCxJQUFZLHFCQUtYO0FBTEQsV0FBWSxxQkFBcUI7SUFDL0Isa0ZBQWtCLENBQUE7SUFDbEIsNEVBQWUsQ0FBQTtJQUNmLCtGQUF5QixDQUFBO0lBQ3pCLHdFQUFhLENBQUE7QUFDZixDQUFDLEVBTFcscUJBQXFCLHFDQUFyQixxQkFBcUIsUUFLaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1ZhbGlkWHB1YiwgU2lnbmluZ0Vycm9yIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEluTWVtb3J5U2lnbmVyIH0gZnJvbSAnQHRhcXVpdG8vc2lnbmVyJztcbmltcG9ydCAqIGFzIGJhc2U1OGNoZWNrIGZyb20gJ2JzNThjaGVjayc7XG5pbXBvcnQgeyBzZWNwMjU2azEgfSBmcm9tICdAbm9ibGUvY3VydmVzL3NlY3AyNTZrMSc7XG5pbXBvcnQgc29kaXVtIGZyb20gJ2xpYnNvZGl1bS13cmFwcGVycyc7XG5pbXBvcnQgeyBIYXNoVHlwZSwgU2lnblJlc3BvbnNlIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IGdlbmVyaWNNdWx0aXNpZ0RhdGFUb1NpZ24gfSBmcm9tICcuL211bHRpc2lnVXRpbHMnO1xuXG4vLyBCeSBkZWZhdWx0LCB1c2UgdGhlIHRyYW5zYWN0aW9ucyBwcmVmaXhcbmV4cG9ydCBjb25zdCBERUZBVUxUX1dBVEVSTUFSSyA9IG5ldyBVaW50OEFycmF5KFszXSk7XG5cbi8qKlxuICogRW5jb2RlIHRoZSBwYXlsb2FkIHRvIGJhc2U1OCB3aXRoIGEgc3BlY2lmaWMgVGV6b3MgcHJlZml4LlxuICpcbiAqIEBwYXJhbSB7QnVmZmVyfSBwcmVmaXggdG8gYWRkIHRvIHRoZSBlbmNvZGVkIHBheWxvYWRcbiAqIEBwYXJhbSB7QnVmZmVyfSBwYXlsb2FkIHRvIGVuY29kZVxuICogQHJldHVybnMge2FueX0gYmFzZTU4IHBheWxvYWQgd2l0aCBhIFRlem9zIHByZWZpeFxuICovXG5leHBvcnQgZnVuY3Rpb24gYmFzZTU4ZW5jb2RlKHByZWZpeDogQnVmZmVyLCBwYXlsb2FkOiBCdWZmZXIpOiBzdHJpbmcge1xuICBjb25zdCBuID0gQnVmZmVyLmFsbG9jKHByZWZpeC5sZW5ndGggKyBwYXlsb2FkLmxlbmd0aCk7XG4gIG4uc2V0KHByZWZpeCk7XG4gIG4uc2V0KHBheWxvYWQsIHByZWZpeC5sZW5ndGgpO1xuXG4gIHJldHVybiBiYXNlNThjaGVjay5lbmNvZGUobik7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSB0cmFuc2FjdGlvbiBpZCBmb3IgYSBmb3IgYSBzaWduZWQgdHJhbnNhY3Rpb24uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGVuY29kZWRUcmFuc2FjdGlvbiBTaWduZWQgdHJhbnNhY3Rpb24gaW4gaGV4YWRlY2ltYWxcbiAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59IFRoZSB0cmFuc2FjdGlvbiBpZFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2FsY3VsYXRlVHJhbnNhY3Rpb25JZChlbmNvZGVkVHJhbnNhY3Rpb246IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGF3YWl0IHNvZGl1bS5yZWFkeTtcbiAgY29uc3QgZW5jb2RlZFRyYW5zYWN0aW9uQnVmZmVyID0gVWludDhBcnJheS5mcm9tKEJ1ZmZlci5mcm9tKGVuY29kZWRUcmFuc2FjdGlvbiwgJ2hleCcpKTtcbiAgY29uc3Qgb3BlcmF0aW9uSGFzaFBheWxvYWQgPSBzb2RpdW0uY3J5cHRvX2dlbmVyaWNoYXNoKDMyLCBlbmNvZGVkVHJhbnNhY3Rpb25CdWZmZXIpO1xuICByZXR1cm4gYmFzZTU4ZW5jb2RlKGhhc2hUeXBlcy5vLnByZWZpeCwgQnVmZmVyLmZyb20ob3BlcmF0aW9uSGFzaFBheWxvYWQpKTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGFkZHJlc3Mgb2YgYSBuZXcgb3JpZ2luYXRlZCBhY2NvdW50LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0cmFuc2FjdGlvbklkIFRoZSB0cmFuc2FjdGlvbiBpZFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IFRoZSBpbmRleCBvZiB0aGUgb3JpZ2luYXRpb24gb3BlcmF0aW9uIGluc2lkZSB0aGUgdHJhbnNhY3Rpb24gKHN0YXJ0cyBhdCAwKVxuICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gQW4gb3JpZ2luYXRlZCBhZGRyZXNzIHdpdGggdGhlIEtUIHByZWZpeFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2FsY3VsYXRlT3JpZ2luYXRlZEFkZHJlc3ModHJhbnNhY3Rpb25JZDogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgLy8gRnJvbSBodHRwczovL2dpdGh1Yi5jb20vVGV6VGVjaC9lenR6L2Jsb2IvY2ZkYzRmY2ZjODkxZjRmNGYwNzdjMzA1NmY0MTQ0NzZkZGUzNjEwYi9zcmMvbWFpbi5qcyNMNzY4XG4gIGNvbnN0IG9iID0gYmFzZTU4Y2hlY2suZGVjb2RlKHRyYW5zYWN0aW9uSWQpLnNsaWNlKGhhc2hUeXBlcy5vLnByZWZpeC5sZW5ndGgpO1xuXG4gIGxldCB0dDogbnVtYmVyW10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYi5sZW5ndGg7IGkrKykge1xuICAgIHR0LnB1c2gob2JbaV0pO1xuICB9XG5cbiAgdHQgPSB0dC5jb25jYXQoW1xuICAgIChpbmRleCAmIDB4ZmYwMDAwMDApID4+IDI0LFxuICAgIChpbmRleCAmIDB4MDBmZjAwMDApID4+IDE2LFxuICAgIChpbmRleCAmIDB4MDAwMGZmMDApID4+IDgsXG4gICAgaW5kZXggJiAweDAwMDAwMGZmLFxuICBdKTtcblxuICBhd2FpdCBzb2RpdW0ucmVhZHk7XG4gIGNvbnN0IHBheWxvYWQgPSBzb2RpdW0uY3J5cHRvX2dlbmVyaWNoYXNoKDIwLCBuZXcgVWludDhBcnJheSh0dCkpO1xuICByZXR1cm4gYmFzZTU4ZW5jb2RlKGhhc2hUeXBlcy5LVC5wcmVmaXgsIEJ1ZmZlci5mcm9tKHBheWxvYWQpKTtcbn1cblxuLyoqXG4gKiBHZW5lcmljIGRhdGEgc2lnbmluZyB1c2luZyBUZXpvcyBsaWJyYXJ5LlxuICpcbiAqIEBwYXJhbSB7S2V5UGFpcn0ga2V5UGFpciBBIEtleSBQYWlyIHdpdGggYSBwcml2YXRlIGtleSBzZXRcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIFRoZSBkYXRhIGluIGhleGFkZWNpbWFsIHRvIHNpZ25cbiAqIEBwYXJhbSB7VWludDhBcnJheX0gd2F0ZXJtYXJrIE1hZ2ljIGJ5dGU6IDEgZm9yIGJsb2NrLCAyIGZvciBlbmRvcnNlbWVudCwgMyBmb3IgZ2VuZXJpY1xuICogQHJldHVybnMge1Byb21pc2U8U2lnblJlc3BvbnNlPn1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNpZ24oXG4gIGtleVBhaXI6IEtleVBhaXIsXG4gIGRhdGE6IHN0cmluZyxcbiAgd2F0ZXJtYXJrOiBVaW50OEFycmF5ID0gREVGQVVMVF9XQVRFUk1BUktcbik6IFByb21pc2U8U2lnblJlc3BvbnNlPiB7XG4gIGlmICgha2V5UGFpci5nZXRLZXlzKCkucHJ2KSB7XG4gICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignTWlzc2luZyBwcml2YXRlIGtleScpO1xuICB9XG4gIGNvbnN0IHNpZ25lciA9IG5ldyBJbk1lbW9yeVNpZ25lcihrZXlQYWlyLmdldEtleXMoKS5wcnYhKTtcbiAgcmV0dXJuIHNpZ25lci5zaWduKGRhdGEsIHdhdGVybWFyayk7XG59XG5cbi8qKlxuICogVmVyaWZpZXMgdGhlIHNpZ25hdHVyZSBwcm9kdWNlZCBmb3IgYSBnaXZlbiBtZXNzYWdlIGJlbG9uZ3MgdG8gYSBzZWNwMjU2azEgcHVibGljIGtleS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBNZXNzYWdlIGluIGhleCBmb3JtYXQgdG8gdmVyaWZ5XG4gKiBAcGFyYW0ge3N0cmluZ30gcHVibGljS2V5IHNlY3AyNTZrMSBwdWJsaWMga2V5IHdpdGggXCJzcHBrXCIgcHJlZml4IHRvIHZlcmlmeSB0aGUgc2lnbmF0dXJlIHdpdGhcbiAqIEBwYXJhbSB7c3RyaW5nfSBzaWduYXR1cmUgVGV6b3Mgc2lnbmF0dXJlIHdpdGggXCJzaWdcIiBwcmVmaXhcbiAqIEBwYXJhbSB7VWludDhBcnJheX0gd2F0ZXJtYXJrIE9wdGlvbmFsIHdhdGVybWFyayB1c2VkIHRvIGdlbmVyYXRlIHRoZSBzaWduYXR1cmVcbiAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5U2lnbmF0dXJlKFxuICBtZXNzYWdlOiBzdHJpbmcsXG4gIHB1YmxpY0tleTogc3RyaW5nLFxuICBzaWduYXR1cmU6IHN0cmluZyxcbiAgd2F0ZXJtYXJrOiBVaW50OEFycmF5ID0gREVGQVVMVF9XQVRFUk1BUktcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCByYXdQdWJsaWNLZXkgPSBkZWNvZGVLZXkocHVibGljS2V5LCBoYXNoVHlwZXMuc3BwaykudG9TdHJpbmcoJ2hleCcpO1xuICBjb25zdCBrZXkgPSBzZWNwMjU2azEuUHJvamVjdGl2ZVBvaW50LmZyb21IZXgocmF3UHVibGljS2V5KTtcblxuICBjb25zdCBtZXNzYWdlQnVmZmVyID0gVWludDhBcnJheS5mcm9tKEJ1ZmZlci5mcm9tKG1lc3NhZ2UsICdoZXgnKSk7XG4gIC8vIFRlem9zIHNpZ25hdHVyZXMgYWx3YXlzIGhhdmUgYSB3YXRlcm1hcmtcbiAgY29uc3QgbWVzc2FnZVdpdGhXYXRlcm1hcmsgPSBuZXcgVWludDhBcnJheSh3YXRlcm1hcmsubGVuZ3RoICsgbWVzc2FnZUJ1ZmZlci5sZW5ndGgpO1xuICBtZXNzYWdlV2l0aFdhdGVybWFyay5zZXQod2F0ZXJtYXJrKTtcbiAgbWVzc2FnZVdpdGhXYXRlcm1hcmsuc2V0KG1lc3NhZ2VCdWZmZXIsIHdhdGVybWFyay5sZW5ndGgpO1xuXG4gIGF3YWl0IHNvZGl1bS5yZWFkeTtcbiAgY29uc3QgYnl0ZXNIYXNoID0gQnVmZmVyLmZyb20oc29kaXVtLmNyeXB0b19nZW5lcmljaGFzaCgzMiwgbWVzc2FnZVdpdGhXYXRlcm1hcmspKTtcblxuICBjb25zdCByYXdTaWduYXR1cmUgPSBkZWNvZGVTaWduYXR1cmUoc2lnbmF0dXJlLCBoYXNoVHlwZXMuc2lnKTtcbiAgcmV0dXJuIHNlY3AyNTZrMS52ZXJpZnkocmF3U2lnbmF0dXJlLCBieXRlc0hhc2gsIGtleS50b0hleCgpKTtcbn1cblxuLyoqXG4gKiBVc2VmdWwgd3JhcHBlciB0byBjcmVhdGUgdGhlIGdlbmVyaWMgbXVsdGlzaWcgY29udHJhY3QgZGF0YSB0byBzaWduIHdoZW4gbW92aW5nIGZ1bmRzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250cmFjdEFkZHJlc3MgVGhlIHdhbGxldCBjb250cmFjdCBhZGRyZXNzIHdpdGggdGhlIGZ1bmRzIHRvIHdpdGhkcmF3XG4gKiBAcGFyYW0ge3N0cmluZ30gZGVzdGluYXRpb25BZGRyZXNzIFRoZSBhZGRyZXNzIHRvIHRyYW5zZmVyIHRoZSBmdW5kcyB0b1xuICogQHBhcmFtIHtudW1iZXJ9IGFtb3VudCBOdW1iZXIgbXV0ZXogdG8gdHJhbnNmZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250cmFjdENvdW50ZXIgV2FsbGV0IGNvdW50ZXIgdG8gdXNlIGluIHRoZSB0cmFuc2FjdGlvblxuICogQHJldHVybnMge2FueX0gQSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBNaWNoZWxzb24gc2NyaXB0IHRvIHNpZ24gYW5kIGFwcHJvdmUgYSB0cmFuc2ZlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVEYXRhVG9TaWduKFxuICBjb250cmFjdEFkZHJlc3M6IHN0cmluZyxcbiAgZGVzdGluYXRpb25BZGRyZXNzOiBzdHJpbmcsXG4gIGFtb3VudDogc3RyaW5nLFxuICBjb250cmFjdENvdW50ZXI6IHN0cmluZ1xuKTogYW55IHtcbiAgaWYgKCFpc1ZhbGlkT3JpZ2luYXRlZEFkZHJlc3MoY29udHJhY3RBZGRyZXNzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb250cmFjdCBhZGRyZXNzICcgKyBjb250cmFjdEFkZHJlc3MgKyAnLiBBbiBvcmlnaW5hdGVkIGFjY291bnQgYWRkcmVzcyB3YXMgZXhwZWN0ZWQnKTtcbiAgfVxuICBpZiAoIWlzVmFsaWRBZGRyZXNzKGRlc3RpbmF0aW9uQWRkcmVzcykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZGVzdGluYXRpb24gYWRkcmVzcyAnICsgZGVzdGluYXRpb25BZGRyZXNzKTtcbiAgfVxuICByZXR1cm4gZ2VuZXJpY011bHRpc2lnRGF0YVRvU2lnbihjb250cmFjdEFkZHJlc3MsIGRlc3RpbmF0aW9uQWRkcmVzcywgYW1vdW50LCBjb250cmFjdENvdW50ZXIpO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIFRlem9zIGhhc2ggb2YgdGhlIGdpdmVuIHR5cGVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaGFzaCAtIHRoZSBzdHJpbmcgdG8gdmFsaWRhdGVcbiAqIEBwYXJhbSB7SGFzaFR5cGV9IGhhc2hUeXBlIC0gdGhlIHR5cGUgb2YgdGhlIHByb3ZpZGVkIGhhc2hcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEhhc2goaGFzaDogc3RyaW5nLCBoYXNoVHlwZTogSGFzaFR5cGUpOiBib29sZWFuIHtcbiAgLy8gVmFsaWRhdGUgZW5jb2RpbmdcbiAgbGV0IGRlY29kZWRIYXNoO1xuICB0cnkge1xuICAgIGRlY29kZWRIYXNoID0gYmFzZTU4Y2hlY2suZGVjb2RlKGhhc2gpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IGhhc2hQcmVmaXggPSBkZWNvZGVkSGFzaC5zbGljZSgwLCBoYXNoVHlwZS5wcmVmaXgubGVuZ3RoKTtcblxuICAvLyBDaGVjayBwcmVmaXhcbiAgaWYgKCFoYXNoUHJlZml4LmVxdWFscyhCdWZmZXIuZnJvbShoYXNoVHlwZS5wcmVmaXgpKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENoZWNrIGxlbmd0aFxuICBjb25zdCBoYXNoTGVuZ3RoID0gZGVjb2RlZEhhc2gubGVuZ3RoIC0gaGFzaFByZWZpeC5sZW5ndGg7XG4gIHJldHVybiBoYXNoTGVuZ3RoID09PSBoYXNoVHlwZS5ieXRlTGVuZ3RoO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIFRlem9zIGFkZHJlc3NcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaGFzaCAtIHRoZSBhZGRyZXNzIHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRBZGRyZXNzKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNWYWxpZEltcGxpY2l0QWRkcmVzcyhoYXNoKSB8fCBpc1ZhbGlkSGFzaChoYXNoLCBoYXNoVHlwZXMuS1QpO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIFRlem9zIGltcGxpY2l0IGFjY291bnQgYWRkcmVzc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBoYXNoIC0gdGhlIGFkZHJlc3MgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEltcGxpY2l0QWRkcmVzcyhoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzVmFsaWRIYXNoKGhhc2gsIGhhc2hUeXBlcy50ejEpIHx8IGlzVmFsaWRIYXNoKGhhc2gsIGhhc2hUeXBlcy50ejIpIHx8IGlzVmFsaWRIYXNoKGhhc2gsIGhhc2hUeXBlcy50ejMpO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIFRlem9zIG9yaWdpbmF0ZWQgYWNjb3VudCBhZGRyZXNzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGhhc2ggLSB0aGUgYWRkcmVzcyB0byB2YWxpZGF0ZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkT3JpZ2luYXRlZEFkZHJlc3MoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1ZhbGlkSGFzaChoYXNoLCBoYXNoVHlwZXMuS1QpO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIFRlem9zIHNpZ25hdHVyZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBoYXNoIC0gdGhlIHNpZ25hdHVyZSB0byB2YWxpZGF0ZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkU2lnbmF0dXJlKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIGlzVmFsaWRIYXNoKGhhc2gsIGhhc2hUeXBlcy5lZHNpZykgfHxcbiAgICBpc1ZhbGlkSGFzaChoYXNoLCBoYXNoVHlwZXMuc3BzaWcxKSB8fFxuICAgIGlzVmFsaWRIYXNoKGhhc2gsIGhhc2hUeXBlcy5wMnNpZykgfHxcbiAgICBpc1ZhbGlkSGFzaChoYXNoLCBoYXNoVHlwZXMuc2lnKVxuICApO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIFRlem9zIHB1YmxpYyBrZXlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHVibGljS2V5IFRoZSBwdWJsaWMga2V5IHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRQdWJsaWNLZXkocHVibGljS2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBpc1ZhbGlkSGFzaChwdWJsaWNLZXksIGhhc2hUeXBlcy5zcHBrKSB8fFxuICAgIGlzVmFsaWRIYXNoKHB1YmxpY0tleSwgaGFzaFR5cGVzLnAycGspIHx8XG4gICAgaXNWYWxpZEhhc2gocHVibGljS2V5LCBoYXNoVHlwZXMuZWRwaykgfHxcbiAgICBpc1ZhbGlkWHB1YihwdWJsaWNLZXkpIC8vIHhwdWJzIGFyZSB2YWxpZCB0b28uXG4gICk7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgVGV6b3MgcHJpdmF0ZSBrZXlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJpdmF0ZUtleSBUaGUgcHJpdmF0ZSBrZXkgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFByaXZhdGVLZXkocHJpdmF0ZUtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgaXNWYWxpZEhhc2gocHJpdmF0ZUtleSwgaGFzaFR5cGVzLmVkZXNrKSB8fFxuICAgIGlzVmFsaWRIYXNoKHByaXZhdGVLZXksIGhhc2hUeXBlcy5lZHNrKSB8fFxuICAgIGlzVmFsaWRIYXNoKHByaXZhdGVLZXksIGhhc2hUeXBlcy5zcHNrKSB8fFxuICAgIGlzVmFsaWRIYXNoKHByaXZhdGVLZXksIGhhc2hUeXBlcy5wMnNrKVxuICApO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmluZyBpcyBhIHZhbGlkIFRlem9zIGJsb2NrIGhhc2hcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaGFzaCAtIHRoZSBhZGRyZXNzIHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRCbG9ja0hhc2goaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1ZhbGlkSGFzaChoYXNoLCBoYXNoVHlwZXMuYik7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgVGV6b3MgdHJhbnNhY3Rpb24gaGFzaFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBoYXNoIC0gdGhlIGFkZHJlc3MgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFRyYW5zYWN0aW9uSGFzaChoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzVmFsaWRIYXNoKGhhc2gsIGhhc2hUeXBlcy5vKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBUZXpvcyBrZXkgZ2l2ZW4gYSBwcmVmaXhcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaGFzaCAtIHRoZSBrZXkgdG8gdmFsaWRhdGVcbiAqIEBwYXJhbSB7SGFzaFR5cGV9IGhhc2hUeXBlIC0gdGhlIHR5cGUgb2YgdGhlIHByb3ZpZGVkIGhhc2hcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEtleShoYXNoOiBzdHJpbmcsIGhhc2hUeXBlOiBIYXNoVHlwZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNWYWxpZEhhc2goaGFzaCwgaGFzaFR5cGUpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgb3JpZ2luYWwga2V5IGZvcm0gdGhlIHRleHQgd2l0aG91dCB0aGUgZ2l2ZW4gcHJlZml4LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBoYXNoIC0gYmFzZTU4IGVuY29kZWQga2V5IHdpdGggYSBUZXpvcyBwcmVmaXhcbiAqIEBwYXJhbSB7SGFzaFR5cGV9IGhhc2hUeXBlIC0gdGhlIHR5cGUgb2YgdGhlIHByb3ZpZGVkIGhhc2hcbiAqIEByZXR1cm5zIHtCdWZmZXJ9IHRoZSBvcmlnaW5hbCBkZWNvZGVkIGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlS2V5KGhhc2g6IHN0cmluZywgaGFzaFR5cGU6IEhhc2hUeXBlKTogQnVmZmVyIHtcbiAgaWYgKCFpc1ZhbGlkS2V5KGhhc2gsIGhhc2hUeXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgcHJpdmF0ZSBrZXknKTtcbiAgfVxuICBjb25zdCBkZWNvZGVkUHJ2ID0gYmFzZTU4Y2hlY2suZGVjb2RlKGhhc2gpO1xuICByZXR1cm4gQnVmZmVyLmZyb20oZGVjb2RlZFBydi5zbGljZShoYXNoVHlwZS5wcmVmaXgubGVuZ3RoLCBkZWNvZGVkUHJ2Lmxlbmd0aCkpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgcmF3IHNpZ25hdHVyZSBmcm9tIGEgVGV6b3MgZW5jb2RlZCBvbmUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHNpZ25hdHVyZSBUZXpvcyBzaWduYXR1cmVzIHByZWZpeGVkIHdpdGggc2lnLCBlZHNpZywgcDJzaWcgb3Igc3BzaWdcbiAqIEBwYXJhbSB7SGFzaFR5cGV9IGhhc2hUeXBlIFRoZSBwcmVmaXggb2YgcmVtb3ZlXG4gKiBAcmV0dXJucyB7QnVmZmVyfSBUaGUgZGVjb2RlZCBzaWduYXR1cmUgd2l0aG91dCBwcmVmaXhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZywgaGFzaFR5cGU6IEhhc2hUeXBlKTogQnVmZmVyIHtcbiAgaWYgKCFpc1ZhbGlkU2lnbmF0dXJlKHNpZ25hdHVyZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHNpZ25hdHVyZScpO1xuICB9XG4gIGNvbnN0IGRlY29kZWRQcnYgPSBiYXNlNThjaGVjay5kZWNvZGUoc2lnbmF0dXJlKTtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGRlY29kZWRQcnYuc2xpY2UoaGFzaFR5cGUucHJlZml4Lmxlbmd0aCwgZGVjb2RlZFBydi5sZW5ndGgpKTtcbn1cblxuLy8gQmFzZTU4Q2hlY2sgaXMgdXNlZCBmb3IgZW5jb2Rpbmdcbi8vIGhhc2hlZFR5cGVzIGlzIHVzZWQgdG8gdmFsaWRhdGUgaGFzaGVzIGJ5IHR5cGUsIGJ5IGNoZWNraW5nIHRoZWlyIHByZWZpeCBhbmRcbi8vIHRoZSBsZW5ndGggb2YgdGhlIEJ1ZmZlciBvYnRhaW5lZCBieSBkZWNvZGluZyB0aGUgaGFzaCAoZXhjbHVkaW5nIHRoZSBwcmVmaXgpXG5leHBvcnQgY29uc3QgaGFzaFR5cGVzID0ge1xuICAvKiAyMCBieXRlcyBsb25nICovXG4gIC8vIGVkMjU1MTkgcHVibGljIGtleSBoYXNoXG4gIHR6MToge1xuICAgIHByZWZpeDogQnVmZmVyLmZyb20oWzYsIDE2MSwgMTU5XSksXG4gICAgYnl0ZUxlbmd0aDogMjAsXG4gIH0sXG4gIC8vIHNlY3AyNTZrMSBwdWJsaWMga2V5IGhhc2hcbiAgdHoyOiB7XG4gICAgcHJlZml4OiBCdWZmZXIuZnJvbShbNiwgMTYxLCAxNjFdKSxcbiAgICBieXRlTGVuZ3RoOiAyMCxcbiAgfSxcbiAgLy8gcDI1NiBwdWJsaWMga2V5IGhhc2hcbiAgdHozOiB7XG4gICAgcHJlZml4OiBCdWZmZXIuZnJvbShbNiwgMTYxLCAxNjRdKSxcbiAgICBieXRlTGVuZ3RoOiAyMCxcbiAgfSxcbiAgS1Q6IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFsyLCA5MCwgMTIxXSksXG4gICAgYnl0ZUxlbmd0aDogMjAsXG4gIH0sXG4gIC8qIDMyIGJ5dGVzIGxvbmcgKi9cbiAgLy8gZWQyNTUxOSBwdWJsaWMga2V5XG4gIGVkcGs6IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFsxMywgMTUsIDM3LCAyMTddKSxcbiAgICBieXRlTGVuZ3RoOiAzMixcbiAgfSxcbiAgLy8gZWQyNTUxOSBzZWNyZXQga2V5XG4gIGVkc2syOiB7XG4gICAgcHJlZml4OiBCdWZmZXIuZnJvbShbMTMsIDE1LCA1OCwgN10pLFxuICAgIGJ5dGVMZW5ndGg6IDMyLFxuICB9LFxuICAvLyBzZWNwMjU2azEgc2VjcmV0IGtleVxuICBzcHNrOiB7XG4gICAgcHJlZml4OiBCdWZmZXIuZnJvbShbMTcsIDE2MiwgMjI0LCAyMDFdKSxcbiAgICBieXRlTGVuZ3RoOiAzMixcbiAgfSxcbiAgLy8gcDI1NiBzZWNyZXQga2V5XG4gIHAyc2s6IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFsxNiwgODEsIDIzOCwgMTg5XSksXG4gICAgYnl0ZUxlbmd0aDogMzIsXG4gIH0sXG4gIC8vIGJsb2NrIGhhc2hcbiAgYjoge1xuICAgIHByZWZpeDogQnVmZmVyLmZyb20oWzEsIDUyXSksXG4gICAgYnl0ZUxlbmd0aDogMzIsXG4gIH0sXG4gIC8vIG9wZXJhdGlvbiBoYXNoXG4gIG86IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFs1LCAxMTZdKSxcbiAgICBieXRlTGVuZ3RoOiAzMixcbiAgfSxcbiAgLy8gb3BlcmF0aW9uIGxpc3QgaGFzaFxuICBMbzoge1xuICAgIHByZWZpeDogQnVmZmVyLmZyb20oWzEzMywgMjMzXSksXG4gICAgYnl0ZUxlbmd0aDogMzIsXG4gIH0sXG4gIC8vIG9wZXJhdGlvbiBsaXN0IGxpc3QgaGFzaFxuICBMTG86IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFsyOSwgMTU5LCAxMDldKSxcbiAgICBieXRlTGVuZ3RoOiAzMixcbiAgfSxcbiAgLy8gcHJvdG9jb2wgaGFzaFxuICBQOiB7XG4gICAgcHJlZml4OiBCdWZmZXIuZnJvbShbMiwgMTcwXSksXG4gICAgYnl0ZUxlbmd0aDogMzIsXG4gIH0sXG4gIC8vIGNvbnRleHQgaGFzaFxuICBDbzoge1xuICAgIHByZWZpeDogQnVmZmVyLmZyb20oWzc5LCAxNzldKSxcbiAgICBieXRlTGVuZ3RoOiAzMixcbiAgfSxcbiAgLyogMzMgYnl0ZXMgbG9uZyAqL1xuICAvLyBzZWNwMjU2azEgcHVibGljIGtleVxuICBzcHBrOiB7XG4gICAgcHJlZml4OiBCdWZmZXIuZnJvbShbMywgMjU0LCAyMjYsIDg2XSksXG4gICAgYnl0ZUxlbmd0aDogMzMsXG4gIH0sXG4gIC8vIHAyNTYgcHVibGljIGtleVxuICBwMnBrOiB7XG4gICAgcHJlZml4OiBCdWZmZXIuZnJvbShbMywgMTc4LCAxMzksIDEyN10pLFxuICAgIGJ5dGVMZW5ndGg6IDMzLFxuICB9LFxuICAvKiA1NiBieXRlcyBsb25nICovXG4gIC8vIGVkMjU1MTkgZW5jcnlwdGVkIHNlZWRcbiAgZWRlc2s6IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFs3LCA5MCwgNjAsIDE3OSwgNDFdKSxcbiAgICBieXRlTGVuZ3RoOiA1NixcbiAgfSxcbiAgLyogNjMgYnl0ZXMgbG9uZyAqL1xuICAvLyBlZDI1NTE5IHNlY3JldCBrZXlcbiAgZWRzazoge1xuICAgIHByZWZpeDogQnVmZmVyLmZyb20oWzQzLCAyNDYsIDc4LCA3XSksXG4gICAgYnl0ZUxlbmd0aDogNjQsXG4gIH0sXG4gIC8vIGVkMjU1MTkgc2lnbmF0dXJlXG4gIGVkc2lnOiB7XG4gICAgcHJlZml4OiBCdWZmZXIuZnJvbShbOSwgMjQ1LCAyMDUsIDEzNCwgMThdKSxcbiAgICBieXRlTGVuZ3RoOiA2NCxcbiAgfSxcbiAgLy8gc2VjcDI1NmsxIHNpZ25hdHVyZVxuICBzcHNpZzE6IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFsxMywgMTE1LCAxMDEsIDE5LCA2M10pLFxuICAgIGJ5dGVMZW5ndGg6IDY0LFxuICB9LFxuICAvLyBwMjU2X3NpZ25hdHVyZVxuICBwMnNpZzoge1xuICAgIHByZWZpeDogQnVmZmVyLmZyb20oWzU0LCAyNDAsIDQ0LCA1Ml0pLFxuICAgIGJ5dGVMZW5ndGg6IDY0LFxuICB9LFxuICAvLyBnZW5lcmljIHNpZ25hdHVyZVxuICBzaWc6IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFs0LCAxMzAsIDQzXSksXG4gICAgYnl0ZUxlbmd0aDogNjQsXG4gIH0sXG4gIC8qIDE1IGJ5dGVzIGxvbmcgKi9cbiAgLy8gbmV0d29yayBoYXNoXG4gIE5ldDoge1xuICAgIHByZWZpeDogQnVmZmVyLmZyb20oWzg3LCA4MiwgMF0pLFxuICAgIGJ5dGVMZW5ndGg6IDE1LFxuICB9LFxuICAvLyBub25jZSBoYXNoXG4gIG5jZToge1xuICAgIHByZWZpeDogQnVmZmVyLmZyb20oWzY5LCAyMjAsIDE2OV0pLFxuICAgIGJ5dGVMZW5ndGg6IDE1LFxuICB9LFxuICAvKiA0IGJ5dGVzIGxvbmcgKi9cbiAgLy8gY2hhaW4gaWRcbiAgaWQ6IHtcbiAgICBwcmVmaXg6IEJ1ZmZlci5mcm9tKFsxNTMsIDEwM10pLFxuICAgIGJ5dGVMZW5ndGg6IDQsXG4gIH0sXG59O1xuXG4vLyBGcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9lY2FkbGFicy90YXF1aXRvL2Jsb2IvbWFzdGVyL3BhY2thZ2VzL3RhcXVpdG8vc3JjL2NvbnN0YW50cy50c1xuXG5leHBvcnQgZW51bSBERUZBVUxUX0dBU19MSU1JVCB7XG4gIERFTEVHQVRJT04gPSAxMDYwMCxcbiAgT1JJR0lOQVRJT04gPSAxMDYwMCxcbiAgVFJBTlNGRVIgPSAxMDYwMCxcbiAgUkVWRUFMID0gMTA2MDAsXG59XG5cbmV4cG9ydCBlbnVtIERFRkFVTFRfRkVFIHtcbiAgREVMRUdBVElPTiA9IDEyNTcsXG4gIE9SSUdJTkFUSU9OID0gMTAwMDAsXG4gIFRSQU5TRkVSID0gMTAwMDAsXG4gIFJFVkVBTCA9IDE0MjAsXG59XG5cbmV4cG9ydCBlbnVtIERFRkFVTFRfU1RPUkFHRV9MSU1JVCB7XG4gIERFTEVHQVRJT04gPSAwLFxuICBPUklHSU5BVElPTiA9IDI1NyxcbiAgVFJBTlNGRVIgPSAyNTcsXG4gIFJFVkVBTCA9IDAsXG59XG5cbmV4cG9ydCBlbnVtIFRSQU5TQUNUSU9OX0ZFRSB7XG4gIE9SSUdJTkFUSU9OID0gNDc2NDAsXG4gIFRSQU5TRkVSID0gNDc2NDAsXG4gIFJFVkVBTCA9IDE0MjAsXG59XG5cbmV4cG9ydCBlbnVtIFRSQU5TQUNUSU9OX1NUT1JBR0VfTElNSVQge1xuICBPUklHSU5BVElPTiA9IDMwMDAsXG4gIFRSQU5TRkVSID0gMzAwLFxuICBSRVZFQUwgPSA1LFxufVxuXG5leHBvcnQgZW51bSBUUkFOU0FDVElPTl9HQVNfTElNSVQge1xuICBPUklHSU5BVElPTiA9IDQ2MDAsXG4gIFRSQU5TRkVSID0gNjAwMCxcbiAgQ09OVFJBQ1RfVFJBTlNGRVIgPSAyMDAwMCxcbiAgUkVWRUFMID0gMTUwMCxcbn1cbiJdfQ==
package/dist/src/xtz.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { BaseCoin, BitGoBase, ParsedTransaction, ParseTransactionOptions, KeyPair as SdkCoreKeyPair, SignedTransaction, TransactionExplanation, VerifyAddressOptions, VerifyTransactionOptions, MultisigType, AuditDecryptedKeyParams } from '@bitgo/sdk-core';
2
2
  import { CoinFamily, BaseCoin as StaticsBaseCoin } from '@bitgo/statics';
3
3
  import { Interface } from './lib';
4
+ import { RecoverOptions } from './lib/iface';
4
5
  export declare class Xtz extends BaseCoin {
5
6
  protected readonly _staticsCoin: Readonly<StaticsBaseCoin>;
6
7
  constructor(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>);
@@ -61,6 +62,48 @@ export declare class Xtz extends BaseCoin {
61
62
  * @param message
62
63
  */
63
64
  signMessage(key: SdkCoreKeyPair, message: string | Buffer): Promise<Buffer>;
65
+ /**
66
+ * Method to validate recovery params
67
+ * @param {RecoverOptions} params
68
+ * @returns {void}
69
+ */
70
+ validateRecoveryParams(params: RecoverOptions): void;
71
+ /**
72
+ * Make a query to blockchain explorer for information such as balance, token balance, solidity calls
73
+ * @param query {Object} key-value pairs of parameters to append after /api
74
+ * @param apiKey {string} optional API key to use instead of the one from the environment
75
+ * @returns {Object} response from the blockchain explorer
76
+ */
77
+ recoveryBlockchainExplorerQuery(params: {
78
+ actionPath: string;
79
+ address?: string;
80
+ action?: string;
81
+ }, apiKey?: string): Promise<unknown>;
82
+ /**
83
+ * Queries public block explorer to get the next XTZ address details
84
+ * @param {string} address
85
+ * @param {string} apiKey - optional API key to use instead of the one from the environment
86
+ * @returns {Promise<any>}
87
+ */
88
+ getAddressDetails(address: string, apiKey?: string): Promise<any>;
89
+ /**
90
+ * Query explorer for the balance of an address
91
+ * @param {String} address - the XTZ base/receive address
92
+ * @param {String} apiKey - optional API key to use instead of the one from the environment
93
+ * @returns {BigNumber} address balance
94
+ */
95
+ queryAddressBalance(address: string, apiKey?: string): Promise<any>;
96
+ /**
97
+ * Generate and pack the data to sign for each transfer.
98
+ *
99
+ * @param {String} contractAddress Wallet address to withdraw funds from
100
+ * @param {String} contractCounter Wallet internal counter
101
+ * @param {String} destination Tezos address to send the funds to
102
+ * @param {String} amount Number of mutez to move
103
+ * @param {IMSClient} imsClient Existing IMS client connection to reuse
104
+ * @return {String} data to sign in hex format
105
+ */
106
+ packDataToSign(contractAddress: any, contractCounter: any, destination: any, amount: any): Promise<any>;
64
107
  /**
65
108
  * Builds a funds recovery transaction without BitGo.
66
109
  * We need to do three queries during this:
@@ -69,7 +112,7 @@ export declare class Xtz extends BaseCoin {
69
112
  * 3) Send signed build - send our signed build to a public node
70
113
  * @param params
71
114
  */
72
- recover(params: any): Promise<any>;
115
+ recover(params: RecoverOptions): Promise<unknown>;
73
116
  /**
74
117
  * Explain a Tezos transaction from txHex
75
118
  * @param params
@@ -1 +1 @@
1
- {"version":3,"file":"xtz.d.ts","sourceRoot":"","sources":["../../src/xtz.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAER,SAAS,EAET,iBAAiB,EACjB,uBAAuB,EACvB,OAAO,IAAI,cAAc,EACzB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,YAAY,EAEZ,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,UAAU,EAAS,QAAQ,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEhF,OAAO,EAAE,SAAS,EAAsC,MAAM,OAAO,CAAC;AAEtE,qBAAa,GAAI,SAAQ,QAAQ;IAC/B,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;gBAE/C,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAUrE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F,QAAQ,IAAI,MAAM;IAIlB,SAAS,IAAI,UAAU;IAIvB,WAAW,IAAI,MAAM;IAIrB,aAAa;IAIb,oBAAoB;IACpB,sBAAsB,IAAI,YAAY;IAItC;;;OAGG;IACH,wBAAwB,IAAI,OAAO;IAInC;;OAEG;IACH,2BAA2B,IAAI,OAAO;IAItC;;;OAGG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOxC;;;;;OAKG;IACH,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,cAAc;IAcxC,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI7E,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/D,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAU3E;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAMvE;;;;;;;OAOG;IACG,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,yBAAyB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA6B9F;;;;;OAKG;IACG,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQjF;;;;;;;OAOG;IACG,OAAO,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAIxC;;;OAGG;IACG,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,yBAAyB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA4BtG,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC,kBAAkB;IAClB,iBAAiB,CAAC,MAAM,EAAE,uBAAuB;CAGlD"}
1
+ {"version":3,"file":"xtz.d.ts","sourceRoot":"","sources":["../../src/xtz.ts"],"names":[],"mappings":"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"}
package/dist/src/xtz.js CHANGED
@@ -9,6 +9,8 @@ const secp256k1_1 = require("@bitgo/secp256k1");
9
9
  const statics_1 = require("@bitgo/statics");
10
10
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
11
11
  const lib_1 = require("./lib");
12
+ const utils_1 = require("./lib/utils");
13
+ const superagent_1 = __importDefault(require("superagent"));
12
14
  class Xtz extends sdk_core_1.BaseCoin {
13
15
  constructor(bitgo, staticsCoin) {
14
16
  super(bitgo);
@@ -148,6 +150,102 @@ class Xtz extends sdk_core_1.BaseCoin {
148
150
  const signatureData = await lib_1.Utils.sign(keyPair, messageHex);
149
151
  return Buffer.from(signatureData.sig);
150
152
  }
153
+ /**
154
+ * Method to validate recovery params
155
+ * @param {RecoverOptions} params
156
+ * @returns {void}
157
+ */
158
+ validateRecoveryParams(params) {
159
+ if (params.userKey === undefined) {
160
+ throw new Error('missing userKey');
161
+ }
162
+ if (params.backupKey === undefined) {
163
+ throw new Error('missing backupKey');
164
+ }
165
+ if (!params.isUnsignedSweep && params.walletPassphrase === undefined && !params.userKey.startsWith('xpub')) {
166
+ throw new Error('missing wallet passphrase');
167
+ }
168
+ if (params.walletContractAddress === undefined || !this.isValidAddress(params.walletContractAddress)) {
169
+ throw new Error('invalid walletContractAddress');
170
+ }
171
+ if (params.recoveryDestination === undefined || !this.isValidAddress(params.recoveryDestination)) {
172
+ throw new Error('invalid recoveryDestination');
173
+ }
174
+ }
175
+ /**
176
+ * Make a query to blockchain explorer for information such as balance, token balance, solidity calls
177
+ * @param query {Object} key-value pairs of parameters to append after /api
178
+ * @param apiKey {string} optional API key to use instead of the one from the environment
179
+ * @returns {Object} response from the blockchain explorer
180
+ */
181
+ async recoveryBlockchainExplorerQuery(params, apiKey) {
182
+ const response = await superagent_1.default.get(`${sdk_core_1.common.Environments[this.bitgo.getEnv()].xtzExplorerBaseUrl}/v1/${params.actionPath}${params.address ? '/' + params.address : ''}${params.action ? '/' + params.action : ''}${apiKey ? `?apikey=${apiKey}` : ''}`);
183
+ if (!response.ok) {
184
+ throw new Error('could not reach TZKT');
185
+ }
186
+ if (response.status === 429) {
187
+ throw new Error('TZKT rate limit reached');
188
+ }
189
+ return response.body;
190
+ }
191
+ /**
192
+ * Queries public block explorer to get the next XTZ address details
193
+ * @param {string} address
194
+ * @param {string} apiKey - optional API key to use instead of the one from the environment
195
+ * @returns {Promise<any>}
196
+ */
197
+ async getAddressDetails(address, apiKey) {
198
+ const result = await this.recoveryBlockchainExplorerQuery({
199
+ actionPath: 'accounts',
200
+ address,
201
+ }, apiKey);
202
+ if (!result) {
203
+ throw new Error(`Unable to find details for ${address}`);
204
+ }
205
+ return result;
206
+ }
207
+ /**
208
+ * Query explorer for the balance of an address
209
+ * @param {String} address - the XTZ base/receive address
210
+ * @param {String} apiKey - optional API key to use instead of the one from the environment
211
+ * @returns {BigNumber} address balance
212
+ */
213
+ async queryAddressBalance(address, apiKey) {
214
+ const result = await this.recoveryBlockchainExplorerQuery({
215
+ actionPath: (0, utils_1.isValidOriginatedAddress)(address) ? 'contracts' : 'accounts',
216
+ address,
217
+ }, apiKey);
218
+ // throw if the result does not exist or the result is not a valid number
219
+ if (!result || !result.balance) {
220
+ throw new Error(`Could not obtain address balance for ${address} from the explorer`);
221
+ }
222
+ return new bignumber_js_1.default(result.balance, 10);
223
+ }
224
+ /**
225
+ * Generate and pack the data to sign for each transfer.
226
+ *
227
+ * @param {String} contractAddress Wallet address to withdraw funds from
228
+ * @param {String} contractCounter Wallet internal counter
229
+ * @param {String} destination Tezos address to send the funds to
230
+ * @param {String} amount Number of mutez to move
231
+ * @param {IMSClient} imsClient Existing IMS client connection to reuse
232
+ * @return {String} data to sign in hex format
233
+ */
234
+ async packDataToSign(contractAddress, contractCounter, destination, amount) {
235
+ const dataToSign = (0, utils_1.generateDataToSign)(contractAddress, destination, amount, contractCounter);
236
+ const xtzRpcUrl = `${sdk_core_1.common.Environments[this.bitgo.getEnv()].xtzRpcUrl}/chains/main/blocks/head/helpers/scripts/pack_data`;
237
+ if (!xtzRpcUrl) {
238
+ throw new Error('XTZ RPC url not found');
239
+ }
240
+ const response = await superagent_1.default.post(xtzRpcUrl).send(dataToSign);
241
+ if (response.status === 404) {
242
+ throw new Error(`unable to pack data to sign ${response.status}: ${response.body.error.message}`);
243
+ }
244
+ else if (response.status !== 200) {
245
+ throw new Error(`unexpected IMS response status ${response.status}: ${response.body.error.message}`);
246
+ }
247
+ return response.body.packed;
248
+ }
151
249
  /**
152
250
  * Builds a funds recovery transaction without BitGo.
153
251
  * We need to do three queries during this:
@@ -157,7 +255,97 @@ class Xtz extends sdk_core_1.BaseCoin {
157
255
  * @param params
158
256
  */
159
257
  async recover(params) {
160
- throw new sdk_core_1.MethodNotImplementedError();
258
+ this.validateRecoveryParams(params);
259
+ // Clean up whitespace from entered values
260
+ const backupKey = params.backupKey.replace(/\s/g, '');
261
+ const userAddressDetails = await this.getAddressDetails(params.walletContractAddress, params.apiKey);
262
+ if (!userAddressDetails) {
263
+ throw new Error('Unable to fetch user address details');
264
+ }
265
+ // Decrypt backup private key and get address
266
+ let backupPrv;
267
+ try {
268
+ backupPrv = this.bitgo.decrypt({
269
+ input: backupKey,
270
+ password: params.walletPassphrase,
271
+ });
272
+ }
273
+ catch (e) {
274
+ throw new Error(`Error decrypting backup keychain: ${e.message}`);
275
+ }
276
+ const keyPair = new lib_1.KeyPair({ prv: backupPrv });
277
+ const backupSigningKey = keyPair.getKeys().prv;
278
+ if (!backupSigningKey) {
279
+ throw new Error('no private key');
280
+ }
281
+ const backupKeyAddress = keyPair.getAddress();
282
+ const backupAddressDetails = await this.getAddressDetails(backupKeyAddress, params.apiKey || '');
283
+ if (!backupAddressDetails.counter || !backupAddressDetails.balance) {
284
+ throw new Error(`Missing required detail(s): counter, balance`);
285
+ }
286
+ const backupKeyNonce = new bignumber_js_1.default(backupAddressDetails.counter + 1, 10);
287
+ // get balance of backupKey to ensure funds are available to pay fees
288
+ const backupKeyBalance = new bignumber_js_1.default(backupAddressDetails.balance, 10);
289
+ const gasLimit = (0, utils_1.isValidOriginatedAddress)(params.recoveryDestination)
290
+ ? utils_1.TRANSACTION_GAS_LIMIT.CONTRACT_TRANSFER
291
+ : utils_1.TRANSACTION_GAS_LIMIT.TRANSFER;
292
+ const gasPrice = utils_1.TRANSACTION_FEE.TRANSFER;
293
+ // Checking whether back up key address has sufficient funds for transaction
294
+ if (backupKeyBalance.lt(gasPrice)) {
295
+ const weiToGwei = 10 ** 6;
296
+ throw new Error(`Backup key address ${backupKeyAddress} has balance ${(backupKeyBalance.toNumber() / weiToGwei).toString()} Gwei.` +
297
+ `This address must have a balance of at least ${(gasPrice / weiToGwei).toString()}` +
298
+ ` Gwei to perform recoveries. Try sending some funds to this address then retry.`);
299
+ }
300
+ // get balance of sender address
301
+ if (!userAddressDetails.balance || userAddressDetails.balance === 0) {
302
+ throw new Error('No funds to recover from source address');
303
+ }
304
+ const txAmount = userAddressDetails.balance;
305
+ if (new bignumber_js_1.default(txAmount).isLessThanOrEqualTo(0)) {
306
+ throw new Error('Wallet does not have enough funds to recover');
307
+ }
308
+ const feeInfo = {
309
+ fee: new bignumber_js_1.default(utils_1.TRANSACTION_FEE.TRANSFER),
310
+ gasLimit: new bignumber_js_1.default(gasLimit),
311
+ storageLimit: new bignumber_js_1.default(utils_1.TRANSACTION_STORAGE_LIMIT.TRANSFER),
312
+ };
313
+ const txBuilder = new lib_1.TransactionBuilder(statics_1.coins.get(this.getChain()));
314
+ txBuilder.type(sdk_core_1.TransactionType.Send);
315
+ txBuilder.source(backupKeyAddress);
316
+ // Used to set the branch for the transaction
317
+ const chainHead = await this.recoveryBlockchainExplorerQuery({
318
+ actionPath: 'head',
319
+ });
320
+ if (!chainHead || !chainHead.hash) {
321
+ throw new Error('Unable to fetch chain head');
322
+ }
323
+ txBuilder.branch(chainHead.hash);
324
+ if (!backupAddressDetails.revealed) {
325
+ feeInfo.fee = feeInfo.fee.plus(utils_1.TRANSACTION_FEE.REVEAL);
326
+ feeInfo.gasLimit = feeInfo.gasLimit.plus(utils_1.TRANSACTION_GAS_LIMIT.REVEAL);
327
+ feeInfo.storageLimit = feeInfo.storageLimit.plus(utils_1.TRANSACTION_STORAGE_LIMIT.REVEAL);
328
+ backupKeyNonce.plus(1);
329
+ const publicKeyToReveal = keyPair.getKeys();
330
+ txBuilder.publicKeyToReveal(publicKeyToReveal.pub);
331
+ }
332
+ txBuilder.counter(backupKeyNonce.toString());
333
+ const packedDataToSign = await this.packDataToSign(params.walletContractAddress, backupKeyNonce.toString(), params.recoveryDestination, txAmount?.toString());
334
+ txBuilder
335
+ .transfer(txAmount?.toString())
336
+ .from(params.walletContractAddress)
337
+ .to(params.recoveryDestination)
338
+ .counter(backupKeyNonce.toString())
339
+ .fee(utils_1.TRANSACTION_FEE.TRANSFER.toString())
340
+ .storageLimit(utils_1.TRANSACTION_STORAGE_LIMIT.TRANSFER.toString())
341
+ .gasLimit(gasLimit.toString())
342
+ .dataToSign(packedDataToSign);
343
+ txBuilder.sign({ key: backupSigningKey });
344
+ const signedTx = await txBuilder.build();
345
+ return {
346
+ id: signedTx.id,
347
+ tx: signedTx.toBroadcastFormat(),
348
+ };
161
349
  }
162
350
  /**
163
351
  * Explain a Tezos transaction from txHex
@@ -197,4 +385,4 @@ class Xtz extends sdk_core_1.BaseCoin {
197
385
  }
198
386
  }
199
387
  exports.Xtz = Xtz;
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHR6LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3h0ei50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw4Q0FleUI7QUFDekIsZ0RBQXlDO0FBQ3pDLDRDQUFnRjtBQUNoRixnRUFBcUM7QUFDckMsK0JBQXNFO0FBRXRFLE1BQWEsR0FBSSxTQUFRLG1CQUFRO0lBRy9CLFlBQVksS0FBZ0IsRUFBRSxXQUF1QztRQUNuRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFYixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLFdBQXVDO1FBQzdFLE9BQU8sSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxvQkFBb0I7SUFDcEIsc0JBQXNCO1FBQ3BCLE9BQU8sd0JBQWEsQ0FBQyxPQUFPLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILHdCQUF3QjtRQUN0QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FF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RSxDQUFDLEVBQUU7WUFDVCxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU87WUFDbkIsWUFBWSxFQUFFLEVBQUUsQ0FBQyxPQUFPO2lCQUNyQixNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLHNCQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ25GLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDYixhQUFhLEVBQUUsRUFBRSxFQUFFLDRDQUE0QztZQUMvRCxZQUFZLEVBQUUsR0FBRyxFQUFFLG9DQUFvQztZQUN2RCxHQUFHLEVBQUUsTUFBTSxDQUFDLE9BQU87U0FDYixDQUFDO0lBQ1gsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLE9BQU8sV0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsaUJBQWlCLENBQUMsTUFBK0I7UUFDL0MsTUFBTSxJQUFJLG9DQUF5QixFQUFFLENBQUM7SUFDeEMsQ0FBQztDQUNGO0FBek5ELGtCQXlOQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VDb2luLFxuICBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBCaXRHb0Jhc2UsXG4gIE1ldGhvZE5vdEltcGxlbWVudGVkRXJyb3IsXG4gIFBhcnNlZFRyYW5zYWN0aW9uLFxuICBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgS2V5UGFpciBhcyBTZGtDb3JlS2V5UGFpcixcbiAgU2lnbmVkVHJhbnNhY3Rpb24sXG4gIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24sXG4gIFZlcmlmeUFkZHJlc3NPcHRpb25zLFxuICBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIE11bHRpc2lnVHlwZSxcbiAgbXVsdGlzaWdUeXBlcyxcbiAgQXVkaXREZWNyeXB0ZWRLZXlQYXJhbXMsXG59IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBiaXAzMiB9IGZyb20gJ0BiaXRnby9zZWNwMjU2azEnO1xuaW1wb3J0IHsgQ29pbkZhbWlseSwgY29pbnMsIEJhc2VDb2luIGFzIFN0YXRpY3NCYXNlQ29pbiB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IEludGVyZmFjZSwgS2V5UGFpciwgVHJhbnNhY3Rpb25CdWlsZGVyLCBVdGlscyB9IGZyb20gJy4vbGliJztcblxuZXhwb3J0IGNsYXNzIFh0eiBleHRlbmRzIEJhc2VDb2luIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9zdGF0aWNzQ29pbjogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPjtcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pIHtcbiAgICBzdXBlcihiaXRnbyk7XG5cbiAgICBpZiAoIXN0YXRpY3NDb2luKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgY29uc3RydWN0b3IgcGFyYW1ldGVyIHN0YXRpY3NDb2luJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGljc0NvaW4gPSBzdGF0aWNzQ29pbjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbnN0YW5jZShiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pOiBCYXNlQ29pbiB7XG4gICAgcmV0dXJuIG5ldyBYdHooYml0Z28sIHN0YXRpY3NDb2luKTtcbiAgfVxuXG4gIGdldENoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRpY3NDb2luLm5hbWU7XG4gIH1cblxuICBnZXRGYW1pbHkoKTogQ29pbkZhbWlseSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRpY3NDb2luLmZhbWlseTtcbiAgfVxuXG4gIGdldEZ1bGxOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRpY3NDb2luLmZ1bGxOYW1lO1xuICB9XG5cbiAgZ2V0QmFzZUZhY3RvcigpIHtcbiAgICByZXR1cm4gTWF0aC5wb3coMTAsIHRoaXMuX3N0YXRpY3NDb2luLmRlY2ltYWxQbGFjZXMpO1xuICB9XG5cbiAgLyoqIGluaGVyaXRlZCBkb2MgKi9cbiAgZ2V0RGVmYXVsdE11bHRpc2lnVHlwZSgpOiBNdWx0aXNpZ1R5cGUge1xuICAgIHJldHVybiBtdWx0aXNpZ1R5cGVzLm9uY2hhaW47XG4gIH1cblxuICAvKipcbiAgICogRmxhZyBmb3Igc2VuZGluZyB2YWx1ZSBvZiAwXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIG9rYXkgdG8gc2VuZCAwIHZhbHVlLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHZhbHVlbGVzc1RyYW5zZmVyQWxsb3dlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBYdHogc3VwcG9ydHMgdHJhbnNmZXJzIHRvIGNvbnNvbGlkYXRlIGJhbGFuY2UgZnJvbSByZWNlaXZlIGFkZHJlc3MgdG8gdGhlIHdhbGxldCBjb250cmFjdFxuICAgKi9cbiAgYWxsb3dzQWNjb3VudENvbnNvbGlkYXRpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGlzIGlzIGEgdmFsaWQgYmFzZTU4IG9yIGhleCBhZGRyZXNzXG4gICAqIEBwYXJhbSBhZGRyZXNzXG4gICAqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIWFkZHJlc3MpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIFV0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIFRlem9zIGtleSBwYWlyIC0gQml0R28geHB1YiBmb3JtYXRcbiAgICpcbiAgICogQHBhcmFtIHNlZWRcbiAgICogQHJldHVybnMge09iamVjdH0gb2JqZWN0IHdpdGggZ2VuZXJhdGVkIHhwdWIsIHhwcnZcbiAgICovXG4gIGdlbmVyYXRlS2V5UGFpcihzZWVkPzogQnVmZmVyKTogU2RrQ29yZUtleVBhaXIge1xuICAgIGNvbnN0IGtleVBhaXIgPSBzZWVkID8gbmV3IEtleVBhaXIoeyBzZWVkIH0pIDogbmV3IEtleVBhaXIoKTtcbiAgICBjb25zdCBrZXlzID0ga2V5UGFpci5nZXRFeHRlbmRlZEtleXMoKTtcblxuICAgIGlmICgha2V5cy54cHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgeHBydiBpbiBrZXkgZ2VuZXJhdGlvbi4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcHViOiBrZXlzLnhwdWIsXG4gICAgICBwcnY6IGtleXMueHBydixcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgcGFyc2VUcmFuc2FjdGlvbihwYXJhbXM6IFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbj4ge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGFzeW5jIGlzV2FsbGV0QWRkcmVzcyhwYXJhbXM6IFZlcmlmeUFkZHJlc3NPcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdGhyb3cgbmV3IE1ldGhvZE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeVRyYW5zYWN0aW9uKHBhcmFtczogVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyB0eFBhcmFtcyB9ID0gcGFyYW1zO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHR4UGFyYW1zLnJlY2lwaWVudHMpICYmIHR4UGFyYW1zLnJlY2lwaWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgJHt0aGlzLmdldENoYWluKCl9IGRvZXNuJ3Qgc3VwcG9ydCBzZW5kaW5nIHRvIG1vcmUgdGhhbiAxIGRlc3RpbmF0aW9uIGFkZHJlc3Mgd2l0aGluIGEgc2luZ2xlIHRyYW5zYWN0aW9uLiBUcnkgYWdhaW4sIHVzaW5nIG9ubHkgYSBzaW5nbGUgcmVjaXBpZW50LmBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcml2ZSBhIHVzZXIga2V5IHVzaW5nIHRoZSBjaGFpbiBwYXRoIG9mIHRoZSBhZGRyZXNzXG4gICAqIEBwYXJhbSBrZXlcbiAgICogQHBhcmFtIHBhdGhcbiAgICogQHJldHVybnMge3N0cmluZ30gZGVyaXZlZCBwcml2YXRlIGtleVxuICAgKi9cbiAgZGVyaXZlS2V5V2l0aFBhdGgoeyBrZXksIHBhdGggfTogeyBrZXk6IHN0cmluZzsgcGF0aDogc3RyaW5nIH0pOiBzdHJpbmcge1xuICAgIGNvbnN0IGtleWNoYWluID0gYmlwMzIuZnJvbUJhc2U1OChrZXkpO1xuICAgIGNvbnN0IGRlcml2ZWRLZXlOb2RlID0ga2V5Y2hhaW4uZGVyaXZlUGF0aChwYXRoKTtcbiAgICByZXR1cm4gZGVyaXZlZEtleU5vZGUudG9CYXNlNTgoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBc3NlbWJsZSBrZXljaGFpbiBhbmQgaGFsZi1zaWduIHByZWJ1aWx0IHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICogQHBhcmFtIHBhcmFtcy50eFByZWJ1aWxkIHtPYmplY3R9IHByZWJ1aWxkIG9iamVjdCByZXR1cm5lZCBieSBwbGF0Zm9ybVxuICAgKiBAcGFyYW0gcGFyYW1zLnBydiB7U3RyaW5nfSB1c2VyIHBydlxuICAgKiBAcmV0dXJucyBCbHVlYmlyZDxTaWduZWRUcmFuc2FjdGlvbj5cbiAgICovXG4gIGFzeW5jIHNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IEludGVyZmFjZS5YdHpTaWduVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxTaWduZWRUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KHRoaXMuZ2V0Q2hhaW4oKSkpO1xuICAgIHR4QnVpbGRlci5mcm9tKHBhcmFtcy50eFByZWJ1aWxkLnR4SGV4KTtcbiAgICB0eEJ1aWxkZXIuc291cmNlKHBhcmFtcy50eFByZWJ1aWxkLnNvdXJjZSk7XG4gICAgaWYgKHBhcmFtcy50eFByZWJ1aWxkLmRhdGFUb1NpZ24pIHtcbiAgICAgIHR4QnVpbGRlci5vdmVycmlkZURhdGFUb1NpZ24oeyBkYXRhVG9TaWduOiBwYXJhbXMudHhQcmVidWlsZC5kYXRhVG9TaWduIH0pO1xuICAgIH1cbiAgICAvLyBUaGUgcGF0aCAvMC8wLzAvMCBpcyB1c2VkIGJ5IHRoZSB3YWxsZXQgYmFzZSBhZGRyZXNzXG4gICAgLy8gRGVyaXZlIHRoZSB1c2VyIGtleSBvbmx5IGlmIHRoZSB0cmFuc2FjdGlvbiBpcyBzZW50IGZyb20gYSByZWNlaXZlIGFkZHJlc3NcbiAgICBsZXQga2V5O1xuICAgIGNvbnN0IHsgY2hhaW4sIGluZGV4IH0gPSBwYXJhbXMudHhQcmVidWlsZC5hZGRyZXNzSW5mbztcbiAgICBpZiAoY2hhaW4gPT09IDAgJiYgaW5kZXggPT09IDApIHtcbiAgICAgIGtleSA9IHBhcmFtcy5wcnY7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRlcml2YXRpb25QYXRoID0gYDAvMC8ke2NoYWlufS8ke2luZGV4fWA7XG4gICAgICBrZXkgPSB0aGlzLmRlcml2ZUtleVdpdGhQYXRoKHsga2V5OiBwYXJhbXMucHJ2LCBwYXRoOiBkZXJpdmF0aW9uUGF0aCB9KTtcbiAgICB9XG4gICAgdHhCdWlsZGVyLnNpZ24oeyBrZXkgfSk7XG5cbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIGlmICghdHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtZXNzYWdlZCBwYXNzZWQgdG8gc2lnbk1lc3NhZ2UnKTtcbiAgICB9XG4gICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICB0eEhleDogdHJhbnNhY3Rpb24udG9Ccm9hZGNhc3RGb3JtYXQoKSxcbiAgICB9O1xuICAgIHJldHVybiB0cmFuc2FjdGlvbi5zaWduYXR1cmUubGVuZ3RoID49IDIgPyByZXNwb25zZSA6IHsgaGFsZlNpZ25lZDogcmVzcG9uc2UgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWduIG1lc3NhZ2Ugd2l0aCBwcml2YXRlIGtleVxuICAgKlxuICAgKiBAcGFyYW0ga2V5XG4gICAqIEBwYXJhbSBtZXNzYWdlXG4gICAqL1xuICBhc3luYyBzaWduTWVzc2FnZShrZXk6IFNka0NvcmVLZXlQYWlyLCBtZXNzYWdlOiBzdHJpbmcgfCBCdWZmZXIpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgIGNvbnN0IGtleVBhaXIgPSBuZXcgS2V5UGFpcih7IHBydjoga2V5LnBydiB9KTtcbiAgICBjb25zdCBtZXNzYWdlSGV4ID1cbiAgICAgIG1lc3NhZ2UgaW5zdGFuY2VvZiBCdWZmZXIgPyBtZXNzYWdlLnRvU3RyaW5nKCdoZXgnKSA6IEJ1ZmZlci5mcm9tKG1lc3NhZ2UgYXMgc3RyaW5nLCAndXRmLTgnKS50b1N0cmluZygnaGV4Jyk7XG4gICAgY29uc3Qgc2lnbmF0dXJlRGF0YSA9IGF3YWl0IFV0aWxzLnNpZ24oa2V5UGFpciwgbWVzc2FnZUhleCk7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHNpZ25hdHVyZURhdGEuc2lnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgYSBmdW5kcyByZWNvdmVyeSB0cmFuc2FjdGlvbiB3aXRob3V0IEJpdEdvLlxuICAgKiBXZSBuZWVkIHRvIGRvIHRocmVlIHF1ZXJpZXMgZHVyaW5nIHRoaXM6XG4gICAqIDEpIE5vZGUgcXVlcnkgLSBob3cgbXVjaCBtb25leSBpcyBpbiB0aGUgYWNjb3VudFxuICAgKiAyKSBCdWlsZCB0cmFuc2FjdGlvbiAtIGJ1aWxkIG91ciB0cmFuc2FjdGlvbiBmb3IgdGhlIGFtb3VudFxuICAgKiAzKSBTZW5kIHNpZ25lZCBidWlsZCAtIHNlbmQgb3VyIHNpZ25lZCBidWlsZCB0byBhIHB1YmxpYyBub2RlXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICovXG4gIGFzeW5jIHJlY292ZXIocGFyYW1zOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIHRocm93IG5ldyBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cblxuICAvKipcbiAgICogRXhwbGFpbiBhIFRlem9zIHRyYW5zYWN0aW9uIGZyb20gdHhIZXhcbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKi9cbiAgYXN5bmMgZXhwbGFpblRyYW5zYWN0aW9uKHBhcmFtczogSW50ZXJmYWNlLkV4cGxhaW5UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFRyYW5zYWN0aW9uRXhwbGFuYXRpb24+IHtcbiAgICBjb25zdCB0eEhleCA9IHBhcmFtcy50eEhleCB8fCAocGFyYW1zLmhhbGZTaWduZWQgJiYgcGFyYW1zLmhhbGZTaWduZWQudHhIZXgpO1xuICAgIGlmICghdHhIZXggfHwgIXBhcmFtcy5mZWVJbmZvKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgZXhwbGFpbiB0eCBwYXJhbWV0ZXJzJyk7XG4gICAgfVxuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KHRoaXMuZ2V0Q2hhaW4oKSkpO1xuICAgIC8vIE5ld2VyIGNvaW5zIGNhbiByZXR1cm4gQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgaW5zdGVhZCBvZiBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyXG4gICAgaWYgKCEodHhCdWlsZGVyIGluc3RhbmNlb2YgQmFzZVRyYW5zYWN0aW9uQnVpbGRlcikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZ2V0QnVpbGRlcigpIGRpZCBub3QgcmV0dXJuIGFuIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIgb2JqZWN0LiBIYXMgaXQgYmVlbiB1cGRhdGVkPycpO1xuICAgIH1cbiAgICB0eEJ1aWxkZXIuZnJvbSh0eEhleCk7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgIGNvbnN0IGRpc3BsYXlPcmRlciA9IFsnaWQnLCAnb3V0cHV0QW1vdW50JywgJ2NoYW5nZUFtb3VudCcsICdvdXRwdXRzJywgJ2NoYW5nZU91dHB1dHMnLCAnZmVlJ107XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGlzcGxheU9yZGVyLFxuICAgICAgaWQ6IHR4LmlkLFxuICAgICAgb3V0cHV0czogdHgub3V0cHV0cyxcbiAgICAgIG91dHB1dEFtb3VudDogdHgub3V0cHV0c1xuICAgICAgICAucmVkdWNlKChhY2N1bXVsYXRvciwgb3V0cHV0KSA9PiBhY2N1bXVsYXRvci5wbHVzKG91dHB1dC52YWx1ZSksIG5ldyBCaWdOdW1iZXIoJzAnKSlcbiAgICAgICAgLnRvRml4ZWQoMCksXG4gICAgICBjaGFuZ2VPdXRwdXRzOiBbXSwgLy8gYWNjb3VudCBiYXNlZCBkb2VzIG5vdCB1c2UgY2hhbmdlIG91dHB1dHNcbiAgICAgIGNoYW5nZUFtb3VudDogJzAnLCAvLyBhY2NvdW50IGJhc2UgZG9lcyBub3QgbWFrZSBjaGFuZ2VcbiAgICAgIGZlZTogcGFyYW1zLmZlZUluZm8sXG4gICAgfSBhcyBhbnk7XG4gIH1cblxuICBpc1ZhbGlkUHViKHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFV0aWxzLmlzVmFsaWRQdWJsaWNLZXkocHViKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBhdWRpdERlY3J5cHRlZEtleShwYXJhbXM6IEF1ZGl0RGVjcnlwdGVkS2V5UGFyYW1zKSB7XG4gICAgdGhyb3cgbmV3IE1ldGhvZE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgfVxufVxuIl19
388
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHR6LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3h0ei50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw4Q0FpQnlCO0FBQ3pCLGdEQUF5QztBQUN6Qyw0Q0FBZ0Y7QUFDaEYsZ0VBQXFDO0FBQ3JDLCtCQUFzRTtBQUV0RSx1Q0FNcUI7QUFDckIsNERBQWlDO0FBQ2pDLE1BQWEsR0FBSSxTQUFRLG1CQUFRO0lBRy9CLFlBQVksS0FBZ0IsRUFBRSxXQUF1QztRQUNuRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFYixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLFdBQXVDO1FBQzdFLE9BQU8sSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxvQkFBb0I7SUFDcEIsc0JBQXNCO1FBQ3BCLE9BQU8sd0JBQWEsQ0FBQyxPQUFPLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILHdCQUF3QjtRQUN0QixPQUFPLElB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O0lBRUQsa0JBQWtCO0lBQ2xCLGlCQUFpQixDQUFDLE1BQStCO1FBQy9DLE1BQU0sSUFBSSxvQ0FBeUIsRUFBRSxDQUFDO0lBQ3hDLENBQUM7Q0FDRjtBQWpkRCxrQkFpZEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlQ29pbixcbiAgQmFzZVRyYW5zYWN0aW9uQnVpbGRlcixcbiAgQml0R29CYXNlLFxuICBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yLFxuICBQYXJzZWRUcmFuc2FjdGlvbixcbiAgUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIEtleVBhaXIgYXMgU2RrQ29yZUtleVBhaXIsXG4gIFNpZ25lZFRyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLFxuICBWZXJpZnlBZGRyZXNzT3B0aW9ucyxcbiAgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zLFxuICBNdWx0aXNpZ1R5cGUsXG4gIG11bHRpc2lnVHlwZXMsXG4gIEF1ZGl0RGVjcnlwdGVkS2V5UGFyYW1zLFxuICBjb21tb24sXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IGJpcDMyIH0gZnJvbSAnQGJpdGdvL3NlY3AyNTZrMSc7XG5pbXBvcnQgeyBDb2luRmFtaWx5LCBjb2lucywgQmFzZUNvaW4gYXMgU3RhdGljc0Jhc2VDb2luIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgSW50ZXJmYWNlLCBLZXlQYWlyLCBUcmFuc2FjdGlvbkJ1aWxkZXIsIFV0aWxzIH0gZnJvbSAnLi9saWInO1xuaW1wb3J0IHsgUmVjb3Zlck9wdGlvbnMgfSBmcm9tICcuL2xpYi9pZmFjZSc7XG5pbXBvcnQge1xuICBnZW5lcmF0ZURhdGFUb1NpZ24sXG4gIGlzVmFsaWRPcmlnaW5hdGVkQWRkcmVzcyxcbiAgVFJBTlNBQ1RJT05fRkVFLFxuICBUUkFOU0FDVElPTl9HQVNfTElNSVQsXG4gIFRSQU5TQUNUSU9OX1NUT1JBR0VfTElNSVQsXG59IGZyb20gJy4vbGliL3V0aWxzJztcbmltcG9ydCByZXF1ZXN0IGZyb20gJ3N1cGVyYWdlbnQnO1xuZXhwb3J0IGNsYXNzIFh0eiBleHRlbmRzIEJhc2VDb2luIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9zdGF0aWNzQ29pbjogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPjtcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pIHtcbiAgICBzdXBlcihiaXRnbyk7XG5cbiAgICBpZiAoIXN0YXRpY3NDb2luKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgY29uc3RydWN0b3IgcGFyYW1ldGVyIHN0YXRpY3NDb2luJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGljc0NvaW4gPSBzdGF0aWNzQ29pbjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbnN0YW5jZShiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pOiBCYXNlQ29pbiB7XG4gICAgcmV0dXJuIG5ldyBYdHooYml0Z28sIHN0YXRpY3NDb2luKTtcbiAgfVxuXG4gIGdldENoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRpY3NDb2luLm5hbWU7XG4gIH1cblxuICBnZXRGYW1pbHkoKTogQ29pbkZhbWlseSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRpY3NDb2luLmZhbWlseTtcbiAgfVxuXG4gIGdldEZ1bGxOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRpY3NDb2luLmZ1bGxOYW1lO1xuICB9XG5cbiAgZ2V0QmFzZUZhY3RvcigpIHtcbiAgICByZXR1cm4gTWF0aC5wb3coMTAsIHRoaXMuX3N0YXRpY3NDb2luLmRlY2ltYWxQbGFjZXMpO1xuICB9XG5cbiAgLyoqIGluaGVyaXRlZCBkb2MgKi9cbiAgZ2V0RGVmYXVsdE11bHRpc2lnVHlwZSgpOiBNdWx0aXNpZ1R5cGUge1xuICAgIHJldHVybiBtdWx0aXNpZ1R5cGVzLm9uY2hhaW47XG4gIH1cblxuICAvKipcbiAgICogRmxhZyBmb3Igc2VuZGluZyB2YWx1ZSBvZiAwXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIG9rYXkgdG8gc2VuZCAwIHZhbHVlLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHZhbHVlbGVzc1RyYW5zZmVyQWxsb3dlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBYdHogc3VwcG9ydHMgdHJhbnNmZXJzIHRvIGNvbnNvbGlkYXRlIGJhbGFuY2UgZnJvbSByZWNlaXZlIGFkZHJlc3MgdG8gdGhlIHdhbGxldCBjb250cmFjdFxuICAgKi9cbiAgYWxsb3dzQWNjb3VudENvbnNvbGlkYXRpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGlzIGlzIGEgdmFsaWQgYmFzZTU4IG9yIGhleCBhZGRyZXNzXG4gICAqIEBwYXJhbSBhZGRyZXNzXG4gICAqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIWFkZHJlc3MpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIFV0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIFRlem9zIGtleSBwYWlyIC0gQml0R28geHB1YiBmb3JtYXRcbiAgICpcbiAgICogQHBhcmFtIHNlZWRcbiAgICogQHJldHVybnMge09iamVjdH0gb2JqZWN0IHdpdGggZ2VuZXJhdGVkIHhwdWIsIHhwcnZcbiAgICovXG4gIGdlbmVyYXRlS2V5UGFpcihzZWVkPzogQnVmZmVyKTogU2RrQ29yZUtleVBhaXIge1xuICAgIGNvbnN0IGtleVBhaXIgPSBzZWVkID8gbmV3IEtleVBhaXIoeyBzZWVkIH0pIDogbmV3IEtleVBhaXIoKTtcbiAgICBjb25zdCBrZXlzID0ga2V5UGFpci5nZXRFeHRlbmRlZEtleXMoKTtcblxuICAgIGlmICgha2V5cy54cHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgeHBydiBpbiBrZXkgZ2VuZXJhdGlvbi4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcHViOiBrZXlzLnhwdWIsXG4gICAgICBwcnY6IGtleXMueHBydixcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgcGFyc2VUcmFuc2FjdGlvbihwYXJhbXM6IFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbj4ge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGFzeW5jIGlzV2FsbGV0QWRkcmVzcyhwYXJhbXM6IFZlcmlmeUFkZHJlc3NPcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdGhyb3cgbmV3IE1ldGhvZE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeVRyYW5zYWN0aW9uKHBhcmFtczogVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyB0eFBhcmFtcyB9ID0gcGFyYW1zO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHR4UGFyYW1zLnJlY2lwaWVudHMpICYmIHR4UGFyYW1zLnJlY2lwaWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgJHt0aGlzLmdldENoYWluKCl9IGRvZXNuJ3Qgc3VwcG9ydCBzZW5kaW5nIHRvIG1vcmUgdGhhbiAxIGRlc3RpbmF0aW9uIGFkZHJlc3Mgd2l0aGluIGEgc2luZ2xlIHRyYW5zYWN0aW9uLiBUcnkgYWdhaW4sIHVzaW5nIG9ubHkgYSBzaW5nbGUgcmVjaXBpZW50LmBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcml2ZSBhIHVzZXIga2V5IHVzaW5nIHRoZSBjaGFpbiBwYXRoIG9mIHRoZSBhZGRyZXNzXG4gICAqIEBwYXJhbSBrZXlcbiAgICogQHBhcmFtIHBhdGhcbiAgICogQHJldHVybnMge3N0cmluZ30gZGVyaXZlZCBwcml2YXRlIGtleVxuICAgKi9cbiAgZGVyaXZlS2V5V2l0aFBhdGgoeyBrZXksIHBhdGggfTogeyBrZXk6IHN0cmluZzsgcGF0aDogc3RyaW5nIH0pOiBzdHJpbmcge1xuICAgIGNvbnN0IGtleWNoYWluID0gYmlwMzIuZnJvbUJhc2U1OChrZXkpO1xuICAgIGNvbnN0IGRlcml2ZWRLZXlOb2RlID0ga2V5Y2hhaW4uZGVyaXZlUGF0aChwYXRoKTtcbiAgICByZXR1cm4gZGVyaXZlZEtleU5vZGUudG9CYXNlNTgoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBc3NlbWJsZSBrZXljaGFpbiBhbmQgaGFsZi1zaWduIHByZWJ1aWx0IHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICogQHBhcmFtIHBhcmFtcy50eFByZWJ1aWxkIHtPYmplY3R9IHByZWJ1aWxkIG9iamVjdCByZXR1cm5lZCBieSBwbGF0Zm9ybVxuICAgKiBAcGFyYW0gcGFyYW1zLnBydiB7U3RyaW5nfSB1c2VyIHBydlxuICAgKiBAcmV0dXJucyBCbHVlYmlyZDxTaWduZWRUcmFuc2FjdGlvbj5cbiAgICovXG4gIGFzeW5jIHNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IEludGVyZmFjZS5YdHpTaWduVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxTaWduZWRUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KHRoaXMuZ2V0Q2hhaW4oKSkpO1xuICAgIHR4QnVpbGRlci5mcm9tKHBhcmFtcy50eFByZWJ1aWxkLnR4SGV4KTtcbiAgICB0eEJ1aWxkZXIuc291cmNlKHBhcmFtcy50eFByZWJ1aWxkLnNvdXJjZSk7XG4gICAgaWYgKHBhcmFtcy50eFByZWJ1aWxkLmRhdGFUb1NpZ24pIHtcbiAgICAgIHR4QnVpbGRlci5vdmVycmlkZURhdGFUb1NpZ24oeyBkYXRhVG9TaWduOiBwYXJhbXMudHhQcmVidWlsZC5kYXRhVG9TaWduIH0pO1xuICAgIH1cbiAgICAvLyBUaGUgcGF0aCAvMC8wLzAvMCBpcyB1c2VkIGJ5IHRoZSB3YWxsZXQgYmFzZSBhZGRyZXNzXG4gICAgLy8gRGVyaXZlIHRoZSB1c2VyIGtleSBvbmx5IGlmIHRoZSB0cmFuc2FjdGlvbiBpcyBzZW50IGZyb20gYSByZWNlaXZlIGFkZHJlc3NcbiAgICBsZXQga2V5O1xuICAgIGNvbnN0IHsgY2hhaW4sIGluZGV4IH0gPSBwYXJhbXMudHhQcmVidWlsZC5hZGRyZXNzSW5mbztcbiAgICBpZiAoY2hhaW4gPT09IDAgJiYgaW5kZXggPT09IDApIHtcbiAgICAgIGtleSA9IHBhcmFtcy5wcnY7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRlcml2YXRpb25QYXRoID0gYDAvMC8ke2NoYWlufS8ke2luZGV4fWA7XG4gICAgICBrZXkgPSB0aGlzLmRlcml2ZUtleVdpdGhQYXRoKHsga2V5OiBwYXJhbXMucHJ2LCBwYXRoOiBkZXJpdmF0aW9uUGF0aCB9KTtcbiAgICB9XG4gICAgdHhCdWlsZGVyLnNpZ24oeyBrZXkgfSk7XG5cbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIGlmICghdHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtZXNzYWdlZCBwYXNzZWQgdG8gc2lnbk1lc3NhZ2UnKTtcbiAgICB9XG4gICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICB0eEhleDogdHJhbnNhY3Rpb24udG9Ccm9hZGNhc3RGb3JtYXQoKSxcbiAgICB9O1xuICAgIHJldHVybiB0cmFuc2FjdGlvbi5zaWduYXR1cmUubGVuZ3RoID49IDIgPyByZXNwb25zZSA6IHsgaGFsZlNpZ25lZDogcmVzcG9uc2UgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWduIG1lc3NhZ2Ugd2l0aCBwcml2YXRlIGtleVxuICAgKlxuICAgKiBAcGFyYW0ga2V5XG4gICAqIEBwYXJhbSBtZXNzYWdlXG4gICAqL1xuICBhc3luYyBzaWduTWVzc2FnZShrZXk6IFNka0NvcmVLZXlQYWlyLCBtZXNzYWdlOiBzdHJpbmcgfCBCdWZmZXIpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgIGNvbnN0IGtleVBhaXIgPSBuZXcgS2V5UGFpcih7IHBydjoga2V5LnBydiB9KTtcbiAgICBjb25zdCBtZXNzYWdlSGV4ID1cbiAgICAgIG1lc3NhZ2UgaW5zdGFuY2VvZiBCdWZmZXIgPyBtZXNzYWdlLnRvU3RyaW5nKCdoZXgnKSA6IEJ1ZmZlci5mcm9tKG1lc3NhZ2UgYXMgc3RyaW5nLCAndXRmLTgnKS50b1N0cmluZygnaGV4Jyk7XG4gICAgY29uc3Qgc2lnbmF0dXJlRGF0YSA9IGF3YWl0IFV0aWxzLnNpZ24oa2V5UGFpciwgbWVzc2FnZUhleCk7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHNpZ25hdHVyZURhdGEuc2lnKTtcbiAgfVxuICAvKipcbiAgICogTWV0aG9kIHRvIHZhbGlkYXRlIHJlY292ZXJ5IHBhcmFtc1xuICAgKiBAcGFyYW0ge1JlY292ZXJPcHRpb25zfSBwYXJhbXNcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICB2YWxpZGF0ZVJlY292ZXJ5UGFyYW1zKHBhcmFtczogUmVjb3Zlck9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAocGFyYW1zLnVzZXJLZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHVzZXJLZXknKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLmJhY2t1cEtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgYmFja3VwS2V5Jyk7XG4gICAgfVxuXG4gICAgaWYgKCFwYXJhbXMuaXNVbnNpZ25lZFN3ZWVwICYmIHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlID09PSB1bmRlZmluZWQgJiYgIXBhcmFtcy51c2VyS2V5LnN0YXJ0c1dpdGgoJ3hwdWInKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHdhbGxldCBwYXNzcGhyYXNlJyk7XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy53YWxsZXRDb250cmFjdEFkZHJlc3MgPT09IHVuZGVmaW5lZCB8fCAhdGhpcy5pc1ZhbGlkQWRkcmVzcyhwYXJhbXMud2FsbGV0Q29udHJhY3RBZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHdhbGxldENvbnRyYWN0QWRkcmVzcycpO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMucmVjb3ZlcnlEZXN0aW5hdGlvbiA9PT0gdW5kZWZpbmVkIHx8ICF0aGlzLmlzVmFsaWRBZGRyZXNzKHBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHJlY292ZXJ5RGVzdGluYXRpb24nKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWFrZSBhIHF1ZXJ5IHRvIGJsb2NrY2hhaW4gZXhwbG9yZXIgZm9yIGluZm9ybWF0aW9uIHN1Y2ggYXMgYmFsYW5jZSwgdG9rZW4gYmFsYW5jZSwgc29saWRpdHkgY2FsbHNcbiAgICogQHBhcmFtIHF1ZXJ5IHtPYmplY3R9IGtleS12YWx1ZSBwYWlycyBvZiBwYXJhbWV0ZXJzIHRvIGFwcGVuZCBhZnRlciAvYXBpXG4gICAqIEBwYXJhbSBhcGlLZXkge3N0cmluZ30gb3B0aW9uYWwgQVBJIGtleSB0byB1c2UgaW5zdGVhZCBvZiB0aGUgb25lIGZyb20gdGhlIGVudmlyb25tZW50XG4gICAqIEByZXR1cm5zIHtPYmplY3R9IHJlc3BvbnNlIGZyb20gdGhlIGJsb2NrY2hhaW4gZXhwbG9yZXJcbiAgICovXG4gIGFzeW5jIHJlY292ZXJ5QmxvY2tjaGFpbkV4cGxvcmVyUXVlcnkoXG4gICAgcGFyYW1zOiB7XG4gICAgICBhY3Rpb25QYXRoOiBzdHJpbmc7XG4gICAgICBhZGRyZXNzPzogc3RyaW5nO1xuICAgICAgYWN0aW9uPzogc3RyaW5nO1xuICAgIH0sXG4gICAgYXBpS2V5Pzogc3RyaW5nXG4gICk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdC5nZXQoXG4gICAgICBgJHtjb21tb24uRW52aXJvbm1lbnRzW3RoaXMuYml0Z28uZ2V0RW52KCldLnh0ekV4cGxvcmVyQmFzZVVybH0vdjEvJHtwYXJhbXMuYWN0aW9uUGF0aH0ke1xuICAgICAgICBwYXJhbXMuYWRkcmVzcyA/ICcvJyArIHBhcmFtcy5hZGRyZXNzIDogJydcbiAgICAgIH0ke3BhcmFtcy5hY3Rpb24gPyAnLycgKyBwYXJhbXMuYWN0aW9uIDogJyd9JHthcGlLZXkgPyBgP2FwaWtleT0ke2FwaUtleX1gIDogJyd9YFxuICAgICk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFjaCBUWktUJyk7XG4gICAgfVxuXG4gICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDI5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RaS1QgcmF0ZSBsaW1pdCByZWFjaGVkJyk7XG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZS5ib2R5O1xuICB9XG5cbiAgLyoqXG4gICAqIFF1ZXJpZXMgcHVibGljIGJsb2NrIGV4cGxvcmVyIHRvIGdldCB0aGUgbmV4dCBYVFogYWRkcmVzcyBkZXRhaWxzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcGlLZXkgLSBvcHRpb25hbCBBUEkga2V5IHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBvbmUgZnJvbSB0aGUgZW52aXJvbm1lbnRcbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIGFzeW5jIGdldEFkZHJlc3NEZXRhaWxzKGFkZHJlc3M6IHN0cmluZywgYXBpS2V5Pzogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJlY292ZXJ5QmxvY2tjaGFpbkV4cGxvcmVyUXVlcnkoXG4gICAgICB7XG4gICAgICAgIGFjdGlvblBhdGg6ICdhY2NvdW50cycsXG4gICAgICAgIGFkZHJlc3MsXG4gICAgICB9LFxuICAgICAgYXBpS2V5XG4gICAgKTtcblxuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBmaW5kIGRldGFpbHMgZm9yICR7YWRkcmVzc31gKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBRdWVyeSBleHBsb3JlciBmb3IgdGhlIGJhbGFuY2Ugb2YgYW4gYWRkcmVzc1xuICAgKiBAcGFyYW0ge1N0cmluZ30gYWRkcmVzcyAtIHRoZSBYVFogYmFzZS9yZWNlaXZlIGFkZHJlc3NcbiAgICogQHBhcmFtIHtTdHJpbmd9IGFwaUtleSAtIG9wdGlvbmFsIEFQSSBrZXkgdG8gdXNlIGluc3RlYWQgb2YgdGhlIG9uZSBmcm9tIHRoZSBlbnZpcm9ubWVudFxuICAgKiBAcmV0dXJucyB7QmlnTnVtYmVyfSBhZGRyZXNzIGJhbGFuY2VcbiAgICovXG4gIGFzeW5jIHF1ZXJ5QWRkcmVzc0JhbGFuY2UoYWRkcmVzczogc3RyaW5nLCBhcGlLZXk/OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHJlc3VsdDogYW55ID0gYXdhaXQgdGhpcy5yZWNvdmVyeUJsb2NrY2hhaW5FeHBsb3JlclF1ZXJ5KFxuICAgICAge1xuICAgICAgICBhY3Rpb25QYXRoOiBpc1ZhbGlkT3JpZ2luYXRlZEFkZHJlc3MoYWRkcmVzcykgPyAnY29udHJhY3RzJyA6ICdhY2NvdW50cycsXG4gICAgICAgIGFkZHJlc3MsXG4gICAgICB9LFxuICAgICAgYXBpS2V5XG4gICAgKTtcbiAgICAvLyB0aHJvdyBpZiB0aGUgcmVzdWx0IGRvZXMgbm90IGV4aXN0IG9yIHRoZSByZXN1bHQgaXMgbm90IGEgdmFsaWQgbnVtYmVyXG4gICAgaWYgKCFyZXN1bHQgfHwgIXJlc3VsdC5iYWxhbmNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBvYnRhaW4gYWRkcmVzcyBiYWxhbmNlIGZvciAke2FkZHJlc3N9IGZyb20gdGhlIGV4cGxvcmVyYCk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQmlnTnVtYmVyKHJlc3VsdC5iYWxhbmNlLCAxMCk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgYW5kIHBhY2sgdGhlIGRhdGEgdG8gc2lnbiBmb3IgZWFjaCB0cmFuc2Zlci5cbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IGNvbnRyYWN0QWRkcmVzcyBXYWxsZXQgYWRkcmVzcyB0byB3aXRoZHJhdyBmdW5kcyBmcm9tXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBjb250cmFjdENvdW50ZXIgV2FsbGV0IGludGVybmFsIGNvdW50ZXJcbiAgICogQHBhcmFtIHtTdHJpbmd9IGRlc3RpbmF0aW9uIFRlem9zIGFkZHJlc3MgdG8gc2VuZCB0aGUgZnVuZHMgdG9cbiAgICogQHBhcmFtIHtTdHJpbmd9IGFtb3VudCBOdW1iZXIgb2YgbXV0ZXogdG8gbW92ZVxuICAgKiBAcGFyYW0ge0lNU0NsaWVudH0gaW1zQ2xpZW50IEV4aXN0aW5nIElNUyBjbGllbnQgY29ubmVjdGlvbiB0byByZXVzZVxuICAgKiBAcmV0dXJuIHtTdHJpbmd9IGRhdGEgdG8gc2lnbiBpbiBoZXggZm9ybWF0XG4gICAqL1xuICBhc3luYyBwYWNrRGF0YVRvU2lnbihjb250cmFjdEFkZHJlc3MsIGNvbnRyYWN0Q291bnRlciwgZGVzdGluYXRpb24sIGFtb3VudCkge1xuICAgIGNvbnN0IGRhdGFUb1NpZ24gPSBnZW5lcmF0ZURhdGFUb1NpZ24oY29udHJhY3RBZGRyZXNzLCBkZXN0aW5hdGlvbiwgYW1vdW50LCBjb250cmFjdENvdW50ZXIpO1xuICAgIGNvbnN0IHh0elJwY1VybCA9IGAke1xuICAgICAgY29tbW9uLkVudmlyb25tZW50c1t0aGlzLmJpdGdvLmdldEVudigpXS54dHpScGNVcmxcbiAgICB9L2NoYWlucy9tYWluL2Jsb2Nrcy9oZWFkL2hlbHBlcnMvc2NyaXB0cy9wYWNrX2RhdGFgO1xuXG4gICAgaWYgKCF4dHpScGNVcmwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignWFRaIFJQQyB1cmwgbm90IGZvdW5kJyk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZXF1ZXN0LnBvc3QoeHR6UnBjVXJsKS5zZW5kKGRhdGFUb1NpZ24pO1xuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmFibGUgdG8gcGFjayBkYXRhIHRvIHNpZ24gJHtyZXNwb25zZS5zdGF0dXN9OiAke3Jlc3BvbnNlLmJvZHkuZXJyb3IubWVzc2FnZX1gKTtcbiAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgSU1TIHJlc3BvbnNlIHN0YXR1cyAke3Jlc3BvbnNlLnN0YXR1c306ICR7cmVzcG9uc2UuYm9keS5lcnJvci5tZXNzYWdlfWApO1xuICAgIH1cbiAgICByZXR1cm4gcmVzcG9uc2UuYm9keS5wYWNrZWQ7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGEgZnVuZHMgcmVjb3ZlcnkgdHJhbnNhY3Rpb24gd2l0aG91dCBCaXRHby5cbiAgICogV2UgbmVlZCB0byBkbyB0aHJlZSBxdWVyaWVzIGR1cmluZyB0aGlzOlxuICAgKiAxKSBOb2RlIHF1ZXJ5IC0gaG93IG11Y2ggbW9uZXkgaXMgaW4gdGhlIGFjY291bnRcbiAgICogMikgQnVpbGQgdHJhbnNhY3Rpb24gLSBidWlsZCBvdXIgdHJhbnNhY3Rpb24gZm9yIHRoZSBhbW91bnRcbiAgICogMykgU2VuZCBzaWduZWQgYnVpbGQgLSBzZW5kIG91ciBzaWduZWQgYnVpbGQgdG8gYSBwdWJsaWMgbm9kZVxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBhc3luYyByZWNvdmVyKHBhcmFtczogUmVjb3Zlck9wdGlvbnMpOiBQcm9taXNlPHVua25vd24+IHtcbiAgICB0aGlzLnZhbGlkYXRlUmVjb3ZlcnlQYXJhbXMocGFyYW1zKTtcblxuICAgIC8vIENsZWFuIHVwIHdoaXRlc3BhY2UgZnJvbSBlbnRlcmVkIHZhbHVlc1xuXG4gICAgY29uc3QgYmFja3VwS2V5ID0gcGFyYW1zLmJhY2t1cEtleS5yZXBsYWNlKC9cXHMvZywgJycpO1xuXG4gICAgY29uc3QgdXNlckFkZHJlc3NEZXRhaWxzID0gYXdhaXQgdGhpcy5nZXRBZGRyZXNzRGV0YWlscyhwYXJhbXMud2FsbGV0Q29udHJhY3RBZGRyZXNzLCBwYXJhbXMuYXBpS2V5KTtcblxuICAgIGlmICghdXNlckFkZHJlc3NEZXRhaWxzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBmZXRjaCB1c2VyIGFkZHJlc3MgZGV0YWlscycpO1xuICAgIH1cblxuICAgIC8vIERlY3J5cHQgYmFja3VwIHByaXZhdGUga2V5IGFuZCBnZXQgYWRkcmVzc1xuICAgIGxldCBiYWNrdXBQcnY7XG5cbiAgICB0cnkge1xuICAgICAgYmFja3VwUHJ2ID0gdGhpcy5iaXRnby5kZWNyeXB0KHtcbiAgICAgICAgaW5wdXQ6IGJhY2t1cEtleSxcbiAgICAgICAgcGFzc3dvcmQ6IHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciBkZWNyeXB0aW5nIGJhY2t1cCBrZXljaGFpbjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICAgIGNvbnN0IGtleVBhaXIgPSBuZXcgS2V5UGFpcih7IHBydjogYmFja3VwUHJ2IH0pO1xuICAgIGNvbnN0IGJhY2t1cFNpZ25pbmdLZXkgPSBrZXlQYWlyLmdldEtleXMoKS5wcnY7XG4gICAgaWYgKCFiYWNrdXBTaWduaW5nS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vIHByaXZhdGUga2V5Jyk7XG4gICAgfVxuICAgIGNvbnN0IGJhY2t1cEtleUFkZHJlc3MgPSBrZXlQYWlyLmdldEFkZHJlc3MoKTtcblxuICAgIGNvbnN0IGJhY2t1cEFkZHJlc3NEZXRhaWxzID0gYXdhaXQgdGhpcy5nZXRBZGRyZXNzRGV0YWlscyhiYWNrdXBLZXlBZGRyZXNzLCBwYXJhbXMuYXBpS2V5IHx8ICcnKTtcblxuICAgIGlmICghYmFja3VwQWRkcmVzc0RldGFpbHMuY291bnRlciB8fCAhYmFja3VwQWRkcmVzc0RldGFpbHMuYmFsYW5jZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIHJlcXVpcmVkIGRldGFpbChzKTogY291bnRlciwgYmFsYW5jZWApO1xuICAgIH1cbiAgICBjb25zdCBiYWNrdXBLZXlOb25jZSA9IG5ldyBCaWdOdW1iZXIoYmFja3VwQWRkcmVzc0RldGFpbHMuY291bnRlciArIDEsIDEwKTtcblxuICAgIC8vIGdldCBiYWxhbmNlIG9mIGJhY2t1cEtleSB0byBlbnN1cmUgZnVuZHMgYXJlIGF2YWlsYWJsZSB0byBwYXkgZmVlc1xuICAgIGNvbnN0IGJhY2t1cEtleUJhbGFuY2UgPSBuZXcgQmlnTnVtYmVyKGJhY2t1cEFkZHJlc3NEZXRhaWxzLmJhbGFuY2UsIDEwKTtcblxuICAgIGNvbnN0IGdhc0xpbWl0ID0gaXNWYWxpZE9yaWdpbmF0ZWRBZGRyZXNzKHBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uKVxuICAgICAgPyBUUkFOU0FDVElPTl9HQVNfTElNSVQuQ09OVFJBQ1RfVFJBTlNGRVJcbiAgICAgIDogVFJBTlNBQ1RJT05fR0FTX0xJTUlULlRSQU5TRkVSO1xuICAgIGNvbnN0IGdhc1ByaWNlID0gVFJBTlNBQ1RJT05fRkVFLlRSQU5TRkVSO1xuXG4gICAgLy8gQ2hlY2tpbmcgd2hldGhlciBiYWNrIHVwIGtleSBhZGRyZXNzIGhhcyBzdWZmaWNpZW50IGZ1bmRzIGZvciB0cmFuc2FjdGlvblxuICAgIGlmIChiYWNrdXBLZXlCYWxhbmNlLmx0KGdhc1ByaWNlKSkge1xuICAgICAgY29uc3Qgd2VpVG9Hd2VpID0gMTAgKiogNjtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEJhY2t1cCBrZXkgYWRkcmVzcyAke2JhY2t1cEtleUFkZHJlc3N9IGhhcyBiYWxhbmNlICR7KFxuICAgICAgICAgIGJhY2t1cEtleUJhbGFuY2UudG9OdW1iZXIoKSAvIHdlaVRvR3dlaVxuICAgICAgICApLnRvU3RyaW5nKCl9IEd3ZWkuYCArXG4gICAgICAgICAgYFRoaXMgYWRkcmVzcyBtdXN0IGhhdmUgYSBiYWxhbmNlIG9mIGF0IGxlYXN0ICR7KGdhc1ByaWNlIC8gd2VpVG9Hd2VpKS50b1N0cmluZygpfWAgK1xuICAgICAgICAgIGAgR3dlaSB0byBwZXJmb3JtIHJlY292ZXJpZXMuIFRyeSBzZW5kaW5nIHNvbWUgZnVuZHMgdG8gdGhpcyBhZGRyZXNzIHRoZW4gcmV0cnkuYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBnZXQgYmFsYW5jZSBvZiBzZW5kZXIgYWRkcmVzc1xuICAgIGlmICghdXNlckFkZHJlc3NEZXRhaWxzLmJhbGFuY2UgfHwgdXNlckFkZHJlc3NEZXRhaWxzLmJhbGFuY2UgPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gZnVuZHMgdG8gcmVjb3ZlciBmcm9tIHNvdXJjZSBhZGRyZXNzJyk7XG4gICAgfVxuICAgIGNvbnN0IHR4QW1vdW50ID0gdXNlckFkZHJlc3NEZXRhaWxzLmJhbGFuY2U7XG4gICAgaWYgKG5ldyBCaWdOdW1iZXIodHhBbW91bnQpLmlzTGVzc1RoYW5PckVxdWFsVG8oMCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignV2FsbGV0IGRvZXMgbm90IGhhdmUgZW5vdWdoIGZ1bmRzIHRvIHJlY292ZXInKTtcbiAgICB9XG5cbiAgICBjb25zdCBmZWVJbmZvID0ge1xuICAgICAgZmVlOiBuZXcgQmlnTnVtYmVyKFRSQU5TQUNUSU9OX0ZFRS5UUkFOU0ZFUiksXG4gICAgICBnYXNMaW1pdDogbmV3IEJpZ051bWJlcihnYXNMaW1pdCksXG4gICAgICBzdG9yYWdlTGltaXQ6IG5ldyBCaWdOdW1iZXIoVFJBTlNBQ1RJT05fU1RPUkFHRV9MSU1JVC5UUkFOU0ZFUiksXG4gICAgfTtcblxuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KHRoaXMuZ2V0Q2hhaW4oKSkpO1xuXG4gICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgIHR4QnVpbGRlci5zb3VyY2UoYmFja3VwS2V5QWRkcmVzcyk7XG5cbiAgICAvLyBVc2VkIHRvIHNldCB0aGUgYnJhbmNoIGZvciB0aGUgdHJhbnNhY3Rpb25cbiAgICBjb25zdCBjaGFpbkhlYWQ6IGFueSA9IGF3YWl0IHRoaXMucmVjb3ZlcnlCbG9ja2NoYWluRXhwbG9yZXJRdWVyeSh7XG4gICAgICBhY3Rpb25QYXRoOiAnaGVhZCcsXG4gICAgfSk7XG5cbiAgICBpZiAoIWNoYWluSGVhZCB8fCAhY2hhaW5IZWFkLmhhc2gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZldGNoIGNoYWluIGhlYWQnKTtcbiAgICB9XG4gICAgdHhCdWlsZGVyLmJyYW5jaChjaGFpbkhlYWQuaGFzaCk7XG5cbiAgICBpZiAoIWJhY2t1cEFkZHJlc3NEZXRhaWxzLnJldmVhbGVkKSB7XG4gICAgICBmZWVJbmZvLmZlZSA9IGZlZUluZm8uZmVlLnBsdXMoVFJBTlNBQ1RJT05fRkVFLlJFVkVBTCk7XG4gICAgICBmZWVJbmZvLmdhc0xpbWl0ID0gZmVlSW5mby5nYXNMaW1pdC5wbHVzKFRSQU5TQUNUSU9OX0dBU19MSU1JVC5SRVZFQUwpO1xuICAgICAgZmVlSW5mby5zdG9yYWdlTGltaXQgPSBmZWVJbmZvLnN0b3JhZ2VMaW1pdC5wbHVzKFRSQU5TQUNUSU9OX1NUT1JBR0VfTElNSVQuUkVWRUFMKTtcbiAgICAgIGJhY2t1cEtleU5vbmNlLnBsdXMoMSk7XG4gICAgICBjb25zdCBwdWJsaWNLZXlUb1JldmVhbCA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICAgICAgdHhCdWlsZGVyLnB1YmxpY0tleVRvUmV2ZWFsKHB1YmxpY0tleVRvUmV2ZWFsLnB1Yik7XG4gICAgfVxuXG4gICAgdHhCdWlsZGVyLmNvdW50ZXIoYmFja3VwS2V5Tm9uY2UudG9TdHJpbmcoKSk7XG5cbiAgICBjb25zdCBwYWNrZWREYXRhVG9TaWduID0gYXdhaXQgdGhpcy5wYWNrRGF0YVRvU2lnbihcbiAgICAgIHBhcmFtcy53YWxsZXRDb250cmFjdEFkZHJlc3MsXG4gICAgICBiYWNrdXBLZXlOb25jZS50b1N0cmluZygpLFxuICAgICAgcGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICB0eEFtb3VudD8udG9TdHJpbmcoKVxuICAgICk7XG5cbiAgICB0eEJ1aWxkZXJcbiAgICAgIC50cmFuc2Zlcih0eEFtb3VudD8udG9TdHJpbmcoKSlcbiAgICAgIC5mcm9tKHBhcmFtcy53YWxsZXRDb250cmFjdEFkZHJlc3MpXG4gICAgICAudG8ocGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb24pXG4gICAgICAuY291bnRlcihiYWNrdXBLZXlOb25jZS50b1N0cmluZygpKVxuICAgICAgLmZlZShUUkFOU0FDVElPTl9GRUUuVFJBTlNGRVIudG9TdHJpbmcoKSlcbiAgICAgIC5zdG9yYWdlTGltaXQoVFJBTlNBQ1RJT05fU1RPUkFHRV9MSU1JVC5UUkFOU0ZFUi50b1N0cmluZygpKVxuICAgICAgLmdhc0xpbWl0KGdhc0xpbWl0LnRvU3RyaW5nKCkpXG4gICAgICAuZGF0YVRvU2lnbihwYWNrZWREYXRhVG9TaWduKTtcblxuICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBiYWNrdXBTaWduaW5nS2V5IH0pO1xuICAgIGNvbnN0IHNpZ25lZFR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHNpZ25lZFR4LmlkLFxuICAgICAgdHg6IHNpZ25lZFR4LnRvQnJvYWRjYXN0Rm9ybWF0KCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBsYWluIGEgVGV6b3MgdHJhbnNhY3Rpb24gZnJvbSB0eEhleFxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBhc3luYyBleHBsYWluVHJhbnNhY3Rpb24ocGFyYW1zOiBJbnRlcmZhY2UuRXhwbGFpblRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8VHJhbnNhY3Rpb25FeHBsYW5hdGlvbj4ge1xuICAgIGNvbnN0IHR4SGV4ID0gcGFyYW1zLnR4SGV4IHx8IChwYXJhbXMuaGFsZlNpZ25lZCAmJiBwYXJhbXMuaGFsZlNpZ25lZC50eEhleCk7XG4gICAgaWYgKCF0eEhleCB8fCAhcGFyYW1zLmZlZUluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyBleHBsYWluIHR4IHBhcmFtZXRlcnMnKTtcbiAgICB9XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQodGhpcy5nZXRDaGFpbigpKSk7XG4gICAgLy8gTmV3ZXIgY29pbnMgY2FuIHJldHVybiBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSBpbnN0ZWFkIG9mIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJcbiAgICBpZiAoISh0eEJ1aWxkZXIgaW5zdGFuY2VvZiBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdnZXRCdWlsZGVyKCkgZGlkIG5vdCByZXR1cm4gYW4gQmFzZVRyYW5zYWN0aW9uQnVpbGRlciBvYmplY3QuIEhhcyBpdCBiZWVuIHVwZGF0ZWQ/Jyk7XG4gICAgfVxuICAgIHR4QnVpbGRlci5mcm9tKHR4SGV4KTtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgY29uc3QgZGlzcGxheU9yZGVyID0gWydpZCcsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlQW1vdW50JywgJ291dHB1dHMnLCAnY2hhbmdlT3V0cHV0cycsICdmZWUnXTtcblxuICAgIHJldHVybiB7XG4gICAgICBkaXNwbGF5T3JkZXIsXG4gICAgICBpZDogdHguaWQsXG4gICAgICBvdXRwdXRzOiB0eC5vdXRwdXRzLFxuICAgICAgb3V0cHV0QW1vdW50OiB0eC5vdXRwdXRzXG4gICAgICAgIC5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBvdXRwdXQpID0+IGFjY3VtdWxhdG9yLnBsdXMob3V0cHV0LnZhbHVlKSwgbmV3IEJpZ051bWJlcignMCcpKVxuICAgICAgICAudG9GaXhlZCgwKSxcbiAgICAgIGNoYW5nZU91dHB1dHM6IFtdLCAvLyBhY2NvdW50IGJhc2VkIGRvZXMgbm90IHVzZSBjaGFuZ2Ugb3V0cHV0c1xuICAgICAgY2hhbmdlQW1vdW50OiAnMCcsIC8vIGFjY291bnQgYmFzZSBkb2VzIG5vdCBtYWtlIGNoYW5nZVxuICAgICAgZmVlOiBwYXJhbXMuZmVlSW5mbyxcbiAgICB9IGFzIGFueTtcbiAgfVxuXG4gIGlzVmFsaWRQdWIocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gVXRpbHMuaXNWYWxpZFB1YmxpY0tleShwdWIpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGF1ZGl0RGVjcnlwdGVkS2V5KHBhcmFtczogQXVkaXREZWNyeXB0ZWRLZXlQYXJhbXMpIHtcbiAgICB0aHJvdyBuZXcgTWV0aG9kTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitgo/sdk-coin-xtz",
3
- "version": "2.4.12",
3
+ "version": "2.5.0",
4
4
  "description": "BitGo SDK coin library for Tezos",
5
5
  "main": "./dist/src/index.js",
6
6
  "types": "./dist/src/index.d.ts",
@@ -41,20 +41,21 @@
41
41
  },
42
42
  "dependencies": {
43
43
  "@bitgo/blake2b": "^3.2.4",
44
- "@bitgo/sdk-core": "^36.1.0",
44
+ "@bitgo/sdk-core": "^36.3.0",
45
45
  "@bitgo/secp256k1": "^1.4.0",
46
- "@bitgo/statics": "^57.1.0",
46
+ "@bitgo/statics": "^57.3.0",
47
47
  "@noble/curves": "1.8.1",
48
48
  "@taquito/local-forging": "6.3.5-beta.0",
49
49
  "@taquito/signer": "6.3.5-beta.0",
50
50
  "bignumber.js": "^9.0.0",
51
51
  "bs58check": "^2.1.2",
52
52
  "libsodium-wrappers": "^0.7.6",
53
- "lodash": "^4.17.15"
53
+ "lodash": "^4.17.15",
54
+ "superagent": "^9.0.1"
54
55
  },
55
56
  "devDependencies": {
56
- "@bitgo/sdk-api": "^1.66.0",
57
- "@bitgo/sdk-test": "^9.0.1"
57
+ "@bitgo/sdk-api": "^1.66.2",
58
+ "@bitgo/sdk-test": "^9.0.3"
58
59
  },
59
- "gitHead": "cf55aa27fda96d4ea04983955142df157409addf"
60
+ "gitHead": "e059224e9ae21d6e1adf5ddb06721fe9954f71ee"
60
61
  }