@bitgo-beta/sdk-coin-sol 7.6.4-beta.723 → 7.6.4-beta.725
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/cjs/src/lib/index.d.ts +1 -0
- package/dist/cjs/src/lib/index.d.ts.map +1 -1
- package/dist/cjs/src/lib/index.js +5 -2
- package/dist/cjs/src/lib/serialization/compileTransactionMessage.d.ts +6 -0
- package/dist/cjs/src/lib/serialization/compileTransactionMessage.d.ts.map +1 -1
- package/dist/cjs/src/lib/serialization/compileTransactionMessage.js +7 -1
- package/dist/cjs/src/lib/transaction.d.ts.map +1 -1
- package/dist/cjs/src/lib/transaction.js +14 -1
- package/dist/cjs/src/lib/v1TransactionBuilder.d.ts +197 -0
- package/dist/cjs/src/lib/v1TransactionBuilder.d.ts.map +1 -0
- package/dist/cjs/src/lib/v1TransactionBuilder.js +436 -0
- package/dist/cjs/src/sol.d.ts.map +1 -1
- package/dist/cjs/src/sol.js +18 -6
- package/dist/cjs/test/unit/sol.js +221 -1
- package/dist/cjs/test/unit/transactionBuilder/v1TransactionBuilder.d.ts +2 -0
- package/dist/cjs/test/unit/transactionBuilder/v1TransactionBuilder.d.ts.map +1 -0
- package/dist/cjs/test/unit/transactionBuilder/v1TransactionBuilder.js +220 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/lib/index.d.ts +1 -0
- package/dist/esm/lib/index.d.ts.map +1 -1
- package/dist/esm/lib/index.js +2 -1
- package/dist/esm/lib/serialization/compileTransactionMessage.d.ts +6 -0
- package/dist/esm/lib/serialization/compileTransactionMessage.d.ts.map +1 -1
- package/dist/esm/lib/serialization/compileTransactionMessage.js +7 -1
- package/dist/esm/lib/transaction.d.ts.map +1 -1
- package/dist/esm/lib/transaction.js +14 -1
- package/dist/esm/lib/v1TransactionBuilder.d.ts +197 -0
- package/dist/esm/lib/v1TransactionBuilder.d.ts.map +1 -0
- package/dist/esm/lib/v1TransactionBuilder.js +428 -0
- package/dist/esm/sol.d.ts.map +1 -1
- package/dist/esm/sol.js +18 -6
- package/package.json +7 -7
|
@@ -14,6 +14,7 @@ export { StakingWithdrawBuilder } from './stakingWithdrawBuilder';
|
|
|
14
14
|
export { TokenTransferBuilder } from './tokenTransferBuilder';
|
|
15
15
|
export { Transaction } from './transaction';
|
|
16
16
|
export { TransactionBuilder } from './transactionBuilder';
|
|
17
|
+
export { V1TransactionBuilder, buildAdvanceNonceAccountInstruction } from './v1TransactionBuilder';
|
|
17
18
|
export { TransactionBuilderFactory } from './transactionBuilderFactory';
|
|
18
19
|
export { TransferBuilder } from './transferBuilder';
|
|
19
20
|
export { TransferBuilderV2 } from './transferBuilderV2';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAChG,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,+BAA+B,EAC/B,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtE,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,mCAAmC,EAAE,MAAM,wBAAwB,CAAC;AACnG,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAChG,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,+BAA+B,EAC/B,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtE,cAAc,iBAAiB,CAAC"}
|
|
@@ -36,7 +36,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
36
36
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.uiAmountToRaw = exports.rawToUiAmountString = exports.resolveTransferHookAccounts = exports.resolvePermissionlessThaw = exports.buildSolAccountConnection = exports.readMintExtensions = exports.parseMintExtensions = exports.mapModeledExtensions = exports.extensionTypeNames = exports.explainSolTransaction = exports.MessageBuilderFactory = exports.Utils = exports.Interface = exports.WalletInitializationBuilder = exports.TransferBuilderV2 = exports.TransferBuilder = exports.TransactionBuilderFactory = exports.TransactionBuilder = exports.Transaction = exports.TokenTransferBuilder = exports.StakingWithdrawBuilder = exports.StakingRawMsgAuthorizeBuilder = exports.StakingDelegateBuilder = exports.StakingDeactivateBuilder = exports.StakingAuthorizeBuilder = exports.StakingActivateBuilder = exports.KeyPair = exports.CustomInstructionBuilder = exports.ConfidentialTransferBuilder = exports.CloseAtaBuilder = exports.AtaInitializationBuilder = void 0;
|
|
39
|
+
exports.uiAmountToRaw = exports.rawToUiAmountString = exports.resolveTransferHookAccounts = exports.resolvePermissionlessThaw = exports.buildSolAccountConnection = exports.readMintExtensions = exports.parseMintExtensions = exports.mapModeledExtensions = exports.extensionTypeNames = exports.explainSolTransaction = exports.MessageBuilderFactory = exports.Utils = exports.Interface = exports.WalletInitializationBuilder = exports.TransferBuilderV2 = exports.TransferBuilder = exports.TransactionBuilderFactory = exports.buildAdvanceNonceAccountInstruction = exports.V1TransactionBuilder = exports.TransactionBuilder = exports.Transaction = exports.TokenTransferBuilder = exports.StakingWithdrawBuilder = exports.StakingRawMsgAuthorizeBuilder = exports.StakingDelegateBuilder = exports.StakingDeactivateBuilder = exports.StakingAuthorizeBuilder = exports.StakingActivateBuilder = exports.KeyPair = exports.CustomInstructionBuilder = exports.ConfidentialTransferBuilder = exports.CloseAtaBuilder = exports.AtaInitializationBuilder = void 0;
|
|
40
40
|
const Interface = __importStar(require("./iface"));
|
|
41
41
|
exports.Interface = Interface;
|
|
42
42
|
const Utils = __importStar(require("./utils"));
|
|
@@ -69,6 +69,9 @@ var transaction_1 = require("./transaction");
|
|
|
69
69
|
Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return transaction_1.Transaction; } });
|
|
70
70
|
var transactionBuilder_1 = require("./transactionBuilder");
|
|
71
71
|
Object.defineProperty(exports, "TransactionBuilder", { enumerable: true, get: function () { return transactionBuilder_1.TransactionBuilder; } });
|
|
72
|
+
var v1TransactionBuilder_1 = require("./v1TransactionBuilder");
|
|
73
|
+
Object.defineProperty(exports, "V1TransactionBuilder", { enumerable: true, get: function () { return v1TransactionBuilder_1.V1TransactionBuilder; } });
|
|
74
|
+
Object.defineProperty(exports, "buildAdvanceNonceAccountInstruction", { enumerable: true, get: function () { return v1TransactionBuilder_1.buildAdvanceNonceAccountInstruction; } });
|
|
72
75
|
var transactionBuilderFactory_1 = require("./transactionBuilderFactory");
|
|
73
76
|
Object.defineProperty(exports, "TransactionBuilderFactory", { enumerable: true, get: function () { return transactionBuilderFactory_1.TransactionBuilderFactory; } });
|
|
74
77
|
var transferBuilder_1 = require("./transferBuilder");
|
|
@@ -94,4 +97,4 @@ var scaledUiAmount_1 = require("./scaledUiAmount");
|
|
|
94
97
|
Object.defineProperty(exports, "rawToUiAmountString", { enumerable: true, get: function () { return scaledUiAmount_1.rawToUiAmountString; } });
|
|
95
98
|
Object.defineProperty(exports, "uiAmountToRaw", { enumerable: true, get: function () { return scaledUiAmount_1.uiAmountToRaw; } });
|
|
96
99
|
__exportStar(require("./serialization"), exports);
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFxQztBQXNCNUIsOEJBQVM7QUFyQmxCLCtDQUFpQztBQXFCYixzQkFBSztBQW5CekIsdUVBQXNFO0FBQTdELG9JQUFBLHdCQUF3QixPQUFBO0FBQ2pDLHFEQUFvRDtBQUEzQyxrSEFBQSxlQUFlLE9BQUE7QUFDeEIsNkVBQTRFO0FBQW5FLDBJQUFBLDJCQUEyQixPQUFBO0FBQ3BDLHVFQUFzRTtBQUE3RCxvSUFBQSx3QkFBd0IsT0FBQTtBQUNqQyxxQ0FBb0M7QUFBM0Isa0dBQUEsT0FBTyxPQUFBO0FBQ2hCLG1FQUFrRTtBQUF6RCxnSUFBQSxzQkFBc0IsT0FBQTtBQUMvQixxRUFBb0U7QUFBM0Qsa0lBQUEsdUJBQXVCLE9BQUE7QUFDaEMsdUVBQXNFO0FBQTdELG9JQUFBLHdCQUF3QixPQUFBO0FBQ2pDLG1FQUFrRTtBQUF6RCxnSUFBQSxzQkFBc0IsT0FBQTtBQUMvQixpRkFBZ0Y7QUFBdkUsOElBQUEsNkJBQTZCLE9BQUE7QUFDdEMsbUVBQWtFO0FBQXpELGdJQUFBLHNCQUFzQixPQUFBO0FBQy9CLCtEQUE4RDtBQUFyRCw0SEFBQSxvQkFBb0IsT0FBQTtBQUM3Qiw2Q0FBNEM7QUFBbkMsMEdBQUEsV0FBVyxPQUFBO0FBQ3BCLDJEQUEwRDtBQUFqRCx3SEFBQSxrQkFBa0IsT0FBQTtBQUMzQiwrREFBbUc7QUFBMUYsNEhBQUEsb0JBQW9CLE9BQUE7QUFBRSwySUFBQSxtQ0FBbUMsT0FBQTtBQUNsRSx5RUFBd0U7QUFBL0Qsc0lBQUEseUJBQXlCLE9BQUE7QUFDbEMscURBQW9EO0FBQTNDLGtIQUFBLGVBQWUsT0FBQTtBQUN4Qix5REFBd0Q7QUFBL0Msc0hBQUEsaUJBQWlCLE9BQUE7QUFDMUIsNkVBQTRFO0FBQW5FLDBJQUFBLDJCQUEyQixPQUFBO0FBRXBDLHVDQUFtRDtBQUExQyxpSEFBQSxxQkFBcUIsT0FBQTtBQUM5QixtRUFBZ0c7QUFBdkYsK0hBQUEscUJBQXFCLE9BQUE7QUFDOUIscURBTTJCO0FBSnpCLHFIQUFBLGtCQUFrQixPQUFBO0FBQ2xCLHVIQUFBLG9CQUFvQixPQUFBO0FBQ3BCLHNIQUFBLG1CQUFtQixPQUFBO0FBQ25CLHFIQUFBLGtCQUFrQixPQUFBO0FBRXBCLHVEQU00QjtBQUgxQiw2SEFBQSx5QkFBeUIsT0FBQTtBQUN6Qiw2SEFBQSx5QkFBeUIsT0FBQTtBQUN6QiwrSEFBQSwyQkFBMkIsT0FBQTtBQUU3QixtREFBc0U7QUFBN0QscUhBQUEsbUJBQW1CLE9BQUE7QUFBRSwrR0FBQSxhQUFhLE9BQUE7QUFDM0Msa0RBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgSW50ZXJmYWNlIGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCB7IEF0YUluaXRpYWxpemF0aW9uQnVpbGRlciB9IGZyb20gJy4vYXRhSW5pdGlhbGl6YXRpb25CdWlsZGVyJztcbmV4cG9ydCB7IENsb3NlQXRhQnVpbGRlciB9IGZyb20gJy4vY2xvc2VBdGFCdWlsZGVyJztcbmV4cG9ydCB7IENvbmZpZGVudGlhbFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vY29uZmlkZW50aWFsVHJhbnNmZXJCdWlsZGVyJztcbmV4cG9ydCB7IEN1c3RvbUluc3RydWN0aW9uQnVpbGRlciB9IGZyb20gJy4vY3VzdG9tSW5zdHJ1Y3Rpb25CdWlsZGVyJztcbmV4cG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuZXhwb3J0IHsgU3Rha2luZ0FjdGl2YXRlQnVpbGRlciB9IGZyb20gJy4vc3Rha2luZ0FjdGl2YXRlQnVpbGRlcic7XG5leHBvcnQgeyBTdGFraW5nQXV0aG9yaXplQnVpbGRlciB9IGZyb20gJy4vc3Rha2luZ0F1dGhvcml6ZUJ1aWxkZXInO1xuZXhwb3J0IHsgU3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyIH0gZnJvbSAnLi9zdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXInO1xuZXhwb3J0IHsgU3Rha2luZ0RlbGVnYXRlQnVpbGRlciB9IGZyb20gJy4vc3Rha2luZ0RlbGVnYXRlQnVpbGRlcic7XG5leHBvcnQgeyBTdGFraW5nUmF3TXNnQXV0aG9yaXplQnVpbGRlciB9IGZyb20gJy4vc3Rha2luZ1Jhd01zZ0F1dGhvcml6ZUJ1aWxkZXInO1xuZXhwb3J0IHsgU3Rha2luZ1dpdGhkcmF3QnVpbGRlciB9IGZyb20gJy4vc3Rha2luZ1dpdGhkcmF3QnVpbGRlcic7XG5leHBvcnQgeyBUb2tlblRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdG9rZW5UcmFuc2ZlckJ1aWxkZXInO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmV4cG9ydCB7IFYxVHJhbnNhY3Rpb25CdWlsZGVyLCBidWlsZEFkdmFuY2VOb25jZUFjY291bnRJbnN0cnVjdGlvbiB9IGZyb20gJy4vdjFUcmFuc2FjdGlvbkJ1aWxkZXInO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSc7XG5leHBvcnQgeyBUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zZmVyQnVpbGRlcic7XG5leHBvcnQgeyBUcmFuc2ZlckJ1aWxkZXJWMiB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyVjInO1xuZXhwb3J0IHsgV2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyIH0gZnJvbSAnLi93YWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXInO1xuZXhwb3J0IHsgSW50ZXJmYWNlLCBVdGlscyB9O1xuZXhwb3J0IHsgTWVzc2FnZUJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi9tZXNzYWdlcyc7XG5leHBvcnQgeyBleHBsYWluU29sVHJhbnNhY3Rpb24sIEV4cGxhaW5UcmFuc2FjdGlvbldhc21PcHRpb25zIH0gZnJvbSAnLi9leHBsYWluVHJhbnNhY3Rpb25XYXNtJztcbmV4cG9ydCB7XG4gIE1pbnRFeHRlbnNpb25SZWFkUmVzdWx0LFxuICBleHRlbnNpb25UeXBlTmFtZXMsXG4gIG1hcE1vZGVsZWRFeHRlbnNpb25zLFxuICBwYXJzZU1pbnRFeHRlbnNpb25zLFxuICByZWFkTWludEV4dGVuc2lvbnMsXG59IGZyb20gJy4vdG9rZW5FeHRlbnNpb25zJztcbmV4cG9ydCB7XG4gIFJlc29sdmVQZXJtaXNzaW9ubGVzc1RoYXdSZXN1bHQsXG4gIFNvbEFjY291bnRGZXRjaGVyLFxuICBidWlsZFNvbEFjY291bnRDb25uZWN0aW9uLFxuICByZXNvbHZlUGVybWlzc2lvbmxlc3NUaGF3LFxuICByZXNvbHZlVHJhbnNmZXJIb29rQWNjb3VudHMsXG59IGZyb20gJy4vdG9rZW4yMDIyUmVzb2x2ZSc7XG5leHBvcnQgeyByYXdUb1VpQW1vdW50U3RyaW5nLCB1aUFtb3VudFRvUmF3IH0gZnJvbSAnLi9zY2FsZWRVaUFtb3VudCc7XG5leHBvcnQgKiBmcm9tICcuL3NlcmlhbGl6YXRpb24nO1xuIl19
|
|
@@ -19,6 +19,12 @@ export interface TransactionConfig {
|
|
|
19
19
|
*
|
|
20
20
|
* @param args - version, instructions, fee payer, recent blockhash, and config
|
|
21
21
|
* @returns the serialized message bytes (v1 starts with the 0x81 version prefix)
|
|
22
|
+
*
|
|
23
|
+
* @note `recentBlockhash` accepts either a recent block hash or a durable nonce
|
|
24
|
+
* hash (both are opaque 32-byte base58 values in the v1 blockhash field). When
|
|
25
|
+
* a nonce hash is supplied, the caller MUST also include the
|
|
26
|
+
* `AdvanceNonceAccount` instruction (see `buildAdvanceNonceAccountInstruction`)
|
|
27
|
+
* in `instructions` - a bare nonce hash without the instruction is invalid.
|
|
22
28
|
*/
|
|
23
29
|
export declare function compileTransactionMessage(args: {
|
|
24
30
|
version: TransactionVersion;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compileTransactionMessage.d.ts","sourceRoot":"","sources":["../../../../../src/lib/serialization/compileTransactionMessage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAKpE,qFAAqF;AACrF,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,CAAC,CAAC;AAEvC;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAoLD
|
|
1
|
+
{"version":3,"file":"compileTransactionMessage.d.ts","sourceRoot":"","sources":["../../../../../src/lib/serialization/compileTransactionMessage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAKpE,qFAAqF;AACrF,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,CAAC,CAAC;AAEvC;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAoLD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,OAAO,EAAE,kBAAkB,CAAC;IAC5B,YAAY,EAAE,sBAAsB,EAAE,CAAC;IACvC,QAAQ,EAAE,SAAS,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,iBAAiB,CAAC;CACtC,GAAG,UAAU,CAqDb"}
|
|
@@ -161,6 +161,12 @@ function compileInstructions(instructions, orderedAccounts) {
|
|
|
161
161
|
*
|
|
162
162
|
* @param args - version, instructions, fee payer, recent blockhash, and config
|
|
163
163
|
* @returns the serialized message bytes (v1 starts with the 0x81 version prefix)
|
|
164
|
+
*
|
|
165
|
+
* @note `recentBlockhash` accepts either a recent block hash or a durable nonce
|
|
166
|
+
* hash (both are opaque 32-byte base58 values in the v1 blockhash field). When
|
|
167
|
+
* a nonce hash is supplied, the caller MUST also include the
|
|
168
|
+
* `AdvanceNonceAccount` instruction (see `buildAdvanceNonceAccountInstruction`)
|
|
169
|
+
* in `instructions` - a bare nonce hash without the instruction is invalid.
|
|
164
170
|
*/
|
|
165
171
|
function compileTransactionMessage(args) {
|
|
166
172
|
const { version, instructions, feePayer, recentBlockhash, transactionConfig } = args;
|
|
@@ -202,4 +208,4 @@ function compileTransactionMessage(args) {
|
|
|
202
208
|
compiledInstructions,
|
|
203
209
|
});
|
|
204
210
|
}
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZVRyYW5zYWN0aW9uTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VyaWFsaXphdGlvbi9jb21waWxlVHJhbnNhY3Rpb25NZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBK01BLDhEQTJEQztBQTFRRCxtREFBNkQ7QUFFN0QsaURBQXVFO0FBQ3ZFLCtDQUErRDtBQWlCL0Qsd0RBQXdEO0FBQ3hELE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQztBQUNuQixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFDbkIsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQztBQUUxQixNQUFNLHlCQUF5QixHQUFHLDZDQUE2QyxDQUFDO0FBQ2hGLE1BQU0sb0NBQW9DLEdBQUcsQ0FBQyxDQUFDO0FBQy9DLE1BQU0sb0NBQW9DLEdBQUcsQ0FBQyxDQUFDO0FBQy9DLE1BQU0sMEJBQTBCLEdBQUcsT0FBUyxDQUFDO0FBRTdDLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUN4QixNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFDdkIsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7QUFDNUIsTUFBTSw0QkFBNEIsR0FBRyxHQUFHLENBQUM7QUFFekMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFZLEVBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMzRSxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQVksRUFBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRXRFLDhFQUE4RTtBQUM5RSxNQUFNLGlCQUFpQixHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUU7SUFDaEQsU0FBUyxFQUFFLE9BQU87SUFDbEIsaUJBQWlC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LENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUNqRSxvQkFBb0I7S0FDckIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFB1YmxpY0tleSwgVHJhbnNhY3Rpb25JbnN0cnVjdGlvbiB9IGZyb20gJ0Bzb2xhbmEvd2ViMy5qcyc7XG5pbXBvcnQgeyBlbmNvZGVWMU1lc3NhZ2UsIFYxTWVzc2FnZUhlYWRlciB9IGZyb20gJy4vY29kZWNzL3YxL21lc3NhZ2UnO1xuaW1wb3J0IHsgZW5jb2RlQ29uZmlnTWFza0FuZFZhbHVlcyB9IGZyb20gJy4vY29kZWNzL3YxL2NvbmZpZyc7XG5pbXBvcnQgeyBDb21waWxlZEluc3RydWN0aW9uIH0gZnJvbSAnLi9jb2RlY3MvdjEvaW5zdHJ1Y3Rpb24nO1xuXG4vKiogU3VwcG9ydGVkIFNvbGFuYSB0cmFuc2FjdGlvbiB2ZXJzaW9ucy4gT25seSAxIChTSU1ELTAyOTYvMDM4NSkgaXMgaW1wbGVtZW50ZWQuICovXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvblZlcnNpb24gPSAwIHwgMTtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIHYxIHRyYW5zYWN0aW9uLCBtaXJyb3JpbmcgdGhlIHNoYXJlZCBzZGstY29yZSB0eXBlLlxuICogQWxsIHZhbHVlcyBhcmUgb3B0aW9uYWwgKG51bGwgPSB1bnNldCk7IHByaW9yaXR5RmVlIGlzIHRvdGFsIGxhbXBvcnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uQ29uZmlnIHtcbiAgY29tcHV0ZVVuaXRMaW1pdDogbnVtYmVyIHwgbnVsbDtcbiAgaGVhcFNpemU6IG51bWJlciB8IG51bGw7XG4gIGxvYWRlZEFjY291bnRzRGF0YVNpemVMaW1pdDogbnVtYmVyIHwgbnVsbDtcbiAgcHJpb3JpdHlGZWU6IG51bWJlciB8IG51bGw7IC8vIGxhbXBvcnRzICh0b3RhbClcbn1cblxuLy8gQWNjb3VudFJvbGUgYml0IHZhbHVlcyAobWlycm9yIEBzb2xhbmEvaW5zdHJ1Y3Rpb25zKS5cbmNvbnN0IFJFQURPTkxZID0gMDtcbmNvbnN0IFdSSVRBQkxFID0gMTtcbmNvbnN0IFJFQURPTkxZX1NJR05FUiA9IDI7XG5jb25zdCBXUklUQUJMRV9TSUdORVIgPSAzO1xuXG5jb25zdCBDT01QVVRFX0JVREdFVF9QUk9HUkFNX0lEID0gJ0NvbXB1dGVCdWRnZXQxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnO1xuY29uc3QgU0VUX0NPTVBVVEVfVU5JVF9MSU1JVF9ESVNDUklNSU5BVE9SID0gMjtcbmNvbnN0IFNFVF9DT01QVVRFX1VOSVRfUFJJQ0VfRElTQ1JJTUlOQVRPUiA9IDM7XG5jb25zdCBNSUNST19MQU1QT1JUU19QRVJfTEFNUE9SVCA9IDFfMDAwXzAwMDtcblxuY29uc3QgTUFYX0FDQ09VTlRTID0gNjQ7XG5jb25zdCBNQVhfU0lHTkVSUyA9IDEyO1xuY29uc3QgTUFYX0lOU1RSVUNUSU9OUyA9IDY0O1xuY29uc3QgTUFYX0FDQ09VTlRTX1BFUl9JTlNUUlVDVElPTiA9IDI1NTtcblxuY29uc3QgaXNTaWduZXIgPSAocm9sZTogbnVtYmVyKTogYm9vbGVhbiA9PiAocm9sZSAmIFJFQURPTkxZX1NJR05FUikgIT09IDA7XG5jb25zdCBpc1dyaXRhYmxlID0gKHJvbGU6IG51bWJlcik6IGJvb2xlYW4gPT4gKHJvbGUgJiBXUklUQUJMRSkgIT09IDA7XG5cbi8vIEFkZHJlc3Mgb3JkZXJpbmcgY29tcGFyYXRvciBtYXRjaGVzIEBzb2xhbmEvYWRkcmVzc2VzIGdldEFkZHJlc3NDb21wYXJhdG9yLlxuY29uc3QgYWRkcmVzc0NvbXBhcmF0b3IgPSBuZXcgSW50bC5Db2xsYXRvcignZW4nLCB7XG4gIGNhc2VGaXJzdDogJ2xvd2VyJyxcbiAgaWdub3JlUHVuY3R1YXRpb246IGZhbHNlLFxuICBsb2NhbGVNYXRjaGVyOiAnYmVzdCBmaXQnLFxuICBudW1lcmljOiBmYWxzZSxcbiAgc2Vuc2l0aXZpdHk6ICd2YXJpYW50JyxcbiAgdXNhZ2U6ICdzb3J0Jyxcbn0pLmNvbXBhcmU7XG5cbnR5cGUgQWNjb3VudE1ldGEgPSB7IGFkZHJlc3M6IHN0cmluZzsgcm9sZTogbnVtYmVyIH07XG5cbmZ1bmN0aW9uIHJlYWRVMzJMRShkYXRhOiBVaW50OEFycmF5LCBvZmZzZXQ6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBkYXRhW29mZnNldF0gfCAoZGF0YVtvZmZzZXQgKyAxXSA8PCA4KSB8IChkYXRhW29mZnNldCArIDJdIDw8IDE2KSB8IChkYXRhW29mZnNldCArIDNdIDw8IDI0KTtcbn1cblxuZnVuY3Rpb24gcmVhZFU2NExFKGRhdGE6IFVpbnQ4QXJyYXksIG9mZnNldDogbnVtYmVyKTogbnVtYmVyIHtcbiAgbGV0IHZhbHVlID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHtcbiAgICB2YWx1ZSArPSBOdW1iZXIoZGF0YVtvZmZzZXQgKyBpXSkgKiBNYXRoLnBvdygyLCA4ICogaSk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vKipcbiAqIFN0cmlwIENvbXB1dGVCdWRnZXQgaW5zdHJ1Y3Rpb25zIChTZXRDb21wdXRlVW5pdExpbWl0IC8gU2V0Q29tcHV0ZVVuaXRQcmljZSlcbiAqIGFuZCBmb2xkIHRoZWlyIHZhbHVlcyBpbnRvIHRoZSB0cmFuc2FjdGlvbiBjb25maWcgd2hlbiBzdGlsbCB1bnNldC5cbiAqL1xuZnVuY3Rpb24gc3RyaXBDb21wdXRlQnVkZ2V0SW5zdHJ1Y3Rpb25zKFxuICBpbnN0cnVjdGlvbnM6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSxcbiAgdHJhbnNhY3Rpb25Db25maWc6IFRyYW5zYWN0aW9uQ29uZmlnXG4pOiB7IGluc3RydWN0aW9uczogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdOyBjb25maWc6IFRyYW5zYWN0aW9uQ29uZmlnIH0ge1xuICBjb25zdCBmaWx0ZXJlZDogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdID0gW107XG4gIGNvbnN0IGNvbmZpZzogVHJhbnNhY3Rpb25Db25maWcgPSB7IC4uLnRyYW5zYWN0aW9uQ29uZmlnIH07XG5cbiAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiBpbnN0cnVjdGlvbnMpIHtcbiAgICBjb25zdCBpc0NvbXB1dGVCdWRnZXQgPSBpbnN0cnVjdGlvbi5wcm9ncmFtSWQudG9CYXNlNTgoKSA9PT0gQ09NUFVURV9CVURHRVRfUFJPR1JBTV9JRDtcbiAgICBjb25zdCBkaXNjcmltaW5hdG9yID0gaW5zdHJ1Y3Rpb24uZGF0YT8uWzBdO1xuXG4gICAgaWYgKGlzQ29tcHV0ZUJ1ZGdldCAmJiBkaXNjcmltaW5hdG9yID09PSBTRVRfQ09NUFVURV9VTklUX0xJTUlUX0RJU0NSSU1JTkFUT1IpIHtcbiAgICAgIGlmIChjb25maWcuY29tcHV0ZVVuaXRMaW1pdCA9PT0gbnVsbCkge1xuICAgICAgICBjb25maWcuY29tcHV0ZVVuaXRMaW1pdCA9IHJlYWRVMzJMRShpbnN0cnVjdGlvbi5kYXRhLCAxKTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChpc0NvbXB1dGVCdWRnZXQgJiYgZGlzY3JpbWluYXRvciA9PT0gU0VUX0NPTVBVVEVfVU5JVF9QUklDRV9ESVNDUklNSU5BVE9SKSB7XG4gICAgICBpZiAoY29uZmlnLnByaW9yaXR5RmVlID09PSBudWxsICYmIGNvbmZpZy5jb21wdXRlVW5pdExpbWl0ICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IG1pY3JvTGFtcG9ydHMgPSByZWFkVTY0TEUoaW5zdHJ1Y3Rpb24uZGF0YSwgMSk7XG4gICAgICAgIGNvbmZpZy5wcmlvcml0eUZlZSA9IE1hdGguY2VpbCgobWljcm9MYW1wb3J0cyAqIGNvbmZpZy5jb21wdXRlVW5pdExpbWl0KSAvIE1JQ1JPX0xBTVBPUlRTX1BFUl9MQU1QT1JUKTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGZpbHRlcmVkLnB1c2goaW5zdHJ1Y3Rpb24pO1xuICB9XG5cbiAgcmV0dXJuIHsgaW5zdHJ1Y3Rpb25zOiBmaWx0ZXJlZCwgY29uZmlnIH07XG59XG5cbi8qKlxuICogQ29sbGVjdCArIG9yZGVyIGFjY291bnRzIGV4YWN0bHkgYXMgQHNvbGFuYS90cmFuc2FjdGlvbi1tZXNzYWdlcyBkb2VzOlxuICogZmVlIHBheWVyIGZpcnN0IChXUklUQUJMRV9TSUdORVIpLCB0aGVuIHN0YXRpYyBhY2NvdW50cyBzb3J0ZWQgYnlcbiAqIChpc1NpZ25lciwgaXNXcml0YWJsZSwgYmFzZTU4IGNvbGxhdG9yKS4gRHVwbGljYXRlIGFkZHJlc3NlcyBtZXJnZSByb2xlcy5cbiAqIEVuZm9yY2VzIHRoZSBraXQncyBpbnZva2VkLXByb2dyYW0gcnVsZXMuXG4gKi9cbmZ1bmN0aW9uIGNvbGxlY3RPcmRlcmVkQWNjb3VudHMoZmVlUGF5ZXI6IFB1YmxpY0tleSwgaW5zdHJ1Y3Rpb25zOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10pOiBBY2NvdW50TWV0YVtdIHtcbiAgY29uc3QgZmVlUGF5ZXJBZGRyZXNzID0gZmVlUGF5ZXIudG9CYXNlNTgoKTtcbiAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgY29uc3QgbWV0YUJ5QWRkcmVzcyA9IG5ldyBNYXA8c3RyaW5nLCBBY2NvdW50TWV0YT4oKTtcbiAgY29uc3QgaW52b2tlZFByb2dyYW1zID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgbWFwLnNldChmZWVQYXllckFkZHJlc3MsIFdSSVRBQkxFX1NJR05FUik7XG4gIG1ldGFCeUFkZHJlc3Muc2V0KGZlZVBheWVyQWRkcmVzcywgeyBhZGRyZXNzOiBmZWVQYXllckFkZHJlc3MsIHJvbGU6IFdSSVRBQkxFX1NJR05FUiB9KTtcblxuICBjb25zdCB1cHNlcnQgPSAoYWRkcmVzczogc3RyaW5nLCByb2xlOiBudW1iZXIsIGlzSW52b2tlZFByb2dyYW06IGJvb2xlYW4pID0+IHtcbiAgICBpZiAoYWRkcmVzcyA9PT0gZmVlUGF5ZXJBZGRyZXNzKSB7XG4gICAgICBpZiAoaXNJbnZva2VkUHJvZ3JhbSkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZva2VkIHByb2dyYW0gJHthZGRyZXNzfSBjYW5ub3QgcGF5IGZlZXNgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzSW52b2tlZFByb2dyYW0gJiYgaXNXcml0YWJsZShyb2xlKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52b2tlZCBwcm9ncmFtICR7YWRkcmVzc30gbXVzdCBub3QgYmUgd3JpdGFibGVgKTtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudCA9IG1hcC5nZXQoYWRkcmVzcyk7XG4gICAgaWYgKGN1cnJlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgbWVyZ2VkID0gKGN1cnJlbnQgfCByb2xlKSBhcyBudW1iZXI7XG4gICAgICBpZiAoaXNJbnZva2VkUHJvZ3JhbSAmJiBpc1dyaXRhYmxlKG1lcmdlZCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52b2tlZCBwcm9ncmFtICR7YWRkcmVzc30gbXVzdCBub3QgYmUgd3JpdGFibGVgKTtcbiAgICAgIH1cbiAgICAgIG1hcC5zZXQoYWRkcmVzcywgbWVyZ2VkKTtcbiAgICAgIG1ldGFCeUFkZHJlc3Muc2V0KGFkZHJlc3MsIHsgYWRkcmVzcywgcm9sZTogbWVyZ2VkIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBtYXAuc2V0KGFkZHJlc3MsIHJvbGUpO1xuICAgICAgbWV0YUJ5QWRkcmVzcy5zZXQoYWRkcmVzcywgeyBhZGRyZXNzLCByb2xlIH0pO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIGluc3RydWN0aW9ucykge1xuICAgIGNvbnN0IHByb2dyYW1BZGRyZXNzID0gaW5zdHJ1Y3Rpb24ucHJvZ3JhbUlkLnRvQmFzZTU4KCk7XG4gICAgaW52b2tlZFByb2dyYW1zLmFkZChwcm9ncmFtQWRkcmVzcyk7XG4gICAgdXBzZXJ0KHByb2dyYW1BZGRyZXNzLCBSRUFET05MWSwgdHJ1ZSk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgaW5zdHJ1Y3Rpb24ua2V5cykge1xuICAgICAgdXBzZXJ0KFxuICAgICAgICBrZXkucHVia2V5LnRvQmFzZTU4KCksXG4gICAgICAgIGtleS5pc1NpZ25lciA/IChrZXkuaXNXcml0YWJsZSA/IFdSSVRBQkxFX1NJR05FUiA6IFJFQURPTkxZX1NJR05FUikgOiBrZXkuaXNXcml0YWJsZSA/IFdSSVRBQkxFIDogUkVBRE9OTFksXG4gICAgICAgIGludm9rZWRQcm9ncmFtcy5oYXMoa2V5LnB1YmtleS50b0Jhc2U1OCgpKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBvcmRlcmVkID0gWy4uLm1ldGFCeUFkZHJlc3MudmFsdWVzKCldO1xuICBvcmRlcmVkLnNvcnQoKGEsIGIpID0+IHtcbiAgICBjb25zdCBhRmVlID0gYS5hZGRyZXNzID09PSBmZWVQYXllckFkZHJlc3MgPyAtMSA6IDA7XG4gICAgY29uc3QgYkZlZSA9IGIuYWRkcmVzcyA9PT0gZmVlUGF5ZXJBZGRyZXNzID8gLTEgOiAwO1xuICAgIGlmIChhRmVlICE9PSBiRmVlKSByZXR1cm4gYUZlZSAtIGJGZWU7XG4gICAgY29uc3QgYVNpZ25lciA9IGlzU2lnbmVyKGEucm9sZSkgPyAtMSA6IDA7XG4gICAgY29uc3QgYlNpZ25lciA9IGlzU2lnbmVyKGIucm9sZSkgPyAtMSA6IDA7XG4gICAgaWYgKGFTaWduZXIgIT09IGJTaWduZXIpIHJldHVybiBhU2lnbmVyIC0gYlNpZ25lcjtcbiAgICBjb25zdCBhV3JpdGFibGUgPSBpc1dyaXRhYmxlKGEucm9sZSkgPyAtMSA6IDA7XG4gICAgY29uc3QgYldyaXRhYmxlID0gaXNXcml0YWJsZShiLnJvbGUpID8gLTEgOiAwO1xuICAgIGlmIChhV3JpdGFibGUgIT09IGJXcml0YWJsZSkgcmV0dXJuIGFXcml0YWJsZSAtIGJXcml0YWJsZTtcbiAgICByZXR1cm4gYWRkcmVzc0NvbXBhcmF0b3IoYS5hZGRyZXNzLCBiLmFkZHJlc3MpO1xuICB9KTtcblxuICByZXR1cm4gb3JkZXJlZDtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZUhlYWRlcihvcmRlcmVkQWNjb3VudHM6IEFjY291bnRNZXRhW10pOiBWMU1lc3NhZ2VIZWFkZXIge1xuICBsZXQgbnVtU2lnbmVyQWNjb3VudHMgPSAwO1xuICBsZXQgbnVtUmVhZG9ubHlTaWduZXJBY2NvdW50cyA9IDA7XG4gIGxldCBudW1SZWFkb25seU5vblNpZ25lckFjY291bnRzID0gMDtcbiAgZm9yIChjb25zdCBhY2NvdW50IG9mIG9yZGVyZWRBY2NvdW50cykge1xuICAgIGlmIChpc1NpZ25lcihhY2NvdW50LnJvbGUpKSB7XG4gICAgICBudW1TaWduZXJBY2NvdW50cysrO1xuICAgICAgaWYgKCFpc1dyaXRhYmxlKGFjY291bnQucm9sZSkpIHtcbiAgICAgICAgbnVtUmVhZG9ubHlTaWduZXJBY2NvdW50cysrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWlzV3JpdGFibGUoYWNjb3VudC5yb2xlKSkge1xuICAgICAgbnVtUmVhZG9ubHlOb25TaWduZXJBY2NvdW50cysrO1xuICAgIH1cbiAgfVxuICByZXR1cm4geyBudW1TaWduZXJBY2NvdW50cywgbnVtUmVhZG9ubHlTaWduZXJBY2NvdW50cywgbnVtUmVhZG9ubHlOb25TaWduZXJBY2NvdW50cyB9O1xufVxuXG5mdW5jdGlvbiBjb21waWxlSW5zdHJ1Y3Rpb25zKFxuICBpbnN0cnVjdGlvbnM6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSxcbiAgb3JkZXJlZEFjY291bnRzOiBBY2NvdW50TWV0YVtdXG4pOiBDb21waWxlZEluc3RydWN0aW9uW10ge1xuICBjb25zdCBhY2NvdW50SW5kZXggPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBvcmRlcmVkQWNjb3VudHMuZm9yRWFjaCgoYWNjb3VudCwgaW5kZXgpID0+IGFjY291bnRJbmRleC5zZXQoYWNjb3VudC5hZGRyZXNzLCBpbmRleCkpO1xuXG4gIHJldHVybiBpbnN0cnVjdGlvbnMubWFwKChpbnN0cnVjdGlvbikgPT4gKHtcbiAgICBwcm9ncmFtQWRkcmVzc0luZGV4OiBhY2NvdW50SW5kZXguZ2V0KGluc3RydWN0aW9uLnByb2dyYW1JZC50b0Jhc2U1OCgpKSEsXG4gICAgYWNjb3VudEluZGljZXM6IGluc3RydWN0aW9uLmtleXMubWFwKChrKSA9PiBhY2NvdW50SW5kZXguZ2V0KGsucHVia2V5LnRvQmFzZTU4KCkpISksXG4gICAgZGF0YTogaW5zdHJ1Y3Rpb24uZGF0YSA/PyBuZXcgVWludDhBcnJheSgpLFxuICB9KSk7XG59XG5cbi8qKlxuICogQ29tcGlsZSBhIFNvbGFuYSB0cmFuc2FjdGlvbiBtZXNzYWdlIGFuZCByZXR1cm4gaXRzIHdpcmUgYnl0ZXMuXG4gKlxuICogVmVyc2lvbi1hd2FyZTogb25seSBgdmVyc2lvbjogMWAgKFNJTUQtMDI5Ni8wMzg1KSBpcyBpbXBsZW1lbnRlZDsgb3RoZXJcbiAqIHZlcnNpb25zIHRocm93IGEgY2xlYXIgdW5zdXBwb3J0ZWQtdmVyc2lvbiBlcnJvciB1bnRpbCB0aGV5IGFyZSBhZGRlZC5cbiAqXG4gKiBAcGFyYW0gYXJncyAtIHZlcnNpb24sIGluc3RydWN0aW9ucywgZmVlIHBheWVyLCByZWNlbnQgYmxvY2toYXNoLCBhbmQgY29uZmlnXG4gKiBAcmV0dXJucyB0aGUgc2VyaWFsaXplZCBtZXNzYWdlIGJ5dGVzICh2MSBzdGFydHMgd2l0aCB0aGUgMHg4MSB2ZXJzaW9uIHByZWZpeClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVUcmFuc2FjdGlvbk1lc3NhZ2UoYXJnczoge1xuICB2ZXJzaW9uOiBUcmFuc2FjdGlvblZlcnNpb247XG4gIGluc3RydWN0aW9uczogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdO1xuICBmZWVQYXllcjogUHVibGljS2V5O1xuICByZWNlbnRCbG9ja2hhc2g6IHN0cmluZztcbiAgdHJhbnNhY3Rpb25Db25maWc6IFRyYW5zYWN0aW9uQ29uZmlnO1xufSk6IFVpbnQ4QXJyYXkge1xuICBjb25zdCB7IHZlcnNpb24sIGluc3RydWN0aW9ucywgZmVlUGF5ZXIsIHJlY2VudEJsb2NraGFzaCwgdHJhbnNhY3Rpb25Db25maWcgfSA9IGFyZ3M7XG5cbiAgaWYgKHZlcnNpb24gIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBVbnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB2ZXJzaW9uOiAke3ZlcnNpb259LiBPbmx5IHZlcnNpb24gMSBpcyBpbXBsZW1lbnRlZC5gKTtcbiAgfVxuICBpZiAoIWluc3RydWN0aW9ucyB8fCBpbnN0cnVjdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQXQgbGVhc3Qgb25lIGluc3RydWN0aW9uIGlzIHJlcXVpcmVkIHRvIGNvbXBpbGUgYSB2MSB0cmFuc2FjdGlvbicpO1xuICB9XG4gIGlmICghdHJhbnNhY3Rpb25Db25maWcpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCd0cmFuc2FjdGlvbkNvbmZpZyBpcyByZXF1aXJlZCB0byBjb21waWxlIGEgdjEgdHJhbnNhY3Rpb24nKTtcbiAgfVxuXG4gIGNvbnN0IHsgaW5zdHJ1Y3Rpb25zOiBmaWx0ZXJlZEluc3RydWN0aW9ucywgY29uZmlnIH0gPSBzdHJpcENvbXB1dGVCdWRnZXRJbnN0cnVjdGlvbnMoXG4gICAgaW5zdHJ1Y3Rpb25zLFxuICAgIHRyYW5zYWN0aW9uQ29uZmlnXG4gICk7XG5cbiAgY29uc3Qgb3JkZXJlZEFjY291bnRzID0gY29sbGVjdE9yZGVyZWRBY2NvdW50cyhmZWVQYXllciwgZmlsdGVyZWRJbnN0cnVjdGlvbnMpO1xuICBpZiAob3JkZXJlZEFjY291bnRzLmxlbmd0aCA+IE1BWF9BQ0NPVU5UUykge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICBgVG9vIG1hbnkgYWNjb3VudHMgaW4gdjEgdHJhbnNhY3Rpb246ICR7b3JkZXJlZEFjY291bnRzLmxlbmd0aH0gKG1heCAke01BWF9BQ0NPVU5UU30pYFxuICAgICk7XG4gIH1cbiAgY29uc3QgbnVtU2lnbmVycyA9IG9yZGVyZWRBY2NvdW50cy5maWx0ZXIoKGEpID0+IGlzU2lnbmVyKGEucm9sZSkpLmxlbmd0aDtcbiAgaWYgKG51bVNpZ25lcnMgPiBNQVhfU0lHTkVSUykge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYFRvbyBtYW55IHNpZ25lcnMgaW4gdjEgdHJhbnNhY3Rpb246ICR7bnVtU2lnbmVyc30gKG1heCAke01BWF9TSUdORVJTfSlgKTtcbiAgfVxuICBpZiAoZmlsdGVyZWRJbnN0cnVjdGlvbnMubGVuZ3RoID4gTUFYX0lOU1RSVUNUSU9OUykge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICBgVG9vIG1hbnkgaW5zdHJ1Y3Rpb25zIGluIHYxIHRyYW5zYWN0aW9uOiAke2ZpbHRlcmVkSW5zdHJ1Y3Rpb25zLmxlbmd0aH0gKG1heCAke01BWF9JTlNUUlVDVElPTlN9KWBcbiAgICApO1xuICB9XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsdGVyZWRJbnN0cnVjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZmlsdGVyZWRJbnN0cnVjdGlvbnNbaV0ua2V5cy5sZW5ndGggPiBNQVhfQUNDT1VOVFNfUEVSX0lOU1RSVUNUSU9OKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgVG9vIG1hbnkgYWNjb3VudHMgaW4gaW5zdHJ1Y3Rpb24gJHtpfTogJHtmaWx0ZXJlZEluc3RydWN0aW9uc1tpXS5rZXlzLmxlbmd0aH0gKG1heCAke01BWF9BQ0NPVU5UU19QRVJfSU5TVFJVQ1RJT059KWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGVhZGVyID0gY29tcHV0ZUhlYWRlcihvcmRlcmVkQWNjb3VudHMpO1xuICBjb25zdCB7IG1hc2ssIHZhbHVlcyB9ID0gZW5jb2RlQ29uZmlnTWFza0FuZFZhbHVlcyhjb25maWcpO1xuICBjb25zdCBjb21waWxlZEluc3RydWN0aW9ucyA9IGNvbXBpbGVJbnN0cnVjdGlvbnMoZmlsdGVyZWRJbnN0cnVjdGlvbnMsIG9yZGVyZWRBY2NvdW50cyk7XG5cbiAgcmV0dXJuIGVuY29kZVYxTWVzc2FnZSh7XG4gICAgaGVhZGVyLFxuICAgIGNvbmZpZ01hc2s6IG1hc2ssXG4gICAgY29uZmlnVmFsdWVzOiB2YWx1ZXMsXG4gICAgYmxvY2toYXNoOiByZWNlbnRCbG9ja2hhc2gsXG4gICAgc3RhdGljQWNjb3VudHM6IG9yZGVyZWRBY2NvdW50cy5tYXAoKGFjY291bnQpID0+IGFjY291bnQuYWRkcmVzcyksXG4gICAgY29tcGlsZWRJbnN0cnVjdGlvbnMsXG4gIH0pO1xufVxuIl19
|
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZVRyYW5zYWN0aW9uTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VyaWFsaXphdGlvbi9jb21waWxlVHJhbnNhY3Rpb25NZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBcU5BLDhEQTJEQztBQWhSRCxtREFBNkQ7QUFFN0QsaURBQXVFO0FBQ3ZFLCtDQUErRDtBQWlCL0Qsd0RBQXdEO0FBQ3hELE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQztBQUNuQixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFDbkIsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQztBQUUxQixNQUFNLHlCQUF5QixHQUFHLDZDQUE2QyxDQUFDO0FBQ2hGLE1BQU0sb0NBQW9DLEdBQUcsQ0FBQyxDQUFDO0FBQy9DLE1BQU0sb0NBQW9DLEdBQUcsQ0FBQyxDQUFDO0FBQy9DLE1BQU0sMEJBQTBCLEdBQUcsT0FBUyxDQUFDO0FBRTdDLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUN4QixNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFDdkIsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7QUFDNUIsTUFBTSw0QkFBNEIsR0FBRyxHQUFHLENBQUM7QUFFekMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFZLEVBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMzRSxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQVksRUFBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRXRFLDhFQUE4RTtBQUM5RSxNQUFNLGlCQUFpQixHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUU7SUFDaEQsU0FBUyxFQUFFLE9BQU87SUFDbEIsaUJBQWlC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RSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUNqRSxvQkFBb0I7S0FDckIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFB1YmxpY0tleSwgVHJhbnNhY3Rpb25JbnN0cnVjdGlvbiB9IGZyb20gJ0Bzb2xhbmEvd2ViMy5qcyc7XG5pbXBvcnQgeyBlbmNvZGVWMU1lc3NhZ2UsIFYxTWVzc2FnZUhlYWRlciB9IGZyb20gJy4vY29kZWNzL3YxL21lc3NhZ2UnO1xuaW1wb3J0IHsgZW5jb2RlQ29uZmlnTWFza0FuZFZhbHVlcyB9IGZyb20gJy4vY29kZWNzL3YxL2NvbmZpZyc7XG5pbXBvcnQgeyBDb21waWxlZEluc3RydWN0aW9uIH0gZnJvbSAnLi9jb2RlY3MvdjEvaW5zdHJ1Y3Rpb24nO1xuXG4vKiogU3VwcG9ydGVkIFNvbGFuYSB0cmFuc2FjdGlvbiB2ZXJzaW9ucy4gT25seSAxIChTSU1ELTAyOTYvMDM4NSkgaXMgaW1wbGVtZW50ZWQuICovXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvblZlcnNpb24gPSAwIHwgMTtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIHYxIHRyYW5zYWN0aW9uLCBtaXJyb3JpbmcgdGhlIHNoYXJlZCBzZGstY29yZSB0eXBlLlxuICogQWxsIHZhbHVlcyBhcmUgb3B0aW9uYWwgKG51bGwgPSB1bnNldCk7IHByaW9yaXR5RmVlIGlzIHRvdGFsIGxhbXBvcnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uQ29uZmlnIHtcbiAgY29tcHV0ZVVuaXRMaW1pdDogbnVtYmVyIHwgbnVsbDtcbiAgaGVhcFNpemU6IG51bWJlciB8IG51bGw7XG4gIGxvYWRlZEFjY291bnRzRGF0YVNpemVMaW1pdDogbnVtYmVyIHwgbnVsbDtcbiAgcHJpb3JpdHlGZWU6IG51bWJlciB8IG51bGw7IC8vIGxhbXBvcnRzICh0b3RhbClcbn1cblxuLy8gQWNjb3VudFJvbGUgYml0IHZhbHVlcyAobWlycm9yIEBzb2xhbmEvaW5zdHJ1Y3Rpb25zKS5cbmNvbnN0IFJFQURPTkxZID0gMDtcbmNvbnN0IFdSSVRBQkxFID0gMTtcbmNvbnN0IFJFQURPTkxZX1NJR05FUiA9IDI7XG5jb25zdCBXUklUQUJMRV9TSUdORVIgPSAzO1xuXG5jb25zdCBDT01QVVRFX0JVREdFVF9QUk9HUkFNX0lEID0gJ0NvbXB1dGVCdWRnZXQxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnO1xuY29uc3QgU0VUX0NPTVBVVEVfVU5JVF9MSU1JVF9ESVNDUklNSU5BVE9SID0gMjtcbmNvbnN0IFNFVF9DT01QVVRFX1VOSVRfUFJJQ0VfRElTQ1JJTUlOQVRPUiA9IDM7XG5jb25zdCBNSUNST19MQU1QT1JUU19QRVJfTEFNUE9SVCA9IDFfMDAwXzAwMDtcblxuY29uc3QgTUFYX0FDQ09VTlRTID0gNjQ7XG5jb25zdCBNQVhfU0lHTkVSUyA9IDEyO1xuY29uc3QgTUFYX0lOU1RSVUNUSU9OUyA9IDY0O1xuY29uc3QgTUFYX0FDQ09VTlRTX1BFUl9JTlNUUlVDVElPTiA9IDI1NTtcblxuY29uc3QgaXNTaWduZXIgPSAocm9sZTogbnVtYmVyKTogYm9vbGVhbiA9PiAocm9sZSAmIFJFQURPTkxZX1NJR05FUikgIT09IDA7XG5jb25zdCBpc1dyaXRhYmxlID0gKHJvbGU6IG51bWJlcik6IGJvb2xlYW4gPT4gKHJvbGUgJiBXUklUQUJMRSkgIT09IDA7XG5cbi8vIEFkZHJlc3Mgb3JkZXJpbmcgY29tcGFyYXRvciBtYXRjaGVzIEBzb2xhbmEvYWRkcmVzc2VzIGdldEFkZHJlc3NDb21wYXJhdG9yLlxuY29uc3QgYWRkcmVzc0NvbXBhcmF0b3IgPSBuZXcgSW50bC5Db2xsYXRvcignZW4nLCB7XG4gIGNhc2VGaXJzdDogJ2xvd2VyJyxcbiAgaWdub3JlUHVuY3R1YXRpb246IGZhbHNlLFxuICBsb2NhbGVNYXRjaGVyOiAnYmVzdCBmaXQnLFxuICBudW1lcmljOiBmYWxzZSxcbiAgc2Vuc2l0aXZpdHk6ICd2YXJpYW50JyxcbiAgdXNhZ2U6ICdzb3J0Jyxcbn0pLmNvbXBhcmU7XG5cbnR5cGUgQWNjb3VudE1ldGEgPSB7IGFkZHJlc3M6IHN0cmluZzsgcm9sZTogbnVtYmVyIH07XG5cbmZ1bmN0aW9uIHJlYWRVMzJMRShkYXRhOiBVaW50OEFycmF5LCBvZmZzZXQ6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBkYXRhW29mZnNldF0gfCAoZGF0YVtvZmZzZXQgKyAxXSA8PCA4KSB8IChkYXRhW29mZnNldCArIDJdIDw8IDE2KSB8IChkYXRhW29mZnNldCArIDNdIDw8IDI0KTtcbn1cblxuZnVuY3Rpb24gcmVhZFU2NExFKGRhdGE6IFVpbnQ4QXJyYXksIG9mZnNldDogbnVtYmVyKTogbnVtYmVyIHtcbiAgbGV0IHZhbHVlID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHtcbiAgICB2YWx1ZSArPSBOdW1iZXIoZGF0YVtvZmZzZXQgKyBpXSkgKiBNYXRoLnBvdygyLCA4ICogaSk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vKipcbiAqIFN0cmlwIENvbXB1dGVCdWRnZXQgaW5zdHJ1Y3Rpb25zIChTZXRDb21wdXRlVW5pdExpbWl0IC8gU2V0Q29tcHV0ZVVuaXRQcmljZSlcbiAqIGFuZCBmb2xkIHRoZWlyIHZhbHVlcyBpbnRvIHRoZSB0cmFuc2FjdGlvbiBjb25maWcgd2hlbiBzdGlsbCB1bnNldC5cbiAqL1xuZnVuY3Rpb24gc3RyaXBDb21wdXRlQnVkZ2V0SW5zdHJ1Y3Rpb25zKFxuICBpbnN0cnVjdGlvbnM6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSxcbiAgdHJhbnNhY3Rpb25Db25maWc6IFRyYW5zYWN0aW9uQ29uZmlnXG4pOiB7IGluc3RydWN0aW9uczogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdOyBjb25maWc6IFRyYW5zYWN0aW9uQ29uZmlnIH0ge1xuICBjb25zdCBmaWx0ZXJlZDogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdID0gW107XG4gIGNvbnN0IGNvbmZpZzogVHJhbnNhY3Rpb25Db25maWcgPSB7IC4uLnRyYW5zYWN0aW9uQ29uZmlnIH07XG5cbiAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiBpbnN0cnVjdGlvbnMpIHtcbiAgICBjb25zdCBpc0NvbXB1dGVCdWRnZXQgPSBpbnN0cnVjdGlvbi5wcm9ncmFtSWQudG9CYXNlNTgoKSA9PT0gQ09NUFVURV9CVURHRVRfUFJPR1JBTV9JRDtcbiAgICBjb25zdCBkaXNjcmltaW5hdG9yID0gaW5zdHJ1Y3Rpb24uZGF0YT8uWzBdO1xuXG4gICAgaWYgKGlzQ29tcHV0ZUJ1ZGdldCAmJiBkaXNjcmltaW5hdG9yID09PSBTRVRfQ09NUFVURV9VTklUX0xJTUlUX0RJU0NSSU1JTkFUT1IpIHtcbiAgICAgIGlmIChjb25maWcuY29tcHV0ZVVuaXRMaW1pdCA9PT0gbnVsbCkge1xuICAgICAgICBjb25maWcuY29tcHV0ZVVuaXRMaW1pdCA9IHJlYWRVMzJMRShpbnN0cnVjdGlvbi5kYXRhLCAxKTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChpc0NvbXB1dGVCdWRnZXQgJiYgZGlzY3JpbWluYXRvciA9PT0gU0VUX0NPTVBVVEVfVU5JVF9QUklDRV9ESVNDUklNSU5BVE9SKSB7XG4gICAgICBpZiAoY29uZmlnLnByaW9yaXR5RmVlID09PSBudWxsICYmIGNvbmZpZy5jb21wdXRlVW5pdExpbWl0ICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IG1pY3JvTGFtcG9ydHMgPSByZWFkVTY0TEUoaW5zdHJ1Y3Rpb24uZGF0YSwgMSk7XG4gICAgICAgIGNvbmZpZy5wcmlvcml0eUZlZSA9IE1hdGguY2VpbCgobWljcm9MYW1wb3J0cyAqIGNvbmZpZy5jb21wdXRlVW5pdExpbWl0KSAvIE1JQ1JPX0xBTVBPUlRTX1BFUl9MQU1QT1JUKTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGZpbHRlcmVkLnB1c2goaW5zdHJ1Y3Rpb24pO1xuICB9XG5cbiAgcmV0dXJuIHsgaW5zdHJ1Y3Rpb25zOiBmaWx0ZXJlZCwgY29uZmlnIH07XG59XG5cbi8qKlxuICogQ29sbGVjdCArIG9yZGVyIGFjY291bnRzIGV4YWN0bHkgYXMgQHNvbGFuYS90cmFuc2FjdGlvbi1tZXNzYWdlcyBkb2VzOlxuICogZmVlIHBheWVyIGZpcnN0IChXUklUQUJMRV9TSUdORVIpLCB0aGVuIHN0YXRpYyBhY2NvdW50cyBzb3J0ZWQgYnlcbiAqIChpc1NpZ25lciwgaXNXcml0YWJsZSwgYmFzZTU4IGNvbGxhdG9yKS4gRHVwbGljYXRlIGFkZHJlc3NlcyBtZXJnZSByb2xlcy5cbiAqIEVuZm9yY2VzIHRoZSBraXQncyBpbnZva2VkLXByb2dyYW0gcnVsZXMuXG4gKi9cbmZ1bmN0aW9uIGNvbGxlY3RPcmRlcmVkQWNjb3VudHMoZmVlUGF5ZXI6IFB1YmxpY0tleSwgaW5zdHJ1Y3Rpb25zOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10pOiBBY2NvdW50TWV0YVtdIHtcbiAgY29uc3QgZmVlUGF5ZXJBZGRyZXNzID0gZmVlUGF5ZXIudG9CYXNlNTgoKTtcbiAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgY29uc3QgbWV0YUJ5QWRkcmVzcyA9IG5ldyBNYXA8c3RyaW5nLCBBY2NvdW50TWV0YT4oKTtcbiAgY29uc3QgaW52b2tlZFByb2dyYW1zID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgbWFwLnNldChmZWVQYXllckFkZHJlc3MsIFdSSVRBQkxFX1NJR05FUik7XG4gIG1ldGFCeUFkZHJlc3Muc2V0KGZlZVBheWVyQWRkcmVzcywgeyBhZGRyZXNzOiBmZWVQYXllckFkZHJlc3MsIHJvbGU6IFdSSVRBQkxFX1NJR05FUiB9KTtcblxuICBjb25zdCB1cHNlcnQgPSAoYWRkcmVzczogc3RyaW5nLCByb2xlOiBudW1iZXIsIGlzSW52b2tlZFByb2dyYW06IGJvb2xlYW4pID0+IHtcbiAgICBpZiAoYWRkcmVzcyA9PT0gZmVlUGF5ZXJBZGRyZXNzKSB7XG4gICAgICBpZiAoaXNJbnZva2VkUHJvZ3JhbSkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZva2VkIHByb2dyYW0gJHthZGRyZXNzfSBjYW5ub3QgcGF5IGZlZXNgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzSW52b2tlZFByb2dyYW0gJiYgaXNXcml0YWJsZShyb2xlKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52b2tlZCBwcm9ncmFtICR7YWRkcmVzc30gbXVzdCBub3QgYmUgd3JpdGFibGVgKTtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudCA9IG1hcC5nZXQoYWRkcmVzcyk7XG4gICAgaWYgKGN1cnJlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgbWVyZ2VkID0gKGN1cnJlbnQgfCByb2xlKSBhcyBudW1iZXI7XG4gICAgICBpZiAoaXNJbnZva2VkUHJvZ3JhbSAmJiBpc1dyaXRhYmxlKG1lcmdlZCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52b2tlZCBwcm9ncmFtICR7YWRkcmVzc30gbXVzdCBub3QgYmUgd3JpdGFibGVgKTtcbiAgICAgIH1cbiAgICAgIG1hcC5zZXQoYWRkcmVzcywgbWVyZ2VkKTtcbiAgICAgIG1ldGFCeUFkZHJlc3Muc2V0KGFkZHJlc3MsIHsgYWRkcmVzcywgcm9sZTogbWVyZ2VkIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBtYXAuc2V0KGFkZHJlc3MsIHJvbGUpO1xuICAgICAgbWV0YUJ5QWRkcmVzcy5zZXQoYWRkcmVzcywgeyBhZGRyZXNzLCByb2xlIH0pO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIGluc3RydWN0aW9ucykge1xuICAgIGNvbnN0IHByb2dyYW1BZGRyZXNzID0gaW5zdHJ1Y3Rpb24ucHJvZ3JhbUlkLnRvQmFzZTU4KCk7XG4gICAgaW52b2tlZFByb2dyYW1zLmFkZChwcm9ncmFtQWRkcmVzcyk7XG4gICAgdXBzZXJ0KHByb2dyYW1BZGRyZXNzLCBSRUFET05MWSwgdHJ1ZSk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgaW5zdHJ1Y3Rpb24ua2V5cykge1xuICAgICAgdXBzZXJ0KFxuICAgICAgICBrZXkucHVia2V5LnRvQmFzZTU4KCksXG4gICAgICAgIGtleS5pc1NpZ25lciA/IChrZXkuaXNXcml0YWJsZSA/IFdSSVRBQkxFX1NJR05FUiA6IFJFQURPTkxZX1NJR05FUikgOiBrZXkuaXNXcml0YWJsZSA/IFdSSVRBQkxFIDogUkVBRE9OTFksXG4gICAgICAgIGludm9rZWRQcm9ncmFtcy5oYXMoa2V5LnB1YmtleS50b0Jhc2U1OCgpKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBvcmRlcmVkID0gWy4uLm1ldGFCeUFkZHJlc3MudmFsdWVzKCldO1xuICBvcmRlcmVkLnNvcnQoKGEsIGIpID0+IHtcbiAgICBjb25zdCBhRmVlID0gYS5hZGRyZXNzID09PSBmZWVQYXllckFkZHJlc3MgPyAtMSA6IDA7XG4gICAgY29uc3QgYkZlZSA9IGIuYWRkcmVzcyA9PT0gZmVlUGF5ZXJBZGRyZXNzID8gLTEgOiAwO1xuICAgIGlmIChhRmVlICE9PSBiRmVlKSByZXR1cm4gYUZlZSAtIGJGZWU7XG4gICAgY29uc3QgYVNpZ25lciA9IGlzU2lnbmVyKGEucm9sZSkgPyAtMSA6IDA7XG4gICAgY29uc3QgYlNpZ25lciA9IGlzU2lnbmVyKGIucm9sZSkgPyAtMSA6IDA7XG4gICAgaWYgKGFTaWduZXIgIT09IGJTaWduZXIpIHJldHVybiBhU2lnbmVyIC0gYlNpZ25lcjtcbiAgICBjb25zdCBhV3JpdGFibGUgPSBpc1dyaXRhYmxlKGEucm9sZSkgPyAtMSA6IDA7XG4gICAgY29uc3QgYldyaXRhYmxlID0gaXNXcml0YWJsZShiLnJvbGUpID8gLTEgOiAwO1xuICAgIGlmIChhV3JpdGFibGUgIT09IGJXcml0YWJsZSkgcmV0dXJuIGFXcml0YWJsZSAtIGJXcml0YWJsZTtcbiAgICByZXR1cm4gYWRkcmVzc0NvbXBhcmF0b3IoYS5hZGRyZXNzLCBiLmFkZHJlc3MpO1xuICB9KTtcblxuICByZXR1cm4gb3JkZXJlZDtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZUhlYWRlcihvcmRlcmVkQWNjb3VudHM6IEFjY291bnRNZXRhW10pOiBWMU1lc3NhZ2VIZWFkZXIge1xuICBsZXQgbnVtU2lnbmVyQWNjb3VudHMgPSAwO1xuICBsZXQgbnVtUmVhZG9ubHlTaWduZXJBY2NvdW50cyA9IDA7XG4gIGxldCBudW1SZWFkb25seU5vblNpZ25lckFjY291bnRzID0gMDtcbiAgZm9yIChjb25zdCBhY2NvdW50IG9mIG9yZGVyZWRBY2NvdW50cykge1xuICAgIGlmIChpc1NpZ25lcihhY2NvdW50LnJvbGUpKSB7XG4gICAgICBudW1TaWduZXJBY2NvdW50cysrO1xuICAgICAgaWYgKCFpc1dyaXRhYmxlKGFjY291bnQucm9sZSkpIHtcbiAgICAgICAgbnVtUmVhZG9ubHlTaWduZXJBY2NvdW50cysrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWlzV3JpdGFibGUoYWNjb3VudC5yb2xlKSkge1xuICAgICAgbnVtUmVhZG9ubHlOb25TaWduZXJBY2NvdW50cysrO1xuICAgIH1cbiAgfVxuICByZXR1cm4geyBudW1TaWduZXJBY2NvdW50cywgbnVtUmVhZG9ubHlTaWduZXJBY2NvdW50cywgbnVtUmVhZG9ubHlOb25TaWduZXJBY2NvdW50cyB9O1xufVxuXG5mdW5jdGlvbiBjb21waWxlSW5zdHJ1Y3Rpb25zKFxuICBpbnN0cnVjdGlvbnM6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSxcbiAgb3JkZXJlZEFjY291bnRzOiBBY2NvdW50TWV0YVtdXG4pOiBDb21waWxlZEluc3RydWN0aW9uW10ge1xuICBjb25zdCBhY2NvdW50SW5kZXggPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBvcmRlcmVkQWNjb3VudHMuZm9yRWFjaCgoYWNjb3VudCwgaW5kZXgpID0+IGFjY291bnRJbmRleC5zZXQoYWNjb3VudC5hZGRyZXNzLCBpbmRleCkpO1xuXG4gIHJldHVybiBpbnN0cnVjdGlvbnMubWFwKChpbnN0cnVjdGlvbikgPT4gKHtcbiAgICBwcm9ncmFtQWRkcmVzc0luZGV4OiBhY2NvdW50SW5kZXguZ2V0KGluc3RydWN0aW9uLnByb2dyYW1JZC50b0Jhc2U1OCgpKSEsXG4gICAgYWNjb3VudEluZGljZXM6IGluc3RydWN0aW9uLmtleXMubWFwKChrKSA9PiBhY2NvdW50SW5kZXguZ2V0KGsucHVia2V5LnRvQmFzZTU4KCkpISksXG4gICAgZGF0YTogaW5zdHJ1Y3Rpb24uZGF0YSA/PyBuZXcgVWludDhBcnJheSgpLFxuICB9KSk7XG59XG5cbi8qKlxuICogQ29tcGlsZSBhIFNvbGFuYSB0cmFuc2FjdGlvbiBtZXNzYWdlIGFuZCByZXR1cm4gaXRzIHdpcmUgYnl0ZXMuXG4gKlxuICogVmVyc2lvbi1hd2FyZTogb25seSBgdmVyc2lvbjogMWAgKFNJTUQtMDI5Ni8wMzg1KSBpcyBpbXBsZW1lbnRlZDsgb3RoZXJcbiAqIHZlcnNpb25zIHRocm93IGEgY2xlYXIgdW5zdXBwb3J0ZWQtdmVyc2lvbiBlcnJvciB1bnRpbCB0aGV5IGFyZSBhZGRlZC5cbiAqXG4gKiBAcGFyYW0gYXJncyAtIHZlcnNpb24sIGluc3RydWN0aW9ucywgZmVlIHBheWVyLCByZWNlbnQgYmxvY2toYXNoLCBhbmQgY29uZmlnXG4gKiBAcmV0dXJucyB0aGUgc2VyaWFsaXplZCBtZXNzYWdlIGJ5dGVzICh2MSBzdGFydHMgd2l0aCB0aGUgMHg4MSB2ZXJzaW9uIHByZWZpeClcbiAqXG4gKiBAbm90ZSBgcmVjZW50QmxvY2toYXNoYCBhY2NlcHRzIGVpdGhlciBhIHJlY2VudCBibG9jayBoYXNoIG9yIGEgZHVyYWJsZSBub25jZVxuICogICBoYXNoIChib3RoIGFyZSBvcGFxdWUgMzItYnl0ZSBiYXNlNTggdmFsdWVzIGluIHRoZSB2MSBibG9ja2hhc2ggZmllbGQpLiBXaGVuXG4gKiAgIGEgbm9uY2UgaGFzaCBpcyBzdXBwbGllZCwgdGhlIGNhbGxlciBNVVNUIGFsc28gaW5jbHVkZSB0aGVcbiAqICAgYEFkdmFuY2VOb25jZUFjY291bnRgIGluc3RydWN0aW9uIChzZWUgYGJ1aWxkQWR2YW5jZU5vbmNlQWNjb3VudEluc3RydWN0aW9uYClcbiAqICAgaW4gYGluc3RydWN0aW9uc2AgLSBhIGJhcmUgbm9uY2UgaGFzaCB3aXRob3V0IHRoZSBpbnN0cnVjdGlvbiBpcyBpbnZhbGlkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZVRyYW5zYWN0aW9uTWVzc2FnZShhcmdzOiB7XG4gIHZlcnNpb246IFRyYW5zYWN0aW9uVmVyc2lvbjtcbiAgaW5zdHJ1Y3Rpb25zOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW107XG4gIGZlZVBheWVyOiBQdWJsaWNLZXk7XG4gIHJlY2VudEJsb2NraGFzaDogc3RyaW5nO1xuICB0cmFuc2FjdGlvbkNvbmZpZzogVHJhbnNhY3Rpb25Db25maWc7XG59KTogVWludDhBcnJheSB7XG4gIGNvbnN0IHsgdmVyc2lvbiwgaW5zdHJ1Y3Rpb25zLCBmZWVQYXllciwgcmVjZW50QmxvY2toYXNoLCB0cmFuc2FjdGlvbkNvbmZpZyB9ID0gYXJncztcblxuICBpZiAodmVyc2lvbiAhPT0gMSkge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYFVuc3VwcG9ydGVkIHRyYW5zYWN0aW9uIHZlcnNpb246ICR7dmVyc2lvbn0uIE9ubHkgdmVyc2lvbiAxIGlzIGltcGxlbWVudGVkLmApO1xuICB9XG4gIGlmICghaW5zdHJ1Y3Rpb25zIHx8IGluc3RydWN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdBdCBsZWFzdCBvbmUgaW5zdHJ1Y3Rpb24gaXMgcmVxdWlyZWQgdG8gY29tcGlsZSBhIHYxIHRyYW5zYWN0aW9uJyk7XG4gIH1cbiAgaWYgKCF0cmFuc2FjdGlvbkNvbmZpZykge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3RyYW5zYWN0aW9uQ29uZmlnIGlzIHJlcXVpcmVkIHRvIGNvbXBpbGUgYSB2MSB0cmFuc2FjdGlvbicpO1xuICB9XG5cbiAgY29uc3QgeyBpbnN0cnVjdGlvbnM6IGZpbHRlcmVkSW5zdHJ1Y3Rpb25zLCBjb25maWcgfSA9IHN0cmlwQ29tcHV0ZUJ1ZGdldEluc3RydWN0aW9ucyhcbiAgICBpbnN0cnVjdGlvbnMsXG4gICAgdHJhbnNhY3Rpb25Db25maWdcbiAgKTtcblxuICBjb25zdCBvcmRlcmVkQWNjb3VudHMgPSBjb2xsZWN0T3JkZXJlZEFjY291bnRzKGZlZVBheWVyLCBmaWx0ZXJlZEluc3RydWN0aW9ucyk7XG4gIGlmIChvcmRlcmVkQWNjb3VudHMubGVuZ3RoID4gTUFYX0FDQ09VTlRTKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgIGBUb28gbWFueSBhY2NvdW50cyBpbiB2MSB0cmFuc2FjdGlvbjogJHtvcmRlcmVkQWNjb3VudHMubGVuZ3RofSAobWF4ICR7TUFYX0FDQ09VTlRTfSlgXG4gICAgKTtcbiAgfVxuICBjb25zdCBudW1TaWduZXJzID0gb3JkZXJlZEFjY291bnRzLmZpbHRlcigoYSkgPT4gaXNTaWduZXIoYS5yb2xlKSkubGVuZ3RoO1xuICBpZiAobnVtU2lnbmVycyA+IE1BWF9TSUdORVJTKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgVG9vIG1hbnkgc2lnbmVycyBpbiB2MSB0cmFuc2FjdGlvbjogJHtudW1TaWduZXJzfSAobWF4ICR7TUFYX1NJR05FUlN9KWApO1xuICB9XG4gIGlmIChmaWx0ZXJlZEluc3RydWN0aW9ucy5sZW5ndGggPiBNQVhfSU5TVFJVQ1RJT05TKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgIGBUb28gbWFueSBpbnN0cnVjdGlvbnMgaW4gdjEgdHJhbnNhY3Rpb246ICR7ZmlsdGVyZWRJbnN0cnVjdGlvbnMubGVuZ3RofSAobWF4ICR7TUFYX0lOU1RSVUNUSU9OU30pYFxuICAgICk7XG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWx0ZXJlZEluc3RydWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChmaWx0ZXJlZEluc3RydWN0aW9uc1tpXS5rZXlzLmxlbmd0aCA+IE1BWF9BQ0NPVU5UU19QRVJfSU5TVFJVQ1RJT04pIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGBUb28gbWFueSBhY2NvdW50cyBpbiBpbnN0cnVjdGlvbiAke2l9OiAke2ZpbHRlcmVkSW5zdHJ1Y3Rpb25zW2ldLmtleXMubGVuZ3RofSAobWF4ICR7TUFYX0FDQ09VTlRTX1BFUl9JTlNUUlVDVElPTn0pYFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBoZWFkZXIgPSBjb21wdXRlSGVhZGVyKG9yZGVyZWRBY2NvdW50cyk7XG4gIGNvbnN0IHsgbWFzaywgdmFsdWVzIH0gPSBlbmNvZGVDb25maWdNYXNrQW5kVmFsdWVzKGNvbmZpZyk7XG4gIGNvbnN0IGNvbXBpbGVkSW5zdHJ1Y3Rpb25zID0gY29tcGlsZUluc3RydWN0aW9ucyhmaWx0ZXJlZEluc3RydWN0aW9ucywgb3JkZXJlZEFjY291bnRzKTtcblxuICByZXR1cm4gZW5jb2RlVjFNZXNzYWdlKHtcbiAgICBoZWFkZXIsXG4gICAgY29uZmlnTWFzazogbWFzayxcbiAgICBjb25maWdWYWx1ZXM6IHZhbHVlcyxcbiAgICBibG9ja2hhc2g6IHJlY2VudEJsb2NraGFzaCxcbiAgICBzdGF0aWNBY2NvdW50czogb3JkZXJlZEFjY291bnRzLm1hcCgoYWNjb3VudCkgPT4gYWNjb3VudC5hZGRyZXNzKSxcbiAgICBjb21waWxlZEluc3RydWN0aW9ucyxcbiAgfSk7XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,IAAI,aAAa,EAC1B,eAAe,EAGf,gBAAgB,EAGhB,oBAAoB,EACpB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAIL,WAAW,IAAI,cAAc,EAE7B,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,OAAO,EAAyB,OAAO,EAAE,MAAM,GAAG,CAAC;AAOnD,OAAO,EAEL,kBAAkB,EAClB,iBAAiB,EAOjB,sBAAsB,EAEtB,MAAM,EACN,wBAAwB,EAEzB,MAAM,SAAS,CAAC;AAWjB,qBAAa,WAAY,SAAQ,eAAe;IAC9C,SAAS,CAAC,eAAe,EAAE,cAAc,CAAC;IAC1C,OAAO,CAAC,qBAAqB,CAAqB;IAClD,OAAO,CAAC,6BAA6B,CAAqB;IAC1D,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC;IACjC,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,CAAM;IACtD,OAAO,CAAC,yBAAyB,CAAS;IAC1C,OAAO,CAAC,qBAAqB,CAAmC;IAChE,OAAO,CAAC,yBAAyB,CAAuC;IACxE,OAAO,CAAC,mBAAmB,CAAyB;IACpD,OAAO,CAAC,eAAe,CAAyB;gBAEpC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,IAAI,cAAc,IAAI,cAAc,CAEnC;IAED,IAAI,cAAc,CAAC,EAAE,EAAE,cAAc,EAEpC;IAED,OAAO,KAAK,0BAA0B,GAErC;IAED,OAAO,KAAK,+BAA+B,GAI1C;IAED,kBAAkB;IAClB,IAAI,eAAe,IAAI,MAAM,CAQ5B;IAED,mBAAmB;IACnB,IAAI,EAAE,IAAI,MAAM,CA2Bf;IAED,IAAI,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAE7C;IAED,IAAI,oBAAoB,CAAC,oBAAoB,EAAE,MAAM,GAAG,SAAS,EAEhE;IAED,IAAI,4BAA4B,IAAI,MAAM,GAAG,SAAS,CAErD;IAED,IAAI,4BAA4B,CAAC,4BAA4B,EAAE,MAAM,GAAG,SAAS,EAEhF;IAED,kBAAkB;IAClB,IAAI,SAAS,IAAI,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/lib/transaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -82,6 +82,19 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
82
82
|
/** @inheritDoc */
|
|
83
83
|
get signature() {
|
|
84
84
|
const signatures = [];
|
|
85
|
+
if (this._v1TransactionBytes) {
|
|
86
|
+
// v1 wire format: messageBytes followed by 64-byte signatures; filter out
|
|
87
|
+
// zero-filled placeholder slots (unsigned signers)
|
|
88
|
+
const numRequired = this._v1TransactionBytes[1];
|
|
89
|
+
const sigStart = this._v1TransactionBytes.length - numRequired * 64;
|
|
90
|
+
for (let i = 0; i < numRequired; i++) {
|
|
91
|
+
const sig = this._v1TransactionBytes.slice(sigStart + i * 64, sigStart + (i + 1) * 64);
|
|
92
|
+
if (sig.some((b) => b !== 0)) {
|
|
93
|
+
signatures.push(bs58_1.default.encode(sig));
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return signatures;
|
|
97
|
+
}
|
|
85
98
|
if (this._versionedTransaction) {
|
|
86
99
|
// Handle VersionedTransaction signatures
|
|
87
100
|
for (const sig of this._versionedTransaction.signatures) {
|
|
@@ -688,4 +701,4 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
688
701
|
}
|
|
689
702
|
}
|
|
690
703
|
exports.Transaction = Transaction;
|
|
691
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQVU4QjtBQUU5Qiw2Q0FPeUI7QUFDekIsZ0VBQXFDO0FBQ3JDLGdEQUEwQjtBQUMxQix3QkFBbUQ7QUFDbkQsMkNBS3FCO0FBaUJyQix5RUFBc0U7QUFDdEUsbUNBTWlCO0FBQ2pCLHNEQUF5RDtBQUV6RCxNQUFhLFdBQVksU0FBUSwwQkFBZTtJQVk5QyxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQVJYLHNCQUFpQixHQUF3QixFQUFFLENBQUM7UUFDOUMsOEJBQXlCLEdBQUcsS0FBSyxDQUFDO0lBUTFDLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJLGNBQWMsQ0FBQyxFQUFrQjtRQUNuQyxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBWSwwQkFBMEI7UUFDcEMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQztJQUM1RSxDQUFDO0lBRUQsSUFBWSwrQkFBK0I7UUFDekMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQzdDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFBLDBCQUFrQixFQUFDLFdBQVcsQ0FBQyxLQUFLLHFDQUF5QixDQUFDLGdDQUFnQyxDQUNoSCxDQUFDLE1BQU0sQ0FBQztJQUNYLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsSUFBSSxlQUFlO1FBQ2pCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFB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QUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtnQkFDckUsMEJBQTBCLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO2FBQ3RFLENBQUM7UUFDUixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEMsT0FBTztZQUNMLFlBQVksRUFBRTtnQkFDWixJQUFJO2dCQUNKLE1BQU07Z0JBQ04sV0FBVztnQkFDWCxjQUFjO2dCQUNkLGNBQWM7Z0JBQ2QsY0FBYztnQkFDZCxTQUFTO2dCQUNULGVBQWU7Z0JBQ2Ysa0JBQWtCO2dCQUNsQixLQUFLO2dCQUNMLE1BQU07YUFDUDtZQUNELEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLElBQUksRUFBRSwwQkFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUU7WUFDM0MsYUFBYSxFQUFFLEVBQUU7WUFDakIsWUFBWSxFQUFFLEdBQUc7WUFDakIsWUFBWSxFQUFFLENBQUM7WUFDZixPQUFPLEVBQUUsRUFBRTtZQUNYLEdBQUcsRUFBRTtnQkFDSCxHQUFHLEVBQUUsU0FBUztnQkFDZCxPQUFPLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjthQUNuQztZQUNELFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzFCLFlBQVksRUFBRSxZQUFZO1lBQzFCLGdCQUFnQixFQUFFLHNCQUFzQjtZQUN4QyxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsb0VBQW9FO1NBQzNGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFud0JELGtDQW13QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBQdWJsaWNLZXkgYXMgQmFzZVB1YmxpY0tleSxcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBFbnRyeSxcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIElUb2tlbkVuYWJsZW1lbnQsXG4gIFBhcnNlVHJhbnNhY3Rpb25FcnJvcixcbiAgU2lnbmluZ0Vycm9yLFxuICBUcmFuc2FjdGlvblJlY2lwaWVudCxcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQge1xuICBCbG9ja2hhc2gsXG4gIFB1YmxpY0tleSxcbiAgU2lnbmVyLFxuICBUcmFuc2FjdGlvbiBhcyBTb2xUcmFuc2FjdGlvbixcbiAgU3lzdGVtSW5zdHJ1Y3Rpb24sXG4gIFZlcnNpb25lZFRyYW5zYWN0aW9uLFxufSBmcm9tICdAc29sYW5hL3dlYjMuanMnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IGJhc2U1OCBmcm9tICdiczU4JztcbmltcG9ydCB7IGV4cGxhaW5Tb2xUcmFuc2FjdGlvbiwgS2V5UGFpciB9IGZyb20gJy4nO1xuaW1wb3J0IHtcbiAgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMsXG4gIFVOQVZBSUxBQkxFX1RFWFQsXG4gIHZhbGlkSW5zdHJ1Y3Rpb25EYXRhLFxuICBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBBdGFJbml0LFxuICBEdXJhYmxlTm9uY2VQYXJhbXMsXG4gIEluc3RydWN0aW9uUGFyYW1zLFxuICBNZW1vLFxuICBOb25jZSxcbiAgU3Rha2luZ0FjdGl2YXRlLFxuICBTdGFraW5nQXV0aG9yaXplUGFyYW1zLFxuICBTdGFraW5nV2l0aGRyYXcsXG4gIFRva2VuVHJhbnNmZXIsXG4gIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24sXG4gIFRyYW5zZmVyLFxuICBUeERhdGEsXG4gIFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSxcbiAgV2FsbGV0SW5pdCxcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBpbnN0cnVjdGlvblBhcmFtc0ZhY3RvcnkgfSBmcm9tICcuL2luc3RydWN0aW9uUGFyYW1zRmFjdG9yeSc7XG5pbXBvcnQge1xuICBnZXRJbnN0cnVjdGlvblR5cGUsXG4gIGdldFRyYW5zYWN0aW9uVHlwZSxcbiAgaXNWYWxpZFJhd1RyYW5zYWN0aW9uLFxuICByZXF1aXJlc0FsbFNpZ25hdHVyZXMsXG4gIHZhbGlkYXRlUmF3TXNnSW5zdHJ1Y3Rpb24sXG59IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgU29sU3Rha2luZ1R5cGVFbnVtIH0gZnJvbSAnQGJpdGdvL3B1YmxpYy10eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByb3RlY3RlZCBfc29sVHJhbnNhY3Rpb246IFNvbFRyYW5zYWN0aW9uO1xuICBwcml2YXRlIF9sYW1wb3J0c1BlclNpZ25hdHVyZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF90b2tlbkFjY291bnRSZW50RXhlbXB0QW1vdW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBfdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuICBwcm90ZWN0ZWQgX2luc3RydWN0aW9uc0RhdGE6IEluc3RydWN0aW9uUGFyYW1zW10gPSBbXTtcbiAgcHJpdmF0ZSBfdXNlVG9rZW5BZGRyZXNzVG9rZW5OYW1lID0gZmFsc2U7XG4gIHByaXZhdGUgX3ZlcnNpb25lZFRyYW5zYWN0aW9uOiBWZXJzaW9uZWRUcmFuc2FjdGlvbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfdmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhOiBWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX3YxVHJhbnNhY3Rpb25CeXRlczogVWludDhBcnJheSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfdjFNZXNzYWdlQnl0ZXM6IFVpbnQ4QXJyYXkgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0IHNvbFRyYW5zYWN0aW9uKCk6IFNvbFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fc29sVHJhbnNhY3Rpb247XG4gIH1cblxuICBzZXQgc29sVHJhbnNhY3Rpb24odHg6IFNvbFRyYW5zYWN0aW9uKSB7XG4gICAgdGhpcy5fc29sVHJhbnNhY3Rpb24gPSB0eDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IG51bWJlck9mUmVxdWlyZWRTaWduYXR1cmVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3NvbFRyYW5zYWN0aW9uLmNvbXBpbGVNZXNzYWdlKCkuaGVhZGVyLm51bVJlcXVpcmVkU2lnbmF0dXJlcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IG51bWJlck9mQVRBQ3JlYXRpb25JbnN0cnVjdGlvbnMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc29sVHJhbnNhY3Rpb24uaW5zdHJ1Y3Rpb25zLmZpbHRlcihcbiAgICAgIChpbnN0cnVjdGlvbikgPT4gZ2V0SW5zdHJ1Y3Rpb25UeXBlKGluc3RydWN0aW9uKSA9PT0gVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5Jbml0aWFsaXplQXNzb2NpYXRlZFRva2VuQWNjb3VudFxuICAgICkubGVuZ3RoO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGdldCBzaWduYWJsZVBheWxvYWQoKTogQnVmZmVyIHtcbiAgICBpZiAodGhpcy5fdjFNZXNzYWdlQnl0ZXMpIHtcbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbSh0aGlzLl92MU1lc3NhZ2VCeXRlcyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl92ZXJzaW9uZWRUcmFuc2FjdGlvbikge1xuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHRoaXMuX3ZlcnNpb25lZFRyYW5zYWN0aW9uLm1lc3NhZ2Uuc2VyaWFsaXplKCkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc29sVHJhbnNhY3Rpb24uc2VyaWFsaXplTWVzc2FnZSgpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICAvLyBTb2xhbmEgdHJhbnNhY3Rpb24gSUQgPT09IGZpcnN0IHNpZ25hdHVyZTogaHR0cHM6Ly9kb2NzLnNvbGFuYS5jb20vdGVybWlub2xvZ3kjdHJhbnNhY3Rpb24taWRcbiAgICBpZiAodGhpcy5fdjFUcmFuc2FjdGlvbkJ5dGVzKSB7XG4gICAgICAvLyB2MSB3aXJlIGZvcm1hdDogbWVzc2FnZUJ5dGVzIGZvbGxvd2VkIGJ5IDY0LWJ5dGUgc2lnbmF0dXJlczsgdGhlIGZpcnN0IHNpZ25hdHVyZSBpcyB0aGUgdHggaWRcbiAgICAgIGNvbnN0IG51bVJlcXVpcmVkID0gdGhpcy5fdjFUcmFuc2FjdGlvbkJ5dGVzWzFdO1xuICAgICAgY29uc3Qgc2lnU3RhcnQgPSB0aGlzLl92MVRyYW5zYWN0aW9uQnl0ZXMubGVuZ3RoIC0gbnVtUmVxdWlyZWQgKiA2NDtcbiAgICAgIGlmIChudW1SZXF1aXJlZCA+IDAgJiYgc2lnU3RhcnQgPj0gMCkge1xuICAgICAgICBjb25zdCBzaWcgPSB0aGlzLl92MVRyYW5zYWN0aW9uQnl0ZXMuc2xpY2Uoc2lnU3RhcnQsIHNpZ1N0YXJ0ICsgNjQpO1xuICAgICAgICBpZiAoc2lnLnNvbWUoKGJ5dGUpID0+IGJ5dGUgIT09IDApKSB7XG4gICAgICAgICAgcmV0dXJuIGJhc2U1OC5lbmNvZGUoc2lnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl92ZXJzaW9uZWRUcmFuc2FjdGlvbikge1xuICAgICAgY29uc3Qgc2lnID0gdGhpcy5fdmVyc2lvbmVkVHJhbnNhY3Rpb24uc2lnbmF0dXJlcz8uWzBdO1xuICAgICAgLy8gQ2hlY2sgaWYgc2lnbmF0dXJlIGV4aXN0cyBhbmQgaXMgbm90IGEgcGxhY2Vob2xkZXIgc2lnbmF0dXJlIChhbGwgemVyb3MpXG4gICAgICBpZiAoc2lnICYmIHNpZy5zb21lKChieXRlKSA9PiBieXRlICE9PSAwKSkge1xuICAgICAgICByZXR1cm4gYmFzZTU4LmVuY29kZShzaWcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zb2xUcmFuc2FjdGlvbi5zaWduYXR1cmUpIHtcbiAgICAgIHJldHVybiBiYXNlNTguZW5jb2RlKHRoaXMuX3NvbFRyYW5zYWN0aW9uLnNpZ25hdHVyZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFVOQVZBSUxBQkxFX1RFWFQ7XG4gIH1cblxuICBnZXQgbGFtcG9ydHNQZXJTaWduYXR1cmUoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fbGFtcG9ydHNQZXJTaWduYXR1cmU7XG4gIH1cblxuICBzZXQgbGFtcG9ydHNQZXJTaWduYXR1cmUobGFtcG9ydHNQZXJTaWduYXR1cmU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2xhbXBvcnRzUGVyU2lnbmF0dXJlID0gbGFtcG9ydHNQZXJTaWduYXR1cmU7XG4gIH1cblxuICBnZXQgdG9rZW5BY2NvdW50UmVudEV4ZW1wdEFtb3VudCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl90b2tlbkFjY291bnRSZW50RXhlbXB0QW1vdW50O1xuICB9XG5cbiAgc2V0IHRva2VuQWNjb3VudFJlbnRFeGVtcHRBbW91bnQodG9rZW5BY2NvdW50UmVudEV4ZW1wdEFtb3VudDogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fdG9rZW5BY2NvdW50UmVudEV4ZW1wdEFtb3VudCA9IHRva2VuQWNjb3VudFJlbnRFeGVtcHRBbW91bnQ7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZ2V0IHNpZ25hdHVyZSgpOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgc2lnbmF0dXJlczogc3RyaW5nW10gPSBbXTtcblxuICAgIGlmICh0aGlzLl92ZXJzaW9uZWRUcmFuc2FjdGlvbikge1xuICAgICAgLy8gSGFuZGxlIFZlcnNpb25lZFRyYW5zYWN0aW9uIHNpZ25hdHVyZXNcbiAgICAgIGZvciAoY29uc3Qgc2lnIG9mIHRoaXMuX3ZlcnNpb25lZFRyYW5zYWN0aW9uLnNpZ25hdHVyZXMpIHtcbiAgICAgICAgLy8gRmlsdGVycyBvdXQgcGxhY2Vob2xkZXIgc2lnbmF0dXJlc1xuICAgICAgICBpZiAoc2lnICYmIHNpZy5zb21lKChiKSA9PiBiICE9PSAwKSkge1xuICAgICAgICAgIHNpZ25hdHVyZXMucHVzaChiYXNlNTguZW5jb2RlKHNpZykpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEhhbmRsZSBsZWdhY3kgdHJhbnNhY3Rpb24gc2lnbmF0dXJlc1xuICAgICAgZm9yIChjb25zdCBzb2xTaWduYXR1cmUgb2YgdGhpcy5fc29sVHJhbnNhY3Rpb24uc2lnbmF0dXJlcykge1xuICAgICAgICBpZiAoc29sU2lnbmF0dXJlLnNpZ25hdHVyZSkge1xuICAgICAgICAgIHNpZ25hdHVyZXMucHVzaChiYXNlNTguZW5jb2RlKHNvbFNpZ25hdHVyZS5zaWduYXR1cmUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzaWduYXR1cmVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHRyYW5zYWN0aW9uVHlwZSBUaGUgdHJhbnNhY3Rpb24gdHlwZSB0byBiZSBzZXQuXG4gICAqL1xuICBzZXRUcmFuc2FjdGlvblR5cGUodHJhbnNhY3Rpb25UeXBlOiBUcmFuc2FjdGlvblR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLl90eXBlID0gdHJhbnNhY3Rpb25UeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgaW5zdHJ1Y3Rpb25EYXRhLlxuICAgKlxuICAgKiBAcGFyYW0ge0luc3RydWN0aW9uUGFyYW1zW119IGluc3RydWN0aW9uRGF0YSBUaGUgaW5zdHJ1Y3Rpb24gZGF0YSB0byBiZSBzZXQuXG4gICAqL1xuICBzZXRJbnN0cnVjdGlvbnNEYXRhKGluc3RydWN0aW9uRGF0YTogSW5zdHJ1Y3Rpb25QYXJhbXNbXSk6IHZvaWQge1xuICAgIHRoaXMuX2luc3RydWN0aW9uc0RhdGEgPSBpbnN0cnVjdGlvbkRhdGE7XG4gIH1cblxuICBnZXQgdXNlVG9rZW5BZGRyZXNzVG9rZW5OYW1lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl91c2VUb2tlbkFkZHJlc3NUb2tlbk5hbWU7XG4gIH1cblxuICBzZXRVc2VUb2tlbkFkZHJlc3NUb2tlbk5hbWUodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl91c2VUb2tlbkFkZHJlc3NUb2tlbk5hbWUgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGlzIHRyYW5zYWN0aW9uIGlzIGEgVmVyc2lvbmVkVHJhbnNhY3Rpb25cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhpcyBpcyBhIFZlcnNpb25lZFRyYW5zYWN0aW9uXG4gICAqL1xuICBpc1ZlcnNpb25lZFRyYW5zYWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX3ZlcnNpb25lZFRyYW5zYWN0aW9uIHx8ICEhdGhpcy5fdmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhIHx8ICEhdGhpcy5fdjFUcmFuc2FjdGlvbkJ5dGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc2VyaWFsaXplZCB2MSB3aXJlIHRyYW5zYWN0aW9uIGJ5dGVzIChtZXNzYWdlICsgc2lnbmF0dXJlcyksIGlmIHRoaXMgdHJhbnNhY3Rpb24gaXMgdjFcbiAgICogQHJldHVybnMge1VpbnQ4QXJyYXkgfCB1bmRlZmluZWR9IFRoZSB2MSB3aXJlIGJ5dGVzIG9yIHVuZGVmaW5lZFxuICAgKi9cbiAgZ2V0IHYxVHJhbnNhY3Rpb25CeXRlcygpOiBVaW50OEFycmF5IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fdjFUcmFuc2FjdGlvbkJ5dGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc2VyaWFsaXplZCB2MSB3aXJlIHRyYW5zYWN0aW9uIGJ5dGVzIChtZXNzYWdlICsgc2lnbmF0dXJlcylcbiAgICogQHBhcmFtIHtVaW50OEFycmF5IHwgdW5kZWZpbmVkfSBieXRlcyBUaGUgdjEgd2lyZSBieXRlcyB0byBzdG9yZSwgb3IgdW5kZWZpbmVkIHRvIGNsZWFyXG4gICAqL1xuICBzZXQgdjFUcmFuc2FjdGlvbkJ5dGVzKGJ5dGVzOiBVaW50OEFycmF5IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fdjFUcmFuc2FjdGlvbkJ5dGVzID0gYnl0ZXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzZXJpYWxpemVkIHYxIG1lc3NhZ2UgYnl0ZXMgKHdpdGhvdXQgc2lnbmF0dXJlcyksIGlmIHRoaXMgdHJhbnNhY3Rpb24gaXMgdjFcbiAgICogQHJldHVybnMge1VpbnQ4QXJyYXkgfCB1bmRlZmluZWR9IFRoZSB2MSBtZXNzYWdlIGJ5dGVzIG9yIHVuZGVmaW5lZFxuICAgKi9cbiAgZ2V0IHYxTWVzc2FnZUJ5dGVzKCk6IFVpbnQ4QXJyYXkgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl92MU1lc3NhZ2VCeXRlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHNlcmlhbGl6ZWQgdjEgbWVzc2FnZSBieXRlcyAod2l0aG91dCBzaWduYXR1cmVzKVxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXkgfCB1bmRlZmluZWR9IGJ5dGVzIFRoZSB2MSBtZXNzYWdlIGJ5dGVzIHRvIHN0b3JlLCBvciB1bmRlZmluZWQgdG8gY2xlYXJcbiAgICovXG4gIHNldCB2MU1lc3NhZ2VCeXRlcyhieXRlczogVWludDhBcnJheSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3YxTWVzc2FnZUJ5dGVzID0gYnl0ZXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBvcmlnaW5hbCBWZXJzaW9uZWRUcmFuc2FjdGlvbiBpZiB0aGlzIHRyYW5zYWN0aW9uIHdhcyBwYXJzZWQgZnJvbSBvbmVcbiAgICogQHJldHVybnMge1ZlcnNpb25lZFRyYW5zYWN0aW9uIHwgdW5kZWZpbmVkfSBUaGUgVmVyc2lvbmVkVHJhbnNhY3Rpb24gb3IgdW5kZWZpbmVkXG4gICAqL1xuICBnZXQgdmVyc2lvbmVkVHJhbnNhY3Rpb24oKTogVmVyc2lvbmVkVHJhbnNhY3Rpb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl92ZXJzaW9uZWRUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYSBidWlsdCBWZXJzaW9uZWRUcmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge1ZlcnNpb25lZFRyYW5zYWN0aW9ufSB2ZXJzaW9uZWRUeCBUaGUgVmVyc2lvbmVkVHJhbnNhY3Rpb24gdG8gc2V0XG4gICAqL1xuICBzZXQgdmVyc2lvbmVkVHJhbnNhY3Rpb24odmVyc2lvbmVkVHg6IFZlcnNpb25lZFRyYW5zYWN0aW9uIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fdmVyc2lvbmVkVHJhbnNhY3Rpb24gPSB2ZXJzaW9uZWRUeDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHN0b3JlZCBWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGFcbiAgICogQHJldHVybnMge1ZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSB8IHVuZGVmaW5lZH0gVGhlIHN0b3JlZCBkYXRhIG9yIHVuZGVmaW5lZFxuICAgKi9cbiAgZ2V0VmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhKCk6IFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSBmb3IgdGhpcyB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge1ZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSB8IHVuZGVmaW5lZH0gZGF0YSBUaGUgdmVyc2lvbmVkIHRyYW5zYWN0aW9uIGRhdGEgdG8gc3RvcmUsIG9yIHVuZGVmaW5lZCB0byBjbGVhclxuICAgKi9cbiAgc2V0VmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhKGRhdGE6IFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuX3ZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSA9IGRhdGE7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgc2lnbmF0dXJlIHByb2R1Y2VkIGJ5IHRoZSBmZWUgcGF5ZXIgb2YgdGhpcyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogVGhlIGZlZSBwYXllciBpcyBhY2NvdW50IDAgb2YgdGhlIHRyYW5zYWN0aW9uIG1lc3NhZ2UsIHNvIGl0cyBzaWduYXR1cmUgYmVsb25ncyBpbiBzbG90IDAuXG4gICAqIFVzZSB0aGlzIGZvciBzaWduYXR1cmVzIHByb2R1Y2VkIGJ5IHRoZSBlbnRlcnByaXNlIGZlZSBhZGRyZXNzIGtleSAoSFNNIHNpbmdsZS1zaWcpIG9mIGFcbiAgICogc3BvbnNvcmVkIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge0Jhc2VQdWJsaWNLZXl9IHB1YmxpY0tleSBUaGUgcHVibGljIGtleSBvZiB0aGUgZmVlIHBheWVyOyBtdXN0IGJlIGFjY291bnQgMCBvZiB0aGUgbWVzc2FnZVxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gc2lnbmF0dXJlIFRoZSBzaWduYXR1cmUgb2YgdGhlIHRyYW5zYWN0aW9uIHBheWxvYWRcbiAgICovXG4gIGFkZEZlZVBheWVyU2lnbmF0dXJlKHB1YmxpY0tleTogQmFzZVB1YmxpY0tleSwgc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdmVyc2lvbmVkVHJhbnNhY3Rpb24pIHtcbiAgICAgIGNvbnN0IGFjY291bnQwID0gdGhpcy5fdmVyc2lvbmVkVHJhbnNhY3Rpb24ubWVzc2FnZS5zdGF0aWNBY2NvdW50S2V5c1swXT8udG9CYXNlNTgoKTtcbiAgICAgIGlmIChwdWJsaWNLZXkucHViICE9PSBhY2NvdW50MCkge1xuICAgICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKGBGZWUgcGF5ZXIgc2lnbmF0dXJlIG11c3QgY29tZSBmcm9tIGFjY291bnQgMCBvZiB0aGUgbWVzc2FnZSwgZ290OiAke3B1YmxpY0tleS5wdWJ9YCk7XG4gICAgICB9XG4gICAgICB0aGlzLl92ZXJzaW9uZWRUcmFuc2FjdGlvbi5hZGRTaWduYXR1cmUobmV3IFB1YmxpY0tleShwdWJsaWNLZXkucHViKSwgc2lnbmF0dXJlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc29sVHJhbnNhY3Rpb24pIHtcbiAgICAgIC8vIEZvciBsZWdhY3kgdHJhbnNhY3Rpb25zIEBzb2xhbmEvd2ViMy5qcyBwbGFjZXMgdGhlIGZlZSBwYXllciBmaXJzdCBpbiB0aGUgbWVzc2FnZVxuICAgICAgY29uc3QgZmVlUGF5ZXIgPSB0aGlzLl9zb2xUcmFuc2FjdGlvbi5mZWVQYXllcj8udG9CYXNlNTgoKTtcbiAgICAgIGlmIChwdWJsaWNLZXkucHViICE9PSBmZWVQYXllcikge1xuICAgICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKGBGZWUgcGF5ZXIgc2lnbmF0dXJlIG11c3QgY29tZSBmcm9tIGFjY291bnQgMCBvZiB0aGUgbWVzc2FnZSwgZ290OiAke3B1YmxpY0tleS5wdWJ9YCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9zb2xUcmFuc2FjdGlvbi5hZGRTaWduYXR1cmUobmV3IFB1YmxpY0tleShwdWJsaWNLZXkucHViKSwgc2lnbmF0dXJlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdGZWUgcGF5ZXIgc2lnbmF0dXJlIHJlcXVpcmVzIGEgYnVpbHQgdHJhbnNhY3Rpb24nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ25zIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge0tleVBhaXJ9IGtleVBhaXIgU2lnbmVyIGtleXMuXG4gICAqL1xuICBhc3luYyBzaWduKGtleVBhaXI6IEtleVBhaXJbXSB8IEtleVBhaXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBDb252ZXJ0IHRvIGFycmF5IGFuZCBidWlsZCBzaWduZXJzIGxpc3RcbiAgICBjb25zdCBrZXlQYWlycyA9IGtleVBhaXIgaW5zdGFuY2VvZiBBcnJheSA/IGtleVBhaXIgOiBba2V5UGFpcl07XG4gICAgY29uc3Qgc2lnbmVyczogU2lnbmVyW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGtwIG9mIGtleVBhaXJzKSB7XG4gICAgICBjb25zdCBrZXlzID0ga3AuZ2V0S2V5cyh0cnVlKTtcbiAgICAgIGlmICgha2V5cy5wcnYpIHtcbiAgICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignTWlzc2luZyBwcml2YXRlIGtleScpO1xuICAgICAgfVxuICAgICAgc2lnbmVycy5wdXNoKHsgcHVibGljS2V5OiBuZXcgUHVibGljS2V5KGtleXMucHViKSwgc2VjcmV0S2V5OiBrZXlzLnBydiBhcyBVaW50OEFycmF5IH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl92ZXJzaW9uZWRUcmFuc2FjdGlvbikge1xuICAgICAgaWYgKCF0aGlzLl92ZXJzaW9uZWRUcmFuc2FjdGlvbi5tZXNzYWdlLnJlY2VudEJsb2NraGFzaCkge1xuICAgICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdOb25jZSBpcyByZXF1aXJlZCBiZWZvcmUgc2lnbmluZycpO1xuICAgICAgfVxuICAgICAgdGhpcy5fdmVyc2lvbmVkVHJhbnNhY3Rpb24uc2lnbihzaWduZXJzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX3NvbFRyYW5zYWN0aW9uIHx8ICF0aGlzLl9zb2xUcmFuc2FjdGlvbi5yZWNlbnRCbG9ja2hhc2gpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ05vbmNlIGlzIHJlcXVpcmVkIGJlZm9yZSBzaWduaW5nJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fc29sVHJhbnNhY3Rpb24gfHwgIXRoaXMuX3NvbFRyYW5zYWN0aW9uLmZlZVBheWVyKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdmZWVQYXllciBpcyByZXF1aXJlZCBiZWZvcmUgc2lnbmluZycpO1xuICAgIH1cbiAgICB0aGlzLl9zb2xUcmFuc2FjdGlvbi5wYXJ0aWFsU2lnbiguLi5zaWduZXJzKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl92MVRyYW5zYWN0aW9uQnl0ZXMpIHtcbiAgICAgIC8vIHYxIHdpcmUgZm9ybWF0IGlzIG1lc3NhZ2UtZmlyc3Qgd2l0aCBzaWduYXR1cmVzIGFwcGVuZGVkIChubyBsZW5ndGggcHJlZml4KVxuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHRoaXMuX3YxVHJhbnNhY3Rpb25CeXRlcykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl92ZXJzaW9uZWRUcmFuc2FjdGlvbikge1xuICAgICAgLy8gVmVyc2lvbmVkVHJhbnNhY3Rpb24uc2VyaWFsaXplKCkgZG9lc24ndCBuZWVkIHJlcXVpcmVBbGxTaWduYXR1cmVzIHBhcmFtZXRlclxuICAgICAgLy8gSXQgYXV0b21hdGljYWxseSBoYW5kbGVzIHdoYXRldmVyIHNpZ25hdHVyZXMgYXJlIHByZXNlbnRcbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbSh0aGlzLl92ZXJzaW9uZWRUcmFuc2FjdGlvbi5zZXJpYWxpemUoKSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fc29sVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIC8vIFRoZSBzaWduYXR1cmVzIGNhbiBoYXZlIG51bGwgc2lnbmF0dXJlcyAod2hpY2ggbWVhbnMgdGhleSBhcmUgcmVxdWlyZWQgYnV0IHlldCB1bnNpZ25lZClcbiAgICAvLyBJbiBvcmRlciB0byBiZSBhYmxlIHRvIHNlcmlhbGl6ZXIgdGhlIHR4cywgd2UgaGF2ZSB0byBjaGFuZ2UgdGhlIHJlcXVpcmVBbGxTaWduYXR1cmVzIGJhc2VkXG4gICAgLy8gb24gaWYgdGhlIFRYIGlzIGZ1bGx5IHNpZ25lZCBvciBub3RcbiAgICBjb25zdCByZXF1aXJlQWxsU2lnbmF0dXJlcyA9IHJlcXVpcmVzQWxsU2lnbmF0dXJlcyh0aGlzLl9zb2xUcmFuc2FjdGlvbi5zaWduYXR1cmVzKTtcbiAgICAvLyBCYXNlZCBvbiB0aGUgcmVjb21lbmRhdGlvbiBlbmNvZGluZyBmb3VuZCBoZXJlIGh0dHBzOi8vZG9jcy5zb2xhbmEuY29tL2RldmVsb3BpbmcvY2xpZW50cy9qc29ucnBjLWFwaSNzZW5kdHJhbnNhY3Rpb25cbiAgICAvLyBXZSB1c2UgYmFzZTY0IGVuY29kaW5nXG4gICAgcmV0dXJuIHRoaXMuX3NvbFRyYW5zYWN0aW9uLnNlcmlhbGl6ZSh7IHJlcXVpcmVBbGxTaWduYXR1cmVzIH0pLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoaXMgdHJhbnNhY3Rpb24gcGF5bG9hZFxuICAgKlxuICAgKiBAcGFyYW0gcmF3VHJhbnNhY3Rpb25cbiAgICovXG4gIGZyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgICB0aGlzLl9zb2xUcmFuc2FjdGlvbiA9IFNvbFRyYW5zYWN0aW9uLmZyb20oQnVmZmVyLmZyb20ocmF3VHJhbnNhY3Rpb24sICdiYXNlNjQnKSk7XG4gICAgICBpZiAodGhpcy5fc29sVHJhbnNhY3Rpb24uc2lnbmF0dXJlICYmIHRoaXMuX3NvbFRyYW5zYWN0aW9uLnNpZ25hdHVyZSAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9pZCA9IGJhc2U1OC5lbmNvZGUodGhpcy5fc29sVHJhbnNhY3Rpb24uc2lnbmF0dXJlKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uVHlwZSA9IGdldFRyYW5zYWN0aW9uVHlwZSh0aGlzLl9zb2xUcmFuc2FjdGlvbik7XG4gICAgICBzd2l0Y2ggKHRyYW5zYWN0aW9uVHlwZSkge1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbjpcbiAgICAgICAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgICAgIHRoaXMuc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlOlxuICAgICAgICAgIHRoaXMuc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nRGVhY3RpdmF0ZTpcbiAgICAgICAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0RlYWN0aXZhdGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXc6XG4gICAgICAgICAgdGhpcy5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkFzc29jaWF0ZWRUb2tlbkFjY291bnRJbml0aWFsaXphdGlvbjpcbiAgICAgICAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuQXNzb2NpYXRlZFRva2VuQWNjb3VudEluaXRpYWxpemF0aW9uKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQ2xvc2VBc3NvY2lhdGVkVG9rZW5BY2NvdW50OlxuICAgICAgICAgIHRoaXMuc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5DbG9zZUFzc29jaWF0ZWRUb2tlbkFjY291bnQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQXV0aG9yaXplOlxuICAgICAgICAgIHRoaXMuc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQXV0aG9yaXplKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0F1dGhvcml6ZVJhdzpcbiAgICAgICAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0F1dGhvcml6ZVJhdyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdEZWxlZ2F0ZTpcbiAgICAgICAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0RlbGVnYXRlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQ3VzdG9tVHg6XG4gICAgICAgICAgdGhpcy5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLkN1c3RvbVR4KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQ29uZmlkZW50aWFsVHJhbnNmZXI6XG4gICAgICAgICAgdGhpcy5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLkNvbmZpZGVudGlhbFRyYW5zZmVyKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmICh0cmFuc2FjdGlvblR5cGUgIT09IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQXV0aG9yaXplUmF3KSB7XG4gICAgICAgIHRoaXMubG9hZElucHV0c0FuZE91dHB1dHMoKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0pzb24oKTogVHhEYXRhIHtcbiAgICBpZiAoIXRoaXMuX3NvbFRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cblxuICAgIGxldCBkdXJhYmxlTm9uY2U6IER1cmFibGVOb25jZVBhcmFtcyB8IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5fc29sVHJhbnNhY3Rpb24ubm9uY2VJbmZvKSB7XG4gICAgICBjb25zdCBub25jZUluc3RydWN0aW9uID0gU3lzdGVtSW5zdHJ1Y3Rpb24uZGVjb2RlTm9uY2VBZHZhbmNlKHRoaXMuX3NvbFRyYW5zYWN0aW9uLm5vbmNlSW5mby5ub25jZUluc3RydWN0aW9uKTtcbiAgICAgIGR1cmFibGVOb25jZSA9IHtcbiAgICAgICAgd2FsbGV0Tm9uY2VBZGRyZXNzOiBub25jZUluc3RydWN0aW9uLm5vbmNlUHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgIGF1dGhXYWxsZXRBZGRyZXNzOiBub25jZUluc3RydWN0aW9uLmF1dGhvcml6ZWRQdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IGluc3RydWN0aW9uRGF0YSA9IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeShcbiAgICAgIHRoaXMuX3R5cGUsXG4gICAgICB0aGlzLl9zb2xUcmFuc2FjdGlvbi5pbnN0cnVjdGlvbnMsXG4gICAgICB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICB0aGlzLl9pbnN0cnVjdGlvbnNEYXRhLFxuICAgICAgdGhpcy5fdXNlVG9rZW5BZGRyZXNzVG9rZW5OYW1lXG4gICAgKTtcbiAgICBpZiAodGhpcy5fdHlwZSkge1xuICAgICAgaWYgKFxuICAgICAgICAhZHVyYWJsZU5vbmNlICYmXG4gICAgICAgIGluc3RydWN0aW9uRGF0YS5sZW5ndGggPiAxICYmXG4gICAgICAgIGluc3RydWN0aW9uRGF0YVswXS50eXBlID09PSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ob25jZUFkdmFuY2VcbiAgICAgICkge1xuICAgICAgICBkdXJhYmxlTm9uY2UgPSBpbnN0cnVjdGlvbkRhdGFbMF0ucGFyYW1zO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByZXN1bHQ6IFR4RGF0YSA9IHtcbiAgICAgIGlkOiB0aGlzLl9zb2xUcmFuc2FjdGlvbi5zaWduYXR1cmUgPyB0aGlzLmlkIDogdW5kZWZpbmVkLFxuICAgICAgZmVlUGF5ZXI6IHRoaXMuX3NvbFRyYW5zYWN0aW9uLmZlZVBheWVyPy50b1N0cmluZygpLFxuICAgICAgbGFtcG9ydHNQZXJTaWduYXR1cmU6IHRoaXMubGFtcG9ydHNQZXJTaWduYXR1cmUsXG4gICAgICBub25jZTogdGhpcy5nZXROb25jZSgpLFxuICAgICAgZHVyYWJsZU5vbmNlOiBkdXJhYmxlTm9uY2UsXG4gICAgICBudW1TaWduYXR1cmVzOiB0aGlzLnNpZ25hdHVyZS5sZW5ndGgsXG4gICAgICBpbnN0cnVjdGlvbnNEYXRhOiBpbnN0cnVjdGlvbkRhdGEsXG4gICAgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbm9uY2UgZnJvbSB0aGUgU29sYW5hIFRyYW5zYWN0aW9uXG4gICAqIFRocm93cyBpZiBub3Qgc2V0XG4gICAqL1xuICBwcml2YXRlIGdldE5vbmNlKCk6IEJsb2NraGFzaCB7XG4gICAgaWYgKHRoaXMuX3NvbFRyYW5zYWN0aW9uLnJlY2VudEJsb2NraGFzaCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NvbFRyYW5zYWN0aW9uLnJlY2VudEJsb2NraGFzaDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3NvbFRyYW5zYWN0aW9uLm5vbmNlSW5mbykge1xuICAgICAgcmV0dXJuIHRoaXMuX3NvbFRyYW5zYWN0aW9uLm5vbmNlSW5mby5ub25jZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdOb25jZSBpcyBub3Qgc2V0Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIGlucHV0IGFuZCBvdXRwdXQgZGF0YSBvbiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgbG9hZElucHV0c0FuZE91dHB1dHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9zb2xUcmFuc2FjdGlvbiB8fCB0aGlzLl9zb2xUcmFuc2FjdGlvbi5pbnN0cnVjdGlvbnM/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvdXRwdXRzOiBFbnRyeVtdID0gW107XG4gICAgY29uc3QgaW5wdXRzOiBFbnRyeVtdID0gW107XG4gICAgY29uc3QgaW5zdHJ1Y3Rpb25QYXJhbXMgPSBpbnN0cnVjdGlvblBhcmFtc0ZhY3RvcnkoXG4gICAgICB0aGlzLnR5cGUsXG4gICAgICB0aGlzLl9zb2xUcmFuc2FjdGlvbi5pbnN0cnVjdGlvbnMsXG4gICAgICB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICB0aGlzLl9pbnN0cnVjdGlvbnNEYXRhLFxuICAgICAgdGhpcy5fdXNlVG9rZW5BZGRyZXNzVG9rZW5OYW1lXG4gICAgKTtcblxuICAgIGZvciAoY29uc3QgaW5zdHJ1Y3Rpb24gb2YgaW5zdHJ1Y3Rpb25QYXJhbXMpIHtcbiAgICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24udHlwZSkge1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNyZWF0ZU5vbmNlQWNjb3VudDpcbiAgICAgICAgICBpbnB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBpbnN0cnVjdGlvbi5wYXJhbXMuZnJvbUFkZHJlc3MsXG4gICAgICAgICAgICB2YWx1ZTogaW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCxcbiAgICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5UcmFuc2ZlcjpcbiAgICAgICAgICBpbnB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBpbnN0cnVjdGlvbi5wYXJhbXMuZnJvbUFkZHJlc3MsXG4gICAgICAgICAgICB2YWx1ZTogaW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCxcbiAgICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBvdXRwdXRzLnB1c2goe1xuICAgICAgICAgICAgYWRkcmVzczogaW5zdHJ1Y3Rpb24ucGFyYW1zLnRvQWRkcmVzcyxcbiAgICAgICAgICAgIHZhbHVlOiBpbnN0cnVjdGlvbi5wYXJhbXMuYW1vdW50LFxuICAgICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlRva2VuVHJhbnNmZXI6XG4gICAgICAgICAgaW5wdXRzLnB1c2goe1xuICAgICAgICAgICAgYWRkcmVzczogaW5zdHJ1Y3Rpb24ucGFyYW1zLmZyb21BZGRyZXNzLFxuICAgICAgICAgICAgdmFsdWU6IGluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgICBjb2luOiBpbnN0cnVjdGlvbi5wYXJhbXMudG9rZW5OYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIG91dHB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBpbnN0cnVjdGlvbi5wYXJhbXMudG9BZGRyZXNzLFxuICAgICAgICAgICAgdmFsdWU6IGluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgICBjb2luOiBpbnN0cnVjdGlvbi5wYXJhbXMudG9rZW5OYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlN0YWtpbmdBY3RpdmF0ZTpcbiAgICAgICAgICBpbnB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBpbnN0cnVjdGlvbi5wYXJhbXMuZnJvbUFkZHJlc3MsXG4gICAgICAgICAgICB2YWx1ZTogaW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCxcbiAgICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoaW5zdHJ1Y3Rpb24ucGFyYW1zLnN0YWtpbmdUeXBlICE9PSBTb2xTdGFraW5nVHlwZUVudW0uSklUTykge1xuICAgICAgICAgICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgICAgICAgYWRkcmVzczogaW5zdHJ1Y3Rpb24ucGFyYW1zLnN0YWtpbmdBZGRyZXNzLFxuICAgICAgICAgICAgICB2YWx1ZTogaW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCxcbiAgICAgICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlN0YWtpbmdEZWFjdGl2YXRlOlxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQgJiZcbiAgICAgICAgICAgIGluc3RydWN0aW9uLnBhcmFtcy51bnN0YWtpbmdBZGRyZXNzICYmXG4gICAgICAgICAgICBpbnN0cnVjdGlvbi5wYXJhbXMuc3Rha2luZ1R5cGUgIT09IFNvbFN0YWtpbmdUeXBlRW51bS5KSVRPXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpbnB1dHMucHVzaCh7XG4gICAgICAgICAgICAgIGFkZHJlc3M6IGluc3RydWN0aW9uLnBhcmFtcy5zdGFraW5nQWRkcmVzcyxcbiAgICAgICAgICAgICAgdmFsdWU6IGluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgICAgICAgYWRkcmVzczogaW5zdHJ1Y3Rpb24ucGFyYW1zLnVuc3Rha2luZ0FkZHJlc3MsXG4gICAgICAgICAgICAgIHZhbHVlOiBpbnN0cnVjdGlvbi5wYXJhbXMuYW1vdW50LFxuICAgICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuU3Rha2luZ1dpdGhkcmF3OlxuICAgICAgICAgIGlucHV0cy5wdXNoKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IGluc3RydWN0aW9uLnBhcmFtcy5zdGFraW5nQWRkcmVzcyxcbiAgICAgICAgICAgIHZhbHVlOiBpbnN0cnVjdGlvbi5wYXJhbXMuYW1vdW50LFxuICAgICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIG91dHB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBpbnN0cnVjdGlvbi5wYXJhbXMuZnJvbUFkZHJlc3MsXG4gICAgICAgICAgICB2YWx1ZTogaW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCxcbiAgICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNsb3NlQXNzb2NpYXRlZFRva2VuQWNjb3VudDpcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5TdGFraW5nQXV0aG9yaXplOlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlN0YWtpbmdEZWxlZ2F0ZTpcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5TZXRDb21wdXRlVW5pdExpbWl0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlNldFByaW9yaXR5RmVlOlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkN1c3RvbUluc3RydWN0aW9uOlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9vdXRwdXRzID0gb3V0cHV0cztcbiAgICB0aGlzLl9pbnB1dHMgPSBpbnB1dHM7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZXhwbGFpblRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIC8vIFRlc3RuZXQgdXNlcyBXQVNNLWJhc2VkIHBhcnNpbmcgKG5vIEBzb2xhbmEvd2ViMy5qcyBkZXBlbmRlbmN5KS5cbiAgICAvLyBUaGlzIHZhbGlkYXRlcyB0aGUgV0FTTSBwYXRoIGFnYWluc3QgcHJvZHVjdGlvbiB0cmFmZmljIGJlZm9yZVxuICAgIC8vIHJlcGxhY2luZyB0aGUgbGVnYWN5IGltcGxlbWVudGF0aW9uIGZvciBhbGwgbmV0d29ya3MuXG4gICAgaWYgKHRoaXMuX2NvaW5Db25maWcubmFtZSA9PT0gJ3Rzb2wnKSB7XG4gICAgICAvLyBleHBsYWluVHJhbnNhY3Rpb24gc2hvdWxkIHdvcmsgb24gdW5zaWduZWQvcGFydGlhbGx5LXNpZ25lZCB0cmFuc2FjdGlvbnNcbiAgICAgIC8vIChlLmcuLCBkdXJpbmcgcGFyc2VUcmFuc2FjdGlvbiByb3VuZC10cmlwcyB3aGVyZSBudWxsIHNpZ25hdHVyZXMgYmVjb21lXG4gICAgICAvLyB6ZXJvLWZpbGxlZCBidWZmZXJzKS4gVXNlIHNlcmlhbGl6ZSB3aXRob3V0IHNpZ25hdHVyZSB2YWxpZGF0aW9uIHNpbmNlXG4gICAgICAvLyB3ZSBvbmx5IG5lZWQgdG8gcmVhZCB0aGUgdHJhbnNhY3Rpb24sIG5vdCBicm9hZGNhc3QgaXQuXG4gICAgICBjb25zdCB0eEJhc2U2NCA9IEJ1ZmZlci5mcm9tKFxuICAgICAgICB0aGlzLl9zb2xUcmFuc2FjdGlvbi5zZXJpYWxpemUoeyB2ZXJpZnlTaWduYXR1cmVzOiBmYWxzZSwgcmVxdWlyZUFsbFNpZ25hdHVyZXM6IGZhbHNlIH0pXG4gICAgICApLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgIHJldHVybiBleHBsYWluU29sVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eEJhc2U2NCxcbiAgICAgICAgZmVlSW5mbzogdGhpcy5fbGFtcG9ydHNQZXJTaWduYXR1cmUgPyB7IGZlZTogdGhpcy5fbGFtcG9ydHNQZXJTaWduYXR1cmUudG9TdHJpbmcoKSB9IDogdW5kZWZpbmVkLFxuICAgICAgICB0b2tlbkFjY291bnRSZW50RXhlbXB0QW1vdW50OiB0aGlzLl90b2tlbkFjY291bnRSZW50RXhlbXB0QW1vdW50LFxuICAgICAgICBjb2luTmFtZTogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlUmF3TXNnSW5zdHJ1Y3Rpb24odGhpcy5fc29sVHJhbnNhY3Rpb24uaW5zdHJ1Y3Rpb25zKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZXhwbGFpblJhd01zZ0F1dGhvcml6ZVRyYW5zYWN0aW9uKCk7XG4gICAgfVxuICAgIGNvbnN0IGRlY29kZWRJbnN0cnVjdGlvbnMgPSBpbnN0cnVjdGlvblBhcmFtc0ZhY3RvcnkoXG4gICAgICB0aGlzLl90eXBlLFxuICAgICAgdGhpcy5fc29sVHJhbnNhY3Rpb24uaW5zdHJ1Y3Rpb25zLFxuICAgICAgdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgdGhpcy5faW5zdHJ1Y3Rpb25zRGF0YSxcbiAgICAgIHRoaXMuX3VzZVRva2VuQWRkcmVzc1Rva2VuTmFtZVxuICAgICk7XG5cbiAgICBsZXQgbWVtbzogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGxldCBkdXJhYmxlTm9uY2U6IER1cmFibGVOb25jZVBhcmFtcyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIGxldCBvdXRwdXRBbW91bnQgPSBuZXcgQmlnTnVtYmVyKDApO1xuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10gPSBbXTtcbiAgICAvLyBDcmVhdGUgYSBzZXBhcmF0ZSBhcnJheSBmb3IgdG9rZW4gZW5hYmxlbWVudHNcbiAgICBjb25zdCB0b2tlbkVuYWJsZW1lbnRzOiBJVG9rZW5FbmFibGVtZW50W10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgaW5zdHJ1Y3Rpb24gb2YgZGVjb2RlZEluc3RydWN0aW9ucykge1xuICAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi50eXBlKSB7XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTm9uY2VBZHZhbmNlOlxuICAgICAgICAgIGR1cmFibGVOb25jZSA9IChpbnN0cnVjdGlvbiBhcyBOb25jZSkucGFyYW1zO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk1lbW86XG4gICAgICAgICAgbWVtbyA9IChpbnN0cnVjdGlvbiBhcyBNZW1vKS5wYXJhbXMubWVtbztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5UcmFuc2ZlcjpcbiAgICAgICAgICBjb25zdCB0cmFuc2Zlckluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb24gYXMgVHJhbnNmZXI7XG4gICAgICAgICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHRyYW5zZmVySW5zdHJ1Y3Rpb24ucGFyYW1zLnRvQWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudDogdHJhbnNmZXJJbnN0cnVjdGlvbi5wYXJhbXMuYW1vdW50LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIG91dHB1dEFtb3VudCA9IG91dHB1dEFtb3VudC5wbHVzKHRyYW5zZmVySW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuVG9rZW5UcmFuc2ZlcjpcbiAgICAgICAgICBjb25zdCB0b2tlblRyYW5zZmVySW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbiBhcyBUb2tlblRyYW5zZmVyO1xuICAgICAgICAgIG91dHB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiB0b2tlblRyYW5zZmVySW5zdHJ1Y3Rpb24ucGFyYW1zLnRvQWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudDogdG9rZW5UcmFuc2Zlckluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgICB0b2tlbk5hbWU6IHRva2VuVHJhbnNmZXJJbnN0cnVjdGlvbi5wYXJhbXMudG9rZW5OYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNyZWF0ZU5vbmNlQWNjb3VudDpcbiAgICAgICAgICBjb25zdCBjcmVhdGVJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uIGFzIFdhbGxldEluaXQ7XG4gICAgICAgICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IGNyZWF0ZUluc3RydWN0aW9uLnBhcmFtcy5ub25jZUFkZHJlc3MsXG4gICAgICAgICAgICBhbW91bnQ6IGNyZWF0ZUluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgb3V0cHV0QW1vdW50ID0gb3V0cHV0QW1vdW50LnBsdXMoY3JlYXRlSW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuU3Rha2luZ0FjdGl2YXRlOlxuICAgICAgICAgIGNvbnN0IHN0YWtpbmdBY3RpdmF0ZUluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb24gYXMgU3Rha2luZ0FjdGl2YXRlO1xuICAgICAgICAgIG91dHB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBzdGFraW5nQWN0aXZhdGVJbnN0cnVjdGlvbi5wYXJhbXMuc3Rha2luZ0FkZHJlc3MsXG4gICAgICAgICAgICBhbW91bnQ6IHN0YWtpbmdBY3RpdmF0ZUluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgb3V0cHV0QW1vdW50ID0gb3V0cHV0QW1vdW50LnBsdXMoc3Rha2luZ0FjdGl2YXRlSW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuU3Rha2luZ1dpdGhkcmF3OlxuICAgICAgICAgIGNvbnN0IHN0YWtpbmdXaXRoZHJhd0luc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb24gYXMgU3Rha2luZ1dpdGhkcmF3O1xuICAgICAgICAgIG91dHB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBzdGFraW5nV2l0aGRyYXdJbnN0cnVjdGlvbi5wYXJhbXMuZnJvbUFkZHJlc3MsXG4gICAgICAgICAgICBhbW91bnQ6IHN0YWtpbmdXaXRoZHJhd0luc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgb3V0cHV0QW1vdW50ID0gb3V0cHV0QW1vdW50LnBsdXMoc3Rha2luZ1dpdGhkcmF3SW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudDpcbiAgICAgICAgICAvLyBQcm9jZXNzIHRva2VuIGVuYWJsZW1lbnQgaW5zdHJ1Y3Rpb25zIGFuZCBjb2xsZWN0IHRoZW0gaW4gdGhlIHRva2VuRW5hYmxlbWVudHMgYXJyYXlcbiAgICAgICAgICBjb25zdCBhdGFJbml0ID0gaW5zdHJ1Y3Rpb24gYXMgQXRhSW5pdDtcbiAgICAgICAgICB0b2tlbkVuYWJsZW1lbnRzLnB1c2goe1xuICAgICAgICAgICAgYWRkcmVzczogYXRhSW5pdC5wYXJhbXMuYXRhQWRkcmVzcyxcbiAgICAgICAgICAgIHRva2VuTmFtZTogYXRhSW5pdC5wYXJhbXMudG9rZW5OYW1lLFxuICAgICAgICAgICAgdG9rZW5BZGRyZXNzOiBhdGFJbml0LnBhcmFtcy5taW50QWRkcmVzcyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DdXN0b21JbnN0cnVjdGlvbjpcbiAgICAgICAgICAvLyBDdXN0b20gaW5zdHJ1Y3Rpb25zIGFyZSBhcmJpdHJhcnkgYW5kIGNhbm5vdCBiZSBleHBsYWluZWRcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQWZ0ZXIgZGVzZXJpYWxpemluZyBhIHRyYW5zYWN0aW9uLCBkdXJhYmxlIG5vbmNlIGRldGFpbHMgYXJlIHBvcHVsYXRlZCBpbiB0aGUgbm9uY2VJbmZvIGZpZWxkXG4gICAgICBpZiAoIWR1cmFibGVOb25jZSAmJiB0aGlzLl9zb2xUcmFuc2FjdGlvbi5ub25jZUluZm8pIHtcbiAgICAgICAgY29uc3Qgbm9uY2VBZHZhbmNlSW5zdHJ1Y3Rpb24gPSBTeXN0ZW1JbnN0cnVjdGlvbi5kZWNvZGVOb25jZUFkdmFuY2UoXG4gICAgICAgICAgdGhpcy5fc29sVHJhbnNhY3Rpb24ubm9uY2VJbmZvLm5vbmNlSW5zdHJ1Y3Rpb25cbiAgICAgICAgKTtcbiAgICAgICAgZHVyYWJsZU5vbmNlID0ge1xuICAgICAgICAgIGF1dGhXYWxsZXRBZGRyZXNzOiBub25jZUFkdmFuY2VJbnN0cnVjdGlvbi5hdXRob3JpemVkUHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgd2FsbGV0Tm9uY2VBZGRyZXNzOiBub25jZUFkdmFuY2VJbnN0cnVjdGlvbi5ub25jZVB1YmtleS50b1N0cmluZygpLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldEV4cGxhaW5lZFRyYW5zYWN0aW9uKG91dHB1dEFtb3VudCwgb3V0cHV0cywgbWVtbywgZHVyYWJsZU5vbmNlLCB0b2tlbkVuYWJsZW1lbnRzKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlRmVlKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMubGFtcG9ydHNQZXJTaWduYXR1cmUgfHwgdGhpcy50b2tlbkFjY291bnRSZW50RXhlbXB0QW1vdW50KSB7XG4gICAgICBjb25zdCBzaWduYXR1cmVGZWVzID0gdGhpcy5sYW1wb3J0c1BlclNpZ25hdHVyZVxuICAgICAgICA/IG5ldyBCaWdOdW1iZXIodGhpcy5sYW1wb3J0c1BlclNpZ25hdHVyZSkubXVsdGlwbGllZEJ5KHRoaXMubnVtYmVyT2ZSZXF1aXJlZFNpZ25hdHVyZXMpLnRvRml4ZWQoMClcbiAgICAgICAgOiAwO1xuICAgICAgY29uc3QgcmVudEZlZXMgPSB0aGlzLnRva2VuQWNjb3VudFJlbnRFeGVtcHRBbW91bnRcbiAgICAgICAgPyBuZXcgQmlnTnVtYmVyKHRoaXMudG9rZW5BY2NvdW50UmVudEV4ZW1wdEFtb3VudCkubXVsdGlwbGllZEJ5KHRoaXMubnVtYmVyT2ZBVEFDcmVhdGlvbkluc3RydWN0aW9ucykudG9GaXhlZCgwKVxuICAgICAgICA6IDA7XG4gICAgICByZXR1cm4gbmV3IEJpZ051bWJlcihzaWduYXR1cmVGZWVzKS5wbHVzKHJlbnRGZWVzKS50b0ZpeGVkKDApO1xuICAgIH1cbiAgICByZXR1cm4gVU5BVkFJTEFCTEVfVEVYVDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRFeHBsYWluZWRUcmFuc2FjdGlvbihcbiAgICBvdXRwdXRBbW91bnQ6IEJpZ051bWJlcixcbiAgICBvdXRwdXRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdLFxuICAgIG1lbW86IHVuZGVmaW5lZCB8IHN0cmluZyA9IHVuZGVmaW5lZCxcbiAgICBkdXJhYmxlTm9uY2U6IHVuZGVmaW5lZCB8IER1cmFibGVOb25jZVBhcmFtcyA9IHVuZGVmaW5lZCxcbiAgICB0b2tlbkVuYWJsZW1lbnRzOiBJVG9rZW5FbmFibGVtZW50W10gPSBbXVxuICApOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICBjb25zdCBmZWVTdHJpbmcgPSB0aGlzLmNhbGN1bGF0ZUZlZSgpO1xuXG4gICAgLy8gQ3JlYXRlIGRpc3BsYXlPcmRlciB3aXRoIHRva2VuRW5hYmxlbWVudHMgYWx3YXlzIGluY2x1ZGVkXG4gICAgY29uc3QgZGlzcGxheU9yZGVyID0gW1xuICAgICAgJ2lkJyxcbiAgICAgICd0eXBlJyxcbiAgICAgICdibG9ja2hhc2gnLFxuICAgICAgJ2R1cmFibGVOb25jZScsXG4gICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgJ291dHB1dHMnLFxuICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgJ3Rva2VuRW5hYmxlbWVudHMnLFxuICAgICAgJ2ZlZScsXG4gICAgICAnbWVtbycsXG4gICAgXTtcblxuICAgIC8vIENyZWF0ZSB0aGUgYmFzZSBleHBsYW5hdGlvbiBvYmplY3Qgd2l0aCB0b2tlbkVuYWJsZW1lbnRzIGFsd2F5cyBpbmNsdWRlZFxuICAgIGNvbnN0IGV4cGxhbmF0aW9uOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uID0ge1xuICAgICAgZGlzcGxheU9yZGVyLFxuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGVbdGhpcy50eXBlXS50b1N0cmluZygpLFxuICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgIG91dHB1dEFtb3VudDogb3V0cHV0QW1vdW50LnRvRml4ZWQoMCksXG4gICAgICBvdXRwdXRzOiBvdXRwdXRzLFxuICAgICAgZmVlOiB7XG4gICAgICAgIGZlZTogZmVlU3RyaW5nLFxuICAgICAgICBmZWVSYXRlOiB0aGlzLmxhbXBvcnRzUGVyU2lnbmF0dXJlLFxuICAgICAgfSxcbiAgICAgIG1lbW86IG1lbW8sXG4gICAgICBibG9ja2hhc2g6IHRoaXMuZ2V0Tm9uY2UoKSxcbiAgICAgIGR1cmFibGVOb25jZTogZHVyYWJsZU5vbmNlLFxuICAgICAgdG9rZW5FbmFibGVtZW50czogdG9rZW5FbmFibGVtZW50cyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGV4cGxhbmF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBleHBsYWluUmF3TXNnQXV0aG9yaXplVHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgY29uc3QgeyBpbnN0cnVjdGlvbnMgfSA9IHRoaXMuX3NvbFRyYW5zYWN0aW9uO1xuICAgIGNvbnN0IG5vbmNlSW5zdHJ1Y3Rpb24gPSBTeXN0ZW1JbnN0cnVjdGlvbi5kZWNvZGVOb25jZUFkdmFuY2UoaW5zdHJ1Y3Rpb25zWzBdKTtcbiAgICBjb25zdCBkdXJhYmxlTm9uY2UgPSB7XG4gICAgICB3YWxsZXROb25jZUFkZHJlc3M6IG5vbmNlSW5zdHJ1Y3Rpb24ubm9uY2VQdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgIGF1dGhXYWxsZXRBZGRyZXNzOiBub25jZUluc3RydWN0aW9uLmF1dGhvcml6ZWRQdWJrZXkudG9TdHJpbmcoKSxcbiAgICB9O1xuICAgIGNvbnN0IGRhdGEgPSBpbnN0cnVjdGlvbnNbMV0uZGF0YS50b1N0cmluZygnaGV4Jyk7XG4gICAgY29uc3Qgc3Rha2luZ0F1dGhvcml6ZVBhcmFtczogU3Rha2luZ0F1dGhvcml6ZVBhcmFtcyA9XG4gICAgICBkYXRhID09PSB2YWxpZEluc3RydWN0aW9uRGF0YVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHN0YWtpbmdBZGRyZXNzOiBpbnN0cnVjdGlvbnNbMV0ua2V5c1swXS5wdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIG9sZFdpdGhkcmF3QWRkcmVzczogaW5zdHJ1Y3Rpb25zWzFdLmtleXNbMl0ucHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgICBuZXdXaXRoZHJhd0FkZHJlc3M6IGluc3RydWN0aW9uc1sxXS5rZXlzWzNdLnB1YmtleS50b1N0cmluZygpLFxuICAgICAgICAgICAgY3VzdG9kaWFuQWRkcmVzczogaW5zdHJ1Y3Rpb25zWzFdLmtleXNbNF0ucHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIHN0YWtpbmdBZGRyZXNzOiBpbnN0cnVjdGlvbnNbMV0ua2V5c1swXS5wdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIG9sZFdpdGhkcmF3QWRkcmVzczogJycsXG4gICAgICAgICAgICBuZXdXaXRoZHJhd0FkZHJlc3M6ICcnLFxuICAgICAgICAgICAgb2xkU3Rha2luZ0F1dGhvcml0eUFkZHJlc3M6IGluc3RydWN0aW9uc1sxXS5rZXlzWzJdLnB1YmtleS50b1N0cmluZygpLFxuICAgICAgICAgICAgbmV3U3Rha2luZ0F1dGhvcml0eUFkZHJlc3M6IGluc3RydWN0aW9uc1sxXS5rZXlzWzNdLnB1YmtleS50b1N0cmluZygpLFxuICAgICAgICAgIH07XG4gICAgY29uc3QgZmVlU3RyaW5nID0gdGhpcy5jYWxjdWxhdGVGZWUoKTtcbiAgICByZXR1cm4ge1xuICAgICAgZGlzcGxheU9yZGVyOiBbXG4gICAgICAgICdpZCcsXG4gICAgICAgICd0eXBlJyxcbiAgICAgICAgJ2Jsb2NraGFzaCcsXG4gICAgICAgICdkdXJhYmxlTm9uY2UnLFxuICAgICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICAgJ2NoYW5nZUFtb3VudCcsXG4gICAgICAgICdvdXRwdXRzJyxcbiAgICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgICAndG9rZW5FbmFibGVtZW50cycsXG4gICAgICAgICdmZWUnLFxuICAgICAgICAnbWVtbycsXG4gICAgICBdLFxuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGVbdGhpcy50eXBlXS50b1N0cmluZygpLFxuICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgIG91dHB1dEFtb3VudDogMCxcbiAgICAgIG91dHB1dHM6IFtdLFxuICAgICAgZmVlOiB7XG4gICAgICAgIGZlZTogZmVlU3RyaW5nLFxuICAgICAgICBmZWVSYXRlOiB0aGlzLmxhbXBvcnRzUGVyU2lnbmF0dXJlLFxuICAgICAgfSxcbiAgICAgIGJsb2NraGFzaDogdGhpcy5nZXROb25jZSgpLFxuICAgICAgZHVyYWJsZU5vbmNlOiBkdXJhYmxlTm9uY2UsXG4gICAgICBzdGFraW5nQXV0aG9yaXplOiBzdGFraW5nQXV0aG9yaXplUGFyYW1zLFxuICAgICAgdG9rZW5FbmFibGVtZW50czogW10sIC8vIEFsd2F5cyBpbmNsdWRlIHRva2VuRW5hYmxlbWVudHMgYXMgYW4gZW1wdHkgYXJyYXkgZm9yIGNvbnNpc3RlbmN5XG4gICAgfTtcbiAgfVxufVxuIl19
|
|
704
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQVU4QjtBQUU5Qiw2Q0FPeUI7QUFDekIsZ0VBQXFDO0FBQ3JDLGdEQUEwQjtBQUMxQix3QkFBbUQ7QUFDbkQsMkNBS3FCO0FBaUJyQix5RUFBc0U7QUFDdEUsbUNBTWlCO0FBQ2pCLHNEQUF5RDtBQUV6RCxNQUFhLFdBQVksU0FBUSwwQkFBZTtJQVk5QyxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQVJYLHNCQUFpQixHQUF3QixFQUFFLENBQUM7UUFDOUMsOEJBQXlCLEdBQUcsS0FBSyxDQUFDO0lBUTFDLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJLGNBQWMsQ0FBQyxFQUFrQjtRQUNuQyxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBWSwwQkFBMEI7UUFDcEMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQztJQUM1RSxDQUFDO0lBRUQsSUFBWSwrQkFBK0I7UUFDekMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQzdDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFBLDBCQUFrQixFQUFDLFdBQVcsQ0FBQyxLQUFLLHFDQUF5QixDQUFDLGdDQUFnQyxDQUNoSCxDQUFDLE1BQU0sQ0FBQztJQUNYLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsSUFBSSxlQUFlO1FBQ2pCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFB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QUNmLGtCQUFrQjtnQkFDbEIsS0FBSztnQkFDTCxNQUFNO2FBQ1A7WUFDRCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxJQUFJLEVBQUUsMEJBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQzNDLGFBQWEsRUFBRSxFQUFFO1lBQ2pCLFlBQVksRUFBRSxHQUFHO1lBQ2pCLFlBQVksRUFBRSxDQUFDO1lBQ2YsT0FBTyxFQUFFLEVBQUU7WUFDWCxHQUFHLEVBQUU7Z0JBQ0gsR0FBRyxFQUFFLFNBQVM7Z0JBQ2QsT0FBTyxFQUFFLElBQUksQ0FBQyxvQkFBb0I7YUFDbkM7WUFDRCxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUMxQixZQUFZLEVBQUUsWUFBWTtZQUMxQixnQkFBZ0IsRUFBRSxzQkFBc0I7WUFDeEMsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLG9FQUFvRTtTQUMzRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBanhCRCxrQ0FpeEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgUHVibGljS2V5IGFzIEJhc2VQdWJsaWNLZXksXG4gIEJhc2VUcmFuc2FjdGlvbixcbiAgRW50cnksXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBJVG9rZW5FbmFibGVtZW50LFxuICBQYXJzZVRyYW5zYWN0aW9uRXJyb3IsXG4gIFNpZ25pbmdFcnJvcixcbiAgVHJhbnNhY3Rpb25SZWNpcGllbnQsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHtcbiAgQmxvY2toYXNoLFxuICBQdWJsaWNLZXksXG4gIFNpZ25lcixcbiAgVHJhbnNhY3Rpb24gYXMgU29sVHJhbnNhY3Rpb24sXG4gIFN5c3RlbUluc3RydWN0aW9uLFxuICBWZXJzaW9uZWRUcmFuc2FjdGlvbixcbn0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCBiYXNlNTggZnJvbSAnYnM1OCc7XG5pbXBvcnQgeyBleHBsYWluU29sVHJhbnNhY3Rpb24sIEtleVBhaXIgfSBmcm9tICcuJztcbmltcG9ydCB7XG4gIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLFxuICBVTkFWQUlMQUJMRV9URVhULFxuICB2YWxpZEluc3RydWN0aW9uRGF0YSxcbiAgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bSxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgQXRhSW5pdCxcbiAgRHVyYWJsZU5vbmNlUGFyYW1zLFxuICBJbnN0cnVjdGlvblBhcmFtcyxcbiAgTWVtbyxcbiAgTm9uY2UsXG4gIFN0YWtpbmdBY3RpdmF0ZSxcbiAgU3Rha2luZ0F1dGhvcml6ZVBhcmFtcyxcbiAgU3Rha2luZ1dpdGhkcmF3LFxuICBUb2tlblRyYW5zZmVyLFxuICBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLFxuICBUcmFuc2ZlcixcbiAgVHhEYXRhLFxuICBWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEsXG4gIFdhbGxldEluaXQsXG59IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5IH0gZnJvbSAnLi9pbnN0cnVjdGlvblBhcmFtc0ZhY3RvcnknO1xuaW1wb3J0IHtcbiAgZ2V0SW5zdHJ1Y3Rpb25UeXBlLFxuICBnZXRUcmFuc2FjdGlvblR5cGUsXG4gIGlzVmFsaWRSYXdUcmFuc2FjdGlvbixcbiAgcmVxdWlyZXNBbGxTaWduYXR1cmVzLFxuICB2YWxpZGF0ZVJhd01zZ0luc3RydWN0aW9uLFxufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFNvbFN0YWtpbmdUeXBlRW51bSB9IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBwcm90ZWN0ZWQgX3NvbFRyYW5zYWN0aW9uOiBTb2xUcmFuc2FjdGlvbjtcbiAgcHJpdmF0ZSBfbGFtcG9ydHNQZXJTaWduYXR1cmU6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfdG9rZW5BY2NvdW50UmVudEV4ZW1wdEFtb3VudDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgX3R5cGU6IFRyYW5zYWN0aW9uVHlwZTtcbiAgcHJvdGVjdGVkIF9pbnN0cnVjdGlvbnNEYXRhOiBJbnN0cnVjdGlvblBhcmFtc1tdID0gW107XG4gIHByaXZhdGUgX3VzZVRva2VuQWRkcmVzc1Rva2VuTmFtZSA9IGZhbHNlO1xuICBwcml2YXRlIF92ZXJzaW9uZWRUcmFuc2FjdGlvbjogVmVyc2lvbmVkVHJhbnNhY3Rpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX3ZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YTogVmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF92MVRyYW5zYWN0aW9uQnl0ZXM6IFVpbnQ4QXJyYXkgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX3YxTWVzc2FnZUJ5dGVzOiBVaW50OEFycmF5IHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldCBzb2xUcmFuc2FjdGlvbigpOiBTb2xUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NvbFRyYW5zYWN0aW9uO1xuICB9XG5cbiAgc2V0IHNvbFRyYW5zYWN0aW9uKHR4OiBTb2xUcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX3NvbFRyYW5zYWN0aW9uID0gdHg7XG4gIH1cblxuICBwcml2YXRlIGdldCBudW1iZXJPZlJlcXVpcmVkU2lnbmF0dXJlcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9zb2xUcmFuc2FjdGlvbi5jb21waWxlTWVzc2FnZSgpLmhlYWRlci5udW1SZXF1aXJlZFNpZ25hdHVyZXM7XG4gIH1cblxuICBwcml2YXRlIGdldCBudW1iZXJPZkFUQUNyZWF0aW9uSW5zdHJ1Y3Rpb25zKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3NvbFRyYW5zYWN0aW9uLmluc3RydWN0aW9ucy5maWx0ZXIoXG4gICAgICAoaW5zdHJ1Y3Rpb24pID0+IGdldEluc3RydWN0aW9uVHlwZShpbnN0cnVjdGlvbikgPT09IFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uSW5pdGlhbGl6ZUFzc29jaWF0ZWRUb2tlbkFjY291bnRcbiAgICApLmxlbmd0aDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBnZXQgc2lnbmFibGVQYXlsb2FkKCk6IEJ1ZmZlciB7XG4gICAgaWYgKHRoaXMuX3YxTWVzc2FnZUJ5dGVzKSB7XG4gICAgICByZXR1cm4gQnVmZmVyLmZyb20odGhpcy5fdjFNZXNzYWdlQnl0ZXMpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fdmVyc2lvbmVkVHJhbnNhY3Rpb24pIHtcbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbSh0aGlzLl92ZXJzaW9uZWRUcmFuc2FjdGlvbi5tZXNzYWdlLnNlcmlhbGl6ZSgpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3NvbFRyYW5zYWN0aW9uLnNlcmlhbGl6ZU1lc3NhZ2UoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgLy8gU29sYW5hIHRyYW5zYWN0aW9uIElEID09PSBmaXJzdCBzaWduYXR1cmU6IGh0dHBzOi8vZG9jcy5zb2xhbmEuY29tL3Rlcm1pbm9sb2d5I3RyYW5zYWN0aW9uLWlkXG4gICAgaWYgKHRoaXMuX3YxVHJhbnNhY3Rpb25CeXRlcykge1xuICAgICAgLy8gdjEgd2lyZSBmb3JtYXQ6IG1lc3NhZ2VCeXRlcyBmb2xsb3dlZCBieSA2NC1ieXRlIHNpZ25hdHVyZXM7IHRoZSBmaXJzdCBzaWduYXR1cmUgaXMgdGhlIHR4IGlkXG4gICAgICBjb25zdCBudW1SZXF1aXJlZCA9IHRoaXMuX3YxVHJhbnNhY3Rpb25CeXRlc1sxXTtcbiAgICAgIGNvbnN0IHNpZ1N0YXJ0ID0gdGhpcy5fdjFUcmFuc2FjdGlvbkJ5dGVzLmxlbmd0aCAtIG51bVJlcXVpcmVkICogNjQ7XG4gICAgICBpZiAobnVtUmVxdWlyZWQgPiAwICYmIHNpZ1N0YXJ0ID49IDApIHtcbiAgICAgICAgY29uc3Qgc2lnID0gdGhpcy5fdjFUcmFuc2FjdGlvbkJ5dGVzLnNsaWNlKHNpZ1N0YXJ0LCBzaWdTdGFydCArIDY0KTtcbiAgICAgICAgaWYgKHNpZy5zb21lKChieXRlKSA9PiBieXRlICE9PSAwKSkge1xuICAgICAgICAgIHJldHVybiBiYXNlNTguZW5jb2RlKHNpZyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fdmVyc2lvbmVkVHJhbnNhY3Rpb24pIHtcbiAgICAgIGNvbnN0IHNpZyA9IHRoaXMuX3ZlcnNpb25lZFRyYW5zYWN0aW9uLnNpZ25hdHVyZXM/LlswXTtcbiAgICAgIC8vIENoZWNrIGlmIHNpZ25hdHVyZSBleGlzdHMgYW5kIGlzIG5vdCBhIHBsYWNlaG9sZGVyIHNpZ25hdHVyZSAoYWxsIHplcm9zKVxuICAgICAgaWYgKHNpZyAmJiBzaWcuc29tZSgoYnl0ZSkgPT4gYnl0ZSAhPT0gMCkpIHtcbiAgICAgICAgcmV0dXJuIGJhc2U1OC5lbmNvZGUoc2lnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc29sVHJhbnNhY3Rpb24uc2lnbmF0dXJlKSB7XG4gICAgICByZXR1cm4gYmFzZTU4LmVuY29kZSh0aGlzLl9zb2xUcmFuc2FjdGlvbi5zaWduYXR1cmUpO1xuICAgIH1cblxuICAgIHJldHVybiBVTkFWQUlMQUJMRV9URVhUO1xuICB9XG5cbiAgZ2V0IGxhbXBvcnRzUGVyU2lnbmF0dXJlKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2xhbXBvcnRzUGVyU2lnbmF0dXJlO1xuICB9XG5cbiAgc2V0IGxhbXBvcnRzUGVyU2lnbmF0dXJlKGxhbXBvcnRzUGVyU2lnbmF0dXJlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9sYW1wb3J0c1BlclNpZ25hdHVyZSA9IGxhbXBvcnRzUGVyU2lnbmF0dXJlO1xuICB9XG5cbiAgZ2V0IHRva2VuQWNjb3VudFJlbnRFeGVtcHRBbW91bnQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW5BY2NvdW50UmVudEV4ZW1wdEFtb3VudDtcbiAgfVxuXG4gIHNldCB0b2tlbkFjY291bnRSZW50RXhlbXB0QW1vdW50KHRva2VuQWNjb3VudFJlbnRFeGVtcHRBbW91bnQ6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3Rva2VuQWNjb3VudFJlbnRFeGVtcHRBbW91bnQgPSB0b2tlbkFjY291bnRSZW50RXhlbXB0QW1vdW50O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGdldCBzaWduYXR1cmUoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHNpZ25hdHVyZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICBpZiAodGhpcy5fdjFUcmFuc2FjdGlvbkJ5dGVzKSB7XG4gICAgICAvLyB2MSB3aXJlIGZvcm1hdDogbWVzc2FnZUJ5dGVzIGZvbGxvd2VkIGJ5IDY0LWJ5dGUgc2lnbmF0dXJlczsgZmlsdGVyIG91dFxuICAgICAgLy8gemVyby1maWxsZWQgcGxhY2Vob2xkZXIgc2xvdHMgKHVuc2lnbmVkIHNpZ25lcnMpXG4gICAgICBjb25zdCBudW1SZXF1aXJlZCA9IHRoaXMuX3YxVHJhbnNhY3Rpb25CeXRlc1sxXTtcbiAgICAgIGNvbnN0IHNpZ1N0YXJ0ID0gdGhpcy5fdjFUcmFuc2FjdGlvbkJ5dGVzLmxlbmd0aCAtIG51bVJlcXVpcmVkICogNjQ7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bVJlcXVpcmVkOyBpKyspIHtcbiAgICAgICAgY29uc3Qgc2lnID0gdGhpcy5fdjFUcmFuc2FjdGlvbkJ5dGVzLnNsaWNlKHNpZ1N0YXJ0ICsgaSAqIDY0LCBzaWdTdGFydCArIChpICsgMSkgKiA2NCk7XG4gICAgICAgIGlmIChzaWcuc29tZSgoYikgPT4gYiAhPT0gMCkpIHtcbiAgICAgICAgICBzaWduYXR1cmVzLnB1c2goYmFzZTU4LmVuY29kZShzaWcpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHNpZ25hdHVyZXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3ZlcnNpb25lZFRyYW5zYWN0aW9uKSB7XG4gICAgICAvLyBIYW5kbGUgVmVyc2lvbmVkVHJhbnNhY3Rpb24gc2lnbmF0dXJlc1xuICAgICAgZm9yIChjb25zdCBzaWcgb2YgdGhpcy5fdmVyc2lvbmVkVHJhbnNhY3Rpb24uc2lnbmF0dXJlcykge1xuICAgICAgICAvLyBGaWx0ZXJzIG91dCBwbGFjZWhvbGRlciBzaWduYXR1cmVzXG4gICAgICAgIGlmIChzaWcgJiYgc2lnLnNvbWUoKGIpID0+IGIgIT09IDApKSB7XG4gICAgICAgICAgc2lnbmF0dXJlcy5wdXNoKGJhc2U1OC5lbmNvZGUoc2lnKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSGFuZGxlIGxlZ2FjeSB0cmFuc2FjdGlvbiBzaWduYXR1cmVzXG4gICAgICBmb3IgKGNvbnN0IHNvbFNpZ25hdHVyZSBvZiB0aGlzLl9zb2xUcmFuc2FjdGlvbi5zaWduYXR1cmVzKSB7XG4gICAgICAgIGlmIChzb2xTaWduYXR1cmUuc2lnbmF0dXJlKSB7XG4gICAgICAgICAgc2lnbmF0dXJlcy5wdXNoKGJhc2U1OC5lbmNvZGUoc29sU2lnbmF0dXJlLnNpZ25hdHVyZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNpZ25hdHVyZXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHJhbnNhY3Rpb25UeXBlIFRoZSB0cmFuc2FjdGlvbiB0eXBlIHRvIGJlIHNldC5cbiAgICovXG4gIHNldFRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBpbnN0cnVjdGlvbkRhdGEuXG4gICAqXG4gICAqIEBwYXJhbSB7SW5zdHJ1Y3Rpb25QYXJhbXNbXX0gaW5zdHJ1Y3Rpb25EYXRhIFRoZSBpbnN0cnVjdGlvbiBkYXRhIHRvIGJlIHNldC5cbiAgICovXG4gIHNldEluc3RydWN0aW9uc0RhdGEoaW5zdHJ1Y3Rpb25EYXRhOiBJbnN0cnVjdGlvblBhcmFtc1tdKTogdm9pZCB7XG4gICAgdGhpcy5faW5zdHJ1Y3Rpb25zRGF0YSA9IGluc3RydWN0aW9uRGF0YTtcbiAgfVxuXG4gIGdldCB1c2VUb2tlbkFkZHJlc3NUb2tlbk5hbWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3VzZVRva2VuQWRkcmVzc1Rva2VuTmFtZTtcbiAgfVxuXG4gIHNldFVzZVRva2VuQWRkcmVzc1Rva2VuTmFtZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX3VzZVRva2VuQWRkcmVzc1Rva2VuTmFtZSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRoaXMgdHJhbnNhY3Rpb24gaXMgYSBWZXJzaW9uZWRUcmFuc2FjdGlvblxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGlzIGlzIGEgVmVyc2lvbmVkVHJhbnNhY3Rpb25cbiAgICovXG4gIGlzVmVyc2lvbmVkVHJhbnNhY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fdmVyc2lvbmVkVHJhbnNhY3Rpb24gfHwgISF0aGlzLl92ZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEgfHwgISF0aGlzLl92MVRyYW5zYWN0aW9uQnl0ZXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzZXJpYWxpemVkIHYxIHdpcmUgdHJhbnNhY3Rpb24gYnl0ZXMgKG1lc3NhZ2UgKyBzaWduYXR1cmVzKSwgaWYgdGhpcyB0cmFuc2FjdGlvbiBpcyB2MVxuICAgKiBAcmV0dXJucyB7VWludDhBcnJheSB8IHVuZGVmaW5lZH0gVGhlIHYxIHdpcmUgYnl0ZXMgb3IgdW5kZWZpbmVkXG4gICAqL1xuICBnZXQgdjFUcmFuc2FjdGlvbkJ5dGVzKCk6IFVpbnQ4QXJyYXkgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl92MVRyYW5zYWN0aW9uQnl0ZXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBzZXJpYWxpemVkIHYxIHdpcmUgdHJhbnNhY3Rpb24gYnl0ZXMgKG1lc3NhZ2UgKyBzaWduYXR1cmVzKVxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXkgfCB1bmRlZmluZWR9IGJ5dGVzIFRoZSB2MSB3aXJlIGJ5dGVzIHRvIHN0b3JlLCBvciB1bmRlZmluZWQgdG8gY2xlYXJcbiAgICovXG4gIHNldCB2MVRyYW5zYWN0aW9uQnl0ZXMoYnl0ZXM6IFVpbnQ4QXJyYXkgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl92MVRyYW5zYWN0aW9uQnl0ZXMgPSBieXRlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHNlcmlhbGl6ZWQgdjEgbWVzc2FnZSBieXRlcyAod2l0aG91dCBzaWduYXR1cmVzKSwgaWYgdGhpcyB0cmFuc2FjdGlvbiBpcyB2MVxuICAgKiBAcmV0dXJucyB7VWludDhBcnJheSB8IHVuZGVmaW5lZH0gVGhlIHYxIG1lc3NhZ2UgYnl0ZXMgb3IgdW5kZWZpbmVkXG4gICAqL1xuICBnZXQgdjFNZXNzYWdlQnl0ZXMoKTogVWludDhBcnJheSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3YxTWVzc2FnZUJ5dGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc2VyaWFsaXplZCB2MSBtZXNzYWdlIGJ5dGVzICh3aXRob3V0IHNpZ25hdHVyZXMpXG4gICAqIEBwYXJhbSB7VWludDhBcnJheSB8IHVuZGVmaW5lZH0gYnl0ZXMgVGhlIHYxIG1lc3NhZ2UgYnl0ZXMgdG8gc3RvcmUsIG9yIHVuZGVmaW5lZCB0byBjbGVhclxuICAgKi9cbiAgc2V0IHYxTWVzc2FnZUJ5dGVzKGJ5dGVzOiBVaW50OEFycmF5IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fdjFNZXNzYWdlQnl0ZXMgPSBieXRlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG9yaWdpbmFsIFZlcnNpb25lZFRyYW5zYWN0aW9uIGlmIHRoaXMgdHJhbnNhY3Rpb24gd2FzIHBhcnNlZCBmcm9tIG9uZVxuICAgKiBAcmV0dXJucyB7VmVyc2lvbmVkVHJhbnNhY3Rpb24gfCB1bmRlZmluZWR9IFRoZSBWZXJzaW9uZWRUcmFuc2FjdGlvbiBvciB1bmRlZmluZWRcbiAgICovXG4gIGdldCB2ZXJzaW9uZWRUcmFuc2FjdGlvbigpOiBWZXJzaW9uZWRUcmFuc2FjdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZlcnNpb25lZFRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBhIGJ1aWx0IFZlcnNpb25lZFRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7VmVyc2lvbmVkVHJhbnNhY3Rpb259IHZlcnNpb25lZFR4IFRoZSBWZXJzaW9uZWRUcmFuc2FjdGlvbiB0byBzZXRcbiAgICovXG4gIHNldCB2ZXJzaW9uZWRUcmFuc2FjdGlvbih2ZXJzaW9uZWRUeDogVmVyc2lvbmVkVHJhbnNhY3Rpb24gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl92ZXJzaW9uZWRUcmFuc2FjdGlvbiA9IHZlcnNpb25lZFR4O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc3RvcmVkIFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YVxuICAgKiBAcmV0dXJucyB7VmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhIHwgdW5kZWZpbmVkfSBUaGUgc3RvcmVkIGRhdGEgb3IgdW5kZWZpbmVkXG4gICAqL1xuICBnZXRWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEoKTogVmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fdmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgVmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhIGZvciB0aGlzIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7VmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhIHwgdW5kZWZpbmVkfSBkYXRhIFRoZSB2ZXJzaW9uZWQgdHJhbnNhY3Rpb24gZGF0YSB0byBzdG9yZSwgb3IgdW5kZWZpbmVkIHRvIGNsZWFyXG4gICAqL1xuICBzZXRWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEoZGF0YTogVmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgdGhpcy5fdmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhID0gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBzaWduYXR1cmUgcHJvZHVjZWQgYnkgdGhlIGZlZSBwYXllciBvZiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBUaGUgZmVlIHBheWVyIGlzIGFjY291bnQgMCBvZiB0aGUgdHJhbnNhY3Rpb24gbWVzc2FnZSwgc28gaXRzIHNpZ25hdHVyZSBiZWxvbmdzIGluIHNsb3QgMC5cbiAgICogVXNlIHRoaXMgZm9yIHNpZ25hdHVyZXMgcHJvZHVjZWQgYnkgdGhlIGVudGVycHJpc2UgZmVlIGFkZHJlc3Mga2V5IChIU00gc2luZ2xlLXNpZykgb2YgYVxuICAgKiBzcG9uc29yZWQgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7QmFzZVB1YmxpY0tleX0gcHVibGljS2V5IFRoZSBwdWJsaWMga2V5IG9mIHRoZSBmZWUgcGF5ZXI7IG11c3QgYmUgYWNjb3VudCAwIG9mIHRoZSBtZXNzYWdlXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBzaWduYXR1cmUgVGhlIHNpZ25hdHVyZSBvZiB0aGUgdHJhbnNhY3Rpb24gcGF5bG9hZFxuICAgKi9cbiAgYWRkRmVlUGF5ZXJTaWduYXR1cmUocHVibGljS2V5OiBCYXNlUHVibGljS2V5LCBzaWduYXR1cmU6IEJ1ZmZlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLl92ZXJzaW9uZWRUcmFuc2FjdGlvbikge1xuICAgICAgY29uc3QgYWNjb3VudDAgPSB0aGlzLl92ZXJzaW9uZWRUcmFuc2FjdGlvbi5tZXNzYWdlLnN0YXRpY0FjY291bnRLZXlzWzBdPy50b0Jhc2U1OCgpO1xuICAgICAgaWYgKHB1YmxpY0tleS5wdWIgIT09IGFjY291bnQwKSB7XG4gICAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoYEZlZSBwYXllciBzaWduYXR1cmUgbXVzdCBjb21lIGZyb20gYWNjb3VudCAwIG9mIHRoZSBtZXNzYWdlLCBnb3Q6ICR7cHVibGljS2V5LnB1Yn1gKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3ZlcnNpb25lZFRyYW5zYWN0aW9uLmFkZFNpZ25hdHVyZShuZXcgUHVibGljS2V5KHB1YmxpY0tleS5wdWIpLCBzaWduYXR1cmUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zb2xUcmFuc2FjdGlvbikge1xuICAgICAgLy8gRm9yIGxlZ2FjeSB0cmFuc2FjdGlvbnMgQHNvbGFuYS93ZWIzLmpzIHBsYWNlcyB0aGUgZmVlIHBheWVyIGZpcnN0IGluIHRoZSBtZXNzYWdlXG4gICAgICBjb25zdCBmZWVQYXllciA9IHRoaXMuX3NvbFRyYW5zYWN0aW9uLmZlZVBheWVyPy50b0Jhc2U1OCgpO1xuICAgICAgaWYgKHB1YmxpY0tleS5wdWIgIT09IGZlZVBheWVyKSB7XG4gICAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoYEZlZSBwYXllciBzaWduYXR1cmUgbXVzdCBjb21lIGZyb20gYWNjb3VudCAwIG9mIHRoZSBtZXNzYWdlLCBnb3Q6ICR7cHVibGljS2V5LnB1Yn1gKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3NvbFRyYW5zYWN0aW9uLmFkZFNpZ25hdHVyZShuZXcgUHVibGljS2V5KHB1YmxpY0tleS5wdWIpLCBzaWduYXR1cmUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ0ZlZSBwYXllciBzaWduYXR1cmUgcmVxdWlyZXMgYSBidWlsdCB0cmFuc2FjdGlvbicpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGNhblNpZ24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogU2lnbnMgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7S2V5UGFpcn0ga2V5UGFpciBTaWduZXIga2V5cy5cbiAgICovXG4gIGFzeW5jIHNpZ24oa2V5UGFpcjogS2V5UGFpcltdIHwgS2V5UGFpcik6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIENvbnZlcnQgdG8gYXJyYXkgYW5kIGJ1aWxkIHNpZ25lcnMgbGlzdFxuICAgIGNvbnN0IGtleVBhaXJzID0ga2V5UGFpciBpbnN0YW5jZW9mIEFycmF5ID8ga2V5UGFpciA6IFtrZXlQYWlyXTtcbiAgICBjb25zdCBzaWduZXJzOiBTaWduZXJbXSA9IFtdO1xuICAgIGZvciAoY29uc3Qga3Agb2Yga2V5UGFpcnMpIHtcbiAgICAgIGNvbnN0IGtleXMgPSBrcC5nZXRLZXlzKHRydWUpO1xuICAgICAgaWYgKCFrZXlzLnBydikge1xuICAgICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdNaXNzaW5nIHByaXZhdGUga2V5Jyk7XG4gICAgICB9XG4gICAgICBzaWduZXJzLnB1c2goeyBwdWJsaWNLZXk6IG5ldyBQdWJsaWNLZXkoa2V5cy5wdWIpLCBzZWNyZXRLZXk6IGtleXMucHJ2IGFzIFVpbnQ4QXJyYXkgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3ZlcnNpb25lZFRyYW5zYWN0aW9uKSB7XG4gICAgICBpZiAoIXRoaXMuX3ZlcnNpb25lZFRyYW5zYWN0aW9uLm1lc3NhZ2UucmVjZW50QmxvY2toYXNoKSB7XG4gICAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ05vbmNlIGlzIHJlcXVpcmVkIGJlZm9yZSBzaWduaW5nJyk7XG4gICAgICB9XG4gICAgICB0aGlzLl92ZXJzaW9uZWRUcmFuc2FjdGlvbi5zaWduKHNpZ25lcnMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fc29sVHJhbnNhY3Rpb24gfHwgIXRoaXMuX3NvbFRyYW5zYWN0aW9uLnJlY2VudEJsb2NraGFzaCkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignTm9uY2UgaXMgcmVxdWlyZWQgYmVmb3JlIHNpZ25pbmcnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9zb2xUcmFuc2FjdGlvbiB8fCAhdGhpcy5fc29sVHJhbnNhY3Rpb24uZmVlUGF5ZXIpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ2ZlZVBheWVyIGlzIHJlcXVpcmVkIGJlZm9yZSBzaWduaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX3NvbFRyYW5zYWN0aW9uLnBhcnRpYWxTaWduKC4uLnNpZ25lcnMpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX3YxVHJhbnNhY3Rpb25CeXRlcykge1xuICAgICAgLy8gdjEgd2lyZSBmb3JtYXQgaXMgbWVzc2FnZS1maXJzdCB3aXRoIHNpZ25hdHVyZXMgYXBwZW5kZWQgKG5vIGxlbmd0aCBwcmVmaXgpXG4gICAgICByZXR1cm4gQnVmZmVyLmZyb20odGhpcy5fdjFUcmFuc2FjdGlvbkJ5dGVzKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3ZlcnNpb25lZFRyYW5zYWN0aW9uKSB7XG4gICAgICAvLyBWZXJzaW9uZWRUcmFuc2FjdGlvbi5zZXJpYWxpemUoKSBkb2Vzbid0IG5lZWQgcmVxdWlyZUFsbFNpZ25hdHVyZXMgcGFyYW1ldGVyXG4gICAgICAvLyBJdCBhdXRvbWF0aWNhbGx5IGhhbmRsZXMgd2hhdGV2ZXIgc2lnbmF0dXJlcyBhcmUgcHJlc2VudFxuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHRoaXMuX3ZlcnNpb25lZFRyYW5zYWN0aW9uLnNlcmlhbGl6ZSgpKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9zb2xUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgLy8gVGhlIHNpZ25hdHVyZXMgY2FuIGhhdmUgbnVsbCBzaWduYXR1cmVzICh3aGljaCBtZWFucyB0aGV5IGFyZSByZXF1aXJlZCBidXQgeWV0IHVuc2lnbmVkKVxuICAgIC8vIEluIG9yZGVyIHRvIGJlIGFibGUgdG8gc2VyaWFsaXplciB0aGUgdHhzLCB3ZSBoYXZlIHRvIGNoYW5nZSB0aGUgcmVxdWlyZUFsbFNpZ25hdHVyZXMgYmFzZWRcbiAgICAvLyBvbiBpZiB0aGUgVFggaXMgZnVsbHkgc2lnbmVkIG9yIG5vdFxuICAgIGNvbnN0IHJlcXVpcmVBbGxTaWduYXR1cmVzID0gcmVxdWlyZXNBbGxTaWduYXR1cmVzKHRoaXMuX3NvbFRyYW5zYWN0aW9uLnNpZ25hdHVyZXMpO1xuICAgIC8vIEJhc2VkIG9uIHRoZSByZWNvbWVuZGF0aW9uIGVuY29kaW5nIGZvdW5kIGhlcmUgaHR0cHM6Ly9kb2NzLnNvbGFuYS5jb20vZGV2ZWxvcGluZy9jbGllbnRzL2pzb25ycGMtYXBpI3NlbmR0cmFuc2FjdGlvblxuICAgIC8vIFdlIHVzZSBiYXNlNjQgZW5jb2RpbmdcbiAgICByZXR1cm4gdGhpcy5fc29sVHJhbnNhY3Rpb24uc2VyaWFsaXplKHsgcmVxdWlyZUFsbFNpZ25hdHVyZXMgfSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhpcyB0cmFuc2FjdGlvbiBwYXlsb2FkXG4gICAqXG4gICAqIEBwYXJhbSByYXdUcmFuc2FjdGlvblxuICAgKi9cbiAgZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgaXNWYWxpZFJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICAgIHRoaXMuX3NvbFRyYW5zYWN0aW9uID0gU29sVHJhbnNhY3Rpb24uZnJvbShCdWZmZXIuZnJvbShyYXdUcmFuc2FjdGlvbiwgJ2Jhc2U2NCcpKTtcbiAgICAgIGlmICh0aGlzLl9zb2xUcmFuc2FjdGlvbi5zaWduYXR1cmUgJiYgdGhpcy5fc29sVHJhbnNhY3Rpb24uc2lnbmF0dXJlICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuX2lkID0gYmFzZTU4LmVuY29kZSh0aGlzLl9zb2xUcmFuc2FjdGlvbi5zaWduYXR1cmUpO1xuICAgICAgfVxuICAgICAgY29uc3QgdHJhbnNhY3Rpb25UeXBlID0gZ2V0VHJhbnNhY3Rpb25UeXBlKHRoaXMuX3NvbFRyYW5zYWN0aW9uKTtcbiAgICAgIHN3aXRjaCAodHJhbnNhY3Rpb25UeXBlKSB7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uOlxuICAgICAgICAgIHRoaXMuc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICAgICAgdGhpcy5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGU6XG4gICAgICAgICAgdGhpcy5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBY3RpdmF0ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdEZWFjdGl2YXRlOlxuICAgICAgICAgIHRoaXMuc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nRGVhY3RpdmF0ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdzpcbiAgICAgICAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1dpdGhkcmF3KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQXNzb2NpYXRlZFRva2VuQWNjb3VudEluaXRpYWxpemF0aW9uOlxuICAgICAgICAgIHRoaXMuc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5Bc3NvY2lhdGVkVG9rZW5BY2NvdW50SW5pdGlhbGl6YXRpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5DbG9zZUFzc29jaWF0ZWRUb2tlbkFjY291bnQ6XG4gICAgICAgICAgdGhpcy5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLkNsb3NlQXNzb2NpYXRlZFRva2VuQWNjb3VudCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBdXRob3JpemU6XG4gICAgICAgICAgdGhpcy5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBdXRob3JpemUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQXV0aG9yaXplUmF3OlxuICAgICAgICAgIHRoaXMuc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQXV0aG9yaXplUmF3KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0RlbGVnYXRlOlxuICAgICAgICAgIHRoaXMuc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nRGVsZWdhdGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5DdXN0b21UeDpcbiAgICAgICAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuQ3VzdG9tVHgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5Db25maWRlbnRpYWxUcmFuc2ZlcjpcbiAgICAgICAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuQ29uZmlkZW50aWFsVHJhbnNmZXIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKHRyYW5zYWN0aW9uVHlwZSAhPT0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBdXRob3JpemVSYXcpIHtcbiAgICAgICAgdGhpcy5sb2FkSW5wdXRzQW5kT3V0cHV0cygpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGlmICghdGhpcy5fc29sVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgbGV0IGR1cmFibGVOb25jZTogRHVyYWJsZU5vbmNlUGFyYW1zIHwgdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLl9zb2xUcmFuc2FjdGlvbi5ub25jZUluZm8pIHtcbiAgICAgIGNvbnN0IG5vbmNlSW5zdHJ1Y3Rpb24gPSBTeXN0ZW1JbnN0cnVjdGlvbi5kZWNvZGVOb25jZUFkdmFuY2UodGhpcy5fc29sVHJhbnNhY3Rpb24ubm9uY2VJbmZvLm5vbmNlSW5zdHJ1Y3Rpb24pO1xuICAgICAgZHVyYWJsZU5vbmNlID0ge1xuICAgICAgICB3YWxsZXROb25jZUFkZHJlc3M6IG5vbmNlSW5zdHJ1Y3Rpb24ubm9uY2VQdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgICAgYXV0aFdhbGxldEFkZHJlc3M6IG5vbmNlSW5zdHJ1Y3Rpb24uYXV0aG9yaXplZFB1YmtleS50b1N0cmluZygpLFxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgaW5zdHJ1Y3Rpb25EYXRhID0gaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5KFxuICAgICAgdGhpcy5fdHlwZSxcbiAgICAgIHRoaXMuX3NvbFRyYW5zYWN0aW9uLmluc3RydWN0aW9ucyxcbiAgICAgIHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgIHRoaXMuX2luc3RydWN0aW9uc0RhdGEsXG4gICAgICB0aGlzLl91c2VUb2tlbkFkZHJlc3NUb2tlbk5hbWVcbiAgICApO1xuICAgIGlmICh0aGlzLl90eXBlKSB7XG4gICAgICBpZiAoXG4gICAgICAgICFkdXJhYmxlTm9uY2UgJiZcbiAgICAgICAgaW5zdHJ1Y3Rpb25EYXRhLmxlbmd0aCA+IDEgJiZcbiAgICAgICAgaW5zdHJ1Y3Rpb25EYXRhWzBdLnR5cGUgPT09IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk5vbmNlQWR2YW5jZVxuICAgICAgKSB7XG4gICAgICAgIGR1cmFibGVOb25jZSA9IGluc3RydWN0aW9uRGF0YVswXS5wYXJhbXM7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdDogVHhEYXRhID0ge1xuICAgICAgaWQ6IHRoaXMuX3NvbFRyYW5zYWN0aW9uLnNpZ25hdHVyZSA/IHRoaXMuaWQgOiB1bmRlZmluZWQsXG4gICAgICBmZWVQYXllcjogdGhpcy5fc29sVHJhbnNhY3Rpb24uZmVlUGF5ZXI/LnRvU3RyaW5nKCksXG4gICAgICBsYW1wb3J0c1BlclNpZ25hdHVyZTogdGhpcy5sYW1wb3J0c1BlclNpZ25hdHVyZSxcbiAgICAgIG5vbmNlOiB0aGlzLmdldE5vbmNlKCksXG4gICAgICBkdXJhYmxlTm9uY2U6IGR1cmFibGVOb25jZSxcbiAgICAgIG51bVNpZ25hdHVyZXM6IHRoaXMuc2lnbmF0dXJlLmxlbmd0aCxcbiAgICAgIGluc3RydWN0aW9uc0RhdGE6IGluc3RydWN0aW9uRGF0YSxcbiAgICB9O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBub25jZSBmcm9tIHRoZSBTb2xhbmEgVHJhbnNhY3Rpb25cbiAgICogVGhyb3dzIGlmIG5vdCBzZXRcbiAgICovXG4gIHByaXZhdGUgZ2V0Tm9uY2UoKTogQmxvY2toYXNoIHtcbiAgICBpZiAodGhpcy5fc29sVHJhbnNhY3Rpb24ucmVjZW50QmxvY2toYXNoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc29sVHJhbnNhY3Rpb24ucmVjZW50QmxvY2toYXNoO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fc29sVHJhbnNhY3Rpb24ubm9uY2VJbmZvKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc29sVHJhbnNhY3Rpb24ubm9uY2VJbmZvLm5vbmNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ05vbmNlIGlzIG5vdCBzZXQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTG9hZCB0aGUgaW5wdXQgYW5kIG91dHB1dCBkYXRhIG9uIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqL1xuICBsb2FkSW5wdXRzQW5kT3V0cHV0cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3NvbFRyYW5zYWN0aW9uIHx8IHRoaXMuX3NvbFRyYW5zYWN0aW9uLmluc3RydWN0aW9ucz8ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG91dHB1dHM6IEVudHJ5W10gPSBbXTtcbiAgICBjb25zdCBpbnB1dHM6IEVudHJ5W10gPSBbXTtcbiAgICBjb25zdCBpbnN0cnVjdGlvblBhcmFtcyA9IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeShcbiAgICAgIHRoaXMudHlwZSxcbiAgICAgIHRoaXMuX3NvbFRyYW5zYWN0aW9uLmluc3RydWN0aW9ucyxcbiAgICAgIHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgIHRoaXMuX2luc3RydWN0aW9uc0RhdGEsXG4gICAgICB0aGlzLl91c2VUb2tlbkFkZHJlc3NUb2tlbk5hbWVcbiAgICApO1xuXG4gICAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiBpbnN0cnVjdGlvblBhcmFtcykge1xuICAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi50eXBlKSB7XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ3JlYXRlTm9uY2VBY2NvdW50OlxuICAgICAgICAgIGlucHV0cy5wdXNoKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IGluc3RydWN0aW9uLnBhcmFtcy5mcm9tQWRkcmVzcyxcbiAgICAgICAgICAgIHZhbHVlOiBpbnN0cnVjdGlvbi5wYXJhbXMuYW1vdW50LFxuICAgICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlRyYW5zZmVyOlxuICAgICAgICAgIGlucHV0cy5wdXNoKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IGluc3RydWN0aW9uLnBhcmFtcy5mcm9tQWRkcmVzcyxcbiAgICAgICAgICAgIHZhbHVlOiBpbnN0cnVjdGlvbi5wYXJhbXMuYW1vdW50LFxuICAgICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIG91dHB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBpbnN0cnVjdGlvbi5wYXJhbXMudG9BZGRyZXNzLFxuICAgICAgICAgICAgdmFsdWU6IGluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuVG9rZW5UcmFuc2ZlcjpcbiAgICAgICAgICBpbnB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBpbnN0cnVjdGlvbi5wYXJhbXMuZnJvbUFkZHJlc3MsXG4gICAgICAgICAgICB2YWx1ZTogaW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCxcbiAgICAgICAgICAgIGNvaW46IGluc3RydWN0aW9uLnBhcmFtcy50b2tlbk5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IGluc3RydWN0aW9uLnBhcmFtcy50b0FkZHJlc3MsXG4gICAgICAgICAgICB2YWx1ZTogaW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCxcbiAgICAgICAgICAgIGNvaW46IGluc3RydWN0aW9uLnBhcmFtcy50b2tlbk5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuU3Rha2luZ0FjdGl2YXRlOlxuICAgICAgICAgIGlucHV0cy5wdXNoKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IGluc3RydWN0aW9uLnBhcmFtcy5mcm9tQWRkcmVzcyxcbiAgICAgICAgICAgIHZhbHVlOiBpbnN0cnVjdGlvbi5wYXJhbXMuYW1vdW50LFxuICAgICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChpbnN0cnVjdGlvbi5wYXJhbXMuc3Rha2luZ1R5cGUgIT09IFNvbFN0YWtpbmdUeXBlRW51bS5KSVRPKSB7XG4gICAgICAgICAgICBvdXRwdXRzLnB1c2goe1xuICAgICAgICAgICAgICBhZGRyZXNzOiBpbnN0cnVjdGlvbi5wYXJhbXMuc3Rha2luZ0FkZHJlc3MsXG4gICAgICAgICAgICAgIHZhbHVlOiBpbnN0cnVjdGlvbi5wYXJhbXMuYW1vdW50LFxuICAgICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuU3Rha2luZ0RlYWN0aXZhdGU6XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgaW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCAmJlxuICAgICAgICAgICAgaW5zdHJ1Y3Rpb24ucGFyYW1zLnVuc3Rha2luZ0FkZHJlc3MgJiZcbiAgICAgICAgICAgIGluc3RydWN0aW9uLnBhcmFtcy5zdGFraW5nVHlwZSAhPT0gU29sU3Rha2luZ1R5cGVFbnVtLkpJVE9cbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlucHV0cy5wdXNoKHtcbiAgICAgICAgICAgICAgYWRkcmVzczogaW5zdHJ1Y3Rpb24ucGFyYW1zLnN0YWtpbmdBZGRyZXNzLFxuICAgICAgICAgICAgICB2YWx1ZTogaW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCxcbiAgICAgICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBvdXRwdXRzLnB1c2goe1xuICAgICAgICAgICAgICBhZGRyZXNzOiBpbnN0cnVjdGlvbi5wYXJhbXMudW5zdGFraW5nQWRkcmVzcyxcbiAgICAgICAgICAgICAgdmFsdWU6IGluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5TdGFraW5nV2l0aGRyYXc6XG4gICAgICAgICAgaW5wdXRzLnB1c2goe1xuICAgICAgICAgICAgYWRkcmVzczogaW5zdHJ1Y3Rpb24ucGFyYW1zLnN0YWtpbmdBZGRyZXNzLFxuICAgICAgICAgICAgdmFsdWU6IGluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IGluc3RydWN0aW9uLnBhcmFtcy5mcm9tQWRkcmVzcyxcbiAgICAgICAgICAgIHZhbHVlOiBpbnN0cnVjdGlvbi5wYXJhbXMuYW1vdW50LFxuICAgICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ2xvc2VBc3NvY2lhdGVkVG9rZW5BY2NvdW50OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlN0YWtpbmdBdXRob3JpemU6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuU3Rha2luZ0RlbGVnYXRlOlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlNldENvbXB1dGVVbml0TGltaXQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuU2V0UHJpb3JpdHlGZWU6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ3VzdG9tSW5zdHJ1Y3Rpb246XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX291dHB1dHMgPSBvdXRwdXRzO1xuICAgIHRoaXMuX2lucHV0cyA9IGlucHV0cztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBleHBsYWluVHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgLy8gVGVzdG5ldCB1c2VzIFdBU00tYmFzZWQgcGFyc2luZyAobm8gQHNvbGFuYS93ZWIzLmpzIGRlcGVuZGVuY3kpLlxuICAgIC8vIFRoaXMgdmFsaWRhdGVzIHRoZSBXQVNNIHBhdGggYWdhaW5zdCBwcm9kdWN0aW9uIHRyYWZmaWMgYmVmb3JlXG4gICAgLy8gcmVwbGFjaW5nIHRoZSBsZWdhY3kgaW1wbGVtZW50YXRpb24gZm9yIGFsbCBuZXR3b3Jrcy5cbiAgICBpZiAodGhpcy5fY29pbkNvbmZpZy5uYW1lID09PSAndHNvbCcpIHtcbiAgICAgIC8vIGV4cGxhaW5UcmFuc2FjdGlvbiBzaG91bGQgd29yayBvbiB1bnNpZ25lZC9wYXJ0aWFsbHktc2lnbmVkIHRyYW5zYWN0aW9uc1xuICAgICAgLy8gKGUuZy4sIGR1cmluZyBwYXJzZVRyYW5zYWN0aW9uIHJvdW5kLXRyaXBzIHdoZXJlIG51bGwgc2lnbmF0dXJlcyBiZWNvbWVcbiAgICAgIC8vIHplcm8tZmlsbGVkIGJ1ZmZlcnMpLiBVc2Ugc2VyaWFsaXplIHdpdGhvdXQgc2lnbmF0dXJlIHZhbGlkYXRpb24gc2luY2VcbiAgICAgIC8vIHdlIG9ubHkgbmVlZCB0byByZWFkIHRoZSB0cmFuc2FjdGlvbiwgbm90IGJyb2FkY2FzdCBpdC5cbiAgICAgIGNvbnN0IHR4QmFzZTY0ID0gQnVmZmVyLmZyb20oXG4gICAgICAgIHRoaXMuX3NvbFRyYW5zYWN0aW9uLnNlcmlhbGl6ZSh7IHZlcmlmeVNpZ25hdHVyZXM6IGZhbHNlLCByZXF1aXJlQWxsU2lnbmF0dXJlczogZmFsc2UgfSlcbiAgICAgICkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgcmV0dXJuIGV4cGxhaW5Tb2xUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4QmFzZTY0LFxuICAgICAgICBmZWVJbmZvOiB0aGlzLl9sYW1wb3J0c1BlclNpZ25hdHVyZSA/IHsgZmVlOiB0aGlzLl9sYW1wb3J0c1BlclNpZ25hdHVyZS50b1N0cmluZygpIH0gOiB1bmRlZmluZWQsXG4gICAgICAgIHRva2VuQWNjb3VudFJlbnRFeGVtcHRBbW91bnQ6IHRoaXMuX3Rva2VuQWNjb3VudFJlbnRFeGVtcHRBbW91bnQsXG4gICAgICAgIGNvaW5OYW1lOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVSYXdNc2dJbnN0cnVjdGlvbih0aGlzLl9zb2xUcmFuc2FjdGlvbi5pbnN0cnVjdGlvbnMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5leHBsYWluUmF3TXNnQXV0aG9yaXplVHJhbnNhY3Rpb24oKTtcbiAgICB9XG4gICAgY29uc3QgZGVjb2RlZEluc3RydWN0aW9ucyA9IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeShcbiAgICAgIHRoaXMuX3R5cGUsXG4gICAgICB0aGlzLl9zb2xUcmFuc2FjdGlvbi5pbnN0cnVjdGlvbnMsXG4gICAgICB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICB0aGlzLl9pbnN0cnVjdGlvbnNEYXRhLFxuICAgICAgdGhpcy5fdXNlVG9rZW5BZGRyZXNzVG9rZW5OYW1lXG4gICAgKTtcblxuICAgIGxldCBtZW1vOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgbGV0IGR1cmFibGVOb25jZTogRHVyYWJsZU5vbmNlUGFyYW1zIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgbGV0IG91dHB1dEFtb3VudCA9IG5ldyBCaWdOdW1iZXIoMCk7XG4gICAgY29uc3Qgb3V0cHV0czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSA9IFtdO1xuICAgIC8vIENyZWF0ZSBhIHNlcGFyYXRlIGFycmF5IGZvciB0b2tlbiBlbmFibGVtZW50c1xuICAgIGNvbnN0IHRva2VuRW5hYmxlbWVudHM6IElUb2tlbkVuYWJsZW1lbnRbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiBkZWNvZGVkSW5zdHJ1Y3Rpb25zKSB7XG4gICAgICBzd2l0Y2ggKGluc3RydWN0aW9uLnR5cGUpIHtcbiAgICAgICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ob25jZUFkdmFuY2U6XG4gICAgICAgICAgZHVyYWJsZU5vbmNlID0gKGluc3RydWN0aW9uIGFzIE5vbmNlKS5wYXJhbXM7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTWVtbzpcbiAgICAgICAgICBtZW1vID0gKGluc3RydWN0aW9uIGFzIE1lbW8pLnBhcmFtcy5tZW1vO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlRyYW5zZmVyOlxuICAgICAgICAgIGNvbnN0IHRyYW5zZmVySW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbiBhcyBUcmFuc2ZlcjtcbiAgICAgICAgICBvdXRwdXRzLnB1c2goe1xuICAgICAgICAgICAgYWRkcmVzczogdHJhbnNmZXJJbnN0cnVjdGlvbi5wYXJhbXMudG9BZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiB0cmFuc2Zlckluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgb3V0cHV0QW1vdW50ID0gb3V0cHV0QW1vdW50LnBsdXModHJhbnNmZXJJbnN0cnVjdGlvbi5wYXJhbXMuYW1vdW50KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ub2tlblRyYW5zZmVyOlxuICAgICAgICAgIGNvbnN0IHRva2VuVHJhbnNmZXJJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uIGFzIFRva2VuVHJhbnNmZXI7XG4gICAgICAgICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHRva2VuVHJhbnNmZXJJbnN0cnVjdGlvbi5wYXJhbXMudG9BZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiB0b2tlblRyYW5zZmVySW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCxcbiAgICAgICAgICAgIHRva2VuTmFtZTogdG9rZW5UcmFuc2Zlckluc3RydWN0aW9uLnBhcmFtcy50b2tlbk5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ3JlYXRlTm9uY2VBY2NvdW50OlxuICAgICAgICAgIGNvbnN0IGNyZWF0ZUluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb24gYXMgV2FsbGV0SW5pdDtcbiAgICAgICAgICBvdXRwdXRzLnB1c2goe1xuICAgICAgICAgICAgYWRkcmVzczogY3JlYXRlSW5zdHJ1Y3Rpb24ucGFyYW1zLm5vbmNlQWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudDogY3JlYXRlSW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBvdXRwdXRBbW91bnQgPSBvdXRwdXRBbW91bnQucGx1cyhjcmVhdGVJbnN0cnVjdGlvbi5wYXJhbXMuYW1vdW50KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5TdGFraW5nQWN0aXZhdGU6XG4gICAgICAgICAgY29uc3Qgc3Rha2luZ0FjdGl2YXRlSW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbiBhcyBTdGFraW5nQWN0aXZhdGU7XG4gICAgICAgICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHN0YWtpbmdBY3RpdmF0ZUluc3RydWN0aW9uLnBhcmFtcy5zdGFraW5nQWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudDogc3Rha2luZ0FjdGl2YXRlSW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBvdXRwdXRBbW91bnQgPSBvdXRwdXRBbW91bnQucGx1cyhzdGFraW5nQWN0aXZhdGVJbnN0cnVjdGlvbi5wYXJhbXMuYW1vdW50KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5TdGFraW5nV2l0aGRyYXc6XG4gICAgICAgICAgY29uc3Qgc3Rha2luZ1dpdGhkcmF3SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbiBhcyBTdGFraW5nV2l0aGRyYXc7XG4gICAgICAgICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHN0YWtpbmdXaXRoZHJhd0luc3RydWN0aW9uLnBhcmFtcy5mcm9tQWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudDogc3Rha2luZ1dpdGhkcmF3SW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBvdXRwdXRBbW91bnQgPSBvdXRwdXRBbW91bnQucGx1cyhzdGFraW5nV2l0aGRyYXdJbnN0cnVjdGlvbi5wYXJhbXMuYW1vdW50KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50OlxuICAgICAgICAgIC8vIFByb2Nlc3MgdG9rZW4gZW5hYmxlbWVudCBpbnN0cnVjdGlvbnMgYW5kIGNvbGxlY3QgdGhlbSBpbiB0aGUgdG9rZW5FbmFibGVtZW50cyBhcnJheVxuICAgICAgICAgIGNvbnN0IGF0YUluaXQgPSBpbnN0cnVjdGlvbiBhcyBBdGFJbml0O1xuICAgICAgICAgIHRva2VuRW5hYmxlbWVudHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiBhdGFJbml0LnBhcmFtcy5hdGFBZGRyZXNzLFxuICAgICAgICAgICAgdG9rZW5OYW1lOiBhdGFJbml0LnBhcmFtcy50b2tlbk5hbWUsXG4gICAgICAgICAgICB0b2tlbkFkZHJlc3M6IGF0YUluaXQucGFyYW1zLm1pbnRBZGRyZXNzLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkN1c3RvbUluc3RydWN0aW9uOlxuICAgICAgICAgIC8vIEN1c3RvbSBpbnN0cnVjdGlvbnMgYXJlIGFyYml0cmFyeSBhbmQgY2Fubm90IGJlIGV4cGxhaW5lZFxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBBZnRlciBkZXNlcmlhbGl6aW5nIGEgdHJhbnNhY3Rpb24sIGR1cmFibGUgbm9uY2UgZGV0YWlscyBhcmUgcG9wdWxhdGVkIGluIHRoZSBub25jZUluZm8gZmllbGRcbiAgICAgIGlmICghZHVyYWJsZU5vbmNlICYmIHRoaXMuX3NvbFRyYW5zYWN0aW9uLm5vbmNlSW5mbykge1xuICAgICAgICBjb25zdCBub25jZUFkdmFuY2VJbnN0cnVjdGlvbiA9IFN5c3RlbUluc3RydWN0aW9uLmRlY29kZU5vbmNlQWR2YW5jZShcbiAgICAgICAgICB0aGlzLl9zb2xUcmFuc2FjdGlvbi5ub25jZUluZm8ubm9uY2VJbnN0cnVjdGlvblxuICAgICAgICApO1xuICAgICAgICBkdXJhYmxlTm9uY2UgPSB7XG4gICAgICAgICAgYXV0aFdhbGxldEFkZHJlc3M6IG5vbmNlQWR2YW5jZUluc3RydWN0aW9uLmF1dGhvcml6ZWRQdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgICAgICB3YWxsZXROb25jZUFkZHJlc3M6IG5vbmNlQWR2YW5jZUluc3RydWN0aW9uLm5vbmNlUHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0RXhwbGFpbmVkVHJhbnNhY3Rpb24ob3V0cHV0QW1vdW50LCBvdXRwdXRzLCBtZW1vLCBkdXJhYmxlTm9uY2UsIHRva2VuRW5hYmxlbWVudHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVGZWUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5sYW1wb3J0c1BlclNpZ25hdHVyZSB8fCB0aGlzLnRva2VuQWNjb3VudFJlbnRFeGVtcHRBbW91bnQpIHtcbiAgICAgIGNvbnN0IHNpZ25hdHVyZUZlZXMgPSB0aGlzLmxhbXBvcnRzUGVyU2lnbmF0dXJlXG4gICAgICAgID8gbmV3IEJpZ051bWJlcih0aGlzLmxhbXBvcnRzUGVyU2lnbmF0dXJlKS5tdWx0aXBsaWVkQnkodGhpcy5udW1iZXJPZlJlcXVpcmVkU2lnbmF0dXJlcykudG9GaXhlZCgwKVxuICAgICAgICA6IDA7XG4gICAgICBjb25zdCByZW50RmVlcyA9IHRoaXMudG9rZW5BY2NvdW50UmVudEV4ZW1wdEFtb3VudFxuICAgICAgICA/IG5ldyBCaWdOdW1iZXIodGhpcy50b2tlbkFjY291bnRSZW50RXhlbXB0QW1vdW50KS5tdWx0aXBsaWVkQnkodGhpcy5udW1iZXJPZkFUQUNyZWF0aW9uSW5zdHJ1Y3Rpb25zKS50b0ZpeGVkKDApXG4gICAgICAgIDogMDtcbiAgICAgIHJldHVybiBuZXcgQmlnTnVtYmVyKHNpZ25hdHVyZUZlZXMpLnBsdXMocmVudEZlZXMpLnRvRml4ZWQoMCk7XG4gICAgfVxuICAgIHJldHVybiBVTkFWQUlMQUJMRV9URVhUO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEV4cGxhaW5lZFRyYW5zYWN0aW9uKFxuICAgIG91dHB1dEFtb3VudDogQmlnTnVtYmVyLFxuICAgIG91dHB1dHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10sXG4gICAgbWVtbzogdW5kZWZpbmVkIHwgc3RyaW5nID0gdW5kZWZpbmVkLFxuICAgIGR1cmFibGVOb25jZTogdW5kZWZpbmVkIHwgRHVyYWJsZU5vbmNlUGFyYW1zID0gdW5kZWZpbmVkLFxuICAgIHRva2VuRW5hYmxlbWVudHM6IElUb2tlbkVuYWJsZW1lbnRbXSA9IFtdXG4gICk6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGNvbnN0IGZlZVN0cmluZyA9IHRoaXMuY2FsY3VsYXRlRmVlKCk7XG5cbiAgICAvLyBDcmVhdGUgZGlzcGxheU9yZGVyIHdpdGggdG9rZW5FbmFibGVtZW50cyBhbHdheXMgaW5jbHVkZWRcbiAgICBjb25zdCBkaXNwbGF5T3JkZXIgPSBbXG4gICAgICAnaWQnLFxuICAgICAgJ3R5cGUnLFxuICAgICAgJ2Jsb2NraGFzaCcsXG4gICAgICAnZHVyYWJsZU5vbmNlJyxcbiAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgJ2NoYW5nZUFtb3VudCcsXG4gICAgICAnb3V0cHV0cycsXG4gICAgICAnY2hhbmdlT3V0cHV0cycsXG4gICAgICAndG9rZW5FbmFibGVtZW50cycsXG4gICAgICAnZmVlJyxcbiAgICAgICdtZW1vJyxcbiAgICBdO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBiYXNlIGV4cGxhbmF0aW9uIG9iamVjdCB3aXRoIHRva2VuRW5hYmxlbWVudHMgYWx3YXlzIGluY2x1ZGVkXG4gICAgY29uc3QgZXhwbGFuYXRpb246IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gPSB7XG4gICAgICBkaXNwbGF5T3JkZXIsXG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZVt0aGlzLnR5cGVdLnRvU3RyaW5nKCksXG4gICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgb3V0cHV0QW1vdW50OiBvdXRwdXRBbW91bnQudG9GaXhlZCgwKSxcbiAgICAgIG91dHB1dHM6IG91dHB1dHMsXG4gICAgICBmZWU6IHtcbiAgICAgICAgZmVlOiBmZWVTdHJpbmcsXG4gICAgICAgIGZlZVJhdGU6IHRoaXMubGFtcG9ydHNQZXJTaWduYXR1cmUsXG4gICAgICB9LFxuICAgICAgbWVtbzogbWVtbyxcbiAgICAgIGJsb2NraGFzaDogdGhpcy5nZXROb25jZSgpLFxuICAgICAgZHVyYWJsZU5vbmNlOiBkdXJhYmxlTm9uY2UsXG4gICAgICB0b2tlbkVuYWJsZW1lbnRzOiB0b2tlbkVuYWJsZW1lbnRzLFxuICAgIH07XG5cbiAgICByZXR1cm4gZXhwbGFuYXRpb247XG4gIH1cblxuICBwcml2YXRlIGV4cGxhaW5SYXdNc2dBdXRob3JpemVUcmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICBjb25zdCB7IGluc3RydWN0aW9ucyB9ID0gdGhpcy5fc29sVHJhbnNhY3Rpb247XG4gICAgY29uc3Qgbm9uY2VJbnN0cnVjdGlvbiA9IFN5c3RlbUluc3RydWN0aW9uLmRlY29kZU5vbmNlQWR2YW5jZShpbnN0cnVjdGlvbnNbMF0pO1xuICAgIGNvbnN0IGR1cmFibGVOb25jZSA9IHtcbiAgICAgIHdhbGxldE5vbmNlQWRkcmVzczogbm9uY2VJbnN0cnVjdGlvbi5ub25jZVB1YmtleS50b1N0cmluZygpLFxuICAgICAgYXV0aFdhbGxldEFkZHJlc3M6IG5vbmNlSW5zdHJ1Y3Rpb24uYXV0aG9yaXplZFB1YmtleS50b1N0cmluZygpLFxuICAgIH07XG4gICAgY29uc3QgZGF0YSA9IGluc3RydWN0aW9uc1sxXS5kYXRhLnRvU3RyaW5nKCdoZXgnKTtcbiAgICBjb25zdCBzdGFraW5nQXV0aG9yaXplUGFyYW1zOiBTdGFraW5nQXV0aG9yaXplUGFyYW1zID1cbiAgICAgIGRhdGEgPT09IHZhbGlkSW5zdHJ1Y3Rpb25EYXRhXG4gICAgICAgID8ge1xuICAgICAgICAgICAgc3Rha2luZ0FkZHJlc3M6IGluc3RydWN0aW9uc1sxXS5rZXlzWzBdLnB1YmtleS50b1N0cmluZygpLFxuICAgICAgICAgICAgb2xkV2l0aGRyYXdBZGRyZXNzOiBpbnN0cnVjdGlvbnNbMV0ua2V5c1syXS5wdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIG5ld1dpdGhkcmF3QWRkcmVzczogaW5zdHJ1Y3Rpb25zWzFdLmtleXNbM10ucHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgICBjdXN0b2RpYW5BZGRyZXNzOiBpbnN0cnVjdGlvbnNbMV0ua2V5c1s0XS5wdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgc3Rha2luZ0FkZHJlc3M6IGluc3RydWN0aW9uc1sxXS5rZXlzWzBdLnB1YmtleS50b1N0cmluZygpLFxuICAgICAgICAgICAgb2xkV2l0aGRyYXdBZGRyZXNzOiAnJyxcbiAgICAgICAgICAgIG5ld1dpdGhkcmF3QWRkcmVzczogJycsXG4gICAgICAgICAgICBvbGRTdGFraW5nQXV0aG9yaXR5QWRkcmVzczogaW5zdHJ1Y3Rpb25zWzFdLmtleXNbMl0ucHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgICBuZXdTdGFraW5nQXV0aG9yaXR5QWRkcmVzczogaW5zdHJ1Y3Rpb25zWzFdLmtleXNbM10ucHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgfTtcbiAgICBjb25zdCBmZWVTdHJpbmcgPSB0aGlzLmNhbGN1bGF0ZUZlZSgpO1xuICAgIHJldHVybiB7XG4gICAgICBkaXNwbGF5T3JkZXI6IFtcbiAgICAgICAgJ2lkJyxcbiAgICAgICAgJ3R5cGUnLFxuICAgICAgICAnYmxvY2toYXNoJyxcbiAgICAgICAgJ2R1cmFibGVOb25jZScsXG4gICAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICAgJ291dHB1dHMnLFxuICAgICAgICAnY2hhbmdlT3V0cHV0cycsXG4gICAgICAgICd0b2tlbkVuYWJsZW1lbnRzJyxcbiAgICAgICAgJ2ZlZScsXG4gICAgICAgICdtZW1vJyxcbiAgICAgIF0sXG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZVt0aGlzLnR5cGVdLnRvU3RyaW5nKCksXG4gICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgb3V0cHV0QW1vdW50OiAwLFxuICAgICAgb3V0cHV0czogW10sXG4gICAgICBmZWU6IHtcbiAgICAgICAgZmVlOiBmZWVTdHJpbmcsXG4gICAgICAgIGZlZVJhdGU6IHRoaXMubGFtcG9ydHNQZXJTaWduYXR1cmUsXG4gICAgICB9LFxuICAgICAgYmxvY2toYXNoOiB0aGlzLmdldE5vbmNlKCksXG4gICAgICBkdXJhYmxlTm9uY2U6IGR1cmFibGVOb25jZSxcbiAgICAgIHN0YWtpbmdBdXRob3JpemU6IHN0YWtpbmdBdXRob3JpemVQYXJhbXMsXG4gICAgICB0b2tlbkVuYWJsZW1lbnRzOiBbXSwgLy8gQWx3YXlzIGluY2x1ZGUgdG9rZW5FbmFibGVtZW50cyBhcyBhbiBlbXB0eSBhcnJheSBmb3IgY29uc2lzdGVuY3lcbiAgICB9O1xuICB9XG59XG4iXX0=
|