parse-server 7.4.0-alpha.5 → 7.4.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Adapters/Files/GridFSBucketAdapter.js +2 -5
- package/lib/Adapters/Storage/Mongo/MongoSchemaCollection.js +3 -3
- package/lib/Adapters/Storage/Mongo/MongoStorageAdapter.js +4 -6
- package/lib/Controllers/DatabaseController.js +3 -3
- package/lib/Controllers/FilesController.js +5 -5
- package/lib/Controllers/ParseGraphQLController.js +3 -3
- package/lib/GraphQL/loaders/filesMutations.js +3 -3
- package/lib/Routers/FilesRouter.js +4 -4
- package/package.json +30 -30
|
@@ -25,10 +25,7 @@ class GridFSBucketAdapter extends _FilesAdapter.FilesAdapter {
|
|
|
25
25
|
this._databaseURI = mongoDatabaseURI;
|
|
26
26
|
this._algorithm = 'aes-256-gcm';
|
|
27
27
|
this._encryptionKey = encryptionKey !== undefined ? crypto.createHash('sha256').update(String(encryptionKey)).digest('base64').substring(0, 32) : null;
|
|
28
|
-
const defaultMongoOptions = {
|
|
29
|
-
useNewUrlParser: true,
|
|
30
|
-
useUnifiedTopology: true
|
|
31
|
-
};
|
|
28
|
+
const defaultMongoOptions = {};
|
|
32
29
|
const _mongoOptions = Object.assign(defaultMongoOptions, mongoOptions);
|
|
33
30
|
for (const key of ['enableSchemaHooks', 'schemaCacheTtl', 'maxTimeMS']) {
|
|
34
31
|
delete _mongoOptions[key];
|
|
@@ -230,4 +227,4 @@ class GridFSBucketAdapter extends _FilesAdapter.FilesAdapter {
|
|
|
230
227
|
}
|
|
231
228
|
exports.GridFSBucketAdapter = GridFSBucketAdapter;
|
|
232
229
|
var _default = exports.default = GridFSBucketAdapter;
|
|
233
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9uZ29kYiIsInJlcXVpcmUiLCJfRmlsZXNBZGFwdGVyIiwiX2RlZmF1bHRzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNyeXB0byIsIkdyaWRGU0J1Y2tldEFkYXB0ZXIiLCJGaWxlc0FkYXB0ZXIiLCJjb25zdHJ1Y3RvciIsIm1vbmdvRGF0YWJhc2VVUkkiLCJkZWZhdWx0cyIsIkRlZmF1bHRNb25nb1VSSSIsIm1vbmdvT3B0aW9ucyIsImVuY3J5cHRpb25LZXkiLCJ1bmRlZmluZWQiLCJfZGF0YWJhc2VVUkkiLCJfYWxnb3JpdGhtIiwiX2VuY3J5cHRpb25LZXkiLCJjcmVhdGVIYXNoIiwidXBkYXRlIiwiU3RyaW5nIiwiZGlnZXN0Iiwic3Vic3RyaW5nIiwiZGVmYXVsdE1vbmdvT3B0aW9ucyIsInVzZU5ld1VybFBhcnNlciIsInVzZVVuaWZpZWRUb3BvbG9neSIsIl9tb25nb09wdGlvbnMiLCJPYmplY3QiLCJhc3NpZ24iLCJrZXkiLCJfY29ubmVjdCIsIl9jb25uZWN0aW9uUHJvbWlzZSIsIk1vbmdvQ2xpZW50IiwiY29ubmVjdCIsInRoZW4iLCJjbGllbnQiLCJfY2xpZW50IiwiZGIiLCJzIiwib3B0aW9ucyIsImRiTmFtZSIsIl9nZXRCdWNrZXQiLCJkYXRhYmFzZSIsIkdyaWRGU0J1Y2tldCIsImNyZWF0ZUZpbGUiLCJmaWxlbmFtZSIsImRhdGEiLCJjb250ZW50VHlwZSIsImJ1Y2tldCIsInN0cmVhbSIsIm9wZW5VcGxvYWRTdHJlYW0iLCJtZXRhZGF0YSIsIml2IiwicmFuZG9tQnl0ZXMiLCJjaXBoZXIiLCJjcmVhdGVDaXBoZXJpdiIsImVuY3J5cHRlZFJlc3VsdCIsIkJ1ZmZlciIsImNvbmNhdCIsImZpbmFsIiwiZ2V0QXV0aFRhZyIsIndyaXRlIiwiZXJyIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJlbmQiLCJvbiIsImRlbGV0ZUZpbGUiLCJkb2N1bWVudHMiLCJmaW5kIiwidG9BcnJheSIsImxlbmd0aCIsIkVycm9yIiwiYWxsIiwibWFwIiwiZG9jIiwiZGVsZXRlIiwiX2lkIiwiZ2V0RmlsZURhdGEiLCJvcGVuRG93bmxvYWRTdHJlYW1CeU5hbWUiLCJyZWFkIiwiY2h1bmtzIiwicHVzaCIsImF1dGhUYWdMb2NhdGlvbiIsIml2TG9jYXRpb24iLCJhdXRoVGFnIiwic2xpY2UiLCJlbmNyeXB0ZWQiLCJkZWNpcGhlciIsImNyZWF0ZURlY2lwaGVyaXYiLCJzZXRBdXRoVGFnIiwiZGVjcnlwdGVkIiwicm90YXRlRW5jcnlwdGlvbktleSIsImZpbGVOYW1lcyIsIm9sZEtleUZpbGVBZGFwdGVyIiwib2xkS2V5IiwiZmlsZU5hbWVzSXRlcmF0b3IiLCJmb3JFYWNoIiwiZmlsZSIsImZpbGVOYW1lc05vdFJvdGF0ZWQiLCJmaWxlTmFtZXNSb3RhdGVkIiwiZmlsZU5hbWUiLCJwbGFpblRleHREYXRhIiwiZmlsdGVyIiwidmFsdWUiLCJyb3RhdGVkIiwibm90Um90YXRlZCIsImdldEZpbGVMb2NhdGlvbiIsImNvbmZpZyIsIm1vdW50IiwiYXBwbGljYXRpb25JZCIsImVuY29kZVVSSUNvbXBvbmVudCIsImdldE1ldGFkYXRhIiwiZmlsZXMiLCJoYW5kbGVGaWxlU3RyZWFtIiwicmVxIiwicmVzIiwicGFydHMiLCJnZXQiLCJyZXBsYWNlIiwic3BsaXQiLCJwYXJ0aWFsc3RhcnQiLCJwYXJ0aWFsZW5kIiwiZmlsZUxlbmd0aCIsImZpbGVTdGFydCIsInBhcnNlSW50IiwiZmlsZUVuZCIsInN0YXJ0IiwiTWF0aCIsIm1pbiIsIm1heCIsImlzTmFOIiwic3RhdHVzIiwiaGVhZGVyIiwiY2h1bmsiLCJzZW5kIiwibWVzc2FnZSIsImhhbmRsZVNodXRkb3duIiwiY2xvc2UiLCJ2YWxpZGF0ZUZpbGVuYW1lIiwiZXhwb3J0cyIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0ZpbGVzL0dyaWRGU0J1Y2tldEFkYXB0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gR3JpZEZTQnVja2V0QWRhcHRlclxuIFN0b3JlcyBmaWxlcyBpbiBNb25nbyB1c2luZyBHcmlkRlNcbiBSZXF1aXJlcyB0aGUgZGF0YWJhc2UgYWRhcHRlciB0byBiZSBiYXNlZCBvbiBtb25nb2NsaWVudFxuXG4gQGZsb3cgd2Vha1xuICovXG5cbi8vIEBmbG93LWRpc2FibGUtbmV4dFxuaW1wb3J0IHsgTW9uZ29DbGllbnQsIEdyaWRGU0J1Y2tldCwgRGIgfSBmcm9tICdtb25nb2RiJztcbmltcG9ydCB7IEZpbGVzQWRhcHRlciwgdmFsaWRhdGVGaWxlbmFtZSB9IGZyb20gJy4vRmlsZXNBZGFwdGVyJztcbmltcG9ydCBkZWZhdWx0cyBmcm9tICcuLi8uLi9kZWZhdWx0cyc7XG5jb25zdCBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTtcblxuZXhwb3J0IGNsYXNzIEdyaWRGU0J1Y2tldEFkYXB0ZXIgZXh0ZW5kcyBGaWxlc0FkYXB0ZXIge1xuICBfZGF0YWJhc2VVUkk6IHN0cmluZztcbiAgX2Nvbm5lY3Rpb25Qcm9taXNlOiBQcm9taXNlPERiPjtcbiAgX21vbmdvT3B0aW9uczogT2JqZWN0O1xuICBfYWxnb3JpdGhtOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbW9uZ29EYXRhYmFzZVVSSSA9IGRlZmF1bHRzLkRlZmF1bHRNb25nb1VSSSxcbiAgICBtb25nb09wdGlvbnMgPSB7fSxcbiAgICBlbmNyeXB0aW9uS2V5ID0gdW5kZWZpbmVkXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fZGF0YWJhc2VVUkkgPSBtb25nb0RhdGFiYXNlVVJJO1xuICAgIHRoaXMuX2FsZ29yaXRobSA9ICdhZXMtMjU2LWdjbSc7XG4gICAgdGhpcy5fZW5jcnlwdGlvbktleSA9XG4gICAgICBlbmNyeXB0aW9uS2V5ICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBjcnlwdG9cbiAgICAgICAgICAuY3JlYXRlSGFzaCgnc2hhMjU2JylcbiAgICAgICAgICAudXBkYXRlKFN0cmluZyhlbmNyeXB0aW9uS2V5KSlcbiAgICAgICAgICAuZGlnZXN0KCdiYXNlNjQnKVxuICAgICAgICAgIC5zdWJzdHJpbmcoMCwgMzIpXG4gICAgICAgIDogbnVsbDtcbiAgICBjb25zdCBkZWZhdWx0TW9uZ29PcHRpb25zID0ge1xuICAgICAgdXNlTmV3VXJsUGFyc2VyOiB0cnVlLFxuICAgICAgdXNlVW5pZmllZFRvcG9sb2d5OiB0cnVlLFxuICAgIH07XG4gICAgY29uc3QgX21vbmdvT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oZGVmYXVsdE1vbmdvT3B0aW9ucywgbW9uZ29PcHRpb25zKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBbJ2VuYWJsZVNjaGVtYUhvb2tzJywgJ3NjaGVtYUNhY2hlVHRsJywgJ21heFRpbWVNUyddKSB7XG4gICAgICBkZWxldGUgX21vbmdvT3B0aW9uc1trZXldO1xuICAgIH1cbiAgICB0aGlzLl9tb25nb09wdGlvbnMgPSBfbW9uZ29PcHRpb25zO1xuICB9XG5cbiAgX2Nvbm5lY3QoKSB7XG4gICAgaWYgKCF0aGlzLl9jb25uZWN0aW9uUHJvbWlzZSkge1xuICAgICAgdGhpcy5fY29ubmVjdGlvblByb21pc2UgPSBNb25nb0NsaWVudC5jb25uZWN0KHRoaXMuX2RhdGFiYXNlVVJJLCB0aGlzLl9tb25nb09wdGlvbnMpLnRoZW4oXG4gICAgICAgIGNsaWVudCA9PiB7XG4gICAgICAgICAgdGhpcy5fY2xpZW50ID0gY2xpZW50O1xuICAgICAgICAgIHJldHVybiBjbGllbnQuZGIoY2xpZW50LnMub3B0aW9ucy5kYk5hbWUpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvblByb21pc2U7XG4gIH1cblxuICBfZ2V0QnVja2V0KCkge1xuICAgIHJldHVybiB0aGlzLl9jb25uZWN0KCkudGhlbihkYXRhYmFzZSA9PiBuZXcgR3JpZEZTQnVja2V0KGRhdGFiYXNlKSk7XG4gIH1cblxuICAvLyBGb3IgYSBnaXZlbiBjb25maWcgb2JqZWN0LCBmaWxlbmFtZSwgYW5kIGRhdGEsIHN0b3JlIGEgZmlsZVxuICAvLyBSZXR1cm5zIGEgcHJvbWlzZVxuICBhc3luYyBjcmVhdGVGaWxlKGZpbGVuYW1lOiBzdHJpbmcsIGRhdGEsIGNvbnRlbnRUeXBlLCBvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBidWNrZXQgPSBhd2FpdCB0aGlzLl9nZXRCdWNrZXQoKTtcbiAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBidWNrZXQub3BlblVwbG9hZFN0cmVhbShmaWxlbmFtZSwge1xuICAgICAgbWV0YWRhdGE6IG9wdGlvbnMubWV0YWRhdGEsXG4gICAgfSk7XG4gICAgaWYgKHRoaXMuX2VuY3J5cHRpb25LZXkgIT09IG51bGwpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGl2ID0gY3J5cHRvLnJhbmRvbUJ5dGVzKDE2KTtcbiAgICAgICAgY29uc3QgY2lwaGVyID0gY3J5cHRvLmNyZWF0ZUNpcGhlcml2KHRoaXMuX2FsZ29yaXRobSwgdGhpcy5fZW5jcnlwdGlvbktleSwgaXYpO1xuICAgICAgICBjb25zdCBlbmNyeXB0ZWRSZXN1bHQgPSBCdWZmZXIuY29uY2F0KFtcbiAgICAgICAgICBjaXBoZXIudXBkYXRlKGRhdGEpLFxuICAgICAgICAgIGNpcGhlci5maW5hbCgpLFxuICAgICAgICAgIGl2LFxuICAgICAgICAgIGNpcGhlci5nZXRBdXRoVGFnKCksXG4gICAgICAgIF0pO1xuICAgICAgICBhd2FpdCBzdHJlYW0ud3JpdGUoZW5jcnlwdGVkUmVzdWx0KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHN0cmVhbS53cml0ZShkYXRhKTtcbiAgICB9XG4gICAgc3RyZWFtLmVuZCgpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBzdHJlYW0ub24oJ2ZpbmlzaCcsIHJlc29sdmUpO1xuICAgICAgc3RyZWFtLm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVGaWxlKGZpbGVuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBidWNrZXQgPSBhd2FpdCB0aGlzLl9nZXRCdWNrZXQoKTtcbiAgICBjb25zdCBkb2N1bWVudHMgPSBhd2FpdCBidWNrZXQuZmluZCh7IGZpbGVuYW1lIH0pLnRvQXJyYXkoKTtcbiAgICBpZiAoZG9jdW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaWxlTm90Rm91bmQnKTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgZG9jdW1lbnRzLm1hcChkb2MgPT4ge1xuICAgICAgICByZXR1cm4gYnVja2V0LmRlbGV0ZShkb2MuX2lkKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGdldEZpbGVEYXRhKGZpbGVuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBidWNrZXQgPSBhd2FpdCB0aGlzLl9nZXRCdWNrZXQoKTtcbiAgICBjb25zdCBzdHJlYW0gPSBidWNrZXQub3BlbkRvd25sb2FkU3RyZWFtQnlOYW1lKGZpbGVuYW1lKTtcbiAgICBzdHJlYW0ucmVhZCgpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBjaHVua3MgPSBbXTtcbiAgICAgIHN0cmVhbS5vbignZGF0YScsIGRhdGEgPT4ge1xuICAgICAgICBjaHVua3MucHVzaChkYXRhKTtcbiAgICAgIH0pO1xuICAgICAgc3RyZWFtLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBCdWZmZXIuY29uY2F0KGNodW5rcyk7XG4gICAgICAgIGlmICh0aGlzLl9lbmNyeXB0aW9uS2V5ICE9PSBudWxsKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGF1dGhUYWdMb2NhdGlvbiA9IGRhdGEubGVuZ3RoIC0gMTY7XG4gICAgICAgICAgICBjb25zdCBpdkxvY2F0aW9uID0gZGF0YS5sZW5ndGggLSAzMjtcbiAgICAgICAgICAgIGNvbnN0IGF1dGhUYWcgPSBkYXRhLnNsaWNlKGF1dGhUYWdMb2NhdGlvbik7XG4gICAgICAgICAgICBjb25zdCBpdiA9IGRhdGEuc2xpY2UoaXZMb2NhdGlvbiwgYXV0aFRhZ0xvY2F0aW9uKTtcbiAgICAgICAgICAgIGNvbnN0IGVuY3J5cHRlZCA9IGRhdGEuc2xpY2UoMCwgaXZMb2NhdGlvbik7XG4gICAgICAgICAgICBjb25zdCBkZWNpcGhlciA9IGNyeXB0by5jcmVhdGVEZWNpcGhlcml2KHRoaXMuX2FsZ29yaXRobSwgdGhpcy5fZW5jcnlwdGlvbktleSwgaXYpO1xuICAgICAgICAgICAgZGVjaXBoZXIuc2V0QXV0aFRhZyhhdXRoVGFnKTtcbiAgICAgICAgICAgIGNvbnN0IGRlY3J5cHRlZCA9IEJ1ZmZlci5jb25jYXQoW2RlY2lwaGVyLnVwZGF0ZShlbmNyeXB0ZWQpLCBkZWNpcGhlci5maW5hbCgpXSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShkZWNyeXB0ZWQpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgfSk7XG4gICAgICBzdHJlYW0ub24oJ2Vycm9yJywgZXJyID0+IHtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJvdGF0ZUVuY3J5cHRpb25LZXkob3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGZpbGVOYW1lcyA9IFtdO1xuICAgIGxldCBvbGRLZXlGaWxlQWRhcHRlciA9IHt9O1xuICAgIGNvbnN0IGJ1Y2tldCA9IGF3YWl0IHRoaXMuX2dldEJ1Y2tldCgpO1xuICAgIGlmIChvcHRpb25zLm9sZEtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvbGRLZXlGaWxlQWRhcHRlciA9IG5ldyBHcmlkRlNCdWNrZXRBZGFwdGVyKFxuICAgICAgICB0aGlzLl9kYXRhYmFzZVVSSSxcbiAgICAgICAgdGhpcy5fbW9uZ29PcHRpb25zLFxuICAgICAgICBvcHRpb25zLm9sZEtleVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2xkS2V5RmlsZUFkYXB0ZXIgPSBuZXcgR3JpZEZTQnVja2V0QWRhcHRlcih0aGlzLl9kYXRhYmFzZVVSSSwgdGhpcy5fbW9uZ29PcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuZmlsZU5hbWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZpbGVOYW1lcyA9IG9wdGlvbnMuZmlsZU5hbWVzO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmaWxlTmFtZXNJdGVyYXRvciA9IGF3YWl0IGJ1Y2tldC5maW5kKCkudG9BcnJheSgpO1xuICAgICAgZmlsZU5hbWVzSXRlcmF0b3IuZm9yRWFjaChmaWxlID0+IHtcbiAgICAgICAgZmlsZU5hbWVzLnB1c2goZmlsZS5maWxlbmFtZSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgbGV0IGZpbGVOYW1lc05vdFJvdGF0ZWQgPSBmaWxlTmFtZXM7XG4gICAgY29uc3QgZmlsZU5hbWVzUm90YXRlZCA9IFtdO1xuICAgIGZvciAoY29uc3QgZmlsZU5hbWUgb2YgZmlsZU5hbWVzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwbGFpblRleHREYXRhID0gYXdhaXQgb2xkS2V5RmlsZUFkYXB0ZXIuZ2V0RmlsZURhdGEoZmlsZU5hbWUpO1xuICAgICAgICAvLyBPdmVyd3JpdGUgZmlsZSB3aXRoIGRhdGEgZW5jcnlwdGVkIHdpdGggbmV3IGtleVxuICAgICAgICBhd2FpdCB0aGlzLmNyZWF0ZUZpbGUoZmlsZU5hbWUsIHBsYWluVGV4dERhdGEpO1xuICAgICAgICBmaWxlTmFtZXNSb3RhdGVkLnB1c2goZmlsZU5hbWUpO1xuICAgICAgICBmaWxlTmFtZXNOb3RSb3RhdGVkID0gZmlsZU5hbWVzTm90Um90YXRlZC5maWx0ZXIoZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlICE9PSBmaWxlTmFtZTtcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IHJvdGF0ZWQ6IGZpbGVOYW1lc1JvdGF0ZWQsIG5vdFJvdGF0ZWQ6IGZpbGVOYW1lc05vdFJvdGF0ZWQgfTtcbiAgfVxuXG4gIGdldEZpbGVMb2NhdGlvbihjb25maWcsIGZpbGVuYW1lKSB7XG4gICAgcmV0dXJuIGNvbmZpZy5tb3VudCArICcvZmlsZXMvJyArIGNvbmZpZy5hcHBsaWNhdGlvbklkICsgJy8nICsgZW5jb2RlVVJJQ29tcG9uZW50KGZpbGVuYW1lKTtcbiAgfVxuXG4gIGFzeW5jIGdldE1ldGFkYXRhKGZpbGVuYW1lKSB7XG4gICAgY29uc3QgYnVja2V0ID0gYXdhaXQgdGhpcy5fZ2V0QnVja2V0KCk7XG4gICAgY29uc3QgZmlsZXMgPSBhd2FpdCBidWNrZXQuZmluZCh7IGZpbGVuYW1lIH0pLnRvQXJyYXkoKTtcbiAgICBpZiAoZmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHsgbWV0YWRhdGEgfSA9IGZpbGVzWzBdO1xuICAgIHJldHVybiB7IG1ldGFkYXRhIH07XG4gIH1cblxuICBhc3luYyBoYW5kbGVGaWxlU3RyZWFtKGZpbGVuYW1lOiBzdHJpbmcsIHJlcSwgcmVzLCBjb250ZW50VHlwZSkge1xuICAgIGNvbnN0IGJ1Y2tldCA9IGF3YWl0IHRoaXMuX2dldEJ1Y2tldCgpO1xuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgYnVja2V0LmZpbmQoeyBmaWxlbmFtZSB9KS50b0FycmF5KCk7XG4gICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaWxlTm90Rm91bmQnKTtcbiAgICB9XG4gICAgY29uc3QgcGFydHMgPSByZXFcbiAgICAgIC5nZXQoJ1JhbmdlJylcbiAgICAgIC5yZXBsYWNlKC9ieXRlcz0vLCAnJylcbiAgICAgIC5zcGxpdCgnLScpO1xuICAgIGNvbnN0IHBhcnRpYWxzdGFydCA9IHBhcnRzWzBdO1xuICAgIGNvbnN0IHBhcnRpYWxlbmQgPSBwYXJ0c1sxXTtcblxuICAgIGNvbnN0IGZpbGVMZW5ndGggPSBmaWxlc1swXS5sZW5ndGg7XG4gICAgY29uc3QgZmlsZVN0YXJ0ID0gcGFyc2VJbnQocGFydGlhbHN0YXJ0LCAxMCk7XG4gICAgY29uc3QgZmlsZUVuZCA9IHBhcnRpYWxlbmQgPyBwYXJzZUludChwYXJ0aWFsZW5kLCAxMCkgOiBmaWxlTGVuZ3RoO1xuXG4gICAgbGV0IHN0YXJ0ID0gTWF0aC5taW4oZmlsZVN0YXJ0IHx8IDAsIGZpbGVFbmQsIGZpbGVMZW5ndGgpO1xuICAgIGxldCBlbmQgPSBNYXRoLm1heChmaWxlU3RhcnQgfHwgMCwgZmlsZUVuZCkgKyAxIHx8IGZpbGVMZW5ndGg7XG4gICAgaWYgKGlzTmFOKGZpbGVTdGFydCkpIHtcbiAgICAgIHN0YXJ0ID0gZmlsZUxlbmd0aCAtIGVuZCArIDE7XG4gICAgICBlbmQgPSBmaWxlTGVuZ3RoO1xuICAgIH1cbiAgICBlbmQgPSBNYXRoLm1pbihlbmQsIGZpbGVMZW5ndGgpO1xuICAgIHN0YXJ0ID0gTWF0aC5tYXgoc3RhcnQsIDApO1xuXG4gICAgcmVzLnN0YXR1cygyMDYpO1xuICAgIHJlcy5oZWFkZXIoJ0FjY2VwdC1SYW5nZXMnLCAnYnl0ZXMnKTtcbiAgICByZXMuaGVhZGVyKCdDb250ZW50LUxlbmd0aCcsIGVuZCAtIHN0YXJ0KTtcbiAgICByZXMuaGVhZGVyKCdDb250ZW50LVJhbmdlJywgJ2J5dGVzICcgKyBzdGFydCArICctJyArIGVuZCArICcvJyArIGZpbGVMZW5ndGgpO1xuICAgIHJlcy5oZWFkZXIoJ0NvbnRlbnQtVHlwZScsIGNvbnRlbnRUeXBlKTtcbiAgICBjb25zdCBzdHJlYW0gPSBidWNrZXQub3BlbkRvd25sb2FkU3RyZWFtQnlOYW1lKGZpbGVuYW1lKTtcbiAgICBzdHJlYW0uc3RhcnQoc3RhcnQpO1xuICAgIGlmIChlbmQpIHtcbiAgICAgIHN0cmVhbS5lbmQoZW5kKTtcbiAgICB9XG4gICAgc3RyZWFtLm9uKCdkYXRhJywgY2h1bmsgPT4ge1xuICAgICAgcmVzLndyaXRlKGNodW5rKTtcbiAgICB9KTtcbiAgICBzdHJlYW0ub24oJ2Vycm9yJywgZSA9PiB7XG4gICAgICByZXMuc3RhdHVzKDQwNCk7XG4gICAgICByZXMuc2VuZChlLm1lc3NhZ2UpO1xuICAgIH0pO1xuICAgIHN0cmVhbS5vbignZW5kJywgKCkgPT4ge1xuICAgICAgcmVzLmVuZCgpO1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlU2h1dGRvd24oKSB7XG4gICAgaWYgKCF0aGlzLl9jbGllbnQpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NsaWVudC5jbG9zZShmYWxzZSk7XG4gIH1cblxuICB2YWxpZGF0ZUZpbGVuYW1lKGZpbGVuYW1lKSB7XG4gICAgcmV0dXJuIHZhbGlkYXRlRmlsZW5hbWUoZmlsZW5hbWUpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEdyaWRGU0J1Y2tldEFkYXB0ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQVNBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFNBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUFzQyxTQUFBRyx1QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FB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
|
|
230
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9uZ29kYiIsInJlcXVpcmUiLCJfRmlsZXNBZGFwdGVyIiwiX2RlZmF1bHRzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNyeXB0byIsIkdyaWRGU0J1Y2tldEFkYXB0ZXIiLCJGaWxlc0FkYXB0ZXIiLCJjb25zdHJ1Y3RvciIsIm1vbmdvRGF0YWJhc2VVUkkiLCJkZWZhdWx0cyIsIkRlZmF1bHRNb25nb1VSSSIsIm1vbmdvT3B0aW9ucyIsImVuY3J5cHRpb25LZXkiLCJ1bmRlZmluZWQiLCJfZGF0YWJhc2VVUkkiLCJfYWxnb3JpdGhtIiwiX2VuY3J5cHRpb25LZXkiLCJjcmVhdGVIYXNoIiwidXBkYXRlIiwiU3RyaW5nIiwiZGlnZXN0Iiwic3Vic3RyaW5nIiwiZGVmYXVsdE1vbmdvT3B0aW9ucyIsIl9tb25nb09wdGlvbnMiLCJPYmplY3QiLCJhc3NpZ24iLCJrZXkiLCJfY29ubmVjdCIsIl9jb25uZWN0aW9uUHJvbWlzZSIsIk1vbmdvQ2xpZW50IiwiY29ubmVjdCIsInRoZW4iLCJjbGllbnQiLCJfY2xpZW50IiwiZGIiLCJzIiwib3B0aW9ucyIsImRiTmFtZSIsIl9nZXRCdWNrZXQiLCJkYXRhYmFzZSIsIkdyaWRGU0J1Y2tldCIsImNyZWF0ZUZpbGUiLCJmaWxlbmFtZSIsImRhdGEiLCJjb250ZW50VHlwZSIsImJ1Y2tldCIsInN0cmVhbSIsIm9wZW5VcGxvYWRTdHJlYW0iLCJtZXRhZGF0YSIsIml2IiwicmFuZG9tQnl0ZXMiLCJjaXBoZXIiLCJjcmVhdGVDaXBoZXJpdiIsImVuY3J5cHRlZFJlc3VsdCIsIkJ1ZmZlciIsImNvbmNhdCIsImZpbmFsIiwiZ2V0QXV0aFRhZyIsIndyaXRlIiwiZXJyIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJlbmQiLCJvbiIsImRlbGV0ZUZpbGUiLCJkb2N1bWVudHMiLCJmaW5kIiwidG9BcnJheSIsImxlbmd0aCIsIkVycm9yIiwiYWxsIiwibWFwIiwiZG9jIiwiZGVsZXRlIiwiX2lkIiwiZ2V0RmlsZURhdGEiLCJvcGVuRG93bmxvYWRTdHJlYW1CeU5hbWUiLCJyZWFkIiwiY2h1bmtzIiwicHVzaCIsImF1dGhUYWdMb2NhdGlvbiIsIml2TG9jYXRpb24iLCJhdXRoVGFnIiwic2xpY2UiLCJlbmNyeXB0ZWQiLCJkZWNpcGhlciIsImNyZWF0ZURlY2lwaGVyaXYiLCJzZXRBdXRoVGFnIiwiZGVjcnlwdGVkIiwicm90YXRlRW5jcnlwdGlvbktleSIsImZpbGVOYW1lcyIsIm9sZEtleUZpbGVBZGFwdGVyIiwib2xkS2V5IiwiZmlsZU5hbWVzSXRlcmF0b3IiLCJmb3JFYWNoIiwiZmlsZSIsImZpbGVOYW1lc05vdFJvdGF0ZWQiLCJmaWxlTmFtZXNSb3RhdGVkIiwiZmlsZU5hbWUiLCJwbGFpblRleHREYXRhIiwiZmlsdGVyIiwidmFsdWUiLCJyb3RhdGVkIiwibm90Um90YXRlZCIsImdldEZpbGVMb2NhdGlvbiIsImNvbmZpZyIsIm1vdW50IiwiYXBwbGljYXRpb25JZCIsImVuY29kZVVSSUNvbXBvbmVudCIsImdldE1ldGFkYXRhIiwiZmlsZXMiLCJoYW5kbGVGaWxlU3RyZWFtIiwicmVxIiwicmVzIiwicGFydHMiLCJnZXQiLCJyZXBsYWNlIiwic3BsaXQiLCJwYXJ0aWFsc3RhcnQiLCJwYXJ0aWFsZW5kIiwiZmlsZUxlbmd0aCIsImZpbGVTdGFydCIsInBhcnNlSW50IiwiZmlsZUVuZCIsInN0YXJ0IiwiTWF0aCIsIm1pbiIsIm1heCIsImlzTmFOIiwic3RhdHVzIiwiaGVhZGVyIiwiY2h1bmsiLCJzZW5kIiwibWVzc2FnZSIsImhhbmRsZVNodXRkb3duIiwiY2xvc2UiLCJ2YWxpZGF0ZUZpbGVuYW1lIiwiZXhwb3J0cyIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0ZpbGVzL0dyaWRGU0J1Y2tldEFkYXB0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gR3JpZEZTQnVja2V0QWRhcHRlclxuIFN0b3JlcyBmaWxlcyBpbiBNb25nbyB1c2luZyBHcmlkRlNcbiBSZXF1aXJlcyB0aGUgZGF0YWJhc2UgYWRhcHRlciB0byBiZSBiYXNlZCBvbiBtb25nb2NsaWVudFxuXG4gQGZsb3cgd2Vha1xuICovXG5cbi8vIEBmbG93LWRpc2FibGUtbmV4dFxuaW1wb3J0IHsgTW9uZ29DbGllbnQsIEdyaWRGU0J1Y2tldCwgRGIgfSBmcm9tICdtb25nb2RiJztcbmltcG9ydCB7IEZpbGVzQWRhcHRlciwgdmFsaWRhdGVGaWxlbmFtZSB9IGZyb20gJy4vRmlsZXNBZGFwdGVyJztcbmltcG9ydCBkZWZhdWx0cyBmcm9tICcuLi8uLi9kZWZhdWx0cyc7XG5jb25zdCBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTtcblxuZXhwb3J0IGNsYXNzIEdyaWRGU0J1Y2tldEFkYXB0ZXIgZXh0ZW5kcyBGaWxlc0FkYXB0ZXIge1xuICBfZGF0YWJhc2VVUkk6IHN0cmluZztcbiAgX2Nvbm5lY3Rpb25Qcm9taXNlOiBQcm9taXNlPERiPjtcbiAgX21vbmdvT3B0aW9uczogT2JqZWN0O1xuICBfYWxnb3JpdGhtOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbW9uZ29EYXRhYmFzZVVSSSA9IGRlZmF1bHRzLkRlZmF1bHRNb25nb1VSSSxcbiAgICBtb25nb09wdGlvbnMgPSB7fSxcbiAgICBlbmNyeXB0aW9uS2V5ID0gdW5kZWZpbmVkXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fZGF0YWJhc2VVUkkgPSBtb25nb0RhdGFiYXNlVVJJO1xuICAgIHRoaXMuX2FsZ29yaXRobSA9ICdhZXMtMjU2LWdjbSc7XG4gICAgdGhpcy5fZW5jcnlwdGlvbktleSA9XG4gICAgICBlbmNyeXB0aW9uS2V5ICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBjcnlwdG9cbiAgICAgICAgICAuY3JlYXRlSGFzaCgnc2hhMjU2JylcbiAgICAgICAgICAudXBkYXRlKFN0cmluZyhlbmNyeXB0aW9uS2V5KSlcbiAgICAgICAgICAuZGlnZXN0KCdiYXNlNjQnKVxuICAgICAgICAgIC5zdWJzdHJpbmcoMCwgMzIpXG4gICAgICAgIDogbnVsbDtcbiAgICBjb25zdCBkZWZhdWx0TW9uZ29PcHRpb25zID0ge1xuICAgIH07XG4gICAgY29uc3QgX21vbmdvT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oZGVmYXVsdE1vbmdvT3B0aW9ucywgbW9uZ29PcHRpb25zKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBbJ2VuYWJsZVNjaGVtYUhvb2tzJywgJ3NjaGVtYUNhY2hlVHRsJywgJ21heFRpbWVNUyddKSB7XG4gICAgICBkZWxldGUgX21vbmdvT3B0aW9uc1trZXldO1xuICAgIH1cbiAgICB0aGlzLl9tb25nb09wdGlvbnMgPSBfbW9uZ29PcHRpb25zO1xuICB9XG5cbiAgX2Nvbm5lY3QoKSB7XG4gICAgaWYgKCF0aGlzLl9jb25uZWN0aW9uUHJvbWlzZSkge1xuICAgICAgdGhpcy5fY29ubmVjdGlvblByb21pc2UgPSBNb25nb0NsaWVudC5jb25uZWN0KHRoaXMuX2RhdGFiYXNlVVJJLCB0aGlzLl9tb25nb09wdGlvbnMpLnRoZW4oXG4gICAgICAgIGNsaWVudCA9PiB7XG4gICAgICAgICAgdGhpcy5fY2xpZW50ID0gY2xpZW50O1xuICAgICAgICAgIHJldHVybiBjbGllbnQuZGIoY2xpZW50LnMub3B0aW9ucy5kYk5hbWUpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvblByb21pc2U7XG4gIH1cblxuICBfZ2V0QnVja2V0KCkge1xuICAgIHJldHVybiB0aGlzLl9jb25uZWN0KCkudGhlbihkYXRhYmFzZSA9PiBuZXcgR3JpZEZTQnVja2V0KGRhdGFiYXNlKSk7XG4gIH1cblxuICAvLyBGb3IgYSBnaXZlbiBjb25maWcgb2JqZWN0LCBmaWxlbmFtZSwgYW5kIGRhdGEsIHN0b3JlIGEgZmlsZVxuICAvLyBSZXR1cm5zIGEgcHJvbWlzZVxuICBhc3luYyBjcmVhdGVGaWxlKGZpbGVuYW1lOiBzdHJpbmcsIGRhdGEsIGNvbnRlbnRUeXBlLCBvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBidWNrZXQgPSBhd2FpdCB0aGlzLl9nZXRCdWNrZXQoKTtcbiAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBidWNrZXQub3BlblVwbG9hZFN0cmVhbShmaWxlbmFtZSwge1xuICAgICAgbWV0YWRhdGE6IG9wdGlvbnMubWV0YWRhdGEsXG4gICAgfSk7XG4gICAgaWYgKHRoaXMuX2VuY3J5cHRpb25LZXkgIT09IG51bGwpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGl2ID0gY3J5cHRvLnJhbmRvbUJ5dGVzKDE2KTtcbiAgICAgICAgY29uc3QgY2lwaGVyID0gY3J5cHRvLmNyZWF0ZUNpcGhlcml2KHRoaXMuX2FsZ29yaXRobSwgdGhpcy5fZW5jcnlwdGlvbktleSwgaXYpO1xuICAgICAgICBjb25zdCBlbmNyeXB0ZWRSZXN1bHQgPSBCdWZmZXIuY29uY2F0KFtcbiAgICAgICAgICBjaXBoZXIudXBkYXRlKGRhdGEpLFxuICAgICAgICAgIGNpcGhlci5maW5hbCgpLFxuICAgICAgICAgIGl2LFxuICAgICAgICAgIGNpcGhlci5nZXRBdXRoVGFnKCksXG4gICAgICAgIF0pO1xuICAgICAgICBhd2FpdCBzdHJlYW0ud3JpdGUoZW5jcnlwdGVkUmVzdWx0KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHN0cmVhbS53cml0ZShkYXRhKTtcbiAgICB9XG4gICAgc3RyZWFtLmVuZCgpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBzdHJlYW0ub24oJ2ZpbmlzaCcsIHJlc29sdmUpO1xuICAgICAgc3RyZWFtLm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVGaWxlKGZpbGVuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBidWNrZXQgPSBhd2FpdCB0aGlzLl9nZXRCdWNrZXQoKTtcbiAgICBjb25zdCBkb2N1bWVudHMgPSBhd2FpdCBidWNrZXQuZmluZCh7IGZpbGVuYW1lIH0pLnRvQXJyYXkoKTtcbiAgICBpZiAoZG9jdW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaWxlTm90Rm91bmQnKTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgZG9jdW1lbnRzLm1hcChkb2MgPT4ge1xuICAgICAgICByZXR1cm4gYnVja2V0LmRlbGV0ZShkb2MuX2lkKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGdldEZpbGVEYXRhKGZpbGVuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBidWNrZXQgPSBhd2FpdCB0aGlzLl9nZXRCdWNrZXQoKTtcbiAgICBjb25zdCBzdHJlYW0gPSBidWNrZXQub3BlbkRvd25sb2FkU3RyZWFtQnlOYW1lKGZpbGVuYW1lKTtcbiAgICBzdHJlYW0ucmVhZCgpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBjaHVua3MgPSBbXTtcbiAgICAgIHN0cmVhbS5vbignZGF0YScsIGRhdGEgPT4ge1xuICAgICAgICBjaHVua3MucHVzaChkYXRhKTtcbiAgICAgIH0pO1xuICAgICAgc3RyZWFtLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBCdWZmZXIuY29uY2F0KGNodW5rcyk7XG4gICAgICAgIGlmICh0aGlzLl9lbmNyeXB0aW9uS2V5ICE9PSBudWxsKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGF1dGhUYWdMb2NhdGlvbiA9IGRhdGEubGVuZ3RoIC0gMTY7XG4gICAgICAgICAgICBjb25zdCBpdkxvY2F0aW9uID0gZGF0YS5sZW5ndGggLSAzMjtcbiAgICAgICAgICAgIGNvbnN0IGF1dGhUYWcgPSBkYXRhLnNsaWNlKGF1dGhUYWdMb2NhdGlvbik7XG4gICAgICAgICAgICBjb25zdCBpdiA9IGRhdGEuc2xpY2UoaXZMb2NhdGlvbiwgYXV0aFRhZ0xvY2F0aW9uKTtcbiAgICAgICAgICAgIGNvbnN0IGVuY3J5cHRlZCA9IGRhdGEuc2xpY2UoMCwgaXZMb2NhdGlvbik7XG4gICAgICAgICAgICBjb25zdCBkZWNpcGhlciA9IGNyeXB0by5jcmVhdGVEZWNpcGhlcml2KHRoaXMuX2FsZ29yaXRobSwgdGhpcy5fZW5jcnlwdGlvbktleSwgaXYpO1xuICAgICAgICAgICAgZGVjaXBoZXIuc2V0QXV0aFRhZyhhdXRoVGFnKTtcbiAgICAgICAgICAgIGNvbnN0IGRlY3J5cHRlZCA9IEJ1ZmZlci5jb25jYXQoW2RlY2lwaGVyLnVwZGF0ZShlbmNyeXB0ZWQpLCBkZWNpcGhlci5maW5hbCgpXSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShkZWNyeXB0ZWQpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgfSk7XG4gICAgICBzdHJlYW0ub24oJ2Vycm9yJywgZXJyID0+IHtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJvdGF0ZUVuY3J5cHRpb25LZXkob3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGZpbGVOYW1lcyA9IFtdO1xuICAgIGxldCBvbGRLZXlGaWxlQWRhcHRlciA9IHt9O1xuICAgIGNvbnN0IGJ1Y2tldCA9IGF3YWl0IHRoaXMuX2dldEJ1Y2tldCgpO1xuICAgIGlmIChvcHRpb25zLm9sZEtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvbGRLZXlGaWxlQWRhcHRlciA9IG5ldyBHcmlkRlNCdWNrZXRBZGFwdGVyKFxuICAgICAgICB0aGlzLl9kYXRhYmFzZVVSSSxcbiAgICAgICAgdGhpcy5fbW9uZ29PcHRpb25zLFxuICAgICAgICBvcHRpb25zLm9sZEtleVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2xkS2V5RmlsZUFkYXB0ZXIgPSBuZXcgR3JpZEZTQnVja2V0QWRhcHRlcih0aGlzLl9kYXRhYmFzZVVSSSwgdGhpcy5fbW9uZ29PcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuZmlsZU5hbWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZpbGVOYW1lcyA9IG9wdGlvbnMuZmlsZU5hbWVzO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmaWxlTmFtZXNJdGVyYXRvciA9IGF3YWl0IGJ1Y2tldC5maW5kKCkudG9BcnJheSgpO1xuICAgICAgZmlsZU5hbWVzSXRlcmF0b3IuZm9yRWFjaChmaWxlID0+IHtcbiAgICAgICAgZmlsZU5hbWVzLnB1c2goZmlsZS5maWxlbmFtZSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgbGV0IGZpbGVOYW1lc05vdFJvdGF0ZWQgPSBmaWxlTmFtZXM7XG4gICAgY29uc3QgZmlsZU5hbWVzUm90YXRlZCA9IFtdO1xuICAgIGZvciAoY29uc3QgZmlsZU5hbWUgb2YgZmlsZU5hbWVzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwbGFpblRleHREYXRhID0gYXdhaXQgb2xkS2V5RmlsZUFkYXB0ZXIuZ2V0RmlsZURhdGEoZmlsZU5hbWUpO1xuICAgICAgICAvLyBPdmVyd3JpdGUgZmlsZSB3aXRoIGRhdGEgZW5jcnlwdGVkIHdpdGggbmV3IGtleVxuICAgICAgICBhd2FpdCB0aGlzLmNyZWF0ZUZpbGUoZmlsZU5hbWUsIHBsYWluVGV4dERhdGEpO1xuICAgICAgICBmaWxlTmFtZXNSb3RhdGVkLnB1c2goZmlsZU5hbWUpO1xuICAgICAgICBmaWxlTmFtZXNOb3RSb3RhdGVkID0gZmlsZU5hbWVzTm90Um90YXRlZC5maWx0ZXIoZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlICE9PSBmaWxlTmFtZTtcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IHJvdGF0ZWQ6IGZpbGVOYW1lc1JvdGF0ZWQsIG5vdFJvdGF0ZWQ6IGZpbGVOYW1lc05vdFJvdGF0ZWQgfTtcbiAgfVxuXG4gIGdldEZpbGVMb2NhdGlvbihjb25maWcsIGZpbGVuYW1lKSB7XG4gICAgcmV0dXJuIGNvbmZpZy5tb3VudCArICcvZmlsZXMvJyArIGNvbmZpZy5hcHBsaWNhdGlvbklkICsgJy8nICsgZW5jb2RlVVJJQ29tcG9uZW50KGZpbGVuYW1lKTtcbiAgfVxuXG4gIGFzeW5jIGdldE1ldGFkYXRhKGZpbGVuYW1lKSB7XG4gICAgY29uc3QgYnVja2V0ID0gYXdhaXQgdGhpcy5fZ2V0QnVja2V0KCk7XG4gICAgY29uc3QgZmlsZXMgPSBhd2FpdCBidWNrZXQuZmluZCh7IGZpbGVuYW1lIH0pLnRvQXJyYXkoKTtcbiAgICBpZiAoZmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHsgbWV0YWRhdGEgfSA9IGZpbGVzWzBdO1xuICAgIHJldHVybiB7IG1ldGFkYXRhIH07XG4gIH1cblxuICBhc3luYyBoYW5kbGVGaWxlU3RyZWFtKGZpbGVuYW1lOiBzdHJpbmcsIHJlcSwgcmVzLCBjb250ZW50VHlwZSkge1xuICAgIGNvbnN0IGJ1Y2tldCA9IGF3YWl0IHRoaXMuX2dldEJ1Y2tldCgpO1xuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgYnVja2V0LmZpbmQoeyBmaWxlbmFtZSB9KS50b0FycmF5KCk7XG4gICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaWxlTm90Rm91bmQnKTtcbiAgICB9XG4gICAgY29uc3QgcGFydHMgPSByZXFcbiAgICAgIC5nZXQoJ1JhbmdlJylcbiAgICAgIC5yZXBsYWNlKC9ieXRlcz0vLCAnJylcbiAgICAgIC5zcGxpdCgnLScpO1xuICAgIGNvbnN0IHBhcnRpYWxzdGFydCA9IHBhcnRzWzBdO1xuICAgIGNvbnN0IHBhcnRpYWxlbmQgPSBwYXJ0c1sxXTtcblxuICAgIGNvbnN0IGZpbGVMZW5ndGggPSBmaWxlc1swXS5sZW5ndGg7XG4gICAgY29uc3QgZmlsZVN0YXJ0ID0gcGFyc2VJbnQocGFydGlhbHN0YXJ0LCAxMCk7XG4gICAgY29uc3QgZmlsZUVuZCA9IHBhcnRpYWxlbmQgPyBwYXJzZUludChwYXJ0aWFsZW5kLCAxMCkgOiBmaWxlTGVuZ3RoO1xuXG4gICAgbGV0IHN0YXJ0ID0gTWF0aC5taW4oZmlsZVN0YXJ0IHx8IDAsIGZpbGVFbmQsIGZpbGVMZW5ndGgpO1xuICAgIGxldCBlbmQgPSBNYXRoLm1heChmaWxlU3RhcnQgfHwgMCwgZmlsZUVuZCkgKyAxIHx8IGZpbGVMZW5ndGg7XG4gICAgaWYgKGlzTmFOKGZpbGVTdGFydCkpIHtcbiAgICAgIHN0YXJ0ID0gZmlsZUxlbmd0aCAtIGVuZCArIDE7XG4gICAgICBlbmQgPSBmaWxlTGVuZ3RoO1xuICAgIH1cbiAgICBlbmQgPSBNYXRoLm1pbihlbmQsIGZpbGVMZW5ndGgpO1xuICAgIHN0YXJ0ID0gTWF0aC5tYXgoc3RhcnQsIDApO1xuXG4gICAgcmVzLnN0YXR1cygyMDYpO1xuICAgIHJlcy5oZWFkZXIoJ0FjY2VwdC1SYW5nZXMnLCAnYnl0ZXMnKTtcbiAgICByZXMuaGVhZGVyKCdDb250ZW50LUxlbmd0aCcsIGVuZCAtIHN0YXJ0KTtcbiAgICByZXMuaGVhZGVyKCdDb250ZW50LVJhbmdlJywgJ2J5dGVzICcgKyBzdGFydCArICctJyArIGVuZCArICcvJyArIGZpbGVMZW5ndGgpO1xuICAgIHJlcy5oZWFkZXIoJ0NvbnRlbnQtVHlwZScsIGNvbnRlbnRUeXBlKTtcbiAgICBjb25zdCBzdHJlYW0gPSBidWNrZXQub3BlbkRvd25sb2FkU3RyZWFtQnlOYW1lKGZpbGVuYW1lKTtcbiAgICBzdHJlYW0uc3RhcnQoc3RhcnQpO1xuICAgIGlmIChlbmQpIHtcbiAgICAgIHN0cmVhbS5lbmQoZW5kKTtcbiAgICB9XG4gICAgc3RyZWFtLm9uKCdkYXRhJywgY2h1bmsgPT4ge1xuICAgICAgcmVzLndyaXRlKGNodW5rKTtcbiAgICB9KTtcbiAgICBzdHJlYW0ub24oJ2Vycm9yJywgZSA9PiB7XG4gICAgICByZXMuc3RhdHVzKDQwNCk7XG4gICAgICByZXMuc2VuZChlLm1lc3NhZ2UpO1xuICAgIH0pO1xuICAgIHN0cmVhbS5vbignZW5kJywgKCkgPT4ge1xuICAgICAgcmVzLmVuZCgpO1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlU2h1dGRvd24oKSB7XG4gICAgaWYgKCF0aGlzLl9jbGllbnQpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NsaWVudC5jbG9zZShmYWxzZSk7XG4gIH1cblxuICB2YWxpZGF0ZUZpbGVuYW1lKGZpbGVuYW1lKSB7XG4gICAgcmV0dXJuIHZhbGlkYXRlRmlsZW5hbWUoZmlsZW5hbWUpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEdyaWRGU0J1Y2tldEFkYXB0ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQVNBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFNBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUFzQyxTQUFBRyx1QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQVh0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFJQSxNQUFNRyxNQUFNLEdBQUdQLE9BQU8sQ0FBQyxRQUFRLENBQUM7QUFFekIsTUFBTVEsbUJB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
|
|
@@ -10,8 +10,8 @@ const _excluded = ["type", "targetClass"];
|
|
|
10
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
function _objectDestructuringEmpty(t) { if (null == t) throw new TypeError("Cannot destructure " + t); }
|
|
12
12
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
13
|
-
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var
|
|
14
|
-
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.
|
|
13
|
+
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
14
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
|
|
15
15
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
16
16
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
17
17
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
@@ -328,4 +328,4 @@ class MongoSchemaCollection {
|
|
|
328
328
|
MongoSchemaCollection._TESTmongoSchemaToParseSchema = mongoSchemaToParseSchema;
|
|
329
329
|
MongoSchemaCollection.parseFieldTypeToMongoFieldType = parseFieldTypeToMongoFieldType;
|
|
330
330
|
var _default = exports.default = MongoSchemaCollection;
|
|
331
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfTW9uZ29Db2xsZWN0aW9uIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbm9kZSIsIl9leGNsdWRlZCIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9vYmplY3REZXN0cnVjdHVyaW5nRW1wdHkiLCJ0IiwiVHlwZUVycm9yIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwibiIsImFyZ3VtZW50cyIsImxlbmd0aCIsInIiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIm8iLCJpIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJvd25LZXlzIiwia2V5cyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJTdHJpbmciLCJOdW1iZXIiLCJtb25nb0ZpZWxkVG9QYXJzZVNjaGVtYUZpZWxkIiwidHlwZSIsInRhcmdldENsYXNzIiwic2xpY2UiLCJzdGFydHNXaXRoIiwibm9uRmllbGRTY2hlbWFLZXlzIiwibW9uZ29TY2hlbWFGaWVsZHNUb1BhcnNlU2NoZW1hRmllbGRzIiwic2NoZW1hIiwiZmllbGROYW1lcyIsImtleSIsInJlc3BvbnNlIiwicmVkdWNlIiwib2JqIiwiZmllbGROYW1lIiwiX21ldGFkYXRhIiwiZmllbGRzX29wdGlvbnMiLCJBQ0wiLCJjcmVhdGVkQXQiLCJ1cGRhdGVkQXQiLCJvYmplY3RJZCIsImVtcHR5Q0xQUyIsImZyZWV6ZSIsImZpbmQiLCJjb3VudCIsImdldCIsImNyZWF0ZSIsInVwZGF0ZSIsImRlbGV0ZSIsImFkZEZpZWxkIiwicHJvdGVjdGVkRmllbGRzIiwiZGVmYXVsdENMUFMiLCJtb25nb1NjaGVtYVRvUGFyc2VTY2hlbWEiLCJtb25nb1NjaGVtYSIsImNscHMiLCJpbmRleGVzIiwiY2xhc3NfcGVybWlzc2lvbnMiLCJjbGFzc05hbWUiLCJfaWQiLCJmaWVsZHMiLCJjbGFzc0xldmVsUGVybWlzc2lvbnMiLCJfbW9uZ29TY2hlbWFRdWVyeUZyb21OYW1lUXVlcnkiLCJuYW1lIiwicXVlcnkiLCJvYmplY3QiLCJwYXJzZUZpZWxkVHlwZVRvTW9uZ29GaWVsZFR5cGUiLCJNb25nb1NjaGVtYUNvbGxlY3Rpb24iLCJjb25zdHJ1Y3RvciIsImNvbGxlY3Rpb24iLCJfY29sbGVjdGlvbiIsIl9mZXRjaEFsbFNjaGVtYXNGcm9tX1NDSEVNQSIsIl9yYXdGaW5kIiwidGhlbiIsInNjaGVtYXMiLCJtYXAiLCJfZmV0Y2hPbmVTY2hlbWFGcm9tX1NDSEVNQSIsImxpbWl0IiwicmVzdWx0cyIsInVuZGVmaW5lZCIsImZpbmRBbmREZWxldGVTY2hlbWEiLCJfbW9uZ29Db2xsZWN0aW9uIiwiZmluZE9uZUFuZERlbGV0ZSIsImluc2VydFNjaGVtYSIsImluc2VydE9uZSIsImNhdGNoIiwiZXJyb3IiLCJjb2RlIiwiUGFyc2UiLCJFcnJvciIsIkRVUExJQ0FURV9WQUxVRSIsInVwZGF0ZVNjaGVtYSIsInVwZGF0ZU9uZSIsInVwc2VydFNjaGVtYSIsInVwc2VydE9uZSIsImFkZEZpZWxkSWZOb3RFeGlzdHMiLCJmaWVsZFR5cGUiLCJzb21lIiwiZXhpc3RpbmdGaWVsZCIsIklOQ09SUkVDVF9UWVBFIiwiZmllbGRPcHRpb25zIiwiJGV4aXN0cyIsIiRzZXQiLCJ1cGRhdGVGaWVsZE9wdGlvbnMiLCJfVEVTVG1vbmdvU2NoZW1hVG9QYXJzZVNjaGVtYSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9BZGFwdGVycy9TdG9yYWdlL01vbmdvL01vbmdvU2NoZW1hQ29sbGVjdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTW9uZ29Db2xsZWN0aW9uIGZyb20gJy4vTW9uZ29Db2xsZWN0aW9uJztcbmltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcblxuZnVuY3Rpb24gbW9uZ29GaWVsZFRvUGFyc2VTY2hlbWFGaWVsZCh0eXBlKSB7XG4gIGlmICh0eXBlWzBdID09PSAnKicpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ1BvaW50ZXInLFxuICAgICAgdGFyZ2V0Q2xhc3M6IHR5cGUuc2xpY2UoMSksXG4gICAgfTtcbiAgfVxuICBpZiAodHlwZS5zdGFydHNXaXRoKCdyZWxhdGlvbjwnKSkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnUmVsYXRpb24nLFxuICAgICAgdGFyZ2V0Q2xhc3M6IHR5cGUuc2xpY2UoJ3JlbGF0aW9uPCcubGVuZ3RoLCB0eXBlLmxlbmd0aCAtIDEpLFxuICAgIH07XG4gIH1cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdOdW1iZXInIH07XG4gICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdTdHJpbmcnIH07XG4gICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICByZXR1cm4geyB0eXBlOiAnQm9vbGVhbicgfTtcbiAgICBjYXNlICdkYXRlJzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdEYXRlJyB9O1xuICAgIGNhc2UgJ21hcCc6XG4gICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdPYmplY3QnIH07XG4gICAgY2FzZSAnYXJyYXknOlxuICAgICAgcmV0dXJuIHsgdHlwZTogJ0FycmF5JyB9O1xuICAgIGNhc2UgJ2dlb3BvaW50JzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdHZW9Qb2ludCcgfTtcbiAgICBjYXNlICdmaWxlJzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdGaWxlJyB9O1xuICAgIGNhc2UgJ2J5dGVzJzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdCeXRlcycgfTtcbiAgICBjYXNlICdwb2x5Z29uJzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdQb2x5Z29uJyB9O1xuICB9XG59XG5cbmNvbnN0IG5vbkZpZWxkU2NoZW1hS2V5cyA9IFsnX2lkJywgJ19tZXRhZGF0YScsICdfY2xpZW50X3Blcm1pc3Npb25zJ107XG5mdW5jdGlvbiBtb25nb1NjaGVtYUZpZWxkc1RvUGFyc2VTY2hlbWFGaWVsZHMoc2NoZW1hKSB7XG4gIHZhciBmaWVsZE5hbWVzID0gT2JqZWN0LmtleXMoc2NoZW1hKS5maWx0ZXIoa2V5ID0+IG5vbkZpZWxkU2NoZW1hS2V5cy5pbmRleE9mKGtleSkgPT09IC0xKTtcbiAgdmFyIHJlc3BvbnNlID0gZmllbGROYW1lcy5yZWR1Y2UoKG9iaiwgZmllbGROYW1lKSA9PiB7XG4gICAgb2JqW2ZpZWxkTmFtZV0gPSBtb25nb0ZpZWxkVG9QYXJzZVNjaGVtYUZpZWxkKHNjaGVtYVtmaWVsZE5hbWVdKTtcbiAgICBpZiAoXG4gICAgICBzY2hlbWEuX21ldGFkYXRhICYmXG4gICAgICBzY2hlbWEuX21ldGFkYXRhLmZpZWxkc19vcHRpb25zICYmXG4gICAgICBzY2hlbWEuX21ldGFkYXRhLmZpZWxkc19vcHRpb25zW2ZpZWxkTmFtZV1cbiAgICApIHtcbiAgICAgIG9ialtmaWVsZE5hbWVdID0gT2JqZWN0LmFzc2lnbihcbiAgICAgICAge30sXG4gICAgICAgIG9ialtmaWVsZE5hbWVdLFxuICAgICAgICBzY2hlbWEuX21ldGFkYXRhLmZpZWxkc19vcHRpb25zW2ZpZWxkTmFtZV1cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH0sIHt9KTtcbiAgcmVzcG9uc2UuQUNMID0geyB0eXBlOiAnQUNMJyB9O1xuICByZXNwb25zZS5jcmVhdGVkQXQgPSB7IHR5cGU6ICdEYXRlJyB9O1xuICByZXNwb25zZS51cGRhdGVkQXQgPSB7IHR5cGU6ICdEYXRlJyB9O1xuICByZXNwb25zZS5vYmplY3RJZCA9IHsgdHlwZTogJ1N0cmluZycgfTtcbiAgcmV0dXJuIHJlc3BvbnNlO1xufVxuXG5jb25zdCBlbXB0eUNMUFMgPSBPYmplY3QuZnJlZXplKHtcbiAgZmluZDoge30sXG4gIGNvdW50OiB7fSxcbiAgZ2V0OiB7fSxcbiAgY3JlYXRlOiB7fSxcbiAgdXBkYXRlOiB7fSxcbiAgZGVsZXRlOiB7fSxcbiAgYWRkRmllbGQ6IHt9LFxuICBwcm90ZWN0ZWRGaWVsZHM6IHt9LFxufSk7XG5cbmNvbnN0IGRlZmF1bHRDTFBTID0gT2JqZWN0LmZyZWV6ZSh7XG4gIGZpbmQ6IHsgJyonOiB0cnVlIH0sXG4gIGNvdW50OiB7ICcqJzogdHJ1ZSB9LFxuICBnZXQ6IHsgJyonOiB0cnVlIH0sXG4gIGNyZWF0ZTogeyAnKic6IHRydWUgfSxcbiAgdXBkYXRlOiB7ICcqJzogdHJ1ZSB9LFxuICBkZWxldGU6IHsgJyonOiB0cnVlIH0sXG4gIGFkZEZpZWxkOiB7ICcqJzogdHJ1ZSB9LFxuICBwcm90ZWN0ZWRGaWVsZHM6IHsgJyonOiBbXSB9LFxufSk7XG5cbmZ1bmN0aW9uIG1vbmdvU2NoZW1hVG9QYXJzZVNjaGVtYShtb25nb1NjaGVtYSkge1xuICBsZXQgY2xwcyA9IGRlZmF1bHRDTFBTO1xuICBsZXQgaW5kZXhlcyA9IHt9O1xuICBpZiAobW9uZ29TY2hlbWEuX21ldGFkYXRhKSB7XG4gICAgaWYgKG1vbmdvU2NoZW1hLl9tZXRhZGF0YS5jbGFzc19wZXJtaXNzaW9ucykge1xuICAgICAgY2xwcyA9IHsgLi4uZW1wdHlDTFBTLCAuLi5tb25nb1NjaGVtYS5fbWV0YWRhdGEuY2xhc3NfcGVybWlzc2lvbnMgfTtcbiAgICB9XG4gICAgaWYgKG1vbmdvU2NoZW1hLl9tZXRhZGF0YS5pbmRleGVzKSB7XG4gICAgICBpbmRleGVzID0geyAuLi5tb25nb1NjaGVtYS5fbWV0YWRhdGEuaW5kZXhlcyB9O1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIGNsYXNzTmFtZTogbW9uZ29TY2hlbWEuX2lkLFxuICAgIGZpZWxkczogbW9uZ29TY2hlbWFGaWVsZHNUb1BhcnNlU2NoZW1hRmllbGRzKG1vbmdvU2NoZW1hKSxcbiAgICBjbGFzc0xldmVsUGVybWlzc2lvbnM6IGNscHMsXG4gICAgaW5kZXhlczogaW5kZXhlcyxcbiAgfTtcbn1cblxuZnVuY3Rpb24gX21vbmdvU2NoZW1hUXVlcnlGcm9tTmFtZVF1ZXJ5KG5hbWU6IHN0cmluZywgcXVlcnkpIHtcbiAgY29uc3Qgb2JqZWN0ID0geyBfaWQ6IG5hbWUgfTtcbiAgaWYgKHF1ZXJ5KSB7XG4gICAgT2JqZWN0LmtleXMocXVlcnkpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIG9iamVjdFtrZXldID0gcXVlcnlba2V5XTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG4vLyBSZXR1cm5zIGEgdHlwZSBzdWl0YWJsZSBmb3IgaW5zZXJ0aW5nIGludG8gbW9uZ28gX1NDSEVNQSBjb2xsZWN0aW9uLlxuLy8gRG9lcyBubyB2YWxpZGF0aW9uLiBUaGF0IGlzIGV4cGVjdGVkIHRvIGJlIGRvbmUgaW4gUGFyc2UgU2VydmVyLlxuZnVuY3Rpb24gcGFyc2VGaWVsZFR5cGVUb01vbmdvRmllbGRUeXBlKHsgdHlwZSwgdGFyZ2V0Q2xhc3MgfSkge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdQb2ludGVyJzpcbiAgICAgIHJldHVybiBgKiR7dGFyZ2V0Q2xhc3N9YDtcbiAgICBjYXNlICdSZWxhdGlvbic6XG4gICAgICByZXR1cm4gYHJlbGF0aW9uPCR7dGFyZ2V0Q2xhc3N9PmA7XG4gICAgY2FzZSAnTnVtYmVyJzpcbiAgICAgIHJldHVybiAnbnVtYmVyJztcbiAgICBjYXNlICdTdHJpbmcnOlxuICAgICAgcmV0dXJuICdzdHJpbmcnO1xuICAgIGNhc2UgJ0Jvb2xlYW4nOlxuICAgICAgcmV0dXJuICdib29sZWFuJztcbiAgICBjYXNlICdEYXRlJzpcbiAgICAgIHJldHVybiAnZGF0ZSc7XG4gICAgY2FzZSAnT2JqZWN0JzpcbiAgICAgIHJldHVybiAnb2JqZWN0JztcbiAgICBjYXNlICdBcnJheSc6XG4gICAgICByZXR1cm4gJ2FycmF5JztcbiAgICBjYXNlICdHZW9Qb2ludCc6XG4gICAgICByZXR1cm4gJ2dlb3BvaW50JztcbiAgICBjYXNlICdGaWxlJzpcbiAgICAgIHJldHVybiAnZmlsZSc7XG4gICAgY2FzZSAnQnl0ZXMnOlxuICAgICAgcmV0dXJuICdieXRlcyc7XG4gICAgY2FzZSAnUG9seWdvbic6XG4gICAgICByZXR1cm4gJ3BvbHlnb24nO1xuICB9XG59XG5cbmNsYXNzIE1vbmdvU2NoZW1hQ29sbGVjdGlvbiB7XG4gIF9jb2xsZWN0aW9uOiBNb25nb0NvbGxlY3Rpb247XG5cbiAgY29uc3RydWN0b3IoY29sbGVjdGlvbjogTW9uZ29Db2xsZWN0aW9uKSB7XG4gICAgdGhpcy5fY29sbGVjdGlvbiA9IGNvbGxlY3Rpb247XG4gIH1cblxuICBfZmV0Y2hBbGxTY2hlbWFzRnJvbV9TQ0hFTUEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb24uX3Jhd0ZpbmQoe30pLnRoZW4oc2NoZW1hcyA9PiBzY2hlbWFzLm1hcChtb25nb1NjaGVtYVRvUGFyc2VTY2hlbWEpKTtcbiAgfVxuXG4gIF9mZXRjaE9uZVNjaGVtYUZyb21fU0NIRU1BKG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLl9jb2xsZWN0aW9uXG4gICAgICAuX3Jhd0ZpbmQoX21vbmdvU2NoZW1hUXVlcnlGcm9tTmFtZVF1ZXJ5KG5hbWUpLCB7IGxpbWl0OiAxIH0pXG4gICAgICAudGhlbihyZXN1bHRzID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgcmV0dXJuIG1vbmdvU2NoZW1hVG9QYXJzZVNjaGVtYShyZXN1bHRzWzBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gQXRvbWljYWxseSBmaW5kIGFuZCBkZWxldGUgYW4gb2JqZWN0IGJhc2VkIG9uIHF1ZXJ5LlxuICBmaW5kQW5kRGVsZXRlU2NoZW1hKG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLl9jb2xsZWN0aW9uLl9tb25nb0NvbGxlY3Rpb24uZmluZE9uZUFuZERlbGV0ZShfbW9uZ29TY2hlbWFRdWVyeUZyb21OYW1lUXVlcnkobmFtZSkpO1xuICB9XG5cbiAgaW5zZXJ0U2NoZW1hKHNjaGVtYTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb25cbiAgICAgIC5pbnNlcnRPbmUoc2NoZW1hKVxuICAgICAgLnRoZW4oKCkgPT4gbW9uZ29TY2hlbWFUb1BhcnNlU2NoZW1hKHNjaGVtYSkpXG4gICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICBpZiAoZXJyb3IuY29kZSA9PT0gMTEwMDApIHtcbiAgICAgICAgICAvL01vbmdvJ3MgZHVwbGljYXRlIGtleSBlcnJvclxuICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5EVVBMSUNBVEVfVkFMVUUsICdDbGFzcyBhbHJlYWR5IGV4aXN0cy4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICB1cGRhdGVTY2hlbWEobmFtZTogc3RyaW5nLCB1cGRhdGUpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sbGVjdGlvbi51cGRhdGVPbmUoX21vbmdvU2NoZW1hUXVlcnlGcm9tTmFtZVF1ZXJ5KG5hbWUpLCB1cGRhdGUpO1xuICB9XG5cbiAgdXBzZXJ0U2NoZW1hKG5hbWU6IHN0cmluZywgcXVlcnk6IHN0cmluZywgdXBkYXRlKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb24udXBzZXJ0T25lKF9tb25nb1NjaGVtYVF1ZXJ5RnJvbU5hbWVRdWVyeShuYW1lLCBxdWVyeSksIHVwZGF0ZSk7XG4gIH1cblxuICAvLyBBZGQgYSBmaWVsZCB0byB0aGUgc2NoZW1hLiBJZiBkYXRhYmFzZSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmaWVsZFxuICAvLyB0eXBlIChlLmcuIG1vbmdvIGRvZXNuJ3Qgc3VwcG9ydCBtb3JlIHRoYW4gb25lIEdlb1BvaW50IGluIGEgY2xhc3MpIHJlamVjdCB3aXRoIGFuIFwiSW5jb3JyZWN0IFR5cGVcIlxuICAvLyBQYXJzZSBlcnJvciB3aXRoIGEgZGVzY2lwdGl2ZSBtZXNzYWdlLiBJZiB0aGUgZmllbGQgYWxyZWFkeSBleGlzdHMsIHRoaXMgZnVuY3Rpb24gbXVzdFxuICAvLyBub3QgbW9kaWZ5IHRoZSBzY2hlbWEsIGFuZCBtdXN0IHJlamVjdCB3aXRoIERVUExJQ0FURV9WQUxVRSBlcnJvci5cbiAgLy8gSWYgdGhpcyBpcyBjYWxsZWQgZm9yIGEgY2xhc3MgdGhhdCBkb2Vzbid0IGV4aXN0LCB0aGlzIGZ1bmN0aW9uIG11c3QgY3JlYXRlIHRoYXQgY2xhc3MuXG5cbiAgLy8gVE9ETzogdGhyb3cgYW4gZXJyb3IgaWYgYW4gdW5zdXBwb3J0ZWQgZmllbGQgdHlwZSBpcyBwYXNzZWQuIERlY2lkaW5nIHdoZXRoZXIgYSB0eXBlIGlzIHN1cHBvcnRlZFxuICAvLyBzaG91bGQgYmUgdGhlIGpvYiBvZiB0aGUgYWRhcHRlci4gU29tZSBhZGFwdGVycyBtYXkgbm90IHN1cHBvcnQgR2VvUG9pbnQgYXQgYWxsLiBPdGhlcnMgbWF5XG4gIC8vIFN1cHBvcnQgYWRkaXRpb25hbCB0eXBlcyB0aGF0IE1vbmdvIGRvZXNuJ3QsIGxpa2UgTW9uZXksIG9yIHNvbWV0aGluZy5cblxuICAvLyBUT0RPOiBkb24ndCBzcGVuZCBhbiBleHRyYSBxdWVyeSBvbiBmaW5kaW5nIHRoZSBzY2hlbWEgaWYgdGhlIHR5cGUgd2UgYXJlIHRyeWluZyB0byBhZGQgaXNuJ3QgYSBHZW9Qb2ludC5cbiAgYWRkRmllbGRJZk5vdEV4aXN0cyhjbGFzc05hbWU6IHN0cmluZywgZmllbGROYW1lOiBzdHJpbmcsIGZpZWxkVHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZldGNoT25lU2NoZW1hRnJvbV9TQ0hFTUEoY2xhc3NOYW1lKVxuICAgICAgLnRoZW4oXG4gICAgICAgIHNjaGVtYSA9PiB7XG4gICAgICAgICAgLy8gSWYgYSBmaWVsZCB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0cywgaXQgd2lsbCBiZSBoYW5kbGVkIGVsc2V3aGVyZS5cbiAgICAgICAgICBpZiAoc2NoZW1hLmZpZWxkc1tmaWVsZE5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gVGhlIHNjaGVtYSBleGlzdHMuIENoZWNrIGZvciBleGlzdGluZyBHZW9Qb2ludHMuXG4gICAgICAgICAgaWYgKGZpZWxkVHlwZS50eXBlID09PSAnR2VvUG9pbnQnKSB7XG4gICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlcmUgYXJlIG5vdCBvdGhlciBnZW9wb2ludCBmaWVsZHNcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgT2JqZWN0LmtleXMoc2NoZW1hLmZpZWxkcykuc29tZShcbiAgICAgICAgICAgICAgICBleGlzdGluZ0ZpZWxkID0+IHNjaGVtYS5maWVsZHNbZXhpc3RpbmdGaWVsZF0udHlwZSA9PT0gJ0dlb1BvaW50J1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICAgICAgICAgIFBhcnNlLkVycm9yLklOQ09SUkVDVF9UWVBFLFxuICAgICAgICAgICAgICAgICdNb25nb0RCIG9ubHkgc3VwcG9ydHMgb25lIEdlb1BvaW50IGZpZWxkIGluIGEgY2xhc3MuJ1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yID0+IHtcbiAgICAgICAgICAvLyBJZiBlcnJvciBpcyB1bmRlZmluZWQsIHRoZSBzY2hlbWEgZG9lc24ndCBleGlzdCwgYW5kIHdlIGNhbiBjcmVhdGUgdGhlIHNjaGVtYSB3aXRoIHRoZSBmaWVsZC5cbiAgICAgICAgICAvLyBJZiBzb21lIG90aGVyIGVycm9yLCByZWplY3Qgd2l0aCBpdC5cbiAgICAgICAgICBpZiAoZXJyb3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBjb25zdCB7IHR5cGUsIHRhcmdldENsYXNzLCAuLi5maWVsZE9wdGlvbnMgfSA9IGZpZWxkVHlwZTtcbiAgICAgICAgLy8gV2UgdXNlICRleGlzdHMgYW5kICRzZXQgdG8gYXZvaWQgb3ZlcndyaXRpbmcgdGhlIGZpZWxkIHR5cGUgaWYgaXRcbiAgICAgICAgLy8gYWxyZWFkeSBleGlzdHMuIChpdCBjb3VsZCBoYXZlIGFkZGVkIGluYmV0d2VlbiB0aGUgbGFzdCBxdWVyeSBhbmQgdGhlIHVwZGF0ZSlcbiAgICAgICAgaWYgKGZpZWxkT3B0aW9ucyAmJiBPYmplY3Qua2V5cyhmaWVsZE9wdGlvbnMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy51cHNlcnRTY2hlbWEoXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgICB7IFtmaWVsZE5hbWVdOiB7ICRleGlzdHM6IGZhbHNlIH0gfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgJHNldDoge1xuICAgICAgICAgICAgICAgIFtmaWVsZE5hbWVdOiBwYXJzZUZpZWxkVHlwZVRvTW9uZ29GaWVsZFR5cGUoe1xuICAgICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICAgIHRhcmdldENsYXNzLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIFtgX21ldGFkYXRhLmZpZWxkc19vcHRpb25zLiR7ZmllbGROYW1lfWBdOiBmaWVsZE9wdGlvbnMsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy51cHNlcnRTY2hlbWEoXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgICB7IFtmaWVsZE5hbWVdOiB7ICRleGlzdHM6IGZhbHNlIH0gfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgJHNldDoge1xuICAgICAgICAgICAgICAgIFtmaWVsZE5hbWVdOiBwYXJzZUZpZWxkVHlwZVRvTW9uZ29GaWVsZFR5cGUoe1xuICAgICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICAgIHRhcmdldENsYXNzLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlRmllbGRPcHRpb25zKGNsYXNzTmFtZTogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZywgZmllbGRUeXBlOiBhbnkpIHtcbiAgICBjb25zdCB7IC4uLmZpZWxkT3B0aW9ucyB9ID0gZmllbGRUeXBlO1xuICAgIGRlbGV0ZSBmaWVsZE9wdGlvbnMudHlwZTtcbiAgICBkZWxldGUgZmllbGRPcHRpb25zLnRhcmdldENsYXNzO1xuXG4gICAgYXdhaXQgdGhpcy51cHNlcnRTY2hlbWEoXG4gICAgICBjbGFzc05hbWUsXG4gICAgICB7IFtmaWVsZE5hbWVdOiB7ICRleGlzdHM6IHRydWUgfSB9LFxuICAgICAge1xuICAgICAgICAkc2V0OiB7XG4gICAgICAgICAgW2BfbWV0YWRhdGEuZmllbGRzX29wdGlvbnMuJHtmaWVsZE5hbWV9YF06IGZpZWxkT3B0aW9ucyxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG5cbi8vIEV4cG9ydGVkIGZvciB0ZXN0aW5nIHJlYXNvbnMgYW5kIGJlY2F1c2Ugd2UgaGF2ZW4ndCBtb3ZlZCBhbGwgbW9uZ28gc2NoZW1hIGZvcm1hdFxuLy8gcmVsYXRlZCBsb2dpYyBpbnRvIHRoZSBkYXRhYmFzZSBhZGFwdGVyIHlldC5cbk1vbmdvU2NoZW1hQ29sbGVjdGlvbi5fVEVTVG1vbmdvU2NoZW1hVG9QYXJzZVNjaGVtYSA9IG1vbmdvU2NoZW1hVG9QYXJzZVNjaGVtYTtcbk1vbmdvU2NoZW1hQ29sbGVjdGlvbi5wYXJzZUZpZWxkVHlwZVRvTW9uZ29GaWVsZFR5cGUgPSBwYXJzZUZpZWxkVHlwZVRvTW9uZ29GaWVsZFR5cGU7XG5cbmV4cG9ydCBkZWZhdWx0IE1vbmdvU2NoZW1hQ29sbGVjdGlvbjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsZ0JBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUErQixNQUFBRSxTQUFBO0FBQUEsU0FBQUgsdUJBQUFJLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFBQSxTQUFBRywwQkFBQUMsQ0FBQSxnQkFBQUEsQ0FBQSxZQUFBQyxTQUFBLHlCQUFBRCxDQUFBO0FBQUEsU0FBQUUsU0FBQSxXQUFBQSxRQUFBLEdBQUFDLE1BQUEsQ0FBQUMsTUFBQSxHQUFBRCxNQUFBLENBQUFDLE1BQUEsQ0FBQUMsSUFBQSxlQUFBQyxDQUFBLGFBQUFWLENBQUEsTUFBQUEsQ0FBQSxHQUFBVyxTQUFBLENBQUFDLE1BQUEsRUFBQVosQ0FBQSxVQUFBSSxDQUFBLEdBQUFPLFNBQUEsQ0FBQVgsQ0FBQSxZQUFB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
|
|
331
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfTW9uZ29Db2xsZWN0aW9uIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbm9kZSIsIl9leGNsdWRlZCIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9vYmplY3REZXN0cnVjdHVyaW5nRW1wdHkiLCJ0IiwiVHlwZUVycm9yIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwibiIsImFyZ3VtZW50cyIsImxlbmd0aCIsInIiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIm8iLCJpIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzIiwiaW5jbHVkZXMiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIm93bktleXMiLCJrZXlzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsInZhbHVlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIm1vbmdvRmllbGRUb1BhcnNlU2NoZW1hRmllbGQiLCJ0eXBlIiwidGFyZ2V0Q2xhc3MiLCJzbGljZSIsInN0YXJ0c1dpdGgiLCJub25GaWVsZFNjaGVtYUtleXMiLCJtb25nb1NjaGVtYUZpZWxkc1RvUGFyc2VTY2hlbWFGaWVsZHMiLCJzY2hlbWEiLCJmaWVsZE5hbWVzIiwia2V5IiwiaW5kZXhPZiIsInJlc3BvbnNlIiwicmVkdWNlIiwib2JqIiwiZmllbGROYW1lIiwiX21ldGFkYXRhIiwiZmllbGRzX29wdGlvbnMiLCJBQ0wiLCJjcmVhdGVkQXQiLCJ1cGRhdGVkQXQiLCJvYmplY3RJZCIsImVtcHR5Q0xQUyIsImZyZWV6ZSIsImZpbmQiLCJjb3VudCIsImdldCIsImNyZWF0ZSIsInVwZGF0ZSIsImRlbGV0ZSIsImFkZEZpZWxkIiwicHJvdGVjdGVkRmllbGRzIiwiZGVmYXVsdENMUFMiLCJtb25nb1NjaGVtYVRvUGFyc2VTY2hlbWEiLCJtb25nb1NjaGVtYSIsImNscHMiLCJpbmRleGVzIiwiY2xhc3NfcGVybWlzc2lvbnMiLCJjbGFzc05hbWUiLCJfaWQiLCJmaWVsZHMiLCJjbGFzc0xldmVsUGVybWlzc2lvbnMiLCJfbW9uZ29TY2hlbWFRdWVyeUZyb21OYW1lUXVlcnkiLCJuYW1lIiwicXVlcnkiLCJvYmplY3QiLCJwYXJzZUZpZWxkVHlwZVRvTW9uZ29GaWVsZFR5cGUiLCJNb25nb1NjaGVtYUNvbGxlY3Rpb24iLCJjb25zdHJ1Y3RvciIsImNvbGxlY3Rpb24iLCJfY29sbGVjdGlvbiIsIl9mZXRjaEFsbFNjaGVtYXNGcm9tX1NDSEVNQSIsIl9yYXdGaW5kIiwidGhlbiIsInNjaGVtYXMiLCJtYXAiLCJfZmV0Y2hPbmVTY2hlbWFGcm9tX1NDSEVNQSIsImxpbWl0IiwicmVzdWx0cyIsInVuZGVmaW5lZCIsImZpbmRBbmREZWxldGVTY2hlbWEiLCJfbW9uZ29Db2xsZWN0aW9uIiwiZmluZE9uZUFuZERlbGV0ZSIsImluc2VydFNjaGVtYSIsImluc2VydE9uZSIsImNhdGNoIiwiZXJyb3IiLCJjb2RlIiwiUGFyc2UiLCJFcnJvciIsIkRVUExJQ0FURV9WQUxVRSIsInVwZGF0ZVNjaGVtYSIsInVwZGF0ZU9uZSIsInVwc2VydFNjaGVtYSIsInVwc2VydE9uZSIsImFkZEZpZWxkSWZOb3RFeGlzdHMiLCJmaWVsZFR5cGUiLCJzb21lIiwiZXhpc3RpbmdGaWVsZCIsIklOQ09SUkVDVF9UWVBFIiwiZmllbGRPcHRpb25zIiwiJGV4aXN0cyIsIiRzZXQiLCJ1cGRhdGVGaWVsZE9wdGlvbnMiLCJfVEVTVG1vbmdvU2NoZW1hVG9QYXJzZVNjaGVtYSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9BZGFwdGVycy9TdG9yYWdlL01vbmdvL01vbmdvU2NoZW1hQ29sbGVjdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTW9uZ29Db2xsZWN0aW9uIGZyb20gJy4vTW9uZ29Db2xsZWN0aW9uJztcbmltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcblxuZnVuY3Rpb24gbW9uZ29GaWVsZFRvUGFyc2VTY2hlbWFGaWVsZCh0eXBlKSB7XG4gIGlmICh0eXBlWzBdID09PSAnKicpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ1BvaW50ZXInLFxuICAgICAgdGFyZ2V0Q2xhc3M6IHR5cGUuc2xpY2UoMSksXG4gICAgfTtcbiAgfVxuICBpZiAodHlwZS5zdGFydHNXaXRoKCdyZWxhdGlvbjwnKSkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnUmVsYXRpb24nLFxuICAgICAgdGFyZ2V0Q2xhc3M6IHR5cGUuc2xpY2UoJ3JlbGF0aW9uPCcubGVuZ3RoLCB0eXBlLmxlbmd0aCAtIDEpLFxuICAgIH07XG4gIH1cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdOdW1iZXInIH07XG4gICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdTdHJpbmcnIH07XG4gICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICByZXR1cm4geyB0eXBlOiAnQm9vbGVhbicgfTtcbiAgICBjYXNlICdkYXRlJzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdEYXRlJyB9O1xuICAgIGNhc2UgJ21hcCc6XG4gICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdPYmplY3QnIH07XG4gICAgY2FzZSAnYXJyYXknOlxuICAgICAgcmV0dXJuIHsgdHlwZTogJ0FycmF5JyB9O1xuICAgIGNhc2UgJ2dlb3BvaW50JzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdHZW9Qb2ludCcgfTtcbiAgICBjYXNlICdmaWxlJzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdGaWxlJyB9O1xuICAgIGNhc2UgJ2J5dGVzJzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdCeXRlcycgfTtcbiAgICBjYXNlICdwb2x5Z29uJzpcbiAgICAgIHJldHVybiB7IHR5cGU6ICdQb2x5Z29uJyB9O1xuICB9XG59XG5cbmNvbnN0IG5vbkZpZWxkU2NoZW1hS2V5cyA9IFsnX2lkJywgJ19tZXRhZGF0YScsICdfY2xpZW50X3Blcm1pc3Npb25zJ107XG5mdW5jdGlvbiBtb25nb1NjaGVtYUZpZWxkc1RvUGFyc2VTY2hlbWFGaWVsZHMoc2NoZW1hKSB7XG4gIHZhciBmaWVsZE5hbWVzID0gT2JqZWN0LmtleXMoc2NoZW1hKS5maWx0ZXIoa2V5ID0+IG5vbkZpZWxkU2NoZW1hS2V5cy5pbmRleE9mKGtleSkgPT09IC0xKTtcbiAgdmFyIHJlc3BvbnNlID0gZmllbGROYW1lcy5yZWR1Y2UoKG9iaiwgZmllbGROYW1lKSA9PiB7XG4gICAgb2JqW2ZpZWxkTmFtZV0gPSBtb25nb0ZpZWxkVG9QYXJzZVNjaGVtYUZpZWxkKHNjaGVtYVtmaWVsZE5hbWVdKTtcbiAgICBpZiAoXG4gICAgICBzY2hlbWEuX21ldGFkYXRhICYmXG4gICAgICBzY2hlbWEuX21ldGFkYXRhLmZpZWxkc19vcHRpb25zICYmXG4gICAgICBzY2hlbWEuX21ldGFkYXRhLmZpZWxkc19vcHRpb25zW2ZpZWxkTmFtZV1cbiAgICApIHtcbiAgICAgIG9ialtmaWVsZE5hbWVdID0gT2JqZWN0LmFzc2lnbihcbiAgICAgICAge30sXG4gICAgICAgIG9ialtmaWVsZE5hbWVdLFxuICAgICAgICBzY2hlbWEuX21ldGFkYXRhLmZpZWxkc19vcHRpb25zW2ZpZWxkTmFtZV1cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH0sIHt9KTtcbiAgcmVzcG9uc2UuQUNMID0geyB0eXBlOiAnQUNMJyB9O1xuICByZXNwb25zZS5jcmVhdGVkQXQgPSB7IHR5cGU6ICdEYXRlJyB9O1xuICByZXNwb25zZS51cGRhdGVkQXQgPSB7IHR5cGU6ICdEYXRlJyB9O1xuICByZXNwb25zZS5vYmplY3RJZCA9IHsgdHlwZTogJ1N0cmluZycgfTtcbiAgcmV0dXJuIHJlc3BvbnNlO1xufVxuXG5jb25zdCBlbXB0eUNMUFMgPSBPYmplY3QuZnJlZXplKHtcbiAgZmluZDoge30sXG4gIGNvdW50OiB7fSxcbiAgZ2V0OiB7fSxcbiAgY3JlYXRlOiB7fSxcbiAgdXBkYXRlOiB7fSxcbiAgZGVsZXRlOiB7fSxcbiAgYWRkRmllbGQ6IHt9LFxuICBwcm90ZWN0ZWRGaWVsZHM6IHt9LFxufSk7XG5cbmNvbnN0IGRlZmF1bHRDTFBTID0gT2JqZWN0LmZyZWV6ZSh7XG4gIGZpbmQ6IHsgJyonOiB0cnVlIH0sXG4gIGNvdW50OiB7ICcqJzogdHJ1ZSB9LFxuICBnZXQ6IHsgJyonOiB0cnVlIH0sXG4gIGNyZWF0ZTogeyAnKic6IHRydWUgfSxcbiAgdXBkYXRlOiB7ICcqJzogdHJ1ZSB9LFxuICBkZWxldGU6IHsgJyonOiB0cnVlIH0sXG4gIGFkZEZpZWxkOiB7ICcqJzogdHJ1ZSB9LFxuICBwcm90ZWN0ZWRGaWVsZHM6IHsgJyonOiBbXSB9LFxufSk7XG5cbmZ1bmN0aW9uIG1vbmdvU2NoZW1hVG9QYXJzZVNjaGVtYShtb25nb1NjaGVtYSkge1xuICBsZXQgY2xwcyA9IGRlZmF1bHRDTFBTO1xuICBsZXQgaW5kZXhlcyA9IHt9O1xuICBpZiAobW9uZ29TY2hlbWEuX21ldGFkYXRhKSB7XG4gICAgaWYgKG1vbmdvU2NoZW1hLl9tZXRhZGF0YS5jbGFzc19wZXJtaXNzaW9ucykge1xuICAgICAgY2xwcyA9IHsgLi4uZW1wdHlDTFBTLCAuLi5tb25nb1NjaGVtYS5fbWV0YWRhdGEuY2xhc3NfcGVybWlzc2lvbnMgfTtcbiAgICB9XG4gICAgaWYgKG1vbmdvU2NoZW1hLl9tZXRhZGF0YS5pbmRleGVzKSB7XG4gICAgICBpbmRleGVzID0geyAuLi5tb25nb1NjaGVtYS5fbWV0YWRhdGEuaW5kZXhlcyB9O1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIGNsYXNzTmFtZTogbW9uZ29TY2hlbWEuX2lkLFxuICAgIGZpZWxkczogbW9uZ29TY2hlbWFGaWVsZHNUb1BhcnNlU2NoZW1hRmllbGRzKG1vbmdvU2NoZW1hKSxcbiAgICBjbGFzc0xldmVsUGVybWlzc2lvbnM6IGNscHMsXG4gICAgaW5kZXhlczogaW5kZXhlcyxcbiAgfTtcbn1cblxuZnVuY3Rpb24gX21vbmdvU2NoZW1hUXVlcnlGcm9tTmFtZVF1ZXJ5KG5hbWU6IHN0cmluZywgcXVlcnkpIHtcbiAgY29uc3Qgb2JqZWN0ID0geyBfaWQ6IG5hbWUgfTtcbiAgaWYgKHF1ZXJ5KSB7XG4gICAgT2JqZWN0LmtleXMocXVlcnkpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIG9iamVjdFtrZXldID0gcXVlcnlba2V5XTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG4vLyBSZXR1cm5zIGEgdHlwZSBzdWl0YWJsZSBmb3IgaW5zZXJ0aW5nIGludG8gbW9uZ28gX1NDSEVNQSBjb2xsZWN0aW9uLlxuLy8gRG9lcyBubyB2YWxpZGF0aW9uLiBUaGF0IGlzIGV4cGVjdGVkIHRvIGJlIGRvbmUgaW4gUGFyc2UgU2VydmVyLlxuZnVuY3Rpb24gcGFyc2VGaWVsZFR5cGVUb01vbmdvRmllbGRUeXBlKHsgdHlwZSwgdGFyZ2V0Q2xhc3MgfSkge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdQb2ludGVyJzpcbiAgICAgIHJldHVybiBgKiR7dGFyZ2V0Q2xhc3N9YDtcbiAgICBjYXNlICdSZWxhdGlvbic6XG4gICAgICByZXR1cm4gYHJlbGF0aW9uPCR7dGFyZ2V0Q2xhc3N9PmA7XG4gICAgY2FzZSAnTnVtYmVyJzpcbiAgICAgIHJldHVybiAnbnVtYmVyJztcbiAgICBjYXNlICdTdHJpbmcnOlxuICAgICAgcmV0dXJuICdzdHJpbmcnO1xuICAgIGNhc2UgJ0Jvb2xlYW4nOlxuICAgICAgcmV0dXJuICdib29sZWFuJztcbiAgICBjYXNlICdEYXRlJzpcbiAgICAgIHJldHVybiAnZGF0ZSc7XG4gICAgY2FzZSAnT2JqZWN0JzpcbiAgICAgIHJldHVybiAnb2JqZWN0JztcbiAgICBjYXNlICdBcnJheSc6XG4gICAgICByZXR1cm4gJ2FycmF5JztcbiAgICBjYXNlICdHZW9Qb2ludCc6XG4gICAgICByZXR1cm4gJ2dlb3BvaW50JztcbiAgICBjYXNlICdGaWxlJzpcbiAgICAgIHJldHVybiAnZmlsZSc7XG4gICAgY2FzZSAnQnl0ZXMnOlxuICAgICAgcmV0dXJuICdieXRlcyc7XG4gICAgY2FzZSAnUG9seWdvbic6XG4gICAgICByZXR1cm4gJ3BvbHlnb24nO1xuICB9XG59XG5cbmNsYXNzIE1vbmdvU2NoZW1hQ29sbGVjdGlvbiB7XG4gIF9jb2xsZWN0aW9uOiBNb25nb0NvbGxlY3Rpb247XG5cbiAgY29uc3RydWN0b3IoY29sbGVjdGlvbjogTW9uZ29Db2xsZWN0aW9uKSB7XG4gICAgdGhpcy5fY29sbGVjdGlvbiA9IGNvbGxlY3Rpb247XG4gIH1cblxuICBfZmV0Y2hBbGxTY2hlbWFzRnJvbV9TQ0hFTUEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb24uX3Jhd0ZpbmQoe30pLnRoZW4oc2NoZW1hcyA9PiBzY2hlbWFzLm1hcChtb25nb1NjaGVtYVRvUGFyc2VTY2hlbWEpKTtcbiAgfVxuXG4gIF9mZXRjaE9uZVNjaGVtYUZyb21fU0NIRU1BKG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLl9jb2xsZWN0aW9uXG4gICAgICAuX3Jhd0ZpbmQoX21vbmdvU2NoZW1hUXVlcnlGcm9tTmFtZVF1ZXJ5KG5hbWUpLCB7IGxpbWl0OiAxIH0pXG4gICAgICAudGhlbihyZXN1bHRzID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgcmV0dXJuIG1vbmdvU2NoZW1hVG9QYXJzZVNjaGVtYShyZXN1bHRzWzBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gQXRvbWljYWxseSBmaW5kIGFuZCBkZWxldGUgYW4gb2JqZWN0IGJhc2VkIG9uIHF1ZXJ5LlxuICBmaW5kQW5kRGVsZXRlU2NoZW1hKG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLl9jb2xsZWN0aW9uLl9tb25nb0NvbGxlY3Rpb24uZmluZE9uZUFuZERlbGV0ZShfbW9uZ29TY2hlbWFRdWVyeUZyb21OYW1lUXVlcnkobmFtZSkpO1xuICB9XG5cbiAgaW5zZXJ0U2NoZW1hKHNjaGVtYTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb25cbiAgICAgIC5pbnNlcnRPbmUoc2NoZW1hKVxuICAgICAgLnRoZW4oKCkgPT4gbW9uZ29TY2hlbWFUb1BhcnNlU2NoZW1hKHNjaGVtYSkpXG4gICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICBpZiAoZXJyb3IuY29kZSA9PT0gMTEwMDApIHtcbiAgICAgICAgICAvL01vbmdvJ3MgZHVwbGljYXRlIGtleSBlcnJvclxuICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5EVVBMSUNBVEVfVkFMVUUsICdDbGFzcyBhbHJlYWR5IGV4aXN0cy4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICB1cGRhdGVTY2hlbWEobmFtZTogc3RyaW5nLCB1cGRhdGUpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sbGVjdGlvbi51cGRhdGVPbmUoX21vbmdvU2NoZW1hUXVlcnlGcm9tTmFtZVF1ZXJ5KG5hbWUpLCB1cGRhdGUpO1xuICB9XG5cbiAgdXBzZXJ0U2NoZW1hKG5hbWU6IHN0cmluZywgcXVlcnk6IHN0cmluZywgdXBkYXRlKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb24udXBzZXJ0T25lKF9tb25nb1NjaGVtYVF1ZXJ5RnJvbU5hbWVRdWVyeShuYW1lLCBxdWVyeSksIHVwZGF0ZSk7XG4gIH1cblxuICAvLyBBZGQgYSBmaWVsZCB0byB0aGUgc2NoZW1hLiBJZiBkYXRhYmFzZSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmaWVsZFxuICAvLyB0eXBlIChlLmcuIG1vbmdvIGRvZXNuJ3Qgc3VwcG9ydCBtb3JlIHRoYW4gb25lIEdlb1BvaW50IGluIGEgY2xhc3MpIHJlamVjdCB3aXRoIGFuIFwiSW5jb3JyZWN0IFR5cGVcIlxuICAvLyBQYXJzZSBlcnJvciB3aXRoIGEgZGVzY2lwdGl2ZSBtZXNzYWdlLiBJZiB0aGUgZmllbGQgYWxyZWFkeSBleGlzdHMsIHRoaXMgZnVuY3Rpb24gbXVzdFxuICAvLyBub3QgbW9kaWZ5IHRoZSBzY2hlbWEsIGFuZCBtdXN0IHJlamVjdCB3aXRoIERVUExJQ0FURV9WQUxVRSBlcnJvci5cbiAgLy8gSWYgdGhpcyBpcyBjYWxsZWQgZm9yIGEgY2xhc3MgdGhhdCBkb2Vzbid0IGV4aXN0LCB0aGlzIGZ1bmN0aW9uIG11c3QgY3JlYXRlIHRoYXQgY2xhc3MuXG5cbiAgLy8gVE9ETzogdGhyb3cgYW4gZXJyb3IgaWYgYW4gdW5zdXBwb3J0ZWQgZmllbGQgdHlwZSBpcyBwYXNzZWQuIERlY2lkaW5nIHdoZXRoZXIgYSB0eXBlIGlzIHN1cHBvcnRlZFxuICAvLyBzaG91bGQgYmUgdGhlIGpvYiBvZiB0aGUgYWRhcHRlci4gU29tZSBhZGFwdGVycyBtYXkgbm90IHN1cHBvcnQgR2VvUG9pbnQgYXQgYWxsLiBPdGhlcnMgbWF5XG4gIC8vIFN1cHBvcnQgYWRkaXRpb25hbCB0eXBlcyB0aGF0IE1vbmdvIGRvZXNuJ3QsIGxpa2UgTW9uZXksIG9yIHNvbWV0aGluZy5cblxuICAvLyBUT0RPOiBkb24ndCBzcGVuZCBhbiBleHRyYSBxdWVyeSBvbiBmaW5kaW5nIHRoZSBzY2hlbWEgaWYgdGhlIHR5cGUgd2UgYXJlIHRyeWluZyB0byBhZGQgaXNuJ3QgYSBHZW9Qb2ludC5cbiAgYWRkRmllbGRJZk5vdEV4aXN0cyhjbGFzc05hbWU6IHN0cmluZywgZmllbGROYW1lOiBzdHJpbmcsIGZpZWxkVHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZldGNoT25lU2NoZW1hRnJvbV9TQ0hFTUEoY2xhc3NOYW1lKVxuICAgICAgLnRoZW4oXG4gICAgICAgIHNjaGVtYSA9PiB7XG4gICAgICAgICAgLy8gSWYgYSBmaWVsZCB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0cywgaXQgd2lsbCBiZSBoYW5kbGVkIGVsc2V3aGVyZS5cbiAgICAgICAgICBpZiAoc2NoZW1hLmZpZWxkc1tmaWVsZE5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gVGhlIHNjaGVtYSBleGlzdHMuIENoZWNrIGZvciBleGlzdGluZyBHZW9Qb2ludHMuXG4gICAgICAgICAgaWYgKGZpZWxkVHlwZS50eXBlID09PSAnR2VvUG9pbnQnKSB7XG4gICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlcmUgYXJlIG5vdCBvdGhlciBnZW9wb2ludCBmaWVsZHNcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgT2JqZWN0LmtleXMoc2NoZW1hLmZpZWxkcykuc29tZShcbiAgICAgICAgICAgICAgICBleGlzdGluZ0ZpZWxkID0+IHNjaGVtYS5maWVsZHNbZXhpc3RpbmdGaWVsZF0udHlwZSA9PT0gJ0dlb1BvaW50J1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICAgICAgICAgIFBhcnNlLkVycm9yLklOQ09SUkVDVF9UWVBFLFxuICAgICAgICAgICAgICAgICdNb25nb0RCIG9ubHkgc3VwcG9ydHMgb25lIEdlb1BvaW50IGZpZWxkIGluIGEgY2xhc3MuJ1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yID0+IHtcbiAgICAgICAgICAvLyBJZiBlcnJvciBpcyB1bmRlZmluZWQsIHRoZSBzY2hlbWEgZG9lc24ndCBleGlzdCwgYW5kIHdlIGNhbiBjcmVhdGUgdGhlIHNjaGVtYSB3aXRoIHRoZSBmaWVsZC5cbiAgICAgICAgICAvLyBJZiBzb21lIG90aGVyIGVycm9yLCByZWplY3Qgd2l0aCBpdC5cbiAgICAgICAgICBpZiAoZXJyb3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBjb25zdCB7IHR5cGUsIHRhcmdldENsYXNzLCAuLi5maWVsZE9wdGlvbnMgfSA9IGZpZWxkVHlwZTtcbiAgICAgICAgLy8gV2UgdXNlICRleGlzdHMgYW5kICRzZXQgdG8gYXZvaWQgb3ZlcndyaXRpbmcgdGhlIGZpZWxkIHR5cGUgaWYgaXRcbiAgICAgICAgLy8gYWxyZWFkeSBleGlzdHMuIChpdCBjb3VsZCBoYXZlIGFkZGVkIGluYmV0d2VlbiB0aGUgbGFzdCBxdWVyeSBhbmQgdGhlIHVwZGF0ZSlcbiAgICAgICAgaWYgKGZpZWxkT3B0aW9ucyAmJiBPYmplY3Qua2V5cyhmaWVsZE9wdGlvbnMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy51cHNlcnRTY2hlbWEoXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgICB7IFtmaWVsZE5hbWVdOiB7ICRleGlzdHM6IGZhbHNlIH0gfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgJHNldDoge1xuICAgICAgICAgICAgICAgIFtmaWVsZE5hbWVdOiBwYXJzZUZpZWxkVHlwZVRvTW9uZ29GaWVsZFR5cGUoe1xuICAgICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICAgIHRhcmdldENsYXNzLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIFtgX21ldGFkYXRhLmZpZWxkc19vcHRpb25zLiR7ZmllbGROYW1lfWBdOiBmaWVsZE9wdGlvbnMsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy51cHNlcnRTY2hlbWEoXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgICB7IFtmaWVsZE5hbWVdOiB7ICRleGlzdHM6IGZhbHNlIH0gfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgJHNldDoge1xuICAgICAgICAgICAgICAgIFtmaWVsZE5hbWVdOiBwYXJzZUZpZWxkVHlwZVRvTW9uZ29GaWVsZFR5cGUoe1xuICAgICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICAgIHRhcmdldENsYXNzLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlRmllbGRPcHRpb25zKGNsYXNzTmFtZTogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZywgZmllbGRUeXBlOiBhbnkpIHtcbiAgICBjb25zdCB7IC4uLmZpZWxkT3B0aW9ucyB9ID0gZmllbGRUeXBlO1xuICAgIGRlbGV0ZSBmaWVsZE9wdGlvbnMudHlwZTtcbiAgICBkZWxldGUgZmllbGRPcHRpb25zLnRhcmdldENsYXNzO1xuXG4gICAgYXdhaXQgdGhpcy51cHNlcnRTY2hlbWEoXG4gICAgICBjbGFzc05hbWUsXG4gICAgICB7IFtmaWVsZE5hbWVdOiB7ICRleGlzdHM6IHRydWUgfSB9LFxuICAgICAge1xuICAgICAgICAkc2V0OiB7XG4gICAgICAgICAgW2BfbWV0YWRhdGEuZmllbGRzX29wdGlvbnMuJHtmaWVsZE5hbWV9YF06IGZpZWxkT3B0aW9ucyxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG5cbi8vIEV4cG9ydGVkIGZvciB0ZXN0aW5nIHJlYXNvbnMgYW5kIGJlY2F1c2Ugd2UgaGF2ZW4ndCBtb3ZlZCBhbGwgbW9uZ28gc2NoZW1hIGZvcm1hdFxuLy8gcmVsYXRlZCBsb2dpYyBpbnRvIHRoZSBkYXRhYmFzZSBhZGFwdGVyIHlldC5cbk1vbmdvU2NoZW1hQ29sbGVjdGlvbi5fVEVTVG1vbmdvU2NoZW1hVG9QYXJzZVNjaGVtYSA9IG1vbmdvU2NoZW1hVG9QYXJzZVNjaGVtYTtcbk1vbmdvU2NoZW1hQ29sbGVjdGlvbi5wYXJzZUZpZWxkVHlwZVRvTW9uZ29GaWVsZFR5cGUgPSBwYXJzZUZpZWxkVHlwZVRvTW9uZ29GaWVsZFR5cGU7XG5cbmV4cG9ydCBkZWZhdWx0IE1vbmdvU2NoZW1hQ29sbGVjdGlvbjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsZ0JBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUErQixNQUFBRSxTQUFBO0FBQUEsU0FBQUgsdUJBQUFJLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFBQSxTQUFBRywwQkFBQUMsQ0FBQSxnQkFBQUEsQ0FBQSxZQUFBQyxTQUFBLHlCQUFBRCxDQUFBO0FBQUEsU0FBQUUsU0FBQSxXQUFBQSxRQUFBLEdBQUFDLE1BQUEsQ0FBQUMsTUFBQSxHQUFBRCxNQUFBLENBQUFDLE1BQUEsQ0FBQUMsSUFBQSxlQUFBQyxDQUFBLGFBQUFWLENBQUEsTUFBQUEsQ0FBQSxHQUFBVyxTQUFBLENBQUFDLE1BQUEsRUFBQVosQ0FBQSxVQUFBSSxDQUFBLEdBQUFPLFNBQUEs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
|