Socket
Socket
Sign inDemoInstall

tedious

Package Overview
Dependencies
106
Maintainers
8
Versions
214
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 13.0.4 to 13.0.5

12

lib/bulk-load.js

@@ -114,6 +114,8 @@ "use strict";

try {
value = c.type.validate(value, c.collation);
} catch (error) {
return callback(error);
if (!this.bulkLoad.firstRowWritten) {
try {
value = c.type.validate(value, c.collation);
} catch (error) {
return callback(error);
}
}

@@ -669,2 +671,2 @@

module.exports = BulkLoad;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9idWxrLWxvYWQudHMiXSwibmFtZXMiOlsiRkxBR1MiLCJudWxsYWJsZSIsImNhc2VTZW4iLCJ1cGRhdGVhYmxlUmVhZFdyaXRlIiwidXBkYXRlYWJsZVVua25vd24iLCJpZGVudGl0eSIsImNvbXB1dGVkIiwiZml4ZWRMZW5DTFJUeXBlIiwic3BhcnNlQ29sdW1uU2V0IiwiaGlkZGVuIiwia2V5IiwibnVsbGFibGVVbmtub3duIiwiRE9ORV9TVEFUVVMiLCJGSU5BTCIsIk1PUkUiLCJFUlJPUiIsIklOWEFDVCIsIkNPVU5UIiwiQVRUTiIsIlNSVkVSUk9SIiwicm93VG9rZW5CdWZmZXIiLCJCdWZmZXIiLCJmcm9tIiwiVE9LRU5fVFlQRSIsIlJPVyIsInRleHRQb2ludGVyQW5kVGltZXN0YW1wQnVmZmVyIiwidGV4dFBvaW50ZXJOdWxsQnVmZmVyIiwiUm93VHJhbnNmb3JtIiwiVHJhbnNmb3JtIiwiY29uc3RydWN0b3IiLCJidWxrTG9hZCIsIndyaXRhYmxlT2JqZWN0TW9kZSIsImNvbHVtbk1ldGFkYXRhV3JpdHRlbiIsIm1haW5PcHRpb25zIiwiY29sdW1ucyIsIm9wdGlvbnMiLCJfdHJhbnNmb3JtIiwicm93IiwiX2VuY29kaW5nIiwiY2FsbGJhY2siLCJwdXNoIiwiZ2V0Q29sTWV0YURhdGEiLCJpIiwibGVuZ3RoIiwiYyIsInZhbHVlIiwiQXJyYXkiLCJpc0FycmF5Iiwib2JqTmFtZSIsInR5cGUiLCJ2YWxpZGF0ZSIsImNvbGxhdGlvbiIsImVycm9yIiwicGFyYW1ldGVyIiwic2NhbGUiLCJwcmVjaXNpb24iLCJuYW1lIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJjaHVuayIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsInByb2Nlc3MiLCJuZXh0VGljayIsIl9mbHVzaCIsImNyZWF0ZURvbmVUb2tlbiIsIkJ1bGtMb2FkIiwiRXZlbnRFbWl0dGVyIiwidGFibGUiLCJjb25uZWN0aW9uT3B0aW9ucyIsImNoZWNrQ29uc3RyYWludHMiLCJmaXJlVHJpZ2dlcnMiLCJrZWVwTnVsbHMiLCJsb2NrVGFibGUiLCJvcmRlciIsIlR5cGVFcnJvciIsImNvbHVtbiIsImRpcmVjdGlvbiIsIk9iamVjdCIsImVudHJpZXMiLCJjYW5jZWxlZCIsImV4ZWN1dGlvblN0YXJ0ZWQiLCJzdHJlYW1pbmdNb2RlIiwidGltZW91dCIsImNvbHVtbnNCeU5hbWUiLCJmaXJzdFJvd1dyaXR0ZW4iLCJyb3dUb1BhY2tldFRyYW5zZm9ybSIsImJ1bGtPcHRpb25zIiwiY29ubmVjdGlvbiIsInJvd3MiLCJyc3QiLCJyb3dDb3VudCIsInVuZGVmaW5lZCIsImFkZENvbHVtbiIsIm91dHB1dCIsIkVycm9yIiwiaWQiLCJyZXNvbHZlTGVuZ3RoIiwicmVzb2x2ZVByZWNpc2lvbiIsInJlc29sdmVTY2FsZSIsImFkZFJvdyIsImlucHV0Iiwid3JpdGUiLCJtYXAiLCJnZXRPcHRpb25zU3FsIiwiYWRkT3B0aW9ucyIsIm9yZGVyQ29sdW1ucyIsImpvaW4iLCJnZXRCdWxrSW5zZXJ0U3FsIiwic3FsIiwibGVuIiwiZGVjbGFyYXRpb24iLCJnZXRUYWJsZUNyZWF0aW9uU3FsIiwidEJ1ZiIsIldyaXRhYmxlVHJhY2tpbmdCdWZmZXIiLCJ3cml0ZVVJbnQ4IiwiQ09MTUVUQURBVEEiLCJ3cml0ZVVJbnQxNkxFIiwiaiIsInRkc1ZlcnNpb24iLCJ3cml0ZVVJbnQzMkxFIiwiZmxhZ3MiLCJ3cml0ZUJ1ZmZlciIsImdlbmVyYXRlVHlwZUluZm8iLCJoYXNUYWJsZU5hbWUiLCJ3cml0ZVVzVmFyY2hhciIsIndyaXRlQlZhcmNoYXIiLCJkYXRhIiwic2V0VGltZW91dCIsIkRPTkUiLCJzdGF0dXMiLCJnZXRSb3dTdHJlYW0iLCJjYW5jZWwiLCJlbWl0IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUdBOztBQUNBOzs7O0FBS0E7QUFDQTtBQUNBO0FBQ0EsTUFBTUEsS0FBSyxHQUFHO0FBQ1pDLEVBQUFBLFFBQVEsRUFBRSxL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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNFSSxFQUFBQSxZQUFZLEdBQUc7QUFDYixRQUFJLEtBQUs5QyxlQUFULEVBQTBCO0FBQ3hCLFlBQU0sSUFBSVUsS0FBSixDQUFVLGdHQUFWLENBQU47QUFDRDs7QUFDRCxRQUFJLEtBQUtkLGdCQUFULEVBQTJCO0FBQ3pCLFlBQU0sSUFBSWMsS0FBSixDQUFVLDRFQUFWLENBQU47QUFDRDs7QUFDRCxTQUFLYixhQUFMLEdBQXFCLElBQXJCO0FBRUEsV0FBTyxLQUFLSSxvQkFBWjtBQUNEO0FBRUQ7QUFDRjtBQUNBOzs7QUFDRThDLEVBQUFBLE1BQU0sR0FBRztBQUNQLFFBQUksS0FBS3BELFFBQVQsRUFBbUI7QUFDakI7QUFDRDs7QUFFRCxTQUFLQSxRQUFMLEdBQWdCLElBQWhCO0FBQ0EsU0FBS3FELElBQUwsQ0FBVSxRQUFWO0FBQ0Q7O0FBamRpQzs7ZUFvZHJCbkUsUTs7QUFDZm9FLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQnJFLFFBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcbmltcG9ydCBXcml0YWJsZVRyYWNraW5nQnVmZmVyIGZyb20gJy4vdHJhY2tpbmctYnVmZmVyL3dyaXRhYmxlLXRyYWNraW5nLWJ1ZmZlcic7XG5pbXBvcnQgQ29ubmVjdGlvbiwgeyBJbnRlcm5hbENvbm5lY3Rpb25PcHRpb25zIH0gZnJvbSAnLi9jb25uZWN0aW9uJztcblxuaW1wb3J0IHsgVHJhbnNmb3JtIH0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCB7IFRZUEUgYXMgVE9LRU5fVFlQRSB9IGZyb20gJy4vdG9rZW4vdG9rZW4nO1xuXG5pbXBvcnQgeyBEYXRhVHlwZSwgUGFyYW1ldGVyIH0gZnJvbSAnLi9kYXRhLXR5cGUnO1xuaW1wb3J0IHsgQ29sbGF0aW9uIH0gZnJvbSAnLi9jb2xsYXRpb24nO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmNvbnN0IEZMQUdTID0ge1xuICBudWxsYWJsZTogMSA8PCAwLFxuICBjYXNlU2VuOiAxIDw8IDEsXG4gIHVwZGF0ZWFibGVSZWFkV3JpdGU6IDEgPDwgMixcbiAgdXBkYXRlYWJsZVVua25vd246IDEgPDwgMyxcbiAgaWRlbnRpdHk6IDEgPDwgNCxcbiAgY29tcHV0ZWQ6IDEgPDwgNSwgLy8gaW50cm9kdWNlZCBpbiBURFMgNy4yXG4gIGZpeGVkTGVuQ0xSVHlwZTogMSA8PCA4LCAvLyBpbnRyb2R1Y2VkIGluIFREUyA3LjJcbiAgc3BhcnNlQ29sdW1uU2V0OiAxIDw8IDEwLCAvLyBpbnRyb2R1Y2VkIGluIFREUyA3LjMuQlxuICBoaWRkZW46IDEgPDwgMTMsIC8vIGludHJvZHVjZWQgaW4gVERTIDcuMlxuICBrZXk6IDEgPDwgMTQsIC8vIGludHJvZHVjZWQgaW4gVERTIDcuMlxuICBudWxsYWJsZVVua25vd246IDEgPDwgMTUgLy8gaW50cm9kdWNlZCBpbiBURFMgNy4yXG59O1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmNvbnN0IERPTkVfU1RBVFVTID0ge1xuICBGSU5BTDogMHgwMCxcbiAgTU9SRTogMHgxLFxuICBFUlJPUjogMHgyLFxuICBJTlhBQ1Q6IDB4NCxcbiAgQ09VTlQ6IDB4MTAsXG4gIEFUVE46IDB4MjAsXG4gIFNSVkVSUk9SOiAweDEwMFxufTtcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5pbnRlcmZhY2UgSW50ZXJuYWxPcHRpb25zIHtcbiAgY2hlY2tDb25zdHJhaW50czogYm9vbGVhbjtcbiAgZmlyZVRyaWdnZXJzOiBib29sZWFuO1xuICBrZWVwTnVsbHM6IGJvb2xlYW47XG4gIGxvY2tUYWJsZTogYm9vbGVhbjtcbiAgb3JkZXI6IHsgW2NvbHVtbk5hbWU6IHN0cmluZ106ICdBU0MnIHwgJ0RFU0MnIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBIb25vcnMgY29uc3RyYWludHMgZHVyaW5nIGJ1bGsgbG9hZCwgdXNpbmcgVC1TUUxcbiAgICogW0NIRUNLX0NPTlNUUkFJTlRTXShodHRwczovL3RlY2huZXQubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zMTg2MjQ3KHY9c3FsLjEwNSkuYXNweCkuXG4gICAqIChkZWZhdWx0OiBgZmFsc2VgKVxuICAgKi9cbiAgY2hlY2tDb25zdHJhaW50cz86IEludGVybmFsT3B0aW9uc1snY2hlY2tDb25zdHJhaW50cyddIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBIb25vcnMgaW5zZXJ0IHRyaWdnZXJzIGR1cmluZyBidWxrIGxvYWQsIHVzaW5nIHRoZSBULVNRTCBbRklSRV9UUklHR0VSU10oaHR0cHM6Ly90ZWNobmV0Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczE4NzY0MCh2PXNxbC4xMDUpLmFzcHgpLiAoZGVmYXVsdDogYGZhbHNlYClcbiAgICovXG4gIGZpcmVUcmlnZ2Vycz86IEludGVybmFsT3B0aW9uc1snZmlyZVRyaWdnZXJzJ10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEhvbm9ycyBudWxsIHZhbHVlIHBhc3NlZCwgaWdub3JlcyB0aGUgZGVmYXVsdCB2YWx1ZXMgc2V0IG9uIHRhYmxlLCB1c2luZyBULVNRTCBbS0VFUF9OVUxMU10oaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczE4Nzg4Nyh2PXNxbC4xMjApLmFzcHgpLiAoZGVmYXVsdDogYGZhbHNlYClcbiAgICovXG4gIGtlZXBOdWxscz86IEludGVybmFsT3B0aW9uc1sna2VlcE51bGxzJ10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFBsYWNlcyBhIGJ1bGsgdXBkYXRlKEJVKSBsb2NrIG9uIHRhYmxlIHdoaWxlIHBlcmZvcm1pbmcgYnVsayBsb2FkLCB1c2luZyBULVNRTCBbVEFCTE9DS10oaHR0cHM6Ly90ZWNobmV0Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczE4MDg3Nih2PXNxbC4xMDUpLmFzcHgpLiAoZGVmYXVsdDogYGZhbHNlYClcbiAgICovXG4gIGxvY2tUYWJsZT86IEludGVybmFsT3B0aW9uc1snbG9ja1RhYmxlJ10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgb3JkZXJpbmcgb2YgdGhlIGRhdGEgdG8gcG9zc2libHkgaW5jcmVhc2UgYnVsayBpbnNlcnQgcGVyZm9ybWFuY2UsIHVzaW5nIFQtU1FMIFtPUkRFUl0oaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvcHJldmlvdXMtdmVyc2lvbnMvc3FsL3NxbC1zZXJ2ZXItMjAwOC1yMi9tczE3NzQ2OCh2PXNxbC4xMDUpKS4gKGRlZmF1bHQ6IGB7fWApXG4gICAqL1xuICBvcmRlcj86IEludGVybmFsT3B0aW9uc1snb3JkZXInXSB8IHVuZGVmaW5lZDtcbn1cblxuXG5leHBvcnQgdHlwZSBDYWxsYmFjayA9XG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHdoaWNoIHdpbGwgYmUgY2FsbGVkIGFmdGVyIHRoZSBbW0J1bGtMb2FkXV0gZmluaXNoZXMgZXhlY3V0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gcm93Q291bnQgdGhlIG51bWJlciBvZiByb3dzIGluc2VydGVkXG4gICAqL1xuICAoZXJyOiBFcnJvciB8IHVuZGVmaW5lZCB8IG51bGwsIHJvd0NvdW50PzogbnVtYmVyKSA9PiB2b2lkO1xuXG5pbnRlcmZhY2UgQ29sdW1uIGV4dGVuZHMgUGFyYW1ldGVyIHtcbiAgb2JqTmFtZTogc3RyaW5nO1xuICBjb2xsYXRpb246IENvbGxhdGlvbiB8IHVuZGVmaW5lZDtcbn1cblxuaW50ZXJmYWNlIENvbHVtbk9wdGlvbnMge1xuICBvdXRwdXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBGb3IgVmFyQ2hhciwgTlZhckNoYXIsIFZhckJpbmFyeS4gVXNlIGxlbmd0aCBhcyBgSW5maW5pdHlgIGZvciBWYXJDaGFyKG1heCksIE5WYXJDaGFyKG1heCkgYW5kIFZhckJpbmFyeShtYXgpLlxuICAgKi9cbiAgbGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBGb3IgTnVtZXJpYywgRGVjaW1hbC5cbiAgICovXG4gIHByZWNpc2lvbj86IG51bWJlcjtcblxuICAvKipcbiAgICogRm9yIE51bWVyaWMsIERlY2ltYWwsIFRpbWUsIERhdGVUaW1lMiwgRGF0ZVRpbWVPZmZzZXQuXG4gICAqL1xuICBzY2FsZT86IG51bWJlcjtcblxuICAvKipcbiAgICogSWYgdGhlIG5hbWUgb2YgdGhlIGNvbHVtbiBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgZm91bmQgb24gYHJvd09iamAgYXJndW1lbnRzIHBhc3NlZCB0byBbW2FkZFJvd11dLCB0aGVuIHlvdSBjYW4gdXNlIHRoaXMgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIHByb3BlcnR5IG5hbWUuXG4gICAqL1xuICBvYmpOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgY29sdW1uIGFjY2VwdHMgTlVMTCB2YWx1ZXMuXG4gICAqL1xuICBudWxsYWJsZT86IGJvb2xlYW47XG59XG5cbmNvbnN0IHJvd1Rva2VuQnVmZmVyID0gQnVmZmVyLmZyb20oWyBUT0tFTl9UWVBFLlJPVyBdKTtcbmNvbnN0IHRleHRQb2ludGVyQW5kVGltZXN0YW1wQnVmZmVyID0gQnVmZmVyLmZyb20oW1xuICAvLyBUZXh0UG9pbnRlciBsZW5ndGhcbiAgMHgxMCxcblxuICAvLyBUZXh0UG9pbnRlclxuICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLFxuXG4gIC8vIFRpbWVzdGFtcFxuICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwXG5dKTtcbmNvbnN0IHRleHRQb2ludGVyTnVsbEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKFsweDAwXSk7XG5cbi8vIEEgdHJhbnNmb3JtIHRoYXQgY29udmVydHMgcm93cyB0byBwYWNrZXRzLlxuY2xhc3MgUm93VHJhbnNmb3JtIGV4dGVuZHMgVHJhbnNmb3JtIHtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb2x1bW5NZXRhZGF0YVdyaXR0ZW46IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgYnVsa0xvYWQ6IEJ1bGtMb2FkO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIG1haW5PcHRpb25zOiBCdWxrTG9hZFsnb3B0aW9ucyddO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNvbHVtbnM6IEJ1bGtMb2FkWydjb2x1bW5zJ107XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihidWxrTG9hZDogQnVsa0xvYWQpIHtcbiAgICBzdXBlcih7IHdyaXRhYmxlT2JqZWN0TW9kZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMuYnVsa0xvYWQgPSBidWxrTG9hZDtcbiAgICB0aGlzLm1haW5PcHRpb25zID0gYnVsa0xvYWQub3B0aW9ucztcbiAgICB0aGlzLmNvbHVtbnMgPSBidWxrTG9hZC5jb2x1bW5zO1xuXG4gICAgdGhpcy5jb2x1bW5NZXRhZGF0YVdyaXR0ZW4gPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3RyYW5zZm9ybShyb3c6IEFycmF5PHVua25vd24+IHwgeyBbY29sTmFtZTogc3RyaW5nXTogdW5rbm93biB9LCBfZW5jb2Rpbmc6IHN0cmluZywgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKSB7XG4gICAgaWYgKCF0aGlzLmNvbHVtbk1ldGFkYXRhV3JpdHRlbikge1xuICAgICAgdGhpcy5wdXNoKHRoaXMuYnVsa0xvYWQuZ2V0Q29sTWV0YURhdGEoKSk7XG4gICAgICB0aGlzLmNvbHVtbk1ldGFkYXRhV3JpdHRlbiA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5wdXNoKHJvd1Rva2VuQnVmZmVyKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjID0gdGhpcy5jb2x1bW5zW2ldO1xuICAgICAgbGV0IHZhbHVlID0gQXJyYXkuaXNBcnJheShyb3cpID8gcm93W2ldIDogcm93W2Mub2JqTmFtZV07XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHZhbHVlID0gYy50eXBlLnZhbGlkYXRlKHZhbHVlLCBjLmNvbGxhdGlvbik7XG4gICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhcmFtZXRlciA9IHtcbiAgICAgICAgbGVuZ3RoOiBjLmxlbmd0aCxcbiAgICAgICAgc2NhbGU6IGMuc2NhbGUsXG4gICAgICAgIHByZWNpc2lvbjogYy5wcmVjaXNpb24sXG4gICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgfTtcblxuICAgICAgaWYgKGMudHlwZS5uYW1lID09PSAnVGV4dCcgfHwgYy50eXBlLm5hbWUgPT09ICdJbWFnZScgfHwgYy50eXBlLm5hbWUgPT09ICdOVGV4dCcpIHtcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLnB1c2godGV4dFBvaW50ZXJOdWxsQnVmZmVyKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHVzaCh0ZXh0UG9pbnRlckFuZFRpbWVzdGFtcEJ1ZmZlcik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucHVzaChjLnR5cGUuZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCB0aGlzLm1haW5PcHRpb25zKSk7XG4gICAgICBmb3IgKGNvbnN0IGNodW5rIG9mIGMudHlwZS5nZW5lcmF0ZVBhcmFtZXRlckRhdGEocGFyYW1ldGVyLCB0aGlzLm1haW5PcHRpb25zKSkge1xuICAgICAgICB0aGlzLnB1c2goY2h1bmspO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfZmx1c2goY2FsbGJhY2s6ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLnB1c2godGhpcy5idWxrTG9hZC5jcmVhdGVEb25lVG9rZW4oKSk7XG5cbiAgICBwcm9jZXNzLm5leHRUaWNrKGNhbGxiYWNrKTtcbiAgfVxufVxuXG4vKipcbiAqIEEgQnVsa0xvYWQgaW5zdGFuY2UgaXMgdXNlZCB0byBwZXJmb3JtIGEgYnVsayBpbnNlcnQuXG4gKlxuICogVXNlIFtbQ29ubmVjdGlvbi5uZXdCdWxrTG9hZF1dIHRvIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSwgYW5kIFtbQ29ubmVjdGlvbi5leGVjQnVsa0xvYWRdXSB0byBleGVjdXRlIGl0LlxuICpcbiAqIEV4YW1wbGUgb2YgQnVsa0xvYWQgVXNhZ2VzOlxuICpcbiAqIGBgYGpzXG4gKiAvLyBvcHRpb25hbCBCdWxrTG9hZCBvcHRpb25zXG4gKiBjb25zdCBvcHRpb25zID0geyBrZWVwTnVsbHM6IHRydWUgfTtcbiAqXG4gKiAvLyBpbnN0YW50aWF0ZSAtIHByb3ZpZGUgdGhlIHRhYmxlIHdoZXJlIHlvdSdsbCBiZSBpbnNlcnRpbmcgdG8sIG9wdGlvbnMgYW5kIGEgY2FsbGJhY2tcbiAqIGNvbnN0IGJ1bGtMb2FkID0gY29ubmVjdGlvbi5uZXdCdWxrTG9hZCgnTXlUYWJsZScsIG9wdGlvbnMsIChlcnJvciwgcm93Q291bnQpID0+IHtcbiAqICAgY29uc29sZS5sb2coJ2luc2VydGVkICVkIHJvd3MnLCByb3dDb3VudCk7XG4gKiB9KTtcbiAqXG4gKiAvLyBzZXR1cCB5b3VyIGNvbHVtbnMgLSBhbHdheXMgaW5kaWNhdGUgd2hldGhlciB0aGUgY29sdW1uIGlzIG51bGxhYmxlXG4gKiBidWxrTG9hZC5hZGRDb2x1bW4oJ215SW50JywgVFlQRVMuSW50LCB7IG51bGxhYmxlOiBmYWxzZSB9KTtcbiAqIGJ1bGtMb2FkLmFkZENvbHVtbignbXlTdHJpbmcnLCBUWVBFUy5OVmFyQ2hhciwgeyBsZW5ndGg6IDUwLCBudWxsYWJsZTogdHJ1ZSB9KTtcbiAqXG4gKiAvLyBleGVjdXRlXG4gKiBjb25uZWN0aW9uLmV4ZWNCdWxrTG9hZChidWxrTG9hZCwgW1xuICogICB7IG15SW50OiA3LCBteVN0cmluZzogJ2hlbGxvJyB9LFxuICogICB7IG15SW50OiAyMywgbXlTdHJpbmc6ICd3b3JsZCcgfVxuICogXSk7XG4gKiBgYGBcbiAqL1xuY2xhc3MgQnVsa0xvYWQgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVycm9yOiBFcnJvciB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjYW5jZWxlZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBleGVjdXRpb25TdGFydGVkOiBib29sZWFuO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHN0cmVhbWluZ01vZGU6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgdGFibGU6IHN0cmluZztcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICB0aW1lb3V0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBvcHRpb25zOiBJbnRlcm5hbENvbm5lY3Rpb25PcHRpb25zO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNhbGxiYWNrOiBDYWxsYmFjaztcblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNvbHVtbnM6IEFycmF5PENvbHVtbj47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY29sdW1uc0J5TmFtZTogeyBbbmFtZTogc3RyaW5nXTogQ29sdW1uIH07XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmaXJzdFJvd1dyaXR0ZW46IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcm93VG9QYWNrZXRUcmFuc2Zvcm06IFJvd1RyYW5zZm9ybTtcblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGJ1bGtPcHRpb25zOiBJbnRlcm5hbE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb25uZWN0aW9uOiBDb25uZWN0aW9uIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHJvd3M6IEFycmF5PGFueT4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcnN0OiBBcnJheTxhbnk+IHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgY29sbGF0aW9uOiBDb2xsYXRpb24gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih0YWJsZTogc3RyaW5nLCBjb2xsYXRpb246IENvbGxhdGlvbiB8IHVuZGVmaW5lZCwgY29ubmVjdGlvbk9wdGlvbnM6IEludGVybmFsQ29ubmVjdGlvbk9wdGlvbnMsIHtcbiAgICBjaGVja0NvbnN0cmFpbnRzID0gZmFsc2UsXG4gICAgZmlyZVRyaWdnZXJzID0gZmFsc2UsXG4gICAga2VlcE51bGxzID0gZmFsc2UsXG4gICAgbG9ja1RhYmxlID0gZmFsc2UsXG4gICAgb3JkZXIgPSB7fSxcbiAgfTogT3B0aW9ucywgY2FsbGJhY2s6IENhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBjaGVja0NvbnN0cmFpbnRzICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcIm9wdGlvbnMuY2hlY2tDb25zdHJhaW50c1wiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuLicpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZmlyZVRyaWdnZXJzICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcIm9wdGlvbnMuZmlyZVRyaWdnZXJzXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIGJvb2xlYW4uJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBrZWVwTnVsbHMgIT09ICdib29sZWFuJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwib3B0aW9ucy5rZWVwTnVsbHNcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbi4nKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGxvY2tUYWJsZSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJvcHRpb25zLmxvY2tUYWJsZVwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuLicpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3JkZXIgIT09ICdvYmplY3QnIHx8IG9yZGVyID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJvcHRpb25zLm9yZGVyXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIG9iamVjdC4nKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtjb2x1bW4sIGRpcmVjdGlvbl0gb2YgT2JqZWN0LmVudHJpZXMob3JkZXIpKSB7XG4gICAgICBpZiAoZGlyZWN0aW9uICE9PSAnQVNDJyAmJiBkaXJlY3Rpb24gIT09ICdERVNDJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgdmFsdWUgb2YgdGhlIFwiJyArIGNvbHVtbiArICdcIiBrZXkgaW4gdGhlIFwib3B0aW9ucy5vcmRlclwiIG9iamVjdCBtdXN0IGJlIGVpdGhlciBcIkFTQ1wiIG9yIFwiREVTQ1wiLicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmVycm9yID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY2FuY2VsZWQgPSBmYWxzZTtcbiAgICB0aGlzLmV4ZWN1dGlvblN0YXJ0ZWQgPSBmYWxzZTtcblxuICAgIHRoaXMuY29sbGF0aW9uID0gY29sbGF0aW9uO1xuXG4gICAgdGhpcy50YWJsZSA9IHRhYmxlO1xuICAgIHRoaXMub3B0aW9ucyA9IGNvbm5lY3Rpb25PcHRpb25zO1xuICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICB0aGlzLmNvbHVtbnMgPSBbXTtcbiAgICB0aGlzLmNvbHVtbnNCeU5hbWUgPSB7fTtcbiAgICB0aGlzLmZpcnN0Um93V3JpdHRlbiA9IGZhbHNlO1xuICAgIHRoaXMuc3RyZWFtaW5nTW9kZSA9IGZhbHNlO1xuXG4gICAgdGhpcy5yb3dUb1BhY2tldFRyYW5zZm9ybSA9IG5ldyBSb3dUcmFuc2Zvcm0odGhpcyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcblxuICAgIHRoaXMuYnVsa09wdGlvbnMgPSB7IGNoZWNrQ29uc3RyYWludHMsIGZpcmVUcmlnZ2Vycywga2VlcE51bGxzLCBsb2NrVGFibGUsIG9yZGVyIH07XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGNvbHVtbiB0byB0aGUgYnVsayBsb2FkLlxuICAgKlxuICAgKiBUaGUgY29sdW1uIGRlZmluaXRpb25zIHNob3VsZCBtYXRjaCB0aGUgdGFibGUgeW91IGFyZSB0cnlpbmcgdG8gaW5zZXJ0IGludG8uXG4gICAqIEF0dGVtcHRpbmcgdG8gY2FsbCBhZGRDb2x1bW4gYWZ0ZXIgdGhlIGZpcnN0IHJvdyBoYXMgYmVlbiBhZGRlZCB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbi5cbiAgICpcbiAgICogYGBganNcbiAgICogYnVsa0xvYWQuYWRkQ29sdW1uKCdNeUludENvbHVtbicsIFRZUEVTLkludCwgeyBudWxsYWJsZTogZmFsc2UgfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY29sdW1uLlxuICAgKiBAcGFyYW0gdHlwZSBPbmUgb2YgdGhlIHN1cHBvcnRlZCBgZGF0YSB0eXBlc2AuXG4gICAqIEBwYXJhbSBfX25hbWVkUGFyYW1ldGVycyBBZGRpdGlvbmFsIGNvbHVtbiB0eXBlIGluZm9ybWF0aW9uLiBBdCBhIG1pbmltdW0sIGBudWxsYWJsZWAgbXVzdCBiZSBzZXQgdG8gdHJ1ZSBvciBmYWxzZS5cbiAgICogQHBhcmFtIGxlbmd0aCBGb3IgVmFyQ2hhciwgTlZhckNoYXIsIFZhckJpbmFyeS4gVXNlIGxlbmd0aCBhcyBgSW5maW5pdHlgIGZvciBWYXJDaGFyKG1heCksIE5WYXJDaGFyKG1heCkgYW5kIFZhckJpbmFyeShtYXgpLlxuICAgKiBAcGFyYW0gbnVsbGFibGUgSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvbHVtbiBhY2NlcHRzIE5VTEwgdmFsdWVzLlxuICAgKiBAcGFyYW0gb2JqTmFtZSBJZiB0aGUgbmFtZSBvZiB0aGUgY29sdW1uIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSBmb3VuZCBvbiBgcm93T2JqYCBhcmd1bWVudHMgcGFzc2VkIHRvIFtbYWRkUm93XV0gb3IgW1tDb25uZWN0aW9uLmV4ZWNCdWxrTG9hZF1dLCB0aGVuIHlvdSBjYW4gdXNlIHRoaXMgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIHByb3BlcnR5IG5hbWUuXG4gICAqIEBwYXJhbSBwcmVjaXNpb24gRm9yIE51bWVyaWMsIERlY2ltYWwuXG4gICAqIEBwYXJhbSBzY2FsZSBGb3IgTnVtZXJpYywgRGVjaW1hbCwgVGltZSwgRGF0ZVRpbWUyLCBEYXRlVGltZU9mZnNldC5cbiAgKi9cbiAgYWRkQ29sdW1uKG5hbWU6IHN0cmluZywgdHlwZTogRGF0YVR5cGUsIHsgb3V0cHV0ID0gZmFsc2UsIGxlbmd0aCwgcHJlY2lzaW9uLCBzY2FsZSwgb2JqTmFtZSA9IG5hbWUsIG51bGxhYmxlID0gdHJ1ZSB9OiBDb2x1bW5PcHRpb25zKSB7XG4gICAgaWYgKHRoaXMuZmlyc3RSb3dXcml0dGVuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbHVtbnMgY2Fubm90IGJlIGFkZGVkIHRvIGJ1bGsgaW5zZXJ0IGFmdGVyIHRoZSBmaXJzdCByb3cgaGFzIGJlZW4gd3JpdHRlbi4nKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZXhlY3V0aW9uU3RhcnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb2x1bW5zIGNhbm5vdCBiZSBhZGRlZCB0byBidWxrIGluc2VydCBhZnRlciBleGVjdXRpb24gaGFzIHN0YXJ0ZWQuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29sdW1uOiBDb2x1bW4gPSB7XG4gICAgICB0eXBlOiB0eXBlLFxuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgb3V0cHV0OiBvdXRwdXQsXG4gICAgICBsZW5ndGg6IGxlbmd0aCxcbiAgICAgIHByZWNpc2lvbjogcHJlY2lzaW9uLFxuICAgICAgc2NhbGU6IHNjYWxlLFxuICAgICAgb2JqTmFtZTogb2JqTmFtZSxcbiAgICAgIG51bGxhYmxlOiBudWxsYWJsZSxcbiAgICAgIGNvbGxhdGlvbjogdGhpcy5jb2xsYXRpb25cbiAgICB9O1xuXG4gICAgaWYgKCh0eXBlLmlkICYgMHgzMCkgPT09IDB4MjApIHtcbiAgICAgIGlmIChjb2x1bW4ubGVuZ3RoID09IG51bGwgJiYgdHlwZS5yZXNvbHZlTGVuZ3RoKSB7XG4gICAgICAgIGNvbHVtbi5sZW5ndGggPSB0eXBlLnJlc29sdmVMZW5ndGgoY29sdW1uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZS5yZXNvbHZlUHJlY2lzaW9uICYmIGNvbHVtbi5wcmVjaXNpb24gPT0gbnVsbCkge1xuICAgICAgY29sdW1uLnByZWNpc2lvbiA9IHR5cGUucmVzb2x2ZVByZWNpc2lvbihjb2x1bW4pO1xuICAgIH1cblxuICAgIGlmICh0eXBlLnJlc29sdmVTY2FsZSAmJiBjb2x1bW4uc2NhbGUgPT0gbnVsbCkge1xuICAgICAgY29sdW1uLnNjYWxlID0gdHlwZS5yZXNvbHZlU2NhbGUoY29sdW1uKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbHVtbnMucHVzaChjb2x1bW4pO1xuXG4gICAgdGhpcy5jb2x1bW5zQnlOYW1lW25hbWVdID0gY29sdW1uO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByb3cgdG8gdGhlIGJ1bGsgaW5zZXJ0LlxuICAgKlxuICAgKiBgYGBqc1xuICAgKiBidWxrTG9hZC5hZGRSb3coeyBmaXJzdF9uYW1lOiAnQmlsbCcsIGxhc3RfbmFtZTogJ0dhdGVzJyB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSByb3cgQW4gb2JqZWN0IG9mIGtleS92YWx1ZSBwYWlycyByZXByZXNlbnRpbmcgY29sdW1uIG5hbWUgKG9yIG9iak5hbWUpIGFuZCB2YWx1ZS5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCBvZiBhZGRpbmcgcm93cyBpbmRpdmlkdWFsbHksIHlvdSBzaG91bGQgcGFzc1xuICAgKiAgIGFsbCByb3cgb2JqZWN0cyB3aGVuIGNhbGxpbmcgW1tDb25uZWN0aW9uLmV4ZWNCdWxrTG9hZF1dLiBUaGlzIG1ldGhvZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS5cbiAgICovXG4gIGFkZFJvdyhyb3c6IHsgW2NvbHVtbk5hbWU6IHN0cmluZ106IHVua25vd24gfSk6IHZvaWRcblxuICAvKipcbiAgICogQWRkcyBhIHJvdyB0byB0aGUgYnVsayBpbnNlcnQuXG4gICAqXG4gICAqIGBgYGpzXG4gICAqIGJ1bGtMb2FkLmFkZFJvdygnQmlsbCcsICdHYXRlcycpO1xuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIHJvdyBJZiB0aGVyZSBhcmUgYXQgbGVhc3QgdHdvIGNvbHVtbnMsIHZhbHVlcyBjYW4gYmUgcGFzc2VkIGFzIG11bHRpcGxlIGFyZ3VtZW50cyBpbnN0ZWFkIG9mIGFuIGFycmF5LiBUaGV5XG4gICAqICAgbXVzdCBiZSBpbiB0aGUgc2FtZSBvcmRlciB0aGUgY29sdW1ucyB3ZXJlIGFkZGVkIGluLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkIG9mIGFkZGluZyByb3dzIGluZGl2aWR1YWxseSwgeW91IHNob3VsZCBwYXNzXG4gICAqICAgYWxsIHJvdyBvYmplY3RzIHdoZW4gY2FsbGluZyBbW0Nvbm5lY3Rpb24uZXhlY0J1bGtMb2FkXV0uIFRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLlxuICAgKi9cbiAgYWRkUm93KC4uLnJvdzogdW5rbm93bltdKTogdm9pZFxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcm93IHRvIHRoZSBidWxrIGluc2VydC5cbiAgICpcbiAgICogYGBganNcbiAgICogYnVsa0xvYWQuYWRkUm93KFsnQmlsbCcsICdHYXRlcyddKTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSByb3cgQW4gYXJyYXkgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZXMgb2YgZWFjaCBjb2x1bW4gaW4gdGhlIHNhbWUgb3JkZXIgd2hpY2ggdGhleSB3ZXJlIGFkZGVkIHRvIHRoZSBidWxrTG9hZCBvYmplY3QuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQgb2YgYWRkaW5nIHJvd3MgaW5kaXZpZHVhbGx5LCB5b3Ugc2hvdWxkIHBhc3NcbiAgICogICBhbGwgcm93IG9iamVjdHMgd2hlbiBjYWxsaW5nIFtbQ29ubmVjdGlvbi5leGVjQnVsa0xvYWRdXS4gVGhpcyBtZXRob2Qgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuXG4gICAqL1xuICBhZGRSb3cocm93OiB1bmtub3duW10pOiB2b2lkXG5cbiAgYWRkUm93KC4uLmlucHV0OiBbIHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9IF0gfCB1bmtub3duW10pIHtcbiAgICB0aGlzLmZpcnN0Um93V3JpdHRlbiA9IHRydWU7XG5cbiAgICBsZXQgcm93OiBhbnk7XG4gICAgaWYgKGlucHV0Lmxlbmd0aCA+IDEgfHwgIWlucHV0WzBdIHx8IHR5cGVvZiBpbnB1dFswXSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHJvdyA9IGlucHV0O1xuICAgIH0gZWxzZSB7XG4gICAgICByb3cgPSBpbnB1dFswXTtcbiAgICB9XG5cbiAgICAvLyB3cml0ZSBlYWNoIGNvbHVtblxuICAgIGlmIChBcnJheS5pc0FycmF5KHJvdykpIHtcbiAgICAgIHRoaXMucm93VG9QYWNrZXRUcmFuc2Zvcm0ud3JpdGUodGhpcy5jb2x1bW5zLm1hcCgoY29sdW1uLCBpKSA9PiB7XG4gICAgICAgIHJldHVybiBjb2x1bW4udHlwZS52YWxpZGF0ZShyb3dbaV0sIGNvbHVtbi5jb2xsYXRpb24pO1xuICAgICAgfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvd1RvUGFja2V0VHJhbnNmb3JtLndyaXRlKHRoaXMuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4ge1xuICAgICAgICByZXR1cm4gY29sdW1uLnR5cGUudmFsaWRhdGUocm93W2NvbHVtbi5vYmpOYW1lXSwgY29sdW1uLmNvbGxhdGlvbik7XG4gICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBnZXRPcHRpb25zU3FsKCkge1xuICAgIGNvbnN0IGFkZE9wdGlvbnMgPSBbXTtcblxuICAgIGlmICh0aGlzLmJ1bGtPcHRpb25zLmNoZWNrQ29uc3RyYWludHMpIHtcbiAgICAgIGFkZE9wdGlvbnMucHVzaCgnQ0hFQ0tfQ09OU1RSQUlOVFMnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5idWxrT3B0aW9ucy5maXJlVHJpZ2dlcnMpIHtcbiAgICAgIGFkZE9wdGlvbnMucHVzaCgnRklSRV9UUklHR0VSUycpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmJ1bGtPcHRpb25zLmtlZXBOdWxscykge1xuICAgICAgYWRkT3B0aW9ucy5wdXNoKCdLRUVQX05VTExTJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYnVsa09wdGlvbnMubG9ja1RhYmxlKSB7XG4gICAgICBhZGRPcHRpb25zLnB1c2goJ1RBQkxPQ0snKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5idWxrT3B0aW9ucy5vcmRlcikge1xuICAgICAgY29uc3Qgb3JkZXJDb2x1bW5zID0gW107XG5cbiAgICAgIGZvciAoY29uc3QgW2NvbHVtbiwgZGlyZWN0aW9uXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmJ1bGtPcHRpb25zLm9yZGVyKSkge1xuICAgICAgICBvcmRlckNvbHVtbnMucHVzaChgJHtjb2x1bW59ICR7ZGlyZWN0aW9ufWApO1xuICAgICAgfVxuXG4gICAgICBpZiAob3JkZXJDb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICBhZGRPcHRpb25zLnB1c2goYE9SREVSICgke29yZGVyQ29sdW1ucy5qb2luKCcsICcpfSlgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYWRkT3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gYCBXSVRIICgke2FkZE9wdGlvbnMuam9pbignLCcpfSlgO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBnZXRCdWxrSW5zZXJ0U3FsKCkge1xuICAgIGxldCBzcWwgPSAnaW5zZXJ0IGJ1bGsgJyArIHRoaXMudGFibGUgKyAnKCc7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRoaXMuY29sdW1ucy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgY29uc3QgYyA9IHRoaXMuY29sdW1uc1tpXTtcbiAgICAgIGlmIChpICE9PSAwKSB7XG4gICAgICAgIHNxbCArPSAnLCAnO1xuICAgICAgfVxuICAgICAgc3FsICs9ICdbJyArIGMubmFtZSArICddICcgKyAoYy50eXBlLmRlY2xhcmF0aW9uKGMpKTtcbiAgICB9XG4gICAgc3FsICs9ICcpJztcblxuICAgIHNxbCArPSB0aGlzLmdldE9wdGlvbnNTcWwoKTtcbiAgICByZXR1cm4gc3FsO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgc2ltcGx5IGEgaGVscGVyIHV0aWxpdHkgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhIGBDUkVBVEUgVEFCTEUgU1FMYCBzdGF0ZW1lbnQgYmFzZWQgb24gdGhlIGNvbHVtbnMgYWRkZWQgdG8gdGhlIGJ1bGtMb2FkIG9iamVjdC5cbiAgICogVGhpcyBtYXkgYmUgcGFydGljdWxhcmx5IGhhbmR5IHdoZW4geW91IHdhbnQgdG8gaW5zZXJ0IGludG8gYSB0ZW1wb3JhcnkgdGFibGUgKGEgdGFibGUgd2hpY2ggc3RhcnRzIHdpdGggYCNgKS5cbiAgICpcbiAgICogYGBganNcbiAgICogdmFyIHNxbCA9IGJ1bGtMb2FkLmdldFRhYmxlQ3JlYXRpb25TcWwoKTtcbiAgICogYGBgXG4gICAqXG4gICAqIEEgc2lkZSBub3RlIG9uIGJ1bGsgaW5zZXJ0aW5nIGludG8gdGVtcG9yYXJ5IHRhYmxlczogaWYgeW91IHdhbnQgdG8gYWNjZXNzIGEgbG9jYWwgdGVtcG9yYXJ5IHRhYmxlIGFmdGVyIGV4ZWN1dGluZyB0aGUgYnVsayBsb2FkLFxuICAgKiB5b3UnbGwgbmVlZCB0byB1c2UgdGhlIHNhbWUgY29ubmVjdGlvbiBhbmQgZXhlY3V0ZSB5b3VyIHJlcXVlc3RzIHVzaW5nIFtbQ29ubmVjdGlvbi5leGVjU3FsQmF0Y2hdXSBpbnN0ZWFkIG9mIFtbQ29ubmVjdGlvbi5leGVjU3FsXV1cbiAgICovXG4gIGdldFRhYmxlQ3JlYXRpb25TcWwoKSB7XG4gICAgbGV0IHNxbCA9ICdDUkVBVEUgVEFCTEUgJyArIHRoaXMudGFibGUgKyAnKFxcbic7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRoaXMuY29sdW1ucy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgY29uc3QgYyA9IHRoaXMuY29sdW1uc1tpXTtcbiAgICAgIGlmIChpICE9PSAwKSB7XG4gICAgICAgIHNxbCArPSAnLFxcbic7XG4gICAgICB9XG4gICAgICBzcWwgKz0gJ1snICsgYy5uYW1lICsgJ10gJyArIChjLnR5cGUuZGVjbGFyYXRpb24oYykpO1xuICAgICAgaWYgKGMubnVsbGFibGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzcWwgKz0gJyAnICsgKGMubnVsbGFibGUgPyAnTlVMTCcgOiAnTk9UIE5VTEwnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgc3FsICs9ICdcXG4pJztcbiAgICByZXR1cm4gc3FsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBnZXRDb2xNZXRhRGF0YSgpIHtcbiAgICBjb25zdCB0QnVmID0gbmV3IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIoMTAwLCBudWxsLCB0cnVlKTtcbiAgICAvLyBUb2tlblR5cGVcbiAgICB0QnVmLndyaXRlVUludDgoVE9LRU5fVFlQRS5DT0xNRVRBREFUQSk7XG4gICAgLy8gQ291bnRcbiAgICB0QnVmLndyaXRlVUludDE2TEUodGhpcy5jb2x1bW5zLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBqID0gMCwgbGVuID0gdGhpcy5jb2x1bW5zLmxlbmd0aDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICBjb25zdCBjID0gdGhpcy5jb2x1bW5zW2pdO1xuICAgICAgLy8gVXNlclR5cGVcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudGRzVmVyc2lvbiA8ICc3XzInKSB7XG4gICAgICAgIHRCdWYud3JpdGVVSW50MTZMRSgwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRCdWYud3JpdGVVSW50MzJMRSgwKTtcbiAgICAgIH1cblxuICAgICAgLy8gRmxhZ3NcbiAgICAgIGxldCBmbGFncyA9IEZMQUdTLnVwZGF0ZWFibGVSZWFkV3JpdGU7XG4gICAgICBpZiAoYy5udWxsYWJsZSkge1xuICAgICAgICBmbGFncyB8PSBGTEFHUy5udWxsYWJsZTtcbiAgICAgIH0gZWxzZSBpZiAoYy5udWxsYWJsZSA9PT0gdW5kZWZpbmVkICYmIHRoaXMub3B0aW9ucy50ZHNWZXJzaW9uID49ICc3XzInKSB7XG4gICAgICAgIGZsYWdzIHw9IEZMQUdTLm51bGxhYmxlVW5rbm93bjtcbiAgICAgIH1cbiAgICAgIHRCdWYud3JpdGVVSW50MTZMRShmbGFncyk7XG5cbiAgICAgIC8vIFRZUEVfSU5GT1xuICAgICAgdEJ1Zi53cml0ZUJ1ZmZlcihjLnR5cGUuZ2VuZXJhdGVUeXBlSW5mbyhjLCB0aGlzLm9wdGlvbnMpKTtcblxuICAgICAgLy8gVGFibGVOYW1lXG4gICAgICBpZiAoYy50eXBlLmhhc1RhYmxlTmFtZSkge1xuICAgICAgICB0QnVmLndyaXRlVXNWYXJjaGFyKHRoaXMudGFibGUsICd1Y3MyJyk7XG4gICAgICB9XG5cbiAgICAgIC8vIENvbE5hbWVcbiAgICAgIHRCdWYud3JpdGVCVmFyY2hhcihjLm5hbWUsICd1Y3MyJyk7XG4gICAgfVxuICAgIHJldHVybiB0QnVmLmRhdGE7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhIHRpbWVvdXQgZm9yIHRoaXMgYnVsayBsb2FkLlxuICAgKlxuICAgKiBgYGBqc1xuICAgKiBidWxrTG9hZC5zZXRUaW1lb3V0KHRpbWVvdXQpO1xuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIHRpbWVvdXQgVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYmVmb3JlIHRoZSBidWxrIGxvYWQgaXMgY29uc2lkZXJlZCBmYWlsZWQsIG9yIDAgZm9yIG5vIHRpbWVvdXQuXG4gICAqICAgV2hlbiBubyB0aW1lb3V0IGlzIHNldCBmb3IgdGhlIGJ1bGsgbG9hZCwgdGhlIFtbQ29ubmVjdGlvbk9wdGlvbnMucmVxdWVzdFRpbWVvdXRdXSBvZiB0aGUgQ29ubmVjdGlvbiBpcyB1c2VkLlxuICAgKi9cbiAgc2V0VGltZW91dCh0aW1lb3V0PzogbnVtYmVyKSB7XG4gICAgdGhpcy50aW1lb3V0ID0gdGltZW91dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY3JlYXRlRG9uZVRva2VuKCkge1xuICAgIC8vIEl0IG1pZ2h0IGJlIG5pY2UgdG8gbWFrZSBEb25lVG9rZW4gYSBjbGFzcyBpZiBhbnl0aGluZyBuZWVkcyB0byBjcmVhdGUgdGhlbSwgYnV0IGZvciBub3csIGp1c3QgZG8gaXQgaGVyZVxuICAgIGNvbnN0IHRCdWYgPSBuZXcgV3JpdGFibGVUcmFja2luZ0J1ZmZlcih0aGlzLm9wdGlvbnMudGRzVmVyc2lvbiA8ICc3XzInID8gOSA6IDEzKTtcbiAgICB0QnVmLndyaXRlVUludDgoVE9LRU5fVFlQRS5ET05FKTtcbiAgICBjb25zdCBzdGF0dXMgPSBET05FX1NUQVRVUy5GSU5BTDtcbiAgICB0QnVmLndyaXRlVUludDE2TEUoc3RhdHVzKTtcbiAgICB0QnVmLndyaXRlVUludDE2TEUoMCk7IC8vIEN1ckNtZCAoVERTIGlnbm9yZXMgdGhpcylcbiAgICB0QnVmLndyaXRlVUludDMyTEUoMCk7IC8vIHJvdyBjb3VudCAtIGRvZXNuJ3QgcmVhbGx5IG1hdHRlclxuICAgIGlmICh0aGlzLm9wdGlvbnMudGRzVmVyc2lvbiA+PSAnN18yJykge1xuICAgICAgdEJ1Zi53cml0ZVVJbnQzMkxFKDApOyAvLyByb3cgY291bnQgaXMgNjQgYml0cyBpbiA+PSBURFMgNy4yXG4gICAgfVxuICAgIHJldHVybiB0QnVmLmRhdGE7XG4gIH1cblxuICAvKipcbiAgICogU3dpdGNoZXMgdGhlIGBCdWxrTG9hZGAgb2JqZWN0IGludG8gc3RyZWFtaW5nIG1vZGUgYW5kIHJldHVybnMgYVxuICAgKiBbd3JpdGFibGUgc3RyZWFtXShodHRwczovL25vZGVqcy5vcmcvZGlzdC9sYXRlc3QtdjEwLngvZG9jcy9hcGkvc3RyZWFtLmh0bWwjc3RyZWFtX3dyaXRhYmxlX3N0cmVhbXMpXG4gICAqIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VuZCBhIGxhcmdlIGFtb3VudCBvZiByb3dzIHRvIHRoZSBzZXJ2ZXIuXG4gICAqXG4gICAqIGBgYGpzXG4gICAqIGNvbnN0IGJ1bGtMb2FkID0gY29ubmVjdGlvbi5uZXdCdWxrTG9hZCguLi4pO1xuICAgKiBidWxrTG9hZC5hZGRDb2x1bW4oLi4uKTtcbiAgICpcbiAgICogY29uc3Qgcm93U3RyZWFtID0gYnVsa0xvYWQuZ2V0Um93U3RyZWFtKCk7XG4gICAqXG4gICAqIGNvbm5lY3Rpb24uZXhlY0J1bGtMb2FkKGJ1bGtMb2FkKTtcbiAgICogYGBgXG4gICAqXG4gICAqIEluIHN0cmVhbWluZyBtb2RlLCBbW2FkZFJvd11dIGNhbm5vdCBiZSB1c2VkLiBJbnN0ZWFkIGFsbCBkYXRhIHJvd3MgbXVzdCBiZSB3cml0dGVuIHRvIHRoZSByZXR1cm5lZCBzdHJlYW0gb2JqZWN0LlxuICAgKiBUaGUgc3RyZWFtIGltcGxlbWVudGF0aW9uIHVzZXMgZGF0YSBmbG93IGNvbnRyb2wgdG8gcHJldmVudCBtZW1vcnkgb3ZlcmxvYWQuIFtgc3RyZWFtLndyaXRlKClgXShodHRwczovL25vZGVqcy5vcmcvZGlzdC9sYXRlc3QtdjEwLngvZG9jcy9hcGkvc3RyZWFtLmh0bWwjc3RyZWFtX3dyaXRhYmxlX3dyaXRlX2NodW5rX2VuY29kaW5nX2NhbGxiYWNrKVxuICAgKiByZXR1cm5zIGBmYWxzZWAgdG8gaW5kaWNhdGUgdGhhdCBkYXRhIHRyYW5zZmVyIHNob3VsZCBiZSBwYXVzZWQuXG4gICAqXG4gICAqIEFmdGVyIHRoYXQsIHRoZSBzdHJlYW0gZW1pdHMgYSBbJ2RyYWluJyBldmVudF0oaHR0cHM6Ly9ub2RlanMub3JnL2Rpc3QvbGF0ZXN0LXYxMC54L2RvY3MvYXBpL3N0cmVhbS5odG1sI3N0cmVhbV9ldmVudF9kcmFpbilcbiAgICogd2hlbiBpdCBpcyByZWFkeSB0byByZXN1bWUgZGF0YSB0cmFuc2Zlci5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkIG9mIHdyaXRpbmcgcm93cyB0byB0aGUgc3RyZWFtIHJldHVybmVkIGJ5IHRoaXMgbWV0aG9kLFxuICAgKiAgIHlvdSBjYW4gcGFzcyBhbnkgb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgYEl0ZXJhYmxlYCBvciBgQXN5bmNJdGVyYWJsZWAgaW50ZXJmYWNlIChlLmcuIGEgYFJlYWRhYmxlYFxuICAgKiAgIHN0cmVhbSBvciBhbiBgQXN5bmNHZW5lcmF0b3JgKSB3aGVuIGNhbGxpbmcgW1tDb25uZWN0aW9uLmV4ZWNCdWxrTG9hZF1dLiBUaGlzIG1ldGhvZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS5cbiAgICovXG4gIGdldFJvd1N0cmVhbSgpIHtcbiAgICBpZiAodGhpcy5maXJzdFJvd1dyaXR0ZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQnVsa0xvYWQgY2Fubm90IGJlIHN3aXRjaGVkIHRvIHN0cmVhbWluZyBtb2RlIGFmdGVyIGZpcnN0IHJvdyBoYXMgYmVlbiB3cml0dGVuIHVzaW5nIGFkZFJvdygpLicpO1xuICAgIH1cbiAgICBpZiAodGhpcy5leGVjdXRpb25TdGFydGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0J1bGtMb2FkIGNhbm5vdCBiZSBzd2l0Y2hlZCB0byBzdHJlYW1pbmcgbW9kZSBhZnRlciBleGVjdXRpb24gaGFzIHN0YXJ0ZWQuJyk7XG4gICAgfVxuICAgIHRoaXMuc3RyZWFtaW5nTW9kZSA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5yb3dUb1BhY2tldFRyYW5zZm9ybTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY2FuY2VsKCkge1xuICAgIGlmICh0aGlzLmNhbmNlbGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jYW5jZWxlZCA9IHRydWU7XG4gICAgdGhpcy5lbWl0KCdjYW5jZWwnKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBCdWxrTG9hZDtcbm1vZHVsZS5leHBvcnRzID0gQnVsa0xvYWQ7XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9idWxrLWxvYWQudHMiXSwibmFtZXMiOlsiRkxBR1MiLCJudWxsYWJsZSIsImNhc2VTZW4iLCJ1cGRhdGVhYmxlUmVhZFdyaXRlIiwidXBkYXRlYWJsZVVua25vd24iLCJpZGVudGl0eSIsImNvbXB1dGVkIiwiZml4ZWRMZW5DTFJUeXBlIiwic3BhcnNlQ29sdW1uU2V0IiwiaGlkZGVuIiwia2V5IiwibnVsbGFibGVVbmtub3duIiwiRE9ORV9TVEFUVVMiLCJGSU5BTCIsIk1PUkUiLCJFUlJPUiIsIklOWEFDVCIsIkNPVU5UIiwiQVRUTiIsIlNSVkVSUk9SIiwicm93VG9rZW5CdWZmZXIiLCJCdWZmZXIiLCJmcm9tIiwiVE9LRU5fVFlQRSIsIlJPVyIsInRleHRQb2ludGVyQW5kVGltZXN0YW1wQnVmZmVyIiwidGV4dFBvaW50ZXJOdWxsQnVmZmVyIiwiUm93VHJhbnNmb3JtIiwiVHJhbnNmb3JtIiwiY29uc3RydWN0b3IiLCJidWxrTG9hZCIsIndyaXRhYmxlT2JqZWN0TW9kZSIsImNvbHVtbk1ldGFkYXRhV3JpdHRlbiIsIm1haW5PcHRpb25zIiwiY29sdW1ucyIsIm9wdGlvbnMiLCJfdHJhbnNmb3JtIiwicm93IiwiX2VuY29kaW5nIiwiY2FsbGJhY2siLCJwdXNoIiwiZ2V0Q29sTWV0YURhdGEiLCJpIiwibGVuZ3RoIiwiYyIsInZhbHVlIiwiQXJyYXkiLCJpc0FycmF5Iiwib2JqTmFtZSIsImZpcnN0Um93V3JpdHRlbiIsInR5cGUiLCJ2YWxpZGF0ZSIsImNvbGxhdGlvbiIsImVycm9yIiwicGFyYW1ldGVyIiwic2NhbGUiLCJwcmVjaXNpb24iLCJuYW1lIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJjaHVuayIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsInByb2Nlc3MiLCJuZXh0VGljayIsIl9mbHVzaCIsImNyZWF0ZURvbmVUb2tlbiIsIkJ1bGtMb2FkIiwiRXZlbnRFbWl0dGVyIiwidGFibGUiLCJjb25uZWN0aW9uT3B0aW9ucyIsImNoZWNrQ29uc3RyYWludHMiLCJmaXJlVHJpZ2dlcnMiLCJrZWVwTnVsbHMiLCJsb2NrVGFibGUiLCJvcmRlciIsIlR5cGVFcnJvciIsImNvbHVtbiIsImRpcmVjdGlvbiIsIk9iamVjdCIsImVudHJpZXMiLCJjYW5jZWxlZCIsImV4ZWN1dGlvblN0YXJ0ZWQiLCJzdHJlYW1pbmdNb2RlIiwidGltZW91dCIsImNvbHVtbnNCeU5hbWUiLCJyb3dUb1BhY2tldFRyYW5zZm9ybSIsImJ1bGtPcHRpb25zIiwiY29ubmVjdGlvbiIsInJvd3MiLCJyc3QiLCJyb3dDb3VudCIsInVuZGVmaW5lZCIsImFkZENvbHVtbiIsIm91dHB1dCIsIkVycm9yIiwiaWQiLCJyZXNvbHZlTGVuZ3RoIiwicmVzb2x2ZVByZWNpc2lvbiIsInJlc29sdmVTY2FsZSIsImFkZFJvdyIsImlucHV0Iiwid3JpdGUiLCJtYXAiLCJnZXRPcHRpb25zU3FsIiwiYWRkT3B0aW9ucyIsIm9yZGVyQ29sdW1ucyIsImpvaW4iLCJnZXRCdWxrSW5zZXJ0U3FsIiwic3FsIiwibGVuIiwiZGVjbGFyYXRpb24iLCJnZXRUYWJsZUNyZWF0aW9uU3FsIiwidEJ1ZiIsIldyaXRhYmxlVHJhY2tpbmdCdWZmZXIiLCJ3cml0ZVVJbnQ4IiwiQ09MTUVUQURBVEEiLCJ3cml0ZVVJbnQxNkxFIiwiaiIsInRkc1ZlcnNpb24iLCJ3cml0ZVVJbnQzMkxFIiwiZmxhZ3MiLCJ3cml0ZUJ1ZmZlciIsImdlbmVyYXRlVHlwZUluZm8iLCJoYXNUYWJsZU5hbWUiLCJ3cml0ZVVzVmFyY2hhciIsIndyaXRlQlZhcmNoYXIiLCJkYXRhIiwic2V0VGltZW91dCIsIkRPTkUiLCJzdGF0dXMiLCJnZXRSb3dTdHJlYW0iLCJjYW5jZWwiLCJlbWl0IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUdBOztBQUNBOzs7O0FBS0E7QUFDQTtBQUNBO0FBQ0EsTUFBTUEsS0FBSyxHQUFHO0FBQ1pDLEVBQUFBLFFBQVEsRUFBRSxL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LFdBQU9QLElBQUksQ0FBQ2MsSUFBWjtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0VJLEVBQUFBLFlBQVksR0FBRztBQUNiLFFBQUksS0FBS2hGLGVBQVQsRUFBMEI7QUFDeEIsWUFBTSxJQUFJNEMsS0FBSixDQUFVLGdHQUFWLENBQU47QUFDRDs7QUFDRCxRQUFJLEtBQUtiLGdCQUFULEVBQTJCO0FBQ3pCLFlBQU0sSUFBSWEsS0FBSixDQUFVLDRFQUFWLENBQU47QUFDRDs7QUFFRCxTQUFLWixhQUFMLEdBQXFCLElBQXJCO0FBRUEsV0FBTyxLQUFLRyxvQkFBWjtBQUNEO0FBRUQ7QUFDRjtBQUNBOzs7QUFDRThDLEVBQUFBLE1BQU0sR0FBRztBQUNQLFFBQUksS0FBS25ELFFBQVQsRUFBbUI7QUFDakI7QUFDRDs7QUFFRCxTQUFLQSxRQUFMLEdBQWdCLElBQWhCO0FBQ0EsU0FBS29ELElBQUwsQ0FBVSxRQUFWO0FBQ0Q7O0FBbGRpQzs7ZUFxZHJCbEUsUTs7QUFDZm1FLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQnBFLFFBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcbmltcG9ydCBXcml0YWJsZVRyYWNraW5nQnVmZmVyIGZyb20gJy4vdHJhY2tpbmctYnVmZmVyL3dyaXRhYmxlLXRyYWNraW5nLWJ1ZmZlcic7XG5pbXBvcnQgQ29ubmVjdGlvbiwgeyBJbnRlcm5hbENvbm5lY3Rpb25PcHRpb25zIH0gZnJvbSAnLi9jb25uZWN0aW9uJztcblxuaW1wb3J0IHsgVHJhbnNmb3JtIH0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCB7IFRZUEUgYXMgVE9LRU5fVFlQRSB9IGZyb20gJy4vdG9rZW4vdG9rZW4nO1xuXG5pbXBvcnQgeyBEYXRhVHlwZSwgUGFyYW1ldGVyIH0gZnJvbSAnLi9kYXRhLXR5cGUnO1xuaW1wb3J0IHsgQ29sbGF0aW9uIH0gZnJvbSAnLi9jb2xsYXRpb24nO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmNvbnN0IEZMQUdTID0ge1xuICBudWxsYWJsZTogMSA8PCAwLFxuICBjYXNlU2VuOiAxIDw8IDEsXG4gIHVwZGF0ZWFibGVSZWFkV3JpdGU6IDEgPDwgMixcbiAgdXBkYXRlYWJsZVVua25vd246IDEgPDwgMyxcbiAgaWRlbnRpdHk6IDEgPDwgNCxcbiAgY29tcHV0ZWQ6IDEgPDwgNSwgLy8gaW50cm9kdWNlZCBpbiBURFMgNy4yXG4gIGZpeGVkTGVuQ0xSVHlwZTogMSA8PCA4LCAvLyBpbnRyb2R1Y2VkIGluIFREUyA3LjJcbiAgc3BhcnNlQ29sdW1uU2V0OiAxIDw8IDEwLCAvLyBpbnRyb2R1Y2VkIGluIFREUyA3LjMuQlxuICBoaWRkZW46IDEgPDwgMTMsIC8vIGludHJvZHVjZWQgaW4gVERTIDcuMlxuICBrZXk6IDEgPDwgMTQsIC8vIGludHJvZHVjZWQgaW4gVERTIDcuMlxuICBudWxsYWJsZVVua25vd246IDEgPDwgMTUgLy8gaW50cm9kdWNlZCBpbiBURFMgNy4yXG59O1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmNvbnN0IERPTkVfU1RBVFVTID0ge1xuICBGSU5BTDogMHgwMCxcbiAgTU9SRTogMHgxLFxuICBFUlJPUjogMHgyLFxuICBJTlhBQ1Q6IDB4NCxcbiAgQ09VTlQ6IDB4MTAsXG4gIEFUVE46IDB4MjAsXG4gIFNSVkVSUk9SOiAweDEwMFxufTtcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5pbnRlcmZhY2UgSW50ZXJuYWxPcHRpb25zIHtcbiAgY2hlY2tDb25zdHJhaW50czogYm9vbGVhbjtcbiAgZmlyZVRyaWdnZXJzOiBib29sZWFuO1xuICBrZWVwTnVsbHM6IGJvb2xlYW47XG4gIGxvY2tUYWJsZTogYm9vbGVhbjtcbiAgb3JkZXI6IHsgW2NvbHVtbk5hbWU6IHN0cmluZ106ICdBU0MnIHwgJ0RFU0MnIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBIb25vcnMgY29uc3RyYWludHMgZHVyaW5nIGJ1bGsgbG9hZCwgdXNpbmcgVC1TUUxcbiAgICogW0NIRUNLX0NPTlNUUkFJTlRTXShodHRwczovL3RlY2huZXQubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zMTg2MjQ3KHY9c3FsLjEwNSkuYXNweCkuXG4gICAqIChkZWZhdWx0OiBgZmFsc2VgKVxuICAgKi9cbiAgY2hlY2tDb25zdHJhaW50cz86IEludGVybmFsT3B0aW9uc1snY2hlY2tDb25zdHJhaW50cyddIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBIb25vcnMgaW5zZXJ0IHRyaWdnZXJzIGR1cmluZyBidWxrIGxvYWQsIHVzaW5nIHRoZSBULVNRTCBbRklSRV9UUklHR0VSU10oaHR0cHM6Ly90ZWNobmV0Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczE4NzY0MCh2PXNxbC4xMDUpLmFzcHgpLiAoZGVmYXVsdDogYGZhbHNlYClcbiAgICovXG4gIGZpcmVUcmlnZ2Vycz86IEludGVybmFsT3B0aW9uc1snZmlyZVRyaWdnZXJzJ10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEhvbm9ycyBudWxsIHZhbHVlIHBhc3NlZCwgaWdub3JlcyB0aGUgZGVmYXVsdCB2YWx1ZXMgc2V0IG9uIHRhYmxlLCB1c2luZyBULVNRTCBbS0VFUF9OVUxMU10oaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczE4Nzg4Nyh2PXNxbC4xMjApLmFzcHgpLiAoZGVmYXVsdDogYGZhbHNlYClcbiAgICovXG4gIGtlZXBOdWxscz86IEludGVybmFsT3B0aW9uc1sna2VlcE51bGxzJ10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFBsYWNlcyBhIGJ1bGsgdXBkYXRlKEJVKSBsb2NrIG9uIHRhYmxlIHdoaWxlIHBlcmZvcm1pbmcgYnVsayBsb2FkLCB1c2luZyBULVNRTCBbVEFCTE9DS10oaHR0cHM6Ly90ZWNobmV0Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczE4MDg3Nih2PXNxbC4xMDUpLmFzcHgpLiAoZGVmYXVsdDogYGZhbHNlYClcbiAgICovXG4gIGxvY2tUYWJsZT86IEludGVybmFsT3B0aW9uc1snbG9ja1RhYmxlJ10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgb3JkZXJpbmcgb2YgdGhlIGRhdGEgdG8gcG9zc2libHkgaW5jcmVhc2UgYnVsayBpbnNlcnQgcGVyZm9ybWFuY2UsIHVzaW5nIFQtU1FMIFtPUkRFUl0oaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvcHJldmlvdXMtdmVyc2lvbnMvc3FsL3NxbC1zZXJ2ZXItMjAwOC1yMi9tczE3NzQ2OCh2PXNxbC4xMDUpKS4gKGRlZmF1bHQ6IGB7fWApXG4gICAqL1xuICBvcmRlcj86IEludGVybmFsT3B0aW9uc1snb3JkZXInXSB8IHVuZGVmaW5lZDtcbn1cblxuXG5leHBvcnQgdHlwZSBDYWxsYmFjayA9XG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHdoaWNoIHdpbGwgYmUgY2FsbGVkIGFmdGVyIHRoZSBbW0J1bGtMb2FkXV0gZmluaXNoZXMgZXhlY3V0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gcm93Q291bnQgdGhlIG51bWJlciBvZiByb3dzIGluc2VydGVkXG4gICAqL1xuICAoZXJyOiBFcnJvciB8IHVuZGVmaW5lZCB8IG51bGwsIHJvd0NvdW50PzogbnVtYmVyKSA9PiB2b2lkO1xuXG5pbnRlcmZhY2UgQ29sdW1uIGV4dGVuZHMgUGFyYW1ldGVyIHtcbiAgb2JqTmFtZTogc3RyaW5nO1xuICBjb2xsYXRpb246IENvbGxhdGlvbiB8IHVuZGVmaW5lZDtcbn1cblxuaW50ZXJmYWNlIENvbHVtbk9wdGlvbnMge1xuICBvdXRwdXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBGb3IgVmFyQ2hhciwgTlZhckNoYXIsIFZhckJpbmFyeS4gVXNlIGxlbmd0aCBhcyBgSW5maW5pdHlgIGZvciBWYXJDaGFyKG1heCksIE5WYXJDaGFyKG1heCkgYW5kIFZhckJpbmFyeShtYXgpLlxuICAgKi9cbiAgbGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBGb3IgTnVtZXJpYywgRGVjaW1hbC5cbiAgICovXG4gIHByZWNpc2lvbj86IG51bWJlcjtcblxuICAvKipcbiAgICogRm9yIE51bWVyaWMsIERlY2ltYWwsIFRpbWUsIERhdGVUaW1lMiwgRGF0ZVRpbWVPZmZzZXQuXG4gICAqL1xuICBzY2FsZT86IG51bWJlcjtcblxuICAvKipcbiAgICogSWYgdGhlIG5hbWUgb2YgdGhlIGNvbHVtbiBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgZm91bmQgb24gYHJvd09iamAgYXJndW1lbnRzIHBhc3NlZCB0byBbW2FkZFJvd11dLCB0aGVuIHlvdSBjYW4gdXNlIHRoaXMgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIHByb3BlcnR5IG5hbWUuXG4gICAqL1xuICBvYmpOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgY29sdW1uIGFjY2VwdHMgTlVMTCB2YWx1ZXMuXG4gICAqL1xuICBudWxsYWJsZT86IGJvb2xlYW47XG59XG5cbmNvbnN0IHJvd1Rva2VuQnVmZmVyID0gQnVmZmVyLmZyb20oWyBUT0tFTl9UWVBFLlJPVyBdKTtcbmNvbnN0IHRleHRQb2ludGVyQW5kVGltZXN0YW1wQnVmZmVyID0gQnVmZmVyLmZyb20oW1xuICAvLyBUZXh0UG9pbnRlciBsZW5ndGhcbiAgMHgxMCxcblxuICAvLyBUZXh0UG9pbnRlclxuICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLFxuXG4gIC8vIFRpbWVzdGFtcFxuICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwXG5dKTtcbmNvbnN0IHRleHRQb2ludGVyTnVsbEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKFsweDAwXSk7XG5cbi8vIEEgdHJhbnNmb3JtIHRoYXQgY29udmVydHMgcm93cyB0byBwYWNrZXRzLlxuY2xhc3MgUm93VHJhbnNmb3JtIGV4dGVuZHMgVHJhbnNmb3JtIHtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb2x1bW5NZXRhZGF0YVdyaXR0ZW46IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgYnVsa0xvYWQ6IEJ1bGtMb2FkO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIG1haW5PcHRpb25zOiBCdWxrTG9hZFsnb3B0aW9ucyddO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNvbHVtbnM6IEJ1bGtMb2FkWydjb2x1bW5zJ107XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihidWxrTG9hZDogQnVsa0xvYWQpIHtcbiAgICBzdXBlcih7IHdyaXRhYmxlT2JqZWN0TW9kZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMuYnVsa0xvYWQgPSBidWxrTG9hZDtcbiAgICB0aGlzLm1haW5PcHRpb25zID0gYnVsa0xvYWQub3B0aW9ucztcbiAgICB0aGlzLmNvbHVtbnMgPSBidWxrTG9hZC5jb2x1bW5zO1xuXG4gICAgdGhpcy5jb2x1bW5NZXRhZGF0YVdyaXR0ZW4gPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3RyYW5zZm9ybShyb3c6IEFycmF5PHVua25vd24+IHwgeyBbY29sTmFtZTogc3RyaW5nXTogdW5rbm93biB9LCBfZW5jb2Rpbmc6IHN0cmluZywgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKSB7XG4gICAgaWYgKCF0aGlzLmNvbHVtbk1ldGFkYXRhV3JpdHRlbikge1xuICAgICAgdGhpcy5wdXNoKHRoaXMuYnVsa0xvYWQuZ2V0Q29sTWV0YURhdGEoKSk7XG4gICAgICB0aGlzLmNvbHVtbk1ldGFkYXRhV3JpdHRlbiA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5wdXNoKHJvd1Rva2VuQnVmZmVyKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjID0gdGhpcy5jb2x1bW5zW2ldO1xuICAgICAgbGV0IHZhbHVlID0gQXJyYXkuaXNBcnJheShyb3cpID8gcm93W2ldIDogcm93W2Mub2JqTmFtZV07XG5cbiAgICAgIGlmICghdGhpcy5idWxrTG9hZC5maXJzdFJvd1dyaXR0ZW4pIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB2YWx1ZSA9IGMudHlwZS52YWxpZGF0ZSh2YWx1ZSwgYy5jb2xsYXRpb24pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBwYXJhbWV0ZXIgPSB7XG4gICAgICAgIGxlbmd0aDogYy5sZW5ndGgsXG4gICAgICAgIHNjYWxlOiBjLnNjYWxlLFxuICAgICAgICBwcmVjaXNpb246IGMucHJlY2lzaW9uLFxuICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgIH07XG5cbiAgICAgIGlmIChjLnR5cGUubmFtZSA9PT0gJ1RleHQnIHx8IGMudHlwZS5uYW1lID09PSAnSW1hZ2UnIHx8IGMudHlwZS5uYW1lID09PSAnTlRleHQnKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5wdXNoKHRleHRQb2ludGVyTnVsbEJ1ZmZlcik7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnB1c2godGV4dFBvaW50ZXJBbmRUaW1lc3RhbXBCdWZmZXIpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnB1c2goYy50eXBlLmdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgdGhpcy5tYWluT3B0aW9ucykpO1xuICAgICAgZm9yIChjb25zdCBjaHVuayBvZiBjLnR5cGUuZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKHBhcmFtZXRlciwgdGhpcy5tYWluT3B0aW9ucykpIHtcbiAgICAgICAgdGhpcy5wdXNoKGNodW5rKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcm9jZXNzLm5leHRUaWNrKGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2ZsdXNoKGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5wdXNoKHRoaXMuYnVsa0xvYWQuY3JlYXRlRG9uZVRva2VuKCkpO1xuXG4gICAgcHJvY2Vzcy5uZXh0VGljayhjYWxsYmFjayk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIEJ1bGtMb2FkIGluc3RhbmNlIGlzIHVzZWQgdG8gcGVyZm9ybSBhIGJ1bGsgaW5zZXJ0LlxuICpcbiAqIFVzZSBbW0Nvbm5lY3Rpb24ubmV3QnVsa0xvYWRdXSB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2UsIGFuZCBbW0Nvbm5lY3Rpb24uZXhlY0J1bGtMb2FkXV0gdG8gZXhlY3V0ZSBpdC5cbiAqXG4gKiBFeGFtcGxlIG9mIEJ1bGtMb2FkIFVzYWdlczpcbiAqXG4gKiBgYGBqc1xuICogLy8gb3B0aW9uYWwgQnVsa0xvYWQgb3B0aW9uc1xuICogY29uc3Qgb3B0aW9ucyA9IHsga2VlcE51bGxzOiB0cnVlIH07XG4gKlxuICogLy8gaW5zdGFudGlhdGUgLSBwcm92aWRlIHRoZSB0YWJsZSB3aGVyZSB5b3UnbGwgYmUgaW5zZXJ0aW5nIHRvLCBvcHRpb25zIGFuZCBhIGNhbGxiYWNrXG4gKiBjb25zdCBidWxrTG9hZCA9IGNvbm5lY3Rpb24ubmV3QnVsa0xvYWQoJ015VGFibGUnLCBvcHRpb25zLCAoZXJyb3IsIHJvd0NvdW50KSA9PiB7XG4gKiAgIGNvbnNvbGUubG9nKCdpbnNlcnRlZCAlZCByb3dzJywgcm93Q291bnQpO1xuICogfSk7XG4gKlxuICogLy8gc2V0dXAgeW91ciBjb2x1bW5zIC0gYWx3YXlzIGluZGljYXRlIHdoZXRoZXIgdGhlIGNvbHVtbiBpcyBudWxsYWJsZVxuICogYnVsa0xvYWQuYWRkQ29sdW1uKCdteUludCcsIFRZUEVTLkludCwgeyBudWxsYWJsZTogZmFsc2UgfSk7XG4gKiBidWxrTG9hZC5hZGRDb2x1bW4oJ215U3RyaW5nJywgVFlQRVMuTlZhckNoYXIsIHsgbGVuZ3RoOiA1MCwgbnVsbGFibGU6IHRydWUgfSk7XG4gKlxuICogLy8gZXhlY3V0ZVxuICogY29ubmVjdGlvbi5leGVjQnVsa0xvYWQoYnVsa0xvYWQsIFtcbiAqICAgeyBteUludDogNywgbXlTdHJpbmc6ICdoZWxsbycgfSxcbiAqICAgeyBteUludDogMjMsIG15U3RyaW5nOiAnd29ybGQnIH1cbiAqIF0pO1xuICogYGBgXG4gKi9cbmNsYXNzIEJ1bGtMb2FkIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlcnJvcjogRXJyb3IgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY2FuY2VsZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZXhlY3V0aW9uU3RhcnRlZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzdHJlYW1pbmdNb2RlOiBib29sZWFuO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHRhYmxlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgdGltZW91dDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgb3B0aW9uczogSW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucztcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjYWxsYmFjazogQ2FsbGJhY2s7XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb2x1bW5zOiBBcnJheTxDb2x1bW4+O1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNvbHVtbnNCeU5hbWU6IHsgW25hbWU6IHN0cmluZ106IENvbHVtbiB9O1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZmlyc3RSb3dXcml0dGVuOiBib29sZWFuO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHJvd1RvUGFja2V0VHJhbnNmb3JtOiBSb3dUcmFuc2Zvcm07XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBidWxrT3B0aW9uczogSW50ZXJuYWxPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY29ubmVjdGlvbjogQ29ubmVjdGlvbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICByb3dzOiBBcnJheTxhbnk+IHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHJzdDogQXJyYXk8YW55PiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICByb3dDb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIGNvbGxhdGlvbjogQ29sbGF0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY29uc3RydWN0b3IodGFibGU6IHN0cmluZywgY29sbGF0aW9uOiBDb2xsYXRpb24gfCB1bmRlZmluZWQsIGNvbm5lY3Rpb25PcHRpb25zOiBJbnRlcm5hbENvbm5lY3Rpb25PcHRpb25zLCB7XG4gICAgY2hlY2tDb25zdHJhaW50cyA9IGZhbHNlLFxuICAgIGZpcmVUcmlnZ2VycyA9IGZhbHNlLFxuICAgIGtlZXBOdWxscyA9IGZhbHNlLFxuICAgIGxvY2tUYWJsZSA9IGZhbHNlLFxuICAgIG9yZGVyID0ge30sXG4gIH06IE9wdGlvbnMsIGNhbGxiYWNrOiBDYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgY2hlY2tDb25zdHJhaW50cyAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJvcHRpb25zLmNoZWNrQ29uc3RyYWludHNcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbi4nKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGZpcmVUcmlnZ2VycyAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJvcHRpb25zLmZpcmVUcmlnZ2Vyc1wiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuLicpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Yga2VlcE51bGxzICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcIm9wdGlvbnMua2VlcE51bGxzXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIGJvb2xlYW4uJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBsb2NrVGFibGUgIT09ICdib29sZWFuJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwib3B0aW9ucy5sb2NrVGFibGVcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbi4nKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9yZGVyICE9PSAnb2JqZWN0JyB8fCBvcmRlciA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwib3B0aW9ucy5vcmRlclwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBvYmplY3QuJyk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbY29sdW1uLCBkaXJlY3Rpb25dIG9mIE9iamVjdC5lbnRyaWVzKG9yZGVyKSkge1xuICAgICAgaWYgKGRpcmVjdGlvbiAhPT0gJ0FTQycgJiYgZGlyZWN0aW9uICE9PSAnREVTQycpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIHZhbHVlIG9mIHRoZSBcIicgKyBjb2x1bW4gKyAnXCIga2V5IGluIHRoZSBcIm9wdGlvbnMub3JkZXJcIiBvYmplY3QgbXVzdCBiZSBlaXRoZXIgXCJBU0NcIiBvciBcIkRFU0NcIi4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5lcnJvciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmNhbmNlbGVkID0gZmFsc2U7XG4gICAgdGhpcy5leGVjdXRpb25TdGFydGVkID0gZmFsc2U7XG5cbiAgICB0aGlzLmNvbGxhdGlvbiA9IGNvbGxhdGlvbjtcblxuICAgIHRoaXMudGFibGUgPSB0YWJsZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBjb25uZWN0aW9uT3B0aW9ucztcbiAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgdGhpcy5jb2x1bW5zID0gW107XG4gICAgdGhpcy5jb2x1bW5zQnlOYW1lID0ge307XG4gICAgdGhpcy5maXJzdFJvd1dyaXR0ZW4gPSBmYWxzZTtcbiAgICB0aGlzLnN0cmVhbWluZ01vZGUgPSBmYWxzZTtcblxuICAgIHRoaXMucm93VG9QYWNrZXRUcmFuc2Zvcm0gPSBuZXcgUm93VHJhbnNmb3JtKHRoaXMpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG5cbiAgICB0aGlzLmJ1bGtPcHRpb25zID0geyBjaGVja0NvbnN0cmFpbnRzLCBmaXJlVHJpZ2dlcnMsIGtlZXBOdWxscywgbG9ja1RhYmxlLCBvcmRlciB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjb2x1bW4gdG8gdGhlIGJ1bGsgbG9hZC5cbiAgICpcbiAgICogVGhlIGNvbHVtbiBkZWZpbml0aW9ucyBzaG91bGQgbWF0Y2ggdGhlIHRhYmxlIHlvdSBhcmUgdHJ5aW5nIHRvIGluc2VydCBpbnRvLlxuICAgKiBBdHRlbXB0aW5nIHRvIGNhbGwgYWRkQ29sdW1uIGFmdGVyIHRoZSBmaXJzdCByb3cgaGFzIGJlZW4gYWRkZWQgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24uXG4gICAqXG4gICAqIGBgYGpzXG4gICAqIGJ1bGtMb2FkLmFkZENvbHVtbignTXlJbnRDb2x1bW4nLCBUWVBFUy5JbnQsIHsgbnVsbGFibGU6IGZhbHNlIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGNvbHVtbi5cbiAgICogQHBhcmFtIHR5cGUgT25lIG9mIHRoZSBzdXBwb3J0ZWQgYGRhdGEgdHlwZXNgLlxuICAgKiBAcGFyYW0gX19uYW1lZFBhcmFtZXRlcnMgQWRkaXRpb25hbCBjb2x1bW4gdHlwZSBpbmZvcm1hdGlvbi4gQXQgYSBtaW5pbXVtLCBgbnVsbGFibGVgIG11c3QgYmUgc2V0IHRvIHRydWUgb3IgZmFsc2UuXG4gICAqIEBwYXJhbSBsZW5ndGggRm9yIFZhckNoYXIsIE5WYXJDaGFyLCBWYXJCaW5hcnkuIFVzZSBsZW5ndGggYXMgYEluZmluaXR5YCBmb3IgVmFyQ2hhcihtYXgpLCBOVmFyQ2hhcihtYXgpIGFuZCBWYXJCaW5hcnkobWF4KS5cbiAgICogQHBhcmFtIG51bGxhYmxlIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjb2x1bW4gYWNjZXB0cyBOVUxMIHZhbHVlcy5cbiAgICogQHBhcmFtIG9iak5hbWUgSWYgdGhlIG5hbWUgb2YgdGhlIGNvbHVtbiBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgZm91bmQgb24gYHJvd09iamAgYXJndW1lbnRzIHBhc3NlZCB0byBbW2FkZFJvd11dIG9yIFtbQ29ubmVjdGlvbi5leGVjQnVsa0xvYWRdXSwgdGhlbiB5b3UgY2FuIHVzZSB0aGlzIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBwcm9wZXJ0eSBuYW1lLlxuICAgKiBAcGFyYW0gcHJlY2lzaW9uIEZvciBOdW1lcmljLCBEZWNpbWFsLlxuICAgKiBAcGFyYW0gc2NhbGUgRm9yIE51bWVyaWMsIERlY2ltYWwsIFRpbWUsIERhdGVUaW1lMiwgRGF0ZVRpbWVPZmZzZXQuXG4gICovXG4gIGFkZENvbHVtbihuYW1lOiBzdHJpbmcsIHR5cGU6IERhdGFUeXBlLCB7IG91dHB1dCA9IGZhbHNlLCBsZW5ndGgsIHByZWNpc2lvbiwgc2NhbGUsIG9iak5hbWUgPSBuYW1lLCBudWxsYWJsZSA9IHRydWUgfTogQ29sdW1uT3B0aW9ucykge1xuICAgIGlmICh0aGlzLmZpcnN0Um93V3JpdHRlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb2x1bW5zIGNhbm5vdCBiZSBhZGRlZCB0byBidWxrIGluc2VydCBhZnRlciB0aGUgZmlyc3Qgcm93IGhhcyBiZWVuIHdyaXR0ZW4uJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmV4ZWN1dGlvblN0YXJ0ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ29sdW1ucyBjYW5ub3QgYmUgYWRkZWQgdG8gYnVsayBpbnNlcnQgYWZ0ZXIgZXhlY3V0aW9uIGhhcyBzdGFydGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbHVtbjogQ29sdW1uID0ge1xuICAgICAgdHlwZTogdHlwZSxcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICB2YWx1ZTogbnVsbCxcbiAgICAgIG91dHB1dDogb3V0cHV0LFxuICAgICAgbGVuZ3RoOiBsZW5ndGgsXG4gICAgICBwcmVjaXNpb246IHByZWNpc2lvbixcbiAgICAgIHNjYWxlOiBzY2FsZSxcbiAgICAgIG9iak5hbWU6IG9iak5hbWUsXG4gICAgICBudWxsYWJsZTogbnVsbGFibGUsXG4gICAgICBjb2xsYXRpb246IHRoaXMuY29sbGF0aW9uXG4gICAgfTtcblxuICAgIGlmICgodHlwZS5pZCAmIDB4MzApID09PSAweDIwKSB7XG4gICAgICBpZiAoY29sdW1uLmxlbmd0aCA9PSBudWxsICYmIHR5cGUucmVzb2x2ZUxlbmd0aCkge1xuICAgICAgICBjb2x1bW4ubGVuZ3RoID0gdHlwZS5yZXNvbHZlTGVuZ3RoKGNvbHVtbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGUucmVzb2x2ZVByZWNpc2lvbiAmJiBjb2x1bW4ucHJlY2lzaW9uID09IG51bGwpIHtcbiAgICAgIGNvbHVtbi5wcmVjaXNpb24gPSB0eXBlLnJlc29sdmVQcmVjaXNpb24oY29sdW1uKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZS5yZXNvbHZlU2NhbGUgJiYgY29sdW1uLnNjYWxlID09IG51bGwpIHtcbiAgICAgIGNvbHVtbi5zY2FsZSA9IHR5cGUucmVzb2x2ZVNjYWxlKGNvbHVtbik7XG4gICAgfVxuXG4gICAgdGhpcy5jb2x1bW5zLnB1c2goY29sdW1uKTtcblxuICAgIHRoaXMuY29sdW1uc0J5TmFtZVtuYW1lXSA9IGNvbHVtbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcm93IHRvIHRoZSBidWxrIGluc2VydC5cbiAgICpcbiAgICogYGBganNcbiAgICogYnVsa0xvYWQuYWRkUm93KHsgZmlyc3RfbmFtZTogJ0JpbGwnLCBsYXN0X25hbWU6ICdHYXRlcycgfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0gcm93IEFuIG9iamVjdCBvZiBrZXkvdmFsdWUgcGFpcnMgcmVwcmVzZW50aW5nIGNvbHVtbiBuYW1lIChvciBvYmpOYW1lKSBhbmQgdmFsdWUuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQgb2YgYWRkaW5nIHJvd3MgaW5kaXZpZHVhbGx5LCB5b3Ugc2hvdWxkIHBhc3NcbiAgICogICBhbGwgcm93IG9iamVjdHMgd2hlbiBjYWxsaW5nIFtbQ29ubmVjdGlvbi5leGVjQnVsa0xvYWRdXS4gVGhpcyBtZXRob2Qgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuXG4gICAqL1xuICBhZGRSb3cocm93OiB7IFtjb2x1bW5OYW1lOiBzdHJpbmddOiB1bmtub3duIH0pOiB2b2lkXG5cbiAgLyoqXG4gICAqIEFkZHMgYSByb3cgdG8gdGhlIGJ1bGsgaW5zZXJ0LlxuICAgKlxuICAgKiBgYGBqc1xuICAgKiBidWxrTG9hZC5hZGRSb3coJ0JpbGwnLCAnR2F0ZXMnKTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSByb3cgSWYgdGhlcmUgYXJlIGF0IGxlYXN0IHR3byBjb2x1bW5zLCB2YWx1ZXMgY2FuIGJlIHBhc3NlZCBhcyBtdWx0aXBsZSBhcmd1bWVudHMgaW5zdGVhZCBvZiBhbiBhcnJheS4gVGhleVxuICAgKiAgIG11c3QgYmUgaW4gdGhlIHNhbWUgb3JkZXIgdGhlIGNvbHVtbnMgd2VyZSBhZGRlZCBpbi5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCBvZiBhZGRpbmcgcm93cyBpbmRpdmlkdWFsbHksIHlvdSBzaG91bGQgcGFzc1xuICAgKiAgIGFsbCByb3cgb2JqZWN0cyB3aGVuIGNhbGxpbmcgW1tDb25uZWN0aW9uLmV4ZWNCdWxrTG9hZF1dLiBUaGlzIG1ldGhvZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS5cbiAgICovXG4gIGFkZFJvdyguLi5yb3c6IHVua25vd25bXSk6IHZvaWRcblxuICAvKipcbiAgICogQWRkcyBhIHJvdyB0byB0aGUgYnVsayBpbnNlcnQuXG4gICAqXG4gICAqIGBgYGpzXG4gICAqIGJ1bGtMb2FkLmFkZFJvdyhbJ0JpbGwnLCAnR2F0ZXMnXSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0gcm93IEFuIGFycmF5IHJlcHJlc2VudGluZyB0aGUgdmFsdWVzIG9mIGVhY2ggY29sdW1uIGluIHRoZSBzYW1lIG9yZGVyIHdoaWNoIHRoZXkgd2VyZSBhZGRlZCB0byB0aGUgYnVsa0xvYWQgb2JqZWN0LlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkIG9mIGFkZGluZyByb3dzIGluZGl2aWR1YWxseSwgeW91IHNob3VsZCBwYXNzXG4gICAqICAgYWxsIHJvdyBvYmplY3RzIHdoZW4gY2FsbGluZyBbW0Nvbm5lY3Rpb24uZXhlY0J1bGtMb2FkXV0uIFRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLlxuICAgKi9cbiAgYWRkUm93KHJvdzogdW5rbm93bltdKTogdm9pZFxuXG4gIGFkZFJvdyguLi5pbnB1dDogWyB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSBdIHwgdW5rbm93bltdKSB7XG4gICAgdGhpcy5maXJzdFJvd1dyaXR0ZW4gPSB0cnVlO1xuXG4gICAgbGV0IHJvdzogYW55O1xuICAgIGlmIChpbnB1dC5sZW5ndGggPiAxIHx8ICFpbnB1dFswXSB8fCB0eXBlb2YgaW5wdXRbMF0gIT09ICdvYmplY3QnKSB7XG4gICAgICByb3cgPSBpbnB1dDtcbiAgICB9IGVsc2Uge1xuICAgICAgcm93ID0gaW5wdXRbMF07XG4gICAgfVxuXG4gICAgLy8gd3JpdGUgZWFjaCBjb2x1bW5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShyb3cpKSB7XG4gICAgICB0aGlzLnJvd1RvUGFja2V0VHJhbnNmb3JtLndyaXRlKHRoaXMuY29sdW1ucy5tYXAoKGNvbHVtbiwgaSkgPT4ge1xuICAgICAgICByZXR1cm4gY29sdW1uLnR5cGUudmFsaWRhdGUocm93W2ldLCBjb2x1bW4uY29sbGF0aW9uKTtcbiAgICAgIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3dUb1BhY2tldFRyYW5zZm9ybS53cml0ZSh0aGlzLmNvbHVtbnMubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbi50eXBlLnZhbGlkYXRlKHJvd1tjb2x1bW4ub2JqTmFtZV0sIGNvbHVtbi5jb2xsYXRpb24pO1xuICAgICAgfSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZ2V0T3B0aW9uc1NxbCgpIHtcbiAgICBjb25zdCBhZGRPcHRpb25zID0gW107XG5cbiAgICBpZiAodGhpcy5idWxrT3B0aW9ucy5jaGVja0NvbnN0cmFpbnRzKSB7XG4gICAgICBhZGRPcHRpb25zLnB1c2goJ0NIRUNLX0NPTlNUUkFJTlRTJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYnVsa09wdGlvbnMuZmlyZVRyaWdnZXJzKSB7XG4gICAgICBhZGRPcHRpb25zLnB1c2goJ0ZJUkVfVFJJR0dFUlMnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5idWxrT3B0aW9ucy5rZWVwTnVsbHMpIHtcbiAgICAgIGFkZE9wdGlvbnMucHVzaCgnS0VFUF9OVUxMUycpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmJ1bGtPcHRpb25zLmxvY2tUYWJsZSkge1xuICAgICAgYWRkT3B0aW9ucy5wdXNoKCdUQUJMT0NLJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYnVsa09wdGlvbnMub3JkZXIpIHtcbiAgICAgIGNvbnN0IG9yZGVyQ29sdW1ucyA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IFtjb2x1bW4sIGRpcmVjdGlvbl0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5idWxrT3B0aW9ucy5vcmRlcikpIHtcbiAgICAgICAgb3JkZXJDb2x1bW5zLnB1c2goYCR7Y29sdW1ufSAke2RpcmVjdGlvbn1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9yZGVyQ29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgYWRkT3B0aW9ucy5wdXNoKGBPUkRFUiAoJHtvcmRlckNvbHVtbnMuam9pbignLCAnKX0pYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGFkZE9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGAgV0lUSCAoJHthZGRPcHRpb25zLmpvaW4oJywnKX0pYDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZ2V0QnVsa0luc2VydFNxbCgpIHtcbiAgICBsZXQgc3FsID0gJ2luc2VydCBidWxrICcgKyB0aGlzLnRhYmxlICsgJygnO1xuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLmNvbHVtbnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IGMgPSB0aGlzLmNvbHVtbnNbaV07XG4gICAgICBpZiAoaSAhPT0gMCkge1xuICAgICAgICBzcWwgKz0gJywgJztcbiAgICAgIH1cbiAgICAgIHNxbCArPSAnWycgKyBjLm5hbWUgKyAnXSAnICsgKGMudHlwZS5kZWNsYXJhdGlvbihjKSk7XG4gICAgfVxuICAgIHNxbCArPSAnKSc7XG5cbiAgICBzcWwgKz0gdGhpcy5nZXRPcHRpb25zU3FsKCk7XG4gICAgcmV0dXJuIHNxbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIHNpbXBseSBhIGhlbHBlciB1dGlsaXR5IGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYSBgQ1JFQVRFIFRBQkxFIFNRTGAgc3RhdGVtZW50IGJhc2VkIG9uIHRoZSBjb2x1bW5zIGFkZGVkIHRvIHRoZSBidWxrTG9hZCBvYmplY3QuXG4gICAqIFRoaXMgbWF5IGJlIHBhcnRpY3VsYXJseSBoYW5keSB3aGVuIHlvdSB3YW50IHRvIGluc2VydCBpbnRvIGEgdGVtcG9yYXJ5IHRhYmxlIChhIHRhYmxlIHdoaWNoIHN0YXJ0cyB3aXRoIGAjYCkuXG4gICAqXG4gICAqIGBgYGpzXG4gICAqIHZhciBzcWwgPSBidWxrTG9hZC5nZXRUYWJsZUNyZWF0aW9uU3FsKCk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBBIHNpZGUgbm90ZSBvbiBidWxrIGluc2VydGluZyBpbnRvIHRlbXBvcmFyeSB0YWJsZXM6IGlmIHlvdSB3YW50IHRvIGFjY2VzcyBhIGxvY2FsIHRlbXBvcmFyeSB0YWJsZSBhZnRlciBleGVjdXRpbmcgdGhlIGJ1bGsgbG9hZCxcbiAgICogeW91J2xsIG5lZWQgdG8gdXNlIHRoZSBzYW1lIGNvbm5lY3Rpb24gYW5kIGV4ZWN1dGUgeW91ciByZXF1ZXN0cyB1c2luZyBbW0Nvbm5lY3Rpb24uZXhlY1NxbEJhdGNoXV0gaW5zdGVhZCBvZiBbW0Nvbm5lY3Rpb24uZXhlY1NxbF1dXG4gICAqL1xuICBnZXRUYWJsZUNyZWF0aW9uU3FsKCkge1xuICAgIGxldCBzcWwgPSAnQ1JFQVRFIFRBQkxFICcgKyB0aGlzLnRhYmxlICsgJyhcXG4nO1xuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLmNvbHVtbnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IGMgPSB0aGlzLmNvbHVtbnNbaV07XG4gICAgICBpZiAoaSAhPT0gMCkge1xuICAgICAgICBzcWwgKz0gJyxcXG4nO1xuICAgICAgfVxuICAgICAgc3FsICs9ICdbJyArIGMubmFtZSArICddICcgKyAoYy50eXBlLmRlY2xhcmF0aW9uKGMpKTtcbiAgICAgIGlmIChjLm51bGxhYmxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc3FsICs9ICcgJyArIChjLm51bGxhYmxlID8gJ05VTEwnIDogJ05PVCBOVUxMJyk7XG4gICAgICB9XG4gICAgfVxuICAgIHNxbCArPSAnXFxuKSc7XG4gICAgcmV0dXJuIHNxbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZ2V0Q29sTWV0YURhdGEoKSB7XG4gICAgY29uc3QgdEJ1ZiA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKDEwMCwgbnVsbCwgdHJ1ZSk7XG4gICAgLy8gVG9rZW5UeXBlXG4gICAgdEJ1Zi53cml0ZVVJbnQ4KFRPS0VOX1RZUEUuQ09MTUVUQURBVEEpO1xuICAgIC8vIENvdW50XG4gICAgdEJ1Zi53cml0ZVVJbnQxNkxFKHRoaXMuY29sdW1ucy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaiA9IDAsIGxlbiA9IHRoaXMuY29sdW1ucy5sZW5ndGg7IGogPCBsZW47IGorKykge1xuICAgICAgY29uc3QgYyA9IHRoaXMuY29sdW1uc1tqXTtcbiAgICAgIC8vIFVzZXJUeXBlXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnRkc1ZlcnNpb24gPCAnN18yJykge1xuICAgICAgICB0QnVmLndyaXRlVUludDE2TEUoMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0QnVmLndyaXRlVUludDMyTEUoMCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEZsYWdzXG4gICAgICBsZXQgZmxhZ3MgPSBGTEFHUy51cGRhdGVhYmxlUmVhZFdyaXRlO1xuICAgICAgaWYgKGMubnVsbGFibGUpIHtcbiAgICAgICAgZmxhZ3MgfD0gRkxBR1MubnVsbGFibGU7XG4gICAgICB9IGVsc2UgaWYgKGMubnVsbGFibGUgPT09IHVuZGVmaW5lZCAmJiB0aGlzLm9wdGlvbnMudGRzVmVyc2lvbiA+PSAnN18yJykge1xuICAgICAgICBmbGFncyB8PSBGTEFHUy5udWxsYWJsZVVua25vd247XG4gICAgICB9XG4gICAgICB0QnVmLndyaXRlVUludDE2TEUoZmxhZ3MpO1xuXG4gICAgICAvLyBUWVBFX0lORk9cbiAgICAgIHRCdWYud3JpdGVCdWZmZXIoYy50eXBlLmdlbmVyYXRlVHlwZUluZm8oYywgdGhpcy5vcHRpb25zKSk7XG5cbiAgICAgIC8vIFRhYmxlTmFtZVxuICAgICAgaWYgKGMudHlwZS5oYXNUYWJsZU5hbWUpIHtcbiAgICAgICAgdEJ1Zi53cml0ZVVzVmFyY2hhcih0aGlzLnRhYmxlLCAndWNzMicpO1xuICAgICAgfVxuXG4gICAgICAvLyBDb2xOYW1lXG4gICAgICB0QnVmLndyaXRlQlZhcmNoYXIoYy5uYW1lLCAndWNzMicpO1xuICAgIH1cbiAgICByZXR1cm4gdEJ1Zi5kYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYSB0aW1lb3V0IGZvciB0aGlzIGJ1bGsgbG9hZC5cbiAgICpcbiAgICogYGBganNcbiAgICogYnVsa0xvYWQuc2V0VGltZW91dCh0aW1lb3V0KTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSB0aW1lb3V0IFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJlZm9yZSB0aGUgYnVsayBsb2FkIGlzIGNvbnNpZGVyZWQgZmFpbGVkLCBvciAwIGZvciBubyB0aW1lb3V0LlxuICAgKiAgIFdoZW4gbm8gdGltZW91dCBpcyBzZXQgZm9yIHRoZSBidWxrIGxvYWQsIHRoZSBbW0Nvbm5lY3Rpb25PcHRpb25zLnJlcXVlc3RUaW1lb3V0XV0gb2YgdGhlIENvbm5lY3Rpb24gaXMgdXNlZC5cbiAgICovXG4gIHNldFRpbWVvdXQodGltZW91dD86IG51bWJlcikge1xuICAgIHRoaXMudGltZW91dCA9IHRpbWVvdXQ7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNyZWF0ZURvbmVUb2tlbigpIHtcbiAgICAvLyBJdCBtaWdodCBiZSBuaWNlIHRvIG1ha2UgRG9uZVRva2VuIGEgY2xhc3MgaWYgYW55dGhpbmcgbmVlZHMgdG8gY3JlYXRlIHRoZW0sIGJ1dCBmb3Igbm93LCBqdXN0IGRvIGl0IGhlcmVcbiAgICBjb25zdCB0QnVmID0gbmV3IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIodGhpcy5vcHRpb25zLnRkc1ZlcnNpb24gPCAnN18yJyA/IDkgOiAxMyk7XG4gICAgdEJ1Zi53cml0ZVVJbnQ4KFRPS0VOX1RZUEUuRE9ORSk7XG4gICAgY29uc3Qgc3RhdHVzID0gRE9ORV9TVEFUVVMuRklOQUw7XG4gICAgdEJ1Zi53cml0ZVVJbnQxNkxFKHN0YXR1cyk7XG4gICAgdEJ1Zi53cml0ZVVJbnQxNkxFKDApOyAvLyBDdXJDbWQgKFREUyBpZ25vcmVzIHRoaXMpXG4gICAgdEJ1Zi53cml0ZVVJbnQzMkxFKDApOyAvLyByb3cgY291bnQgLSBkb2Vzbid0IHJlYWxseSBtYXR0ZXJcbiAgICBpZiAodGhpcy5vcHRpb25zLnRkc1ZlcnNpb24gPj0gJzdfMicpIHtcbiAgICAgIHRCdWYud3JpdGVVSW50MzJMRSgwKTsgLy8gcm93IGNvdW50IGlzIDY0IGJpdHMgaW4gPj0gVERTIDcuMlxuICAgIH1cbiAgICByZXR1cm4gdEJ1Zi5kYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFN3aXRjaGVzIHRoZSBgQnVsa0xvYWRgIG9iamVjdCBpbnRvIHN0cmVhbWluZyBtb2RlIGFuZCByZXR1cm5zIGFcbiAgICogW3dyaXRhYmxlIHN0cmVhbV0oaHR0cHM6Ly9ub2RlanMub3JnL2Rpc3QvbGF0ZXN0LXYxMC54L2RvY3MvYXBpL3N0cmVhbS5odG1sI3N0cmVhbV93cml0YWJsZV9zdHJlYW1zKVxuICAgKiB0aGF0IGNhbiBiZSB1c2VkIHRvIHNlbmQgYSBsYXJnZSBhbW91bnQgb2Ygcm93cyB0byB0aGUgc2VydmVyLlxuICAgKlxuICAgKiBgYGBqc1xuICAgKiBjb25zdCBidWxrTG9hZCA9IGNvbm5lY3Rpb24ubmV3QnVsa0xvYWQoLi4uKTtcbiAgICogYnVsa0xvYWQuYWRkQ29sdW1uKC4uLik7XG4gICAqXG4gICAqIGNvbnN0IHJvd1N0cmVhbSA9IGJ1bGtMb2FkLmdldFJvd1N0cmVhbSgpO1xuICAgKlxuICAgKiBjb25uZWN0aW9uLmV4ZWNCdWxrTG9hZChidWxrTG9hZCk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBJbiBzdHJlYW1pbmcgbW9kZSwgW1thZGRSb3ddXSBjYW5ub3QgYmUgdXNlZC4gSW5zdGVhZCBhbGwgZGF0YSByb3dzIG11c3QgYmUgd3JpdHRlbiB0byB0aGUgcmV0dXJuZWQgc3RyZWFtIG9iamVjdC5cbiAgICogVGhlIHN0cmVhbSBpbXBsZW1lbnRhdGlvbiB1c2VzIGRhdGEgZmxvdyBjb250cm9sIHRvIHByZXZlbnQgbWVtb3J5IG92ZXJsb2FkLiBbYHN0cmVhbS53cml0ZSgpYF0oaHR0cHM6Ly9ub2RlanMub3JnL2Rpc3QvbGF0ZXN0LXYxMC54L2RvY3MvYXBpL3N0cmVhbS5odG1sI3N0cmVhbV93cml0YWJsZV93cml0ZV9jaHVua19lbmNvZGluZ19jYWxsYmFjaylcbiAgICogcmV0dXJucyBgZmFsc2VgIHRvIGluZGljYXRlIHRoYXQgZGF0YSB0cmFuc2ZlciBzaG91bGQgYmUgcGF1c2VkLlxuICAgKlxuICAgKiBBZnRlciB0aGF0LCB0aGUgc3RyZWFtIGVtaXRzIGEgWydkcmFpbicgZXZlbnRdKGh0dHBzOi8vbm9kZWpzLm9yZy9kaXN0L2xhdGVzdC12MTAueC9kb2NzL2FwaS9zdHJlYW0uaHRtbCNzdHJlYW1fZXZlbnRfZHJhaW4pXG4gICAqIHdoZW4gaXQgaXMgcmVhZHkgdG8gcmVzdW1lIGRhdGEgdHJhbnNmZXIuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCBvZiB3cml0aW5nIHJvd3MgdG8gdGhlIHN0cmVhbSByZXR1cm5lZCBieSB0aGlzIG1ldGhvZCxcbiAgICogICB5b3UgY2FuIHBhc3MgYW55IG9iamVjdCB0aGF0IGltcGxlbWVudHMgdGhlIGBJdGVyYWJsZWAgb3IgYEFzeW5jSXRlcmFibGVgIGludGVyZmFjZSAoZS5nLiBhIGBSZWFkYWJsZWBcbiAgICogICBzdHJlYW0gb3IgYW4gYEFzeW5jR2VuZXJhdG9yYCkgd2hlbiBjYWxsaW5nIFtbQ29ubmVjdGlvbi5leGVjQnVsa0xvYWRdXS4gVGhpcyBtZXRob2Qgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuXG4gICAqL1xuICBnZXRSb3dTdHJlYW0oKSB7XG4gICAgaWYgKHRoaXMuZmlyc3RSb3dXcml0dGVuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0J1bGtMb2FkIGNhbm5vdCBiZSBzd2l0Y2hlZCB0byBzdHJlYW1pbmcgbW9kZSBhZnRlciBmaXJzdCByb3cgaGFzIGJlZW4gd3JpdHRlbiB1c2luZyBhZGRSb3coKS4nKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZXhlY3V0aW9uU3RhcnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdCdWxrTG9hZCBjYW5ub3QgYmUgc3dpdGNoZWQgdG8gc3RyZWFtaW5nIG1vZGUgYWZ0ZXIgZXhlY3V0aW9uIGhhcyBzdGFydGVkLicpO1xuICAgIH1cblxuICAgIHRoaXMuc3RyZWFtaW5nTW9kZSA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5yb3dUb1BhY2tldFRyYW5zZm9ybTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY2FuY2VsKCkge1xuICAgIGlmICh0aGlzLmNhbmNlbGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jYW5jZWxlZCA9IHRydWU7XG4gICAgdGhpcy5lbWl0KCdjYW5jZWwnKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBCdWxrTG9hZDtcbm1vZHVsZS5leHBvcnRzID0gQnVsa0xvYWQ7XG4iXX0=

@@ -30,3 +30,3 @@ {

"license": "MIT",
"version": "13.0.4",
"version": "13.0.5",
"main": "./lib/tedious.js",

@@ -33,0 +33,0 @@ "repository": {

SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc