Socket
Socket
Sign inDemoInstall

deso-protocol

Package Overview
Dependencies
Maintainers
3
Versions
225
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

deso-protocol - npm Package Compare versions

Comparing version 2.0.0-beta.5 to 2.0.0-beta.6

4

package.json
{
"name": "deso-protocol",
"version": "2.0.0-beta.5",
"version": "2.0.0-beta.6",
"license": "MIT",
"description": "Client side typescript/javascript SDK for building web3 applications for the DeSo blockchain.",
"type": "module",
"main": "./src/index.js",

@@ -51,2 +52,3 @@ "types": "./src/index.d.ts",

"eslint-config-standard-with-typescript": "^34.0.1",
"eslint-import-resolver-typescript": "^3.5.5",
"eslint-plugin-import": "^2.27.5",

@@ -53,0 +55,0 @@ "eslint-plugin-n": "^15.7.0",

import { ec } from 'elliptic';
import { DAOCoinLimitOrderSimulatedExecutionResult, MsgDeSoTxn, SubmitTransactionResponse, TransactionFee, TransactionSpendingLimitResponse } from './deso-types';
import { PartialWithRequiredFields } from '../data/index.js';
import { DAOCoinLimitOrderSimulatedExecutionResult, DeSoNonce, MsgDeSoTxn, SubmitTransactionResponse, TransactionFee, TransactionSpendingLimitResponse } from './deso-types.js';
export interface GetApproveResponse {

@@ -288,4 +289,5 @@ id?: string;

};
Nonce?: PartialWithRequiredFields<DeSoNonce, 'ExpirationBlockHeight'>;
}
export type TxRequestWithOptionalFeesAndExtraData<T> = Omit<T, 'MinFeeRateNanosPerKB' | 'TransactionFees' | 'ExtraData' | 'InTutorial'> & OptionalFeesAndExtraData;
export type TxRequestWithOptionalFeesAndExtraData<T> = Omit<T, 'MinFeeRateNanosPerKB' | 'TransactionFees' | 'ExtraData' | 'InTutorial' | 'Nonce'> & OptionalFeesAndExtraData;
export interface RequestOptions {

@@ -292,0 +294,0 @@ /**

@@ -78,2 +78,2 @@ export var DeSoNetwork;

})(MessagingGroupOperation || (MessagingGroupOperation = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzby10eXBlcy1jdXN0b20uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFja2VuZC10eXBlcy9kZXNvLXR5cGVzLWN1c3RvbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5SUEsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNyQixrQ0FBbUIsQ0FBQTtJQUNuQixrQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBSFcsV0FBVyxLQUFYLFdBQVcsUUFHdEI7QUFvQkQsTUFBTSxDQUFOLElBQVksK0JBS1g7QUFMRCxXQUFZLCtCQUErQjtJQUN6Qyw4Q0FBVyxDQUFBO0lBQ1gsOENBQVcsQ0FBQTtJQUNYLGdEQUFhLENBQUE7SUFDYix3REFBcUIsQ0FBQTtBQUN2QixDQUFDLEVBTFcsK0JBQStCLEtBQS9CLCtCQUErQixRQUsxQztBQUVELE1BQU0sQ0FBTixJQUFZLDJCQU9YO0FBUEQsV0FBWSwyQkFBMkI7SUFDckMsMENBQVcsQ0FBQTtJQUNYLDRDQUFhLENBQUE7SUFDYiw0Q0FBYSxDQUFBO0lBQ2Isa0VBQW1DLENBQUE7SUFDbkMsd0dBQXlFLENBQUE7SUFDekUsb0RBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQVBXLDJCQUEyQixLQUEzQiwyQkFBMkIsUUFPdEM7QUEwQkQsTUFBTSxDQUFOLElBQVksdUJBUVg7QUFSRCxXQUFZLHVCQUF1QjtJQUNqQyxzQ0FBVyxDQUFBO0lBQ1gsNENBQWlCLENBQUE7SUFDakIsMENBQWUsQ0FBQTtJQUNmLHdEQUE2QixDQUFBO0lBQzdCLGdEQUFxQixDQUFBO0lBQ3JCLHdDQUFhLENBQUE7SUFDYixrRUFBdUMsQ0FBQTtBQUN6QyxDQUFDLEVBUlcsdUJBQXVCLEtBQXZCLHVCQUF1QixRQVFsQztBQU9ELE1BQU0sQ0FBTixJQUFZLGVBZ0NYO0FBaENELFdBQVksZUFBZTtJQUN6QixtREFBZ0MsQ0FBQTtJQUNoQyx1REFBb0MsQ0FBQTtJQUNwQyxxREFBa0MsQ0FBQTtJQUNsQyw2Q0FBMEIsQ0FBQTtJQUMxQixtREFBZ0MsQ0FBQTtJQUNoQyxvRkFBaUUsQ0FBQTtJQUNqRSxvQ0FBaUIsQ0FBQTtJQUNqQixnQ0FBYSxDQUFBO0lBQ2IsK0NBQTRCLENBQUE7SUFDNUIsaURBQThCLENBQUE7SUFDOUIsOERBQTJDLENBQUE7SUFDM0MsZ0VBQTZDLENBQUE7SUFDN0MsMkNBQXdCLENBQUE7SUFDeEIsMkNBQXdCLENBQUE7SUFDeEIsa0RBQStCLENBQUE7SUFDL0IscUNBQWtCLENBQUE7SUFDbEIsK0NBQTRCLENBQUE7SUFDNUIsNERBQXlDLENBQUE7SUFDekMsdUNBQW9CLENBQUE7SUFDcEIsZ0VBQTZDLENBQUE7SUFDN0MscURBQWtDLENBQUE7SUFDbEMsdUNBQW9CLENBQUE7SUFDcEIsd0RBQXFDLENBQUE7SUFDckMsNkRBQTBDLENBQUE7SUFDMUMsb0VBQWlELENBQUE7SUFDakQsb0VBQWlELENBQUE7SUFDakQsb0VBQWlELENBQUE7SUFDakQsb0VBQWlELENBQUE7SUFDakQsK0NBQTRCLENBQUE7SUFDNUIsOERBQTJDLENBQUE7SUFDM0MsNkNBQTBCLENBQUE7QUFDNUIsQ0FBQyxFQWhDVyxlQUFlLEtBQWYsZUFBZSxRQWdDMUI7QUFxQ0QsaUVBQWlFO0FBRWpFLE1BQU0sQ0FBTixJQUFZLG9DQUdYO0FBSEQsV0FBWSxvQ0FBb0M7SUFDOUMsdUZBQStDLENBQUE7SUFDL0MsdUZBQStDLENBQUE7QUFDakQsQ0FBQyxFQUhXLG9DQUFvQyxLQUFwQyxvQ0FBb0MsUUFHL0M7QUF3SEQsTUFBTSxDQUFOLElBQVksdUJBSVg7QUFKRCxXQUFZLHVCQUF1QjtJQUNqQyxxREFBMEIsQ0FBQTtJQUMxQix1REFBNEIsQ0FBQTtJQUM1QixxREFBMEIsQ0FBQTtBQUM1QixDQUFDLEVBSlcsdUJBQXVCLEtBQXZCLHVCQUF1QixRQUlsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVjIH0gZnJvbSAnZWxsaXB0aWMnO1xuaW1wb3J0IHtcbiAgREFPQ29pbkxpbWl0T3JkZXJTaW11bGF0ZWRFeGVjdXRpb25SZXN1bHQsXG4gIE1zZ0RlU29UeG4sXG4gIFN1Ym1pdFRyYW5zYWN0aW9uUmVzcG9uc2UsXG4gIFRyYW5zYWN0aW9uRmVlLFxuICBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZSxcbn0gZnJvbSAnLi9kZXNvLXR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBHZXRBcHByb3ZlUmVzcG9uc2Uge1xuICBpZD86IHN0cmluZztcbiAgc2VydmljZTogJ2lkZW50aXR5JztcbiAgbWV0aG9kOiAnYXBwcm92ZSc7XG4gIHBheWxvYWQ6IHtcbiAgICB1c2Vyczoge1xuICAgICAgW2tleTogc3RyaW5nXToge1xuICAgICAgICBhY2Nlc3NMZXZlbDogbnVtYmVyO1xuICAgICAgICBhY2Nlc3NMZXZlbEhtYWM6IHN0cmluZztcbiAgICAgICAgYnRjRGVwb3NpdEFkZHJlc3M6IHN0cmluZztcbiAgICAgICAgZW5jcnlwdGVkU2VlZEhleDogc3RyaW5nO1xuICAgICAgICBoYXNFeHRyYVRleHQ6IGJvb2xlYW47XG4gICAgICAgIG5ldHdvcms6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICBzaWduZWRUcmFuc2FjdGlvbkhleDogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElkZW50aXR5TG9naW5SZXNwb25zZSB7XG4gIGlkPzogc3RyaW5nO1xuICBzZXJ2aWNlOiAnaWRlbnRpdHknO1xuICBtZXRob2Q6IHN0cmluZztcbiAgcGF5bG9hZDoge1xuICAgIHVzZXJzOiBMb2dpblVzZXJzO1xuICAgIHB1YmxpY0tleUFkZGVkOiBzdHJpbmc7XG4gICAgc2lnbmVkVXA6IGJvb2xlYW47XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkSW1hZ2VSZXF1ZXN0IHtcbiAgVXNlclB1YmxpY0tleUJhc2U1OENoZWNrOiBzdHJpbmc7XG4gIEpXVDogc3RyaW5nO1xuICBmaWxlOiBGaWxlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZFZpZGVvUmVxdWVzdCB7XG4gIFVzZXJQdWJsaWNLZXlCYXNlNThDaGVjazogc3RyaW5nO1xuICBKV1Q6IHN0cmluZztcbiAgZmlsZTogRmlsZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRWaWRlb1N0YXR1c1JlcXVlc3Qge1xuICB2aWRlb0lkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkVmlkZW9SZXNwb25zZSB7XG4gIHN0cmVhbU1lZGlhSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2dpblVzZXIge1xuICBhY2Nlc3NMZXZlbDogbnVtYmVyO1xuICBhY2Nlc3NMZXZlbEhtYWM6IHN0cmluZztcbiAgYnRjRGVwb3NpdEFkZHJlc3M6IHN0cmluZztcbiAgZW5jcnlwdGVkU2VlZEhleDogc3RyaW5nO1xuICBoYXNFeHRyYVRleHQ6IGJvb2xlYW47XG4gIGV0aERlcG9zaXRBZGRyZXNzOiBzdHJpbmc7XG4gIG5ldHdvcms6IHN0cmluZztcbiAgZW5jcnlwdGVkTWVzc2FnaW5nS2V5UmFuZG9tbmVzcz86IHN0cmluZztcbiAgZGVyaXZlZFB1YmxpY0tleUJhc2U1OENoZWNrPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2luVXNlcnMge1xuICBbdXNlcjogc3RyaW5nXTogTG9naW5Vc2VyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElkZW50aXR5QXBwcm92ZVJlc3BvbnNlIHtcbiAgaWQ/OiBzdHJpbmc7XG4gIHNlcnZpY2U6ICdpZGVudGl0eSc7XG4gIG1ldGhvZDogc3RyaW5nO1xuICBwYXlsb2FkOiB7XG4gICAgdXNlcnM6IExvZ2luVXNlcjtcbiAgICBzaWduZWRUcmFuc2FjdGlvbkhleDogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElkZW50aXR5Snd0UmVzcG9uc2Uge1xuICBpZDogc3RyaW5nO1xuICBzZXJ2aWNlOiAnaWRlbnRpdHknO1xuICBwYXlsb2FkOiB7XG4gICAgand0OiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWRlbnRpdHlTaWduUmVxdWVzdCB7XG4gIGlkOiBzdHJpbmc7XG4gIHNlcnZpY2U6IHN0cmluZztcbiAgbWV0aG9kOiBzdHJpbmc7XG4gIHBheWxvYWQ6IHtcbiAgICBhY2Nlc3NMZXZlbDogbnVtYmVyO1xuICAgIGFjY2Vzc0xldmVsSG1hYzogc3RyaW5nO1xuICAgIGVuY3J5cHRlZFNlZWRIZXg6IHN0cmluZztcbiAgICB0cmFuc2FjdGlvbkhleD86IHN0cmluZztcbiAgICBzaWduZWRUcmFuc2FjdGlvbkhleD86IHN0cmluZztcbiAgICBlbmNyeXB0ZWRNZXNzYWdlPzoge1xuICAgICAgRW5jcnlwdGVkSGV4OiBzdHJpbmc7XG4gICAgICBQdWJsaWNLZXk6IHN0cmluZztcbiAgICAgIElzU2VuZGVyOiBib29sZWFuO1xuICAgICAgTGVnYWN5OiBib29sZWFuO1xuICAgIH1bXTtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXREZWNyeXB0TWVzc2FnZXNSZXF1ZXN0IHtcbiAgRW5jcnlwdGVkSGV4OiBzdHJpbmc7XG4gIFB1YmxpY0tleTogc3RyaW5nO1xuICBJc1NlbmRlcjogYm9vbGVhbjtcbiAgTGVnYWN5OiBib29sZWFuO1xuICBWZXJzaW9uOiBudW1iZXI7XG4gIFNlbmRlck1lc3NhZ2luZ1B1YmxpY0tleTogc3RyaW5nO1xuICBTZW5kZXJNZXNzYWdpbmdHcm91cEtleU5hbWU6IHN0cmluZztcbiAgUmVjaXBpZW50TWVzc2FnaW5nUHVibGljS2V5OiBzdHJpbmc7XG4gIFJlY2lwaWVudE1lc3NhZ2luZ0dyb3VwS2V5TmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldERlY3J5cHRNZXNzYWdlc1Jlc3BvbnNlIHtcbiAgRW5jcnlwdGVkSGV4OiBzdHJpbmc7XG4gIFB1YmxpY0tleTogc3RyaW5nO1xuICBJc1NlbmRlcjogYm9vbGVhbjtcbiAgTGVnYWN5OiBib29sZWFuO1xuICBWZXJzaW9uOiBudW1iZXI7XG4gIFNlbmRlck1lc3NhZ2luZ1B1YmxpY0tleTogc3RyaW5nO1xuICBTZW5kZXJNZXNzYWdpbmdHcm91cEtleU5hbWU6IHN0cmluZztcbiAgUmVjaXBpZW50TWVzc2FnaW5nUHVibGljS2V5OiBzdHJpbmc7XG4gIFJlY2lwaWVudE1lc3NhZ2luZ0dyb3VwS2V5TmFtZTogc3RyaW5nO1xuICBkZWNyeXB0ZWRNZXNzYWdlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIERlU29OZXR3b3JrIHtcbiAgbWFpbm5ldCA9ICdtYWlubmV0JyxcbiAgdGVzdG5ldCA9ICd0ZXN0bmV0Jyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXJpdmVkUHJpdmF0ZVVzZXJJbmZvIHtcbiAgZGVyaXZlZFNlZWRIZXg6IHN0cmluZztcbiAgZGVyaXZlZFB1YmxpY0tleUJhc2U1OENoZWNrOiBzdHJpbmc7XG4gIHB1YmxpY0tleUJhc2U1OENoZWNrOiBzdHJpbmc7XG4gIGJ0Y0RlcG9zaXRBZGRyZXNzOiBzdHJpbmc7XG4gIGV0aERlcG9zaXRBZGRyZXNzOiBzdHJpbmc7XG4gIGV4cGlyYXRpb25CbG9jazogbnVtYmVyO1xuICBuZXR3b3JrOiBEZVNvTmV0d29yaztcbiAgYWNjZXNzU2lnbmF0dXJlOiBzdHJpbmc7XG4gIGp3dDogc3RyaW5nO1xuICBkZXJpdmVkSnd0OiBzdHJpbmc7XG4gIG1lc3NhZ2luZ1B1YmxpY0tleUJhc2U1OENoZWNrOiBzdHJpbmc7XG4gIG1lc3NhZ2luZ1ByaXZhdGVLZXk6IHN0cmluZztcbiAgbWVzc2FnaW5nS2V5TmFtZTogc3RyaW5nO1xuICBtZXNzYWdpbmdLZXlTaWduYXR1cmU6IHN0cmluZztcbiAgdHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0SGV4OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBlbnVtIENyZWF0b3JDb2luTGltaXRPcGVyYXRpb25TdHJpbmcge1xuICBBTlkgPSAnYW55JyxcbiAgQlVZID0gJ2J1eScsXG4gIFNFTEwgPSAnc2VsbCcsXG4gIFRSQU5TRkVSID0gJ3RyYW5zZmVyJyxcbn1cblxuZXhwb3J0IGVudW0gREFPQ29pbkxpbWl0T3BlcmF0aW9uU3RyaW5nIHtcbiAgQU5ZID0gJ2FueScsXG4gIE1JTlQgPSAnbWludCcsXG4gIEJVUk4gPSAnYnVybicsXG4gIERJU0FCTEVfTUlOVElORyA9ICdkaXNhYmxlX21pbnRpbmcnLFxuICBVUERBVEVfVFJBTlNGRVJfUkVTVFJJQ1RJT05fU1RBVFVTID0gJ3VwZGF0ZV90cmFuc2Zlcl9yZXN0cmljdGlvbl9zdGF0dXMnLFxuICBUUkFOU0ZFUiA9ICd0cmFuc2ZlcicsXG59XG5cbmV4cG9ydCB0eXBlIENvaW5MaW1pdE9wZXJhdGlvblN0cmluZyA9XG4gIHwgREFPQ29pbkxpbWl0T3BlcmF0aW9uU3RyaW5nXG4gIHwgQ3JlYXRvckNvaW5MaW1pdE9wZXJhdGlvblN0cmluZztcblxuZXhwb3J0IGludGVyZmFjZSBDb2luT3BlcmF0aW9uTGltaXRNYXA8VCBleHRlbmRzIENvaW5MaW1pdE9wZXJhdGlvblN0cmluZz4ge1xuICBbcHVibGljX2tleTogc3RyaW5nXTogT3BlcmF0aW9uVG9Db3VudE1hcDxUPjtcbn1cblxuZXhwb3J0IHR5cGUgT3BlcmF0aW9uVG9Db3VudE1hcDxUIGV4dGVuZHMgTGltaXRPcGVyYXRpb25TdHJpbmc+ID0ge1xuICBbb3BlcmF0aW9uIGluIFRdPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgTGltaXRPcGVyYXRpb25TdHJpbmcgPVxuICB8IERBT0NvaW5MaW1pdE9wZXJhdGlvblN0cmluZ1xuICB8IENyZWF0b3JDb2luTGltaXRPcGVyYXRpb25TdHJpbmdcbiAgfCBORlRMaW1pdE9wZXJhdGlvblN0cmluZztcbmV4cG9ydCB0eXBlIENyZWF0b3JDb2luT3BlcmF0aW9uTGltaXRNYXAgPVxuICBDb2luT3BlcmF0aW9uTGltaXRNYXA8Q3JlYXRvckNvaW5MaW1pdE9wZXJhdGlvblN0cmluZz47XG5leHBvcnQgdHlwZSBEQU9Db2luT3BlcmF0aW9uTGltaXRNYXAgPVxuICBDb2luT3BlcmF0aW9uTGltaXRNYXA8REFPQ29pbkxpbWl0T3BlcmF0aW9uU3RyaW5nPjtcbmV4cG9ydCB0eXBlIERBT0NvaW5MaW1pdE9yZGVyTGltaXRNYXAgPSB7XG4gIFtidXlpbmdfcHVibGljX2tleTogc3RyaW5nXTogeyBbc2VsbGluZ19wdWJsaWNfa2V5OiBzdHJpbmddOiBudW1iZXIgfTtcbn07XG5cbmV4cG9ydCBlbnVtIE5GVExpbWl0T3BlcmF0aW9uU3RyaW5nIHtcbiAgQU5ZID0gJ2FueScsXG4gIFVQREFURSA9ICd1cGRhdGUnLFxuICBCSUQgPSAnbmZ0X2JpZCcsXG4gIEFDQ0VQVF9CSUQgPSAnYWNjZXB0X25mdF9iaWQnLFxuICBUUkFOU0ZFUiA9ICd0cmFuc2ZlcicsXG4gIEJVUk4gPSAnYnVybicsXG4gIEFDQ0VQVF9UUkFOU0ZFUiA9ICdhY2NlcHRfbmZ0X3RyYW5zZmVyJyxcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTkZUT3BlcmF0aW9uTGltaXRNYXAge1xuICBbcG9zdF9oYXNoX2hleDogc3RyaW5nXToge1xuICAgIFtzZXJpYWxfbnVtYmVyOiBudW1iZXJdOiBPcGVyYXRpb25Ub0NvdW50TWFwPE5GVExpbWl0T3BlcmF0aW9uU3RyaW5nPjtcbiAgfTtcbn1cblxuZXhwb3J0IGVudW0gVHJhbnNhY3Rpb25UeXBlIHtcbiAgQmFzaWNUcmFuc2ZlciA9ICdCQVNJQ19UUkFOU0ZFUicsXG4gIEJpdGNvaW5FeGNoYW5nZSA9ICdCSVRDT0lOX0VYQ0hBTkdFJyxcbiAgUHJpdmF0ZU1lc3NhZ2UgPSAnUFJJVkFURV9NRVNTQUdFJyxcbiAgU3VibWl0UG9zdCA9ICdTVUJNSVRfUE9TVCcsXG4gIFVwZGF0ZVByb2ZpbGUgPSAnVVBEQVRFX1BST0ZJTEUnLFxuICBVcGRhdGVCaXRjb2luVVNERXhjaGFuZ2VSYXRlID0gJ1VQREFURV9CSVRDT0lOX1VTRF9FWENIQU5HRV9SQVRFJyxcbiAgRm9sbG93ID0gJ0ZPTExPVycsXG4gIExpa2UgPSAnTElLRScsXG4gIENyZWF0b3JDb2luID0gJ0NSRUFUT1JfQ09JTicsXG4gIFN3YXBJZGVudGl0eSA9ICdTV0FQX0lERU5USVRZJyxcbiAgVXBkYXRlR2xvYmFsUGFyYW1zID0gJ1VQREFURV9HTE9CQUxfUEFSQU1TJyxcbiAgQ3JlYXRvckNvaW5UcmFuc2ZlciA9ICdDUkVBVE9SX0NPSU5fVFJBTlNGRVInLFxuICBDcmVhdGVORlQgPSAnQ1JFQVRFX05GVCcsXG4gIFVwZGF0ZU5GVCA9ICdVUERBVEVfTkZUJyxcbiAgQWNjZXB0TkZUQmlkID0gJ0FDQ0VQVF9ORlRfQklEJyxcbiAgTkZUQmlkID0gJ05GVF9CSUQnLFxuICBORlRUcmFuc2ZlciA9ICdORlRfVFJBTlNGRVInLFxuICBBY2NlcHRORlRUcmFuc2ZlciA9ICdBQ0NFUFRfTkZUX1RSQU5TRkVSJyxcbiAgQnVybk5GVCA9ICdCVVJOX05GVCcsXG4gIEF1dGhvcml6ZURlcml2ZWRLZXkgPSAnQVVUSE9SSVpFX0RFUklWRURfS0VZJyxcbiAgTWVzc2FnaW5nR3JvdXAgPSAnTUVTU0FHSU5HX0dST1VQJyxcbiAgREFPQ29pbiA9ICdEQU9fQ09JTicsXG4gIERBT0NvaW5UcmFuc2ZlciA9ICdEQU9fQ09JTl9UUkFOU0ZFUicsXG4gIERBT0NvaW5MaW1pdE9yZGVyID0gJ0RBT19DT0lOX0xJTUlUX09SREVSJyxcbiAgQ3JlYXRlVXNlckFzc29jaWF0aW9uID0gJ0NSRUFURV9VU0VSX0FTU09DSUFUSU9OJyxcbiAgRGVsZXRlVXNlckFzc29jaWF0aW9uID0gJ0RFTEVURV9VU0VSX0FTU09DSUFUSU9OJyxcbiAgQ3JlYXRlUG9zdEFzc29jaWF0aW9uID0gJ0NSRUFURV9QT1NUX0FTU09DSUFUSU9OJyxcbiAgRGVsZXRlUG9zdEFzc29jaWF0aW9uID0gJ0RFTEVURV9QT1NUX0FTU09DSUFUSU9OJyxcbiAgQWNjZXNzR3JvdXAgPSAnQUNDRVNTX0dST1VQJyxcbiAgQWNjZXNzR3JvdXBNZW1iZXJzID0gJ0FDQ0VTU19HUk9VUF9NRU1CRVJTJyxcbiAgTmV3TWVzc2FnZSA9ICdORVdfTUVTU0FHRScsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWRlbnRpdHlEZXJpdmVQYXJhbXMge1xuICBjYWxsYmFjaz86IHN0cmluZztcbiAgd2Vidmlldz86IGJvb2xlYW47XG4gIHB1YmxpY0tleT86IHN0cmluZztcbiAgdHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2U/OiBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZTtcbiAgZGVyaXZlZFB1YmxpY0tleT86IHN0cmluZztcbiAgZGVsZXRlS2V5PzogYm9vbGVhbjtcbiAgZXhwaXJhdGlvbkRheXM/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWRlbnRpdHlEZXJpdmVRdWVyeVBhcmFtcyB7XG4gIGNhbGxiYWNrPzogc3RyaW5nO1xuICB3ZWJ2aWV3PzogYm9vbGVhbjtcbiAgcHVibGljS2V5Pzogc3RyaW5nO1xuICB0cmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZT86IHN0cmluZztcbiAgZGVyaXZlZFB1YmxpY0tleT86IHN0cmluZztcbiAgZGVsZXRlS2V5PzogYm9vbGVhbjtcbiAgZXhwaXJhdGlvbkRheXM/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yaXplRGVyaXZlZEtleVBhcmFtcyB7XG4gIE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2s/OiBzdHJpbmc7XG4gIERlcml2ZWRQdWJsaWNLZXlCYXNlNThDaGVjaz86IHN0cmluZztcbiAgRXhwaXJhdGlvbkJsb2NrPzogbnVtYmVyO1xuICBEZWxldGVLZXk6IGJvb2xlYW47XG4gIERlcml2ZWRLZXlTaWduYXR1cmU/OiBib29sZWFuO1xuICBUcmFuc2FjdGlvbkZlZXM6IFRyYW5zYWN0aW9uRmVlW10gfCBudWxsO1xuICBNaW5GZWVSYXRlTmFub3NQZXJLQjogbnVtYmVyO1xuICBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZT86IFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlO1xuICBNZW1vPzogc3RyaW5nO1xuICBBcHBOYW1lPzogc3RyaW5nO1xuICBFeHRyYURhdGE/OiB7IFtrOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgRXhwaXJhdGlvbkRheXM/OiBudW1iZXI7XG59XG5cbi8vIFRlbXBvcmFyeSBtYW51YWwgY3JlYXRpb24gb2YgY2xhc3NlcyBmb3IgREFPIGNvaW4gbGltaXQgb3JkZXJzXG5cbmV4cG9ydCBlbnVtIERBT0NvaW5MaW1pdE9yZGVyT3BlcmF0aW9uVHlwZVN0cmluZyB7XG4gIERBT0NvaW5MaW1pdE9yZGVyT3BlcmF0aW9uVHlwZVN0cmluZ0FTSyA9ICdBU0snLFxuICBEQU9Db2luTGltaXRPcmRlck9wZXJhdGlvblR5cGVTdHJpbmdCSUQgPSAnQklEJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvbkNvbnN0cnVjdGlvblJlc3BvbnNlIHtcbiAgVHJhbnNhY3Rpb25IZXg6IHN0cmluZztcbn1cblxuLy8gaXNzdWVzIHdpdGggdGhlIGNvbnZlcnRlciBsYXRlbHkgc28ganVzdCBnb2luZyB0byBhZGQgdGhlc2UgdG8gdGhlIGN1c3RvbSB0eXBlc1xuZXhwb3J0IGludGVyZmFjZSBEQU9Db2luTWFya2V0T3JkZXJXaXRoUXVhbnRpdHlSZXF1ZXN0IHtcbiAgVHJhbnNhY3RvclB1YmxpY0tleUJhc2U1OENoZWNrOiBzdHJpbmc7XG4gIEJ1eWluZ0RBT0NvaW5DcmVhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2s6IHN0cmluZztcbiAgU2VsbGluZ0RBT0NvaW5DcmVhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2s6IHN0cmluZztcbiAgUXVhbnRpdHlUb0ZpbGw6IG51bWJlcjtcbiAgT3BlcmF0aW9uVHlwZTogc3RyaW5nO1xuICBGaWxsVHlwZTogc3RyaW5nO1xuICBNaW5GZWVSYXRlTmFub3NQZXJLQjogbnVtYmVyO1xuICBUcmFuc2FjdGlvbkZlZXM6IFRyYW5zYWN0aW9uRmVlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgREFPQ29pbkxpbWl0T3JkZXJXaXRoRXhjaGFuZ2VSYXRlQW5kUXVhbnRpdHlSZXF1ZXN0IHtcbiAgVHJhbnNhY3RvclB1YmxpY0tleUJhc2U1OENoZWNrOiBzdHJpbmc7XG4gIEJ1eWluZ0RBT0NvaW5DcmVhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2s6IHN0cmluZztcbiAgU2VsbGluZ0RBT0NvaW5DcmVhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2s6IHN0cmluZztcbiAgRXhjaGFuZ2VSYXRlQ29pbnNUb1NlbGxQZXJDb2luVG9CdXk6IG51bWJlcjtcbiAgUXVhbnRpdHlUb0ZpbGw6IG51bWJlcjtcbiAgT3BlcmF0aW9uVHlwZTogc3RyaW5nO1xuICBNaW5GZWVSYXRlTmFub3NQZXJLQj86IG51bWJlcjtcbiAgVHJhbnNhY3Rpb25GZWVzOiBUcmFuc2FjdGlvbkZlZVtdIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXRhTWFza0luaXRSZXNwb25zZSB7XG4gIGRlcml2ZWRLZXlQYWlyOiBlYy5LZXlQYWlyO1xuICBkZXJpdmVkUHVibGljS2V5QmFzZTU4Q2hlY2s6IHN0cmluZztcbiAgc3VibWlzc2lvblJlc3BvbnNlOiBTdWJtaXRUcmFuc2FjdGlvblJlc3BvbnNlO1xuICBldGhlcmV1bUFkZHJlc3M6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcHRpb25hbEZlZXNBbmRFeHRyYURhdGEge1xuICBNaW5GZWVSYXRlTmFub3NQZXJLQj86IG51bWJlcjtcbiAgVHJhbnNhY3Rpb25GZWVzPzogVHJhbnNhY3Rpb25GZWVbXSB8IG51bGw7XG4gIEV4dHJhRGF0YT86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbmV4cG9ydCB0eXBlIFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8VD4gPSBPbWl0PFxuICBULFxuICAnTWluRmVlUmF0ZU5hbm9zUGVyS0InIHwgJ1RyYW5zYWN0aW9uRmVlcycgfCAnRXh0cmFEYXRhJyB8ICdJblR1dG9yaWFsJ1xuPiAmXG4gIE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTtcblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGlzIGlzIG9ubHkgcmVsZXZhbnQgZm9yIHdyaXRlIG9wZXJhdGlvbnMgdGhhdCByZXF1aXJlIGEgc2lnbmVkXG4gICAqIHRyYW5zYWN0aW9uIChzdWJtaXQtcG9zdCwgdXBkYXRlLXByb2ZpbGUsIGV0YykuIEl0IGRldGVybWluZXMgd2hldGhlciB0b1xuICAgKiBicm9hZGNhc3QgdGhlIHRyYW5zYWN0aW9uIHRvIHRoZSBuZXR3b3JrLiBEZWZhdWx0cyB0byB0cnVlLiBJZiBzZXQgdG9cbiAgICogZmFsc2UsIHRoZSB0cmFuc2FjdGlvbiB3aWxsIGJlIGNvbnN0cnVjdGVkIGJ1dCBub3Qgc2lnbmVkIG9yIHN1Ym1pdHRlZFxuICAgKiB3aGljaCBpcyB1c2VmdWwgZm9yIGNvbnN0cnVjdGluZyB0cmFuc2FjdGlvbnMgdG8gcHJldmlldyB0aGVtIHdpdGhvdXRcbiAgICogYnJvYWRjYXN0aW5nIGFzIGEgc29ydCBvZiBcImRyeS1ydW5cIi5cbiAgICovXG4gIGJyb2FkY2FzdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBub2RlIHRvIHNlbmQgdGhlIHJlcXVlc3QgdG8uIElmIG5vdCBwcm92aWRlZCwgZWl0aGVyIHRoZSBkZWZhdWx0IG5vZGVcbiAgICogb3IgdGhlIGNvbmZpZ3VyZWQgbm9kZSB3aWxsIGJlIHVzZWQuXG4gICAqL1xuICBub2RlVVJJPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFeHBlcmltZW50YWwgcGFyYW0uIFdoZW4gbG9jYWxDb25zdHJ1Y3Rpb24gaXMgdHJ1ZSwgdHJhbnNhY3Rpb25zIHdpbGxcbiAgICogYmUgY29uc3RydWN0ZWQgbG9jYWxseS4gVGhpcyBvbmx5IGFwcGxpZXMgYWZ0ZXIgdGhlIGJhbGFuY2UgbW9kZWwgZm9yay5cbiAgICovXG4gIGxvY2FsQ29uc3RydWN0aW9uPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRvIGJlIHVzZWQgdG8gY29uc3RydWN0IHRoZSB0cmFuc2FjdGlvbiBsb2NhbGx5LlxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqIEByZXR1cm5zIFByb21pc2Ugd2l0aCB0aGUgQ29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlXG4gICAqL1xuICBjb25zdHJ1Y3Rpb25GdW5jdGlvbj86IChcbiAgICBwYXJhbXM6IGFueSAvLyBUT0RPOiBJIGFjdHVhbGx5IHRoaW5rIHdlIHdhbnQgYW55IHRvIGJlIFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGFcbiAgKSA9PiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT47XG59XG5cbmV4cG9ydCB0eXBlIENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZSA9IHtcbiAgVHJhbnNhY3Rpb246IE1zZ0RlU29UeG47XG4gIEZlZU5hbm9zOiBudW1iZXI7XG4gIFRyYW5zYWN0aW9uSGV4OiBzdHJpbmc7XG4gIFR4bkhhc2hIZXg6IHN0cmluZztcbiAgVG90YWxJbnB1dE5hbm9zOiBudW1iZXI7XG4gIENoYW5nZUFtb3VudE5hbm9zOiBudW1iZXI7XG4gIFNwZW5kQW1vdW50TmFub3M6IG51bWJlcjtcbiAgVHJhbnNhY3Rpb25JREJhc2U1OENoZWNrPzogc3RyaW5nO1xuICAvLyBCdXkgb3Igc2VsbCBjcmVhdG9yIGNvaW5zIChzZXJ2ZXIgc2lkZSBvbmx5KVxuICBFeHBlY3RlZERlU29SZXR1cm5lZE5hbm9zPzogbnVtYmVyO1xuICBFeHBlY3RlZENyZWF0b3JDb2luUmV0dXJuZWROYW5vcz86IG51bWJlcjtcbiAgRm91bmRlclJld2FyZEdlbmVyYXRlZE5hbm9zPzogbnVtYmVyO1xuICAvLyBTdWJtaXRQb3N0IChzZXJ2ZXIgc2lkZSBvbmx5KVxuICBUc3RhbXBOYW5vcz86IG51bWJlcjtcbiAgUG9zdEhhc2hIZXg/OiBzdHJpbmc7XG4gIC8vIFVwZGF0ZVByb2ZpbGUgKHNlcnZlciBzaWRlIG9ubHkpXG4gIENvbXBQcm9maWxlQ3JlYXRpb25UeG5IYXNoSGV4Pzogc3RyaW5nO1xuICAvLyBEQU8gQ29pbiBMaW1pdCBPcmRlciAoc2VydmVyIHNpZGUgb25seSlcbiAgU2ltdWxhdGVkRXhlY3V0aW9uUmVzdWx0PzogREFPQ29pbkxpbWl0T3JkZXJTaW11bGF0ZWRFeGVjdXRpb25SZXN1bHQ7XG4gIC8vIENyZWF0ZS9VcGRhdGUgTkZULCBORlQgQmlkLCBBY2NlcHQgTkZUIEJpZCAoc2VydmVyIHNpZGUgb25seSlcbiAgTkZUUG9zdEhhc2hIZXg/OiBzdHJpbmc7XG4gIC8vIFVwZGF0ZSBORlQsIE5GVCBCaWQsIEFjY2VwdCBORlQgQmlkIChzZXJ2ZXIgc2lkZSBvbmx5KVxuICBTZXJpYWxOdW1iZXI/OiBudW1iZXI7XG4gIC8vIE5GVCBCaWQgKHNlcnZlciBzaWRlIG9ubHkpXG4gIFVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjaz86IHN0cmluZztcbiAgLy8gTkZUIEJpZCwgQWNjZXB0IE5GVCBCaWQgKHNlcnZlciBzaWRlIG9ubHkpXG4gIEJpZEFtb3VudE5hbm9zPzogbnVtYmVyO1xuICAvLyBBY2NlcHQgTkZUIEJpZCAoc2VydmVyIHNpZGUgb25seSlcbiAgQmlkZGVyUHVibGljS2V5QmFzZTU4Q2hlY2s/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBNZXNzYWdpbmdHcm91cFBheWxvYWQgPSB7XG4gIG1lc3NhZ2luZ0tleVNpZ25hdHVyZTogc3RyaW5nO1xuICBlbmNyeXB0ZWRUb0FwcGxpY2F0aW9uR3JvdXBNZXNzYWdpbmdQcml2YXRlS2V5OiBzdHJpbmc7XG4gIGVuY3J5cHRlZFRvTWVtYmVyc0dyb3VwTWVzc2FnaW5nUHJpdmF0ZUtleTogc3RyaW5nW107XG4gIG1lc3NhZ2luZ1B1YmxpY0tleUJhc2U1OENoZWNrOiBzdHJpbmc7XG4gIGVuY3J5cHRlZE1lc3NhZ2luZ0tleVJhbmRvbW5lc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBlbnVtIE1lc3NhZ2luZ0dyb3VwT3BlcmF0aW9uIHtcbiAgREVGQVVMVF9LRVkgPSAnRGVmYXVsdEtleScsXG4gIENSRUFURV9HUk9VUCA9ICdDcmVhdGVHcm91cCcsXG4gIEFERF9NRU1CRVJTID0gJ0FkZE1lbWJlcnMnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERBT0NvaW5FbnRyeSB7XG4gIE51bWJlck9mSG9sZGVyczogbnVtYmVyO1xuICBDb2luc0luQ2lyY3VsYXRpb25OYW5vczogc3RyaW5nO1xuICBNaW50aW5nRGlzYWJsZWQ6IGJvb2xlYW47XG4gIFRyYW5zZmVyUmVzdHJpY3Rpb25TdGF0dXM6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGxvYWRWaWRlb1YyUmVzcG9uc2Uge1xuICBhc3NldDoge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgcGxheWJhY2tJZDogc3RyaW5nO1xuICB9O1xuICB0dXNFbmRwb2ludDogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzby10eXBlcy1jdXN0b20uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFja2VuZC10eXBlcy9kZXNvLXR5cGVzLWN1c3RvbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEySUEsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNyQixrQ0FBbUIsQ0FBQTtJQUNuQixrQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBSFcsV0FBVyxLQUFYLFdBQVcsUUFHdEI7QUFvQkQsTUFBTSxDQUFOLElBQVksK0JBS1g7QUFMRCxXQUFZLCtCQUErQjtJQUN6Qyw4Q0FBVyxDQUFBO0lBQ1gsOENBQVcsQ0FBQTtJQUNYLGdEQUFhLENBQUE7SUFDYix3REFBcUIsQ0FBQTtBQUN2QixDQUFDLEVBTFcsK0JBQStCLEtBQS9CLCtCQUErQixRQUsxQztBQUVELE1BQU0sQ0FBTixJQUFZLDJCQU9YO0FBUEQsV0FBWSwyQkFBMkI7SUFDckMsMENBQVcsQ0FBQTtJQUNYLDRDQUFhLENBQUE7SUFDYiw0Q0FBYSxDQUFBO0lBQ2Isa0VBQW1DLENBQUE7SUFDbkMsd0dBQXlFLENBQUE7SUFDekUsb0RBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQVBXLDJCQUEyQixLQUEzQiwyQkFBMkIsUUFPdEM7QUEwQkQsTUFBTSxDQUFOLElBQVksdUJBUVg7QUFSRCxXQUFZLHVCQUF1QjtJQUNqQyxzQ0FBVyxDQUFBO0lBQ1gsNENBQWlCLENBQUE7SUFDakIsMENBQWUsQ0FBQTtJQUNmLHdEQUE2QixDQUFBO0lBQzdCLGdEQUFxQixDQUFBO0lBQ3JCLHdDQUFhLENBQUE7SUFDYixrRUFBdUMsQ0FBQTtBQUN6QyxDQUFDLEVBUlcsdUJBQXVCLEtBQXZCLHVCQUF1QixRQVFsQztBQU9ELE1BQU0sQ0FBTixJQUFZLGVBZ0NYO0FBaENELFdBQVksZUFBZTtJQUN6QixtREFBZ0MsQ0FBQTtJQUNoQyx1REFBb0MsQ0FBQTtJQUNwQyxxREFBa0MsQ0FBQTtJQUNsQyw2Q0FBMEIsQ0FBQTtJQUMxQixtREFBZ0MsQ0FBQTtJQUNoQyxvRkFBaUUsQ0FBQTtJQUNqRSxvQ0FBaUIsQ0FBQTtJQUNqQixnQ0FBYSxDQUFBO0lBQ2IsK0NBQTRCLENBQUE7SUFDNUIsaURBQThCLENBQUE7SUFDOUIsOERBQTJDLENBQUE7SUFDM0MsZ0VBQTZDLENBQUE7SUFDN0MsMkNBQXdCLENBQUE7SUFDeEIsMkNBQXdCLENBQUE7SUFDeEIsa0RBQStCLENBQUE7SUFDL0IscUNBQWtCLENBQUE7SUFDbEIsK0NBQTRCLENBQUE7SUFDNUIsNERBQXlDLENBQUE7SUFDekMsdUNBQW9CLENBQUE7SUFDcEIsZ0VBQTZDLENBQUE7SUFDN0MscURBQWtDLENBQUE7SUFDbEMsdUNBQW9CLENBQUE7SUFDcEIsd0RBQXFDLENBQUE7SUFDckMsNkRBQTBDLENBQUE7SUFDMUMsb0VBQWlELENBQUE7SUFDakQsb0VBQWlELENBQUE7SUFDakQsb0VBQWlELENBQUE7SUFDakQsb0VBQWlELENBQUE7SUFDakQsK0NBQTRCLENBQUE7SUFDNUIsOERBQTJDLENBQUE7SUFDM0MsNkNBQTBCLENBQUE7QUFDNUIsQ0FBQyxFQWhDVyxlQUFlLEtBQWYsZUFBZSxRQWdDMUI7QUFxQ0QsaUVBQWlFO0FBRWpFLE1BQU0sQ0FBTixJQUFZLG9DQUdYO0FBSEQsV0FBWSxvQ0FBb0M7SUFDOUMsdUZBQStDLENBQUE7SUFDL0MsdUZBQStDLENBQUE7QUFDakQsQ0FBQyxFQUhXLG9DQUFvQyxLQUFwQyxvQ0FBb0MsUUFHL0M7QUE2SEQsTUFBTSxDQUFOLElBQVksdUJBSVg7QUFKRCxXQUFZLHVCQUF1QjtJQUNqQyxxREFBMEIsQ0FBQTtJQUMxQix1REFBNEIsQ0FBQTtJQUM1QixxREFBMEIsQ0FBQTtBQUM1QixDQUFDLEVBSlcsdUJBQXVCLEtBQXZCLHVCQUF1QixRQUlsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVjIH0gZnJvbSAnZWxsaXB0aWMnO1xuaW1wb3J0IHsgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkcyB9IGZyb20gJy4uL2RhdGEvaW5kZXguanMnO1xuaW1wb3J0IHtcbiAgREFPQ29pbkxpbWl0T3JkZXJTaW11bGF0ZWRFeGVjdXRpb25SZXN1bHQsXG4gIERlU29Ob25jZSxcbiAgTXNnRGVTb1R4bixcbiAgU3VibWl0VHJhbnNhY3Rpb25SZXNwb25zZSxcbiAgVHJhbnNhY3Rpb25GZWUsXG4gIFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlLFxufSBmcm9tICcuL2Rlc28tdHlwZXMuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdldEFwcHJvdmVSZXNwb25zZSB7XG4gIGlkPzogc3RyaW5nO1xuICBzZXJ2aWNlOiAnaWRlbnRpdHknO1xuICBtZXRob2Q6ICdhcHByb3ZlJztcbiAgcGF5bG9hZDoge1xuICAgIHVzZXJzOiB7XG4gICAgICBba2V5OiBzdHJpbmddOiB7XG4gICAgICAgIGFjY2Vzc0xldmVsOiBudW1iZXI7XG4gICAgICAgIGFjY2Vzc0xldmVsSG1hYzogc3RyaW5nO1xuICAgICAgICBidGNEZXBvc2l0QWRkcmVzczogc3RyaW5nO1xuICAgICAgICBlbmNyeXB0ZWRTZWVkSGV4OiBzdHJpbmc7XG4gICAgICAgIGhhc0V4dHJhVGV4dDogYm9vbGVhbjtcbiAgICAgICAgbmV0d29yazogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHNpZ25lZFRyYW5zYWN0aW9uSGV4OiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWRlbnRpdHlMb2dpblJlc3BvbnNlIHtcbiAgaWQ/OiBzdHJpbmc7XG4gIHNlcnZpY2U6ICdpZGVudGl0eSc7XG4gIG1ldGhvZDogc3RyaW5nO1xuICBwYXlsb2FkOiB7XG4gICAgdXNlcnM6IExvZ2luVXNlcnM7XG4gICAgcHVibGljS2V5QWRkZWQ6IHN0cmluZztcbiAgICBzaWduZWRVcDogYm9vbGVhbjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGxvYWRJbWFnZVJlcXVlc3Qge1xuICBVc2VyUHVibGljS2V5QmFzZTU4Q2hlY2s6IHN0cmluZztcbiAgSldUOiBzdHJpbmc7XG4gIGZpbGU6IEZpbGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkVmlkZW9SZXF1ZXN0IHtcbiAgVXNlclB1YmxpY0tleUJhc2U1OENoZWNrOiBzdHJpbmc7XG4gIEpXVDogc3RyaW5nO1xuICBmaWxlOiBGaWxlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldFZpZGVvU3RhdHVzUmVxdWVzdCB7XG4gIHZpZGVvSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGxvYWRWaWRlb1Jlc3BvbnNlIHtcbiAgc3RyZWFtTWVkaWFJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2luVXNlciB7XG4gIGFjY2Vzc0xldmVsOiBudW1iZXI7XG4gIGFjY2Vzc0xldmVsSG1hYzogc3RyaW5nO1xuICBidGNEZXBvc2l0QWRkcmVzczogc3RyaW5nO1xuICBlbmNyeXB0ZWRTZWVkSGV4OiBzdHJpbmc7XG4gIGhhc0V4dHJhVGV4dDogYm9vbGVhbjtcbiAgZXRoRGVwb3NpdEFkZHJlc3M6IHN0cmluZztcbiAgbmV0d29yazogc3RyaW5nO1xuICBlbmNyeXB0ZWRNZXNzYWdpbmdLZXlSYW5kb21uZXNzPzogc3RyaW5nO1xuICBkZXJpdmVkUHVibGljS2V5QmFzZTU4Q2hlY2s/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9naW5Vc2VycyB7XG4gIFt1c2VyOiBzdHJpbmddOiBMb2dpblVzZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWRlbnRpdHlBcHByb3ZlUmVzcG9uc2Uge1xuICBpZD86IHN0cmluZztcbiAgc2VydmljZTogJ2lkZW50aXR5JztcbiAgbWV0aG9kOiBzdHJpbmc7XG4gIHBheWxvYWQ6IHtcbiAgICB1c2VyczogTG9naW5Vc2VyO1xuICAgIHNpZ25lZFRyYW5zYWN0aW9uSGV4OiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWRlbnRpdHlKd3RSZXNwb25zZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHNlcnZpY2U6ICdpZGVudGl0eSc7XG4gIHBheWxvYWQ6IHtcbiAgICBqd3Q6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJZGVudGl0eVNpZ25SZXF1ZXN0IHtcbiAgaWQ6IHN0cmluZztcbiAgc2VydmljZTogc3RyaW5nO1xuICBtZXRob2Q6IHN0cmluZztcbiAgcGF5bG9hZDoge1xuICAgIGFjY2Vzc0xldmVsOiBudW1iZXI7XG4gICAgYWNjZXNzTGV2ZWxIbWFjOiBzdHJpbmc7XG4gICAgZW5jcnlwdGVkU2VlZEhleDogc3RyaW5nO1xuICAgIHRyYW5zYWN0aW9uSGV4Pzogc3RyaW5nO1xuICAgIHNpZ25lZFRyYW5zYWN0aW9uSGV4Pzogc3RyaW5nO1xuICAgIGVuY3J5cHRlZE1lc3NhZ2U/OiB7XG4gICAgICBFbmNyeXB0ZWRIZXg6IHN0cmluZztcbiAgICAgIFB1YmxpY0tleTogc3RyaW5nO1xuICAgICAgSXNTZW5kZXI6IGJvb2xlYW47XG4gICAgICBMZWdhY3k6IGJvb2xlYW47XG4gICAgfVtdO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldERlY3J5cHRNZXNzYWdlc1JlcXVlc3Qge1xuICBFbmNyeXB0ZWRIZXg6IHN0cmluZztcbiAgUHVibGljS2V5OiBzdHJpbmc7XG4gIElzU2VuZGVyOiBib29sZWFuO1xuICBMZWdhY3k6IGJvb2xlYW47XG4gIFZlcnNpb246IG51bWJlcjtcbiAgU2VuZGVyTWVzc2FnaW5nUHVibGljS2V5OiBzdHJpbmc7XG4gIFNlbmRlck1lc3NhZ2luZ0dyb3VwS2V5TmFtZTogc3RyaW5nO1xuICBSZWNpcGllbnRNZXNzYWdpbmdQdWJsaWNLZXk6IHN0cmluZztcbiAgUmVjaXBpZW50TWVzc2FnaW5nR3JvdXBLZXlOYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RGVjcnlwdE1lc3NhZ2VzUmVzcG9uc2Uge1xuICBFbmNyeXB0ZWRIZXg6IHN0cmluZztcbiAgUHVibGljS2V5OiBzdHJpbmc7XG4gIElzU2VuZGVyOiBib29sZWFuO1xuICBMZWdhY3k6IGJvb2xlYW47XG4gIFZlcnNpb246IG51bWJlcjtcbiAgU2VuZGVyTWVzc2FnaW5nUHVibGljS2V5OiBzdHJpbmc7XG4gIFNlbmRlck1lc3NhZ2luZ0dyb3VwS2V5TmFtZTogc3RyaW5nO1xuICBSZWNpcGllbnRNZXNzYWdpbmdQdWJsaWNLZXk6IHN0cmluZztcbiAgUmVjaXBpZW50TWVzc2FnaW5nR3JvdXBLZXlOYW1lOiBzdHJpbmc7XG4gIGRlY3J5cHRlZE1lc3NhZ2U6IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gRGVTb05ldHdvcmsge1xuICBtYWlubmV0ID0gJ21haW5uZXQnLFxuICB0ZXN0bmV0ID0gJ3Rlc3RuZXQnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlcml2ZWRQcml2YXRlVXNlckluZm8ge1xuICBkZXJpdmVkU2VlZEhleDogc3RyaW5nO1xuICBkZXJpdmVkUHVibGljS2V5QmFzZTU4Q2hlY2s6IHN0cmluZztcbiAgcHVibGljS2V5QmFzZTU4Q2hlY2s6IHN0cmluZztcbiAgYnRjRGVwb3NpdEFkZHJlc3M6IHN0cmluZztcbiAgZXRoRGVwb3NpdEFkZHJlc3M6IHN0cmluZztcbiAgZXhwaXJhdGlvbkJsb2NrOiBudW1iZXI7XG4gIG5ldHdvcms6IERlU29OZXR3b3JrO1xuICBhY2Nlc3NTaWduYXR1cmU6IHN0cmluZztcbiAgand0OiBzdHJpbmc7XG4gIGRlcml2ZWRKd3Q6IHN0cmluZztcbiAgbWVzc2FnaW5nUHVibGljS2V5QmFzZTU4Q2hlY2s6IHN0cmluZztcbiAgbWVzc2FnaW5nUHJpdmF0ZUtleTogc3RyaW5nO1xuICBtZXNzYWdpbmdLZXlOYW1lOiBzdHJpbmc7XG4gIG1lc3NhZ2luZ0tleVNpZ25hdHVyZTogc3RyaW5nO1xuICB0cmFuc2FjdGlvblNwZW5kaW5nTGltaXRIZXg6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGVudW0gQ3JlYXRvckNvaW5MaW1pdE9wZXJhdGlvblN0cmluZyB7XG4gIEFOWSA9ICdhbnknLFxuICBCVVkgPSAnYnV5JyxcbiAgU0VMTCA9ICdzZWxsJyxcbiAgVFJBTlNGRVIgPSAndHJhbnNmZXInLFxufVxuXG5leHBvcnQgZW51bSBEQU9Db2luTGltaXRPcGVyYXRpb25TdHJpbmcge1xuICBBTlkgPSAnYW55JyxcbiAgTUlOVCA9ICdtaW50JyxcbiAgQlVSTiA9ICdidXJuJyxcbiAgRElTQUJMRV9NSU5USU5HID0gJ2Rpc2FibGVfbWludGluZycsXG4gIFVQREFURV9UUkFOU0ZFUl9SRVNUUklDVElPTl9TVEFUVVMgPSAndXBkYXRlX3RyYW5zZmVyX3Jlc3RyaWN0aW9uX3N0YXR1cycsXG4gIFRSQU5TRkVSID0gJ3RyYW5zZmVyJyxcbn1cblxuZXhwb3J0IHR5cGUgQ29pbkxpbWl0T3BlcmF0aW9uU3RyaW5nID1cbiAgfCBEQU9Db2luTGltaXRPcGVyYXRpb25TdHJpbmdcbiAgfCBDcmVhdG9yQ29pbkxpbWl0T3BlcmF0aW9uU3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5PcGVyYXRpb25MaW1pdE1hcDxUIGV4dGVuZHMgQ29pbkxpbWl0T3BlcmF0aW9uU3RyaW5nPiB7XG4gIFtwdWJsaWNfa2V5OiBzdHJpbmddOiBPcGVyYXRpb25Ub0NvdW50TWFwPFQ+O1xufVxuXG5leHBvcnQgdHlwZSBPcGVyYXRpb25Ub0NvdW50TWFwPFQgZXh0ZW5kcyBMaW1pdE9wZXJhdGlvblN0cmluZz4gPSB7XG4gIFtvcGVyYXRpb24gaW4gVF0/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBMaW1pdE9wZXJhdGlvblN0cmluZyA9XG4gIHwgREFPQ29pbkxpbWl0T3BlcmF0aW9uU3RyaW5nXG4gIHwgQ3JlYXRvckNvaW5MaW1pdE9wZXJhdGlvblN0cmluZ1xuICB8IE5GVExpbWl0T3BlcmF0aW9uU3RyaW5nO1xuZXhwb3J0IHR5cGUgQ3JlYXRvckNvaW5PcGVyYXRpb25MaW1pdE1hcCA9XG4gIENvaW5PcGVyYXRpb25MaW1pdE1hcDxDcmVhdG9yQ29pbkxpbWl0T3BlcmF0aW9uU3RyaW5nPjtcbmV4cG9ydCB0eXBlIERBT0NvaW5PcGVyYXRpb25MaW1pdE1hcCA9XG4gIENvaW5PcGVyYXRpb25MaW1pdE1hcDxEQU9Db2luTGltaXRPcGVyYXRpb25TdHJpbmc+O1xuZXhwb3J0IHR5cGUgREFPQ29pbkxpbWl0T3JkZXJMaW1pdE1hcCA9IHtcbiAgW2J1eWluZ19wdWJsaWNfa2V5OiBzdHJpbmddOiB7IFtzZWxsaW5nX3B1YmxpY19rZXk6IHN0cmluZ106IG51bWJlciB9O1xufTtcblxuZXhwb3J0IGVudW0gTkZUTGltaXRPcGVyYXRpb25TdHJpbmcge1xuICBBTlkgPSAnYW55JyxcbiAgVVBEQVRFID0gJ3VwZGF0ZScsXG4gIEJJRCA9ICduZnRfYmlkJyxcbiAgQUNDRVBUX0JJRCA9ICdhY2NlcHRfbmZ0X2JpZCcsXG4gIFRSQU5TRkVSID0gJ3RyYW5zZmVyJyxcbiAgQlVSTiA9ICdidXJuJyxcbiAgQUNDRVBUX1RSQU5TRkVSID0gJ2FjY2VwdF9uZnRfdHJhbnNmZXInLFxufVxuZXhwb3J0IGludGVyZmFjZSBORlRPcGVyYXRpb25MaW1pdE1hcCB7XG4gIFtwb3N0X2hhc2hfaGV4OiBzdHJpbmddOiB7XG4gICAgW3NlcmlhbF9udW1iZXI6IG51bWJlcl06IE9wZXJhdGlvblRvQ291bnRNYXA8TkZUTGltaXRPcGVyYXRpb25TdHJpbmc+O1xuICB9O1xufVxuXG5leHBvcnQgZW51bSBUcmFuc2FjdGlvblR5cGUge1xuICBCYXNpY1RyYW5zZmVyID0gJ0JBU0lDX1RSQU5TRkVSJyxcbiAgQml0Y29pbkV4Y2hhbmdlID0gJ0JJVENPSU5fRVhDSEFOR0UnLFxuICBQcml2YXRlTWVzc2FnZSA9ICdQUklWQVRFX01FU1NBR0UnLFxuICBTdWJtaXRQb3N0ID0gJ1NVQk1JVF9QT1NUJyxcbiAgVXBkYXRlUHJvZmlsZSA9ICdVUERBVEVfUFJPRklMRScsXG4gIFVwZGF0ZUJpdGNvaW5VU0RFeGNoYW5nZVJhdGUgPSAnVVBEQVRFX0JJVENPSU5fVVNEX0VYQ0hBTkdFX1JBVEUnLFxuICBGb2xsb3cgPSAnRk9MTE9XJyxcbiAgTGlrZSA9ICdMSUtFJyxcbiAgQ3JlYXRvckNvaW4gPSAnQ1JFQVRPUl9DT0lOJyxcbiAgU3dhcElkZW50aXR5ID0gJ1NXQVBfSURFTlRJVFknLFxuICBVcGRhdGVHbG9iYWxQYXJhbXMgPSAnVVBEQVRFX0dMT0JBTF9QQVJBTVMnLFxuICBDcmVhdG9yQ29pblRyYW5zZmVyID0gJ0NSRUFUT1JfQ09JTl9UUkFOU0ZFUicsXG4gIENyZWF0ZU5GVCA9ICdDUkVBVEVfTkZUJyxcbiAgVXBkYXRlTkZUID0gJ1VQREFURV9ORlQnLFxuICBBY2NlcHRORlRCaWQgPSAnQUNDRVBUX05GVF9CSUQnLFxuICBORlRCaWQgPSAnTkZUX0JJRCcsXG4gIE5GVFRyYW5zZmVyID0gJ05GVF9UUkFOU0ZFUicsXG4gIEFjY2VwdE5GVFRyYW5zZmVyID0gJ0FDQ0VQVF9ORlRfVFJBTlNGRVInLFxuICBCdXJuTkZUID0gJ0JVUk5fTkZUJyxcbiAgQXV0aG9yaXplRGVyaXZlZEtleSA9ICdBVVRIT1JJWkVfREVSSVZFRF9LRVknLFxuICBNZXNzYWdpbmdHcm91cCA9ICdNRVNTQUdJTkdfR1JPVVAnLFxuICBEQU9Db2luID0gJ0RBT19DT0lOJyxcbiAgREFPQ29pblRyYW5zZmVyID0gJ0RBT19DT0lOX1RSQU5TRkVSJyxcbiAgREFPQ29pbkxpbWl0T3JkZXIgPSAnREFPX0NPSU5fTElNSVRfT1JERVInLFxuICBDcmVhdGVVc2VyQXNzb2NpYXRpb24gPSAnQ1JFQVRFX1VTRVJfQVNTT0NJQVRJT04nLFxuICBEZWxldGVVc2VyQXNzb2NpYXRpb24gPSAnREVMRVRFX1VTRVJfQVNTT0NJQVRJT04nLFxuICBDcmVhdGVQb3N0QXNzb2NpYXRpb24gPSAnQ1JFQVRFX1BPU1RfQVNTT0NJQVRJT04nLFxuICBEZWxldGVQb3N0QXNzb2NpYXRpb24gPSAnREVMRVRFX1BPU1RfQVNTT0NJQVRJT04nLFxuICBBY2Nlc3NHcm91cCA9ICdBQ0NFU1NfR1JPVVAnLFxuICBBY2Nlc3NHcm91cE1lbWJlcnMgPSAnQUNDRVNTX0dST1VQX01FTUJFUlMnLFxuICBOZXdNZXNzYWdlID0gJ05FV19NRVNTQUdFJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJZGVudGl0eURlcml2ZVBhcmFtcyB7XG4gIGNhbGxiYWNrPzogc3RyaW5nO1xuICB3ZWJ2aWV3PzogYm9vbGVhbjtcbiAgcHVibGljS2V5Pzogc3RyaW5nO1xuICB0cmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZT86IFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlO1xuICBkZXJpdmVkUHVibGljS2V5Pzogc3RyaW5nO1xuICBkZWxldGVLZXk/OiBib29sZWFuO1xuICBleHBpcmF0aW9uRGF5cz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJZGVudGl0eURlcml2ZVF1ZXJ5UGFyYW1zIHtcbiAgY2FsbGJhY2s/OiBzdHJpbmc7XG4gIHdlYnZpZXc/OiBib29sZWFuO1xuICBwdWJsaWNLZXk/OiBzdHJpbmc7XG4gIHRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlPzogc3RyaW5nO1xuICBkZXJpdmVkUHVibGljS2V5Pzogc3RyaW5nO1xuICBkZWxldGVLZXk/OiBib29sZWFuO1xuICBleHBpcmF0aW9uRGF5cz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRob3JpemVEZXJpdmVkS2V5UGFyYW1zIHtcbiAgT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjaz86IHN0cmluZztcbiAgRGVyaXZlZFB1YmxpY0tleUJhc2U1OENoZWNrPzogc3RyaW5nO1xuICBFeHBpcmF0aW9uQmxvY2s/OiBudW1iZXI7XG4gIERlbGV0ZUtleTogYm9vbGVhbjtcbiAgRGVyaXZlZEtleVNpZ25hdHVyZT86IGJvb2xlYW47XG4gIFRyYW5zYWN0aW9uRmVlczogVHJhbnNhY3Rpb25GZWVbXSB8IG51bGw7XG4gIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBudW1iZXI7XG4gIFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlPzogVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2U7XG4gIE1lbW8/OiBzdHJpbmc7XG4gIEFwcE5hbWU/OiBzdHJpbmc7XG4gIEV4dHJhRGF0YT86IHsgW2s6IHN0cmluZ106IHN0cmluZyB9O1xuICBFeHBpcmF0aW9uRGF5cz86IG51bWJlcjtcbn1cblxuLy8gVGVtcG9yYXJ5IG1hbnVhbCBjcmVhdGlvbiBvZiBjbGFzc2VzIGZvciBEQU8gY29pbiBsaW1pdCBvcmRlcnNcblxuZXhwb3J0IGVudW0gREFPQ29pbkxpbWl0T3JkZXJPcGVyYXRpb25UeXBlU3RyaW5nIHtcbiAgREFPQ29pbkxpbWl0T3JkZXJPcGVyYXRpb25UeXBlU3RyaW5nQVNLID0gJ0FTSycsXG4gIERBT0NvaW5MaW1pdE9yZGVyT3BlcmF0aW9uVHlwZVN0cmluZ0JJRCA9ICdCSUQnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uQ29uc3RydWN0aW9uUmVzcG9uc2Uge1xuICBUcmFuc2FjdGlvbkhleDogc3RyaW5nO1xufVxuXG4vLyBpc3N1ZXMgd2l0aCB0aGUgY29udmVydGVyIGxhdGVseSBzbyBqdXN0IGdvaW5nIHRvIGFkZCB0aGVzZSB0byB0aGUgY3VzdG9tIHR5cGVzXG5leHBvcnQgaW50ZXJmYWNlIERBT0NvaW5NYXJrZXRPcmRlcldpdGhRdWFudGl0eVJlcXVlc3Qge1xuICBUcmFuc2FjdG9yUHVibGljS2V5QmFzZTU4Q2hlY2s6IHN0cmluZztcbiAgQnV5aW5nREFPQ29pbkNyZWF0b3JQdWJsaWNLZXlCYXNlNThDaGVjazogc3RyaW5nO1xuICBTZWxsaW5nREFPQ29pbkNyZWF0b3JQdWJsaWNLZXlCYXNlNThDaGVjazogc3RyaW5nO1xuICBRdWFudGl0eVRvRmlsbDogbnVtYmVyO1xuICBPcGVyYXRpb25UeXBlOiBzdHJpbmc7XG4gIEZpbGxUeXBlOiBzdHJpbmc7XG4gIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBudW1iZXI7XG4gIFRyYW5zYWN0aW9uRmVlczogVHJhbnNhY3Rpb25GZWVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEQU9Db2luTGltaXRPcmRlcldpdGhFeGNoYW5nZVJhdGVBbmRRdWFudGl0eVJlcXVlc3Qge1xuICBUcmFuc2FjdG9yUHVibGljS2V5QmFzZTU4Q2hlY2s6IHN0cmluZztcbiAgQnV5aW5nREFPQ29pbkNyZWF0b3JQdWJsaWNLZXlCYXNlNThDaGVjazogc3RyaW5nO1xuICBTZWxsaW5nREFPQ29pbkNyZWF0b3JQdWJsaWNLZXlCYXNlNThDaGVjazogc3RyaW5nO1xuICBFeGNoYW5nZVJhdGVDb2luc1RvU2VsbFBlckNvaW5Ub0J1eTogbnVtYmVyO1xuICBRdWFudGl0eVRvRmlsbDogbnVtYmVyO1xuICBPcGVyYXRpb25UeXBlOiBzdHJpbmc7XG4gIE1pbkZlZVJhdGVOYW5vc1BlcktCPzogbnVtYmVyO1xuICBUcmFuc2FjdGlvbkZlZXM6IFRyYW5zYWN0aW9uRmVlW10gfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFNYXNrSW5pdFJlc3BvbnNlIHtcbiAgZGVyaXZlZEtleVBhaXI6IGVjLktleVBhaXI7XG4gIGRlcml2ZWRQdWJsaWNLZXlCYXNlNThDaGVjazogc3RyaW5nO1xuICBzdWJtaXNzaW9uUmVzcG9uc2U6IFN1Ym1pdFRyYW5zYWN0aW9uUmVzcG9uc2U7XG4gIGV0aGVyZXVtQWRkcmVzczogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YSB7XG4gIE1pbkZlZVJhdGVOYW5vc1BlcktCPzogbnVtYmVyO1xuICBUcmFuc2FjdGlvbkZlZXM/OiBUcmFuc2FjdGlvbkZlZVtdIHwgbnVsbDtcbiAgRXh0cmFEYXRhPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgTm9uY2U/OiBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPERlU29Ob25jZSwgJ0V4cGlyYXRpb25CbG9ja0hlaWdodCc+O1xufVxuXG5leHBvcnQgdHlwZSBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFQ+ID0gT21pdDxcbiAgVCxcbiAgfCAnTWluRmVlUmF0ZU5hbm9zUGVyS0InXG4gIHwgJ1RyYW5zYWN0aW9uRmVlcydcbiAgfCAnRXh0cmFEYXRhJ1xuICB8ICdJblR1dG9yaWFsJ1xuICB8ICdOb25jZSdcbj4gJlxuICBPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdE9wdGlvbnMge1xuICAvKipcbiAgICogVGhpcyBpcyBvbmx5IHJlbGV2YW50IGZvciB3cml0ZSBvcGVyYXRpb25zIHRoYXQgcmVxdWlyZSBhIHNpZ25lZFxuICAgKiB0cmFuc2FjdGlvbiAoc3VibWl0LXBvc3QsIHVwZGF0ZS1wcm9maWxlLCBldGMpLiBJdCBkZXRlcm1pbmVzIHdoZXRoZXIgdG9cbiAgICogYnJvYWRjYXN0IHRoZSB0cmFuc2FjdGlvbiB0byB0aGUgbmV0d29yay4gRGVmYXVsdHMgdG8gdHJ1ZS4gSWYgc2V0IHRvXG4gICAqIGZhbHNlLCB0aGUgdHJhbnNhY3Rpb24gd2lsbCBiZSBjb25zdHJ1Y3RlZCBidXQgbm90IHNpZ25lZCBvciBzdWJtaXR0ZWRcbiAgICogd2hpY2ggaXMgdXNlZnVsIGZvciBjb25zdHJ1Y3RpbmcgdHJhbnNhY3Rpb25zIHRvIHByZXZpZXcgdGhlbSB3aXRob3V0XG4gICAqIGJyb2FkY2FzdGluZyBhcyBhIHNvcnQgb2YgXCJkcnktcnVuXCIuXG4gICAqL1xuICBicm9hZGNhc3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbm9kZSB0byBzZW5kIHRoZSByZXF1ZXN0IHRvLiBJZiBub3QgcHJvdmlkZWQsIGVpdGhlciB0aGUgZGVmYXVsdCBub2RlXG4gICAqIG9yIHRoZSBjb25maWd1cmVkIG5vZGUgd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgbm9kZVVSST86IHN0cmluZztcblxuICAvKipcbiAgICogRXhwZXJpbWVudGFsIHBhcmFtLiBXaGVuIGxvY2FsQ29uc3RydWN0aW9uIGlzIHRydWUsIHRyYW5zYWN0aW9ucyB3aWxsXG4gICAqIGJlIGNvbnN0cnVjdGVkIGxvY2FsbHkuIFRoaXMgb25seSBhcHBsaWVzIGFmdGVyIHRoZSBiYWxhbmNlIG1vZGVsIGZvcmsuXG4gICAqL1xuICBsb2NhbENvbnN0cnVjdGlvbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0byBiZSB1c2VkIHRvIGNvbnN0cnVjdCB0aGUgdHJhbnNhY3Rpb24gbG9jYWxseS5cbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKiBAcmV0dXJucyBQcm9taXNlIHdpdGggdGhlIENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZVxuICAgKi9cbiAgY29uc3RydWN0aW9uRnVuY3Rpb24/OiAoXG4gICAgcGFyYW1zOiBhbnkgLy8gVE9ETzogSSBhY3R1YWxseSB0aGluayB3ZSB3YW50IGFueSB0byBiZSBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhXG4gICkgPT4gUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+O1xufVxuXG5leHBvcnQgdHlwZSBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2UgPSB7XG4gIFRyYW5zYWN0aW9uOiBNc2dEZVNvVHhuO1xuICBGZWVOYW5vczogbnVtYmVyO1xuICBUcmFuc2FjdGlvbkhleDogc3RyaW5nO1xuICBUeG5IYXNoSGV4OiBzdHJpbmc7XG4gIFRvdGFsSW5wdXROYW5vczogbnVtYmVyO1xuICBDaGFuZ2VBbW91bnROYW5vczogbnVtYmVyO1xuICBTcGVuZEFtb3VudE5hbm9zOiBudW1iZXI7XG4gIFRyYW5zYWN0aW9uSURCYXNlNThDaGVjaz86IHN0cmluZztcbiAgLy8gQnV5IG9yIHNlbGwgY3JlYXRvciBjb2lucyAoc2VydmVyIHNpZGUgb25seSlcbiAgRXhwZWN0ZWREZVNvUmV0dXJuZWROYW5vcz86IG51bWJlcjtcbiAgRXhwZWN0ZWRDcmVhdG9yQ29pblJldHVybmVkTmFub3M/OiBudW1iZXI7XG4gIEZvdW5kZXJSZXdhcmRHZW5lcmF0ZWROYW5vcz86IG51bWJlcjtcbiAgLy8gU3VibWl0UG9zdCAoc2VydmVyIHNpZGUgb25seSlcbiAgVHN0YW1wTmFub3M/OiBudW1iZXI7XG4gIFBvc3RIYXNoSGV4Pzogc3RyaW5nO1xuICAvLyBVcGRhdGVQcm9maWxlIChzZXJ2ZXIgc2lkZSBvbmx5KVxuICBDb21wUHJvZmlsZUNyZWF0aW9uVHhuSGFzaEhleD86IHN0cmluZztcbiAgLy8gREFPIENvaW4gTGltaXQgT3JkZXIgKHNlcnZlciBzaWRlIG9ubHkpXG4gIFNpbXVsYXRlZEV4ZWN1dGlvblJlc3VsdD86IERBT0NvaW5MaW1pdE9yZGVyU2ltdWxhdGVkRXhlY3V0aW9uUmVzdWx0O1xuICAvLyBDcmVhdGUvVXBkYXRlIE5GVCwgTkZUIEJpZCwgQWNjZXB0IE5GVCBCaWQgKHNlcnZlciBzaWRlIG9ubHkpXG4gIE5GVFBvc3RIYXNoSGV4Pzogc3RyaW5nO1xuICAvLyBVcGRhdGUgTkZULCBORlQgQmlkLCBBY2NlcHQgTkZUIEJpZCAoc2VydmVyIHNpZGUgb25seSlcbiAgU2VyaWFsTnVtYmVyPzogbnVtYmVyO1xuICAvLyBORlQgQmlkIChzZXJ2ZXIgc2lkZSBvbmx5KVxuICBVcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2s/OiBzdHJpbmc7XG4gIC8vIE5GVCBCaWQsIEFjY2VwdCBORlQgQmlkIChzZXJ2ZXIgc2lkZSBvbmx5KVxuICBCaWRBbW91bnROYW5vcz86IG51bWJlcjtcbiAgLy8gQWNjZXB0IE5GVCBCaWQgKHNlcnZlciBzaWRlIG9ubHkpXG4gIEJpZGRlclB1YmxpY0tleUJhc2U1OENoZWNrPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnaW5nR3JvdXBQYXlsb2FkID0ge1xuICBtZXNzYWdpbmdLZXlTaWduYXR1cmU6IHN0cmluZztcbiAgZW5jcnlwdGVkVG9BcHBsaWNhdGlvbkdyb3VwTWVzc2FnaW5nUHJpdmF0ZUtleTogc3RyaW5nO1xuICBlbmNyeXB0ZWRUb01lbWJlcnNHcm91cE1lc3NhZ2luZ1ByaXZhdGVLZXk6IHN0cmluZ1tdO1xuICBtZXNzYWdpbmdQdWJsaWNLZXlCYXNlNThDaGVjazogc3RyaW5nO1xuICBlbmNyeXB0ZWRNZXNzYWdpbmdLZXlSYW5kb21uZXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgZW51bSBNZXNzYWdpbmdHcm91cE9wZXJhdGlvbiB7XG4gIERFRkFVTFRfS0VZID0gJ0RlZmF1bHRLZXknLFxuICBDUkVBVEVfR1JPVVAgPSAnQ3JlYXRlR3JvdXAnLFxuICBBRERfTUVNQkVSUyA9ICdBZGRNZW1iZXJzJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEQU9Db2luRW50cnkge1xuICBOdW1iZXJPZkhvbGRlcnM6IG51bWJlcjtcbiAgQ29pbnNJbkNpcmN1bGF0aW9uTmFub3M6IHN0cmluZztcbiAgTWludGluZ0Rpc2FibGVkOiBib29sZWFuO1xuICBUcmFuc2ZlclJlc3RyaWN0aW9uU3RhdHVzOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkVmlkZW9WMlJlc3BvbnNlIHtcbiAgYXNzZXQ6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHBsYXliYWNrSWQ6IHN0cmluZztcbiAgfTtcbiAgdHVzRW5kcG9pbnQ6IHN0cmluZztcbiAgdXJsOiBzdHJpbmc7XG59XG4iXX0=

@@ -1,3 +0,3 @@

export * from './deso-types';
export * from './deso-types-custom';
export * from './deso-types-smart-services';
export * from './deso-types-custom.js';
export * from './deso-types-smart-services.js';
export * from './deso-types.js';

@@ -1,4 +0,4 @@

export * from './deso-types';
export * from './deso-types-custom';
export * from './deso-types-smart-services';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFja2VuZC10eXBlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Rlc28tdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9kZXNvLXR5cGVzLWN1c3RvbSc7XG5leHBvcnQgKiBmcm9tICcuL2Rlc28tdHlwZXMtc21hcnQtc2VydmljZXMnO1xuIl19
export * from './deso-types-custom.js';
export * from './deso-types-smart-services.js';
export * from './deso-types.js';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFja2VuZC10eXBlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGVzby10eXBlcy1jdXN0b20uanMnO1xuZXhwb3J0ICogZnJvbSAnLi9kZXNvLXR5cGVzLXNtYXJ0LXNlcnZpY2VzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZGVzby10eXBlcy5qcyc7XG4iXX0=

@@ -61,4 +61,3 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {

post(endpoint, data, options = {}) {
var _a;
const contentType = (_a = options.contentType) !== null && _a !== void 0 ? _a : 'application/json';
const contentType = options.contentType ?? 'application/json';
let body;

@@ -78,5 +77,16 @@ switch (contentType) {

}
return wrappedFetch(__classPrivateFieldGet(this, _APIClient_instances, "m", _APIClient_url).call(this, endpoint), Object.assign({ method: 'POST', body, headers: Object.assign({}, (contentType !== 'multipart/form-data' && {
'Content-Type': contentType,
})) }, options));
return wrappedFetch(__classPrivateFieldGet(this, _APIClient_instances, "m", _APIClient_url).call(this, endpoint), {
method: 'POST',
body,
headers: {
// NOTE: We only set the content type header if it's not
// multipart/form-data. This is because we need the browser to
// automatically set the boundary for us when we use FormData:
// https://stackoverflow.com/a/39281156
...(contentType !== 'multipart/form-data' && {
'Content-Type': contentType,
}),
},
...options,
});
}

@@ -137,2 +147,2 @@ get(endpoint) {

export const api = new DeSoNodeClient();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RhdGEvYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE1BQU0sWUFBWTtJQUloQixZQUFZLE9BQWUsRUFBRSxNQUFjO1FBSDNDOzs7OztXQUFnQjtRQUNoQjs7Ozs7V0FBZTtRQUdiLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7Q0FDRjtBQUVELE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBVyxFQUFFLE9BQVksRUFBRSxFQUFFO0lBQ2pELE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRTtZQUNYLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUM5QixNQUFNLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pELENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNyQyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUM1QixzRUFBc0U7Z0JBQ3RFLGtEQUFrRDtnQkFDbEQsT0FBTyxJQUFJLENBQUM7YUFDYjtpQkFBTTtnQkFDTCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDaEM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FB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T0FBTyxDQUFDLFFBQVEsQ0FBQztTQUM3QjtJQUNILENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO0FBQzNDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgRGVTb0FQSUVycm9yIHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBzdGF0dXM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHN0YXR1czogbnVtYmVyKSB7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICB0aGlzLnN0YXR1cyA9IHN0YXR1cztcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1lc3NhZ2U7XG4gIH1cbn1cblxuY29uc3Qgd3JhcHBlZEZldGNoID0gKHVybDogc3RyaW5nLCBvcHRpb25zOiBhbnkpID0+IHtcbiAgcmV0dXJuIGZldGNoKHVybCwgb3B0aW9ucykudGhlbigocmVzKSA9PiB7XG4gICAgaWYgKCFyZXMub2spIHtcbiAgICAgIHJldHVybiByZXMuanNvbigpLnRoZW4oKGpzb24pID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IERlU29BUElFcnJvcihqc29uLmVycm9yLCByZXMuc3RhdHVzKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLnRleHQoKS50aGVuKChyYXdCb2R5VGV4dCkgPT4ge1xuICAgICAgaWYgKHJhd0JvZHlUZXh0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAvLyBJbiB0aGUgY2FzZSB3aGVyZSB0aGUgcmVzcG9uc2UgYm9keSBpcyBlbXB0eSwgaXQgd2lsbCBmYWlsIHRvIHBhcnNlXG4gICAgICAgIC8vIGFzIEpTT04gc28gd2UganVzdCBoYW5kbGUgaXQgYXMgYSBzcGVjaWFsIGNhc2UuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UocmF3Qm9keVRleHQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVzb05vZGVDbGllbnRDb25maWcge1xuICBub2RlVVJJPzogc3RyaW5nO1xuICBtZWRpYVVSST86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXNvTWVkaWFDbGllbnRDb25maWcge1xuICBtZWRpYVVSST86IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGNsZWFuVVJMID0gKG9yaWdpbjogc3RyaW5nLCBlbmRwb2ludDogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBgJHtvcmlnaW4ucmVwbGFjZSgvXFwvKyQvLCAnJyl9LyR7ZW5kcG9pbnQucmVwbGFjZSgvXlxcLysvLCAnJyl9YDtcbn07XG5cbmNsYXNzIEFQSUNsaWVudCB7XG4gIHByb3RlY3RlZCB1cmkgPSAnJztcblxuICBwb3N0KFxuICAgIGVuZHBvaW50OiBzdHJpbmcsXG4gICAgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICBvcHRpb25zOiB7IGNvbnRlbnRUeXBlPzogJ211bHRpcGFydC9mb3JtLWRhdGEnIH0gPSB7fVxuICApOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gb3B0aW9ucy5jb250ZW50VHlwZSA/PyAnYXBwbGljYXRpb24vanNvbic7XG4gICAgbGV0IGJvZHk6IEZvcm1EYXRhIHwgc3RyaW5nO1xuXG4gICAgc3dpdGNoIChjb250ZW50VHlwZSkge1xuICAgICAgY2FzZSAnbXVsdGlwYXJ0L2Zvcm0tZGF0YSc6XG4gICAgICAgIGJvZHkgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkge1xuICAgICAgICAgIGJvZHkuYXBwZW5kKGtleSwgZGF0YVtrZXldKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL2pzb24nOlxuICAgICAgICBib2R5ID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBjb250ZW50IHR5cGU6ICR7Y29udGVudFR5cGV9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHdyYXBwZWRGZXRjaCh0aGlzLiN1cmwoZW5kcG9pbnQpLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHksXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIC8vIE5PVEU6IFdlIG9ubHkgc2V0IHRoZSBjb250ZW50IHR5cGUgaGVhZGVyIGlmIGl0J3Mgbm90XG4gICAgICAgIC8vIG11bHRpcGFydC9mb3JtLWRhdGEuICBUaGlzIGlzIGJlY2F1c2Ugd2UgbmVlZCB0aGUgYnJvd3NlciB0b1xuICAgICAgICAvLyBhdXRvbWF0aWNhbGx5IHNldCB0aGUgYm91bmRhcnkgZm9yIHVzIHdoZW4gd2UgdXNlIEZvcm1EYXRhOlxuICAgICAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMzkyODExNTZcbiAgICAgICAgLi4uKGNvbnRlbnRUeXBlICE9PSAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScgJiYge1xuICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50VHlwZSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIGdldChlbmRwb2ludDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gd3JhcHBlZEZldGNoKHRoaXMuI3VybChlbmRwb2ludCksIHsgbWV0aG9kOiAnR0VUJyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgVVJMIGZvciB0aGUgZ2l2ZW4gbm9kZSBVUkkgYW5kIGVuZHBvaW50IGFmdGVyIG5vcm1hbGl6aW5nIGFueVxuICAgKiB0cmFpbGluZyBvciBsZWFkaW5nIHNsYXNoZXMuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICAjdXJsKGVuZHBvaW50OiBzdHJpbmcpIHtcbiAgICBpZiAoZW5kcG9pbnQuc3RhcnRzV2l0aCgnaHR0cDovLycpIHx8IGVuZHBvaW50LnN0YXJ0c1dpdGgoJ2h0dHBzOi8vJykpIHtcbiAgICAgIC8vIElmIHRoZSBlbmRwb2ludCBpcyBhIGZ1bGwgVVJMLCBqdXN0IHVzZSBpdCBkaXJlY3RseS5cbiAgICAgIC8vIFRoaXMgaXMgYW4gb3B0aW9uYWwgY2FzZSB0aGF0IGFsbG93cyB1cyB0byBvdmVycmlkZSB0aGUgbm9kZSBVUkkuXG4gICAgICByZXR1cm4gZW5kcG9pbnQ7XG4gICAgfVxuICAgIC8vIE90aGVyd2lzZSB1c2UgdGhlIG5vZGUgVVJJIGFuZCBlbmRwb2ludCB0byBjb25zdHJ1Y3QgYSBVUkwuXG4gICAgLy8gVGhpcyB3aWxsIGJlIHRoZSB0eXBpY2FsIGNhc2UuXG4gICAgcmV0dXJuIGNsZWFuVVJMKHRoaXMudXJpLCBlbmRwb2ludCk7XG4gIH1cbn1cblxuY2xhc3MgRGVTb05vZGVDbGllbnQgZXh0ZW5kcyBBUElDbGllbnQge1xuICBvdmVycmlkZSB1cmkgPSAnaHR0cHM6Ly9ub2RlLmRlc28ub3JnJztcblxuICBnZXQgbm9kZVVSSSgpIHtcbiAgICByZXR1cm4gdGhpcy51cmk7XG4gIH1cblxuICBjb25maWd1cmUob3B0aW9uczogRGVzb05vZGVDbGllbnRDb25maWcpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMubm9kZVVSSSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMudXJpID0gb3B0aW9ucy5ub2RlVVJJO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBEZVNvTWVkaWFDbGllbnQgZXh0ZW5kcyBBUElDbGllbnQge1xuICBvdmVycmlkZSB1cmkgPSAnaHR0cHM6Ly9tZWRpYS5kZXNvLm9yZyc7XG5cbiAgZ2V0IG1lZGlhVVJJKCkge1xuICAgIHJldHVybiB0aGlzLnVyaTtcbiAgfVxuXG4gIGNvbmZpZ3VyZShvcHRpb25zOiBEZXNvTWVkaWFDbGllbnRDb25maWcpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMubWVkaWFVUkkgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLnVyaSA9IG9wdGlvbnMubWVkaWFVUkk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBtZWRpYSA9IG5ldyBEZVNvTWVkaWFDbGllbnQoKTtcbmV4cG9ydCBjb25zdCBhcGkgPSBuZXcgRGVTb05vZGVDbGllbnQoKTtcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RhdGEvYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE1BQU0sWUFBWTtJQUloQixZQUFZLE9BQWUsRUFBRSxNQUFjO1FBSDNDOzs7OztXQUFnQjtRQUNoQjs7Ozs7V0FBZTtRQUdiLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7Q0FDRjtBQUVELE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBVyxFQUFFLE9BQVksRUFBRSxFQUFFO0lBQ2pELE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRTtZQUNYLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUM5QixNQUFNLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pELENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNyQyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUM1QixzRUFBc0U7Z0JBQ3RFLGtEQUFrRDtnQkFDbEQsT0FBTyxJQUFJLENBQUM7YUFDYjtpQkFBTTtnQkFDTCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDaEM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FB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LE9BQThCO1FBQ3RDLElBQUksT0FBTyxPQUFPLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRTtZQUN4QyxJQUFJLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7U0FDN0I7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztBQUMzQyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNsYXNzIERlU29BUElFcnJvciB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc3RhdHVzOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBzdGF0dXM6IG51bWJlcikge1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgdGhpcy5zdGF0dXMgPSBzdGF0dXM7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlO1xuICB9XG59XG5cbmNvbnN0IHdyYXBwZWRGZXRjaCA9ICh1cmw6IHN0cmluZywgb3B0aW9uczogYW55KSA9PiB7XG4gIHJldHVybiBmZXRjaCh1cmwsIG9wdGlvbnMpLnRoZW4oKHJlcykgPT4ge1xuICAgIGlmICghcmVzLm9rKSB7XG4gICAgICByZXR1cm4gcmVzLmpzb24oKS50aGVuKChqc29uKSA9PiB7XG4gICAgICAgIHRocm93IG5ldyBEZVNvQVBJRXJyb3IoanNvbi5lcnJvciwgcmVzLnN0YXR1cyk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy50ZXh0KCkudGhlbigocmF3Qm9keVRleHQpID0+IHtcbiAgICAgIGlmIChyYXdCb2R5VGV4dC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgLy8gSW4gdGhlIGNhc2Ugd2hlcmUgdGhlIHJlc3BvbnNlIGJvZHkgaXMgZW1wdHksIGl0IHdpbGwgZmFpbCB0byBwYXJzZVxuICAgICAgICAvLyBhcyBKU09OIHNvIHdlIGp1c3QgaGFuZGxlIGl0IGFzIGEgc3BlY2lhbCBjYXNlLlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKHJhd0JvZHlUZXh0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIERlc29Ob2RlQ2xpZW50Q29uZmlnIHtcbiAgbm9kZVVSST86IHN0cmluZztcbiAgbWVkaWFVUkk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVzb01lZGlhQ2xpZW50Q29uZmlnIHtcbiAgbWVkaWFVUkk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBjbGVhblVSTCA9IChvcmlnaW46IHN0cmluZywgZW5kcG9pbnQ6IHN0cmluZykgPT4ge1xuICByZXR1cm4gYCR7b3JpZ2luLnJlcGxhY2UoL1xcLyskLywgJycpfS8ke2VuZHBvaW50LnJlcGxhY2UoL15cXC8rLywgJycpfWA7XG59O1xuXG5jbGFzcyBBUElDbGllbnQge1xuICBwcm90ZWN0ZWQgdXJpID0gJyc7XG5cbiAgcG9zdChcbiAgICBlbmRwb2ludDogc3RyaW5nLFxuICAgIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgb3B0aW9uczogeyBjb250ZW50VHlwZT86ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyB9ID0ge31cbiAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBjb250ZW50VHlwZSA9IG9wdGlvbnMuY29udGVudFR5cGUgPz8gJ2FwcGxpY2F0aW9uL2pzb24nO1xuICAgIGxldCBib2R5OiBGb3JtRGF0YSB8IHN0cmluZztcblxuICAgIHN3aXRjaCAoY29udGVudFR5cGUpIHtcbiAgICAgIGNhc2UgJ211bHRpcGFydC9mb3JtLWRhdGEnOlxuICAgICAgICBib2R5ID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcbiAgICAgICAgICBib2R5LmFwcGVuZChrZXksIGRhdGFba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhcHBsaWNhdGlvbi9qc29uJzpcbiAgICAgICAgYm9keSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgY29udGVudCB0eXBlOiAke2NvbnRlbnRUeXBlfWApO1xuICAgIH1cblxuICAgIHJldHVybiB3cmFwcGVkRmV0Y2godGhpcy4jdXJsKGVuZHBvaW50KSwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5LFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAvLyBOT1RFOiBXZSBvbmx5IHNldCB0aGUgY29udGVudCB0eXBlIGhlYWRlciBpZiBpdCdzIG5vdFxuICAgICAgICAvLyBtdWx0aXBhcnQvZm9ybS1kYXRhLiAgVGhpcyBpcyBiZWNhdXNlIHdlIG5lZWQgdGhlIGJyb3dzZXIgdG9cbiAgICAgICAgLy8gYXV0b21hdGljYWxseSBzZXQgdGhlIGJvdW5kYXJ5IGZvciB1cyB3aGVuIHdlIHVzZSBGb3JtRGF0YTpcbiAgICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzM5MjgxMTU2XG4gICAgICAgIC4uLihjb250ZW50VHlwZSAhPT0gJ211bHRpcGFydC9mb3JtLWRhdGEnICYmIHtcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudFR5cGUsXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICBnZXQoZW5kcG9pbnQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHdyYXBwZWRGZXRjaCh0aGlzLiN1cmwoZW5kcG9pbnQpLCB7IG1ldGhvZDogJ0dFVCcgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIFVSTCBmb3IgdGhlIGdpdmVuIG5vZGUgVVJJIGFuZCBlbmRwb2ludCBhZnRlciBub3JtYWxpemluZyBhbnlcbiAgICogdHJhaWxpbmcgb3IgbGVhZGluZyBzbGFzaGVzLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgI3VybChlbmRwb2ludDogc3RyaW5nKSB7XG4gICAgaWYgKGVuZHBvaW50LnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSB8fCBlbmRwb2ludC5zdGFydHNXaXRoKCdodHRwczovLycpKSB7XG4gICAgICAvLyBJZiB0aGUgZW5kcG9pbnQgaXMgYSBmdWxsIFVSTCwganVzdCB1c2UgaXQgZGlyZWN0bHkuXG4gICAgICAvLyBUaGlzIGlzIGFuIG9wdGlvbmFsIGNhc2UgdGhhdCBhbGxvd3MgdXMgdG8gb3ZlcnJpZGUgdGhlIG5vZGUgVVJJLlxuICAgICAgcmV0dXJuIGVuZHBvaW50O1xuICAgIH1cbiAgICAvLyBPdGhlcndpc2UgdXNlIHRoZSBub2RlIFVSSSBhbmQgZW5kcG9pbnQgdG8gY29uc3RydWN0IGEgVVJMLlxuICAgIC8vIFRoaXMgd2lsbCBiZSB0aGUgdHlwaWNhbCBjYXNlLlxuICAgIHJldHVybiBjbGVhblVSTCh0aGlzLnVyaSwgZW5kcG9pbnQpO1xuICB9XG59XG5cbmNsYXNzIERlU29Ob2RlQ2xpZW50IGV4dGVuZHMgQVBJQ2xpZW50IHtcbiAgb3ZlcnJpZGUgdXJpID0gJ2h0dHBzOi8vbm9kZS5kZXNvLm9yZyc7XG5cbiAgZ2V0IG5vZGVVUkkoKSB7XG4gICAgcmV0dXJuIHRoaXMudXJpO1xuICB9XG5cbiAgY29uZmlndXJlKG9wdGlvbnM6IERlc29Ob2RlQ2xpZW50Q29uZmlnKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLm5vZGVVUkkgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLnVyaSA9IG9wdGlvbnMubm9kZVVSSTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgRGVTb01lZGlhQ2xpZW50IGV4dGVuZHMgQVBJQ2xpZW50IHtcbiAgb3ZlcnJpZGUgdXJpID0gJ2h0dHBzOi8vbWVkaWEuZGVzby5vcmcnO1xuXG4gIGdldCBtZWRpYVVSSSgpIHtcbiAgICByZXR1cm4gdGhpcy51cmk7XG4gIH1cblxuICBjb25maWd1cmUob3B0aW9uczogRGVzb01lZGlhQ2xpZW50Q29uZmlnKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLm1lZGlhVVJJID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy51cmkgPSBvcHRpb25zLm1lZGlhVVJJO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbWVkaWEgPSBuZXcgRGVTb01lZGlhQ2xpZW50KCk7XG5leHBvcnQgY29uc3QgYXBpID0gbmV3IERlU29Ob2RlQ2xpZW50KCk7XG4iXX0=

@@ -1,2 +0,2 @@

import { AccessGroupEntryResponse, AccessGroupMemberEntryResponse, APIBlockRequest, APIBlockResponse, APITransactionInfoRequest, APITransactionInfoResponse, AssociationCountsResponse, AssociationResponse, AssociationsCountResponse, CheckPartyAccessGroupsRequest, CheckPartyAccessGroupsResponse, GetAccessGroupInfoRequest, GetAccessGroupMemberRequest, GetAccessGroupsRequest, GetAccessGroupsResponse, GetAllMessagingGroupKeysRequest, GetAppStateRequest, GetAppStateResponse, GetBlockTemplateRequest, GetBlockTemplateResponse, GetBulkAccessGroupEntriesRequest, GetBulkAccessGroupEntriesResponse, GetDiamondsForPostRequest, GetDiamondsForPostResponse, GetDiamondsForPublicKeyRequest, GetDiamondsForPublicKeyResponse, GetExchangeRateResponse, GetFollowsResponse, GetFollowsStatelessRequest, GetFullTikTokURLRequest, GetFullTikTokURLResponse, GetGlobalParamsResponse, GetHodlersForPublicKeyRequest, GetHodlersForPublicKeyResponse, GetLikesForPostRequest, GetLikesForPostResponse, GetNextNFTShowcaseResponse, GetNFTBidsForNFTPostRequest, GetNFTBidsForNFTPostResponse, GetNFTBidsForUserRequest, GetNFTBidsForUserResponse, GetNFTCollectionSummaryRequest, GetNFTCollectionSummaryResponse, GetNFTEntriesForPostHashRequest, GetNFTEntriesForPostHashResponse, GetNFTsForUserRequest, GetNFTsForUserResponse, GetNFTShowcaseRequest, GetNFTShowcaseResponse, GetNotificationsCountRequest, GetNotificationsRequest, GetNotificationsResponse, GetPaginatedAccessGroupMembersRequest, GetPaginatedAccessGroupMembersResponse, GetPaginatedMessagesForDmThreadRequest, GetPaginatedMessagesForDmThreadResponse, GetPaginatedMessagesForGroupChatThreadRequest, GetPaginatedMessagesForGroupChatThreadResponse, GetPostsDiamondedBySenderForReceiverRequest, GetPostsForPublicKeyRequest, GetPostsForPublicKeyResponse, GetPostsHashHexListRequest, GetPostsHashHexListResponse, GetPostsStatelessRequest, GetPostsStatelessResponse, GetProfilesRequest, GetProfilesResponse, GetQuoteRepostsForPostRequest, GetQuoteRepostsForPostResponse, GetRepostsForPostRequest, GetRepostsForPostResponse, GetSinglePostRequest, GetSinglePostResponse, GetSingleProfileRequest, GetSingleProfileResponse, GetTransactionSpendingLimitHexStringRequest, GetTransactionSpendingLimitHexStringResponse, GetTxnRequest, GetTxnResponse, GetUserDerivedKeysRequest, GetUserDerivedKeysResponse, GetUserMessageThreadsRequest, GetUserMessageThreadsResponse, GetUserMetadataRequest, GetUserMetadataResponse, GetUsersResponse, GetUsersStatelessRequest, HotFeedPageRequest, HotFeedPageResponse, IsFolllowingPublicKeyResponse, IsFollowingPublicKeyRequest, IsHodlingPublicKeyRequest, IsHodlingPublicKeyResponse, PostAssociationQuery, PostAssociationsResponse, RegisterMessagingGroupKeyRequest, RegisterMessagingGroupKeyResponse, RequestOptions, SubmitBlockRequest, SubmitBlockResponse, TransactionSpendingLimitResponse, UserAssociationQuery, UserAssociationsResponse } from '../backend-types';
import { AccessGroupEntryResponse, AccessGroupMemberEntryResponse, APIBlockRequest, APIBlockResponse, APITransactionInfoRequest, APITransactionInfoResponse, AssociationCountsResponse, AssociationResponse, AssociationsCountResponse, CheckPartyAccessGroupsRequest, CheckPartyAccessGroupsResponse, GetAccessGroupInfoRequest, GetAccessGroupMemberRequest, GetAccessGroupsRequest, GetAccessGroupsResponse, GetAllMessagingGroupKeysRequest, GetAppStateRequest, GetAppStateResponse, GetBlockTemplateRequest, GetBlockTemplateResponse, GetBulkAccessGroupEntriesRequest, GetBulkAccessGroupEntriesResponse, GetDiamondsForPostRequest, GetDiamondsForPostResponse, GetDiamondsForPublicKeyRequest, GetDiamondsForPublicKeyResponse, GetExchangeRateResponse, GetFollowsResponse, GetFollowsStatelessRequest, GetFullTikTokURLRequest, GetFullTikTokURLResponse, GetGlobalParamsResponse, GetHodlersForPublicKeyRequest, GetHodlersForPublicKeyResponse, GetLikesForPostRequest, GetLikesForPostResponse, GetNextNFTShowcaseResponse, GetNFTBidsForNFTPostRequest, GetNFTBidsForNFTPostResponse, GetNFTBidsForUserRequest, GetNFTBidsForUserResponse, GetNFTCollectionSummaryRequest, GetNFTCollectionSummaryResponse, GetNFTEntriesForPostHashRequest, GetNFTEntriesForPostHashResponse, GetNFTsForUserRequest, GetNFTsForUserResponse, GetNFTShowcaseRequest, GetNFTShowcaseResponse, GetNotificationsCountRequest, GetNotificationsRequest, GetNotificationsResponse, GetPaginatedAccessGroupMembersRequest, GetPaginatedAccessGroupMembersResponse, GetPaginatedMessagesForDmThreadRequest, GetPaginatedMessagesForDmThreadResponse, GetPaginatedMessagesForGroupChatThreadRequest, GetPaginatedMessagesForGroupChatThreadResponse, GetPostsDiamondedBySenderForReceiverRequest, GetPostsForPublicKeyRequest, GetPostsForPublicKeyResponse, GetPostsHashHexListRequest, GetPostsHashHexListResponse, GetPostsStatelessRequest, GetPostsStatelessResponse, GetProfilesRequest, GetProfilesResponse, GetQuoteRepostsForPostRequest, GetQuoteRepostsForPostResponse, GetRepostsForPostRequest, GetRepostsForPostResponse, GetSinglePostRequest, GetSinglePostResponse, GetSingleProfileRequest, GetSingleProfileResponse, GetTransactionSpendingLimitHexStringRequest, GetTransactionSpendingLimitHexStringResponse, GetTxnRequest, GetTxnResponse, GetUserDerivedKeysRequest, GetUserDerivedKeysResponse, GetUserMessageThreadsRequest, GetUserMessageThreadsResponse, GetUserMetadataRequest, GetUserMetadataResponse, GetUsersResponse, GetUsersStatelessRequest, HotFeedPageRequest, HotFeedPageResponse, IsFolllowingPublicKeyResponse, IsFollowingPublicKeyRequest, IsHodlingPublicKeyRequest, IsHodlingPublicKeyResponse, PostAssociationQuery, PostAssociationsResponse, RegisterMessagingGroupKeyRequest, RegisterMessagingGroupKeyResponse, RequestOptions, SubmitBlockRequest, SubmitBlockResponse, TransactionSpendingLimitResponse, UserAssociationQuery, UserAssociationsResponse } from '../backend-types/index.js';
/**

@@ -3,0 +3,0 @@ * Returns a type that requires the given keys to be present in the partial.

@@ -1,3 +0,3 @@

export * from './api';
export * from './data';
export * from './media';
export * from './api.js';
export * from './data.js';
export * from './media.js';

@@ -1,4 +0,4 @@

export * from './api';
export * from './data';
export * from './media';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGF0YS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLE9BQU8sQ0FBQztBQUN0QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL21lZGlhJztcbiJdfQ==
export * from './api.js';
export * from './data.js';
export * from './media.js';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGF0YS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXBpLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL21lZGlhLmpzJztcbiJdfQ==

@@ -1,2 +0,2 @@

import { GetVideoStatusRequest, GetVideoStatusResponse, LinkPreviewResponse } from '../backend-types';
import { GetVideoStatusRequest, GetVideoStatusResponse, LinkPreviewResponse } from '../backend-types/index.js';
/**

@@ -3,0 +3,0 @@ * https://docs.deso.org/deso-backend/api/media-endpoints#get-video-status

@@ -1,11 +0,2 @@

var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { cleanURL, media } from './api';
import { cleanURL, media } from './api.js';
////////////////////////////////////////////////////////////////////////////////

@@ -34,5 +25,5 @@ // Media: All of these endpoints are hitting a separate server dedicated to

*/
export const pollForVideoReady = (videoId, { duration = 300, timeout = 3e5, // 5 minutes
} = {}) => __awaiter(void 0, void 0, void 0, function* () {
const { status } = yield getVideoStatus({ videoId });
export const pollForVideoReady = async (videoId, { duration = 300, timeout = 3e5, // 5 minutes
} = {}) => {
const { status } = await getVideoStatus({ videoId });
if (status.phase === 'ready') {

@@ -68,3 +59,3 @@ return;

});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGF0YS9tZWRpYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFLQSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN4QyxnRkFBZ0Y7QUFDaEYsMkVBQTJFO0FBQzNFLHNFQUFzRTtBQUN0RSwrRUFBK0U7QUFDL0UscUJBQXFCO0FBQ3JCLGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUM1QixNQUE2QixFQUNJLEVBQUU7SUFDbkMsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLDJCQUEyQixNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUNoRSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFXLEVBQWdDLEVBQUU7SUFDMUUsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLDJCQUEyQixrQkFBa0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxRQUFnQixFQUFVLEVBQUU7SUFDN0QsT0FBTyxRQUFRLENBQ2IsS0FBSyxDQUFDLFFBQVEsRUFDZCwwQkFBMEIsa0JBQWtCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FDekQsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUMvQixPQUFlLEVBQ2YsRUFDRSxRQUFRLEdBQUcsR0FBRyxFQUNkLE9BQU8sR0FBRyxHQUFHLEVBQUUsWUFBWTtFQUM1QixHQUFHLEVBQUUsRUFDUyxFQUFFO0lBQ2pCLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLGNBQWMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFFckQsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLE9BQU8sRUFBRTtRQUM1QixPQUFPO0tBQ1I7SUFFRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztLQUNwRTtJQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM3QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3JDLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDbEMsY0FBYyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7aUJBQ3hCLElBQUksQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtnQkFDbkIsUUFBUSxNQUFNLENBQUMsS0FBSyxFQUFFO29CQUNwQixLQUFLLE9BQU87d0JBQ1YsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUN6QixPQUFPLEVBQUUsQ0FBQzt3QkFDVixPQUFPO29CQUNULEtBQUssUUFBUTt3QkFDWCxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBQ3pCLE1BQU0sQ0FDSixJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUM3RCxDQUFDO3dCQUNGLE9BQU87aUJBQ1Y7Z0JBRUQsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxHQUFHLE9BQU8sRUFBRTtvQkFDcEMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUN6QixNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQyxDQUFDO29CQUM3RCxPQUFPO2lCQUNSO1lBQ0gsQ0FBQyxDQUFDO2lCQUNELEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQixDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDZixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgR2V0VmlkZW9TdGF0dXNSZXF1ZXN0LFxuICBHZXRWaWRlb1N0YXR1c1Jlc3BvbnNlLFxuICBMaW5rUHJldmlld1Jlc3BvbnNlLFxufSBmcm9tICcuLi9iYWNrZW5kLXR5cGVzJztcbmltcG9ydCB7IGNsZWFuVVJMLCBtZWRpYSB9IGZyb20gJy4vYXBpJztcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBNZWRpYTogQWxsIG9mIHRoZXNlIGVuZHBvaW50cyBhcmUgaGl0dGluZyBhIHNlcGFyYXRlIHNlcnZlciBkZWRpY2F0ZWQgdG9cbi8vIGhhbmRsaW5nIG1lZGlhIHJlcXVlc3RzIChpbWFnZXMsIHZpZGVvcywgZXRjLikuIFRoZSBtZWRpYSBzZXJ2ZXIgaXNcbi8vIGluZGVwZW5kZW50bHkgY29uZmlndXJhYmxlIGFuZCBkb2VzIG5vdCByZWNlaXZlIGFueSBvZiB0aGUgc2FtZSBzYW1lIHJlcXVlc3Rcbi8vIG9wdGlvbnMgYXMgYSBub2RlLlxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2FwaS9tZWRpYS1lbmRwb2ludHMjZ2V0LXZpZGVvLXN0YXR1c1xuICovXG5leHBvcnQgY29uc3QgZ2V0VmlkZW9TdGF0dXMgPSAoXG4gIHBhcmFtczogR2V0VmlkZW9TdGF0dXNSZXF1ZXN0XG4pOiBQcm9taXNlPEdldFZpZGVvU3RhdHVzUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIG1lZGlhLmdldChgYXBpL3YwL2dldC12aWRlby1zdGF0dXMvJHtwYXJhbXMudmlkZW9JZH1gKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMaW5rUHJldmlldyA9ICh1cmw6IHN0cmluZyk6IFByb21pc2U8TGlua1ByZXZpZXdSZXNwb25zZT4gPT4ge1xuICByZXR1cm4gbWVkaWEuZ2V0KGBhcGkvdjAvbGluay1wcmV2aWV3P3VybD0ke2VuY29kZVVSSUNvbXBvbmVudCh1cmwpfWApO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkUHJveHlJbWFnZVVSTCA9IChpbWFnZVVSTDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGNsZWFuVVJMKFxuICAgIG1lZGlhLm1lZGlhVVJJLFxuICAgIGBhcGkvdjAvcHJveHktaW1hZ2U/dXJsPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGltYWdlVVJMKX1gXG4gICk7XG59O1xuXG4vKipcbiAqIEBwYXJhbSB2aWRlb0lkIHRoaXMgY29ycmVzcG9uZHMgdG8gdGhlIGFzc2V0SWQgcmV0dXJuZWQgZnJvbSB0aGUgdXBsb2FkVmlkZW8gZW5kcG9pbnRcbiAqIEBwYXJhbSBvcHRpb25zLmR1cmF0aW9uIG9wdGlvbmFsIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcyB0byBwb2xsIGZvciB2aWRlbyByZWFkeSBzdGF0dXNcbiAqIEBwYXJhbSBvcHRpb25zLnRpbWVvdXQgb3B0aW9uYWwgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgYmVmb3JlIHdlIHN0b3AgcG9sbGluZyBmb3IgdmlkZW8gcmVhZHkgc3RhdHVzXG4gKi9cbmV4cG9ydCBjb25zdCBwb2xsRm9yVmlkZW9SZWFkeSA9IGFzeW5jIChcbiAgdmlkZW9JZDogc3RyaW5nLFxuICB7XG4gICAgZHVyYXRpb24gPSAzMDAsXG4gICAgdGltZW91dCA9IDNlNSwgLy8gNSBtaW51dGVzXG4gIH0gPSB7fVxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHsgc3RhdHVzIH0gPSBhd2FpdCBnZXRWaWRlb1N0YXR1cyh7IHZpZGVvSWQgfSk7XG5cbiAgaWYgKHN0YXR1cy5waGFzZSA9PT0gJ3JlYWR5Jykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChzdGF0dXMucGhhc2UgPT09ICdmYWlsZWQnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGVyZSB3YXMgYW4gZXJyb3IgcHJvY2Vzc2luZyB0aGUgdmlkZW8gdXBsb2FkLicpO1xuICB9XG5cbiAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgZ2V0VmlkZW9TdGF0dXMoeyB2aWRlb0lkIH0pXG4gICAgICAgIC50aGVuKCh7IHN0YXR1cyB9KSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChzdGF0dXMucGhhc2UpIHtcbiAgICAgICAgICAgIGNhc2UgJ3JlYWR5JzpcbiAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGludGVydmFsSWQpO1xuICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgICAgICAgIGNsZWFyVGltZW91dChpbnRlcnZhbElkKTtcbiAgICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICAgIG5ldyBFcnJvcigndGhlcmUgd2FzIGFuIGVycm9yIHByb2Nlc3NpbmcgdGhlIHZpZGVvIHVwbG9hZC4nKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKERhdGUubm93KCkgLSBzdGFydFRpbWUgPiB0aW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQoaW50ZXJ2YWxJZCk7XG4gICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCd0aW1lZCBvdXQgd2FpdGluZyBmb3IgdmlkZW8gdG8gYmUgcmVhZHknKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gocmVqZWN0KTtcbiAgICB9LCBkdXJhdGlvbik7XG4gIH0pO1xufTtcbiJdfQ==
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGF0YS9tZWRpYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMzQyxnRkFBZ0Y7QUFDaEYsMkVBQTJFO0FBQzNFLHNFQUFzRTtBQUN0RSwrRUFBK0U7QUFDL0UscUJBQXFCO0FBQ3JCLGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUM1QixNQUE2QixFQUNJLEVBQUU7SUFDbkMsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLDJCQUEyQixNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUNoRSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFXLEVBQWdDLEVBQUU7SUFDMUUsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLDJCQUEyQixrQkFBa0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxRQUFnQixFQUFVLEVBQUU7SUFDN0QsT0FBTyxRQUFRLENBQ2IsS0FBSyxDQUFDLFFBQVEsRUFDZCwwQkFBMEIsa0JBQWtCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FDekQsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLEVBQ3BDLE9BQWUsRUFDZixFQUNFLFFBQVEsR0FBRyxHQUFHLEVBQ2QsT0FBTyxHQUFHLEdBQUcsRUFBRSxZQUFZO0VBQzVCLEdBQUcsRUFBRSxFQUNTLEVBQUU7SUFDakIsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sY0FBYyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUVyRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssT0FBTyxFQUFFO1FBQzVCLE9BQU87S0FDUjtJQUVELElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO0tBQ3BFO0lBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzdCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDckMsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUNsQyxjQUFjLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztpQkFDeEIsSUFBSSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO2dCQUNuQixRQUFRLE1BQU0sQ0FBQyxLQUFLLEVBQUU7b0JBQ3BCLEtBQUssT0FBTzt3QkFDVixZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBQ3pCLE9BQU8sRUFBRSxDQUFDO3dCQUNWLE9BQU87b0JBQ1QsS0FBSyxRQUFRO3dCQUNYLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQzt3QkFDekIsTUFBTSxDQUNKLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQzdELENBQUM7d0JBQ0YsT0FBTztpQkFDVjtnQkFFRCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLEdBQUcsT0FBTyxFQUFFO29CQUNwQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3pCLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDLENBQUM7b0JBQzdELE9BQU87aUJBQ1I7WUFDSCxDQUFDLENBQUM7aUJBQ0QsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25CLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNmLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgR2V0VmlkZW9TdGF0dXNSZXF1ZXN0LFxuICBHZXRWaWRlb1N0YXR1c1Jlc3BvbnNlLFxuICBMaW5rUHJldmlld1Jlc3BvbnNlLFxufSBmcm9tICcuLi9iYWNrZW5kLXR5cGVzL2luZGV4LmpzJztcbmltcG9ydCB7IGNsZWFuVVJMLCBtZWRpYSB9IGZyb20gJy4vYXBpLmpzJztcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBNZWRpYTogQWxsIG9mIHRoZXNlIGVuZHBvaW50cyBhcmUgaGl0dGluZyBhIHNlcGFyYXRlIHNlcnZlciBkZWRpY2F0ZWQgdG9cbi8vIGhhbmRsaW5nIG1lZGlhIHJlcXVlc3RzIChpbWFnZXMsIHZpZGVvcywgZXRjLikuIFRoZSBtZWRpYSBzZXJ2ZXIgaXNcbi8vIGluZGVwZW5kZW50bHkgY29uZmlndXJhYmxlIGFuZCBkb2VzIG5vdCByZWNlaXZlIGFueSBvZiB0aGUgc2FtZSBzYW1lIHJlcXVlc3Rcbi8vIG9wdGlvbnMgYXMgYSBub2RlLlxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2FwaS9tZWRpYS1lbmRwb2ludHMjZ2V0LXZpZGVvLXN0YXR1c1xuICovXG5leHBvcnQgY29uc3QgZ2V0VmlkZW9TdGF0dXMgPSAoXG4gIHBhcmFtczogR2V0VmlkZW9TdGF0dXNSZXF1ZXN0XG4pOiBQcm9taXNlPEdldFZpZGVvU3RhdHVzUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIG1lZGlhLmdldChgYXBpL3YwL2dldC12aWRlby1zdGF0dXMvJHtwYXJhbXMudmlkZW9JZH1gKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMaW5rUHJldmlldyA9ICh1cmw6IHN0cmluZyk6IFByb21pc2U8TGlua1ByZXZpZXdSZXNwb25zZT4gPT4ge1xuICByZXR1cm4gbWVkaWEuZ2V0KGBhcGkvdjAvbGluay1wcmV2aWV3P3VybD0ke2VuY29kZVVSSUNvbXBvbmVudCh1cmwpfWApO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkUHJveHlJbWFnZVVSTCA9IChpbWFnZVVSTDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGNsZWFuVVJMKFxuICAgIG1lZGlhLm1lZGlhVVJJLFxuICAgIGBhcGkvdjAvcHJveHktaW1hZ2U/dXJsPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGltYWdlVVJMKX1gXG4gICk7XG59O1xuXG4vKipcbiAqIEBwYXJhbSB2aWRlb0lkIHRoaXMgY29ycmVzcG9uZHMgdG8gdGhlIGFzc2V0SWQgcmV0dXJuZWQgZnJvbSB0aGUgdXBsb2FkVmlkZW8gZW5kcG9pbnRcbiAqIEBwYXJhbSBvcHRpb25zLmR1cmF0aW9uIG9wdGlvbmFsIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcyB0byBwb2xsIGZvciB2aWRlbyByZWFkeSBzdGF0dXNcbiAqIEBwYXJhbSBvcHRpb25zLnRpbWVvdXQgb3B0aW9uYWwgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgYmVmb3JlIHdlIHN0b3AgcG9sbGluZyBmb3IgdmlkZW8gcmVhZHkgc3RhdHVzXG4gKi9cbmV4cG9ydCBjb25zdCBwb2xsRm9yVmlkZW9SZWFkeSA9IGFzeW5jIChcbiAgdmlkZW9JZDogc3RyaW5nLFxuICB7XG4gICAgZHVyYXRpb24gPSAzMDAsXG4gICAgdGltZW91dCA9IDNlNSwgLy8gNSBtaW51dGVzXG4gIH0gPSB7fVxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHsgc3RhdHVzIH0gPSBhd2FpdCBnZXRWaWRlb1N0YXR1cyh7IHZpZGVvSWQgfSk7XG5cbiAgaWYgKHN0YXR1cy5waGFzZSA9PT0gJ3JlYWR5Jykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChzdGF0dXMucGhhc2UgPT09ICdmYWlsZWQnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGVyZSB3YXMgYW4gZXJyb3IgcHJvY2Vzc2luZyB0aGUgdmlkZW8gdXBsb2FkLicpO1xuICB9XG5cbiAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgZ2V0VmlkZW9TdGF0dXMoeyB2aWRlb0lkIH0pXG4gICAgICAgIC50aGVuKCh7IHN0YXR1cyB9KSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChzdGF0dXMucGhhc2UpIHtcbiAgICAgICAgICAgIGNhc2UgJ3JlYWR5JzpcbiAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGludGVydmFsSWQpO1xuICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgICAgICAgIGNsZWFyVGltZW91dChpbnRlcnZhbElkKTtcbiAgICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICAgIG5ldyBFcnJvcigndGhlcmUgd2FzIGFuIGVycm9yIHByb2Nlc3NpbmcgdGhlIHZpZGVvIHVwbG9hZC4nKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKERhdGUubm93KCkgLSBzdGFydFRpbWUgPiB0aW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQoaW50ZXJ2YWxJZCk7XG4gICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCd0aW1lZCBvdXQgd2FpdGluZyBmb3IgdmlkZW8gdG8gYmUgcmVhZHknKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gocmVqZWN0KTtcbiAgICB9LCBkdXJhdGlvbik7XG4gIH0pO1xufTtcbiJdfQ==

@@ -1,2 +0,2 @@

import { IdentityConfiguration } from './identity';
import { IdentityConfiguration } from './identity/index.js';
export type DesoProtocolConfiguration = IdentityConfiguration & {

@@ -3,0 +3,0 @@ /**

@@ -1,4 +0,4 @@

import { api, media } from './data';
import { identity } from './identity';
import { globalConfigOptions } from './internal';
import { api, media } from './data/index.js';
import { identity } from './identity/index.js';
import { globalConfigOptions } from './internal.js';
/**

@@ -24,2 +24,2 @@ * Set the configuration options for the library. This should be used instead of

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzby1wcm90b2NvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZXNvLXByb3RvY29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLEVBQXlCLE1BQU0sWUFBWSxDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQXNCakQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQWtDLEVBQUUsRUFBRTtJQUM5RCxJQUFJLE9BQU8sT0FBTyxDQUFDLG9CQUFvQixLQUFLLFFBQVEsRUFBRTtRQUNwRCxtQkFBbUIsQ0FBQyxvQkFBb0IsR0FBRyxPQUFPLENBQUMsb0JBQW9CLENBQUM7S0FDekU7SUFFRCxJQUFJLE9BQU8sT0FBTyxDQUFDLGlCQUFpQixLQUFLLFNBQVMsRUFBRTtRQUNsRCxtQkFBbUIsQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUM7S0FDbkU7SUFFRCxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTVCLElBQUksT0FBTyxPQUFPLENBQUMsT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDckUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztLQUM3QztJQUVELElBQUksT0FBTyxPQUFPLENBQUMsUUFBUSxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDdkUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztLQUNqRDtBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFwaSwgbWVkaWEgfSBmcm9tICcuL2RhdGEnO1xuaW1wb3J0IHsgaWRlbnRpdHksIElkZW50aXR5Q29uZmlndXJhdGlvbiB9IGZyb20gJy4vaWRlbnRpdHknO1xuaW1wb3J0IHsgZ2xvYmFsQ29uZmlnT3B0aW9ucyB9IGZyb20gJy4vaW50ZXJuYWwnO1xuXG5leHBvcnQgdHlwZSBEZXNvUHJvdG9jb2xDb25maWd1cmF0aW9uID0gSWRlbnRpdHlDb25maWd1cmF0aW9uICYge1xuICAvKipcbiAgICogVGhlIGZlZSByYXRlIGluIG5hbm9zIHBlciBLQiB0byB1c2UgZm9yIGFsbCB0cmFuc2FjdGlvbnMuIFRoaXMgY2FuIGJlXG4gICAqIG92ZXJyaWRkZW4gYnkgcGFzc2luZyBhIGRpZmZlcmVudCBmZWUgcmF0ZSB0byB0aGUgdHJhbnNhY3Rpb24gc3BlY2lmaWNcbiAgICogZnVuY3Rpb25zLlxuICAgKi9cbiAgTWluRmVlUmF0ZU5hbm9zUGVyS0I/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRvbWFpbiBvZiB0aGUgc2VydmVyIHRvIHVzZSBmb3IgbWVkaWEgcmVxdWVzdHMgKGltYWdlcywgdmlkZW9zLFxuICAgKiBldGMuKS4gSWYgbm90IHByb3ZpZGVkLCB3ZSB1c2UgdGhlIGRlZmF1bHQgaHR0cHM6Ly9tZWRpYS5kZXNvLm9yZyBzZXJ2ZXIuXG4gICAqL1xuICBtZWRpYVVSST86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWxseSwgdXNlIGxvY2FsIHRyYW5zYWN0aW9uIGNvbnN0cnVjdGlvbiB3aGVyZSBhcHBsaWNhYmxlXG4gICAqL1xuICBsb2NhbENvbnN0cnVjdGlvbj86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIFNldCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgbGlicmFyeS4gVGhpcyBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mXG4gKiB0aGUgaW5kaXZpZHVhbCBtb2R1bGUgY29uZmlndXJlIGNhbGxzIGJlY2F1c2UgaXQgZW5zdXJlcyB0aGUgbm9kZVVSSSBpcyBpblxuICogc3luYyBiZXR3ZWVuIHRoZSBBUEkgYW5kIElkZW50aXR5IG1vZHVsZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBjb25maWd1cmUgPSAob3B0aW9uczogRGVzb1Byb3RvY29sQ29uZmlndXJhdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIG9wdGlvbnMuTWluRmVlUmF0ZU5hbm9zUGVyS0IgPT09ICdudW1iZXInKSB7XG4gICAgZ2xvYmFsQ29uZmlnT3B0aW9ucy5NaW5GZWVSYXRlTmFub3NQZXJLQiA9IG9wdGlvbnMuTWluRmVlUmF0ZU5hbm9zUGVyS0I7XG4gIH1cblxuICBpZiAodHlwZW9mIG9wdGlvbnMubG9jYWxDb25zdHJ1Y3Rpb24gPT09ICdib29sZWFuJykge1xuICAgIGdsb2JhbENvbmZpZ09wdGlvbnMuTG9jYWxDb25zdHJ1Y3Rpb24gPSBvcHRpb25zLmxvY2FsQ29uc3RydWN0aW9uO1xuICB9XG5cbiAgaWRlbnRpdHkuY29uZmlndXJlKG9wdGlvbnMpO1xuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5ub2RlVVJJID09PSAnc3RyaW5nJyAmJiBvcHRpb25zLm5vZGVVUkkubGVuZ3RoID4gMCkge1xuICAgIGFwaS5jb25maWd1cmUoeyBub2RlVVJJOiBvcHRpb25zLm5vZGVVUkkgfSk7XG4gIH1cblxuICBpZiAodHlwZW9mIG9wdGlvbnMubWVkaWFVUkkgPT09ICdzdHJpbmcnICYmIG9wdGlvbnMubWVkaWFVUkkubGVuZ3RoID4gMCkge1xuICAgIG1lZGlhLmNvbmZpZ3VyZSh7IG1lZGlhVVJJOiBvcHRpb25zLm1lZGlhVVJJIH0pO1xuICB9XG59O1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzby1wcm90b2NvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZXNvLXByb3RvY29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUF5QixRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFzQnBEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxPQUFrQyxFQUFFLEVBQUU7SUFDOUQsSUFBSSxPQUFPLE9BQU8sQ0FBQyxvQkFBb0IsS0FBSyxRQUFRLEVBQUU7UUFDcEQsbUJBQW1CLENBQUMsb0JBQW9CLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDO0tBQ3pFO0lBRUQsSUFBSSxPQUFPLE9BQU8sQ0FBQyxpQkFBaUIsS0FBSyxTQUFTLEVBQUU7UUFDbEQsbUJBQW1CLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0tBQ25FO0lBRUQsUUFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUU1QixJQUFJLE9BQU8sT0FBTyxDQUFDLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3JFLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7S0FDN0M7SUFFRCxJQUFJLE9BQU8sT0FBTyxDQUFDLFFBQVEsS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3ZFLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7S0FDakQ7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhcGksIG1lZGlhIH0gZnJvbSAnLi9kYXRhL2luZGV4LmpzJztcbmltcG9ydCB7IElkZW50aXR5Q29uZmlndXJhdGlvbiwgaWRlbnRpdHkgfSBmcm9tICcuL2lkZW50aXR5L2luZGV4LmpzJztcbmltcG9ydCB7IGdsb2JhbENvbmZpZ09wdGlvbnMgfSBmcm9tICcuL2ludGVybmFsLmpzJztcblxuZXhwb3J0IHR5cGUgRGVzb1Byb3RvY29sQ29uZmlndXJhdGlvbiA9IElkZW50aXR5Q29uZmlndXJhdGlvbiAmIHtcbiAgLyoqXG4gICAqIFRoZSBmZWUgcmF0ZSBpbiBuYW5vcyBwZXIgS0IgdG8gdXNlIGZvciBhbGwgdHJhbnNhY3Rpb25zLiBUaGlzIGNhbiBiZVxuICAgKiBvdmVycmlkZGVuIGJ5IHBhc3NpbmcgYSBkaWZmZXJlbnQgZmVlIHJhdGUgdG8gdGhlIHRyYW5zYWN0aW9uIHNwZWNpZmljXG4gICAqIGZ1bmN0aW9ucy5cbiAgICovXG4gIE1pbkZlZVJhdGVOYW5vc1BlcktCPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBkb21haW4gb2YgdGhlIHNlcnZlciB0byB1c2UgZm9yIG1lZGlhIHJlcXVlc3RzIChpbWFnZXMsIHZpZGVvcyxcbiAgICogZXRjLikuIElmIG5vdCBwcm92aWRlZCwgd2UgdXNlIHRoZSBkZWZhdWx0IGh0dHBzOi8vbWVkaWEuZGVzby5vcmcgc2VydmVyLlxuICAgKi9cbiAgbWVkaWFVUkk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsbHksIHVzZSBsb2NhbCB0cmFuc2FjdGlvbiBjb25zdHJ1Y3Rpb24gd2hlcmUgYXBwbGljYWJsZVxuICAgKi9cbiAgbG9jYWxDb25zdHJ1Y3Rpb24/OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBTZXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGxpYnJhcnkuIFRoaXMgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCBvZlxuICogdGhlIGluZGl2aWR1YWwgbW9kdWxlIGNvbmZpZ3VyZSBjYWxscyBiZWNhdXNlIGl0IGVuc3VyZXMgdGhlIG5vZGVVUkkgaXMgaW5cbiAqIHN5bmMgYmV0d2VlbiB0aGUgQVBJIGFuZCBJZGVudGl0eSBtb2R1bGVzLlxuICovXG5leHBvcnQgY29uc3QgY29uZmlndXJlID0gKG9wdGlvbnM6IERlc29Qcm90b2NvbENvbmZpZ3VyYXRpb24pID0+IHtcbiAgaWYgKHR5cGVvZiBvcHRpb25zLk1pbkZlZVJhdGVOYW5vc1BlcktCID09PSAnbnVtYmVyJykge1xuICAgIGdsb2JhbENvbmZpZ09wdGlvbnMuTWluRmVlUmF0ZU5hbm9zUGVyS0IgPSBvcHRpb25zLk1pbkZlZVJhdGVOYW5vc1BlcktCO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLmxvY2FsQ29uc3RydWN0aW9uID09PSAnYm9vbGVhbicpIHtcbiAgICBnbG9iYWxDb25maWdPcHRpb25zLkxvY2FsQ29uc3RydWN0aW9uID0gb3B0aW9ucy5sb2NhbENvbnN0cnVjdGlvbjtcbiAgfVxuXG4gIGlkZW50aXR5LmNvbmZpZ3VyZShvcHRpb25zKTtcblxuICBpZiAodHlwZW9mIG9wdGlvbnMubm9kZVVSSSA9PT0gJ3N0cmluZycgJiYgb3B0aW9ucy5ub2RlVVJJLmxlbmd0aCA+IDApIHtcbiAgICBhcGkuY29uZmlndXJlKHsgbm9kZVVSSTogb3B0aW9ucy5ub2RlVVJJIH0pO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLm1lZGlhVVJJID09PSAnc3RyaW5nJyAmJiBvcHRpb25zLm1lZGlhVVJJLmxlbmd0aCA+IDApIHtcbiAgICBtZWRpYS5jb25maWd1cmUoeyBtZWRpYVVSSTogb3B0aW9ucy5tZWRpYVVSSSB9KTtcbiAgfVxufTtcbiJdfQ==

@@ -1,2 +0,2 @@

import { APIProvider } from './types';
import { APIProvider } from './types.js';
export declare class APIError {

@@ -3,0 +3,0 @@ message: string;

function buildOptions(customOptions = {}) {
var _a;
const headers = (_a = customOptions.headers) !== null && _a !== void 0 ? _a : {};
const headers = customOptions.headers ?? {};
delete customOptions.headers;
return Object.assign({ headers }, customOptions);
return {
headers,
...customOptions,
};
}

@@ -61,2 +63,2 @@ export class APIError {

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lkZW50aXR5L2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxTQUFTLFlBQVksQ0FBQyxnQkFBcUIsRUFBRTs7SUFDM0MsTUFBTSxPQUFPLEdBQUcsTUFBQSxhQUFhLENBQUMsT0FBTyxtQ0FBSSxFQUFFLENBQUM7SUFDNUMsT0FBTyxhQUFhLENBQUMsT0FBTyxDQUFDO0lBRTdCLHVCQUNFLE9BQU8sSUFDSixhQUFhLEVBQ2hCO0FBQ0osQ0FBQztBQUVELE1BQU0sT0FBTyxRQUFRO0lBSW5CLFlBQVksT0FBZSxFQUFFLE1BQWM7UUFIM0M7Ozs7O1dBQWdCO1FBQ2hCOzs7OztXQUFlO1FBR2IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztDQUNGO0FBRUQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFXLEVBQUUsT0FBWSxFQUFFLEVBQUU7SUFDakQsT0FBTyxLQUFLLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ3RDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFO1lBQ1gsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQzlCLE1BQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0MsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3JDLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQzVCLHNFQUFzRTtnQkFDdEUsa0RBQWtEO2dCQUNsRCxPQUFPLElBQUksQ0FBQzthQUNiO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNoQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxHQUFHLEdBQWdCO0lBQzlCLElBQUksQ0FBQyxHQUFXLEVBQUUsSUFBeUI7UUFDekMsT0FBTyxZQUFZLENBQ2pCLEdBQUcsRUFDSCxZQUFZLENBQUM7WUFDWCxNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztZQUMxQixPQUFPLEVBQUU7Z0JBQ1AsY0FBYyxFQUFFLGtCQUFrQjthQUNuQztTQUNGLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUNELEdBQUcsQ0FBQyxHQUFXO1FBQ2IsT0FBTyxZQUFZLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUElQcm92aWRlciB9IGZyb20gJy4vdHlwZXMnO1xuXG5mdW5jdGlvbiBidWlsZE9wdGlvbnMoY3VzdG9tT3B0aW9uczogYW55ID0ge30pIHtcbiAgY29uc3QgaGVhZGVycyA9IGN1c3RvbU9wdGlvbnMuaGVhZGVycyA/PyB7fTtcbiAgZGVsZXRlIGN1c3RvbU9wdGlvbnMuaGVhZGVycztcblxuICByZXR1cm4ge1xuICAgIGhlYWRlcnMsXG4gICAgLi4uY3VzdG9tT3B0aW9ucyxcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIEFQSUVycm9yIHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBzdGF0dXM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHN0YXR1czogbnVtYmVyKSB7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICB0aGlzLnN0YXR1cyA9IHN0YXR1cztcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1lc3NhZ2U7XG4gIH1cbn1cblxuY29uc3Qgd3JhcHBlZEZldGNoID0gKHVybDogc3RyaW5nLCBvcHRpb25zOiBhbnkpID0+IHtcbiAgcmV0dXJuIGZldGNoKHVybCwgb3B0aW9ucykudGhlbigocmVzKSA9PiB7XG4gICAgaWYgKCFyZXMub2spIHtcbiAgICAgIHJldHVybiByZXMuanNvbigpLnRoZW4oKGpzb24pID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEFQSUVycm9yKGpzb24uZXJyb3IsIHJlcy5zdGF0dXMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy50ZXh0KCkudGhlbigocmF3Qm9keVRleHQpID0+IHtcbiAgICAgIGlmIChyYXdCb2R5VGV4dC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgLy8gSW4gdGhlIGNhc2Ugd2hlcmUgdGhlIHJlc3BvbnNlIGJvZHkgaXMgZW1wdHksIGl0IHdpbGwgZmFpbCB0byBwYXJzZVxuICAgICAgICAvLyBhcyBKU09OIHNvIHdlIGp1c3QgaGFuZGxlIGl0IGFzIGEgc3BlY2lhbCBjYXNlLlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKHJhd0JvZHlUZXh0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgYXBpOiBBUElQcm92aWRlciA9IHtcbiAgcG9zdCh1cmw6IHN0cmluZywgZGF0YTogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHdyYXBwZWRGZXRjaChcbiAgICAgIHVybCxcbiAgICAgIGJ1aWxkT3B0aW9ucyh7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShkYXRhKSxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG4gIH0sXG4gIGdldCh1cmw6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHdyYXBwZWRGZXRjaCh1cmwsIGJ1aWxkT3B0aW9ucyh7IG1ldGhvZDogJ0dFVCcgfSkpO1xuICB9LFxufTtcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lkZW50aXR5L2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxTQUFTLFlBQVksQ0FBQyxnQkFBcUIsRUFBRTtJQUMzQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUM1QyxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUM7SUFFN0IsT0FBTztRQUNMLE9BQU87UUFDUCxHQUFHLGFBQWE7S0FDakIsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLE9BQU8sUUFBUTtJQUluQixZQUFZLE9BQWUsRUFBRSxNQUFjO1FBSDNDOzs7OztXQUFnQjtRQUNoQjs7Ozs7V0FBZTtRQUdiLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7Q0FDRjtBQUVELE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBVyxFQUFFLE9BQVksRUFBRSxFQUFFO0lBQ2pELE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRTtZQUNYLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUM5QixNQUFNLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNyQyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUM1QixzRUFBc0U7Z0JBQ3RFLGtEQUFrRDtnQkFDbEQsT0FBTyxJQUFJLENBQUM7YUFDYjtpQkFBTTtnQkFDTCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDaEM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFnQjtJQUM5QixJQUFJLENBQUMsR0FBVyxFQUFFLElBQXlCO1FBQ3pDLE9BQU8sWUFBWSxDQUNqQixHQUFHLEVBQ0gsWUFBWSxDQUFDO1lBQ1gsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDMUIsT0FBTyxFQUFFO2dCQUNQLGNBQWMsRUFBRSxrQkFBa0I7YUFDbkM7U0FDRixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFDRCxHQUFHLENBQUMsR0FBVztRQUNiLE9BQU8sWUFBWSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBJUHJvdmlkZXIgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuZnVuY3Rpb24gYnVpbGRPcHRpb25zKGN1c3RvbU9wdGlvbnM6IGFueSA9IHt9KSB7XG4gIGNvbnN0IGhlYWRlcnMgPSBjdXN0b21PcHRpb25zLmhlYWRlcnMgPz8ge307XG4gIGRlbGV0ZSBjdXN0b21PcHRpb25zLmhlYWRlcnM7XG5cbiAgcmV0dXJuIHtcbiAgICBoZWFkZXJzLFxuICAgIC4uLmN1c3RvbU9wdGlvbnMsXG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBBUElFcnJvciB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc3RhdHVzOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBzdGF0dXM6IG51bWJlcikge1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgdGhpcy5zdGF0dXMgPSBzdGF0dXM7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlO1xuICB9XG59XG5cbmNvbnN0IHdyYXBwZWRGZXRjaCA9ICh1cmw6IHN0cmluZywgb3B0aW9uczogYW55KSA9PiB7XG4gIHJldHVybiBmZXRjaCh1cmwsIG9wdGlvbnMpLnRoZW4oKHJlcykgPT4ge1xuICAgIGlmICghcmVzLm9rKSB7XG4gICAgICByZXR1cm4gcmVzLmpzb24oKS50aGVuKChqc29uKSA9PiB7XG4gICAgICAgIHRocm93IG5ldyBBUElFcnJvcihqc29uLmVycm9yLCByZXMuc3RhdHVzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMudGV4dCgpLnRoZW4oKHJhd0JvZHlUZXh0KSA9PiB7XG4gICAgICBpZiAocmF3Qm9keVRleHQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIC8vIEluIHRoZSBjYXNlIHdoZXJlIHRoZSByZXNwb25zZSBib2R5IGlzIGVtcHR5LCBpdCB3aWxsIGZhaWwgdG8gcGFyc2VcbiAgICAgICAgLy8gYXMgSlNPTiBzbyB3ZSBqdXN0IGhhbmRsZSBpdCBhcyBhIHNwZWNpYWwgY2FzZS5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShyYXdCb2R5VGV4dCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGFwaTogQVBJUHJvdmlkZXIgPSB7XG4gIHBvc3QodXJsOiBzdHJpbmcsIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB3cmFwcGVkRmV0Y2goXG4gICAgICB1cmwsXG4gICAgICBidWlsZE9wdGlvbnMoe1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoZGF0YSksXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICB9LFxuICBnZXQodXJsOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB3cmFwcGVkRmV0Y2godXJsLCBidWlsZE9wdGlvbnMoeyBtZXRob2Q6ICdHRVQnIH0pKTtcbiAgfSxcbn07XG4iXX0=

@@ -1,2 +0,2 @@

import { DeSoNetwork, TransactionSpendingLimitResponse } from '../backend-types';
import { DeSoNetwork, TransactionSpendingLimitResponse } from '../backend-types/index.js';
export declare const DEFAULT_IDENTITY_URI = "https://identity.deso.org";

@@ -3,0 +3,0 @@ export declare const DEFAULT_NODE_URI = "https://blockproducer.deso.org";

@@ -48,2 +48,2 @@ export const DEFAULT_IDENTITY_URI = 'https://identity.deso.org';

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lkZW50aXR5L2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRywyQkFBMkIsQ0FBQztBQUNoRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxnQ0FBZ0MsQ0FBQztBQUNqRSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxVQUFVLENBQUM7QUFFakQsaUJBQWlCO0FBQ2pCLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FDekIsaUZBQWlGLENBQUM7QUFFcEYsNEVBQTRFO0FBQzVFLGdEQUFnRDtBQUNoRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FDOUIsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNaLHlEQUF5RDtJQUN6RCxlQUFlLEVBQUUsSUFBSSxHQUFHLEdBQUc7SUFDM0Isd0JBQXdCLEVBQUU7UUFDeEIscUJBQXFCLEVBQUUsQ0FBQztLQUN6QjtJQUNELDRCQUE0QixFQUFFLEVBQUU7SUFDaEMsd0JBQXdCLEVBQUUsRUFBRTtJQUM1QixvQkFBb0IsRUFBRSxFQUFFO0lBQ3hCLHlCQUF5QixFQUFFLEVBQUU7Q0FDOUIsQ0FBQyxDQUFDO0FBRUwsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUMvQyxPQUFPLEVBQUU7UUFDUCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDZixJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztLQUN4QjtJQUNELE9BQU8sRUFBRTtRQUNQLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQztRQUNmLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0tBQ3hCO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM5QyxlQUFlLEVBQUUscUJBQXFCO0lBQ3RDLGFBQWEsRUFBRSxtQkFBbUI7SUFDbEMsWUFBWSxFQUFFLGtCQUFrQjtDQUNqQyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FHcEMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNoQixPQUFPLEVBQUUsU0FBUztJQUNsQixPQUFPLEVBQUUsUUFBUTtDQUNsQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzdDLEdBQUcsRUFBRSxLQUFLO0lBQ1YsR0FBRyxFQUFFLE1BQU07SUFDWCxHQUFHLEVBQUUsT0FBTztJQUNaLEdBQUcsRUFBRSxRQUFRO0lBQ2IsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsVUFBVTtJQUNmLEdBQUcsRUFBRSxXQUFXO0lBQ2hCLEdBQUcsRUFBRSxZQUFZO0NBQ2xCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERlU29OZXR3b3JrLFxuICBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZSxcbn0gZnJvbSAnLi4vYmFja2VuZC10eXBlcyc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9JREVOVElUWV9VUkkgPSAnaHR0cHM6Ly9pZGVudGl0eS5kZXNvLm9yZyc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9OT0RFX1VSSSA9ICdodHRwczovL2Jsb2NrcHJvZHVjZXIuZGVzby5vcmcnO1xuZXhwb3J0IGNvbnN0IElERU5USVRZX1NFUlZJQ0VfVkFMVUUgPSAnaWRlbnRpdHknO1xuXG4vLyBFcnJvciBtZXNzYWdlc1xuZXhwb3J0IGNvbnN0IE5PX01PTkVZX0VSUk9SID1cbiAgJ1VzZXIgZG9lcyBub3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGluIHRoZWlyIHdhbGxldCB0byBjb21wbGV0ZSB0aGUgdHJhbnNhY3Rpb24nO1xuXG4vLyBzaW5jZSB3ZSBpc3N1ZSBhIGRlcml2ZWQga2V5IGFuZCBhdXRob3JpemUgaXQgaW1tZWRpYXRlbHkgYWZ0ZXIgbG9naW4gdGhlXG4vLyBkZWZhdWx0IHBlcm1pc3Npb24gdG8gYXV0aG9yaXplIGEgZGVyaXZlZCBrZXlcbmV4cG9ydCBjb25zdCBERUZBVUxUX1BFUk1JU1NJT05TOiBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZSA9XG4gIE9iamVjdC5mcmVlemUoe1xuICAgIC8vIHNldCB0aGUgbGltaXQgdmVyeSBsb3csIGp1c3QgZW5vdWdoIHRvIGF1dGhvcml6ZSBhIGtleVxuICAgIEdsb2JhbERFU09MaW1pdDogMC4wMSAqIDFlOSxcbiAgICBUcmFuc2FjdGlvbkNvdW50TGltaXRNYXA6IHtcbiAgICAgIEFVVEhPUklaRV9ERVJJVkVEX0tFWTogMSxcbiAgICB9LFxuICAgIENyZWF0b3JDb2luT3BlcmF0aW9uTGltaXRNYXA6IHt9LFxuICAgIERBT0NvaW5PcGVyYXRpb25MaW1pdE1hcDoge30sXG4gICAgTkZUT3BlcmF0aW9uTGltaXRNYXA6IHt9LFxuICAgIERBT0NvaW5MaW1pdE9yZGVyTGltaXRNYXA6IHt9LFxuICB9KTtcblxuZXhwb3J0IGNvbnN0IFBVQkxJQ19LRVlfUFJFRklYRVMgPSBPYmplY3QuZnJlZXplKHtcbiAgbWFpbm5ldDoge1xuICAgIGJpdGNvaW46IFsweDAwXSxcbiAgICBkZXNvOiBbMHhjZCwgMHgxNCwgMHgwXSxcbiAgfSxcbiAgdGVzdG5ldDoge1xuICAgIGJpdGNvaW46IFsweDZmXSxcbiAgICBkZXNvOiBbMHgxMSwgMHhjMiwgMHgwXSxcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgTE9DQUxfU1RPUkFHRV9LRVlTID0gT2JqZWN0LmZyZWV6ZSh7XG4gIGFjdGl2ZVB1YmxpY0tleTogJ2Rlc29BY3RpdmVQdWJsaWNLZXknLFxuICBpZGVudGl0eVVzZXJzOiAnZGVzb0lkZW50aXR5VXNlcnMnLFxuICBsb2dpbktleVBhaXI6ICdkZXNvTG9naW5LZXlQYWlyJyxcbn0pO1xuXG5leHBvcnQgY29uc3QgREVTT19ORVRXT1JLX1RPX0VUSF9ORVRXT1JLOiBSZWNvcmQ8XG4gIERlU29OZXR3b3JrLFxuICAnbWFpbm5ldCcgfCAnZ29lcmxpJ1xuPiA9IE9iamVjdC5mcmVlemUoe1xuICBtYWlubmV0OiAnbWFpbm5ldCcsXG4gIHRlc3RuZXQ6ICdnb2VybGknLFxufSk7XG5cbmV4cG9ydCBjb25zdCBESUFNT05EX0xFVkVMX01BUCA9IE9iamVjdC5mcmVlemUoe1xuICAnMSc6IDUwMDAwLFxuICAnMic6IDUwMDAwMCxcbiAgJzMnOiA1MDAwMDAwLFxuICAnNCc6IDUwMDAwMDAwLFxuICAnNSc6IDUwMDAwMDAwMCxcbiAgJzYnOiA1MDAwMDAwMDAwLFxuICAnNyc6IDUwMDAwMDAwMDAwLFxuICAnOCc6IDUwMDAwMDAwMDAwMCxcbn0pO1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lkZW50aXR5L2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRywyQkFBMkIsQ0FBQztBQUNoRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxnQ0FBZ0MsQ0FBQztBQUNqRSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxVQUFVLENBQUM7QUFFakQsaUJBQWlCO0FBQ2pCLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FDekIsaUZBQWlGLENBQUM7QUFFcEYsNEVBQTRFO0FBQzVFLGdEQUFnRDtBQUNoRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FDOUIsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNaLHlEQUF5RDtJQUN6RCxlQUFlLEVBQUUsSUFBSSxHQUFHLEdBQUc7SUFDM0Isd0JBQXdCLEVBQUU7UUFDeEIscUJBQXFCLEVBQUUsQ0FBQztLQUN6QjtJQUNELDRCQUE0QixFQUFFLEVBQUU7SUFDaEMsd0JBQXdCLEVBQUUsRUFBRTtJQUM1QixvQkFBb0IsRUFBRSxFQUFFO0lBQ3hCLHlCQUF5QixFQUFFLEVBQUU7Q0FDOUIsQ0FBQyxDQUFDO0FBRUwsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUMvQyxPQUFPLEVBQUU7UUFDUCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDZixJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztLQUN4QjtJQUNELE9BQU8sRUFBRTtRQUNQLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQztRQUNmLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0tBQ3hCO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM5QyxlQUFlLEVBQUUscUJBQXFCO0lBQ3RDLGFBQWEsRUFBRSxtQkFBbUI7SUFDbEMsWUFBWSxFQUFFLGtCQUFrQjtDQUNqQyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FHcEMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNoQixPQUFPLEVBQUUsU0FBUztJQUNsQixPQUFPLEVBQUUsUUFBUTtDQUNsQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzdDLEdBQUcsRUFBRSxLQUFLO0lBQ1YsR0FBRyxFQUFFLE1BQU07SUFDWCxHQUFHLEVBQUUsT0FBTztJQUNaLEdBQUcsRUFBRSxRQUFRO0lBQ2IsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsVUFBVTtJQUNmLEdBQUcsRUFBRSxXQUFXO0lBQ2hCLEdBQUcsRUFBRSxZQUFZO0NBQ2xCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERlU29OZXR3b3JrLFxuICBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZSxcbn0gZnJvbSAnLi4vYmFja2VuZC10eXBlcy9pbmRleC5qcyc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9JREVOVElUWV9VUkkgPSAnaHR0cHM6Ly9pZGVudGl0eS5kZXNvLm9yZyc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9OT0RFX1VSSSA9ICdodHRwczovL2Jsb2NrcHJvZHVjZXIuZGVzby5vcmcnO1xuZXhwb3J0IGNvbnN0IElERU5USVRZX1NFUlZJQ0VfVkFMVUUgPSAnaWRlbnRpdHknO1xuXG4vLyBFcnJvciBtZXNzYWdlc1xuZXhwb3J0IGNvbnN0IE5PX01PTkVZX0VSUk9SID1cbiAgJ1VzZXIgZG9lcyBub3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGluIHRoZWlyIHdhbGxldCB0byBjb21wbGV0ZSB0aGUgdHJhbnNhY3Rpb24nO1xuXG4vLyBzaW5jZSB3ZSBpc3N1ZSBhIGRlcml2ZWQga2V5IGFuZCBhdXRob3JpemUgaXQgaW1tZWRpYXRlbHkgYWZ0ZXIgbG9naW4gdGhlXG4vLyBkZWZhdWx0IHBlcm1pc3Npb24gdG8gYXV0aG9yaXplIGEgZGVyaXZlZCBrZXlcbmV4cG9ydCBjb25zdCBERUZBVUxUX1BFUk1JU1NJT05TOiBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZSA9XG4gIE9iamVjdC5mcmVlemUoe1xuICAgIC8vIHNldCB0aGUgbGltaXQgdmVyeSBsb3csIGp1c3QgZW5vdWdoIHRvIGF1dGhvcml6ZSBhIGtleVxuICAgIEdsb2JhbERFU09MaW1pdDogMC4wMSAqIDFlOSxcbiAgICBUcmFuc2FjdGlvbkNvdW50TGltaXRNYXA6IHtcbiAgICAgIEFVVEhPUklaRV9ERVJJVkVEX0tFWTogMSxcbiAgICB9LFxuICAgIENyZWF0b3JDb2luT3BlcmF0aW9uTGltaXRNYXA6IHt9LFxuICAgIERBT0NvaW5PcGVyYXRpb25MaW1pdE1hcDoge30sXG4gICAgTkZUT3BlcmF0aW9uTGltaXRNYXA6IHt9LFxuICAgIERBT0NvaW5MaW1pdE9yZGVyTGltaXRNYXA6IHt9LFxuICB9KTtcblxuZXhwb3J0IGNvbnN0IFBVQkxJQ19LRVlfUFJFRklYRVMgPSBPYmplY3QuZnJlZXplKHtcbiAgbWFpbm5ldDoge1xuICAgIGJpdGNvaW46IFsweDAwXSxcbiAgICBkZXNvOiBbMHhjZCwgMHgxNCwgMHgwXSxcbiAgfSxcbiAgdGVzdG5ldDoge1xuICAgIGJpdGNvaW46IFsweDZmXSxcbiAgICBkZXNvOiBbMHgxMSwgMHhjMiwgMHgwXSxcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgTE9DQUxfU1RPUkFHRV9LRVlTID0gT2JqZWN0LmZyZWV6ZSh7XG4gIGFjdGl2ZVB1YmxpY0tleTogJ2Rlc29BY3RpdmVQdWJsaWNLZXknLFxuICBpZGVudGl0eVVzZXJzOiAnZGVzb0lkZW50aXR5VXNlcnMnLFxuICBsb2dpbktleVBhaXI6ICdkZXNvTG9naW5LZXlQYWlyJyxcbn0pO1xuXG5leHBvcnQgY29uc3QgREVTT19ORVRXT1JLX1RPX0VUSF9ORVRXT1JLOiBSZWNvcmQ8XG4gIERlU29OZXR3b3JrLFxuICAnbWFpbm5ldCcgfCAnZ29lcmxpJ1xuPiA9IE9iamVjdC5mcmVlemUoe1xuICBtYWlubmV0OiAnbWFpbm5ldCcsXG4gIHRlc3RuZXQ6ICdnb2VybGknLFxufSk7XG5cbmV4cG9ydCBjb25zdCBESUFNT05EX0xFVkVMX01BUCA9IE9iamVjdC5mcmVlemUoe1xuICAnMSc6IDUwMDAwLFxuICAnMic6IDUwMDAwMCxcbiAgJzMnOiA1MDAwMDAwLFxuICAnNCc6IDUwMDAwMDAwLFxuICAnNSc6IDUwMDAwMDAwMCxcbiAgJzYnOiA1MDAwMDAwMDAwLFxuICAnNyc6IDUwMDAwMDAwMDAwLFxuICAnOCc6IDUwMDAwMDAwMDAwMCxcbn0pO1xuIl19

@@ -1,2 +0,2 @@

import { KeyPair, Network, jwtAlgorithm } from './types';
import { KeyPair, Network, jwtAlgorithm } from './types.js';
export declare function concatUint8Arrays(arrays: Uint8Array[], length?: number): Uint8Array;

@@ -3,0 +3,0 @@ export declare const uvarint64ToBuf: (uint: number) => Uint8Array;

@@ -1,15 +0,6 @@

var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { sha256 } from '@noble/hashes/sha256';
import { Point, sign as ecSign, utils as ecUtils, getPublicKey, getSharedSecret as nobleGetSharedSecret, } from '@noble/secp256k1';
import * as bs58 from 'bs58';
import { PUBLIC_KEY_PREFIXES } from './constants';
import { TransactionV0 } from './transaction-transcoders';
import { PUBLIC_KEY_PREFIXES } from './constants.js';
import { TransactionV0 } from './transaction-transcoders.js';
// Browser friendly version of node's Buffer.concat.

@@ -103,4 +94,3 @@ export function concatUint8Arrays(arrays, length) {

export const publicKeyToBase58Check = (publicKeyBytes, options) => {
var _a;
const prefix = PUBLIC_KEY_PREFIXES[(_a = options === null || options === void 0 ? void 0 : options.network) !== null && _a !== void 0 ? _a : 'mainnet'].deso;
const prefix = PUBLIC_KEY_PREFIXES[options?.network ?? 'mainnet'].deso;
// This is the same as the implementation in the bs58check package, but we

@@ -122,3 +112,3 @@ // slightly modify it to use the browser friendly version of Buffer.concat.

};
export const signTx = (txHex, seedHex, options) => __awaiter(void 0, void 0, void 0, function* () {
export const signTx = async (txHex, seedHex, options) => {
const transactionBytes = ecUtils.hexToBytes(txHex);

@@ -131,5 +121,5 @@ const [_, v1FieldsBuffer] = TransactionV0.fromBytes(transactionBytes);

const privateKey = ecUtils.hexToBytes(seedHex);
const [signatureBytes, recoveryParam] = yield sign(transactionHashHex, privateKey);
const [signatureBytes, recoveryParam] = await sign(transactionHashHex, privateKey);
const signatureLength = uvarint64ToBuf(signatureBytes.length);
if (options === null || options === void 0 ? void 0 : options.isDerivedKey) {
if (options?.isDerivedKey) {
signatureBytes[0] += 1 + recoveryParam;

@@ -139,15 +129,19 @@ }

return ecUtils.bytesToHex(signedTransactionBytes);
});
export const getSignedJWT = (seedHex, alg, { derivedPublicKeyBase58Check,
};
export const getSignedJWT = async (seedHex, alg, { derivedPublicKeyBase58Check,
// TODO: actually support this... or remove it.
expiration, }) => __awaiter(void 0, void 0, void 0, function* () {
expiration, }) => {
const header = JSON.stringify({ alg, typ: 'JWT' });
const issuedAt = Math.floor(Date.now() / 1000);
const thirtyMinFromNow = issuedAt + 30 * 60;
const payload = JSON.stringify(Object.assign(Object.assign({}, (derivedPublicKeyBase58Check ? { derivedPublicKeyBase58Check } : {})), { iat: issuedAt, exp: thirtyMinFromNow }));
const payload = JSON.stringify({
...(derivedPublicKeyBase58Check ? { derivedPublicKeyBase58Check } : {}),
iat: issuedAt,
exp: thirtyMinFromNow,
});
const jwt = `${urlSafeBase64(header)}.${urlSafeBase64(payload)}`;
const [signature] = yield sign(ecUtils.bytesToHex(sha256(new Uint8Array(new TextEncoder().encode(jwt)))), ecUtils.hexToBytes(seedHex));
const [signature] = await sign(ecUtils.bytesToHex(sha256(new Uint8Array(new TextEncoder().encode(jwt)))), ecUtils.hexToBytes(seedHex));
const encodedSignature = derToJoseEncoding(signature);
return `${jwt}.${encodedSignature}`;
});
};
function urlSafeBase64(str) {

@@ -172,3 +166,3 @@ return window

*/
export const encrypt = (publicKey, plaintext) => __awaiter(void 0, void 0, void 0, function* () {
export const encrypt = async (publicKey, plaintext) => {
const ephemPrivateKey = ecUtils.randomBytes(32);

@@ -182,4 +176,4 @@ const ephemPublicKey = getPublicKey(ephemPrivateKey);

const bytes = new TextEncoder().encode(plaintext);
const cryptoKey = yield globalThis.crypto.subtle.importKey('raw', encryptionKey, 'AES-CTR', true, ['encrypt']);
const cipherBytes = yield globalThis.crypto.subtle.encrypt({
const cryptoKey = await globalThis.crypto.subtle.importKey('raw', encryptionKey, 'AES-CTR', true, ['encrypt']);
const cipherBytes = await globalThis.crypto.subtle.encrypt({
name: 'AES-CTR',

@@ -189,3 +183,3 @@ counter: iv,

}, cryptoKey, bytes);
const hmac = yield ecUtils.hmacSha256(macKey, new Uint8Array([...iv, ...new Uint8Array(cipherBytes)]));
const hmac = await ecUtils.hmacSha256(macKey, new Uint8Array([...iv, ...new Uint8Array(cipherBytes)]));
return ecUtils.bytesToHex(new Uint8Array([

@@ -197,3 +191,3 @@ ...ephemPublicKey,

]));
});
};
export const bs58PublicKeyToCompressedBytes = (str) => {

@@ -230,9 +224,9 @@ if (!str) {

};
export const decryptChatMessage = (recipientSeedHex, publicDecryptionKey, cipherTextHex) => __awaiter(void 0, void 0, void 0, function* () {
export const decryptChatMessage = async (recipientSeedHex, publicDecryptionKey, cipherTextHex) => {
const privateKey = ecUtils.hexToBytes(recipientSeedHex);
const publicKey = yield bs58PublicKeyToBytes(publicDecryptionKey);
const sharedPrivateKey = yield getSharedPrivateKey(privateKey, publicKey);
const publicKey = await bs58PublicKeyToBytes(publicDecryptionKey);
const sharedPrivateKey = await getSharedPrivateKey(privateKey, publicKey);
return decrypt(sharedPrivateKey, cipherTextHex);
});
export const decrypt = (privateDecryptionKey, cipherTextHex) => __awaiter(void 0, void 0, void 0, function* () {
};
export const decrypt = async (privateDecryptionKey, cipherTextHex) => {
const cipherBytes = ecUtils.hexToBytes(cipherTextHex);

@@ -253,13 +247,13 @@ const metaLength = 113;

const msgMac = cipherBytes.slice(65 + 16 + cipherTextLength);
const sharedSecretKey = yield getSharedPrivateKey(privateKey, ephemPublicKey);
const sharedSecretKey = await getSharedPrivateKey(privateKey, ephemPublicKey);
const encryptionKey = sharedSecretKey.slice(0, 16);
const macKey = sha256(sharedSecretKey.slice(16));
const hmacKnownGood = yield ecUtils.hmacSha256(macKey, cipherAndIv);
const hmacKnownGood = await ecUtils.hmacSha256(macKey, cipherAndIv);
if (!isValidHmac(msgMac, hmacKnownGood)) {
throw new Error('incorrect MAC');
}
const cryptoKey = yield globalThis.crypto.subtle.importKey('raw', encryptionKey, 'AES-CTR', true, ['decrypt']);
const decryptedBuffer = yield globalThis.crypto.subtle.decrypt({ name: 'AES-CTR', counter: iv, length: 128 }, cryptoKey, cipherText);
const cryptoKey = await globalThis.crypto.subtle.importKey('raw', encryptionKey, 'AES-CTR', true, ['decrypt']);
const decryptedBuffer = await globalThis.crypto.subtle.decrypt({ name: 'AES-CTR', counter: iv, length: 128 }, cryptoKey, cipherText);
return new TextDecoder().decode(decryptedBuffer);
});
};
export const getSharedPrivateKey = (privKey, pubKey) => {

@@ -269,8 +263,8 @@ const sharedSecret = getSharedSecret(privKey, pubKey);

};
export const decodePublicKey = (publicKeyBase58Check) => __awaiter(void 0, void 0, void 0, function* () {
const decoded = yield bs58PublicKeyToBytes(publicKeyBase58Check);
export const decodePublicKey = async (publicKeyBase58Check) => {
const decoded = await bs58PublicKeyToBytes(publicKeyBase58Check);
const withPrefixRemoved = decoded.slice(3);
const senderPubKeyHex = ecUtils.bytesToHex(withPrefixRemoved);
return Point.fromHex(senderPubKeyHex).toRawBytes(false);
});
};
export const getSharedSecret = (privKey, pubKey) => {

@@ -336,2 +330,2 @@ // passing true to compress the public key, and then slicing off the first byte

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lkZW50aXR5L2NyeXB0by11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUMsT0FBTyxFQUNMLEtBQUssRUFDTCxJQUFJLElBQUksTUFBTSxFQUNkLEtBQUssSUFBSSxPQUFPLEVBQ2hCLFlBQVksRUFDWixlQUFlLElBQUksb0JBQW9CLEdBQ3hDLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUcxRCxvREFBb0Q7QUFDcEQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLE1BQW9CLEVBQUUsTUFBZTtJQUNyRSxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7UUFDeEIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztLQUMvRDtJQUNELE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNmLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3RDLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFO1lBQ3RDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FB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LEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUNyRSxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU3RSxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2hhMjU2IH0gZnJvbSAnQG5vYmxlL2hhc2hlcy9zaGEyNTYnO1xuaW1wb3J0IHtcbiAgUG9pbnQsXG4gIHNpZ24gYXMgZWNTaWduLFxuICB1dGlscyBhcyBlY1V0aWxzLFxuICBnZXRQdWJsaWNLZXksXG4gIGdldFNoYXJlZFNlY3JldCBhcyBub2JsZUdldFNoYXJlZFNlY3JldCxcbn0gZnJvbSAnQG5vYmxlL3NlY3AyNTZrMSc7XG5pbXBvcnQgKiBhcyBiczU4IGZyb20gJ2JzNTgnO1xuaW1wb3J0IHsgUFVCTElDX0tFWV9QUkVGSVhFUyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVjAgfSBmcm9tICcuL3RyYW5zYWN0aW9uLXRyYW5zY29kZXJzJztcbmltcG9ydCB7IEtleVBhaXIsIE5ldHdvcmssIGp3dEFsZ29yaXRobSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vLyBCcm93c2VyIGZyaWVuZGx5IHZlcnNpb24gb2Ygbm9kZSdzIEJ1ZmZlci5jb25jYXQuXG5leHBvcnQgZnVuY3Rpb24gY29uY2F0VWludDhBcnJheXMoYXJyYXlzOiBVaW50OEFycmF5W10sIGxlbmd0aD86IG51bWJlcikge1xuICBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBsZW5ndGggPSBhcnJheXMucmVkdWNlKChhY2MsIGFycmF5KSA9PiBhY2MgKyBhcnJheS5sZW5ndGgsIDApO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBVaW50OEFycmF5KGxlbmd0aCk7XG4gIGxldCBvZmZzZXQgPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5cy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChvZmZzZXQgKyBhcnJheXNbaV0ubGVuZ3RoID4gbGVuZ3RoKSB7XG4gICAgICByZXN1bHQuc2V0KGFycmF5c1tpXS5zbGljZSgwLCBsZW5ndGggLSBvZmZzZXQpLCBvZmZzZXQpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJlc3VsdC5zZXQoYXJyYXlzW2ldLCBvZmZzZXQpO1xuICAgIG9mZnNldCArPSBhcnJheXNbaV0ubGVuZ3RoO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBjb25zdCB1dmFyaW50NjRUb0J1ZiA9ICh1aW50OiBudW1iZXIpOiBVaW50OEFycmF5ID0+IHtcbiAgY29uc3QgcmVzdWx0OiBudW1iZXJbXSA9IFtdO1xuICB3aGlsZSAodWludCA+PSAweDgwKSB7XG4gICAgcmVzdWx0LnB1c2goTnVtYmVyKChCaWdJbnQodWludCkgJiBCaWdJbnQoMHhmZikpIHwgQmlnSW50KDB4ODApKSk7XG4gICAgdWludCA9IE51bWJlcihCaWdJbnQodWludCkgPj4gQmlnSW50KDcpKTtcbiAgfVxuICByZXN1bHQucHVzaCh1aW50IHwgMCk7XG5cbiAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHJlc3VsdCk7XG59O1xuXG5leHBvcnQgY29uc3QgYnVmVG9VdmFyaW50NjQgPSAoYnVmZmVyOiBVaW50OEFycmF5KTogW251bWJlciwgVWludDhBcnJheV0gPT4ge1xuICBsZXQgeCA9IEJpZ0ludCgwKTtcbiAgbGV0IHMgPSBCaWdJbnQoMCk7XG5cbiAgLy8gVE9ETzogZml4IGxpbnRpbmcgZXJyb3JcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnN0YW50LWNvbmRpdGlvblxuICBmb3IgKGxldCBpID0gMDsgdHJ1ZTsgaSsrKSB7XG4gICAgY29uc3QgYnl0ZSA9IGJ1ZmZlcltpXTtcblxuICAgIGlmIChpID4gOSB8fCAoaSA9PSA5ICYmIGJ5dGUgPiAxKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1aW50NjQgb3ZlcmZsb3cnKTtcbiAgICB9XG5cbiAgICBpZiAoYnl0ZSA8IDB4ODApIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIE51bWJlcihCaWdJbnQoeCkgfCAoQmlnSW50KGJ5dGUpIDw8IEJpZ0ludChzKSkpLFxuICAgICAgICBidWZmZXIuc2xpY2UoaSArIDEpLFxuICAgICAgXTtcbiAgICB9XG5cbiAgICB4IHw9IEJpZ0ludChieXRlICYgMHg3ZikgPDwgQmlnSW50KHMpO1xuICAgIHMgKz0gQmlnSW50KDcpO1xuICB9XG59O1xuXG5pbnRlcmZhY2UgQmFzZTU4Q2hlY2tPcHRpb25zIHtcbiAgbmV0d29yazogTmV0d29yaztcbn1cblxuLy8gV2UgYXJlIG5vdCB1c2luZyB0aGUgbmF0aXZlIHdlYiBjcnlwdG8gQVBJIHRvIGFjdHVhbGx5IGdlbmVyYXRlIGtleXNcbi8vIGJlY2F1c2UgaXQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgc2VjcDI1NmsxIGN1cnZlLiBJbnN0ZWFkLCB3ZSBhcmUgdXNpbmdcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wYXVsbWlsbHIvbm9ibGUtc2VjcDI1NmsxIHdoaWNoIGlzIGEgYnJvd3NlciBmcmllbmRseVxuLy8gYWx0ZXJuYXRpdmUgdG8gdGhlIG5vZGUgZWxsaXB0aWMgcGFja2FnZSB3aGljaCBpcyBmYXIgc21hbGxlciBhbmQgb25seVxuLy8gZm9jdXNlcyBvbiBzdXBwb3J0aW5nIHRoZSBlYyBhbGdvcml0aG0gd2UgYXJlIGFjdHVhbGx5IGludGVyZXN0ZWQgaW4gaGVyZS5cbi8vIElmIHRoZSB3ZWIgY3J5cHRvIEFQSSBldmVyIGFkZHMgc3VwcG9ydCBmb3Igc2VjcDI1NmsxLCB3ZSBzaG91bGQgY2hhbmdlXG4vLyB0aGlzIHRvIHVzZSBpdC5cbi8vXG4vLyBTZWUgdGhlIGZvbGxvd2luZyBmb3IgbW9yZSBpbmZvOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWJjcnlwdG8vaXNzdWVzLzgyXG4vL1xuLy8gSWYgeW91IGRvbid0IHByb3ZpZGUgYSBzZWVkLCBhIHJhbmRvbSBvbmUgd2lsbCBiZSBnZW5lcmF0ZWQgZm9yIHlvdSBhbmQgYVxuLy8gcmFuZG9tIGtleSBwYWlyIHdpbGwgYmUgcmV0dXJuZWQuIElmIHlvdSBkbyBwcm92aWRlIGEgc2VlZCwgaXQgc2hvdWxkIGJlIGFcbi8vIHJhbmRvbWx5IGdlbmVyYXRlZCAzMiBieXRlIHZhbHVlIChVaW50OEFycmF5IG9mIGxlbmd0aCAzMiBvciBoZXggc3RyaW5nIG9mXG4vLyBsZW5ndGggNjQpXG5leHBvcnQgY29uc3Qga2V5Z2VuID0gKHNlZWQ/OiBzdHJpbmcgfCBVaW50OEFycmF5KTogS2V5UGFpciA9PiB7XG4gIGNvbnN0IHByaXZhdGVLZXkgPSBzZWVkID8gbm9ybWFsaXplU2VlZChzZWVkKSA6IGVjVXRpbHMucmFuZG9tQnl0ZXMoMzIpO1xuICBjb25zdCBzZWVkSGV4ID0gZWNVdGlscy5ieXRlc1RvSGV4KHByaXZhdGVLZXkpO1xuXG4gIHJldHVybiB7XG4gICAgc2VlZEhleCxcbiAgICBwcml2YXRlOiBwcml2YXRlS2V5LFxuICAgIHB1YmxpYzogZ2V0UHVibGljS2V5KHByaXZhdGVLZXksIHRydWUgLyogaXNDb21wcmVzc2VkICovKSxcbiAgfTtcbn07XG5cbmNvbnN0IG5vcm1hbGl6ZVNlZWQgPSAoc2VlZDogc3RyaW5nIHwgVWludDhBcnJheSk6IFVpbnQ4QXJyYXkgPT4ge1xuICBpZiAodHlwZW9mIHNlZWQgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGVjVXRpbHMuaGV4VG9CeXRlcyhzZWVkKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc2VlZDtcbiAgfVxufTtcblxuLyoqXG4gKlxuICogQHBhcmFtIGRhdGEgY291bGQgYmUgYSBoZXggc3RyaW5nIG9yIGEgYnl0ZSBhcnJheSAoVWludDhBcnJheSlcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBjb25zdCBzaGEyNTZYMiA9IChkYXRhOiBVaW50OEFycmF5IHwgc3RyaW5nKTogVWludDhBcnJheSA9PiB7XG4gIGNvbnN0IGQgPSB0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycgPyBlY1V0aWxzLmhleFRvQnl0ZXMoZGF0YSkgOiBkYXRhO1xuICByZXR1cm4gc2hhMjU2KHNoYTI1NihkKSk7XG59O1xuXG5leHBvcnQgY29uc3QgcHVibGljS2V5VG9CYXNlNThDaGVjayA9IChcbiAgcHVibGljS2V5Qnl0ZXM6IFVpbnQ4QXJyYXksXG4gIG9wdGlvbnM/OiBCYXNlNThDaGVja09wdGlvbnNcbik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHByZWZpeCA9IFBVQkxJQ19LRVlfUFJFRklYRVNbb3B0aW9ucz8ubmV0d29yayA/PyAnbWFpbm5ldCddLmRlc287XG4gIC8vIFRoaXMgaXMgdGhlIHNhbWUgYXMgdGhlIGltcGxlbWVudGF0aW9uIGluIHRoZSBiczU4Y2hlY2sgcGFja2FnZSwgYnV0IHdlXG4gIC8vIHNsaWdodGx5IG1vZGlmeSBpdCB0byB1c2UgdGhlIGJyb3dzZXIgZnJpZW5kbHkgdmVyc2lvbiBvZiBCdWZmZXIuY29uY2F0LlxuICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luanMvYnM1OGNoZWNrL2Jsb2IvMTJiM2U3MDBmMzU1YzVjNDlkMGJlM2Y4ZmMyOWJlNmM2NmU3NTNlOS9iYXNlLmpzI0wxXG4gIGNvbnN0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoWy4uLnByZWZpeCwgLi4ucHVibGljS2V5Qnl0ZXNdKTtcbiAgY29uc3QgY2hlY2tzdW0gPSBzaGEyNTZYMihieXRlcyk7XG4gIHJldHVybiBiczU4LmVuY29kZShjb25jYXRVaW50OEFycmF5cyhbYnl0ZXMsIGNoZWNrc3VtXSwgYnl0ZXMubGVuZ3RoICsgNCkpO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBTaWduT3B0aW9ucyB7XG4gIGlzRGVyaXZlZEtleTogYm9vbGVhbjtcbn1cblxuY29uc3Qgc2lnbiA9IChtc2dIYXNoSGV4OiBzdHJpbmcsIHByaXZhdGVLZXk6IFVpbnQ4QXJyYXkpID0+IHtcbiAgcmV0dXJuIGVjU2lnbihtc2dIYXNoSGV4LCBwcml2YXRlS2V5LCB7XG4gICAgLy8gRm9yIGRldGFpbHMgYWJvdXQgdGhlIHNpZ25pbmcgb3B0aW9ucyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9wYXVsbWlsbHIvbm9ibGUtc2VjcDI1NmsxI3NpZ25tc2doYXNoLXByaXZhdGVrZXlcbiAgICBjYW5vbmljYWw6IHRydWUsXG4gICAgZGVyOiB0cnVlLFxuICAgIGV4dHJhRW50cm9weTogdHJ1ZSxcbiAgICByZWNvdmVyZWQ6IHRydWUsXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHNpZ25UeCA9IGFzeW5jIChcbiAgdHhIZXg6IHN0cmluZyxcbiAgc2VlZEhleDogc3RyaW5nLFxuICBvcHRpb25zPzogU2lnbk9wdGlvbnNcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IHRyYW5zYWN0aW9uQnl0ZXMgPSBlY1V0aWxzLmhleFRvQnl0ZXModHhIZXgpO1xuICBjb25zdCBbXywgdjFGaWVsZHNCdWZmZXJdID0gVHJhbnNhY3Rpb25WMC5mcm9tQnl0ZXModHJhbnNhY3Rpb25CeXRlcyk7XG4gIGNvbnN0IHNpZ25hdHVyZUluZGV4ID0gdHJhbnNhY3Rpb25CeXRlcy5sZW5ndGggLSB2MUZpZWxkc0J1ZmZlci5sZW5ndGggLSAxO1xuICBjb25zdCB2MEZpZWxkc1dpdGhvdXRTaWduYXR1cmUgPSB0cmFuc2FjdGlvbkJ5dGVzLnNsaWNlKDAsIHNpZ25hdHVyZUluZGV4KTtcbiAgY29uc3QgaGFzaGVkVHhCeXRlcyA9IHNoYTI1NlgyKHRyYW5zYWN0aW9uQnl0ZXMpO1xuICBjb25zdCB0cmFuc2FjdGlvbkhhc2hIZXggPSBlY1V0aWxzLmJ5dGVzVG9IZXgoaGFzaGVkVHhCeXRlcyk7XG4gIGNvbnN0IHByaXZhdGVLZXkgPSBlY1V0aWxzLmhleFRvQnl0ZXMoc2VlZEhleCk7XG4gIGNvbnN0IFtzaWduYXR1cmVCeXRlcywgcmVjb3ZlcnlQYXJhbV0gPSBhd2FpdCBzaWduKFxuICAgIHRyYW5zYWN0aW9uSGFzaEhleCxcbiAgICBwcml2YXRlS2V5XG4gICk7XG5cbiAgY29uc3Qgc2lnbmF0dXJlTGVuZ3RoID0gdXZhcmludDY0VG9CdWYoc2lnbmF0dXJlQnl0ZXMubGVuZ3RoKTtcblxuICBpZiAob3B0aW9ucz8uaXNEZXJpdmVkS2V5KSB7XG4gICAgc2lnbmF0dXJlQnl0ZXNbMF0gKz0gMSArIHJlY292ZXJ5UGFyYW07XG4gIH1cblxuICBjb25zdCBzaWduZWRUcmFuc2FjdGlvbkJ5dGVzID0gZWNVdGlscy5jb25jYXRCeXRlcyhcbiAgICB2MEZpZWxkc1dpdGhvdXRTaWduYXR1cmUsXG4gICAgc2lnbmF0dXJlTGVuZ3RoLFxuICAgIHNpZ25hdHVyZUJ5dGVzLFxuICAgIHYxRmllbGRzQnVmZmVyXG4gICk7XG5cbiAgcmV0dXJuIGVjVXRpbHMuYnl0ZXNUb0hleChzaWduZWRUcmFuc2FjdGlvbkJ5dGVzKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTaWduZWRKV1QgPSBhc3luYyAoXG4gIHNlZWRIZXg6IHN0cmluZyxcbiAgYWxnOiBqd3RBbGdvcml0aG0sXG4gIHtcbiAgICBkZXJpdmVkUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgLy8gVE9ETzogYWN0dWFsbHkgc3VwcG9ydCB0aGlzLi4uIG9yIHJlbW92ZSBpdC5cbiAgICBleHBpcmF0aW9uLFxuICB9OiB7XG4gICAgZGVyaXZlZFB1YmxpY0tleUJhc2U1OENoZWNrPzogc3RyaW5nO1xuICAgIGV4cGlyYXRpb24/OiBudW1iZXI7XG4gIH1cbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IGhlYWRlciA9IEpTT04uc3RyaW5naWZ5KHsgYWxnLCB0eXA6ICdKV1QnIH0pO1xuICBjb25zdCBpc3N1ZWRBdCA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApO1xuICBjb25zdCB0aGlydHlNaW5Gcm9tTm93ID0gaXNzdWVkQXQgKyAzMCAqIDYwO1xuICBjb25zdCBwYXlsb2FkID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgIC4uLihkZXJpdmVkUHVibGljS2V5QmFzZTU4Q2hlY2sgPyB7IGRlcml2ZWRQdWJsaWNLZXlCYXNlNThDaGVjayB9IDoge30pLFxuICAgIGlhdDogaXNzdWVkQXQsXG4gICAgZXhwOiB0aGlydHlNaW5Gcm9tTm93LFxuICB9KTtcblxuICBjb25zdCBqd3QgPSBgJHt1cmxTYWZlQmFzZTY0KGhlYWRlcil9LiR7dXJsU2FmZUJhc2U2NChwYXlsb2FkKX1gO1xuICBjb25zdCBbc2lnbmF0dXJlXSA9IGF3YWl0IHNpZ24oXG4gICAgZWNVdGlscy5ieXRlc1RvSGV4KHNoYTI1NihuZXcgVWludDhBcnJheShuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoand0KSkpKSxcbiAgICBlY1V0aWxzLmhleFRvQnl0ZXMoc2VlZEhleClcbiAgKTtcbiAgY29uc3QgZW5jb2RlZFNpZ25hdHVyZSA9IGRlclRvSm9zZUVuY29kaW5nKHNpZ25hdHVyZSk7XG5cbiAgcmV0dXJuIGAke2p3dH0uJHtlbmNvZGVkU2lnbmF0dXJlfWA7XG59O1xuXG5mdW5jdGlvbiB1cmxTYWZlQmFzZTY0KHN0cjogc3RyaW5nKSB7XG4gIHJldHVybiB3aW5kb3dcbiAgICAuYnRvYShzdHIpXG4gICAgLnJlcGxhY2UoL1xcKy9nLCAnLScpXG4gICAgLnJlcGxhY2UoL1xcLy9nLCAnXycpXG4gICAgLnJlcGxhY2UoLz0vZywgJycpO1xufVxuXG5leHBvcnQgY29uc3QgZW5jcnlwdENoYXRNZXNzYWdlID0gKFxuICBzZW5kZXJTZWVkSGV4OiBzdHJpbmcsXG4gIHJlY2lwaWVudFB1YmxpY0tleUJhc2U1OENoZWNrOiBzdHJpbmcsXG4gIG1lc3NhZ2U6IHN0cmluZ1xuKSA9PiB7XG4gIGNvbnN0IHByaXZhdGVLZXkgPSBlY1V0aWxzLmhleFRvQnl0ZXMoc2VuZGVyU2VlZEhleCk7XG4gIGNvbnN0IHJlY2lwaWVudFB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0J5dGVzKFxuICAgIHJlY2lwaWVudFB1YmxpY0tleUJhc2U1OENoZWNrXG4gICk7XG4gIGNvbnN0IHNoYXJlZFByaXZhdGVLZXkgPSBnZXRTaGFyZWRQcml2YXRlS2V5KHByaXZhdGVLZXksIHJlY2lwaWVudFB1YmxpY0tleSk7XG4gIGNvbnN0IHNoYXJlZFB1YmxpY0tleSA9IGdldFB1YmxpY0tleShzaGFyZWRQcml2YXRlS2V5KTtcblxuICByZXR1cm4gZW5jcnlwdChzaGFyZWRQdWJsaWNLZXksIG1lc3NhZ2UpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gcHVibGljRW5jcnlwdGlvbktleSBjb3VsZCBiZSBpbiByYXcgYnl0ZXMgb3IgYmFzZTU4Y2hlY2sgZm9ybWF0XG4gKiBAcGFyYW0gcGxhaW50ZXh0XG4gKiBAcmV0dXJucyBjaXBoZXIgdGV4dCBhcyBhIGhleCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IGVuY3J5cHQgPSBhc3luYyAoXG4gIHB1YmxpY0tleTogVWludDhBcnJheSB8IHN0cmluZyxcbiAgcGxhaW50ZXh0OiBzdHJpbmdcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IGVwaGVtUHJpdmF0ZUtleSA9IGVjVXRpbHMucmFuZG9tQnl0ZXMoMzIpO1xuICBjb25zdCBlcGhlbVB1YmxpY0tleSA9IGdldFB1YmxpY0tleShlcGhlbVByaXZhdGVLZXkpO1xuICBjb25zdCBwdWJsaWNLZXlCeXRlcyA9XG4gICAgdHlwZW9mIHB1YmxpY0tleSA9PT0gJ3N0cmluZycgPyBiczU4UHVibGljS2V5VG9CeXRlcyhwdWJsaWNLZXkpIDogcHVibGljS2V5O1xuICBjb25zdCBwcml2S2V5ID0gZ2V0U2hhcmVkUHJpdmF0ZUtleShlcGhlbVByaXZhdGVLZXksIHB1YmxpY0tleUJ5dGVzKTtcbiAgY29uc3QgZW5jcnlwdGlvbktleSA9IHByaXZLZXkuc2xpY2UoMCwgMTYpO1xuICBjb25zdCBpdiA9IGVjVXRpbHMucmFuZG9tQnl0ZXMoMTYpO1xuICBjb25zdCBtYWNLZXkgPSBzaGEyNTYocHJpdktleS5zbGljZSgxNikpO1xuICBjb25zdCBieXRlcyA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShwbGFpbnRleHQpO1xuICBjb25zdCBjcnlwdG9LZXkgPSBhd2FpdCBnbG9iYWxUaGlzLmNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KFxuICAgICdyYXcnLFxuICAgIGVuY3J5cHRpb25LZXksXG4gICAgJ0FFUy1DVFInLFxuICAgIHRydWUsXG4gICAgWydlbmNyeXB0J11cbiAgKTtcbiAgY29uc3QgY2lwaGVyQnl0ZXMgPSBhd2FpdCBnbG9iYWxUaGlzLmNyeXB0by5zdWJ0bGUuZW5jcnlwdChcbiAgICB7XG4gICAgICBuYW1lOiAnQUVTLUNUUicsXG4gICAgICBjb3VudGVyOiBpdixcbiAgICAgIGxlbmd0aDogMTI4LFxuICAgIH0sXG4gICAgY3J5cHRvS2V5LFxuICAgIGJ5dGVzXG4gICk7XG4gIGNvbnN0IGhtYWMgPSBhd2FpdCBlY1V0aWxzLmhtYWNTaGEyNTYoXG4gICAgbWFjS2V5LFxuICAgIG5ldyBVaW50OEFycmF5KFsuLi5pdiwgLi4ubmV3IFVpbnQ4QXJyYXkoY2lwaGVyQnl0ZXMpXSlcbiAgKTtcblxuICByZXR1cm4gZWNVdGlscy5ieXRlc1RvSGV4KFxuICAgIG5ldyBVaW50OEFycmF5KFtcbiAgICAgIC4uLmVwaGVtUHVibGljS2V5LFxuICAgICAgLi4uaXYsXG4gICAgICAuLi5uZXcgVWludDhBcnJheShjaXBoZXJCeXRlcyksXG4gICAgICAuLi5obWFjLFxuICAgIF0pXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzID0gKHN0cjogc3RyaW5nKSA9PiB7XG4gIGlmICghc3RyKSB7XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KDMzKTtcbiAgfVxuICBjb25zdCBwdWJLZXlVbmNvbXByZXNzZWQgPSBiczU4UHVibGljS2V5VG9CeXRlcyhzdHIpO1xuICByZXR1cm4gUG9pbnQuZnJvbUhleChlY1V0aWxzLmJ5dGVzVG9IZXgocHViS2V5VW5jb21wcmVzc2VkKSkudG9SYXdCeXRlcyh0cnVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBiczU4UHVibGljS2V5VG9CeXRlcyA9IChzdHI6IHN0cmluZykgPT4ge1xuICBjb25zdCBieXRlcyA9IGJzNTguZGVjb2RlKHN0cik7XG4gIGNvbnN0IHBheWxvYWQgPSBieXRlcy5zbGljZSgwLCAtNCk7XG4gIGNvbnN0IGNoZWNrc3VtQSA9IGJ5dGVzLnNsaWNlKC00KTtcbiAgY29uc3QgY2hlY2tzdW1CID0gc2hhMjU2WDIocGF5bG9hZCk7XG5cbiAgaWYgKFxuICAgIChjaGVja3N1bUFbMF0gXiBjaGVja3N1bUJbMF0pIHxcbiAgICAoY2hlY2tzdW1BWzFdIF4gY2hlY2tzdW1CWzFdKSB8XG4gICAgKGNoZWNrc3VtQVsyXSBeIGNoZWNrc3VtQlsyXSkgfFxuICAgIChjaGVja3N1bUFbM10gXiBjaGVja3N1bUJbM10pXG4gICkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjaGVja3N1bScpO1xuICB9XG5cbiAgcmV0dXJuIFBvaW50LmZyb21IZXgoZWNVdGlscy5ieXRlc1RvSGV4KHBheWxvYWQuc2xpY2UoMykpKS50b1Jhd0J5dGVzKGZhbHNlKTtcbn07XG5cbmNvbnN0IGlzVmFsaWRIbWFjID0gKGNhbmRpZGF0ZTogVWludDhBcnJheSwga25vd25Hb29kOiBVaW50OEFycmF5KSA9PiB7XG4gIGlmIChjYW5kaWRhdGUubGVuZ3RoICE9PSBrbm93bkdvb2QubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBrbm93bkdvb2QubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoY2FuZGlkYXRlW2ldICE9PSBrbm93bkdvb2RbaV0pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWNyeXB0Q2hhdE1lc3NhZ2UgPSBhc3luYyAoXG4gIHJlY2lwaWVudFNlZWRIZXg6IHN0cmluZyxcbiAgcHVibGljRGVjcnlwdGlvbktleTogc3RyaW5nLFxuICBjaXBoZXJUZXh0SGV4OiBzdHJpbmdcbikgPT4ge1xuICBjb25zdCBwcml2YXRlS2V5ID0gZWNVdGlscy5oZXhUb0J5dGVzKHJlY2lwaWVudFNlZWRIZXgpO1xuICBjb25zdCBwdWJsaWNLZXkgPSBhd2FpdCBiczU4UHVibGljS2V5VG9CeXRlcyhwdWJsaWNEZWNyeXB0aW9uS2V5KTtcbiAgY29uc3Qgc2hhcmVkUHJpdmF0ZUtleSA9IGF3YWl0IGdldFNoYXJlZFByaXZhdGVLZXkocHJpdmF0ZUtleSwgcHVibGljS2V5KTtcbiAgcmV0dXJuIGRlY3J5cHQoc2hhcmVkUHJpdmF0ZUtleSwgY2lwaGVyVGV4dEhleCk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVjcnlwdCA9IGFzeW5jIChcbiAgcHJpdmF0ZURlY3J5cHRpb25LZXk6IFVpbnQ4QXJyYXkgfCBzdHJpbmcsXG4gIGNpcGhlclRleHRIZXg6IHN0cmluZ1xuKSA9PiB7XG4gIGNvbnN0IGNpcGhlckJ5dGVzID0gZWNVdGlscy5oZXhUb0J5dGVzKGNpcGhlclRleHRIZXgpO1xuICBjb25zdCBtZXRhTGVuZ3RoID0gMTEzO1xuXG4gIGlmIChjaXBoZXJCeXRlcy5sZW5ndGggPCBtZXRhTGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGNpcGhlciB0ZXh0LiBkYXRhIHRvbyBzbWFsbC4nKTtcbiAgfVxuXG4gIGlmICghKGNpcGhlckJ5dGVzWzBdID49IDIgJiYgY2lwaGVyQnl0ZXNbMF0gPD0gNCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgY2lwaGVyIHRleHQuJyk7XG4gIH1cblxuICBjb25zdCBwcml2YXRlS2V5ID0gbm9ybWFsaXplU2VlZChwcml2YXRlRGVjcnlwdGlvbktleSk7XG4gIGNvbnN0IGVwaGVtUHVibGljS2V5ID0gY2lwaGVyQnl0ZXMuc2xpY2UoMCwgNjUpO1xuICBjb25zdCBjaXBoZXJUZXh0TGVuZ3RoID0gY2lwaGVyQnl0ZXMubGVuZ3RoIC0gbWV0YUxlbmd0aDtcbiAgY29uc3QgaXYgPSBjaXBoZXJCeXRlcy5zbGljZSg2NSwgNjUgKyAxNik7XG4gIGNvbnN0IGNpcGhlckFuZEl2ID0gY2lwaGVyQnl0ZXMuc2xpY2UoNjUsIDY1ICsgMTYgKyBjaXBoZXJUZXh0TGVuZ3RoKTtcbiAgY29uc3QgY2lwaGVyVGV4dCA9IGNpcGhlckFuZEl2LnNsaWNlKDE2KTtcbiAgY29uc3QgbXNnTWFjID0gY2lwaGVyQnl0ZXMuc2xpY2UoNjUgKyAxNiArIGNpcGhlclRleHRMZW5ndGgpO1xuICBjb25zdCBzaGFyZWRTZWNyZXRLZXkgPSBhd2FpdCBnZXRTaGFyZWRQcml2YXRlS2V5KHByaXZhdGVLZXksIGVwaGVtUHVibGljS2V5KTtcbiAgY29uc3QgZW5jcnlwdGlvbktleSA9IHNoYXJlZFNlY3JldEtleS5zbGljZSgwLCAxNik7XG4gIGNvbnN0IG1hY0tleSA9IHNoYTI1NihzaGFyZWRTZWNyZXRLZXkuc2xpY2UoMTYpKTtcbiAgY29uc3QgaG1hY0tub3duR29vZCA9IGF3YWl0IGVjVXRpbHMuaG1hY1NoYTI1NihtYWNLZXksIGNpcGhlckFuZEl2KTtcblxuICBpZiAoIWlzVmFsaWRIbWFjKG1zZ01hYywgaG1hY0tub3duR29vZCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2luY29ycmVjdCBNQUMnKTtcbiAgfVxuXG4gIGNvbnN0IGNyeXB0b0tleSA9IGF3YWl0IGdsb2JhbFRoaXMuY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoXG4gICAgJ3JhdycsXG4gICAgZW5jcnlwdGlvbktleSxcbiAgICAnQUVTLUNUUicsXG4gICAgdHJ1ZSxcbiAgICBbJ2RlY3J5cHQnXVxuICApO1xuXG4gIGNvbnN0IGRlY3J5cHRlZEJ1ZmZlciA9IGF3YWl0IGdsb2JhbFRoaXMuY3J5cHRvLnN1YnRsZS5kZWNyeXB0KFxuICAgIHsgbmFtZTogJ0FFUy1DVFInLCBjb3VudGVyOiBpdiwgbGVuZ3RoOiAxMjggfSxcbiAgICBjcnlwdG9LZXksXG4gICAgY2lwaGVyVGV4dFxuICApO1xuXG4gIHJldHVybiBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoZGVjcnlwdGVkQnVmZmVyKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTaGFyZWRQcml2YXRlS2V5ID0gKFxuICBwcml2S2V5OiBVaW50OEFycmF5LFxuICBwdWJLZXk6IFVpbnQ4QXJyYXlcbikgPT4ge1xuICBjb25zdCBzaGFyZWRTZWNyZXQgPSBnZXRTaGFyZWRTZWNyZXQocHJpdktleSwgcHViS2V5KTtcblxuICByZXR1cm4ga2RmKHNoYXJlZFNlY3JldCwgMzIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlY29kZVB1YmxpY0tleSA9IGFzeW5jIChwdWJsaWNLZXlCYXNlNThDaGVjazogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGRlY29kZWQgPSBhd2FpdCBiczU4UHVibGljS2V5VG9CeXRlcyhwdWJsaWNLZXlCYXNlNThDaGVjayk7XG4gIGNvbnN0IHdpdGhQcmVmaXhSZW1vdmVkID0gZGVjb2RlZC5zbGljZSgzKTtcbiAgY29uc3Qgc2VuZGVyUHViS2V5SGV4ID0gZWNVdGlscy5ieXRlc1RvSGV4KHdpdGhQcmVmaXhSZW1vdmVkKTtcblxuICByZXR1cm4gUG9pbnQuZnJvbUhleChzZW5kZXJQdWJLZXlIZXgpLnRvUmF3Qnl0ZXMoZmFsc2UpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNoYXJlZFNlY3JldCA9IChwcml2S2V5OiBVaW50OEFycmF5LCBwdWJLZXk6IFVpbnQ4QXJyYXkpID0+IHtcbiAgLy8gcGFzc2luZyB0cnVlIHRvIGNvbXByZXNzIHRoZSBwdWJsaWMga2V5LCBhbmQgdGhlbiBzbGljaW5nIG9mZiB0aGUgZmlyc3QgYnl0ZVxuICAvLyBtYXRjaGVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBkZXJpdmUgaW4gdGhlIGVsbGlwdGljIHBhY2thZ2UuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wYXVsbWlsbHIvbm9ibGUtc2VjcDI1NmsxL2lzc3Vlcy8yOCNpc3N1ZWNvbW1lbnQtOTQ2NTM4MDM3XG4gIHJldHVybiBub2JsZUdldFNoYXJlZFNlY3JldChwcml2S2V5LCBwdWJLZXksIHRydWUpLnNsaWNlKDEpO1xufTtcblxuLy8gdGFrZW4gZnJvbSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaW4gdGhlIGRlc28gY2hhdCBhcHA6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vZGVzby1wcm90b2NvbC9hY2Nlc3MtZ3JvdXAtbWVzc2FnaW5nLWFwcC9ibG9iL2NkNWMyMzdmNWU1NzI5MTk2YWFjMGRhMTYxZDA4NTFiZGU3ODA5MmMvc3JjL3NlcnZpY2VzL2NyeXB0by11dGlscy5zZXJ2aWNlLnRzeCNMOTFcbmV4cG9ydCBjb25zdCBrZGYgPSAoc2VjcmV0OiBVaW50OEFycmF5LCBvdXRwdXRMZW5ndGg6IG51bWJlcikgPT4ge1xuICBsZXQgY3RyID0gMTtcbiAgbGV0IHdyaXR0ZW4gPSAwO1xuICBsZXQgcmVzdWx0ID0gbmV3IFVpbnQ4QXJyYXkoKTtcblxuICB3aGlsZSAod3JpdHRlbiA8IG91dHB1dExlbmd0aCkge1xuICAgIGNvbnN0IGhhc2ggPSBzaGEyNTYoXG4gICAgICBuZXcgVWludDhBcnJheShbXG4gICAgICAgIC4uLm5ldyBVaW50OEFycmF5KFtjdHIgPj4gMjQsIGN0ciA+PiAxNiwgY3RyID4+IDgsIGN0cl0pLFxuICAgICAgICAuLi5zZWNyZXQsXG4gICAgICBdKVxuICAgICk7XG4gICAgcmVzdWx0ID0gbmV3IFVpbnQ4QXJyYXkoWy4uLnJlc3VsdCwgLi4uaGFzaF0pO1xuICAgIHdyaXR0ZW4gKz0gMzI7XG4gICAgY3RyICs9IDE7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gVGhpcyBpcyBhIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIGRlclRvSm9zZSBmdW5jdGlvbiBmcm9tXG4vLyBodHRwczovL2dpdGh1Yi5jb20vQnJpZ2h0c3BhY2Uvbm9kZS1lY2RzYS1zaWctZm9ybWF0dGVyL2Jsb2IvY2EyNWEyZmQ1YWU5ZGQ4NTAzNjA4MTYzMjkzNmU4MDJhNDdhMTI4OS9zcmMvZWNkc2Etc2lnLWZvcm1hdHRlci5qcyNMMzJcbi8vIFRoZSBvcmlnaW5hbCBwYWNrYWdlIGlzIG5vdCBicm93c2VyIGZyaWVuZGx5IGFuZCByZXF1aXJlcyBub2RlIHBvbHlmaWxscy4gV2Vcbi8vIGFsc28gZG9uJ3QgbmVlZCB0byBiZSBxdWl0ZSBhcyBkZWZlbnNpdmUgYXMgdGhlIG9yaWdpbmFsIHBhY2thZ2Ugc2luY2Ugd2Vcbi8vIGhhdmUgZnVsbCBjb250cm9sIG9mIHRoZSBpbnB1dC5cbmZ1bmN0aW9uIGRlclRvSm9zZUVuY29kaW5nKHNpZ25hdHVyZTogVWludDhBcnJheSkge1xuICBjb25zdCBwYXJhbUJ5dGVzID0gMzI7XG5cbiAgbGV0IG9mZnNldCA9IDM7XG4gIGNvbnN0IHJMZW5ndGggPSBzaWduYXR1cmVbb2Zmc2V0XTtcbiAgb2Zmc2V0ICs9IDE7XG4gIGNvbnN0IHJPZmZzZXQgPSBvZmZzZXQ7XG4gIG9mZnNldCArPSByTGVuZ3RoICsgMTtcbiAgY29uc3Qgc0xlbmd0aCA9IHNpZ25hdHVyZVtvZmZzZXRdO1xuICBvZmZzZXQgKz0gMTtcbiAgY29uc3Qgc09mZnNldCA9IG9mZnNldDtcbiAgb2Zmc2V0ICs9IHNMZW5ndGg7XG5cbiAgY29uc3QgclBhZGRpbmcgPSBwYXJhbUJ5dGVzIC0gckxlbmd0aDtcbiAgY29uc3Qgc1BhZGRpbmcgPSBwYXJhbUJ5dGVzIC0gc0xlbmd0aDtcblxuICBjb25zdCBvdXRQdXQgPSBuZXcgVWludDhBcnJheShyUGFkZGluZyArIHJMZW5ndGggKyBzUGFkZGluZyArIHNMZW5ndGgpO1xuXG4gIGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IDwgclBhZGRpbmc7ICsrb2Zmc2V0KSB7XG4gICAgb3V0UHV0W29mZnNldF0gPSAwO1xuICB9XG5cbiAgb3V0UHV0LnNldChcbiAgICBzaWduYXR1cmUuc2xpY2Uock9mZnNldCArIE1hdGgubWF4KC1yUGFkZGluZywgMCksIHJPZmZzZXQgKyByTGVuZ3RoKSxcbiAgICBvZmZzZXRcbiAgKTtcblxuICBvZmZzZXQgPSBwYXJhbUJ5dGVzO1xuXG4gIGZvciAoY29uc3QgbyA9IG9mZnNldDsgb2Zmc2V0IDwgbyArIHNQYWRkaW5nOyArK29mZnNldCkge1xuICAgIG91dFB1dFtvZmZzZXRdID0gMDtcbiAgfVxuXG4gIG91dFB1dC5zZXQoXG4gICAgc2lnbmF0dXJlLnNsaWNlKHNPZmZzZXQgKyBNYXRoLm1heCgtc1BhZGRpbmcsIDApLCBzT2Zmc2V0ICsgc0xlbmd0aCksXG4gICAgb2Zmc2V0XG4gICk7XG5cbiAgY29uc3Qgb3V0cHV0Q2hhcnMgPSBvdXRQdXQucmVkdWNlKFxuICAgIChkYXRhLCBieXRlKSA9PiBkYXRhICsgU3RyaW5nLmZyb21DaGFyQ29kZShieXRlKSxcbiAgICAnJ1xuICApO1xuXG4gIHJldHVybiB1cmxTYWZlQmFzZTY0KG91dHB1dENoYXJzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZUFjY2Vzc0dyb3VwS2V5UGFpcihcbiAgcHJpdmF0ZUtleUhleDogc3RyaW5nLFxuICBncm91cEtleU5hbWU6IHN0cmluZ1xuKTogS2V5UGFpciB7XG4gIGNvbnN0IHNlY3JldEhhc2ggPSBzaGEyNTZYMihwcml2YXRlS2V5SGV4KTtcbiAgY29uc3Qga2V5TmFtZUhhc2ggPSBzaGEyNTZYMihuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoZ3JvdXBLZXlOYW1lKSk7XG4gIGNvbnN0IHByaXZhdGVLZXkgPSBzaGEyNTZYMihuZXcgVWludDhBcnJheShbLi4uc2VjcmV0SGFzaCwgLi4ua2V5TmFtZUhhc2hdKSk7XG5cbiAgcmV0dXJuIGtleWdlbihwcml2YXRlS2V5KTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lkZW50aXR5L2NyeXB0by11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUMsT0FBTyxFQUNMLEtBQUssRUFDTCxJQUFJLElBQUksTUFBTSxFQUNkLEtBQUssSUFBSSxPQUFPLEVBQ2hCLFlBQVksRUFDWixlQUFlLElBQUksb0JBQW9CLEdBQ3hDLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRzdELG9EQUFvRDtBQUNwRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsTUFBb0IsRUFBRSxNQUFlO0lBQ3JFLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtRQUN4QixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQy9EO0lBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDdEMsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUU7WUFDdEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMs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QUNyRSxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU3RSxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2hhMjU2IH0gZnJvbSAnQG5vYmxlL2hhc2hlcy9zaGEyNTYnO1xuaW1wb3J0IHtcbiAgUG9pbnQsXG4gIHNpZ24gYXMgZWNTaWduLFxuICB1dGlscyBhcyBlY1V0aWxzLFxuICBnZXRQdWJsaWNLZXksXG4gIGdldFNoYXJlZFNlY3JldCBhcyBub2JsZUdldFNoYXJlZFNlY3JldCxcbn0gZnJvbSAnQG5vYmxlL3NlY3AyNTZrMSc7XG5pbXBvcnQgKiBhcyBiczU4IGZyb20gJ2JzNTgnO1xuaW1wb3J0IHsgUFVCTElDX0tFWV9QUkVGSVhFUyB9IGZyb20gJy4vY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVjAgfSBmcm9tICcuL3RyYW5zYWN0aW9uLXRyYW5zY29kZXJzLmpzJztcbmltcG9ydCB7IEtleVBhaXIsIE5ldHdvcmssIGp3dEFsZ29yaXRobSB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG4vLyBCcm93c2VyIGZyaWVuZGx5IHZlcnNpb24gb2Ygbm9kZSdzIEJ1ZmZlci5jb25jYXQuXG5leHBvcnQgZnVuY3Rpb24gY29uY2F0VWludDhBcnJheXMoYXJyYXlzOiBVaW50OEFycmF5W10sIGxlbmd0aD86IG51bWJlcikge1xuICBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBsZW5ndGggPSBhcnJheXMucmVkdWNlKChhY2MsIGFycmF5KSA9PiBhY2MgKyBhcnJheS5sZW5ndGgsIDApO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBVaW50OEFycmF5KGxlbmd0aCk7XG4gIGxldCBvZmZzZXQgPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5cy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChvZmZzZXQgKyBhcnJheXNbaV0ubGVuZ3RoID4gbGVuZ3RoKSB7XG4gICAgICByZXN1bHQuc2V0KGFycmF5c1tpXS5zbGljZSgwLCBsZW5ndGggLSBvZmZzZXQpLCBvZmZzZXQpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJlc3VsdC5zZXQoYXJyYXlzW2ldLCBvZmZzZXQpO1xuICAgIG9mZnNldCArPSBhcnJheXNbaV0ubGVuZ3RoO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBjb25zdCB1dmFyaW50NjRUb0J1ZiA9ICh1aW50OiBudW1iZXIpOiBVaW50OEFycmF5ID0+IHtcbiAgY29uc3QgcmVzdWx0OiBudW1iZXJbXSA9IFtdO1xuICB3aGlsZSAodWludCA+PSAweDgwKSB7XG4gICAgcmVzdWx0LnB1c2goTnVtYmVyKChCaWdJbnQodWludCkgJiBCaWdJbnQoMHhmZikpIHwgQmlnSW50KDB4ODApKSk7XG4gICAgdWludCA9IE51bWJlcihCaWdJbnQodWludCkgPj4gQmlnSW50KDcpKTtcbiAgfVxuICByZXN1bHQucHVzaCh1aW50IHwgMCk7XG5cbiAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHJlc3VsdCk7XG59O1xuXG5leHBvcnQgY29uc3QgYnVmVG9VdmFyaW50NjQgPSAoYnVmZmVyOiBVaW50OEFycmF5KTogW251bWJlciwgVWludDhBcnJheV0gPT4ge1xuICBsZXQgeCA9IEJpZ0ludCgwKTtcbiAgbGV0IHMgPSBCaWdJbnQoMCk7XG5cbiAgLy8gVE9ETzogZml4IGxpbnRpbmcgZXJyb3JcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnN0YW50LWNvbmRpdGlvblxuICBmb3IgKGxldCBpID0gMDsgdHJ1ZTsgaSsrKSB7XG4gICAgY29uc3QgYnl0ZSA9IGJ1ZmZlcltpXTtcblxuICAgIGlmIChpID4gOSB8fCAoaSA9PSA5ICYmIGJ5dGUgPiAxKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1aW50NjQgb3ZlcmZsb3cnKTtcbiAgICB9XG5cbiAgICBpZiAoYnl0ZSA8IDB4ODApIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIE51bWJlcihCaWdJbnQoeCkgfCAoQmlnSW50KGJ5dGUpIDw8IEJpZ0ludChzKSkpLFxuICAgICAgICBidWZmZXIuc2xpY2UoaSArIDEpLFxuICAgICAgXTtcbiAgICB9XG5cbiAgICB4IHw9IEJpZ0ludChieXRlICYgMHg3ZikgPDwgQmlnSW50KHMpO1xuICAgIHMgKz0gQmlnSW50KDcpO1xuICB9XG59O1xuXG5pbnRlcmZhY2UgQmFzZTU4Q2hlY2tPcHRpb25zIHtcbiAgbmV0d29yazogTmV0d29yaztcbn1cblxuLy8gV2UgYXJlIG5vdCB1c2luZyB0aGUgbmF0aXZlIHdlYiBjcnlwdG8gQVBJIHRvIGFjdHVhbGx5IGdlbmVyYXRlIGtleXNcbi8vIGJlY2F1c2UgaXQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgc2VjcDI1NmsxIGN1cnZlLiBJbnN0ZWFkLCB3ZSBhcmUgdXNpbmdcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wYXVsbWlsbHIvbm9ibGUtc2VjcDI1NmsxIHdoaWNoIGlzIGEgYnJvd3NlciBmcmllbmRseVxuLy8gYWx0ZXJuYXRpdmUgdG8gdGhlIG5vZGUgZWxsaXB0aWMgcGFja2FnZSB3aGljaCBpcyBmYXIgc21hbGxlciBhbmQgb25seVxuLy8gZm9jdXNlcyBvbiBzdXBwb3J0aW5nIHRoZSBlYyBhbGdvcml0aG0gd2UgYXJlIGFjdHVhbGx5IGludGVyZXN0ZWQgaW4gaGVyZS5cbi8vIElmIHRoZSB3ZWIgY3J5cHRvIEFQSSBldmVyIGFkZHMgc3VwcG9ydCBmb3Igc2VjcDI1NmsxLCB3ZSBzaG91bGQgY2hhbmdlXG4vLyB0aGlzIHRvIHVzZSBpdC5cbi8vXG4vLyBTZWUgdGhlIGZvbGxvd2luZyBmb3IgbW9yZSBpbmZvOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWJjcnlwdG8vaXNzdWVzLzgyXG4vL1xuLy8gSWYgeW91IGRvbid0IHByb3ZpZGUgYSBzZWVkLCBhIHJhbmRvbSBvbmUgd2lsbCBiZSBnZW5lcmF0ZWQgZm9yIHlvdSBhbmQgYVxuLy8gcmFuZG9tIGtleSBwYWlyIHdpbGwgYmUgcmV0dXJuZWQuIElmIHlvdSBkbyBwcm92aWRlIGEgc2VlZCwgaXQgc2hvdWxkIGJlIGFcbi8vIHJhbmRvbWx5IGdlbmVyYXRlZCAzMiBieXRlIHZhbHVlIChVaW50OEFycmF5IG9mIGxlbmd0aCAzMiBvciBoZXggc3RyaW5nIG9mXG4vLyBsZW5ndGggNjQpXG5leHBvcnQgY29uc3Qga2V5Z2VuID0gKHNlZWQ/OiBzdHJpbmcgfCBVaW50OEFycmF5KTogS2V5UGFpciA9PiB7XG4gIGNvbnN0IHByaXZhdGVLZXkgPSBzZWVkID8gbm9ybWFsaXplU2VlZChzZWVkKSA6IGVjVXRpbHMucmFuZG9tQnl0ZXMoMzIpO1xuICBjb25zdCBzZWVkSGV4ID0gZWNVdGlscy5ieXRlc1RvSGV4KHByaXZhdGVLZXkpO1xuXG4gIHJldHVybiB7XG4gICAgc2VlZEhleCxcbiAgICBwcml2YXRlOiBwcml2YXRlS2V5LFxuICAgIHB1YmxpYzogZ2V0UHVibGljS2V5KHByaXZhdGVLZXksIHRydWUgLyogaXNDb21wcmVzc2VkICovKSxcbiAgfTtcbn07XG5cbmNvbnN0IG5vcm1hbGl6ZVNlZWQgPSAoc2VlZDogc3RyaW5nIHwgVWludDhBcnJheSk6IFVpbnQ4QXJyYXkgPT4ge1xuICBpZiAodHlwZW9mIHNlZWQgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGVjVXRpbHMuaGV4VG9CeXRlcyhzZWVkKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc2VlZDtcbiAgfVxufTtcblxuLyoqXG4gKlxuICogQHBhcmFtIGRhdGEgY291bGQgYmUgYSBoZXggc3RyaW5nIG9yIGEgYnl0ZSBhcnJheSAoVWludDhBcnJheSlcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBjb25zdCBzaGEyNTZYMiA9IChkYXRhOiBVaW50OEFycmF5IHwgc3RyaW5nKTogVWludDhBcnJheSA9PiB7XG4gIGNvbnN0IGQgPSB0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycgPyBlY1V0aWxzLmhleFRvQnl0ZXMoZGF0YSkgOiBkYXRhO1xuICByZXR1cm4gc2hhMjU2KHNoYTI1NihkKSk7XG59O1xuXG5leHBvcnQgY29uc3QgcHVibGljS2V5VG9CYXNlNThDaGVjayA9IChcbiAgcHVibGljS2V5Qnl0ZXM6IFVpbnQ4QXJyYXksXG4gIG9wdGlvbnM/OiBCYXNlNThDaGVja09wdGlvbnNcbik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHByZWZpeCA9IFBVQkxJQ19LRVlfUFJFRklYRVNbb3B0aW9ucz8ubmV0d29yayA/PyAnbWFpbm5ldCddLmRlc287XG4gIC8vIFRoaXMgaXMgdGhlIHNhbWUgYXMgdGhlIGltcGxlbWVudGF0aW9uIGluIHRoZSBiczU4Y2hlY2sgcGFja2FnZSwgYnV0IHdlXG4gIC8vIHNsaWdodGx5IG1vZGlmeSBpdCB0byB1c2UgdGhlIGJyb3dzZXIgZnJpZW5kbHkgdmVyc2lvbiBvZiBCdWZmZXIuY29uY2F0LlxuICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luanMvYnM1OGNoZWNrL2Jsb2IvMTJiM2U3MDBmMzU1YzVjNDlkMGJlM2Y4ZmMyOWJlNmM2NmU3NTNlOS9iYXNlLmpzI0wxXG4gIGNvbnN0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoWy4uLnByZWZpeCwgLi4ucHVibGljS2V5Qnl0ZXNdKTtcbiAgY29uc3QgY2hlY2tzdW0gPSBzaGEyNTZYMihieXRlcyk7XG4gIHJldHVybiBiczU4LmVuY29kZShjb25jYXRVaW50OEFycmF5cyhbYnl0ZXMsIGNoZWNrc3VtXSwgYnl0ZXMubGVuZ3RoICsgNCkpO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBTaWduT3B0aW9ucyB7XG4gIGlzRGVyaXZlZEtleTogYm9vbGVhbjtcbn1cblxuY29uc3Qgc2lnbiA9IChtc2dIYXNoSGV4OiBzdHJpbmcsIHByaXZhdGVLZXk6IFVpbnQ4QXJyYXkpID0+IHtcbiAgcmV0dXJuIGVjU2lnbihtc2dIYXNoSGV4LCBwcml2YXRlS2V5LCB7XG4gICAgLy8gRm9yIGRldGFpbHMgYWJvdXQgdGhlIHNpZ25pbmcgb3B0aW9ucyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9wYXVsbWlsbHIvbm9ibGUtc2VjcDI1NmsxI3NpZ25tc2doYXNoLXByaXZhdGVrZXlcbiAgICBjYW5vbmljYWw6IHRydWUsXG4gICAgZGVyOiB0cnVlLFxuICAgIGV4dHJhRW50cm9weTogdHJ1ZSxcbiAgICByZWNvdmVyZWQ6IHRydWUsXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHNpZ25UeCA9IGFzeW5jIChcbiAgdHhIZXg6IHN0cmluZyxcbiAgc2VlZEhleDogc3RyaW5nLFxuICBvcHRpb25zPzogU2lnbk9wdGlvbnNcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IHRyYW5zYWN0aW9uQnl0ZXMgPSBlY1V0aWxzLmhleFRvQnl0ZXModHhIZXgpO1xuICBjb25zdCBbXywgdjFGaWVsZHNCdWZmZXJdID0gVHJhbnNhY3Rpb25WMC5mcm9tQnl0ZXModHJhbnNhY3Rpb25CeXRlcyk7XG4gIGNvbnN0IHNpZ25hdHVyZUluZGV4ID0gdHJhbnNhY3Rpb25CeXRlcy5sZW5ndGggLSB2MUZpZWxkc0J1ZmZlci5sZW5ndGggLSAxO1xuICBjb25zdCB2MEZpZWxkc1dpdGhvdXRTaWduYXR1cmUgPSB0cmFuc2FjdGlvbkJ5dGVzLnNsaWNlKDAsIHNpZ25hdHVyZUluZGV4KTtcbiAgY29uc3QgaGFzaGVkVHhCeXRlcyA9IHNoYTI1NlgyKHRyYW5zYWN0aW9uQnl0ZXMpO1xuICBjb25zdCB0cmFuc2FjdGlvbkhhc2hIZXggPSBlY1V0aWxzLmJ5dGVzVG9IZXgoaGFzaGVkVHhCeXRlcyk7XG4gIGNvbnN0IHByaXZhdGVLZXkgPSBlY1V0aWxzLmhleFRvQnl0ZXMoc2VlZEhleCk7XG4gIGNvbnN0IFtzaWduYXR1cmVCeXRlcywgcmVjb3ZlcnlQYXJhbV0gPSBhd2FpdCBzaWduKFxuICAgIHRyYW5zYWN0aW9uSGFzaEhleCxcbiAgICBwcml2YXRlS2V5XG4gICk7XG5cbiAgY29uc3Qgc2lnbmF0dXJlTGVuZ3RoID0gdXZhcmludDY0VG9CdWYoc2lnbmF0dXJlQnl0ZXMubGVuZ3RoKTtcblxuICBpZiAob3B0aW9ucz8uaXNEZXJpdmVkS2V5KSB7XG4gICAgc2lnbmF0dXJlQnl0ZXNbMF0gKz0gMSArIHJlY292ZXJ5UGFyYW07XG4gIH1cblxuICBjb25zdCBzaWduZWRUcmFuc2FjdGlvbkJ5dGVzID0gZWNVdGlscy5jb25jYXRCeXRlcyhcbiAgICB2MEZpZWxkc1dpdGhvdXRTaWduYXR1cmUsXG4gICAgc2lnbmF0dXJlTGVuZ3RoLFxuICAgIHNpZ25hdHVyZUJ5dGVzLFxuICAgIHYxRmllbGRzQnVmZmVyXG4gICk7XG5cbiAgcmV0dXJuIGVjVXRpbHMuYnl0ZXNUb0hleChzaWduZWRUcmFuc2FjdGlvbkJ5dGVzKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTaWduZWRKV1QgPSBhc3luYyAoXG4gIHNlZWRIZXg6IHN0cmluZyxcbiAgYWxnOiBqd3RBbGdvcml0aG0sXG4gIHtcbiAgICBkZXJpdmVkUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgLy8gVE9ETzogYWN0dWFsbHkgc3VwcG9ydCB0aGlzLi4uIG9yIHJlbW92ZSBpdC5cbiAgICBleHBpcmF0aW9uLFxuICB9OiB7XG4gICAgZGVyaXZlZFB1YmxpY0tleUJhc2U1OENoZWNrPzogc3RyaW5nO1xuICAgIGV4cGlyYXRpb24/OiBudW1iZXI7XG4gIH1cbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IGhlYWRlciA9IEpTT04uc3RyaW5naWZ5KHsgYWxnLCB0eXA6ICdKV1QnIH0pO1xuICBjb25zdCBpc3N1ZWRBdCA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApO1xuICBjb25zdCB0aGlydHlNaW5Gcm9tTm93ID0gaXNzdWVkQXQgKyAzMCAqIDYwO1xuICBjb25zdCBwYXlsb2FkID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgIC4uLihkZXJpdmVkUHVibGljS2V5QmFzZTU4Q2hlY2sgPyB7IGRlcml2ZWRQdWJsaWNLZXlCYXNlNThDaGVjayB9IDoge30pLFxuICAgIGlhdDogaXNzdWVkQXQsXG4gICAgZXhwOiB0aGlydHlNaW5Gcm9tTm93LFxuICB9KTtcblxuICBjb25zdCBqd3QgPSBgJHt1cmxTYWZlQmFzZTY0KGhlYWRlcil9LiR7dXJsU2FmZUJhc2U2NChwYXlsb2FkKX1gO1xuICBjb25zdCBbc2lnbmF0dXJlXSA9IGF3YWl0IHNpZ24oXG4gICAgZWNVdGlscy5ieXRlc1RvSGV4KHNoYTI1NihuZXcgVWludDhBcnJheShuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoand0KSkpKSxcbiAgICBlY1V0aWxzLmhleFRvQnl0ZXMoc2VlZEhleClcbiAgKTtcbiAgY29uc3QgZW5jb2RlZFNpZ25hdHVyZSA9IGRlclRvSm9zZUVuY29kaW5nKHNpZ25hdHVyZSk7XG5cbiAgcmV0dXJuIGAke2p3dH0uJHtlbmNvZGVkU2lnbmF0dXJlfWA7XG59O1xuXG5mdW5jdGlvbiB1cmxTYWZlQmFzZTY0KHN0cjogc3RyaW5nKSB7XG4gIHJldHVybiB3aW5kb3dcbiAgICAuYnRvYShzdHIpXG4gICAgLnJlcGxhY2UoL1xcKy9nLCAnLScpXG4gICAgLnJlcGxhY2UoL1xcLy9nLCAnXycpXG4gICAgLnJlcGxhY2UoLz0vZywgJycpO1xufVxuXG5leHBvcnQgY29uc3QgZW5jcnlwdENoYXRNZXNzYWdlID0gKFxuICBzZW5kZXJTZWVkSGV4OiBzdHJpbmcsXG4gIHJlY2lwaWVudFB1YmxpY0tleUJhc2U1OENoZWNrOiBzdHJpbmcsXG4gIG1lc3NhZ2U6IHN0cmluZ1xuKSA9PiB7XG4gIGNvbnN0IHByaXZhdGVLZXkgPSBlY1V0aWxzLmhleFRvQnl0ZXMoc2VuZGVyU2VlZEhleCk7XG4gIGNvbnN0IHJlY2lwaWVudFB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0J5dGVzKFxuICAgIHJlY2lwaWVudFB1YmxpY0tleUJhc2U1OENoZWNrXG4gICk7XG4gIGNvbnN0IHNoYXJlZFByaXZhdGVLZXkgPSBnZXRTaGFyZWRQcml2YXRlS2V5KHByaXZhdGVLZXksIHJlY2lwaWVudFB1YmxpY0tleSk7XG4gIGNvbnN0IHNoYXJlZFB1YmxpY0tleSA9IGdldFB1YmxpY0tleShzaGFyZWRQcml2YXRlS2V5KTtcblxuICByZXR1cm4gZW5jcnlwdChzaGFyZWRQdWJsaWNLZXksIG1lc3NhZ2UpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gcHVibGljRW5jcnlwdGlvbktleSBjb3VsZCBiZSBpbiByYXcgYnl0ZXMgb3IgYmFzZTU4Y2hlY2sgZm9ybWF0XG4gKiBAcGFyYW0gcGxhaW50ZXh0XG4gKiBAcmV0dXJucyBjaXBoZXIgdGV4dCBhcyBhIGhleCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IGVuY3J5cHQgPSBhc3luYyAoXG4gIHB1YmxpY0tleTogVWludDhBcnJheSB8IHN0cmluZyxcbiAgcGxhaW50ZXh0OiBzdHJpbmdcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IGVwaGVtUHJpdmF0ZUtleSA9IGVjVXRpbHMucmFuZG9tQnl0ZXMoMzIpO1xuICBjb25zdCBlcGhlbVB1YmxpY0tleSA9IGdldFB1YmxpY0tleShlcGhlbVByaXZhdGVLZXkpO1xuICBjb25zdCBwdWJsaWNLZXlCeXRlcyA9XG4gICAgdHlwZW9mIHB1YmxpY0tleSA9PT0gJ3N0cmluZycgPyBiczU4UHVibGljS2V5VG9CeXRlcyhwdWJsaWNLZXkpIDogcHVibGljS2V5O1xuICBjb25zdCBwcml2S2V5ID0gZ2V0U2hhcmVkUHJpdmF0ZUtleShlcGhlbVByaXZhdGVLZXksIHB1YmxpY0tleUJ5dGVzKTtcbiAgY29uc3QgZW5jcnlwdGlvbktleSA9IHByaXZLZXkuc2xpY2UoMCwgMTYpO1xuICBjb25zdCBpdiA9IGVjVXRpbHMucmFuZG9tQnl0ZXMoMTYpO1xuICBjb25zdCBtYWNLZXkgPSBzaGEyNTYocHJpdktleS5zbGljZSgxNikpO1xuICBjb25zdCBieXRlcyA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShwbGFpbnRleHQpO1xuICBjb25zdCBjcnlwdG9LZXkgPSBhd2FpdCBnbG9iYWxUaGlzLmNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KFxuICAgICdyYXcnLFxuICAgIGVuY3J5cHRpb25LZXksXG4gICAgJ0FFUy1DVFInLFxuICAgIHRydWUsXG4gICAgWydlbmNyeXB0J11cbiAgKTtcbiAgY29uc3QgY2lwaGVyQnl0ZXMgPSBhd2FpdCBnbG9iYWxUaGlzLmNyeXB0by5zdWJ0bGUuZW5jcnlwdChcbiAgICB7XG4gICAgICBuYW1lOiAnQUVTLUNUUicsXG4gICAgICBjb3VudGVyOiBpdixcbiAgICAgIGxlbmd0aDogMTI4LFxuICAgIH0sXG4gICAgY3J5cHRvS2V5LFxuICAgIGJ5dGVzXG4gICk7XG4gIGNvbnN0IGhtYWMgPSBhd2FpdCBlY1V0aWxzLmhtYWNTaGEyNTYoXG4gICAgbWFjS2V5LFxuICAgIG5ldyBVaW50OEFycmF5KFsuLi5pdiwgLi4ubmV3IFVpbnQ4QXJyYXkoY2lwaGVyQnl0ZXMpXSlcbiAgKTtcblxuICByZXR1cm4gZWNVdGlscy5ieXRlc1RvSGV4KFxuICAgIG5ldyBVaW50OEFycmF5KFtcbiAgICAgIC4uLmVwaGVtUHVibGljS2V5LFxuICAgICAgLi4uaXYsXG4gICAgICAuLi5uZXcgVWludDhBcnJheShjaXBoZXJCeXRlcyksXG4gICAgICAuLi5obWFjLFxuICAgIF0pXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzID0gKHN0cjogc3RyaW5nKSA9PiB7XG4gIGlmICghc3RyKSB7XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KDMzKTtcbiAgfVxuICBjb25zdCBwdWJLZXlVbmNvbXByZXNzZWQgPSBiczU4UHVibGljS2V5VG9CeXRlcyhzdHIpO1xuICByZXR1cm4gUG9pbnQuZnJvbUhleChlY1V0aWxzLmJ5dGVzVG9IZXgocHViS2V5VW5jb21wcmVzc2VkKSkudG9SYXdCeXRlcyh0cnVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBiczU4UHVibGljS2V5VG9CeXRlcyA9IChzdHI6IHN0cmluZykgPT4ge1xuICBjb25zdCBieXRlcyA9IGJzNTguZGVjb2RlKHN0cik7XG4gIGNvbnN0IHBheWxvYWQgPSBieXRlcy5zbGljZSgwLCAtNCk7XG4gIGNvbnN0IGNoZWNrc3VtQSA9IGJ5dGVzLnNsaWNlKC00KTtcbiAgY29uc3QgY2hlY2tzdW1CID0gc2hhMjU2WDIocGF5bG9hZCk7XG5cbiAgaWYgKFxuICAgIChjaGVja3N1bUFbMF0gXiBjaGVja3N1bUJbMF0pIHxcbiAgICAoY2hlY2tzdW1BWzFdIF4gY2hlY2tzdW1CWzFdKSB8XG4gICAgKGNoZWNrc3VtQVsyXSBeIGNoZWNrc3VtQlsyXSkgfFxuICAgIChjaGVja3N1bUFbM10gXiBjaGVja3N1bUJbM10pXG4gICkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjaGVja3N1bScpO1xuICB9XG5cbiAgcmV0dXJuIFBvaW50LmZyb21IZXgoZWNVdGlscy5ieXRlc1RvSGV4KHBheWxvYWQuc2xpY2UoMykpKS50b1Jhd0J5dGVzKGZhbHNlKTtcbn07XG5cbmNvbnN0IGlzVmFsaWRIbWFjID0gKGNhbmRpZGF0ZTogVWludDhBcnJheSwga25vd25Hb29kOiBVaW50OEFycmF5KSA9PiB7XG4gIGlmIChjYW5kaWRhdGUubGVuZ3RoICE9PSBrbm93bkdvb2QubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBrbm93bkdvb2QubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoY2FuZGlkYXRlW2ldICE9PSBrbm93bkdvb2RbaV0pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWNyeXB0Q2hhdE1lc3NhZ2UgPSBhc3luYyAoXG4gIHJlY2lwaWVudFNlZWRIZXg6IHN0cmluZyxcbiAgcHVibGljRGVjcnlwdGlvbktleTogc3RyaW5nLFxuICBjaXBoZXJUZXh0SGV4OiBzdHJpbmdcbikgPT4ge1xuICBjb25zdCBwcml2YXRlS2V5ID0gZWNVdGlscy5oZXhUb0J5dGVzKHJlY2lwaWVudFNlZWRIZXgpO1xuICBjb25zdCBwdWJsaWNLZXkgPSBhd2FpdCBiczU4UHVibGljS2V5VG9CeXRlcyhwdWJsaWNEZWNyeXB0aW9uS2V5KTtcbiAgY29uc3Qgc2hhcmVkUHJpdmF0ZUtleSA9IGF3YWl0IGdldFNoYXJlZFByaXZhdGVLZXkocHJpdmF0ZUtleSwgcHVibGljS2V5KTtcbiAgcmV0dXJuIGRlY3J5cHQoc2hhcmVkUHJpdmF0ZUtleSwgY2lwaGVyVGV4dEhleCk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVjcnlwdCA9IGFzeW5jIChcbiAgcHJpdmF0ZURlY3J5cHRpb25LZXk6IFVpbnQ4QXJyYXkgfCBzdHJpbmcsXG4gIGNpcGhlclRleHRIZXg6IHN0cmluZ1xuKSA9PiB7XG4gIGNvbnN0IGNpcGhlckJ5dGVzID0gZWNVdGlscy5oZXhUb0J5dGVzKGNpcGhlclRleHRIZXgpO1xuICBjb25zdCBtZXRhTGVuZ3RoID0gMTEzO1xuXG4gIGlmIChjaXBoZXJCeXRlcy5sZW5ndGggPCBtZXRhTGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGNpcGhlciB0ZXh0LiBkYXRhIHRvbyBzbWFsbC4nKTtcbiAgfVxuXG4gIGlmICghKGNpcGhlckJ5dGVzWzBdID49IDIgJiYgY2lwaGVyQnl0ZXNbMF0gPD0gNCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgY2lwaGVyIHRleHQuJyk7XG4gIH1cblxuICBjb25zdCBwcml2YXRlS2V5ID0gbm9ybWFsaXplU2VlZChwcml2YXRlRGVjcnlwdGlvbktleSk7XG4gIGNvbnN0IGVwaGVtUHVibGljS2V5ID0gY2lwaGVyQnl0ZXMuc2xpY2UoMCwgNjUpO1xuICBjb25zdCBjaXBoZXJUZXh0TGVuZ3RoID0gY2lwaGVyQnl0ZXMubGVuZ3RoIC0gbWV0YUxlbmd0aDtcbiAgY29uc3QgaXYgPSBjaXBoZXJCeXRlcy5zbGljZSg2NSwgNjUgKyAxNik7XG4gIGNvbnN0IGNpcGhlckFuZEl2ID0gY2lwaGVyQnl0ZXMuc2xpY2UoNjUsIDY1ICsgMTYgKyBjaXBoZXJUZXh0TGVuZ3RoKTtcbiAgY29uc3QgY2lwaGVyVGV4dCA9IGNpcGhlckFuZEl2LnNsaWNlKDE2KTtcbiAgY29uc3QgbXNnTWFjID0gY2lwaGVyQnl0ZXMuc2xpY2UoNjUgKyAxNiArIGNpcGhlclRleHRMZW5ndGgpO1xuICBjb25zdCBzaGFyZWRTZWNyZXRLZXkgPSBhd2FpdCBnZXRTaGFyZWRQcml2YXRlS2V5KHByaXZhdGVLZXksIGVwaGVtUHVibGljS2V5KTtcbiAgY29uc3QgZW5jcnlwdGlvbktleSA9IHNoYXJlZFNlY3JldEtleS5zbGljZSgwLCAxNik7XG4gIGNvbnN0IG1hY0tleSA9IHNoYTI1NihzaGFyZWRTZWNyZXRLZXkuc2xpY2UoMTYpKTtcbiAgY29uc3QgaG1hY0tub3duR29vZCA9IGF3YWl0IGVjVXRpbHMuaG1hY1NoYTI1NihtYWNLZXksIGNpcGhlckFuZEl2KTtcblxuICBpZiAoIWlzVmFsaWRIbWFjKG1zZ01hYywgaG1hY0tub3duR29vZCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2luY29ycmVjdCBNQUMnKTtcbiAgfVxuXG4gIGNvbnN0IGNyeXB0b0tleSA9IGF3YWl0IGdsb2JhbFRoaXMuY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoXG4gICAgJ3JhdycsXG4gICAgZW5jcnlwdGlvbktleSxcbiAgICAnQUVTLUNUUicsXG4gICAgdHJ1ZSxcbiAgICBbJ2RlY3J5cHQnXVxuICApO1xuXG4gIGNvbnN0IGRlY3J5cHRlZEJ1ZmZlciA9IGF3YWl0IGdsb2JhbFRoaXMuY3J5cHRvLnN1YnRsZS5kZWNyeXB0KFxuICAgIHsgbmFtZTogJ0FFUy1DVFInLCBjb3VudGVyOiBpdiwgbGVuZ3RoOiAxMjggfSxcbiAgICBjcnlwdG9LZXksXG4gICAgY2lwaGVyVGV4dFxuICApO1xuXG4gIHJldHVybiBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoZGVjcnlwdGVkQnVmZmVyKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTaGFyZWRQcml2YXRlS2V5ID0gKFxuICBwcml2S2V5OiBVaW50OEFycmF5LFxuICBwdWJLZXk6IFVpbnQ4QXJyYXlcbikgPT4ge1xuICBjb25zdCBzaGFyZWRTZWNyZXQgPSBnZXRTaGFyZWRTZWNyZXQocHJpdktleSwgcHViS2V5KTtcblxuICByZXR1cm4ga2RmKHNoYXJlZFNlY3JldCwgMzIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlY29kZVB1YmxpY0tleSA9IGFzeW5jIChwdWJsaWNLZXlCYXNlNThDaGVjazogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGRlY29kZWQgPSBhd2FpdCBiczU4UHVibGljS2V5VG9CeXRlcyhwdWJsaWNLZXlCYXNlNThDaGVjayk7XG4gIGNvbnN0IHdpdGhQcmVmaXhSZW1vdmVkID0gZGVjb2RlZC5zbGljZSgzKTtcbiAgY29uc3Qgc2VuZGVyUHViS2V5SGV4ID0gZWNVdGlscy5ieXRlc1RvSGV4KHdpdGhQcmVmaXhSZW1vdmVkKTtcblxuICByZXR1cm4gUG9pbnQuZnJvbUhleChzZW5kZXJQdWJLZXlIZXgpLnRvUmF3Qnl0ZXMoZmFsc2UpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNoYXJlZFNlY3JldCA9IChwcml2S2V5OiBVaW50OEFycmF5LCBwdWJLZXk6IFVpbnQ4QXJyYXkpID0+IHtcbiAgLy8gcGFzc2luZyB0cnVlIHRvIGNvbXByZXNzIHRoZSBwdWJsaWMga2V5LCBhbmQgdGhlbiBzbGljaW5nIG9mZiB0aGUgZmlyc3QgYnl0ZVxuICAvLyBtYXRjaGVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBkZXJpdmUgaW4gdGhlIGVsbGlwdGljIHBhY2thZ2UuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wYXVsbWlsbHIvbm9ibGUtc2VjcDI1NmsxL2lzc3Vlcy8yOCNpc3N1ZWNvbW1lbnQtOTQ2NTM4MDM3XG4gIHJldHVybiBub2JsZUdldFNoYXJlZFNlY3JldChwcml2S2V5LCBwdWJLZXksIHRydWUpLnNsaWNlKDEpO1xufTtcblxuLy8gdGFrZW4gZnJvbSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaW4gdGhlIGRlc28gY2hhdCBhcHA6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vZGVzby1wcm90b2NvbC9hY2Nlc3MtZ3JvdXAtbWVzc2FnaW5nLWFwcC9ibG9iL2NkNWMyMzdmNWU1NzI5MTk2YWFjMGRhMTYxZDA4NTFiZGU3ODA5MmMvc3JjL3NlcnZpY2VzL2NyeXB0by11dGlscy5zZXJ2aWNlLnRzeCNMOTFcbmV4cG9ydCBjb25zdCBrZGYgPSAoc2VjcmV0OiBVaW50OEFycmF5LCBvdXRwdXRMZW5ndGg6IG51bWJlcikgPT4ge1xuICBsZXQgY3RyID0gMTtcbiAgbGV0IHdyaXR0ZW4gPSAwO1xuICBsZXQgcmVzdWx0ID0gbmV3IFVpbnQ4QXJyYXkoKTtcblxuICB3aGlsZSAod3JpdHRlbiA8IG91dHB1dExlbmd0aCkge1xuICAgIGNvbnN0IGhhc2ggPSBzaGEyNTYoXG4gICAgICBuZXcgVWludDhBcnJheShbXG4gICAgICAgIC4uLm5ldyBVaW50OEFycmF5KFtjdHIgPj4gMjQsIGN0ciA+PiAxNiwgY3RyID4+IDgsIGN0cl0pLFxuICAgICAgICAuLi5zZWNyZXQsXG4gICAgICBdKVxuICAgICk7XG4gICAgcmVzdWx0ID0gbmV3IFVpbnQ4QXJyYXkoWy4uLnJlc3VsdCwgLi4uaGFzaF0pO1xuICAgIHdyaXR0ZW4gKz0gMzI7XG4gICAgY3RyICs9IDE7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gVGhpcyBpcyBhIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIGRlclRvSm9zZSBmdW5jdGlvbiBmcm9tXG4vLyBodHRwczovL2dpdGh1Yi5jb20vQnJpZ2h0c3BhY2Uvbm9kZS1lY2RzYS1zaWctZm9ybWF0dGVyL2Jsb2IvY2EyNWEyZmQ1YWU5ZGQ4NTAzNjA4MTYzMjkzNmU4MDJhNDdhMTI4OS9zcmMvZWNkc2Etc2lnLWZvcm1hdHRlci5qcyNMMzJcbi8vIFRoZSBvcmlnaW5hbCBwYWNrYWdlIGlzIG5vdCBicm93c2VyIGZyaWVuZGx5IGFuZCByZXF1aXJlcyBub2RlIHBvbHlmaWxscy4gV2Vcbi8vIGFsc28gZG9uJ3QgbmVlZCB0byBiZSBxdWl0ZSBhcyBkZWZlbnNpdmUgYXMgdGhlIG9yaWdpbmFsIHBhY2thZ2Ugc2luY2Ugd2Vcbi8vIGhhdmUgZnVsbCBjb250cm9sIG9mIHRoZSBpbnB1dC5cbmZ1bmN0aW9uIGRlclRvSm9zZUVuY29kaW5nKHNpZ25hdHVyZTogVWludDhBcnJheSkge1xuICBjb25zdCBwYXJhbUJ5dGVzID0gMzI7XG5cbiAgbGV0IG9mZnNldCA9IDM7XG4gIGNvbnN0IHJMZW5ndGggPSBzaWduYXR1cmVbb2Zmc2V0XTtcbiAgb2Zmc2V0ICs9IDE7XG4gIGNvbnN0IHJPZmZzZXQgPSBvZmZzZXQ7XG4gIG9mZnNldCArPSByTGVuZ3RoICsgMTtcbiAgY29uc3Qgc0xlbmd0aCA9IHNpZ25hdHVyZVtvZmZzZXRdO1xuICBvZmZzZXQgKz0gMTtcbiAgY29uc3Qgc09mZnNldCA9IG9mZnNldDtcbiAgb2Zmc2V0ICs9IHNMZW5ndGg7XG5cbiAgY29uc3QgclBhZGRpbmcgPSBwYXJhbUJ5dGVzIC0gckxlbmd0aDtcbiAgY29uc3Qgc1BhZGRpbmcgPSBwYXJhbUJ5dGVzIC0gc0xlbmd0aDtcblxuICBjb25zdCBvdXRQdXQgPSBuZXcgVWludDhBcnJheShyUGFkZGluZyArIHJMZW5ndGggKyBzUGFkZGluZyArIHNMZW5ndGgpO1xuXG4gIGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IDwgclBhZGRpbmc7ICsrb2Zmc2V0KSB7XG4gICAgb3V0UHV0W29mZnNldF0gPSAwO1xuICB9XG5cbiAgb3V0UHV0LnNldChcbiAgICBzaWduYXR1cmUuc2xpY2Uock9mZnNldCArIE1hdGgubWF4KC1yUGFkZGluZywgMCksIHJPZmZzZXQgKyByTGVuZ3RoKSxcbiAgICBvZmZzZXRcbiAgKTtcblxuICBvZmZzZXQgPSBwYXJhbUJ5dGVzO1xuXG4gIGZvciAoY29uc3QgbyA9IG9mZnNldDsgb2Zmc2V0IDwgbyArIHNQYWRkaW5nOyArK29mZnNldCkge1xuICAgIG91dFB1dFtvZmZzZXRdID0gMDtcbiAgfVxuXG4gIG91dFB1dC5zZXQoXG4gICAgc2lnbmF0dXJlLnNsaWNlKHNPZmZzZXQgKyBNYXRoLm1heCgtc1BhZGRpbmcsIDApLCBzT2Zmc2V0ICsgc0xlbmd0aCksXG4gICAgb2Zmc2V0XG4gICk7XG5cbiAgY29uc3Qgb3V0cHV0Q2hhcnMgPSBvdXRQdXQucmVkdWNlKFxuICAgIChkYXRhLCBieXRlKSA9PiBkYXRhICsgU3RyaW5nLmZyb21DaGFyQ29kZShieXRlKSxcbiAgICAnJ1xuICApO1xuXG4gIHJldHVybiB1cmxTYWZlQmFzZTY0KG91dHB1dENoYXJzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZUFjY2Vzc0dyb3VwS2V5UGFpcihcbiAgcHJpdmF0ZUtleUhleDogc3RyaW5nLFxuICBncm91cEtleU5hbWU6IHN0cmluZ1xuKTogS2V5UGFpciB7XG4gIGNvbnN0IHNlY3JldEhhc2ggPSBzaGEyNTZYMihwcml2YXRlS2V5SGV4KTtcbiAgY29uc3Qga2V5TmFtZUhhc2ggPSBzaGEyNTZYMihuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoZ3JvdXBLZXlOYW1lKSk7XG4gIGNvbnN0IHByaXZhdGVLZXkgPSBzaGEyNTZYMihuZXcgVWludDhBcnJheShbLi4uc2VjcmV0SGFzaCwgLi4ua2V5TmFtZUhhc2hdKSk7XG5cbiAgcmV0dXJuIGtleWdlbihwcml2YXRlS2V5KTtcbn1cbiJdfQ==

@@ -1,2 +0,2 @@

import { Identity } from './identity';
import { Identity } from './identity.js';
export declare const identity: Identity<Storage>;

@@ -1,6 +0,6 @@

import { api } from '../data';
import { Identity } from './identity';
import { api } from '../data/index.js';
import { Identity } from './identity.js';
// NOTE: Be careful making changes here as this file will be overwritten
// during the build for react-native. See ./scripts/package-react-native.sh
export const identity = new Identity(globalThis, api);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHktaW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWRlbnRpdHkvaWRlbnRpdHktaW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXRDLHdFQUF3RTtBQUN4RSwyRUFBMkU7QUFDM0UsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUFVLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFwaSB9IGZyb20gJy4uL2RhdGEnO1xuaW1wb3J0IHsgSWRlbnRpdHkgfSBmcm9tICcuL2lkZW50aXR5JztcblxuLy8gTk9URTogQmUgY2FyZWZ1bCBtYWtpbmcgY2hhbmdlcyBoZXJlIGFzIHRoaXMgZmlsZSB3aWxsIGJlIG92ZXJ3cml0dGVuXG4vLyBkdXJpbmcgdGhlIGJ1aWxkIGZvciByZWFjdC1uYXRpdmUuIFNlZSAuL3NjcmlwdHMvcGFja2FnZS1yZWFjdC1uYXRpdmUuc2hcbmV4cG9ydCBjb25zdCBpZGVudGl0eSA9IG5ldyBJZGVudGl0eTxTdG9yYWdlPihnbG9iYWxUaGlzLCBhcGkpO1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHktaW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWRlbnRpdHkvaWRlbnRpdHktaW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsd0VBQXdFO0FBQ3hFLDJFQUEyRTtBQUMzRSxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQVUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXBpIH0gZnJvbSAnLi4vZGF0YS9pbmRleC5qcyc7XG5pbXBvcnQgeyBJZGVudGl0eSB9IGZyb20gJy4vaWRlbnRpdHkuanMnO1xuXG4vLyBOT1RFOiBCZSBjYXJlZnVsIG1ha2luZyBjaGFuZ2VzIGhlcmUgYXMgdGhpcyBmaWxlIHdpbGwgYmUgb3ZlcndyaXR0ZW5cbi8vIGR1cmluZyB0aGUgYnVpbGQgZm9yIHJlYWN0LW5hdGl2ZS4gU2VlIC4vc2NyaXB0cy9wYWNrYWdlLXJlYWN0LW5hdGl2ZS5zaFxuZXhwb3J0IGNvbnN0IGlkZW50aXR5ID0gbmV3IElkZW50aXR5PFN0b3JhZ2U+KGdsb2JhbFRoaXMsIGFwaSk7XG4iXX0=

@@ -1,3 +0,3 @@

import { Identity } from './identity';
import { AsyncStorage } from './types';
import { Identity } from './identity.js';
import { AsyncStorage } from './types.js';
export declare const identity: Identity<AsyncStorage>;

@@ -1,4 +0,4 @@

import { api } from '../data';
import { Identity } from './identity';
import { api } from '../data/index.js';
import { Identity } from './identity.js';
export const identity = new Identity(globalThis, api);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHktaW5zdGFuY2UucmVhY3QtbmF0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lkZW50aXR5L2lkZW50aXR5LWluc3RhbmNlLnJlYWN0LW5hdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHdEMsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUFlLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFwaSB9IGZyb20gJy4uL2RhdGEnO1xuaW1wb3J0IHsgSWRlbnRpdHkgfSBmcm9tICcuL2lkZW50aXR5JztcbmltcG9ydCB7IEFzeW5jU3RvcmFnZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgaWRlbnRpdHkgPSBuZXcgSWRlbnRpdHk8QXN5bmNTdG9yYWdlPihnbG9iYWxUaGlzLCBhcGkpO1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHktaW5zdGFuY2UucmVhY3QtbmF0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lkZW50aXR5L2lkZW50aXR5LWluc3RhbmNlLnJlYWN0LW5hdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd6QyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQWUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXBpIH0gZnJvbSAnLi4vZGF0YS9pbmRleC5qcyc7XG5pbXBvcnQgeyBJZGVudGl0eSB9IGZyb20gJy4vaWRlbnRpdHkuanMnO1xuaW1wb3J0IHsgQXN5bmNTdG9yYWdlIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBjb25zdCBpZGVudGl0eSA9IG5ldyBJZGVudGl0eTxBc3luY1N0b3JhZ2U+KGdsb2JhbFRoaXMsIGFwaSk7XG4iXX0=

@@ -1,3 +0,3 @@

import { type AccessGroupEntryResponse, type DecryptedMessageEntryResponse, type NewMessageEntryResponse, type SubmitTransactionResponse, type TransactionSpendingLimitResponse } from '../backend-types';
import { IdentityState, StorageProvider, type APIProvider, type AccessGroupPrivateInfo, type IdentityConfiguration, type IdentityDerivePayload, type LoginOptions, type SubscriberNotification, type TransactionSpendingLimitResponseOptions } from './types';
import { type AccessGroupEntryResponse, type DecryptedMessageEntryResponse, type NewMessageEntryResponse, type SubmitTransactionResponse, type TransactionSpendingLimitResponse } from '../backend-types/index.js';
import { IdentityState, StorageProvider, type APIProvider, type AccessGroupPrivateInfo, type IdentityConfiguration, type IdentityDerivePayload, type LoginOptions, type SubscriberNotification, type TransactionSpendingLimitResponseOptions } from './types.js';
export declare class Identity<T extends StorageProvider> {

@@ -224,3 +224,3 @@ #private;

*/
decryptAccessGroupKeyPair(encryptedKeyHex: string): Promise<import("./types").KeyPair>;
decryptAccessGroupKeyPair(encryptedKeyHex: string): Promise<import("./types.js").KeyPair>;
/**

@@ -227,0 +227,0 @@ * Generate a key pair for an access group. This is used to encrypt and

@@ -1,7 +0,7 @@

export * from './crypto-utils';
export * from './error-types';
export * from './identity-instance';
export * from './transaction-transcoders';
export * from './transcoder-utils';
export * from './transcoders';
export * from './types';
export * from './crypto-utils.js';
export * from './error-types.js';
export * from './identity-instance.js';
export * from './transaction-transcoders.js';
export * from './transcoder-utils.js';
export * from './transcoders.js';
export * from './types.js';

@@ -1,8 +0,8 @@

export * from './crypto-utils';
export * from './error-types';
export * from './identity-instance';
export * from './transaction-transcoders';
export * from './transcoder-utils';
export * from './transcoders';
export * from './types';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWRlbnRpdHkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY3J5cHRvLXV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vZXJyb3ItdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9pZGVudGl0eS1pbnN0YW5jZSc7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zYWN0aW9uLXRyYW5zY29kZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNjb2Rlci11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zY29kZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuIl19
export * from './crypto-utils.js';
export * from './error-types.js';
export * from './identity-instance.js';
export * from './transaction-transcoders.js';
export * from './transcoder-utils.js';
export * from './transcoders.js';
export * from './types.js';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWRlbnRpdHkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NyeXB0by11dGlscy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2Vycm9yLXR5cGVzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vaWRlbnRpdHktaW5zdGFuY2UuanMnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2FjdGlvbi10cmFuc2NvZGVycy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zY29kZXItdXRpbHMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2NvZGVycy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzLmpzJztcbiJdfQ==

@@ -1,4 +0,4 @@

import { TransactionSpendingLimitResponse } from '../backend-types';
import { TransactionSpendingLimitResponseOptions } from './types';
import { TransactionSpendingLimitResponse } from '../backend-types/index.js';
import { TransactionSpendingLimitResponseOptions } from './types.js';
export declare function compareTransactionSpendingLimits(expectedPermissions: TransactionSpendingLimitResponseOptions, actualPermissions: TransactionSpendingLimitResponse): boolean;
export declare function buildTransactionSpendingLimitResponse(spendingLimitOptions: Partial<TransactionSpendingLimitResponseOptions>): TransactionSpendingLimitResponse;
export function compareTransactionSpendingLimits(expectedPermissions, actualPermissions) {
let hasAllPermissions = true;
// if the key is unlimited then we don't need to check anything else
if (actualPermissions === null || actualPermissions === void 0 ? void 0 : actualPermissions.IsUnlimited) {
if (actualPermissions?.IsUnlimited) {
return hasAllPermissions;
}
walkObj(expectedPermissions, (expectedVal, path) => {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
// If the actual permissions are configured with any of the special "allow

@@ -13,6 +12,5 @@ // anything" mappings then we rewrite the lookup path for any explicit

// compare the OpCounts and return early if their can be only 1 mapping.
switch (path === null || path === void 0 ? void 0 : path[0]) {
switch (path?.[0]) {
case 'AccessGroupLimitMap':
if ((_a = actualPermissions === null || actualPermissions === void 0 ? void 0 : actualPermissions.AccessGroupLimitMap) === null || _a === void 0 ? void 0 : _a.find((map) => {
var _a, _b;
if (actualPermissions?.AccessGroupLimitMap?.find((map) => {
return (map.ScopeType === 'Any' &&

@@ -22,3 +20,4 @@ map.AccessGroupKeyName === '' &&

map.OpCount >=
normalizeCount((_b = (_a = expectedPermissions === null || expectedPermissions === void 0 ? void 0 : expectedPermissions.AccessGroupLimitMap) === null || _a === void 0 ? void 0 : _a[Number(path[1])]) === null || _b === void 0 ? void 0 : _b.OpCount));
normalizeCount(expectedPermissions?.AccessGroupLimitMap?.[Number(path[1])]
?.OpCount));
})) {

@@ -29,4 +28,3 @@ return;

case 'AccessGroupMemberLimitMap':
if ((_b = actualPermissions === null || actualPermissions === void 0 ? void 0 : actualPermissions.AccessGroupMemberLimitMap) === null || _b === void 0 ? void 0 : _b.find((map) => {
var _a, _b;
if (actualPermissions?.AccessGroupMemberLimitMap?.find((map) => {
return (map.ScopeType === 'Any' &&

@@ -36,3 +34,3 @@ map.AccessGroupKeyName === '' &&

map.OpCount >=
normalizeCount((_b = (_a = expectedPermissions === null || expectedPermissions === void 0 ? void 0 : expectedPermissions.AccessGroupMemberLimitMap) === null || _a === void 0 ? void 0 : _a[Number(path[1])]) === null || _b === void 0 ? void 0 : _b.OpCount));
normalizeCount(expectedPermissions?.AccessGroupMemberLimitMap?.[Number(path[1])]?.OpCount));
})) {

@@ -43,6 +41,6 @@ return;

case 'AssociationLimitMap':
if ((_c = actualPermissions === null || actualPermissions === void 0 ? void 0 : actualPermissions.AssociationLimitMap) === null || _c === void 0 ? void 0 : _c.find((map) => {
var _a, _b, _c, _d;
if (actualPermissions?.AssociationLimitMap?.find((map) => {
return (map.AssociationClass ===
((_b = (_a = expectedPermissions === null || expectedPermissions === void 0 ? void 0 : expectedPermissions.AssociationLimitMap) === null || _a === void 0 ? void 0 : _a[Number(path[1])]) === null || _b === void 0 ? void 0 : _b.AssociationClass) &&
expectedPermissions?.AssociationLimitMap?.[Number(path[1])]
?.AssociationClass &&
map.AppScopeType === 'Any' &&

@@ -52,3 +50,4 @@ map.AssociationType === '' &&

map.OpCount >=
normalizeCount((_d = (_c = expectedPermissions === null || expectedPermissions === void 0 ? void 0 : expectedPermissions.AssociationLimitMap) === null || _c === void 0 ? void 0 : _c[Number(path[1])]) === null || _d === void 0 ? void 0 : _d.OpCount));
normalizeCount(expectedPermissions?.AssociationLimitMap?.[Number(path[1])]
?.OpCount));
})) {

@@ -59,5 +58,5 @@ return;

case 'CreatorCoinOperationLimitMap':
if ((_d = actualPermissions === null || actualPermissions === void 0 ? void 0 : actualPermissions.CreatorCoinOperationLimitMap) === null || _d === void 0 ? void 0 : _d['']) {
if (actualPermissions?.CreatorCoinOperationLimitMap?.['']) {
path =
typeof ((_e = actualPermissions === null || actualPermissions === void 0 ? void 0 : actualPermissions.CreatorCoinOperationLimitMap['']) === null || _e === void 0 ? void 0 : _e.any) ===
typeof actualPermissions?.CreatorCoinOperationLimitMap['']?.any ===
'number'

@@ -69,5 +68,5 @@ ? ['CreatorCoinOperationLimitMap', '', 'any']

case 'NFTOperationLimitMap':
if ((_g = (_f = actualPermissions === null || actualPermissions === void 0 ? void 0 : actualPermissions.NFTOperationLimitMap) === null || _f === void 0 ? void 0 : _f['']) === null || _g === void 0 ? void 0 : _g[0]) {
if (actualPermissions?.NFTOperationLimitMap?.['']?.[0]) {
path =
typeof ((_k = (_j = (_h = actualPermissions === null || actualPermissions === void 0 ? void 0 : actualPermissions.NFTOperationLimitMap) === null || _h === void 0 ? void 0 : _h['']) === null || _j === void 0 ? void 0 : _j[0]) === null || _k === void 0 ? void 0 : _k.any) ===
typeof actualPermissions?.NFTOperationLimitMap?.['']?.[0]?.any ===
'number'

@@ -90,3 +89,2 @@ ? ['NFTOperationLimitMap', '', '0', 'any']

export function buildTransactionSpendingLimitResponse(spendingLimitOptions) {
var _a, _b;
if (spendingLimitOptions.IsUnlimited) {

@@ -97,3 +95,3 @@ return {

}
if (((_a = spendingLimitOptions.GlobalDESOLimit) === null || _a === void 0 ? void 0 : _a.toString()) === 'UNLIMITED') {
if (spendingLimitOptions.GlobalDESOLimit?.toString() === 'UNLIMITED') {
throw new Error('GlobalDESOLimit cannot be unlimited. You must specify a specific limit, or set the IsUnlimited flag to true.');

@@ -125,6 +123,9 @@ }

}
result.TransactionCountLimitMap = (_b = result.TransactionCountLimitMap) !== null && _b !== void 0 ? _b : {};
result.TransactionCountLimitMap = result.TransactionCountLimitMap ?? {};
if (typeof result.TransactionCountLimitMap['AUTHORIZE_DERIVED_KEY'] ===
'undefined') {
result.TransactionCountLimitMap = Object.assign(Object.assign({}, result.TransactionCountLimitMap), { AUTHORIZE_DERIVED_KEY: 1 });
result.TransactionCountLimitMap = {
...result.TransactionCountLimitMap,
AUTHORIZE_DERIVED_KEY: 1,
};
}

@@ -179,4 +180,4 @@ else if (result.TransactionCountLimitMap['AUTHORIZE_DERIVED_KEY'] < 0) {

// check if there are no more transactions left to spend.
return count === 'UNLIMITED' || count === 1e9 ? 1 : count !== null && count !== void 0 ? count : 0;
return count === 'UNLIMITED' || count === 1e9 ? 1 : count ?? 0;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWRlbnRpdHkvcGVybWlzc2lvbnMtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxVQUFVLGdDQUFnQyxDQUM5QyxtQkFBNEQsRUFDNUQsaUJBQW1EO0lBRW5ELElBQUksaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBRTdCLG9FQUFvRTtJQUNwRSxJQUFJLGlCQUFpQixhQUFqQixpQkFBaUIsdUJBQWpCLGlCQUFpQixDQUFFLFdBQVcsRUFBRTtRQUNsQyxPQUFPLGlCQUFpQixDQUFDO0tBQzFCO0lBRUQsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxFQUFFOztRQUNqRCwwRUFBMEU7UUFDMUUsc0VBQXNFO1FBQ3RFLHFFQUFxRTtRQUNyRSx3RUFBd0U7UUFDeEUsUUFBUSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDakIsS0FBSyxxQkFBcUI7Z0JBQ3hCLElBQ0UsTUFBQSxpQkFBaUIsYUFBakIsaUJBQWlCLHVCQUFqQixpQkFBaUIsQ0FBRSxtQkFBbUIsMENBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7O29CQUNuRCxPQUFPLENBQ0wsR0FBRyxDQUFDLFNBQVMsS0FBSyxLQUFLO3dCQUN2QixHQUFHLENBQUMsa0JBQWtCLEtBQUssRUFBRTt3QkFDN0IsR0FBRyxDQUFDLGFBQWEsS0FBSyxLQUFLO3dCQUMzQixHQUFHLENBQUMsT0FBTzs0QkFDVCxjQUFjLENBQ1osTUFBQSxNQUFBLG1CQUFtQixhQUFuQixtQkFBbUIsdUJBQW5CLG1CQUFtQixDQUFFLG1CQUFtQiwwQ0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsMENBQ3ZELE9BQU8sQ0FDWixDQUNKLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLEVB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Q3JCO1NBQU07UUFDTCxPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2xEO0FBQ0gsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLEdBQVEsRUFBRSxJQUFjLEVBQUUsS0FBVTtJQUN4RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsSUFBSSxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxXQUFXLEVBQUU7UUFDdkMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUNuQjtJQUVELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDckIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQztLQUN0QjtTQUFNO1FBQ0wsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQ2xEO0FBQ0gsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLEtBQTRCO0lBQ2xELHdFQUF3RTtJQUN4RSw2RUFBNkU7SUFDN0UsOEVBQThFO0lBQzlFLDZFQUE2RTtJQUM3RSx5REFBeUQ7SUFDekQsT0FBTyxLQUFLLEtBQUssV0FBVyxJQUFJLEtBQUssS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxhQUFMLEtBQUssY0FBTCxLQUFLLEdBQUksQ0FBQyxDQUFDO0FBQ2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZSB9IGZyb20gJy4uL2JhY2tlbmQtdHlwZXMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2VPcHRpb25zIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wYXJlVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0cyhcbiAgZXhwZWN0ZWRQZXJtaXNzaW9uczogVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2VPcHRpb25zLFxuICBhY3R1YWxQZXJtaXNzaW9uczogVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2Vcbik6IGJvb2xlYW4ge1xuICBsZXQgaGFzQWxsUGVybWlzc2lvbnMgPSB0cnVlO1xuXG4gIC8vIGlmIHRoZSBrZXkgaXMgdW5saW1pdGVkIHRoZW4gd2UgZG9uJ3QgbmVlZCB0byBjaGVjayBhbnl0aGluZyBlbHNlXG4gIGlmIChhY3R1YWxQZXJtaXNzaW9ucz8uSXNVbmxpbWl0ZWQpIHtcbiAgICByZXR1cm4gaGFzQWxsUGVybWlzc2lvbnM7XG4gIH1cblxuICB3YWxrT2JqKGV4cGVjdGVkUGVybWlzc2lvbnMsIChleHBlY3RlZFZhbCwgcGF0aCkgPT4ge1xuICAgIC8vIElmIHRoZSBhY3R1YWwgcGVybWlzc2lvbnMgYXJlIGNvbmZpZ3VyZWQgd2l0aCBhbnkgb2YgdGhlIHNwZWNpYWwgXCJhbGxvd1xuICAgIC8vIGFueXRoaW5nXCIgbWFwcGluZ3MgdGhlbiB3ZSByZXdyaXRlIHRoZSBsb29rdXAgcGF0aCBmb3IgYW55IGV4cGxpY2l0XG4gICAgLy8gbWFwcGluZyB0byBtYXRjaCBvbiB0aGUgXCJhbGxvdyBhbnlcIiBtYXBwaW5nLiBJbiBzb21lIGNhc2VzLCBzaW1wbHlcbiAgICAvLyBjb21wYXJlIHRoZSBPcENvdW50cyBhbmQgcmV0dXJuIGVhcmx5IGlmIHRoZWlyIGNhbiBiZSBvbmx5IDEgbWFwcGluZy5cbiAgICBzd2l0Y2ggKHBhdGg/LlswXSkge1xuICAgICAgY2FzZSAnQWNjZXNzR3JvdXBMaW1pdE1hcCc6XG4gICAgICAgIGlmIChcbiAgICAgICAgICBhY3R1YWxQZXJtaXNzaW9ucz8uQWNjZXNzR3JvdXBMaW1pdE1hcD8uZmluZCgobWFwKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICBtYXAuU2NvcGVUeXBlID09PSAnQW55JyAmJlxuICAgICAgICAgICAgICBtYXAuQWNjZXNzR3JvdXBLZXlOYW1lID09PSAnJyAmJlxuICAgICAgICAgICAgICBtYXAuT3BlcmF0aW9uVHlwZSA9PT0gJ0FueScgJiZcbiAgICAgICAgICAgICAgbWFwLk9wQ291bnQgPj1cbiAgICAgICAgICAgICAgICBub3JtYWxpemVDb3VudChcbiAgICAgICAgICAgICAgICAgIGV4cGVjdGVkUGVybWlzc2lvbnM/LkFjY2Vzc0dyb3VwTGltaXRNYXA/LltOdW1iZXIocGF0aFsxXSldXG4gICAgICAgICAgICAgICAgICAgID8uT3BDb3VudFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQWNjZXNzR3JvdXBNZW1iZXJMaW1pdE1hcCc6XG4gICAgICAgIGlmIChcbiAgICAgICAgICBhY3R1YWxQZXJtaXNzaW9ucz8uQWNjZXNzR3JvdXBNZW1iZXJMaW1pdE1hcD8uZmluZCgobWFwKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICBtYXAuU2NvcGVUeXBlID09PSAnQW55JyAmJlxuICAgICAgICAgICAgICBtYXAuQWNjZXNzR3JvdXBLZXlOYW1lID09PSAnJyAmJlxuICAgICAgICAgICAgICBtYXAuT3BlcmF0aW9uVHlwZSA9PT0gJ0FueScgJiZcbiAgICAgICAgICAgICAgbWFwLk9wQ291bnQgPj1cbiAgICAgICAgICAgICAgICBub3JtYWxpemVDb3VudChcbiAgICAgICAgICAgICAgICAgIGV4cGVjdGVkUGVybWlzc2lvbnM/LkFjY2Vzc0dyb3VwTWVtYmVyTGltaXRNYXA/LltcbiAgICAgICAgICAgICAgICAgICAgTnVtYmVyKHBhdGhbMV0pXG4gICAgICAgICAgICAgICAgICBdPy5PcENvdW50XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBc3NvY2lhdGlvbkxpbWl0TWFwJzpcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGFjdHVhbFBlcm1pc3Npb25zPy5Bc3NvY2lhdGlvbkxpbWl0TWFwPy5maW5kKChtYXApID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIG1hcC5Bc3NvY2lhdGlvbkNsYXNzID09PVxuICAgICAgICAgICAgICAgIGV4cGVjdGVkUGVybWlzc2lvbnM/LkFzc29jaWF0aW9uTGltaXRNYXA/LltOdW1iZXIocGF0aFsxXSldXG4gICAgICAgICAgICAgICAgICA/LkFzc29jaWF0aW9uQ2xhc3MgJiZcbiAgICAgICAgICAgICAgbWFwLkFwcFNjb3BlVHlwZSA9PT0gJ0FueScgJiZcbiAgICAgICAgICAgICAgbWFwLkFzc29jaWF0aW9uVHlwZSA9PT0gJycgJiZcbiAgICAgICAgICAgICAgbWFwLkFzc29jaWF0aW9uT3BlcmF0aW9uID09PSAnQW55JyAmJlxuICAgICAgICAgICAgICBtYXAuT3BDb3VudCA+PVxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZUNvdW50KFxuICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRQZXJtaXNzaW9ucz8uQXNzb2NpYXRpb25MaW1pdE1hcD8uW051bWJlcihwYXRoWzFdKV1cbiAgICAgICAgICAgICAgICAgICAgPy5PcENvdW50XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDcmVhdG9yQ29pbk9wZXJhdGlvbkxpbWl0TWFwJzpcbiAgICAgICAgaWYgKGFjdHVhbFBlcm1pc3Npb25zPy5DcmVhdG9yQ29pbk9wZXJhdGlvbkxpbWl0TWFwPy5bJyddKSB7XG4gICAgICAgICAgcGF0aCA9XG4gICAgICAgICAgICB0eXBlb2YgYWN0dWFsUGVybWlzc2lvbnM/LkNyZWF0b3JDb2luT3BlcmF0aW9uTGltaXRNYXBbJyddPy5hbnkgPT09XG4gICAgICAgICAgICAnbnVtYmVyJ1xuICAgICAgICAgICAgICA/IFsnQ3JlYXRvckNvaW5PcGVyYXRpb25MaW1pdE1hcCcsICcnLCAnYW55J11cbiAgICAgICAgICAgICAgOiBbJ0NyZWF0b3JDb2luT3BlcmF0aW9uTGltaXRNYXAnLCAnJywgcGF0aFtwYXRoLmxlbmd0aCAtIDFdXTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ05GVE9wZXJhdGlvbkxpbWl0TWFwJzpcbiAgICAgICAgaWYgKGFjdHVhbFBlcm1pc3Npb25zPy5ORlRPcGVyYXRpb25MaW1pdE1hcD8uWycnXT8uWzBdKSB7XG4gICAgICAgICAgcGF0aCA9XG4gICAgICAgICAgICB0eXBlb2YgYWN0dWFsUGVybWlzc2lvbnM/Lk5GVE9wZXJhdGlvbkxpbWl0TWFwPy5bJyddPy5bMF0/LmFueSA9PT1cbiAgICAgICAgICAgICdudW1iZXInXG4gICAgICAgICAgICAgID8gWydORlRPcGVyYXRpb25MaW1pdE1hcCcsICcnLCAnMCcsICdhbnknXVxuICAgICAgICAgICAgICA6IFsnTkZUT3BlcmF0aW9uTGltaXRNYXAnLCAnJywgJzAnLCBwYXRoW3BhdGgubGVuZ3RoIC0gMV1dO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdHVhbFZhbCA9IGdldERlZXBWYWx1ZShhY3R1YWxQZXJtaXNzaW9ucywgcGF0aCk7XG5cbiAgICBpZiAoXG4gICAgICB0eXBlb2YgYWN0dWFsVmFsID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgKHR5cGVvZiBhY3R1YWxWYWwgPT09ICdudW1iZXInICYmXG4gICAgICAgIGFjdHVhbFZhbCA8IG5vcm1hbGl6ZUNvdW50KGV4cGVjdGVkVmFsKSkgfHxcbiAgICAgICh0eXBlb2YgYWN0dWFsVmFsID09PSAnc3RyaW5nJyAmJiBhY3R1YWxWYWwgIT09IGV4cGVjdGVkVmFsKVxuICAgICkge1xuICAgICAgaGFzQWxsUGVybWlzc2lvbnMgPSBmYWxzZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBoYXNBbGxQZXJtaXNzaW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2UoXG4gIHNwZW5kaW5nTGltaXRPcHRpb25zOiBQYXJ0aWFsPFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlT3B0aW9ucz5cbik6IFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlIHtcbiAgaWYgKHNwZW5kaW5nTGltaXRPcHRpb25zLklzVW5saW1pdGVkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIElzVW5saW1pdGVkOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICBpZiAoc3BlbmRpbmdMaW1pdE9wdGlvbnMuR2xvYmFsREVTT0xpbWl0Py50b1N0cmluZygpID09PSAnVU5MSU1JVEVEJykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdHbG9iYWxERVNPTGltaXQgY2Fubm90IGJlIHVubGltaXRlZC4gWW91IG11c3Qgc3BlY2lmeSBhIHNwZWNpZmljIGxpbWl0LCBvciBzZXQgdGhlIElzVW5saW1pdGVkIGZsYWcgdG8gdHJ1ZS4nXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2UgPSB7fTtcblxuICB3YWxrT2JqKFxuICAgIHNwZW5kaW5nTGltaXRPcHRpb25zLFxuICAgICh2YWwsIHBhdGgpID0+IHtcbiAgICAgIHNldERlZXBWYWx1ZShyZXN1bHQsIHBhdGgsIHZhbCA9PT0gJ1VOTElNSVRFRCcgPyAxZTkgOiB2YWwpO1xuICAgIH0sXG4gICAgW11cbiAgKTtcblxuICBpZiAocmVzdWx0LkFjY2Vzc0dyb3VwTGltaXRNYXApIHtcbiAgICByZXN1bHQuQWNjZXNzR3JvdXBMaW1pdE1hcCA9IE9iamVjdC52YWx1ZXMocmVzdWx0LkFjY2Vzc0dyb3VwTGltaXRNYXApO1xuICB9XG4gIGlmIChyZXN1bHQuQWNjZXNzR3JvdXBNZW1iZXJMaW1pdE1hcCkge1xuICAgIHJlc3VsdC5BY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwID0gT2JqZWN0LnZhbHVlcyhcbiAgICAgIHJlc3VsdC5BY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwXG4gICAgKTtcbiAgfVxuICBpZiAocmVzdWx0LkFzc29jaWF0aW9uTGltaXRNYXApIHtcbiAgICByZXN1bHQuQXNzb2NpYXRpb25MaW1pdE1hcCA9IE9iamVjdC52YWx1ZXMocmVzdWx0LkFzc29jaWF0aW9uTGltaXRNYXApO1xuICAgIC8vIFZhbGlkYXRlIGVhY2ggYXNzb2NpYXRpb24gbGltaXQgb2JqZWN0XG4gICAgcmVzdWx0LkFzc29jaWF0aW9uTGltaXRNYXAuZm9yRWFjaCgoYXNzb2NpYXRpb25MaW1pdEl0ZW0pID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgYXNzb2NpYXRpb25MaW1pdEl0ZW0uQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgJiZcbiAgICAgICAgYXNzb2NpYXRpb25MaW1pdEl0ZW0uQXBwU2NvcGVUeXBlID09PSAnQW55J1xuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgbXVzdCBiZSBzZXQgdG8gdW5kZWZpbmVkIG9yIGFuIGVtcHR5IHN0cmluZyBpZiBBcHBTY29wZVR5cGUgaXMgQW55LiBZb3UgcHJvdmlkZWQgJHthc3NvY2lhdGlvbkxpbWl0SXRlbS5BcHBQdWJsaWNLZXlCYXNlNThDaGVja31gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgICEvXig/OkJDMXx0QkMpLisvLnRlc3QoYXNzb2NpYXRpb25MaW1pdEl0ZW0uQXBwUHVibGljS2V5QmFzZTU4Q2hlY2spICYmXG4gICAgICAgIGFzc29jaWF0aW9uTGltaXRJdGVtLkFwcFNjb3BlVHlwZSA9PT0gJ1Njb3BlZCdcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEFwcFB1YmxpY0tleUJhc2U1OENoZWNrIG11c3QgYmUgc2V0IHRvIGEgdmFsaWQgcHVibGljIGtleSBpZiBBcHBTY29wZVR5cGUgaXMgU2NvcGVkLiBZb3UgcHJvdmlkZWQ6ICR7YXNzb2NpYXRpb25MaW1pdEl0ZW0uQXBwUHVibGljS2V5QmFzZTU4Q2hlY2t9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmVzdWx0LlRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcCA9IHJlc3VsdC5UcmFuc2FjdGlvbkNvdW50TGltaXRNYXAgPz8ge307XG5cbiAgaWYgKFxuICAgIHR5cGVvZiByZXN1bHQuVHJhbnNhY3Rpb25Db3VudExpbWl0TWFwWydBVVRIT1JJWkVfREVSSVZFRF9LRVknXSA9PT1cbiAgICAndW5kZWZpbmVkJ1xuICApIHtcbiAgICByZXN1bHQuVHJhbnNhY3Rpb25Db3VudExpbWl0TWFwID0ge1xuICAgICAgLi4ucmVzdWx0LlRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcCxcbiAgICAgIEFVVEhPUklaRV9ERVJJVkVEX0tFWTogMSxcbiAgICB9O1xuICB9IGVsc2UgaWYgKHJlc3VsdC5UcmFuc2FjdGlvbkNvdW50TGltaXRNYXBbJ0FVVEhPUklaRV9ERVJJVkVEX0tFWSddIDwgMCkge1xuICAgIGRlbGV0ZSByZXN1bHQuVHJhbnNhY3Rpb25Db3VudExpbWl0TWFwWydBVVRIT1JJWkVfREVSSVZFRF9LRVknXTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHdhbGtPYmooXG4gIG5vZGU6IGFueSxcbiAgY2FsbGJhY2s6ICh2YWw6IGFueSwgcGF0aDogc3RyaW5nW10pID0+IHZvaWQsXG4gIHBhdGg6IHN0cmluZ1tdID0gW11cbikge1xuICBpZiAodHlwZW9mIG5vZGUgPT09ICdvYmplY3QnICYmIG5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobm9kZSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3YWxrT2JqKG5vZGVba2V5c1tpXV0sIGNhbGxiYWNrLCBwYXRoLmNvbmNhdChrZXlzW2ldKSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNhbGxiYWNrKG5vZGUsIHBhdGgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldERlZXBWYWx1ZShvYmo6IGFueSwgcGF0aDogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBjdXJyS2V5ID0gcGF0aFswXTtcblxuICBpZiAoXG4gICAgb2JqID09PSBudWxsIHx8XG4gICAgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHxcbiAgICB0eXBlb2Ygb2JqW2N1cnJLZXldID09PSAndW5kZWZpbmVkJ1xuICApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAocGF0aC5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gb2JqW2N1cnJLZXldO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBnZXREZWVwVmFsdWUob2JqW2N1cnJLZXldLCBwYXRoLnNsaWNlKDEpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzZXREZWVwVmFsdWUob2JqOiBhbnksIHBhdGg6IHN0cmluZ1tdLCB2YWx1ZTogYW55KSB7XG4gIGNvbnN0IGN1cnJLZXkgPSBwYXRoWzBdO1xuICBpZiAodHlwZW9mIG9ialtjdXJyS2V5XSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBvYmpbY3VycktleV0gPSB7fTtcbiAgfVxuXG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMSkge1xuICAgIG9ialtjdXJyS2V5XSA9IHZhbHVlO1xuICB9IGVsc2Uge1xuICAgIHNldERlZXBWYWx1ZShvYmpbY3VycktleV0sIHBhdGguc2xpY2UoMSksIHZhbHVlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVDb3VudChjb3VudD86IG51bWJlciB8ICdVTkxJTUlURUQnKSB7XG4gIC8vIE5PVEU6IElmIGNoZWNraW5nIGZvciB1bmxpbWl0ZWQsIHdlIGp1c3QgY2hlY2sgaWYgaXQncyBncmVhdGVyIHRoYW4gMVxuICAvLyBiZWNhdXNlIHRoZXJlIGlzIG5vIGdvb2Qgd2F5IHRvIGtub3cgaWYgdGhlIG9yaWdpbmFsIHZhbHVlIHdhcyAnVU5MSU1JVEVEJ1xuICAvLyBvciBzb21lIG90aGVyIG51bWVyaWMuICBBcyBsb25nIGFzIHRoZSB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gMSwgd2UganVzdCBsZXRcbiAgLy8gaXQgcGFzcyBhcyAnVU5MSU1JVEVELicgSW4gdGhlIGVuZCB0aGlzIHNob3VsZG4ndCBtYXR0ZXIgc2luY2Ugd2UgZmFpbCB0aGVcbiAgLy8gY2hlY2sgaWYgdGhlcmUgYXJlIG5vIG1vcmUgdHJhbnNhY3Rpb25zIGxlZnQgdG8gc3BlbmQuXG4gIHJldHVybiBjb3VudCA9PT0gJ1VOTElNSVRFRCcgfHwgY291bnQgPT09IDFlOSA/IDEgOiBjb3VudCA/PyAwO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWRlbnRpdHkvcGVybWlzc2lvbnMtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxVQUFVLGdDQUFnQyxDQUM5QyxtQkFBNEQsRUFDNUQsaUJBQW1EO0lBRW5ELElBQUksaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBRTdCLG9FQUFvRTtJQUNwRSxJQUFJLGlCQUFpQixFQUFFLFdBQVcsRUFBRTtRQUNsQyxPQUFPLGlCQUFpQixDQUFDO0tBQzFCO0lBRUQsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQ2pELDBFQUEwRTtRQUMxRSxzRUFBc0U7UUFDdEUscUVBQXFFO1FBQ3JFLHdFQUF3RTtRQUN4RSxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2pCLEtBQUsscUJBQXFCO2dCQUN4QixJQUNFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUNuRCxPQUFPLENBQ0wsR0FBRyxDQUFDLFNBQVMsS0FBSyxLQUFLO3dCQUN2QixHQUFHLENBQUMsa0JBQWtCLEtBQUssRUFBRTt3QkFDN0IsR0FBRyxDQUFDLGFBQWEsS0FBSyxLQUFLO3dCQUMzQixHQUFHLENBQUMsT0FBTzs0QkFDVCxjQUFjLENBQ1osbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0NBQ3pELEVBQUUsT0FBTyxDQUNaLENBQ0osQ0FBQztnQkFDSixDQUFDLENBQUMsRUFDRjtvQkFDQSxPQUFPO2lCQUNSO2dCQUNELE1BQU07WUFDUixLQUFLLDJCQUEyQjtnQkFDOUIsSUFDRSxpQkFBaUIsRUFBRSx5QkFBeUIsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLEVB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QUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQ2xEO0FBQ0gsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLEtBQTRCO0lBQ2xELHdFQUF3RTtJQUN4RSw2RUFBNkU7SUFDN0UsOEVBQThFO0lBQzlFLDZFQUE2RTtJQUM3RSx5REFBeUQ7SUFDekQsT0FBTyxLQUFLLEtBQUssV0FBVyxJQUFJLEtBQUssS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztBQUNqRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2UgfSBmcm9tICcuLi9iYWNrZW5kLXR5cGVzL2luZGV4LmpzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlT3B0aW9ucyB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZVRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdHMoXG4gIGV4cGVjdGVkUGVybWlzc2lvbnM6IFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlT3B0aW9ucyxcbiAgYWN0dWFsUGVybWlzc2lvbnM6IFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlXG4pOiBib29sZWFuIHtcbiAgbGV0IGhhc0FsbFBlcm1pc3Npb25zID0gdHJ1ZTtcblxuICAvLyBpZiB0aGUga2V5IGlzIHVubGltaXRlZCB0aGVuIHdlIGRvbid0IG5lZWQgdG8gY2hlY2sgYW55dGhpbmcgZWxzZVxuICBpZiAoYWN0dWFsUGVybWlzc2lvbnM/LklzVW5saW1pdGVkKSB7XG4gICAgcmV0dXJuIGhhc0FsbFBlcm1pc3Npb25zO1xuICB9XG5cbiAgd2Fsa09iaihleHBlY3RlZFBlcm1pc3Npb25zLCAoZXhwZWN0ZWRWYWwsIHBhdGgpID0+IHtcbiAgICAvLyBJZiB0aGUgYWN0dWFsIHBlcm1pc3Npb25zIGFyZSBjb25maWd1cmVkIHdpdGggYW55IG9mIHRoZSBzcGVjaWFsIFwiYWxsb3dcbiAgICAvLyBhbnl0aGluZ1wiIG1hcHBpbmdzIHRoZW4gd2UgcmV3cml0ZSB0aGUgbG9va3VwIHBhdGggZm9yIGFueSBleHBsaWNpdFxuICAgIC8vIG1hcHBpbmcgdG8gbWF0Y2ggb24gdGhlIFwiYWxsb3cgYW55XCIgbWFwcGluZy4gSW4gc29tZSBjYXNlcywgc2ltcGx5XG4gICAgLy8gY29tcGFyZSB0aGUgT3BDb3VudHMgYW5kIHJldHVybiBlYXJseSBpZiB0aGVpciBjYW4gYmUgb25seSAxIG1hcHBpbmcuXG4gICAgc3dpdGNoIChwYXRoPy5bMF0pIHtcbiAgICAgIGNhc2UgJ0FjY2Vzc0dyb3VwTGltaXRNYXAnOlxuICAgICAgICBpZiAoXG4gICAgICAgICAgYWN0dWFsUGVybWlzc2lvbnM/LkFjY2Vzc0dyb3VwTGltaXRNYXA/LmZpbmQoKG1hcCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgbWFwLlNjb3BlVHlwZSA9PT0gJ0FueScgJiZcbiAgICAgICAgICAgICAgbWFwLkFjY2Vzc0dyb3VwS2V5TmFtZSA9PT0gJycgJiZcbiAgICAgICAgICAgICAgbWFwLk9wZXJhdGlvblR5cGUgPT09ICdBbnknICYmXG4gICAgICAgICAgICAgIG1hcC5PcENvdW50ID49XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplQ291bnQoXG4gICAgICAgICAgICAgICAgICBleHBlY3RlZFBlcm1pc3Npb25zPy5BY2Nlc3NHcm91cExpbWl0TWFwPy5bTnVtYmVyKHBhdGhbMV0pXVxuICAgICAgICAgICAgICAgICAgICA/Lk9wQ291bnRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0FjY2Vzc0dyb3VwTWVtYmVyTGltaXRNYXAnOlxuICAgICAgICBpZiAoXG4gICAgICAgICAgYWN0dWFsUGVybWlzc2lvbnM/LkFjY2Vzc0dyb3VwTWVtYmVyTGltaXRNYXA/LmZpbmQoKG1hcCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgbWFwLlNjb3BlVHlwZSA9PT0gJ0FueScgJiZcbiAgICAgICAgICAgICAgbWFwLkFjY2Vzc0dyb3VwS2V5TmFtZSA9PT0gJycgJiZcbiAgICAgICAgICAgICAgbWFwLk9wZXJhdGlvblR5cGUgPT09ICdBbnknICYmXG4gICAgICAgICAgICAgIG1hcC5PcENvdW50ID49XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplQ291bnQoXG4gICAgICAgICAgICAgICAgICBleHBlY3RlZFBlcm1pc3Npb25zPy5BY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwPy5bXG4gICAgICAgICAgICAgICAgICAgIE51bWJlcihwYXRoWzFdKVxuICAgICAgICAgICAgICAgICAgXT8uT3BDb3VudFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXNzb2NpYXRpb25MaW1pdE1hcCc6XG4gICAgICAgIGlmIChcbiAgICAgICAgICBhY3R1YWxQZXJtaXNzaW9ucz8uQXNzb2NpYXRpb25MaW1pdE1hcD8uZmluZCgobWFwKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICBtYXAuQXNzb2NpYXRpb25DbGFzcyA9PT1cbiAgICAgICAgICAgICAgICBleHBlY3RlZFBlcm1pc3Npb25zPy5Bc3NvY2lhdGlvbkxpbWl0TWFwPy5bTnVtYmVyKHBhdGhbMV0pXVxuICAgICAgICAgICAgICAgICAgPy5Bc3NvY2lhdGlvbkNsYXNzICYmXG4gICAgICAgICAgICAgIG1hcC5BcHBTY29wZVR5cGUgPT09ICdBbnknICYmXG4gICAgICAgICAgICAgIG1hcC5Bc3NvY2lhdGlvblR5cGUgPT09ICcnICYmXG4gICAgICAgICAgICAgIG1hcC5Bc3NvY2lhdGlvbk9wZXJhdGlvbiA9PT0gJ0FueScgJiZcbiAgICAgICAgICAgICAgbWFwLk9wQ291bnQgPj1cbiAgICAgICAgICAgICAgICBub3JtYWxpemVDb3VudChcbiAgICAgICAgICAgICAgICAgIGV4cGVjdGVkUGVybWlzc2lvbnM/LkFzc29jaWF0aW9uTGltaXRNYXA/LltOdW1iZXIocGF0aFsxXSldXG4gICAgICAgICAgICAgICAgICAgID8uT3BDb3VudFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQ3JlYXRvckNvaW5PcGVyYXRpb25MaW1pdE1hcCc6XG4gICAgICAgIGlmIChhY3R1YWxQZXJtaXNzaW9ucz8uQ3JlYXRvckNvaW5PcGVyYXRpb25MaW1pdE1hcD8uWycnXSkge1xuICAgICAgICAgIHBhdGggPVxuICAgICAgICAgICAgdHlwZW9mIGFjdHVhbFBlcm1pc3Npb25zPy5DcmVhdG9yQ29pbk9wZXJhdGlvbkxpbWl0TWFwWycnXT8uYW55ID09PVxuICAgICAgICAgICAgJ251bWJlcidcbiAgICAgICAgICAgICAgPyBbJ0NyZWF0b3JDb2luT3BlcmF0aW9uTGltaXRNYXAnLCAnJywgJ2FueSddXG4gICAgICAgICAgICAgIDogWydDcmVhdG9yQ29pbk9wZXJhdGlvbkxpbWl0TWFwJywgJycsIHBhdGhbcGF0aC5sZW5ndGggLSAxXV07XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdORlRPcGVyYXRpb25MaW1pdE1hcCc6XG4gICAgICAgIGlmIChhY3R1YWxQZXJtaXNzaW9ucz8uTkZUT3BlcmF0aW9uTGltaXRNYXA/LlsnJ10/LlswXSkge1xuICAgICAgICAgIHBhdGggPVxuICAgICAgICAgICAgdHlwZW9mIGFjdHVhbFBlcm1pc3Npb25zPy5ORlRPcGVyYXRpb25MaW1pdE1hcD8uWycnXT8uWzBdPy5hbnkgPT09XG4gICAgICAgICAgICAnbnVtYmVyJ1xuICAgICAgICAgICAgICA/IFsnTkZUT3BlcmF0aW9uTGltaXRNYXAnLCAnJywgJzAnLCAnYW55J11cbiAgICAgICAgICAgICAgOiBbJ05GVE9wZXJhdGlvbkxpbWl0TWFwJywgJycsICcwJywgcGF0aFtwYXRoLmxlbmd0aCAtIDFdXTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zdCBhY3R1YWxWYWwgPSBnZXREZWVwVmFsdWUoYWN0dWFsUGVybWlzc2lvbnMsIHBhdGgpO1xuXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIGFjdHVhbFZhbCA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICAgICh0eXBlb2YgYWN0dWFsVmFsID09PSAnbnVtYmVyJyAmJlxuICAgICAgICBhY3R1YWxWYWwgPCBub3JtYWxpemVDb3VudChleHBlY3RlZFZhbCkpIHx8XG4gICAgICAodHlwZW9mIGFjdHVhbFZhbCA9PT0gJ3N0cmluZycgJiYgYWN0dWFsVmFsICE9PSBleHBlY3RlZFZhbClcbiAgICApIHtcbiAgICAgIGhhc0FsbFBlcm1pc3Npb25zID0gZmFsc2U7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gaGFzQWxsUGVybWlzc2lvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlKFxuICBzcGVuZGluZ0xpbWl0T3B0aW9uczogUGFydGlhbDxUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZU9wdGlvbnM+XG4pOiBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZSB7XG4gIGlmIChzcGVuZGluZ0xpbWl0T3B0aW9ucy5Jc1VubGltaXRlZCkge1xuICAgIHJldHVybiB7XG4gICAgICBJc1VubGltaXRlZDogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgaWYgKHNwZW5kaW5nTGltaXRPcHRpb25zLkdsb2JhbERFU09MaW1pdD8udG9TdHJpbmcoKSA9PT0gJ1VOTElNSVRFRCcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnR2xvYmFsREVTT0xpbWl0IGNhbm5vdCBiZSB1bmxpbWl0ZWQuIFlvdSBtdXN0IHNwZWNpZnkgYSBzcGVjaWZpYyBsaW1pdCwgb3Igc2V0IHRoZSBJc1VubGltaXRlZCBmbGFnIHRvIHRydWUuJ1xuICAgICk7XG4gIH1cblxuICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlID0ge307XG5cbiAgd2Fsa09iaihcbiAgICBzcGVuZGluZ0xpbWl0T3B0aW9ucyxcbiAgICAodmFsLCBwYXRoKSA9PiB7XG4gICAgICBzZXREZWVwVmFsdWUocmVzdWx0LCBwYXRoLCB2YWwgPT09ICdVTkxJTUlURUQnID8gMWU5IDogdmFsKTtcbiAgICB9LFxuICAgIFtdXG4gICk7XG5cbiAgaWYgKHJlc3VsdC5BY2Nlc3NHcm91cExpbWl0TWFwKSB7XG4gICAgcmVzdWx0LkFjY2Vzc0dyb3VwTGltaXRNYXAgPSBPYmplY3QudmFsdWVzKHJlc3VsdC5BY2Nlc3NHcm91cExpbWl0TWFwKTtcbiAgfVxuICBpZiAocmVzdWx0LkFjY2Vzc0dyb3VwTWVtYmVyTGltaXRNYXApIHtcbiAgICByZXN1bHQuQWNjZXNzR3JvdXBNZW1iZXJMaW1pdE1hcCA9IE9iamVjdC52YWx1ZXMoXG4gICAgICByZXN1bHQuQWNjZXNzR3JvdXBNZW1iZXJMaW1pdE1hcFxuICAgICk7XG4gIH1cbiAgaWYgKHJlc3VsdC5Bc3NvY2lhdGlvbkxpbWl0TWFwKSB7XG4gICAgcmVzdWx0LkFzc29jaWF0aW9uTGltaXRNYXAgPSBPYmplY3QudmFsdWVzKHJlc3VsdC5Bc3NvY2lhdGlvbkxpbWl0TWFwKTtcbiAgICAvLyBWYWxpZGF0ZSBlYWNoIGFzc29jaWF0aW9uIGxpbWl0IG9iamVjdFxuICAgIHJlc3VsdC5Bc3NvY2lhdGlvbkxpbWl0TWFwLmZvckVhY2goKGFzc29jaWF0aW9uTGltaXRJdGVtKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIGFzc29jaWF0aW9uTGltaXRJdGVtLkFwcFB1YmxpY0tleUJhc2U1OENoZWNrICYmXG4gICAgICAgIGFzc29jaWF0aW9uTGltaXRJdGVtLkFwcFNjb3BlVHlwZSA9PT0gJ0FueSdcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEFwcFB1YmxpY0tleUJhc2U1OENoZWNrIG11c3QgYmUgc2V0IHRvIHVuZGVmaW5lZCBvciBhbiBlbXB0eSBzdHJpbmcgaWYgQXBwU2NvcGVUeXBlIGlzIEFueS4gWW91IHByb3ZpZGVkICR7YXNzb2NpYXRpb25MaW1pdEl0ZW0uQXBwUHVibGljS2V5QmFzZTU4Q2hlY2t9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICAhL14oPzpCQzF8dEJDKS4rLy50ZXN0KGFzc29jaWF0aW9uTGltaXRJdGVtLkFwcFB1YmxpY0tleUJhc2U1OENoZWNrKSAmJlxuICAgICAgICBhc3NvY2lhdGlvbkxpbWl0SXRlbS5BcHBTY29wZVR5cGUgPT09ICdTY29wZWQnXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBBcHBQdWJsaWNLZXlCYXNlNThDaGVjayBtdXN0IGJlIHNldCB0byBhIHZhbGlkIHB1YmxpYyBrZXkgaWYgQXBwU2NvcGVUeXBlIGlzIFNjb3BlZC4gWW91IHByb3ZpZGVkOiAke2Fzc29jaWF0aW9uTGltaXRJdGVtLkFwcFB1YmxpY0tleUJhc2U1OENoZWNrfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJlc3VsdC5UcmFuc2FjdGlvbkNvdW50TGltaXRNYXAgPSByZXN1bHQuVHJhbnNhY3Rpb25Db3VudExpbWl0TWFwID8/IHt9O1xuXG4gIGlmIChcbiAgICB0eXBlb2YgcmVzdWx0LlRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcFsnQVVUSE9SSVpFX0RFUklWRURfS0VZJ10gPT09XG4gICAgJ3VuZGVmaW5lZCdcbiAgKSB7XG4gICAgcmVzdWx0LlRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcCA9IHtcbiAgICAgIC4uLnJlc3VsdC5UcmFuc2FjdGlvbkNvdW50TGltaXRNYXAsXG4gICAgICBBVVRIT1JJWkVfREVSSVZFRF9LRVk6IDEsXG4gICAgfTtcbiAgfSBlbHNlIGlmIChyZXN1bHQuVHJhbnNhY3Rpb25Db3VudExpbWl0TWFwWydBVVRIT1JJWkVfREVSSVZFRF9LRVknXSA8IDApIHtcbiAgICBkZWxldGUgcmVzdWx0LlRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcFsnQVVUSE9SSVpFX0RFUklWRURfS0VZJ107XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiB3YWxrT2JqKFxuICBub2RlOiBhbnksXG4gIGNhbGxiYWNrOiAodmFsOiBhbnksIHBhdGg6IHN0cmluZ1tdKSA9PiB2b2lkLFxuICBwYXRoOiBzdHJpbmdbXSA9IFtdXG4pIHtcbiAgaWYgKHR5cGVvZiBub2RlID09PSAnb2JqZWN0JyAmJiBub2RlICE9PSBudWxsKSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG5vZGUpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgd2Fsa09iaihub2RlW2tleXNbaV1dLCBjYWxsYmFjaywgcGF0aC5jb25jYXQoa2V5c1tpXSkpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjYWxsYmFjayhub2RlLCBwYXRoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXREZWVwVmFsdWUob2JqOiBhbnksIHBhdGg6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3QgY3VycktleSA9IHBhdGhbMF07XG5cbiAgaWYgKFxuICAgIG9iaiA9PT0gbnVsbCB8fFxuICAgIHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8XG4gICAgdHlwZW9mIG9ialtjdXJyS2V5XSA9PT0gJ3VuZGVmaW5lZCdcbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHBhdGgubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIG9ialtjdXJyS2V5XTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2V0RGVlcFZhbHVlKG9ialtjdXJyS2V5XSwgcGF0aC5zbGljZSgxKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0RGVlcFZhbHVlKG9iajogYW55LCBwYXRoOiBzdHJpbmdbXSwgdmFsdWU6IGFueSkge1xuICBjb25zdCBjdXJyS2V5ID0gcGF0aFswXTtcbiAgaWYgKHR5cGVvZiBvYmpbY3VycktleV0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgb2JqW2N1cnJLZXldID0ge307XG4gIH1cblxuICBpZiAocGF0aC5sZW5ndGggPT09IDEpIHtcbiAgICBvYmpbY3VycktleV0gPSB2YWx1ZTtcbiAgfSBlbHNlIHtcbiAgICBzZXREZWVwVmFsdWUob2JqW2N1cnJLZXldLCBwYXRoLnNsaWNlKDEpLCB2YWx1ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplQ291bnQoY291bnQ/OiBudW1iZXIgfCAnVU5MSU1JVEVEJykge1xuICAvLyBOT1RFOiBJZiBjaGVja2luZyBmb3IgdW5saW1pdGVkLCB3ZSBqdXN0IGNoZWNrIGlmIGl0J3MgZ3JlYXRlciB0aGFuIDFcbiAgLy8gYmVjYXVzZSB0aGVyZSBpcyBubyBnb29kIHdheSB0byBrbm93IGlmIHRoZSBvcmlnaW5hbCB2YWx1ZSB3YXMgJ1VOTElNSVRFRCdcbiAgLy8gb3Igc29tZSBvdGhlciBudW1lcmljLiAgQXMgbG9uZyBhcyB0aGUgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIDEsIHdlIGp1c3QgbGV0XG4gIC8vIGl0IHBhc3MgYXMgJ1VOTElNSVRFRC4nIEluIHRoZSBlbmQgdGhpcyBzaG91bGRuJ3QgbWF0dGVyIHNpbmNlIHdlIGZhaWwgdGhlXG4gIC8vIGNoZWNrIGlmIHRoZXJlIGFyZSBubyBtb3JlIHRyYW5zYWN0aW9ucyBsZWZ0IHRvIHNwZW5kLlxuICByZXR1cm4gY291bnQgPT09ICdVTkxJTUlURUQnIHx8IGNvdW50ID09PSAxZTkgPyAxIDogY291bnQgPz8gMDtcbn1cbiJdfQ==

@@ -1,2 +0,2 @@

import { IdentityResponse } from './types';
import { IdentityResponse } from './types.js';
export declare const parseQueryParams: (queryParams: URLSearchParams) => IdentityResponse;

@@ -9,2 +9,2 @@ export const parseQueryParams = (queryParams) => {

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcGFyYW0tdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWRlbnRpdHkvcXVlcnktcGFyYW0tdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FDOUIsV0FBNEIsRUFDVixFQUFFO0lBQ3BCLE1BQU0sTUFBTSxHQUFHLEVBQVMsQ0FBQztJQUV6QixXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ2pDLE1BQU0sQ0FBQyxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLE1BQTBCLENBQUM7QUFDcEMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSWRlbnRpdHlSZXNwb25zZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgcGFyc2VRdWVyeVBhcmFtcyA9IChcbiAgcXVlcnlQYXJhbXM6IFVSTFNlYXJjaFBhcmFtc1xuKTogSWRlbnRpdHlSZXNwb25zZSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IHt9IGFzIGFueTtcblxuICBxdWVyeVBhcmFtcy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgY29uc3QgdiA9IGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7XG4gICAgcmVzdWx0W2tleV0gPSBrZXkgPT09ICdwYXlsb2FkJyA/IEpTT04ucGFyc2UodikgOiB2O1xuICB9KTtcblxuICByZXR1cm4gcmVzdWx0IGFzIElkZW50aXR5UmVzcG9uc2U7XG59O1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcGFyYW0tdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWRlbnRpdHkvcXVlcnktcGFyYW0tdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FDOUIsV0FBNEIsRUFDVixFQUFFO0lBQ3BCLE1BQU0sTUFBTSxHQUFHLEVBQVMsQ0FBQztJQUV6QixXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ2pDLE1BQU0sQ0FBQyxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLE1BQTBCLENBQUM7QUFDcEMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSWRlbnRpdHlSZXNwb25zZSB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG5leHBvcnQgY29uc3QgcGFyc2VRdWVyeVBhcmFtcyA9IChcbiAgcXVlcnlQYXJhbXM6IFVSTFNlYXJjaFBhcmFtc1xuKTogSWRlbnRpdHlSZXNwb25zZSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IHt9IGFzIGFueTtcblxuICBxdWVyeVBhcmFtcy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgY29uc3QgdiA9IGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7XG4gICAgcmVzdWx0W2tleV0gPSBrZXkgPT09ICdwYXlsb2FkJyA/IEpTT04ucGFyc2UodikgOiB2O1xuICB9KTtcblxuICByZXR1cm4gcmVzdWx0IGFzIElkZW50aXR5UmVzcG9uc2U7XG59O1xuIl19

@@ -1,3 +0,3 @@

import { MsgDeSoTxn } from '../backend-types';
import { BinaryRecord } from './transcoders';
import { MsgDeSoTxn } from '../backend-types/index.js';
import { BinaryRecord } from './transcoders.js';
export declare class TransactionInput extends BinaryRecord {

@@ -4,0 +4,0 @@ id: Uint8Array;

@@ -1,3 +0,3 @@

import { TransactionNonce } from './transaction-transcoders';
import 'reflect-metadata';
import { TransactionNonce } from './transaction-transcoders.js';
export declare class BinaryRecord {

@@ -4,0 +4,0 @@ static fromBytes(bytes: Uint8Array): [BinaryRecord, Uint8Array];

@@ -1,4 +0,4 @@

import { bufToUvarint64, concatUint8Arrays, uvarint64ToBuf, } from './crypto-utils';
import { TransactionNonce } from './transaction-transcoders';
import 'reflect-metadata';
import { bufToUvarint64, concatUint8Arrays, uvarint64ToBuf, } from './crypto-utils.js';
import { TransactionNonce } from './transaction-transcoders.js';
export class BinaryRecord {

@@ -148,2 +148,2 @@ static fromBytes(bytes) {

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNjb2RlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWRlbnRpdHkvdHJhbnNjb2RlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGNBQWMsRUFDZCxpQkFBaUIsRUFDakIsY0FBYyxHQUNmLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxrQkFBa0IsQ0FBQztBQUMxQixNQUFNLE9BQU8sWUFBWTtJQUN2QixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQWlCO1FBQ2hDLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDMUIsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBRW5CLE1BQU0sV0FBVyxHQUNmLE9BQU8sQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVuRCxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRTtZQUMzQyxJQUFJLEtBQUssQ0FBQztZQUNWLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN0RCxNQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsT0FBTztRQUNMLE1BQU0sV0FBVyxHQUNmLE9BQU8sQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVqRCxJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixXQUFXLENB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QyxLQUFLLEVBQUUsRUFBRTtZQUNkLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNuQixNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0MsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFMUIsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdDLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixNQUFNLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTFCLE9BQU87Z0JBQ0wsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDbkIsQ0FBQztRQUNKLENBQUM7UUFDRCxLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNoQixNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzlELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTFDLE9BQU8saUJBQWlCLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBidWZUb1V2YXJpbnQ2NCxcbiAgY29uY2F0VWludDhBcnJheXMsXG4gIHV2YXJpbnQ2NFRvQnVmLFxufSBmcm9tICcuL2NyeXB0by11dGlscyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbk5vbmNlIH0gZnJvbSAnLi90cmFuc2FjdGlvbi10cmFuc2NvZGVycyc7XG5pbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuZXhwb3J0IGNsYXNzIEJpbmFyeVJlY29yZCB7XG4gIHN0YXRpYyBmcm9tQnl0ZXMoYnl0ZXM6IFVpbnQ4QXJyYXkpOiBbQmluYXJ5UmVjb3JkLCBVaW50OEFycmF5XSB7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IHRoaXMoKTtcbiAgICBsZXQgYnVmZmVyID0gYnl0ZXM7XG5cbiAgICBjb25zdCB0cmFuc2NvZGVyczogVHJhbnNjb2Rlck1ldGFkYXRhW10gPVxuICAgICAgUmVmbGVjdC5nZXRNZXRhZGF0YSgndHJhbnNjb2RlcnMnLCByZXN1bHQpIHx8IFtdO1xuXG4gICAgdHJhbnNjb2RlcnMuZm9yRWFjaCgoeyBuYW1lLCB0cmFuc2NvZGVyIH0pID0+IHtcbiAgICAgIGxldCB2YWx1ZTtcbiAgICAgIFt2YWx1ZSwgYnVmZmVyXSA9IHRyYW5zY29kZXIucmVhZC5jYWxsKHJlc3VsdCwgYnVmZmVyKTtcbiAgICAgIChyZXN1bHQgYXMgYW55KVtuYW1lXSA9IHZhbHVlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIFtyZXN1bHQsIGJ1ZmZlcl07XG4gIH1cblxuICB0b0J5dGVzKCk6IFVpbnQ4QXJyYXkge1xuICAgIGNvbnN0IHRyYW5zY29kZXJzOiBUcmFuc2NvZGVyTWV0YWRhdGFbXSA9XG4gICAgICBSZWZsZWN0LmdldE1ldGFkYXRhKCd0cmFuc2NvZGVycycsIHRoaXMpIHx8IFtdO1xuXG4gICAgbGV0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDApO1xuICAgIHRyYW5zY29kZXJzLmZvckVhY2goKHsgbmFtZSwgdHJhbnNjb2RlciB9KSA9PiB7XG4gICAgICBidWZmZXIgPSBjb25jYXRVaW50OEFycmF5cyhbXG4gICAgICAgIGJ1ZmZlcixcbiAgICAgICAgdHJhbnNjb2Rlci53cml0ZS5jYWxsKHRoaXMsICh0aGlzIGFzIGFueSlbbmFtZV0pLFxuICAgICAgXSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYnVmZmVyO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNjb2Rlck1ldGFkYXRhPFQgPSBhbnk+IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0cmFuc2NvZGVyOiBUcmFuc2NvZGVyPFQ+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVHJhbnNjb2RlPFQ+KHRyYW5zY29kZXI6IFRyYW5zY29kZXI8VD4pIHtcbiAgcmV0dXJuICh0YXJnZXQ6IGFueSwgbmFtZTogc3RyaW5nIHwgc3ltYm9sKSA9PiB7XG4gICAgY29uc3QgdHJhbnNjb2RlcnMgPSBSZWZsZWN0LmdldE1ldGFkYXRhKCd0cmFuc2NvZGVycycsIHRhcmdldCkgfHwgW107XG4gICAgdHJhbnNjb2RlcnMucHVzaCh7IG5hbWUsIHRyYW5zY29kZXIgfSk7XG4gICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgndHJhbnNjb2RlcnMnLCB0cmFuc2NvZGVycywgdGFyZ2V0KTtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2NvZGVyPFQ+IHtcbiAgcmVhZDogKGJ5dGVzOiBVaW50OEFycmF5KSA9PiBbVCwgVWludDhBcnJheV07XG4gIHdyaXRlOiAob2JqZWN0OiBUKSA9PiBVaW50OEFycmF5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcmlhbGl6YWJsZSB7XG4gIHRvQnl0ZXM6ICgpID0+IFVpbnQ4QXJyYXk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVzZXJpYWxpemFibGU8VD4ge1xuICBmcm9tQnl0ZXM6IChieXRlczogVWludDhBcnJheSkgPT4gW1QsIFVpbnQ4QXJyYXldO1xufVxuXG5leHBvcnQgY29uc3QgVXZhcmludDY0OiBUcmFuc2NvZGVyPG51bWJlcj4gPSB7XG4gIHJlYWQ6IChieXRlcykgPT4gYnVmVG9VdmFyaW50NjQoYnl0ZXMpLFxuICB3cml0ZTogKHVpbnQpID0+IHV2YXJpbnQ2NFRvQnVmKHVpbnQpLFxufTtcblxuZXhwb3J0IGNvbnN0IEJvb2xlYW46IFRyYW5zY29kZXI8Ym9vbGVhbj4gPSB7XG4gIHJlYWQ6IChieXRlcykgPT4gW2J5dGVzLmF0KDApICE9IDAsIGJ5dGVzLnNsaWNlKDEpXSxcbiAgd3JpdGU6IChib29sKSA9PiB7XG4gICAgcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShbYm9vbCA/IDEgOiAwXSk7XG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgVWludDg6IFRyYW5zY29kZXI8bnVtYmVyPiA9IHtcbiAgcmVhZDogKGJ5dGVzKSA9PiBbYnl0ZXMuYXQoMCkgYXMgbnVtYmVyLCBieXRlcy5zbGljZSgxKV0sXG4gIHdyaXRlOiAodWludCkgPT4ge1xuICAgIHJldHVybiBVaW50OEFycmF5LmZyb20oW3VpbnRdKTtcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBGaXhlZEJ1ZmZlciA9IChzaXplOiBudW1iZXIpOiBUcmFuc2NvZGVyPFVpbnQ4QXJyYXk+ID0+ICh7XG4gIHJlYWQ6IChieXRlcykgPT4gW2J5dGVzLnNsaWNlKDAsIHNpemUpLCBieXRlcy5zbGljZShzaXplKV0sXG4gIHdyaXRlOiAoYnl0ZXMpID0+IGJ5dGVzLFxufSk7XG5cbmV4cG9ydCBjb25zdCBWYXJCdWZmZXI6IFRyYW5zY29kZXI8VWludDhBcnJheT4gPSB7XG4gIHJlYWQ6IChieXRlcykgPT4ge1xuICAgIGNvbnN0IFtzaXplLCBidWZmZXJdID0gYnVmVG9VdmFyaW50NjQoYnl0ZXMpO1xuICAgIHJldHVybiBbYnVmZmVyLnNsaWNlKDAsIHNpemUpLCBidWZmZXIuc2xpY2Uoc2l6ZSldO1xuICB9LFxuICB3cml0ZTogKGJ5dGVzKSA9PiBjb25jYXRVaW50OEFycmF5cyhbdXZhcmludDY0VG9CdWYoYnl0ZXMubGVuZ3RoKSwgYnl0ZXNdKSxcbn07XG5leHBvcnQgY29uc3QgVHJhbnNhY3Rpb25Ob25jZVRyYW5zY29kZXI6IFRyYW5zY29kZXI8VHJhbnNhY3Rpb25Ob25jZSB8IG51bGw+ID0ge1xuICByZWFkOiAoYnl0ZXMpID0+IHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25Ob25jZS5mcm9tQnl0ZXMoYnl0ZXMpIGFzIFtUcmFuc2FjdGlvbk5vbmNlLCBVaW50OEFycmF5XTtcbiAgfSxcbiAgd3JpdGU6IChub25jZSkgPT4ge1xuICAgIGlmIChub25jZSkge1xuICAgICAgcmV0dXJuIGNvbmNhdFVpbnQ4QXJyYXlzKFtub25jZS50b0J5dGVzKCldKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO1xuICB9LFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIE9wdGlvbmFsPFQ+KHRyYW5zY29kZXI6IFRyYW5zY29kZXI8VD4pOiBUcmFuc2NvZGVyPFQgfCBudWxsPiB7XG4gIHJldHVybiB7XG4gICAgcmVhZDogKGJ5dGVzOiBVaW50OEFycmF5KSA9PlxuICAgICAgIWJ5dGVzLmxlbmd0aCA/IFtudWxsLCBieXRlc10gOiB0cmFuc2NvZGVyLnJlYWQoYnl0ZXMpLFxuICAgIHdyaXRlOiAodmFsdWU6IFQgfCBudWxsKSA9PlxuICAgICAgdmFsdWUgPT09IG51bGwgPyBuZXcgVWludDhBcnJheSgwKSA6IHRyYW5zY29kZXIud3JpdGUodmFsdWUpLFxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgQ2h1bmtCdWZmZXIgPSAod2lkdGg6IG51bWJlcik6IFRyYW5zY29kZXI8VWludDhBcnJheVtdPiA9PiAoe1xuICByZWFkOiAoYnl0ZXMpID0+IHtcbiAgICBjb25zdCBjb3VudEFuZEJ1ZmZlciA9IGJ1ZlRvVXZhcmludDY0KGJ5dGVzKTtcbiAgICBjb25zdCBjb3VudCA9IGNvdW50QW5kQnVmZmVyWzBdO1xuICAgIGxldCBidWZmZXIgPSBjb3VudEFuZEJ1ZmZlclsxXTtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgIHJlc3VsdC5wdXNoKGJ1ZmZlci5zbGljZSgwLCAzMykpO1xuICAgICAgYnVmZmVyID0gYnVmZmVyLnNsaWNlKDMzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW3Jlc3VsdCwgYnVmZmVyXTtcbiAgfSxcbiAgd3JpdGU6IChjaHVua3MpID0+XG4gICAgY29uY2F0VWludDhBcnJheXMoW3V2YXJpbnQ2NFRvQnVmKGNodW5rcy5sZW5ndGgpLCAuLi5jaHVua3NdKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgQXJyYXlPZiA9IDxcbiAgVCBleHRlbmRzIFNlcmlhbGl6YWJsZSxcbiAgQyBleHRlbmRzIERlc2VyaWFsaXphYmxlPFQ+ICYgeyBuZXcgKCk6IFQgfVxuPihcbiAga2xhc3M6IENcbik6IFRyYW5zY29kZXI8VFtdPiA9PiAoe1xuICByZWFkOiAoYnl0ZXMpID0+IHtcbiAgICBjb25zdCBjb3VudEFuZEJ1ZmZlciA9IGJ1ZlRvVXZhcmludDY0KGJ5dGVzKTtcbiAgICBjb25zdCBjb3VudCA9IGNvdW50QW5kQnVmZmVyWzBdO1xuICAgIGxldCBidWZmZXIgPSBjb3VudEFuZEJ1ZmZlclsxXTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgbGV0IG9iajtcbiAgICAgIFtvYmosIGJ1ZmZlcl0gPSBrbGFzcy5mcm9tQnl0ZXMoYnVmZmVyKTtcbiAgICAgIHJlc3VsdC5wdXNoKG9iaik7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtyZXN1bHQsIGJ1ZmZlcl07XG4gIH0sXG4gIHdyaXRlOiAob2JqZWN0cykgPT4ge1xuICAgIGNvbnN0IGNvdW50ID0gdXZhcmludDY0VG9CdWYob2JqZWN0cy5sZW5ndGgpO1xuICAgIHJldHVybiBjb25jYXRVaW50OEFycmF5cyhbXG4gICAgICBjb3VudCxcbiAgICAgIC4uLm9iamVjdHMubWFwKChvYmplY3QpID0+IG9iamVjdC50b0J5dGVzKCkpLFxuICAgIF0pO1xuICB9LFxufSk7XG5cbmV4cG9ydCBjb25zdCBSZWNvcmQgPSA8XG4gIFQgZXh0ZW5kcyBTZXJpYWxpemFibGUsXG4gIEMgZXh0ZW5kcyBEZXNlcmlhbGl6YWJsZTxUPiAmIHsgbmV3ICgpOiBUIH1cbj4oXG4gIGtsYXNzOiBDXG4pOiBUcmFuc2NvZGVyPFQ+ID0+ICh7XG4gIHJlYWQ6IChieXRlcykgPT4ga2xhc3MuZnJvbUJ5dGVzKGJ5dGVzKSxcbiAgd3JpdGU6IChvYmplY3QpID0+IG9iamVjdC50b0J5dGVzKCksXG59KTtcblxuZXhwb3J0IGNvbnN0IGluc3RhbmNlVG9UeXBlID0gPFxuICBUIGV4dGVuZHMgU2VyaWFsaXphYmxlLFxuICBDIGV4dGVuZHMgRGVzZXJpYWxpemFibGU8VD4gJiB7IG5ldyAoKTogVCB9XG4+KFxuICBvYmplY3Q6IFQsXG4gIGtsYXNzTWFwOiB7IFtpbmRleDogc3RyaW5nXTogQyB9XG4pOiBudW1iZXIgPT4ge1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhrbGFzc01hcCkpIHtcbiAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgdmFsdWUpIHJldHVybiBwYXJzZUludChrZXkpO1xuICB9XG4gIHJldHVybiAtMTtcbn07XG5cbmV4cG9ydCBjb25zdCBFbnVtID0gPFxuICBUIGV4dGVuZHMgU2VyaWFsaXphYmxlLFxuICBDIGV4dGVuZHMgRGVzZXJpYWxpemFibGU8VD4gJiB7IG5ldyAoKTogVCB9XG4+KGtsYXNzTWFwOiB7XG4gIFtpbmRleDogc3RyaW5nXTogQztcbn0pOiBUcmFuc2NvZGVyPFQ+ID0+IHtcbiAgcmV0dXJuIHtcbiAgICByZWFkOiAoYnl0ZXMpID0+IHtcbiAgICAgIGxldCBidWZmZXIgPSBieXRlcztcbiAgICAgIGNvbnN0IHR5cGVBbmRCdWZmZXIgPSBidWZUb1V2YXJpbnQ2NChidWZmZXIpO1xuICAgICAgY29uc3QgdHlwZSA9IHR5cGVBbmRCdWZmZXJbMF07XG4gICAgICBidWZmZXIgPSB0eXBlQW5kQnVmZmVyWzFdO1xuXG4gICAgICBjb25zdCBzaXplQW5kQnVmZmVyID0gYnVmVG9VdmFyaW50NjQoYnVmZmVyKTtcbiAgICAgIGNvbnN0IHNpemUgPSBzaXplQW5kQnVmZmVyWzBdO1xuICAgICAgYnVmZmVyID0gc2l6ZUFuZEJ1ZmZlclsxXTtcblxuICAgICAgcmV0dXJuIFtcbiAgICAgICAga2xhc3NNYXBbdHlwZV0uZnJvbUJ5dGVzKGJ1ZmZlci5zbGljZSgwLCBzaXplKSlbMF0sXG4gICAgICAgIGJ1ZmZlci5zbGljZShzaXplKSxcbiAgICAgIF07XG4gICAgfSxcbiAgICB3cml0ZTogKG9iamVjdCkgPT4ge1xuICAgICAgY29uc3QgdHlwZSA9IHV2YXJpbnQ2NFRvQnVmKGluc3RhbmNlVG9UeXBlKG9iamVjdCwga2xhc3NNYXApKTtcbiAgICAgIGNvbnN0IGJ5dGVzID0gb2JqZWN0LnRvQnl0ZXMoKTtcbiAgICAgIGNvbnN0IHNpemUgPSB1dmFyaW50NjRUb0J1ZihieXRlcy5sZW5ndGgpO1xuXG4gICAgICByZXR1cm4gY29uY2F0VWludDhBcnJheXMoW3R5cGUsIHNpemUsIGJ5dGVzXSk7XG4gICAgfSxcbiAgfTtcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNjb2RlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWRlbnRpdHkvdHJhbnNjb2RlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQ0wsY0FBYyxFQUNkLGlCQUFpQixFQUNqQixjQUFjLEdBQ2YsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxNQUFNLE9BQU8sWUFBWTtJQUN2QixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQWlCO1FBQ2hDLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDMUIsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBRW5CLE1BQU0sV0FBVyxHQUNmLE9BQU8sQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVuRCxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRTtZQUMzQyxJQUFJLEtBQUssQ0FBQztZQUNWLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN0RCxNQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsT0FBTztRQUNMLE1BQU0sV0FBVyxHQUNmLE9BQU8sQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVqRCxJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixXQUFXLENB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QyxLQUFLLEVBQUUsRUFBRTtZQUNkLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNuQixNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0MsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFMUIsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdDLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixNQUFNLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTFCLE9BQU87Z0JBQ0wsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDbkIsQ0FBQztRQUNKLENBQUM7UUFDRCxLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNoQixNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzlELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTFDLE9BQU8saUJBQWlCLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuaW1wb3J0IHtcbiAgYnVmVG9VdmFyaW50NjQsXG4gIGNvbmNhdFVpbnQ4QXJyYXlzLFxuICB1dmFyaW50NjRUb0J1Zixcbn0gZnJvbSAnLi9jcnlwdG8tdXRpbHMuanMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25Ob25jZSB9IGZyb20gJy4vdHJhbnNhY3Rpb24tdHJhbnNjb2RlcnMuanMnO1xuZXhwb3J0IGNsYXNzIEJpbmFyeVJlY29yZCB7XG4gIHN0YXRpYyBmcm9tQnl0ZXMoYnl0ZXM6IFVpbnQ4QXJyYXkpOiBbQmluYXJ5UmVjb3JkLCBVaW50OEFycmF5XSB7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IHRoaXMoKTtcbiAgICBsZXQgYnVmZmVyID0gYnl0ZXM7XG5cbiAgICBjb25zdCB0cmFuc2NvZGVyczogVHJhbnNjb2Rlck1ldGFkYXRhW10gPVxuICAgICAgUmVmbGVjdC5nZXRNZXRhZGF0YSgndHJhbnNjb2RlcnMnLCByZXN1bHQpIHx8IFtdO1xuXG4gICAgdHJhbnNjb2RlcnMuZm9yRWFjaCgoeyBuYW1lLCB0cmFuc2NvZGVyIH0pID0+IHtcbiAgICAgIGxldCB2YWx1ZTtcbiAgICAgIFt2YWx1ZSwgYnVmZmVyXSA9IHRyYW5zY29kZXIucmVhZC5jYWxsKHJlc3VsdCwgYnVmZmVyKTtcbiAgICAgIChyZXN1bHQgYXMgYW55KVtuYW1lXSA9IHZhbHVlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIFtyZXN1bHQsIGJ1ZmZlcl07XG4gIH1cblxuICB0b0J5dGVzKCk6IFVpbnQ4QXJyYXkge1xuICAgIGNvbnN0IHRyYW5zY29kZXJzOiBUcmFuc2NvZGVyTWV0YWRhdGFbXSA9XG4gICAgICBSZWZsZWN0LmdldE1ldGFkYXRhKCd0cmFuc2NvZGVycycsIHRoaXMpIHx8IFtdO1xuXG4gICAgbGV0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDApO1xuICAgIHRyYW5zY29kZXJzLmZvckVhY2goKHsgbmFtZSwgdHJhbnNjb2RlciB9KSA9PiB7XG4gICAgICBidWZmZXIgPSBjb25jYXRVaW50OEFycmF5cyhbXG4gICAgICAgIGJ1ZmZlcixcbiAgICAgICAgdHJhbnNjb2Rlci53cml0ZS5jYWxsKHRoaXMsICh0aGlzIGFzIGFueSlbbmFtZV0pLFxuICAgICAgXSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYnVmZmVyO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNjb2Rlck1ldGFkYXRhPFQgPSBhbnk+IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0cmFuc2NvZGVyOiBUcmFuc2NvZGVyPFQ+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVHJhbnNjb2RlPFQ+KHRyYW5zY29kZXI6IFRyYW5zY29kZXI8VD4pIHtcbiAgcmV0dXJuICh0YXJnZXQ6IGFueSwgbmFtZTogc3RyaW5nIHwgc3ltYm9sKSA9PiB7XG4gICAgY29uc3QgdHJhbnNjb2RlcnMgPSBSZWZsZWN0LmdldE1ldGFkYXRhKCd0cmFuc2NvZGVycycsIHRhcmdldCkgfHwgW107XG4gICAgdHJhbnNjb2RlcnMucHVzaCh7IG5hbWUsIHRyYW5zY29kZXIgfSk7XG4gICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgndHJhbnNjb2RlcnMnLCB0cmFuc2NvZGVycywgdGFyZ2V0KTtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2NvZGVyPFQ+IHtcbiAgcmVhZDogKGJ5dGVzOiBVaW50OEFycmF5KSA9PiBbVCwgVWludDhBcnJheV07XG4gIHdyaXRlOiAob2JqZWN0OiBUKSA9PiBVaW50OEFycmF5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcmlhbGl6YWJsZSB7XG4gIHRvQnl0ZXM6ICgpID0+IFVpbnQ4QXJyYXk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVzZXJpYWxpemFibGU8VD4ge1xuICBmcm9tQnl0ZXM6IChieXRlczogVWludDhBcnJheSkgPT4gW1QsIFVpbnQ4QXJyYXldO1xufVxuXG5leHBvcnQgY29uc3QgVXZhcmludDY0OiBUcmFuc2NvZGVyPG51bWJlcj4gPSB7XG4gIHJlYWQ6IChieXRlcykgPT4gYnVmVG9VdmFyaW50NjQoYnl0ZXMpLFxuICB3cml0ZTogKHVpbnQpID0+IHV2YXJpbnQ2NFRvQnVmKHVpbnQpLFxufTtcblxuZXhwb3J0IGNvbnN0IEJvb2xlYW46IFRyYW5zY29kZXI8Ym9vbGVhbj4gPSB7XG4gIHJlYWQ6IChieXRlcykgPT4gW2J5dGVzLmF0KDApICE9IDAsIGJ5dGVzLnNsaWNlKDEpXSxcbiAgd3JpdGU6IChib29sKSA9PiB7XG4gICAgcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShbYm9vbCA/IDEgOiAwXSk7XG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgVWludDg6IFRyYW5zY29kZXI8bnVtYmVyPiA9IHtcbiAgcmVhZDogKGJ5dGVzKSA9PiBbYnl0ZXMuYXQoMCkgYXMgbnVtYmVyLCBieXRlcy5zbGljZSgxKV0sXG4gIHdyaXRlOiAodWludCkgPT4ge1xuICAgIHJldHVybiBVaW50OEFycmF5LmZyb20oW3VpbnRdKTtcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBGaXhlZEJ1ZmZlciA9IChzaXplOiBudW1iZXIpOiBUcmFuc2NvZGVyPFVpbnQ4QXJyYXk+ID0+ICh7XG4gIHJlYWQ6IChieXRlcykgPT4gW2J5dGVzLnNsaWNlKDAsIHNpemUpLCBieXRlcy5zbGljZShzaXplKV0sXG4gIHdyaXRlOiAoYnl0ZXMpID0+IGJ5dGVzLFxufSk7XG5cbmV4cG9ydCBjb25zdCBWYXJCdWZmZXI6IFRyYW5zY29kZXI8VWludDhBcnJheT4gPSB7XG4gIHJlYWQ6IChieXRlcykgPT4ge1xuICAgIGNvbnN0IFtzaXplLCBidWZmZXJdID0gYnVmVG9VdmFyaW50NjQoYnl0ZXMpO1xuICAgIHJldHVybiBbYnVmZmVyLnNsaWNlKDAsIHNpemUpLCBidWZmZXIuc2xpY2Uoc2l6ZSldO1xuICB9LFxuICB3cml0ZTogKGJ5dGVzKSA9PiBjb25jYXRVaW50OEFycmF5cyhbdXZhcmludDY0VG9CdWYoYnl0ZXMubGVuZ3RoKSwgYnl0ZXNdKSxcbn07XG5leHBvcnQgY29uc3QgVHJhbnNhY3Rpb25Ob25jZVRyYW5zY29kZXI6IFRyYW5zY29kZXI8VHJhbnNhY3Rpb25Ob25jZSB8IG51bGw+ID0ge1xuICByZWFkOiAoYnl0ZXMpID0+IHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25Ob25jZS5mcm9tQnl0ZXMoYnl0ZXMpIGFzIFtUcmFuc2FjdGlvbk5vbmNlLCBVaW50OEFycmF5XTtcbiAgfSxcbiAgd3JpdGU6IChub25jZSkgPT4ge1xuICAgIGlmIChub25jZSkge1xuICAgICAgcmV0dXJuIGNvbmNhdFVpbnQ4QXJyYXlzKFtub25jZS50b0J5dGVzKCldKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO1xuICB9LFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIE9wdGlvbmFsPFQ+KHRyYW5zY29kZXI6IFRyYW5zY29kZXI8VD4pOiBUcmFuc2NvZGVyPFQgfCBudWxsPiB7XG4gIHJldHVybiB7XG4gICAgcmVhZDogKGJ5dGVzOiBVaW50OEFycmF5KSA9PlxuICAgICAgIWJ5dGVzLmxlbmd0aCA/IFtudWxsLCBieXRlc10gOiB0cmFuc2NvZGVyLnJlYWQoYnl0ZXMpLFxuICAgIHdyaXRlOiAodmFsdWU6IFQgfCBudWxsKSA9PlxuICAgICAgdmFsdWUgPT09IG51bGwgPyBuZXcgVWludDhBcnJheSgwKSA6IHRyYW5zY29kZXIud3JpdGUodmFsdWUpLFxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgQ2h1bmtCdWZmZXIgPSAod2lkdGg6IG51bWJlcik6IFRyYW5zY29kZXI8VWludDhBcnJheVtdPiA9PiAoe1xuICByZWFkOiAoYnl0ZXMpID0+IHtcbiAgICBjb25zdCBjb3VudEFuZEJ1ZmZlciA9IGJ1ZlRvVXZhcmludDY0KGJ5dGVzKTtcbiAgICBjb25zdCBjb3VudCA9IGNvdW50QW5kQnVmZmVyWzBdO1xuICAgIGxldCBidWZmZXIgPSBjb3VudEFuZEJ1ZmZlclsxXTtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgIHJlc3VsdC5wdXNoKGJ1ZmZlci5zbGljZSgwLCAzMykpO1xuICAgICAgYnVmZmVyID0gYnVmZmVyLnNsaWNlKDMzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW3Jlc3VsdCwgYnVmZmVyXTtcbiAgfSxcbiAgd3JpdGU6IChjaHVua3MpID0+XG4gICAgY29uY2F0VWludDhBcnJheXMoW3V2YXJpbnQ2NFRvQnVmKGNodW5rcy5sZW5ndGgpLCAuLi5jaHVua3NdKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgQXJyYXlPZiA9IDxcbiAgVCBleHRlbmRzIFNlcmlhbGl6YWJsZSxcbiAgQyBleHRlbmRzIERlc2VyaWFsaXphYmxlPFQ+ICYgeyBuZXcgKCk6IFQgfVxuPihcbiAga2xhc3M6IENcbik6IFRyYW5zY29kZXI8VFtdPiA9PiAoe1xuICByZWFkOiAoYnl0ZXMpID0+IHtcbiAgICBjb25zdCBjb3VudEFuZEJ1ZmZlciA9IGJ1ZlRvVXZhcmludDY0KGJ5dGVzKTtcbiAgICBjb25zdCBjb3VudCA9IGNvdW50QW5kQnVmZmVyWzBdO1xuICAgIGxldCBidWZmZXIgPSBjb3VudEFuZEJ1ZmZlclsxXTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgbGV0IG9iajtcbiAgICAgIFtvYmosIGJ1ZmZlcl0gPSBrbGFzcy5mcm9tQnl0ZXMoYnVmZmVyKTtcbiAgICAgIHJlc3VsdC5wdXNoKG9iaik7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtyZXN1bHQsIGJ1ZmZlcl07XG4gIH0sXG4gIHdyaXRlOiAob2JqZWN0cykgPT4ge1xuICAgIGNvbnN0IGNvdW50ID0gdXZhcmludDY0VG9CdWYob2JqZWN0cy5sZW5ndGgpO1xuICAgIHJldHVybiBjb25jYXRVaW50OEFycmF5cyhbXG4gICAgICBjb3VudCxcbiAgICAgIC4uLm9iamVjdHMubWFwKChvYmplY3QpID0+IG9iamVjdC50b0J5dGVzKCkpLFxuICAgIF0pO1xuICB9LFxufSk7XG5cbmV4cG9ydCBjb25zdCBSZWNvcmQgPSA8XG4gIFQgZXh0ZW5kcyBTZXJpYWxpemFibGUsXG4gIEMgZXh0ZW5kcyBEZXNlcmlhbGl6YWJsZTxUPiAmIHsgbmV3ICgpOiBUIH1cbj4oXG4gIGtsYXNzOiBDXG4pOiBUcmFuc2NvZGVyPFQ+ID0+ICh7XG4gIHJlYWQ6IChieXRlcykgPT4ga2xhc3MuZnJvbUJ5dGVzKGJ5dGVzKSxcbiAgd3JpdGU6IChvYmplY3QpID0+IG9iamVjdC50b0J5dGVzKCksXG59KTtcblxuZXhwb3J0IGNvbnN0IGluc3RhbmNlVG9UeXBlID0gPFxuICBUIGV4dGVuZHMgU2VyaWFsaXphYmxlLFxuICBDIGV4dGVuZHMgRGVzZXJpYWxpemFibGU8VD4gJiB7IG5ldyAoKTogVCB9XG4+KFxuICBvYmplY3Q6IFQsXG4gIGtsYXNzTWFwOiB7IFtpbmRleDogc3RyaW5nXTogQyB9XG4pOiBudW1iZXIgPT4ge1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhrbGFzc01hcCkpIHtcbiAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgdmFsdWUpIHJldHVybiBwYXJzZUludChrZXkpO1xuICB9XG4gIHJldHVybiAtMTtcbn07XG5cbmV4cG9ydCBjb25zdCBFbnVtID0gPFxuICBUIGV4dGVuZHMgU2VyaWFsaXphYmxlLFxuICBDIGV4dGVuZHMgRGVzZXJpYWxpemFibGU8VD4gJiB7IG5ldyAoKTogVCB9XG4+KGtsYXNzTWFwOiB7XG4gIFtpbmRleDogc3RyaW5nXTogQztcbn0pOiBUcmFuc2NvZGVyPFQ+ID0+IHtcbiAgcmV0dXJuIHtcbiAgICByZWFkOiAoYnl0ZXMpID0+IHtcbiAgICAgIGxldCBidWZmZXIgPSBieXRlcztcbiAgICAgIGNvbnN0IHR5cGVBbmRCdWZmZXIgPSBidWZUb1V2YXJpbnQ2NChidWZmZXIpO1xuICAgICAgY29uc3QgdHlwZSA9IHR5cGVBbmRCdWZmZXJbMF07XG4gICAgICBidWZmZXIgPSB0eXBlQW5kQnVmZmVyWzFdO1xuXG4gICAgICBjb25zdCBzaXplQW5kQnVmZmVyID0gYnVmVG9VdmFyaW50NjQoYnVmZmVyKTtcbiAgICAgIGNvbnN0IHNpemUgPSBzaXplQW5kQnVmZmVyWzBdO1xuICAgICAgYnVmZmVyID0gc2l6ZUFuZEJ1ZmZlclsxXTtcblxuICAgICAgcmV0dXJuIFtcbiAgICAgICAga2xhc3NNYXBbdHlwZV0uZnJvbUJ5dGVzKGJ1ZmZlci5zbGljZSgwLCBzaXplKSlbMF0sXG4gICAgICAgIGJ1ZmZlci5zbGljZShzaXplKSxcbiAgICAgIF07XG4gICAgfSxcbiAgICB3cml0ZTogKG9iamVjdCkgPT4ge1xuICAgICAgY29uc3QgdHlwZSA9IHV2YXJpbnQ2NFRvQnVmKGluc3RhbmNlVG9UeXBlKG9iamVjdCwga2xhc3NNYXApKTtcbiAgICAgIGNvbnN0IGJ5dGVzID0gb2JqZWN0LnRvQnl0ZXMoKTtcbiAgICAgIGNvbnN0IHNpemUgPSB1dmFyaW50NjRUb0J1ZihieXRlcy5sZW5ndGgpO1xuXG4gICAgICByZXR1cm4gY29uY2F0VWludDhBcnJheXMoW3R5cGUsIHNpemUsIGJ5dGVzXSk7XG4gICAgfSxcbiAgfTtcbn07XG4iXX0=

@@ -1,2 +0,2 @@

import { AccessGroupLimitMapItem, AccessGroupMemberLimitMapItem, AssociationLimitMapItem, TransactionSpendingLimitResponse, TransactionType } from '../backend-types';
import { AccessGroupLimitMapItem, AccessGroupMemberLimitMapItem, AssociationLimitMapItem, TransactionSpendingLimitResponse, TransactionType } from '../backend-types/index.js';
export type Network = 'mainnet' | 'testnet';

@@ -3,0 +3,0 @@ export interface IdentityResponse {

@@ -73,2 +73,2 @@ export var NOTIFICATION_EVENTS;

})(NOTIFICATION_EVENTS || (NOTIFICATION_EVENTS = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWRlbnRpdHkvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNFBBLE1BQU0sQ0FBTixJQUFZLG1CQW9GWDtBQXBGRCxXQUFZLG1CQUFtQjtJQUM3Qjs7T0FFRztJQUNILDhDQUF1QixDQUFBO0lBRXZCOzs7O09BSUc7SUFDSCxrRkFBMkQsQ0FBQTtJQUUzRDs7OztPQUlHO0lBQ0gsOEVBQXVELENBQUE7SUFFdkQ7O09BRUc7SUFDSCxnRkFBeUQsQ0FBQTtJQUV6RDs7T0FFRztJQUNILDhFQUF1RCxDQUFBO0lBRXZEOzs7T0FHRztJQUNILDBFQUFtRCxDQUFBO0lBRW5EOztPQUVHO0lBQ0gsa0RBQTJCLENBQUE7SUFFM0I7OztPQUdHO0lBQ0gsOENBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCxvREFBNkIsQ0FBQTtJQUU3Qjs7O09BR0c7SUFDSCxnREFBeUIsQ0FBQTtJQUV6Qjs7T0FFRztJQUNILGtFQUEyQyxDQUFBO0lBRTNDOzs7T0FHRztJQUNILDhEQUF1QyxDQUFBO0lBRXZDOztPQUVHO0lBQ0gsOEVBQXVELENBQUE7SUFFdkQ7OztPQUdHO0lBQ0gsMEVBQW1ELENBQUE7SUFFbkQ7O09BRUc7SUFDSCxnRUFBeUMsQ0FBQTtBQUMzQyxDQUFDLEVBcEZXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFvRjlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWNjZXNzR3JvdXBMaW1pdE1hcEl0ZW0sXG4gIEFjY2Vzc0dyb3VwTWVtYmVyTGltaXRNYXBJdGVtLFxuICBBc3NvY2lhdGlvbkxpbWl0TWFwSXRlbSxcbiAgVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2UsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnLi4vYmFja2VuZC10eXBlcyc7XG5leHBvcnQgdHlwZSBOZXR3b3JrID0gJ21haW5uZXQnIHwgJ3Rlc3RuZXQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElkZW50aXR5UmVzcG9uc2Uge1xuICBzZXJ2aWNlOiAnaWRlbnRpdHknO1xuICBtZXRob2Q6ICdkZXJpdmUnIHwgJ2xvZ2luJyB8ICdpbml0aWFsaXplJztcbiAgcGF5bG9hZD86IGFueTtcbiAgaWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWRlbnRpdHlEZXJpdmVQYXlsb2FkIHtcbiAgZGVyaXZlZFNlZWRIZXg/OiBzdHJpbmc7XG4gIGRlcml2ZWRQdWJsaWNLZXlCYXNlNThDaGVjazogc3RyaW5nO1xuICBwdWJsaWNLZXlCYXNlNThDaGVjazogc3RyaW5nO1xuICBidGNEZXBvc2l0QWRkcmVzczogc3RyaW5nO1xuICBldGhEZXBvc2l0QWRkcmVzczogc3RyaW5nO1xuICBleHBpcmF0aW9uQmxvY2s6IG51bWJlcjtcbiAgbmV0d29yazogTmV0d29yaztcbiAgYWNjZXNzU2lnbmF0dXJlOiBzdHJpbmc7XG4gIGp3dDogc3RyaW5nO1xuICBkZXJpdmVkSnd0OiBzdHJpbmc7XG4gIG1lc3NhZ2luZ1B1YmxpY0tleUJhc2U1OENoZWNrOiBzdHJpbmc7XG4gIG1lc3NhZ2luZ1ByaXZhdGVLZXk6IHN0cmluZztcbiAgbWVzc2FnaW5nS2V5TmFtZTogc3RyaW5nO1xuICBtZXNzYWdpbmdLZXlTaWduYXR1cmU6IHN0cmluZztcbiAgdHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0SGV4OiBzdHJpbmc7XG4gIHNpZ25lZFVwOiBib29sZWFuO1xuICBwdWJsaWNLZXlBZGRlZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZU9wdGlvbnMge1xuICBHbG9iYWxERVNPTGltaXQ/OiBudW1iZXI7XG4gIFRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcD86IFBhcnRpYWw8XG4gICAgUmVjb3JkPFRyYW5zYWN0aW9uVHlwZSwgbnVtYmVyIHwgJ1VOTElNSVRFRCc+XG4gID47XG4gIENyZWF0b3JDb2luT3BlcmF0aW9uTGltaXRNYXA/OiB7XG4gICAgW2tleTogc3RyaW5nXTogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfCAnVU5MSU1JVEVEJyB9O1xuICB9O1xuICBEQU9Db2luT3BlcmF0aW9uTGltaXRNYXA/OiB7XG4gICAgW2tleTogc3RyaW5nXTogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfCAnVU5MSU1JVEVEJyB9O1xuICB9O1xuICBORlRPcGVyYXRpb25MaW1pdE1hcD86IHtcbiAgICBba2V5OiBzdHJpbmddOiB7IFtrZXk6IG51bWJlcl06IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIHwgJ1VOTElNSVRFRCcgfSB9O1xuICB9O1xuICBEQU9Db2luTGltaXRPcmRlckxpbWl0TWFwPzoge1xuICAgIFtrZXk6IHN0cmluZ106IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIHwgJ1VOTElNSVRFRCcgfTtcbiAgfTtcbiAgQXNzb2NpYXRpb25MaW1pdE1hcD86IChPbWl0PEFzc29jaWF0aW9uTGltaXRNYXBJdGVtLCAnT3BDb3VudCc+ICYge1xuICAgIE9wQ291bnQ6IG51bWJlciB8ICdVTkxJTUlURUQnO1xuICB9KVtdO1xuICBBY2Nlc3NHcm91cExpbWl0TWFwPzogKE9taXQ8QWNjZXNzR3JvdXBMaW1pdE1hcEl0ZW0sICdPcENvdW50Jz4gJiB7XG4gICAgT3BDb3VudDogbnVtYmVyIHwgJ1VOTElNSVRFRCc7XG4gIH0pW107XG4gIEFjY2Vzc0dyb3VwTWVtYmVyTGltaXRNYXA/OiAoT21pdDxcbiAgICBBY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwSXRlbSxcbiAgICAnT3BDb3VudCdcbiAgPiAmIHsgT3BDb3VudDogbnVtYmVyIHwgJ1VOTElNSVRFRCcgfSlbXTtcbiAgSXNVbmxpbWl0ZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBqd3RBbGdvcml0aG0gPSAnRVMyNTZLJyB8ICdFUzI1Nic7XG5leHBvcnQgaW50ZXJmYWNlIElkZW50aXR5Q29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgaWRlbnRpdHkgZG9tYWluLiBEZWZhdWx0cyB0byBodHRwczovL2lkZW50aXR5LmRlc28ub3JnXG4gICAqL1xuICBpZGVudGl0eVVSST86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgbmV0d29yay4gSWYgbm90IHByb3ZpZGVkLCB3ZSB3aWxsIGFzc3VtZSBtYWlubmV0LlxuICAgKi9cbiAgbmV0d29yaz86IE5ldHdvcms7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNvIG5vZGUgdXNlZCBmb3IgYW55IGFwaSBjYWxscyAoZ2V0IGJhbGFuY2UsIGRlcml2ZWQga2V5IGF1dGhvcml6YXRpb24sIGV0YylcbiAgICovXG4gIG5vZGVVUkk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHJlZGlyZWN0IFVSSS4gSWYgcHJvdmlkZWQsIHdlIGRvIGEgaGFyZCByZWRpcmVjdCB0byB0aGUgaWRlbnRpdHlcbiAgICogZG9tYWluIGFuZCBwYXNzIGRhdGEgdmlhIHF1ZXJ5IHBhcmFtcyBiYWNrIHRvIHRoZSBwcm92aWRlZCB1cmkuXG4gICAqL1xuICByZWRpcmVjdFVSST86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgcGVybWlzc2lvbnMgYW5kIHNwZW5kaW5nIGxpbWl0cyB0aGF0IHdpbGwgYmUgcHJlc2VudGVkIHRvIHRoZSB1c2VyXG4gICAqIGR1cmluZyBsb2dpbi4gSWYgbm90IHByb3ZpZGVkLCB3ZSB3aWxsIGFzc3VtZSBubyBwZXJtaXNzaW9ucy5cbiAgICovXG4gIHNwZW5kaW5nTGltaXRPcHRpb25zPzogVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2VPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYXBwIHVzZWQgdG8gYXV0aG9yaXplIGRlcml2ZWQga2V5cy4gRGVmYXVsdHMgdG8gdW5rbm93bi5cbiAgICovXG4gIGFwcE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNpbmNlIG91ciBrZXlzIGFyZSBnZW5lcmF0ZWQgdXNpbmcgdGhlIHNlY3AyNTZrMSBjdXJ2ZSwgdGhlIGNvcnJlY3RcbiAgICogSldUIGFsZ29yaXRobSBoZWFkZXIgKnNob3VsZCogYmUgRVMyNTZLLlxuICAgKiBTZWU6IGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM4ODEyLmh0bWwjbmFtZS1qb3NlLWFsZ29yaXRobXMtcmVnaXN0cmF0aW9cbiAgICpcbiAgICogSE9XRVZFUiwgdGhlIGJhY2tlbmQgand0IGxpYiB1c2VkIGJ5IGRlc28gZm91bmRhdGlvbiAtXG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9nb2xhbmctand0L2p3dCAtIChhcyB3ZWxsIGFzIG1hbnkgb3RoZXIgand0IGxpYnJhcmllcylcbiAgICogZG8gbm90IHN1cHBvcnQgRVMyNTZLLiBTbyBpbnN0ZWFkLCB3ZSBkZWZhdWx0IHRvIHRoZSBtb3JlIHdpZGVseSBzdXBwb3J0ZWQgRVMyNTYgYWxnbyxcbiAgICogd2hpY2ggY2FuIHN0aWxsIHdvcmsgZm9yIHZlcmlmeWluZyBvdXIgc2lnbmF0dXJlcy4gQnV0IGlmIGEgY29uc3VtZXIgb2YgdGhpcyBsaWIgaXMgdXNpbmcgYVxuICAgKiBqd3QgbGliIHRoYXQgc3VwcG9ydHMgRVMyNTZLIHRoZXkgY2FuIHNwZWNpZnkgdGhhdCBoZXJlLlxuICAgKiBTZWUgdGhpcyBnaXRodWIgaXNzdWVcbiAgICogZm9yIG1vcmUgY29udGV4dDogaHR0cHM6Ly9naXRodWIuY29tL2F1dGgwL25vZGUtanNvbndlYnRva2VuL2lzc3Vlcy84NjJcbiAgICogSWYgRVMyNTZLIGlzIGV2ZXIgc3VwcG9ydGVkIGJ5IHRoZSBiYWNrZW5kIGp3dCBsaWIsIHdlIHNob3VsZCBjaGFuZ2UgdGhpcy5cbiAgICovXG4gIGp3dEFsZ29yaXRobT86IGp3dEFsZ29yaXRobTtcblxuICAvKipcbiAgICogQW4gb3B0aW9uYWwgc3RvcmFnZSBwcm92aWRlci4gSWYgbm90IHByb3ZpZGVkLCB3ZSB3aWxsIGFzc3VtZSBsb2NhbFN0b3JhZ2VcbiAgICogaXMgYXZhaWxhYmxlLlxuICAgKi9cbiAgc3RvcmFnZVByb3ZpZGVyPzogU3RvcmFnZVByb3ZpZGVyO1xuXG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBmdW5jdGlvbiB0aGF0IGlzIHByb3ZpZGVkIHRoZSBpZGVudGl0eSB1cmwgdGhhdCBuZWVkcyB0byBiZVxuICAgKiBvcGVuZWQuIFRoaXMgY2FuIGJlIHVzZWQgdG8gY3VzdG9taXplIGhvdyB0aGUgaWRlbnRpdHkgdXJsIGlzIG9wZW5lZC4gRm9yXG4gICAqIGV4YW1wbGUsIGlmIHlvdSBhcmUgdXNpbmcgcmVhY3QgbmF0aXZlLCB5b3UgbWlnaHQgd2FudCB0byB1c2UgdGhlIExpbmtpbmdcbiAgICogQVBJIHRvIG9wZW4gdGhlIHVybCBpbiBhIHN5c3RlbSBicm93c2VyIHdpbmRvdy5cbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogaWRlbnRpdHlQcmVzZW50ZXI6IGFzeW5jICh1cmwpID0+IHtcbiAgICogICBjb25zdCByZXN1bHQgPSBhd2FpdCBXZWJCcm93c2VyLm9wZW5BdXRoU2Vzc2lvbkFzeW5jKHVybCk7XG4gICAqICAgaWYgKHJlc3VsdC50eXBlID09PSAnc3VjY2VzcycpIHtcbiAgICogICAgIGlkZW50aXR5LmhhbmRsZVJlZGlyZWN0VVJJKHJlc3VsdC51cmwpO1xuICAgKiAgIH1cbiAgICogfSxcbiAgICogYGBgXG4gICAqL1xuICBpZGVudGl0eVByZXNlbnRlcj86ICh1cmw6IHN0cmluZykgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBUElQcm92aWRlciB7XG4gIHBvc3Q6ICh1cmw6IHN0cmluZywgZGF0YTogYW55KSA9PiBQcm9taXNlPGFueT47XG4gIGdldDogKHVybDogc3RyaW5nKSA9PiBQcm9taXNlPGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2luZG93UHJvdmlkZXIge1xuICBsb2NhdGlvbjogeyBzZWFyY2g6IHN0cmluZzsgcGF0aG5hbWU6IHN0cmluZzsgaHJlZjogc3RyaW5nIH07XG4gIGhpc3Rvcnk6IHsgcmVwbGFjZVN0YXRlOiAoc3RhdGU6IGFueSwgdGl0bGU6IHN0cmluZywgdXJsOiBzdHJpbmcpID0+IHZvaWQgfTtcbiAgbG9jYWxTdG9yYWdlOiB7XG4gICAgZ2V0SXRlbTogKGtleTogc3RyaW5nKSA9PiBzdHJpbmcgfCBudWxsO1xuICAgIHNldEl0ZW06IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgICByZW1vdmVJdGVtOiAoa2V5OiBzdHJpbmcpID0+IHZvaWQ7XG4gIH07XG4gIG9wZW46IChcbiAgICB1cmw6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIG9wdGlvbnM6IHN0cmluZ1xuICApID0+IFdpbmRvdyB8IG51bGw7XG4gIGFkZEV2ZW50TGlzdGVuZXI6IChldmVudDogc3RyaW5nLCBjYWxsYmFjazogKGV2ZW50OiBhbnkpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHJlbW92ZUV2ZW50TGlzdGVuZXI6IChldmVudDogc3RyaW5nLCBjYWxsYmFjazogKGV2ZW50OiBhbnkpID0+IHZvaWQpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9naW5PcHRpb25zIHtcbiAgZ2V0RnJlZURlc286IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFByaW1hcnlEZXJpdmVkS2V5SW5mbyA9IElkZW50aXR5RGVyaXZlUGF5bG9hZCAmIHtcbiAgdHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0czogVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2U7XG4gIElzVmFsaWQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgU3RvcmVkVXNlciA9IHtcbiAgcHVibGljS2V5OiBzdHJpbmc7XG4gIHByaW1hcnlEZXJpdmVkS2V5OiBQcmltYXJ5RGVyaXZlZEtleUluZm87XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIElkZW50aXR5VXNlciB7XG4gIGFjY2Vzc0xldmVsOiBudW1iZXI7XG4gIGFjY2Vzc0xldmVsSG1hYzogc3RyaW5nO1xuICBidGNEZXBvc2l0QWRkcmVzczogc3RyaW5nO1xuICBlbmNyeXB0ZWRTZWVkSGV4OiBzdHJpbmc7XG4gIGV0aERlcG9zaXRBZGRyZXNzOiBzdHJpbmc7XG4gIGRlcml2ZWRQdWJsaWNLZXlCYXNlNThDaGVjaz86IHN0cmluZztcbiAgaGFzRXh0cmFUZXh0OiBib29sZWFuO1xuICBuZXR3b3JrOiBzdHJpbmc7XG4gIHZlcnNpb246IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJZGVudGl0eUxvZ2luUGF5bG9hZCB7XG4gIHVzZXJzOiBSZWNvcmQ8c3RyaW5nLCBJZGVudGl0eVVzZXI+O1xuICBwdWJsaWNLZXlBZGRlZDogc3RyaW5nO1xuICBwaG9uZU51bWJlclN1Y2Nlc3M6IGJvb2xlYW47XG4gIHNpZ25lZFVwOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElkZW50aXR5U3RhdGUge1xuICBjdXJyZW50VXNlcjogU3RvcmVkVXNlciB8IG51bGw7XG4gIGFsdGVybmF0ZVVzZXJzOiBSZWNvcmQ8c3RyaW5nLCBTdG9yZWRVc2VyPiB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVmZXJyZWQge1xuICByZXNvbHZlOiAoYXJnczogYW55KSA9PiB2b2lkO1xuICByZWplY3Q6IChhcmdzOiBhbnkpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5UGFpciB7XG4gIHNlZWRIZXg6IHN0cmluZztcbiAgcHJpdmF0ZTogVWludDhBcnJheTtcbiAgcHVibGljOiBVaW50OEFycmF5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1YnNjcmliZXJOb3RpZmljYXRpb24ge1xuICBldmVudDogTk9USUZJQ0FUSU9OX0VWRU5UUztcbiAgY3VycmVudFVzZXI6IFN0b3JlZFVzZXIgfCBudWxsO1xuICBhbHRlcm5hdGVVc2VyczogUmVjb3JkPHN0cmluZywgU3RvcmVkVXNlcj4gfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV0aGVyc2NhblRyYW5zYWN0aW9uc0J5QWRkcmVzc1Jlc3BvbnNlIHtcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgcmVzdWx0OiBFdGhlcnNjYW5UcmFuc2FjdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV0aGVyc2NhblRyYW5zYWN0aW9uIHtcbiAgYmxvY2tOdW1iZXI6IHN0cmluZztcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIGhhc2g6IHN0cmluZztcbiAgbm9uY2U6IHN0cmluZztcbiAgYmxvY2tIYXNoOiBzdHJpbmc7XG4gIHRyYW5zYWN0aW9uSW5kZXg6IHN0cmluZztcbiAgZnJvbTogc3RyaW5nO1xuICB0bzogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBnYXM6IHN0cmluZztcbiAgZ2FzUHJpY2U6IHN0cmluZztcbiAgaXNFcnJvcjogc3RyaW5nO1xuICB0eHJlY2VpcHRfc3RhdHVzOiBzdHJpbmc7XG4gIGlucHV0OiBzdHJpbmc7XG4gIGNvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xuICBjdW11bGF0aXZlR2FzVXNlZDogc3RyaW5nO1xuICBnYXNVc2VkOiBzdHJpbmc7XG4gIGNvbmZpcm1hdGlvbnM6IHN0cmluZztcbiAgbWV0aG9kSWQ6IHN0cmluZztcbiAgZnVuY3Rpb25OYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWNjZXNzR3JvdXBQcml2YXRlSW5mbyB7XG4gIEFjY2Vzc0dyb3VwUHVibGljS2V5QmFzZTU4Q2hlY2s6IHN0cmluZztcbiAgQWNjZXNzR3JvdXBQcml2YXRlS2V5SGV4OiBzdHJpbmc7XG4gIEFjY2Vzc0dyb3VwS2V5TmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBOT1RJRklDQVRJT05fRVZFTlRTIHtcbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgY29uc3VtaW5nIGFwcCBpbml0aWFsbHkgc3Vic2NyaWJlcyB0byBpZGVudGl0eS5cbiAgICovXG4gIFNVQlNDUklCRSA9ICdTVUJTQ1JJQkUnLFxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGFuIGludGVybWVkaWF0ZSBldmVudCBmaXJlZCBBRlRFUiB0aGUgdXNlciBjb21wbGV0ZXMgYW4gaWRlbnRpdHkgZmxvd1xuICAgKiB0aGF0IHJlcXVpcmVzIGEgZGVyaXZlZCBrZXkgYXV0aG9yaXphdGlvbi4gVGhpcyBldmVudCBpcyBmaXJlZCBCRUZPUkUgdGhlXG4gICAqIHJlcXVlc3QgdG8gYXV0aG9yaXplIHRoZSBkZXJpdmVkIGtleSBpcyBtYWRlLlxuICAgKi9cbiAgQVVUSE9SSVpFX0RFUklWRURfS0VZX1NUQVJUID0gJ0FVVEhPUklaRV9ERVJJVkVEX0tFWV9TVEFSVCcsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gaW50ZXJtZWRpYXRlIGV2ZW50IGZpcmVkIEFGVEVSIHRoZSB1c2VyIGNvbXBsZXRlcyBhbiBpZGVudGl0eVxuICAgKiBmbG93IHRoYXQgcmVxdWlyZXMgYSBkZXJpdmVkIGtleSBhdXRob3JpemF0aW9uLiBUaGlzIGV2ZW50IGlzIGZpcmVkIEFGVEVSXG4gICAqIHRoZSByZXF1ZXN0IHRvIGF1dGhvcml6ZSB0aGUgZGVyaXZlZCBrZXkgaXMgbWFkZS5cbiAgICovXG4gIEFVVEhPUklaRV9ERVJJVkVEX0tFWV9FTkQgPSAnQVVUSE9SSVpFX0RFUklWRURfS0VZX0VORCcsXG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgaWYgdGhlIHJlcXVlc3QgdG8gYXV0aG9yaXplIGEgZGVyaXZlZCBrZXkgZmFpbHMuXG4gICAqL1xuICBBVVRIT1JJWkVfREVSSVZFRF9LRVlfRkFJTCA9ICdBVVRIT1JJWkVfREVSSVZFRF9LRVlfRkFJTCcsXG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBvcGVucyB0aGUgcGVybWlzc2lvbnMgYXBwcm92YWwgcG9wdXAuXG4gICAqL1xuICBSRVFVRVNUX1BFUk1JU1NJT05TX1NUQVJUID0gJ1JFUVVFU1RfUEVSTUlTU0lPTlNfU1RBUlQnLFxuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIHVzZXIgY29tcGxldGVzIGFwcHJvdmluZyBwZXJtaXNzaW9ucywgYW5kXG4gICAqIGNvbWVzIEFGVEVSIHRoZSBpbnRlcm1lZGlhdGUgQVVUSE9SSVpFX0RFUklWRURfS0VZIGV2ZW50cy5cbiAgICovXG4gIFJFUVVFU1RfUEVSTUlTU0lPTlNfRU5EID0gJ1JFUVVFU1RfUEVSTUlTU0lPTlNfRU5EJyxcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSB1c2VyIG9wZW5zIHRoZSBsb2dpbiBwb3B1cC5cbiAgICovXG4gIExPR0lOX1NUQVJUID0gJ0xPR0lOX1NUQVJUJyxcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSB1c2VyIGNvbXBsZXRlcyBsb2dnaW5nIGluLCBhbmRcbiAgICogY29tZXMgQUZURVIgdGhlIGludGVybWVkaWF0ZSBBVVRIT1JJWkVfREVSSVZFRF9LRVkgZXZlbnRzLlxuICAgKi9cbiAgTE9HSU5fRU5EID0gJ0xPR0lOX0VORCcsXG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBvcGVucyB0aGUgbG9nb3V0IHBvcHVwLlxuICAgKi9cbiAgTE9HT1VUX1NUQVJUID0gJ0xPR09VVF9TVEFSVCcsXG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBjb21wbGV0ZXMgbG9nZ2luZyBvdXQsIGFuZFxuICAgKiBjb21lcyBBRlRFUiB0aGUgaW50ZXJtZWRpYXRlIEFVVEhPUklaRV9ERVJJVkVEX0tFWSBldmVudHMuXG4gICAqL1xuICBMT0dPVVRfRU5EID0gJ0xPR09VVF9FTkQnLFxuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIHVzZXIgb3BlbnMgdGhlIGdldCBkZXNvIHBvcHVwLlxuICAgKi9cbiAgR0VUX0ZSRUVfREVTT19TVEFSVCA9ICdHRVRfRlJFRV9ERVNPX1NUQVJUJyxcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSB1c2VyIGNvbXBsZXRlcyB0aGUgZ2V0IGRlc28gZmxvdywgYW5kIGNvbWVzXG4gICAqIEFGVEVSIHRoZSBpbnRlcm1lZGlhdGUgQVVUSE9SSVpFX0RFUklWRURfS0VZIGV2ZW50cy5cbiAgICovXG4gIEdFVF9GUkVFX0RFU09fRU5EID0gJ0dFVF9GUkVFX0RFU09fRU5EJyxcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSB1c2VyIG9wZW5zIHRoZSB2ZXJpZnkgcGhvbmUgbnVtYmVyIHBvcHVwLlxuICAgKi9cbiAgVkVSSUZZX1BIT05FX05VTUJFUl9TVEFSVCA9ICdWRVJJRllfUEhPTkVfTlVNQkVSX1NUQVJUJyxcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSB1c2VyIGNvbXBsZXRlcyB0aGUgdmVyaWZ5IHBob25lIG51bWJlciBmbG93LFxuICAgKiBhbmQgY29tZXMgQUZURVIgdGhlIGludGVybWVkaWF0ZSBBVVRIT1JJWkVfREVSSVZFRF9LRVkgZXZlbnRzLlxuICAgKi9cbiAgVkVSSUZZX1BIT05FX05VTUJFUl9FTkQgPSAnVkVSSUZZX1BIT05FX05VTUJFUl9FTkQnLFxuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIGNvbnN1bWluZyBhcHAgc3dpdGNoZXMgdGhlIGFjdGl2ZSB1c2VyLlxuICAgKi9cbiAgQ0hBTkdFX0FDVElWRV9VU0VSID0gJ0NIQU5HRV9BQ1RJVkVfVVNFUicsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXN5bmNTdG9yYWdlIHtcbiAgZ2V0SXRlbTogKGtleTogc3RyaW5nKSA9PiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xuICBzZXRJdGVtOiAoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIHJlbW92ZUl0ZW06IChrZXk6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgY2xlYXI6ICgpID0+IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCB0eXBlIFN0b3JhZ2VQcm92aWRlciA9IFN0b3JhZ2UgfCBBc3luY1N0b3JhZ2U7XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWRlbnRpdHkvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNFBBLE1BQU0sQ0FBTixJQUFZLG1CQW9GWDtBQXBGRCxXQUFZLG1CQUFtQjtJQUM3Qjs7T0FFRztJQUNILDhDQUF1QixDQUFBO0lBRXZCOzs7O09BSUc7SUFDSCxrRkFBMkQsQ0FBQTtJQUUzRDs7OztPQUlHO0lBQ0gsOEVBQXVELENBQUE7SUFFdkQ7O09BRUc7SUFDSCxnRkFBeUQsQ0FBQTtJQUV6RDs7T0FFRztJQUNILDhFQUF1RCxDQUFBO0lBRXZEOzs7T0FHRztJQUNILDBFQUFtRCxDQUFBO0lBRW5EOztPQUVHO0lBQ0gsa0RBQTJCLENBQUE7SUFFM0I7OztPQUdHO0lBQ0gsOENBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCxvREFBNkIsQ0FBQTtJQUU3Qjs7O09BR0c7SUFDSCxnREFBeUIsQ0FBQTtJQUV6Qjs7T0FFRztJQUNILGtFQUEyQyxDQUFBO0lBRTNDOzs7T0FHRztJQUNILDhEQUF1QyxDQUFBO0lBRXZDOztPQUVHO0lBQ0gsOEVBQXVELENBQUE7SUFFdkQ7OztPQUdHO0lBQ0gsMEVBQW1ELENBQUE7SUFFbkQ7O09BRUc7SUFDSCxnRUFBeUMsQ0FBQTtBQUMzQyxDQUFDLEVBcEZXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFvRjlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWNjZXNzR3JvdXBMaW1pdE1hcEl0ZW0sXG4gIEFjY2Vzc0dyb3VwTWVtYmVyTGltaXRNYXBJdGVtLFxuICBBc3NvY2lhdGlvbkxpbWl0TWFwSXRlbSxcbiAgVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2UsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnLi4vYmFja2VuZC10eXBlcy9pbmRleC5qcyc7XG5leHBvcnQgdHlwZSBOZXR3b3JrID0gJ21haW5uZXQnIHwgJ3Rlc3RuZXQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElkZW50aXR5UmVzcG9uc2Uge1xuICBzZXJ2aWNlOiAnaWRlbnRpdHknO1xuICBtZXRob2Q6ICdkZXJpdmUnIHwgJ2xvZ2luJyB8ICdpbml0aWFsaXplJztcbiAgcGF5bG9hZD86IGFueTtcbiAgaWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWRlbnRpdHlEZXJpdmVQYXlsb2FkIHtcbiAgZGVyaXZlZFNlZWRIZXg/OiBzdHJpbmc7XG4gIGRlcml2ZWRQdWJsaWNLZXlCYXNlNThDaGVjazogc3RyaW5nO1xuICBwdWJsaWNLZXlCYXNlNThDaGVjazogc3RyaW5nO1xuICBidGNEZXBvc2l0QWRkcmVzczogc3RyaW5nO1xuICBldGhEZXBvc2l0QWRkcmVzczogc3RyaW5nO1xuICBleHBpcmF0aW9uQmxvY2s6IG51bWJlcjtcbiAgbmV0d29yazogTmV0d29yaztcbiAgYWNjZXNzU2lnbmF0dXJlOiBzdHJpbmc7XG4gIGp3dDogc3RyaW5nO1xuICBkZXJpdmVkSnd0OiBzdHJpbmc7XG4gIG1lc3NhZ2luZ1B1YmxpY0tleUJhc2U1OENoZWNrOiBzdHJpbmc7XG4gIG1lc3NhZ2luZ1ByaXZhdGVLZXk6IHN0cmluZztcbiAgbWVzc2FnaW5nS2V5TmFtZTogc3RyaW5nO1xuICBtZXNzYWdpbmdLZXlTaWduYXR1cmU6IHN0cmluZztcbiAgdHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0SGV4OiBzdHJpbmc7XG4gIHNpZ25lZFVwOiBib29sZWFuO1xuICBwdWJsaWNLZXlBZGRlZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZU9wdGlvbnMge1xuICBHbG9iYWxERVNPTGltaXQ/OiBudW1iZXI7XG4gIFRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcD86IFBhcnRpYWw8XG4gICAgUmVjb3JkPFRyYW5zYWN0aW9uVHlwZSwgbnVtYmVyIHwgJ1VOTElNSVRFRCc+XG4gID47XG4gIENyZWF0b3JDb2luT3BlcmF0aW9uTGltaXRNYXA/OiB7XG4gICAgW2tleTogc3RyaW5nXTogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfCAnVU5MSU1JVEVEJyB9O1xuICB9O1xuICBEQU9Db2luT3BlcmF0aW9uTGltaXRNYXA/OiB7XG4gICAgW2tleTogc3RyaW5nXTogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfCAnVU5MSU1JVEVEJyB9O1xuICB9O1xuICBORlRPcGVyYXRpb25MaW1pdE1hcD86IHtcbiAgICBba2V5OiBzdHJpbmddOiB7IFtrZXk6IG51bWJlcl06IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIHwgJ1VOTElNSVRFRCcgfSB9O1xuICB9O1xuICBEQU9Db2luTGltaXRPcmRlckxpbWl0TWFwPzoge1xuICAgIFtrZXk6IHN0cmluZ106IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIHwgJ1VOTElNSVRFRCcgfTtcbiAgfTtcbiAgQXNzb2NpYXRpb25MaW1pdE1hcD86IChPbWl0PEFzc29jaWF0aW9uTGltaXRNYXBJdGVtLCAnT3BDb3VudCc+ICYge1xuICAgIE9wQ291bnQ6IG51bWJlciB8ICdVTkxJTUlURUQnO1xuICB9KVtdO1xuICBBY2Nlc3NHcm91cExpbWl0TWFwPzogKE9taXQ8QWNjZXNzR3JvdXBMaW1pdE1hcEl0ZW0sICdPcENvdW50Jz4gJiB7XG4gICAgT3BDb3VudDogbnVtYmVyIHwgJ1VOTElNSVRFRCc7XG4gIH0pW107XG4gIEFjY2Vzc0dyb3VwTWVtYmVyTGltaXRNYXA/OiAoT21pdDxcbiAgICBBY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwSXRlbSxcbiAgICAnT3BDb3VudCdcbiAgPiAmIHsgT3BDb3VudDogbnVtYmVyIHwgJ1VOTElNSVRFRCcgfSlbXTtcbiAgSXNVbmxpbWl0ZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBqd3RBbGdvcml0aG0gPSAnRVMyNTZLJyB8ICdFUzI1Nic7XG5leHBvcnQgaW50ZXJmYWNlIElkZW50aXR5Q29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgaWRlbnRpdHkgZG9tYWluLiBEZWZhdWx0cyB0byBodHRwczovL2lkZW50aXR5LmRlc28ub3JnXG4gICAqL1xuICBpZGVudGl0eVVSST86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgbmV0d29yay4gSWYgbm90IHByb3ZpZGVkLCB3ZSB3aWxsIGFzc3VtZSBtYWlubmV0LlxuICAgKi9cbiAgbmV0d29yaz86IE5ldHdvcms7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNvIG5vZGUgdXNlZCBmb3IgYW55IGFwaSBjYWxscyAoZ2V0IGJhbGFuY2UsIGRlcml2ZWQga2V5IGF1dGhvcml6YXRpb24sIGV0YylcbiAgICovXG4gIG5vZGVVUkk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHJlZGlyZWN0IFVSSS4gSWYgcHJvdmlkZWQsIHdlIGRvIGEgaGFyZCByZWRpcmVjdCB0byB0aGUgaWRlbnRpdHlcbiAgICogZG9tYWluIGFuZCBwYXNzIGRhdGEgdmlhIHF1ZXJ5IHBhcmFtcyBiYWNrIHRvIHRoZSBwcm92aWRlZCB1cmkuXG4gICAqL1xuICByZWRpcmVjdFVSST86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgcGVybWlzc2lvbnMgYW5kIHNwZW5kaW5nIGxpbWl0cyB0aGF0IHdpbGwgYmUgcHJlc2VudGVkIHRvIHRoZSB1c2VyXG4gICAqIGR1cmluZyBsb2dpbi4gSWYgbm90IHByb3ZpZGVkLCB3ZSB3aWxsIGFzc3VtZSBubyBwZXJtaXNzaW9ucy5cbiAgICovXG4gIHNwZW5kaW5nTGltaXRPcHRpb25zPzogVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2VPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYXBwIHVzZWQgdG8gYXV0aG9yaXplIGRlcml2ZWQga2V5cy4gRGVmYXVsdHMgdG8gdW5rbm93bi5cbiAgICovXG4gIGFwcE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNpbmNlIG91ciBrZXlzIGFyZSBnZW5lcmF0ZWQgdXNpbmcgdGhlIHNlY3AyNTZrMSBjdXJ2ZSwgdGhlIGNvcnJlY3RcbiAgICogSldUIGFsZ29yaXRobSBoZWFkZXIgKnNob3VsZCogYmUgRVMyNTZLLlxuICAgKiBTZWU6IGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM4ODEyLmh0bWwjbmFtZS1qb3NlLWFsZ29yaXRobXMtcmVnaXN0cmF0aW9cbiAgICpcbiAgICogSE9XRVZFUiwgdGhlIGJhY2tlbmQgand0IGxpYiB1c2VkIGJ5IGRlc28gZm91bmRhdGlvbiAtXG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9nb2xhbmctand0L2p3dCAtIChhcyB3ZWxsIGFzIG1hbnkgb3RoZXIgand0IGxpYnJhcmllcylcbiAgICogZG8gbm90IHN1cHBvcnQgRVMyNTZLLiBTbyBpbnN0ZWFkLCB3ZSBkZWZhdWx0IHRvIHRoZSBtb3JlIHdpZGVseSBzdXBwb3J0ZWQgRVMyNTYgYWxnbyxcbiAgICogd2hpY2ggY2FuIHN0aWxsIHdvcmsgZm9yIHZlcmlmeWluZyBvdXIgc2lnbmF0dXJlcy4gQnV0IGlmIGEgY29uc3VtZXIgb2YgdGhpcyBsaWIgaXMgdXNpbmcgYVxuICAgKiBqd3QgbGliIHRoYXQgc3VwcG9ydHMgRVMyNTZLIHRoZXkgY2FuIHNwZWNpZnkgdGhhdCBoZXJlLlxuICAgKiBTZWUgdGhpcyBnaXRodWIgaXNzdWVcbiAgICogZm9yIG1vcmUgY29udGV4dDogaHR0cHM6Ly9naXRodWIuY29tL2F1dGgwL25vZGUtanNvbndlYnRva2VuL2lzc3Vlcy84NjJcbiAgICogSWYgRVMyNTZLIGlzIGV2ZXIgc3VwcG9ydGVkIGJ5IHRoZSBiYWNrZW5kIGp3dCBsaWIsIHdlIHNob3VsZCBjaGFuZ2UgdGhpcy5cbiAgICovXG4gIGp3dEFsZ29yaXRobT86IGp3dEFsZ29yaXRobTtcblxuICAvKipcbiAgICogQW4gb3B0aW9uYWwgc3RvcmFnZSBwcm92aWRlci4gSWYgbm90IHByb3ZpZGVkLCB3ZSB3aWxsIGFzc3VtZSBsb2NhbFN0b3JhZ2VcbiAgICogaXMgYXZhaWxhYmxlLlxuICAgKi9cbiAgc3RvcmFnZVByb3ZpZGVyPzogU3RvcmFnZVByb3ZpZGVyO1xuXG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBmdW5jdGlvbiB0aGF0IGlzIHByb3ZpZGVkIHRoZSBpZGVudGl0eSB1cmwgdGhhdCBuZWVkcyB0byBiZVxuICAgKiBvcGVuZWQuIFRoaXMgY2FuIGJlIHVzZWQgdG8gY3VzdG9taXplIGhvdyB0aGUgaWRlbnRpdHkgdXJsIGlzIG9wZW5lZC4gRm9yXG4gICAqIGV4YW1wbGUsIGlmIHlvdSBhcmUgdXNpbmcgcmVhY3QgbmF0aXZlLCB5b3UgbWlnaHQgd2FudCB0byB1c2UgdGhlIExpbmtpbmdcbiAgICogQVBJIHRvIG9wZW4gdGhlIHVybCBpbiBhIHN5c3RlbSBicm93c2VyIHdpbmRvdy5cbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogaWRlbnRpdHlQcmVzZW50ZXI6IGFzeW5jICh1cmwpID0+IHtcbiAgICogICBjb25zdCByZXN1bHQgPSBhd2FpdCBXZWJCcm93c2VyLm9wZW5BdXRoU2Vzc2lvbkFzeW5jKHVybCk7XG4gICAqICAgaWYgKHJlc3VsdC50eXBlID09PSAnc3VjY2VzcycpIHtcbiAgICogICAgIGlkZW50aXR5LmhhbmRsZVJlZGlyZWN0VVJJKHJlc3VsdC51cmwpO1xuICAgKiAgIH1cbiAgICogfSxcbiAgICogYGBgXG4gICAqL1xuICBpZGVudGl0eVByZXNlbnRlcj86ICh1cmw6IHN0cmluZykgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBUElQcm92aWRlciB7XG4gIHBvc3Q6ICh1cmw6IHN0cmluZywgZGF0YTogYW55KSA9PiBQcm9taXNlPGFueT47XG4gIGdldDogKHVybDogc3RyaW5nKSA9PiBQcm9taXNlPGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2luZG93UHJvdmlkZXIge1xuICBsb2NhdGlvbjogeyBzZWFyY2g6IHN0cmluZzsgcGF0aG5hbWU6IHN0cmluZzsgaHJlZjogc3RyaW5nIH07XG4gIGhpc3Rvcnk6IHsgcmVwbGFjZVN0YXRlOiAoc3RhdGU6IGFueSwgdGl0bGU6IHN0cmluZywgdXJsOiBzdHJpbmcpID0+IHZvaWQgfTtcbiAgbG9jYWxTdG9yYWdlOiB7XG4gICAgZ2V0SXRlbTogKGtleTogc3RyaW5nKSA9PiBzdHJpbmcgfCBudWxsO1xuICAgIHNldEl0ZW06IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgICByZW1vdmVJdGVtOiAoa2V5OiBzdHJpbmcpID0+IHZvaWQ7XG4gIH07XG4gIG9wZW46IChcbiAgICB1cmw6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIG9wdGlvbnM6IHN0cmluZ1xuICApID0+IFdpbmRvdyB8IG51bGw7XG4gIGFkZEV2ZW50TGlzdGVuZXI6IChldmVudDogc3RyaW5nLCBjYWxsYmFjazogKGV2ZW50OiBhbnkpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHJlbW92ZUV2ZW50TGlzdGVuZXI6IChldmVudDogc3RyaW5nLCBjYWxsYmFjazogKGV2ZW50OiBhbnkpID0+IHZvaWQpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9naW5PcHRpb25zIHtcbiAgZ2V0RnJlZURlc286IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFByaW1hcnlEZXJpdmVkS2V5SW5mbyA9IElkZW50aXR5RGVyaXZlUGF5bG9hZCAmIHtcbiAgdHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0czogVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2U7XG4gIElzVmFsaWQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgU3RvcmVkVXNlciA9IHtcbiAgcHVibGljS2V5OiBzdHJpbmc7XG4gIHByaW1hcnlEZXJpdmVkS2V5OiBQcmltYXJ5RGVyaXZlZEtleUluZm87XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIElkZW50aXR5VXNlciB7XG4gIGFjY2Vzc0xldmVsOiBudW1iZXI7XG4gIGFjY2Vzc0xldmVsSG1hYzogc3RyaW5nO1xuICBidGNEZXBvc2l0QWRkcmVzczogc3RyaW5nO1xuICBlbmNyeXB0ZWRTZWVkSGV4OiBzdHJpbmc7XG4gIGV0aERlcG9zaXRBZGRyZXNzOiBzdHJpbmc7XG4gIGRlcml2ZWRQdWJsaWNLZXlCYXNlNThDaGVjaz86IHN0cmluZztcbiAgaGFzRXh0cmFUZXh0OiBib29sZWFuO1xuICBuZXR3b3JrOiBzdHJpbmc7XG4gIHZlcnNpb246IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJZGVudGl0eUxvZ2luUGF5bG9hZCB7XG4gIHVzZXJzOiBSZWNvcmQ8c3RyaW5nLCBJZGVudGl0eVVzZXI+O1xuICBwdWJsaWNLZXlBZGRlZDogc3RyaW5nO1xuICBwaG9uZU51bWJlclN1Y2Nlc3M6IGJvb2xlYW47XG4gIHNpZ25lZFVwOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElkZW50aXR5U3RhdGUge1xuICBjdXJyZW50VXNlcjogU3RvcmVkVXNlciB8IG51bGw7XG4gIGFsdGVybmF0ZVVzZXJzOiBSZWNvcmQ8c3RyaW5nLCBTdG9yZWRVc2VyPiB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVmZXJyZWQge1xuICByZXNvbHZlOiAoYXJnczogYW55KSA9PiB2b2lkO1xuICByZWplY3Q6IChhcmdzOiBhbnkpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5UGFpciB7XG4gIHNlZWRIZXg6IHN0cmluZztcbiAgcHJpdmF0ZTogVWludDhBcnJheTtcbiAgcHVibGljOiBVaW50OEFycmF5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1YnNjcmliZXJOb3RpZmljYXRpb24ge1xuICBldmVudDogTk9USUZJQ0FUSU9OX0VWRU5UUztcbiAgY3VycmVudFVzZXI6IFN0b3JlZFVzZXIgfCBudWxsO1xuICBhbHRlcm5hdGVVc2VyczogUmVjb3JkPHN0cmluZywgU3RvcmVkVXNlcj4gfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV0aGVyc2NhblRyYW5zYWN0aW9uc0J5QWRkcmVzc1Jlc3BvbnNlIHtcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgcmVzdWx0OiBFdGhlcnNjYW5UcmFuc2FjdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV0aGVyc2NhblRyYW5zYWN0aW9uIHtcbiAgYmxvY2tOdW1iZXI6IHN0cmluZztcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIGhhc2g6IHN0cmluZztcbiAgbm9uY2U6IHN0cmluZztcbiAgYmxvY2tIYXNoOiBzdHJpbmc7XG4gIHRyYW5zYWN0aW9uSW5kZXg6IHN0cmluZztcbiAgZnJvbTogc3RyaW5nO1xuICB0bzogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBnYXM6IHN0cmluZztcbiAgZ2FzUHJpY2U6IHN0cmluZztcbiAgaXNFcnJvcjogc3RyaW5nO1xuICB0eHJlY2VpcHRfc3RhdHVzOiBzdHJpbmc7XG4gIGlucHV0OiBzdHJpbmc7XG4gIGNvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xuICBjdW11bGF0aXZlR2FzVXNlZDogc3RyaW5nO1xuICBnYXNVc2VkOiBzdHJpbmc7XG4gIGNvbmZpcm1hdGlvbnM6IHN0cmluZztcbiAgbWV0aG9kSWQ6IHN0cmluZztcbiAgZnVuY3Rpb25OYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWNjZXNzR3JvdXBQcml2YXRlSW5mbyB7XG4gIEFjY2Vzc0dyb3VwUHVibGljS2V5QmFzZTU4Q2hlY2s6IHN0cmluZztcbiAgQWNjZXNzR3JvdXBQcml2YXRlS2V5SGV4OiBzdHJpbmc7XG4gIEFjY2Vzc0dyb3VwS2V5TmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBOT1RJRklDQVRJT05fRVZFTlRTIHtcbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgY29uc3VtaW5nIGFwcCBpbml0aWFsbHkgc3Vic2NyaWJlcyB0byBpZGVudGl0eS5cbiAgICovXG4gIFNVQlNDUklCRSA9ICdTVUJTQ1JJQkUnLFxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGFuIGludGVybWVkaWF0ZSBldmVudCBmaXJlZCBBRlRFUiB0aGUgdXNlciBjb21wbGV0ZXMgYW4gaWRlbnRpdHkgZmxvd1xuICAgKiB0aGF0IHJlcXVpcmVzIGEgZGVyaXZlZCBrZXkgYXV0aG9yaXphdGlvbi4gVGhpcyBldmVudCBpcyBmaXJlZCBCRUZPUkUgdGhlXG4gICAqIHJlcXVlc3QgdG8gYXV0aG9yaXplIHRoZSBkZXJpdmVkIGtleSBpcyBtYWRlLlxuICAgKi9cbiAgQVVUSE9SSVpFX0RFUklWRURfS0VZX1NUQVJUID0gJ0FVVEhPUklaRV9ERVJJVkVEX0tFWV9TVEFSVCcsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gaW50ZXJtZWRpYXRlIGV2ZW50IGZpcmVkIEFGVEVSIHRoZSB1c2VyIGNvbXBsZXRlcyBhbiBpZGVudGl0eVxuICAgKiBmbG93IHRoYXQgcmVxdWlyZXMgYSBkZXJpdmVkIGtleSBhdXRob3JpemF0aW9uLiBUaGlzIGV2ZW50IGlzIGZpcmVkIEFGVEVSXG4gICAqIHRoZSByZXF1ZXN0IHRvIGF1dGhvcml6ZSB0aGUgZGVyaXZlZCBrZXkgaXMgbWFkZS5cbiAgICovXG4gIEFVVEhPUklaRV9ERVJJVkVEX0tFWV9FTkQgPSAnQVVUSE9SSVpFX0RFUklWRURfS0VZX0VORCcsXG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgaWYgdGhlIHJlcXVlc3QgdG8gYXV0aG9yaXplIGEgZGVyaXZlZCBrZXkgZmFpbHMuXG4gICAqL1xuICBBVVRIT1JJWkVfREVSSVZFRF9LRVlfRkFJTCA9ICdBVVRIT1JJWkVfREVSSVZFRF9LRVlfRkFJTCcsXG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBvcGVucyB0aGUgcGVybWlzc2lvbnMgYXBwcm92YWwgcG9wdXAuXG4gICAqL1xuICBSRVFVRVNUX1BFUk1JU1NJT05TX1NUQVJUID0gJ1JFUVVFU1RfUEVSTUlTU0lPTlNfU1RBUlQnLFxuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIHVzZXIgY29tcGxldGVzIGFwcHJvdmluZyBwZXJtaXNzaW9ucywgYW5kXG4gICAqIGNvbWVzIEFGVEVSIHRoZSBpbnRlcm1lZGlhdGUgQVVUSE9SSVpFX0RFUklWRURfS0VZIGV2ZW50cy5cbiAgICovXG4gIFJFUVVFU1RfUEVSTUlTU0lPTlNfRU5EID0gJ1JFUVVFU1RfUEVSTUlTU0lPTlNfRU5EJyxcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSB1c2VyIG9wZW5zIHRoZSBsb2dpbiBwb3B1cC5cbiAgICovXG4gIExPR0lOX1NUQVJUID0gJ0xPR0lOX1NUQVJUJyxcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSB1c2VyIGNvbXBsZXRlcyBsb2dnaW5nIGluLCBhbmRcbiAgICogY29tZXMgQUZURVIgdGhlIGludGVybWVkaWF0ZSBBVVRIT1JJWkVfREVSSVZFRF9LRVkgZXZlbnRzLlxuICAgKi9cbiAgTE9HSU5fRU5EID0gJ0xPR0lOX0VORCcsXG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBvcGVucyB0aGUgbG9nb3V0IHBvcHVwLlxuICAgKi9cbiAgTE9HT1VUX1NUQVJUID0gJ0xPR09VVF9TVEFSVCcsXG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBjb21wbGV0ZXMgbG9nZ2luZyBvdXQsIGFuZFxuICAgKiBjb21lcyBBRlRFUiB0aGUgaW50ZXJtZWRpYXRlIEFVVEhPUklaRV9ERVJJVkVEX0tFWSBldmVudHMuXG4gICAqL1xuICBMT0dPVVRfRU5EID0gJ0xPR09VVF9FTkQnLFxuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIHVzZXIgb3BlbnMgdGhlIGdldCBkZXNvIHBvcHVwLlxuICAgKi9cbiAgR0VUX0ZSRUVfREVTT19TVEFSVCA9ICdHRVRfRlJFRV9ERVNPX1NUQVJUJyxcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSB1c2VyIGNvbXBsZXRlcyB0aGUgZ2V0IGRlc28gZmxvdywgYW5kIGNvbWVzXG4gICAqIEFGVEVSIHRoZSBpbnRlcm1lZGlhdGUgQVVUSE9SSVpFX0RFUklWRURfS0VZIGV2ZW50cy5cbiAgICovXG4gIEdFVF9GUkVFX0RFU09fRU5EID0gJ0dFVF9GUkVFX0RFU09fRU5EJyxcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSB1c2VyIG9wZW5zIHRoZSB2ZXJpZnkgcGhvbmUgbnVtYmVyIHBvcHVwLlxuICAgKi9cbiAgVkVSSUZZX1BIT05FX05VTUJFUl9TVEFSVCA9ICdWRVJJRllfUEhPTkVfTlVNQkVSX1NUQVJUJyxcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSB1c2VyIGNvbXBsZXRlcyB0aGUgdmVyaWZ5IHBob25lIG51bWJlciBmbG93LFxuICAgKiBhbmQgY29tZXMgQUZURVIgdGhlIGludGVybWVkaWF0ZSBBVVRIT1JJWkVfREVSSVZFRF9LRVkgZXZlbnRzLlxuICAgKi9cbiAgVkVSSUZZX1BIT05FX05VTUJFUl9FTkQgPSAnVkVSSUZZX1BIT05FX05VTUJFUl9FTkQnLFxuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIGNvbnN1bWluZyBhcHAgc3dpdGNoZXMgdGhlIGFjdGl2ZSB1c2VyLlxuICAgKi9cbiAgQ0hBTkdFX0FDVElWRV9VU0VSID0gJ0NIQU5HRV9BQ1RJVkVfVVNFUicsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXN5bmNTdG9yYWdlIHtcbiAgZ2V0SXRlbTogKGtleTogc3RyaW5nKSA9PiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xuICBzZXRJdGVtOiAoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIHJlbW92ZUl0ZW06IChrZXk6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgY2xlYXI6ICgpID0+IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCB0eXBlIFN0b3JhZ2VQcm92aWRlciA9IFN0b3JhZ2UgfCBBc3luY1N0b3JhZ2U7XG4iXX0=

@@ -1,12 +0,12 @@

export * from "./backend-types";
export * from "./data";
export * from "./deso-protocol";
export * from "./identity";
export * from "./jwt-requests";
export * from "./transactions/access-groups";
export * from "./transactions/associations";
export * from "./transactions/derived-keys";
export * from "./transactions/deso-tokens";
export * from "./transactions/financial";
export * from "./transactions/nfts";
export * from "./transactions/social";
export * from './backend-types/index.js';
export * from './data/index.js';
export * from './deso-protocol.js';
export * from './identity/index.js';
export * from './jwt-requests.js';
export * from './transactions/access-groups.js';
export * from './transactions/associations.js';
export * from './transactions/derived-keys.js';
export * from './transactions/deso-tokens.js';
export * from './transactions/financial.js';
export * from './transactions/nfts.js';
export * from './transactions/social.js';

@@ -1,13 +0,13 @@

export * from "./backend-types";
export * from "./data";
export * from "./deso-protocol";
export * from "./identity";
export * from "./jwt-requests";
export * from "./transactions/access-groups";
export * from "./transactions/associations";
export * from "./transactions/derived-keys";
export * from "./transactions/deso-tokens";
export * from "./transactions/financial";
export * from "./transactions/nfts";
export * from "./transactions/social";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2JhY2tlbmQtdHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Rlc28tcHJvdG9jb2xcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2lkZW50aXR5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9qd3QtcmVxdWVzdHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RyYW5zYWN0aW9ucy9hY2Nlc3MtZ3JvdXBzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90cmFuc2FjdGlvbnMvYXNzb2NpYXRpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90cmFuc2FjdGlvbnMvZGVyaXZlZC1rZXlzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90cmFuc2FjdGlvbnMvZGVzby10b2tlbnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RyYW5zYWN0aW9ucy9maW5hbmNpYWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RyYW5zYWN0aW9ucy9uZnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90cmFuc2FjdGlvbnMvc29jaWFsXCI7XG4iXX0=
export * from './backend-types/index.js';
export * from './data/index.js';
export * from './deso-protocol.js';
export * from './identity/index.js';
export * from './jwt-requests.js';
export * from './transactions/access-groups.js';
export * from './transactions/associations.js';
export * from './transactions/derived-keys.js';
export * from './transactions/deso-tokens.js';
export * from './transactions/financial.js';
export * from './transactions/nfts.js';
export * from './transactions/social.js';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2JhY2tlbmQtdHlwZXMvaW5kZXguanMnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhL2luZGV4LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZGVzby1wcm90b2NvbC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2lkZW50aXR5L2luZGV4LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vand0LXJlcXVlc3RzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNhY3Rpb25zL2FjY2Vzcy1ncm91cHMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2FjdGlvbnMvYXNzb2NpYXRpb25zLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNhY3Rpb25zL2Rlcml2ZWQta2V5cy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zYWN0aW9ucy9kZXNvLXRva2Vucy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zYWN0aW9ucy9maW5hbmNpYWwuanMnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2FjdGlvbnMvbmZ0cy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zYWN0aW9ucy9zb2NpYWwuanMnO1xuIl19

@@ -1,3 +0,4 @@

import { ConstructedTransactionResponse, OptionalFeesAndExtraData, RequestOptions, SubmitTransactionResponse, TransactionFee } from './backend-types';
import { Transaction, TransactionExtraData, TransactionExtraDataKV, TransactionMetadataRecord, TransactionOutput } from './identity';
import { ConstructedTransactionResponse, DeSoNonce, OptionalFeesAndExtraData, RequestOptions, SubmitTransactionResponse, TransactionFee } from './backend-types/index.js';
import { PartialWithRequiredFields } from './data/index.js';
import { Transaction, TransactionExtraData, TransactionExtraDataKV, TransactionMetadataRecord, TransactionOutput } from './identity/index.js';
export declare const globalConfigOptions: {

@@ -13,2 +14,3 @@ MinFeeRateNanosPerKB: number;

* @param params tx specific params for the endpoint + optional fees and extra data
* @param options options for the request, including whether to broadcast
*/

@@ -27,3 +29,3 @@ export declare const handleSignAndSubmit: (endpoint: string, params: OptionalFeesAndExtraData & any, options?: RequestOptions) => Promise<{

TransactionFees?: TransactionFee[] | null;
BlockHeight?: number;
Nonce?: PartialWithRequiredFields<DeSoNonce, 'ExpirationBlockHeight'>;
};

@@ -30,0 +32,0 @@ export declare const convertExtraData: (extraData?: {

@@ -1,14 +0,5 @@

var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { bytesToHex } from '@noble/hashes/utils';
import { TransactionType, } from './backend-types';
import { api, cleanURL, getAppState } from './data';
import { Transaction, TransactionExtraData, TransactionExtraDataKV, TransactionNonce, TransactionOutput, TransactionToMsgDeSoTxn, bs58PublicKeyToCompressedBytes, encodeUTF8ToBytes, identity, publicKeyToBase58Check, sha256X2, } from './identity';
import { TransactionType, } from './backend-types/index.js';
import { api, cleanURL, getAppState, } from './data/index.js';
import { Transaction, TransactionExtraData, TransactionExtraDataKV, TransactionNonce, TransactionOutput, TransactionToMsgDeSoTxn, bs58PublicKeyToCompressedBytes, encodeUTF8ToBytes, identity, publicKeyToBase58Check, sha256X2, } from './identity/index.js';
////////////////////////////////////////////////////////////////////////////////

@@ -31,12 +22,16 @@ // This is all the stuff we don't export to consumers of the library. If

* @param params tx specific params for the endpoint + optional fees and extra data
* @param options options for the request, including whether to broadcast
*/
export const handleSignAndSubmit = (endpoint, params,
export const handleSignAndSubmit = async (endpoint, params,
// we always broadcast by default, but consumers can optionally disable it.
options = { broadcast: true }) => __awaiter(void 0, void 0, void 0, function* () {
var _a;
const constructedTransactionResponse = yield ((options.localConstruction ||
options = { broadcast: true }) => {
const constructedTransactionResponse = await ((options.localConstruction ||
globalConfigOptions.LocalConstruction) &&
options.constructionFunction
? options.constructionFunction(params)
: api.post(options.nodeURI ? `${cleanURL(options.nodeURI, endpoint)}` : endpoint, Object.assign(Object.assign({}, params), { MinFeeRateNanosPerKB: (_a = params.MinFeeRateNanosPerKB) !== null && _a !== void 0 ? _a : globalConfigOptions.MinFeeRateNanosPerKB })));
: api.post(options.nodeURI ? `${cleanURL(options.nodeURI, endpoint)}` : endpoint, {
...params,
MinFeeRateNanosPerKB: params.MinFeeRateNanosPerKB ??
globalConfigOptions.MinFeeRateNanosPerKB,
}));
if ((options.localConstruction || globalConfigOptions.LocalConstruction) &&

@@ -47,3 +42,3 @@ options.constructionFunction) {

const submittedTransactionResponse = options.broadcast !== false
? yield identity.signAndSubmit(constructedTransactionResponse)
? await identity.signAndSubmit(constructedTransactionResponse)
: null;

@@ -54,3 +49,3 @@ return {

};
});
};
export const convertExtraData = (extraData, consensusExtraDataKVs) => {

@@ -64,16 +59,13 @@ const sortedExtraData = (consensusExtraDataKVs || [])

};
const makeTransactionNonce = (desoNonce) => {
const nonce = new TransactionNonce();
nonce.expirationBlockHeight =
desoNonce?.ExpirationBlockHeight || Number.MAX_SAFE_INTEGER;
// TODO: cache partial IDs so we don't generate the same one twice.
nonce.partialId = desoNonce?.PartialID || Math.floor(Math.random() * 1e18);
return nonce;
};
export const getTxWithFeeNanos = (pubKey, metadata, txFields) => {
var _a;
const nonce = new TransactionNonce();
// NOTE: typically we would use the block height returned from a node to build
// a transaction, but just for calculating fees we can use a pseudo value, in
// this case we just use the max safe integer.
// TODO: put in real block height buffer.
nonce.expirationBlockHeight = (txFields === null || txFields === void 0 ? void 0 : txFields.BlockHeight)
? txFields.BlockHeight + 275
: Number.MAX_SAFE_INTEGER;
// TODO: cache used partial IDs? Replace with better logic
// for generating random uint64
nonce.partialId = Math.floor(Math.random() * 1e18);
const transactionFeeOutputs = ((txFields === null || txFields === void 0 ? void 0 : txFields.TransactionFees) || []).map((tf) => {
const nonce = makeTransactionNonce(txFields?.Nonce);
const transactionFeeOutputs = (txFields?.TransactionFees || []).map((tf) => {
const newOutput = new TransactionOutput();

@@ -89,14 +81,22 @@ newOutput.publicKey = bs58PublicKeyToCompressedBytes(tf.PublicKeyBase58Check);

metadata,
outputs: transactionFeeOutputs.concat((txFields === null || txFields === void 0 ? void 0 : txFields.Outputs) || []),
outputs: transactionFeeOutputs.concat(txFields?.Outputs || []),
inputs: [],
extraData: convertExtraData(txFields === null || txFields === void 0 ? void 0 : txFields.ExtraData, txFields === null || txFields === void 0 ? void 0 : txFields.ConsensusExtraDataKVs),
extraData: convertExtraData(txFields?.ExtraData, txFields?.ConsensusExtraDataKVs),
publicKey: bs58PublicKeyToCompressedBytes(pubKey),
signature: new Uint8Array(0),
});
return computeFee(transaction, (_a = txFields === null || txFields === void 0 ? void 0 : txFields.MinFeeRateNanosPerKB) !== null && _a !== void 0 ? _a : globalConfigOptions.MinFeeRateNanosPerKB);
return computeFee(transaction, txFields?.MinFeeRateNanosPerKB ?? globalConfigOptions.MinFeeRateNanosPerKB);
};
export const constructBalanceModelTx = (pubKey, metadata, txFields) => __awaiter(void 0, void 0, void 0, function* () {
export const constructBalanceModelTx = async (pubKey, metadata, txFields) => {
// TODO: cache block height somewhere.
const { BlockHeight } = yield getAppState();
const txnWithFee = getTxWithFeeNanos(pubKey, metadata, Object.assign(Object.assign({}, txFields), { BlockHeight }));
if (!txFields?.Nonce) {
const { BlockHeight } = await getAppState();
if (!txFields) {
txFields = {};
}
txFields.Nonce = {
ExpirationBlockHeight: BlockHeight + 275,
};
}
const txnWithFee = getTxWithFeeNanos(pubKey, metadata, txFields);
const txnBytes = txnWithFee.toBytes();

@@ -145,3 +145,3 @@ const TransactionHex = bytesToHex(txnBytes);

};
});
};
export const computeFee = (txn, feeRate) => {

@@ -168,6 +168,6 @@ if (!feeRate)

export const sumTransactionFees = (txFees) => {
if (!(txFees === null || txFees === void 0 ? void 0 : txFees.length))
if (!txFees?.length)
return 0;
return txFees.reduce((acc, curr) => acc + curr.AmountNanos, 0);
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJuYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFNTCxlQUFlLEdBQ2hCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3BELE9BQU8sRUFDTCxXQUFXLEVBQ1gsb0JBQW9CLEVBQ3BCLHNCQUFzQixFQU90QixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2Qiw4QkFBOEIsRUFDOUIsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixzQkFBc0IsRUFDdEIsUUFBUSxHQUNULE1BQU0sWUFBWSxDQUFDO0FBQ3BCLGdGQUFnRjtBQUNoRix3RUFBd0U7QUFDeEUsMEVBQTBFO0FBQzFFLGdGQUFnRjtBQUVoRiw2RUFBNkU7QUFDN0UsOEVBQThFO0FBQzlFLCtCQUErQjtBQUMvQixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRztJQUNqQyxvQkFBb0IsRUFBRSxJQUFJO0lBQzFCLGlCQUFpQixFQUFFLEtBQUs7Q0FDekIsQ0FBQztBQUVGOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQ2pDLFFBQWdCLEVBQ2hCLE1BQXNDO0FBQ3RDLDJFQUEyRTtBQUMzRSxVQUEwQixFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsRUFJNUMsRUFBRTs7SUFDSCxNQUFNLDhCQUE4QixHQUFHLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUI7UUFDdEUsbUJBQW1CLENBQUMsaUJBQWlCLENBQUM7UUFDeEMsT0FBTyxDQUFDLG9CQUFvQjtRQUMxQixDQUFDLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztR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SSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN6QyxHQUFHLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztLQUNwQjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBZ0IsRUFBVSxFQUFFO0lBQ3hELE9BQU8sR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztBQUM5QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQWEsRUFBVyxFQUFFO0lBQzdELE9BQU8sQ0FDTCxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ2pELENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUNoQyxNQUFnQyxFQUN4QixFQUFFO0lBQ1YsSUFBSSxDQUFDLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE1BQU0sQ0FBQTtRQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQVcsQ0FBQyxDQUFDO0FBQzNFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJ5dGVzVG9IZXggfSBmcm9tICdAbm9ibGUvaGFzaGVzL3V0aWxzJztcbmltcG9ydCB7XG4gIENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZSxcbiAgT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhLFxuICBSZXF1ZXN0T3B0aW9ucyxcbiAgU3VibWl0VHJhbnNhY3Rpb25SZXNwb25zZSxcbiAgVHJhbnNhY3Rpb25GZWUsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnLi9iYWNrZW5kLXR5cGVzJztcbmltcG9ydCB7IGFwaSwgY2xlYW5VUkwsIGdldEFwcFN0YXRlIH0gZnJvbSAnLi9kYXRhJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvbkV4dHJhRGF0YSxcbiAgVHJhbnNhY3Rpb25FeHRyYURhdGFLVixcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YUFjY2VwdE5GVEJpZCxcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YUNyZWF0ZU5GVCxcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YU5GVEJpZCxcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YVJlY29yZCxcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YVN1Ym1pdFBvc3QsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFVcGRhdGVORlQsXG4gIFRyYW5zYWN0aW9uTm9uY2UsXG4gIFRyYW5zYWN0aW9uT3V0cHV0LFxuICBUcmFuc2FjdGlvblRvTXNnRGVTb1R4bixcbiAgYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzLFxuICBlbmNvZGVVVEY4VG9CeXRlcyxcbiAgaWRlbnRpdHksXG4gIHB1YmxpY0tleVRvQmFzZTU4Q2hlY2ssXG4gIHNoYTI1NlgyLFxufSBmcm9tICcuL2lkZW50aXR5Jztcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUaGlzIGlzIGFsbCB0aGUgc3R1ZmYgd2UgZG9uJ3QgZXhwb3J0IHRvIGNvbnN1bWVycyBvZiB0aGUgbGlicmFyeS4gSWZcbi8vIGFueXRoaW5nIGhlcmUgbmVlZHMgdG8gYmUgZXhwb3J0ZWQsIGl0IHNob3VsZCBiZSBtb3ZlZCB0byBhbm90aGVyIGZpbGUuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLyBUaGlzIGNhbiBiZSBtdXRhdGVkIGJ5IHRoZSB1c2VyIG9mIHRoZSBsaWJyYXJ5IHZpYSB0aGUgY29uZmlndXJlIGZ1bmN0aW9uLFxuLy8gYnV0IGl0J3Mgbm90IGV4cG9ydGVkIGV4cGxpY2l0bHkuIFdoYXRldmVyIGNoYW5nZXMgYXJlIG1hZGUgZXh0ZXJuYWxseSB3aWxsXG4vLyBiZSByZWZsZWN0ZWQgaW4gdGhlIGxpYnJhcnkuXG5leHBvcnQgY29uc3QgZ2xvYmFsQ29uZmlnT3B0aW9ucyA9IHtcbiAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IDE1MDAsXG4gIExvY2FsQ29uc3RydWN0aW9uOiBmYWxzZSxcbn07XG5cbi8qKlxuICogV3JhcHMgc2lnbmluZyBhbmQgc3VibWl0IHRvIGluY2x1ZGUgdGhlIGNvbmZpZ3VyYWJsZSBmZWUsIGFuZCBhZGQgZGVmYXVsdHNcbiAqIGZvciBvcHRpb25hbCBwYXJhbXMuXG4gKlxuICogQHBhcmFtIGVuZHBvaW50IHRoZSBlbmRwb2ludCBmb3IgY29uc3RydWN0aW5nIHRoZSB0cmFuc2FjdGlvblxuICogQHBhcmFtIHBhcmFtcyB0eCBzcGVjaWZpYyBwYXJhbXMgZm9yIHRoZSBlbmRwb2ludCArIG9wdGlvbmFsIGZlZXMgYW5kIGV4dHJhIGRhdGFcbiAqL1xuZXhwb3J0IGNvbnN0IGhhbmRsZVNpZ25BbmRTdWJtaXQgPSBhc3luYyAoXG4gIGVuZHBvaW50OiBzdHJpbmcsXG4gIHBhcmFtczogT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhICYgYW55LFxuICAvLyB3ZSBhbHdheXMgYnJvYWRjYXN0IGJ5IGRlZmF1bHQsIGJ1dCBjb25zdW1lcnMgY2FuIG9wdGlvbmFsbHkgZGlzYWJsZSBpdC5cbiAgb3B0aW9uczogUmVxdWVzdE9wdGlvbnMgPSB7IGJyb2FkY2FzdDogdHJ1ZSB9XG4pOiBQcm9taXNlPHtcbiAgY29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlOiBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U7XG4gIHN1Ym1pdHRlZFRyYW5zYWN0aW9uUmVzcG9uc2U6IFN1Ym1pdFRyYW5zYWN0aW9uUmVzcG9uc2UgfCBudWxsO1xufT4gPT4ge1xuICBjb25zdCBjb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2UgPSBhd2FpdCAoKG9wdGlvbnMubG9jYWxDb25zdHJ1Y3Rpb24gfHxcbiAgICBnbG9iYWxDb25maWdPcHRpb25zLkxvY2FsQ29uc3RydWN0aW9uKSAmJlxuICBvcHRpb25zLmNvbnN0cnVjdGlvbkZ1bmN0aW9uXG4gICAgPyBvcHRpb25zLmNvbnN0cnVjdGlvbkZ1bmN0aW9uKHBhcmFtcylcbiAgICA6IGFwaS5wb3N0KFxuICAgICAgICBvcHRpb25zLm5vZGVVUkkgPyBgJHtjbGVhblVSTChvcHRpb25zLm5vZGVVUkksIGVuZHBvaW50KX1gIDogZW5kcG9pbnQsXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6XG4gICAgICAgICAgICBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IgPz9cbiAgICAgICAgICAgIGdsb2JhbENvbmZpZ09wdGlvbnMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICAgIH1cbiAgICAgICkpO1xuICBpZiAoXG4gICAgKG9wdGlvbnMubG9jYWxDb25zdHJ1Y3Rpb24gfHwgZ2xvYmFsQ29uZmlnT3B0aW9ucy5Mb2NhbENvbnN0cnVjdGlvbikgJiZcbiAgICBvcHRpb25zLmNvbnN0cnVjdGlvbkZ1bmN0aW9uXG4gICkge1xuICAgIGNvbnNvbGUubG9nKGNvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZSk7XG4gIH1cbiAgY29uc3Qgc3VibWl0dGVkVHJhbnNhY3Rpb25SZXNwb25zZSA9XG4gICAgb3B0aW9ucy5icm9hZGNhc3QgIT09IGZhbHNlXG4gICAgICA/IGF3YWl0IGlkZW50aXR5LnNpZ25BbmRTdWJtaXQoY29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlKVxuICAgICAgOiBudWxsO1xuXG4gIHJldHVybiB7XG4gICAgY29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlLFxuICAgIHN1Ym1pdHRlZFRyYW5zYWN0aW9uUmVzcG9uc2UsXG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBCYWxhbmNlTW9kZWxUcmFuc2FjdGlvbkZpZWxkcyA9IHtcbiAgT3V0cHV0cz86IFRyYW5zYWN0aW9uT3V0cHV0W107XG4gIEV4dHJhRGF0YT86IHsgW2s6IHN0cmluZ106IHN0cmluZyB9O1xuICBDb25zZW5zdXNFeHRyYURhdGFLVnM/OiBUcmFuc2FjdGlvbkV4dHJhRGF0YUtWW107XG4gIE1pbkZlZVJhdGVOYW5vc1BlcktCPzogbnVtYmVyO1xuICBUcmFuc2FjdGlvbkZlZXM/OiBUcmFuc2FjdGlvbkZlZVtdIHwgbnVsbDtcbiAgQmxvY2tIZWlnaHQ/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgY29uc3QgY29udmVydEV4dHJhRGF0YSA9IChcbiAgZXh0cmFEYXRhPzogeyBbazogc3RyaW5nXTogc3RyaW5nIH0sXG4gIGNvbnNlbnN1c0V4dHJhRGF0YUtWcz86IFRyYW5zYWN0aW9uRXh0cmFEYXRhS1ZbXVxuKTogVHJhbnNhY3Rpb25FeHRyYURhdGEgPT4ge1xuICBjb25zdCBzb3J0ZWRFeHRyYURhdGEgPSAoY29uc2Vuc3VzRXh0cmFEYXRhS1ZzIHx8IFtdKVxuICAgIC5jb25jYXQoXG4gICAgICBPYmplY3QuZW50cmllcyhleHRyYURhdGEgfHwge30pLm1hcChcbiAgICAgICAgKFtrLCB2XSkgPT5cbiAgICAgICAgICBuZXcgVHJhbnNhY3Rpb25FeHRyYURhdGFLVihlbmNvZGVVVEY4VG9CeXRlcyhrKSwgZW5jb2RlVVRGOFRvQnl0ZXModikpXG4gICAgICApXG4gICAgKVxuICAgIC5zb3J0KChhLCBiKSA9PiBhLmtleS50b1N0cmluZygpLmxvY2FsZUNvbXBhcmUoYi5rZXkudG9TdHJpbmcoKSkpO1xuICBjb25zdCByZWFsRXh0cmFEYXRhID0gbmV3IFRyYW5zYWN0aW9uRXh0cmFEYXRhKCk7XG4gIHJlYWxFeHRyYURhdGEua3ZzID0gc29ydGVkRXh0cmFEYXRhO1xuICByZXR1cm4gcmVhbEV4dHJhRGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeFdpdGhGZWVOYW5vcyA9IChcbiAgcHViS2V5OiBzdHJpbmcsXG4gIG1ldGFkYXRhOiBUcmFuc2FjdGlvbk1ldGFkYXRhUmVjb3JkLFxuICB0eEZpZWxkcz86IEJhbGFuY2VNb2RlbFRyYW5zYWN0aW9uRmllbGRzXG4pID0+IHtcbiAgY29uc3Qgbm9uY2UgPSBuZXcgVHJhbnNhY3Rpb25Ob25jZSgpO1xuICAvLyBOT1RFOiB0eXBpY2FsbHkgd2Ugd291bGQgdXNlIHRoZSBibG9jayBoZWlnaHQgcmV0dXJuZWQgZnJvbSBhIG5vZGUgdG8gYnVpbGRcbiAgLy8gYSB0cmFuc2FjdGlvbiwgYnV0IGp1c3QgZm9yIGNhbGN1bGF0aW5nIGZlZXMgd2UgY2FuIHVzZSBhIHBzZXVkbyB2YWx1ZSwgaW5cbiAgLy8gdGhpcyBjYXNlIHdlIGp1c3QgdXNlIHRoZSBtYXggc2FmZSBpbnRlZ2VyLlxuICAvLyBUT0RPOiBwdXQgaW4gcmVhbCBibG9jayBoZWlnaHQgYnVmZmVyLlxuICBub25jZS5leHBpcmF0aW9uQmxvY2tIZWlnaHQgPSB0eEZpZWxkcz8uQmxvY2tIZWlnaHRcbiAgICA/IHR4RmllbGRzLkJsb2NrSGVpZ2h0ICsgMjc1XG4gICAgOiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbiAgLy8gVE9ETzogY2FjaGUgdXNlZCBwYXJ0aWFsIElEcz8gUmVwbGFjZSB3aXRoIGJldHRlciBsb2dpY1xuICAvLyBmb3IgZ2VuZXJhdGluZyByYW5kb20gdWludDY0XG4gIG5vbmNlLnBhcnRpYWxJZCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDFlMTgpO1xuICBjb25zdCB0cmFuc2FjdGlvbkZlZU91dHB1dHMgPSAodHhGaWVsZHM/LlRyYW5zYWN0aW9uRmVlcyB8fCBbXSkubWFwKCh0ZikgPT4ge1xuICAgIGNvbnN0IG5ld091dHB1dCA9IG5ldyBUcmFuc2FjdGlvbk91dHB1dCgpO1xuICAgIG5ld091dHB1dC5wdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgICB0Zi5QdWJsaWNLZXlCYXNlNThDaGVja1xuICAgICk7XG4gICAgbmV3T3V0cHV0LmFtb3VudE5hbm9zID0gdGYuQW1vdW50TmFub3M7XG4gICAgcmV0dXJuIG5ld091dHB1dDtcbiAgfSk7XG4gIGNvbnN0IHRyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKHtcbiAgICB2ZXJzaW9uOiAxLFxuICAgIGZlZU5hbm9zOiAwLFxuICAgIG5vbmNlLFxuICAgIG1ldGFkYXRhLFxuICAgIG91dHB1dHM6IHRyYW5zYWN0aW9uRmVlT3V0cHV0cy5jb25jYXQodHhGaWVsZHM/Lk91dHB1dHMgfHwgW10pLFxuICAgIGlucHV0czogW10sXG4gICAgZXh0cmFEYXRhOiBjb252ZXJ0RXh0cmFEYXRhKFxuICAgICAgdHhGaWVsZHM/LkV4dHJhRGF0YSxcbiAgICAgIHR4RmllbGRzPy5Db25zZW5zdXNFeHRyYURhdGFLVnNcbiAgICApLFxuICAgIHB1YmxpY0tleTogYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKHB1YktleSksXG4gICAgc2lnbmF0dXJlOiBuZXcgVWludDhBcnJheSgwKSxcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbXB1dGVGZWUoXG4gICAgdHJhbnNhY3Rpb24sXG4gICAgdHhGaWVsZHM/Lk1pbkZlZVJhdGVOYW5vc1BlcktCID8/IGdsb2JhbENvbmZpZ09wdGlvbnMuTWluRmVlUmF0ZU5hbm9zUGVyS0JcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeCA9IGFzeW5jIChcbiAgcHViS2V5OiBzdHJpbmcsXG4gIG1ldGFkYXRhOiBUcmFuc2FjdGlvbk1ldGFkYXRhUmVjb3JkLFxuICB0eEZpZWxkcz86IEJhbGFuY2VNb2RlbFRyYW5zYWN0aW9uRmllbGRzXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICAvLyBUT0RPOiBjYWNoZSBibG9jayBoZWlnaHQgc29tZXdoZXJlLlxuICBjb25zdCB7IEJsb2NrSGVpZ2h0IH0gPSBhd2FpdCBnZXRBcHBTdGF0ZSgpO1xuXG4gIGNvbnN0IHR4bldpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhwdWJLZXksIG1ldGFkYXRhLCB7XG4gICAgLi4udHhGaWVsZHMsXG4gICAgQmxvY2tIZWlnaHQsXG4gIH0pO1xuXG4gIGNvbnN0IHR4bkJ5dGVzID0gdHhuV2l0aEZlZS50b0J5dGVzKCk7XG4gIGNvbnN0IFRyYW5zYWN0aW9uSGV4ID0gYnl0ZXNUb0hleCh0eG5CeXRlcyk7XG5cbiAgLy8gVE9ETzogbWFpbnRhaW4gYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIGV2ZXJ5dGhpbmcgcmV0dXJuZWQgaW4gdGhlIGNvbnN0cnVjdGVkIHRyYW5zYWN0aW9uXG4gIC8vIHJlc3BvbnNlIG9iamVjdCBmb3IgZWFjaCB0eXBlLiB0aGlzIHdpbGwgYmUgYSBoZWFkYWNoZSBubyBkb3VidC5cbiAgY29uc3QgZmVlcyA9IHR4bldpdGhGZWUuZmVlTmFub3M7XG4gIGNvbnN0IG91dHB1dFN1bSA9IHR4bldpdGhGZWUub3V0cHV0cy5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLmFtb3VudE5hbm9zLCAwKTtcbiAgLy8gVE9ETzogc3VtIGV4dHJhIHNwZW5kIGZvciBjcmVhdG9yIGNvaW5zLCBkYW8gY29pbiBsaW1pdCBvcmRlcnMgKHVnaCksIGNyZWF0ZSBORlRzLCBjcmVhdGUgcHJvZmlsZVxuICAvLyBORlQgYnV5cy4gUHJvYmFibHkgbm90IG5lY2Vzc2FyaWx5LCBidXQgd291bGQgYmUgYmVzdCB0byBoYXZlIHRoaXMuXG4gIGNvbnN0IHR4bkhhc2ggPSBzaGEyNTZYMih0eG5CeXRlcyk7XG4gIGNvbnN0IHR4blR5cGUgPSB0eG5XaXRoRmVlLmdldFR4blR5cGVTdHJpbmcoKTtcbiAgcmV0dXJuIHtcbiAgICBUcmFuc2FjdGlvbjogVHJhbnNhY3Rpb25Ub01zZ0RlU29UeG4odHhuV2l0aEZlZSksXG4gICAgRmVlTmFub3M6IGZlZXMsXG4gICAgVHJhbnNhY3Rpb25IZXgsXG4gICAgQ2hhbmdlQW1vdW50TmFub3M6IDAsXG4gICAgVG90YWxJbnB1dE5hbm9zOiBmZWVzICsgb3V0cHV0U3VtLFxuICAgIFNwZW5kQW1vdW50TmFub3M6IGZlZXMgKyBvdXRwdXRTdW0sXG4gICAgVHJhbnNhY3Rpb25JREJhc2U1OENoZWNrOiBwdWJsaWNLZXlUb0Jhc2U1OENoZWNrKHR4bkhhc2gpLFxuICAgIFR4bkhhc2hIZXg6IGJ5dGVzVG9IZXgodHhuSGFzaCksXG4gICAgUG9zdEhhc2hIZXg6XG4gICAgICB0eG5UeXBlID09PSBUcmFuc2FjdGlvblR5cGUuU3VibWl0UG9zdCA/IGJ5dGVzVG9IZXgodHhuSGFzaCkgOiB1bmRlZmluZWQsXG4gICAgVHN0YW1wTmFub3M6XG4gICAgICB0eG5UeXBlID09PSBUcmFuc2FjdGlvblR5cGUuU3VibWl0UG9zdFxuICAgICAgICA/IChtZXRhZGF0YSBhcyBUcmFuc2FjdGlvbk1ldGFkYXRhU3VibWl0UG9zdCkudGltZXN0YW1wTmFub3NcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgTkZUUG9zdEhhc2hIZXg6XG4gICAgICB0eG5UeXBlID09PSBUcmFuc2FjdGlvblR5cGUuQ3JlYXRlTkZUIHx8XG4gICAgICB0eG5UeXBlID09PSBUcmFuc2FjdGlvblR5cGUuVXBkYXRlTkZUIHx8XG4gICAgICB0eG5UeXBlID09PSBUcmFuc2FjdGlvblR5cGUuTkZUQmlkIHx8XG4gICAgICB0eG5UeXBlID09PSBUcmFuc2FjdGlvblR5cGUuQWNjZXB0TkZUQmlkXG4gICAgICAgID8gYnl0ZXNUb0hleChcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgbWV0YWRhdGEgYXNcbiAgICAgICAgICAgICAgICB8IFRyYW5zYWN0aW9uTWV0YWRhdGFDcmVhdGVORlRcbiAgICAgICAgICAgICAgICB8IFRyYW5zYWN0aW9uTWV0YWRhdGFVcGRhdGVORlRcbiAgICAgICAgICAgICAgICB8IFRyYW5zYWN0aW9uTWV0YWRhdGFORlRCaWRcbiAgICAgICAgICAgICAgICB8IFRyYW5zYWN0aW9uTWV0YWRhdGFBY2NlcHRORlRCaWRcbiAgICAgICAgICAgICkubmZ0UG9zdEhhc2hcbiAgICAgICAgICApXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIFNlcmlhbE51bWJlcjpcbiAgICAgIHR4blR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5VcGRhdGVORlQgfHxcbiAgICAgIHR4blR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5ORlRCaWQgfHxcbiAgICAgIHR4blR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5BY2NlcHRORlRCaWRcbiAgICAgICAgPyAoXG4gICAgICAgICAgICBtZXRhZGF0YSBhc1xuICAgICAgICAgICAgICB8IFRyYW5zYWN0aW9uTWV0YWRhdGFVcGRhdGVORlRcbiAgICAgICAgICAgICAgfCBUcmFuc2FjdGlvbk1ldGFkYXRhTkZUQmlkXG4gICAgICAgICAgICAgIHwgVHJhbnNhY3Rpb25NZXRhZGF0YUFjY2VwdE5GVEJpZFxuICAgICAgICAgICkuc2VyaWFsTnVtYmVyXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIFVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjazpcbiAgICAgIHR4blR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5ORlRCaWQgPyBwdWJLZXkgOiB1bmRlZmluZWQsXG4gICAgQmlkQW1vdW50TmFub3M6XG4gICAgICB0eG5UeXBlID09PSBUcmFuc2FjdGlvblR5cGUuTkZUQmlkIHx8XG4gICAgICB0eG5UeXBlID09PSBUcmFuc2FjdGlvblR5cGUuQWNjZXB0TkZUQmlkXG4gICAgICAgID8gKFxuICAgICAgICAgICAgbWV0YWRhdGEgYXNcbiAgICAgICAgICAgICAgfCBUcmFuc2FjdGlvbk1ldGFkYXRhQWNjZXB0TkZUQmlkXG4gICAgICAgICAgICAgIHwgVHJhbnNhY3Rpb25NZXRhZGF0YU5GVEJpZFxuICAgICAgICAgICkuYmlkQW1vdW50TmFub3NcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgQmlkZGVyUHVibGljS2V5QmFzZTU4Q2hlY2s6XG4gICAgICB0eG5UeXBlID09PSBUcmFuc2FjdGlvblR5cGUuQWNjZXB0TkZUQmlkXG4gICAgICAgID8gcHVibGljS2V5VG9CYXNlNThDaGVjayhcbiAgICAgICAgICAgIChtZXRhZGF0YSBhcyBUcmFuc2FjdGlvbk1ldGFkYXRhQWNjZXB0TkZUQmlkKS5iaWRkZXJQS0lEXG4gICAgICAgICAgKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb21wdXRlRmVlID0gKHR4bjogVHJhbnNhY3Rpb24sIGZlZVJhdGU6IG51bWJlcik6IFRyYW5zYWN0aW9uID0+IHtcbiAgaWYgKCFmZWVSYXRlKSByZXR1cm4gdHhuO1xuICBsZXQgcHJldkZlZSA9IDA7XG4gIGxldCBmZWUgPSAwO1xuICB3aGlsZSAocHJldkZlZSA9PSAwIHx8IHByZXZGZWUgIT0gZmVlKSB7XG4gICAgcHJldkZlZSA9IGZlZTtcbiAgICBjb25zdCBzaXplID0gY29tcHV0ZVR4U2l6ZSh0eG4pICsgNzE7XG4gICAgZmVlID0gTWF0aC5jZWlsKChzaXplICogZmVlUmF0ZSkgLyAxMDAwKTtcbiAgICB0eG4uZmVlTmFub3MgPSBmZWU7XG4gIH1cbiAgcmV0dXJuIHR4bjtcbn07XG5cbmV4cG9ydCBjb25zdCBjb21wdXRlVHhTaXplID0gKHR4bjogVHJhbnNhY3Rpb24pOiBudW1iZXIgPT4ge1xuICByZXR1cm4gdHhuLnRvQnl0ZXMoKS5sZW5ndGg7XG59O1xuXG5leHBvcnQgY29uc3QgaXNNYXliZURlU29QdWJsaWNLZXkgPSAocXVlcnk6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gKFxuICAgIChxdWVyeS5sZW5ndGggPT09IDU1ICYmIHF1ZXJ5LnN0YXJ0c1dpdGgoJ0JDJykpIHx8XG4gICAgKHF1ZXJ5Lmxlbmd0aCA9PT0gNTQgJiYgcXVlcnkuc3RhcnRzV2l0aCgndEJDJykpXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3Qgc3VtVHJhbnNhY3Rpb25GZWVzID0gKFxuICB0eEZlZXM/OiBUcmFuc2FjdGlvbkZlZVtdIHwgbnVsbFxuKTogbnVtYmVyID0+IHtcbiAgaWYgKCF0eEZlZXM/Lmxlbmd0aCkgcmV0dXJuIDA7XG4gIHJldHVybiB0eEZlZXMucmVkdWNlKChhY2MsIGN1cnIpID0+IGFjYyArIGN1cnIuQW1vdW50TmFub3MsIDAgYXMgbnVtYmVyKTtcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJuYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFPTCxlQUFlLEdBQ2hCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUVMLEdBQUcsRUFDSCxRQUFRLEVBQ1IsV0FBVyxHQUNaLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUNMLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsc0JBQXNCLEVBT3RCLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLDhCQUE4QixFQUM5QixpQkFBaUIsRUFDakIsUUFBUSxFQUNSLHNCQUFzQixFQUN0QixRQUFRLEdBQ1QsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixnRkFBZ0Y7QUFDaEYsd0VBQXdFO0FBQ3hFLDBFQUEwRTtBQUMxRSxnRkFBZ0Y7QUFFaEYsNkVBQTZFO0FBQzdFLDhFQUE4RTtBQUM5RSwrQkFBK0I7QUFDL0IsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7SUFDakMsb0JBQW9CLEVBQUUsSUFBSTtJQUMxQixpQkFBaUIsRUFBRSxLQUFLO0NBQ3pCLENBQUM7QUFFRjs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxFQUN0QyxRQUFnQixFQUNoQixNQUFzQztBQUN0QywyRUFBMkU7QUFDM0UsVUFBMEIsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBSTVDLEVBQUU7SUFDSCxNQUFNLDhCQUE4QixHQUFHLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUI7UUFDdEUsbUJBQW1CLENBQUMsaUJBQWlCLENBQUM7UUFDeEMsT0FBTyxDQUFDLG9CQUFvQjtRQUMxQixDQUFDLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztR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QWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDckMsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDekMsR0FBRyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7S0FDcEI7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQWdCLEVBQVUsRUFBRTtJQUN4RCxPQUFPLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDOUIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFhLEVBQVcsRUFBRTtJQUM3RCxPQUFPLENBQ0wsQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxFQUFFLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNqRCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FDaEMsTUFBZ0MsRUFDeEIsRUFBRTtJQUNWLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTTtRQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQVcsQ0FBQyxDQUFDO0FBQzNFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJ5dGVzVG9IZXggfSBmcm9tICdAbm9ibGUvaGFzaGVzL3V0aWxzJztcbmltcG9ydCB7XG4gIENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZSxcbiAgRGVTb05vbmNlLFxuICBPcHRpb25hbEZlZXNBbmRFeHRyYURhdGEsXG4gIFJlcXVlc3RPcHRpb25zLFxuICBTdWJtaXRUcmFuc2FjdGlvblJlc3BvbnNlLFxuICBUcmFuc2FjdGlvbkZlZSxcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICcuL2JhY2tlbmQtdHlwZXMvaW5kZXguanMnO1xuaW1wb3J0IHtcbiAgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkcyxcbiAgYXBpLFxuICBjbGVhblVSTCxcbiAgZ2V0QXBwU3RhdGUsXG59IGZyb20gJy4vZGF0YS9pbmRleC5qcyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbixcbiAgVHJhbnNhY3Rpb25FeHRyYURhdGEsXG4gIFRyYW5zYWN0aW9uRXh0cmFEYXRhS1YsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFBY2NlcHRORlRCaWQsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFDcmVhdGVORlQsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFORlRCaWQsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFSZWNvcmQsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFTdWJtaXRQb3N0LFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhVXBkYXRlTkZULFxuICBUcmFuc2FjdGlvbk5vbmNlLFxuICBUcmFuc2FjdGlvbk91dHB1dCxcbiAgVHJhbnNhY3Rpb25Ub01zZ0RlU29UeG4sXG4gIGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyxcbiAgZW5jb2RlVVRGOFRvQnl0ZXMsXG4gIGlkZW50aXR5LFxuICBwdWJsaWNLZXlUb0Jhc2U1OENoZWNrLFxuICBzaGEyNTZYMixcbn0gZnJvbSAnLi9pZGVudGl0eS9pbmRleC5qcyc7XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVGhpcyBpcyBhbGwgdGhlIHN0dWZmIHdlIGRvbid0IGV4cG9ydCB0byBjb25zdW1lcnMgb2YgdGhlIGxpYnJhcnkuIElmXG4vLyBhbnl0aGluZyBoZXJlIG5lZWRzIHRvIGJlIGV4cG9ydGVkLCBpdCBzaG91bGQgYmUgbW92ZWQgdG8gYW5vdGhlciBmaWxlLlxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLy8gVGhpcyBjYW4gYmUgbXV0YXRlZCBieSB0aGUgdXNlciBvZiB0aGUgbGlicmFyeSB2aWEgdGhlIGNvbmZpZ3VyZSBmdW5jdGlvbixcbi8vIGJ1dCBpdCdzIG5vdCBleHBvcnRlZCBleHBsaWNpdGx5LiBXaGF0ZXZlciBjaGFuZ2VzIGFyZSBtYWRlIGV4dGVybmFsbHkgd2lsbFxuLy8gYmUgcmVmbGVjdGVkIGluIHRoZSBsaWJyYXJ5LlxuZXhwb3J0IGNvbnN0IGdsb2JhbENvbmZpZ09wdGlvbnMgPSB7XG4gIE1pbkZlZVJhdGVOYW5vc1BlcktCOiAxNTAwLFxuICBMb2NhbENvbnN0cnVjdGlvbjogZmFsc2UsXG59O1xuXG4vKipcbiAqIFdyYXBzIHNpZ25pbmcgYW5kIHN1Ym1pdCB0byBpbmNsdWRlIHRoZSBjb25maWd1cmFibGUgZmVlLCBhbmQgYWRkIGRlZmF1bHRzXG4gKiBmb3Igb3B0aW9uYWwgcGFyYW1zLlxuICpcbiAqIEBwYXJhbSBlbmRwb2ludCB0aGUgZW5kcG9pbnQgZm9yIGNvbnN0cnVjdGluZyB0aGUgdHJhbnNhY3Rpb25cbiAqIEBwYXJhbSBwYXJhbXMgdHggc3BlY2lmaWMgcGFyYW1zIGZvciB0aGUgZW5kcG9pbnQgKyBvcHRpb25hbCBmZWVzIGFuZCBleHRyYSBkYXRhXG4gKiBAcGFyYW0gb3B0aW9ucyBvcHRpb25zIGZvciB0aGUgcmVxdWVzdCwgaW5jbHVkaW5nIHdoZXRoZXIgdG8gYnJvYWRjYXN0XG4gKi9cbmV4cG9ydCBjb25zdCBoYW5kbGVTaWduQW5kU3VibWl0ID0gYXN5bmMgKFxuICBlbmRwb2ludDogc3RyaW5nLFxuICBwYXJhbXM6IE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YSAmIGFueSxcbiAgLy8gd2UgYWx3YXlzIGJyb2FkY2FzdCBieSBkZWZhdWx0LCBidXQgY29uc3VtZXJzIGNhbiBvcHRpb25hbGx5IGRpc2FibGUgaXQuXG4gIG9wdGlvbnM6IFJlcXVlc3RPcHRpb25zID0geyBicm9hZGNhc3Q6IHRydWUgfVxuKTogUHJvbWlzZTx7XG4gIGNvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZTogQ29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlO1xuICBzdWJtaXR0ZWRUcmFuc2FjdGlvblJlc3BvbnNlOiBTdWJtaXRUcmFuc2FjdGlvblJlc3BvbnNlIHwgbnVsbDtcbn0+ID0+IHtcbiAgY29uc3QgY29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlID0gYXdhaXQgKChvcHRpb25zLmxvY2FsQ29uc3RydWN0aW9uIHx8XG4gICAgZ2xvYmFsQ29uZmlnT3B0aW9ucy5Mb2NhbENvbnN0cnVjdGlvbikgJiZcbiAgb3B0aW9ucy5jb25zdHJ1Y3Rpb25GdW5jdGlvblxuICAgID8gb3B0aW9ucy5jb25zdHJ1Y3Rpb25GdW5jdGlvbihwYXJhbXMpXG4gICAgOiBhcGkucG9zdChcbiAgICAgICAgb3B0aW9ucy5ub2RlVVJJID8gYCR7Y2xlYW5VUkwob3B0aW9ucy5ub2RlVVJJLCBlbmRwb2ludCl9YCA6IGVuZHBvaW50LFxuICAgICAgICB7XG4gICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOlxuICAgICAgICAgICAgcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCID8/XG4gICAgICAgICAgICBnbG9iYWxDb25maWdPcHRpb25zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgICB9XG4gICAgICApKTtcbiAgaWYgKFxuICAgIChvcHRpb25zLmxvY2FsQ29uc3RydWN0aW9uIHx8IGdsb2JhbENvbmZpZ09wdGlvbnMuTG9jYWxDb25zdHJ1Y3Rpb24pICYmXG4gICAgb3B0aW9ucy5jb25zdHJ1Y3Rpb25GdW5jdGlvblxuICApIHtcbiAgICBjb25zb2xlLmxvZyhjb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2UpO1xuICB9XG4gIGNvbnN0IHN1Ym1pdHRlZFRyYW5zYWN0aW9uUmVzcG9uc2UgPVxuICAgIG9wdGlvbnMuYnJvYWRjYXN0ICE9PSBmYWxzZVxuICAgICAgPyBhd2FpdCBpZGVudGl0eS5zaWduQW5kU3VibWl0KGNvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZSlcbiAgICAgIDogbnVsbDtcblxuICByZXR1cm4ge1xuICAgIGNvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZSxcbiAgICBzdWJtaXR0ZWRUcmFuc2FjdGlvblJlc3BvbnNlLFxuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgQmFsYW5jZU1vZGVsVHJhbnNhY3Rpb25GaWVsZHMgPSB7XG4gIE91dHB1dHM/OiBUcmFuc2FjdGlvbk91dHB1dFtdO1xuICBFeHRyYURhdGE/OiB7IFtrOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgQ29uc2Vuc3VzRXh0cmFEYXRhS1ZzPzogVHJhbnNhY3Rpb25FeHRyYURhdGFLVltdO1xuICBNaW5GZWVSYXRlTmFub3NQZXJLQj86IG51bWJlcjtcbiAgVHJhbnNhY3Rpb25GZWVzPzogVHJhbnNhY3Rpb25GZWVbXSB8IG51bGw7XG4gIE5vbmNlPzogUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxEZVNvTm9uY2UsICdFeHBpcmF0aW9uQmxvY2tIZWlnaHQnPjtcbn07XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0RXh0cmFEYXRhID0gKFxuICBleHRyYURhdGE/OiB7IFtrOiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgY29uc2Vuc3VzRXh0cmFEYXRhS1ZzPzogVHJhbnNhY3Rpb25FeHRyYURhdGFLVltdXG4pOiBUcmFuc2FjdGlvbkV4dHJhRGF0YSA9PiB7XG4gIGNvbnN0IHNvcnRlZEV4dHJhRGF0YSA9IChjb25zZW5zdXNFeHRyYURhdGFLVnMgfHwgW10pXG4gICAgLmNvbmNhdChcbiAgICAgIE9iamVjdC5lbnRyaWVzKGV4dHJhRGF0YSB8fCB7fSkubWFwKFxuICAgICAgICAoW2ssIHZdKSA9PlxuICAgICAgICAgIG5ldyBUcmFuc2FjdGlvbkV4dHJhRGF0YUtWKGVuY29kZVVURjhUb0J5dGVzKGspLCBlbmNvZGVVVEY4VG9CeXRlcyh2KSlcbiAgICAgIClcbiAgICApXG4gICAgLnNvcnQoKGEsIGIpID0+IGEua2V5LnRvU3RyaW5nKCkubG9jYWxlQ29tcGFyZShiLmtleS50b1N0cmluZygpKSk7XG4gIGNvbnN0IHJlYWxFeHRyYURhdGEgPSBuZXcgVHJhbnNhY3Rpb25FeHRyYURhdGEoKTtcbiAgcmVhbEV4dHJhRGF0YS5rdnMgPSBzb3J0ZWRFeHRyYURhdGE7XG4gIHJldHVybiByZWFsRXh0cmFEYXRhO1xufTtcblxuY29uc3QgbWFrZVRyYW5zYWN0aW9uTm9uY2UgPSAoXG4gIGRlc29Ob25jZTpcbiAgICB8IFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8RGVTb05vbmNlLCAnRXhwaXJhdGlvbkJsb2NrSGVpZ2h0Jz5cbiAgICB8IHVuZGVmaW5lZFxuKTogVHJhbnNhY3Rpb25Ob25jZSA9PiB7XG4gIGNvbnN0IG5vbmNlID0gbmV3IFRyYW5zYWN0aW9uTm9uY2UoKTtcbiAgbm9uY2UuZXhwaXJhdGlvbkJsb2NrSGVpZ2h0ID1cbiAgICBkZXNvTm9uY2U/LkV4cGlyYXRpb25CbG9ja0hlaWdodCB8fCBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbiAgLy8gVE9ETzogY2FjaGUgcGFydGlhbCBJRHMgc28gd2UgZG9uJ3QgZ2VuZXJhdGUgdGhlIHNhbWUgb25lIHR3aWNlLlxuICBub25jZS5wYXJ0aWFsSWQgPSBkZXNvTm9uY2U/LlBhcnRpYWxJRCB8fCBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxZTE4KTtcbiAgcmV0dXJuIG5vbmNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFR4V2l0aEZlZU5hbm9zID0gKFxuICBwdWJLZXk6IHN0cmluZyxcbiAgbWV0YWRhdGE6IFRyYW5zYWN0aW9uTWV0YWRhdGFSZWNvcmQsXG4gIHR4RmllbGRzPzogQmFsYW5jZU1vZGVsVHJhbnNhY3Rpb25GaWVsZHNcbikgPT4ge1xuICBjb25zdCBub25jZSA9IG1ha2VUcmFuc2FjdGlvbk5vbmNlKHR4RmllbGRzPy5Ob25jZSk7XG5cbiAgY29uc3QgdHJhbnNhY3Rpb25GZWVPdXRwdXRzID0gKHR4RmllbGRzPy5UcmFuc2FjdGlvbkZlZXMgfHwgW10pLm1hcCgodGYpID0+IHtcbiAgICBjb25zdCBuZXdPdXRwdXQgPSBuZXcgVHJhbnNhY3Rpb25PdXRwdXQoKTtcbiAgICBuZXdPdXRwdXQucHVibGljS2V5ID0gYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKFxuICAgICAgdGYuUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgICApO1xuICAgIG5ld091dHB1dC5hbW91bnROYW5vcyA9IHRmLkFtb3VudE5hbm9zO1xuICAgIHJldHVybiBuZXdPdXRwdXQ7XG4gIH0pO1xuICBjb25zdCB0cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbih7XG4gICAgdmVyc2lvbjogMSxcbiAgICBmZWVOYW5vczogMCxcbiAgICBub25jZSxcbiAgICBtZXRhZGF0YSxcbiAgICBvdXRwdXRzOiB0cmFuc2FjdGlvbkZlZU91dHB1dHMuY29uY2F0KHR4RmllbGRzPy5PdXRwdXRzIHx8IFtdKSxcbiAgICBpbnB1dHM6IFtdLFxuICAgIGV4dHJhRGF0YTogY29udmVydEV4dHJhRGF0YShcbiAgICAgIHR4RmllbGRzPy5FeHRyYURhdGEsXG4gICAgICB0eEZpZWxkcz8uQ29uc2Vuc3VzRXh0cmFEYXRhS1ZzXG4gICAgKSxcbiAgICBwdWJsaWNLZXk6IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhwdWJLZXkpLFxuICAgIHNpZ25hdHVyZTogbmV3IFVpbnQ4QXJyYXkoMCksXG4gIH0pO1xuXG4gIHJldHVybiBjb21wdXRlRmVlKFxuICAgIHRyYW5zYWN0aW9uLFxuICAgIHR4RmllbGRzPy5NaW5GZWVSYXRlTmFub3NQZXJLQiA/PyBnbG9iYWxDb25maWdPcHRpb25zLk1pbkZlZVJhdGVOYW5vc1BlcktCXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0QmFsYW5jZU1vZGVsVHggPSBhc3luYyAoXG4gIHB1YktleTogc3RyaW5nLFxuICBtZXRhZGF0YTogVHJhbnNhY3Rpb25NZXRhZGF0YVJlY29yZCxcbiAgdHhGaWVsZHM/OiBCYWxhbmNlTW9kZWxUcmFuc2FjdGlvbkZpZWxkc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgLy8gVE9ETzogY2FjaGUgYmxvY2sgaGVpZ2h0IHNvbWV3aGVyZS5cbiAgaWYgKCF0eEZpZWxkcz8uTm9uY2UpIHtcbiAgICBjb25zdCB7IEJsb2NrSGVpZ2h0IH0gPSBhd2FpdCBnZXRBcHBTdGF0ZSgpO1xuICAgIGlmICghdHhGaWVsZHMpIHtcbiAgICAgIHR4RmllbGRzID0ge307XG4gICAgfVxuICAgIHR4RmllbGRzLk5vbmNlID0ge1xuICAgICAgRXhwaXJhdGlvbkJsb2NrSGVpZ2h0OiBCbG9ja0hlaWdodCArIDI3NSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgdHhuV2l0aEZlZSA9IGdldFR4V2l0aEZlZU5hbm9zKHB1YktleSwgbWV0YWRhdGEsIHR4RmllbGRzKTtcblxuICBjb25zdCB0eG5CeXRlcyA9IHR4bldpdGhGZWUudG9CeXRlcygpO1xuICBjb25zdCBUcmFuc2FjdGlvbkhleCA9IGJ5dGVzVG9IZXgodHhuQnl0ZXMpO1xuXG4gIC8vIFRPRE86IG1haW50YWluIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBldmVyeXRoaW5nIHJldHVybmVkIGluIHRoZSBjb25zdHJ1Y3RlZCB0cmFuc2FjdGlvblxuICAvLyByZXNwb25zZSBvYmplY3QgZm9yIGVhY2ggdHlwZS4gdGhpcyB3aWxsIGJlIGEgaGVhZGFjaGUgbm8gZG91YnQuXG4gIGNvbnN0IGZlZXMgPSB0eG5XaXRoRmVlLmZlZU5hbm9zO1xuICBjb25zdCBvdXRwdXRTdW0gPSB0eG5XaXRoRmVlLm91dHB1dHMucmVkdWNlKChhLCBiKSA9PiBhICsgYi5hbW91bnROYW5vcywgMCk7XG4gIC8vIFRPRE86IHN1bSBleHRyYSBzcGVuZCBmb3IgY3JlYXRvciBjb2lucywgZGFvIGNvaW4gbGltaXQgb3JkZXJzICh1Z2gpLCBjcmVhdGUgTkZUcywgY3JlYXRlIHByb2ZpbGVcbiAgLy8gTkZUIGJ1eXMuIFByb2JhYmx5IG5vdCBuZWNlc3NhcmlseSwgYnV0IHdvdWxkIGJlIGJlc3QgdG8gaGF2ZSB0aGlzLlxuICBjb25zdCB0eG5IYXNoID0gc2hhMjU2WDIodHhuQnl0ZXMpO1xuICBjb25zdCB0eG5UeXBlID0gdHhuV2l0aEZlZS5nZXRUeG5UeXBlU3RyaW5nKCk7XG4gIHJldHVybiB7XG4gICAgVHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uVG9Nc2dEZVNvVHhuKHR4bldpdGhGZWUpLFxuICAgIEZlZU5hbm9zOiBmZWVzLFxuICAgIFRyYW5zYWN0aW9uSGV4LFxuICAgIENoYW5nZUFtb3VudE5hbm9zOiAwLFxuICAgIFRvdGFsSW5wdXROYW5vczogZmVlcyArIG91dHB1dFN1bSxcbiAgICBTcGVuZEFtb3VudE5hbm9zOiBmZWVzICsgb3V0cHV0U3VtLFxuICAgIFRyYW5zYWN0aW9uSURCYXNlNThDaGVjazogcHVibGljS2V5VG9CYXNlNThDaGVjayh0eG5IYXNoKSxcbiAgICBUeG5IYXNoSGV4OiBieXRlc1RvSGV4KHR4bkhhc2gpLFxuICAgIFBvc3RIYXNoSGV4OlxuICAgICAgdHhuVHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlN1Ym1pdFBvc3QgPyBieXRlc1RvSGV4KHR4bkhhc2gpIDogdW5kZWZpbmVkLFxuICAgIFRzdGFtcE5hbm9zOlxuICAgICAgdHhuVHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlN1Ym1pdFBvc3RcbiAgICAgICAgPyAobWV0YWRhdGEgYXMgVHJhbnNhY3Rpb25NZXRhZGF0YVN1Ym1pdFBvc3QpLnRpbWVzdGFtcE5hbm9zXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIE5GVFBvc3RIYXNoSGV4OlxuICAgICAgdHhuVHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLkNyZWF0ZU5GVCB8fFxuICAgICAgdHhuVHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlVwZGF0ZU5GVCB8fFxuICAgICAgdHhuVHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLk5GVEJpZCB8fFxuICAgICAgdHhuVHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLkFjY2VwdE5GVEJpZFxuICAgICAgICA/IGJ5dGVzVG9IZXgoXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIG1ldGFkYXRhIGFzXG4gICAgICAgICAgICAgICAgfCBUcmFuc2FjdGlvbk1ldGFkYXRhQ3JlYXRlTkZUXG4gICAgICAgICAgICAgICAgfCBUcmFuc2FjdGlvbk1ldGFkYXRhVXBkYXRlTkZUXG4gICAgICAgICAgICAgICAgfCBUcmFuc2FjdGlvbk1ldGFkYXRhTkZUQmlkXG4gICAgICAgICAgICAgICAgfCBUcmFuc2FjdGlvbk1ldGFkYXRhQWNjZXB0TkZUQmlkXG4gICAgICAgICAgICApLm5mdFBvc3RIYXNoXG4gICAgICAgICAgKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICBTZXJpYWxOdW1iZXI6XG4gICAgICB0eG5UeXBlID09PSBUcmFuc2FjdGlvblR5cGUuVXBkYXRlTkZUIHx8XG4gICAgICB0eG5UeXBlID09PSBUcmFuc2FjdGlvblR5cGUuTkZUQmlkIHx8XG4gICAgICB0eG5UeXBlID09PSBUcmFuc2FjdGlvblR5cGUuQWNjZXB0TkZUQmlkXG4gICAgICAgID8gKFxuICAgICAgICAgICAgbWV0YWRhdGEgYXNcbiAgICAgICAgICAgICAgfCBUcmFuc2FjdGlvbk1ldGFkYXRhVXBkYXRlTkZUXG4gICAgICAgICAgICAgIHwgVHJhbnNhY3Rpb25NZXRhZGF0YU5GVEJpZFxuICAgICAgICAgICAgICB8IFRyYW5zYWN0aW9uTWV0YWRhdGFBY2NlcHRORlRCaWRcbiAgICAgICAgICApLnNlcmlhbE51bWJlclxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICBVcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2s6XG4gICAgICB0eG5UeXBlID09PSBUcmFuc2FjdGlvblR5cGUuTkZUQmlkID8gcHViS2V5IDogdW5kZWZpbmVkLFxuICAgIEJpZEFtb3VudE5hbm9zOlxuICAgICAgdHhuVHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLk5GVEJpZCB8fFxuICAgICAgdHhuVHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLkFjY2VwdE5GVEJpZFxuICAgICAgICA/IChcbiAgICAgICAgICAgIG1ldGFkYXRhIGFzXG4gICAgICAgICAgICAgIHwgVHJhbnNhY3Rpb25NZXRhZGF0YUFjY2VwdE5GVEJpZFxuICAgICAgICAgICAgICB8IFRyYW5zYWN0aW9uTWV0YWRhdGFORlRCaWRcbiAgICAgICAgICApLmJpZEFtb3VudE5hbm9zXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIEJpZGRlclB1YmxpY0tleUJhc2U1OENoZWNrOlxuICAgICAgdHhuVHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLkFjY2VwdE5GVEJpZFxuICAgICAgICA/IHB1YmxpY0tleVRvQmFzZTU4Q2hlY2soXG4gICAgICAgICAgICAobWV0YWRhdGEgYXMgVHJhbnNhY3Rpb25NZXRhZGF0YUFjY2VwdE5GVEJpZCkuYmlkZGVyUEtJRFxuICAgICAgICAgIClcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgY29tcHV0ZUZlZSA9ICh0eG46IFRyYW5zYWN0aW9uLCBmZWVSYXRlOiBudW1iZXIpOiBUcmFuc2FjdGlvbiA9PiB7XG4gIGlmICghZmVlUmF0ZSkgcmV0dXJuIHR4bjtcbiAgbGV0IHByZXZGZWUgPSAwO1xuICBsZXQgZmVlID0gMDtcbiAgd2hpbGUgKHByZXZGZWUgPT0gMCB8fCBwcmV2RmVlICE9IGZlZSkge1xuICAgIHByZXZGZWUgPSBmZWU7XG4gICAgY29uc3Qgc2l6ZSA9IGNvbXB1dGVUeFNpemUodHhuKSArIDcxO1xuICAgIGZlZSA9IE1hdGguY2VpbCgoc2l6ZSAqIGZlZVJhdGUpIC8gMTAwMCk7XG4gICAgdHhuLmZlZU5hbm9zID0gZmVlO1xuICB9XG4gIHJldHVybiB0eG47XG59O1xuXG5leHBvcnQgY29uc3QgY29tcHV0ZVR4U2l6ZSA9ICh0eG46IFRyYW5zYWN0aW9uKTogbnVtYmVyID0+IHtcbiAgcmV0dXJuIHR4bi50b0J5dGVzKCkubGVuZ3RoO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzTWF5YmVEZVNvUHVibGljS2V5ID0gKHF1ZXJ5OiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIChcbiAgICAocXVlcnkubGVuZ3RoID09PSA1NSAmJiBxdWVyeS5zdGFydHNXaXRoKCdCQycpKSB8fFxuICAgIChxdWVyeS5sZW5ndGggPT09IDU0ICYmIHF1ZXJ5LnN0YXJ0c1dpdGgoJ3RCQycpKVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IHN1bVRyYW5zYWN0aW9uRmVlcyA9IChcbiAgdHhGZWVzPzogVHJhbnNhY3Rpb25GZWVbXSB8IG51bGxcbik6IG51bWJlciA9PiB7XG4gIGlmICghdHhGZWVzPy5sZW5ndGgpIHJldHVybiAwO1xuICByZXR1cm4gdHhGZWVzLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLkFtb3VudE5hbm9zLCAwIGFzIG51bWJlcik7XG59O1xuIl19

@@ -1,4 +0,4 @@

import { AdminGetAllUserGlobalMetadataRequest, AdminGetHotFeedAlgorithmResponse, AdminGetHotFeedUserMultiplierRequest, AdminGetHotFeedUserMultiplierResponse, AdminGetMempoolStatsResponse, AdminGetNFTDropRequest, AdminGetNFTDropResponse, AdminGetUserAdminDataRequest, AdminGetUserAdminDataResponse, AdminGetUserGlobalMetadataRequest, AdminGetUserGlobalMetadataResponse, AdminGetUsernameVerificationAuditLogsRequest, AdminGetUsernameVerificationAuditLogsResponse, AdminGetVerifiedUsersResponse, AdminGrantVerificationBadgeRequest, AdminGrantVerificationBadgeResponse, AdminPinPostRequest, AdminRemoveNilPostsRequest, AdminRemoveVerificationBadgeRequest, AdminRemoveVerificationBadgeResponse, AdminUpdateGlobalFeedRequest, AdminUpdateHotFeedAlgorithmRequest, AdminUpdateHotFeedPostMultiplierRequest, AdminUpdateHotFeedUserMultiplierRequest, AdminUpdateNFTDropRequest, AdminUpdateNFTDropResponse, AdminUpdateUserGlobalMetadataRequest, BlockPublicKeyRequest, BlockPublicKeyResponse, ConstructedTransactionResponse, DeletePIIRequest, GetBuyDeSoFeeBasisPointsResponse, GetGlobalParamsResponse, GetUSDCentsToDeSoExchangeRateResponse, GetUserGlobalMetadataRequest, GetUserGlobalMetadataResponse, GetWyreWalletOrderForPublicKeyRequest, GetWyreWalletOrderForPublicKeyResponse, HotFeedPageRequest, HotFeedPageResponse, NodeControlRequest, NodeControlResponse, RequestOptions, ResendVerifyEmailRequest, SetBuyDeSoFeeBasisPointsRequest, SetBuyDeSoFeeBasisPointsResponse, SetNotificationMetadataRequest, SetUSDCentsToDeSoExchangeRateRequest, SetUSDCentsToDeSoExchangeRateResponse, SwapIdentityRequest, SwapIdentityResponse, TxRequestWithOptionalFeesAndExtraData, UpdateGlobalParamsRequest, UpdateGlobalParamsResponse, UpdateUserGlobalMetadataRequest, UploadImageRequest, UploadImageResponse, UploadVideoRequest, UploadVideoV2Response, VerifyEmailRequest, WalletOrderQuotationRequest, WalletOrderReservationRequest, WyreWalletOrderQuotationPayload, WyreWalletOrderReservationPayload } from './backend-types';
import { PartialWithRequiredFields } from './data';
import { ConstructedAndSubmittedTx } from './types';
import { AdminGetAllUserGlobalMetadataRequest, AdminGetHotFeedAlgorithmResponse, AdminGetHotFeedUserMultiplierRequest, AdminGetHotFeedUserMultiplierResponse, AdminGetMempoolStatsResponse, AdminGetNFTDropRequest, AdminGetNFTDropResponse, AdminGetUserAdminDataRequest, AdminGetUserAdminDataResponse, AdminGetUserGlobalMetadataRequest, AdminGetUserGlobalMetadataResponse, AdminGetUsernameVerificationAuditLogsRequest, AdminGetUsernameVerificationAuditLogsResponse, AdminGetVerifiedUsersResponse, AdminGrantVerificationBadgeRequest, AdminGrantVerificationBadgeResponse, AdminPinPostRequest, AdminRemoveNilPostsRequest, AdminRemoveVerificationBadgeRequest, AdminRemoveVerificationBadgeResponse, AdminUpdateGlobalFeedRequest, AdminUpdateHotFeedAlgorithmRequest, AdminUpdateHotFeedPostMultiplierRequest, AdminUpdateHotFeedUserMultiplierRequest, AdminUpdateNFTDropRequest, AdminUpdateNFTDropResponse, AdminUpdateUserGlobalMetadataRequest, BlockPublicKeyRequest, BlockPublicKeyResponse, ConstructedTransactionResponse, DeletePIIRequest, GetBuyDeSoFeeBasisPointsResponse, GetGlobalParamsResponse, GetUSDCentsToDeSoExchangeRateResponse, GetUserGlobalMetadataRequest, GetUserGlobalMetadataResponse, GetWyreWalletOrderForPublicKeyRequest, GetWyreWalletOrderForPublicKeyResponse, HotFeedPageRequest, HotFeedPageResponse, NodeControlRequest, NodeControlResponse, RequestOptions, ResendVerifyEmailRequest, SetBuyDeSoFeeBasisPointsRequest, SetBuyDeSoFeeBasisPointsResponse, SetNotificationMetadataRequest, SetUSDCentsToDeSoExchangeRateRequest, SetUSDCentsToDeSoExchangeRateResponse, SwapIdentityRequest, SwapIdentityResponse, TxRequestWithOptionalFeesAndExtraData, UpdateGlobalParamsRequest, UpdateGlobalParamsResponse, UpdateUserGlobalMetadataRequest, UploadImageRequest, UploadImageResponse, UploadVideoRequest, UploadVideoV2Response, VerifyEmailRequest, WalletOrderQuotationRequest, WalletOrderReservationRequest, WyreWalletOrderQuotationPayload, WyreWalletOrderReservationPayload } from './backend-types/index.js';
import { PartialWithRequiredFields } from './data/index.js';
import { ConstructedAndSubmittedTx } from './types.js';
/**

@@ -5,0 +5,0 @@ * https://docs.deso.org/deso-backend/api/user-endpoints#get-user-global-metadata-email-and-phone-number

@@ -1,19 +0,9 @@

var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { api, cleanURL, media } from './data';
import { TransactionExtraDataKV, TransactionMetadataUpdateGlobalParams, encodeUTF8ToBytes, identity, uvarint64ToBuf, } from './identity';
import { constructBalanceModelTx, handleSignAndSubmit } from './internal';
const jwtPost = (endpoint, params = {}, options) => __awaiter(void 0, void 0, void 0, function* () {
var _a;
import { api, cleanURL, media, } from './data/index.js';
import { TransactionExtraDataKV, TransactionMetadataUpdateGlobalParams, encodeUTF8ToBytes, identity, uvarint64ToBuf, } from './identity/index.js';
import { constructBalanceModelTx, handleSignAndSubmit } from './internal.js';
const jwtPost = async (endpoint, params = {}, options) => {
const isAdminRequest = endpoint.includes('api/v0/admin');
let AdminPublicKey = '';
if (isAdminRequest) {
const { currentUser } = yield identity.snapshot();
const { currentUser } = await identity.snapshot();
if (!currentUser) {

@@ -24,32 +14,36 @@ throw new Error('Cannot issue an admin request without a logged in user');

}
const postParams = Object.assign(Object.assign(Object.assign({}, params), (isAdminRequest && { AdminPublicKey })), { JWT: (_a = params.JWT) !== null && _a !== void 0 ? _a : (yield identity.jwt()) });
if (options === null || options === void 0 ? void 0 : options.broadcast) {
const postParams = {
...params,
...(isAdminRequest && { AdminPublicKey }),
JWT: params.JWT ?? (await identity.jwt()),
};
if (options?.broadcast) {
return handleSignAndSubmit(endpoint, postParams, options);
}
return api.post((options === null || options === void 0 ? void 0 : options.nodeURI) ? cleanURL(options.nodeURI, endpoint) : endpoint, postParams);
});
return api.post(options?.nodeURI ? cleanURL(options.nodeURI, endpoint) : endpoint, postParams);
};
/**
* https://docs.deso.org/deso-backend/api/user-endpoints#get-user-global-metadata-email-and-phone-number
*/
export const getUserGlobalMetadata = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
export const getUserGlobalMetadata = async (params, options) => {
return jwtPost('api/v0/get-user-global-metadata', params, options);
});
export const updateUserGlobalMetadata = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
};
export const updateUserGlobalMetadata = async (params, options) => {
return jwtPost('api/v0/update-user-global-metadata', params, options);
});
};
/**
* https://docs.deso.org/deso-backend/api/user-endpoints#delete-pii-personal-identifiable-information
*/
export const deletePII = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
export const deletePII = async (params, options) => {
return jwtPost('api/v0/delete-pii', params, options);
});
export const blockPublicKey = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
};
export const blockPublicKey = async (params, options) => {
return jwtPost('api/v0/block-public-key', params, options);
});
};
/**
* https://docs.deso.org/deso-backend/api/notification-endpoints#set-notification-metadata
*/
export const setNotificationMetadata = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
export const setNotificationMetadata = async (params, options) => {
return jwtPost('api/v0/set-notification-metadata', params, options);
});
};
///////////////////////////////////////////////////////////////////////////////

@@ -106,5 +100,5 @@ // Admin endpoints

};
export const adminSwapIdentity = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
export const adminSwapIdentity = async (params, options) => {
return jwtPost('api/v0/admin/swap-identity', params, options);
});
};
export const adminSetUSDCentsToDESOReserveExchangeRate = (params, options) => {

@@ -116,3 +110,3 @@ return jwtPost('api/v0/admin/set-usd-cents-to-deso-reserve-exchange-rate', params, options);

const endpoint = 'api/v0/admin/get-usd-cents-to-deso-reserve-exchange-rate';
return api.get((options === null || options === void 0 ? void 0 : options.nodeURI) ? cleanURL(options.nodeURI, endpoint) : endpoint);
return api.get(options?.nodeURI ? cleanURL(options.nodeURI, endpoint) : endpoint);
};

@@ -124,8 +118,11 @@ export const adminSetBuyDesoFeeBasisPoints = (params, options) => {

const endpoint = 'api/v0/admin/get-buy-deso-fee-basis-points';
return api.get((options === null || options === void 0 ? void 0 : options.nodeURI) ? cleanURL(options.nodeURI, endpoint) : endpoint);
return api.get(options?.nodeURI ? cleanURL(options.nodeURI, endpoint) : endpoint);
};
export const adminUpdateGlobalParams = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
return handleSignAndSubmit('api/v0/admin/update-global-params', params, Object.assign(Object.assign({}, options), { constructionFunction: constructAdminUpdateGlobalParamsTransaction }));
});
export const constructAdminUpdateGlobalParamsTransaction = (params) => __awaiter(void 0, void 0, void 0, function* () {
export const adminUpdateGlobalParams = async (params, options) => {
return handleSignAndSubmit('api/v0/admin/update-global-params', params, {
...options,
constructionFunction: constructAdminUpdateGlobalParamsTransaction,
});
};
export const constructAdminUpdateGlobalParamsTransaction = async (params) => {
const metadata = new TransactionMetadataUpdateGlobalParams();

@@ -154,3 +151,3 @@ const consensusExtraDataKVs = [];

});
});
};
export const adminGetGlobalParams = (options) => {

@@ -197,16 +194,14 @@ return jwtPost('api/v0/admin/get-global-params', {}, options);

const endpoint = 'api/v0/verify-email';
return api.post((options === null || options === void 0 ? void 0 : options.nodeURI) ? cleanURL(options.nodeURI, endpoint) : endpoint, params);
return api.post(options?.nodeURI ? cleanURL(options.nodeURI, endpoint) : endpoint, params);
};
export const uploadImage = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
var _b;
const JWT = (_b = params.JWT) !== null && _b !== void 0 ? _b : (yield identity.jwt());
export const uploadImage = async (params, options) => {
const JWT = params.JWT ?? (await identity.jwt());
const endpoint = 'api/v0/upload-image';
return api.post((options === null || options === void 0 ? void 0 : options.nodeURI) ? cleanURL(options.nodeURI, endpoint) : endpoint, Object.assign({ JWT }, params), { contentType: 'multipart/form-data' });
});
export const uploadVideo = (params) => __awaiter(void 0, void 0, void 0, function* () {
var _c;
const JWT = (_c = params.JWT) !== null && _c !== void 0 ? _c : (yield identity.jwt());
return api.post(options?.nodeURI ? cleanURL(options.nodeURI, endpoint) : endpoint, { JWT, ...params }, { contentType: 'multipart/form-data' });
};
export const uploadVideo = async (params) => {
const JWT = params.JWT ?? (await identity.jwt());
const endpoint = 'api/v0/upload-video';
return media.post(endpoint, Object.assign({ JWT }, params), { contentType: 'multipart/form-data' });
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LXJlcXVlc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2p3dC1yZXF1ZXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFrRUEsT0FBTyxFQUE2QixHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN6RSxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLHFDQUFxQyxFQUNyQyxpQkFBaUIsRUFDakIsUUFBUSxFQUNSLGNBQWMsR0FDZixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFMUUsTUFBTSxPQUFPLEdBQUcsQ0FDZCxRQUFnQixFQUNoQixTQUFjLEVBQUUsRUFDaEIsT0FBd0IsRUFDeEIsRUFBRTs7SUFDRixNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3pELElBQUksY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUV4QixJQUFJLGNBQWMsRUFBRTtRQUNsQixNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsTUFBTSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFbEQsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7U0FDM0U7UUFFRCxjQUFjLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztLQUN4QztJQUVELE1BQU0sVUFBVSxpREFDWCxNQUFNLEdBQ04sQ0FBQyxjQUFjLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQyxLQUN6QyxHQUFHLEVBQUUsTUFBQSxNQUFNLENBQUMsR0FBRyxtQ0FBSSxDQUFDLE1BQU0sUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQzFDLENBQUM7SUFFRixJQUFJLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxTQUFTLEVBQUU7UUFDdEIs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RSxDQUN2QyxDQUFDO0FBQ0osQ0FBQyxDQUFBLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZG1pbkdldEFsbFVzZXJHbG9iYWxNZXRhZGF0YVJlcXVlc3QsXG4gIEFkbWluR2V0SG90RmVlZEFsZ29yaXRobVJlc3BvbnNlLFxuICBBZG1pbkdldEhvdEZlZWRVc2VyTXVsdGlwbGllclJlcXVlc3QsXG4gIEFkbWluR2V0SG90RmVlZFVzZXJNdWx0aXBsaWVyUmVzcG9uc2UsXG4gIEFkbWluR2V0TWVtcG9vbFN0YXRzUmVzcG9uc2UsXG4gIEFkbWluR2V0TkZURHJvcFJlcXVlc3QsXG4gIEFkbWluR2V0TkZURHJvcFJlc3BvbnNlLFxuICBBZG1pbkdldFVzZXJBZG1pbkRhdGFSZXF1ZXN0LFxuICBBZG1pbkdldFVzZXJBZG1pbkRhdGFSZXNwb25zZSxcbiAgQWRtaW5HZXRVc2VyR2xvYmFsTWV0YWRhdGFSZXF1ZXN0LFxuICBBZG1pbkdldFVzZXJHbG9iYWxNZXRhZGF0YVJlc3BvbnNlLFxuICBBZG1pbkdldFVzZXJuYW1lVmVyaWZpY2F0aW9uQXVkaXRMb2dzUmVxdWVzdCxcbiAgQWRtaW5HZXRVc2VybmFtZVZlcmlmaWNhdGlvbkF1ZGl0TG9nc1Jlc3BvbnNlLFxuICBBZG1pbkdldFZlcmlmaWVkVXNlcnNSZXNwb25zZSxcbiAgQWRtaW5HcmFudFZlcmlmaWNhdGlvbkJhZGdlUmVxdWVzdCxcbiAgQWRtaW5HcmFudFZlcmlmaWNhdGlvbkJhZGdlUmVzcG9uc2UsXG4gIEFkbWluUGluUG9zdFJlcXVlc3QsXG4gIEFkbWluUmVtb3ZlTmlsUG9zdHNSZXF1ZXN0LFxuICBBZG1pblJlbW92ZVZlcmlmaWNhdGlvbkJhZGdlUmVxdWVzdCxcbiAgQWRtaW5SZW1vdmVWZXJpZmljYXRpb25CYWRnZVJlc3BvbnNlLFxuICBBZG1pblVwZGF0ZUdsb2JhbEZlZWRSZXF1ZXN0LFxuICBBZG1pblVwZGF0ZUhvdEZlZWRBbGdvcml0aG1SZXF1ZXN0LFxuICBBZG1pblVwZGF0ZUhvdEZlZWRQb3N0TXVsdGlwbGllclJlcXVlc3QsXG4gIEFkbWluVXBkYXRlSG90RmVlZFVzZXJNdWx0aXBsaWVyUmVxdWVzdCxcbiAgQWRtaW5VcGRhdGVORlREcm9wUmVxdWVzdCxcbiAgQWRtaW5VcGRhdGVORlREcm9wUmVzcG9uc2UsXG4gIEFkbWluVXBkYXRlVXNlckdsb2JhbE1ldGFkYXRhUmVxdWVzdCxcbiAgQmxvY2tQdWJsaWNLZXlSZXF1ZXN0LFxuICBCbG9ja1B1YmxpY0tleVJlc3BvbnNlLFxuICBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2UsXG4gIERlbGV0ZVBJSVJlcXVlc3QsXG4gIEdldEJ1eURlU29GZWVCYXNpc1BvaW50c1Jlc3BvbnNlLFxuICBHZXRHbG9iYWxQYXJhbXNSZXNwb25zZSxcbiAgR2V0VVNEQ2VudHNUb0RlU29FeGNoYW5nZVJhdGVSZXNwb25zZSxcbiAgR2V0VXNlckdsb2JhbE1ldGFkYXRhUmVxdWVzdCxcbiAgR2V0VXNlckdsb2JhbE1ldGFkYXRhUmVzcG9uc2UsXG4gIEdldFd5cmVXYWxsZXRPcmRlckZvclB1YmxpY0tleVJlcXVlc3QsXG4gIEdldFd5cmVXYWxsZXRPcmRlckZvclB1YmxpY0tleVJlc3BvbnNlLFxuICBIb3RGZWVkUGFnZVJlcXVlc3QsXG4gIEhvdEZlZWRQYWdlUmVzcG9uc2UsXG4gIE5vZGVDb250cm9sUmVxdWVzdCxcbiAgTm9kZUNvbnRyb2xSZXNwb25zZSxcbiAgUmVxdWVzdE9wdGlvbnMsXG4gIFJlc2VuZFZlcmlmeUVtYWlsUmVxdWVzdCxcbiAgU2V0QnV5RGVTb0ZlZUJhc2lzUG9pbnRzUmVxdWVzdCxcbiAgU2V0QnV5RGVTb0ZlZUJhc2lzUG9pbnRzUmVzcG9uc2UsXG4gIFNldE5vdGlmaWNhdGlvbk1ldGFkYXRhUmVxdWVzdCxcbiAgU2V0VVNEQ2VudHNUb0RlU29FeGNoYW5nZVJhdGVSZXF1ZXN0LFxuICBTZXRVU0RDZW50c1RvRGVTb0V4Y2hhbmdlUmF0ZVJlc3BvbnNlLFxuICBTd2FwSWRlbnRpdHlSZXF1ZXN0LFxuICBTd2FwSWRlbnRpdHlSZXNwb25zZSxcbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YSxcbiAgVXBkYXRlR2xvYmFsUGFyYW1zUmVxdWVzdCxcbiAgVXBkYXRlR2xvYmFsUGFyYW1zUmVzcG9uc2UsXG4gIFVwZGF0ZVVzZXJHbG9iYWxNZXRhZGF0YVJlcXVlc3QsXG4gIFVwbG9hZEltYWdlUmVxdWVzdCxcbiAgVXBsb2FkSW1hZ2VSZXNwb25zZSxcbiAgVXBsb2FkVmlkZW9SZXF1ZXN0LFxuICBVcGxvYWRWaWRlb1YyUmVzcG9uc2UsXG4gIFZlcmlmeUVtYWlsUmVxdWVzdCxcbiAgV2FsbGV0T3JkZXJRdW90YXRpb25SZXF1ZXN0LFxuICBXYWxsZXRPcmRlclJlc2VydmF0aW9uUmVxdWVzdCxcbiAgV3lyZVdhbGxldE9yZGVyUXVvdGF0aW9uUGF5bG9hZCxcbiAgV3lyZVdhbGxldE9yZGVyUmVzZXJ2YXRpb25QYXlsb2FkLFxufSBmcm9tICcuL2JhY2tlbmQtdHlwZXMnO1xuaW1wb3J0IHsgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkcywgYXBpLCBjbGVhblVSTCwgbWVkaWEgfSBmcm9tICcuL2RhdGEnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25FeHRyYURhdGFLVixcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YVVwZGF0ZUdsb2JhbFBhcmFtcyxcbiAgZW5jb2RlVVRGOFRvQnl0ZXMsXG4gIGlkZW50aXR5LFxuICB1dmFyaW50NjRUb0J1Zixcbn0gZnJvbSAnLi9pZGVudGl0eSc7XG5pbXBvcnQgeyBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeCwgaGFuZGxlU2lnbkFuZFN1Ym1pdCB9IGZyb20gJy4vaW50ZXJuYWwnO1xuaW1wb3J0IHsgQ29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeCB9IGZyb20gJy4vdHlwZXMnO1xuY29uc3Qgand0UG9zdCA9IGFzeW5jIChcbiAgZW5kcG9pbnQ6IHN0cmluZyxcbiAgcGFyYW1zOiBhbnkgPSB7fSxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pID0+IHtcbiAgY29uc3QgaXNBZG1pblJlcXVlc3QgPSBlbmRwb2ludC5pbmNsdWRlcygnYXBpL3YwL2FkbWluJyk7XG4gIGxldCBBZG1pblB1YmxpY0tleSA9ICcnO1xuXG4gIGlmIChpc0FkbWluUmVxdWVzdCkge1xuICAgIGNvbnN0IHsgY3VycmVudFVzZXIgfSA9IGF3YWl0IGlkZW50aXR5LnNuYXBzaG90KCk7XG5cbiAgICBpZiAoIWN1cnJlbnRVc2VyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBpc3N1ZSBhbiBhZG1pbiByZXF1ZXN0IHdpdGhvdXQgYSBsb2dnZWQgaW4gdXNlcicpO1xuICAgIH1cblxuICAgIEFkbWluUHVibGljS2V5ID0gY3VycmVudFVzZXIucHVibGljS2V5O1xuICB9XG5cbiAgY29uc3QgcG9zdFBhcmFtcyA9IHtcbiAgICAuLi5wYXJhbXMsXG4gICAgLi4uKGlzQWRtaW5SZXF1ZXN0ICYmIHsgQWRtaW5QdWJsaWNLZXkgfSksXG4gICAgSldUOiBwYXJhbXMuSldUID8/IChhd2FpdCBpZGVudGl0eS5qd3QoKSksXG4gIH07XG5cbiAgaWYgKG9wdGlvbnM/LmJyb2FkY2FzdCkge1xuICAgIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KGVuZHBvaW50LCBwb3N0UGFyYW1zLCBvcHRpb25zKTtcbiAgfVxuXG4gIHJldHVybiBhcGkucG9zdChcbiAgICBvcHRpb25zPy5ub2RlVVJJID8gY2xlYW5VUkwob3B0aW9ucy5ub2RlVVJJLCBlbmRwb2ludCkgOiBlbmRwb2ludCxcbiAgICBwb3N0UGFyYW1zXG4gICk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvYXBpL3VzZXItZW5kcG9pbnRzI2dldC11c2VyLWdsb2JhbC1tZXRhZGF0YS1lbWFpbC1hbmQtcGhvbmUtbnVtYmVyXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRVc2VyR2xvYmFsTWV0YWRhdGEgPSBhc3luYyAoXG4gIHBhcmFtczogUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgICBHZXRVc2VyR2xvYmFsTWV0YWRhdGFSZXF1ZXN0LFxuICAgICdVc2VyUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gID4sXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxHZXRVc2VyR2xvYmFsTWV0YWRhdGFSZXNwb25zZT4gPT4ge1xuICByZXR1cm4gand0UG9zdCgnYXBpL3YwL2dldC11c2VyLWdsb2JhbC1tZXRhZGF0YScsIHBhcmFtcywgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvYXBpL3VzZXItZW5kcG9pbnRzI3VwZGF0ZS11c2VyLWdsb2JhbC1tZXRhZGF0YS1lbWFpbC1hbmQtc3RhdGUtb2YtbWVzc2FnZXMtcmVhZFxuICovXG5leHBvcnQgdHlwZSBVcGRhdGVVc2VyR2xvYmFsTWV0YWRhdGFQYXJhbXMgPSBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICBVcGRhdGVVc2VyR2xvYmFsTWV0YWRhdGFSZXF1ZXN0LFxuICAnVXNlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuPjtcbmV4cG9ydCBjb25zdCB1cGRhdGVVc2VyR2xvYmFsTWV0YWRhdGEgPSBhc3luYyAoXG4gIHBhcmFtczogVXBkYXRlVXNlckdsb2JhbE1ldGFkYXRhUGFyYW1zLFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbikgPT4ge1xuICByZXR1cm4gand0UG9zdCgnYXBpL3YwL3VwZGF0ZS11c2VyLWdsb2JhbC1tZXRhZGF0YScsIHBhcmFtcywgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvYXBpL3VzZXItZW5kcG9pbnRzI2RlbGV0ZS1waWktcGVyc29uYWwtaWRlbnRpZmlhYmxlLWluZm9ybWF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBkZWxldGVQSUkgPSBhc3luYyAoXG4gIHBhcmFtczogUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxEZWxldGVQSUlSZXF1ZXN0LCAnUHVibGljS2V5QmFzZTU4Q2hlY2snPixcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPHVuZGVmaW5lZD4gPT4ge1xuICByZXR1cm4gand0UG9zdCgnYXBpL3YwL2RlbGV0ZS1waWknLCBwYXJhbXMsIG9wdGlvbnMpO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2FwaS91c2VyLWVuZHBvaW50cyNibG9jay1wdWJsaWMta2V5XG4gKi9cbmV4cG9ydCB0eXBlIEJsb2NrUHVibGljS2V5UGFyYW1zID0gUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgQmxvY2tQdWJsaWNLZXlSZXF1ZXN0LFxuICAnQmxvY2tQdWJsaWNLZXlCYXNlNThDaGVjaycgfCAnUHVibGljS2V5QmFzZTU4Q2hlY2snXG4+O1xuZXhwb3J0IGNvbnN0IGJsb2NrUHVibGljS2V5ID0gYXN5bmMgKFxuICBwYXJhbXM6IEJsb2NrUHVibGljS2V5UGFyYW1zLFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8QmxvY2tQdWJsaWNLZXlSZXNwb25zZT4gPT4ge1xuICByZXR1cm4gand0UG9zdCgnYXBpL3YwL2Jsb2NrLXB1YmxpYy1rZXknLCBwYXJhbXMsIG9wdGlvbnMpO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2FwaS9ub3RpZmljYXRpb24tZW5kcG9pbnRzI3NldC1ub3RpZmljYXRpb24tbWV0YWRhdGFcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE5vdGlmaWNhdGlvbk1ldGFkYXRhID0gYXN5bmMgKFxuICBwYXJhbXM6IFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgU2V0Tm90aWZpY2F0aW9uTWV0YWRhdGFSZXF1ZXN0LFxuICAgIHwgJ1B1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgIHwgJ0xhc3RTZWVuSW5kZXgnXG4gICAgfCAnTGFzdFVucmVhZE5vdGlmaWNhdGlvbkluZGV4J1xuICAgIHwgJ1VucmVhZE5vdGlmaWNhdGlvbnMnXG4gID4sXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKSA9PiB7XG4gIHJldHVybiBqd3RQb3N0KCdhcGkvdjAvc2V0LW5vdGlmaWNhdGlvbi1tZXRhZGF0YScsIHBhcmFtcywgb3B0aW9ucyk7XG59O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBZG1pbiBlbmRwb2ludHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9hcGkvYWRtaW4tZW5kcG9pbnRzI2dldC12ZXJpZmllZC11c2Vyc1xuICovXG5leHBvcnQgY29uc3QgYWRtaW5HZXRWZXJpZmllZFVzZXJzID0gKFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8QWRtaW5HZXRWZXJpZmllZFVzZXJzUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGp3dFBvc3QoJ2FwaS92MC9hZG1pbi9nZXQtdmVyaWZpZWQtdXNlcnMnLCB7fSwgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvYXBpL2FkbWluLWVuZHBvaW50cyNnZXQtdXNlcm5hbWUtdmVyaWZpY2F0aW9uLWF1ZGl0LWxvZ3NcbiAqL1xuZXhwb3J0IGNvbnN0IGFkbWluR2V0VXNlcm5hbWVWZXJpZmljYXRpb25BdWRpdExvZyA9IChcbiAgcGFyYW1zOiBBZG1pbkdldFVzZXJuYW1lVmVyaWZpY2F0aW9uQXVkaXRMb2dzUmVxdWVzdCxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPEFkbWluR2V0VXNlcm5hbWVWZXJpZmljYXRpb25BdWRpdExvZ3NSZXNwb25zZT4gPT4ge1xuICByZXR1cm4gand0UG9zdChcbiAgICAnYXBpL3YwL2FkbWluL2dldC11c2VybmFtZS12ZXJpZmljYXRpb24tYXVkaXQtbG9nJyxcbiAgICBwYXJhbXMsXG4gICAgb3B0aW9uc1xuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkbWluTm9kZUNvbnRyb2wgPSAoXG4gIHBhcmFtczogUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgICBPbWl0PE5vZGVDb250cm9sUmVxdWVzdCwgJ0pXVCcgfCAnQWRtaW5QdWJsaWNLZXknPixcbiAgICAnQWRkcmVzcycgfCAnT3BlcmF0aW9uVHlwZSdcbiAgPixcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPE5vZGVDb250cm9sUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGp3dFBvc3QoJ2FwaS92MC9hZG1pbi9ub2RlLWNvbnRyb2wnLCBwYXJhbXMsIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkbWluR3JhbnRWZXJpZmljYXRpb25CYWRnZSA9IChcbiAgcGFyYW1zOiBPbWl0PEFkbWluR3JhbnRWZXJpZmljYXRpb25CYWRnZVJlcXVlc3QsICdBZG1pblB1YmxpY0tleSc+LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8QWRtaW5HcmFudFZlcmlmaWNhdGlvbkJhZGdlUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGp3dFBvc3QoJ2FwaS92MC9hZG1pbi9ncmFudC12ZXJpZmljYXRpb24tYmFkZ2UnLCBwYXJhbXMsIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkbWluUmVtb3ZlVmVyaWZpY2F0aW9uQmFkZ2UgPSAoXG4gIHBhcmFtczogT21pdDxBZG1pblJlbW92ZVZlcmlmaWNhdGlvbkJhZGdlUmVxdWVzdCwgJ0FkbWluUHVibGljS2V5Jz4sXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxBZG1pblJlbW92ZVZlcmlmaWNhdGlvbkJhZGdlUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGp3dFBvc3QoJ2FwaS92MC9hZG1pbi9yZW1vdmUtdmVyaWZpY2F0aW9uLWJhZGdlJywgcGFyYW1zLCBvcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZG1pbkdldFVzZXJBZG1pbkRhdGEgPSAoXG4gIHBhcmFtczogQWRtaW5HZXRVc2VyQWRtaW5EYXRhUmVxdWVzdCxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPEFkbWluR2V0VXNlckFkbWluRGF0YVJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KCdhcGkvdjAvYWRtaW4vZ2V0LXVzZXItYWRtaW4tZGF0YScsIHBhcmFtcywgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRtaW5HZXRVc2VyR2xvYmFsTWV0YWRhdGEgPSAoXG4gIHBhcmFtczogQWRtaW5HZXRVc2VyR2xvYmFsTWV0YWRhdGFSZXF1ZXN0LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8QWRtaW5HZXRVc2VyR2xvYmFsTWV0YWRhdGFSZXNwb25zZT4gPT4ge1xuICByZXR1cm4gand0UG9zdCgnYXBpL3YwL2FkbWluL2dldC11c2VyLWdsb2JhbC1tZXRhZGF0YScsIHBhcmFtcywgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRtaW5VcGRhdGVVc2VyR2xvYmFsTWV0YWRhdGEgPSAoXG4gIHBhcmFtczogT21pdDxBZG1pblVwZGF0ZVVzZXJHbG9iYWxNZXRhZGF0YVJlcXVlc3QsICdBZG1pblB1YmxpY0tleSc+LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICByZXR1cm4gand0UG9zdCgnYXBpL3YwL2FkbWluL3VwZGF0ZS11c2VyLWdsb2JhbC1tZXRhZGF0YScsIHBhcmFtcywgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRtaW5HZXRBbGxVc2VyR2xvYmFsTWV0YWRhdGEgPSAoXG4gIHBhcmFtczogQWRtaW5HZXRBbGxVc2VyR2xvYmFsTWV0YWRhdGFSZXF1ZXN0LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8QWRtaW5HZXRVc2VyR2xvYmFsTWV0YWRhdGFSZXNwb25zZT4gPT4ge1xuICByZXR1cm4gand0UG9zdCgnYXBpL3YwL2FkbWluL2dldC1hbGwtdXNlci1nbG9iYWwtbWV0YWRhdGEnLCBwYXJhbXMsIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkbWluUGluUG9zdCA9IChcbiAgcGFyYW1zOiBBZG1pblBpblBvc3RSZXF1ZXN0LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICByZXR1cm4gand0UG9zdCgnYXBpL3YwL2FkbWluL3Bpbi1wb3N0JywgcGFyYW1zLCBvcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZG1pblVwZGF0ZUdsb2JhbEZlZWQgPSAoXG4gIHBhcmFtczogQWRtaW5VcGRhdGVHbG9iYWxGZWVkUmVxdWVzdCxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgcmV0dXJuIGp3dFBvc3QoJ2FwaS92MC9hZG1pbi91cGRhdGUtZ2xvYmFsLWZlZWQnLCBwYXJhbXMsIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkbWluUmVtb3ZlTmlsUG9zdHMgPSAoXG4gIHBhcmFtczogQWRtaW5SZW1vdmVOaWxQb3N0c1JlcXVlc3QsXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KCdhcGkvdjAvYWRtaW4vcmVtb3ZlLW5pbC1wb3N0cycsIHBhcmFtcywgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRtaW5SZXByb2Nlc3NCaXRjb2luQmxvY2sgPSAoXG4gIGJsb2NrSGFzaE9yQmxvY2tIZWlnaHQ6IHN0cmluZyxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pID0+IHtcbiAgcmV0dXJuIGp3dFBvc3QoXG4gICAgYGFwaS92MC9hZG1pbi9yZXByb2Nlc3MtYml0Y29pbi1ibG9jay8ke2Jsb2NrSGFzaE9yQmxvY2tIZWlnaHR9YCxcbiAgICB7fSxcbiAgICBvcHRpb25zXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRtaW5HZXRNZW1wb29sU3RhdHMgPSAoXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxBZG1pbkdldE1lbXBvb2xTdGF0c1Jlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KCdhcGkvdjAvYWRtaW4vZ2V0LW1lbXBvb2wtc3RhdHMnLCB7fSwgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRtaW5Td2FwSWRlbnRpdHkgPSBhc3luYyAoXG4gIHBhcmFtczogVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxTd2FwSWRlbnRpdHlSZXF1ZXN0PixcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8U3dhcElkZW50aXR5UmVzcG9uc2U+PiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KCdhcGkvdjAvYWRtaW4vc3dhcC1pZGVudGl0eScsIHBhcmFtcywgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRtaW5TZXRVU0RDZW50c1RvREVTT1Jlc2VydmVFeGNoYW5nZVJhdGUgPSAoXG4gIHBhcmFtczogT21pdDxTZXRVU0RDZW50c1RvRGVTb0V4Y2hhbmdlUmF0ZVJlcXVlc3QsICdBZG1pblB1YmxpY0tleSc+LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8U2V0VVNEQ2VudHNUb0RlU29FeGNoYW5nZVJhdGVSZXNwb25zZT4gPT4ge1xuICByZXR1cm4gand0UG9zdChcbiAgICAnYXBpL3YwL2FkbWluL3NldC11c2QtY2VudHMtdG8tZGVzby1yZXNlcnZlLWV4Y2hhbmdlLXJhdGUnLFxuICAgIHBhcmFtcyxcbiAgICBvcHRpb25zXG4gICk7XG59O1xuXG4vLyBOb3QgYSBqd3QgcmVxdWVzdCwgYnV0IGl0J3MgYW4gYWRtaW4gZW5kcG9pbnQgc28gaXQncyBoZXJlLi4uXG5leHBvcnQgY29uc3QgYWRtaW5HZXRVU0RDZW50c1RvREVTT1Jlc2VydmVFeGNoYW5nZVJhdGUgPSAoXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxHZXRVU0RDZW50c1RvRGVTb0V4Y2hhbmdlUmF0ZVJlc3BvbnNlPiA9PiB7XG4gIGNvbnN0IGVuZHBvaW50ID0gJ2FwaS92MC9hZG1pbi9nZXQtdXNkLWNlbnRzLXRvLWRlc28tcmVzZXJ2ZS1leGNoYW5nZS1yYXRlJztcbiAgcmV0dXJuIGFwaS5nZXQoXG4gICAgb3B0aW9ucz8ubm9kZVVSSSA/IGNsZWFuVVJMKG9wdGlvbnMubm9kZVVSSSwgZW5kcG9pbnQpIDogZW5kcG9pbnRcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZG1pblNldEJ1eURlc29GZWVCYXNpc1BvaW50cyA9IChcbiAgcGFyYW1zOiBPbWl0PFNldEJ1eURlU29GZWVCYXNpc1BvaW50c1JlcXVlc3QsICdBZG1pblB1YmxpY0tleSc+LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8U2V0QnV5RGVTb0ZlZUJhc2lzUG9pbnRzUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGp3dFBvc3QoJ2FwaS92MC9hZG1pbi9zZXQtYnV5LWRlc28tZmVlLWJhc2lzLXBvaW50cycsIHBhcmFtcywgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRtaW5HZXRCdXlEZXNvRmVlQmFzaXNQb2ludHMgPSAoXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxHZXRCdXlEZVNvRmVlQmFzaXNQb2ludHNSZXNwb25zZT4gPT4ge1xuICBjb25zdCBlbmRwb2ludCA9ICdhcGkvdjAvYWRtaW4vZ2V0LWJ1eS1kZXNvLWZlZS1iYXNpcy1wb2ludHMnO1xuICByZXR1cm4gYXBpLmdldChcbiAgICBvcHRpb25zPy5ub2RlVVJJID8gY2xlYW5VUkwob3B0aW9ucy5ub2RlVVJJLCBlbmRwb2ludCkgOiBlbmRwb2ludFxuICApO1xufTtcblxuZXhwb3J0IHR5cGUgQWRtaW5VcGRhdGVHbG9iYWxQYXJhbXNSZXF1ZXN0UGFyYW1zID1cbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgICBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgICAgVXBkYXRlR2xvYmFsUGFyYW1zUmVxdWVzdCxcbiAgICAgIHwgJ1VwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICAgIHwgJ1VTRENlbnRzUGVyQml0Y29pbidcbiAgICAgIHwgJ0NyZWF0ZVByb2ZpbGVGZWVOYW5vcydcbiAgICAgIHwgJ01heENvcGllc1Blck5GVCdcbiAgICAgIHwgJ0NyZWF0ZU5GVEZlZU5hbm9zJ1xuICAgICAgfCAnTWluaW11bU5ldHdvcmtGZWVOYW5vc1BlcktCJ1xuICAgID5cbiAgPjtcblxuZXhwb3J0IGNvbnN0IGFkbWluVXBkYXRlR2xvYmFsUGFyYW1zID0gYXN5bmMgKFxuICBwYXJhbXM6IEFkbWluVXBkYXRlR2xvYmFsUGFyYW1zUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8VXBkYXRlR2xvYmFsUGFyYW1zUmVzcG9uc2U+PiA9PiB7XG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvYWRtaW4vdXBkYXRlLWdsb2JhbC1wYXJhbXMnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RBZG1pblVwZGF0ZUdsb2JhbFBhcmFtc1RyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RBZG1pblVwZGF0ZUdsb2JhbFBhcmFtc1RyYW5zYWN0aW9uID0gYXN5bmMgKFxuICBwYXJhbXM6IEFkbWluVXBkYXRlR2xvYmFsUGFyYW1zUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YVVwZGF0ZUdsb2JhbFBhcmFtcygpO1xuICBjb25zdCBjb25zZW5zdXNFeHRyYURhdGFLVnM6IFRyYW5zYWN0aW9uRXh0cmFEYXRhS1ZbXSA9IFtdO1xuICBpZiAocGFyYW1zLlVTRENlbnRzUGVyQml0Y29pbiA+PSAwKSB7XG4gICAgY29uc2Vuc3VzRXh0cmFEYXRhS1ZzLnB1c2goXG4gICAgICBuZXcgVHJhbnNhY3Rpb25FeHRyYURhdGFLVihcbiAgICAgICAgZW5jb2RlVVRGOFRvQnl0ZXMoJ1VTRENlbnRzUGVyQml0Y29pbicpLFxuICAgICAgICB1dmFyaW50NjRUb0J1ZihwYXJhbXMuVVNEQ2VudHNQZXJCaXRjb2luKVxuICAgICAgKVxuICAgICk7XG4gIH1cbiAgaWYgKHBhcmFtcy5NaW5pbXVtTmV0d29ya0ZlZU5hbm9zUGVyS0IgPj0gMCkge1xuICAgIGNvbnNlbnN1c0V4dHJhRGF0YUtWcy5wdXNoKFxuICAgICAgbmV3IFRyYW5zYWN0aW9uRXh0cmFEYXRhS1YoXG4gICAgICAgIGVuY29kZVVURjhUb0J5dGVzKCdNaW5OZXR3b3JrRmVlTmFub3NQZXJLQicpLFxuICAgICAgICB1dmFyaW50NjRUb0J1ZihwYXJhbXMuTWluaW11bU5ldHdvcmtGZWVOYW5vc1BlcktCKVxuICAgICAgKVxuICAgICk7XG4gIH1cbiAgaWYgKHBhcmFtcy5DcmVhdGVQcm9maWxlRmVlTmFub3MgPj0gMCkge1xuICAgIGNvbnNlbnN1c0V4dHJhRGF0YUtWcy5wdXNoKFxuICAgICAgbmV3IFRyYW5zYWN0aW9uRXh0cmFEYXRhS1YoXG4gICAgICAgIGVuY29kZVVURjhUb0J5dGVzKCdDcmVhdGVQcm9maWxlRmVlTmFub3MnKSxcbiAgICAgICAgdXZhcmludDY0VG9CdWYocGFyYW1zLkNyZWF0ZVByb2ZpbGVGZWVOYW5vcylcbiAgICAgIClcbiAgICApO1xuICB9XG4gIGlmIChwYXJhbXMuQ3JlYXRlTkZURmVlTmFub3MgPj0gMCkge1xuICAgIGNvbnNlbnN1c0V4dHJhRGF0YUtWcy5wdXNoKFxuICAgICAgbmV3IFRyYW5zYWN0aW9uRXh0cmFEYXRhS1YoXG4gICAgICAgIGVuY29kZVVURjhUb0J5dGVzKCdDcmVhdGVORlRGZWVOYW5vcycpLFxuICAgICAgICB1dmFyaW50NjRUb0J1ZihwYXJhbXMuQ3JlYXRlTkZURmVlTmFub3MpXG4gICAgICApXG4gICAgKTtcbiAgfVxuICBpZiAocGFyYW1zLk1heENvcGllc1Blck5GVCA+PSAwKSB7XG4gICAgY29uc2Vuc3VzRXh0cmFEYXRhS1ZzLnB1c2goXG4gICAgICBuZXcgVHJhbnNhY3Rpb25FeHRyYURhdGFLVihcbiAgICAgICAgZW5jb2RlVVRGOFRvQnl0ZXMoJ01heENvcGllc1Blck5GVCcpLFxuICAgICAgICB1dmFyaW50NjRUb0J1ZihwYXJhbXMuTWF4Q29waWVzUGVyTkZUKVxuICAgICAgKVxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KHBhcmFtcy5VcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssIG1ldGFkYXRhLCB7XG4gICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIENvbnNlbnN1c0V4dHJhRGF0YUtWczogY29uc2Vuc3VzRXh0cmFEYXRhS1ZzLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZG1pbkdldEdsb2JhbFBhcmFtcyA9IChcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPEdldEdsb2JhbFBhcmFtc1Jlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KCdhcGkvdjAvYWRtaW4vZ2V0LWdsb2JhbC1wYXJhbXMnLCB7fSwgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRtaW5HZXRORlREcm9wID0gKFxuICBwYXJhbXM6IEFkbWluR2V0TkZURHJvcFJlcXVlc3QsXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxBZG1pbkdldE5GVERyb3BSZXNwb25zZT4gPT4ge1xuICByZXR1cm4gand0UG9zdCgnYXBpL3YwL2FkbWluL2dldC1uZnQtZHJvcCcsIHBhcmFtcywgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRtaW5VcGRhdGVORlREcm9wID0gKFxuICBwYXJhbXM6IEFkbWluVXBkYXRlTkZURHJvcFJlcXVlc3QsXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxBZG1pblVwZGF0ZU5GVERyb3BSZXNwb25zZT4gPT4ge1xuICByZXR1cm4gand0UG9zdCgnL2FwaS92MC9hZG1pbi91cGRhdGUtbmZ0LWRyb3AnLCBwYXJhbXMsIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkbWluR2V0VW5maWx0ZXJlZEhvdEZlZWQgPSAoXG4gIHBhcmFtczogUGFydGlhbDxIb3RGZWVkUGFnZVJlcXVlc3Q+LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8SG90RmVlZFBhZ2VSZXNwb25zZT4gPT4ge1xuICByZXR1cm4gand0UG9zdCgnYXBpL3YwL2FkbWluL2dldC11bmZpbHRlcmVkLWhvdC1mZWVkJywgcGFyYW1zLCBvcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZG1pbkdldEhvdEZlZWRBbGdvcml0aG0gPSAoXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxBZG1pbkdldEhvdEZlZWRBbGdvcml0aG1SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gand0UG9zdCgnYXBpL3YwL2FkbWluL2dldC1ob3QtZmVlZC1hbGdvcml0aG0nLCB7fSwgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRtaW5VcGRhdGVIb3RGZWVkQWxnb3JpdGhtID0gKFxuICBwYXJhbXM6IEFkbWluVXBkYXRlSG90RmVlZEFsZ29yaXRobVJlcXVlc3QsXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KCdhcGkvdjAvYWRtaW4vdXBkYXRlLWhvdC1mZWVkLWFsZ29yaXRobScsIHBhcmFtcywgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRtaW5VcGRhdGVIb3RGZWVkVXNlck11bHRpcGxpZXIgPSAoXG4gIHBhcmFtczogQWRtaW5VcGRhdGVIb3RGZWVkVXNlck11bHRpcGxpZXJSZXF1ZXN0LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICByZXR1cm4gand0UG9zdChcbiAgICAnYXBpL3YwL2FkbWluL3VwZGF0ZS1ob3QtZmVlZC11c2VyLW11bHRpcGxpZXInLFxuICAgIHBhcmFtcyxcbiAgICBvcHRpb25zXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRtaW5VcGRhdGVIb3RGZWVkUG9zdE11bHRpcGxpZXIgPSAoXG4gIHBhcmFtczogQWRtaW5VcGRhdGVIb3RGZWVkUG9zdE11bHRpcGxpZXJSZXF1ZXN0LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICByZXR1cm4gand0UG9zdChcbiAgICAnYXBpL3YwL2FkbWluL3VwZGF0ZS1ob3QtZmVlZC1wb3N0LW11bHRpcGxpZXInLFxuICAgIHBhcmFtcyxcbiAgICBvcHRpb25zXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRtaW5HZXRIb3RGZWVkVXNlck11bHRpcGxpZXIgPSAoXG4gIHBhcmFtczogQWRtaW5HZXRIb3RGZWVkVXNlck11bHRpcGxpZXJSZXF1ZXN0LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8QWRtaW5HZXRIb3RGZWVkVXNlck11bHRpcGxpZXJSZXNwb25zZT4gPT4ge1xuICByZXR1cm4gand0UG9zdCgnYXBpL3YwL2FkbWluL2dldC1ob3QtZmVlZC11c2VyLW11bHRpcGxpZXInLCBwYXJhbXMsIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkbWluR2V0V3lyZVdhbGxldE9yZGVyc0ZvclVzZXIgPSAoXG4gIHBhcmFtczpcbiAgICB8IFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgICAgIE9taXQ8R2V0V3lyZVdhbGxldE9yZGVyRm9yUHVibGljS2V5UmVxdWVzdCwgJ0FkbWluUHVibGljS2V5Jz4sXG4gICAgICAgICdQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICAgID5cbiAgICB8IFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgICAgIE9taXQ8R2V0V3lyZVdhbGxldE9yZGVyRm9yUHVibGljS2V5UmVxdWVzdCwgJ0FkbWluUHVibGljS2V5Jz4sXG4gICAgICAgICdVc2VybmFtZSdcbiAgICAgID4sXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxHZXRXeXJlV2FsbGV0T3JkZXJGb3JQdWJsaWNLZXlSZXNwb25zZT4gPT4ge1xuICByZXR1cm4gand0UG9zdChcbiAgICAnYXBpL3YwL2FkbWluL2dldC13eXJlLXdhbGxldC1vcmRlcnMtZm9yLXB1YmxpYy1rZXknLFxuICAgIHBhcmFtcyxcbiAgICBvcHRpb25zXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRtaW5HZXRXeXJlV2FsbGV0T3JkZXJRdW90YXRpb24gPSAoXG4gIHBhcmFtczogV2FsbGV0T3JkZXJRdW90YXRpb25SZXF1ZXN0LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8V3lyZVdhbGxldE9yZGVyUXVvdGF0aW9uUGF5bG9hZD4gPT4ge1xuICByZXR1cm4gand0UG9zdChcbiAgICAnYXBpL3YwL2FkbWluL2dldC13eXJlLXdhbGxldC1vcmRlci1xdW90YXRpb24nLFxuICAgIHBhcmFtcyxcbiAgICBvcHRpb25zXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRtaW5HZXRXeXJlV2FsbGV0T3JkZXJSZXNlcnZhdGlvbiA9IChcbiAgcGFyYW1zOiBXYWxsZXRPcmRlclJlc2VydmF0aW9uUmVxdWVzdCxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPFd5cmVXYWxsZXRPcmRlclJlc2VydmF0aW9uUGF5bG9hZD4gPT4ge1xuICByZXR1cm4gand0UG9zdChcbiAgICAnYXBpL3YwL2FkbWluL2dldC13eXJlLXdhbGxldC1vcmRlci1yZXNlcnZhdGlvbicsXG4gICAgcGFyYW1zLFxuICAgIG9wdGlvbnNcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNlbmRWZXJpZnlFbWFpbCA9IChcbiAgcGFyYW1zOiBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFJlc2VuZFZlcmlmeUVtYWlsUmVxdWVzdCwgJ1B1YmxpY0tleSc+LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICByZXR1cm4gand0UG9zdCgnYXBpL3YwL3Jlc2VuZC12ZXJpZnktZW1haWwnLCBwYXJhbXMsIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGNvbnN0IHZlcmlmeUVtYWlsID0gKFxuICBwYXJhbXM6IFZlcmlmeUVtYWlsUmVxdWVzdCxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgZW5kcG9pbnQgPSAnYXBpL3YwL3ZlcmlmeS1lbWFpbCc7XG4gIHJldHVybiBhcGkucG9zdChcbiAgICBvcHRpb25zPy5ub2RlVVJJID8gY2xlYW5VUkwob3B0aW9ucy5ub2RlVVJJLCBlbmRwb2ludCkgOiBlbmRwb2ludCxcbiAgICBwYXJhbXNcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGxvYWRJbWFnZSA9IGFzeW5jIChcbiAgcGFyYW1zOiBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgIFVwbG9hZEltYWdlUmVxdWVzdCxcbiAgICAnZmlsZScgfCAnVXNlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICA+LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8VXBsb2FkSW1hZ2VSZXNwb25zZT4gPT4ge1xuICBjb25zdCBKV1QgPSBwYXJhbXMuSldUID8/IChhd2FpdCBpZGVudGl0eS5qd3QoKSk7XG4gIGNvbnN0IGVuZHBvaW50ID0gJ2FwaS92MC91cGxvYWQtaW1hZ2UnO1xuXG4gIHJldHVybiBhcGkucG9zdChcbiAgICBvcHRpb25zPy5ub2RlVVJJID8gY2xlYW5VUkwob3B0aW9ucy5ub2RlVVJJLCBlbmRwb2ludCkgOiBlbmRwb2ludCxcbiAgICB7IEpXVCwgLi4ucGFyYW1zIH0sXG4gICAgeyBjb250ZW50VHlwZTogJ211bHRpcGFydC9mb3JtLWRhdGEnIH1cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGxvYWRWaWRlbyA9IGFzeW5jIChcbiAgcGFyYW1zOiBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgIFVwbG9hZFZpZGVvUmVxdWVzdCxcbiAgICAnVXNlclB1YmxpY0tleUJhc2U1OENoZWNrJyB8ICdmaWxlJ1xuICA+XG4pOiBQcm9taXNlPFVwbG9hZFZpZGVvVjJSZXNwb25zZT4gPT4ge1xuICBjb25zdCBKV1QgPSBwYXJhbXMuSldUID8/IChhd2FpdCBpZGVudGl0eS5qd3QoKSk7XG4gIGNvbnN0IGVuZHBvaW50ID0gJ2FwaS92MC91cGxvYWQtdmlkZW8nO1xuICByZXR1cm4gbWVkaWEucG9zdChcbiAgICBlbmRwb2ludCxcbiAgICB7IEpXVCwgLi4ucGFyYW1zIH0sXG4gICAgeyBjb250ZW50VHlwZTogJ211bHRpcGFydC9mb3JtLWRhdGEnIH1cbiAgKTtcbn07XG4iXX0=
return media.post(endpoint, { JWT, ...params }, { contentType: 'multipart/form-data' });
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LXJlcXVlc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2p3dC1yZXF1ZXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrRUEsT0FBTyxFQUVMLEdBQUcsRUFDSCxRQUFRLEVBQ1IsS0FBSyxHQUNOLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixxQ0FBcUMsRUFDckMsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixjQUFjLEdBQ2YsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0UsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUNuQixRQUFnQixFQUNoQixTQUFjLEVBQUUsRUFDaEIsT0FBd0IsRUFDeEIsRUFBRTtJQUNGLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDekQsSUFBSSxjQUFjLEdBQUcsRUFBRSxDQUFDO0lBRXhCLElBQUksY0FBYyxFQUFFO1FBQ2xCLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFNLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVsRCxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztTQUMzRTtRQUVELGNBQWMsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDO0tBQ3hDO0lBRUQsTUFBTSxVQUFVLEdBQUc7UUFDakIsR0FBRyxNQUFNO1FBQ1QsR0FBRyxDQUFDLGNBQWMsSUFBSSxFQUFFLGNBQWMsRUFBRSxDQUFDO1FBQ3pDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDMUMsQ0FBQztJQUVGLElBQUksT0FBTyxFQUFFLFNBQVMsRUFBRTtRQUN0QixPQUFPLG1CQUFtQixD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QUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQ2pFLE1BQU0sQ0FDUCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLEtBQUssRUFDOUIsTUFHQyxFQUNELE9BQXdCLEVBQ00sRUFBRTtJQUNoQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqRCxNQUFNLFFBQVEsR0FBRyxxQkFBcUIsQ0FBQztJQUV2QyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQ2IsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFDakUsRUFBRSxHQUFHLEVBQUUsR0FBRyxNQUFNLEVBQUUsRUFDbEIsRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQUUsQ0FDdkMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxLQUFLLEVBQzlCLE1BR0MsRUFDK0IsRUFBRTtJQUNsQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqRCxNQUFNLFFBQVEsR0FBRyxxQkFBcUIsQ0FBQztJQUN2QyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQ2YsUUFBUSxFQUNSLEVBQUUsR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLEVBQ2xCLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLENBQ3ZDLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZG1pbkdldEFsbFVzZXJHbG9iYWxNZXRhZGF0YVJlcXVlc3QsXG4gIEFkbWluR2V0SG90RmVlZEFsZ29yaXRobVJlc3BvbnNlLFxuICBBZG1pbkdldEhvdEZlZWRVc2VyTXVsdGlwbGllclJlcXVlc3QsXG4gIEFkbWluR2V0SG90RmVlZFVzZXJNdWx0aXBsaWVyUmVzcG9uc2UsXG4gIEFkbWluR2V0TWVtcG9vbFN0YXRzUmVzcG9uc2UsXG4gIEFkbWluR2V0TkZURHJvcFJlcXVlc3QsXG4gIEFkbWluR2V0TkZURHJvcFJlc3BvbnNlLFxuICBBZG1pbkdldFVzZXJBZG1pbkRhdGFSZXF1ZXN0LFxuICBBZG1pbkdldFVzZXJBZG1pbkRhdGFSZXNwb25zZSxcbiAgQWRtaW5HZXRVc2VyR2xvYmFsTWV0YWRhdGFSZXF1ZXN0LFxuICBBZG1pbkdldFVzZXJHbG9iYWxNZXRhZGF0YVJlc3BvbnNlLFxuICBBZG1pbkdldFVzZXJuYW1lVmVyaWZpY2F0aW9uQXVkaXRMb2dzUmVxdWVzdCxcbiAgQWRtaW5HZXRVc2VybmFtZVZlcmlmaWNhdGlvbkF1ZGl0TG9nc1Jlc3BvbnNlLFxuICBBZG1pbkdldFZlcmlmaWVkVXNlcnNSZXNwb25zZSxcbiAgQWRtaW5HcmFudFZlcmlmaWNhdGlvbkJhZGdlUmVxdWVzdCxcbiAgQWRtaW5HcmFudFZlcmlmaWNhdGlvbkJhZGdlUmVzcG9uc2UsXG4gIEFkbWluUGluUG9zdFJlcXVlc3QsXG4gIEFkbWluUmVtb3ZlTmlsUG9zdHNSZXF1ZXN0LFxuICBBZG1pblJlbW92ZVZlcmlmaWNhdGlvbkJhZGdlUmVxdWVzdCxcbiAgQWRtaW5SZW1vdmVWZXJpZmljYXRpb25CYWRnZVJlc3BvbnNlLFxuICBBZG1pblVwZGF0ZUdsb2JhbEZlZWRSZXF1ZXN0LFxuICBBZG1pblVwZGF0ZUhvdEZlZWRBbGdvcml0aG1SZXF1ZXN0LFxuICBBZG1pblVwZGF0ZUhvdEZlZWRQb3N0TXVsdGlwbGllclJlcXVlc3QsXG4gIEFkbWluVXBkYXRlSG90RmVlZFVzZXJNdWx0aXBsaWVyUmVxdWVzdCxcbiAgQWRtaW5VcGRhdGVORlREcm9wUmVxdWVzdCxcbiAgQWRtaW5VcGRhdGVORlREcm9wUmVzcG9uc2UsXG4gIEFkbWluVXBkYXRlVXNlckdsb2JhbE1ldGFkYXRhUmVxdWVzdCxcbiAgQmxvY2tQdWJsaWNLZXlSZXF1ZXN0LFxuICBCbG9ja1B1YmxpY0tleVJlc3BvbnNlLFxuICBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2UsXG4gIERlbGV0ZVBJSVJlcXVlc3QsXG4gIEdldEJ1eURlU29GZWVCYXNpc1BvaW50c1Jlc3BvbnNlLFxuICBHZXRHbG9iYWxQYXJhbXNSZXNwb25zZSxcbiAgR2V0VVNEQ2VudHNUb0RlU29FeGNoYW5nZVJhdGVSZXNwb25zZSxcbiAgR2V0VXNlckdsb2JhbE1ldGFkYXRhUmVxdWVzdCxcbiAgR2V0VXNlckdsb2JhbE1ldGFkYXRhUmVzcG9uc2UsXG4gIEdldFd5cmVXYWxsZXRPcmRlckZvclB1YmxpY0tleVJlcXVlc3QsXG4gIEdldFd5cmVXYWxsZXRPcmRlckZvclB1YmxpY0tleVJlc3BvbnNlLFxuICBIb3RGZWVkUGFnZVJlcXVlc3QsXG4gIEhvdEZlZWRQYWdlUmVzcG9uc2UsXG4gIE5vZGVDb250cm9sUmVxdWVzdCxcbiAgTm9kZUNvbnRyb2xSZXNwb25zZSxcbiAgUmVxdWVzdE9wdGlvbnMsXG4gIFJlc2VuZFZlcmlmeUVtYWlsUmVxdWVzdCxcbiAgU2V0QnV5RGVTb0ZlZUJhc2lzUG9pbnRzUmVxdWVzdCxcbiAgU2V0QnV5RGVTb0ZlZUJhc2lzUG9pbnRzUmVzcG9uc2UsXG4gIFNldE5vdGlmaWNhdGlvbk1ldGFkYXRhUmVxdWVzdCxcbiAgU2V0VVNEQ2VudHNUb0RlU29FeGNoYW5nZVJhdGVSZXF1ZXN0LFxuICBTZXRVU0RDZW50c1RvRGVTb0V4Y2hhbmdlUmF0ZVJlc3BvbnNlLFxuICBTd2FwSWRlbnRpdHlSZXF1ZXN0LFxuICBTd2FwSWRlbnRpdHlSZXNwb25zZSxcbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YSxcbiAgVXBkYXRlR2xvYmFsUGFyYW1zUmVxdWVzdCxcbiAgVXBkYXRlR2xvYmFsUGFyYW1zUmVzcG9uc2UsXG4gIFVwZGF0ZVVzZXJHbG9iYWxNZXRhZGF0YVJlcXVlc3QsXG4gIFVwbG9hZEltYWdlUmVxdWVzdCxcbiAgVXBsb2FkSW1hZ2VSZXNwb25zZSxcbiAgVXBsb2FkVmlkZW9SZXF1ZXN0LFxuICBVcGxvYWRWaWRlb1YyUmVzcG9uc2UsXG4gIFZlcmlmeUVtYWlsUmVxdWVzdCxcbiAgV2FsbGV0T3JkZXJRdW90YXRpb25SZXF1ZXN0LFxuICBXYWxsZXRPcmRlclJlc2VydmF0aW9uUmVxdWVzdCxcbiAgV3lyZVdhbGxldE9yZGVyUXVvdGF0aW9uUGF5bG9hZCxcbiAgV3lyZVdhbGxldE9yZGVyUmVzZXJ2YXRpb25QYXlsb2FkLFxufSBmcm9tICcuL2JhY2tlbmQtdHlwZXMvaW5kZXguanMnO1xuaW1wb3J0IHtcbiAgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkcyxcbiAgYXBpLFxuICBjbGVhblVSTCxcbiAgbWVkaWEsXG59IGZyb20gJy4vZGF0YS9pbmRleC5qcyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbkV4dHJhRGF0YUtWLFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhVXBkYXRlR2xvYmFsUGFyYW1zLFxuICBlbmNvZGVVVEY4VG9CeXRlcyxcbiAgaWRlbnRpdHksXG4gIHV2YXJpbnQ2NFRvQnVmLFxufSBmcm9tICcuL2lkZW50aXR5L2luZGV4LmpzJztcbmltcG9ydCB7IGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4LCBoYW5kbGVTaWduQW5kU3VibWl0IH0gZnJvbSAnLi9pbnRlcm5hbC5qcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4IH0gZnJvbSAnLi90eXBlcy5qcyc7XG5jb25zdCBqd3RQb3N0ID0gYXN5bmMgKFxuICBlbmRwb2ludDogc3RyaW5nLFxuICBwYXJhbXM6IGFueSA9IHt9LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbikgPT4ge1xuICBjb25zdCBpc0FkbWluUmVxdWVzdCA9IGVuZHBvaW50LmluY2x1ZGVzKCdhcGkvdjAvYWRtaW4nKTtcbiAgbGV0IEFkbWluUHVibGljS2V5ID0gJyc7XG5cbiAgaWYgKGlzQWRtaW5SZXF1ZXN0KSB7XG4gICAgY29uc3QgeyBjdXJyZW50VXNlciB9ID0gYXdhaXQgaWRlbnRpdHkuc25hcHNob3QoKTtcblxuICAgIGlmICghY3VycmVudFVzZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGlzc3VlIGFuIGFkbWluIHJlcXVlc3Qgd2l0aG91dCBhIGxvZ2dlZCBpbiB1c2VyJyk7XG4gICAgfVxuXG4gICAgQWRtaW5QdWJsaWNLZXkgPSBjdXJyZW50VXNlci5wdWJsaWNLZXk7XG4gIH1cblxuICBjb25zdCBwb3N0UGFyYW1zID0ge1xuICAgIC4uLnBhcmFtcyxcbiAgICAuLi4oaXNBZG1pblJlcXVlc3QgJiYgeyBBZG1pblB1YmxpY0tleSB9KSxcbiAgICBKV1Q6IHBhcmFtcy5KV1QgPz8gKGF3YWl0IGlkZW50aXR5Lmp3dCgpKSxcbiAgfTtcblxuICBpZiAob3B0aW9ucz8uYnJvYWRjYXN0KSB7XG4gICAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoZW5kcG9pbnQsIHBvc3RQYXJhbXMsIG9wdGlvbnMpO1xuICB9XG5cbiAgcmV0dXJuIGFwaS5wb3N0KFxuICAgIG9wdGlvbnM/Lm5vZGVVUkkgPyBjbGVhblVSTChvcHRpb25zLm5vZGVVUkksIGVuZHBvaW50KSA6IGVuZHBvaW50LFxuICAgIHBvc3RQYXJhbXNcbiAgKTtcbn07XG5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9hcGkvdXNlci1lbmRwb2ludHMjZ2V0LXVzZXItZ2xvYmFsLW1ldGFkYXRhLWVtYWlsLWFuZC1waG9uZS1udW1iZXJcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFVzZXJHbG9iYWxNZXRhZGF0YSA9IGFzeW5jIChcbiAgcGFyYW1zOiBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgIEdldFVzZXJHbG9iYWxNZXRhZGF0YVJlcXVlc3QsXG4gICAgJ1VzZXJQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgPixcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPEdldFVzZXJHbG9iYWxNZXRhZGF0YVJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KCdhcGkvdjAvZ2V0LXVzZXItZ2xvYmFsLW1ldGFkYXRhJywgcGFyYW1zLCBvcHRpb25zKTtcbn07XG5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9hcGkvdXNlci1lbmRwb2ludHMjdXBkYXRlLXVzZXItZ2xvYmFsLW1ldGFkYXRhLWVtYWlsLWFuZC1zdGF0ZS1vZi1tZXNzYWdlcy1yZWFkXG4gKi9cbmV4cG9ydCB0eXBlIFVwZGF0ZVVzZXJHbG9iYWxNZXRhZGF0YVBhcmFtcyA9IFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gIFVwZGF0ZVVzZXJHbG9iYWxNZXRhZGF0YVJlcXVlc3QsXG4gICdVc2VyUHVibGljS2V5QmFzZTU4Q2hlY2snXG4+O1xuZXhwb3J0IGNvbnN0IHVwZGF0ZVVzZXJHbG9iYWxNZXRhZGF0YSA9IGFzeW5jIChcbiAgcGFyYW1zOiBVcGRhdGVVc2VyR2xvYmFsTWV0YWRhdGFQYXJhbXMsXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKSA9PiB7XG4gIHJldHVybiBqd3RQb3N0KCdhcGkvdjAvdXBkYXRlLXVzZXItZ2xvYmFsLW1ldGFkYXRhJywgcGFyYW1zLCBvcHRpb25zKTtcbn07XG5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9hcGkvdXNlci1lbmRwb2ludHMjZGVsZXRlLXBpaS1wZXJzb25hbC1pZGVudGlmaWFibGUtaW5mb3JtYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGRlbGV0ZVBJSSA9IGFzeW5jIChcbiAgcGFyYW1zOiBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPERlbGV0ZVBJSVJlcXVlc3QsICdQdWJsaWNLZXlCYXNlNThDaGVjayc+LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8dW5kZWZpbmVkPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KCdhcGkvdjAvZGVsZXRlLXBpaScsIHBhcmFtcywgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvYXBpL3VzZXItZW5kcG9pbnRzI2Jsb2NrLXB1YmxpYy1rZXlcbiAqL1xuZXhwb3J0IHR5cGUgQmxvY2tQdWJsaWNLZXlQYXJhbXMgPSBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICBCbG9ja1B1YmxpY0tleVJlcXVlc3QsXG4gICdCbG9ja1B1YmxpY0tleUJhc2U1OENoZWNrJyB8ICdQdWJsaWNLZXlCYXNlNThDaGVjaydcbj47XG5leHBvcnQgY29uc3QgYmxvY2tQdWJsaWNLZXkgPSBhc3luYyAoXG4gIHBhcmFtczogQmxvY2tQdWJsaWNLZXlQYXJhbXMsXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxCbG9ja1B1YmxpY0tleVJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KCdhcGkvdjAvYmxvY2stcHVibGljLWtleScsIHBhcmFtcywgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvYXBpL25vdGlmaWNhdGlvbi1lbmRwb2ludHMjc2V0LW5vdGlmaWNhdGlvbi1tZXRhZGF0YVxuICovXG5leHBvcnQgY29uc3Qgc2V0Tm90aWZpY2F0aW9uTWV0YWRhdGEgPSBhc3luYyAoXG4gIHBhcmFtczogUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgICBTZXROb3RpZmljYXRpb25NZXRhZGF0YVJlcXVlc3QsXG4gICAgfCAnUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgfCAnTGFzdFNlZW5JbmRleCdcbiAgICB8ICdMYXN0VW5yZWFkTm90aWZpY2F0aW9uSW5kZXgnXG4gICAgfCAnVW5yZWFkTm90aWZpY2F0aW9ucydcbiAgPixcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pID0+IHtcbiAgcmV0dXJuIGp3dFBvc3QoJ2FwaS92MC9zZXQtbm90aWZpY2F0aW9uLW1ldGFkYXRhJywgcGFyYW1zLCBvcHRpb25zKTtcbn07XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFkbWluIGVuZHBvaW50c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2FwaS9hZG1pbi1lbmRwb2ludHMjZ2V0LXZlcmlmaWVkLXVzZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBhZG1pbkdldFZlcmlmaWVkVXNlcnMgPSAoXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxBZG1pbkdldFZlcmlmaWVkVXNlcnNSZXNwb25zZT4gPT4ge1xuICByZXR1cm4gand0UG9zdCgnYXBpL3YwL2FkbWluL2dldC12ZXJpZmllZC11c2VycycsIHt9LCBvcHRpb25zKTtcbn07XG5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9hcGkvYWRtaW4tZW5kcG9pbnRzI2dldC11c2VybmFtZS12ZXJpZmljYXRpb24tYXVkaXQtbG9nc1xuICovXG5leHBvcnQgY29uc3QgYWRtaW5HZXRVc2VybmFtZVZlcmlmaWNhdGlvbkF1ZGl0TG9nID0gKFxuICBwYXJhbXM6IEFkbWluR2V0VXNlcm5hbWVWZXJpZmljYXRpb25BdWRpdExvZ3NSZXF1ZXN0LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8QWRtaW5HZXRVc2VybmFtZVZlcmlmaWNhdGlvbkF1ZGl0TG9nc1Jlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KFxuICAgICdhcGkvdjAvYWRtaW4vZ2V0LXVzZXJuYW1lLXZlcmlmaWNhdGlvbi1hdWRpdC1sb2cnLFxuICAgIHBhcmFtcyxcbiAgICBvcHRpb25zXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRtaW5Ob2RlQ29udHJvbCA9IChcbiAgcGFyYW1zOiBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgIE9taXQ8Tm9kZUNvbnRyb2xSZXF1ZXN0LCAnSldUJyB8ICdBZG1pblB1YmxpY0tleSc+LFxuICAgICdBZGRyZXNzJyB8ICdPcGVyYXRpb25UeXBlJ1xuICA+LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Tm9kZUNvbnRyb2xSZXNwb25zZT4gPT4ge1xuICByZXR1cm4gand0UG9zdCgnYXBpL3YwL2FkbWluL25vZGUtY29udHJvbCcsIHBhcmFtcywgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRtaW5HcmFudFZlcmlmaWNhdGlvbkJhZGdlID0gKFxuICBwYXJhbXM6IE9taXQ8QWRtaW5HcmFudFZlcmlmaWNhdGlvbkJhZGdlUmVxdWVzdCwgJ0FkbWluUHVibGljS2V5Jz4sXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxBZG1pbkdyYW50VmVyaWZpY2F0aW9uQmFkZ2VSZXNwb25zZT4gPT4ge1xuICByZXR1cm4gand0UG9zdCgnYXBpL3YwL2FkbWluL2dyYW50LXZlcmlmaWNhdGlvbi1iYWRnZScsIHBhcmFtcywgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRtaW5SZW1vdmVWZXJpZmljYXRpb25CYWRnZSA9IChcbiAgcGFyYW1zOiBPbWl0PEFkbWluUmVtb3ZlVmVyaWZpY2F0aW9uQmFkZ2VSZXF1ZXN0LCAnQWRtaW5QdWJsaWNLZXknPixcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPEFkbWluUmVtb3ZlVmVyaWZpY2F0aW9uQmFkZ2VSZXNwb25zZT4gPT4ge1xuICByZXR1cm4gand0UG9zdCgnYXBpL3YwL2FkbWluL3JlbW92ZS12ZXJpZmljYXRpb24tYmFkZ2UnLCBwYXJhbXMsIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkbWluR2V0VXNlckFkbWluRGF0YSA9IChcbiAgcGFyYW1zOiBBZG1pbkdldFVzZXJBZG1pbkRhdGFSZXF1ZXN0LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8QWRtaW5HZXRVc2VyQWRtaW5EYXRhUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGp3dFBvc3QoJ2FwaS92MC9hZG1pbi9nZXQtdXNlci1hZG1pbi1kYXRhJywgcGFyYW1zLCBvcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZG1pbkdldFVzZXJHbG9iYWxNZXRhZGF0YSA9IChcbiAgcGFyYW1zOiBBZG1pbkdldFVzZXJHbG9iYWxNZXRhZGF0YVJlcXVlc3QsXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxBZG1pbkdldFVzZXJHbG9iYWxNZXRhZGF0YVJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KCdhcGkvdjAvYWRtaW4vZ2V0LXVzZXItZ2xvYmFsLW1ldGFkYXRhJywgcGFyYW1zLCBvcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZG1pblVwZGF0ZVVzZXJHbG9iYWxNZXRhZGF0YSA9IChcbiAgcGFyYW1zOiBPbWl0PEFkbWluVXBkYXRlVXNlckdsb2JhbE1ldGFkYXRhUmVxdWVzdCwgJ0FkbWluUHVibGljS2V5Jz4sXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KCdhcGkvdjAvYWRtaW4vdXBkYXRlLXVzZXItZ2xvYmFsLW1ldGFkYXRhJywgcGFyYW1zLCBvcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZG1pbkdldEFsbFVzZXJHbG9iYWxNZXRhZGF0YSA9IChcbiAgcGFyYW1zOiBBZG1pbkdldEFsbFVzZXJHbG9iYWxNZXRhZGF0YVJlcXVlc3QsXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxBZG1pbkdldFVzZXJHbG9iYWxNZXRhZGF0YVJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KCdhcGkvdjAvYWRtaW4vZ2V0LWFsbC11c2VyLWdsb2JhbC1tZXRhZGF0YScsIHBhcmFtcywgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRtaW5QaW5Qb3N0ID0gKFxuICBwYXJhbXM6IEFkbWluUGluUG9zdFJlcXVlc3QsXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KCdhcGkvdjAvYWRtaW4vcGluLXBvc3QnLCBwYXJhbXMsIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkbWluVXBkYXRlR2xvYmFsRmVlZCA9IChcbiAgcGFyYW1zOiBBZG1pblVwZGF0ZUdsb2JhbEZlZWRSZXF1ZXN0LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICByZXR1cm4gand0UG9zdCgnYXBpL3YwL2FkbWluL3VwZGF0ZS1nbG9iYWwtZmVlZCcsIHBhcmFtcywgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRtaW5SZW1vdmVOaWxQb3N0cyA9IChcbiAgcGFyYW1zOiBBZG1pblJlbW92ZU5pbFBvc3RzUmVxdWVzdCxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgcmV0dXJuIGp3dFBvc3QoJ2FwaS92MC9hZG1pbi9yZW1vdmUtbmlsLXBvc3RzJywgcGFyYW1zLCBvcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZG1pblJlcHJvY2Vzc0JpdGNvaW5CbG9jayA9IChcbiAgYmxvY2tIYXNoT3JCbG9ja0hlaWdodDogc3RyaW5nLFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbikgPT4ge1xuICByZXR1cm4gand0UG9zdChcbiAgICBgYXBpL3YwL2FkbWluL3JlcHJvY2Vzcy1iaXRjb2luLWJsb2NrLyR7YmxvY2tIYXNoT3JCbG9ja0hlaWdodH1gLFxuICAgIHt9LFxuICAgIG9wdGlvbnNcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZG1pbkdldE1lbXBvb2xTdGF0cyA9IChcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPEFkbWluR2V0TWVtcG9vbFN0YXRzUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGp3dFBvc3QoJ2FwaS92MC9hZG1pbi9nZXQtbWVtcG9vbC1zdGF0cycsIHt9LCBvcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZG1pblN3YXBJZGVudGl0eSA9IGFzeW5jIChcbiAgcGFyYW1zOiBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFN3YXBJZGVudGl0eVJlcXVlc3Q+LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxTd2FwSWRlbnRpdHlSZXNwb25zZT4+ID0+IHtcbiAgcmV0dXJuIGp3dFBvc3QoJ2FwaS92MC9hZG1pbi9zd2FwLWlkZW50aXR5JywgcGFyYW1zLCBvcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZG1pblNldFVTRENlbnRzVG9ERVNPUmVzZXJ2ZUV4Y2hhbmdlUmF0ZSA9IChcbiAgcGFyYW1zOiBPbWl0PFNldFVTRENlbnRzVG9EZVNvRXhjaGFuZ2VSYXRlUmVxdWVzdCwgJ0FkbWluUHVibGljS2V5Jz4sXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxTZXRVU0RDZW50c1RvRGVTb0V4Y2hhbmdlUmF0ZVJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KFxuICAgICdhcGkvdjAvYWRtaW4vc2V0LXVzZC1jZW50cy10by1kZXNvLXJlc2VydmUtZXhjaGFuZ2UtcmF0ZScsXG4gICAgcGFyYW1zLFxuICAgIG9wdGlvbnNcbiAgKTtcbn07XG5cbi8vIE5vdCBhIGp3dCByZXF1ZXN0LCBidXQgaXQncyBhbiBhZG1pbiBlbmRwb2ludCBzbyBpdCdzIGhlcmUuLi5cbmV4cG9ydCBjb25zdCBhZG1pbkdldFVTRENlbnRzVG9ERVNPUmVzZXJ2ZUV4Y2hhbmdlUmF0ZSA9IChcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPEdldFVTRENlbnRzVG9EZVNvRXhjaGFuZ2VSYXRlUmVzcG9uc2U+ID0+IHtcbiAgY29uc3QgZW5kcG9pbnQgPSAnYXBpL3YwL2FkbWluL2dldC11c2QtY2VudHMtdG8tZGVzby1yZXNlcnZlLWV4Y2hhbmdlLXJhdGUnO1xuICByZXR1cm4gYXBpLmdldChcbiAgICBvcHRpb25zPy5ub2RlVVJJID8gY2xlYW5VUkwob3B0aW9ucy5ub2RlVVJJLCBlbmRwb2ludCkgOiBlbmRwb2ludFxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkbWluU2V0QnV5RGVzb0ZlZUJhc2lzUG9pbnRzID0gKFxuICBwYXJhbXM6IE9taXQ8U2V0QnV5RGVTb0ZlZUJhc2lzUG9pbnRzUmVxdWVzdCwgJ0FkbWluUHVibGljS2V5Jz4sXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxTZXRCdXlEZVNvRmVlQmFzaXNQb2ludHNSZXNwb25zZT4gPT4ge1xuICByZXR1cm4gand0UG9zdCgnYXBpL3YwL2FkbWluL3NldC1idXktZGVzby1mZWUtYmFzaXMtcG9pbnRzJywgcGFyYW1zLCBvcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZG1pbkdldEJ1eURlc29GZWVCYXNpc1BvaW50cyA9IChcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPEdldEJ1eURlU29GZWVCYXNpc1BvaW50c1Jlc3BvbnNlPiA9PiB7XG4gIGNvbnN0IGVuZHBvaW50ID0gJ2FwaS92MC9hZG1pbi9nZXQtYnV5LWRlc28tZmVlLWJhc2lzLXBvaW50cyc7XG4gIHJldHVybiBhcGkuZ2V0KFxuICAgIG9wdGlvbnM/Lm5vZGVVUkkgPyBjbGVhblVSTChvcHRpb25zLm5vZGVVUkksIGVuZHBvaW50KSA6IGVuZHBvaW50XG4gICk7XG59O1xuXG5leHBvcnQgdHlwZSBBZG1pblVwZGF0ZUdsb2JhbFBhcmFtc1JlcXVlc3RQYXJhbXMgPVxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICAgIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgICBVcGRhdGVHbG9iYWxQYXJhbXNSZXF1ZXN0LFxuICAgICAgfCAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnVVNEQ2VudHNQZXJCaXRjb2luJ1xuICAgICAgfCAnQ3JlYXRlUHJvZmlsZUZlZU5hbm9zJ1xuICAgICAgfCAnTWF4Q29waWVzUGVyTkZUJ1xuICAgICAgfCAnQ3JlYXRlTkZURmVlTmFub3MnXG4gICAgICB8ICdNaW5pbXVtTmV0d29ya0ZlZU5hbm9zUGVyS0InXG4gICAgPlxuICA+O1xuXG5leHBvcnQgY29uc3QgYWRtaW5VcGRhdGVHbG9iYWxQYXJhbXMgPSBhc3luYyAoXG4gIHBhcmFtczogQWRtaW5VcGRhdGVHbG9iYWxQYXJhbXNSZXF1ZXN0UGFyYW1zLFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxVcGRhdGVHbG9iYWxQYXJhbXNSZXNwb25zZT4+ID0+IHtcbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC9hZG1pbi91cGRhdGUtZ2xvYmFsLXBhcmFtcycsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdEFkbWluVXBkYXRlR2xvYmFsUGFyYW1zVHJhbnNhY3Rpb24sXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdEFkbWluVXBkYXRlR2xvYmFsUGFyYW1zVHJhbnNhY3Rpb24gPSBhc3luYyAoXG4gIHBhcmFtczogQWRtaW5VcGRhdGVHbG9iYWxQYXJhbXNSZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhVXBkYXRlR2xvYmFsUGFyYW1zKCk7XG4gIGNvbnN0IGNvbnNlbnN1c0V4dHJhRGF0YUtWczogVHJhbnNhY3Rpb25FeHRyYURhdGFLVltdID0gW107XG4gIGlmIChwYXJhbXMuVVNEQ2VudHNQZXJCaXRjb2luID49IDApIHtcbiAgICBjb25zZW5zdXNFeHRyYURhdGFLVnMucHVzaChcbiAgICAgIG5ldyBUcmFuc2FjdGlvbkV4dHJhRGF0YUtWKFxuICAgICAgICBlbmNvZGVVVEY4VG9CeXRlcygnVVNEQ2VudHNQZXJCaXRjb2luJyksXG4gICAgICAgIHV2YXJpbnQ2NFRvQnVmKHBhcmFtcy5VU0RDZW50c1BlckJpdGNvaW4pXG4gICAgICApXG4gICAgKTtcbiAgfVxuICBpZiAocGFyYW1zLk1pbmltdW1OZXR3b3JrRmVlTmFub3NQZXJLQiA+PSAwKSB7XG4gICAgY29uc2Vuc3VzRXh0cmFEYXRhS1ZzLnB1c2goXG4gICAgICBuZXcgVHJhbnNhY3Rpb25FeHRyYURhdGFLVihcbiAgICAgICAgZW5jb2RlVVRGOFRvQnl0ZXMoJ01pbk5ldHdvcmtGZWVOYW5vc1BlcktCJyksXG4gICAgICAgIHV2YXJpbnQ2NFRvQnVmKHBhcmFtcy5NaW5pbXVtTmV0d29ya0ZlZU5hbm9zUGVyS0IpXG4gICAgICApXG4gICAgKTtcbiAgfVxuICBpZiAocGFyYW1zLkNyZWF0ZVByb2ZpbGVGZWVOYW5vcyA+PSAwKSB7XG4gICAgY29uc2Vuc3VzRXh0cmFEYXRhS1ZzLnB1c2goXG4gICAgICBuZXcgVHJhbnNhY3Rpb25FeHRyYURhdGFLVihcbiAgICAgICAgZW5jb2RlVVRGOFRvQnl0ZXMoJ0NyZWF0ZVByb2ZpbGVGZWVOYW5vcycpLFxuICAgICAgICB1dmFyaW50NjRUb0J1ZihwYXJhbXMuQ3JlYXRlUHJvZmlsZUZlZU5hbm9zKVxuICAgICAgKVxuICAgICk7XG4gIH1cbiAgaWYgKHBhcmFtcy5DcmVhdGVORlRGZWVOYW5vcyA+PSAwKSB7XG4gICAgY29uc2Vuc3VzRXh0cmFEYXRhS1ZzLnB1c2goXG4gICAgICBuZXcgVHJhbnNhY3Rpb25FeHRyYURhdGFLVihcbiAgICAgICAgZW5jb2RlVVRGOFRvQnl0ZXMoJ0NyZWF0ZU5GVEZlZU5hbm9zJyksXG4gICAgICAgIHV2YXJpbnQ2NFRvQnVmKHBhcmFtcy5DcmVhdGVORlRGZWVOYW5vcylcbiAgICAgIClcbiAgICApO1xuICB9XG4gIGlmIChwYXJhbXMuTWF4Q29waWVzUGVyTkZUID49IDApIHtcbiAgICBjb25zZW5zdXNFeHRyYURhdGFLVnMucHVzaChcbiAgICAgIG5ldyBUcmFuc2FjdGlvbkV4dHJhRGF0YUtWKFxuICAgICAgICBlbmNvZGVVVEY4VG9CeXRlcygnTWF4Q29waWVzUGVyTkZUJyksXG4gICAgICAgIHV2YXJpbnQ2NFRvQnVmKHBhcmFtcy5NYXhDb3BpZXNQZXJORlQpXG4gICAgICApXG4gICAgKTtcbiAgfVxuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgocGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjaywgbWV0YWRhdGEsIHtcbiAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgQ29uc2Vuc3VzRXh0cmFEYXRhS1ZzOiBjb25zZW5zdXNFeHRyYURhdGFLVnMsXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkbWluR2V0R2xvYmFsUGFyYW1zID0gKFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8R2V0R2xvYmFsUGFyYW1zUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGp3dFBvc3QoJ2FwaS92MC9hZG1pbi9nZXQtZ2xvYmFsLXBhcmFtcycsIHt9LCBvcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZG1pbkdldE5GVERyb3AgPSAoXG4gIHBhcmFtczogQWRtaW5HZXRORlREcm9wUmVxdWVzdCxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPEFkbWluR2V0TkZURHJvcFJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KCdhcGkvdjAvYWRtaW4vZ2V0LW5mdC1kcm9wJywgcGFyYW1zLCBvcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZG1pblVwZGF0ZU5GVERyb3AgPSAoXG4gIHBhcmFtczogQWRtaW5VcGRhdGVORlREcm9wUmVxdWVzdCxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPEFkbWluVXBkYXRlTkZURHJvcFJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KCcvYXBpL3YwL2FkbWluL3VwZGF0ZS1uZnQtZHJvcCcsIHBhcmFtcywgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRtaW5HZXRVbmZpbHRlcmVkSG90RmVlZCA9IChcbiAgcGFyYW1zOiBQYXJ0aWFsPEhvdEZlZWRQYWdlUmVxdWVzdD4sXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxIb3RGZWVkUGFnZVJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KCdhcGkvdjAvYWRtaW4vZ2V0LXVuZmlsdGVyZWQtaG90LWZlZWQnLCBwYXJhbXMsIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkbWluR2V0SG90RmVlZEFsZ29yaXRobSA9IChcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPEFkbWluR2V0SG90RmVlZEFsZ29yaXRobVJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KCdhcGkvdjAvYWRtaW4vZ2V0LWhvdC1mZWVkLWFsZ29yaXRobScsIHt9LCBvcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZG1pblVwZGF0ZUhvdEZlZWRBbGdvcml0aG0gPSAoXG4gIHBhcmFtczogQWRtaW5VcGRhdGVIb3RGZWVkQWxnb3JpdGhtUmVxdWVzdCxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgcmV0dXJuIGp3dFBvc3QoJ2FwaS92MC9hZG1pbi91cGRhdGUtaG90LWZlZWQtYWxnb3JpdGhtJywgcGFyYW1zLCBvcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZG1pblVwZGF0ZUhvdEZlZWRVc2VyTXVsdGlwbGllciA9IChcbiAgcGFyYW1zOiBBZG1pblVwZGF0ZUhvdEZlZWRVc2VyTXVsdGlwbGllclJlcXVlc3QsXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KFxuICAgICdhcGkvdjAvYWRtaW4vdXBkYXRlLWhvdC1mZWVkLXVzZXItbXVsdGlwbGllcicsXG4gICAgcGFyYW1zLFxuICAgIG9wdGlvbnNcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZG1pblVwZGF0ZUhvdEZlZWRQb3N0TXVsdGlwbGllciA9IChcbiAgcGFyYW1zOiBBZG1pblVwZGF0ZUhvdEZlZWRQb3N0TXVsdGlwbGllclJlcXVlc3QsXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KFxuICAgICdhcGkvdjAvYWRtaW4vdXBkYXRlLWhvdC1mZWVkLXBvc3QtbXVsdGlwbGllcicsXG4gICAgcGFyYW1zLFxuICAgIG9wdGlvbnNcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZG1pbkdldEhvdEZlZWRVc2VyTXVsdGlwbGllciA9IChcbiAgcGFyYW1zOiBBZG1pbkdldEhvdEZlZWRVc2VyTXVsdGlwbGllclJlcXVlc3QsXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxBZG1pbkdldEhvdEZlZWRVc2VyTXVsdGlwbGllclJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KCdhcGkvdjAvYWRtaW4vZ2V0LWhvdC1mZWVkLXVzZXItbXVsdGlwbGllcicsIHBhcmFtcywgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRtaW5HZXRXeXJlV2FsbGV0T3JkZXJzRm9yVXNlciA9IChcbiAgcGFyYW1zOlxuICAgIHwgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgICAgICAgT21pdDxHZXRXeXJlV2FsbGV0T3JkZXJGb3JQdWJsaWNLZXlSZXF1ZXN0LCAnQWRtaW5QdWJsaWNLZXknPixcbiAgICAgICAgJ1B1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgPlxuICAgIHwgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgICAgICAgT21pdDxHZXRXeXJlV2FsbGV0T3JkZXJGb3JQdWJsaWNLZXlSZXF1ZXN0LCAnQWRtaW5QdWJsaWNLZXknPixcbiAgICAgICAgJ1VzZXJuYW1lJ1xuICAgICAgPixcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPEdldFd5cmVXYWxsZXRPcmRlckZvclB1YmxpY0tleVJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KFxuICAgICdhcGkvdjAvYWRtaW4vZ2V0LXd5cmUtd2FsbGV0LW9yZGVycy1mb3ItcHVibGljLWtleScsXG4gICAgcGFyYW1zLFxuICAgIG9wdGlvbnNcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZG1pbkdldFd5cmVXYWxsZXRPcmRlclF1b3RhdGlvbiA9IChcbiAgcGFyYW1zOiBXYWxsZXRPcmRlclF1b3RhdGlvblJlcXVlc3QsXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxXeXJlV2FsbGV0T3JkZXJRdW90YXRpb25QYXlsb2FkPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KFxuICAgICdhcGkvdjAvYWRtaW4vZ2V0LXd5cmUtd2FsbGV0LW9yZGVyLXF1b3RhdGlvbicsXG4gICAgcGFyYW1zLFxuICAgIG9wdGlvbnNcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZG1pbkdldFd5cmVXYWxsZXRPcmRlclJlc2VydmF0aW9uID0gKFxuICBwYXJhbXM6IFdhbGxldE9yZGVyUmVzZXJ2YXRpb25SZXF1ZXN0LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8V3lyZVdhbGxldE9yZGVyUmVzZXJ2YXRpb25QYXlsb2FkPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KFxuICAgICdhcGkvdjAvYWRtaW4vZ2V0LXd5cmUtd2FsbGV0LW9yZGVyLXJlc2VydmF0aW9uJyxcbiAgICBwYXJhbXMsXG4gICAgb3B0aW9uc1xuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2VuZFZlcmlmeUVtYWlsID0gKFxuICBwYXJhbXM6IFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8UmVzZW5kVmVyaWZ5RW1haWxSZXF1ZXN0LCAnUHVibGljS2V5Jz4sXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIHJldHVybiBqd3RQb3N0KCdhcGkvdjAvcmVzZW5kLXZlcmlmeS1lbWFpbCcsIHBhcmFtcywgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgdmVyaWZ5RW1haWwgPSAoXG4gIHBhcmFtczogVmVyaWZ5RW1haWxSZXF1ZXN0LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBlbmRwb2ludCA9ICdhcGkvdjAvdmVyaWZ5LWVtYWlsJztcbiAgcmV0dXJuIGFwaS5wb3N0KFxuICAgIG9wdGlvbnM/Lm5vZGVVUkkgPyBjbGVhblVSTChvcHRpb25zLm5vZGVVUkksIGVuZHBvaW50KSA6IGVuZHBvaW50LFxuICAgIHBhcmFtc1xuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwbG9hZEltYWdlID0gYXN5bmMgKFxuICBwYXJhbXM6IFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgVXBsb2FkSW1hZ2VSZXF1ZXN0LFxuICAgICdmaWxlJyB8ICdVc2VyUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gID4sXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxVcGxvYWRJbWFnZVJlc3BvbnNlPiA9PiB7XG4gIGNvbnN0IEpXVCA9IHBhcmFtcy5KV1QgPz8gKGF3YWl0IGlkZW50aXR5Lmp3dCgpKTtcbiAgY29uc3QgZW5kcG9pbnQgPSAnYXBpL3YwL3VwbG9hZC1pbWFnZSc7XG5cbiAgcmV0dXJuIGFwaS5wb3N0KFxuICAgIG9wdGlvbnM/Lm5vZGVVUkkgPyBjbGVhblVSTChvcHRpb25zLm5vZGVVUkksIGVuZHBvaW50KSA6IGVuZHBvaW50LFxuICAgIHsgSldULCAuLi5wYXJhbXMgfSxcbiAgICB7IGNvbnRlbnRUeXBlOiAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScgfVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwbG9hZFZpZGVvID0gYXN5bmMgKFxuICBwYXJhbXM6IFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgVXBsb2FkVmlkZW9SZXF1ZXN0LFxuICAgICdVc2VyUHVibGljS2V5QmFzZTU4Q2hlY2snIHwgJ2ZpbGUnXG4gID5cbik6IFByb21pc2U8VXBsb2FkVmlkZW9WMlJlc3BvbnNlPiA9PiB7XG4gIGNvbnN0IEpXVCA9IHBhcmFtcy5KV1QgPz8gKGF3YWl0IGlkZW50aXR5Lmp3dCgpKTtcbiAgY29uc3QgZW5kcG9pbnQgPSAnYXBpL3YwL3VwbG9hZC12aWRlbyc7XG4gIHJldHVybiBtZWRpYS5wb3N0KFxuICAgIGVuZHBvaW50LFxuICAgIHsgSldULCAuLi5wYXJhbXMgfSxcbiAgICB7IGNvbnRlbnRUeXBlOiAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScgfVxuICApO1xufTtcbiJdfQ==

@@ -1,4 +0,4 @@

import { AddAccessGroupMembersRequest, AddAccessGroupMembersResponse, ConstructedTransactionResponse, CreateAccessGroupRequest, CreateAccessGroupResponse, RequestOptions, TxRequestWithOptionalFeesAndExtraData } from '../backend-types';
import { PartialWithRequiredFields } from '../data';
import { ConstructedAndSubmittedTx, TxRequestOptions } from '../types';
import { AddAccessGroupMembersRequest, AddAccessGroupMembersResponse, ConstructedTransactionResponse, CreateAccessGroupRequest, CreateAccessGroupResponse, RequestOptions, TxRequestWithOptionalFeesAndExtraData } from '../backend-types/index.js';
import { PartialWithRequiredFields } from '../data/index.js';
import { ConstructedAndSubmittedTx, TxRequestOptions } from '../types.js';
export declare const constructCreateAccessGroupTransaction: (params: CreateAccessGroupRequestParams) => Promise<ConstructedTransactionResponse>;

@@ -5,0 +5,0 @@ /**

@@ -1,13 +0,4 @@

var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { AccessGroupMemberRecord, TransactionExtraData, TransactionMetadataAccessGroup, TransactionMetadataAccessGroupMembers, bs58PublicKeyToCompressedBytes, encodeUTF8ToBytes, } from '../identity';
import { constructBalanceModelTx, convertExtraData, getTxWithFeeNanos, handleSignAndSubmit, sumTransactionFees, } from '../internal';
import { guardTxPermission } from './utils';
import { AccessGroupMemberRecord, TransactionExtraData, TransactionMetadataAccessGroup, TransactionMetadataAccessGroupMembers, bs58PublicKeyToCompressedBytes, encodeUTF8ToBytes, } from '../identity/index.js';
import { constructBalanceModelTx, convertExtraData, getTxWithFeeNanos, handleSignAndSubmit, sumTransactionFees, } from '../internal.js';
import { guardTxPermission } from './utils.js';
const buildAccessGroupMetadata = (params) => {

@@ -28,4 +19,3 @@ const metadata = new TransactionMetadataAccessGroup();

};
export const createAccessGroup = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
var _a, _b;
export const createAccessGroup = async (params, options) => {
const txWithFee = getTxWithFeeNanos(params.AccessGroupOwnerPublicKeyBase58Check, buildAccessGroupMetadata(params), {

@@ -36,4 +26,4 @@ ExtraData: params.ExtraData,

});
if ((options === null || options === void 0 ? void 0 : options.checkPermissions) !== false) {
yield guardTxPermission({
if (options?.checkPermissions !== false) {
await guardTxPermission({
GlobalDESOLimit: txWithFee.feeNanos + sumTransactionFees(params.TransactionFees),

@@ -50,3 +40,3 @@ // NOTE: This is more permissive than we actually need it to be, but I

OperationType: 'Any',
OpCount: (_a = options === null || options === void 0 ? void 0 : options.txLimitCount) !== null && _a !== void 0 ? _a : 1,
OpCount: options?.txLimitCount ?? 1,
},

@@ -60,3 +50,3 @@ ],

OperationType: 'Any',
OpCount: (_b = options === null || options === void 0 ? void 0 : options.txLimitCount) !== null && _b !== void 0 ? _b : 1,
OpCount: options?.txLimitCount ?? 1,
},

@@ -66,6 +56,12 @@ ],

}
return handleSignAndSubmit('api/v0/create-access-group', params, Object.assign(Object.assign({}, options), { constructionFunction: constructCreateAccessGroupTransaction }));
});
return handleSignAndSubmit('api/v0/create-access-group', params, {
...options,
constructionFunction: constructCreateAccessGroupTransaction,
});
};
export const updateAccessGroup = (params, options) => {
return handleSignAndSubmit('api/v0/update-access-group', params, Object.assign(Object.assign({}, options), { constructionFunction: constructUpdateAccessGroupTransaction }));
return handleSignAndSubmit('api/v0/update-access-group', params, {
...options,
constructionFunction: constructUpdateAccessGroupTransaction,
});
};

@@ -87,4 +83,3 @@ export const constructUpdateAccessGroupTransaction = (params) => {

*/
export const addAccessGroupMembers = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
var _c, _d;
export const addAccessGroupMembers = async (params, options) => {
const txWithFee = getTxWithFeeNanos(params.AccessGroupOwnerPublicKeyBase58Check, buildAddAccessGroupMemberMetadata(params), {

@@ -95,4 +90,4 @@ ExtraData: params.ExtraData,

});
if ((options === null || options === void 0 ? void 0 : options.checkPermissions) !== false) {
yield guardTxPermission({
if (options?.checkPermissions !== false) {
await guardTxPermission({
GlobalDESOLimit: txWithFee.feeNanos + sumTransactionFees(params.TransactionFees),

@@ -109,3 +104,3 @@ // NOTE: This is more permissive than we actually need it to be, but I

OperationType: 'Any',
OpCount: (_c = options === null || options === void 0 ? void 0 : options.txLimitCount) !== null && _c !== void 0 ? _c : 1,
OpCount: options?.txLimitCount ?? 1,
},

@@ -119,3 +114,3 @@ ],

OperationType: 'Any',
OpCount: (_d = options === null || options === void 0 ? void 0 : options.txLimitCount) !== null && _d !== void 0 ? _d : 1,
OpCount: options?.txLimitCount ?? 1,
},

@@ -125,4 +120,7 @@ ],

}
return handleSignAndSubmit('api/v0/add-access-group-members', params, Object.assign(Object.assign({}, options), { constructionFunction: constructAddAccessGroupMembersTransaction }));
});
return handleSignAndSubmit('api/v0/add-access-group-members', params, {
...options,
constructionFunction: constructAddAccessGroupMembersTransaction,
});
};
const buildAddAccessGroupMemberMetadata = (params) => {

@@ -154,4 +152,3 @@ const metadata = new TransactionMetadataAccessGroupMembers();

*/
export const removeAccessGroupMembers = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
var _e, _f;
export const removeAccessGroupMembers = async (params, options) => {
const txWithFee = getTxWithFeeNanos(params.AccessGroupOwnerPublicKeyBase58Check, buildRemoveAccessGroupMemberMetadata(params), {

@@ -162,4 +159,4 @@ ExtraData: params.ExtraData,

});
if ((options === null || options === void 0 ? void 0 : options.checkPermissions) !== false) {
yield guardTxPermission({
if (options?.checkPermissions !== false) {
await guardTxPermission({
GlobalDESOLimit: txWithFee.feeNanos + sumTransactionFees(params.TransactionFees),

@@ -176,3 +173,3 @@ // NOTE: This is more permissive than we actually need it to be, but I

OperationType: 'Any',
OpCount: (_e = options === null || options === void 0 ? void 0 : options.txLimitCount) !== null && _e !== void 0 ? _e : 1,
OpCount: options?.txLimitCount ?? 1,
},

@@ -186,3 +183,3 @@ ],

OperationType: 'Any',
OpCount: (_f = options === null || options === void 0 ? void 0 : options.txLimitCount) !== null && _f !== void 0 ? _f : 1,
OpCount: options?.txLimitCount ?? 1,
},

@@ -192,4 +189,7 @@ ],

}
return handleSignAndSubmit('api/v0/remove-access-group-members', params, Object.assign(Object.assign({}, options), { constructionFunction: constructRemoveAccessGroupMembersTransaction }));
});
return handleSignAndSubmit('api/v0/remove-access-group-members', params, {
...options,
constructionFunction: constructRemoveAccessGroupMembersTransaction,
});
};
const buildRemoveAccessGroupMemberMetadata = (params) => {

@@ -221,4 +221,3 @@ const metadata = new TransactionMetadataAccessGroupMembers();

*/
export const updateAccessGroupMembers = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
var _g, _h;
export const updateAccessGroupMembers = async (params, options) => {
const txWithFee = getTxWithFeeNanos(params.AccessGroupOwnerPublicKeyBase58Check, buildUpdateAccessGroupMembersMetadata(params), {

@@ -229,4 +228,4 @@ ExtraData: params.ExtraData,

});
if ((options === null || options === void 0 ? void 0 : options.checkPermissions) !== false) {
yield guardTxPermission({
if (options?.checkPermissions !== false) {
await guardTxPermission({
GlobalDESOLimit: txWithFee.feeNanos + sumTransactionFees(params.TransactionFees),

@@ -243,3 +242,3 @@ // NOTE: This is more permissive than we actually need it to be, but I

OperationType: 'Any',
OpCount: (_g = options === null || options === void 0 ? void 0 : options.txLimitCount) !== null && _g !== void 0 ? _g : 1,
OpCount: options?.txLimitCount ?? 1,
},

@@ -253,3 +252,3 @@ ],

OperationType: 'Any',
OpCount: (_h = options === null || options === void 0 ? void 0 : options.txLimitCount) !== null && _h !== void 0 ? _h : 1,
OpCount: options?.txLimitCount ?? 1,
},

@@ -259,4 +258,7 @@ ],

}
return handleSignAndSubmit('api/v0/update-access-group-members', params, Object.assign(Object.assign({}, options), { constructionFunction: constructUpdateAccessGroupMembersTransaction }));
});
return handleSignAndSubmit('api/v0/update-access-group-members', params, {
...options,
constructionFunction: constructUpdateAccessGroupMembersTransaction,
});
};
const buildUpdateAccessGroupMembersMetadata = (params) => {

@@ -285,2 +287,2 @@ const metadata = new TransactionMetadataAccessGroupMembers();

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWdyb3Vwcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbnMvYWNjZXNzLWdyb3Vwcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFVQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQiw4QkFBOEIsRUFDOUIscUNBQXFDLEVBQ3JDLDhCQUE4QixFQUM5QixpQkFBaUIsR0FDbEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixrQkFBa0IsR0FDbkIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTVDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxNQUFzQyxFQUFFLEVBQUU7SUFDMUUsTUFBTSxRQUFRLEdBQUcsSUFBSSw4QkFBOEIsRUFBRSxDQUFDO0lBQ3RELFFBQVEsQ0FBQyxvQkFBb0IsR0FBRyw4QkFBOEIsQ0FDNUQsTUFBTSxDQUFDLCtCQUErQixDQUN2QyxDQUFDO0lBQ0YsUUFBUSxDQUFDLHlCQUF5QixHQUFHLDhCQUE4QixDQUNqRSxNQUFNLENBQUMsb0NBQW9DLENBQzVDLENBQUM7SUFDRixRQUFRLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsQ0FBQyxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUMzRSxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxDQUNuRCxNQUFzQyxFQUNHLEVBQUU7SUFDM0MsT0FBTyx1QkFBdUIsQ0FDNUIsTUFBTSxDQUFDLG9DQUFvQyxFQUMzQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsRUFDaEM7UUFDRSxTQUFTLEVBQUUs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QThCLENBQzVCLE1BQU0sQ0FBQyxxQ0FBcUMsQ0FDN0MsQ0FBQztRQUNKLG9CQUFvQixDQUFDLHdCQUF3QixHQUFHLGlCQUFpQixDQUMvRCxNQUFNLENBQUMsd0JBQXdCLENBQ2hDLENBQUM7UUFDRixvQkFBb0IsQ0FBQyxZQUFZLEdBQUcsaUJBQWlCLENBQ25ELE1BQU0sQ0FBQyxZQUFZLENBQ3BCLENBQUM7UUFDRixvQkFBb0IsQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BFLE9BQU8sb0JBQW9CLENBQUM7SUFDOUIsQ0FBQyxDQUNGLENBQUM7SUFDRixPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw0Q0FBNEMsR0FBRyxDQUMxRCxNQUEyRSxFQUNsQyxFQUFFO0lBQzNDLE9BQU8sdUJBQXVCLENBQzVCLE1BQU0sQ0FBQyxvQ0FBb0MsRUFDM0MscUNBQXFDLENBQUMsTUFBTSxDQUFDLEVBQzdDO1FBQ0UsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1FBQzNCLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxvQkFBb0I7UUFDakQsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO0tBQ3hDLENBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1JlcXVlc3QsXG4gIEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1Jlc3BvbnNlLFxuICBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2UsXG4gIENyZWF0ZUFjY2Vzc0dyb3VwUmVxdWVzdCxcbiAgQ3JlYXRlQWNjZXNzR3JvdXBSZXNwb25zZSxcbiAgUmVxdWVzdE9wdGlvbnMsXG4gIFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGEsXG59IGZyb20gJy4uL2JhY2tlbmQtdHlwZXMnO1xuaW1wb3J0IHsgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkcyB9IGZyb20gJy4uL2RhdGEnO1xuaW1wb3J0IHtcbiAgQWNjZXNzR3JvdXBNZW1iZXJSZWNvcmQsXG4gIFRyYW5zYWN0aW9uRXh0cmFEYXRhLFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhQWNjZXNzR3JvdXAsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFBY2Nlc3NHcm91cE1lbWJlcnMsXG4gIGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyxcbiAgZW5jb2RlVVRGOFRvQnl0ZXMsXG59IGZyb20gJy4uL2lkZW50aXR5JztcbmltcG9ydCB7XG4gIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4LFxuICBjb252ZXJ0RXh0cmFEYXRhLFxuICBnZXRUeFdpdGhGZWVOYW5vcyxcbiAgaGFuZGxlU2lnbkFuZFN1Ym1pdCxcbiAgc3VtVHJhbnNhY3Rpb25GZWVzLFxufSBmcm9tICcuLi9pbnRlcm5hbCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4LCBUeFJlcXVlc3RPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ3VhcmRUeFBlcm1pc3Npb24gfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgYnVpbGRBY2Nlc3NHcm91cE1ldGFkYXRhID0gKHBhcmFtczogQ3JlYXRlQWNjZXNzR3JvdXBSZXF1ZXN0UGFyYW1zKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFBY2Nlc3NHcm91cCgpO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cFB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuQWNjZXNzR3JvdXBQdWJsaWNLZXlCYXNlNThDaGVja1xuICApO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cE93bmVyUHVibGljS2V5ID0gYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKFxuICAgIHBhcmFtcy5BY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcbiAgbWV0YWRhdGEuYWNjZXNzR3JvdXBPcGVyYXRpb25UeXBlID0gMjtcbiAgbWV0YWRhdGEuYWNjZXNzR3JvdXBLZXlOYW1lID0gZW5jb2RlVVRGOFRvQnl0ZXMocGFyYW1zLkFjY2Vzc0dyb3VwS2V5TmFtZSk7XG4gIHJldHVybiBtZXRhZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RDcmVhdGVBY2Nlc3NHcm91cFRyYW5zYWN0aW9uID0gKFxuICBwYXJhbXM6IENyZWF0ZUFjY2Vzc0dyb3VwUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KFxuICAgIHBhcmFtcy5BY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRBY2Nlc3NHcm91cE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9hY2Nlc3MtZ3JvdXBzLWFwaSNjcmVhdGUtYWNjZXNzLWdyb3VwXG4gKi9cbmV4cG9ydCB0eXBlIENyZWF0ZUFjY2Vzc0dyb3VwUmVxdWVzdFBhcmFtcyA9XG4gIFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8XG4gICAgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgICAgIENyZWF0ZUFjY2Vzc0dyb3VwUmVxdWVzdCxcbiAgICAgIHwgJ0FjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICAgIHwgJ0FjY2Vzc0dyb3VwS2V5TmFtZSdcbiAgICAgIHwgJ0FjY2Vzc0dyb3VwUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgPlxuICA+O1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUFjY2Vzc0dyb3VwID0gYXN5bmMgKFxuICBwYXJhbXM6IENyZWF0ZUFjY2Vzc0dyb3VwUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxDcmVhdGVBY2Nlc3NHcm91cFJlc3BvbnNlPj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQWNjZXNzR3JvdXBNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xuXG4gIGlmIChvcHRpb25zPy5jaGVja1Blcm1pc3Npb25zICE9PSBmYWxzZSkge1xuICAgIGF3YWl0IGd1YXJkVHhQZXJtaXNzaW9uKHtcbiAgICAgIEdsb2JhbERFU09MaW1pdDpcbiAgICAgICAgdHhXaXRoRmVlLmZlZU5hbm9zICsgc3VtVHJhbnNhY3Rpb25GZWVzKHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMpLFxuICAgICAgLy8gTk9URTogVGhpcyBpcyBtb3JlIHBlcm1pc3NpdmUgdGhhbiB3ZSBhY3R1YWxseSBuZWVkIGl0IHRvIGJlLCBidXQgSVxuICAgICAgLy8gY291bGRuJ3QgZ2V0IGl0IHRvIHdvcmsgd2hlbiBzcGVjaWZ5aW5nIHRoZSBBY2Nlc3NHcm91cEtleU5hbWUgYW5kXG4gICAgICAvLyBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2suIElmIGFueW9uZSBjb21wbGFpbnMsIHdlIGNhblxuICAgICAgLy8gcmV2aXNpdCBpdCwgYnV0IHRoaXMgaXMgbm90IGEgdGVycmlibHkgc2Vuc2l0aXZlIHBlcm1pc3Npb24gdG8gZ3JhbnQuXG4gICAgICBBY2Nlc3NHcm91cExpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2s6ICcnLFxuICAgICAgICAgIFNjb3BlVHlwZTogJ0FueScsXG4gICAgICAgICAgQWNjZXNzR3JvdXBLZXlOYW1lOiAnJyxcbiAgICAgICAgICBPcGVyYXRpb25UeXBlOiAnQW55JyxcbiAgICAgICAgICBPcENvdW50OiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBBY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2s6ICcnLFxuICAgICAgICAgIFNjb3BlVHlwZTogJ0FueScsXG4gICAgICAgICAgQWNjZXNzR3JvdXBLZXlOYW1lOiAnJyxcbiAgICAgICAgICBPcGVyYXRpb25UeXBlOiAnQW55JyxcbiAgICAgICAgICBPcENvdW50OiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL2NyZWF0ZS1hY2Nlc3MtZ3JvdXAnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RDcmVhdGVBY2Nlc3NHcm91cFRyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9jb25zdHJ1Y3QtdHJhbnNhY3Rpb25zL2FjY2Vzcy1ncm91cHMtYXBpI3VwZGF0ZS1hY2Nlc3MtZ3JvdXBcbiAqL1xuZXhwb3J0IHR5cGUgVXBkYXRlQWNjZXNzR3JvdXBSZXF1ZXN0UGFyYW1zID1cbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgICBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgICAgQ3JlYXRlQWNjZXNzR3JvdXBSZXF1ZXN0LFxuICAgICAgfCAnQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnQWNjZXNzR3JvdXBLZXlOYW1lJ1xuICAgICAgfCAnQWNjZXNzR3JvdXBQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICA+XG4gID47XG5leHBvcnQgY29uc3QgdXBkYXRlQWNjZXNzR3JvdXAgPSAoXG4gIHBhcmFtczogVXBkYXRlQWNjZXNzR3JvdXBSZXF1ZXN0UGFyYW1zLFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxDcmVhdGVBY2Nlc3NHcm91cFJlc3BvbnNlPj4gPT4ge1xuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL3VwZGF0ZS1hY2Nlc3MtZ3JvdXAnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RVcGRhdGVBY2Nlc3NHcm91cFRyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RVcGRhdGVBY2Nlc3NHcm91cFRyYW5zYWN0aW9uID0gKFxuICBwYXJhbXM6IFVwZGF0ZUFjY2Vzc0dyb3VwUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YUFjY2Vzc0dyb3VwKCk7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwUHVibGljS2V5ID0gYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKFxuICAgIHBhcmFtcy5BY2Nlc3NHcm91cFB1YmxpY0tleUJhc2U1OENoZWNrXG4gICk7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLkFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVja1xuICApO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cE9wZXJhdGlvblR5cGUgPSAzO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cEtleU5hbWUgPSBlbmNvZGVVVEY4VG9CeXRlcyhwYXJhbXMuQWNjZXNzR3JvdXBLZXlOYW1lKTtcbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KFxuICAgIHBhcmFtcy5BY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgbWV0YWRhdGEsXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9hY2Nlc3MtZ3JvdXBzLWFwaSNhZGQtYWNjZXNzLWdyb3VwLW1lbWJlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZEFjY2Vzc0dyb3VwTWVtYmVycyA9IGFzeW5jIChcbiAgcGFyYW1zOiBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1JlcXVlc3Q+LFxuICBvcHRpb25zPzogVHhSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1Jlc3BvbnNlPj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQWRkQWNjZXNzR3JvdXBNZW1iZXJNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xuXG4gIGlmIChvcHRpb25zPy5jaGVja1Blcm1pc3Npb25zICE9PSBmYWxzZSkge1xuICAgIGF3YWl0IGd1YXJkVHhQZXJtaXNzaW9uKHtcbiAgICAgIEdsb2JhbERFU09MaW1pdDpcbiAgICAgICAgdHhXaXRoRmVlLmZlZU5hbm9zICsgc3VtVHJhbnNhY3Rpb25GZWVzKHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMpLFxuICAgICAgLy8gTk9URTogVGhpcyBpcyBtb3JlIHBlcm1pc3NpdmUgdGhhbiB3ZSBhY3R1YWxseSBuZWVkIGl0IHRvIGJlLCBidXQgSVxuICAgICAgLy8gY291bGRuJ3QgZ2V0IGl0IHRvIHdvcmsgd2hlbiBzcGVjaWZ5aW5nIHRoZSBBY2Nlc3NHcm91cEtleU5hbWUgYW5kXG4gICAgICAvLyBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2suIElmIGFueW9uZSBjb21wbGFpbnMsIHdlIGNhblxuICAgICAgLy8gcmV2aXNpdCBpdCwgYnV0IHRoaXMgaXMgbm90IGEgdGVycmlibHkgc2Vuc2l0aXZlIHBlcm1pc3Npb24gdG8gZ3JhbnQuXG4gICAgICBBY2Nlc3NHcm91cExpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2s6ICcnLFxuICAgICAgICAgIFNjb3BlVHlwZTogJ0FueScsXG4gICAgICAgICAgQWNjZXNzR3JvdXBLZXlOYW1lOiAnJyxcbiAgICAgICAgICBPcGVyYXRpb25UeXBlOiAnQW55JyxcbiAgICAgICAgICBPcENvdW50OiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBBY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2s6ICcnLFxuICAgICAgICAgIFNjb3BlVHlwZTogJ0FueScsXG4gICAgICAgICAgQWNjZXNzR3JvdXBLZXlOYW1lOiAnJyxcbiAgICAgICAgICBPcGVyYXRpb25UeXBlOiAnQW55JyxcbiAgICAgICAgICBPcENvdW50OiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL2FkZC1hY2Nlc3MtZ3JvdXAtbWVtYmVycycsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1RyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkQWRkQWNjZXNzR3JvdXBNZW1iZXJNZXRhZGF0YSA9IChcbiAgcGFyYW1zOiBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1JlcXVlc3Q+XG4pID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YUFjY2Vzc0dyb3VwTWVtYmVycygpO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cE93bmVyUHVibGljS2V5ID0gYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKFxuICAgIHBhcmFtcy5BY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcbiAgbWV0YWRhdGEuYWNjZXNzR3JvdXBNZW1iZXJPcGVyYXRpb25UeXBlID0gMjtcbiAgbWV0YWRhdGEuYWNjZXNzR3JvdXBLZXlOYW1lID0gZW5jb2RlVVRGOFRvQnl0ZXMocGFyYW1zLkFjY2Vzc0dyb3VwS2V5TmFtZSk7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwTWVtYmVyc0xpc3QgPSBwYXJhbXMuQWNjZXNzR3JvdXBNZW1iZXJMaXN0Lm1hcChcbiAgICAobWVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBuZXdBY2Nlc3NHcm91cE1lbWJlciA9IG5ldyBBY2Nlc3NHcm91cE1lbWJlclJlY29yZCgpO1xuICAgICAgbmV3QWNjZXNzR3JvdXBNZW1iZXIuYWNjZXNzR3JvdXBNZW1iZXJQdWJsaWNLZXkgPVxuICAgICAgICBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgICAgICAgbWVtYmVyLkFjY2Vzc0dyb3VwTWVtYmVyUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgICAgICAgKTtcbiAgICAgIG5ld0FjY2Vzc0dyb3VwTWVtYmVyLmFjY2Vzc0dyb3VwTWVtYmVyS2V5TmFtZSA9IGVuY29kZVVURjhUb0J5dGVzKFxuICAgICAgICBtZW1iZXIuQWNjZXNzR3JvdXBNZW1iZXJLZXlOYW1lXG4gICAgICApO1xuICAgICAgbmV3QWNjZXNzR3JvdXBNZW1iZXIuZW5jcnlwdGVkS2V5ID0gZW5jb2RlVVRGOFRvQnl0ZXMoXG4gICAgICAgIG1lbWJlci5FbmNyeXB0ZWRLZXlcbiAgICAgICk7XG4gICAgICBuZXdBY2Nlc3NHcm91cE1lbWJlci5leHRyYURhdGEgPSBjb252ZXJ0RXh0cmFEYXRhKG1lbWJlci5FeHRyYURhdGEpO1xuICAgICAgcmV0dXJuIG5ld0FjY2Vzc0dyb3VwTWVtYmVyO1xuICAgIH1cbiAgKTtcbiAgcmV0dXJuIG1ldGFkYXRhO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1RyYW5zYWN0aW9uID0gKFxuICBwYXJhbXM6IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8QWRkQWNjZXNzR3JvdXBNZW1iZXJzUmVxdWVzdD5cbik6IFByb21pc2U8Q29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChcbiAgICBwYXJhbXMuQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQWRkQWNjZXNzR3JvdXBNZW1iZXJNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvYWNjZXNzLWdyb3Vwcy1hcGkjcmVtb3ZlLWFjY2Vzcy1ncm91cC1tZW1iZXJzXG4gKi9cbmV4cG9ydCBjb25zdCByZW1vdmVBY2Nlc3NHcm91cE1lbWJlcnMgPSBhc3luYyAoXG4gIHBhcmFtczogVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxBZGRBY2Nlc3NHcm91cE1lbWJlcnNSZXF1ZXN0PixcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxBZGRBY2Nlc3NHcm91cE1lbWJlcnNSZXNwb25zZT4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLkFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZFJlbW92ZUFjY2Vzc0dyb3VwTWVtYmVyTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIC8vIE5PVEU6IFRoaXMgaXMgbW9yZSBwZXJtaXNzaXZlIHRoYW4gd2UgYWN0dWFsbHkgbmVlZCBpdCB0byBiZSwgYnV0IElcbiAgICAgIC8vIGNvdWxkbid0IGdldCBpdCB0byB3b3JrIHdoZW4gc3BlY2lmeWluZyB0aGUgQWNjZXNzR3JvdXBLZXlOYW1lIGFuZFxuICAgICAgLy8gQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrLiBJZiBhbnlvbmUgY29tcGxhaW5zLCB3ZSBjYW5cbiAgICAgIC8vIHJldmlzaXQgaXQsIGJ1dCB0aGlzIGlzIG5vdCBhIHRlcnJpYmx5IHNlbnNpdGl2ZSBwZXJtaXNzaW9uIHRvIGdyYW50LlxuICAgICAgQWNjZXNzR3JvdXBMaW1pdE1hcDogW1xuICAgICAgICB7XG4gICAgICAgICAgQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrOiAnJyxcbiAgICAgICAgICBTY29wZVR5cGU6ICdBbnknLFxuICAgICAgICAgIEFjY2Vzc0dyb3VwS2V5TmFtZTogJycsXG4gICAgICAgICAgT3BlcmF0aW9uVHlwZTogJ0FueScsXG4gICAgICAgICAgT3BDb3VudDogb3B0aW9ucz8udHhMaW1pdENvdW50ID8/IDEsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgQWNjZXNzR3JvdXBNZW1iZXJMaW1pdE1hcDogW1xuICAgICAgICB7XG4gICAgICAgICAgQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrOiAnJyxcbiAgICAgICAgICBTY29wZVR5cGU6ICdBbnknLFxuICAgICAgICAgIEFjY2Vzc0dyb3VwS2V5TmFtZTogJycsXG4gICAgICAgICAgT3BlcmF0aW9uVHlwZTogJ0FueScsXG4gICAgICAgICAgT3BDb3VudDogb3B0aW9ucz8udHhMaW1pdENvdW50ID8/IDEsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvcmVtb3ZlLWFjY2Vzcy1ncm91cC1tZW1iZXJzJywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0UmVtb3ZlQWNjZXNzR3JvdXBNZW1iZXJzVHJhbnNhY3Rpb24sXG4gIH0pO1xufTtcblxuY29uc3QgYnVpbGRSZW1vdmVBY2Nlc3NHcm91cE1lbWJlck1ldGFkYXRhID0gKFxuICBwYXJhbXM6IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8QWRkQWNjZXNzR3JvdXBNZW1iZXJzUmVxdWVzdD5cbikgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhQWNjZXNzR3JvdXBNZW1iZXJzKCk7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLkFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVja1xuICApO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cE1lbWJlck9wZXJhdGlvblR5cGUgPSAzO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cEtleU5hbWUgPSBlbmNvZGVVVEY4VG9CeXRlcyhwYXJhbXMuQWNjZXNzR3JvdXBLZXlOYW1lKTtcbiAgbWV0YWRhdGEuYWNjZXNzR3JvdXBNZW1iZXJzTGlzdCA9IHBhcmFtcy5BY2Nlc3NHcm91cE1lbWJlckxpc3QubWFwKFxuICAgIChtZW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IG5ld0FjY2Vzc0dyb3VwTWVtYmVyID0gbmV3IEFjY2Vzc0dyb3VwTWVtYmVyUmVjb3JkKCk7XG4gICAgICBuZXdBY2Nlc3NHcm91cE1lbWJlci5hY2Nlc3NHcm91cE1lbWJlclB1YmxpY0tleSA9XG4gICAgICAgIGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICAgICAgICBtZW1iZXIuQWNjZXNzR3JvdXBNZW1iZXJQdWJsaWNLZXlCYXNlNThDaGVja1xuICAgICAgICApO1xuICAgICAgbmV3QWNjZXNzR3JvdXBNZW1iZXIuYWNjZXNzR3JvdXBNZW1iZXJLZXlOYW1lID0gZW5jb2RlVVRGOFRvQnl0ZXMoXG4gICAgICAgIHBhcmFtcy5BY2Nlc3NHcm91cEtleU5hbWVcbiAgICAgICk7XG4gICAgICBuZXdBY2Nlc3NHcm91cE1lbWJlci5lbmNyeXB0ZWRLZXkgPSBuZXcgVWludDhBcnJheSgwKTtcbiAgICAgIG5ld0FjY2Vzc0dyb3VwTWVtYmVyLmV4dHJhRGF0YSA9IG5ldyBUcmFuc2FjdGlvbkV4dHJhRGF0YSgpO1xuICAgICAgcmV0dXJuIG5ld0FjY2Vzc0dyb3VwTWVtYmVyO1xuICAgIH1cbiAgKTtcbiAgcmV0dXJuIG1ldGFkYXRhO1xufTtcbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RSZW1vdmVBY2Nlc3NHcm91cE1lbWJlcnNUcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1JlcXVlc3Q+XG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLkFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZFJlbW92ZUFjY2Vzc0dyb3VwTWVtYmVyTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9jb25zdHJ1Y3QtdHJhbnNhY3Rpb25zL2FjY2Vzcy1ncm91cHMtYXBpI3VwZGF0ZS1hY2Nlc3MtZ3JvdXAtbWVtYmVyc1xuICovXG5leHBvcnQgY29uc3QgdXBkYXRlQWNjZXNzR3JvdXBNZW1iZXJzID0gYXN5bmMgKFxuICBwYXJhbXM6IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8QWRkQWNjZXNzR3JvdXBNZW1iZXJzUmVxdWVzdD4sXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8QWRkQWNjZXNzR3JvdXBNZW1iZXJzUmVzcG9uc2U+PiA9PiB7XG4gIGNvbnN0IHR4V2l0aEZlZSA9IGdldFR4V2l0aEZlZU5hbm9zKFxuICAgIHBhcmFtcy5BY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRVcGRhdGVBY2Nlc3NHcm91cE1lbWJlcnNNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xuXG4gIGlmIChvcHRpb25zPy5jaGVja1Blcm1pc3Npb25zICE9PSBmYWxzZSkge1xuICAgIGF3YWl0IGd1YXJkVHhQZXJtaXNzaW9uKHtcbiAgICAgIEdsb2JhbERFU09MaW1pdDpcbiAgICAgICAgdHhXaXRoRmVlLmZlZU5hbm9zICsgc3VtVHJhbnNhY3Rpb25GZWVzKHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMpLFxuICAgICAgLy8gTk9URTogVGhpcyBpcyBtb3JlIHBlcm1pc3NpdmUgdGhhbiB3ZSBhY3R1YWxseSBuZWVkIGl0IHRvIGJlLCBidXQgSVxuICAgICAgLy8gY291bGRuJ3QgZ2V0IGl0IHRvIHdvcmsgd2hlbiBzcGVjaWZ5aW5nIHRoZSBBY2Nlc3NHcm91cEtleU5hbWUgYW5kXG4gICAgICAvLyBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2suIElmIGFueW9uZSBjb21wbGFpbnMsIHdlIGNhblxuICAgICAgLy8gcmV2aXNpdCBpdCwgYnV0IHRoaXMgaXMgbm90IGEgdGVycmlibHkgc2Vuc2l0aXZlIHBlcm1pc3Npb24gdG8gZ3JhbnQuXG4gICAgICBBY2Nlc3NHcm91cExpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2s6ICcnLFxuICAgICAgICAgIFNjb3BlVHlwZTogJ0FueScsXG4gICAgICAgICAgQWNjZXNzR3JvdXBLZXlOYW1lOiAnJyxcbiAgICAgICAgICBPcGVyYXRpb25UeXBlOiAnQW55JyxcbiAgICAgICAgICBPcENvdW50OiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBBY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2s6ICcnLFxuICAgICAgICAgIFNjb3BlVHlwZTogJ0FueScsXG4gICAgICAgICAgQWNjZXNzR3JvdXBLZXlOYW1lOiAnJyxcbiAgICAgICAgICBPcGVyYXRpb25UeXBlOiAnQW55JyxcbiAgICAgICAgICBPcENvdW50OiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL3VwZGF0ZS1hY2Nlc3MtZ3JvdXAtbWVtYmVycycsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdFVwZGF0ZUFjY2Vzc0dyb3VwTWVtYmVyc1RyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkVXBkYXRlQWNjZXNzR3JvdXBNZW1iZXJzTWV0YWRhdGEgPSAoXG4gIHBhcmFtczogVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxBZGRBY2Nlc3NHcm91cE1lbWJlcnNSZXF1ZXN0PlxuKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFBY2Nlc3NHcm91cE1lbWJlcnMoKTtcbiAgbWV0YWRhdGEuYWNjZXNzR3JvdXBPd25lclB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrXG4gICk7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwTWVtYmVyT3BlcmF0aW9uVHlwZSA9IDQ7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwS2V5TmFtZSA9IGVuY29kZVVURjhUb0J5dGVzKHBhcmFtcy5BY2Nlc3NHcm91cEtleU5hbWUpO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cE1lbWJlcnNMaXN0ID0gcGFyYW1zLkFjY2Vzc0dyb3VwTWVtYmVyTGlzdC5tYXAoXG4gICAgKG1lbWJlcikgPT4ge1xuICAgICAgY29uc3QgbmV3QWNjZXNzR3JvdXBNZW1iZXIgPSBuZXcgQWNjZXNzR3JvdXBNZW1iZXJSZWNvcmQoKTtcbiAgICAgIG5ld0FjY2Vzc0dyb3VwTWVtYmVyLmFjY2Vzc0dyb3VwTWVtYmVyUHVibGljS2V5ID1cbiAgICAgICAgYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKFxuICAgICAgICAgIG1lbWJlci5BY2Nlc3NHcm91cE1lbWJlclB1YmxpY0tleUJhc2U1OENoZWNrXG4gICAgICAgICk7XG4gICAgICBuZXdBY2Nlc3NHcm91cE1lbWJlci5hY2Nlc3NHcm91cE1lbWJlcktleU5hbWUgPSBlbmNvZGVVVEY4VG9CeXRlcyhcbiAgICAgICAgbWVtYmVyLkFjY2Vzc0dyb3VwTWVtYmVyS2V5TmFtZVxuICAgICAgKTtcbiAgICAgIG5ld0FjY2Vzc0dyb3VwTWVtYmVyLmVuY3J5cHRlZEtleSA9IGVuY29kZVVURjhUb0J5dGVzKFxuICAgICAgICBtZW1iZXIuRW5jcnlwdGVkS2V5XG4gICAgICApO1xuICAgICAgbmV3QWNjZXNzR3JvdXBNZW1iZXIuZXh0cmFEYXRhID0gY29udmVydEV4dHJhRGF0YShtZW1iZXIuRXh0cmFEYXRhKTtcbiAgICAgIHJldHVybiBuZXdBY2Nlc3NHcm91cE1lbWJlcjtcbiAgICB9XG4gICk7XG4gIHJldHVybiBtZXRhZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RVcGRhdGVBY2Nlc3NHcm91cE1lbWJlcnNUcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1JlcXVlc3Q+XG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLkFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZFVwZGF0ZUFjY2Vzc0dyb3VwTWVtYmVyc01ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWdyb3Vwcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbnMvYWNjZXNzLWdyb3Vwcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQiw4QkFBOEIsRUFDOUIscUNBQXFDLEVBQ3JDLDhCQUE4QixFQUM5QixpQkFBaUIsR0FDbEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLGtCQUFrQixHQUNuQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUvQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsTUFBc0MsRUFBRSxFQUFFO0lBQzFFLE1BQU0sUUFBUSxHQUFHLElBQUksOEJBQThCLEVBQUUsQ0FBQztJQUN0RCxRQUFRLENBQUMsb0JBQW9CLEdBQUcsOEJBQThCLENBQzVELE1BQU0sQ0FBQywrQkFBK0IsQ0FDdkMsQ0FBQztJQUNGLFFBQVEsQ0FBQyx5QkFBeUIsR0FBRyw4QkFBOEIsQ0FDakUsTUFBTSxDQUFDLG9DQUFvQyxDQUM1QyxDQUFDO0lBQ0YsUUFBUSxDQUFDLHdCQUF3QixHQUFHLENBQUMsQ0FBQztJQUN0QyxRQUFRLENBQUMsa0JBQWtCLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDM0UsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsQ0FDbkQsTUFBc0MsRUFDRyxFQUFFO0lBQzNDLE9BQU8sdUJBQXVCLENBQzVCLE1BQU0sQ0FBQyxvQ0FBb0MsRUFDM0Msd0JBQXdCLENBQUMsTUFBTSxDQUFDLEVBQ2hDO1FBQ0UsU0FBUyxFQUFFLE1BQU0s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QztJQUM5QixDQUFDLENBQ0YsQ0FBQztJQUNGLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDRDQUE0QyxHQUFHLENBQzFELE1BQTJFLEVBQ2xDLEVBQUU7SUFDM0MsT0FBTyx1QkFBdUIsQ0FDNUIsTUFBTSxDQUFDLG9DQUFvQyxFQUMzQyxxQ0FBcUMsQ0FBQyxNQUFNLENBQUMsRUFDN0M7UUFDRSxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDM0Isb0JBQW9CLEVBQUUsTUFBTSxDQUFDLG9CQUFvQjtRQUNqRCxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7S0FDeEMsQ0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWRkQWNjZXNzR3JvdXBNZW1iZXJzUmVxdWVzdCxcbiAgQWRkQWNjZXNzR3JvdXBNZW1iZXJzUmVzcG9uc2UsXG4gIENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZSxcbiAgQ3JlYXRlQWNjZXNzR3JvdXBSZXF1ZXN0LFxuICBDcmVhdGVBY2Nlc3NHcm91cFJlc3BvbnNlLFxuICBSZXF1ZXN0T3B0aW9ucyxcbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YSxcbn0gZnJvbSAnLi4vYmFja2VuZC10eXBlcy9pbmRleC5qcyc7XG5pbXBvcnQgeyBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzIH0gZnJvbSAnLi4vZGF0YS9pbmRleC5qcyc7XG5pbXBvcnQge1xuICBBY2Nlc3NHcm91cE1lbWJlclJlY29yZCxcbiAgVHJhbnNhY3Rpb25FeHRyYURhdGEsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFBY2Nlc3NHcm91cCxcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YUFjY2Vzc0dyb3VwTWVtYmVycyxcbiAgYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzLFxuICBlbmNvZGVVVEY4VG9CeXRlcyxcbn0gZnJvbSAnLi4vaWRlbnRpdHkvaW5kZXguanMnO1xuaW1wb3J0IHtcbiAgY29uc3RydWN0QmFsYW5jZU1vZGVsVHgsXG4gIGNvbnZlcnRFeHRyYURhdGEsXG4gIGdldFR4V2l0aEZlZU5hbm9zLFxuICBoYW5kbGVTaWduQW5kU3VibWl0LFxuICBzdW1UcmFuc2FjdGlvbkZlZXMsXG59IGZyb20gJy4uL2ludGVybmFsLmpzJztcbmltcG9ydCB7IENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHgsIFR4UmVxdWVzdE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5pbXBvcnQgeyBndWFyZFR4UGVybWlzc2lvbiB9IGZyb20gJy4vdXRpbHMuanMnO1xuXG5jb25zdCBidWlsZEFjY2Vzc0dyb3VwTWV0YWRhdGEgPSAocGFyYW1zOiBDcmVhdGVBY2Nlc3NHcm91cFJlcXVlc3RQYXJhbXMpID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YUFjY2Vzc0dyb3VwKCk7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwUHVibGljS2V5ID0gYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKFxuICAgIHBhcmFtcy5BY2Nlc3NHcm91cFB1YmxpY0tleUJhc2U1OENoZWNrXG4gICk7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLkFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVja1xuICApO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cE9wZXJhdGlvblR5cGUgPSAyO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cEtleU5hbWUgPSBlbmNvZGVVVEY4VG9CeXRlcyhwYXJhbXMuQWNjZXNzR3JvdXBLZXlOYW1lKTtcbiAgcmV0dXJuIG1ldGFkYXRhO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdENyZWF0ZUFjY2Vzc0dyb3VwVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogQ3JlYXRlQWNjZXNzR3JvdXBSZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLkFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZEFjY2Vzc0dyb3VwTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9jb25zdHJ1Y3QtdHJhbnNhY3Rpb25zL2FjY2Vzcy1ncm91cHMtYXBpI2NyZWF0ZS1hY2Nlc3MtZ3JvdXBcbiAqL1xuZXhwb3J0IHR5cGUgQ3JlYXRlQWNjZXNzR3JvdXBSZXF1ZXN0UGFyYW1zID1cbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgICBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgICAgQ3JlYXRlQWNjZXNzR3JvdXBSZXF1ZXN0LFxuICAgICAgfCAnQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnQWNjZXNzR3JvdXBLZXlOYW1lJ1xuICAgICAgfCAnQWNjZXNzR3JvdXBQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICA+XG4gID47XG5leHBvcnQgY29uc3QgY3JlYXRlQWNjZXNzR3JvdXAgPSBhc3luYyAoXG4gIHBhcmFtczogQ3JlYXRlQWNjZXNzR3JvdXBSZXF1ZXN0UGFyYW1zLFxuICBvcHRpb25zPzogVHhSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PENyZWF0ZUFjY2Vzc0dyb3VwUmVzcG9uc2U+PiA9PiB7XG4gIGNvbnN0IHR4V2l0aEZlZSA9IGdldFR4V2l0aEZlZU5hbm9zKFxuICAgIHBhcmFtcy5BY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRBY2Nlc3NHcm91cE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgKyBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICAvLyBOT1RFOiBUaGlzIGlzIG1vcmUgcGVybWlzc2l2ZSB0aGFuIHdlIGFjdHVhbGx5IG5lZWQgaXQgdG8gYmUsIGJ1dCBJXG4gICAgICAvLyBjb3VsZG4ndCBnZXQgaXQgdG8gd29yayB3aGVuIHNwZWNpZnlpbmcgdGhlIEFjY2Vzc0dyb3VwS2V5TmFtZSBhbmRcbiAgICAgIC8vIEFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjay4gSWYgYW55b25lIGNvbXBsYWlucywgd2UgY2FuXG4gICAgICAvLyByZXZpc2l0IGl0LCBidXQgdGhpcyBpcyBub3QgYSB0ZXJyaWJseSBzZW5zaXRpdmUgcGVybWlzc2lvbiB0byBncmFudC5cbiAgICAgIEFjY2Vzc0dyb3VwTGltaXRNYXA6IFtcbiAgICAgICAge1xuICAgICAgICAgIEFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjazogJycsXG4gICAgICAgICAgU2NvcGVUeXBlOiAnQW55JyxcbiAgICAgICAgICBBY2Nlc3NHcm91cEtleU5hbWU6ICcnLFxuICAgICAgICAgIE9wZXJhdGlvblR5cGU6ICdBbnknLFxuICAgICAgICAgIE9wQ291bnQ6IG9wdGlvbnM/LnR4TGltaXRDb3VudCA/PyAxLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIEFjY2Vzc0dyb3VwTWVtYmVyTGltaXRNYXA6IFtcbiAgICAgICAge1xuICAgICAgICAgIEFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjazogJycsXG4gICAgICAgICAgU2NvcGVUeXBlOiAnQW55JyxcbiAgICAgICAgICBBY2Nlc3NHcm91cEtleU5hbWU6ICcnLFxuICAgICAgICAgIE9wZXJhdGlvblR5cGU6ICdBbnknLFxuICAgICAgICAgIE9wQ291bnQ6IG9wdGlvbnM/LnR4TGltaXRDb3VudCA/PyAxLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvY3JlYXRlLWFjY2Vzcy1ncm91cCcsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdENyZWF0ZUFjY2Vzc0dyb3VwVHJhbnNhY3Rpb24sXG4gIH0pO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvYWNjZXNzLWdyb3Vwcy1hcGkjdXBkYXRlLWFjY2Vzcy1ncm91cFxuICovXG5leHBvcnQgdHlwZSBVcGRhdGVBY2Nlc3NHcm91cFJlcXVlc3RQYXJhbXMgPVxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICAgIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgICBDcmVhdGVBY2Nlc3NHcm91cFJlcXVlc3QsXG4gICAgICB8ICdBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgICB8ICdBY2Nlc3NHcm91cEtleU5hbWUnXG4gICAgICB8ICdBY2Nlc3NHcm91cFB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgID5cbiAgPjtcbmV4cG9ydCBjb25zdCB1cGRhdGVBY2Nlc3NHcm91cCA9IChcbiAgcGFyYW1zOiBVcGRhdGVBY2Nlc3NHcm91cFJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PENyZWF0ZUFjY2Vzc0dyb3VwUmVzcG9uc2U+PiA9PiB7XG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvdXBkYXRlLWFjY2Vzcy1ncm91cCcsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdFVwZGF0ZUFjY2Vzc0dyb3VwVHJhbnNhY3Rpb24sXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdFVwZGF0ZUFjY2Vzc0dyb3VwVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogVXBkYXRlQWNjZXNzR3JvdXBSZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhQWNjZXNzR3JvdXAoKTtcbiAgbWV0YWRhdGEuYWNjZXNzR3JvdXBQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLkFjY2Vzc0dyb3VwUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcbiAgbWV0YWRhdGEuYWNjZXNzR3JvdXBPd25lclB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrXG4gICk7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwT3BlcmF0aW9uVHlwZSA9IDM7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwS2V5TmFtZSA9IGVuY29kZVVURjhUb0J5dGVzKHBhcmFtcy5BY2Nlc3NHcm91cEtleU5hbWUpO1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLkFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBtZXRhZGF0YSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9jb25zdHJ1Y3QtdHJhbnNhY3Rpb25zL2FjY2Vzcy1ncm91cHMtYXBpI2FkZC1hY2Nlc3MtZ3JvdXAtbWVtYmVyc1xuICovXG5leHBvcnQgY29uc3QgYWRkQWNjZXNzR3JvdXBNZW1iZXJzID0gYXN5bmMgKFxuICBwYXJhbXM6IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8QWRkQWNjZXNzR3JvdXBNZW1iZXJzUmVxdWVzdD4sXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8QWRkQWNjZXNzR3JvdXBNZW1iZXJzUmVzcG9uc2U+PiA9PiB7XG4gIGNvbnN0IHR4V2l0aEZlZSA9IGdldFR4V2l0aEZlZU5hbm9zKFxuICAgIHBhcmFtcy5BY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRBZGRBY2Nlc3NHcm91cE1lbWJlck1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgKyBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICAvLyBOT1RFOiBUaGlzIGlzIG1vcmUgcGVybWlzc2l2ZSB0aGFuIHdlIGFjdHVhbGx5IG5lZWQgaXQgdG8gYmUsIGJ1dCBJXG4gICAgICAvLyBjb3VsZG4ndCBnZXQgaXQgdG8gd29yayB3aGVuIHNwZWNpZnlpbmcgdGhlIEFjY2Vzc0dyb3VwS2V5TmFtZSBhbmRcbiAgICAgIC8vIEFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjay4gSWYgYW55b25lIGNvbXBsYWlucywgd2UgY2FuXG4gICAgICAvLyByZXZpc2l0IGl0LCBidXQgdGhpcyBpcyBub3QgYSB0ZXJyaWJseSBzZW5zaXRpdmUgcGVybWlzc2lvbiB0byBncmFudC5cbiAgICAgIEFjY2Vzc0dyb3VwTGltaXRNYXA6IFtcbiAgICAgICAge1xuICAgICAgICAgIEFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjazogJycsXG4gICAgICAgICAgU2NvcGVUeXBlOiAnQW55JyxcbiAgICAgICAgICBBY2Nlc3NHcm91cEtleU5hbWU6ICcnLFxuICAgICAgICAgIE9wZXJhdGlvblR5cGU6ICdBbnknLFxuICAgICAgICAgIE9wQ291bnQ6IG9wdGlvbnM/LnR4TGltaXRDb3VudCA/PyAxLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIEFjY2Vzc0dyb3VwTWVtYmVyTGltaXRNYXA6IFtcbiAgICAgICAge1xuICAgICAgICAgIEFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjazogJycsXG4gICAgICAgICAgU2NvcGVUeXBlOiAnQW55JyxcbiAgICAgICAgICBBY2Nlc3NHcm91cEtleU5hbWU6ICcnLFxuICAgICAgICAgIE9wZXJhdGlvblR5cGU6ICdBbnknLFxuICAgICAgICAgIE9wQ291bnQ6IG9wdGlvbnM/LnR4TGltaXRDb3VudCA/PyAxLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvYWRkLWFjY2Vzcy1ncm91cC1tZW1iZXJzJywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0QWRkQWNjZXNzR3JvdXBNZW1iZXJzVHJhbnNhY3Rpb24sXG4gIH0pO1xufTtcblxuY29uc3QgYnVpbGRBZGRBY2Nlc3NHcm91cE1lbWJlck1ldGFkYXRhID0gKFxuICBwYXJhbXM6IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8QWRkQWNjZXNzR3JvdXBNZW1iZXJzUmVxdWVzdD5cbikgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhQWNjZXNzR3JvdXBNZW1iZXJzKCk7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLkFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVja1xuICApO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cE1lbWJlck9wZXJhdGlvblR5cGUgPSAyO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cEtleU5hbWUgPSBlbmNvZGVVVEY4VG9CeXRlcyhwYXJhbXMuQWNjZXNzR3JvdXBLZXlOYW1lKTtcbiAgbWV0YWRhdGEuYWNjZXNzR3JvdXBNZW1iZXJzTGlzdCA9IHBhcmFtcy5BY2Nlc3NHcm91cE1lbWJlckxpc3QubWFwKFxuICAgIChtZW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IG5ld0FjY2Vzc0dyb3VwTWVtYmVyID0gbmV3IEFjY2Vzc0dyb3VwTWVtYmVyUmVjb3JkKCk7XG4gICAgICBuZXdBY2Nlc3NHcm91cE1lbWJlci5hY2Nlc3NHcm91cE1lbWJlclB1YmxpY0tleSA9XG4gICAgICAgIGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICAgICAgICBtZW1iZXIuQWNjZXNzR3JvdXBNZW1iZXJQdWJsaWNLZXlCYXNlNThDaGVja1xuICAgICAgICApO1xuICAgICAgbmV3QWNjZXNzR3JvdXBNZW1iZXIuYWNjZXNzR3JvdXBNZW1iZXJLZXlOYW1lID0gZW5jb2RlVVRGOFRvQnl0ZXMoXG4gICAgICAgIG1lbWJlci5BY2Nlc3NHcm91cE1lbWJlcktleU5hbWVcbiAgICAgICk7XG4gICAgICBuZXdBY2Nlc3NHcm91cE1lbWJlci5lbmNyeXB0ZWRLZXkgPSBlbmNvZGVVVEY4VG9CeXRlcyhcbiAgICAgICAgbWVtYmVyLkVuY3J5cHRlZEtleVxuICAgICAgKTtcbiAgICAgIG5ld0FjY2Vzc0dyb3VwTWVtYmVyLmV4dHJhRGF0YSA9IGNvbnZlcnRFeHRyYURhdGEobWVtYmVyLkV4dHJhRGF0YSk7XG4gICAgICByZXR1cm4gbmV3QWNjZXNzR3JvdXBNZW1iZXI7XG4gICAgfVxuICApO1xuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0QWRkQWNjZXNzR3JvdXBNZW1iZXJzVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxBZGRBY2Nlc3NHcm91cE1lbWJlcnNSZXF1ZXN0PlxuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KFxuICAgIHBhcmFtcy5BY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRBZGRBY2Nlc3NHcm91cE1lbWJlck1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9hY2Nlc3MtZ3JvdXBzLWFwaSNyZW1vdmUtYWNjZXNzLWdyb3VwLW1lbWJlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlbW92ZUFjY2Vzc0dyb3VwTWVtYmVycyA9IGFzeW5jIChcbiAgcGFyYW1zOiBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1JlcXVlc3Q+LFxuICBvcHRpb25zPzogVHhSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1Jlc3BvbnNlPj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkUmVtb3ZlQWNjZXNzR3JvdXBNZW1iZXJNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xuXG4gIGlmIChvcHRpb25zPy5jaGVja1Blcm1pc3Npb25zICE9PSBmYWxzZSkge1xuICAgIGF3YWl0IGd1YXJkVHhQZXJtaXNzaW9uKHtcbiAgICAgIEdsb2JhbERFU09MaW1pdDpcbiAgICAgICAgdHhXaXRoRmVlLmZlZU5hbm9zICsgc3VtVHJhbnNhY3Rpb25GZWVzKHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMpLFxuICAgICAgLy8gTk9URTogVGhpcyBpcyBtb3JlIHBlcm1pc3NpdmUgdGhhbiB3ZSBhY3R1YWxseSBuZWVkIGl0IHRvIGJlLCBidXQgSVxuICAgICAgLy8gY291bGRuJ3QgZ2V0IGl0IHRvIHdvcmsgd2hlbiBzcGVjaWZ5aW5nIHRoZSBBY2Nlc3NHcm91cEtleU5hbWUgYW5kXG4gICAgICAvLyBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2suIElmIGFueW9uZSBjb21wbGFpbnMsIHdlIGNhblxuICAgICAgLy8gcmV2aXNpdCBpdCwgYnV0IHRoaXMgaXMgbm90IGEgdGVycmlibHkgc2Vuc2l0aXZlIHBlcm1pc3Npb24gdG8gZ3JhbnQuXG4gICAgICBBY2Nlc3NHcm91cExpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2s6ICcnLFxuICAgICAgICAgIFNjb3BlVHlwZTogJ0FueScsXG4gICAgICAgICAgQWNjZXNzR3JvdXBLZXlOYW1lOiAnJyxcbiAgICAgICAgICBPcGVyYXRpb25UeXBlOiAnQW55JyxcbiAgICAgICAgICBPcENvdW50OiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBBY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2s6ICcnLFxuICAgICAgICAgIFNjb3BlVHlwZTogJ0FueScsXG4gICAgICAgICAgQWNjZXNzR3JvdXBLZXlOYW1lOiAnJyxcbiAgICAgICAgICBPcGVyYXRpb25UeXBlOiAnQW55JyxcbiAgICAgICAgICBPcENvdW50OiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC9yZW1vdmUtYWNjZXNzLWdyb3VwLW1lbWJlcnMnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RSZW1vdmVBY2Nlc3NHcm91cE1lbWJlcnNUcmFuc2FjdGlvbixcbiAgfSk7XG59O1xuXG5jb25zdCBidWlsZFJlbW92ZUFjY2Vzc0dyb3VwTWVtYmVyTWV0YWRhdGEgPSAoXG4gIHBhcmFtczogVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxBZGRBY2Nlc3NHcm91cE1lbWJlcnNSZXF1ZXN0PlxuKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFBY2Nlc3NHcm91cE1lbWJlcnMoKTtcbiAgbWV0YWRhdGEuYWNjZXNzR3JvdXBPd25lclB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrXG4gICk7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwTWVtYmVyT3BlcmF0aW9uVHlwZSA9IDM7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwS2V5TmFtZSA9IGVuY29kZVVURjhUb0J5dGVzKHBhcmFtcy5BY2Nlc3NHcm91cEtleU5hbWUpO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cE1lbWJlcnNMaXN0ID0gcGFyYW1zLkFjY2Vzc0dyb3VwTWVtYmVyTGlzdC5tYXAoXG4gICAgKG1lbWJlcikgPT4ge1xuICAgICAgY29uc3QgbmV3QWNjZXNzR3JvdXBNZW1iZXIgPSBuZXcgQWNjZXNzR3JvdXBNZW1iZXJSZWNvcmQoKTtcbiAgICAgIG5ld0FjY2Vzc0dyb3VwTWVtYmVyLmFjY2Vzc0dyb3VwTWVtYmVyUHVibGljS2V5ID1cbiAgICAgICAgYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKFxuICAgICAgICAgIG1lbWJlci5BY2Nlc3NHcm91cE1lbWJlclB1YmxpY0tleUJhc2U1OENoZWNrXG4gICAgICAgICk7XG4gICAgICBuZXdBY2Nlc3NHcm91cE1lbWJlci5hY2Nlc3NHcm91cE1lbWJlcktleU5hbWUgPSBlbmNvZGVVVEY4VG9CeXRlcyhcbiAgICAgICAgcGFyYW1zLkFjY2Vzc0dyb3VwS2V5TmFtZVxuICAgICAgKTtcbiAgICAgIG5ld0FjY2Vzc0dyb3VwTWVtYmVyLmVuY3J5cHRlZEtleSA9IG5ldyBVaW50OEFycmF5KDApO1xuICAgICAgbmV3QWNjZXNzR3JvdXBNZW1iZXIuZXh0cmFEYXRhID0gbmV3IFRyYW5zYWN0aW9uRXh0cmFEYXRhKCk7XG4gICAgICByZXR1cm4gbmV3QWNjZXNzR3JvdXBNZW1iZXI7XG4gICAgfVxuICApO1xuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdFJlbW92ZUFjY2Vzc0dyb3VwTWVtYmVyc1RyYW5zYWN0aW9uID0gKFxuICBwYXJhbXM6IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8QWRkQWNjZXNzR3JvdXBNZW1iZXJzUmVxdWVzdD5cbik6IFByb21pc2U8Q29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChcbiAgICBwYXJhbXMuQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkUmVtb3ZlQWNjZXNzR3JvdXBNZW1iZXJNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvYWNjZXNzLWdyb3Vwcy1hcGkjdXBkYXRlLWFjY2Vzcy1ncm91cC1tZW1iZXJzXG4gKi9cbmV4cG9ydCBjb25zdCB1cGRhdGVBY2Nlc3NHcm91cE1lbWJlcnMgPSBhc3luYyAoXG4gIHBhcmFtczogVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxBZGRBY2Nlc3NHcm91cE1lbWJlcnNSZXF1ZXN0PixcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxBZGRBY2Nlc3NHcm91cE1lbWJlcnNSZXNwb25zZT4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLkFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZFVwZGF0ZUFjY2Vzc0dyb3VwTWVtYmVyc01ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgKyBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICAvLyBOT1RFOiBUaGlzIGlzIG1vcmUgcGVybWlzc2l2ZSB0aGFuIHdlIGFjdHVhbGx5IG5lZWQgaXQgdG8gYmUsIGJ1dCBJXG4gICAgICAvLyBjb3VsZG4ndCBnZXQgaXQgdG8gd29yayB3aGVuIHNwZWNpZnlpbmcgdGhlIEFjY2Vzc0dyb3VwS2V5TmFtZSBhbmRcbiAgICAgIC8vIEFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjay4gSWYgYW55b25lIGNvbXBsYWlucywgd2UgY2FuXG4gICAgICAvLyByZXZpc2l0IGl0LCBidXQgdGhpcyBpcyBub3QgYSB0ZXJyaWJseSBzZW5zaXRpdmUgcGVybWlzc2lvbiB0byBncmFudC5cbiAgICAgIEFjY2Vzc0dyb3VwTGltaXRNYXA6IFtcbiAgICAgICAge1xuICAgICAgICAgIEFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjazogJycsXG4gICAgICAgICAgU2NvcGVUeXBlOiAnQW55JyxcbiAgICAgICAgICBBY2Nlc3NHcm91cEtleU5hbWU6ICcnLFxuICAgICAgICAgIE9wZXJhdGlvblR5cGU6ICdBbnknLFxuICAgICAgICAgIE9wQ291bnQ6IG9wdGlvbnM/LnR4TGltaXRDb3VudCA/PyAxLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIEFjY2Vzc0dyb3VwTWVtYmVyTGltaXRNYXA6IFtcbiAgICAgICAge1xuICAgICAgICAgIEFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjazogJycsXG4gICAgICAgICAgU2NvcGVUeXBlOiAnQW55JyxcbiAgICAgICAgICBBY2Nlc3NHcm91cEtleU5hbWU6ICcnLFxuICAgICAgICAgIE9wZXJhdGlvblR5cGU6ICdBbnknLFxuICAgICAgICAgIE9wQ291bnQ6IG9wdGlvbnM/LnR4TGltaXRDb3VudCA/PyAxLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvdXBkYXRlLWFjY2Vzcy1ncm91cC1tZW1iZXJzJywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0VXBkYXRlQWNjZXNzR3JvdXBNZW1iZXJzVHJhbnNhY3Rpb24sXG4gIH0pO1xufTtcblxuY29uc3QgYnVpbGRVcGRhdGVBY2Nlc3NHcm91cE1lbWJlcnNNZXRhZGF0YSA9IChcbiAgcGFyYW1zOiBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1JlcXVlc3Q+XG4pID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YUFjY2Vzc0dyb3VwTWVtYmVycygpO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cE93bmVyUHVibGljS2V5ID0gYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKFxuICAgIHBhcmFtcy5BY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcbiAgbWV0YWRhdGEuYWNjZXNzR3JvdXBNZW1iZXJPcGVyYXRpb25UeXBlID0gNDtcbiAgbWV0YWRhdGEuYWNjZXNzR3JvdXBLZXlOYW1lID0gZW5jb2RlVVRGOFRvQnl0ZXMocGFyYW1zLkFjY2Vzc0dyb3VwS2V5TmFtZSk7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwTWVtYmVyc0xpc3QgPSBwYXJhbXMuQWNjZXNzR3JvdXBNZW1iZXJMaXN0Lm1hcChcbiAgICAobWVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBuZXdBY2Nlc3NHcm91cE1lbWJlciA9IG5ldyBBY2Nlc3NHcm91cE1lbWJlclJlY29yZCgpO1xuICAgICAgbmV3QWNjZXNzR3JvdXBNZW1iZXIuYWNjZXNzR3JvdXBNZW1iZXJQdWJsaWNLZXkgPVxuICAgICAgICBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgICAgICAgbWVtYmVyLkFjY2Vzc0dyb3VwTWVtYmVyUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgICAgICAgKTtcbiAgICAgIG5ld0FjY2Vzc0dyb3VwTWVtYmVyLmFjY2Vzc0dyb3VwTWVtYmVyS2V5TmFtZSA9IGVuY29kZVVURjhUb0J5dGVzKFxuICAgICAgICBtZW1iZXIuQWNjZXNzR3JvdXBNZW1iZXJLZXlOYW1lXG4gICAgICApO1xuICAgICAgbmV3QWNjZXNzR3JvdXBNZW1iZXIuZW5jcnlwdGVkS2V5ID0gZW5jb2RlVVRGOFRvQnl0ZXMoXG4gICAgICAgIG1lbWJlci5FbmNyeXB0ZWRLZXlcbiAgICAgICk7XG4gICAgICBuZXdBY2Nlc3NHcm91cE1lbWJlci5leHRyYURhdGEgPSBjb252ZXJ0RXh0cmFEYXRhKG1lbWJlci5FeHRyYURhdGEpO1xuICAgICAgcmV0dXJuIG5ld0FjY2Vzc0dyb3VwTWVtYmVyO1xuICAgIH1cbiAgKTtcbiAgcmV0dXJuIG1ldGFkYXRhO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdFVwZGF0ZUFjY2Vzc0dyb3VwTWVtYmVyc1RyYW5zYWN0aW9uID0gKFxuICBwYXJhbXM6IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8QWRkQWNjZXNzR3JvdXBNZW1iZXJzUmVxdWVzdD5cbik6IFByb21pc2U8Q29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChcbiAgICBwYXJhbXMuQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkVXBkYXRlQWNjZXNzR3JvdXBNZW1iZXJzTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG4iXX0=

@@ -1,4 +0,4 @@

import { AssociationTxnResponse, ConstructedTransactionResponse, CreatePostAssociationRequest, CreateUserAssociationRequest, DeleteAssociationRequest, RequestOptions, TxRequestWithOptionalFeesAndExtraData } from '../backend-types';
import { PartialWithRequiredFields } from '../data';
import { ConstructedAndSubmittedTx, TxRequestOptions } from '../types';
import { AssociationTxnResponse, ConstructedTransactionResponse, CreatePostAssociationRequest, CreateUserAssociationRequest, DeleteAssociationRequest, RequestOptions, TxRequestWithOptionalFeesAndExtraData } from '../backend-types/index.js';
import { PartialWithRequiredFields } from '../data/index.js';
import { ConstructedAndSubmittedTx, TxRequestOptions } from '../types.js';
/**

@@ -5,0 +5,0 @@ * https://docs.deso.org/deso-backend/construct-transactions/associations-transactions-api#create-user-association

@@ -1,16 +0,6 @@

var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { hexToBytes } from '@noble/hashes/utils';
import { TransactionMetadataCreatePostAssociation, TransactionMetadataCreateUserAssociation, TransactionMetadataDeletePostAssociation, TransactionMetadataDeleteUserAssociation, bs58PublicKeyToCompressedBytes, encodeUTF8ToBytes, } from '../identity';
import { constructBalanceModelTx, getTxWithFeeNanos, handleSignAndSubmit, sumTransactionFees, } from '../internal';
import { guardTxPermission } from './utils';
export const createUserAssociation = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
var _a, _b, _c, _d;
import { TransactionMetadataCreatePostAssociation, TransactionMetadataCreateUserAssociation, TransactionMetadataDeletePostAssociation, TransactionMetadataDeleteUserAssociation, bs58PublicKeyToCompressedBytes, encodeUTF8ToBytes, } from '../identity/index.js';
import { constructBalanceModelTx, getTxWithFeeNanos, handleSignAndSubmit, sumTransactionFees, } from '../internal.js';
import { guardTxPermission } from './utils.js';
export const createUserAssociation = async (params, options) => {
const txWithFee = getTxWithFeeNanos(params.TransactorPublicKeyBase58Check, buildCreateUserAssociationMetadata(params), {

@@ -21,4 +11,4 @@ ExtraData: params.ExtraData,

});
if ((options === null || options === void 0 ? void 0 : options.checkPermissions) !== false) {
yield guardTxPermission({
if (options?.checkPermissions !== false) {
await guardTxPermission({
GlobalDESOLimit: txWithFee.feeNanos + sumTransactionFees(params.TransactionFees),

@@ -30,5 +20,5 @@ AssociationLimitMap: [

AppScopeType: params.AppPublicKeyBase58Check ? 'Scoped' : 'Any',
AppPublicKeyBase58Check: (_a = params.AppPublicKeyBase58Check) !== null && _a !== void 0 ? _a : '',
AppPublicKeyBase58Check: params.AppPublicKeyBase58Check ?? '',
AssociationOperation: 'Create',
OpCount: (_b = options === null || options === void 0 ? void 0 : options.txLimitCount) !== null && _b !== void 0 ? _b : 1,
OpCount: options?.txLimitCount ?? 1,
},

@@ -42,5 +32,5 @@ // NOTE: This is a bit weird, but we don't have AppPublicKeyBase58Check

AppScopeType: params.AppPublicKeyBase58Check ? 'Scoped' : 'Any',
AppPublicKeyBase58Check: (_c = params.AppPublicKeyBase58Check) !== null && _c !== void 0 ? _c : '',
AppPublicKeyBase58Check: params.AppPublicKeyBase58Check ?? '',
AssociationOperation: 'Delete',
OpCount: (_d = options === null || options === void 0 ? void 0 : options.txLimitCount) !== null && _d !== void 0 ? _d : 1,
OpCount: options?.txLimitCount ?? 1,
},

@@ -50,4 +40,7 @@ ],

}
return handleSignAndSubmit('api/v0/user-associations/create', params, Object.assign(Object.assign({}, options), { constructionFunction: constructCreateUserAssociationTransaction }));
});
return handleSignAndSubmit('api/v0/user-associations/create', params, {
...options,
constructionFunction: constructCreateUserAssociationTransaction,
});
};
const buildCreateUserAssociationMetadata = (params) => {

@@ -68,5 +61,8 @@ const metadata = new TransactionMetadataCreateUserAssociation();

};
export const deleteUserAssociation = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
return handleSignAndSubmit('api/v0/user-associations/delete', params, Object.assign(Object.assign({}, options), { constructionFunction: constructDeleteUserAssociationTransaction }));
});
export const deleteUserAssociation = async (params, options) => {
return handleSignAndSubmit('api/v0/user-associations/delete', params, {
...options,
constructionFunction: constructDeleteUserAssociationTransaction,
});
};
const buildDeleteUserAssociationMetadata = (params) => {

@@ -84,4 +80,3 @@ const metadata = new TransactionMetadataDeleteUserAssociation();

};
export const createPostAssociation = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
var _e, _f, _g, _h;
export const createPostAssociation = async (params, options) => {
const txWithFee = getTxWithFeeNanos(params.TransactorPublicKeyBase58Check, buildCreatePostAssociationMetadata(params), {

@@ -92,4 +87,4 @@ ExtraData: params.ExtraData,

});
if ((options === null || options === void 0 ? void 0 : options.checkPermissions) !== false) {
yield guardTxPermission({
if (options?.checkPermissions !== false) {
await guardTxPermission({
GlobalDESOLimit: txWithFee.feeNanos + sumTransactionFees(params.TransactionFees),

@@ -101,5 +96,5 @@ AssociationLimitMap: [

AppScopeType: params.AppPublicKeyBase58Check ? 'Scoped' : 'Any',
AppPublicKeyBase58Check: (_e = params.AppPublicKeyBase58Check) !== null && _e !== void 0 ? _e : '',
AppPublicKeyBase58Check: params.AppPublicKeyBase58Check ?? '',
AssociationOperation: 'Create',
OpCount: (_f = options === null || options === void 0 ? void 0 : options.txLimitCount) !== null && _f !== void 0 ? _f : 1,
OpCount: options?.txLimitCount ?? 1,
},

@@ -113,5 +108,5 @@ // NOTE: This is a bit weird, but we don't have AppPublicKeyBase58Check

AppScopeType: params.AppPublicKeyBase58Check ? 'Scoped' : 'Any',
AppPublicKeyBase58Check: (_g = params.AppPublicKeyBase58Check) !== null && _g !== void 0 ? _g : '',
AppPublicKeyBase58Check: params.AppPublicKeyBase58Check ?? '',
AssociationOperation: 'Delete',
OpCount: (_h = options === null || options === void 0 ? void 0 : options.txLimitCount) !== null && _h !== void 0 ? _h : 1,
OpCount: options?.txLimitCount ?? 1,
},

@@ -121,4 +116,7 @@ ],

}
return handleSignAndSubmit('api/v0/post-associations/create', params, Object.assign(Object.assign({}, options), { constructionFunction: constructCreatePostAssociationTransaction }));
});
return handleSignAndSubmit('api/v0/post-associations/create', params, {
...options,
constructionFunction: constructCreatePostAssociationTransaction,
});
};
const buildCreatePostAssociationMetadata = (params) => {

@@ -140,3 +138,6 @@ const metadata = new TransactionMetadataCreatePostAssociation();

export const deletePostAssociation = (params, options) => {
return handleSignAndSubmit('api/v0/post-associations/delete', params, Object.assign(Object.assign({}, options), { constructionFunction: constructDeletePostAssociationTransaction }));
return handleSignAndSubmit('api/v0/post-associations/delete', params, {
...options,
constructionFunction: constructDeletePostAssociationTransaction,
});
};

@@ -152,2 +153,2 @@ export const constructDeletePostAssociationTransaction = (params) => {

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzb2NpYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9ucy9hc3NvY2lhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBV2pELE9BQU8sRUFDTCx3Q0FBd0MsRUFDeEMsd0NBQXdDLEVBQ3hDLHdDQUF3QyxFQUN4Qyx3Q0FBd0MsRUFDeEMsOEJBQThCLEVBQzlCLGlCQUFpQixHQUNsQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsa0JBQWtCLEdBQ25CLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQWdCNUMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FDbkMsTUFBMEMsRUFDMUMsT0FBMEIsRUFDa0MsRUFBRTs7SUFDOUQsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQ2pDLE1BQU0sQ0FBQyw4QkFBOEIsRUFDckMsa0NBQWtDLENBQUMsTUFBTSxDQUFDLEVBQzFDO1FBQ0UsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1FBQzNCLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxvQkFBb0I7UUFDakQsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO0tBQ3hDLENBQ0YsQ0FBQztJQUVGLElBQUksQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsZ0JBQWdCLE1BQUssS0FBSyxFQUFFO1FBQ3ZDLE1BQU0saUJBQWlCLENBQUM7WUFDdEIsZUFBZSxFQUNiLFNBQVMsQ0FBQyxRQUFRLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztZQUNqRSxtQkFBbUIsRUFBRTtnQkFDbkI7b0JBQ0UsZ0JBQWdCLEVBQUUsTUFBTTtvQkFDeEIs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LE1BQTBDLEVBQ0QsRUFBRTtJQUMzQyxPQUFPLHVCQUF1QixDQUM1QixNQUFNLENBQUMsOEJBQThCLEVBQ3JDLGtDQUFrQyxDQUFDLE1BQU0sQ0FBQyxFQUMxQztRQUNFLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztRQUMzQixvQkFBb0IsRUFBRSxNQUFNLENBQUMsb0JBQW9CO1FBQ2pELGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZTtLQUN4QyxDQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFhRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUNuQyxNQUEwQyxFQUMxQyxPQUF3QixFQUNvQyxFQUFFO0lBQzlELE9BQU8sbUJBQW1CLENBQUMsaUNBQWlDLEVBQUUsTUFBTSxrQ0FDL0QsT0FBTyxLQUNWLG9CQUFvQixFQUFFLHlDQUF5QyxJQUMvRCxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0seUNBQXlDLEdBQUcsQ0FDdkQsTUFBMEMsRUFDRCxFQUFFO0lBQzNDLE1BQU0sUUFBUSxHQUFHLElBQUksd0NBQXdDLEVBQUUsQ0FBQztJQUNoRSxRQUFRLENBQUMsYUFBYSxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNqRSxPQUFPLHVCQUF1QixDQUM1QixNQUFNLENBQUMsOEJBQThCLEVBQ3JDLFFBQVEsRUFDUjtRQUNFLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztRQUMzQixvQkFBb0IsRUFBRSxNQUFNLENBQUMsb0JBQW9CO1FBQ2pELGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZTtLQUN4QyxDQUNGLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoZXhUb0J5dGVzIH0gZnJvbSAnQG5vYmxlL2hhc2hlcy91dGlscyc7XG5pbXBvcnQge1xuICBBc3NvY2lhdGlvblR4blJlc3BvbnNlLFxuICBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2UsXG4gIENyZWF0ZVBvc3RBc3NvY2lhdGlvblJlcXVlc3QsXG4gIENyZWF0ZVVzZXJBc3NvY2lhdGlvblJlcXVlc3QsXG4gIERlbGV0ZUFzc29jaWF0aW9uUmVxdWVzdCxcbiAgUmVxdWVzdE9wdGlvbnMsXG4gIFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGEsXG59IGZyb20gJy4uL2JhY2tlbmQtdHlwZXMnO1xuaW1wb3J0IHsgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkcyB9IGZyb20gJy4uL2RhdGEnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YUNyZWF0ZVBvc3RBc3NvY2lhdGlvbixcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YUNyZWF0ZVVzZXJBc3NvY2lhdGlvbixcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YURlbGV0ZVBvc3RBc3NvY2lhdGlvbixcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YURlbGV0ZVVzZXJBc3NvY2lhdGlvbixcbiAgYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzLFxuICBlbmNvZGVVVEY4VG9CeXRlcyxcbn0gZnJvbSAnLi4vaWRlbnRpdHknO1xuaW1wb3J0IHtcbiAgY29uc3RydWN0QmFsYW5jZU1vZGVsVHgsXG4gIGdldFR4V2l0aEZlZU5hbm9zLFxuICBoYW5kbGVTaWduQW5kU3VibWl0LFxuICBzdW1UcmFuc2FjdGlvbkZlZXMsXG59IGZyb20gJy4uL2ludGVybmFsJztcbmltcG9ydCB7IENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHgsIFR4UmVxdWVzdE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBndWFyZFR4UGVybWlzc2lvbiB9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9hc3NvY2lhdGlvbnMtdHJhbnNhY3Rpb25zLWFwaSNjcmVhdGUtdXNlci1hc3NvY2lhdGlvblxuICovXG5cbmV4cG9ydCB0eXBlIENyZWF0ZVVzZXJBc3NvY2lhdGlvblJlcXVlc3RQYXJhbXMgPVxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICAgIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgICBDcmVhdGVVc2VyQXNzb2NpYXRpb25SZXF1ZXN0LFxuICAgICAgfCAnVGFyZ2V0VXNlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnVHJhbnNhY3RvclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnQXNzb2NpYXRpb25UeXBlJ1xuICAgICAgfCAnQXNzb2NpYXRpb25WYWx1ZSdcbiAgICA+XG4gID47XG5leHBvcnQgY29uc3QgY3JlYXRlVXNlckFzc29jaWF0aW9uID0gYXN5bmMgKFxuICBwYXJhbXM6IENyZWF0ZVVzZXJBc3NvY2lhdGlvblJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8QXNzb2NpYXRpb25UeG5SZXNwb25zZT4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLlRyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZENyZWF0ZVVzZXJBc3NvY2lhdGlvbk1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgKyBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICBBc3NvY2lhdGlvbkxpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBc3NvY2lhdGlvbkNsYXNzOiAnVXNlcicsXG4gICAgICAgICAgQXNzb2NpYXRpb25UeXBlOiBwYXJhbXMuQXNzb2NpYXRpb25UeXBlLFxuICAgICAgICAgIEFwcFNjb3BlVHlwZTogcGFyYW1zLkFwcFB1YmxpY0tleUJhc2U1OENoZWNrID8gJ1Njb3BlZCcgOiAnQW55JyxcbiAgICAgICAgICBBcHBQdWJsaWNLZXlCYXNlNThDaGVjazogcGFyYW1zLkFwcFB1YmxpY0tleUJhc2U1OENoZWNrID8/ICcnLFxuICAgICAgICAgIEFzc29jaWF0aW9uT3BlcmF0aW9uOiAnQ3JlYXRlJyxcbiAgICAgICAgICBPcENvdW50OiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gTk9URTogVGhpcyBpcyBhIGJpdCB3ZWlyZCwgYnV0IHdlIGRvbid0IGhhdmUgQXBwUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgICAgICAgLy8gb3IgQXNzb2NpYXRpb25UeXBlIGluIHRoZSBkZWxldGUgcGFyYW1zLCBzbyB3ZSBqdXN0IGFzayBmb3IgZGVsZXRlXG4gICAgICAgIC8vIHBlcm1pc3Npb24gYXQgdGhlIHNhbWUgdGltZSB0aGUgYXNzb2NpYXRpb24gaXMgY3JlYXRlZC5cbiAgICAgICAge1xuICAgICAgICAgIEFzc29jaWF0aW9uQ2xhc3M6ICdVc2VyJyxcbiAgICAgICAgICBBc3NvY2lhdGlvblR5cGU6IHBhcmFtcy5Bc3NvY2lhdGlvblR5cGUsXG4gICAgICAgICAgQXBwU2NvcGVUeXBlOiBwYXJhbXMuQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgPyAnU2NvcGVkJyA6ICdBbnknLFxuICAgICAgICAgIEFwcFB1YmxpY0tleUJhc2U1OENoZWNrOiBwYXJhbXMuQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgPz8gJycsXG4gICAgICAgICAgQXNzb2NpYXRpb25PcGVyYXRpb246ICdEZWxldGUnLFxuICAgICAgICAgIE9wQ291bnQ6IG9wdGlvbnM/LnR4TGltaXRDb3VudCA/PyAxLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvdXNlci1hc3NvY2lhdGlvbnMvY3JlYXRlJywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0Q3JlYXRlVXNlckFzc29jaWF0aW9uVHJhbnNhY3Rpb24sXG4gIH0pO1xufTtcblxuY29uc3QgYnVpbGRDcmVhdGVVc2VyQXNzb2NpYXRpb25NZXRhZGF0YSA9IChcbiAgcGFyYW1zOiBDcmVhdGVVc2VyQXNzb2NpYXRpb25SZXF1ZXN0UGFyYW1zXG4pID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YUNyZWF0ZVVzZXJBc3NvY2lhdGlvbigpO1xuICBtZXRhZGF0YS5hcHBQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLkFwcFB1YmxpY0tleUJhc2U1OENoZWNrIHx8ICcnXG4gICk7XG4gIG1ldGFkYXRhLmFzc29jaWF0aW9uVHlwZSA9IGVuY29kZVVURjhUb0J5dGVzKHBhcmFtcy5Bc3NvY2lhdGlvblR5cGUpO1xuICBtZXRhZGF0YS5hc3NvY2lhdGlvblZhbHVlID0gZW5jb2RlVVRGOFRvQnl0ZXMocGFyYW1zLkFzc29jaWF0aW9uVmFsdWUpO1xuICBtZXRhZGF0YS50YXJnZXRVc2VyUHVibGljS2V5ID0gYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKFxuICAgIHBhcmFtcy5UYXJnZXRVc2VyUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0Q3JlYXRlVXNlckFzc29jaWF0aW9uVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogQ3JlYXRlVXNlckFzc29jaWF0aW9uUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KFxuICAgIHBhcmFtcy5UcmFuc2FjdG9yUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRDcmVhdGVVc2VyQXNzb2NpYXRpb25NZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvYXNzb2NpYXRpb25zLXRyYW5zYWN0aW9ucy1hcGkjZGVsZXRlLXVzZXItYXNzb2NpYXRpb25cbiAqL1xuXG5leHBvcnQgdHlwZSBEZWxldGVVc2VyQXNzb2NpYXRpb25SZXF1ZXN0UGFyYW1zID1cbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgICBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgICAgRGVsZXRlQXNzb2NpYXRpb25SZXF1ZXN0LFxuICAgICAgJ1RyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjaycgfCAnQXNzb2NpYXRpb25JRCdcbiAgICA+XG4gID47XG5cbmV4cG9ydCBjb25zdCBkZWxldGVVc2VyQXNzb2NpYXRpb24gPSBhc3luYyAoXG4gIHBhcmFtczogRGVsZXRlVXNlckFzc29jaWF0aW9uUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxBc3NvY2lhdGlvblR4blJlc3BvbnNlPj4gPT4ge1xuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL3VzZXItYXNzb2NpYXRpb25zL2RlbGV0ZScsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdERlbGV0ZVVzZXJBc3NvY2lhdGlvblRyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkRGVsZXRlVXNlckFzc29jaWF0aW9uTWV0YWRhdGEgPSAoXG4gIHBhcmFtczogRGVsZXRlUG9zdEFzc29jaWF0aW9uUmVxdWVzdFBhcmFtc1xuKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFEZWxldGVVc2VyQXNzb2NpYXRpb24oKTtcbiAgbWV0YWRhdGEuYXNzb2NpYXRpb25JRCA9IGVuY29kZVVURjhUb0J5dGVzKHBhcmFtcy5Bc3NvY2lhdGlvbklEKTtcbiAgcmV0dXJuIG1ldGFkYXRhO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdERlbGV0ZVVzZXJBc3NvY2lhdGlvblRyYW5zYWN0aW9uID0gKFxuICBwYXJhbXM6IERlbGV0ZVVzZXJBc3NvY2lhdGlvblJlcXVlc3RQYXJhbXNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChcbiAgICBwYXJhbXMuVHJhbnNhY3RvclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkRGVsZXRlVXNlckFzc29jaWF0aW9uTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9jb25zdHJ1Y3QtdHJhbnNhY3Rpb25zL2Fzc29jaWF0aW9ucy10cmFuc2FjdGlvbnMtYXBpI2NyZWF0ZS1wb3N0LWFzc29jaWF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIENyZWF0ZVBvc3RBc3NvY2lhdGlvblJlcXVlc3RQYXJhbXMgPVxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICAgIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgICBDcmVhdGVQb3N0QXNzb2NpYXRpb25SZXF1ZXN0LFxuICAgICAgfCAnUG9zdEhhc2hIZXgnXG4gICAgICB8ICdUcmFuc2FjdG9yUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgICB8ICdBc3NvY2lhdGlvblR5cGUnXG4gICAgICB8ICdBc3NvY2lhdGlvblZhbHVlJ1xuICAgID5cbiAgPjtcbmV4cG9ydCBjb25zdCBjcmVhdGVQb3N0QXNzb2NpYXRpb24gPSBhc3luYyAoXG4gIHBhcmFtczogQ3JlYXRlUG9zdEFzc29jaWF0aW9uUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxBc3NvY2lhdGlvblR4blJlc3BvbnNlPj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuVHJhbnNhY3RvclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQ3JlYXRlUG9zdEFzc29jaWF0aW9uTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIEFzc29jaWF0aW9uTGltaXRNYXA6IFtcbiAgICAgICAge1xuICAgICAgICAgIEFzc29jaWF0aW9uQ2xhc3M6ICdQb3N0JyxcbiAgICAgICAgICBBc3NvY2lhdGlvblR5cGU6IHBhcmFtcy5Bc3NvY2lhdGlvblR5cGUsXG4gICAgICAgICAgQXBwU2NvcGVUeXBlOiBwYXJhbXMuQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgPyAnU2NvcGVkJyA6ICdBbnknLFxuICAgICAgICAgIEFwcFB1YmxpY0tleUJhc2U1OENoZWNrOiBwYXJhbXMuQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgPz8gJycsXG4gICAgICAgICAgQXNzb2NpYXRpb25PcGVyYXRpb246ICdDcmVhdGUnLFxuICAgICAgICAgIE9wQ291bnQ6IG9wdGlvbnM/LnR4TGltaXRDb3VudCA/PyAxLFxuICAgICAgICB9LFxuICAgICAgICAvLyBOT1RFOiBUaGlzIGlzIGEgYml0IHdlaXJkLCBidXQgd2UgZG9uJ3QgaGF2ZSBBcHBQdWJsaWNLZXlCYXNlNThDaGVja1xuICAgICAgICAvLyBvciBBc3NvY2lhdGlvblR5cGUgaW4gdGhlIGRlbGV0ZSBwYXJhbXMsIHNvIHdlIGp1c3QgYXNrIGZvciBkZWxldGVcbiAgICAgICAgLy8gcGVybWlzc2lvbiBhdCB0aGUgc2FtZSB0aW1lIHRoZSBhc3NvY2lhdGlvbiBpcyBjcmVhdGVkLlxuICAgICAgICB7XG4gICAgICAgICAgQXNzb2NpYXRpb25DbGFzczogJ1Bvc3QnLFxuICAgICAgICAgIEFzc29jaWF0aW9uVHlwZTogcGFyYW1zLkFzc29jaWF0aW9uVHlwZSxcbiAgICAgICAgICBBcHBTY29wZVR5cGU6IHBhcmFtcy5BcHBQdWJsaWNLZXlCYXNlNThDaGVjayA/ICdTY29wZWQnIDogJ0FueScsXG4gICAgICAgICAgQXBwUHVibGljS2V5QmFzZTU4Q2hlY2s6IHBhcmFtcy5BcHBQdWJsaWNLZXlCYXNlNThDaGVjayA/PyAnJyxcbiAgICAgICAgICBBc3NvY2lhdGlvbk9wZXJhdGlvbjogJ0RlbGV0ZScsXG4gICAgICAgICAgT3BDb3VudDogb3B0aW9ucz8udHhMaW1pdENvdW50ID8/IDEsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC9wb3N0LWFzc29jaWF0aW9ucy9jcmVhdGUnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RDcmVhdGVQb3N0QXNzb2NpYXRpb25UcmFuc2FjdGlvbixcbiAgfSk7XG59O1xuXG5jb25zdCBidWlsZENyZWF0ZVBvc3RBc3NvY2lhdGlvbk1ldGFkYXRhID0gKFxuICBwYXJhbXM6IENyZWF0ZVBvc3RBc3NvY2lhdGlvblJlcXVlc3RQYXJhbXNcbikgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhQ3JlYXRlUG9zdEFzc29jaWF0aW9uKCk7XG4gIG1ldGFkYXRhLmFwcFB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgfHwgJydcbiAgKTtcbiAgbWV0YWRhdGEuYXNzb2NpYXRpb25UeXBlID0gZW5jb2RlVVRGOFRvQnl0ZXMocGFyYW1zLkFzc29jaWF0aW9uVHlwZSk7XG4gIG1ldGFkYXRhLmFzc29jaWF0aW9uVmFsdWUgPSBlbmNvZGVVVEY4VG9CeXRlcyhwYXJhbXMuQXNzb2NpYXRpb25WYWx1ZSk7XG4gIG1ldGFkYXRhLnBvc3RIYXNoID0gaGV4VG9CeXRlcyhwYXJhbXMuUG9zdEhhc2hIZXgpO1xuXG4gIHJldHVybiBtZXRhZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RDcmVhdGVQb3N0QXNzb2NpYXRpb25UcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBDcmVhdGVQb3N0QXNzb2NpYXRpb25SZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlRyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZENyZWF0ZVBvc3RBc3NvY2lhdGlvbk1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9hc3NvY2lhdGlvbnMtdHJhbnNhY3Rpb25zLWFwaSNkZWxldGUtcG9zdC1hc3NvY2lhdGlvblxuICovXG5leHBvcnQgdHlwZSBEZWxldGVQb3N0QXNzb2NpYXRpb25SZXF1ZXN0UGFyYW1zID1cbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgICBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgICAgRGVsZXRlQXNzb2NpYXRpb25SZXF1ZXN0LFxuICAgICAgJ1RyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjaycgfCAnQXNzb2NpYXRpb25JRCdcbiAgICA+XG4gID47XG5cbmV4cG9ydCBjb25zdCBkZWxldGVQb3N0QXNzb2NpYXRpb24gPSAoXG4gIHBhcmFtczogRGVsZXRlUG9zdEFzc29jaWF0aW9uUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8QXNzb2NpYXRpb25UeG5SZXNwb25zZT4+ID0+IHtcbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC9wb3N0LWFzc29jaWF0aW9ucy9kZWxldGUnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3REZWxldGVQb3N0QXNzb2NpYXRpb25UcmFuc2FjdGlvbixcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0RGVsZXRlUG9zdEFzc29jaWF0aW9uVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogRGVsZXRlUG9zdEFzc29jaWF0aW9uUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YURlbGV0ZVBvc3RBc3NvY2lhdGlvbigpO1xuICBtZXRhZGF0YS5hc3NvY2lhdGlvbklEID0gZW5jb2RlVVRGOFRvQnl0ZXMocGFyYW1zLkFzc29jaWF0aW9uSUQpO1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlRyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBtZXRhZGF0YSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzb2NpYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9ucy9hc3NvY2lhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBV2pELE9BQU8sRUFDTCx3Q0FBd0MsRUFDeEMsd0NBQXdDLEVBQ3hDLHdDQUF3QyxFQUN4Qyx3Q0FBd0MsRUFDeEMsOEJBQThCLEVBQzlCLGlCQUFpQixHQUNsQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixrQkFBa0IsR0FDbkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFnQi9DLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLEtBQUssRUFDeEMsTUFBMEMsRUFDMUMsT0FBMEIsRUFDa0MsRUFBRTtJQUM5RCxNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FDakMsTUFBTSxDQUFDLDhCQUE4QixFQUNyQyxrQ0FBa0MsQ0FBQyxNQUFNLENBQUMsRUFDMUM7UUFDRSxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDM0Isb0JBQW9CLEVBQUUsTUFBTSxDQUFDLG9CQUFvQjtRQUNqRCxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7S0FDeEMsQ0FDRixDQUFDO0lBRUYsSUFBSSxPQUFPLEVBQUUsZ0JBQWdCLEtBQUssS0FBSyxFQUFFO1FBQ3ZDLE1BQU0saUJBQWlCLENBQUM7WUFDdEIsZUFBZSxFQUNiLFNBQVMsQ0FBQyxRQUFRLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztZQUNqRSxtQkFBbUIsRUFBRTtnQkFDbkI7b0JBQ0UsZ0JBQWdCLEVBQUUsTUFBTTtvQkFDeEIsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO29C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LG9CQUFvQjtRQUNqRCxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7S0FDeEMsQ0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBYUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FDbkMsTUFBMEMsRUFDMUMsT0FBd0IsRUFDb0MsRUFBRTtJQUM5RCxPQUFPLG1CQUFtQixDQUFDLGlDQUFpQyxFQUFFLE1BQU0sRUFBRTtRQUNwRSxHQUFHLE9BQU87UUFDVixvQkFBb0IsRUFBRSx5Q0FBeUM7S0FDaEUsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0seUNBQXlDLEdBQUcsQ0FDdkQsTUFBMEMsRUFDRCxFQUFFO0lBQzNDLE1BQU0sUUFBUSxHQUFHLElBQUksd0NBQXdDLEVBQUUsQ0FBQztJQUNoRSxRQUFRLENBQUMsYUFBYSxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNqRSxPQUFPLHVCQUF1QixDQUM1QixNQUFNLENBQUMsOEJBQThCLEVBQ3JDLFFBQVEsRUFDUjtRQUNFLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztRQUMzQixvQkFBb0IsRUFBRSxNQUFNLENBQUMsb0JBQW9CO1FBQ2pELGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZTtLQUN4QyxDQUNGLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoZXhUb0J5dGVzIH0gZnJvbSAnQG5vYmxlL2hhc2hlcy91dGlscyc7XG5pbXBvcnQge1xuICBBc3NvY2lhdGlvblR4blJlc3BvbnNlLFxuICBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2UsXG4gIENyZWF0ZVBvc3RBc3NvY2lhdGlvblJlcXVlc3QsXG4gIENyZWF0ZVVzZXJBc3NvY2lhdGlvblJlcXVlc3QsXG4gIERlbGV0ZUFzc29jaWF0aW9uUmVxdWVzdCxcbiAgUmVxdWVzdE9wdGlvbnMsXG4gIFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGEsXG59IGZyb20gJy4uL2JhY2tlbmQtdHlwZXMvaW5kZXguanMnO1xuaW1wb3J0IHsgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkcyB9IGZyb20gJy4uL2RhdGEvaW5kZXguanMnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YUNyZWF0ZVBvc3RBc3NvY2lhdGlvbixcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YUNyZWF0ZVVzZXJBc3NvY2lhdGlvbixcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YURlbGV0ZVBvc3RBc3NvY2lhdGlvbixcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YURlbGV0ZVVzZXJBc3NvY2lhdGlvbixcbiAgYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzLFxuICBlbmNvZGVVVEY4VG9CeXRlcyxcbn0gZnJvbSAnLi4vaWRlbnRpdHkvaW5kZXguanMnO1xuaW1wb3J0IHtcbiAgY29uc3RydWN0QmFsYW5jZU1vZGVsVHgsXG4gIGdldFR4V2l0aEZlZU5hbm9zLFxuICBoYW5kbGVTaWduQW5kU3VibWl0LFxuICBzdW1UcmFuc2FjdGlvbkZlZXMsXG59IGZyb20gJy4uL2ludGVybmFsLmpzJztcbmltcG9ydCB7IENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHgsIFR4UmVxdWVzdE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5pbXBvcnQgeyBndWFyZFR4UGVybWlzc2lvbiB9IGZyb20gJy4vdXRpbHMuanMnO1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9hc3NvY2lhdGlvbnMtdHJhbnNhY3Rpb25zLWFwaSNjcmVhdGUtdXNlci1hc3NvY2lhdGlvblxuICovXG5cbmV4cG9ydCB0eXBlIENyZWF0ZVVzZXJBc3NvY2lhdGlvblJlcXVlc3RQYXJhbXMgPVxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICAgIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgICBDcmVhdGVVc2VyQXNzb2NpYXRpb25SZXF1ZXN0LFxuICAgICAgfCAnVGFyZ2V0VXNlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnVHJhbnNhY3RvclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnQXNzb2NpYXRpb25UeXBlJ1xuICAgICAgfCAnQXNzb2NpYXRpb25WYWx1ZSdcbiAgICA+XG4gID47XG5leHBvcnQgY29uc3QgY3JlYXRlVXNlckFzc29jaWF0aW9uID0gYXN5bmMgKFxuICBwYXJhbXM6IENyZWF0ZVVzZXJBc3NvY2lhdGlvblJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8QXNzb2NpYXRpb25UeG5SZXNwb25zZT4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLlRyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZENyZWF0ZVVzZXJBc3NvY2lhdGlvbk1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgKyBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICBBc3NvY2lhdGlvbkxpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBc3NvY2lhdGlvbkNsYXNzOiAnVXNlcicsXG4gICAgICAgICAgQXNzb2NpYXRpb25UeXBlOiBwYXJhbXMuQXNzb2NpYXRpb25UeXBlLFxuICAgICAgICAgIEFwcFNjb3BlVHlwZTogcGFyYW1zLkFwcFB1YmxpY0tleUJhc2U1OENoZWNrID8gJ1Njb3BlZCcgOiAnQW55JyxcbiAgICAgICAgICBBcHBQdWJsaWNLZXlCYXNlNThDaGVjazogcGFyYW1zLkFwcFB1YmxpY0tleUJhc2U1OENoZWNrID8/ICcnLFxuICAgICAgICAgIEFzc29jaWF0aW9uT3BlcmF0aW9uOiAnQ3JlYXRlJyxcbiAgICAgICAgICBPcENvdW50OiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gTk9URTogVGhpcyBpcyBhIGJpdCB3ZWlyZCwgYnV0IHdlIGRvbid0IGhhdmUgQXBwUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgICAgICAgLy8gb3IgQXNzb2NpYXRpb25UeXBlIGluIHRoZSBkZWxldGUgcGFyYW1zLCBzbyB3ZSBqdXN0IGFzayBmb3IgZGVsZXRlXG4gICAgICAgIC8vIHBlcm1pc3Npb24gYXQgdGhlIHNhbWUgdGltZSB0aGUgYXNzb2NpYXRpb24gaXMgY3JlYXRlZC5cbiAgICAgICAge1xuICAgICAgICAgIEFzc29jaWF0aW9uQ2xhc3M6ICdVc2VyJyxcbiAgICAgICAgICBBc3NvY2lhdGlvblR5cGU6IHBhcmFtcy5Bc3NvY2lhdGlvblR5cGUsXG4gICAgICAgICAgQXBwU2NvcGVUeXBlOiBwYXJhbXMuQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgPyAnU2NvcGVkJyA6ICdBbnknLFxuICAgICAgICAgIEFwcFB1YmxpY0tleUJhc2U1OENoZWNrOiBwYXJhbXMuQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgPz8gJycsXG4gICAgICAgICAgQXNzb2NpYXRpb25PcGVyYXRpb246ICdEZWxldGUnLFxuICAgICAgICAgIE9wQ291bnQ6IG9wdGlvbnM/LnR4TGltaXRDb3VudCA/PyAxLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvdXNlci1hc3NvY2lhdGlvbnMvY3JlYXRlJywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0Q3JlYXRlVXNlckFzc29jaWF0aW9uVHJhbnNhY3Rpb24sXG4gIH0pO1xufTtcblxuY29uc3QgYnVpbGRDcmVhdGVVc2VyQXNzb2NpYXRpb25NZXRhZGF0YSA9IChcbiAgcGFyYW1zOiBDcmVhdGVVc2VyQXNzb2NpYXRpb25SZXF1ZXN0UGFyYW1zXG4pID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YUNyZWF0ZVVzZXJBc3NvY2lhdGlvbigpO1xuICBtZXRhZGF0YS5hcHBQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLkFwcFB1YmxpY0tleUJhc2U1OENoZWNrIHx8ICcnXG4gICk7XG4gIG1ldGFkYXRhLmFzc29jaWF0aW9uVHlwZSA9IGVuY29kZVVURjhUb0J5dGVzKHBhcmFtcy5Bc3NvY2lhdGlvblR5cGUpO1xuICBtZXRhZGF0YS5hc3NvY2lhdGlvblZhbHVlID0gZW5jb2RlVVRGOFRvQnl0ZXMocGFyYW1zLkFzc29jaWF0aW9uVmFsdWUpO1xuICBtZXRhZGF0YS50YXJnZXRVc2VyUHVibGljS2V5ID0gYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKFxuICAgIHBhcmFtcy5UYXJnZXRVc2VyUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0Q3JlYXRlVXNlckFzc29jaWF0aW9uVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogQ3JlYXRlVXNlckFzc29jaWF0aW9uUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KFxuICAgIHBhcmFtcy5UcmFuc2FjdG9yUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRDcmVhdGVVc2VyQXNzb2NpYXRpb25NZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvYXNzb2NpYXRpb25zLXRyYW5zYWN0aW9ucy1hcGkjZGVsZXRlLXVzZXItYXNzb2NpYXRpb25cbiAqL1xuXG5leHBvcnQgdHlwZSBEZWxldGVVc2VyQXNzb2NpYXRpb25SZXF1ZXN0UGFyYW1zID1cbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgICBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgICAgRGVsZXRlQXNzb2NpYXRpb25SZXF1ZXN0LFxuICAgICAgJ1RyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjaycgfCAnQXNzb2NpYXRpb25JRCdcbiAgICA+XG4gID47XG5cbmV4cG9ydCBjb25zdCBkZWxldGVVc2VyQXNzb2NpYXRpb24gPSBhc3luYyAoXG4gIHBhcmFtczogRGVsZXRlVXNlckFzc29jaWF0aW9uUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxBc3NvY2lhdGlvblR4blJlc3BvbnNlPj4gPT4ge1xuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL3VzZXItYXNzb2NpYXRpb25zL2RlbGV0ZScsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdERlbGV0ZVVzZXJBc3NvY2lhdGlvblRyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkRGVsZXRlVXNlckFzc29jaWF0aW9uTWV0YWRhdGEgPSAoXG4gIHBhcmFtczogRGVsZXRlUG9zdEFzc29jaWF0aW9uUmVxdWVzdFBhcmFtc1xuKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFEZWxldGVVc2VyQXNzb2NpYXRpb24oKTtcbiAgbWV0YWRhdGEuYXNzb2NpYXRpb25JRCA9IGVuY29kZVVURjhUb0J5dGVzKHBhcmFtcy5Bc3NvY2lhdGlvbklEKTtcbiAgcmV0dXJuIG1ldGFkYXRhO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdERlbGV0ZVVzZXJBc3NvY2lhdGlvblRyYW5zYWN0aW9uID0gKFxuICBwYXJhbXM6IERlbGV0ZVVzZXJBc3NvY2lhdGlvblJlcXVlc3RQYXJhbXNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChcbiAgICBwYXJhbXMuVHJhbnNhY3RvclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkRGVsZXRlVXNlckFzc29jaWF0aW9uTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9jb25zdHJ1Y3QtdHJhbnNhY3Rpb25zL2Fzc29jaWF0aW9ucy10cmFuc2FjdGlvbnMtYXBpI2NyZWF0ZS1wb3N0LWFzc29jaWF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIENyZWF0ZVBvc3RBc3NvY2lhdGlvblJlcXVlc3RQYXJhbXMgPVxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICAgIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgICBDcmVhdGVQb3N0QXNzb2NpYXRpb25SZXF1ZXN0LFxuICAgICAgfCAnUG9zdEhhc2hIZXgnXG4gICAgICB8ICdUcmFuc2FjdG9yUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgICB8ICdBc3NvY2lhdGlvblR5cGUnXG4gICAgICB8ICdBc3NvY2lhdGlvblZhbHVlJ1xuICAgID5cbiAgPjtcbmV4cG9ydCBjb25zdCBjcmVhdGVQb3N0QXNzb2NpYXRpb24gPSBhc3luYyAoXG4gIHBhcmFtczogQ3JlYXRlUG9zdEFzc29jaWF0aW9uUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxBc3NvY2lhdGlvblR4blJlc3BvbnNlPj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuVHJhbnNhY3RvclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQ3JlYXRlUG9zdEFzc29jaWF0aW9uTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIEFzc29jaWF0aW9uTGltaXRNYXA6IFtcbiAgICAgICAge1xuICAgICAgICAgIEFzc29jaWF0aW9uQ2xhc3M6ICdQb3N0JyxcbiAgICAgICAgICBBc3NvY2lhdGlvblR5cGU6IHBhcmFtcy5Bc3NvY2lhdGlvblR5cGUsXG4gICAgICAgICAgQXBwU2NvcGVUeXBlOiBwYXJhbXMuQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgPyAnU2NvcGVkJyA6ICdBbnknLFxuICAgICAgICAgIEFwcFB1YmxpY0tleUJhc2U1OENoZWNrOiBwYXJhbXMuQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgPz8gJycsXG4gICAgICAgICAgQXNzb2NpYXRpb25PcGVyYXRpb246ICdDcmVhdGUnLFxuICAgICAgICAgIE9wQ291bnQ6IG9wdGlvbnM/LnR4TGltaXRDb3VudCA/PyAxLFxuICAgICAgICB9LFxuICAgICAgICAvLyBOT1RFOiBUaGlzIGlzIGEgYml0IHdlaXJkLCBidXQgd2UgZG9uJ3QgaGF2ZSBBcHBQdWJsaWNLZXlCYXNlNThDaGVja1xuICAgICAgICAvLyBvciBBc3NvY2lhdGlvblR5cGUgaW4gdGhlIGRlbGV0ZSBwYXJhbXMsIHNvIHdlIGp1c3QgYXNrIGZvciBkZWxldGVcbiAgICAgICAgLy8gcGVybWlzc2lvbiBhdCB0aGUgc2FtZSB0aW1lIHRoZSBhc3NvY2lhdGlvbiBpcyBjcmVhdGVkLlxuICAgICAgICB7XG4gICAgICAgICAgQXNzb2NpYXRpb25DbGFzczogJ1Bvc3QnLFxuICAgICAgICAgIEFzc29jaWF0aW9uVHlwZTogcGFyYW1zLkFzc29jaWF0aW9uVHlwZSxcbiAgICAgICAgICBBcHBTY29wZVR5cGU6IHBhcmFtcy5BcHBQdWJsaWNLZXlCYXNlNThDaGVjayA/ICdTY29wZWQnIDogJ0FueScsXG4gICAgICAgICAgQXBwUHVibGljS2V5QmFzZTU4Q2hlY2s6IHBhcmFtcy5BcHBQdWJsaWNLZXlCYXNlNThDaGVjayA/PyAnJyxcbiAgICAgICAgICBBc3NvY2lhdGlvbk9wZXJhdGlvbjogJ0RlbGV0ZScsXG4gICAgICAgICAgT3BDb3VudDogb3B0aW9ucz8udHhMaW1pdENvdW50ID8/IDEsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC9wb3N0LWFzc29jaWF0aW9ucy9jcmVhdGUnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RDcmVhdGVQb3N0QXNzb2NpYXRpb25UcmFuc2FjdGlvbixcbiAgfSk7XG59O1xuXG5jb25zdCBidWlsZENyZWF0ZVBvc3RBc3NvY2lhdGlvbk1ldGFkYXRhID0gKFxuICBwYXJhbXM6IENyZWF0ZVBvc3RBc3NvY2lhdGlvblJlcXVlc3RQYXJhbXNcbikgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhQ3JlYXRlUG9zdEFzc29jaWF0aW9uKCk7XG4gIG1ldGFkYXRhLmFwcFB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgfHwgJydcbiAgKTtcbiAgbWV0YWRhdGEuYXNzb2NpYXRpb25UeXBlID0gZW5jb2RlVVRGOFRvQnl0ZXMocGFyYW1zLkFzc29jaWF0aW9uVHlwZSk7XG4gIG1ldGFkYXRhLmFzc29jaWF0aW9uVmFsdWUgPSBlbmNvZGVVVEY4VG9CeXRlcyhwYXJhbXMuQXNzb2NpYXRpb25WYWx1ZSk7XG4gIG1ldGFkYXRhLnBvc3RIYXNoID0gaGV4VG9CeXRlcyhwYXJhbXMuUG9zdEhhc2hIZXgpO1xuXG4gIHJldHVybiBtZXRhZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RDcmVhdGVQb3N0QXNzb2NpYXRpb25UcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBDcmVhdGVQb3N0QXNzb2NpYXRpb25SZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlRyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZENyZWF0ZVBvc3RBc3NvY2lhdGlvbk1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9hc3NvY2lhdGlvbnMtdHJhbnNhY3Rpb25zLWFwaSNkZWxldGUtcG9zdC1hc3NvY2lhdGlvblxuICovXG5leHBvcnQgdHlwZSBEZWxldGVQb3N0QXNzb2NpYXRpb25SZXF1ZXN0UGFyYW1zID1cbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgICBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgICAgRGVsZXRlQXNzb2NpYXRpb25SZXF1ZXN0LFxuICAgICAgJ1RyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjaycgfCAnQXNzb2NpYXRpb25JRCdcbiAgICA+XG4gID47XG5cbmV4cG9ydCBjb25zdCBkZWxldGVQb3N0QXNzb2NpYXRpb24gPSAoXG4gIHBhcmFtczogRGVsZXRlUG9zdEFzc29jaWF0aW9uUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8QXNzb2NpYXRpb25UeG5SZXNwb25zZT4+ID0+IHtcbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC9wb3N0LWFzc29jaWF0aW9ucy9kZWxldGUnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3REZWxldGVQb3N0QXNzb2NpYXRpb25UcmFuc2FjdGlvbixcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0RGVsZXRlUG9zdEFzc29jaWF0aW9uVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogRGVsZXRlUG9zdEFzc29jaWF0aW9uUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YURlbGV0ZVBvc3RBc3NvY2lhdGlvbigpO1xuICBtZXRhZGF0YS5hc3NvY2lhdGlvbklEID0gZW5jb2RlVVRGOFRvQnl0ZXMocGFyYW1zLkFzc29jaWF0aW9uSUQpO1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlRyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBtZXRhZGF0YSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG4iXX0=

@@ -1,4 +0,4 @@

import { AuthorizeDerivedKeyRequest, AuthorizeDerivedKeyResponse, ConstructedTransactionResponse, RequestOptions, TxRequestWithOptionalFeesAndExtraData } from '../backend-types';
import { PartialWithRequiredFields } from '../data';
import { ConstructedAndSubmittedTx } from '../types';
import { AuthorizeDerivedKeyRequest, AuthorizeDerivedKeyResponse, ConstructedTransactionResponse, RequestOptions, TxRequestWithOptionalFeesAndExtraData } from '../backend-types/index.js';
import { PartialWithRequiredFields } from '../data/index.js';
import { ConstructedAndSubmittedTx } from '../types.js';
/**

@@ -5,0 +5,0 @@ * https://docs.deso.org/deso-backend/construct-transactions/derived-keys-transaction-api#authorize-derived-key

import { bytesToHex, hexToBytes } from '@noble/hashes/utils';
import { bs58PublicKeyToCompressedBytes, encodeUTF8ToBytes, TransactionExtraDataKV, TransactionMetadataAuthorizeDerivedKey, } from '../identity';
import { constructBalanceModelTx, handleSignAndSubmit } from '../internal';
import { TransactionExtraDataKV, TransactionMetadataAuthorizeDerivedKey, bs58PublicKeyToCompressedBytes, encodeUTF8ToBytes, } from '../identity/index.js';
import { constructBalanceModelTx, handleSignAndSubmit } from '../internal.js';
export const authorizeDerivedKey = (params, options) => {
return handleSignAndSubmit('api/v0/authorize-derived-key', params, Object.assign(Object.assign({}, options), { constructionFunction: constructAuthorizeDerivedKey }));
return handleSignAndSubmit('api/v0/authorize-derived-key', params, {
...options,
constructionFunction: constructAuthorizeDerivedKey,
});
};

@@ -34,2 +37,2 @@ export const constructAuthorizeDerivedKey = (params) => {

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVyaXZlZC1rZXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9ucy9kZXJpdmVkLWtleXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVM3RCxPQUFPLEVBQ0wsOEJBQThCLEVBQzlCLGlCQUFpQixFQUNqQixzQkFBc0IsRUFDdEIsc0NBQXNDLEdBQ3ZDLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQWdCM0UsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FDakMsTUFBd0MsRUFDeEMsT0FBd0IsRUFDeUMsRUFBRTtJQUNuRSxPQUFPLG1CQUFtQixDQUFDLDhCQUE4QixFQUFFLE1BQU0sa0NBQzVELE9BQU8sS0FDVixvQkFBb0IsRUFBRSw0QkFBNEIsSUFDbEQsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQzFDLE1BQXdDLEVBQ0MsRUFBRTtJQUMzQyxNQUFNLFFBQVEsR0FBRyxJQUFJLHNDQUFzQyxFQUFFLENBQUM7SUFDOUQsUUFBUSxDQUFDLGVBQWUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRSxRQUFRLENBQUMsZ0JBQWdCLEdBQUcsOEJBQThCLENBQ3hELE1BQU0sQ0FBQywyQkFBMkIsQ0FDbkMsQ0FBQztJQUNGLFFBQVEsQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztJQUNsRCxRQUFRLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELE1BQU0scUJBQXFCLEdBQTZCLEVBQUUsQ0FBQztJQUMzRCxJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRTtRQUM5QixxQkFBcUIsQ0FBQyxJQUFJLENBQ3hCLElBQUksc0JBQXNCLENBQ3hCLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLEVBQ3JDLDhCQUE4QixDQUFDLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUNuRSxDQUNGLENBQUM7S0FDSDtJQUNELElBQUksTUFBTSxDQUFDLDJCQUEyQixFQUFFO1FBQ3RDLE1BQU0sMkJBQTJCLEdBQUcsVUFBVSxDQUM1QyxNQUFNLENBQUMsMkJBQTJCLENBQ25DLENBQUM7UUFDRixJQUFJLDJCQUEyQixDQUFDLE1BQU0sRUFBRTtZQUN0QyxxQkFBcUIsQ0FBQyxJQUFJLENBQ3hCLElBQUksc0JBQXNCLENBQ3hCLGlCQUFpQixDQUFDLDBCQUEwQixDQUFDLEVBQzdDLDJCQUEyQixDQUM1QixDQUNGLENBQUM7U0FDSDtLQUNGO0lBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7UUFDakMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSyxNQUFNLENBQUMsT0FBa0IsQ0FBQztRQUN2RCxxQkFBcUIsQ0FBQyxJQUFJLENBQ3hCLElBQUksc0JBQXNCLENBQ3hCLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLEVBQ25DLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ3ZELENBQ0YsQ0FBQztLQUNIO0lBQ0QsT0FBTyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMseUJBQXlCLEVBQUUsUUFBUSxFQUFFO1FBQ3pFLHFCQUFxQixFQUFFLHFCQUFxQjtRQUM1QyxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDM0Isb0JBQW9CLEVBQUUsTUFBTSxDQUFDLG9CQUFvQjtRQUNqRCxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7S0FDeEMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYnl0ZXNUb0hleCwgaGV4VG9CeXRlcyB9IGZyb20gJ0Bub2JsZS9oYXNoZXMvdXRpbHMnO1xuaW1wb3J0IHtcbiAgQXV0aG9yaXplRGVyaXZlZEtleVJlcXVlc3QsXG4gIEF1dGhvcml6ZURlcml2ZWRLZXlSZXNwb25zZSxcbiAgQ29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlLFxuICBSZXF1ZXN0T3B0aW9ucyxcbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YSxcbn0gZnJvbSAnLi4vYmFja2VuZC10eXBlcyc7XG5pbXBvcnQgeyBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzIH0gZnJvbSAnLi4vZGF0YSc7XG5pbXBvcnQge1xuICBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMsXG4gIGVuY29kZVVURjhUb0J5dGVzLFxuICBUcmFuc2FjdGlvbkV4dHJhRGF0YUtWLFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhQXV0aG9yaXplRGVyaXZlZEtleSxcbn0gZnJvbSAnLi4vaWRlbnRpdHknO1xuaW1wb3J0IHsgY29uc3RydWN0QmFsYW5jZU1vZGVsVHgsIGhhbmRsZVNpZ25BbmRTdWJtaXQgfSBmcm9tICcuLi9pbnRlcm5hbCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4IH0gZnJvbSAnLi4vdHlwZXMnO1xuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvZGVyaXZlZC1rZXlzLXRyYW5zYWN0aW9uLWFwaSNhdXRob3JpemUtZGVyaXZlZC1rZXlcbiAqL1xuZXhwb3J0IHR5cGUgQXV0aG9yaXplRGVyaXZlZEtleVJlcXVlc3RQYXJhbXMgPVxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICAgIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgICBBdXRob3JpemVEZXJpdmVkS2V5UmVxdWVzdCxcbiAgICAgIHwgJ093bmVyUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgICB8ICdEZXJpdmVkUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgICB8ICdUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRIZXgnXG4gICAgICB8ICdNZW1vJ1xuICAgICAgfCAnRXhwaXJhdGlvbkJsb2NrJ1xuICAgID5cbiAgPjtcbmV4cG9ydCBjb25zdCBhdXRob3JpemVEZXJpdmVkS2V5ID0gKFxuICBwYXJhbXM6IEF1dGhvcml6ZURlcml2ZWRLZXlSZXF1ZXN0UGFyYW1zLFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxBdXRob3JpemVEZXJpdmVkS2V5UmVzcG9uc2U+PiA9PiB7XG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvYXV0aG9yaXplLWRlcml2ZWQta2V5JywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0QXV0aG9yaXplRGVyaXZlZEtleSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0QXV0aG9yaXplRGVyaXZlZEtleSA9IChcbiAgcGFyYW1zOiBBdXRob3JpemVEZXJpdmVkS2V5UmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YUF1dGhvcml6ZURlcml2ZWRLZXkoKTtcbiAgbWV0YWRhdGEuYWNjZXNzU2lnbmF0dXJlID0gaGV4VG9CeXRlcyhwYXJhbXMuQWNjZXNzU2lnbmF0dXJlIHx8ICcnKTtcbiAgbWV0YWRhdGEuZGVyaXZlZFB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuRGVyaXZlZFB1YmxpY0tleUJhc2U1OENoZWNrXG4gICk7XG4gIG1ldGFkYXRhLmV4cGlyYXRpb25CbG9jayA9IHBhcmFtcy5FeHBpcmF0aW9uQmxvY2s7XG4gIG1ldGFkYXRhLm9wZXJhdGlvblR5cGUgPSBwYXJhbXMuRGVsZXRlS2V5ID8gMCA6IDE7XG4gIGNvbnN0IGNvbnNlbnN1c0V4dHJhRGF0YUtWczogVHJhbnNhY3Rpb25FeHRyYURhdGFLVltdID0gW107XG4gIGlmIChwYXJhbXMuRGVyaXZlZEtleVNpZ25hdHVyZSkge1xuICAgIGNvbnNlbnN1c0V4dHJhRGF0YUtWcy5wdXNoKFxuICAgICAgbmV3IFRyYW5zYWN0aW9uRXh0cmFEYXRhS1YoXG4gICAgICAgIGVuY29kZVVURjhUb0J5dGVzKCdEZXJpdmVkUHVibGljS2V5JyksXG4gICAgICAgIGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhwYXJhbXMuRGVyaXZlZFB1YmxpY0tleUJhc2U1OENoZWNrKVxuICAgICAgKVxuICAgICk7XG4gIH1cbiAgaWYgKHBhcmFtcy5UcmFuc2FjdGlvblNwZW5kaW5nTGltaXRIZXgpIHtcbiAgICBjb25zdCB0cmFuc2FjdGlvblNwZW5kaW5nTGltaXRCdWYgPSBoZXhUb0J5dGVzKFxuICAgICAgcGFyYW1zLlRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdEhleFxuICAgICk7XG4gICAgaWYgKHRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdEJ1Zi5sZW5ndGgpIHtcbiAgICAgIGNvbnNlbnN1c0V4dHJhRGF0YUtWcy5wdXNoKFxuICAgICAgICBuZXcgVHJhbnNhY3Rpb25FeHRyYURhdGFLVihcbiAgICAgICAgICBlbmNvZGVVVEY4VG9CeXRlcygnVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0JyksXG4gICAgICAgICAgdHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0QnVmXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGlmIChwYXJhbXMuTWVtbyB8fCBwYXJhbXMuQXBwTmFtZSkge1xuICAgIGNvbnN0IG1lbW8gPSBwYXJhbXMuTWVtbyB8fCAocGFyYW1zLkFwcE5hbWUgYXMgc3RyaW5nKTtcbiAgICBjb25zZW5zdXNFeHRyYURhdGFLVnMucHVzaChcbiAgICAgIG5ldyBUcmFuc2FjdGlvbkV4dHJhRGF0YUtWKFxuICAgICAgICBlbmNvZGVVVEY4VG9CeXRlcygnRGVyaXZlZEtleU1lbW8nKSxcbiAgICAgICAgZW5jb2RlVVRGOFRvQnl0ZXMoYnl0ZXNUb0hleChlbmNvZGVVVEY4VG9CeXRlcyhtZW1vKSkpXG4gICAgICApXG4gICAgKTtcbiAgfVxuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgocGFyYW1zLk93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2ssIG1ldGFkYXRhLCB7XG4gICAgQ29uc2Vuc3VzRXh0cmFEYXRhS1ZzOiBjb25zZW5zdXNFeHRyYURhdGFLVnMsXG4gICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICB9KTtcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVyaXZlZC1rZXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9ucy9kZXJpdmVkLWtleXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVM3RCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLHNDQUFzQyxFQUN0Qyw4QkFBOEIsRUFDOUIsaUJBQWlCLEdBQ2xCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFnQjlFLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQ2pDLE1BQXdDLEVBQ3hDLE9BQXdCLEVBQ3lDLEVBQUU7SUFDbkUsT0FBTyxtQkFBbUIsQ0FBQyw4QkFBOEIsRUFBRSxNQUFNLEVBQUU7UUFDakUsR0FBRyxPQUFPO1FBQ1Ysb0JBQW9CLEVBQUUsNEJBQTRCO0tBQ25ELENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQzFDLE1BQXdDLEVBQ0MsRUFBRTtJQUMzQyxNQUFNLFFBQVEsR0FBRyxJQUFJLHNDQUFzQyxFQUFFLENBQUM7SUFDOUQsUUFBUSxDQUFDLGVBQWUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRSxRQUFRLENBQUMsZ0JBQWdCLEdBQUcsOEJBQThCLENBQ3hELE1BQU0sQ0FBQywyQkFBMkIsQ0FDbkMsQ0FBQztJQUNGLFFBQVEsQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztJQUNsRCxRQUFRLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELE1BQU0scUJBQXFCLEdBQTZCLEVBQUUsQ0FBQztJQUMzRCxJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRTtRQUM5QixxQkFBcUIsQ0FBQyxJQUFJLENBQ3hCLElBQUksc0JBQXNCLENBQ3hCLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLEVBQ3JDLDhCQUE4QixDQUFDLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUNuRSxDQUNGLENBQUM7S0FDSDtJQUNELElBQUksTUFBTSxDQUFDLDJCQUEyQixFQUFFO1FBQ3RDLE1BQU0sMkJBQTJCLEdBQUcsVUFBVSxDQUM1QyxNQUFNLENBQUMsMkJBQTJCLENBQ25DLENBQUM7UUFDRixJQUFJLDJCQUEyQixDQUFDLE1BQU0sRUFBRTtZQUN0QyxxQkFBcUIsQ0FBQyxJQUFJLENBQ3hCLElBQUksc0JBQXNCLENBQ3hCLGlCQUFpQixDQUFDLDBCQUEwQixDQUFDLEVBQzdDLDJCQUEyQixDQUM1QixDQUNGLENBQUM7U0FDSDtLQUNGO0lBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7UUFDakMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSyxNQUFNLENBQUMsT0FBa0IsQ0FBQztRQUN2RCxxQkFBcUIsQ0FBQyxJQUFJLENBQ3hCLElBQUksc0JBQXNCLENBQ3hCLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLEVBQ25DLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ3ZELENBQ0YsQ0FBQztLQUNIO0lBQ0QsT0FBTyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMseUJBQXlCLEVBQUUsUUFBUSxFQUFFO1FBQ3pFLHFCQUFxQixFQUFFLHFCQUFxQjtRQUM1QyxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDM0Isb0JBQW9CLEVBQUUsTUFBTSxDQUFDLG9CQUFvQjtRQUNqRCxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7S0FDeEMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYnl0ZXNUb0hleCwgaGV4VG9CeXRlcyB9IGZyb20gJ0Bub2JsZS9oYXNoZXMvdXRpbHMnO1xuaW1wb3J0IHtcbiAgQXV0aG9yaXplRGVyaXZlZEtleVJlcXVlc3QsXG4gIEF1dGhvcml6ZURlcml2ZWRLZXlSZXNwb25zZSxcbiAgQ29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlLFxuICBSZXF1ZXN0T3B0aW9ucyxcbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YSxcbn0gZnJvbSAnLi4vYmFja2VuZC10eXBlcy9pbmRleC5qcyc7XG5pbXBvcnQgeyBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzIH0gZnJvbSAnLi4vZGF0YS9pbmRleC5qcyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbkV4dHJhRGF0YUtWLFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhQXV0aG9yaXplRGVyaXZlZEtleSxcbiAgYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzLFxuICBlbmNvZGVVVEY4VG9CeXRlcyxcbn0gZnJvbSAnLi4vaWRlbnRpdHkvaW5kZXguanMnO1xuaW1wb3J0IHsgY29uc3RydWN0QmFsYW5jZU1vZGVsVHgsIGhhbmRsZVNpZ25BbmRTdWJtaXQgfSBmcm9tICcuLi9pbnRlcm5hbC5qcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4IH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvZGVyaXZlZC1rZXlzLXRyYW5zYWN0aW9uLWFwaSNhdXRob3JpemUtZGVyaXZlZC1rZXlcbiAqL1xuZXhwb3J0IHR5cGUgQXV0aG9yaXplRGVyaXZlZEtleVJlcXVlc3RQYXJhbXMgPVxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICAgIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgICBBdXRob3JpemVEZXJpdmVkS2V5UmVxdWVzdCxcbiAgICAgIHwgJ093bmVyUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgICB8ICdEZXJpdmVkUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgICB8ICdUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRIZXgnXG4gICAgICB8ICdNZW1vJ1xuICAgICAgfCAnRXhwaXJhdGlvbkJsb2NrJ1xuICAgID5cbiAgPjtcbmV4cG9ydCBjb25zdCBhdXRob3JpemVEZXJpdmVkS2V5ID0gKFxuICBwYXJhbXM6IEF1dGhvcml6ZURlcml2ZWRLZXlSZXF1ZXN0UGFyYW1zLFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxBdXRob3JpemVEZXJpdmVkS2V5UmVzcG9uc2U+PiA9PiB7XG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvYXV0aG9yaXplLWRlcml2ZWQta2V5JywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0QXV0aG9yaXplRGVyaXZlZEtleSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0QXV0aG9yaXplRGVyaXZlZEtleSA9IChcbiAgcGFyYW1zOiBBdXRob3JpemVEZXJpdmVkS2V5UmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YUF1dGhvcml6ZURlcml2ZWRLZXkoKTtcbiAgbWV0YWRhdGEuYWNjZXNzU2lnbmF0dXJlID0gaGV4VG9CeXRlcyhwYXJhbXMuQWNjZXNzU2lnbmF0dXJlIHx8ICcnKTtcbiAgbWV0YWRhdGEuZGVyaXZlZFB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuRGVyaXZlZFB1YmxpY0tleUJhc2U1OENoZWNrXG4gICk7XG4gIG1ldGFkYXRhLmV4cGlyYXRpb25CbG9jayA9IHBhcmFtcy5FeHBpcmF0aW9uQmxvY2s7XG4gIG1ldGFkYXRhLm9wZXJhdGlvblR5cGUgPSBwYXJhbXMuRGVsZXRlS2V5ID8gMCA6IDE7XG4gIGNvbnN0IGNvbnNlbnN1c0V4dHJhRGF0YUtWczogVHJhbnNhY3Rpb25FeHRyYURhdGFLVltdID0gW107XG4gIGlmIChwYXJhbXMuRGVyaXZlZEtleVNpZ25hdHVyZSkge1xuICAgIGNvbnNlbnN1c0V4dHJhRGF0YUtWcy5wdXNoKFxuICAgICAgbmV3IFRyYW5zYWN0aW9uRXh0cmFEYXRhS1YoXG4gICAgICAgIGVuY29kZVVURjhUb0J5dGVzKCdEZXJpdmVkUHVibGljS2V5JyksXG4gICAgICAgIGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhwYXJhbXMuRGVyaXZlZFB1YmxpY0tleUJhc2U1OENoZWNrKVxuICAgICAgKVxuICAgICk7XG4gIH1cbiAgaWYgKHBhcmFtcy5UcmFuc2FjdGlvblNwZW5kaW5nTGltaXRIZXgpIHtcbiAgICBjb25zdCB0cmFuc2FjdGlvblNwZW5kaW5nTGltaXRCdWYgPSBoZXhUb0J5dGVzKFxuICAgICAgcGFyYW1zLlRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdEhleFxuICAgICk7XG4gICAgaWYgKHRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdEJ1Zi5sZW5ndGgpIHtcbiAgICAgIGNvbnNlbnN1c0V4dHJhRGF0YUtWcy5wdXNoKFxuICAgICAgICBuZXcgVHJhbnNhY3Rpb25FeHRyYURhdGFLVihcbiAgICAgICAgICBlbmNvZGVVVEY4VG9CeXRlcygnVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0JyksXG4gICAgICAgICAgdHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0QnVmXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGlmIChwYXJhbXMuTWVtbyB8fCBwYXJhbXMuQXBwTmFtZSkge1xuICAgIGNvbnN0IG1lbW8gPSBwYXJhbXMuTWVtbyB8fCAocGFyYW1zLkFwcE5hbWUgYXMgc3RyaW5nKTtcbiAgICBjb25zZW5zdXNFeHRyYURhdGFLVnMucHVzaChcbiAgICAgIG5ldyBUcmFuc2FjdGlvbkV4dHJhRGF0YUtWKFxuICAgICAgICBlbmNvZGVVVEY4VG9CeXRlcygnRGVyaXZlZEtleU1lbW8nKSxcbiAgICAgICAgZW5jb2RlVVRGOFRvQnl0ZXMoYnl0ZXNUb0hleChlbmNvZGVVVEY4VG9CeXRlcyhtZW1vKSkpXG4gICAgICApXG4gICAgKTtcbiAgfVxuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgocGFyYW1zLk93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2ssIG1ldGFkYXRhLCB7XG4gICAgQ29uc2Vuc3VzRXh0cmFEYXRhS1ZzOiBjb25zZW5zdXNFeHRyYURhdGFLVnMsXG4gICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICB9KTtcbn07XG4iXX0=

@@ -1,4 +0,4 @@

import { ConstructedTransactionResponse, DAOCoinLimitOrderResponse, DAOCoinLimitOrderWithCancelOrderIDRequest, DAOCoinLimitOrderWithExchangeRateAndQuantityRequest, DAOCoinRequest, DAOCoinResponse, RequestOptions, TransferDAOCoinRequest, TransferDAOCoinResponse, TxRequestWithOptionalFeesAndExtraData } from '../backend-types';
import { PartialWithRequiredFields } from '../data';
import { ConstructedAndSubmittedTx } from '../types';
import { ConstructedTransactionResponse, DAOCoinLimitOrderResponse, DAOCoinLimitOrderWithCancelOrderIDRequest, DAOCoinLimitOrderWithExchangeRateAndQuantityRequest, DAOCoinRequest, DAOCoinResponse, RequestOptions, TransferDAOCoinRequest, TransferDAOCoinResponse, TxRequestWithOptionalFeesAndExtraData } from '../backend-types/index.js';
import { PartialWithRequiredFields } from '../data/index.js';
import { ConstructedAndSubmittedTx } from '../types.js';
/**

@@ -5,0 +5,0 @@ * https://docs.deso.org/deso-backend/construct-transactions/dao-transactions-api#create-deso-token-dao-coin

import { hexToBytes } from '@noble/hashes/utils';
import { bs58PublicKeyToCompressedBytes, TransactionMetadataDAOCoin, TransactionMetadataTransferDAOCoin, } from '../identity';
import { constructBalanceModelTx, handleSignAndSubmit, isMaybeDeSoPublicKey, } from '../internal';
import { TransactionMetadataDAOCoin, TransactionMetadataTransferDAOCoin, bs58PublicKeyToCompressedBytes, } from '../identity/index.js';
import { constructBalanceModelTx, handleSignAndSubmit, isMaybeDeSoPublicKey, } from '../internal.js';
export const burnDeSoToken = (params, options) => {
return handleSignAndSubmit('api/v0/dao-coin', Object.assign(Object.assign({}, params), { OperationType: 'burn' }), Object.assign(Object.assign({}, options), { constructionFunction: constructBurnDeSoTokenTransaction }));
return handleSignAndSubmit('api/v0/dao-coin', {
...params,
OperationType: 'burn',
}, { ...options, constructionFunction: constructBurnDeSoTokenTransaction });
};

@@ -24,3 +27,6 @@ export const constructBurnDeSoTokenTransaction = (params) => {

export const mintDeSoToken = (params, options) => {
return handleSignAndSubmit('api/v0/dao-coin', Object.assign(Object.assign({}, params), { OperationType: 'mint' }), Object.assign(Object.assign({}, options), { constructionFunction: constructMintDeSoTokenTransaction }));
return handleSignAndSubmit('api/v0/dao-coin', {
...params,
OperationType: 'mint',
}, { ...options, constructionFunction: constructMintDeSoTokenTransaction });
};

@@ -44,3 +50,9 @@ export const constructMintDeSoTokenTransaction = (params) => {

export const updateDeSoTokenTransferRestrictionStatus = (params, options) => {
return handleSignAndSubmit('api/v0/dao-coin', Object.assign(Object.assign({}, params), { OperationType: 'update_transfer_restriction_status' }), Object.assign(Object.assign({}, options), { constructionFunction: constructUpdateDeSoTokenTransferRestrictionStatusTransaction }));
return handleSignAndSubmit('api/v0/dao-coin', {
...params,
OperationType: 'update_transfer_restriction_status',
}, {
...options,
constructionFunction: constructUpdateDeSoTokenTransferRestrictionStatusTransaction,
});
};

@@ -81,3 +93,6 @@ export const constructUpdateDeSoTokenTransferRestrictionStatusTransaction = (params) => {

export const disableMintingDeSoToken = (params, options) => {
return handleSignAndSubmit('api/v0/dao-coin', Object.assign(Object.assign({}, params), { OperationType: 'disable_minting' }), Object.assign(Object.assign({}, options), { constructionFunction: constructDisableMintingDeSoToken }));
return handleSignAndSubmit('api/v0/dao-coin', {
...params,
OperationType: 'disable_minting',
}, { ...options, constructionFunction: constructDisableMintingDeSoToken });
};

@@ -103,3 +118,6 @@ export const constructDisableMintingDeSoToken = (params) => {

export const transferDeSoToken = (params, options) => {
return handleSignAndSubmit('api/v0/transfer-dao-coin', params, Object.assign(Object.assign({}, options), { constructionFunction: constructTransferDeSoToken }));
return handleSignAndSubmit('api/v0/transfer-dao-coin', params, {
...options,
constructionFunction: constructTransferDeSoToken,
});
};

@@ -125,3 +143,7 @@ export const constructTransferDeSoToken = (params) => {

export const buyDeSoTokenLimitOrder = (params, options) => {
return handleSignAndSubmit('api/v0/create-dao-coin-limit-order', Object.assign(Object.assign({}, params), { SellingDAOCoinCreatorPublicKeyBase58Check: '', OperationType: 'BID' }), options);
return handleSignAndSubmit('api/v0/create-dao-coin-limit-order', {
...params,
SellingDAOCoinCreatorPublicKeyBase58Check: '',
OperationType: 'BID',
}, options);
};

@@ -132,3 +154,7 @@ /**

export const sellDeSoTokenLimitOrder = (params, options) => {
return handleSignAndSubmit('api/v0/create-dao-coin-limit-order', Object.assign(Object.assign({}, params), { SellingDAOCoinCreatorPublicKeyBase58Check: '', OperationType: 'ASK' }), options);
return handleSignAndSubmit('api/v0/create-dao-coin-limit-order', {
...params,
SellingDAOCoinCreatorPublicKeyBase58Check: '',
OperationType: 'ASK',
}, options);
};

@@ -141,2 +167,2 @@ /**

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzby10b2tlbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb25zL2Rlc28tdG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQWNqRCxPQUFPLEVBQ0wsOEJBQThCLEVBQzlCLDBCQUEwQixFQUMxQixrQ0FBa0MsR0FDbkMsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixtQkFBbUIsRUFDbkIsb0JBQW9CLEdBQ3JCLE1BQU0sYUFBYSxDQUFDO0FBY3JCLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUMzQixNQUEyQyxFQUMzQyxPQUF3QixFQUM2QixFQUFFO0lBQ3ZELE9BQU8sbUJBQW1CLENBQ3hCLGlCQUFpQixrQ0FFWixNQUFNLEtBQ1QsYUFBYSxFQUFFLE1BQU0scUNBRWxCLE9BQU8sS0FBRSxvQkFBb0IsRUFBRSxpQ0FBaUMsSUFDdEUsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFHLENBQy9DLE1BQTJDLEVBQ0YsRUFBRTtJQUMzQyxNQUFNLFFBQVEsR0FBRyxJQUFJLDBCQUEwQixFQUFFLENBQUM7SUFDbEQsd0VBQXdFO0lBQ3hFLHNDQUFzQztJQUN0QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLHFDQUFxQyxDQUFDLEVBQUU7UUFDdkUsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUNuQixrRkFBa0YsQ0FDbkYsQ0FBQztLQUNIO0lBQ0QsUUFBUSxDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FDcEMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQzNDLENBQUM7SUFDRixRQUFRLENBQUMsZ0JBQWdCLEdBQUcsOEJBQThCLENBQ3hELE1BQU0sQ0FBQyxxQ0FBcUMsQ0FDN0Ms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LENBQUMsZUFBZTtLQUN4QyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixpRUFBaUU7QUFDakU7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUNwQyxNQVNDLEVBQ0QsT0FBd0IsRUFDdUMsRUFBRTtJQUNqRSxPQUFPLG1CQUFtQixDQUN4QixvQ0FBb0Msa0NBRS9CLE1BQU0sS0FDVCx5Q0FBeUMsRUFBRSxFQUFFLEVBQzdDLGFBQWEsRUFBRSxLQUFLLEtBRXRCLE9BQU8sQ0FDUixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUNyQyxNQVdDLEVBQ0QsT0FBd0IsRUFDdUMsRUFBRTtJQUNqRSxPQUFPLG1CQUFtQixDQUN4QixvQ0FBb0Msa0NBRS9CLE1BQU0sS0FDVCx5Q0FBeUMsRUFBRSxFQUFFLEVBQzdDLGFBQWEsRUFBRSxLQUFLLEtBRXRCLE9BQU8sQ0FDUixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUN2QyxNQUF3RixFQUN4RixPQUF3QixFQUN1QyxFQUFFO0lBQ2pFLE9BQU8sbUJBQW1CLENBQ3hCLG9DQUFvQyxFQUNwQyxNQUFNLEVBQ04sT0FBTyxDQUNSLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoZXhUb0J5dGVzIH0gZnJvbSAnQG5vYmxlL2hhc2hlcy91dGlscyc7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2UsXG4gIERBT0NvaW5MaW1pdE9yZGVyUmVzcG9uc2UsXG4gIERBT0NvaW5MaW1pdE9yZGVyV2l0aENhbmNlbE9yZGVySURSZXF1ZXN0LFxuICBEQU9Db2luTGltaXRPcmRlcldpdGhFeGNoYW5nZVJhdGVBbmRRdWFudGl0eVJlcXVlc3QsXG4gIERBT0NvaW5SZXF1ZXN0LFxuICBEQU9Db2luUmVzcG9uc2UsXG4gIFJlcXVlc3RPcHRpb25zLFxuICBUcmFuc2ZlckRBT0NvaW5SZXF1ZXN0LFxuICBUcmFuc2ZlckRBT0NvaW5SZXNwb25zZSxcbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YSxcbn0gZnJvbSAnLi4vYmFja2VuZC10eXBlcyc7XG5pbXBvcnQgeyBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzIH0gZnJvbSAnLi4vZGF0YSc7XG5pbXBvcnQge1xuICBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFEQU9Db2luLFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhVHJhbnNmZXJEQU9Db2luLFxufSBmcm9tICcuLi9pZGVudGl0eSc7XG5pbXBvcnQge1xuICBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeCxcbiAgaGFuZGxlU2lnbkFuZFN1Ym1pdCxcbiAgaXNNYXliZURlU29QdWJsaWNLZXksXG59IGZyb20gJy4uL2ludGVybmFsJztcbmltcG9ydCB7IENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHggfSBmcm9tICcuLi90eXBlcyc7XG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9kYW8tdHJhbnNhY3Rpb25zLWFwaSNjcmVhdGUtZGVzby10b2tlbi1kYW8tY29pblxuICovXG5leHBvcnQgdHlwZSBDb25zdHJ1Y3RCdXJuRGVTb1Rva2VuUmVxdWVzdFBhcmFtcyA9XG4gIFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8XG4gICAgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgICAgIE9taXQ8REFPQ29pblJlcXVlc3QsICdPcGVyYXRpb25UeXBlJz4sXG4gICAgICB8ICdVcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgICB8ICdQcm9maWxlUHVibGljS2V5QmFzZTU4Q2hlY2tPclVzZXJuYW1lJ1xuICAgICAgfCAnQ29pbnNUb0J1cm5OYW5vcydcbiAgICA+XG4gID47XG5leHBvcnQgY29uc3QgYnVybkRlU29Ub2tlbiA9IChcbiAgcGFyYW1zOiBDb25zdHJ1Y3RCdXJuRGVTb1Rva2VuUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8REFPQ29pblJlc3BvbnNlPj4gPT4ge1xuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdChcbiAgICAnYXBpL3YwL2Rhby1jb2luJyxcbiAgICB7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBPcGVyYXRpb25UeXBlOiAnYnVybicsXG4gICAgfSxcbiAgICB7IC4uLm9wdGlvbnMsIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RCdXJuRGVTb1Rva2VuVHJhbnNhY3Rpb24gfVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdEJ1cm5EZVNvVG9rZW5UcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBDb25zdHJ1Y3RCdXJuRGVTb1Rva2VuUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YURBT0NvaW4oKTtcbiAgLy8gVE9ETzogSSBrbm93IHdlJ3JlIHBhc3NpbmcgaGV4IHN0cmluZ3MgcmVwcmVzZW50aW5nIHVpbnQyNTYsIGJ1dCBuZWVkXG4gIC8vIHRvIGZpZ3VyZSBvdXQgaG93IHRoZXkgZ28gdG8gYnl0ZXMuXG4gIGlmICghaXNNYXliZURlU29QdWJsaWNLZXkocGFyYW1zLlByb2ZpbGVQdWJsaWNLZXlCYXNlNThDaGVja09yVXNlcm5hbWUpKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgJ211c3QgcHJvdmlkZSBwcm9maWxlIHB1YmxpYyBrZXksIG5vdCB1c2VybmFtZSBmb3IgbG9jYWwgdHJhbnNhY3Rpb24gY29uc3RydWN0aW9uJ1xuICAgICk7XG4gIH1cbiAgbWV0YWRhdGEuY29pbnNUb0J1cm5OYW5vcyA9IGhleFRvQnl0ZXMoXG4gICAgcGFyYW1zLkNvaW5zVG9CdXJuTmFub3MucmVwbGFjZSgnMHgnLCAneCcpXG4gICk7XG4gIG1ldGFkYXRhLnByb2ZpbGVQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLlByb2ZpbGVQdWJsaWNLZXlCYXNlNThDaGVja09yVXNlcm5hbWVcbiAgKTtcbiAgbWV0YWRhdGEub3BlcmF0aW9uVHlwZSA9IDE7XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChwYXJhbXMuVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrLCBtZXRhZGF0YSwge1xuICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgfSk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9kYW8tdHJhbnNhY3Rpb25zLWFwaSNjcmVhdGUtZGVzby10b2tlbi1kYW8tY29pblxuICovXG5leHBvcnQgdHlwZSBNaW50RGVTb1Rva2VuUmVxdWVzdFBhcmFtcyA9IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8XG4gIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgT21pdDxEQU9Db2luUmVxdWVzdCwgJ09wZXJhdGlvblR5cGUnPixcbiAgICB8ICdVcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgfCAnUHJvZmlsZVB1YmxpY0tleUJhc2U1OENoZWNrT3JVc2VybmFtZSdcbiAgICB8ICdDb2luc1RvTWludE5hbm9zJ1xuICA+XG4+O1xuZXhwb3J0IGNvbnN0IG1pbnREZVNvVG9rZW4gPSAoXG4gIHBhcmFtczogTWludERlU29Ub2tlblJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PERBT0NvaW5SZXNwb25zZT4+ID0+IHtcbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoXG4gICAgJ2FwaS92MC9kYW8tY29pbicsXG4gICAge1xuICAgICAgLi4ucGFyYW1zLFxuICAgICAgT3BlcmF0aW9uVHlwZTogJ21pbnQnLFxuICAgIH0sXG4gICAgeyAuLi5vcHRpb25zLCBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0TWludERlU29Ub2tlblRyYW5zYWN0aW9uIH1cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RNaW50RGVTb1Rva2VuVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogTWludERlU29Ub2tlblJlcXVlc3RQYXJhbXNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPiA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFEQU9Db2luKCk7XG4gIC8vIFRPRE86IEkga25vdyB3ZSdyZSBwYXNzaW5nIGhleCBzdHJpbmdzIHJlcHJlc2VudGluZyB1aW50MjU2LCBidXQgbmVlZFxuICAvLyB0byBmaWd1cmUgb3V0IGhvdyB0aGV5IGdvIHRvIGJ5dGVzLlxuICBpZiAoIWlzTWF5YmVEZVNvUHVibGljS2V5KHBhcmFtcy5Qcm9maWxlUHVibGljS2V5QmFzZTU4Q2hlY2tPclVzZXJuYW1lKSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICdtdXN0IHByb3ZpZGUgcHJvZmlsZSBwdWJsaWMga2V5LCBub3QgdXNlcm5hbWUgZm9yIGxvY2FsIHRyYW5zYWN0aW9uIGNvbnN0cnVjdGlvbidcbiAgICApO1xuICB9XG4gIG1ldGFkYXRhLmNvaW5zVG9NaW50TmFub3MgPSBoZXhUb0J5dGVzKFxuICAgIHBhcmFtcy5Db2luc1RvTWludE5hbm9zLnJlcGxhY2UoJzB4JywgJ3gnKVxuICApO1xuICBtZXRhZGF0YS5wcm9maWxlUHVibGljS2V5ID0gYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKFxuICAgIHBhcmFtcy5Qcm9maWxlUHVibGljS2V5QmFzZTU4Q2hlY2tPclVzZXJuYW1lXG4gICk7XG4gIG1ldGFkYXRhLm9wZXJhdGlvblR5cGUgPSAwO1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgocGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjaywgbWV0YWRhdGEsIHtcbiAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvZGFvLXRyYW5zYWN0aW9ucy1hcGkjY3JlYXRlLWRlc28tdG9rZW4tZGFvLWNvaW5cbiAqL1xuZXhwb3J0IHR5cGUgVXBkYXRlRGVTb1Rva2VuVHJhbnNmZXJSZXN0cmljdGlvblN0YXR1c1JlcXVlc3RQYXJhbXMgPVxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICAgIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgICBPbWl0PERBT0NvaW5SZXF1ZXN0LCAnT3BlcmF0aW9uVHlwZScgfCAnVHJhbnNmZXJSZXN0cmljdGlvblN0YXR1cyc+LFxuICAgICAgJ1VwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjaycgfCAnUHJvZmlsZVB1YmxpY0tleUJhc2U1OENoZWNrT3JVc2VybmFtZSdcbiAgICA+ICYge1xuICAgICAgVHJhbnNmZXJSZXN0cmljdGlvblN0YXR1czpcbiAgICAgICAgfCAndW5yZXN0cmljdGVkJ1xuICAgICAgICB8ICdwcm9maWxlX293bmVyX29ubHknXG4gICAgICAgIHwgJ2Rhb19tZW1iZXJzX29ubHknXG4gICAgICAgIHwgJ3Blcm1hbmVudGx5X3VucmVzdHJpY3RlZCc7XG4gICAgfVxuICA+O1xuZXhwb3J0IGNvbnN0IHVwZGF0ZURlU29Ub2tlblRyYW5zZmVyUmVzdHJpY3Rpb25TdGF0dXMgPSAoXG4gIHBhcmFtczogVXBkYXRlRGVTb1Rva2VuVHJhbnNmZXJSZXN0cmljdGlvblN0YXR1c1JlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PERBT0NvaW5SZXNwb25zZT4+ID0+IHtcbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoXG4gICAgJ2FwaS92MC9kYW8tY29pbicsXG4gICAge1xuICAgICAgLi4ucGFyYW1zLFxuICAgICAgT3BlcmF0aW9uVHlwZTogJ3VwZGF0ZV90cmFuc2Zlcl9yZXN0cmljdGlvbl9zdGF0dXMnLFxuICAgIH0sXG4gICAge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOlxuICAgICAgICBjb25zdHJ1Y3RVcGRhdGVEZVNvVG9rZW5UcmFuc2ZlclJlc3RyaWN0aW9uU3RhdHVzVHJhbnNhY3Rpb24sXG4gICAgfVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdFVwZGF0ZURlU29Ub2tlblRyYW5zZmVyUmVzdHJpY3Rpb25TdGF0dXNUcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBVcGRhdGVEZVNvVG9rZW5UcmFuc2ZlclJlc3RyaWN0aW9uU3RhdHVzUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YURBT0NvaW4oKTtcbiAgLy8gVE9ETzogSSBrbm93IHdlJ3JlIHBhc3NpbmcgaGV4IHN0cmluZ3MgcmVwcmVzZW50aW5nIHVpbnQyNTYsIGJ1dCBuZWVkXG4gIC8vIHRvIGZpZ3VyZSBvdXQgaG93IHRoZXkgZ28gdG8gYnl0ZXMuXG4gIGlmICghaXNNYXliZURlU29QdWJsaWNLZXkocGFyYW1zLlByb2ZpbGVQdWJsaWNLZXlCYXNlNThDaGVja09yVXNlcm5hbWUpKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgJ211c3QgcHJvdmlkZSBwcm9maWxlIHB1YmxpYyBrZXksIG5vdCB1c2VybmFtZSBmb3IgbG9jYWwgdHJhbnNhY3Rpb24gY29uc3RydWN0aW9uJ1xuICAgICk7XG4gIH1cbiAgbWV0YWRhdGEucHJvZmlsZVB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuUHJvZmlsZVB1YmxpY0tleUJhc2U1OENoZWNrT3JVc2VybmFtZVxuICApO1xuICBtZXRhZGF0YS5vcGVyYXRpb25UeXBlID0gMztcbiAgbGV0IHRyYW5zZmVyUmVzdHJpY3Rpb25TdGF0dXM6IG51bWJlcjtcbiAgc3dpdGNoIChwYXJhbXMuVHJhbnNmZXJSZXN0cmljdGlvblN0YXR1cykge1xuICAgIGNhc2UgJ2Rhb19tZW1iZXJzX29ubHknOlxuICAgICAgdHJhbnNmZXJSZXN0cmljdGlvblN0YXR1cyA9IDI7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdwZXJtYW5lbnRseV91bnJlc3RyaWN0ZWQnOlxuICAgICAgdHJhbnNmZXJSZXN0cmljdGlvblN0YXR1cyA9IDM7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdwcm9maWxlX293bmVyX29ubHknOlxuICAgICAgdHJhbnNmZXJSZXN0cmljdGlvblN0YXR1cyA9IDE7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd1bnJlc3RyaWN0ZWQnOlxuICAgICAgdHJhbnNmZXJSZXN0cmljdGlvblN0YXR1cyA9IDA7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCdpbnZhbGlkIHRyYW5zZmVyIHJlc3RyaWN0aW9uIHN0YXR1cyB2YWx1ZScpO1xuICB9XG4gIG1ldGFkYXRhLnRyYW5zZmVyUmVzdHJpY3Rpb25TdGF0dXMgPSB0cmFuc2ZlclJlc3RyaWN0aW9uU3RhdHVzO1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgocGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjaywgbWV0YWRhdGEsIHtcbiAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gIH0pO1xufTtcblxuZXhwb3J0IHR5cGUgRGlzYWJsZU1pbnRpbmdEZVNvVG9rZW5SZXF1ZXN0UGFyYW1zID1cbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgICBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgICAgT21pdDxEQU9Db2luUmVxdWVzdCwgJ09wZXJhdGlvblR5cGUnPixcbiAgICAgICdVcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2snIHwgJ1Byb2ZpbGVQdWJsaWNLZXlCYXNlNThDaGVja09yVXNlcm5hbWUnXG4gICAgPlxuICA+O1xuZXhwb3J0IGNvbnN0IGRpc2FibGVNaW50aW5nRGVTb1Rva2VuID0gKFxuICBwYXJhbXM6IERpc2FibGVNaW50aW5nRGVTb1Rva2VuUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8REFPQ29pblJlc3BvbnNlPj4gPT4ge1xuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdChcbiAgICAnYXBpL3YwL2Rhby1jb2luJyxcbiAgICB7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBPcGVyYXRpb25UeXBlOiAnZGlzYWJsZV9taW50aW5nJyxcbiAgICB9LFxuICAgIHsgLi4ub3B0aW9ucywgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdERpc2FibGVNaW50aW5nRGVTb1Rva2VuIH1cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3REaXNhYmxlTWludGluZ0RlU29Ub2tlbiA9IChcbiAgcGFyYW1zOiBEaXNhYmxlTWludGluZ0RlU29Ub2tlblJlcXVlc3RQYXJhbXNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPiA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFEQU9Db2luKCk7XG4gIC8vIFRPRE86IEkga25vdyB3ZSdyZSBwYXNzaW5nIGhleCBzdHJpbmdzIHJlcHJlc2VudGluZyB1aW50MjU2LCBidXQgbmVlZFxuICAvLyB0byBmaWd1cmUgb3V0IGhvdyB0aGV5IGdvIHRvIGJ5dGVzLlxuICBpZiAoIWlzTWF5YmVEZVNvUHVibGljS2V5KHBhcmFtcy5Qcm9maWxlUHVibGljS2V5QmFzZTU4Q2hlY2tPclVzZXJuYW1lKSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICdtdXN0IHByb3ZpZGUgcHJvZmlsZSBwdWJsaWMga2V5LCBub3QgdXNlcm5hbWUgZm9yIGxvY2FsIHRyYW5zYWN0aW9uIGNvbnN0cnVjdGlvbidcbiAgICApO1xuICB9XG4gIG1ldGFkYXRhLnByb2ZpbGVQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLlByb2ZpbGVQdWJsaWNLZXlCYXNlNThDaGVja09yVXNlcm5hbWVcbiAgKTtcbiAgbWV0YWRhdGEub3BlcmF0aW9uVHlwZSA9IDI7XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChwYXJhbXMuVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrLCBtZXRhZGF0YSwge1xuICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgfSk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9kYW8tdHJhbnNhY3Rpb25zLWFwaSN0cmFuc2Zlci1kZXNvLXRva2VuLWRhby1jb2luXG4gKi9cbmV4cG9ydCBjb25zdCB0cmFuc2ZlckRlU29Ub2tlbiA9IChcbiAgcGFyYW1zOiBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFRyYW5zZmVyREFPQ29pblJlcXVlc3Q+LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxUcmFuc2ZlckRBT0NvaW5SZXNwb25zZT4+ID0+IHtcbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC90cmFuc2Zlci1kYW8tY29pbicsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdFRyYW5zZmVyRGVTb1Rva2VuLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RUcmFuc2ZlckRlU29Ub2tlbiA9IChcbiAgcGFyYW1zOiBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFRyYW5zZmVyREFPQ29pblJlcXVlc3Q+XG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICBpZiAoIWlzTWF5YmVEZVNvUHVibGljS2V5KHBhcmFtcy5Qcm9maWxlUHVibGljS2V5QmFzZTU4Q2hlY2tPclVzZXJuYW1lKSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICdtdXN0IHByb3ZpZGUgcHJvZmlsZSBwdWJsaWMga2V5LCBub3QgdXNlcm5hbWUgZm9yIGxvY2FsIHRyYW5zYWN0aW9uIGNvbnN0cnVjdGlvbidcbiAgICApO1xuICB9XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFUcmFuc2ZlckRBT0NvaW4oKTtcbiAgbWV0YWRhdGEuZGFvQ29pblRvVHJhbnNmZXJOYW5vcyA9IGhleFRvQnl0ZXMoXG4gICAgcGFyYW1zLkRBT0NvaW5Ub1RyYW5zZmVyTmFub3MucmVwbGFjZSgnMHgnLCAneCcpXG4gICk7XG4gIG1ldGFkYXRhLnByb2ZpbGVQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLlByb2ZpbGVQdWJsaWNLZXlCYXNlNThDaGVja09yVXNlcm5hbWVcbiAgKTtcbiAgbWV0YWRhdGEucmVjZWl2ZXJQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLlJlY2VpdmVyUHVibGljS2V5QmFzZTU4Q2hlY2tPclVzZXJuYW1lXG4gICk7XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChwYXJhbXMuU2VuZGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssIG1ldGFkYXRhLCB7XG4gICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICB9KTtcbn07XG5cbi8vIFRPRE86IEJhbGFuY2UgbW9kZWwgdHJhbnNhY3Rpb24gY29uc3RydWN0aW9uIGZvciBsaW1pdCBvcmRlcnMuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9kYW8tdHJhbnNhY3Rpb25zLWFwaSNjcmVhdGUtZGVzby10b2tlbi1kYW8tY29pbi1saW1pdC1vcmRlclxuICovXG5leHBvcnQgY29uc3QgYnV5RGVTb1Rva2VuTGltaXRPcmRlciA9IChcbiAgcGFyYW1zOiBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgIE9taXQ8XG4gICAgICBEQU9Db2luTGltaXRPcmRlcldpdGhFeGNoYW5nZVJhdGVBbmRRdWFudGl0eVJlcXVlc3QsXG4gICAgICAnU2VsbGluZ0RBT0NvaW5DcmVhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2snIHwgJ09wZXJhdGlvblR5cGUnXG4gICAgPixcbiAgICB8ICdUcmFuc2FjdG9yUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgfCAnQnV5aW5nREFPQ29pbkNyZWF0b3JQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICB8ICdFeGNoYW5nZVJhdGVDb2luc1RvU2VsbFBlckNvaW5Ub0J1eSdcbiAgICB8ICdRdWFudGl0eVRvRmlsbCdcbiAgPixcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8REFPQ29pbkxpbWl0T3JkZXJSZXNwb25zZT4+ID0+IHtcbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoXG4gICAgJ2FwaS92MC9jcmVhdGUtZGFvLWNvaW4tbGltaXQtb3JkZXInLFxuICAgIHtcbiAgICAgIC4uLnBhcmFtcyxcbiAgICAgIFNlbGxpbmdEQU9Db2luQ3JlYXRvclB1YmxpY0tleUJhc2U1OENoZWNrOiAnJyxcbiAgICAgIE9wZXJhdGlvblR5cGU6ICdCSUQnLFxuICAgIH0sXG4gICAgb3B0aW9uc1xuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvZGFvLXRyYW5zYWN0aW9ucy1hcGkjY3JlYXRlLWRlc28tdG9rZW4tZGFvLWNvaW4tbGltaXQtb3JkZXJcbiAqL1xuZXhwb3J0IGNvbnN0IHNlbGxEZVNvVG9rZW5MaW1pdE9yZGVyID0gKFxuICBwYXJhbXM6IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8XG4gICAgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgICAgIE9taXQ8XG4gICAgICAgIERBT0NvaW5MaW1pdE9yZGVyV2l0aEV4Y2hhbmdlUmF0ZUFuZFF1YW50aXR5UmVxdWVzdCxcbiAgICAgICAgJ0J1eWluZ0RBT0NvaW5DcmVhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2snIHwgJ09wZXJhdGlvblR5cGUnXG4gICAgICA+LFxuICAgICAgfCAnVHJhbnNhY3RvclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnU2VsbGluZ0RBT0NvaW5DcmVhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgICB8ICdFeGNoYW5nZVJhdGVDb2luc1RvU2VsbFBlckNvaW5Ub0J1eSdcbiAgICAgIHwgJ1F1YW50aXR5VG9GaWxsJ1xuICAgID5cbiAgPixcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8REFPQ29pbkxpbWl0T3JkZXJSZXNwb25zZT4+ID0+IHtcbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoXG4gICAgJ2FwaS92MC9jcmVhdGUtZGFvLWNvaW4tbGltaXQtb3JkZXInLFxuICAgIHtcbiAgICAgIC4uLnBhcmFtcyxcbiAgICAgIFNlbGxpbmdEQU9Db2luQ3JlYXRvclB1YmxpY0tleUJhc2U1OENoZWNrOiAnJyxcbiAgICAgIE9wZXJhdGlvblR5cGU6ICdBU0snLFxuICAgIH0sXG4gICAgb3B0aW9uc1xuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvZGFvLXRyYW5zYWN0aW9ucy1hcGkjY2FuY2VsLWRlc28tdG9rZW4tZGFvLWNvaW4tbGltaXQtb3JkZXJcbiAqL1xuZXhwb3J0IGNvbnN0IGNhbmNlbERlU29Ub2tlbkxpbWl0T3JkZXIgPSAoXG4gIHBhcmFtczogVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxEQU9Db2luTGltaXRPcmRlcldpdGhDYW5jZWxPcmRlcklEUmVxdWVzdD4sXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PERBT0NvaW5MaW1pdE9yZGVyUmVzcG9uc2U+PiA9PiB7XG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KFxuICAgICdhcGkvdjAvY2FuY2VsLWRhby1jb2luLWxpbWl0LW9yZGVyJyxcbiAgICBwYXJhbXMsXG4gICAgb3B0aW9uc1xuICApO1xufTtcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzby10b2tlbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb25zL2Rlc28tdG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQWNqRCxPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLGtDQUFrQyxFQUNsQyw4QkFBOEIsR0FDL0IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLG1CQUFtQixFQUNuQixvQkFBb0IsR0FDckIsTUFBTSxnQkFBZ0IsQ0FBQztBQWN4QixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FDM0IsTUFBMkMsRUFDM0MsT0FBd0IsRUFDNkIsRUFBRTtJQUN2RCxPQUFPLG1CQUFtQixDQUN4QixpQkFBaUIsRUFDakI7UUFDRSxHQUFHLE1BQU07UUFDVCxhQUFhLEVBQUUsTUFBTTtLQUN0QixFQUNELEVBQUUsR0FBRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsaUNBQWlDLEVBQUUsQ0FDeEUsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFHLENBQy9DLE1BQTJDLEVBQ0YsRUFBRTtJQUMzQyxNQUFNLFFBQVEsR0FBRyxJQUFJLDBCQUEwQixFQUFFLENBQUM7SUFDbEQsd0VBQXdFO0lBQ3hFLHNDQUFzQztJQUN0QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLHFDQUFxQyxDQUFDLEVBQUU7UUFDdkUsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUNuQixrRkFBa0YsQ0FDbkYsQ0FBQztLQUNIO0lBQ0QsUUFBUSxDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FDcEMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQzNDLENBQUM7SUFDRixRQUFRLENBQUMsZ0JBQWdCLEdBQUcsOEJB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QUFPLHVCQUF1QixDQUFDLE1BQU0sQ0FBQywwQkFBMEIsRUFBRSxRQUFRLEVBQUU7UUFDMUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1FBQzNCLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxvQkFBb0I7UUFDakQsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO0tBQ3hDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLGlFQUFpRTtBQUNqRTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQ3BDLE1BU0MsRUFDRCxPQUF3QixFQUN1QyxFQUFFO0lBQ2pFLE9BQU8sbUJBQW1CLENBQ3hCLG9DQUFvQyxFQUNwQztRQUNFLEdBQUcsTUFBTTtRQUNULHlDQUF5QyxFQUFFLEVBQUU7UUFDN0MsYUFBYSxFQUFFLEtBQUs7S0FDckIsRUFDRCxPQUFPLENBQ1IsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FDckMsTUFXQyxFQUNELE9BQXdCLEVBQ3VDLEVBQUU7SUFDakUsT0FBTyxtQkFBbUIsQ0FDeEIsb0NBQW9DLEVBQ3BDO1FBQ0UsR0FBRyxNQUFNO1FBQ1QseUNBQXlDLEVBQUUsRUFBRTtRQUM3QyxhQUFhLEVBQUUsS0FBSztLQUNyQixFQUNELE9BQU8sQ0FDUixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUN2QyxNQUF3RixFQUN4RixPQUF3QixFQUN1QyxFQUFFO0lBQ2pFLE9BQU8sbUJBQW1CLENBQ3hCLG9DQUFvQyxFQUNwQyxNQUFNLEVBQ04sT0FBTyxDQUNSLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoZXhUb0J5dGVzIH0gZnJvbSAnQG5vYmxlL2hhc2hlcy91dGlscyc7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2UsXG4gIERBT0NvaW5MaW1pdE9yZGVyUmVzcG9uc2UsXG4gIERBT0NvaW5MaW1pdE9yZGVyV2l0aENhbmNlbE9yZGVySURSZXF1ZXN0LFxuICBEQU9Db2luTGltaXRPcmRlcldpdGhFeGNoYW5nZVJhdGVBbmRRdWFudGl0eVJlcXVlc3QsXG4gIERBT0NvaW5SZXF1ZXN0LFxuICBEQU9Db2luUmVzcG9uc2UsXG4gIFJlcXVlc3RPcHRpb25zLFxuICBUcmFuc2ZlckRBT0NvaW5SZXF1ZXN0LFxuICBUcmFuc2ZlckRBT0NvaW5SZXNwb25zZSxcbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YSxcbn0gZnJvbSAnLi4vYmFja2VuZC10eXBlcy9pbmRleC5qcyc7XG5pbXBvcnQgeyBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzIH0gZnJvbSAnLi4vZGF0YS9pbmRleC5qcyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbk1ldGFkYXRhREFPQ29pbixcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YVRyYW5zZmVyREFPQ29pbixcbiAgYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzLFxufSBmcm9tICcuLi9pZGVudGl0eS9pbmRleC5qcyc7XG5pbXBvcnQge1xuICBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeCxcbiAgaGFuZGxlU2lnbkFuZFN1Ym1pdCxcbiAgaXNNYXliZURlU29QdWJsaWNLZXksXG59IGZyb20gJy4uL2ludGVybmFsLmpzJztcbmltcG9ydCB7IENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHggfSBmcm9tICcuLi90eXBlcy5qcyc7XG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9kYW8tdHJhbnNhY3Rpb25zLWFwaSNjcmVhdGUtZGVzby10b2tlbi1kYW8tY29pblxuICovXG5leHBvcnQgdHlwZSBDb25zdHJ1Y3RCdXJuRGVTb1Rva2VuUmVxdWVzdFBhcmFtcyA9XG4gIFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8XG4gICAgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgICAgIE9taXQ8REFPQ29pblJlcXVlc3QsICdPcGVyYXRpb25UeXBlJz4sXG4gICAgICB8ICdVcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgICB8ICdQcm9maWxlUHVibGljS2V5QmFzZTU4Q2hlY2tPclVzZXJuYW1lJ1xuICAgICAgfCAnQ29pbnNUb0J1cm5OYW5vcydcbiAgICA+XG4gID47XG5leHBvcnQgY29uc3QgYnVybkRlU29Ub2tlbiA9IChcbiAgcGFyYW1zOiBDb25zdHJ1Y3RCdXJuRGVTb1Rva2VuUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8REFPQ29pblJlc3BvbnNlPj4gPT4ge1xuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdChcbiAgICAnYXBpL3YwL2Rhby1jb2luJyxcbiAgICB7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBPcGVyYXRpb25UeXBlOiAnYnVybicsXG4gICAgfSxcbiAgICB7IC4uLm9wdGlvbnMsIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RCdXJuRGVTb1Rva2VuVHJhbnNhY3Rpb24gfVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdEJ1cm5EZVNvVG9rZW5UcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBDb25zdHJ1Y3RCdXJuRGVTb1Rva2VuUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YURBT0NvaW4oKTtcbiAgLy8gVE9ETzogSSBrbm93IHdlJ3JlIHBhc3NpbmcgaGV4IHN0cmluZ3MgcmVwcmVzZW50aW5nIHVpbnQyNTYsIGJ1dCBuZWVkXG4gIC8vIHRvIGZpZ3VyZSBvdXQgaG93IHRoZXkgZ28gdG8gYnl0ZXMuXG4gIGlmICghaXNNYXliZURlU29QdWJsaWNLZXkocGFyYW1zLlByb2ZpbGVQdWJsaWNLZXlCYXNlNThDaGVja09yVXNlcm5hbWUpKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgJ211c3QgcHJvdmlkZSBwcm9maWxlIHB1YmxpYyBrZXksIG5vdCB1c2VybmFtZSBmb3IgbG9jYWwgdHJhbnNhY3Rpb24gY29uc3RydWN0aW9uJ1xuICAgICk7XG4gIH1cbiAgbWV0YWRhdGEuY29pbnNUb0J1cm5OYW5vcyA9IGhleFRvQnl0ZXMoXG4gICAgcGFyYW1zLkNvaW5zVG9CdXJuTmFub3MucmVwbGFjZSgnMHgnLCAneCcpXG4gICk7XG4gIG1ldGFkYXRhLnByb2ZpbGVQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLlByb2ZpbGVQdWJsaWNLZXlCYXNlNThDaGVja09yVXNlcm5hbWVcbiAgKTtcbiAgbWV0YWRhdGEub3BlcmF0aW9uVHlwZSA9IDE7XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChwYXJhbXMuVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrLCBtZXRhZGF0YSwge1xuICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgfSk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9kYW8tdHJhbnNhY3Rpb25zLWFwaSNjcmVhdGUtZGVzby10b2tlbi1kYW8tY29pblxuICovXG5leHBvcnQgdHlwZSBNaW50RGVTb1Rva2VuUmVxdWVzdFBhcmFtcyA9IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8XG4gIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgT21pdDxEQU9Db2luUmVxdWVzdCwgJ09wZXJhdGlvblR5cGUnPixcbiAgICB8ICdVcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgfCAnUHJvZmlsZVB1YmxpY0tleUJhc2U1OENoZWNrT3JVc2VybmFtZSdcbiAgICB8ICdDb2luc1RvTWludE5hbm9zJ1xuICA+XG4+O1xuZXhwb3J0IGNvbnN0IG1pbnREZVNvVG9rZW4gPSAoXG4gIHBhcmFtczogTWludERlU29Ub2tlblJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PERBT0NvaW5SZXNwb25zZT4+ID0+IHtcbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoXG4gICAgJ2FwaS92MC9kYW8tY29pbicsXG4gICAge1xuICAgICAgLi4ucGFyYW1zLFxuICAgICAgT3BlcmF0aW9uVHlwZTogJ21pbnQnLFxuICAgIH0sXG4gICAgeyAuLi5vcHRpb25zLCBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0TWludERlU29Ub2tlblRyYW5zYWN0aW9uIH1cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RNaW50RGVTb1Rva2VuVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogTWludERlU29Ub2tlblJlcXVlc3RQYXJhbXNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPiA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFEQU9Db2luKCk7XG4gIC8vIFRPRE86IEkga25vdyB3ZSdyZSBwYXNzaW5nIGhleCBzdHJpbmdzIHJlcHJlc2VudGluZyB1aW50MjU2LCBidXQgbmVlZFxuICAvLyB0byBmaWd1cmUgb3V0IGhvdyB0aGV5IGdvIHRvIGJ5dGVzLlxuICBpZiAoIWlzTWF5YmVEZVNvUHVibGljS2V5KHBhcmFtcy5Qcm9maWxlUHVibGljS2V5QmFzZTU4Q2hlY2tPclVzZXJuYW1lKSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICdtdXN0IHByb3ZpZGUgcHJvZmlsZSBwdWJsaWMga2V5LCBub3QgdXNlcm5hbWUgZm9yIGxvY2FsIHRyYW5zYWN0aW9uIGNvbnN0cnVjdGlvbidcbiAgICApO1xuICB9XG4gIG1ldGFkYXRhLmNvaW5zVG9NaW50TmFub3MgPSBoZXhUb0J5dGVzKFxuICAgIHBhcmFtcy5Db2luc1RvTWludE5hbm9zLnJlcGxhY2UoJzB4JywgJ3gnKVxuICApO1xuICBtZXRhZGF0YS5wcm9maWxlUHVibGljS2V5ID0gYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKFxuICAgIHBhcmFtcy5Qcm9maWxlUHVibGljS2V5QmFzZTU4Q2hlY2tPclVzZXJuYW1lXG4gICk7XG4gIG1ldGFkYXRhLm9wZXJhdGlvblR5cGUgPSAwO1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgocGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjaywgbWV0YWRhdGEsIHtcbiAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvZGFvLXRyYW5zYWN0aW9ucy1hcGkjY3JlYXRlLWRlc28tdG9rZW4tZGFvLWNvaW5cbiAqL1xuZXhwb3J0IHR5cGUgVXBkYXRlRGVTb1Rva2VuVHJhbnNmZXJSZXN0cmljdGlvblN0YXR1c1JlcXVlc3RQYXJhbXMgPVxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICAgIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgICBPbWl0PERBT0NvaW5SZXF1ZXN0LCAnT3BlcmF0aW9uVHlwZScgfCAnVHJhbnNmZXJSZXN0cmljdGlvblN0YXR1cyc+LFxuICAgICAgJ1VwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjaycgfCAnUHJvZmlsZVB1YmxpY0tleUJhc2U1OENoZWNrT3JVc2VybmFtZSdcbiAgICA+ICYge1xuICAgICAgVHJhbnNmZXJSZXN0cmljdGlvblN0YXR1czpcbiAgICAgICAgfCAndW5yZXN0cmljdGVkJ1xuICAgICAgICB8ICdwcm9maWxlX293bmVyX29ubHknXG4gICAgICAgIHwgJ2Rhb19tZW1iZXJzX29ubHknXG4gICAgICAgIHwgJ3Blcm1hbmVudGx5X3VucmVzdHJpY3RlZCc7XG4gICAgfVxuICA+O1xuZXhwb3J0IGNvbnN0IHVwZGF0ZURlU29Ub2tlblRyYW5zZmVyUmVzdHJpY3Rpb25TdGF0dXMgPSAoXG4gIHBhcmFtczogVXBkYXRlRGVTb1Rva2VuVHJhbnNmZXJSZXN0cmljdGlvblN0YXR1c1JlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PERBT0NvaW5SZXNwb25zZT4+ID0+IHtcbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoXG4gICAgJ2FwaS92MC9kYW8tY29pbicsXG4gICAge1xuICAgICAgLi4ucGFyYW1zLFxuICAgICAgT3BlcmF0aW9uVHlwZTogJ3VwZGF0ZV90cmFuc2Zlcl9yZXN0cmljdGlvbl9zdGF0dXMnLFxuICAgIH0sXG4gICAge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOlxuICAgICAgICBjb25zdHJ1Y3RVcGRhdGVEZVNvVG9rZW5UcmFuc2ZlclJlc3RyaWN0aW9uU3RhdHVzVHJhbnNhY3Rpb24sXG4gICAgfVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdFVwZGF0ZURlU29Ub2tlblRyYW5zZmVyUmVzdHJpY3Rpb25TdGF0dXNUcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBVcGRhdGVEZVNvVG9rZW5UcmFuc2ZlclJlc3RyaWN0aW9uU3RhdHVzUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YURBT0NvaW4oKTtcbiAgLy8gVE9ETzogSSBrbm93IHdlJ3JlIHBhc3NpbmcgaGV4IHN0cmluZ3MgcmVwcmVzZW50aW5nIHVpbnQyNTYsIGJ1dCBuZWVkXG4gIC8vIHRvIGZpZ3VyZSBvdXQgaG93IHRoZXkgZ28gdG8gYnl0ZXMuXG4gIGlmICghaXNNYXliZURlU29QdWJsaWNLZXkocGFyYW1zLlByb2ZpbGVQdWJsaWNLZXlCYXNlNThDaGVja09yVXNlcm5hbWUpKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgJ211c3QgcHJvdmlkZSBwcm9maWxlIHB1YmxpYyBrZXksIG5vdCB1c2VybmFtZSBmb3IgbG9jYWwgdHJhbnNhY3Rpb24gY29uc3RydWN0aW9uJ1xuICAgICk7XG4gIH1cbiAgbWV0YWRhdGEucHJvZmlsZVB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuUHJvZmlsZVB1YmxpY0tleUJhc2U1OENoZWNrT3JVc2VybmFtZVxuICApO1xuICBtZXRhZGF0YS5vcGVyYXRpb25UeXBlID0gMztcbiAgbGV0IHRyYW5zZmVyUmVzdHJpY3Rpb25TdGF0dXM6IG51bWJlcjtcbiAgc3dpdGNoIChwYXJhbXMuVHJhbnNmZXJSZXN0cmljdGlvblN0YXR1cykge1xuICAgIGNhc2UgJ2Rhb19tZW1iZXJzX29ubHknOlxuICAgICAgdHJhbnNmZXJSZXN0cmljdGlvblN0YXR1cyA9IDI7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdwZXJtYW5lbnRseV91bnJlc3RyaWN0ZWQnOlxuICAgICAgdHJhbnNmZXJSZXN0cmljdGlvblN0YXR1cyA9IDM7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdwcm9maWxlX293bmVyX29ubHknOlxuICAgICAgdHJhbnNmZXJSZXN0cmljdGlvblN0YXR1cyA9IDE7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd1bnJlc3RyaWN0ZWQnOlxuICAgICAgdHJhbnNmZXJSZXN0cmljdGlvblN0YXR1cyA9IDA7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCdpbnZhbGlkIHRyYW5zZmVyIHJlc3RyaWN0aW9uIHN0YXR1cyB2YWx1ZScpO1xuICB9XG4gIG1ldGFkYXRhLnRyYW5zZmVyUmVzdHJpY3Rpb25TdGF0dXMgPSB0cmFuc2ZlclJlc3RyaWN0aW9uU3RhdHVzO1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgocGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjaywgbWV0YWRhdGEsIHtcbiAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gIH0pO1xufTtcblxuZXhwb3J0IHR5cGUgRGlzYWJsZU1pbnRpbmdEZVNvVG9rZW5SZXF1ZXN0UGFyYW1zID1cbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgICBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgICAgT21pdDxEQU9Db2luUmVxdWVzdCwgJ09wZXJhdGlvblR5cGUnPixcbiAgICAgICdVcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2snIHwgJ1Byb2ZpbGVQdWJsaWNLZXlCYXNlNThDaGVja09yVXNlcm5hbWUnXG4gICAgPlxuICA+O1xuZXhwb3J0IGNvbnN0IGRpc2FibGVNaW50aW5nRGVTb1Rva2VuID0gKFxuICBwYXJhbXM6IERpc2FibGVNaW50aW5nRGVTb1Rva2VuUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8REFPQ29pblJlc3BvbnNlPj4gPT4ge1xuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdChcbiAgICAnYXBpL3YwL2Rhby1jb2luJyxcbiAgICB7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBPcGVyYXRpb25UeXBlOiAnZGlzYWJsZV9taW50aW5nJyxcbiAgICB9LFxuICAgIHsgLi4ub3B0aW9ucywgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdERpc2FibGVNaW50aW5nRGVTb1Rva2VuIH1cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3REaXNhYmxlTWludGluZ0RlU29Ub2tlbiA9IChcbiAgcGFyYW1zOiBEaXNhYmxlTWludGluZ0RlU29Ub2tlblJlcXVlc3RQYXJhbXNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPiA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFEQU9Db2luKCk7XG4gIC8vIFRPRE86IEkga25vdyB3ZSdyZSBwYXNzaW5nIGhleCBzdHJpbmdzIHJlcHJlc2VudGluZyB1aW50MjU2LCBidXQgbmVlZFxuICAvLyB0byBmaWd1cmUgb3V0IGhvdyB0aGV5IGdvIHRvIGJ5dGVzLlxuICBpZiAoIWlzTWF5YmVEZVNvUHVibGljS2V5KHBhcmFtcy5Qcm9maWxlUHVibGljS2V5QmFzZTU4Q2hlY2tPclVzZXJuYW1lKSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICdtdXN0IHByb3ZpZGUgcHJvZmlsZSBwdWJsaWMga2V5LCBub3QgdXNlcm5hbWUgZm9yIGxvY2FsIHRyYW5zYWN0aW9uIGNvbnN0cnVjdGlvbidcbiAgICApO1xuICB9XG4gIG1ldGFkYXRhLnByb2ZpbGVQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLlByb2ZpbGVQdWJsaWNLZXlCYXNlNThDaGVja09yVXNlcm5hbWVcbiAgKTtcbiAgbWV0YWRhdGEub3BlcmF0aW9uVHlwZSA9IDI7XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChwYXJhbXMuVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrLCBtZXRhZGF0YSwge1xuICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgfSk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9kYW8tdHJhbnNhY3Rpb25zLWFwaSN0cmFuc2Zlci1kZXNvLXRva2VuLWRhby1jb2luXG4gKi9cbmV4cG9ydCBjb25zdCB0cmFuc2ZlckRlU29Ub2tlbiA9IChcbiAgcGFyYW1zOiBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFRyYW5zZmVyREFPQ29pblJlcXVlc3Q+LFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxUcmFuc2ZlckRBT0NvaW5SZXNwb25zZT4+ID0+IHtcbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC90cmFuc2Zlci1kYW8tY29pbicsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdFRyYW5zZmVyRGVTb1Rva2VuLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RUcmFuc2ZlckRlU29Ub2tlbiA9IChcbiAgcGFyYW1zOiBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFRyYW5zZmVyREFPQ29pblJlcXVlc3Q+XG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICBpZiAoIWlzTWF5YmVEZVNvUHVibGljS2V5KHBhcmFtcy5Qcm9maWxlUHVibGljS2V5QmFzZTU4Q2hlY2tPclVzZXJuYW1lKSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICdtdXN0IHByb3ZpZGUgcHJvZmlsZSBwdWJsaWMga2V5LCBub3QgdXNlcm5hbWUgZm9yIGxvY2FsIHRyYW5zYWN0aW9uIGNvbnN0cnVjdGlvbidcbiAgICApO1xuICB9XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFUcmFuc2ZlckRBT0NvaW4oKTtcbiAgbWV0YWRhdGEuZGFvQ29pblRvVHJhbnNmZXJOYW5vcyA9IGhleFRvQnl0ZXMoXG4gICAgcGFyYW1zLkRBT0NvaW5Ub1RyYW5zZmVyTmFub3MucmVwbGFjZSgnMHgnLCAneCcpXG4gICk7XG4gIG1ldGFkYXRhLnByb2ZpbGVQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLlByb2ZpbGVQdWJsaWNLZXlCYXNlNThDaGVja09yVXNlcm5hbWVcbiAgKTtcbiAgbWV0YWRhdGEucmVjZWl2ZXJQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLlJlY2VpdmVyUHVibGljS2V5QmFzZTU4Q2hlY2tPclVzZXJuYW1lXG4gICk7XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChwYXJhbXMuU2VuZGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssIG1ldGFkYXRhLCB7XG4gICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICB9KTtcbn07XG5cbi8vIFRPRE86IEJhbGFuY2UgbW9kZWwgdHJhbnNhY3Rpb24gY29uc3RydWN0aW9uIGZvciBsaW1pdCBvcmRlcnMuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9kYW8tdHJhbnNhY3Rpb25zLWFwaSNjcmVhdGUtZGVzby10b2tlbi1kYW8tY29pbi1saW1pdC1vcmRlclxuICovXG5leHBvcnQgY29uc3QgYnV5RGVTb1Rva2VuTGltaXRPcmRlciA9IChcbiAgcGFyYW1zOiBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgIE9taXQ8XG4gICAgICBEQU9Db2luTGltaXRPcmRlcldpdGhFeGNoYW5nZVJhdGVBbmRRdWFudGl0eVJlcXVlc3QsXG4gICAgICAnU2VsbGluZ0RBT0NvaW5DcmVhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2snIHwgJ09wZXJhdGlvblR5cGUnXG4gICAgPixcbiAgICB8ICdUcmFuc2FjdG9yUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgfCAnQnV5aW5nREFPQ29pbkNyZWF0b3JQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICB8ICdFeGNoYW5nZVJhdGVDb2luc1RvU2VsbFBlckNvaW5Ub0J1eSdcbiAgICB8ICdRdWFudGl0eVRvRmlsbCdcbiAgPixcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8REFPQ29pbkxpbWl0T3JkZXJSZXNwb25zZT4+ID0+IHtcbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoXG4gICAgJ2FwaS92MC9jcmVhdGUtZGFvLWNvaW4tbGltaXQtb3JkZXInLFxuICAgIHtcbiAgICAgIC4uLnBhcmFtcyxcbiAgICAgIFNlbGxpbmdEQU9Db2luQ3JlYXRvclB1YmxpY0tleUJhc2U1OENoZWNrOiAnJyxcbiAgICAgIE9wZXJhdGlvblR5cGU6ICdCSUQnLFxuICAgIH0sXG4gICAgb3B0aW9uc1xuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvZGFvLXRyYW5zYWN0aW9ucy1hcGkjY3JlYXRlLWRlc28tdG9rZW4tZGFvLWNvaW4tbGltaXQtb3JkZXJcbiAqL1xuZXhwb3J0IGNvbnN0IHNlbGxEZVNvVG9rZW5MaW1pdE9yZGVyID0gKFxuICBwYXJhbXM6IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8XG4gICAgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgICAgIE9taXQ8XG4gICAgICAgIERBT0NvaW5MaW1pdE9yZGVyV2l0aEV4Y2hhbmdlUmF0ZUFuZFF1YW50aXR5UmVxdWVzdCxcbiAgICAgICAgJ0J1eWluZ0RBT0NvaW5DcmVhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2snIHwgJ09wZXJhdGlvblR5cGUnXG4gICAgICA+LFxuICAgICAgfCAnVHJhbnNhY3RvclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnU2VsbGluZ0RBT0NvaW5DcmVhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgICB8ICdFeGNoYW5nZVJhdGVDb2luc1RvU2VsbFBlckNvaW5Ub0J1eSdcbiAgICAgIHwgJ1F1YW50aXR5VG9GaWxsJ1xuICAgID5cbiAgPixcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8REFPQ29pbkxpbWl0T3JkZXJSZXNwb25zZT4+ID0+IHtcbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoXG4gICAgJ2FwaS92MC9jcmVhdGUtZGFvLWNvaW4tbGltaXQtb3JkZXInLFxuICAgIHtcbiAgICAgIC4uLnBhcmFtcyxcbiAgICAgIFNlbGxpbmdEQU9Db2luQ3JlYXRvclB1YmxpY0tleUJhc2U1OENoZWNrOiAnJyxcbiAgICAgIE9wZXJhdGlvblR5cGU6ICdBU0snLFxuICAgIH0sXG4gICAgb3B0aW9uc1xuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvZGFvLXRyYW5zYWN0aW9ucy1hcGkjY2FuY2VsLWRlc28tdG9rZW4tZGFvLWNvaW4tbGltaXQtb3JkZXJcbiAqL1xuZXhwb3J0IGNvbnN0IGNhbmNlbERlU29Ub2tlbkxpbWl0T3JkZXIgPSAoXG4gIHBhcmFtczogVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxEQU9Db2luTGltaXRPcmRlcldpdGhDYW5jZWxPcmRlcklEUmVxdWVzdD4sXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PERBT0NvaW5MaW1pdE9yZGVyUmVzcG9uc2U+PiA9PiB7XG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KFxuICAgICdhcGkvdjAvY2FuY2VsLWRhby1jb2luLWxpbWl0LW9yZGVyJyxcbiAgICBwYXJhbXMsXG4gICAgb3B0aW9uc1xuICApO1xufTtcbiJdfQ==

@@ -1,4 +0,4 @@

import { BuyOrSellCreatorCoinRequest, BuyOrSellCreatorCoinResponse, ConstructedTransactionResponse, RequestOptions, SendDeSoRequest, SendDeSoResponse, TransferCreatorCoinRequest, TransferCreatorCoinResponse, TxRequestWithOptionalFeesAndExtraData } from '../backend-types';
import { PartialWithRequiredFields } from '../data';
import { ConstructedAndSubmittedTx, TxRequestOptions } from '../types';
import { BuyOrSellCreatorCoinRequest, BuyOrSellCreatorCoinResponse, ConstructedTransactionResponse, RequestOptions, SendDeSoRequest, SendDeSoResponse, TransferCreatorCoinRequest, TransferCreatorCoinResponse, TxRequestWithOptionalFeesAndExtraData } from '../backend-types/index.js';
import { PartialWithRequiredFields } from '../data/index.js';
import { ConstructedAndSubmittedTx, TxRequestOptions } from '../types.js';
/**

@@ -5,0 +5,0 @@ * https://docs.deso.org/deso-backend/construct-transactions/financial-transactions-api#send-deso

@@ -1,20 +0,11 @@

var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { TransactionMetadataBasicTransfer, TransactionMetadataCreatorCoinTransfer, TransactionOutput, bs58PublicKeyToCompressedBytes, identity, } from '../identity';
import { constructBalanceModelTx, getTxWithFeeNanos, handleSignAndSubmit, isMaybeDeSoPublicKey, sumTransactionFees, } from '../internal';
import { guardTxPermission } from './utils';
import { TransactionMetadataBasicTransfer, TransactionMetadataCreatorCoinTransfer, TransactionOutput, bs58PublicKeyToCompressedBytes, identity, } from '../identity/index.js';
import { constructBalanceModelTx, getTxWithFeeNanos, handleSignAndSubmit, isMaybeDeSoPublicKey, sumTransactionFees, } from '../internal.js';
import { guardTxPermission } from './utils.js';
/**
* https://docs.deso.org/deso-backend/construct-transactions/financial-transactions-api#send-deso
*/
export const sendDeso = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
var _a, _b, _c;
export const sendDeso = async (params, options) => {
const txWithFee = getTxWithFeeNanos(params.SenderPublicKeyBase58Check, new TransactionMetadataBasicTransfer(), {
Outputs: buildSendDeSoOutputs(Object.assign(Object.assign({}, params), {
Outputs: buildSendDeSoOutputs({
...params,
// NOTE: this is a bit of an odd hack, but bc we are only using this to

@@ -26,3 +17,4 @@ // estimate the fee, we can overwrite the recipient to be the sender to

// get blocked by browser popup blockers.
RecipientPublicKeyOrUsername: params.SenderPublicKeyBase58Check })),
RecipientPublicKeyOrUsername: params.SenderPublicKeyBase58Check,
}),
ExtraData: params.ExtraData,

@@ -32,4 +24,4 @@ MinFeeRateNanosPerKB: params.MinFeeRateNanosPerKB,

});
if ((options === null || options === void 0 ? void 0 : options.checkPermissions) !== false) {
yield guardTxPermission({
if (options?.checkPermissions !== false) {
await guardTxPermission({
GlobalDESOLimit: params.AmountNanos +

@@ -39,8 +31,14 @@ txWithFee.feeNanos +

TransactionCountLimitMap: {
BASIC_TRANSFER: (_c = (_a = options === null || options === void 0 ? void 0 : options.txLimitCount) !== null && _a !== void 0 ? _a : (_b = identity.transactionSpendingLimitOptions.TransactionCountLimitMap) === null || _b === void 0 ? void 0 : _b.BASIC_TRANSFER) !== null && _c !== void 0 ? _c : 1,
BASIC_TRANSFER: options?.txLimitCount ??
identity.transactionSpendingLimitOptions.TransactionCountLimitMap
?.BASIC_TRANSFER ??
1,
},
});
}
return handleSignAndSubmit('api/v0/send-deso', params, Object.assign(Object.assign({}, options), { constructionFunction: constructSendDeSoTransaction }));
});
return handleSignAndSubmit('api/v0/send-deso', params, {
...options,
constructionFunction: constructSendDeSoTransaction,
});
};
const buildSendDeSoOutputs = (params) => {

@@ -66,2 +64,3 @@ const transactionOutput = new TransactionOutput();

TransactionFees: params.TransactionFees,
Nonce: params.Nonce,
});

@@ -71,10 +70,15 @@ };

// TODO: Add tx permission check once local tx construction is implemented.
return handleSignAndSubmit('api/v0/buy-or-sell-creator-coin', Object.assign(Object.assign({}, params), { OperationType: 'buy' }), options);
return handleSignAndSubmit('api/v0/buy-or-sell-creator-coin', {
...params,
OperationType: 'buy',
}, options);
};
export const sellCreatorCoin = (params, options) => {
// TODO: Add tx permission check once local tx construction is implemented.
return handleSignAndSubmit('api/v0/buy-or-sell-creator-coin', Object.assign(Object.assign({}, params), { OperationType: 'sell' }), options);
return handleSignAndSubmit('api/v0/buy-or-sell-creator-coin', {
...params,
OperationType: 'sell',
}, options);
};
export const transferCreatorCoin = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
var _d;
export const transferCreatorCoin = async (params, options) => {
const txWithFee = getTxWithFeeNanos(params.SenderPublicKeyBase58Check, buildTransferCreatorCoinMetadata(params), {

@@ -85,8 +89,8 @@ ExtraData: params.ExtraData,

});
if ((options === null || options === void 0 ? void 0 : options.checkPermissions) !== false) {
yield guardTxPermission({
if (options?.checkPermissions !== false) {
await guardTxPermission({
GlobalDESOLimit: txWithFee.feeNanos + sumTransactionFees(params.TransactionFees),
CreatorCoinOperationLimitMap: {
[params.CreatorPublicKeyBase58Check]: {
transfer: (_d = options === null || options === void 0 ? void 0 : options.txLimitCount) !== null && _d !== void 0 ? _d : 1,
transfer: options?.txLimitCount ?? 1,
},

@@ -96,4 +100,7 @@ },

}
return handleSignAndSubmit('api/v0/transfer-creator-coin', params, Object.assign(Object.assign({}, options), { constructionFunction: constructTransferCreatorCoinTransaction }));
});
return handleSignAndSubmit('api/v0/transfer-creator-coin', params, {
...options,
constructionFunction: constructTransferCreatorCoinTransaction,
});
};
const buildTransferCreatorCoinMetadata = (params) => {

@@ -116,2 +123,2 @@ const metadata = new TransactionMetadataCreatorCoinTransfer();

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYW5jaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9ucy9maW5hbmNpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBWUEsT0FBTyxFQUNMLGdDQUFnQyxFQUNoQyxzQ0FBc0MsRUFDdEMsaUJBQWlCLEVBQ2pCLDhCQUE4QixFQUM5QixRQUFRLEdBQ1QsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixrQkFBa0IsR0FDbkIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTVDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQ3RCLE1BQThELEVBQzlELE9BQTBCLEVBRzFCLEVBQUU7O0lBQ0YsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQ2pDLE1BQU0sQ0FBQywwQkFBMEIsRUFDakMsSUFBSSxnQ0FBZ0MsRUFBRSxFQUN0QztRQUNFLE9BQU8sRUFBRSxvQkFBb0IsaUNBQ3hCLE1BQU07WUFDVCx1RUFBdUU7WUFDdkUsdUVBQXVFO1lBQ3ZFLGtFQUFrRTtZQUNsRSxzRUFBc0U7WUFDdEUscUVBQXFFO1lBQ3JFLHlDQUF5QztZQUN6Qyw0QkFBNEIsRUFBRSxNQUFNLENBQUMsMEJBQTBCLElBQy9EO1FBQ0YsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1FBQzNCLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxvQkFBb0I7UUFDakQsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO0tBQ3hDLENBQ0YsQ0FBQztJQUVGLElBQUksQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsZ0JBQWdCLE1BQUssS0FBSyxFQUFFO1FBQ3ZDLE1BQU0saUJBQWlCLENBQUM7WUFDdEIsZUFBZSxFQUNiLE1BQU0s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QjtRQUNqRCxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7S0FDeEMsQ0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQnV5T3JTZWxsQ3JlYXRvckNvaW5SZXF1ZXN0LFxuICBCdXlPclNlbGxDcmVhdG9yQ29pblJlc3BvbnNlLFxuICBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2UsXG4gIFJlcXVlc3RPcHRpb25zLFxuICBTZW5kRGVTb1JlcXVlc3QsXG4gIFNlbmREZVNvUmVzcG9uc2UsXG4gIFRyYW5zZmVyQ3JlYXRvckNvaW5SZXF1ZXN0LFxuICBUcmFuc2ZlckNyZWF0b3JDb2luUmVzcG9uc2UsXG4gIFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGEsXG59IGZyb20gJy4uL2JhY2tlbmQtdHlwZXMnO1xuaW1wb3J0IHsgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkcyB9IGZyb20gJy4uL2RhdGEnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YUJhc2ljVHJhbnNmZXIsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFDcmVhdG9yQ29pblRyYW5zZmVyLFxuICBUcmFuc2FjdGlvbk91dHB1dCxcbiAgYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzLFxuICBpZGVudGl0eSxcbn0gZnJvbSAnLi4vaWRlbnRpdHknO1xuaW1wb3J0IHtcbiAgY29uc3RydWN0QmFsYW5jZU1vZGVsVHgsXG4gIGdldFR4V2l0aEZlZU5hbm9zLFxuICBoYW5kbGVTaWduQW5kU3VibWl0LFxuICBpc01heWJlRGVTb1B1YmxpY0tleSxcbiAgc3VtVHJhbnNhY3Rpb25GZWVzLFxufSBmcm9tICcuLi9pbnRlcm5hbCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4LCBUeFJlcXVlc3RPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ3VhcmRUeFBlcm1pc3Npb24gfSBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvZmluYW5jaWFsLXRyYW5zYWN0aW9ucy1hcGkjc2VuZC1kZXNvXG4gKi9cbmV4cG9ydCBjb25zdCBzZW5kRGVzbyA9IGFzeW5jIChcbiAgcGFyYW1zOiBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFNlbmREZVNvUmVxdWVzdD4sXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPFxuICBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PFNlbmREZVNvUmVzcG9uc2UgfCBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+XG4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLlNlbmRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhQmFzaWNUcmFuc2ZlcigpLFxuICAgIHtcbiAgICAgIE91dHB1dHM6IGJ1aWxkU2VuZERlU29PdXRwdXRzKHtcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAvLyBOT1RFOiB0aGlzIGlzIGEgYml0IG9mIGFuIG9kZCBoYWNrLCBidXQgYmMgd2UgYXJlIG9ubHkgdXNpbmcgdGhpcyB0b1xuICAgICAgICAvLyBlc3RpbWF0ZSB0aGUgZmVlLCB3ZSBjYW4gb3ZlcndyaXRlIHRoZSByZWNpcGllbnQgdG8gYmUgdGhlIHNlbmRlciB0b1xuICAgICAgICAvLyBlbnN1cmUgdGhlIHZhbHVlIGlzIGEgdmFsaWQgcHVibGljIGtleSB0aGF0IGNhbiBiZSBjb252ZXJ0ZWQgdG9cbiAgICAgICAgLy8gYnl0ZXMuIFRoZSByZWFzb24gd2UgY2Fubm90IG1ha2UgYW4gYXBpIGNhbGwgdG8gZ2V0IHRoZSB0cnVlIHB1YmxpY1xuICAgICAgICAvLyBrZXkgaXMgYmVjYXVzZSBpdCBjb3VsZCBjYXVzZSB0aGUgZGVyaXZlZCBrZXkgcmUtYXBwcm92YWwgcG9wdXAgdG9cbiAgICAgICAgLy8gZ2V0IGJsb2NrZWQgYnkgYnJvd3NlciBwb3B1cCBibG9ja2Vycy5cbiAgICAgICAgUmVjaXBpZW50UHVibGljS2V5T3JVc2VybmFtZTogcGFyYW1zLlNlbmRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgICAgfSksXG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHBhcmFtcy5BbW91bnROYW5vcyArXG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArXG4gICAgICAgIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIFRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcDoge1xuICAgICAgICBCQVNJQ19UUkFOU0ZFUjpcbiAgICAgICAgICBvcHRpb25zPy50eExpbWl0Q291bnQgPz9cbiAgICAgICAgICBpZGVudGl0eS50cmFuc2FjdGlvblNwZW5kaW5nTGltaXRPcHRpb25zLlRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcFxuICAgICAgICAgICAgPy5CQVNJQ19UUkFOU0ZFUiA/P1xuICAgICAgICAgIDEsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC9zZW5kLWRlc28nLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RTZW5kRGVTb1RyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkU2VuZERlU29PdXRwdXRzID0gKFxuICBwYXJhbXM6IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8U2VuZERlU29SZXF1ZXN0PlxuKSA9PiB7XG4gIGNvbnN0IHRyYW5zYWN0aW9uT3V0cHV0ID0gbmV3IFRyYW5zYWN0aW9uT3V0cHV0KCk7XG4gIHRyYW5zYWN0aW9uT3V0cHV0LmFtb3VudE5hbm9zID0gcGFyYW1zLkFtb3VudE5hbm9zO1xuICB0cmFuc2FjdGlvbk91dHB1dC5wdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgLy8gRklYTUU6IHRoaXMgd2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgcmVjaXBpZW50IGlzIGEgdXNlcm5hbWUuIFdlIG5lZWRcbiAgICAvLyB0byBlaXRoZXIgZmV0Y2ggdGhlIHB1YmxpYyBrZXkgYW5kIG92ZXJ3cml0ZSB0aGUgdXNlcm5hbWUgd2l0aCBpdCBvclxuICAgIC8vIHRocm93IGEgbW9yZSBoZWxwZnVsIGVycm9yIHRvIGNvbnN1bWVycyBleHBsYWluaW5nIHRoYXQgd2UgcmVxdWlyZSB0aGVcbiAgICAvLyBwdWJsaWMga2V5IGluc3RlYWQgb2YgdGhlIHVzZXJuYW1lLlxuICAgIHBhcmFtcy5SZWNpcGllbnRQdWJsaWNLZXlPclVzZXJuYW1lXG4gICk7XG4gIHJldHVybiBbdHJhbnNhY3Rpb25PdXRwdXRdO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdFNlbmREZVNvVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxTZW5kRGVTb1JlcXVlc3Q+XG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICBpZiAoIWlzTWF5YmVEZVNvUHVibGljS2V5KHBhcmFtcy5SZWNpcGllbnRQdWJsaWNLZXlPclVzZXJuYW1lKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdtdXN0IHByb3ZpZGUgcHVibGljIGtleSwgbm90IHVzZXIgbmFtZSBmb3IgbG9jYWwgY29uc3RydWN0aW9uJ1xuICAgICk7XG4gIH1cblxuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlNlbmRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhQmFzaWNUcmFuc2ZlcigpLFxuICAgIHtcbiAgICAgIE91dHB1dHM6IGJ1aWxkU2VuZERlU29PdXRwdXRzKHBhcmFtcyksXG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG5cbi8vIFRPRE86IEJVWSBjcmVhdG9yIGNvaW5zIGlzIGhhcmQuIE5lZWQgdG8gbW92ZSBzb21lXG4vLyBiaWcgZmxvYXQgbWF0aCBpbnRvIGpzLlxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvZmluYW5jaWFsLXRyYW5zYWN0aW9ucy1hcGkjYnV5LW9yLXNlbGwtY3JlYXRvci1jb2luXG4gKi9cbmV4cG9ydCB0eXBlIEJ1eUNyZWF0b3JDb2luUmVxdWVzdFBhcmFtcyA9IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8XG4gIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgT21pdDxcbiAgICAgIEJ1eU9yU2VsbENyZWF0b3JDb2luUmVxdWVzdCxcbiAgICAgICdDcmVhdG9yQ29pblRvU2VsbE5hbm9zJyB8ICdPcGVyYXRpb25UeXBlJ1xuICAgID4sXG4gICAgfCAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgIHwgJ0NyZWF0b3JQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICB8ICdEZVNvVG9TZWxsTmFub3MnXG4gID5cbj47XG5leHBvcnQgY29uc3QgYnV5Q3JlYXRvckNvaW4gPSAoXG4gIHBhcmFtczogQnV5Q3JlYXRvckNvaW5SZXF1ZXN0UGFyYW1zLFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8XG4gIENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8XG4gICAgQnV5T3JTZWxsQ3JlYXRvckNvaW5SZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZVxuICA+XG4+ID0+IHtcbiAgLy8gVE9ETzogQWRkIHR4IHBlcm1pc3Npb24gY2hlY2sgb25jZSBsb2NhbCB0eCBjb25zdHJ1Y3Rpb24gaXMgaW1wbGVtZW50ZWQuXG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KFxuICAgICdhcGkvdjAvYnV5LW9yLXNlbGwtY3JlYXRvci1jb2luJyxcbiAgICB7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBPcGVyYXRpb25UeXBlOiAnYnV5JyxcbiAgICB9LFxuICAgIG9wdGlvbnNcbiAgKTtcbn07XG5cbi8vIFRPRE86IFNFTEwgY3JlYXRvciBjb2lucyBpcyBoYXJkLiBOZWVkIHRvIG1vdmUgc29tZVxuLy8gYmlnIGZsb2F0IG1hdGggaW50byBqcy5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9jb25zdHJ1Y3QtdHJhbnNhY3Rpb25zL2ZpbmFuY2lhbC10cmFuc2FjdGlvbnMtYXBpI2J1eS1vci1zZWxsLWNyZWF0b3ItY29pblxuICovXG5cbmV4cG9ydCB0eXBlIFNlbGxDcmVhdG9yQ29pblJlcXVlc3RQYXJhbXMgPVxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICAgIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgICBPbWl0PEJ1eU9yU2VsbENyZWF0b3JDb2luUmVxdWVzdCwgJ0Rlc29Ub1NlbGxOYW5vcycgfCAnT3BlcmF0aW9uVHlwZSc+LFxuICAgICAgfCAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnQ3JlYXRvclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnQ3JlYXRvckNvaW5Ub1NlbGxOYW5vcydcbiAgICA+XG4gID47XG5cbmV4cG9ydCBjb25zdCBzZWxsQ3JlYXRvckNvaW4gPSAoXG4gIHBhcmFtczogU2VsbENyZWF0b3JDb2luUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPFxuICBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PFxuICAgIEJ1eU9yU2VsbENyZWF0b3JDb2luUmVzcG9uc2UgfCBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2VcbiAgPlxuPiA9PiB7XG4gIC8vIFRPRE86IEFkZCB0eCBwZXJtaXNzaW9uIGNoZWNrIG9uY2UgbG9jYWwgdHggY29uc3RydWN0aW9uIGlzIGltcGxlbWVudGVkLlxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdChcbiAgICAnYXBpL3YwL2J1eS1vci1zZWxsLWNyZWF0b3ItY29pbicsXG4gICAge1xuICAgICAgLi4ucGFyYW1zLFxuICAgICAgT3BlcmF0aW9uVHlwZTogJ3NlbGwnLFxuICAgIH0sXG4gICAgb3B0aW9uc1xuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvZmluYW5jaWFsLXRyYW5zYWN0aW9ucy1hcGkjdHJhbnNmZXItY3JlYXRvci1jb2luXG4gKi9cbmV4cG9ydCB0eXBlIFRyYW5zZmVyQ3JlYXRvckNvaW5SZXF1ZXN0UGFyYW1zID1cbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgICBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgICAgVHJhbnNmZXJDcmVhdG9yQ29pblJlcXVlc3QsXG4gICAgICB8ICdTZW5kZXJQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICAgIHwgJ0NyZWF0b3JQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICAgIHwgJ1JlY2VpdmVyVXNlcm5hbWVPclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnQ3JlYXRvckNvaW5Ub1RyYW5zZmVyTmFub3MnXG4gICAgPlxuICA+O1xuZXhwb3J0IGNvbnN0IHRyYW5zZmVyQ3JlYXRvckNvaW4gPSBhc3luYyAoXG4gIHBhcmFtczogVHJhbnNmZXJDcmVhdG9yQ29pblJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8VHJhbnNmZXJDcmVhdG9yQ29pblJlc3BvbnNlPj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuU2VuZGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRUcmFuc2ZlckNyZWF0b3JDb2luTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIENyZWF0b3JDb2luT3BlcmF0aW9uTGltaXRNYXA6IHtcbiAgICAgICAgW3BhcmFtcy5DcmVhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2tdOiB7XG4gICAgICAgICAgdHJhbnNmZXI6IG9wdGlvbnM/LnR4TGltaXRDb3VudCA/PyAxLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvdHJhbnNmZXItY3JlYXRvci1jb2luJywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0VHJhbnNmZXJDcmVhdG9yQ29pblRyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkVHJhbnNmZXJDcmVhdG9yQ29pbk1ldGFkYXRhID0gKFxuICBwYXJhbXM6IFRyYW5zZmVyQ3JlYXRvckNvaW5SZXF1ZXN0UGFyYW1zXG4pID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YUNyZWF0b3JDb2luVHJhbnNmZXIoKTtcbiAgbWV0YWRhdGEuY3JlYXRvckNvaW5Ub1RyYW5zZmVyTmFub3MgPSBwYXJhbXMuQ3JlYXRvckNvaW5Ub1RyYW5zZmVyTmFub3M7XG4gIG1ldGFkYXRhLnByb2ZpbGVQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLkNyZWF0b3JQdWJsaWNLZXlCYXNlNThDaGVja1xuICApO1xuICBtZXRhZGF0YS5yZWNlaXZlclB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuUmVjZWl2ZXJVc2VybmFtZU9yUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0VHJhbnNmZXJDcmVhdG9yQ29pblRyYW5zYWN0aW9uID0gKFxuICBwYXJhbXM6IFRyYW5zZmVyQ3JlYXRvckNvaW5SZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICBpZiAoIWlzTWF5YmVEZVNvUHVibGljS2V5KHBhcmFtcy5SZWNlaXZlclVzZXJuYW1lT3JQdWJsaWNLZXlCYXNlNThDaGVjaykpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICAnbXVzdCBwcm92aWRlIHB1YmxpYyBrZXksIG5vdCB1c2VyIG5hbWUgZm9yIGxvY2FsIGNvbnN0cnVjdGlvbidcbiAgICApO1xuICB9XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChcbiAgICBwYXJhbXMuU2VuZGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRUcmFuc2ZlckNyZWF0b3JDb2luTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYW5jaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9ucy9maW5hbmNpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBWUEsT0FBTyxFQUNMLGdDQUFnQyxFQUNoQyxzQ0FBc0MsRUFDdEMsaUJBQWlCLEVBQ2pCLDhCQUE4QixFQUM5QixRQUFRLEdBQ1QsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLGtCQUFrQixHQUNuQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUvQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxLQUFLLEVBQzNCLE1BQThELEVBQzlELE9BQTBCLEVBRzFCLEVBQUU7SUFDRixNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FDakMsTUFBTSxDQUFDLDBCQUEwQixFQUNqQyxJQUFJLGdDQUFnQyxFQUFFLEVBQ3RDO1FBQ0UsT0FBTyxFQUFFLG9CQUFvQixDQUFDO1lBQzVCLEdBQUcsTUFBTTtZQUNULHVFQUF1RTtZQUN2RSx1RUFBdUU7WUFDdkUsa0VBQWtFO1lBQ2xFLHNFQUFzRTtZQUN0RSxxRUFBcUU7WUFDckUseUNBQXlDO1lBQ3pDLDRCQUE0QixFQUFFLE1BQU0sQ0FBQywwQkFBMEI7U0FDaEUsQ0FBQztRQUNGLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztRQUMzQixvQkFBb0IsRUFBRSxNQUFNLENBQUMsb0JBQW9CO1FBQ2pELGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZTtLQUN4QyxDQUNGLENBQUM7SUFFRixJQUFJLE9BQU8sRUFBRSxnQkFBZ0IsS0FBSyxLQUFLLEVBQUU7UUFDdkMsTUFBTSxpQkFBaUIsQ0FBQztZQUN0QixlQUFlLEVBQ2IsTUFBTSxDQUFDLFdBQVc7Z0JB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RSxNQUFNLENBQUMsZUFBZTtLQUN4QyxDQUNGLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCdXlPclNlbGxDcmVhdG9yQ29pblJlcXVlc3QsXG4gIEJ1eU9yU2VsbENyZWF0b3JDb2luUmVzcG9uc2UsXG4gIENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZSxcbiAgUmVxdWVzdE9wdGlvbnMsXG4gIFNlbmREZVNvUmVxdWVzdCxcbiAgU2VuZERlU29SZXNwb25zZSxcbiAgVHJhbnNmZXJDcmVhdG9yQ29pblJlcXVlc3QsXG4gIFRyYW5zZmVyQ3JlYXRvckNvaW5SZXNwb25zZSxcbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YSxcbn0gZnJvbSAnLi4vYmFja2VuZC10eXBlcy9pbmRleC5qcyc7XG5pbXBvcnQgeyBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzIH0gZnJvbSAnLi4vZGF0YS9pbmRleC5qcyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbk1ldGFkYXRhQmFzaWNUcmFuc2ZlcixcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YUNyZWF0b3JDb2luVHJhbnNmZXIsXG4gIFRyYW5zYWN0aW9uT3V0cHV0LFxuICBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMsXG4gIGlkZW50aXR5LFxufSBmcm9tICcuLi9pZGVudGl0eS9pbmRleC5qcyc7XG5pbXBvcnQge1xuICBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeCxcbiAgZ2V0VHhXaXRoRmVlTmFub3MsXG4gIGhhbmRsZVNpZ25BbmRTdWJtaXQsXG4gIGlzTWF5YmVEZVNvUHVibGljS2V5LFxuICBzdW1UcmFuc2FjdGlvbkZlZXMsXG59IGZyb20gJy4uL2ludGVybmFsLmpzJztcbmltcG9ydCB7IENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHgsIFR4UmVxdWVzdE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5pbXBvcnQgeyBndWFyZFR4UGVybWlzc2lvbiB9IGZyb20gJy4vdXRpbHMuanMnO1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9maW5hbmNpYWwtdHJhbnNhY3Rpb25zLWFwaSNzZW5kLWRlc29cbiAqL1xuZXhwb3J0IGNvbnN0IHNlbmREZXNvID0gYXN5bmMgKFxuICBwYXJhbXM6IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8U2VuZERlU29SZXF1ZXN0PixcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8XG4gIENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8U2VuZERlU29SZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT5cbj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuU2VuZGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFCYXNpY1RyYW5zZmVyKCksXG4gICAge1xuICAgICAgT3V0cHV0czogYnVpbGRTZW5kRGVTb091dHB1dHMoe1xuICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgIC8vIE5PVEU6IHRoaXMgaXMgYSBiaXQgb2YgYW4gb2RkIGhhY2ssIGJ1dCBiYyB3ZSBhcmUgb25seSB1c2luZyB0aGlzIHRvXG4gICAgICAgIC8vIGVzdGltYXRlIHRoZSBmZWUsIHdlIGNhbiBvdmVyd3JpdGUgdGhlIHJlY2lwaWVudCB0byBiZSB0aGUgc2VuZGVyIHRvXG4gICAgICAgIC8vIGVuc3VyZSB0aGUgdmFsdWUgaXMgYSB2YWxpZCBwdWJsaWMga2V5IHRoYXQgY2FuIGJlIGNvbnZlcnRlZCB0b1xuICAgICAgICAvLyBieXRlcy4gVGhlIHJlYXNvbiB3ZSBjYW5ub3QgbWFrZSBhbiBhcGkgY2FsbCB0byBnZXQgdGhlIHRydWUgcHVibGljXG4gICAgICAgIC8vIGtleSBpcyBiZWNhdXNlIGl0IGNvdWxkIGNhdXNlIHRoZSBkZXJpdmVkIGtleSByZS1hcHByb3ZhbCBwb3B1cCB0b1xuICAgICAgICAvLyBnZXQgYmxvY2tlZCBieSBicm93c2VyIHBvcHVwIGJsb2NrZXJzLlxuICAgICAgICBSZWNpcGllbnRQdWJsaWNLZXlPclVzZXJuYW1lOiBwYXJhbXMuU2VuZGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgICB9KSxcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xuXG4gIGlmIChvcHRpb25zPy5jaGVja1Blcm1pc3Npb25zICE9PSBmYWxzZSkge1xuICAgIGF3YWl0IGd1YXJkVHhQZXJtaXNzaW9uKHtcbiAgICAgIEdsb2JhbERFU09MaW1pdDpcbiAgICAgICAgcGFyYW1zLkFtb3VudE5hbm9zICtcbiAgICAgICAgdHhXaXRoRmVlLmZlZU5hbm9zICtcbiAgICAgICAgc3VtVHJhbnNhY3Rpb25GZWVzKHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMpLFxuICAgICAgVHJhbnNhY3Rpb25Db3VudExpbWl0TWFwOiB7XG4gICAgICAgIEJBU0lDX1RSQU5TRkVSOlxuICAgICAgICAgIG9wdGlvbnM/LnR4TGltaXRDb3VudCA/P1xuICAgICAgICAgIGlkZW50aXR5LnRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdE9wdGlvbnMuVHJhbnNhY3Rpb25Db3VudExpbWl0TWFwXG4gICAgICAgICAgICA/LkJBU0lDX1RSQU5TRkVSID8/XG4gICAgICAgICAgMSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL3NlbmQtZGVzbycsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdFNlbmREZVNvVHJhbnNhY3Rpb24sXG4gIH0pO1xufTtcblxuY29uc3QgYnVpbGRTZW5kRGVTb091dHB1dHMgPSAoXG4gIHBhcmFtczogVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxTZW5kRGVTb1JlcXVlc3Q+XG4pID0+IHtcbiAgY29uc3QgdHJhbnNhY3Rpb25PdXRwdXQgPSBuZXcgVHJhbnNhY3Rpb25PdXRwdXQoKTtcbiAgdHJhbnNhY3Rpb25PdXRwdXQuYW1vdW50TmFub3MgPSBwYXJhbXMuQW1vdW50TmFub3M7XG4gIHRyYW5zYWN0aW9uT3V0cHV0LnB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICAvLyBGSVhNRTogdGhpcyB3aWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSByZWNpcGllbnQgaXMgYSB1c2VybmFtZS4gV2UgbmVlZFxuICAgIC8vIHRvIGVpdGhlciBmZXRjaCB0aGUgcHVibGljIGtleSBhbmQgb3ZlcndyaXRlIHRoZSB1c2VybmFtZSB3aXRoIGl0IG9yXG4gICAgLy8gdGhyb3cgYSBtb3JlIGhlbHBmdWwgZXJyb3IgdG8gY29uc3VtZXJzIGV4cGxhaW5pbmcgdGhhdCB3ZSByZXF1aXJlIHRoZVxuICAgIC8vIHB1YmxpYyBrZXkgaW5zdGVhZCBvZiB0aGUgdXNlcm5hbWUuXG4gICAgcGFyYW1zLlJlY2lwaWVudFB1YmxpY0tleU9yVXNlcm5hbWVcbiAgKTtcbiAgcmV0dXJuIFt0cmFuc2FjdGlvbk91dHB1dF07XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0U2VuZERlU29UcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFNlbmREZVNvUmVxdWVzdD5cbik6IFByb21pc2U8Q29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPiA9PiB7XG4gIGlmICghaXNNYXliZURlU29QdWJsaWNLZXkocGFyYW1zLlJlY2lwaWVudFB1YmxpY0tleU9yVXNlcm5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ211c3QgcHJvdmlkZSBwdWJsaWMga2V5LCBub3QgdXNlciBuYW1lIGZvciBsb2NhbCBjb25zdHJ1Y3Rpb24nXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChcbiAgICBwYXJhbXMuU2VuZGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFCYXNpY1RyYW5zZmVyKCksXG4gICAge1xuICAgICAgT3V0cHV0czogYnVpbGRTZW5kRGVTb091dHB1dHMocGFyYW1zKSxcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgICBOb25jZTogcGFyYW1zLk5vbmNlLFxuICAgIH1cbiAgKTtcbn07XG5cbi8vIFRPRE86IEJVWSBjcmVhdG9yIGNvaW5zIGlzIGhhcmQuIE5lZWQgdG8gbW92ZSBzb21lXG4vLyBiaWcgZmxvYXQgbWF0aCBpbnRvIGpzLlxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvZmluYW5jaWFsLXRyYW5zYWN0aW9ucy1hcGkjYnV5LW9yLXNlbGwtY3JlYXRvci1jb2luXG4gKi9cbmV4cG9ydCB0eXBlIEJ1eUNyZWF0b3JDb2luUmVxdWVzdFBhcmFtcyA9IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8XG4gIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgT21pdDxcbiAgICAgIEJ1eU9yU2VsbENyZWF0b3JDb2luUmVxdWVzdCxcbiAgICAgICdDcmVhdG9yQ29pblRvU2VsbE5hbm9zJyB8ICdPcGVyYXRpb25UeXBlJ1xuICAgID4sXG4gICAgfCAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgIHwgJ0NyZWF0b3JQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICB8ICdEZVNvVG9TZWxsTmFub3MnXG4gID5cbj47XG5leHBvcnQgY29uc3QgYnV5Q3JlYXRvckNvaW4gPSAoXG4gIHBhcmFtczogQnV5Q3JlYXRvckNvaW5SZXF1ZXN0UGFyYW1zLFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8XG4gIENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8XG4gICAgQnV5T3JTZWxsQ3JlYXRvckNvaW5SZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZVxuICA+XG4+ID0+IHtcbiAgLy8gVE9ETzogQWRkIHR4IHBlcm1pc3Npb24gY2hlY2sgb25jZSBsb2NhbCB0eCBjb25zdHJ1Y3Rpb24gaXMgaW1wbGVtZW50ZWQuXG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KFxuICAgICdhcGkvdjAvYnV5LW9yLXNlbGwtY3JlYXRvci1jb2luJyxcbiAgICB7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBPcGVyYXRpb25UeXBlOiAnYnV5JyxcbiAgICB9LFxuICAgIG9wdGlvbnNcbiAgKTtcbn07XG5cbi8vIFRPRE86IFNFTEwgY3JlYXRvciBjb2lucyBpcyBoYXJkLiBOZWVkIHRvIG1vdmUgc29tZVxuLy8gYmlnIGZsb2F0IG1hdGggaW50byBqcy5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9jb25zdHJ1Y3QtdHJhbnNhY3Rpb25zL2ZpbmFuY2lhbC10cmFuc2FjdGlvbnMtYXBpI2J1eS1vci1zZWxsLWNyZWF0b3ItY29pblxuICovXG5cbmV4cG9ydCB0eXBlIFNlbGxDcmVhdG9yQ29pblJlcXVlc3RQYXJhbXMgPVxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICAgIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgICBPbWl0PEJ1eU9yU2VsbENyZWF0b3JDb2luUmVxdWVzdCwgJ0Rlc29Ub1NlbGxOYW5vcycgfCAnT3BlcmF0aW9uVHlwZSc+LFxuICAgICAgfCAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnQ3JlYXRvclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnQ3JlYXRvckNvaW5Ub1NlbGxOYW5vcydcbiAgICA+XG4gID47XG5cbmV4cG9ydCBjb25zdCBzZWxsQ3JlYXRvckNvaW4gPSAoXG4gIHBhcmFtczogU2VsbENyZWF0b3JDb2luUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPFxuICBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PFxuICAgIEJ1eU9yU2VsbENyZWF0b3JDb2luUmVzcG9uc2UgfCBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2VcbiAgPlxuPiA9PiB7XG4gIC8vIFRPRE86IEFkZCB0eCBwZXJtaXNzaW9uIGNoZWNrIG9uY2UgbG9jYWwgdHggY29uc3RydWN0aW9uIGlzIGltcGxlbWVudGVkLlxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdChcbiAgICAnYXBpL3YwL2J1eS1vci1zZWxsLWNyZWF0b3ItY29pbicsXG4gICAge1xuICAgICAgLi4ucGFyYW1zLFxuICAgICAgT3BlcmF0aW9uVHlwZTogJ3NlbGwnLFxuICAgIH0sXG4gICAgb3B0aW9uc1xuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvZmluYW5jaWFsLXRyYW5zYWN0aW9ucy1hcGkjdHJhbnNmZXItY3JlYXRvci1jb2luXG4gKi9cbmV4cG9ydCB0eXBlIFRyYW5zZmVyQ3JlYXRvckNvaW5SZXF1ZXN0UGFyYW1zID1cbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgICBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgICAgVHJhbnNmZXJDcmVhdG9yQ29pblJlcXVlc3QsXG4gICAgICB8ICdTZW5kZXJQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICAgIHwgJ0NyZWF0b3JQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICAgIHwgJ1JlY2VpdmVyVXNlcm5hbWVPclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnQ3JlYXRvckNvaW5Ub1RyYW5zZmVyTmFub3MnXG4gICAgPlxuICA+O1xuZXhwb3J0IGNvbnN0IHRyYW5zZmVyQ3JlYXRvckNvaW4gPSBhc3luYyAoXG4gIHBhcmFtczogVHJhbnNmZXJDcmVhdG9yQ29pblJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8VHJhbnNmZXJDcmVhdG9yQ29pblJlc3BvbnNlPj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuU2VuZGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRUcmFuc2ZlckNyZWF0b3JDb2luTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIENyZWF0b3JDb2luT3BlcmF0aW9uTGltaXRNYXA6IHtcbiAgICAgICAgW3BhcmFtcy5DcmVhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2tdOiB7XG4gICAgICAgICAgdHJhbnNmZXI6IG9wdGlvbnM/LnR4TGltaXRDb3VudCA/PyAxLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvdHJhbnNmZXItY3JlYXRvci1jb2luJywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0VHJhbnNmZXJDcmVhdG9yQ29pblRyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkVHJhbnNmZXJDcmVhdG9yQ29pbk1ldGFkYXRhID0gKFxuICBwYXJhbXM6IFRyYW5zZmVyQ3JlYXRvckNvaW5SZXF1ZXN0UGFyYW1zXG4pID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YUNyZWF0b3JDb2luVHJhbnNmZXIoKTtcbiAgbWV0YWRhdGEuY3JlYXRvckNvaW5Ub1RyYW5zZmVyTmFub3MgPSBwYXJhbXMuQ3JlYXRvckNvaW5Ub1RyYW5zZmVyTmFub3M7XG4gIG1ldGFkYXRhLnByb2ZpbGVQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLkNyZWF0b3JQdWJsaWNLZXlCYXNlNThDaGVja1xuICApO1xuICBtZXRhZGF0YS5yZWNlaXZlclB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuUmVjZWl2ZXJVc2VybmFtZU9yUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0VHJhbnNmZXJDcmVhdG9yQ29pblRyYW5zYWN0aW9uID0gKFxuICBwYXJhbXM6IFRyYW5zZmVyQ3JlYXRvckNvaW5SZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICBpZiAoIWlzTWF5YmVEZVNvUHVibGljS2V5KHBhcmFtcy5SZWNlaXZlclVzZXJuYW1lT3JQdWJsaWNLZXlCYXNlNThDaGVjaykpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICAnbXVzdCBwcm92aWRlIHB1YmxpYyBrZXksIG5vdCB1c2VyIG5hbWUgZm9yIGxvY2FsIGNvbnN0cnVjdGlvbidcbiAgICApO1xuICB9XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChcbiAgICBwYXJhbXMuU2VuZGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRUcmFuc2ZlckNyZWF0b3JDb2luTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG4iXX0=

@@ -1,5 +0,5 @@

import { AcceptNFTBidRequest, AcceptNFTBidResponse, AcceptNFTTransferRequest, AcceptNFTTransferResponse, BurnNFTRequest, BurnNFTResponse, ConstructedTransactionResponse, CreateNFTBidRequest, CreateNFTBidResponse, CreateNFTRequest, CreateNFTResponse, TransferNFTRequest, TransferNFTResponse, TxRequestWithOptionalFeesAndExtraData, UpdateNFTRequest, UpdateNFTResponse } from '../backend-types';
import { PartialWithRequiredFields } from '../data';
import { TransactionMetadataAcceptNFTTransfer } from '../identity';
import { ConstructedAndSubmittedTx, TxRequestOptions } from '../types';
import { AcceptNFTBidRequest, AcceptNFTBidResponse, AcceptNFTTransferRequest, AcceptNFTTransferResponse, BurnNFTRequest, BurnNFTResponse, ConstructedTransactionResponse, CreateNFTBidRequest, CreateNFTBidResponse, CreateNFTRequest, CreateNFTResponse, TransferNFTRequest, TransferNFTResponse, TxRequestWithOptionalFeesAndExtraData, UpdateNFTRequest, UpdateNFTResponse } from '../backend-types/index.js';
import { PartialWithRequiredFields } from '../data/index.js';
import { TransactionMetadataAcceptNFTTransfer } from '../identity/index.js';
import { ConstructedAndSubmittedTx, TxRequestOptions } from '../types.js';
/**

@@ -6,0 +6,0 @@ * https://docs.deso.org/deso-backend/construct-transactions/nft-transactions-api#create-nft

@@ -1,16 +0,6 @@

var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { hexToBytes } from '@noble/hashes/utils';
import { TransactionExtraDataKV, TransactionMetadataAcceptNFTBid, TransactionMetadataAcceptNFTTransfer, TransactionMetadataBurnNFT, TransactionMetadataCreateNFT, TransactionMetadataNFTBid, TransactionMetadataNFTTransfer, TransactionMetadataUpdateNFT, bs58PublicKeyToCompressedBytes, concatUint8Arrays, encodeUTF8ToBytes, uvarint64ToBuf, } from '../identity';
import { constructBalanceModelTx, getTxWithFeeNanos, handleSignAndSubmit, sumTransactionFees, } from '../internal';
import { guardTxPermission } from './utils';
export const createNFT = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
var _a;
import { TransactionExtraDataKV, TransactionMetadataAcceptNFTBid, TransactionMetadataAcceptNFTTransfer, TransactionMetadataBurnNFT, TransactionMetadataCreateNFT, TransactionMetadataNFTBid, TransactionMetadataNFTTransfer, TransactionMetadataUpdateNFT, bs58PublicKeyToCompressedBytes, concatUint8Arrays, encodeUTF8ToBytes, uvarint64ToBuf, } from '../identity/index.js';
import { constructBalanceModelTx, getTxWithFeeNanos, handleSignAndSubmit, sumTransactionFees, } from '../internal.js';
import { guardTxPermission } from './utils.js';
export const createNFT = async (params, options) => {
const txWithFee = getTxWithFeeNanos(params.UpdaterPublicKeyBase58Check, buildCreateNFTMetadata(params), {

@@ -22,12 +12,15 @@ ExtraData: params.ExtraData,

});
if ((options === null || options === void 0 ? void 0 : options.checkPermissions) !== false) {
yield guardTxPermission({
if (options?.checkPermissions !== false) {
await guardTxPermission({
GlobalDESOLimit: txWithFee.feeNanos + sumTransactionFees(params.TransactionFees),
TransactionCountLimitMap: {
CREATE_NFT: (_a = options === null || options === void 0 ? void 0 : options.txLimitCount) !== null && _a !== void 0 ? _a : 1,
CREATE_NFT: options?.txLimitCount ?? 1,
},
});
}
return handleSignAndSubmit('api/v0/create-nft', params, Object.assign(Object.assign({}, options), { constructionFunction: constructCreateNFTTransaction }));
});
return handleSignAndSubmit('api/v0/create-nft', params, {
...options,
constructionFunction: constructCreateNFTTransaction,
});
};
const buildCreateNFTMetadata = (params) => {

@@ -90,4 +83,3 @@ const metadata = new TransactionMetadataCreateNFT();

};
export const updateNFT = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
var _b;
export const updateNFT = async (params, options) => {
const txWithFee = getTxWithFeeNanos(params.UpdaterPublicKeyBase58Check, buildUpdateNFTMetadata(params), {

@@ -99,12 +91,15 @@ ExtraData: params.ExtraData,

});
if ((options === null || options === void 0 ? void 0 : options.checkPermissions) !== false) {
yield guardTxPermission({
if (options?.checkPermissions !== false) {
await guardTxPermission({
GlobalDESOLimit: txWithFee.feeNanos + sumTransactionFees(params.TransactionFees),
TransactionCountLimitMap: {
UPDATE_NFT: (_b = options === null || options === void 0 ? void 0 : options.txLimitCount) !== null && _b !== void 0 ? _b : 1,
UPDATE_NFT: options?.txLimitCount ?? 1,
},
});
}
return handleSignAndSubmit('api/v0/update-nft', params, Object.assign(Object.assign({}, options), { constructionFunction: constructUpdateNFTTransaction }));
});
return handleSignAndSubmit('api/v0/update-nft', params, {
...options,
constructionFunction: constructUpdateNFTTransaction,
});
};
const buildUpdateNFTMetadata = (params) => {

@@ -133,4 +128,3 @@ const metadata = new TransactionMetadataUpdateNFT();

};
export const createNFTBid = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
var _c;
export const createNFTBid = async (params, options) => {
const txWithFee = getTxWithFeeNanos(params.UpdaterPublicKeyBase58Check, buildCreateNFTBidMetadata(params), {

@@ -141,4 +135,4 @@ ExtraData: params.ExtraData,

});
if ((options === null || options === void 0 ? void 0 : options.checkPermissions) !== false) {
yield guardTxPermission({
if (options?.checkPermissions !== false) {
await guardTxPermission({
GlobalDESOLimit: params.BidAmountNanos +

@@ -150,3 +144,3 @@ txWithFee.feeNanos +

[params.SerialNumber]: {
nft_bid: (_c = options === null || options === void 0 ? void 0 : options.txLimitCount) !== null && _c !== void 0 ? _c : 1,
nft_bid: options?.txLimitCount ?? 1,
},

@@ -157,4 +151,7 @@ },

}
return handleSignAndSubmit('api/v0/create-nft-bid', params, Object.assign(Object.assign({}, options), { constructionFunction: constructNFTBidTransaction }));
});
return handleSignAndSubmit('api/v0/create-nft-bid', params, {
...options,
constructionFunction: constructNFTBidTransaction,
});
};
const buildCreateNFTBidMetadata = (params) => {

@@ -174,4 +171,3 @@ const metadata = new TransactionMetadataNFTBid();

};
export const acceptNFTBid = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
var _d;
export const acceptNFTBid = async (params, options) => {
const txWithFee = getTxWithFeeNanos(params.UpdaterPublicKeyBase58Check, buildAcceptNFTBidMetadata(params), {

@@ -182,4 +178,4 @@ ExtraData: params.ExtraData,

});
if ((options === null || options === void 0 ? void 0 : options.checkPermissions) !== false) {
yield guardTxPermission({
if (options?.checkPermissions !== false) {
await guardTxPermission({
GlobalDESOLimit: params.BidAmountNanos +

@@ -191,3 +187,3 @@ txWithFee.feeNanos +

[params.SerialNumber]: {
accept_nft_bid: (_d = options === null || options === void 0 ? void 0 : options.txLimitCount) !== null && _d !== void 0 ? _d : 1,
accept_nft_bid: options?.txLimitCount ?? 1,
},

@@ -198,4 +194,7 @@ },

}
return handleSignAndSubmit('api/v0/accept-nft-bid', params, Object.assign(Object.assign({}, options), { constructionFunction: constructAcceptNFTBidTransaction }));
});
return handleSignAndSubmit('api/v0/accept-nft-bid', params, {
...options,
constructionFunction: constructAcceptNFTBidTransaction,
});
};
const buildAcceptNFTBidMetadata = (params) => {

@@ -219,4 +218,3 @@ const metadata = new TransactionMetadataAcceptNFTBid();

};
export const transferNFT = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
var _e;
export const transferNFT = async (params, options) => {
const txWithFee = getTxWithFeeNanos(params.SenderPublicKeyBase58Check, buildTransferNFTMetadata(params), {

@@ -227,4 +225,4 @@ ExtraData: params.ExtraData,

});
if ((options === null || options === void 0 ? void 0 : options.checkPermissions) !== false) {
yield guardTxPermission({
if (options?.checkPermissions !== false) {
await guardTxPermission({
GlobalDESOLimit: txWithFee.feeNanos + sumTransactionFees(params.TransactionFees),

@@ -234,3 +232,3 @@ NFTOperationLimitMap: {

[params.SerialNumber]: {
transfer: (_e = options === null || options === void 0 ? void 0 : options.txLimitCount) !== null && _e !== void 0 ? _e : 1,
transfer: options?.txLimitCount ?? 1,
},

@@ -241,4 +239,7 @@ },

}
return handleSignAndSubmit('api/v0/transfer-nft', params, Object.assign(Object.assign({}, options), { constructionFunction: constructTransferNFT }));
});
return handleSignAndSubmit('api/v0/transfer-nft', params, {
...options,
constructionFunction: constructTransferNFT,
});
};
const buildTransferNFTMetadata = (params) => {

@@ -259,4 +260,3 @@ const metadata = new TransactionMetadataNFTTransfer();

};
export const acceptNFTTransfer = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
var _f;
export const acceptNFTTransfer = async (params, options) => {
const txWithFee = getTxWithFeeNanos(params.UpdaterPublicKeyBase58Check, buildAcceptNFTTransferMetadata(params), {

@@ -267,4 +267,4 @@ ExtraData: params.ExtraData,

});
if ((options === null || options === void 0 ? void 0 : options.checkPermissions) !== false) {
yield guardTxPermission({
if (options?.checkPermissions !== false) {
await guardTxPermission({
GlobalDESOLimit: txWithFee.feeNanos + sumTransactionFees(params.TransactionFees),

@@ -274,3 +274,3 @@ NFTOperationLimitMap: {

[params.SerialNumber]: {
accept_nft_transfer: (_f = options === null || options === void 0 ? void 0 : options.txLimitCount) !== null && _f !== void 0 ? _f : 1,
accept_nft_transfer: options?.txLimitCount ?? 1,
},

@@ -281,4 +281,7 @@ },

}
return handleSignAndSubmit('api/v0/accept-nft-transfer', params, Object.assign(Object.assign({}, options), { constructionFunction: constructAcceptNFTTransfer }));
});
return handleSignAndSubmit('api/v0/accept-nft-transfer', params, {
...options,
constructionFunction: constructAcceptNFTTransfer,
});
};
export const buildAcceptNFTTransferMetadata = (params) => {

@@ -297,4 +300,3 @@ const metadata = new TransactionMetadataAcceptNFTTransfer();

};
export const burnNFT = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
var _g;
export const burnNFT = async (params, options) => {
const txWithFee = getTxWithFeeNanos(params.UpdaterPublicKeyBase58Check, buildBurnNFTMetadata(params), {

@@ -305,4 +307,4 @@ ExtraData: params.ExtraData,

});
if ((options === null || options === void 0 ? void 0 : options.checkPermissions) !== false) {
yield guardTxPermission({
if (options?.checkPermissions !== false) {
await guardTxPermission({
GlobalDESOLimit: txWithFee.feeNanos + sumTransactionFees(params.TransactionFees),

@@ -312,3 +314,3 @@ NFTOperationLimitMap: {

[params.SerialNumber]: {
burn: (_g = options === null || options === void 0 ? void 0 : options.txLimitCount) !== null && _g !== void 0 ? _g : 1,
burn: options?.txLimitCount ?? 1,
},

@@ -319,4 +321,7 @@ },

}
return handleSignAndSubmit('api/v0/burn-nft', params, Object.assign(Object.assign({}, options), { constructionFunction: constructBurnNFTTransation }));
});
return handleSignAndSubmit('api/v0/burn-nft', params, {
...options,
constructionFunction: constructBurnNFTTransation,
});
};
const buildBurnNFTMetadata = (params) => {

@@ -335,2 +340,2 @@ const metadata = new TransactionMetadataBurnNFT();

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmZ0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbnMvbmZ0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFvQmpELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsK0JBQStCLEVBQy9CLG9DQUFvQyxFQUNwQywwQkFBMEIsRUFDMUIsNEJBQTRCLEVBQzVCLHlCQUF5QixFQUN6Qiw4QkFBOEIsRUFDOUIsNEJBQTRCLEVBQzVCLDhCQUE4QixFQUM5QixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGNBQWMsR0FDZixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsa0JBQWtCLEdBQ25CLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQWlCNUMsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQ3ZCLE1BQThCLEVBQzlCLE9BQTBCLEVBRzFCLEVBQUU7O0lBQ0YsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQ2pDLE1BQU0sQ0FBQywyQkFBMkIsRUFDbEMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLEVBQzlCO1FBQ0UsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1FBQzNCLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxvQkFBb0I7UUFDakQsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO1FBQ3ZDLHFCQUFxQixFQUFFLDBCQUEwQixDQUFDLE1BQU0sQ0FBQztLQUMxRCxDQUNGLENBQUM7SUFFRixJQUFJLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLGdCQUFnQixNQUFLLEtBQUssRUFBRTtRQUN2QyxNQUFNLGlCQUFpQixDQUFDO1lBQ3RCLGVBQWUsRUFDYixTQUFTLENBQUMs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bSAnQG5vYmxlL2hhc2hlcy91dGlscyc7XG5pbXBvcnQge1xuICBBY2NlcHRORlRCaWRSZXF1ZXN0LFxuICBBY2NlcHRORlRCaWRSZXNwb25zZSxcbiAgQWNjZXB0TkZUVHJhbnNmZXJSZXF1ZXN0LFxuICBBY2NlcHRORlRUcmFuc2ZlclJlc3BvbnNlLFxuICBCdXJuTkZUUmVxdWVzdCxcbiAgQnVybk5GVFJlc3BvbnNlLFxuICBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2UsXG4gIENyZWF0ZU5GVEJpZFJlcXVlc3QsXG4gIENyZWF0ZU5GVEJpZFJlc3BvbnNlLFxuICBDcmVhdGVORlRSZXF1ZXN0LFxuICBDcmVhdGVORlRSZXNwb25zZSxcbiAgVHJhbnNmZXJORlRSZXF1ZXN0LFxuICBUcmFuc2Zlck5GVFJlc3BvbnNlLFxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhLFxuICBVcGRhdGVORlRSZXF1ZXN0LFxuICBVcGRhdGVORlRSZXNwb25zZSxcbn0gZnJvbSAnLi4vYmFja2VuZC10eXBlcyc7XG5pbXBvcnQgeyBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzIH0gZnJvbSAnLi4vZGF0YSc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbkV4dHJhRGF0YUtWLFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhQWNjZXB0TkZUQmlkLFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhQWNjZXB0TkZUVHJhbnNmZXIsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFCdXJuTkZULFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhQ3JlYXRlTkZULFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhTkZUQmlkLFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhTkZUVHJhbnNmZXIsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFVcGRhdGVORlQsXG4gIGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyxcbiAgY29uY2F0VWludDhBcnJheXMsXG4gIGVuY29kZVVURjhUb0J5dGVzLFxuICB1dmFyaW50NjRUb0J1Zixcbn0gZnJvbSAnLi4vaWRlbnRpdHknO1xuaW1wb3J0IHtcbiAgY29uc3RydWN0QmFsYW5jZU1vZGVsVHgsXG4gIGdldFR4V2l0aEZlZU5hbm9zLFxuICBoYW5kbGVTaWduQW5kU3VibWl0LFxuICBzdW1UcmFuc2FjdGlvbkZlZXMsXG59IGZyb20gJy4uL2ludGVybmFsJztcbmltcG9ydCB7IENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHgsIFR4UmVxdWVzdE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBndWFyZFR4UGVybWlzc2lvbiB9IGZyb20gJy4vdXRpbHMnO1xuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvbmZ0LXRyYW5zYWN0aW9ucy1hcGkjY3JlYXRlLW5mdFxuICovXG5leHBvcnQgdHlwZSBDcmVhdGVORlRSZXF1ZXN0UGFyYW1zID0gVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgICBDcmVhdGVORlRSZXF1ZXN0LFxuICAgIHwgJ1VwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICB8ICdORlRQb3N0SGFzaEhleCdcbiAgICB8ICdOdW1Db3BpZXMnXG4gICAgfCAnTkZUUm95YWx0eVRvQ29pbkJhc2lzUG9pbnRzJ1xuICAgIHwgJ05GVFJveWFsdHlUb0NyZWF0b3JCYXNpc1BvaW50cydcbiAgICB8ICdIYXNVbmxvY2thYmxlJ1xuICAgIHwgJ0lzRm9yU2FsZSdcbiAgPlxuPjtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU5GVCA9IGFzeW5jIChcbiAgcGFyYW1zOiBDcmVhdGVORlRSZXF1ZXN0UGFyYW1zLFxuICBvcHRpb25zPzogVHhSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxcbiAgQ29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxDcmVhdGVORlRSZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT5cbj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQ3JlYXRlTkZUTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgICAgQ29uc2Vuc3VzRXh0cmFEYXRhS1ZzOiBidWlsZENyZWF0ZU5GVENvbnNlbnN1c0tWcyhwYXJhbXMpLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIFRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcDoge1xuICAgICAgICBDUkVBVEVfTkZUOiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL2NyZWF0ZS1uZnQnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RDcmVhdGVORlRUcmFuc2FjdGlvbixcbiAgfSk7XG59O1xuXG5jb25zdCBidWlsZENyZWF0ZU5GVE1ldGFkYXRhID0gKHBhcmFtczogQ3JlYXRlTkZUUmVxdWVzdFBhcmFtcykgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhQ3JlYXRlTkZUKCk7XG4gIG1ldGFkYXRhLmhhc1VubG9ja2FibGUgPSBwYXJhbXMuSGFzVW5sb2NrYWJsZTtcbiAgbWV0YWRhdGEuaXNGb3JTYWxlID0gcGFyYW1zLklzRm9yU2FsZTtcbiAgbWV0YWRhdGEubWluQmlkQW1vdW50TmFub3MgPSBwYXJhbXMuTWluQmlkQW1vdW50TmFub3MgfHwgMDtcbiAgbWV0YWRhdGEubmZ0UG9zdEhhc2ggPSBoZXhUb0J5dGVzKHBhcmFtcy5ORlRQb3N0SGFzaEhleCk7XG4gIG1ldGFkYXRhLm5mdFJveWFsdHlUb0NvaW5CYXNpc1BvaW50cyA9IHBhcmFtcy5ORlRSb3lhbHR5VG9Db2luQmFzaXNQb2ludHM7XG4gIG1ldGFkYXRhLm5mdFJveWFsdHlUb0NyZWF0b3JCYXNpc1BvaW50cyA9XG4gICAgcGFyYW1zLk5GVFJveWFsdHlUb0NyZWF0b3JCYXNpc1BvaW50cztcbiAgbWV0YWRhdGEubnVtQ29waWVzID0gcGFyYW1zLk51bUNvcGllcztcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5jb25zdCBidWlsZENyZWF0ZU5GVENvbnNlbnN1c0tWcyA9IChwYXJhbXM6IENyZWF0ZU5GVFJlcXVlc3RQYXJhbXMpID0+IHtcbiAgY29uc3QgY29uc2Vuc3VzRXh0cmFEYXRhS1ZzOiBUcmFuc2FjdGlvbkV4dHJhRGF0YUtWW10gPSBbXTtcbiAgaWYgKHBhcmFtcy5Jc0J1eU5vdyAmJiBwYXJhbXMuQnV5Tm93UHJpY2VOYW5vcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc2Vuc3VzRXh0cmFEYXRhS1ZzLnB1c2goXG4gICAgICBuZXcgVHJhbnNhY3Rpb25FeHRyYURhdGFLVihcbiAgICAgICAgZW5jb2RlVVRGOFRvQnl0ZXMoJ0J1eU5vd1ByaWNlTmFub3MnKSxcbiAgICAgICAgdXZhcmludDY0VG9CdWYocGFyYW1zLkJ1eU5vd1ByaWNlTmFub3MpXG4gICAgICApXG4gICAgKTtcbiAgfVxuICBpZiAoXG4gICAgcGFyYW1zLkFkZGl0aW9uYWxERVNPUm95YWx0aWVzTWFwICYmXG4gICAgT2JqZWN0LmtleXMocGFyYW1zLkFkZGl0aW9uYWxERVNPUm95YWx0aWVzTWFwKS5sZW5ndGhcbiAgKSB7XG4gICAgY29uc3Qgcm95YWx0eU1hcCA9IHBhcmFtcy5BZGRpdGlvbmFsREVTT1JveWFsdGllc01hcDtcbiAgICBsZXQgYnVmID0gdXZhcmludDY0VG9CdWYoT2JqZWN0LmtleXMocm95YWx0eU1hcCkubGVuZ3RoKTtcbiAgICBPYmplY3Qua2V5cyhyb3lhbHR5TWFwKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSlcbiAgICAgIC5mb3JFYWNoKChwdWJsaWNLZXkpID0+IHtcbiAgICAgICAgYnVmID0gY29uY2F0VWludDhBcnJheXMoW1xuICAgICAgICAgIGJ1ZixcbiAgICAgICAgICBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMocHVibGljS2V5KSxcbiAgICAgICAgICB1dmFyaW50NjRUb0J1Zihyb3lhbHR5TWFwW3B1YmxpY0tleV0pLFxuICAgICAgICBdKTtcbiAgICAgIH0pO1xuICAgIGNvbnNlbnN1c0V4dHJhRGF0YUtWcy5wdXNoKFxuICAgICAgbmV3IFRyYW5zYWN0aW9uRXh0cmFEYXRhS1YoZW5jb2RlVVRGOFRvQnl0ZXMoJ0RFU09Sb3lhbHRpZXNNYXAnKSwgYnVmKVxuICAgICk7XG4gIH1cbiAgaWYgKFxuICAgIHBhcmFtcy5BZGRpdGlvbmFsQ29pblJveWFsdGllc01hcCAmJlxuICAgIE9iamVjdC5rZXlzKHBhcmFtcy5BZGRpdGlvbmFsQ29pblJveWFsdGllc01hcCkubGVuZ3RoXG4gICkge1xuICAgIGNvbnN0IHJveWFsdHlNYXAgPSBwYXJhbXMuQWRkaXRpb25hbENvaW5Sb3lhbHRpZXNNYXA7XG4gICAgbGV0IGJ1ZiA9IHV2YXJpbnQ2NFRvQnVmKE9iamVjdC5rZXlzKHJveWFsdHlNYXApLmxlbmd0aCk7XG4gICAgT2JqZWN0LmtleXMocm95YWx0eU1hcClcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmxvY2FsZUNvbXBhcmUoYikpXG4gICAgICAuZm9yRWFjaCgocHVibGljS2V5KSA9PiB7XG4gICAgICAgIGJ1ZiA9IGNvbmNhdFVpbnQ4QXJyYXlzKFtcbiAgICAgICAgICBidWYsXG4gICAgICAgICAgYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKHB1YmxpY0tleSksXG4gICAgICAgICAgdXZhcmludDY0VG9CdWYocm95YWx0eU1hcFtwdWJsaWNLZXldKSxcbiAgICAgICAgXSk7XG4gICAgICB9KTtcbiAgICBjb25zZW5zdXNFeHRyYURhdGFLVnMucHVzaChcbiAgICAgIG5ldyBUcmFuc2FjdGlvbkV4dHJhRGF0YUtWKGVuY29kZVVURjhUb0J5dGVzKCdDb2luUm95YWx0aWVzTWFwJyksIGJ1ZilcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGNvbnNlbnN1c0V4dHJhRGF0YUtWcztcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RDcmVhdGVORlRUcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBDcmVhdGVORlRSZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZENyZWF0ZU5GVE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgQ29uc2Vuc3VzRXh0cmFEYXRhS1ZzOiBidWlsZENyZWF0ZU5GVENvbnNlbnN1c0tWcyhwYXJhbXMpLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9uZnQtdHJhbnNhY3Rpb25zLWFwaSN1cGRhdGUtbmZ0XG4gKi9cbmV4cG9ydCB0eXBlIFVwZGF0ZU5GVFJlcXVlc3RQYXJhbXMgPSBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgIFVwZGF0ZU5GVFJlcXVlc3QsXG4gICAgfCAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgIHwgJ05GVFBvc3RIYXNoSGV4J1xuICAgIHwgJ1NlcmlhbE51bWJlcidcbiAgICB8ICdNaW5CaWRBbW91bnROYW5vcydcbiAgPlxuPjtcbmV4cG9ydCBjb25zdCB1cGRhdGVORlQgPSBhc3luYyAoXG4gIHBhcmFtczogVXBkYXRlTkZUUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8XG4gIENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8VXBkYXRlTkZUUmVzcG9uc2UgfCBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+XG4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZFVwZGF0ZU5GVE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICAgIENvbnNlbnN1c0V4dHJhRGF0YUtWczogYnVpbGRVcGRhdGVORlRDb25zZW5zdXNLVnMocGFyYW1zKSxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgKyBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICBUcmFuc2FjdGlvbkNvdW50TGltaXRNYXA6IHtcbiAgICAgICAgVVBEQVRFX05GVDogb3B0aW9ucz8udHhMaW1pdENvdW50ID8/IDEsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC91cGRhdGUtbmZ0JywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0VXBkYXRlTkZUVHJhbnNhY3Rpb24sXG4gIH0pO1xufTtcblxuY29uc3QgYnVpbGRVcGRhdGVORlRNZXRhZGF0YSA9IChwYXJhbXM6IFVwZGF0ZU5GVFJlcXVlc3RQYXJhbXMpID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YVVwZGF0ZU5GVCgpO1xuICBtZXRhZGF0YS5pc0ZvclNhbGUgPSAhIXBhcmFtcy5Jc0ZvclNhbGU7XG4gIG1ldGFkYXRhLm1pbkJpZEFtb3VudE5hbm9zID0gcGFyYW1zLk1pbkJpZEFtb3VudE5hbm9zO1xuICBtZXRhZGF0YS5uZnRQb3N0SGFzaCA9IGhleFRvQnl0ZXMocGFyYW1zLk5GVFBvc3RIYXNoSGV4KTtcbiAgbWV0YWRhdGEuc2VyaWFsTnVtYmVyID0gcGFyYW1zLlNlcmlhbE51bWJlcjtcbiAgcmV0dXJuIG1ldGFkYXRhO1xufTtcblxuY29uc3QgYnVpbGRVcGRhdGVORlRDb25zZW5zdXNLVnMgPSAocGFyYW1zOiBVcGRhdGVORlRSZXF1ZXN0UGFyYW1zKSA9PiB7XG4gIGNvbnN0IGNvbnNlbnN1c0V4dHJhRGF0YUtWczogVHJhbnNhY3Rpb25FeHRyYURhdGFLVltdID0gW107XG4gIGlmIChwYXJhbXMuSXNCdXlOb3cgJiYgcGFyYW1zLkJ1eU5vd1ByaWNlTmFub3MgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnNlbnN1c0V4dHJhRGF0YUtWcy5wdXNoKFxuICAgICAgbmV3IFRyYW5zYWN0aW9uRXh0cmFEYXRhS1YoXG4gICAgICAgIGVuY29kZVVURjhUb0J5dGVzKCdCdXlOb3dQcmljZU5hbm9zJyksXG4gICAgICAgIHV2YXJpbnQ2NFRvQnVmKHBhcmFtcy5CdXlOb3dQcmljZU5hbm9zKVxuICAgICAgKVxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGNvbnNlbnN1c0V4dHJhRGF0YUtWcztcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RVcGRhdGVORlRUcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBVcGRhdGVORlRSZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZFVwZGF0ZU5GVE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICAgIENvbnNlbnN1c0V4dHJhRGF0YUtWczogYnVpbGRVcGRhdGVORlRDb25zZW5zdXNLVnMocGFyYW1zKSxcbiAgICB9XG4gICk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9uZnQtdHJhbnNhY3Rpb25zLWFwaSNjcmVhdGUtbmZ0LWJpZFxuICovXG5leHBvcnQgdHlwZSBDcmVhdGVORlRCaWRSZXF1ZXN0UGFyYW1zID0gVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgICBDcmVhdGVORlRCaWRSZXF1ZXN0LFxuICAgIHwgJ0JpZEFtb3VudE5hbm9zJ1xuICAgIHwgJ05GVFBvc3RIYXNoSGV4J1xuICAgIHwgJ1NlcmlhbE51bWJlcidcbiAgICB8ICdVcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gID5cbj47XG5leHBvcnQgY29uc3QgY3JlYXRlTkZUQmlkID0gYXN5bmMgKFxuICBwYXJhbXM6IENyZWF0ZU5GVEJpZFJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPFxuICBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PFxuICAgIENyZWF0ZU5GVEJpZFJlc3BvbnNlIHwgQ29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlXG4gID5cbj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQ3JlYXRlTkZUQmlkTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHBhcmFtcy5CaWRBbW91bnROYW5vcyArXG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArXG4gICAgICAgIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIE5GVE9wZXJhdGlvbkxpbWl0TWFwOiB7XG4gICAgICAgIFtwYXJhbXMuTkZUUG9zdEhhc2hIZXhdOiB7XG4gICAgICAgICAgW3BhcmFtcy5TZXJpYWxOdW1iZXJdOiB7XG4gICAgICAgICAgICBuZnRfYmlkOiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvY3JlYXRlLW5mdC1iaWQnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RORlRCaWRUcmFuc2FjdGlvbixcbiAgfSk7XG59O1xuXG5jb25zdCBidWlsZENyZWF0ZU5GVEJpZE1ldGFkYXRhID0gKHBhcmFtczogQ3JlYXRlTkZUQmlkUmVxdWVzdFBhcmFtcykgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhTkZUQmlkKCk7XG4gIG1ldGFkYXRhLmJpZEFtb3VudE5hbm9zID0gcGFyYW1zLkJpZEFtb3VudE5hbm9zO1xuICBtZXRhZGF0YS5uZnRQb3N0SGFzaCA9IGhleFRvQnl0ZXMocGFyYW1zLk5GVFBvc3RIYXNoSGV4KTtcbiAgbWV0YWRhdGEuc2VyaWFsTnVtYmVyID0gcGFyYW1zLlNlcmlhbE51bWJlcjtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0TkZUQmlkVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogQ3JlYXRlTkZUQmlkUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KFxuICAgIHBhcmFtcy5VcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRDcmVhdGVORlRCaWRNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvbmZ0LXRyYW5zYWN0aW9ucy1hcGkjYWNjZXB0LW5mdC1iaWRcbiAqL1xuZXhwb3J0IHR5cGUgQWNjZXB0TkZUQmlkUmVxdWVzdFBhcmFtcyA9IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8XG4gIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgQWNjZXB0TkZUQmlkUmVxdWVzdCxcbiAgICB8ICdCaWRBbW91bnROYW5vcydcbiAgICB8ICdORlRQb3N0SGFzaEhleCdcbiAgICB8ICdTZXJpYWxOdW1iZXInXG4gICAgfCAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgIHwgJ0JpZGRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICA+XG4+O1xuZXhwb3J0IGNvbnN0IGFjY2VwdE5GVEJpZCA9IGFzeW5jIChcbiAgcGFyYW1zOiBBY2NlcHRORlRCaWRSZXF1ZXN0UGFyYW1zLFxuICBvcHRpb25zPzogVHhSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxcbiAgQ29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxcbiAgICBBY2NlcHRORlRCaWRSZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZVxuICA+XG4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZEFjY2VwdE5GVEJpZE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICBwYXJhbXMuQmlkQW1vdW50TmFub3MgK1xuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgK1xuICAgICAgICBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICBORlRPcGVyYXRpb25MaW1pdE1hcDoge1xuICAgICAgICBbcGFyYW1zLk5GVFBvc3RIYXNoSGV4XToge1xuICAgICAgICAgIFtwYXJhbXMuU2VyaWFsTnVtYmVyXToge1xuICAgICAgICAgICAgYWNjZXB0X25mdF9iaWQ6IG9wdGlvbnM/LnR4TGltaXRDb3VudCA/PyAxLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC9hY2NlcHQtbmZ0LWJpZCcsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdEFjY2VwdE5GVEJpZFRyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkQWNjZXB0TkZUQmlkTWV0YWRhdGEgPSAocGFyYW1zOiBBY2NlcHRORlRCaWRSZXF1ZXN0UGFyYW1zKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFBY2NlcHRORlRCaWQoKTtcbiAgbWV0YWRhdGEuYmlkQW1vdW50TmFub3MgPSBwYXJhbXMuQmlkQW1vdW50TmFub3M7XG4gIG1ldGFkYXRhLmJpZGRlcklucHV0cyA9IFtdO1xuICAvLyBUT0RPOiB0aGlzIHdvbid0IHdvcmsgaWYgdGhleSd2ZSBoYWQgdGhlaXIgaWRlbnRpdHkgc3dhcHBlZC5cbiAgbWV0YWRhdGEuYmlkZGVyUEtJRCA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuQmlkZGVyUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcbiAgbWV0YWRhdGEuZW5jcnlwdGVkVW5sb2NrYWJsZVRleHQgPSBoZXhUb0J5dGVzKFxuICAgIHBhcmFtcy5FbmNyeXB0ZWRVbmxvY2thYmxlVGV4dCB8fCAnJ1xuICApO1xuICBtZXRhZGF0YS5uZnRQb3N0SGFzaCA9IGhleFRvQnl0ZXMocGFyYW1zLk5GVFBvc3RIYXNoSGV4KTtcbiAgbWV0YWRhdGEuc2VyaWFsTnVtYmVyID0gcGFyYW1zLlNlcmlhbE51bWJlcjtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0QWNjZXB0TkZUQmlkVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogQWNjZXB0TkZUQmlkUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KFxuICAgIHBhcmFtcy5VcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRBY2NlcHRORlRCaWRNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvbmZ0LXRyYW5zYWN0aW9ucy1hcGkjdHJhbnNmZXItbmZ0XG4gKi9cbmV4cG9ydCB0eXBlIFRyYW5zZmVyTkZUUmVxdWVzdFBhcmFtcyA9IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8XG4gIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgVHJhbnNmZXJORlRSZXF1ZXN0LFxuICAgIHwgJ1NlbmRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgIHwgJ1JlY2VpdmVyUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgfCAnTkZUUG9zdEhhc2hIZXgnXG4gICAgfCAnU2VyaWFsTnVtYmVyJ1xuICA+XG4+O1xuZXhwb3J0IGNvbnN0IHRyYW5zZmVyTkZUID0gYXN5bmMgKFxuICBwYXJhbXM6IFRyYW5zZmVyTkZUUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8XG4gIENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8XG4gICAgVHJhbnNmZXJORlRSZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZVxuICA+XG4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLlNlbmRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkVHJhbnNmZXJORlRNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xuXG4gIGlmIChvcHRpb25zPy5jaGVja1Blcm1pc3Npb25zICE9PSBmYWxzZSkge1xuICAgIGF3YWl0IGd1YXJkVHhQZXJtaXNzaW9uKHtcbiAgICAgIEdsb2JhbERFU09MaW1pdDpcbiAgICAgICAgdHhXaXRoRmVlLmZlZU5hbm9zICsgc3VtVHJhbnNhY3Rpb25GZWVzKHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMpLFxuICAgICAgTkZUT3BlcmF0aW9uTGltaXRNYXA6IHtcbiAgICAgICAgW3BhcmFtcy5ORlRQb3N0SGFzaEhleF06IHtcbiAgICAgICAgICBbcGFyYW1zLlNlcmlhbE51bWJlcl06IHtcbiAgICAgICAgICAgIHRyYW5zZmVyOiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL3RyYW5zZmVyLW5mdCcsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdFRyYW5zZmVyTkZULFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkVHJhbnNmZXJORlRNZXRhZGF0YSA9IChwYXJhbXM6IFRyYW5zZmVyTkZUUmVxdWVzdFBhcmFtcykgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhTkZUVHJhbnNmZXIoKTtcbiAgbWV0YWRhdGEuZW5jcnlwdGVkVW5sb2NrYWJsZVRleHQgPSBoZXhUb0J5dGVzKFxuICAgIHBhcmFtcy5FbmNyeXB0ZWRVbmxvY2thYmxlVGV4dCB8fCAnJ1xuICApO1xuICBtZXRhZGF0YS5uZnRQb3N0SGFzaCA9IGhleFRvQnl0ZXMocGFyYW1zLk5GVFBvc3RIYXNoSGV4KTtcbiAgbWV0YWRhdGEucmVjZWl2ZXJQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLlJlY2VpdmVyUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcbiAgbWV0YWRhdGEuc2VyaWFsTnVtYmVyID0gcGFyYW1zLlNlcmlhbE51bWJlcjtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0VHJhbnNmZXJORlQgPSAoXG4gIHBhcmFtczogVHJhbnNmZXJORlRSZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlNlbmRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkVHJhbnNmZXJORlRNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvbmZ0LXRyYW5zYWN0aW9ucy1hcGkjYWNjZXB0LW5mdC10cmFuc2ZlclxuICovXG5leHBvcnQgdHlwZSBBY2NlcHRORlRUcmFuc2ZlclJlcXVlc3RQYXJhbXMgPVxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICAgIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgICBBY2NlcHRORlRUcmFuc2ZlclJlcXVlc3QsXG4gICAgICAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJyB8ICdORlRQb3N0SGFzaEhleCcgfCAnU2VyaWFsTnVtYmVyJ1xuICAgID5cbiAgPjtcbmV4cG9ydCBjb25zdCBhY2NlcHRORlRUcmFuc2ZlciA9IGFzeW5jIChcbiAgcGFyYW1zOiBBY2NlcHRORlRUcmFuc2ZlclJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPFxuICBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PFxuICAgIEFjY2VwdE5GVFRyYW5zZmVyUmVzcG9uc2UgfCBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2VcbiAgPlxuPiA9PiB7XG4gIGNvbnN0IHR4V2l0aEZlZSA9IGdldFR4V2l0aEZlZU5hbm9zKFxuICAgIHBhcmFtcy5VcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRBY2NlcHRORlRUcmFuc2Zlck1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgKyBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICBORlRPcGVyYXRpb25MaW1pdE1hcDoge1xuICAgICAgICBbcGFyYW1zLk5GVFBvc3RIYXNoSGV4XToge1xuICAgICAgICAgIFtwYXJhbXMuU2VyaWFsTnVtYmVyXToge1xuICAgICAgICAgICAgYWNjZXB0X25mdF90cmFuc2Zlcjogb3B0aW9ucz8udHhMaW1pdENvdW50ID8/IDEsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL2FjY2VwdC1uZnQtdHJhbnNmZXInLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RBY2NlcHRORlRUcmFuc2ZlcixcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRBY2NlcHRORlRUcmFuc2Zlck1ldGFkYXRhID0gKFxuICBwYXJhbXM6IEFjY2VwdE5GVFRyYW5zZmVyUmVxdWVzdFBhcmFtc1xuKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFBY2NlcHRORlRUcmFuc2ZlcigpO1xuICBtZXRhZGF0YS5uZnRQb3N0SGFzaCA9IGhleFRvQnl0ZXMocGFyYW1zLk5GVFBvc3RIYXNoSGV4KTtcbiAgbWV0YWRhdGEuc2VyaWFsTnVtYmVyID0gcGFyYW1zLlNlcmlhbE51bWJlcjtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0QWNjZXB0TkZUVHJhbnNmZXIgPSAoXG4gIHBhcmFtczogQWNjZXB0TkZUVHJhbnNmZXJSZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZEFjY2VwdE5GVFRyYW5zZmVyTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9jb25zdHJ1Y3QtdHJhbnNhY3Rpb25zL25mdC10cmFuc2FjdGlvbnMtYXBpI2J1cm4tbmZ0XG4gKi9cbmV4cG9ydCB0eXBlIEJ1cm5ORlRSZXF1ZXN0UGFyYW1zID0gVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgICBCdXJuTkZUUmVxdWVzdCxcbiAgICAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJyB8ICdORlRQb3N0SGFzaEhleCcgfCAnU2VyaWFsTnVtYmVyJ1xuICA+XG4+O1xuZXhwb3J0IGNvbnN0IGJ1cm5ORlQgPSBhc3luYyAoXG4gIHBhcmFtczogQnVybk5GVFJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPFxuICBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PEJ1cm5ORlRSZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT5cbj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQnVybk5GVE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgKyBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICBORlRPcGVyYXRpb25MaW1pdE1hcDoge1xuICAgICAgICBbcGFyYW1zLk5GVFBvc3RIYXNoSGV4XToge1xuICAgICAgICAgIFtwYXJhbXMuU2VyaWFsTnVtYmVyXToge1xuICAgICAgICAgICAgYnVybjogb3B0aW9ucz8udHhMaW1pdENvdW50ID8/IDEsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL2J1cm4tbmZ0JywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0QnVybk5GVFRyYW5zYXRpb24sXG4gIH0pO1xufTtcblxuY29uc3QgYnVpbGRCdXJuTkZUTWV0YWRhdGEgPSAocGFyYW1zOiBCdXJuTkZUUmVxdWVzdFBhcmFtcykgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhQnVybk5GVCgpO1xuICBtZXRhZGF0YS5uZnRQb3N0SGFzaCA9IGhleFRvQnl0ZXMocGFyYW1zLk5GVFBvc3RIYXNoSGV4KTtcbiAgbWV0YWRhdGEuc2VyaWFsTnVtYmVyID0gcGFyYW1zLlNlcmlhbE51bWJlcjtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0QnVybk5GVFRyYW5zYXRpb24gPSAoXG4gIHBhcmFtczogQnVybk5GVFJlcXVlc3RQYXJhbXNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChcbiAgICBwYXJhbXMuVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQnVybk5GVE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmZ0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbnMvbmZ0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFvQmpELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsK0JBQStCLEVBQy9CLG9DQUFvQyxFQUNwQywwQkFBMEIsRUFDMUIsNEJBQTRCLEVBQzVCLHlCQUF5QixFQUN6Qiw4QkFBOEIsRUFDOUIsNEJBQTRCLEVBQzVCLDhCQUE4QixFQUM5QixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGNBQWMsR0FDZixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixrQkFBa0IsR0FDbkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFpQi9DLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxLQUFLLEVBQzVCLE1BQThCLEVBQzlCLE9BQTBCLEVBRzFCLEVBQUU7SUFDRixNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FDakMsTUFBTSxDQUFDLDJCQUEyQixFQUNsQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsRUFDOUI7UUFDRSxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDM0Isb0JBQW9CLEVBQUUsTUFBTSxDQUFDLG9CQUFvQjtRQUNqRCxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7UUFDdkMscUJBQXFCLEVBQUUsMEJBQTBCLENBQUMsTUFBTSxDQUFDO0tBQzFELENBQ0YsQ0FBQztJQUVGLElBQUksT0FBTyxFQUFFLGdCQUFnQixLQUFLLEtBQUssRUFBRTtRQUN2QyxNQUFNLGlCQUFpQixDQUFDO1lBQ3RCLGVBQWUsRUFDYixTQUFTLENBQUMsUUFBUSxHQUFHLGtCQUFrQixDQUFDLE1BQU0s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QUUsTUFBTSxFQUFFO1FBQ3BELEdBQUcsT0FBTztRQUNWLG9CQUFvQixFQUFFLDBCQUEwQjtLQUNqRCxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLG9CQUFvQixHQUFHLENBQUMsTUFBNEIsRUFBRSxFQUFFO0lBQzVELE1BQU0sUUFBUSxHQUFHLElBQUksMEJBQTBCLEVBQUUsQ0FBQztJQUNsRCxRQUFRLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDekQsUUFBUSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO0lBRTVDLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQ3hDLE1BQTRCLEVBQ2EsRUFBRTtJQUMzQyxPQUFPLHVCQUF1QixDQUM1QixNQUFNLENBQUMsMkJBQTJCLEVBQ2xDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxFQUM1QjtRQUNFLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztRQUMzQixvQkFBb0IsRUFBRSxNQUFNLENBQUMsb0JBQW9CO1FBQ2pELGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZTtLQUN4QyxDQUNGLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoZXhUb0J5dGVzIH0gZnJvbSAnQG5vYmxlL2hhc2hlcy91dGlscyc7XG5pbXBvcnQge1xuICBBY2NlcHRORlRCaWRSZXF1ZXN0LFxuICBBY2NlcHRORlRCaWRSZXNwb25zZSxcbiAgQWNjZXB0TkZUVHJhbnNmZXJSZXF1ZXN0LFxuICBBY2NlcHRORlRUcmFuc2ZlclJlc3BvbnNlLFxuICBCdXJuTkZUUmVxdWVzdCxcbiAgQnVybk5GVFJlc3BvbnNlLFxuICBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2UsXG4gIENyZWF0ZU5GVEJpZFJlcXVlc3QsXG4gIENyZWF0ZU5GVEJpZFJlc3BvbnNlLFxuICBDcmVhdGVORlRSZXF1ZXN0LFxuICBDcmVhdGVORlRSZXNwb25zZSxcbiAgVHJhbnNmZXJORlRSZXF1ZXN0LFxuICBUcmFuc2Zlck5GVFJlc3BvbnNlLFxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhLFxuICBVcGRhdGVORlRSZXF1ZXN0LFxuICBVcGRhdGVORlRSZXNwb25zZSxcbn0gZnJvbSAnLi4vYmFja2VuZC10eXBlcy9pbmRleC5qcyc7XG5pbXBvcnQgeyBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzIH0gZnJvbSAnLi4vZGF0YS9pbmRleC5qcyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbkV4dHJhRGF0YUtWLFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhQWNjZXB0TkZUQmlkLFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhQWNjZXB0TkZUVHJhbnNmZXIsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFCdXJuTkZULFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhQ3JlYXRlTkZULFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhTkZUQmlkLFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhTkZUVHJhbnNmZXIsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFVcGRhdGVORlQsXG4gIGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyxcbiAgY29uY2F0VWludDhBcnJheXMsXG4gIGVuY29kZVVURjhUb0J5dGVzLFxuICB1dmFyaW50NjRUb0J1Zixcbn0gZnJvbSAnLi4vaWRlbnRpdHkvaW5kZXguanMnO1xuaW1wb3J0IHtcbiAgY29uc3RydWN0QmFsYW5jZU1vZGVsVHgsXG4gIGdldFR4V2l0aEZlZU5hbm9zLFxuICBoYW5kbGVTaWduQW5kU3VibWl0LFxuICBzdW1UcmFuc2FjdGlvbkZlZXMsXG59IGZyb20gJy4uL2ludGVybmFsLmpzJztcbmltcG9ydCB7IENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHgsIFR4UmVxdWVzdE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5pbXBvcnQgeyBndWFyZFR4UGVybWlzc2lvbiB9IGZyb20gJy4vdXRpbHMuanMnO1xuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvbmZ0LXRyYW5zYWN0aW9ucy1hcGkjY3JlYXRlLW5mdFxuICovXG5leHBvcnQgdHlwZSBDcmVhdGVORlRSZXF1ZXN0UGFyYW1zID0gVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgICBDcmVhdGVORlRSZXF1ZXN0LFxuICAgIHwgJ1VwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICB8ICdORlRQb3N0SGFzaEhleCdcbiAgICB8ICdOdW1Db3BpZXMnXG4gICAgfCAnTkZUUm95YWx0eVRvQ29pbkJhc2lzUG9pbnRzJ1xuICAgIHwgJ05GVFJveWFsdHlUb0NyZWF0b3JCYXNpc1BvaW50cydcbiAgICB8ICdIYXNVbmxvY2thYmxlJ1xuICAgIHwgJ0lzRm9yU2FsZSdcbiAgPlxuPjtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU5GVCA9IGFzeW5jIChcbiAgcGFyYW1zOiBDcmVhdGVORlRSZXF1ZXN0UGFyYW1zLFxuICBvcHRpb25zPzogVHhSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxcbiAgQ29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxDcmVhdGVORlRSZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT5cbj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQ3JlYXRlTkZUTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgICAgQ29uc2Vuc3VzRXh0cmFEYXRhS1ZzOiBidWlsZENyZWF0ZU5GVENvbnNlbnN1c0tWcyhwYXJhbXMpLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIFRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcDoge1xuICAgICAgICBDUkVBVEVfTkZUOiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL2NyZWF0ZS1uZnQnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RDcmVhdGVORlRUcmFuc2FjdGlvbixcbiAgfSk7XG59O1xuXG5jb25zdCBidWlsZENyZWF0ZU5GVE1ldGFkYXRhID0gKHBhcmFtczogQ3JlYXRlTkZUUmVxdWVzdFBhcmFtcykgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhQ3JlYXRlTkZUKCk7XG4gIG1ldGFkYXRhLmhhc1VubG9ja2FibGUgPSBwYXJhbXMuSGFzVW5sb2NrYWJsZTtcbiAgbWV0YWRhdGEuaXNGb3JTYWxlID0gcGFyYW1zLklzRm9yU2FsZTtcbiAgbWV0YWRhdGEubWluQmlkQW1vdW50TmFub3MgPSBwYXJhbXMuTWluQmlkQW1vdW50TmFub3MgfHwgMDtcbiAgbWV0YWRhdGEubmZ0UG9zdEhhc2ggPSBoZXhUb0J5dGVzKHBhcmFtcy5ORlRQb3N0SGFzaEhleCk7XG4gIG1ldGFkYXRhLm5mdFJveWFsdHlUb0NvaW5CYXNpc1BvaW50cyA9IHBhcmFtcy5ORlRSb3lhbHR5VG9Db2luQmFzaXNQb2ludHM7XG4gIG1ldGFkYXRhLm5mdFJveWFsdHlUb0NyZWF0b3JCYXNpc1BvaW50cyA9XG4gICAgcGFyYW1zLk5GVFJveWFsdHlUb0NyZWF0b3JCYXNpc1BvaW50cztcbiAgbWV0YWRhdGEubnVtQ29waWVzID0gcGFyYW1zLk51bUNvcGllcztcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5jb25zdCBidWlsZENyZWF0ZU5GVENvbnNlbnN1c0tWcyA9IChwYXJhbXM6IENyZWF0ZU5GVFJlcXVlc3RQYXJhbXMpID0+IHtcbiAgY29uc3QgY29uc2Vuc3VzRXh0cmFEYXRhS1ZzOiBUcmFuc2FjdGlvbkV4dHJhRGF0YUtWW10gPSBbXTtcbiAgaWYgKHBhcmFtcy5Jc0J1eU5vdyAmJiBwYXJhbXMuQnV5Tm93UHJpY2VOYW5vcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc2Vuc3VzRXh0cmFEYXRhS1ZzLnB1c2goXG4gICAgICBuZXcgVHJhbnNhY3Rpb25FeHRyYURhdGFLVihcbiAgICAgICAgZW5jb2RlVVRGOFRvQnl0ZXMoJ0J1eU5vd1ByaWNlTmFub3MnKSxcbiAgICAgICAgdXZhcmludDY0VG9CdWYocGFyYW1zLkJ1eU5vd1ByaWNlTmFub3MpXG4gICAgICApXG4gICAgKTtcbiAgfVxuICBpZiAoXG4gICAgcGFyYW1zLkFkZGl0aW9uYWxERVNPUm95YWx0aWVzTWFwICYmXG4gICAgT2JqZWN0LmtleXMocGFyYW1zLkFkZGl0aW9uYWxERVNPUm95YWx0aWVzTWFwKS5sZW5ndGhcbiAgKSB7XG4gICAgY29uc3Qgcm95YWx0eU1hcCA9IHBhcmFtcy5BZGRpdGlvbmFsREVTT1JveWFsdGllc01hcDtcbiAgICBsZXQgYnVmID0gdXZhcmludDY0VG9CdWYoT2JqZWN0LmtleXMocm95YWx0eU1hcCkubGVuZ3RoKTtcbiAgICBPYmplY3Qua2V5cyhyb3lhbHR5TWFwKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSlcbiAgICAgIC5mb3JFYWNoKChwdWJsaWNLZXkpID0+IHtcbiAgICAgICAgYnVmID0gY29uY2F0VWludDhBcnJheXMoW1xuICAgICAgICAgIGJ1ZixcbiAgICAgICAgICBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMocHVibGljS2V5KSxcbiAgICAgICAgICB1dmFyaW50NjRUb0J1Zihyb3lhbHR5TWFwW3B1YmxpY0tleV0pLFxuICAgICAgICBdKTtcbiAgICAgIH0pO1xuICAgIGNvbnNlbnN1c0V4dHJhRGF0YUtWcy5wdXNoKFxuICAgICAgbmV3IFRyYW5zYWN0aW9uRXh0cmFEYXRhS1YoZW5jb2RlVVRGOFRvQnl0ZXMoJ0RFU09Sb3lhbHRpZXNNYXAnKSwgYnVmKVxuICAgICk7XG4gIH1cbiAgaWYgKFxuICAgIHBhcmFtcy5BZGRpdGlvbmFsQ29pblJveWFsdGllc01hcCAmJlxuICAgIE9iamVjdC5rZXlzKHBhcmFtcy5BZGRpdGlvbmFsQ29pblJveWFsdGllc01hcCkubGVuZ3RoXG4gICkge1xuICAgIGNvbnN0IHJveWFsdHlNYXAgPSBwYXJhbXMuQWRkaXRpb25hbENvaW5Sb3lhbHRpZXNNYXA7XG4gICAgbGV0IGJ1ZiA9IHV2YXJpbnQ2NFRvQnVmKE9iamVjdC5rZXlzKHJveWFsdHlNYXApLmxlbmd0aCk7XG4gICAgT2JqZWN0LmtleXMocm95YWx0eU1hcClcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmxvY2FsZUNvbXBhcmUoYikpXG4gICAgICAuZm9yRWFjaCgocHVibGljS2V5KSA9PiB7XG4gICAgICAgIGJ1ZiA9IGNvbmNhdFVpbnQ4QXJyYXlzKFtcbiAgICAgICAgICBidWYsXG4gICAgICAgICAgYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKHB1YmxpY0tleSksXG4gICAgICAgICAgdXZhcmludDY0VG9CdWYocm95YWx0eU1hcFtwdWJsaWNLZXldKSxcbiAgICAgICAgXSk7XG4gICAgICB9KTtcbiAgICBjb25zZW5zdXNFeHRyYURhdGFLVnMucHVzaChcbiAgICAgIG5ldyBUcmFuc2FjdGlvbkV4dHJhRGF0YUtWKGVuY29kZVVURjhUb0J5dGVzKCdDb2luUm95YWx0aWVzTWFwJyksIGJ1ZilcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGNvbnNlbnN1c0V4dHJhRGF0YUtWcztcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RDcmVhdGVORlRUcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBDcmVhdGVORlRSZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZENyZWF0ZU5GVE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgQ29uc2Vuc3VzRXh0cmFEYXRhS1ZzOiBidWlsZENyZWF0ZU5GVENvbnNlbnN1c0tWcyhwYXJhbXMpLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9uZnQtdHJhbnNhY3Rpb25zLWFwaSN1cGRhdGUtbmZ0XG4gKi9cbmV4cG9ydCB0eXBlIFVwZGF0ZU5GVFJlcXVlc3RQYXJhbXMgPSBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgIFVwZGF0ZU5GVFJlcXVlc3QsXG4gICAgfCAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgIHwgJ05GVFBvc3RIYXNoSGV4J1xuICAgIHwgJ1NlcmlhbE51bWJlcidcbiAgICB8ICdNaW5CaWRBbW91bnROYW5vcydcbiAgPlxuPjtcbmV4cG9ydCBjb25zdCB1cGRhdGVORlQgPSBhc3luYyAoXG4gIHBhcmFtczogVXBkYXRlTkZUUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8XG4gIENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8VXBkYXRlTkZUUmVzcG9uc2UgfCBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+XG4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZFVwZGF0ZU5GVE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICAgIENvbnNlbnN1c0V4dHJhRGF0YUtWczogYnVpbGRVcGRhdGVORlRDb25zZW5zdXNLVnMocGFyYW1zKSxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgKyBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICBUcmFuc2FjdGlvbkNvdW50TGltaXRNYXA6IHtcbiAgICAgICAgVVBEQVRFX05GVDogb3B0aW9ucz8udHhMaW1pdENvdW50ID8/IDEsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC91cGRhdGUtbmZ0JywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0VXBkYXRlTkZUVHJhbnNhY3Rpb24sXG4gIH0pO1xufTtcblxuY29uc3QgYnVpbGRVcGRhdGVORlRNZXRhZGF0YSA9IChwYXJhbXM6IFVwZGF0ZU5GVFJlcXVlc3RQYXJhbXMpID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YVVwZGF0ZU5GVCgpO1xuICBtZXRhZGF0YS5pc0ZvclNhbGUgPSAhIXBhcmFtcy5Jc0ZvclNhbGU7XG4gIG1ldGFkYXRhLm1pbkJpZEFtb3VudE5hbm9zID0gcGFyYW1zLk1pbkJpZEFtb3VudE5hbm9zO1xuICBtZXRhZGF0YS5uZnRQb3N0SGFzaCA9IGhleFRvQnl0ZXMocGFyYW1zLk5GVFBvc3RIYXNoSGV4KTtcbiAgbWV0YWRhdGEuc2VyaWFsTnVtYmVyID0gcGFyYW1zLlNlcmlhbE51bWJlcjtcbiAgcmV0dXJuIG1ldGFkYXRhO1xufTtcblxuY29uc3QgYnVpbGRVcGRhdGVORlRDb25zZW5zdXNLVnMgPSAocGFyYW1zOiBVcGRhdGVORlRSZXF1ZXN0UGFyYW1zKSA9PiB7XG4gIGNvbnN0IGNvbnNlbnN1c0V4dHJhRGF0YUtWczogVHJhbnNhY3Rpb25FeHRyYURhdGFLVltdID0gW107XG4gIGlmIChwYXJhbXMuSXNCdXlOb3cgJiYgcGFyYW1zLkJ1eU5vd1ByaWNlTmFub3MgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnNlbnN1c0V4dHJhRGF0YUtWcy5wdXNoKFxuICAgICAgbmV3IFRyYW5zYWN0aW9uRXh0cmFEYXRhS1YoXG4gICAgICAgIGVuY29kZVVURjhUb0J5dGVzKCdCdXlOb3dQcmljZU5hbm9zJyksXG4gICAgICAgIHV2YXJpbnQ2NFRvQnVmKHBhcmFtcy5CdXlOb3dQcmljZU5hbm9zKVxuICAgICAgKVxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGNvbnNlbnN1c0V4dHJhRGF0YUtWcztcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RVcGRhdGVORlRUcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBVcGRhdGVORlRSZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZFVwZGF0ZU5GVE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICAgIENvbnNlbnN1c0V4dHJhRGF0YUtWczogYnVpbGRVcGRhdGVORlRDb25zZW5zdXNLVnMocGFyYW1zKSxcbiAgICB9XG4gICk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9uZnQtdHJhbnNhY3Rpb25zLWFwaSNjcmVhdGUtbmZ0LWJpZFxuICovXG5leHBvcnQgdHlwZSBDcmVhdGVORlRCaWRSZXF1ZXN0UGFyYW1zID0gVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgICBDcmVhdGVORlRCaWRSZXF1ZXN0LFxuICAgIHwgJ0JpZEFtb3VudE5hbm9zJ1xuICAgIHwgJ05GVFBvc3RIYXNoSGV4J1xuICAgIHwgJ1NlcmlhbE51bWJlcidcbiAgICB8ICdVcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gID5cbj47XG5leHBvcnQgY29uc3QgY3JlYXRlTkZUQmlkID0gYXN5bmMgKFxuICBwYXJhbXM6IENyZWF0ZU5GVEJpZFJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPFxuICBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PFxuICAgIENyZWF0ZU5GVEJpZFJlc3BvbnNlIHwgQ29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlXG4gID5cbj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQ3JlYXRlTkZUQmlkTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHBhcmFtcy5CaWRBbW91bnROYW5vcyArXG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArXG4gICAgICAgIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIE5GVE9wZXJhdGlvbkxpbWl0TWFwOiB7XG4gICAgICAgIFtwYXJhbXMuTkZUUG9zdEhhc2hIZXhdOiB7XG4gICAgICAgICAgW3BhcmFtcy5TZXJpYWxOdW1iZXJdOiB7XG4gICAgICAgICAgICBuZnRfYmlkOiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvY3JlYXRlLW5mdC1iaWQnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RORlRCaWRUcmFuc2FjdGlvbixcbiAgfSk7XG59O1xuXG5jb25zdCBidWlsZENyZWF0ZU5GVEJpZE1ldGFkYXRhID0gKHBhcmFtczogQ3JlYXRlTkZUQmlkUmVxdWVzdFBhcmFtcykgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhTkZUQmlkKCk7XG4gIG1ldGFkYXRhLmJpZEFtb3VudE5hbm9zID0gcGFyYW1zLkJpZEFtb3VudE5hbm9zO1xuICBtZXRhZGF0YS5uZnRQb3N0SGFzaCA9IGhleFRvQnl0ZXMocGFyYW1zLk5GVFBvc3RIYXNoSGV4KTtcbiAgbWV0YWRhdGEuc2VyaWFsTnVtYmVyID0gcGFyYW1zLlNlcmlhbE51bWJlcjtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0TkZUQmlkVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogQ3JlYXRlTkZUQmlkUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KFxuICAgIHBhcmFtcy5VcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRDcmVhdGVORlRCaWRNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvbmZ0LXRyYW5zYWN0aW9ucy1hcGkjYWNjZXB0LW5mdC1iaWRcbiAqL1xuZXhwb3J0IHR5cGUgQWNjZXB0TkZUQmlkUmVxdWVzdFBhcmFtcyA9IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8XG4gIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgQWNjZXB0TkZUQmlkUmVxdWVzdCxcbiAgICB8ICdCaWRBbW91bnROYW5vcydcbiAgICB8ICdORlRQb3N0SGFzaEhleCdcbiAgICB8ICdTZXJpYWxOdW1iZXInXG4gICAgfCAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgIHwgJ0JpZGRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICA+XG4+O1xuZXhwb3J0IGNvbnN0IGFjY2VwdE5GVEJpZCA9IGFzeW5jIChcbiAgcGFyYW1zOiBBY2NlcHRORlRCaWRSZXF1ZXN0UGFyYW1zLFxuICBvcHRpb25zPzogVHhSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxcbiAgQ29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxcbiAgICBBY2NlcHRORlRCaWRSZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZVxuICA+XG4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZEFjY2VwdE5GVEJpZE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICBwYXJhbXMuQmlkQW1vdW50TmFub3MgK1xuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgK1xuICAgICAgICBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICBORlRPcGVyYXRpb25MaW1pdE1hcDoge1xuICAgICAgICBbcGFyYW1zLk5GVFBvc3RIYXNoSGV4XToge1xuICAgICAgICAgIFtwYXJhbXMuU2VyaWFsTnVtYmVyXToge1xuICAgICAgICAgICAgYWNjZXB0X25mdF9iaWQ6IG9wdGlvbnM/LnR4TGltaXRDb3VudCA/PyAxLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC9hY2NlcHQtbmZ0LWJpZCcsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdEFjY2VwdE5GVEJpZFRyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkQWNjZXB0TkZUQmlkTWV0YWRhdGEgPSAocGFyYW1zOiBBY2NlcHRORlRCaWRSZXF1ZXN0UGFyYW1zKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFBY2NlcHRORlRCaWQoKTtcbiAgbWV0YWRhdGEuYmlkQW1vdW50TmFub3MgPSBwYXJhbXMuQmlkQW1vdW50TmFub3M7XG4gIG1ldGFkYXRhLmJpZGRlcklucHV0cyA9IFtdO1xuICAvLyBUT0RPOiB0aGlzIHdvbid0IHdvcmsgaWYgdGhleSd2ZSBoYWQgdGhlaXIgaWRlbnRpdHkgc3dhcHBlZC5cbiAgbWV0YWRhdGEuYmlkZGVyUEtJRCA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuQmlkZGVyUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcbiAgbWV0YWRhdGEuZW5jcnlwdGVkVW5sb2NrYWJsZVRleHQgPSBoZXhUb0J5dGVzKFxuICAgIHBhcmFtcy5FbmNyeXB0ZWRVbmxvY2thYmxlVGV4dCB8fCAnJ1xuICApO1xuICBtZXRhZGF0YS5uZnRQb3N0SGFzaCA9IGhleFRvQnl0ZXMocGFyYW1zLk5GVFBvc3RIYXNoSGV4KTtcbiAgbWV0YWRhdGEuc2VyaWFsTnVtYmVyID0gcGFyYW1zLlNlcmlhbE51bWJlcjtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0QWNjZXB0TkZUQmlkVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogQWNjZXB0TkZUQmlkUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KFxuICAgIHBhcmFtcy5VcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRBY2NlcHRORlRCaWRNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvbmZ0LXRyYW5zYWN0aW9ucy1hcGkjdHJhbnNmZXItbmZ0XG4gKi9cbmV4cG9ydCB0eXBlIFRyYW5zZmVyTkZUUmVxdWVzdFBhcmFtcyA9IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8XG4gIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgVHJhbnNmZXJORlRSZXF1ZXN0LFxuICAgIHwgJ1NlbmRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgIHwgJ1JlY2VpdmVyUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgfCAnTkZUUG9zdEhhc2hIZXgnXG4gICAgfCAnU2VyaWFsTnVtYmVyJ1xuICA+XG4+O1xuZXhwb3J0IGNvbnN0IHRyYW5zZmVyTkZUID0gYXN5bmMgKFxuICBwYXJhbXM6IFRyYW5zZmVyTkZUUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8XG4gIENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8XG4gICAgVHJhbnNmZXJORlRSZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZVxuICA+XG4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLlNlbmRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkVHJhbnNmZXJORlRNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xuXG4gIGlmIChvcHRpb25zPy5jaGVja1Blcm1pc3Npb25zICE9PSBmYWxzZSkge1xuICAgIGF3YWl0IGd1YXJkVHhQZXJtaXNzaW9uKHtcbiAgICAgIEdsb2JhbERFU09MaW1pdDpcbiAgICAgICAgdHhXaXRoRmVlLmZlZU5hbm9zICsgc3VtVHJhbnNhY3Rpb25GZWVzKHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMpLFxuICAgICAgTkZUT3BlcmF0aW9uTGltaXRNYXA6IHtcbiAgICAgICAgW3BhcmFtcy5ORlRQb3N0SGFzaEhleF06IHtcbiAgICAgICAgICBbcGFyYW1zLlNlcmlhbE51bWJlcl06IHtcbiAgICAgICAgICAgIHRyYW5zZmVyOiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL3RyYW5zZmVyLW5mdCcsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdFRyYW5zZmVyTkZULFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkVHJhbnNmZXJORlRNZXRhZGF0YSA9IChwYXJhbXM6IFRyYW5zZmVyTkZUUmVxdWVzdFBhcmFtcykgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhTkZUVHJhbnNmZXIoKTtcbiAgbWV0YWRhdGEuZW5jcnlwdGVkVW5sb2NrYWJsZVRleHQgPSBoZXhUb0J5dGVzKFxuICAgIHBhcmFtcy5FbmNyeXB0ZWRVbmxvY2thYmxlVGV4dCB8fCAnJ1xuICApO1xuICBtZXRhZGF0YS5uZnRQb3N0SGFzaCA9IGhleFRvQnl0ZXMocGFyYW1zLk5GVFBvc3RIYXNoSGV4KTtcbiAgbWV0YWRhdGEucmVjZWl2ZXJQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLlJlY2VpdmVyUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcbiAgbWV0YWRhdGEuc2VyaWFsTnVtYmVyID0gcGFyYW1zLlNlcmlhbE51bWJlcjtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0VHJhbnNmZXJORlQgPSAoXG4gIHBhcmFtczogVHJhbnNmZXJORlRSZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlNlbmRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkVHJhbnNmZXJORlRNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvbmZ0LXRyYW5zYWN0aW9ucy1hcGkjYWNjZXB0LW5mdC10cmFuc2ZlclxuICovXG5leHBvcnQgdHlwZSBBY2NlcHRORlRUcmFuc2ZlclJlcXVlc3RQYXJhbXMgPVxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICAgIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgICBBY2NlcHRORlRUcmFuc2ZlclJlcXVlc3QsXG4gICAgICAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJyB8ICdORlRQb3N0SGFzaEhleCcgfCAnU2VyaWFsTnVtYmVyJ1xuICAgID5cbiAgPjtcbmV4cG9ydCBjb25zdCBhY2NlcHRORlRUcmFuc2ZlciA9IGFzeW5jIChcbiAgcGFyYW1zOiBBY2NlcHRORlRUcmFuc2ZlclJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPFxuICBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PFxuICAgIEFjY2VwdE5GVFRyYW5zZmVyUmVzcG9uc2UgfCBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2VcbiAgPlxuPiA9PiB7XG4gIGNvbnN0IHR4V2l0aEZlZSA9IGdldFR4V2l0aEZlZU5hbm9zKFxuICAgIHBhcmFtcy5VcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRBY2NlcHRORlRUcmFuc2Zlck1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgKyBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICBORlRPcGVyYXRpb25MaW1pdE1hcDoge1xuICAgICAgICBbcGFyYW1zLk5GVFBvc3RIYXNoSGV4XToge1xuICAgICAgICAgIFtwYXJhbXMuU2VyaWFsTnVtYmVyXToge1xuICAgICAgICAgICAgYWNjZXB0X25mdF90cmFuc2Zlcjogb3B0aW9ucz8udHhMaW1pdENvdW50ID8/IDEsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL2FjY2VwdC1uZnQtdHJhbnNmZXInLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RBY2NlcHRORlRUcmFuc2ZlcixcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRBY2NlcHRORlRUcmFuc2Zlck1ldGFkYXRhID0gKFxuICBwYXJhbXM6IEFjY2VwdE5GVFRyYW5zZmVyUmVxdWVzdFBhcmFtc1xuKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFBY2NlcHRORlRUcmFuc2ZlcigpO1xuICBtZXRhZGF0YS5uZnRQb3N0SGFzaCA9IGhleFRvQnl0ZXMocGFyYW1zLk5GVFBvc3RIYXNoSGV4KTtcbiAgbWV0YWRhdGEuc2VyaWFsTnVtYmVyID0gcGFyYW1zLlNlcmlhbE51bWJlcjtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0QWNjZXB0TkZUVHJhbnNmZXIgPSAoXG4gIHBhcmFtczogQWNjZXB0TkZUVHJhbnNmZXJSZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZEFjY2VwdE5GVFRyYW5zZmVyTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9jb25zdHJ1Y3QtdHJhbnNhY3Rpb25zL25mdC10cmFuc2FjdGlvbnMtYXBpI2J1cm4tbmZ0XG4gKi9cbmV4cG9ydCB0eXBlIEJ1cm5ORlRSZXF1ZXN0UGFyYW1zID0gVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgICBCdXJuTkZUUmVxdWVzdCxcbiAgICAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJyB8ICdORlRQb3N0SGFzaEhleCcgfCAnU2VyaWFsTnVtYmVyJ1xuICA+XG4+O1xuZXhwb3J0IGNvbnN0IGJ1cm5ORlQgPSBhc3luYyAoXG4gIHBhcmFtczogQnVybk5GVFJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPFxuICBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PEJ1cm5ORlRSZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT5cbj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQnVybk5GVE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgKyBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICBORlRPcGVyYXRpb25MaW1pdE1hcDoge1xuICAgICAgICBbcGFyYW1zLk5GVFBvc3RIYXNoSGV4XToge1xuICAgICAgICAgIFtwYXJhbXMuU2VyaWFsTnVtYmVyXToge1xuICAgICAgICAgICAgYnVybjogb3B0aW9ucz8udHhMaW1pdENvdW50ID8/IDEsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL2J1cm4tbmZ0JywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0QnVybk5GVFRyYW5zYXRpb24sXG4gIH0pO1xufTtcblxuY29uc3QgYnVpbGRCdXJuTkZUTWV0YWRhdGEgPSAocGFyYW1zOiBCdXJuTkZUUmVxdWVzdFBhcmFtcykgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhQnVybk5GVCgpO1xuICBtZXRhZGF0YS5uZnRQb3N0SGFzaCA9IGhleFRvQnl0ZXMocGFyYW1zLk5GVFBvc3RIYXNoSGV4KTtcbiAgbWV0YWRhdGEuc2VyaWFsTnVtYmVyID0gcGFyYW1zLlNlcmlhbE51bWJlcjtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0QnVybk5GVFRyYW5zYXRpb24gPSAoXG4gIHBhcmFtczogQnVybk5GVFJlcXVlc3RQYXJhbXNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChcbiAgICBwYXJhbXMuVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQnVybk5GVE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuIl19

@@ -1,4 +0,4 @@

import { ConstructedTransactionResponse, CreateFollowTxnStatelessRequest, CreateFollowTxnStatelessResponse, CreateLikeStatelessRequest, CreateLikeStatelessResponse, SendDiamondsRequest, SendDiamondsResponse, SendNewMessageRequest, SendNewMessageResponse, SubmitPostRequest, SubmitPostResponse, TransactionFee, UpdateProfileRequest, UpdateProfileResponse } from '../backend-types';
import { PartialWithRequiredFields } from '../data';
import { ConstructedAndSubmittedTx, TxRequestOptions, TypeWithOptionalFeesAndExtraData } from '../types';
import { ConstructedTransactionResponse, CreateFollowTxnStatelessRequest, CreateFollowTxnStatelessResponse, CreateLikeStatelessRequest, CreateLikeStatelessResponse, SendDiamondsRequest, SendDiamondsResponse, SendNewMessageRequest, SendNewMessageResponse, SubmitPostRequest, SubmitPostResponse, TransactionFee, UpdateProfileRequest, UpdateProfileResponse } from '../backend-types/index.js';
import { PartialWithRequiredFields } from '../data/index.js';
import { ConstructedAndSubmittedTx, TxRequestOptions, TypeWithOptionalFeesAndExtraData } from '../types.js';
export declare const constructUpdateProfileTransaction: (params: TypeWithOptionalFeesAndExtraData<UpdateProfileRequest>) => Promise<ConstructedTransactionResponse>;

@@ -69,3 +69,3 @@ /**

sendMessageUnencrypted?: boolean;
}) => Promise<ConstructedAndSubmittedTx<ConstructedTransactionResponse | SendNewMessageResponse>>;
}) => Promise<ConstructedAndSubmittedTx<SendNewMessageResponse | ConstructedTransactionResponse>>;
/**

@@ -72,0 +72,0 @@ * https://docs.deso.org/deso-backend/construct-transactions/social-transactions-api#send-group-chat-message

@@ -1,2 +0,2 @@

import { TransactionSpendingLimitResponseOptions } from '../identity';
import { TransactionSpendingLimitResponseOptions } from '../identity/index.js';
export declare function guardTxPermission(spendingLimitOptions: TransactionSpendingLimitResponseOptions): Promise<void>;

@@ -1,29 +0,20 @@

var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { identity } from '../identity';
export function guardTxPermission(spendingLimitOptions) {
return __awaiter(this, void 0, void 0, function* () {
const hasPermissions = identity.hasPermissions(spendingLimitOptions);
const guard = (hasPermissions) => {
var _a, _b;
if (!hasPermissions) {
return identity.requestPermissions(Object.assign(Object.assign({}, spendingLimitOptions), { GlobalDESOLimit: ((_a = identity.transactionSpendingLimitOptions.GlobalDESOLimit) !== null && _a !== void 0 ? _a : 0) +
((_b = spendingLimitOptions.GlobalDESOLimit) !== null && _b !== void 0 ? _b : 0) }));
}
};
if (typeof hasPermissions === 'boolean') {
guard(hasPermissions);
import { identity, } from '../identity/index.js';
export async function guardTxPermission(spendingLimitOptions) {
const hasPermissions = identity.hasPermissions(spendingLimitOptions);
const guard = (hasPermissions) => {
if (!hasPermissions) {
return identity.requestPermissions({
...spendingLimitOptions,
GlobalDESOLimit: (identity.transactionSpendingLimitOptions.GlobalDESOLimit ?? 0) +
(spendingLimitOptions.GlobalDESOLimit ?? 0),
});
}
else {
hasPermissions.then(guard);
}
});
};
if (typeof hasPermissions === 'boolean') {
guard(hasPermissions);
}
else {
hasPermissions.then(guard);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb25zL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBMkMsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWhGLE1BQU0sVUFBZ0IsaUJBQWlCLENBQ3JDLG9CQUE2RDs7UUFFN0QsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sS0FBSyxHQUFHLENBQUMsY0FBdUIsRUFBRSxFQUFFOztZQUN4QyxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUNuQixPQUFPLFFBQVEsQ0FBQyxrQkFBa0IsaUNBQzdCLG9CQUFvQixLQUN2QixlQUFlLEVBQ2IsQ0FBQyxNQUFBLFFBQVEsQ0FBQywrQkFBK0IsQ0FBQyxlQUFlLG1DQUFJLENBQUMsQ0FBQzt3QkFDL0QsQ0FBQyxNQUFBLG9CQUFvQixDQUFDLGVBQWUsbUNBQUksQ0FBQyxDQUFDLElBQzdDLENBQUM7YUFDSjtRQUNILENBQUMsQ0FBQztRQUVGLElBQUksT0FBTyxjQUFjLEtBQUssU0FBUyxFQUFFO1lBQ3ZDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN2QjthQUFNO1lBQ0osY0FBbUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbEQ7SUFDSCxDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZU9wdGlvbnMsIGlkZW50aXR5IH0gZnJvbSAnLi4vaWRlbnRpdHknO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ3VhcmRUeFBlcm1pc3Npb24oXG4gIHNwZW5kaW5nTGltaXRPcHRpb25zOiBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZU9wdGlvbnNcbikge1xuICBjb25zdCBoYXNQZXJtaXNzaW9ucyA9IGlkZW50aXR5Lmhhc1Blcm1pc3Npb25zKHNwZW5kaW5nTGltaXRPcHRpb25zKTtcbiAgY29uc3QgZ3VhcmQgPSAoaGFzUGVybWlzc2lvbnM6IGJvb2xlYW4pID0+IHtcbiAgICBpZiAoIWhhc1Blcm1pc3Npb25zKSB7XG4gICAgICByZXR1cm4gaWRlbnRpdHkucmVxdWVzdFBlcm1pc3Npb25zKHtcbiAgICAgICAgLi4uc3BlbmRpbmdMaW1pdE9wdGlvbnMsXG4gICAgICAgIEdsb2JhbERFU09MaW1pdDpcbiAgICAgICAgICAoaWRlbnRpdHkudHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0T3B0aW9ucy5HbG9iYWxERVNPTGltaXQgPz8gMCkgK1xuICAgICAgICAgIChzcGVuZGluZ0xpbWl0T3B0aW9ucy5HbG9iYWxERVNPTGltaXQgPz8gMCksXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgaWYgKHR5cGVvZiBoYXNQZXJtaXNzaW9ucyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgZ3VhcmQoaGFzUGVybWlzc2lvbnMpO1xuICB9IGVsc2Uge1xuICAgIChoYXNQZXJtaXNzaW9ucyBhcyBQcm9taXNlPGJvb2xlYW4+KS50aGVuKGd1YXJkKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb25zL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxRQUFRLEdBQ1QsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxvQkFBNkQ7SUFFN0QsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sS0FBSyxHQUFHLENBQUMsY0FBdUIsRUFBRSxFQUFFO1FBQ3hDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbkIsT0FBTyxRQUFRLENBQUMsa0JBQWtCLENBQUM7Z0JBQ2pDLEdBQUcsb0JBQW9CO2dCQUN2QixlQUFlLEVBQ2IsQ0FBQyxRQUFRLENBQUMsK0JBQStCLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQztvQkFDL0QsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDO2FBQzlDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsSUFBSSxPQUFPLGNBQWMsS0FBSyxTQUFTLEVBQUU7UUFDdkMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0tBQ3ZCO1NBQU07UUFDSixjQUFtQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNsRDtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZU9wdGlvbnMsXG4gIGlkZW50aXR5LFxufSBmcm9tICcuLi9pZGVudGl0eS9pbmRleC5qcyc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBndWFyZFR4UGVybWlzc2lvbihcbiAgc3BlbmRpbmdMaW1pdE9wdGlvbnM6IFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlT3B0aW9uc1xuKSB7XG4gIGNvbnN0IGhhc1Blcm1pc3Npb25zID0gaWRlbnRpdHkuaGFzUGVybWlzc2lvbnMoc3BlbmRpbmdMaW1pdE9wdGlvbnMpO1xuICBjb25zdCBndWFyZCA9IChoYXNQZXJtaXNzaW9uczogYm9vbGVhbikgPT4ge1xuICAgIGlmICghaGFzUGVybWlzc2lvbnMpIHtcbiAgICAgIHJldHVybiBpZGVudGl0eS5yZXF1ZXN0UGVybWlzc2lvbnMoe1xuICAgICAgICAuLi5zcGVuZGluZ0xpbWl0T3B0aW9ucyxcbiAgICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICAgIChpZGVudGl0eS50cmFuc2FjdGlvblNwZW5kaW5nTGltaXRPcHRpb25zLkdsb2JhbERFU09MaW1pdCA/PyAwKSArXG4gICAgICAgICAgKHNwZW5kaW5nTGltaXRPcHRpb25zLkdsb2JhbERFU09MaW1pdCA/PyAwKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBpZiAodHlwZW9mIGhhc1Blcm1pc3Npb25zID09PSAnYm9vbGVhbicpIHtcbiAgICBndWFyZChoYXNQZXJtaXNzaW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgKGhhc1Blcm1pc3Npb25zIGFzIFByb21pc2U8Ym9vbGVhbj4pLnRoZW4oZ3VhcmQpO1xuICB9XG59XG4iXX0=

@@ -1,2 +0,2 @@

import { RequestOptions, SubmitTransactionResponse, TransactionFee } from './backend-types';
import { RequestOptions, SubmitTransactionResponse, TransactionFee } from './backend-types/index.js';
export interface OptionalFeesAndExtraData {

@@ -3,0 +3,0 @@ MinFeeRateNanosPerKB?: number;

export {};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFJlcXVlc3RPcHRpb25zLFxuICBTdWJtaXRUcmFuc2FjdGlvblJlc3BvbnNlLFxuICBUcmFuc2FjdGlvbkZlZSxcbn0gZnJvbSAnLi9iYWNrZW5kLXR5cGVzJztcbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhIHtcbiAgTWluRmVlUmF0ZU5hbm9zUGVyS0I/OiBudW1iZXI7XG4gIFRyYW5zYWN0aW9uRmVlcz86IFRyYW5zYWN0aW9uRmVlW10gfCBudWxsO1xuICBFeHRyYURhdGE/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG5leHBvcnQgdHlwZSBUeXBlV2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxUPiA9IE9taXQ8XG4gIFQsXG4gICdNaW5GZWVSYXRlTmFub3NQZXJLQicgfCAnVHJhbnNhY3Rpb25GZWVzJyB8ICdFeHRyYURhdGEnIHwgJ0luVHV0b3JpYWwnXG4+ICZcbiAgT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8VD4ge1xuICBjb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U6IFQ7XG4gIC8vIFRoaXMgd2lsbCBiZSBudWxsIGlmIHRoZSBicm9hZGNhc3Qgb3B0aW9uIGlzIHNldCB0byBmYWxzZS5cbiAgc3VibWl0dGVkVHJhbnNhY3Rpb25SZXNwb25zZTogU3VibWl0VHJhbnNhY3Rpb25SZXNwb25zZSB8IG51bGw7XG59XG5cbmV4cG9ydCB0eXBlIFR4UmVxdWVzdE9wdGlvbnMgPSBSZXF1ZXN0T3B0aW9ucyAmIHtcbiAgdHhMaW1pdENvdW50PzogbnVtYmVyIHwgJ1VOTElNSVRFRCc7XG4gIGNoZWNrUGVybWlzc2lvbnM/OiBib29sZWFuO1xufTtcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFJlcXVlc3RPcHRpb25zLFxuICBTdWJtaXRUcmFuc2FjdGlvblJlc3BvbnNlLFxuICBUcmFuc2FjdGlvbkZlZSxcbn0gZnJvbSAnLi9iYWNrZW5kLXR5cGVzL2luZGV4LmpzJztcbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhIHtcbiAgTWluRmVlUmF0ZU5hbm9zUGVyS0I/OiBudW1iZXI7XG4gIFRyYW5zYWN0aW9uRmVlcz86IFRyYW5zYWN0aW9uRmVlW10gfCBudWxsO1xuICBFeHRyYURhdGE/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG5leHBvcnQgdHlwZSBUeXBlV2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxUPiA9IE9taXQ8XG4gIFQsXG4gICdNaW5GZWVSYXRlTmFub3NQZXJLQicgfCAnVHJhbnNhY3Rpb25GZWVzJyB8ICdFeHRyYURhdGEnIHwgJ0luVHV0b3JpYWwnXG4+ICZcbiAgT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8VD4ge1xuICBjb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U6IFQ7XG4gIC8vIFRoaXMgd2lsbCBiZSBudWxsIGlmIHRoZSBicm9hZGNhc3Qgb3B0aW9uIGlzIHNldCB0byBmYWxzZS5cbiAgc3VibWl0dGVkVHJhbnNhY3Rpb25SZXNwb25zZTogU3VibWl0VHJhbnNhY3Rpb25SZXNwb25zZSB8IG51bGw7XG59XG5cbmV4cG9ydCB0eXBlIFR4UmVxdWVzdE9wdGlvbnMgPSBSZXF1ZXN0T3B0aW9ucyAmIHtcbiAgdHhMaW1pdENvdW50PzogbnVtYmVyIHwgJ1VOTElNSVRFRCc7XG4gIGNoZWNrUGVybWlzc2lvbnM/OiBib29sZWFuO1xufTtcbiJdfQ==

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc