@bitgo-beta/abstract-substrate 1.0.1-beta.1316 → 1.0.1-beta.1318
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/dist/src/abstractSubstrateCoin.d.ts +32 -1
- package/dist/src/abstractSubstrateCoin.d.ts.map +1 -1
- package/dist/src/abstractSubstrateCoin.js +65 -30
- package/dist/src/lib/iface.d.ts +8 -1
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +5 -1
- package/dist/src/lib/txnSchema.d.ts +1 -0
- package/dist/src/lib/txnSchema.d.ts.map +1 -1
- package/dist/src/lib/txnSchema.js +5 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
|
@@ -1,8 +1,21 @@
|
|
|
1
|
-
import { AuditDecryptedKeyParams, BaseCoin, BitGoBase, KeyPair, MPCAlgorithm, MPCConsolidationRecoveryOptions, MPCRecoveryOptions, MPCSweepRecoveryOptions, MPCSweepTxs, MPCTx, MPCTxs, MultisigType, ParsedTransaction, ParseTransactionOptions, SignedTransaction, TssVerifyAddressOptions, VerifyTransactionOptions } from '@bitgo-beta/sdk-core';
|
|
1
|
+
import { AuditDecryptedKeyParams, BaseCoin, BitGoBase, KeyPair, MPCAlgorithm, MPCConsolidationRecoveryOptions, MPCRecoveryOptions, MPCSweepRecoveryOptions, MPCSweepTxs, MPCTx, MPCTxs, MultisigType, ParsedTransaction, ParseTransactionOptions, SignedTransaction, TssVerifyAddressOptions, VerifyTransactionOptions, EDDSAUtils } from '@bitgo-beta/sdk-core';
|
|
2
2
|
import { CoinFamily, BaseCoin as StaticsBaseCoin } from '@bitgo-beta/statics';
|
|
3
|
+
import { Transaction } from './lib';
|
|
4
|
+
import { NativeTransferBuilder } from './lib/nativeTransferBuilder';
|
|
3
5
|
import { SignTransactionOptions, VerifiedTransactionParameters, Material } from './lib/iface';
|
|
4
6
|
import { ApiPromise } from '@polkadot/api';
|
|
5
7
|
export declare const DEFAULT_SCAN_FACTOR = 20;
|
|
8
|
+
/**
|
|
9
|
+
* Discriminated union carrying keycard version and decrypted V1 user key (to avoid re-decryption).
|
|
10
|
+
* V1 keycards are JSON; V2 keycards are CBOR-encoded reduced key shares.
|
|
11
|
+
*/
|
|
12
|
+
type SubstrateSigningMaterial = {
|
|
13
|
+
version: 'v1';
|
|
14
|
+
userPrv: string;
|
|
15
|
+
} | {
|
|
16
|
+
version: 'v2';
|
|
17
|
+
encryptedUserKey: string;
|
|
18
|
+
};
|
|
6
19
|
export declare class SubstrateCoin extends BaseCoin {
|
|
7
20
|
protected readonly _staticsCoin: Readonly<StaticsBaseCoin>;
|
|
8
21
|
readonly MAX_VALIDITY_DURATION = 2400;
|
|
@@ -87,9 +100,27 @@ export declare class SubstrateCoin extends BaseCoin {
|
|
|
87
100
|
* @param {string} [params.endingScanIndex] - receive address index to end scanning at. default to startingScanIndex + 20 (exclusive).
|
|
88
101
|
*/
|
|
89
102
|
recoverConsolidations(params: MPCConsolidationRecoveryOptions): Promise<MPCTxs | MPCSweepTxs>;
|
|
103
|
+
/**
|
|
104
|
+
* Decrypts an encrypted keychain value, wrapping errors with a descriptive message.
|
|
105
|
+
*/
|
|
106
|
+
private decryptKeychain;
|
|
107
|
+
/**
|
|
108
|
+
* Probes the key format and returns a discriminated union so callers avoid a second decrypt.
|
|
109
|
+
* V1 keycards are JSON; V2 keycards are CBOR-encoded reduced key shares.
|
|
110
|
+
*/
|
|
111
|
+
protected isMpcV2Keycard(userKey: string, walletPassphrase: string): Promise<SubstrateSigningMaterial>;
|
|
112
|
+
protected getEddsaMpcV2RecoveryKeyShares(encryptedUserKey: string, encryptedBackupKey: string, walletPassphrase: string): ReturnType<typeof EDDSAUtils.getEddsaMpcV2RecoveryKeySharesFromReducedKey>;
|
|
113
|
+
protected signEddsaMpcV2Recovery(signablePayload: Buffer, currPath: string, ...args: Parameters<typeof EDDSAUtils.signRecoveryEddsaMPCv2> extends [Buffer, string, ...infer R] ? R : never): Promise<Buffer>;
|
|
114
|
+
/**
|
|
115
|
+
* Adds an MPCv1 or MPCv2 signature to a Substrate transaction builder.
|
|
116
|
+
* MPCv2 signatures are prefixed with ED25519_MULTI_SIGNATURE_PREFIX (Ed25519 discriminant
|
|
117
|
+
* in the Substrate MultiSignature enum).
|
|
118
|
+
*/
|
|
119
|
+
protected addSubstrateRecoverySignature(txBuilder: NativeTransferBuilder, signingMaterial: SubstrateSigningMaterial, backupKey: string, walletPassphrase: string, unsignedTransaction: Transaction, currPath: string, bitgoKey: string, accountId: string): Promise<void>;
|
|
90
120
|
/** inherited doc */
|
|
91
121
|
createBroadcastableSweepTransaction(params: MPCSweepRecoveryOptions): Promise<MPCTxs>;
|
|
92
122
|
/** inherited doc */
|
|
93
123
|
auditDecryptedKey({ publicKey, prv, multiSigType }: AuditDecryptedKeyParams): void;
|
|
94
124
|
}
|
|
125
|
+
export {};
|
|
95
126
|
//# sourceMappingURL=abstractSubstrateCoin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstractSubstrateCoin.d.ts","sourceRoot":"","sources":["../../src/abstractSubstrateCoin.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,QAAQ,EACR,SAAS,EAGT,OAAO,EACP,YAAY,EACZ,+BAA+B,EAC/B,kBAAkB,EAClB,uBAAuB,EACvB,WAAW,EACX,KAAK,EACL,MAAM,EAEN,YAAY,EAEZ,iBAAiB,EACjB,uBAAuB,EAEvB,iBAAiB,EACjB,uBAAuB,EAKvB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"abstractSubstrateCoin.d.ts","sourceRoot":"","sources":["../../src/abstractSubstrateCoin.ts"],"names":[],"mappings":"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"}
|
|
@@ -258,35 +258,8 @@ class SubstrateCoin extends sdk_core_1.BaseCoin {
|
|
|
258
258
|
if (!params.walletPassphrase) {
|
|
259
259
|
throw new Error('missing wallet passphrase');
|
|
260
260
|
}
|
|
261
|
-
const
|
|
262
|
-
|
|
263
|
-
// Decrypt private keys from KeyCard values
|
|
264
|
-
let userPrv;
|
|
265
|
-
try {
|
|
266
|
-
userPrv = await this.bitgo.decrypt({
|
|
267
|
-
input: userKey,
|
|
268
|
-
password: params.walletPassphrase,
|
|
269
|
-
});
|
|
270
|
-
}
|
|
271
|
-
catch (e) {
|
|
272
|
-
throw new Error(`Error decrypting user keychain: ${e.message}`);
|
|
273
|
-
}
|
|
274
|
-
const userSigningMaterial = JSON.parse(userPrv);
|
|
275
|
-
let backupPrv;
|
|
276
|
-
try {
|
|
277
|
-
backupPrv = await this.bitgo.decrypt({
|
|
278
|
-
input: backupKey,
|
|
279
|
-
password: params.walletPassphrase,
|
|
280
|
-
});
|
|
281
|
-
}
|
|
282
|
-
catch (e) {
|
|
283
|
-
throw new Error(`Error decrypting backup keychain: ${e.message}`);
|
|
284
|
-
}
|
|
285
|
-
const backupSigningMaterial = JSON.parse(backupPrv);
|
|
286
|
-
// add signature
|
|
287
|
-
const signatureHex = await sdk_core_1.EDDSAMethods.getTSSSignature(userSigningMaterial, backupSigningMaterial, currPath, unsignedTransaction);
|
|
288
|
-
const substrateKeyPair = new lib_1.KeyPair({ pub: accountId });
|
|
289
|
-
txBuilder.addSignature({ pub: substrateKeyPair.getKeys().pub }, signatureHex);
|
|
261
|
+
const signingMaterial = await this.isMpcV2Keycard(params.userKey, params.walletPassphrase);
|
|
262
|
+
await this.addSubstrateRecoverySignature(txBuilder, signingMaterial, params.backupKey.replace(/\s/g, ''), params.walletPassphrase, unsignedTransaction, currPath, bitgoKey, accountId);
|
|
290
263
|
const signedTransaction = await txBuilder.build();
|
|
291
264
|
serializedTx = signedTransaction.toBroadcastFormat();
|
|
292
265
|
}
|
|
@@ -407,6 +380,68 @@ class SubstrateCoin extends sdk_core_1.BaseCoin {
|
|
|
407
380
|
}
|
|
408
381
|
return { transactions: consolidationTransactions, lastScanIndex };
|
|
409
382
|
}
|
|
383
|
+
/**
|
|
384
|
+
* Decrypts an encrypted keychain value, wrapping errors with a descriptive message.
|
|
385
|
+
*/
|
|
386
|
+
async decryptKeychain(encryptedKey, passphrase, label) {
|
|
387
|
+
const prv = await (0, sdk_core_1.decryptKeychainPrivateKey)(this.bitgo, { encryptedPrv: encryptedKey }, passphrase);
|
|
388
|
+
if (!prv) {
|
|
389
|
+
throw new Error(`Error decrypting ${label} keychain: invalid password or corrupted key`);
|
|
390
|
+
}
|
|
391
|
+
return prv;
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Probes the key format and returns a discriminated union so callers avoid a second decrypt.
|
|
395
|
+
* V1 keycards are JSON; V2 keycards are CBOR-encoded reduced key shares.
|
|
396
|
+
*/
|
|
397
|
+
async isMpcV2Keycard(userKey, walletPassphrase) {
|
|
398
|
+
const normalized = userKey.replace(/\s/g, '');
|
|
399
|
+
let isV1;
|
|
400
|
+
try {
|
|
401
|
+
isV1 = await sdk_core_1.EDDSAUtils.isEddsaMpcV1SigningMaterial(normalized, walletPassphrase, this.bitgo);
|
|
402
|
+
}
|
|
403
|
+
catch (e) {
|
|
404
|
+
throw new Error(`Error decrypting user keychain: ${e instanceof Error ? e.message : String(e)}`);
|
|
405
|
+
}
|
|
406
|
+
if (isV1) {
|
|
407
|
+
const userPrv = await this.decryptKeychain(normalized, walletPassphrase, 'user');
|
|
408
|
+
return { version: 'v1', userPrv };
|
|
409
|
+
}
|
|
410
|
+
return { version: 'v2', encryptedUserKey: normalized };
|
|
411
|
+
}
|
|
412
|
+
// Protected so tests can stub via instance overrides without adding new test dependencies.
|
|
413
|
+
async getEddsaMpcV2RecoveryKeyShares(encryptedUserKey, encryptedBackupKey, walletPassphrase) {
|
|
414
|
+
return sdk_core_1.EDDSAUtils.getEddsaMpcV2RecoveryKeySharesFromReducedKey(encryptedUserKey, encryptedBackupKey, walletPassphrase, this.bitgo);
|
|
415
|
+
}
|
|
416
|
+
// Protected so tests can stub via instance overrides without adding new test dependencies.
|
|
417
|
+
async signEddsaMpcV2Recovery(signablePayload, currPath, ...args) {
|
|
418
|
+
return sdk_core_1.EDDSAUtils.signRecoveryEddsaMPCv2(signablePayload, currPath, ...args);
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Adds an MPCv1 or MPCv2 signature to a Substrate transaction builder.
|
|
422
|
+
* MPCv2 signatures are prefixed with ED25519_MULTI_SIGNATURE_PREFIX (Ed25519 discriminant
|
|
423
|
+
* in the Substrate MultiSignature enum).
|
|
424
|
+
*/
|
|
425
|
+
async addSubstrateRecoverySignature(txBuilder, signingMaterial, backupKey, walletPassphrase, unsignedTransaction, currPath, bitgoKey, accountId) {
|
|
426
|
+
const ED25519_MULTI_SIGNATURE_PREFIX = 0x00;
|
|
427
|
+
const substrateKeyPair = new lib_1.KeyPair({ pub: accountId });
|
|
428
|
+
if (signingMaterial.version === 'v2') {
|
|
429
|
+
const { userKeyShare, backupKeyShare, commonKeyChain } = await this.getEddsaMpcV2RecoveryKeyShares(signingMaterial.encryptedUserKey, backupKey, walletPassphrase);
|
|
430
|
+
if (commonKeyChain.toLowerCase() !== bitgoKey.toLowerCase()) {
|
|
431
|
+
throw new Error('EdDSA MPCv2 recovery: commonKeyChain from keycard does not match bitgoKey');
|
|
432
|
+
}
|
|
433
|
+
const rawSig = await this.signEddsaMpcV2Recovery(unsignedTransaction.signablePayload, currPath, userKeyShare, backupKeyShare, commonKeyChain);
|
|
434
|
+
const substrateSig = Buffer.concat([Buffer.from([ED25519_MULTI_SIGNATURE_PREFIX]), rawSig]);
|
|
435
|
+
txBuilder.addSignature({ pub: substrateKeyPair.getKeys().pub }, substrateSig);
|
|
436
|
+
}
|
|
437
|
+
else {
|
|
438
|
+
const userSigningMaterial = JSON.parse(signingMaterial.userPrv);
|
|
439
|
+
const backupPrv = await this.decryptKeychain(backupKey, walletPassphrase, 'backup');
|
|
440
|
+
const backupSigningMaterial = JSON.parse(backupPrv);
|
|
441
|
+
const signatureHex = await sdk_core_1.EDDSAMethods.getTSSSignature(userSigningMaterial, backupSigningMaterial, currPath, unsignedTransaction);
|
|
442
|
+
txBuilder.addSignature({ pub: substrateKeyPair.getKeys().pub }, signatureHex);
|
|
443
|
+
}
|
|
444
|
+
}
|
|
410
445
|
/** inherited doc */
|
|
411
446
|
async createBroadcastableSweepTransaction(params) {
|
|
412
447
|
const req = params.signatureShares;
|
|
@@ -476,4 +511,4 @@ class SubstrateCoin extends sdk_core_1.BaseCoin {
|
|
|
476
511
|
}
|
|
477
512
|
}
|
|
478
513
|
exports.SubstrateCoin = SubstrateCoin;
|
|
479
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RTdWJzdHJhdGVDb2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fic3RyYWN0U3Vic3RyYXRlQ29pbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREEyQjhCO0FBRTlCLCtCQUFpRTtBQUVqRSwrQ0FBMkQ7QUFFM0Qsd0RBQWdDO0FBQ2hDLHlEQUFrRjtBQUNsRixnRUFBcUM7QUFHeEIsUUFBQSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7QUFFdEMsTUFBYSxhQUFjLFNBQVEsbUJBQVE7SUFLekMsWUFBc0IsS0FBZ0IsRUFBRSxXQUF1QztRQUM3RSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFKTiwwQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFDN0IsdUJBQWtCLEdBQUcsRUFBRSxDQUFDO1FBSy9CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVU7UUFDUixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNsQyxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxZ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QU8sRUFBRSxZQUFZLEVBQUUseUJBQXlCLEVBQUUsYUFBYSxFQUFFLENBQUM7SUFDcEUsQ0FBQztJQUVELG9CQUFvQjtJQUNwQixpQkFBaUIsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUEyQjtRQUN6RSxJQUFJLFlBQVksS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELElBQUEsa0NBQW9CLEVBQUMsR0FBRyxFQUFFLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0Y7QUFuakJELHNDQW1qQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBdWRpdERlY3J5cHRlZEtleVBhcmFtcyxcbiAgQmFzZUNvaW4sXG4gIEJpdEdvQmFzZSxcbiAgRUREU0FNZXRob2RzLFxuICBFRERTQU1ldGhvZFR5cGVzLFxuICBLZXlQYWlyLFxuICBNUENBbGdvcml0aG0sXG4gIE1QQ0NvbnNvbGlkYXRpb25SZWNvdmVyeU9wdGlvbnMsXG4gIE1QQ1JlY292ZXJ5T3B0aW9ucyxcbiAgTVBDU3dlZXBSZWNvdmVyeU9wdGlvbnMsXG4gIE1QQ1N3ZWVwVHhzLFxuICBNUENUeCxcbiAgTVBDVHhzLFxuICBNUENVbnNpZ25lZFR4LFxuICBNdWx0aXNpZ1R5cGUsXG4gIG11bHRpc2lnVHlwZXMsXG4gIFBhcnNlZFRyYW5zYWN0aW9uLFxuICBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgUmVjb3ZlcnlUeFJlcXVlc3QsXG4gIFNpZ25lZFRyYW5zYWN0aW9uLFxuICBUc3NWZXJpZnlBZGRyZXNzT3B0aW9ucyxcbiAgVHJhbnNhY3Rpb25QcmVidWlsZCxcbiAgVHhJbnRlbnRNaXNtYXRjaFJlY2lwaWVudEVycm9yLFxuICBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yLFxuICB2ZXJpZnlFZGRzYVRzc1dhbGxldEFkZHJlc3MsXG4gIFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQ29pbkZhbWlseSwgQmFzZUNvaW4gYXMgU3RhdGljc0Jhc2VDb2luIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBLZXlQYWlyIGFzIFN1YnN0cmF0ZUtleVBhaXIsIFRyYW5zYWN0aW9uIH0gZnJvbSAnLi9saWInO1xuaW1wb3J0IHsgTmF0aXZlVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi9saWIvbmF0aXZlVHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IERFRkFVTFRfU1VCU1RSQVRFX1BSRUZJWCB9IGZyb20gJy4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTaWduVHJhbnNhY3Rpb25PcHRpb25zLCBWZXJpZmllZFRyYW5zYWN0aW9uUGFyYW1ldGVycywgTWF0ZXJpYWwgfSBmcm9tICcuL2xpYi9pZmFjZSc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgYXVkaXRFZGRzYVByaXZhdGVLZXksIGdldERlcml2YXRpb25QYXRoIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWxpYi1tcGMnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgQXBpUHJvbWlzZSB9IGZyb20gJ0Bwb2xrYWRvdC9hcGknO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9TQ0FOX0ZBQ1RPUiA9IDIwO1xuXG5leHBvcnQgY2xhc3MgU3Vic3RyYXRlQ29pbiBleHRlbmRzIEJhc2VDb2luIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9zdGF0aWNzQ29pbjogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPjtcbiAgcmVhZG9ubHkgTUFYX1ZBTElESVRZX0RVUkFUSU9OID0gMjQwMDtcbiAgcmVhZG9ubHkgU1dFRVBfVFhOX0RVUkFUSU9OID0gNjQ7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPikge1xuICAgIHN1cGVyKGJpdGdvKTtcblxuICAgIGlmICghc3RhdGljc0NvaW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgc3RhdGljc0NvaW4nKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0aWNzQ29pbiA9IHN0YXRpY3NDb2luO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSBmb3IgdGhlIGNvaW4gc3BlY2lmaWMgc2RrXG4gICAqL1xuICBnZXRCdWlsZGVyKCk6IGFueSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBnZXRCYXNlRmFjdG9yKCk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgucG93KDEwLCB0aGlzLl9zdGF0aWNzQ29pbi5kZWNpbWFsUGxhY2VzKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0Q2hhaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGljc0NvaW4ubmFtZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0RmFtaWx5KCk6IENvaW5GYW1pbHkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0aWNzQ29pbi5mYW1pbHk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldEZ1bGxOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRpY3NDb2luLmZ1bGxOYW1lO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHN1cHBvcnRzVHNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqIGluaGVyaXRlZCBkb2MgKi9cbiAgZ2V0RGVmYXVsdE11bHRpc2lnVHlwZSgpOiBNdWx0aXNpZ1R5cGUge1xuICAgIHJldHVybiBtdWx0aXNpZ1R5cGVzLnRzcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0TVBDQWxnb3JpdGhtKCk6IE1QQ0FsZ29yaXRobSB7XG4gICAgcmV0dXJuICdlZGRzYSc7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdlbmVyYXRlS2V5UGFpcihzZWVkPzogQnVmZmVyKTogS2V5UGFpciB7XG4gICAgY29uc3Qga2V5UGFpciA9IHNlZWQgPyBuZXcgU3Vic3RyYXRlS2V5UGFpcih7IHNlZWQgfSkgOiBuZXcgU3Vic3RyYXRlS2V5UGFpcigpO1xuICAgIGNvbnN0IGtleXMgPSBrZXlQYWlyLmdldEtleXMoKTtcbiAgICBpZiAoIWtleXMucHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcHJ2IGluIGtleSBnZW5lcmF0aW9uLicpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcHViOiBrZXlzLnB1YixcbiAgICAgIHBydjoga2V5cy5wcnYsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgaXNWYWxpZFB1YihwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB1dGlscy5pc1ZhbGlkUHVibGljS2V5KHB1Yik7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGFzeW5jIGlzV2FsbGV0QWRkcmVzcyhwYXJhbXM6IFRzc1ZlcmlmeUFkZHJlc3NPcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgaXNWYWxpZCA9IGF3YWl0IHZlcmlmeUVkZHNhVHNzV2FsbGV0QWRkcmVzcyhcbiAgICAgIHBhcmFtcyxcbiAgICAgIChhZGRyKSA9PiB0aGlzLmlzVmFsaWRBZGRyZXNzKGFkZHIpLFxuICAgICAgKHB1YktleSkgPT4gdGhpcy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShwdWJLZXkpXG4gICAgKTtcblxuICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3IoYGFkZHJlc3MgdmFsaWRhdGlvbiBmYWlsdXJlOiAke3BhcmFtcy5hZGRyZXNzfSBpcyBub3QgYSB3YWxsZXQgYWRkcmVzc2ApO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBhc3luYyBwYXJzZVRyYW5zYWN0aW9uKHBhcmFtczogUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFBhcnNlZFRyYW5zYWN0aW9uPiB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBhc3luYyB2ZXJpZnlUcmFuc2FjdGlvbihwYXJhbXM6IFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQgfSA9IHBhcmFtcztcblxuICAgIGlmICghdHhQYXJhbXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyB0eFBhcmFtcycpO1xuICAgIH1cbiAgICBpZiAoIXR4UHJlYnVpbGQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyB0eFByZWJ1aWxkJyk7XG4gICAgfVxuICAgIGlmICghdHhQcmVidWlsZC50eEhleCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHR4SGV4IGluIHR4UHJlYnVpbGQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5nZXRCdWlsZGVyKCk7XG4gICAgLy8gVXNlIHRoZSBsaXZlIGNoYWluIG1hdGVyaWFsIGVtYmVkZGVkIGluIHRoZSBwcmVidWlsZCAoaWYgcHJlc2VudCkgc28gdGhlIGZhY3RvcnkgY2FuIGRlY29kZVxuICAgIC8vIHRyYW5zYWN0aW9ucyBidWlsdCBhZ2FpbnN0IGEgY2hhaW4gc3BlYyB2ZXJzaW9uIG5ld2VyIHRoYW4gdGhlIFNESydzIGhhcmRjb2RlZCBtZXRhZGF0YS5cbiAgICAvLyBXaXRob3V0IHRoaXMsIHRoZSBmYWN0b3J5IGZhbGxzIGJhY2sgdG8gaXRzIGhhcmRjb2RlZCBtYXRlcmlhbCBhbmQgbWlzaWRlbnRpZmllcyB0aGUgY2FsbFxuICAgIC8vIHBhbGxldCAoZS5nLiByZWFkcyBhIEJhbGFuY2VzIHRyYW5zZmVyIGFzIHRyZWFzdXJ5LmRpc2J1cnNlbWVudCBhZnRlciBhIGNoYWluIHVwZ3JhZGUpLlxuICAgIGNvbnN0IHByZWJ1aWxkTWF0ZXJpYWwgPSAodHhQcmVidWlsZCBhcyBUcmFuc2FjdGlvblByZWJ1aWxkICYgeyBjb2luU3BlY2lmaWM/OiB7IG1hdGVyaWFsPzogTWF0ZXJpYWwgfSB9KVxuICAgICAgLmNvaW5TcGVjaWZpYz8ubWF0ZXJpYWw7XG4gICAgaWYgKHByZWJ1aWxkTWF0ZXJpYWwgJiYgdHlwZW9mIGZhY3RvcnkubWF0ZXJpYWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGZhY3RvcnkubWF0ZXJpYWwocHJlYnVpbGRNYXRlcmlhbCk7XG4gICAgfVxuICAgIC8vIFRva2VuIGVuYWJsZW1lbnQgKHByZUFwcHJvdmVBc3NldCkgdHJhbnNhY3Rpb25zIGhhdmUgbm8gZGVzdGluYXRpb24gYWRkcmVzcyDigJQgdGhleSBhcmVcbiAgICAvLyBzZWxmLXRyYW5zYWN0aW9ucyBzaWduZWQgYnkgdGhlIHdhbGxldC4gU2tpcCB0cmFuc2ZlciByZWNpcGllbnQgdmFsaWRhdGlvbiwgY29uc2lzdGVudFxuICAgIC8vIHdpdGggaG93IFhSUCBhbmQgQWxnbyBoYW5kbGUgZW5hYmxldG9rZW4gaW4gdGhlaXIgdmVyaWZ5VHJhbnNhY3Rpb24gaW1wbGVtZW50YXRpb25zLlxuICAgIGlmICh0eFBhcmFtcy50eXBlID09PSAnZW5hYmxldG9rZW4nKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20odHhQcmVidWlsZC50eEhleCkgYXMgdW5rbm93biBhcyBOYXRpdmVUcmFuc2ZlckJ1aWxkZXI7XG4gICAgY29uc3QgdHhUbzogc3RyaW5nID0gdHhCdWlsZGVyWydfdG8nXTtcbiAgICBjb25zdCB0eEFtb3VudDogc3RyaW5nID0gdHhCdWlsZGVyWydfYW1vdW50J107XG4gICAgY29uc3QgaXNTd2VlcDogYm9vbGVhbiA9IHR4QnVpbGRlclsnX3N3ZWVwRnJlZUJhbGFuY2UnXSA9PT0gdHJ1ZTtcblxuICAgIGlmICh0eFBhcmFtcy5yZWNpcGllbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0eFBhcmFtcy5yZWNpcGllbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVjaXBpZW50cyBpbiB0eFBhcmFtcycpO1xuICAgICAgfVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodHhQYXJhbXMucmVjaXBpZW50cykgJiYgdHhQYXJhbXMucmVjaXBpZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgJHt0aGlzLmdldENoYWluKCl9IGRvZXNuJ3Qgc3VwcG9ydCBzZW5kaW5nIHRvIG1vcmUgdGhhbiAxIGRlc3RpbmF0aW9uIGFkZHJlc3Mgd2l0aGluIGEgc2luZ2xlIHRyYW5zYWN0aW9uLiBUcnkgYWdhaW4sIHVzaW5nIG9ubHkgYSBzaW5nbGUgcmVjaXBpZW50LmBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR4UGFyYW1zLnJlY2lwaWVudHNbMF0uYWRkcmVzcyAhPT0gdHhUbykge1xuICAgICAgICB0aHJvdyBuZXcgVHhJbnRlbnRNaXNtYXRjaFJlY2lwaWVudEVycm9yKFxuICAgICAgICAgIGBSZWNpcGllbnQgYWRkcmVzcyAke3R4UGFyYW1zLnJlY2lwaWVudHNbMF0uYWRkcmVzc30gZG9lcyBub3QgbWF0Y2ggdHJhbnNhY3Rpb24gZGVzdGluYXRpb24gYWRkcmVzcyAke3R4VG99YCxcbiAgICAgICAgICBwYXJhbXMucmVxSWQsXG4gICAgICAgICAgW3R4UGFyYW1zXSxcbiAgICAgICAgICB0eFByZWJ1aWxkLnR4SGV4LFxuICAgICAgICAgIFt7IGFkZHJlc3M6IHR4VG8sIGFtb3VudDogdHhBbW91bnQgfV1cbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc1N3ZWVwICYmIHR4UGFyYW1zLnJlY2lwaWVudHNbMF0uYW1vdW50ICE9PSB0eEFtb3VudCkge1xuICAgICAgICB0aHJvdyBuZXcgVHhJbnRlbnRNaXNtYXRjaFJlY2lwaWVudEVycm9yKFxuICAgICAgICAgIGBSZWNpcGllbnQgYW1vdW50ICR7dHhQYXJhbXMucmVjaXBpZW50c1swXS5hbW91bnR9IGRvZXMgbm90IG1hdGNoIHRyYW5zYWN0aW9uIGFtb3VudCAke3R4QW1vdW50fWAsXG4gICAgICAgICAgcGFyYW1zLnJlcUlkLFxuICAgICAgICAgIFt0eFBhcmFtc10sXG4gICAgICAgICAgdHhQcmVidWlsZC50eEhleCxcbiAgICAgICAgICBbeyBhZGRyZXNzOiB0eFRvLCBhbW91bnQ6IHR4QW1vdW50IH1dXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB1dGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKTtcbiAgfVxuXG4gIHZlcmlmeVNpZ25UcmFuc2FjdGlvblBhcmFtcyhwYXJhbXM6IFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMpOiBWZXJpZmllZFRyYW5zYWN0aW9uUGFyYW1ldGVycyB7XG4gICAgY29uc3QgcHJ2ID0gcGFyYW1zPy5wcnY7XG4gICAgY29uc3QgdHhIZXggPSBwYXJhbXM/LnR4UHJlYnVpbGQ/LnR4SGV4O1xuXG4gICAgaWYgKHR5cGVvZiB0eEhleCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdHhIZXggbXVzdCBiZSBzdHJpbmcsIGdvdCB0eXBlICR7dHlwZW9mIHR4SGV4fWApO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgcHJ2ICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBwcnYgbXVzdCBiZSBzdHJpbmcsIGdvdCB0eXBlICR7dHlwZW9mIHBydn1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyB0eEhleCwgcHJ2IH07XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGFzeW5jIHNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFNpZ25lZFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgeyB0eEhleCwgcHJ2IH0gPSB0aGlzLnZlcmlmeVNpZ25UcmFuc2FjdGlvblBhcmFtcyhwYXJhbXMpO1xuICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLmdldEJ1aWxkZXIoKTtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20odHhIZXgpO1xuICAgIGNvbnN0IGtleVBhaXIgPSBuZXcgU3Vic3RyYXRlS2V5UGFpcih7IHBydjogcHJ2IH0pO1xuICAgIGNvbnN0IHsgcmVmZXJlbmNlQmxvY2ssIGJsb2NrTnVtYmVyLCB0cmFuc2FjdGlvblZlcnNpb24sIHNlbmRlciB9ID0gcGFyYW1zLnR4UHJlYnVpbGQudHJhbnNhY3Rpb247XG5cbiAgICB0eEJ1aWxkZXJcbiAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IGJsb2NrTnVtYmVyLCBtYXhEdXJhdGlvbjogdGhpcy5nZXRNYXhWYWxpZGl0eUR1cmF0aW9uQmxvY2tzKCkgfSlcbiAgICAgIC5yZWZlcmVuY2VCbG9jayhyZWZlcmVuY2VCbG9jaylcbiAgICAgIC52ZXJzaW9uKHRyYW5zYWN0aW9uVmVyc2lvbilcbiAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIgfSlcbiAgICAgIC5zaWduKHsga2V5OiBrZXlQYWlyLmdldEtleXMoKS5wcnYgfSk7XG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBpZiAoIXRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgY29uc3Qgc2lnbmVkVHhIZXggPSB0cmFuc2FjdGlvbi50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgIHJldHVybiB7IHR4SGV4OiBzaWduZWRUeEhleCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgYWRkcmVzcyBmb3JtYXQgZm9yIHRoZSBzdWJzdHJhdGUgY29pbi5cbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIGFkZHJlc3MgZm9ybWF0IGFzIGEgbnVtYmVyLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldEFkZHJlc3NGb3JtYXQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gREVGQVVMVF9TVUJTVFJBVEVfUFJFRklYO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgbWF4aW11bSB2YWxpZGl0eSBkdXJhdGlvbiBpbiBibG9ja3MuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGlzIGludGVuZGVkIHRvIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3NlcyB0byBwcm92aWRlIHRoZSBzcGVjaWZpY1xuICAgKiBtYXhpbXVtIHZhbGlkaXR5IGR1cmF0aW9uIGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgU3Vic3RyYXRlLWJhc2VkIGNvaW5zLlxuICAgKlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgbWF4aW11bSB2YWxpZGl0eSBkdXJhdGlvbiBpbiBibG9ja3MuXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgbWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRlZCBieSB0aGUgc3ViY2xhc3MuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0TWF4VmFsaWRpdHlEdXJhdGlvbkJsb2NrcygpOiBudW1iZXIge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleShQdWJrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBTdWJzdHJhdGVLZXlQYWlyKHsgcHViOiBQdWJrZXkgfSkuZ2V0QWRkcmVzcyh0aGlzLmdldEFkZHJlc3NGb3JtYXQoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0SW5pdGlhbGl6ZWROb2RlQVBJKCk6IFByb21pc2U8QXBpUHJvbWlzZT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXRBY2NvdW50SW5mbyh3YWxsZXRBZGRyOiBzdHJpbmcpOiBQcm9taXNlPHsgbm9uY2U6IG51bWJlcjsgZnJlZUJhbGFuY2U6IG51bWJlciB9PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldEZlZShkZXN0QWRkcjogc3RyaW5nLCBzcmNBZGRyOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0SGVhZGVySW5mbygpOiBQcm9taXNlPHsgaGVhZGVyTnVtYmVyOiBudW1iZXI7IGhlYWRlckhhc2g6IHN0cmluZyB9PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldE1hdGVyaWFsKCk6IFByb21pc2U8TWF0ZXJpYWw+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGEgZnVuZHMgcmVjb3ZlcnkgdHJhbnNhY3Rpb24gd2l0aG91dCBCaXRHb1xuICAgKiBAcGFyYW0ge01QQ1JlY292ZXJ5T3B0aW9uc30gcGFyYW1zIHBhcmFtZXRlcnMgbmVlZGVkIHRvIGNvbnN0cnVjdCBhbmRcbiAgICogKG1heWJlKSBzaWduIHRoZSB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcmV0dXJucyB7TVBDVHh9IHRoZSBzZXJpYWxpemVkIHRyYW5zYWN0aW9uIGhleCBzdHJpbmcgYW5kIGluZGV4XG4gICAqIG9mIHRoZSBhZGRyZXNzIGJlaW5nIHN3ZXB0XG4gICAqL1xuICBhc3luYyByZWNvdmVyKHBhcmFtczogTVBDUmVjb3ZlcnlPcHRpb25zKTogUHJvbWlzZTxNUENUeCB8IE1QQ1N3ZWVwVHhzPiB7XG4gICAgaWYgKCFwYXJhbXMuYml0Z29LZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBiaXRnb0tleScpO1xuICAgIH1cblxuICAgIGlmICghcGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb24gfHwgIXRoaXMuaXNWYWxpZEFkZHJlc3MocGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcmVjb3ZlcnkgZGVzdGluYXRpb24gYWRkcmVzcycpO1xuICAgIH1cblxuICAgIGNvbnN0IGJpdGdvS2V5ID0gcGFyYW1zLmJpdGdvS2V5LnJlcGxhY2UoL1xccy9nLCAnJyk7XG4gICAgY29uc3QgaXNVbnNpZ25lZFN3ZWVwID0gIXBhcmFtcy51c2VyS2V5ICYmICFwYXJhbXMuYmFja3VwS2V5ICYmICFwYXJhbXMud2FsbGV0UGFzc3BocmFzZTtcblxuICAgIGNvbnN0IE1QQyA9IGF3YWl0IEVERFNBTWV0aG9kcy5nZXRJbml0aWFsaXplZE1wY0luc3RhbmNlKCk7XG5cbiAgICBjb25zdCBpbmRleCA9IHBhcmFtcy5pbmRleCB8fCAwO1xuICAgIGNvbnN0IGN1cnJQYXRoID0gcGFyYW1zLnNlZWQgPyBnZXREZXJpdmF0aW9uUGF0aChwYXJhbXMuc2VlZCkgKyBgLyR7aW5kZXh9YCA6IGBtLyR7aW5kZXh9YDtcbiAgICBjb25zdCBhY2NvdW50SWQgPSBNUEMuZGVyaXZlVW5oYXJkZW5lZChiaXRnb0tleSwgY3VyclBhdGgpLnNsaWNlKDAsIDY0KTtcbiAgICBjb25zdCBzZW5kZXJBZGRyID0gdGhpcy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShhY2NvdW50SWQpO1xuXG4gICAgY29uc3QgeyBub25jZSwgZnJlZUJhbGFuY2UgfSA9IGF3YWl0IHRoaXMuZ2V0QWNjb3VudEluZm8oc2VuZGVyQWRkcik7XG4gICAgY29uc3QgZGVzdEFkZHIgPSBwYXJhbXMucmVjb3ZlcnlEZXN0aW5hdGlvbjtcbiAgICBjb25zdCBhbW91bnQgPSBmcmVlQmFsYW5jZTtcbiAgICBjb25zdCBwYXJ0aWFsRmVlID0gYXdhaXQgdGhpcy5nZXRGZWUoZGVzdEFkZHIsIHNlbmRlckFkZHIsIGFtb3VudCk7XG5cbiAgICBjb25zdCB2YWx1ZSA9IG5ldyBCaWdOdW1iZXIoZnJlZUJhbGFuY2UpLm1pbnVzKG5ldyBCaWdOdW1iZXIocGFydGlhbEZlZSkpO1xuICAgIGlmICh2YWx1ZS5pc0xlc3NUaGFuT3JFcXVhbFRvKDApKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RpZCBub3QgZmluZCBhZGRyZXNzIHdpdGggZnVuZHMgdG8gcmVjb3ZlcicpO1xuICAgIH1cblxuICAgIGNvbnN0IHsgaGVhZGVyTnVtYmVyLCBoZWFkZXJIYXNoIH0gPSBhd2FpdCB0aGlzLmdldEhlYWRlckluZm8oKTtcbiAgICBjb25zdCBtYXRlcmlhbCA9IGF3YWl0IHRoaXMuZ2V0TWF0ZXJpYWwoKTtcbiAgICBjb25zdCB2YWxpZGl0eVdpbmRvdyA9IHsgZmlyc3RWYWxpZDogaGVhZGVyTnVtYmVyLCBtYXhEdXJhdGlvbjogdGhpcy5NQVhfVkFMSURJVFlfRFVSQVRJT04gfTtcblxuICAgIGNvbnN0IHR4QnVpbGRlciA9IHRoaXMuZ2V0QnVpbGRlcigpLmdldFRyYW5zZmVyQnVpbGRlcigpLm1hdGVyaWFsKG1hdGVyaWFsKTtcbiAgICB0eEJ1aWxkZXJcbiAgICAgIC5zd2VlcChmYWxzZSlcbiAgICAgIC50byh7IGFkZHJlc3M6IHBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uIH0pXG4gICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyQWRkciB9KVxuICAgICAgLnZhbGlkaXR5KHZhbGlkaXR5V2luZG93KVxuICAgICAgLnJlZmVyZW5jZUJsb2NrKGhlYWRlckhhc2gpXG4gICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdOb25jZScsIHZhbHVlOiBub25jZSB9KVxuICAgICAgLmZlZSh7IGFtb3VudDogMCwgdHlwZTogJ3RpcCcgfSk7XG5cbiAgICBjb25zdCB1bnNpZ25lZFRyYW5zYWN0aW9uID0gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcblxuICAgIGxldCBzZXJpYWxpemVkVHggPSB1bnNpZ25lZFRyYW5zYWN0aW9uLnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgaWYgKCFpc1Vuc2lnbmVkU3dlZXApIHtcbiAgICAgIGlmICghcGFyYW1zLnVzZXJLZXkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHVzZXJLZXknKTtcbiAgICAgIH1cbiAgICAgIGlmICghcGFyYW1zLmJhY2t1cEtleSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgYmFja3VwS2V5Jyk7XG4gICAgICB9XG4gICAgICBpZiAoIXBhcmFtcy53YWxsZXRQYXNzcGhyYXNlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyB3YWxsZXQgcGFzc3BocmFzZScpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB1c2VyS2V5ID0gcGFyYW1zLnVzZXJLZXkucmVwbGFjZSgvXFxzL2csICcnKTtcbiAgICAgIGNvbnN0IGJhY2t1cEtleSA9IHBhcmFtcy5iYWNrdXBLZXkucmVwbGFjZSgvXFxzL2csICcnKTtcblxuICAgICAgLy8gRGVjcnlwdCBwcml2YXRlIGtleXMgZnJvbSBLZXlDYXJkIHZhbHVlc1xuICAgICAgbGV0IHVzZXJQcnY7XG4gICAgICB0cnkge1xuICAgICAgICB1c2VyUHJ2ID0gYXdhaXQgdGhpcy5iaXRnby5kZWNyeXB0KHtcbiAgICAgICAgICBpbnB1dDogdXNlcktleSxcbiAgICAgICAgICBwYXNzd29yZDogcGFyYW1zLndhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGRlY3J5cHRpbmcgdXNlciBrZXljaGFpbjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgICBjb25zdCB1c2VyU2lnbmluZ01hdGVyaWFsID0gSlNPTi5wYXJzZSh1c2VyUHJ2KSBhcyBFRERTQU1ldGhvZFR5cGVzLlVzZXJTaWduaW5nTWF0ZXJpYWw7XG5cbiAgICAgIGxldCBiYWNrdXBQcnY7XG4gICAgICB0cnkge1xuICAgICAgICBiYWNrdXBQcnYgPSBhd2FpdCB0aGlzLmJpdGdvLmRlY3J5cHQoe1xuICAgICAgICAgIGlucHV0OiBiYWNrdXBLZXksXG4gICAgICAgICAgcGFzc3dvcmQ6IHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciBkZWNyeXB0aW5nIGJhY2t1cCBrZXljaGFpbjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgICBjb25zdCBiYWNrdXBTaWduaW5nTWF0ZXJpYWwgPSBKU09OLnBhcnNlKGJhY2t1cFBydikgYXMgRUREU0FNZXRob2RUeXBlcy5CYWNrdXBTaWduaW5nTWF0ZXJpYWw7XG5cbiAgICAgIC8vIGFkZCBzaWduYXR1cmVcbiAgICAgIGNvbnN0IHNpZ25hdHVyZUhleCA9IGF3YWl0IEVERFNBTWV0aG9kcy5nZXRUU1NTaWduYXR1cmUoXG4gICAgICAgIHVzZXJTaWduaW5nTWF0ZXJpYWwsXG4gICAgICAgIGJhY2t1cFNpZ25pbmdNYXRlcmlhbCxcbiAgICAgICAgY3VyclBhdGgsXG4gICAgICAgIHVuc2lnbmVkVHJhbnNhY3Rpb25cbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHN1YnN0cmF0ZUtleVBhaXIgPSBuZXcgU3Vic3RyYXRlS2V5UGFpcih7IHB1YjogYWNjb3VudElkIH0pO1xuICAgICAgdHhCdWlsZGVyLmFkZFNpZ25hdHVyZSh7IHB1Yjogc3Vic3RyYXRlS2V5UGFpci5nZXRLZXlzKCkucHViIH0sIHNpZ25hdHVyZUhleCk7XG4gICAgICBjb25zdCBzaWduZWRUcmFuc2FjdGlvbiA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgc2VyaWFsaXplZFR4ID0gc2lnbmVkVHJhbnNhY3Rpb24udG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdmFsdWUgPSBuZXcgQmlnTnVtYmVyKGZyZWVCYWxhbmNlKTtcbiAgICAgIGNvbnN0IHdhbGxldENvaW4gPSB0aGlzLmdldENoYWluKCk7XG4gICAgICBjb25zdCBpbnB1dHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiB1bnNpZ25lZFRyYW5zYWN0aW9uLmlucHV0c1swXS5hZGRyZXNzLFxuICAgICAgICAgIHZhbHVlU3RyaW5nOiB2YWx1ZS50b1N0cmluZygpLFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZS50b051bWJlcigpLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IG91dHB1dHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiB1bnNpZ25lZFRyYW5zYWN0aW9uLm91dHB1dHNbMF0uYWRkcmVzcyxcbiAgICAgICAgICB2YWx1ZVN0cmluZzogdmFsdWUudG9TdHJpbmcoKSxcbiAgICAgICAgICBjb2luTmFtZTogd2FsbGV0Q29pbixcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCBzcGVuZEFtb3VudCA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBwYXJzZWRUeCA9IHsgaW5wdXRzOiBpbnB1dHMsIG91dHB1dHM6IG91dHB1dHMsIHNwZW5kQW1vdW50OiBzcGVuZEFtb3VudCwgdHlwZTogJycgfTtcbiAgICAgIGNvbnN0IGZlZUluZm8gPSB7IGZlZTogMCwgZmVlU3RyaW5nOiAnMCcgfTtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uOiBNUENUeCA9IHtcbiAgICAgICAgc2VyaWFsaXplZFR4OiBzZXJpYWxpemVkVHgsXG4gICAgICAgIHNjYW5JbmRleDogaW5kZXgsXG4gICAgICAgIGNvaW46IHdhbGxldENvaW4sXG4gICAgICAgIHNpZ25hYmxlSGV4OiB1bnNpZ25lZFRyYW5zYWN0aW9uLnNpZ25hYmxlUGF5bG9hZC50b1N0cmluZygnaGV4JyksXG4gICAgICAgIGRlcml2YXRpb25QYXRoOiBjdXJyUGF0aCxcbiAgICAgICAgcGFyc2VkVHg6IHBhcnNlZFR4LFxuICAgICAgICBmZWVJbmZvOiBmZWVJbmZvLFxuICAgICAgICBjb2luU3BlY2lmaWM6IHsgLi4udmFsaWRpdHlXaW5kb3csIGNvbW1vbktleWNoYWluOiBiaXRnb0tleSB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgdW5zaWduZWRUeDogTVBDVW5zaWduZWRUeCA9IHsgdW5zaWduZWRUeDogdHJhbnNhY3Rpb24sIHNpZ25hdHVyZVNoYXJlczogW10gfTtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uczogTVBDVW5zaWduZWRUeFtdID0gW3Vuc2lnbmVkVHhdO1xuICAgICAgY29uc3QgdHhSZXF1ZXN0OiBSZWNvdmVyeVR4UmVxdWVzdCA9IHtcbiAgICAgICAgdHJhbnNhY3Rpb25zOiB0cmFuc2FjdGlvbnMsXG4gICAgICAgIHdhbGxldENvaW46IHdhbGxldENvaW4sXG4gICAgICB9O1xuICAgICAgY29uc3QgdHhSZXF1ZXN0czogTVBDU3dlZXBUeHMgPSB7IHR4UmVxdWVzdHM6IFt0eFJlcXVlc3RdIH07XG4gICAgICByZXR1cm4gdHhSZXF1ZXN0cztcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2FjdGlvbjogTVBDVHggPSB7IHNlcmlhbGl6ZWRUeDogc2VyaWFsaXplZFR4LCBzY2FuSW5kZXg6IGluZGV4IH07XG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBuYXRpdmUgVEFPIHJlY292ZXJpZXMgb2YgcmVjZWl2ZSBhZGRyZXNzZXMgaW4gYmF0Y2ggd2l0aG91dCBCaXRHby5cbiAgICogRnVuZHMgd2lsbCBiZSByZWNvdmVyZWQgdG8gYmFzZSBhZGRyZXNzIGZpcnN0LiBZb3UgbmVlZCB0byBpbml0aWF0ZSBhbm90aGVyIHN3ZWVwIHR4biBhZnRlciB0aGF0LlxuICAgKlxuICAgKiBAcGFyYW0ge01QQ0NvbnNvbGlkYXRpb25SZWNvdmVyeU9wdGlvbnN9IHBhcmFtcyAtIG9wdGlvbnMgZm9yIGNvbnNvbGlkYXRpb24gcmVjb3ZlcnkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcGFyYW1zLnN0YXJ0aW5nU2NhbkluZGV4XSAtIHJlY2VpdmUgYWRkcmVzcyBpbmRleCB0byBzdGFydCBzY2FubmluZyBmcm9tLiBkZWZhdWx0IHRvIDEgKGluY2x1c2l2ZSkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcGFyYW1zLmVuZGluZ1NjYW5JbmRleF0gLSByZWNlaXZlIGFkZHJlc3MgaW5kZXggdG8gZW5kIHNjYW5uaW5nIGF0LiBkZWZhdWx0IHRvIHN0YXJ0aW5nU2NhbkluZGV4ICsgMjAgKGV4Y2x1c2l2ZSkuXG4gICAqL1xuICBhc3luYyByZWNvdmVyQ29uc29saWRhdGlvbnMocGFyYW1zOiBNUENDb25zb2xpZGF0aW9uUmVjb3ZlcnlPcHRpb25zKTogUHJvbWlzZTxNUENUeHMgfCBNUENTd2VlcFR4cz4ge1xuICAgIGNvbnN0IGlzVW5zaWduZWRTd2VlcCA9ICFwYXJhbXMudXNlcktleSAmJiAhcGFyYW1zLmJhY2t1cEtleSAmJiAhcGFyYW1zLndhbGxldFBhc3NwaHJhc2U7XG4gICAgY29uc3Qgc3RhcnRJZHggPSBwYXJhbXMuc3RhcnRpbmdTY2FuSW5kZXggfHwgMTtcbiAgICBjb25zdCBlbmRJZHggPSBwYXJhbXMuZW5kaW5nU2NhbkluZGV4IHx8IHN0YXJ0SWR4ICsgREVGQVVMVF9TQ0FOX0ZBQ1RPUjtcblxuICAgIGlmIChzdGFydElkeCA8IDEgfHwgZW5kSWR4IDw9IHN0YXJ0SWR4IHx8IGVuZElkeCAtIHN0YXJ0SWR4ID4gMTAgKiBERUZBVUxUX1NDQU5fRkFDVE9SKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIHN0YXJ0aW5nIG9yIGVuZGluZyBpbmRleCB0byBzY2FuIGZvciBhZGRyZXNzZXMuIHN0YXJ0aW5nU2NhbkluZGV4OiAke3N0YXJ0SWR4fSwgZW5kaW5nU2NhbkluZGV4OiAke2VuZElkeH0uYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBiaXRnb0tleSA9IHBhcmFtcy5iaXRnb0tleS5yZXBsYWNlKC9cXHMvZywgJycpO1xuICAgIGNvbnN0IE1QQyA9IGF3YWl0IEVERFNBTWV0aG9kcy5nZXRJbml0aWFsaXplZE1wY0luc3RhbmNlKCk7XG4gICAgY29uc3QgYmFzZUluZGV4ID0gMDtcbiAgICBjb25zdCBiYXNlUGF0aCA9IHBhcmFtcy5zZWVkID8gZ2V0RGVyaXZhdGlvblBhdGgocGFyYW1zLnNlZWQpICsgYC8ke2Jhc2VJbmRleH1gIDogYG0vJHtiYXNlSW5kZXh9YDtcbiAgICBjb25zdCBhY2NvdW50SWQgPSBNUEMuZGVyaXZlVW5oYXJkZW5lZChiaXRnb0tleSwgYmFzZVBhdGgpLnNsaWNlKDAsIDY0KTtcbiAgICBjb25zdCBiYXNlQWRkcmVzcyA9IHRoaXMuZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkoYWNjb3VudElkKTtcblxuICAgIGNvbnN0IGNvbnNvbGlkYXRpb25UcmFuc2FjdGlvbnM6IGFueVtdID0gW107XG4gICAgbGV0IGxhc3RTY2FuSW5kZXggPSBzdGFydElkeDtcbiAgICBmb3IgKGxldCBpID0gc3RhcnRJZHg7IGkgPCBlbmRJZHg7IGkrKykge1xuICAgICAgY29uc3QgcmVjb3ZlclBhcmFtcyA9IHtcbiAgICAgICAgdXNlcktleTogcGFyYW1zLnVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleTogcGFyYW1zLmJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXk6IHBhcmFtcy5iaXRnb0tleSxcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogcGFyYW1zLndhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IGJhc2VBZGRyZXNzLFxuICAgICAgICBzZWVkOiBwYXJhbXMuc2VlZCxcbiAgICAgICAgaW5kZXg6IGksXG4gICAgICB9O1xuXG4gICAgICBsZXQgcmVjb3ZlcnlUcmFuc2FjdGlvbjtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlY292ZXJ5VHJhbnNhY3Rpb24gPSBhd2FpdCB0aGlzLnJlY292ZXIocmVjb3ZlclBhcmFtcyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChlLm1lc3NhZ2UgPT09ICdEaWQgbm90IGZpbmQgYWRkcmVzcyB3aXRoIGZ1bmRzIHRvIHJlY292ZXInKSB7XG4gICAgICAgICAgbGFzdFNjYW5JbmRleCA9IGk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzVW5zaWduZWRTd2VlcCkge1xuICAgICAgICBjb25zb2xpZGF0aW9uVHJhbnNhY3Rpb25zLnB1c2goKHJlY292ZXJ5VHJhbnNhY3Rpb24gYXMgTVBDU3dlZXBUeHMpLnR4UmVxdWVzdHNbMF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29saWRhdGlvblRyYW5zYWN0aW9ucy5wdXNoKHJlY292ZXJ5VHJhbnNhY3Rpb24pO1xuICAgICAgfVxuICAgICAgbGFzdFNjYW5JbmRleCA9IGk7XG4gICAgfVxuXG4gICAgaWYgKGNvbnNvbGlkYXRpb25UcmFuc2FjdGlvbnMubGVuZ3RoID09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGlkIG5vdCBmaW5kIGFuIGFkZHJlc3Mgd2l0aCBmdW5kcyB0byByZWNvdmVyJyk7XG4gICAgfVxuXG4gICAgaWYgKGlzVW5zaWduZWRTd2VlcCkge1xuICAgICAgLy8gbGFzdFNjYW5JbmRleCB3aWxsIGJlIHVzZWQgdG8gaW5mb3JtIHVzZXIgdGhlIGxhc3QgYWRkcmVzcyBpbmRleCBzY2FubmVkIGZvciBhdmFpbGFibGUgZnVuZHMgKHNvIHRoZXkgY2FuXG4gICAgICAvLyBhcHByb3ByaWF0ZWx5IGFkanVzdCB0aGUgc2NhbiByYW5nZSBvbiB0aGUgbmV4dCBpdGVyYXRpb24gb2YgY29uc29saWRhdGlvbiByZWNvdmVyaWVzKS4gSW4gdGhlIGNhc2Ugb2YgdW5zaWduZWRcbiAgICAgIC8vIHN3ZWVwIGNvbnNvbGlkYXRpb25zLCB0aGlzIGxhc3RTY2FuSW5kZXggd2lsbCBiZSBwcm92aWRlZCBpbiB0aGUgY29pblNwZWNpZmljIG9mIHRoZSBsYXN0IHR4biBtYWRlLlxuICAgICAgY29uc3QgbGFzdFRyYW5zYWN0aW9uQ29pblNwZWNpZmljID0ge1xuICAgICAgICBmaXJzdFZhbGlkOlxuICAgICAgICAgIGNvbnNvbGlkYXRpb25UcmFuc2FjdGlvbnNbY29uc29saWRhdGlvblRyYW5zYWN0aW9ucy5sZW5ndGggLSAxXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5jb2luU3BlY2lmaWNcbiAgICAgICAgICAgIC5maXJzdFZhbGlkLFxuICAgICAgICBtYXhEdXJhdGlvbjpcbiAgICAgICAgICBjb25zb2xpZGF0aW9uVHJhbnNhY3Rpb25zW2NvbnNvbGlkYXRpb25UcmFuc2FjdGlvbnMubGVuZ3RoIC0gMV0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguY29pblNwZWNpZmljXG4gICAgICAgICAgICAubWF4RHVyYXRpb24sXG4gICAgICAgIGNvbW1vbktleWNoYWluOlxuICAgICAgICAgIGNvbnNvbGlkYXRpb25UcmFuc2FjdGlvbnNbY29uc29saWRhdGlvblRyYW5zYWN0aW9ucy5sZW5ndGggLSAxXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5jb2luU3BlY2lmaWNcbiAgICAgICAgICAgIC5jb21tb25LZXljaGFpbixcbiAgICAgICAgbGFzdFNjYW5JbmRleDogbGFzdFNjYW5JbmRleCxcbiAgICAgIH07XG4gICAgICBjb25zb2xpZGF0aW9uVHJhbnNhY3Rpb25zW2NvbnNvbGlkYXRpb25UcmFuc2FjdGlvbnMubGVuZ3RoIC0gMV0udHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguY29pblNwZWNpZmljID1cbiAgICAgICAgbGFzdFRyYW5zYWN0aW9uQ29pblNwZWNpZmljO1xuICAgICAgY29uc3QgY29uc29saWRhdGlvblN3ZWVwVHJhbnNhY3Rpb25zOiBNUENTd2VlcFR4cyA9IHsgdHhSZXF1ZXN0czogY29uc29saWRhdGlvblRyYW5zYWN0aW9ucyB9O1xuICAgICAgcmV0dXJuIGNvbnNvbGlkYXRpb25Td2VlcFRyYW5zYWN0aW9ucztcbiAgICB9XG5cbiAgICByZXR1cm4geyB0cmFuc2FjdGlvbnM6IGNvbnNvbGlkYXRpb25UcmFuc2FjdGlvbnMsIGxhc3RTY2FuSW5kZXggfTtcbiAgfVxuXG4gIC8qKiBpbmhlcml0ZWQgZG9jICovXG4gIGFzeW5jIGNyZWF0ZUJyb2FkY2FzdGFibGVTd2VlcFRyYW5zYWN0aW9uKHBhcmFtczogTVBDU3dlZXBSZWNvdmVyeU9wdGlvbnMpOiBQcm9taXNlPE1QQ1R4cz4ge1xuICAgIGNvbnN0IHJlcSA9IHBhcmFtcy5zaWduYXR1cmVTaGFyZXM7XG4gICAgY29uc3QgYnJvYWRjYXN0YWJsZVRyYW5zYWN0aW9uczogTVBDVHhbXSA9IFtdO1xuICAgIGxldCBsYXN0U2NhbkluZGV4ID0gMDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVxLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBNUEMgPSBhd2FpdCBFRERTQU1ldGhvZHMuZ2V0SW5pdGlhbGl6ZWRNcGNJbnN0YW5jZSgpO1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSByZXFbaV0udHhSZXF1ZXN0LnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4O1xuICAgICAgaWYgKCFyZXFbaV0ub3ZjIHx8ICFyZXFbaV0ub3ZjWzBdLmVkZHNhU2lnbmF0dXJlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBzaWduYXR1cmUocyknKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IHJlcVtpXS5vdmNbMF0uZWRkc2FTaWduYXR1cmU7XG4gICAgICBpZiAoIXRyYW5zYWN0aW9uLnNpZ25hYmxlSGV4KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBzaWduYWJsZSBoZXgnKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1lc3NhZ2VCdWZmZXIgPSBCdWZmZXIuZnJvbSh0cmFuc2FjdGlvbi5zaWduYWJsZUhleCEsICdoZXgnKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IE1QQy52ZXJpZnkobWVzc2FnZUJ1ZmZlciwgc2lnbmF0dXJlKTtcbiAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzaWduYXR1cmUnKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNpZ25hdHVyZUhleCA9IEJ1ZmZlci5jb25jYXQoW0J1ZmZlci5mcm9tKHNpZ25hdHVyZS5SLCAnaGV4JyksIEJ1ZmZlci5mcm9tKHNpZ25hdHVyZS5zaWdtYSwgJ2hleCcpXSk7XG4gICAgICBpZiAoXG4gICAgICAgICF0cmFuc2FjdGlvbi5jb2luU3BlY2lmaWMgfHxcbiAgICAgICAgIXRyYW5zYWN0aW9uLmNvaW5TcGVjaWZpYz8uZmlyc3RWYWxpZCB8fFxuICAgICAgICAhdHJhbnNhY3Rpb24uY29pblNwZWNpZmljPy5tYXhEdXJhdGlvblxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyB2YWxpZGl0eSB3aW5kb3cnKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHZhbGlkaXR5V2luZG93ID0ge1xuICAgICAgICBmaXJzdFZhbGlkOiB0cmFuc2FjdGlvbi5jb2luU3BlY2lmaWM/LmZpcnN0VmFsaWQsXG4gICAgICAgIG1heER1cmF0aW9uOiB0cmFuc2FjdGlvbi5jb2luU3BlY2lmaWM/Lm1heER1cmF0aW9uLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gYXdhaXQgdGhpcy5nZXRNYXRlcmlhbCgpO1xuICAgICAgaWYgKCF0cmFuc2FjdGlvbi5jb2luU3BlY2lmaWM/LmNvbW1vbktleWNoYWluKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBjb21tb24ga2V5Y2hhaW4nKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbW1vbktleWNoYWluID0gdHJhbnNhY3Rpb24uY29pblNwZWNpZmljIS5jb21tb25LZXljaGFpbiEgYXMgc3RyaW5nO1xuICAgICAgaWYgKCF0cmFuc2FjdGlvbi5kZXJpdmF0aW9uUGF0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgZGVyaXZhdGlvbiBwYXRoJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBkZXJpdmF0aW9uUGF0aCA9IHRyYW5zYWN0aW9uLmRlcml2YXRpb25QYXRoIGFzIHN0cmluZztcbiAgICAgIGNvbnN0IGFjY291bnRJZCA9IE1QQy5kZXJpdmVVbmhhcmRlbmVkKGNvbW1vbktleWNoYWluLCBkZXJpdmF0aW9uUGF0aCkuc2xpY2UoMCwgNjQpO1xuICAgICAgY29uc3Qgc2VuZGVyQWRkciA9IHRoaXMuZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkoYWNjb3VudElkKTtcblxuICAgICAgY29uc3QgdHhuQnVpbGRlciA9IHRoaXMuZ2V0QnVpbGRlcigpXG4gICAgICAgIC5tYXRlcmlhbChtYXRlcmlhbClcbiAgICAgICAgLmZyb20odHJhbnNhY3Rpb24uc2VyaWFsaXplZFR4IGFzIHN0cmluZylcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlckFkZHIgfSlcbiAgICAgICAgLnZhbGlkaXR5KHZhbGlkaXR5V2luZG93KTtcblxuICAgICAgY29uc3Qgc3Vic3RyYXRlS2V5UGFpciA9IG5ldyBTdWJzdHJhdGVLZXlQYWlyKHsgcHViOiBhY2NvdW50SWQgfSk7XG4gICAgICB0eG5CdWlsZGVyLmFkZFNpZ25hdHVyZSh7IHB1Yjogc3Vic3RyYXRlS2V5UGFpci5nZXRLZXlzKCkucHViIH0sIHNpZ25hdHVyZUhleCk7XG4gICAgICBjb25zdCBzaWduZWRUcmFuc2FjdGlvbiA9IGF3YWl0IHR4bkJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHNlcmlhbGl6ZWRUeCA9IHNpZ25lZFRyYW5zYWN0aW9uLnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICAgIGJyb2FkY2FzdGFibGVUcmFuc2FjdGlvbnMucHVzaCh7XG4gICAgICAgIHNlcmlhbGl6ZWRUeDogc2VyaWFsaXplZFR4LFxuICAgICAgICBzY2FuSW5kZXg6IHRyYW5zYWN0aW9uLnNjYW5JbmRleCxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoaSA9PT0gcmVxLmxlbmd0aCAtIDEgJiYgdHJhbnNhY3Rpb24uY29pblNwZWNpZmljIS5sYXN0U2NhbkluZGV4KSB7XG4gICAgICAgIGxhc3RTY2FuSW5kZXggPSB0cmFuc2FjdGlvbi5jb2luU3BlY2lmaWMhLmxhc3RTY2FuSW5kZXggYXMgbnVtYmVyO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyB0cmFuc2FjdGlvbnM6IGJyb2FkY2FzdGFibGVUcmFuc2FjdGlvbnMsIGxhc3RTY2FuSW5kZXggfTtcbiAgfVxuXG4gIC8qKiBpbmhlcml0ZWQgZG9jICovXG4gIGF1ZGl0RGVjcnlwdGVkS2V5KHsgcHVibGljS2V5LCBwcnYsIG11bHRpU2lnVHlwZSB9OiBBdWRpdERlY3J5cHRlZEtleVBhcmFtcykge1xuICAgIGlmIChtdWx0aVNpZ1R5cGUgIT09ICd0c3MnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIG11bHRpU2lnVHlwZScpO1xuICAgIH1cbiAgICBhdWRpdEVkZHNhUHJpdmF0ZUtleShwcnYsIHB1YmxpY0tleSA/PyAnJyk7XG4gIH1cbn1cbiJdfQ==
|
|
514
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RTdWJzdHJhdGVDb2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fic3RyYWN0U3Vic3RyYXRlQ29pbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREE2QjhCO0FBRTlCLCtCQUFpRTtBQUVqRSwrQ0FBMkQ7QUFFM0Qsd0RBQWdDO0FBQ2hDLHlEQUFrRjtBQUNsRixnRUFBcUM7QUFHeEIsUUFBQSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7QUFRdEMsTUFBYSxhQUFjLFNBQVEsbUJBQVE7SUFLekMsWUFBc0IsS0FBZ0IsRUFBRSxXQUF1QztRQUM3RSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFKTiwwQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFDN0IsdUJBQWtCLEdBQUcsRUFBRSxDQUFDO1FBSy9CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVU7UUFDUixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNsQyxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxZ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QUFFLHlCQUF5QixFQUFFLGFBQWEsRUFBRSxDQUFDO0lBQ3BFLENBQUM7SUFFRCxvQkFBb0I7SUFDcEIsaUJBQWlCLENBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBMkI7UUFDekUsSUFBSSxZQUFZLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxJQUFBLGtDQUFvQixFQUFDLEdBQUcsRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNGO0FBbG9CRCxzQ0Frb0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXVkaXREZWNyeXB0ZWRLZXlQYXJhbXMsXG4gIEJhc2VDb2luLFxuICBCaXRHb0Jhc2UsXG4gIEVERFNBTWV0aG9kcyxcbiAgRUREU0FNZXRob2RUeXBlcyxcbiAgS2V5UGFpcixcbiAgTVBDQWxnb3JpdGhtLFxuICBNUENDb25zb2xpZGF0aW9uUmVjb3ZlcnlPcHRpb25zLFxuICBNUENSZWNvdmVyeU9wdGlvbnMsXG4gIE1QQ1N3ZWVwUmVjb3ZlcnlPcHRpb25zLFxuICBNUENTd2VlcFR4cyxcbiAgTVBDVHgsXG4gIE1QQ1R4cyxcbiAgTVBDVW5zaWduZWRUeCxcbiAgTXVsdGlzaWdUeXBlLFxuICBtdWx0aXNpZ1R5cGVzLFxuICBQYXJzZWRUcmFuc2FjdGlvbixcbiAgUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFJlY292ZXJ5VHhSZXF1ZXN0LFxuICBTaWduZWRUcmFuc2FjdGlvbixcbiAgVHNzVmVyaWZ5QWRkcmVzc09wdGlvbnMsXG4gIFRyYW5zYWN0aW9uUHJlYnVpbGQsXG4gIFR4SW50ZW50TWlzbWF0Y2hSZWNpcGllbnRFcnJvcixcbiAgVW5leHBlY3RlZEFkZHJlc3NFcnJvcixcbiAgdmVyaWZ5RWRkc2FUc3NXYWxsZXRBZGRyZXNzLFxuICBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIEVERFNBVXRpbHMsXG4gIGRlY3J5cHRLZXljaGFpblByaXZhdGVLZXksXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IENvaW5GYW1pbHksIEJhc2VDb2luIGFzIFN0YXRpY3NCYXNlQ29pbiB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgS2V5UGFpciBhcyBTdWJzdHJhdGVLZXlQYWlyLCBUcmFuc2FjdGlvbiB9IGZyb20gJy4vbGliJztcbmltcG9ydCB7IE5hdGl2ZVRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vbGliL25hdGl2ZVRyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBERUZBVUxUX1NVQlNUUkFURV9QUkVGSVggfSBmcm9tICcuL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgU2lnblRyYW5zYWN0aW9uT3B0aW9ucywgVmVyaWZpZWRUcmFuc2FjdGlvblBhcmFtZXRlcnMsIE1hdGVyaWFsIH0gZnJvbSAnLi9saWIvaWZhY2UnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vbGliL3V0aWxzJztcbmltcG9ydCB7IGF1ZGl0RWRkc2FQcml2YXRlS2V5LCBnZXREZXJpdmF0aW9uUGF0aCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1saWItbXBjJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IEFwaVByb21pc2UgfSBmcm9tICdAcG9sa2Fkb3QvYXBpJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfU0NBTl9GQUNUT1IgPSAyMDtcblxuLyoqXG4gKiBEaXNjcmltaW5hdGVkIHVuaW9uIGNhcnJ5aW5nIGtleWNhcmQgdmVyc2lvbiBhbmQgZGVjcnlwdGVkIFYxIHVzZXIga2V5ICh0byBhdm9pZCByZS1kZWNyeXB0aW9uKS5cbiAqIFYxIGtleWNhcmRzIGFyZSBKU09OOyBWMiBrZXljYXJkcyBhcmUgQ0JPUi1lbmNvZGVkIHJlZHVjZWQga2V5IHNoYXJlcy5cbiAqL1xudHlwZSBTdWJzdHJhdGVTaWduaW5nTWF0ZXJpYWwgPSB7IHZlcnNpb246ICd2MSc7IHVzZXJQcnY6IHN0cmluZyB9IHwgeyB2ZXJzaW9uOiAndjInOyBlbmNyeXB0ZWRVc2VyS2V5OiBzdHJpbmcgfTtcblxuZXhwb3J0IGNsYXNzIFN1YnN0cmF0ZUNvaW4gZXh0ZW5kcyBCYXNlQ29pbiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfc3RhdGljc0NvaW46IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj47XG4gIHJlYWRvbmx5IE1BWF9WQUxJRElUWV9EVVJBVElPTiA9IDI0MDA7XG4gIHJlYWRvbmx5IFNXRUVQX1RYTl9EVVJBVElPTiA9IDY0O1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pIHtcbiAgICBzdXBlcihiaXRnbyk7XG5cbiAgICBpZiAoIXN0YXRpY3NDb2luKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgY29uc3RydWN0b3IgcGFyYW1ldGVyIHN0YXRpY3NDb2luJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGljc0NvaW4gPSBzdGF0aWNzQ29pbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgZm9yIHRoZSBjb2luIHNwZWNpZmljIHNka1xuICAgKi9cbiAgZ2V0QnVpbGRlcigpOiBhbnkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0QmFzZUZhY3RvcigpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLnBvdygxMCwgdGhpcy5fc3RhdGljc0NvaW4uZGVjaW1hbFBsYWNlcyk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldENoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRpY3NDb2luLm5hbWU7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldEZhbWlseSgpOiBDb2luRmFtaWx5IHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGljc0NvaW4uZmFtaWx5O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBnZXRGdWxsTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zdGF0aWNzQ29pbi5mdWxsTmFtZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBzdXBwb3J0c1RzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBpbmhlcml0ZWQgZG9jICovXG4gIGdldERlZmF1bHRNdWx0aXNpZ1R5cGUoKTogTXVsdGlzaWdUeXBlIHtcbiAgICByZXR1cm4gbXVsdGlzaWdUeXBlcy50c3M7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldE1QQ0FsZ29yaXRobSgpOiBNUENBbGdvcml0aG0ge1xuICAgIHJldHVybiAnZWRkc2EnO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBnZW5lcmF0ZUtleVBhaXIoc2VlZD86IEJ1ZmZlcik6IEtleVBhaXIge1xuICAgIGNvbnN0IGtleVBhaXIgPSBzZWVkID8gbmV3IFN1YnN0cmF0ZUtleVBhaXIoeyBzZWVkIH0pIDogbmV3IFN1YnN0cmF0ZUtleVBhaXIoKTtcbiAgICBjb25zdCBrZXlzID0ga2V5UGFpci5nZXRLZXlzKCk7XG4gICAgaWYgKCFrZXlzLnBydikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHBydiBpbiBrZXkgZ2VuZXJhdGlvbi4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHB1Yjoga2V5cy5wdWIsXG4gICAgICBwcnY6IGtleXMucHJ2LFxuICAgIH07XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGlzVmFsaWRQdWIocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXRpbHMuaXNWYWxpZFB1YmxpY0tleShwdWIpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBhc3luYyBpc1dhbGxldEFkZHJlc3MocGFyYW1zOiBUc3NWZXJpZnlBZGRyZXNzT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGlzVmFsaWQgPSBhd2FpdCB2ZXJpZnlFZGRzYVRzc1dhbGxldEFkZHJlc3MoXG4gICAgICBwYXJhbXMsXG4gICAgICAoYWRkcikgPT4gdGhpcy5pc1ZhbGlkQWRkcmVzcyhhZGRyKSxcbiAgICAgIChwdWJLZXkpID0+IHRoaXMuZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkocHViS2V5KVxuICAgICk7XG5cbiAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yKGBhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZTogJHtwYXJhbXMuYWRkcmVzc30gaXMgbm90IGEgd2FsbGV0IGFkZHJlc3NgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgYXN5bmMgcGFyc2VUcmFuc2FjdGlvbihwYXJhbXM6IFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbj4ge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgYXN5bmMgdmVyaWZ5VHJhbnNhY3Rpb24ocGFyYW1zOiBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkIH0gPSBwYXJhbXM7XG5cbiAgICBpZiAoIXR4UGFyYW1zKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgdHhQYXJhbXMnKTtcbiAgICB9XG4gICAgaWYgKCF0eFByZWJ1aWxkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgdHhQcmVidWlsZCcpO1xuICAgIH1cbiAgICBpZiAoIXR4UHJlYnVpbGQudHhIZXgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyB0eEhleCBpbiB0eFByZWJ1aWxkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuZ2V0QnVpbGRlcigpO1xuICAgIC8vIFVzZSB0aGUgbGl2ZSBjaGFpbiBtYXRlcmlhbCBlbWJlZGRlZCBpbiB0aGUgcHJlYnVpbGQgKGlmIHByZXNlbnQpIHNvIHRoZSBmYWN0b3J5IGNhbiBkZWNvZGVcbiAgICAvLyB0cmFuc2FjdGlvbnMgYnVpbHQgYWdhaW5zdCBhIGNoYWluIHNwZWMgdmVyc2lvbiBuZXdlciB0aGFuIHRoZSBTREsncyBoYXJkY29kZWQgbWV0YWRhdGEuXG4gICAgLy8gV2l0aG91dCB0aGlzLCB0aGUgZmFjdG9yeSBmYWxscyBiYWNrIHRvIGl0cyBoYXJkY29kZWQgbWF0ZXJpYWwgYW5kIG1pc2lkZW50aWZpZXMgdGhlIGNhbGxcbiAgICAvLyBwYWxsZXQgKGUuZy4gcmVhZHMgYSBCYWxhbmNlcyB0cmFuc2ZlciBhcyB0cmVhc3VyeS5kaXNidXJzZW1lbnQgYWZ0ZXIgYSBjaGFpbiB1cGdyYWRlKS5cbiAgICBjb25zdCBwcmVidWlsZE1hdGVyaWFsID0gKHR4UHJlYnVpbGQgYXMgVHJhbnNhY3Rpb25QcmVidWlsZCAmIHsgY29pblNwZWNpZmljPzogeyBtYXRlcmlhbD86IE1hdGVyaWFsIH0gfSlcbiAgICAgIC5jb2luU3BlY2lmaWM/Lm1hdGVyaWFsO1xuICAgIGlmIChwcmVidWlsZE1hdGVyaWFsICYmIHR5cGVvZiBmYWN0b3J5Lm1hdGVyaWFsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBmYWN0b3J5Lm1hdGVyaWFsKHByZWJ1aWxkTWF0ZXJpYWwpO1xuICAgIH1cbiAgICAvLyBUb2tlbiBlbmFibGVtZW50IChwcmVBcHByb3ZlQXNzZXQpIHRyYW5zYWN0aW9ucyBoYXZlIG5vIGRlc3RpbmF0aW9uIGFkZHJlc3Mg4oCUIHRoZXkgYXJlXG4gICAgLy8gc2VsZi10cmFuc2FjdGlvbnMgc2lnbmVkIGJ5IHRoZSB3YWxsZXQuIFNraXAgdHJhbnNmZXIgcmVjaXBpZW50IHZhbGlkYXRpb24sIGNvbnNpc3RlbnRcbiAgICAvLyB3aXRoIGhvdyBYUlAgYW5kIEFsZ28gaGFuZGxlIGVuYWJsZXRva2VuIGluIHRoZWlyIHZlcmlmeVRyYW5zYWN0aW9uIGltcGxlbWVudGF0aW9ucy5cbiAgICBpZiAodHhQYXJhbXMudHlwZSA9PT0gJ2VuYWJsZXRva2VuJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHR4UHJlYnVpbGQudHhIZXgpIGFzIHVua25vd24gYXMgTmF0aXZlVHJhbnNmZXJCdWlsZGVyO1xuICAgIGNvbnN0IHR4VG86IHN0cmluZyA9IHR4QnVpbGRlclsnX3RvJ107XG4gICAgY29uc3QgdHhBbW91bnQ6IHN0cmluZyA9IHR4QnVpbGRlclsnX2Ftb3VudCddO1xuICAgIGNvbnN0IGlzU3dlZXA6IGJvb2xlYW4gPSB0eEJ1aWxkZXJbJ19zd2VlcEZyZWVCYWxhbmNlJ10gPT09IHRydWU7XG5cbiAgICBpZiAodHhQYXJhbXMucmVjaXBpZW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodHhQYXJhbXMucmVjaXBpZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlY2lwaWVudHMgaW4gdHhQYXJhbXMnKTtcbiAgICAgIH1cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHR4UGFyYW1zLnJlY2lwaWVudHMpICYmIHR4UGFyYW1zLnJlY2lwaWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYCR7dGhpcy5nZXRDaGFpbigpfSBkb2Vzbid0IHN1cHBvcnQgc2VuZGluZyB0byBtb3JlIHRoYW4gMSBkZXN0aW5hdGlvbiBhZGRyZXNzIHdpdGhpbiBhIHNpbmdsZSB0cmFuc2FjdGlvbi4gVHJ5IGFnYWluLCB1c2luZyBvbmx5IGEgc2luZ2xlIHJlY2lwaWVudC5gXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eFBhcmFtcy5yZWNpcGllbnRzWzBdLmFkZHJlc3MgIT09IHR4VG8pIHtcbiAgICAgICAgdGhyb3cgbmV3IFR4SW50ZW50TWlzbWF0Y2hSZWNpcGllbnRFcnJvcihcbiAgICAgICAgICBgUmVjaXBpZW50IGFkZHJlc3MgJHt0eFBhcmFtcy5yZWNpcGllbnRzWzBdLmFkZHJlc3N9IGRvZXMgbm90IG1hdGNoIHRyYW5zYWN0aW9uIGRlc3RpbmF0aW9uIGFkZHJlc3MgJHt0eFRvfWAsXG4gICAgICAgICAgcGFyYW1zLnJlcUlkLFxuICAgICAgICAgIFt0eFBhcmFtc10sXG4gICAgICAgICAgdHhQcmVidWlsZC50eEhleCxcbiAgICAgICAgICBbeyBhZGRyZXNzOiB0eFRvLCBhbW91bnQ6IHR4QW1vdW50IH1dXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNTd2VlcCAmJiB0eFBhcmFtcy5yZWNpcGllbnRzWzBdLmFtb3VudCAhPT0gdHhBbW91bnQpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR4SW50ZW50TWlzbWF0Y2hSZWNpcGllbnRFcnJvcihcbiAgICAgICAgICBgUmVjaXBpZW50IGFtb3VudCAke3R4UGFyYW1zLnJlY2lwaWVudHNbMF0uYW1vdW50fSBkb2VzIG5vdCBtYXRjaCB0cmFuc2FjdGlvbiBhbW91bnQgJHt0eEFtb3VudH1gLFxuICAgICAgICAgIHBhcmFtcy5yZXFJZCxcbiAgICAgICAgICBbdHhQYXJhbXNdLFxuICAgICAgICAgIHR4UHJlYnVpbGQudHhIZXgsXG4gICAgICAgICAgW3sgYWRkcmVzczogdHhUbywgYW1vdW50OiB0eEFtb3VudCB9XVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcyk7XG4gIH1cblxuICB2ZXJpZnlTaWduVHJhbnNhY3Rpb25QYXJhbXMocGFyYW1zOiBTaWduVHJhbnNhY3Rpb25PcHRpb25zKTogVmVyaWZpZWRUcmFuc2FjdGlvblBhcmFtZXRlcnMge1xuICAgIGNvbnN0IHBydiA9IHBhcmFtcz8ucHJ2O1xuICAgIGNvbnN0IHR4SGV4ID0gcGFyYW1zPy50eFByZWJ1aWxkPy50eEhleDtcblxuICAgIGlmICh0eXBlb2YgdHhIZXggIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHR4SGV4IG11c3QgYmUgc3RyaW5nLCBnb3QgdHlwZSAke3R5cGVvZiB0eEhleH1gKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHBydiAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgcHJ2IG11c3QgYmUgc3RyaW5nLCBnb3QgdHlwZSAke3R5cGVvZiBwcnZ9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgdHhIZXgsIHBydiB9O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBhc3luYyBzaWduVHJhbnNhY3Rpb24ocGFyYW1zOiBTaWduVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxTaWduZWRUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IHsgdHhIZXgsIHBydiB9ID0gdGhpcy52ZXJpZnlTaWduVHJhbnNhY3Rpb25QYXJhbXMocGFyYW1zKTtcbiAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5nZXRCdWlsZGVyKCk7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHR4SGV4KTtcbiAgICBjb25zdCBrZXlQYWlyID0gbmV3IFN1YnN0cmF0ZUtleVBhaXIoeyBwcnY6IHBydiB9KTtcbiAgICBjb25zdCB7IHJlZmVyZW5jZUJsb2NrLCBibG9ja051bWJlciwgdHJhbnNhY3Rpb25WZXJzaW9uLCBzZW5kZXIgfSA9IHBhcmFtcy50eFByZWJ1aWxkLnRyYW5zYWN0aW9uO1xuXG4gICAgdHhCdWlsZGVyXG4gICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiBibG9ja051bWJlciwgbWF4RHVyYXRpb246IHRoaXMuZ2V0TWF4VmFsaWRpdHlEdXJhdGlvbkJsb2NrcygpIH0pXG4gICAgICAucmVmZXJlbmNlQmxvY2socmVmZXJlbmNlQmxvY2spXG4gICAgICAudmVyc2lvbih0cmFuc2FjdGlvblZlcnNpb24pXG4gICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyIH0pXG4gICAgICAuc2lnbih7IGtleToga2V5UGFpci5nZXRLZXlzKCkucHJ2IH0pO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgaWYgKCF0cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IHNpZ25lZFR4SGV4ID0gdHJhbnNhY3Rpb24udG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICByZXR1cm4geyB0eEhleDogc2lnbmVkVHhIZXggfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGFkZHJlc3MgZm9ybWF0IGZvciB0aGUgc3Vic3RyYXRlIGNvaW4uXG4gICAqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBhZGRyZXNzIGZvcm1hdCBhcyBhIG51bWJlci5cbiAgICovXG4gIHByb3RlY3RlZCBnZXRBZGRyZXNzRm9ybWF0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIERFRkFVTFRfU1VCU1RSQVRFX1BSRUZJWDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIG1heGltdW0gdmFsaWRpdHkgZHVyYXRpb24gaW4gYmxvY2tzLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMgdG8gcHJvdmlkZSB0aGUgc3BlY2lmaWNcbiAgICogbWF4aW11bSB2YWxpZGl0eSBkdXJhdGlvbiBmb3IgZGlmZmVyZW50IHR5cGVzIG9mIFN1YnN0cmF0ZS1iYXNlZCBjb2lucy5cbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIG1heGltdW0gdmFsaWRpdHkgZHVyYXRpb24gaW4gYmxvY2tzLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQgYnkgdGhlIHN1YmNsYXNzLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldE1heFZhbGlkaXR5RHVyYXRpb25CbG9ja3MoKTogbnVtYmVyIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkoUHVia2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgU3Vic3RyYXRlS2V5UGFpcih7IHB1YjogUHVia2V5IH0pLmdldEFkZHJlc3ModGhpcy5nZXRBZGRyZXNzRm9ybWF0KCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldEluaXRpYWxpemVkTm9kZUFQSSgpOiBQcm9taXNlPEFwaVByb21pc2U+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0QWNjb3VudEluZm8od2FsbGV0QWRkcjogc3RyaW5nKTogUHJvbWlzZTx7IG5vbmNlOiBudW1iZXI7IGZyZWVCYWxhbmNlOiBudW1iZXIgfT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXRGZWUoZGVzdEFkZHI6IHN0cmluZywgc3JjQWRkcjogc3RyaW5nLCBhbW91bnQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldEhlYWRlckluZm8oKTogUHJvbWlzZTx7IGhlYWRlck51bWJlcjogbnVtYmVyOyBoZWFkZXJIYXNoOiBzdHJpbmcgfT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXRNYXRlcmlhbCgpOiBQcm9taXNlPE1hdGVyaWFsPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhIGZ1bmRzIHJlY292ZXJ5IHRyYW5zYWN0aW9uIHdpdGhvdXQgQml0R29cbiAgICogQHBhcmFtIHtNUENSZWNvdmVyeU9wdGlvbnN9IHBhcmFtcyBwYXJhbWV0ZXJzIG5lZWRlZCB0byBjb25zdHJ1Y3QgYW5kXG4gICAqIChtYXliZSkgc2lnbiB0aGUgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHJldHVybnMge01QQ1R4fSB0aGUgc2VyaWFsaXplZCB0cmFuc2FjdGlvbiBoZXggc3RyaW5nIGFuZCBpbmRleFxuICAgKiBvZiB0aGUgYWRkcmVzcyBiZWluZyBzd2VwdFxuICAgKi9cbiAgYXN5bmMgcmVjb3ZlcihwYXJhbXM6IE1QQ1JlY292ZXJ5T3B0aW9ucyk6IFByb21pc2U8TVBDVHggfCBNUENTd2VlcFR4cz4ge1xuICAgIGlmICghcGFyYW1zLmJpdGdvS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgYml0Z29LZXknKTtcbiAgICB9XG5cbiAgICBpZiAoIXBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uIHx8ICF0aGlzLmlzVmFsaWRBZGRyZXNzKHBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHJlY292ZXJ5IGRlc3RpbmF0aW9uIGFkZHJlc3MnKTtcbiAgICB9XG5cbiAgICBjb25zdCBiaXRnb0tleSA9IHBhcmFtcy5iaXRnb0tleS5yZXBsYWNlKC9cXHMvZywgJycpO1xuICAgIGNvbnN0IGlzVW5zaWduZWRTd2VlcCA9ICFwYXJhbXMudXNlcktleSAmJiAhcGFyYW1zLmJhY2t1cEtleSAmJiAhcGFyYW1zLndhbGxldFBhc3NwaHJhc2U7XG5cbiAgICBjb25zdCBNUEMgPSBhd2FpdCBFRERTQU1ldGhvZHMuZ2V0SW5pdGlhbGl6ZWRNcGNJbnN0YW5jZSgpO1xuXG4gICAgY29uc3QgaW5kZXggPSBwYXJhbXMuaW5kZXggfHwgMDtcbiAgICBjb25zdCBjdXJyUGF0aCA9IHBhcmFtcy5zZWVkID8gZ2V0RGVyaXZhdGlvblBhdGgocGFyYW1zLnNlZWQpICsgYC8ke2luZGV4fWAgOiBgbS8ke2luZGV4fWA7XG4gICAgY29uc3QgYWNjb3VudElkID0gTVBDLmRlcml2ZVVuaGFyZGVuZWQoYml0Z29LZXksIGN1cnJQYXRoKS5zbGljZSgwLCA2NCk7XG4gICAgY29uc3Qgc2VuZGVyQWRkciA9IHRoaXMuZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkoYWNjb3VudElkKTtcblxuICAgIGNvbnN0IHsgbm9uY2UsIGZyZWVCYWxhbmNlIH0gPSBhd2FpdCB0aGlzLmdldEFjY291bnRJbmZvKHNlbmRlckFkZHIpO1xuICAgIGNvbnN0IGRlc3RBZGRyID0gcGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb247XG4gICAgY29uc3QgYW1vdW50ID0gZnJlZUJhbGFuY2U7XG4gICAgY29uc3QgcGFydGlhbEZlZSA9IGF3YWl0IHRoaXMuZ2V0RmVlKGRlc3RBZGRyLCBzZW5kZXJBZGRyLCBhbW91bnQpO1xuXG4gICAgY29uc3QgdmFsdWUgPSBuZXcgQmlnTnVtYmVyKGZyZWVCYWxhbmNlKS5taW51cyhuZXcgQmlnTnVtYmVyKHBhcnRpYWxGZWUpKTtcbiAgICBpZiAodmFsdWUuaXNMZXNzVGhhbk9yRXF1YWxUbygwKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWQgbm90IGZpbmQgYWRkcmVzcyB3aXRoIGZ1bmRzIHRvIHJlY292ZXInKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGhlYWRlck51bWJlciwgaGVhZGVySGFzaCB9ID0gYXdhaXQgdGhpcy5nZXRIZWFkZXJJbmZvKCk7XG4gICAgY29uc3QgbWF0ZXJpYWwgPSBhd2FpdCB0aGlzLmdldE1hdGVyaWFsKCk7XG4gICAgY29uc3QgdmFsaWRpdHlXaW5kb3cgPSB7IGZpcnN0VmFsaWQ6IGhlYWRlck51bWJlciwgbWF4RHVyYXRpb246IHRoaXMuTUFYX1ZBTElESVRZX0RVUkFUSU9OIH07XG5cbiAgICBjb25zdCB0eEJ1aWxkZXIgPSB0aGlzLmdldEJ1aWxkZXIoKS5nZXRUcmFuc2ZlckJ1aWxkZXIoKS5tYXRlcmlhbChtYXRlcmlhbCk7XG4gICAgdHhCdWlsZGVyXG4gICAgICAuc3dlZXAoZmFsc2UpXG4gICAgICAudG8oeyBhZGRyZXNzOiBwYXJhbXMucmVjb3ZlcnlEZXN0aW5hdGlvbiB9KVxuICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlckFkZHIgfSlcbiAgICAgIC52YWxpZGl0eSh2YWxpZGl0eVdpbmRvdylcbiAgICAgIC5yZWZlcmVuY2VCbG9jayhoZWFkZXJIYXNoKVxuICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnTm9uY2UnLCB2YWx1ZTogbm9uY2UgfSlcbiAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pO1xuXG4gICAgY29uc3QgdW5zaWduZWRUcmFuc2FjdGlvbiA9IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNhY3Rpb247XG5cbiAgICBsZXQgc2VyaWFsaXplZFR4ID0gdW5zaWduZWRUcmFuc2FjdGlvbi50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgIGlmICghaXNVbnNpZ25lZFN3ZWVwKSB7XG4gICAgICBpZiAoIXBhcmFtcy51c2VyS2V5KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyB1c2VyS2V5Jyk7XG4gICAgICB9XG4gICAgICBpZiAoIXBhcmFtcy5iYWNrdXBLZXkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIGJhY2t1cEtleScpO1xuICAgICAgfVxuICAgICAgaWYgKCFwYXJhbXMud2FsbGV0UGFzc3BocmFzZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3Npbmcgd2FsbGV0IHBhc3NwaHJhc2UnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2lnbmluZ01hdGVyaWFsID0gYXdhaXQgdGhpcy5pc01wY1YyS2V5Y2FyZChwYXJhbXMudXNlcktleSEsIHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlISk7XG4gICAgICBhd2FpdCB0aGlzLmFkZFN1YnN0cmF0ZVJlY292ZXJ5U2lnbmF0dXJlKFxuICAgICAgICB0eEJ1aWxkZXIsXG4gICAgICAgIHNpZ25pbmdNYXRlcmlhbCxcbiAgICAgICAgcGFyYW1zLmJhY2t1cEtleSEucmVwbGFjZSgvXFxzL2csICcnKSxcbiAgICAgICAgcGFyYW1zLndhbGxldFBhc3NwaHJhc2UhLFxuICAgICAgICB1bnNpZ25lZFRyYW5zYWN0aW9uLFxuICAgICAgICBjdXJyUGF0aCxcbiAgICAgICAgYml0Z29LZXksXG4gICAgICAgIGFjY291bnRJZFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHNpZ25lZFRyYW5zYWN0aW9uID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBzZXJpYWxpemVkVHggPSBzaWduZWRUcmFuc2FjdGlvbi50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IG5ldyBCaWdOdW1iZXIoZnJlZUJhbGFuY2UpO1xuICAgICAgY29uc3Qgd2FsbGV0Q29pbiA9IHRoaXMuZ2V0Q2hhaW4oKTtcbiAgICAgIGNvbnN0IGlucHV0cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6IHVuc2lnbmVkVHJhbnNhY3Rpb24uaW5wdXRzWzBdLmFkZHJlc3MsXG4gICAgICAgICAgdmFsdWVTdHJpbmc6IHZhbHVlLnRvU3RyaW5nKCksXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLnRvTnVtYmVyKCksXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgICAgY29uc3Qgb3V0cHV0cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6IHVuc2lnbmVkVHJhbnNhY3Rpb24ub3V0cHV0c1swXS5hZGRyZXNzLFxuICAgICAgICAgIHZhbHVlU3RyaW5nOiB2YWx1ZS50b1N0cmluZygpLFxuICAgICAgICAgIGNvaW5OYW1lOiB3YWxsZXRDb2luLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IHNwZW5kQW1vdW50ID0gdmFsdWUudG9TdHJpbmcoKTtcbiAgICAgIGNvbnN0IHBhcnNlZFR4ID0geyBpbnB1dHM6IGlucHV0cywgb3V0cHV0czogb3V0cHV0cywgc3BlbmRBbW91bnQ6IHNwZW5kQW1vdW50LCB0eXBlOiAnJyB9O1xuICAgICAgY29uc3QgZmVlSW5mbyA9IHsgZmVlOiAwLCBmZWVTdHJpbmc6ICcwJyB9O1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb246IE1QQ1R4ID0ge1xuICAgICAgICBzZXJpYWxpemVkVHg6IHNlcmlhbGl6ZWRUeCxcbiAgICAgICAgc2NhbkluZGV4OiBpbmRleCxcbiAgICAgICAgY29pbjogd2FsbGV0Q29pbixcbiAgICAgICAgc2lnbmFibGVIZXg6IHVuc2lnbmVkVHJhbnNhY3Rpb24uc2lnbmFibGVQYXlsb2FkLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgZGVyaXZhdGlvblBhdGg6IGN1cnJQYXRoLFxuICAgICAgICBwYXJzZWRUeDogcGFyc2VkVHgsXG4gICAgICAgIGZlZUluZm86IGZlZUluZm8sXG4gICAgICAgIGNvaW5TcGVjaWZpYzogeyAuLi52YWxpZGl0eVdpbmRvdywgY29tbW9uS2V5Y2hhaW46IGJpdGdvS2V5IH0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB1bnNpZ25lZFR4OiBNUENVbnNpZ25lZFR4ID0geyB1bnNpZ25lZFR4OiB0cmFuc2FjdGlvbiwgc2lnbmF0dXJlU2hhcmVzOiBbXSB9O1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb25zOiBNUENVbnNpZ25lZFR4W10gPSBbdW5zaWduZWRUeF07XG4gICAgICBjb25zdCB0eFJlcXVlc3Q6IFJlY292ZXJ5VHhSZXF1ZXN0ID0ge1xuICAgICAgICB0cmFuc2FjdGlvbnM6IHRyYW5zYWN0aW9ucyxcbiAgICAgICAgd2FsbGV0Q29pbjogd2FsbGV0Q29pbixcbiAgICAgIH07XG4gICAgICBjb25zdCB0eFJlcXVlc3RzOiBNUENTd2VlcFR4cyA9IHsgdHhSZXF1ZXN0czogW3R4UmVxdWVzdF0gfTtcbiAgICAgIHJldHVybiB0eFJlcXVlc3RzO1xuICAgIH1cblxuICAgIGNvbnN0IHRyYW5zYWN0aW9uOiBNUENUeCA9IHsgc2VyaWFsaXplZFR4OiBzZXJpYWxpemVkVHgsIHNjYW5JbmRleDogaW5kZXggfTtcbiAgICByZXR1cm4gdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIG5hdGl2ZSBUQU8gcmVjb3ZlcmllcyBvZiByZWNlaXZlIGFkZHJlc3NlcyBpbiBiYXRjaCB3aXRob3V0IEJpdEdvLlxuICAgKiBGdW5kcyB3aWxsIGJlIHJlY292ZXJlZCB0byBiYXNlIGFkZHJlc3MgZmlyc3QuIFlvdSBuZWVkIHRvIGluaXRpYXRlIGFub3RoZXIgc3dlZXAgdHhuIGFmdGVyIHRoYXQuXG4gICAqXG4gICAqIEBwYXJhbSB7TVBDQ29uc29saWRhdGlvblJlY292ZXJ5T3B0aW9uc30gcGFyYW1zIC0gb3B0aW9ucyBmb3IgY29uc29saWRhdGlvbiByZWNvdmVyeS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtwYXJhbXMuc3RhcnRpbmdTY2FuSW5kZXhdIC0gcmVjZWl2ZSBhZGRyZXNzIGluZGV4IHRvIHN0YXJ0IHNjYW5uaW5nIGZyb20uIGRlZmF1bHQgdG8gMSAoaW5jbHVzaXZlKS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtwYXJhbXMuZW5kaW5nU2NhbkluZGV4XSAtIHJlY2VpdmUgYWRkcmVzcyBpbmRleCB0byBlbmQgc2Nhbm5pbmcgYXQuIGRlZmF1bHQgdG8gc3RhcnRpbmdTY2FuSW5kZXggKyAyMCAoZXhjbHVzaXZlKS5cbiAgICovXG4gIGFzeW5jIHJlY292ZXJDb25zb2xpZGF0aW9ucyhwYXJhbXM6IE1QQ0NvbnNvbGlkYXRpb25SZWNvdmVyeU9wdGlvbnMpOiBQcm9taXNlPE1QQ1R4cyB8IE1QQ1N3ZWVwVHhzPiB7XG4gICAgY29uc3QgaXNVbnNpZ25lZFN3ZWVwID0gIXBhcmFtcy51c2VyS2V5ICYmICFwYXJhbXMuYmFja3VwS2V5ICYmICFwYXJhbXMud2FsbGV0UGFzc3BocmFzZTtcbiAgICBjb25zdCBzdGFydElkeCA9IHBhcmFtcy5zdGFydGluZ1NjYW5JbmRleCB8fCAxO1xuICAgIGNvbnN0IGVuZElkeCA9IHBhcmFtcy5lbmRpbmdTY2FuSW5kZXggfHwgc3RhcnRJZHggKyBERUZBVUxUX1NDQU5fRkFDVE9SO1xuXG4gICAgaWYgKHN0YXJ0SWR4IDwgMSB8fCBlbmRJZHggPD0gc3RhcnRJZHggfHwgZW5kSWR4IC0gc3RhcnRJZHggPiAxMCAqIERFRkFVTFRfU0NBTl9GQUNUT1IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEludmFsaWQgc3RhcnRpbmcgb3IgZW5kaW5nIGluZGV4IHRvIHNjYW4gZm9yIGFkZHJlc3Nlcy4gc3RhcnRpbmdTY2FuSW5kZXg6ICR7c3RhcnRJZHh9LCBlbmRpbmdTY2FuSW5kZXg6ICR7ZW5kSWR4fS5gXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGJpdGdvS2V5ID0gcGFyYW1zLmJpdGdvS2V5LnJlcGxhY2UoL1xccy9nLCAnJyk7XG4gICAgY29uc3QgTVBDID0gYXdhaXQgRUREU0FNZXRob2RzLmdldEluaXRpYWxpemVkTXBjSW5zdGFuY2UoKTtcbiAgICBjb25zdCBiYXNlSW5kZXggPSAwO1xuICAgIGNvbnN0IGJhc2VQYXRoID0gcGFyYW1zLnNlZWQgPyBnZXREZXJpdmF0aW9uUGF0aChwYXJhbXMuc2VlZCkgKyBgLyR7YmFzZUluZGV4fWAgOiBgbS8ke2Jhc2VJbmRleH1gO1xuICAgIGNvbnN0IGFjY291bnRJZCA9IE1QQy5kZXJpdmVVbmhhcmRlbmVkKGJpdGdvS2V5LCBiYXNlUGF0aCkuc2xpY2UoMCwgNjQpO1xuICAgIGNvbnN0IGJhc2VBZGRyZXNzID0gdGhpcy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShhY2NvdW50SWQpO1xuXG4gICAgY29uc3QgY29uc29saWRhdGlvblRyYW5zYWN0aW9uczogYW55W10gPSBbXTtcbiAgICBsZXQgbGFzdFNjYW5JbmRleCA9IHN0YXJ0SWR4O1xuICAgIGZvciAobGV0IGkgPSBzdGFydElkeDsgaSA8IGVuZElkeDsgaSsrKSB7XG4gICAgICBjb25zdCByZWNvdmVyUGFyYW1zID0ge1xuICAgICAgICB1c2VyS2V5OiBwYXJhbXMudXNlcktleSxcbiAgICAgICAgYmFja3VwS2V5OiBwYXJhbXMuYmFja3VwS2V5LFxuICAgICAgICBiaXRnb0tleTogcGFyYW1zLmJpdGdvS2V5LFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiBwYXJhbXMud2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogYmFzZUFkZHJlc3MsXG4gICAgICAgIHNlZWQ6IHBhcmFtcy5zZWVkLFxuICAgICAgICBpbmRleDogaSxcbiAgICAgIH07XG5cbiAgICAgIGxldCByZWNvdmVyeVRyYW5zYWN0aW9uO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVjb3ZlcnlUcmFuc2FjdGlvbiA9IGF3YWl0IHRoaXMucmVjb3ZlcihyZWNvdmVyUGFyYW1zKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGUubWVzc2FnZSA9PT0gJ0RpZCBub3QgZmluZCBhZGRyZXNzIHdpdGggZnVuZHMgdG8gcmVjb3ZlcicpIHtcbiAgICAgICAgICBsYXN0U2NhbkluZGV4ID0gaTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNVbnNpZ25lZFN3ZWVwKSB7XG4gICAgICAgIGNvbnNvbGlkYXRpb25UcmFuc2FjdGlvbnMucHVzaCgocmVjb3ZlcnlUcmFuc2FjdGlvbiBhcyBNUENTd2VlcFR4cykudHhSZXF1ZXN0c1swXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xpZGF0aW9uVHJhbnNhY3Rpb25zLnB1c2gocmVjb3ZlcnlUcmFuc2FjdGlvbik7XG4gICAgICB9XG4gICAgICBsYXN0U2NhbkluZGV4ID0gaTtcbiAgICB9XG5cbiAgICBpZiAoY29uc29saWRhdGlvblRyYW5zYWN0aW9ucy5sZW5ndGggPT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWQgbm90IGZpbmQgYW4gYWRkcmVzcyB3aXRoIGZ1bmRzIHRvIHJlY292ZXInKTtcbiAgICB9XG5cbiAgICBpZiAoaXNVbnNpZ25lZFN3ZWVwKSB7XG4gICAgICAvLyBsYXN0U2NhbkluZGV4IHdpbGwgYmUgdXNlZCB0byBpbmZvcm0gdXNlciB0aGUgbGFzdCBhZGRyZXNzIGluZGV4IHNjYW5uZWQgZm9yIGF2YWlsYWJsZSBmdW5kcyAoc28gdGhleSBjYW5cbiAgICAgIC8vIGFwcHJvcHJpYXRlbHkgYWRqdXN0IHRoZSBzY2FuIHJhbmdlIG9uIHRoZSBuZXh0IGl0ZXJhdGlvbiBvZiBjb25zb2xpZGF0aW9uIHJlY292ZXJpZXMpLiBJbiB0aGUgY2FzZSBvZiB1bnNpZ25lZFxuICAgICAgLy8gc3dlZXAgY29uc29saWRhdGlvbnMsIHRoaXMgbGFzdFNjYW5JbmRleCB3aWxsIGJlIHByb3ZpZGVkIGluIHRoZSBjb2luU3BlY2lmaWMgb2YgdGhlIGxhc3QgdHhuIG1hZGUuXG4gICAgICBjb25zdCBsYXN0VHJhbnNhY3Rpb25Db2luU3BlY2lmaWMgPSB7XG4gICAgICAgIGZpcnN0VmFsaWQ6XG4gICAgICAgICAgY29uc29saWRhdGlvblRyYW5zYWN0aW9uc1tjb25zb2xpZGF0aW9uVHJhbnNhY3Rpb25zLmxlbmd0aCAtIDFdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LmNvaW5TcGVjaWZpY1xuICAgICAgICAgICAgLmZpcnN0VmFsaWQsXG4gICAgICAgIG1heER1cmF0aW9uOlxuICAgICAgICAgIGNvbnNvbGlkYXRpb25UcmFuc2FjdGlvbnNbY29uc29saWRhdGlvblRyYW5zYWN0aW9ucy5sZW5ndGggLSAxXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5jb2luU3BlY2lmaWNcbiAgICAgICAgICAgIC5tYXhEdXJhdGlvbixcbiAgICAgICAgY29tbW9uS2V5Y2hhaW46XG4gICAgICAgICAgY29uc29saWRhdGlvblRyYW5zYWN0aW9uc1tjb25zb2xpZGF0aW9uVHJhbnNhY3Rpb25zLmxlbmd0aCAtIDFdLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LmNvaW5TcGVjaWZpY1xuICAgICAgICAgICAgLmNvbW1vbktleWNoYWluLFxuICAgICAgICBsYXN0U2NhbkluZGV4OiBsYXN0U2NhbkluZGV4LFxuICAgICAgfTtcbiAgICAgIGNvbnNvbGlkYXRpb25UcmFuc2FjdGlvbnNbY29uc29saWRhdGlvblRyYW5zYWN0aW9ucy5sZW5ndGggLSAxXS50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5jb2luU3BlY2lmaWMgPVxuICAgICAgICBsYXN0VHJhbnNhY3Rpb25Db2luU3BlY2lmaWM7XG4gICAgICBjb25zdCBjb25zb2xpZGF0aW9uU3dlZXBUcmFuc2FjdGlvbnM6IE1QQ1N3ZWVwVHhzID0geyB0eFJlcXVlc3RzOiBjb25zb2xpZGF0aW9uVHJhbnNhY3Rpb25zIH07XG4gICAgICByZXR1cm4gY29uc29saWRhdGlvblN3ZWVwVHJhbnNhY3Rpb25zO1xuICAgIH1cblxuICAgIHJldHVybiB7IHRyYW5zYWN0aW9uczogY29uc29saWRhdGlvblRyYW5zYWN0aW9ucywgbGFzdFNjYW5JbmRleCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlY3J5cHRzIGFuIGVuY3J5cHRlZCBrZXljaGFpbiB2YWx1ZSwgd3JhcHBpbmcgZXJyb3JzIHdpdGggYSBkZXNjcmlwdGl2ZSBtZXNzYWdlLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBkZWNyeXB0S2V5Y2hhaW4oZW5jcnlwdGVkS2V5OiBzdHJpbmcsIHBhc3NwaHJhc2U6IHN0cmluZywgbGFiZWw6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcHJ2ID0gYXdhaXQgZGVjcnlwdEtleWNoYWluUHJpdmF0ZUtleSh0aGlzLmJpdGdvLCB7IGVuY3J5cHRlZFBydjogZW5jcnlwdGVkS2V5IH0sIHBhc3NwaHJhc2UpO1xuICAgIGlmICghcHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGRlY3J5cHRpbmcgJHtsYWJlbH0ga2V5Y2hhaW46IGludmFsaWQgcGFzc3dvcmQgb3IgY29ycnVwdGVkIGtleWApO1xuICAgIH1cbiAgICByZXR1cm4gcHJ2O1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2JlcyB0aGUga2V5IGZvcm1hdCBhbmQgcmV0dXJucyBhIGRpc2NyaW1pbmF0ZWQgdW5pb24gc28gY2FsbGVycyBhdm9pZCBhIHNlY29uZCBkZWNyeXB0LlxuICAgKiBWMSBrZXljYXJkcyBhcmUgSlNPTjsgVjIga2V5Y2FyZHMgYXJlIENCT1ItZW5jb2RlZCByZWR1Y2VkIGtleSBzaGFyZXMuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgaXNNcGNWMktleWNhcmQodXNlcktleTogc3RyaW5nLCB3YWxsZXRQYXNzcGhyYXNlOiBzdHJpbmcpOiBQcm9taXNlPFN1YnN0cmF0ZVNpZ25pbmdNYXRlcmlhbD4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB1c2VyS2V5LnJlcGxhY2UoL1xccy9nLCAnJyk7XG4gICAgbGV0IGlzVjE6IGJvb2xlYW47XG4gICAgdHJ5IHtcbiAgICAgIGlzVjEgPSBhd2FpdCBFRERTQVV0aWxzLmlzRWRkc2FNcGNWMVNpZ25pbmdNYXRlcmlhbChub3JtYWxpemVkLCB3YWxsZXRQYXNzcGhyYXNlLCB0aGlzLmJpdGdvKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGRlY3J5cHRpbmcgdXNlciBrZXljaGFpbjogJHtlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSl9YCk7XG4gICAgfVxuICAgIGlmIChpc1YxKSB7XG4gICAgICBjb25zdCB1c2VyUHJ2ID0gYXdhaXQgdGhpcy5kZWNyeXB0S2V5Y2hhaW4obm9ybWFsaXplZCwgd2FsbGV0UGFzc3BocmFzZSwgJ3VzZXInKTtcbiAgICAgIHJldHVybiB7IHZlcnNpb246ICd2MScsIHVzZXJQcnYgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgdmVyc2lvbjogJ3YyJywgZW5jcnlwdGVkVXNlcktleTogbm9ybWFsaXplZCB9O1xuICB9XG5cbiAgLy8gUHJvdGVjdGVkIHNvIHRlc3RzIGNhbiBzdHViIHZpYSBpbnN0YW5jZSBvdmVycmlkZXMgd2l0aG91dCBhZGRpbmcgbmV3IHRlc3QgZGVwZW5kZW5jaWVzLlxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0RWRkc2FNcGNWMlJlY292ZXJ5S2V5U2hhcmVzKFxuICAgIGVuY3J5cHRlZFVzZXJLZXk6IHN0cmluZyxcbiAgICBlbmNyeXB0ZWRCYWNrdXBLZXk6IHN0cmluZyxcbiAgICB3YWxsZXRQYXNzcGhyYXNlOiBzdHJpbmdcbiAgKTogUmV0dXJuVHlwZTx0eXBlb2YgRUREU0FVdGlscy5nZXRFZGRzYU1wY1YyUmVjb3ZlcnlLZXlTaGFyZXNGcm9tUmVkdWNlZEtleT4ge1xuICAgIHJldHVybiBFRERTQVV0aWxzLmdldEVkZHNhTXBjVjJSZWNvdmVyeUtleVNoYXJlc0Zyb21SZWR1Y2VkS2V5KFxuICAgICAgZW5jcnlwdGVkVXNlcktleSxcbiAgICAgIGVuY3J5cHRlZEJhY2t1cEtleSxcbiAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICB0aGlzLmJpdGdvXG4gICAgKTtcbiAgfVxuXG4gIC8vIFByb3RlY3RlZCBzbyB0ZXN0cyBjYW4gc3R1YiB2aWEgaW5zdGFuY2Ugb3ZlcnJpZGVzIHdpdGhvdXQgYWRkaW5nIG5ldyB0ZXN0IGRlcGVuZGVuY2llcy5cbiAgcHJvdGVjdGVkIGFzeW5jIHNpZ25FZGRzYU1wY1YyUmVjb3ZlcnkoXG4gICAgc2lnbmFibGVQYXlsb2FkOiBCdWZmZXIsXG4gICAgY3VyclBhdGg6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBQYXJhbWV0ZXJzPHR5cGVvZiBFRERTQVV0aWxzLnNpZ25SZWNvdmVyeUVkZHNhTVBDdjI+IGV4dGVuZHMgW0J1ZmZlciwgc3RyaW5nLCAuLi5pbmZlciBSXSA/IFIgOiBuZXZlclxuICApOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgIHJldHVybiBFRERTQVV0aWxzLnNpZ25SZWNvdmVyeUVkZHNhTVBDdjIoc2lnbmFibGVQYXlsb2FkLCBjdXJyUGF0aCwgLi4uYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBNUEN2MSBvciBNUEN2MiBzaWduYXR1cmUgdG8gYSBTdWJzdHJhdGUgdHJhbnNhY3Rpb24gYnVpbGRlci5cbiAgICogTVBDdjIgc2lnbmF0dXJlcyBhcmUgcHJlZml4ZWQgd2l0aCBFRDI1NTE5X01VTFRJX1NJR05BVFVSRV9QUkVGSVggKEVkMjU1MTkgZGlzY3JpbWluYW50XG4gICAqIGluIHRoZSBTdWJzdHJhdGUgTXVsdGlTaWduYXR1cmUgZW51bSkuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYWRkU3Vic3RyYXRlUmVjb3ZlcnlTaWduYXR1cmUoXG4gICAgdHhCdWlsZGVyOiBOYXRpdmVUcmFuc2ZlckJ1aWxkZXIsXG4gICAgc2lnbmluZ01hdGVyaWFsOiBTdWJzdHJhdGVTaWduaW5nTWF0ZXJpYWwsXG4gICAgYmFja3VwS2V5OiBzdHJpbmcsXG4gICAgd2FsbGV0UGFzc3BocmFzZTogc3RyaW5nLFxuICAgIHVuc2lnbmVkVHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uLFxuICAgIGN1cnJQYXRoOiBzdHJpbmcsXG4gICAgYml0Z29LZXk6IHN0cmluZyxcbiAgICBhY2NvdW50SWQ6IHN0cmluZ1xuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBFRDI1NTE5X01VTFRJX1NJR05BVFVSRV9QUkVGSVggPSAweDAwO1xuICAgIGNvbnN0IHN1YnN0cmF0ZUtleVBhaXIgPSBuZXcgU3Vic3RyYXRlS2V5UGFpcih7IHB1YjogYWNjb3VudElkIH0pO1xuXG4gICAgaWYgKHNpZ25pbmdNYXRlcmlhbC52ZXJzaW9uID09PSAndjInKSB7XG4gICAgICBjb25zdCB7IHVzZXJLZXlTaGFyZSwgYmFja3VwS2V5U2hhcmUsIGNvbW1vbktleUNoYWluIH0gPSBhd2FpdCB0aGlzLmdldEVkZHNhTXBjVjJSZWNvdmVyeUtleVNoYXJlcyhcbiAgICAgICAgc2lnbmluZ01hdGVyaWFsLmVuY3J5cHRlZFVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleSxcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZVxuICAgICAgKTtcbiAgICAgIGlmIChjb21tb25LZXlDaGFpbi50b0xvd2VyQ2FzZSgpICE9PSBiaXRnb0tleS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRWREU0EgTVBDdjIgcmVjb3Zlcnk6IGNvbW1vbktleUNoYWluIGZyb20ga2V5Y2FyZCBkb2VzIG5vdCBtYXRjaCBiaXRnb0tleScpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmF3U2lnID0gYXdhaXQgdGhpcy5zaWduRWRkc2FNcGNWMlJlY292ZXJ5KFxuICAgICAgICB1bnNpZ25lZFRyYW5zYWN0aW9uLnNpZ25hYmxlUGF5bG9hZCxcbiAgICAgICAgY3VyclBhdGgsXG4gICAgICAgIHVzZXJLZXlTaGFyZSxcbiAgICAgICAgYmFja3VwS2V5U2hhcmUsXG4gICAgICAgIGNvbW1vbktleUNoYWluXG4gICAgICApO1xuICAgICAgY29uc3Qgc3Vic3RyYXRlU2lnID0gQnVmZmVyLmNvbmNhdChbQnVmZmVyLmZyb20oW0VEMjU1MTlfTVVMVElfU0lHTkFUVVJFX1BSRUZJWF0pLCByYXdTaWddKTtcbiAgICAgIHR4QnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IHN1YnN0cmF0ZUtleVBhaXIuZ2V0S2V5cygpLnB1YiB9LCBzdWJzdHJhdGVTaWcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB1c2VyU2lnbmluZ01hdGVyaWFsID0gSlNPTi5wYXJzZShzaWduaW5nTWF0ZXJpYWwudXNlclBydikgYXMgRUREU0FNZXRob2RUeXBlcy5Vc2VyU2lnbmluZ01hdGVyaWFsO1xuICAgICAgY29uc3QgYmFja3VwUHJ2ID0gYXdhaXQgdGhpcy5kZWNyeXB0S2V5Y2hhaW4oYmFja3VwS2V5LCB3YWxsZXRQYXNzcGhyYXNlLCAnYmFja3VwJyk7XG4gICAgICBjb25zdCBiYWNrdXBTaWduaW5nTWF0ZXJpYWwgPSBKU09OLnBhcnNlKGJhY2t1cFBydikgYXMgRUREU0FNZXRob2RUeXBlcy5CYWNrdXBTaWduaW5nTWF0ZXJpYWw7XG5cbiAgICAgIGNvbnN0IHNpZ25hdHVyZUhleCA9IGF3YWl0IEVERFNBTWV0aG9kcy5nZXRUU1NTaWduYXR1cmUoXG4gICAgICAgIHVzZXJTaWduaW5nTWF0ZXJpYWwsXG4gICAgICAgIGJhY2t1cFNpZ25pbmdNYXRlcmlhbCxcbiAgICAgICAgY3VyclBhdGgsXG4gICAgICAgIHVuc2lnbmVkVHJhbnNhY3Rpb25cbiAgICAgICk7XG4gICAgICB0eEJ1aWxkZXIuYWRkU2lnbmF0dXJlKHsgcHViOiBzdWJzdHJhdGVLZXlQYWlyLmdldEtleXMoKS5wdWIgfSwgc2lnbmF0dXJlSGV4KTtcbiAgICB9XG4gIH1cblxuICAvKiogaW5oZXJpdGVkIGRvYyAqL1xuICBhc3luYyBjcmVhdGVCcm9hZGNhc3RhYmxlU3dlZXBUcmFuc2FjdGlvbihwYXJhbXM6IE1QQ1N3ZWVwUmVjb3ZlcnlPcHRpb25zKTogUHJvbWlzZTxNUENUeHM+IHtcbiAgICBjb25zdCByZXEgPSBwYXJhbXMuc2lnbmF0dXJlU2hhcmVzO1xuICAgIGNvbnN0IGJyb2FkY2FzdGFibGVUcmFuc2FjdGlvbnM6IE1QQ1R4W10gPSBbXTtcbiAgICBsZXQgbGFzdFNjYW5JbmRleCA9IDA7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlcS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgTVBDID0gYXdhaXQgRUREU0FNZXRob2RzLmdldEluaXRpYWxpemVkTXBjSW5zdGFuY2UoKTtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gcmVxW2ldLnR4UmVxdWVzdC50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeDtcbiAgICAgIGlmICghcmVxW2ldLm92YyB8fCAhcmVxW2ldLm92Y1swXS5lZGRzYVNpZ25hdHVyZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3Npbmcgc2lnbmF0dXJlKHMpJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBzaWduYXR1cmUgPSByZXFbaV0ub3ZjWzBdLmVkZHNhU2lnbmF0dXJlO1xuICAgICAgaWYgKCF0cmFuc2FjdGlvbi5zaWduYWJsZUhleCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3Npbmcgc2lnbmFibGUgaGV4Jyk7XG4gICAgICB9XG4gICAgICBjb25zdCBtZXNzYWdlQnVmZmVyID0gQnVmZmVyLmZyb20odHJhbnNhY3Rpb24uc2lnbmFibGVIZXghLCAnaGV4Jyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBNUEMudmVyaWZ5KG1lc3NhZ2VCdWZmZXIsIHNpZ25hdHVyZSk7XG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc2lnbmF0dXJlJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBzaWduYXR1cmVIZXggPSBCdWZmZXIuY29uY2F0KFtCdWZmZXIuZnJvbShzaWduYXR1cmUuUiwgJ2hleCcpLCBCdWZmZXIuZnJvbShzaWduYXR1cmUuc2lnbWEsICdoZXgnKV0pO1xuICAgICAgaWYgKFxuICAgICAgICAhdHJhbnNhY3Rpb24uY29pblNwZWNpZmljIHx8XG4gICAgICAgICF0cmFuc2FjdGlvbi5jb2luU3BlY2lmaWM/LmZpcnN0VmFsaWQgfHxcbiAgICAgICAgIXRyYW5zYWN0aW9uLmNvaW5TcGVjaWZpYz8ubWF4RHVyYXRpb25cbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgdmFsaWRpdHkgd2luZG93Jyk7XG4gICAgICB9XG4gICAgICBjb25zdCB2YWxpZGl0eVdpbmRvdyA9IHtcbiAgICAgICAgZmlyc3RWYWxpZDogdHJhbnNhY3Rpb24uY29pblNwZWNpZmljPy5maXJzdFZhbGlkLFxuICAgICAgICBtYXhEdXJhdGlvbjogdHJhbnNhY3Rpb24uY29pblNwZWNpZmljPy5tYXhEdXJhdGlvbixcbiAgICAgIH07XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IGF3YWl0IHRoaXMuZ2V0TWF0ZXJpYWwoKTtcbiAgICAgIGlmICghdHJhbnNhY3Rpb24uY29pblNwZWNpZmljPy5jb21tb25LZXljaGFpbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgY29tbW9uIGtleWNoYWluJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBjb21tb25LZXljaGFpbiA9IHRyYW5zYWN0aW9uLmNvaW5TcGVjaWZpYyEuY29tbW9uS2V5Y2hhaW4hIGFzIHN0cmluZztcbiAgICAgIGlmICghdHJhbnNhY3Rpb24uZGVyaXZhdGlvblBhdGgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGRlcml2YXRpb24gcGF0aCcpO1xuICAgICAgfVxuICAgICAgY29uc3QgZGVyaXZhdGlvblBhdGggPSB0cmFuc2FjdGlvbi5kZXJpdmF0aW9uUGF0aCBhcyBzdHJpbmc7XG4gICAgICBjb25zdCBhY2NvdW50SWQgPSBNUEMuZGVyaXZlVW5oYXJkZW5lZChjb21tb25LZXljaGFpbiwgZGVyaXZhdGlvblBhdGgpLnNsaWNlKDAsIDY0KTtcbiAgICAgIGNvbnN0IHNlbmRlckFkZHIgPSB0aGlzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KGFjY291bnRJZCk7XG5cbiAgICAgIGNvbnN0IHR4bkJ1aWxkZXIgPSB0aGlzLmdldEJ1aWxkZXIoKVxuICAgICAgICAubWF0ZXJpYWwobWF0ZXJpYWwpXG4gICAgICAgIC5mcm9tKHRyYW5zYWN0aW9uLnNlcmlhbGl6ZWRUeCBhcyBzdHJpbmcpXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyIH0pXG4gICAgICAgIC52YWxpZGl0eSh2YWxpZGl0eVdpbmRvdyk7XG5cbiAgICAgIGNvbnN0IHN1YnN0cmF0ZUtleVBhaXIgPSBuZXcgU3Vic3RyYXRlS2V5UGFpcih7IHB1YjogYWNjb3VudElkIH0pO1xuICAgICAgdHhuQnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IHN1YnN0cmF0ZUtleVBhaXIuZ2V0S2V5cygpLnB1YiB9LCBzaWduYXR1cmVIZXgpO1xuICAgICAgY29uc3Qgc2lnbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCB0eG5CdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCBzZXJpYWxpemVkVHggPSBzaWduZWRUcmFuc2FjdGlvbi50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgICBicm9hZGNhc3RhYmxlVHJhbnNhY3Rpb25zLnB1c2goe1xuICAgICAgICBzZXJpYWxpemVkVHg6IHNlcmlhbGl6ZWRUeCxcbiAgICAgICAgc2NhbkluZGV4OiB0cmFuc2FjdGlvbi5zY2FuSW5kZXgsXG4gICAgICB9KTtcblxuICAgICAgaWYgKGkgPT09IHJlcS5sZW5ndGggLSAxICYmIHRyYW5zYWN0aW9uLmNvaW5TcGVjaWZpYyEubGFzdFNjYW5JbmRleCkge1xuICAgICAgICBsYXN0U2NhbkluZGV4ID0gdHJhbnNhY3Rpb24uY29pblNwZWNpZmljIS5sYXN0U2NhbkluZGV4IGFzIG51bWJlcjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgdHJhbnNhY3Rpb25zOiBicm9hZGNhc3RhYmxlVHJhbnNhY3Rpb25zLCBsYXN0U2NhbkluZGV4IH07XG4gIH1cblxuICAvKiogaW5oZXJpdGVkIGRvYyAqL1xuICBhdWRpdERlY3J5cHRlZEtleSh7IHB1YmxpY0tleSwgcHJ2LCBtdWx0aVNpZ1R5cGUgfTogQXVkaXREZWNyeXB0ZWRLZXlQYXJhbXMpIHtcbiAgICBpZiAobXVsdGlTaWdUeXBlICE9PSAndHNzJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBtdWx0aVNpZ1R5cGUnKTtcbiAgICB9XG4gICAgYXVkaXRFZGRzYVByaXZhdGVLZXkocHJ2LCBwdWJsaWNLZXkgPz8gJycpO1xuICB9XG59XG4iXX0=
|
package/dist/src/lib/iface.d.ts
CHANGED
|
@@ -75,6 +75,10 @@ export declare const MethodNames: {
|
|
|
75
75
|
* Move stake from one hotkey to another.
|
|
76
76
|
*/
|
|
77
77
|
readonly MoveStake: "moveStake";
|
|
78
|
+
/**
|
|
79
|
+
* Claim root network rewards with a hotkey.
|
|
80
|
+
*/
|
|
81
|
+
readonly ClaimRootWithHotkey: "claimRootWithHotkey";
|
|
78
82
|
};
|
|
79
83
|
/**
|
|
80
84
|
* Type representing the keys of the MethodNames object
|
|
@@ -188,11 +192,14 @@ export interface MoveStakeArgs extends Args {
|
|
|
188
192
|
destinationNetuid: string;
|
|
189
193
|
alphaAmount: string;
|
|
190
194
|
}
|
|
195
|
+
export interface ClaimRootWithHotkeyArgs extends Args {
|
|
196
|
+
hotkey: string;
|
|
197
|
+
}
|
|
191
198
|
/**
|
|
192
199
|
* Decoded TxMethod from a transaction hex
|
|
193
200
|
*/
|
|
194
201
|
export interface TxMethod {
|
|
195
|
-
args: TransferArgs | TransferAllArgs | AddStakeArgs | RemoveStakeArgs | BondArgs | BondExtraArgs | NominateArgs | ChillArgs | UnbondArgs | WithdrawUnbondedArgs | BatchArgs | TransferStakeArgs | MoveStakeArgs;
|
|
202
|
+
args: TransferArgs | TransferAllArgs | AddStakeArgs | RemoveStakeArgs | BondArgs | BondExtraArgs | NominateArgs | ChillArgs | UnbondArgs | WithdrawUnbondedArgs | BatchArgs | TransferStakeArgs | MoveStakeArgs | ClaimRootWithHotkeyArgs;
|
|
196
203
|
name: MethodNamesValues;
|
|
197
204
|
pallet: string;
|
|
198
205
|
}
|
|
@@ -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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"}
|
package/dist/src/lib/iface.js
CHANGED
|
@@ -75,9 +75,13 @@ exports.MethodNames = {
|
|
|
75
75
|
* Move stake from one hotkey to another.
|
|
76
76
|
*/
|
|
77
77
|
MoveStake: 'moveStake',
|
|
78
|
+
/**
|
|
79
|
+
* Claim root network rewards with a hotkey.
|
|
80
|
+
*/
|
|
81
|
+
ClaimRootWithHotkey: 'claimRootWithHotkey',
|
|
78
82
|
};
|
|
79
83
|
var TransactionTypes;
|
|
80
84
|
(function (TransactionTypes) {
|
|
81
85
|
TransactionTypes["TRANSFER"] = "transfer";
|
|
82
86
|
})(TransactionTypes || (exports.TransactionTypes = TransactionTypes = {}));
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVVBOztHQUVHO0FBQ0gsSUFBWSxZQUVYO0FBRkQsV0FBWSxZQUFZO0lBQ3RCLCtCQUFlLENBQUE7QUFDakIsQ0FBQyxFQUZXLFlBQVksNEJBQVosWUFBWSxRQUV2QjtBQUVEOzs7O0dBSUc7QUFDVSxRQUFBLFdBQVcsR0FBRztJQUN6Qjs7OztPQUlHO0lBQ0gsV0FBVyxFQUFFLGFBQXNCO0lBQ25DOzs7O09BSUc7SUFDSCxpQkFBaUIsRUFBRSxtQkFBNEI7SUFDL0M7Ozs7O09BS0c7SUFDSCxnQkFBZ0IsRUFBRSxrQkFBMkI7SUFDN0MsUUFBUSxFQUFFLFVBQW1CO0lBQzdCLFdBQVcsRUFBRSxhQUFzQjtJQUNuQzs7T0FFRztJQUNILElBQUksRUFBRSxNQUFlO0lBQ3JCOztPQUVHO0lBQ0gsU0FBUyxFQUFFLFdBQW9CO0lBQy9COztPQUVHO0lBQ0gsUUFBUSxFQUFFLFVBQW1CO0lBQzdCOztPQUVHO0lBQ0gsS0FBSyxFQUFFLE9BQWdCO0lBQ3ZCOztPQUVHO0lBQ0gsTUFBTSxFQUFFLFFBQWlCO0lBQ3pCOztPQUVHO0lBQ0gsZ0JBQWdCLEVBQUUsa0JBQTJCO0lBQzdDOztPQUVHO0lBQ0gsS0FBSyxFQUFFLE9BQWdCO0lBQ3ZCOztPQUVHO0lBQ0gsUUFBUSxFQUFFLFVBQW1CO0lBRTdCOztPQUVHO0lBQ0gsYUFBYSxFQUFFLGVBQXdCO0lBQ3ZDOztPQUVHO0lBQ0gsU0FBUyxFQUFFLFdBQW9CO0NBQ3ZCLENBQUM7QUEwS1gsSUFBWSxnQkFFWDtBQUZELFdBQVksZ0JBQWdCO0lBQzFCLHlDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFGVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQUUzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMgYXMgQmFzZVNpZ25UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gYXMgQmFzZVRyYW5zYWN0aW9uRXhwbGFuYXRpb24sXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZVR4SW5mbywgRGVjb2RlZFVuc2lnbmVkVHgsIFR5cGVSZWdpc3RyeSB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLWNvcmUvbGliL3R5cGVzJztcbmltcG9ydCB7IEFyZ3MgfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1jb3JlL2xpYi90eXBlcy9tZXRob2QnO1xuXG5leHBvcnQgeyBIZXhTdHJpbmcgfSBmcm9tICdAcG9sa2Fkb3QvdXRpbC90eXBlcyc7XG5cbi8qKlxuICogU2VjdGlvbiBuYW1lcyBmb3IgdGhlIHRyYW5zYWN0aW9uIG1ldGhvZHMuXG4gKi9cbmV4cG9ydCBlbnVtIFNlY3Rpb25OYW1lcyB7XG4gIFByb3h5ID0gJ3Byb3h5Jyxcbn1cblxuLyoqXG4gKiBNZXRob2QgbmFtZXMgZm9yIHRoZSB0cmFuc2FjdGlvbiBtZXRob2QuIE5hbWVzIGNoYW5nZSBiYXNlZCBvbiB0aGUgdHlwZSBvZiB0cmFuc2FjdGlvbiBlLmcgJ2JvbmQnIGZvciB0aGUgc3Rha2luZyB0cmFuc2FjdGlvblxuICpcbiAqIFRoaXMgaXMgaW1wbGVtZW50ZWQgYXMgYSBjb25zdCBvYmplY3Qgd2l0aCBzdHJpbmcgbGl0ZXJhbHMgdG8gYWxsb3cgZm9yIGV4dGVuc2lvbiBpbiBkZXJpdmVkIG1vZHVsZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBNZXRob2ROYW1lcyA9IHtcbiAgLyoqXG4gICAqIFRyYW5zZmVyIHRoZSBlbnRpcmUgdHJhbnNmZXJhYmxlIGJhbGFuY2UgZnJvbSB0aGUgY2FsbGVyIGFjY291bnQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9wb2xrYWRvdC5qcy5vcmcvZG9jcy9zdWJzdHJhdGUvZXh0cmluc2ljcy8jdHJhbnNmZXJhbGxkZXN0LW11bHRpYWRkcmVzcy1rZWVwX2FsaXZlLWJvb2xcbiAgICovXG4gIFRyYW5zZmVyQWxsOiAndHJhbnNmZXJBbGwnIGFzIGNvbnN0LFxuICAvKipcbiAgICogU2FtZSBhcyB0aGUgdHJhbnNmZXIgY2FsbCwgYnV0IHdpdGggYSBjaGVjayB0aGF0IHRoZSB0cmFuc2ZlciB3aWxsIG5vdCBraWxsIHRoZSBvcmlnaW4gYWNjb3VudC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3BvbGthZG90LmpzLm9yZy9kb2NzL3N1YnN0cmF0ZS9leHRyaW5zaWNzLyN0cmFuc2ZlcmtlZXBhbGl2ZWRlc3QtbXVsdGlhZGRyZXNzLXZhbHVlLWNvbXBhY3R1MTI4XG4gICAqL1xuICBUcmFuc2ZlcktlZXBBbGl2ZTogJ3RyYW5zZmVyS2VlcEFsaXZlJyBhcyBjb25zdCxcbiAgLyoqXG4gICAqIFRyYW5zZmVyIGZ1bmRzIHdpdGggYW4gb3B0aW9uYWwgbWVtbyBhdHRhY2hlZC5cbiAgICogVGhlIG1lbW8gYWxsb3dzIGFkZGluZyBjb250ZXh0IG9yIG1ldGFkYXRhIHRvIHRoZSB0cmFuc2FjdGlvbiwgY29tbW9ubHkgdXNlZCBmb3IgcmVjb3Jka2VlcGluZyBvciBpZGVudGlmaWNhdGlvbi5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RldmVsb3BlcnMucG9seW1lc2gubmV0d29yay9zZGstZG9jcy9lbnVtcy9HZW5lcmF0ZWQvVHlwZXMvQmFsYW5jZXNUeC8jdHJhbnNmZXJ3aXRobWVtb1xuICAgKi9cbiAgVHJhbnNmZXJXaXRoTWVtbzogJ3RyYW5zZmVyV2l0aE1lbW8nIGFzIGNvbnN0LFxuICBBZGRTdGFrZTogJ2FkZFN0YWtlJyBhcyBjb25zdCxcbiAgUmVtb3ZlU3Rha2U6ICdyZW1vdmVTdGFrZScgYXMgY29uc3QsXG4gIC8qKlxuICAgKiBUYWtlIHRoZSBvcmlnaW4gYWNjb3VudCBhcyBhIHN0YXNoIGFuZCBsb2NrIHVwIHZhbHVlIG9mIGl0cyBiYWxhbmNlLlxuICAgKi9cbiAgQm9uZDogJ2JvbmQnIGFzIGNvbnN0LFxuICAvKipcbiAgICogQWRkIHNvbWUgZXh0cmEgYW1vdW50IHRoYXQgaGF2ZSBhcHBlYXJlZCBpbiB0aGUgc3Rhc2ggZnJlZV9iYWxhbmNlIGludG8gdGhlIGJhbGFuY2UgdXAgZm9yIHN0YWtpbmcuXG4gICAqL1xuICBCb25kRXh0cmE6ICdib25kRXh0cmEnIGFzIGNvbnN0LFxuICAvKipcbiAgICogRGVjbGFyZSB0aGUgZGVzaXJlIHRvIG5vbWluYXRlIHRhcmdldHMgZm9yIHRoZSBvcmlnaW4gY29udHJvbGxlci5cbiAgICovXG4gIE5vbWluYXRlOiAnbm9taW5hdGUnIGFzIGNvbnN0LFxuICAvKipcbiAgICogRGVjbGFyZSBubyBkZXNpcmUgdG8gZWl0aGVyIHZhbGlkYXRlIG9yIG5vbWluYXRlLlxuICAgKi9cbiAgQ2hpbGw6ICdjaGlsbCcgYXMgY29uc3QsXG4gIC8qKlxuICAgKiBTY2hlZHVsZSBhIHBvcnRpb24gb2YgdGhlIHN0YXNoIHRvIGJlIHVubG9ja2VkIHJlYWR5IGZvciB0cmFuc2ZlciBvdXQgYWZ0ZXIgdGhlIGJvbmQgcGVyaW9kIGVuZHMuXG4gICAqL1xuICBVbmJvbmQ6ICd1bmJvbmQnIGFzIGNvbnN0LFxuICAvKipcbiAgICogUmVtb3ZlIGFueSB1bmxvY2tlZCBjaHVua3MgZnJvbSB0aGUgdW5sb2NraW5nIHF1ZXVlIGZyb20gb3VyIG1hbmFnZW1lbnQuXG4gICAqL1xuICBXaXRoZHJhd1VuYm9uZGVkOiAnd2l0aGRyYXdVbmJvbmRlZCcgYXMgY29uc3QsXG4gIC8qKlxuICAgKiBTZW5kIGEgYmF0Y2ggb2YgZGlzcGF0Y2ggY2FsbHMuXG4gICAqL1xuICBCYXRjaDogJ2JhdGNoJyBhcyBjb25zdCxcbiAgLyoqXG4gICAqIFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscyBhbmQgYXRvbWljYWxseSBleGVjdXRlIHRoZW0uXG4gICAqL1xuICBCYXRjaEFsbDogJ2JhdGNoQWxsJyBhcyBjb25zdCxcblxuICAvKipcbiAgICogVHJhbnNmZXIgc3Rha2UgZnJvbSBvbmUgdmFsaWRhdG9yIHRvIGFub3RoZXIuXG4gICAqL1xuICBUcmFuc2ZlclN0YWtlOiAndHJhbnNmZXJTdGFrZScgYXMgY29uc3QsXG4gIC8qKlxuICAgKiBNb3ZlIHN0YWtlIGZyb20gb25lIGhvdGtleSB0byBhbm90aGVyLlxuICAgKi9cbiAgTW92ZVN0YWtlOiAnbW92ZVN0YWtlJyBhcyBjb25zdCxcbn0gYXMgY29uc3Q7XG5cbi8qKlxuICogVHlwZSByZXByZXNlbnRpbmcgdGhlIGtleXMgb2YgdGhlIE1ldGhvZE5hbWVzIG9iamVjdFxuICovXG5leHBvcnQgdHlwZSBNZXRob2ROYW1lc1R5cGUgPSBrZXlvZiB0eXBlb2YgTWV0aG9kTmFtZXM7XG5cbi8qKlxuICogVHlwZSByZXByZXNlbnRpbmcgdGhlIHZhbHVlcyBvZiB0aGUgTWV0aG9kTmFtZXMgb2JqZWN0XG4gKi9cbmV4cG9ydCB0eXBlIE1ldGhvZE5hbWVzVmFsdWVzID0gKHR5cGVvZiBNZXRob2ROYW1lcylbTWV0aG9kTmFtZXNUeXBlXTtcblxuLyoqXG4gKiBUaGUgdHJhbnNhY3Rpb24gZGF0YSByZXR1cm5lZCBmcm9tIHRoZSB0b0pzb24oKSBmdW5jdGlvbiBvZiBhIHRyYW5zYWN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHhEYXRhIHtcbiAgaWQ6IHN0cmluZztcbiAgc2VuZGVyOiBzdHJpbmc7XG4gIHJlZmVyZW5jZUJsb2NrOiBzdHJpbmc7XG4gIGJsb2NrTnVtYmVyOiBudW1iZXI7XG4gIGdlbmVzaXNIYXNoOiBzdHJpbmc7XG4gIG5vbmNlOiBudW1iZXI7XG4gIHNwZWNWZXJzaW9uOiBudW1iZXI7XG4gIHRyYW5zYWN0aW9uVmVyc2lvbjogbnVtYmVyO1xuICBjaGFpbk5hbWU6IHN0cmluZztcbiAgbWV0aG9kPzogc3RyaW5nO1xuICBzcGVjTmFtZT86IHN0cmluZztcbiAgYW1vdW50Pzogc3RyaW5nO1xuICB0bz86IHN0cmluZztcbiAgdGlwPzogbnVtYmVyO1xuICBlcmFQZXJpb2Q/OiBudW1iZXI7XG4gIHBheWVlPzogc3RyaW5nO1xuICBrZWVwQWxpdmU/OiBib29sZWFuO1xuICBuZXR1aWQ/OiBzdHJpbmc7XG4gIG51bVNsYXNoaW5nU3BhbnM/OiBudW1iZXI7XG4gIGJhdGNoQ2FsbHM/OiBCYXRjaENhbGxPYmplY3RbXTtcbiAgbWVtbz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUcmFuc2FjdGlvbiBtZXRob2Qgc3BlY2lmaWMgYXJnc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZmVyQXJncyB7XG4gIGRlc3Q6IHsgaWQ6IHN0cmluZyB9O1xuICB2YWx1ZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRyYW5zYWN0aW9uIG1ldGhvZCBzcGVjaWZpYyBhcmdzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNmZXJBbGxBcmdzIHtcbiAgZGVzdDogeyBpZDogc3RyaW5nIH07XG4gIGtlZXBBbGl2ZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2ZlcldpdGhNZW1vQXJncyBleHRlbmRzIEFyZ3Mge1xuICBkZXN0OiB7IGlkOiBzdHJpbmcgfTtcbiAgdmFsdWU6IHN0cmluZztcbiAgbWVtbzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZFN0YWtlQXJncyBleHRlbmRzIEFyZ3Mge1xuICBhbW91bnRTdGFrZWQ6IHN0cmluZztcbiAgaG90a2V5OiBzdHJpbmc7XG4gIG5ldHVpZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlbW92ZVN0YWtlQXJncyBleHRlbmRzIEFyZ3Mge1xuICBhbW91bnRVbnN0YWtlZDogc3RyaW5nO1xuICBob3RrZXk6IHN0cmluZztcbiAgbmV0dWlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9uZEFyZ3MgZXh0ZW5kcyBBcmdzIHtcbiAgdmFsdWU6IHN0cmluZztcbiAgY29udHJvbGxlcjogc3RyaW5nO1xuICBwYXllZTogc3RyaW5nIHwgeyBBY2NvdW50OiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCb25kRXh0cmFBcmdzIGV4dGVuZHMgQXJncyB7XG4gIG1heEFkZGl0aW9uYWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOb21pbmF0ZUFyZ3MgZXh0ZW5kcyBBcmdzIHtcbiAgdGFyZ2V0czogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hpbGxBcmdzIGV4dGVuZHMgQXJncyB7XG4gIFtrZXk6IHN0cmluZ106IG5ldmVyOyAvLyBDaGlsbCBoYXMgbm8gYXJndW1lbnRzXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVW5ib25kQXJncyBleHRlbmRzIEFyZ3Mge1xuICB2YWx1ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhkcmF3VW5ib25kZWRBcmdzIGV4dGVuZHMgQXJncyB7XG4gIG51bVNsYXNoaW5nU3BhbnM6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXRjaENhbGxPYmplY3Qge1xuICBtZXRob2Q6IHN0cmluZztcbiAgYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmF0Y2hBcmdzIHtcbiAgY2FsbHM6IEJhdGNoQ2FsbE9iamVjdFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZmVyU3Rha2VBcmdzIGV4dGVuZHMgQXJncyB7XG4gIGRlc3RpbmF0aW9uQ29sZGtleTogc3RyaW5nO1xuICBob3RrZXk6IHN0cmluZztcbiAgb3JpZ2luTmV0dWlkOiBzdHJpbmc7XG4gIGRlc3RpbmF0aW9uTmV0dWlkOiBzdHJpbmc7XG4gIGFscGhhQW1vdW50OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW92ZVN0YWtlQXJncyBleHRlbmRzIEFyZ3Mge1xuICBvcmlnaW5Ib3RrZXk6IHN0cmluZztcbiAgZGVzdGluYXRpb25Ib3RrZXk6IHN0cmluZztcbiAgb3JpZ2luTmV0dWlkOiBzdHJpbmc7XG4gIGRlc3RpbmF0aW9uTmV0dWlkOiBzdHJpbmc7XG4gIGFscGhhQW1vdW50OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVjb2RlZCBUeE1ldGhvZCBmcm9tIGEgdHJhbnNhY3Rpb24gaGV4XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHhNZXRob2Qge1xuICBhcmdzOlxuICAgIHwgVHJhbnNmZXJBcmdzXG4gICAgfCBUcmFuc2ZlckFsbEFyZ3NcbiAgICB8IEFkZFN0YWtlQXJnc1xuICAgIHwgUmVtb3ZlU3Rha2VBcmdzXG4gICAgfCBCb25kQXJnc1xuICAgIHwgQm9uZEV4dHJhQXJnc1xuICAgIHwgTm9taW5hdGVBcmdzXG4gICAgfCBDaGlsbEFyZ3NcbiAgICB8IFVuYm9uZEFyZ3NcbiAgICB8IFdpdGhkcmF3VW5ib25kZWRBcmdzXG4gICAgfCBCYXRjaEFyZ3NcbiAgICB8IFRyYW5zZmVyU3Rha2VBcmdzXG4gICAgfCBNb3ZlU3Rha2VBcmdzO1xuICBuYW1lOiBNZXRob2ROYW1lc1ZhbHVlcztcbiAgcGFsbGV0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTW9kaWZpZWQgdW5zaWduZWQgdHJhbnNhY3Rpb24gd2l0aCBhIGRlY29kZWQgbWV0aG9kIGluc3RlYWQgb2YgYSBtZXRob2QgaGV4XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVjb2RlZFR4IGV4dGVuZHMgT21pdDxEZWNvZGVkVW5zaWduZWRUeCwgJ21ldGhvZCc+IHtcbiAgbWV0aG9kOiBUeE1ldGhvZDtcbn1cblxuLyoqXG4gKiBCYXNlIHRyYW5zYWN0aW9uIGluZm8gc2hhcmVkIGFjcm9zcyBhbGwgdHlwZXMgb2YgdHJhbnNhY3Rpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQmFzZVR4SW5mbyB7XG4gIGJhc2VUeEluZm86IEJhc2VUeEluZm87XG4gIG9wdGlvbnM6IHtcbiAgICBtZXRhZGF0YVJwYzogYDB4JHtzdHJpbmd9YDtcbiAgICByZWdpc3RyeTogVHlwZVJlZ2lzdHJ5O1xuICAgIGlzSW1tb3J0YWxFcmE/OiBib29sZWFuO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gIHR5cGU6IFRyYW5zYWN0aW9uVHlwZTtcbiAgcGF5ZWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIFRyYW5zYWN0aW9uVHlwZXMge1xuICBUUkFOU0ZFUiA9ICd0cmFuc2ZlcicsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWF0ZXJpYWwge1xuICBnZW5lc2lzSGFzaDogc3RyaW5nO1xuICBjaGFpbk5hbWU6IHN0cmluZztcbiAgc3BlY05hbWU6IHN0cmluZztcbiAgc3BlY1ZlcnNpb246IG51bWJlcjtcbiAgdHhWZXJzaW9uOiBudW1iZXI7XG4gIG1ldGFkYXRhOiBgMHgke3N0cmluZ31gO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMgZXh0ZW5kcyBCYXNlU2lnblRyYW5zYWN0aW9uT3B0aW9ucyB7XG4gIHR4UHJlYnVpbGQ6IFRyYW5zYWN0aW9uUHJlYnVpbGQ7XG4gIHBydjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uUHJlYnVpbGQge1xuICB0eEhleDogc3RyaW5nO1xuICB0cmFuc2FjdGlvbjogVHhEYXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4cGxhaW5UcmFuc2FjdGlvbk9wdGlvbnMge1xuICB0eFByZWJ1aWxkOiBUcmFuc2FjdGlvblByZWJ1aWxkO1xuICBwdWJsaWNLZXk6IHN0cmluZztcbiAgZmVlSW5mbzoge1xuICAgIGZlZTogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZlcmlmaWVkVHJhbnNhY3Rpb25QYXJhbWV0ZXJzIHtcbiAgdHhIZXg6IHN0cmluZztcbiAgcHJ2OiBzdHJpbmc7XG59XG4iXX0=
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVVBOztHQUVHO0FBQ0gsSUFBWSxZQUVYO0FBRkQsV0FBWSxZQUFZO0lBQ3RCLCtCQUFlLENBQUE7QUFDakIsQ0FBQyxFQUZXLFlBQVksNEJBQVosWUFBWSxRQUV2QjtBQUVEOzs7O0dBSUc7QUFDVSxRQUFBLFdBQVcsR0FBRztJQUN6Qjs7OztPQUlHO0lBQ0gsV0FBVyxFQUFFLGFBQXNCO0lBQ25DOzs7O09BSUc7SUFDSCxpQkFBaUIsRUFBRSxtQkFBNEI7SUFDL0M7Ozs7O09BS0c7SUFDSCxnQkFBZ0IsRUFBRSxrQkFBMkI7SUFDN0MsUUFBUSxFQUFFLFVBQW1CO0lBQzdCLFdBQVcsRUFBRSxhQUFzQjtJQUNuQzs7T0FFRztJQUNILElBQUksRUFBRSxNQUFlO0lBQ3JCOztPQUVHO0lBQ0gsU0FBUyxFQUFFLFdBQW9CO0lBQy9COztPQUVHO0lBQ0gsUUFBUSxFQUFFLFVBQW1CO0lBQzdCOztPQUVHO0lBQ0gsS0FBSyxFQUFFLE9BQWdCO0lBQ3ZCOztPQUVHO0lBQ0gsTUFBTSxFQUFFLFFBQWlCO0lBQ3pCOztPQUVHO0lBQ0gsZ0JBQWdCLEVBQUUsa0JBQTJCO0lBQzdDOztPQUVHO0lBQ0gsS0FBSyxFQUFFLE9BQWdCO0lBQ3ZCOztPQUVHO0lBQ0gsUUFBUSxFQUFFLFVBQW1CO0lBRTdCOztPQUVHO0lBQ0gsYUFBYSxFQUFFLGVBQXdCO0lBQ3ZDOztPQUVHO0lBQ0gsU0FBUyxFQUFFLFdBQW9CO0lBQy9COztPQUVHO0lBQ0gsbUJBQW1CLEVBQUUscUJBQThCO0NBQzNDLENBQUM7QUErS1gsSUFBWSxnQkFFWDtBQUZELFdBQVksZ0JBQWdCO0lBQzFCLHlDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFGVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQUUzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMgYXMgQmFzZVNpZ25UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gYXMgQmFzZVRyYW5zYWN0aW9uRXhwbGFuYXRpb24sXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZVR4SW5mbywgRGVjb2RlZFVuc2lnbmVkVHgsIFR5cGVSZWdpc3RyeSB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLWNvcmUvbGliL3R5cGVzJztcbmltcG9ydCB7IEFyZ3MgfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1jb3JlL2xpYi90eXBlcy9tZXRob2QnO1xuXG5leHBvcnQgeyBIZXhTdHJpbmcgfSBmcm9tICdAcG9sa2Fkb3QvdXRpbC90eXBlcyc7XG5cbi8qKlxuICogU2VjdGlvbiBuYW1lcyBmb3IgdGhlIHRyYW5zYWN0aW9uIG1ldGhvZHMuXG4gKi9cbmV4cG9ydCBlbnVtIFNlY3Rpb25OYW1lcyB7XG4gIFByb3h5ID0gJ3Byb3h5Jyxcbn1cblxuLyoqXG4gKiBNZXRob2QgbmFtZXMgZm9yIHRoZSB0cmFuc2FjdGlvbiBtZXRob2QuIE5hbWVzIGNoYW5nZSBiYXNlZCBvbiB0aGUgdHlwZSBvZiB0cmFuc2FjdGlvbiBlLmcgJ2JvbmQnIGZvciB0aGUgc3Rha2luZyB0cmFuc2FjdGlvblxuICpcbiAqIFRoaXMgaXMgaW1wbGVtZW50ZWQgYXMgYSBjb25zdCBvYmplY3Qgd2l0aCBzdHJpbmcgbGl0ZXJhbHMgdG8gYWxsb3cgZm9yIGV4dGVuc2lvbiBpbiBkZXJpdmVkIG1vZHVsZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBNZXRob2ROYW1lcyA9IHtcbiAgLyoqXG4gICAqIFRyYW5zZmVyIHRoZSBlbnRpcmUgdHJhbnNmZXJhYmxlIGJhbGFuY2UgZnJvbSB0aGUgY2FsbGVyIGFjY291bnQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9wb2xrYWRvdC5qcy5vcmcvZG9jcy9zdWJzdHJhdGUvZXh0cmluc2ljcy8jdHJhbnNmZXJhbGxkZXN0LW11bHRpYWRkcmVzcy1rZWVwX2FsaXZlLWJvb2xcbiAgICovXG4gIFRyYW5zZmVyQWxsOiAndHJhbnNmZXJBbGwnIGFzIGNvbnN0LFxuICAvKipcbiAgICogU2FtZSBhcyB0aGUgdHJhbnNmZXIgY2FsbCwgYnV0IHdpdGggYSBjaGVjayB0aGF0IHRoZSB0cmFuc2ZlciB3aWxsIG5vdCBraWxsIHRoZSBvcmlnaW4gYWNjb3VudC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3BvbGthZG90LmpzLm9yZy9kb2NzL3N1YnN0cmF0ZS9leHRyaW5zaWNzLyN0cmFuc2ZlcmtlZXBhbGl2ZWRlc3QtbXVsdGlhZGRyZXNzLXZhbHVlLWNvbXBhY3R1MTI4XG4gICAqL1xuICBUcmFuc2ZlcktlZXBBbGl2ZTogJ3RyYW5zZmVyS2VlcEFsaXZlJyBhcyBjb25zdCxcbiAgLyoqXG4gICAqIFRyYW5zZmVyIGZ1bmRzIHdpdGggYW4gb3B0aW9uYWwgbWVtbyBhdHRhY2hlZC5cbiAgICogVGhlIG1lbW8gYWxsb3dzIGFkZGluZyBjb250ZXh0IG9yIG1ldGFkYXRhIHRvIHRoZSB0cmFuc2FjdGlvbiwgY29tbW9ubHkgdXNlZCBmb3IgcmVjb3Jka2VlcGluZyBvciBpZGVudGlmaWNhdGlvbi5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RldmVsb3BlcnMucG9seW1lc2gubmV0d29yay9zZGstZG9jcy9lbnVtcy9HZW5lcmF0ZWQvVHlwZXMvQmFsYW5jZXNUeC8jdHJhbnNmZXJ3aXRobWVtb1xuICAgKi9cbiAgVHJhbnNmZXJXaXRoTWVtbzogJ3RyYW5zZmVyV2l0aE1lbW8nIGFzIGNvbnN0LFxuICBBZGRTdGFrZTogJ2FkZFN0YWtlJyBhcyBjb25zdCxcbiAgUmVtb3ZlU3Rha2U6ICdyZW1vdmVTdGFrZScgYXMgY29uc3QsXG4gIC8qKlxuICAgKiBUYWtlIHRoZSBvcmlnaW4gYWNjb3VudCBhcyBhIHN0YXNoIGFuZCBsb2NrIHVwIHZhbHVlIG9mIGl0cyBiYWxhbmNlLlxuICAgKi9cbiAgQm9uZDogJ2JvbmQnIGFzIGNvbnN0LFxuICAvKipcbiAgICogQWRkIHNvbWUgZXh0cmEgYW1vdW50IHRoYXQgaGF2ZSBhcHBlYXJlZCBpbiB0aGUgc3Rhc2ggZnJlZV9iYWxhbmNlIGludG8gdGhlIGJhbGFuY2UgdXAgZm9yIHN0YWtpbmcuXG4gICAqL1xuICBCb25kRXh0cmE6ICdib25kRXh0cmEnIGFzIGNvbnN0LFxuICAvKipcbiAgICogRGVjbGFyZSB0aGUgZGVzaXJlIHRvIG5vbWluYXRlIHRhcmdldHMgZm9yIHRoZSBvcmlnaW4gY29udHJvbGxlci5cbiAgICovXG4gIE5vbWluYXRlOiAnbm9taW5hdGUnIGFzIGNvbnN0LFxuICAvKipcbiAgICogRGVjbGFyZSBubyBkZXNpcmUgdG8gZWl0aGVyIHZhbGlkYXRlIG9yIG5vbWluYXRlLlxuICAgKi9cbiAgQ2hpbGw6ICdjaGlsbCcgYXMgY29uc3QsXG4gIC8qKlxuICAgKiBTY2hlZHVsZSBhIHBvcnRpb24gb2YgdGhlIHN0YXNoIHRvIGJlIHVubG9ja2VkIHJlYWR5IGZvciB0cmFuc2ZlciBvdXQgYWZ0ZXIgdGhlIGJvbmQgcGVyaW9kIGVuZHMuXG4gICAqL1xuICBVbmJvbmQ6ICd1bmJvbmQnIGFzIGNvbnN0LFxuICAvKipcbiAgICogUmVtb3ZlIGFueSB1bmxvY2tlZCBjaHVua3MgZnJvbSB0aGUgdW5sb2NraW5nIHF1ZXVlIGZyb20gb3VyIG1hbmFnZW1lbnQuXG4gICAqL1xuICBXaXRoZHJhd1VuYm9uZGVkOiAnd2l0aGRyYXdVbmJvbmRlZCcgYXMgY29uc3QsXG4gIC8qKlxuICAgKiBTZW5kIGEgYmF0Y2ggb2YgZGlzcGF0Y2ggY2FsbHMuXG4gICAqL1xuICBCYXRjaDogJ2JhdGNoJyBhcyBjb25zdCxcbiAgLyoqXG4gICAqIFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscyBhbmQgYXRvbWljYWxseSBleGVjdXRlIHRoZW0uXG4gICAqL1xuICBCYXRjaEFsbDogJ2JhdGNoQWxsJyBhcyBjb25zdCxcblxuICAvKipcbiAgICogVHJhbnNmZXIgc3Rha2UgZnJvbSBvbmUgdmFsaWRhdG9yIHRvIGFub3RoZXIuXG4gICAqL1xuICBUcmFuc2ZlclN0YWtlOiAndHJhbnNmZXJTdGFrZScgYXMgY29uc3QsXG4gIC8qKlxuICAgKiBNb3ZlIHN0YWtlIGZyb20gb25lIGhvdGtleSB0byBhbm90aGVyLlxuICAgKi9cbiAgTW92ZVN0YWtlOiAnbW92ZVN0YWtlJyBhcyBjb25zdCxcbiAgLyoqXG4gICAqIENsYWltIHJvb3QgbmV0d29yayByZXdhcmRzIHdpdGggYSBob3RrZXkuXG4gICAqL1xuICBDbGFpbVJvb3RXaXRoSG90a2V5OiAnY2xhaW1Sb290V2l0aEhvdGtleScgYXMgY29uc3QsXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIFR5cGUgcmVwcmVzZW50aW5nIHRoZSBrZXlzIG9mIHRoZSBNZXRob2ROYW1lcyBvYmplY3RcbiAqL1xuZXhwb3J0IHR5cGUgTWV0aG9kTmFtZXNUeXBlID0ga2V5b2YgdHlwZW9mIE1ldGhvZE5hbWVzO1xuXG4vKipcbiAqIFR5cGUgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZXMgb2YgdGhlIE1ldGhvZE5hbWVzIG9iamVjdFxuICovXG5leHBvcnQgdHlwZSBNZXRob2ROYW1lc1ZhbHVlcyA9ICh0eXBlb2YgTWV0aG9kTmFtZXMpW01ldGhvZE5hbWVzVHlwZV07XG5cbi8qKlxuICogVGhlIHRyYW5zYWN0aW9uIGRhdGEgcmV0dXJuZWQgZnJvbSB0aGUgdG9Kc29uKCkgZnVuY3Rpb24gb2YgYSB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR4RGF0YSB7XG4gIGlkOiBzdHJpbmc7XG4gIHNlbmRlcjogc3RyaW5nO1xuICByZWZlcmVuY2VCbG9jazogc3RyaW5nO1xuICBibG9ja051bWJlcjogbnVtYmVyO1xuICBnZW5lc2lzSGFzaDogc3RyaW5nO1xuICBub25jZTogbnVtYmVyO1xuICBzcGVjVmVyc2lvbjogbnVtYmVyO1xuICB0cmFuc2FjdGlvblZlcnNpb246IG51bWJlcjtcbiAgY2hhaW5OYW1lOiBzdHJpbmc7XG4gIG1ldGhvZD86IHN0cmluZztcbiAgc3BlY05hbWU/OiBzdHJpbmc7XG4gIGFtb3VudD86IHN0cmluZztcbiAgdG8/OiBzdHJpbmc7XG4gIHRpcD86IG51bWJlcjtcbiAgZXJhUGVyaW9kPzogbnVtYmVyO1xuICBwYXllZT86IHN0cmluZztcbiAga2VlcEFsaXZlPzogYm9vbGVhbjtcbiAgbmV0dWlkPzogc3RyaW5nO1xuICBudW1TbGFzaGluZ1NwYW5zPzogbnVtYmVyO1xuICBiYXRjaENhbGxzPzogQmF0Y2hDYWxsT2JqZWN0W107XG4gIG1lbW8/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVHJhbnNhY3Rpb24gbWV0aG9kIHNwZWNpZmljIGFyZ3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFuc2ZlckFyZ3Mge1xuICBkZXN0OiB7IGlkOiBzdHJpbmcgfTtcbiAgdmFsdWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUcmFuc2FjdGlvbiBtZXRob2Qgc3BlY2lmaWMgYXJnc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZmVyQWxsQXJncyB7XG4gIGRlc3Q6IHsgaWQ6IHN0cmluZyB9O1xuICBrZWVwQWxpdmU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNmZXJXaXRoTWVtb0FyZ3MgZXh0ZW5kcyBBcmdzIHtcbiAgZGVzdDogeyBpZDogc3RyaW5nIH07XG4gIHZhbHVlOiBzdHJpbmc7XG4gIG1lbW86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRTdGFrZUFyZ3MgZXh0ZW5kcyBBcmdzIHtcbiAgYW1vdW50U3Rha2VkOiBzdHJpbmc7XG4gIGhvdGtleTogc3RyaW5nO1xuICBuZXR1aWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZW1vdmVTdGFrZUFyZ3MgZXh0ZW5kcyBBcmdzIHtcbiAgYW1vdW50VW5zdGFrZWQ6IHN0cmluZztcbiAgaG90a2V5OiBzdHJpbmc7XG4gIG5ldHVpZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvbmRBcmdzIGV4dGVuZHMgQXJncyB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGNvbnRyb2xsZXI6IHN0cmluZztcbiAgcGF5ZWU6IHN0cmluZyB8IHsgQWNjb3VudDogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9uZEV4dHJhQXJncyBleHRlbmRzIEFyZ3Mge1xuICBtYXhBZGRpdGlvbmFsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9taW5hdGVBcmdzIGV4dGVuZHMgQXJncyB7XG4gIHRhcmdldHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoaWxsQXJncyBleHRlbmRzIEFyZ3Mge1xuICBba2V5OiBzdHJpbmddOiBuZXZlcjsgLy8gQ2hpbGwgaGFzIG5vIGFyZ3VtZW50c1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVuYm9uZEFyZ3MgZXh0ZW5kcyBBcmdzIHtcbiAgdmFsdWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXaXRoZHJhd1VuYm9uZGVkQXJncyBleHRlbmRzIEFyZ3Mge1xuICBudW1TbGFzaGluZ1NwYW5zOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmF0Y2hDYWxsT2JqZWN0IHtcbiAgbWV0aG9kOiBzdHJpbmc7XG4gIGFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhdGNoQXJncyB7XG4gIGNhbGxzOiBCYXRjaENhbGxPYmplY3RbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2ZlclN0YWtlQXJncyBleHRlbmRzIEFyZ3Mge1xuICBkZXN0aW5hdGlvbkNvbGRrZXk6IHN0cmluZztcbiAgaG90a2V5OiBzdHJpbmc7XG4gIG9yaWdpbk5ldHVpZDogc3RyaW5nO1xuICBkZXN0aW5hdGlvbk5ldHVpZDogc3RyaW5nO1xuICBhbHBoYUFtb3VudDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vdmVTdGFrZUFyZ3MgZXh0ZW5kcyBBcmdzIHtcbiAgb3JpZ2luSG90a2V5OiBzdHJpbmc7XG4gIGRlc3RpbmF0aW9uSG90a2V5OiBzdHJpbmc7XG4gIG9yaWdpbk5ldHVpZDogc3RyaW5nO1xuICBkZXN0aW5hdGlvbk5ldHVpZDogc3RyaW5nO1xuICBhbHBoYUFtb3VudDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsYWltUm9vdFdpdGhIb3RrZXlBcmdzIGV4dGVuZHMgQXJncyB7XG4gIGhvdGtleTogc3RyaW5nO1xufVxuXG4vKipcbiAqIERlY29kZWQgVHhNZXRob2QgZnJvbSBhIHRyYW5zYWN0aW9uIGhleFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR4TWV0aG9kIHtcbiAgYXJnczpcbiAgICB8IFRyYW5zZmVyQXJnc1xuICAgIHwgVHJhbnNmZXJBbGxBcmdzXG4gICAgfCBBZGRTdGFrZUFyZ3NcbiAgICB8IFJlbW92ZVN0YWtlQXJnc1xuICAgIHwgQm9uZEFyZ3NcbiAgICB8IEJvbmRFeHRyYUFyZ3NcbiAgICB8IE5vbWluYXRlQXJnc1xuICAgIHwgQ2hpbGxBcmdzXG4gICAgfCBVbmJvbmRBcmdzXG4gICAgfCBXaXRoZHJhd1VuYm9uZGVkQXJnc1xuICAgIHwgQmF0Y2hBcmdzXG4gICAgfCBUcmFuc2ZlclN0YWtlQXJnc1xuICAgIHwgTW92ZVN0YWtlQXJnc1xuICAgIHwgQ2xhaW1Sb290V2l0aEhvdGtleUFyZ3M7XG4gIG5hbWU6IE1ldGhvZE5hbWVzVmFsdWVzO1xuICBwYWxsZXQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBNb2RpZmllZCB1bnNpZ25lZCB0cmFuc2FjdGlvbiB3aXRoIGEgZGVjb2RlZCBtZXRob2QgaW5zdGVhZCBvZiBhIG1ldGhvZCBoZXhcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWNvZGVkVHggZXh0ZW5kcyBPbWl0PERlY29kZWRVbnNpZ25lZFR4LCAnbWV0aG9kJz4ge1xuICBtZXRob2Q6IFR4TWV0aG9kO1xufVxuXG4vKipcbiAqIEJhc2UgdHJhbnNhY3Rpb24gaW5mbyBzaGFyZWQgYWNyb3NzIGFsbCB0eXBlcyBvZiB0cmFuc2FjdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVCYXNlVHhJbmZvIHtcbiAgYmFzZVR4SW5mbzogQmFzZVR4SW5mbztcbiAgb3B0aW9uczoge1xuICAgIG1ldGFkYXRhUnBjOiBgMHgke3N0cmluZ31gO1xuICAgIHJlZ2lzdHJ5OiBUeXBlUmVnaXN0cnk7XG4gICAgaXNJbW1vcnRhbEVyYT86IGJvb2xlYW47XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuICBwYXllZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gVHJhbnNhY3Rpb25UeXBlcyB7XG4gIFRSQU5TRkVSID0gJ3RyYW5zZmVyJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXRlcmlhbCB7XG4gIGdlbmVzaXNIYXNoOiBzdHJpbmc7XG4gIGNoYWluTmFtZTogc3RyaW5nO1xuICBzcGVjTmFtZTogc3RyaW5nO1xuICBzcGVjVmVyc2lvbjogbnVtYmVyO1xuICB0eFZlcnNpb246IG51bWJlcjtcbiAgbWV0YWRhdGE6IGAweCR7c3RyaW5nfWA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnblRyYW5zYWN0aW9uT3B0aW9ucyBleHRlbmRzIEJhc2VTaWduVHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhQcmVidWlsZDogVHJhbnNhY3Rpb25QcmVidWlsZDtcbiAgcHJ2OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25QcmVidWlsZCB7XG4gIHR4SGV4OiBzdHJpbmc7XG4gIHRyYW5zYWN0aW9uOiBUeERhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhwbGFpblRyYW5zYWN0aW9uT3B0aW9ucyB7XG4gIHR4UHJlYnVpbGQ6IFRyYW5zYWN0aW9uUHJlYnVpbGQ7XG4gIHB1YmxpY0tleTogc3RyaW5nO1xuICBmZWVJbmZvOiB7XG4gICAgZmVlOiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVyaWZpZWRUcmFuc2FjdGlvblBhcmFtZXRlcnMge1xuICB0eEhleDogc3RyaW5nO1xuICBwcnY6IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -9,4 +9,5 @@ export declare const StakeTransactionSchema: joi.ObjectSchema<any>;
|
|
|
9
9
|
export declare const UnstakeTransactionSchema: joi.ObjectSchema<any>;
|
|
10
10
|
export declare const TransferStakeTransactionSchema: joi.ObjectSchema<any>;
|
|
11
11
|
export declare const MoveStakeTransactionSchema: joi.ObjectSchema<any>;
|
|
12
|
+
export declare const ClaimRootWithHotkeyTransactionSchema: joi.ObjectSchema<any>;
|
|
12
13
|
//# sourceMappingURL=txnSchema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"txnSchema.d.ts","sourceRoot":"","sources":["../../../src/lib/txnSchema.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AAKtB,eAAO,MAAM,qBAAqB,uBAYhC,CAAC;AAEH,eAAO,MAAM,+BAA+B,uBAK1C,CAAC;AAEH,eAAO,MAAM,uBAAuB,uBAKlC,CAAC;AAEH,eAAO,MAAM,yBAAyB,uBAGpC,CAAC;AAEH,eAAO,MAAM,4BAA4B,uBAEvC,CAAC;AAEH,eAAO,MAAM,iCAAiC,uBAI5C,CAAC;AAEH,eAAO,MAAM,sBAAsB,uBAIjC,CAAC;AAEH,eAAO,MAAM,wBAAwB,uBAInC,CAAC;AAEH,eAAO,MAAM,8BAA8B,uBAMzC,CAAC;AAEH,eAAO,MAAM,0BAA0B,uBAMrC,CAAC"}
|
|
1
|
+
{"version":3,"file":"txnSchema.d.ts","sourceRoot":"","sources":["../../../src/lib/txnSchema.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AAKtB,eAAO,MAAM,qBAAqB,uBAYhC,CAAC;AAEH,eAAO,MAAM,+BAA+B,uBAK1C,CAAC;AAEH,eAAO,MAAM,uBAAuB,uBAKlC,CAAC;AAEH,eAAO,MAAM,yBAAyB,uBAGpC,CAAC;AAEH,eAAO,MAAM,4BAA4B,uBAEvC,CAAC;AAEH,eAAO,MAAM,iCAAiC,uBAI5C,CAAC;AAEH,eAAO,MAAM,sBAAsB,uBAIjC,CAAC;AAEH,eAAO,MAAM,wBAAwB,uBAInC,CAAC;AAEH,eAAO,MAAM,8BAA8B,uBAMzC,CAAC;AAEH,eAAO,MAAM,0BAA0B,uBAMrC,CAAC;AAEH,eAAO,MAAM,oCAAoC,uBAE/C,CAAC"}
|