Socket
Socket
Sign inDemoInstall

tsickle

Package Overview
Dependencies
Maintainers
2
Versions
65
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

tsickle - npm Package Compare versions

Comparing version 0.27.5 to 0.28.0

10

package.json
{
"name": "tsickle",
"version": "0.27.5",
"version": "0.28.0",
"description": "Transpile TypeScript code to JavaScript with Closure annotations.",

@@ -21,3 +21,3 @@ "main": "src/tsickle.js",

"peerDependencies": {
"typescript": ">=2.4.2 <2.8"
"typescript": ">=2.4.2 <2.9"
},

@@ -49,3 +49,3 @@ "devDependencies": {

"tslint": "5.9.1",
"typescript": "2.7.2"
"typescript": "2.8.3"
},

@@ -75,3 +75,5 @@ "scripts": {

},
"homepage": "https://github.com/angular/tsickle"
"homepage": "https://github.com/angular/tsickle",
"private": "See release instructions in the README.md",
"private": false
}

2

src/class_decorator_downlevel_transformer.js

@@ -194,2 +194,2 @@ /**

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3NfZGVjb3JhdG9yX2Rvd25sZXZlbF90cmFuc2Zvcm1lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGFzc19kZWNvcmF0b3JfZG93bmxldmVsX3RyYW5zZm9ybWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRUgsdUVBQWtEO0lBQ2xELGlFQUFrRDtJQUNsRCwyQ0FBbUM7SUFFbkM7OztPQUdHO0lBQ0g7UUFDRSxJQUFNLFlBQVksR0FBcUIsRUFBRSxDQUFDO1FBQzFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHVCQUF1QixDQUN4QyxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFDNUIsRUFBRSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3hGLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHVCQUF1QixDQUN4QyxTQUFTLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFDOUQsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM1RixNQUFNLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsNENBQTRDLFNBQXVCLEVBQUUsV0FBNEI7UUFDL0YsSUFBTSxrQkFBa0IsR0FBa0MsRUFBRSxDQUFDO1FBQzdELElBQU0sSUFB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QyxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNsRCxDQUFDOztZQUNILENBQUMsQ0FBQztZQUVGLE1BQU0sQ0FBQyxVQUFDLEVBQWlCLElBQUssT0FBQSxPQUFPLENBQUMsRUFBRSxDQUFrQixFQUE1QixDQUE0QixDQUFDO1FBQzdELENBQUMsQ0FBQztJQUNKLENBQUM7SUF4Q0QsZ0ZBd0NDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge3Nob3VsZExvd2VyfSBmcm9tICcuL2RlY29yYXRvci1hbm5vdGF0b3InO1xuaW1wb3J0IHt2aXNpdEVhY2hDaGlsZH0gZnJvbSAnLi90cmFuc2Zvcm1lcl91dGlsJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJy4vdHlwZXNjcmlwdCc7XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgQVNUIGZvciB0aGUgZGVjb3JhdG9yIGZpZWxkIHR5cGUgYW5ub3RhdGlvbiwgd2hpY2ggaGFzIHRoZSBmb3JtXG4gKiB7IHR5cGU6IEZ1bmN0aW9uLCBhcmdzPzogYW55W10gfVtdXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNsYXNzRGVjb3JhdG9yVHlwZSgpIHtcbiAgY29uc3QgdHlwZUVsZW1lbnRzOiB0cy5UeXBlRWxlbWVudFtdID0gW107XG4gIHR5cGVFbGVtZW50cy5wdXNoKHRzLmNyZWF0ZVByb3BlcnR5U2lnbmF0dXJlKFxuICAgICAgdW5kZWZpbmVkLCAndHlwZScsIHVuZGVmaW5lZCxcbiAgICAgIHRzLmNyZWF0ZVR5cGVSZWZlcmVuY2VOb2RlKHRzLmNyZWF0ZUlkZW50aWZpZXIoJ0Z1bmN0aW9uJyksIHVuZGVmaW5lZCksIHVuZGVmaW5lZCkpO1xuICB0eXBlRWxlbWVudHMucHVzaCh0cy5jcmVhdGVQcm9wZXJ0eVNpZ25hdHVyZShcbiAgICAgIHVuZGVmaW5lZCwgJ2FyZ3MnLCB0cy5jcmVhdGVUb2tlbih0cy5TeW50YXhLaW5kLlF1ZXN0aW9uVG9rZW4pLFxuICAgICAgdHMuY3JlYXRlQXJyYXlUeXBlTm9kZSh0cy5jcmVhdGVLZXl3b3JkVHlwZU5vZGUodHMuU3ludGF4S2luZC5BbnlLZXl3b3JkKSksIHVuZGVmaW5lZCkpO1xuICByZXR1cm4gdHMuY3JlYXRlQXJyYXlUeXBlTm9kZSh0cy5jcmVhdGVUeXBlTGl0ZXJhbE5vZGUodHlwZUVsZW1lbnRzKSk7XG59XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIHR5cGUgb2YgdGhlIGRlY29yYXRvciwgYXMgd2VsbCBhcyBhbGwgdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG9cbiAqIHRoZSBkZWNvcmF0b3IuICBSZXR1cm5zIGFuIEFTVCB3aXRoIHRoZSBmb3JtXG4gKiB7IHR5cGU6IGRlY29yYXRvciwgYXJnczogW2FyZzEsIGFyZzJdIH1cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdE1ldGFkYXRhRnJvbVNpbmdsZURlY29yYXRvcihkZWNvcmF0b3I6IHRzLkRlY29yYXRvciwgZGlhZ25vc3RpY3M6IHRzLkRpYWdub3N0aWNbXSkge1xuICBjb25zdCBtZXRhZGF0YVByb3BlcnRpZXM6IHRzLk9iamVjdExpdGVyYWxFbGVtZW50TGlrZVtdID0gW107XG4gIGNvbnN0IGV4cHIgPSBkZWNvcmF0b3IuZXhwcmVzc2lvbjtcbiAgc3dpdGNoIChleHByLmtpbmQpIHtcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuSWRlbnRpZmllcjpcbiAgICAgIC8vIFRoZSBkZWNvcmF0b3Igd2FzIGEgcGxhaW4gQEZvby5cbiAgICAgIG1ldGFkYXRhUHJvcGVydGllcy5wdXNoKHRzLmNyZWF0ZVByb3BlcnR5QXNzaWdubWVudCgndHlwZScsIGV4cHIpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgdHMuU3ludGF4S2luZC5DYWxsRXhwcmVzc2lvbjpcbiAgICAgIC8vIFRoZSBkZWNvcmF0b3Igd2FzIGEgY2FsbCwgbGlrZSBARm9vKGJhcikuXG4gICAgICBjb25zdCBjYWxsID0gZXhwciBhcyB0cy5DYWxsRXhwcmVzc2lvbjtcbiAgICAgIG1ldGFkYXRhUHJvcGVydGllcy5wdXNoKHRzLmNyZWF0ZVByb3BlcnR5QXNzaWdubWVudCgndHlwZScsIGNhbGwuZXhwcmVzc2lvbikpO1xuICAgICAgaWYgKGNhbGwuYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBhcmdzOiB0cy5FeHByZXNzaW9uW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBhcmcgb2YgY2FsbC5hcmd1bWVudHMpIHtcbiAgICAgICAgICBhcmdzLnB1c2goYXJnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhcmdzQXJyYXlMaXRlcmFsID0gdHMuY3JlYXRlQXJyYXlMaXRlcmFsKGFyZ3MpO1xuICAgICAgICBhcmdzQXJyYXlMaXRlcmFsLmVsZW1lbnRzLmhhc1RyYWlsaW5nQ29tbWEgPSB0cnVlO1xuICAgICAgICBtZXRhZGF0YVByb3BlcnRpZXMucHVzaCh0cy5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQoJ2FyZ3MnLCBhcmdzQXJyYXlMaXRlcmFsKSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgZGlhZ25vc3RpY3MucHVzaCh7XG4gICAgICAgIGZpbGU6IGRlY29yYXRvci5nZXRTb3VyY2VGaWxlKCksXG4gICAgICAgIHN0YXJ0OiBkZWNvcmF0b3IuZ2V0U3RhcnQoKSxcbiAgICAgICAgbGVuZ3RoOiBkZWNvcmF0b3IuZ2V0RW5kKCkgLSBkZWNvcmF0b3IuZ2V0U3RhcnQoKSxcbiAgICAgICAgbWVzc2FnZVRleHQ6XG4gICAgICAgICAgICBgJHt0cy5TeW50YXhLaW5kW2RlY29yYXRvci5raW5kXX0gbm90IGltcGxlbWVudGVkIGluIGdhdGhlcmluZyBkZWNvcmF0b3IgbWV0YWRhdGFgLFxuICAgICAgICBjYXRlZ29yeTogdHMuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFxuICAgICAgICBjb2RlOiAwLFxuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gdHMuY3JlYXRlT2JqZWN0TGl0ZXJhbChtZXRhZGF0YVByb3BlcnRpZXMpO1xufVxuXG4vKipcbiAqIFRha2VzIGEgbGlzdCBvZiBkZWNvcmF0b3IgbWV0YWRhdGEgb2JqZWN0IEFTVHMgYW5kIHByb2R1Y2VzIGFuIEFTVCBmb3IgYVxuICogc3RhdGljIGNsYXNzIHByb3BlcnR5IG9mIGFuIGFycmF5IG9mIHRob3NlIG1ldGFkYXRhIG9iamVjdHMuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZURlY29yYXRvckNsYXNzUHJvcGVydHkoZGVjb3JhdG9yTGlzdDogdHMuT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb25bXSkge1xuICBjb25zdCBtb2RpZmllciA9IHRzLmNyZWF0ZVRva2VuKHRzLlN5bnRheEtpbmQuU3RhdGljS2V5d29yZCk7XG4gIGNvbnN0IHR5cGUgPSBjcmVhdGVDbGFzc0RlY29yYXRvclR5cGUoKTtcbiAgY29uc3QgaW5pdGlhbGl6ZXIgPSB0cy5jcmVhdGVBcnJheUxpdGVyYWwoZGVjb3JhdG9yTGlzdCwgdHJ1ZSk7XG4gIGluaXRpYWxpemVyLmVsZW1lbnRzLmhhc1RyYWlsaW5nQ29tbWEgPSB0cnVlO1xuICByZXR1cm4gdHMuY3JlYXRlUHJvcGVydHkodW5kZWZpbmVkLCBbbW9kaWZpZXJdLCAnZGVjb3JhdG9ycycsIHVuZGVmaW5lZCwgdHlwZSwgaW5pdGlhbGl6ZXIpO1xufVxuXG5mdW5jdGlvbiBpc05hbWVFcXVhbChjbGFzc01lbWJlcjogdHMuQ2xhc3NFbGVtZW50LCBuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKGNsYXNzTWVtYmVyLm5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBpZCA9IGNsYXNzTWVtYmVyLm5hbWUgYXMgdHMuSWRlbnRpZmllcjtcbiAgcmV0dXJuIGlkLnRleHQgPT09IG5hbWU7XG59XG5cbi8qKlxuICogSW5zZXJ0cyB0aGUgZGVjb3JhdG9yIG1ldGFkYXRhIHByb3BlcnR5IGluIHRoZSBwbGFjZSB0aGF0IHRoZSBvbGRcbiAqIGRlY29yYXRvci1hbm5vdGF0b3IgdmlzaXRvciB3b3VsZCBwdXQgaXQsIHNvIHRoZSB1bml0IHRlc3RzIGRvbid0IGhhdmUgdG9cbiAqIGNoYW5nZS5cbiAqIFRPRE8obHVjYXNzbG9hbik6IHJlbW92ZSB0aGlzIHdoZW4gYWxsIDMgcHJvcGVydGllcyBhcmUgcHV0IGluIHZpYVxuICogdHJhbnNmb3JtZXJzXG4gKi9cbmZ1bmN0aW9uIGluc2VydEJlZm9yZURlY29yYXRvclByb3BlcnRpZXMoXG4gICAgY2xhc3NNZW1iZXJzOiB0cy5Ob2RlQXJyYXk8dHMuQ2xhc3NFbGVtZW50PixcbiAgICBkZWNvcmF0b3JNZXRhZGF0YTogdHMuUHJvcGVydHlEZWNsYXJhdGlvbik6IHRzLk5vZGVBcnJheTx0cy5DbGFzc0VsZW1lbnQ+IHtcbiAgbGV0IGluc2VydGlvblBvaW50ID0gY2xhc3NNZW1iZXJzLmZpbmRJbmRleChcbiAgICAgIG0gPT4gaXNOYW1lRXF1YWwobSwgJ2N0b3JQYXJhbWV0ZXJzJykgfHwgaXNOYW1lRXF1YWwobSwgJ3Byb3BEZWNvcmF0b3JzJykpO1xuICBpZiAoaW5zZXJ0aW9uUG9pbnQgPT09IC0xKSB7XG4gICAgaW5zZXJ0aW9uUG9pbnQgPSBjbGFzc01lbWJlcnMubGVuZ3RoOyAgLy8gSW5zZXJ0IGF0IGVuZCBvZiBsaXN0XG4gIH1cbiAgY29uc3QgbWVtYmVycyA9IFtcbiAgICAuLi5jbGFzc01lbWJlcnMuc2xpY2UoMCwgaW5zZXJ0aW9uUG9pbnQpLCBkZWNvcmF0b3JNZXRhZGF0YSxcbiAgICAuLi5jbGFzc01lbWJlcnMuc2xpY2UoaW5zZXJ0aW9uUG9pbnQpXG4gIF07XG4gIHJldHVybiB0cy5zZXRUZXh0UmFuZ2UodHMuY3JlYXRlTm9kZUFycmF5KG1lbWJlcnMsIGNsYXNzTWVtYmVycy5oYXNUcmFpbGluZ0NvbW1hKSwgY2xhc3NNZW1iZXJzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsYXNzRGVjb3JhdG9yRG93bmxldmVsVHJhbnNmb3JtZXIoXG4gICAgdHlwZUNoZWNrZXI6IHRzLlR5cGVDaGVja2VyLCBkaWFnbm9zdGljczogdHMuRGlhZ25vc3RpY1tdKTpcbiAgICAoY29udGV4dDogdHMuVHJhbnNmb3JtYXRpb25Db250ZXh0KSA9PiB0cy5UcmFuc2Zvcm1lcjx0cy5Tb3VyY2VGaWxlPiB7XG4gIHJldHVybiAoY29udGV4dDogdHMuVHJhbnNmb3JtYXRpb25Db250ZXh0KSA9PiB7XG4gICAgY29uc3QgdmlzaXRvcjogdHMuVmlzaXRvciA9IChub2RlOiB0cy5Ob2RlKTogdHMuTm9kZSA9PiB7XG4gICAgICBzd2l0Y2ggKG5vZGUua2luZCkge1xuICAgICAgICBjYXNlIHRzLlN5bnRheEtpbmQuQ2xhc3NEZWNsYXJhdGlvbjpcbiAgICAgICAgICBjb25zdCBjZCA9IHZpc2l0RWFjaENoaWxkKG5vZGUsIHZpc2l0b3IsIGNvbnRleHQpIGFzIHRzLkNsYXNzRGVjbGFyYXRpb247XG4gICAgICAgICAgY29uc3QgZGVjb3JhdG9ycyA9IGNkLmRlY29yYXRvcnM7XG5cbiAgICAgICAgICBpZiAoZGVjb3JhdG9ycyA9PT0gdW5kZWZpbmVkIHx8IGRlY29yYXRvcnMubGVuZ3RoID09PSAwKSByZXR1cm4gY2Q7XG5cbiAgICAgICAgICBjb25zdCBkZWNvcmF0b3JMaXN0ID0gW107XG4gICAgICAgICAgY29uc3QgZGVjb3JhdG9yc1RvS2VlcDogdHMuRGVjb3JhdG9yW10gPSBbXTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGRlY29yYXRvciBvZiBkZWNvcmF0b3JzKSB7XG4gICAgICAgICAgICBpZiAoc2hvdWxkTG93ZXIoZGVjb3JhdG9yLCB0eXBlQ2hlY2tlcikpIHtcbiAgICAgICAgICAgICAgZGVjb3JhdG9yTGlzdC5wdXNoKGV4dHJhY3RNZXRhZGF0YUZyb21TaW5nbGVEZWNvcmF0b3IoZGVjb3JhdG9yLCBkaWFnbm9zdGljcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZGVjb3JhdG9yc1RvS2VlcC5wdXNoKGRlY29yYXRvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGRlY29yYXRvckxpc3QubGVuZ3RoID09PSAwKSByZXR1cm4gY2Q7XG5cbiAgICAgICAgICBjb25zdCBuZXdDbGFzc0RlY2xhcmF0aW9uID0gdHMuZ2V0TXV0YWJsZUNsb25lKGNkKTtcblxuICAgICAgICAgIG5ld0NsYXNzRGVjbGFyYXRpb24ubWVtYmVycyA9IGluc2VydEJlZm9yZURlY29yYXRvclByb3BlcnRpZXMoXG4gICAgICAgICAgICAgIG5ld0NsYXNzRGVjbGFyYXRpb24ubWVtYmVycywgY3JlYXRlRGVjb3JhdG9yQ2xhc3NQcm9wZXJ0eShkZWNvcmF0b3JMaXN0KSk7XG5cbiAgICAgICAgICBuZXdDbGFzc0RlY2xhcmF0aW9uLmRlY29yYXRvcnMgPVxuICAgICAgICAgICAgICBkZWNvcmF0b3JzVG9LZWVwLmxlbmd0aCA/IHRzLmNyZWF0ZU5vZGVBcnJheShkZWNvcmF0b3JzVG9LZWVwKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgIHJldHVybiBuZXdDbGFzc0RlY2xhcmF0aW9uO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiB2aXNpdEVhY2hDaGlsZChub2RlLCB2aXNpdG9yLCBjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIChzZjogdHMuU291cmNlRmlsZSkgPT4gdmlzaXRvcihzZikgYXMgdHMuU291cmNlRmlsZTtcbiAgfTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3NfZGVjb3JhdG9yX2Rvd25sZXZlbF90cmFuc2Zvcm1lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGFzc19kZWNvcmF0b3JfZG93bmxldmVsX3RyYW5zZm9ybWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRUgsdUVBQWtEO0lBQ2xELGlFQUFrRDtJQUNsRCwyQ0FBbUM7SUFFbkM7OztPQUdHO0lBQ0g7UUFDRSxJQUFNLFlBQVksR0FBcUIsRUFBRSxDQUFDO1FBQzFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHVCQUF1QixDQUN4QyxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFDNUIsRUFBRSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3hGLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHVCQUF1QixDQUN4QyxTQUFTLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFDOUQsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM1RixPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILDRDQUE0QyxTQUF1QixFQUFFLFdBQTRCO1FBQy9GLElBQU0sa0JBQWtCLEdBQWtDLEVBQUUsQ0FBQztRQUM3RCxJQUFNLElBQUksR0FB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VUFBVSxDQUFBLHNDQUFBO2dDQUE3QixJQUFNLFNBQVMsdUJBQUE7Z0NBQ2xCLElBQUksaUNBQVcsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLEVBQUU7b0NBQ3ZDLGFBQWEsQ0FBQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7aUNBQ2hGO3FDQUFNO29DQUNMLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztpQ0FDbEM7NkJBQ0Y7Ozs7Ozs7Ozt3QkFFRCxJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQzs0QkFBRSxPQUFPLEVBQUUsQ0FBQzt3QkFFMUMsSUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUVuRCxtQkFBbUIsQ0FBQyxPQUFPLEdBQUcsK0JBQStCLENBQ3pELG1CQUFtQixDQUFDLE9BQU8sRUFBRSw0QkFBNEIsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO3dCQUU5RSxtQkFBbUIsQ0FBQyxVQUFVOzRCQUMxQixnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO3dCQUUvRSxPQUFPLG1CQUFtQixDQUFDO29CQUM3Qjt3QkFDRSxPQUFPLGlDQUFjLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztpQkFDakQ7O1lBQ0gsQ0FBQyxDQUFDO1lBRUYsT0FBTyxVQUFDLEVBQWlCLElBQUssT0FBQSxPQUFPLENBQUMsRUFBRSxDQUFrQixFQUE1QixDQUE0QixDQUFDO1FBQzdELENBQUMsQ0FBQztJQUNKLENBQUM7SUF4Q0QsZ0ZBd0NDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge3Nob3VsZExvd2VyfSBmcm9tICcuL2RlY29yYXRvci1hbm5vdGF0b3InO1xuaW1wb3J0IHt2aXNpdEVhY2hDaGlsZH0gZnJvbSAnLi90cmFuc2Zvcm1lcl91dGlsJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJy4vdHlwZXNjcmlwdCc7XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgQVNUIGZvciB0aGUgZGVjb3JhdG9yIGZpZWxkIHR5cGUgYW5ub3RhdGlvbiwgd2hpY2ggaGFzIHRoZSBmb3JtXG4gKiB7IHR5cGU6IEZ1bmN0aW9uLCBhcmdzPzogYW55W10gfVtdXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNsYXNzRGVjb3JhdG9yVHlwZSgpIHtcbiAgY29uc3QgdHlwZUVsZW1lbnRzOiB0cy5UeXBlRWxlbWVudFtdID0gW107XG4gIHR5cGVFbGVtZW50cy5wdXNoKHRzLmNyZWF0ZVByb3BlcnR5U2lnbmF0dXJlKFxuICAgICAgdW5kZWZpbmVkLCAndHlwZScsIHVuZGVmaW5lZCxcbiAgICAgIHRzLmNyZWF0ZVR5cGVSZWZlcmVuY2VOb2RlKHRzLmNyZWF0ZUlkZW50aWZpZXIoJ0Z1bmN0aW9uJyksIHVuZGVmaW5lZCksIHVuZGVmaW5lZCkpO1xuICB0eXBlRWxlbWVudHMucHVzaCh0cy5jcmVhdGVQcm9wZXJ0eVNpZ25hdHVyZShcbiAgICAgIHVuZGVmaW5lZCwgJ2FyZ3MnLCB0cy5jcmVhdGVUb2tlbih0cy5TeW50YXhLaW5kLlF1ZXN0aW9uVG9rZW4pLFxuICAgICAgdHMuY3JlYXRlQXJyYXlUeXBlTm9kZSh0cy5jcmVhdGVLZXl3b3JkVHlwZU5vZGUodHMuU3ludGF4S2luZC5BbnlLZXl3b3JkKSksIHVuZGVmaW5lZCkpO1xuICByZXR1cm4gdHMuY3JlYXRlQXJyYXlUeXBlTm9kZSh0cy5jcmVhdGVUeXBlTGl0ZXJhbE5vZGUodHlwZUVsZW1lbnRzKSk7XG59XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIHR5cGUgb2YgdGhlIGRlY29yYXRvciwgYXMgd2VsbCBhcyBhbGwgdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG9cbiAqIHRoZSBkZWNvcmF0b3IuICBSZXR1cm5zIGFuIEFTVCB3aXRoIHRoZSBmb3JtXG4gKiB7IHR5cGU6IGRlY29yYXRvciwgYXJnczogW2FyZzEsIGFyZzJdIH1cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdE1ldGFkYXRhRnJvbVNpbmdsZURlY29yYXRvcihkZWNvcmF0b3I6IHRzLkRlY29yYXRvciwgZGlhZ25vc3RpY3M6IHRzLkRpYWdub3N0aWNbXSkge1xuICBjb25zdCBtZXRhZGF0YVByb3BlcnRpZXM6IHRzLk9iamVjdExpdGVyYWxFbGVtZW50TGlrZVtdID0gW107XG4gIGNvbnN0IGV4cHIgPSBkZWNvcmF0b3IuZXhwcmVzc2lvbjtcbiAgc3dpdGNoIChleHByLmtpbmQpIHtcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuSWRlbnRpZmllcjpcbiAgICAgIC8vIFRoZSBkZWNvcmF0b3Igd2FzIGEgcGxhaW4gQEZvby5cbiAgICAgIG1ldGFkYXRhUHJvcGVydGllcy5wdXNoKHRzLmNyZWF0ZVByb3BlcnR5QXNzaWdubWVudCgndHlwZScsIGV4cHIpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgdHMuU3ludGF4S2luZC5DYWxsRXhwcmVzc2lvbjpcbiAgICAgIC8vIFRoZSBkZWNvcmF0b3Igd2FzIGEgY2FsbCwgbGlrZSBARm9vKGJhcikuXG4gICAgICBjb25zdCBjYWxsID0gZXhwciBhcyB0cy5DYWxsRXhwcmVzc2lvbjtcbiAgICAgIG1ldGFkYXRhUHJvcGVydGllcy5wdXNoKHRzLmNyZWF0ZVByb3BlcnR5QXNzaWdubWVudCgndHlwZScsIGNhbGwuZXhwcmVzc2lvbikpO1xuICAgICAgaWYgKGNhbGwuYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBhcmdzOiB0cy5FeHByZXNzaW9uW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBhcmcgb2YgY2FsbC5hcmd1bWVudHMpIHtcbiAgICAgICAgICBhcmdzLnB1c2goYXJnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhcmdzQXJyYXlMaXRlcmFsID0gdHMuY3JlYXRlQXJyYXlMaXRlcmFsKGFyZ3MpO1xuICAgICAgICBhcmdzQXJyYXlMaXRlcmFsLmVsZW1lbnRzLmhhc1RyYWlsaW5nQ29tbWEgPSB0cnVlO1xuICAgICAgICBtZXRhZGF0YVByb3BlcnRpZXMucHVzaCh0cy5jcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQoJ2FyZ3MnLCBhcmdzQXJyYXlMaXRlcmFsKSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgZGlhZ25vc3RpY3MucHVzaCh7XG4gICAgICAgIGZpbGU6IGRlY29yYXRvci5nZXRTb3VyY2VGaWxlKCksXG4gICAgICAgIHN0YXJ0OiBkZWNvcmF0b3IuZ2V0U3RhcnQoKSxcbiAgICAgICAgbGVuZ3RoOiBkZWNvcmF0b3IuZ2V0RW5kKCkgLSBkZWNvcmF0b3IuZ2V0U3RhcnQoKSxcbiAgICAgICAgbWVzc2FnZVRleHQ6XG4gICAgICAgICAgICBgJHt0cy5TeW50YXhLaW5kW2RlY29yYXRvci5raW5kXX0gbm90IGltcGxlbWVudGVkIGluIGdhdGhlcmluZyBkZWNvcmF0b3IgbWV0YWRhdGFgLFxuICAgICAgICBjYXRlZ29yeTogdHMuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFxuICAgICAgICBjb2RlOiAwLFxuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gdHMuY3JlYXRlT2JqZWN0TGl0ZXJhbChtZXRhZGF0YVByb3BlcnRpZXMpO1xufVxuXG4vKipcbiAqIFRha2VzIGEgbGlzdCBvZiBkZWNvcmF0b3IgbWV0YWRhdGEgb2JqZWN0IEFTVHMgYW5kIHByb2R1Y2VzIGFuIEFTVCBmb3IgYVxuICogc3RhdGljIGNsYXNzIHByb3BlcnR5IG9mIGFuIGFycmF5IG9mIHRob3NlIG1ldGFkYXRhIG9iamVjdHMuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZURlY29yYXRvckNsYXNzUHJvcGVydHkoZGVjb3JhdG9yTGlzdDogdHMuT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb25bXSkge1xuICBjb25zdCBtb2RpZmllciA9IHRzLmNyZWF0ZVRva2VuKHRzLlN5bnRheEtpbmQuU3RhdGljS2V5d29yZCk7XG4gIGNvbnN0IHR5cGUgPSBjcmVhdGVDbGFzc0RlY29yYXRvclR5cGUoKTtcbiAgY29uc3QgaW5pdGlhbGl6ZXIgPSB0cy5jcmVhdGVBcnJheUxpdGVyYWwoZGVjb3JhdG9yTGlzdCwgdHJ1ZSk7XG4gIGluaXRpYWxpemVyLmVsZW1lbnRzLmhhc1RyYWlsaW5nQ29tbWEgPSB0cnVlO1xuICByZXR1cm4gdHMuY3JlYXRlUHJvcGVydHkodW5kZWZpbmVkLCBbbW9kaWZpZXJdLCAnZGVjb3JhdG9ycycsIHVuZGVmaW5lZCwgdHlwZSwgaW5pdGlhbGl6ZXIpO1xufVxuXG5mdW5jdGlvbiBpc05hbWVFcXVhbChjbGFzc01lbWJlcjogdHMuQ2xhc3NFbGVtZW50LCBuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKGNsYXNzTWVtYmVyLm5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBpZCA9IGNsYXNzTWVtYmVyLm5hbWUgYXMgdHMuSWRlbnRpZmllcjtcbiAgcmV0dXJuIGlkLnRleHQgPT09IG5hbWU7XG59XG5cbi8qKlxuICogSW5zZXJ0cyB0aGUgZGVjb3JhdG9yIG1ldGFkYXRhIHByb3BlcnR5IGluIHRoZSBwbGFjZSB0aGF0IHRoZSBvbGRcbiAqIGRlY29yYXRvci1hbm5vdGF0b3IgdmlzaXRvciB3b3VsZCBwdXQgaXQsIHNvIHRoZSB1bml0IHRlc3RzIGRvbid0IGhhdmUgdG9cbiAqIGNoYW5nZS5cbiAqIFRPRE8obHVjYXNzbG9hbik6IHJlbW92ZSB0aGlzIHdoZW4gYWxsIDMgcHJvcGVydGllcyBhcmUgcHV0IGluIHZpYVxuICogdHJhbnNmb3JtZXJzXG4gKi9cbmZ1bmN0aW9uIGluc2VydEJlZm9yZURlY29yYXRvclByb3BlcnRpZXMoXG4gICAgY2xhc3NNZW1iZXJzOiB0cy5Ob2RlQXJyYXk8dHMuQ2xhc3NFbGVtZW50PixcbiAgICBkZWNvcmF0b3JNZXRhZGF0YTogdHMuUHJvcGVydHlEZWNsYXJhdGlvbik6IHRzLk5vZGVBcnJheTx0cy5DbGFzc0VsZW1lbnQ+IHtcbiAgbGV0IGluc2VydGlvblBvaW50ID0gY2xhc3NNZW1iZXJzLmZpbmRJbmRleChcbiAgICAgIG0gPT4gaXNOYW1lRXF1YWwobSwgJ2N0b3JQYXJhbWV0ZXJzJykgfHwgaXNOYW1lRXF1YWwobSwgJ3Byb3BEZWNvcmF0b3JzJykpO1xuICBpZiAoaW5zZXJ0aW9uUG9pbnQgPT09IC0xKSB7XG4gICAgaW5zZXJ0aW9uUG9pbnQgPSBjbGFzc01lbWJlcnMubGVuZ3RoOyAgLy8gSW5zZXJ0IGF0IGVuZCBvZiBsaXN0XG4gIH1cbiAgY29uc3QgbWVtYmVycyA9IFtcbiAgICAuLi5jbGFzc01lbWJlcnMuc2xpY2UoMCwgaW5zZXJ0aW9uUG9pbnQpLCBkZWNvcmF0b3JNZXRhZGF0YSxcbiAgICAuLi5jbGFzc01lbWJlcnMuc2xpY2UoaW5zZXJ0aW9uUG9pbnQpXG4gIF07XG4gIHJldHVybiB0cy5zZXRUZXh0UmFuZ2UodHMuY3JlYXRlTm9kZUFycmF5KG1lbWJlcnMsIGNsYXNzTWVtYmVycy5oYXNUcmFpbGluZ0NvbW1hKSwgY2xhc3NNZW1iZXJzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsYXNzRGVjb3JhdG9yRG93bmxldmVsVHJhbnNmb3JtZXIoXG4gICAgdHlwZUNoZWNrZXI6IHRzLlR5cGVDaGVja2VyLCBkaWFnbm9zdGljczogdHMuRGlhZ25vc3RpY1tdKTpcbiAgICAoY29udGV4dDogdHMuVHJhbnNmb3JtYXRpb25Db250ZXh0KSA9PiB0cy5UcmFuc2Zvcm1lcjx0cy5Tb3VyY2VGaWxlPiB7XG4gIHJldHVybiAoY29udGV4dDogdHMuVHJhbnNmb3JtYXRpb25Db250ZXh0KSA9PiB7XG4gICAgY29uc3QgdmlzaXRvcjogdHMuVmlzaXRvciA9IChub2RlOiB0cy5Ob2RlKTogdHMuTm9kZSA9PiB7XG4gICAgICBzd2l0Y2ggKG5vZGUua2luZCkge1xuICAgICAgICBjYXNlIHRzLlN5bnRheEtpbmQuQ2xhc3NEZWNsYXJhdGlvbjpcbiAgICAgICAgICBjb25zdCBjZCA9IHZpc2l0RWFjaENoaWxkKG5vZGUsIHZpc2l0b3IsIGNvbnRleHQpIGFzIHRzLkNsYXNzRGVjbGFyYXRpb247XG4gICAgICAgICAgY29uc3QgZGVjb3JhdG9ycyA9IGNkLmRlY29yYXRvcnM7XG5cbiAgICAgICAgICBpZiAoZGVjb3JhdG9ycyA9PT0gdW5kZWZpbmVkIHx8IGRlY29yYXRvcnMubGVuZ3RoID09PSAwKSByZXR1cm4gY2Q7XG5cbiAgICAgICAgICBjb25zdCBkZWNvcmF0b3JMaXN0ID0gW107XG4gICAgICAgICAgY29uc3QgZGVjb3JhdG9yc1RvS2VlcDogdHMuRGVjb3JhdG9yW10gPSBbXTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGRlY29yYXRvciBvZiBkZWNvcmF0b3JzKSB7XG4gICAgICAgICAgICBpZiAoc2hvdWxkTG93ZXIoZGVjb3JhdG9yLCB0eXBlQ2hlY2tlcikpIHtcbiAgICAgICAgICAgICAgZGVjb3JhdG9yTGlzdC5wdXNoKGV4dHJhY3RNZXRhZGF0YUZyb21TaW5nbGVEZWNvcmF0b3IoZGVjb3JhdG9yLCBkaWFnbm9zdGljcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZGVjb3JhdG9yc1RvS2VlcC5wdXNoKGRlY29yYXRvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGRlY29yYXRvckxpc3QubGVuZ3RoID09PSAwKSByZXR1cm4gY2Q7XG5cbiAgICAgICAgICBjb25zdCBuZXdDbGFzc0RlY2xhcmF0aW9uID0gdHMuZ2V0TXV0YWJsZUNsb25lKGNkKTtcblxuICAgICAgICAgIG5ld0NsYXNzRGVjbGFyYXRpb24ubWVtYmVycyA9IGluc2VydEJlZm9yZURlY29yYXRvclByb3BlcnRpZXMoXG4gICAgICAgICAgICAgIG5ld0NsYXNzRGVjbGFyYXRpb24ubWVtYmVycywgY3JlYXRlRGVjb3JhdG9yQ2xhc3NQcm9wZXJ0eShkZWNvcmF0b3JMaXN0KSk7XG5cbiAgICAgICAgICBuZXdDbGFzc0RlY2xhcmF0aW9uLmRlY29yYXRvcnMgPVxuICAgICAgICAgICAgICBkZWNvcmF0b3JzVG9LZWVwLmxlbmd0aCA/IHRzLmNyZWF0ZU5vZGVBcnJheShkZWNvcmF0b3JzVG9LZWVwKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgIHJldHVybiBuZXdDbGFzc0RlY2xhcmF0aW9uO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiB2aXNpdEVhY2hDaGlsZChub2RlLCB2aXNpdG9yLCBjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIChzZjogdHMuU291cmNlRmlsZSkgPT4gdmlzaXRvcihzZikgYXMgdHMuU291cmNlRmlsZTtcbiAgfTtcbn1cbiJdfQ==

@@ -39,2 +39,2 @@ /**

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpX3N1cHBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2xpX3N1cHBvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7SUFFSCwyQkFBNkI7SUFFN0IsNEJBQTRCO0lBQzVCLDBCQUNJLGNBQXNCLEVBQUUsT0FBZSxFQUFFLFFBQWdCO1FBQzNELFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUU1QyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN4Qix1QkFBdUI7WUFDdkIsOERBQThEO1lBQzlELFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUVELHNFQUFzRTtRQUN0RSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVsQyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1lBQ25CLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBRUQsbURBQW1EO1FBQ25ELElBQU0sVUFBVSxHQUNaLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRWxHLE1BQU0sQ0FBQyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQXRCRCw0Q0FzQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5cbi8vIFBvc3Rwcm9jZXNzIGdlbmVyYXRlZCBKUy5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoVG9Nb2R1bGVOYW1lKFxuICAgIHJvb3RNb2R1bGVQYXRoOiBzdHJpbmcsIGNvbnRleHQ6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGZpbGVOYW1lID0gZmlsZU5hbWUucmVwbGFjZSgvXFwuW3RqXXMkLywgJycpO1xuXG4gIGlmIChmaWxlTmFtZVswXSA9PT0gJy4nKSB7XG4gICAgLy8gJy4vZm9vJyBvciAnLi4vZm9vJy5cbiAgICAvLyBSZXNvbHZlIHRoZSBwYXRoIGFnYWluc3QgdGhlIGRpcm5hbWUgb2YgdGhlIGN1cnJlbnQgbW9kdWxlLlxuICAgIGZpbGVOYW1lID0gcGF0aC5qb2luKHBhdGguZGlybmFtZShjb250ZXh0KSwgZmlsZU5hbWUpO1xuICB9XG5cbiAgLy8gRW5zdXJlIGNvbnNpc3RlbmN5IGJ5IG5hbWluZyBhbGwgbW9kdWxlcyBhZnRlciB0aGVpciBhYnNvbHV0ZSBwYXRoc1xuICBmaWxlTmFtZSA9IHBhdGgucmVzb2x2ZShmaWxlTmFtZSk7XG5cbiAgaWYgKHJvb3RNb2R1bGVQYXRoKSB7XG4gICAgZmlsZU5hbWUgPSBwYXRoLnJlbGF0aXZlKHJvb3RNb2R1bGVQYXRoLCBmaWxlTmFtZSk7XG4gIH1cblxuICAvLyBSZXBsYWNlIGNoYXJhY3RlcnMgbm90IHN1cHBvcnRlZCBieSBnb29nLm1vZHVsZS5cbiAgY29uc3QgbW9kdWxlTmFtZSA9XG4gICAgICBmaWxlTmFtZS5yZXBsYWNlKC9cXC98XFxcXC9nLCAnLicpLnJlcGxhY2UoL15bXmEtekEtWl8kXS8sICdfJykucmVwbGFjZSgvW15hLXpBLVowLTkuXyRdL2csICdfJyk7XG5cbiAgcmV0dXJuIG1vZHVsZU5hbWU7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpX3N1cHBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2xpX3N1cHBvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7SUFFSCwyQkFBNkI7SUFFN0IsNEJBQTRCO0lBQzVCLDBCQUNJLGNBQXNCLEVBQUUsT0FBZSxFQUFFLFFBQWdCO1FBQzNELFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUU1QyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7WUFDdkIsdUJBQXVCO1lBQ3ZCLDhEQUE4RDtZQUM5RCxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQsc0VBQXNFO1FBQ3RFLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWxDLElBQUksY0FBYyxFQUFFO1lBQ2xCLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNwRDtRQUVELG1EQUFtRDtRQUNuRCxJQUFNLFVBQVUsR0FDWixRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUVsRyxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBdEJELDRDQXNCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuLy8gUG9zdHByb2Nlc3MgZ2VuZXJhdGVkIEpTLlxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhUb01vZHVsZU5hbWUoXG4gICAgcm9vdE1vZHVsZVBhdGg6IHN0cmluZywgY29udGV4dDogc3RyaW5nLCBmaWxlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgZmlsZU5hbWUgPSBmaWxlTmFtZS5yZXBsYWNlKC9cXC5bdGpdcyQvLCAnJyk7XG5cbiAgaWYgKGZpbGVOYW1lWzBdID09PSAnLicpIHtcbiAgICAvLyAnLi9mb28nIG9yICcuLi9mb28nLlxuICAgIC8vIFJlc29sdmUgdGhlIHBhdGggYWdhaW5zdCB0aGUgZGlybmFtZSBvZiB0aGUgY3VycmVudCBtb2R1bGUuXG4gICAgZmlsZU5hbWUgPSBwYXRoLmpvaW4ocGF0aC5kaXJuYW1lKGNvbnRleHQpLCBmaWxlTmFtZSk7XG4gIH1cblxuICAvLyBFbnN1cmUgY29uc2lzdGVuY3kgYnkgbmFtaW5nIGFsbCBtb2R1bGVzIGFmdGVyIHRoZWlyIGFic29sdXRlIHBhdGhzXG4gIGZpbGVOYW1lID0gcGF0aC5yZXNvbHZlKGZpbGVOYW1lKTtcblxuICBpZiAocm9vdE1vZHVsZVBhdGgpIHtcbiAgICBmaWxlTmFtZSA9IHBhdGgucmVsYXRpdmUocm9vdE1vZHVsZVBhdGgsIGZpbGVOYW1lKTtcbiAgfVxuXG4gIC8vIFJlcGxhY2UgY2hhcmFjdGVycyBub3Qgc3VwcG9ydGVkIGJ5IGdvb2cubW9kdWxlLlxuICBjb25zdCBtb2R1bGVOYW1lID1cbiAgICAgIGZpbGVOYW1lLnJlcGxhY2UoL1xcL3xcXFxcL2csICcuJykucmVwbGFjZSgvXlteYS16QS1aXyRdLywgJ18nKS5yZXBsYWNlKC9bXmEtekEtWjAtOS5fJF0vZywgJ18nKTtcblxuICByZXR1cm4gbW9kdWxlTmFtZTtcbn1cbiJdfQ==

@@ -92,2 +92,2 @@ /**

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVILDJDQUFtQztJQUVuQzs7T0FFRztJQUNILGtDQUNJLFNBQXVCLEVBQUUsV0FBMkI7UUFDdEQsNkVBQTZFO1FBQzdFLElBQUksSUFBSSxHQUFZLFNBQVMsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM5QyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO2dCQUN4RixJQUFJLEdBQUksSUFBeUMsQ0FBQyxVQUFVLENBQUM7WUFDL0QsQ0FBQztZQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNOLHVEQUF1RDtnQkFDdkQsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNaLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxNQUFNLEdBQUcsV0FBVyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN2QixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN4QyxNQUFNLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBbkJELDREQW1CQztJQUVEOzs7T0FHRztJQUNILCtCQUFzQyxJQUFhLEVBQUUsV0FBMkI7UUFDOUUsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVO1lBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQUEsU0FBUyxJQUFJLE9BQUEsb0JBQW9CLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxFQUE1QyxDQUE0QyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUhELHNEQUdDO0lBRUQ7O09BRUc7SUFDSCw4QkFBOEIsU0FBdUIsRUFBRSxXQUEyQjtRQUNoRixNQUFNLENBQUMsd0JBQXdCLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFBLFdBQVc7WUFDdEUsSUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN2RSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ1gsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUNmLENBQUM7O2dCQUNELEdBQUcsQ0FBQyxDQUFxQixJQUFBLFVBQUEsU0FBQSxLQUFLLENBQUEsNEJBQUE7b0JBQW5CLElBQUEsb0JBQVUsRUFBVCxZQUFHLEVBQUUsWUFBRztvQkFDbEIsRUFBRSxDQUFDLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNsRixNQUFNLENBQUMsSUFBSSxDQUFDO29CQUNkLENBQUM7aUJBQ0Y7Ozs7Ozs7OztZQUNELE1BQU0sQ0FBQyxLQUFLLENBQUM7O1FBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICcuL3R5cGVzY3JpcHQnO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGRlY2xhcmF0aW9ucyBmb3IgdGhlIGdpdmVuIGRlY29yYXRvci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlY29yYXRvckRlY2xhcmF0aW9ucyhcbiAgICBkZWNvcmF0b3I6IHRzLkRlY29yYXRvciwgdHlwZUNoZWNrZXI6IHRzLlR5cGVDaGVja2VyKTogdHMuRGVjbGFyYXRpb25bXSB7XG4gIC8vIFdhbGsgZG93biB0aGUgZXhwcmVzc2lvbiB0byBmaW5kIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBkZWNvcmF0b3IgZnVuY3Rpb24uXG4gIGxldCBub2RlOiB0cy5Ob2RlID0gZGVjb3JhdG9yO1xuICB3aGlsZSAobm9kZS5raW5kICE9PSB0cy5TeW50YXhLaW5kLklkZW50aWZpZXIpIHtcbiAgICBpZiAobm9kZS5raW5kID09PSB0cy5TeW50YXhLaW5kLkRlY29yYXRvciB8fCBub2RlLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuQ2FsbEV4cHJlc3Npb24pIHtcbiAgICAgIG5vZGUgPSAobm9kZSBhcyB0cy5EZWNvcmF0b3IgfCB0cy5DYWxsRXhwcmVzc2lvbikuZXhwcmVzc2lvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gV2UgZG8gbm90IGtub3cgaG93IHRvIGhhbmRsZSB0aGlzIHR5cGUgb2YgZGVjb3JhdG9yLlxuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuXG4gIGxldCBkZWNTeW0gPSB0eXBlQ2hlY2tlci5nZXRTeW1ib2xBdExvY2F0aW9uKG5vZGUpO1xuICBpZiAoIWRlY1N5bSkgcmV0dXJuIFtdO1xuICBpZiAoZGVjU3ltLmZsYWdzICYgdHMuU3ltYm9sRmxhZ3MuQWxpYXMpIHtcbiAgICBkZWNTeW0gPSB0eXBlQ2hlY2tlci5nZXRBbGlhc2VkU3ltYm9sKGRlY1N5bSk7XG4gIH1cbiAgcmV0dXJuIGRlY1N5bS5nZXREZWNsYXJhdGlvbnMoKSB8fCBbXTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgbm9kZSBoYXMgYW4gZXhwb3J0aW5nIGRlY29yYXRvciAgKGkuZS4sIGEgZGVjb3JhdG9yIHdpdGggQEV4cG9ydERlY29yYXRlZEl0ZW1zXG4gKiBpbiBpdHMgSlNEb2MpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzRXhwb3J0aW5nRGVjb3JhdG9yKG5vZGU6IHRzLk5vZGUsIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlcikge1xuICByZXR1cm4gbm9kZS5kZWNvcmF0b3JzICYmXG4gICAgICBub2RlLmRlY29yYXRvcnMuc29tZShkZWNvcmF0b3IgPT4gaXNFeHBvcnRpbmdEZWNvcmF0b3IoZGVjb3JhdG9yLCB0eXBlQ2hlY2tlcikpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gZGVjb3JhdG9yIGhhcyBhbiBARXhwb3J0RGVjb3JhdGVkSXRlbXMgZGlyZWN0aXZlIGluIGl0cyBKU0RvYy5cbiAqL1xuZnVuY3Rpb24gaXNFeHBvcnRpbmdEZWNvcmF0b3IoZGVjb3JhdG9yOiB0cy5EZWNvcmF0b3IsIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlcikge1xuICByZXR1cm4gZ2V0RGVjb3JhdG9yRGVjbGFyYXRpb25zKGRlY29yYXRvciwgdHlwZUNoZWNrZXIpLnNvbWUoZGVjbGFyYXRpb24gPT4ge1xuICAgIGNvbnN0IHJhbmdlID0gdHMuZ2V0TGVhZGluZ0NvbW1lbnRSYW5nZXMoZGVjbGFyYXRpb24uZ2V0RnVsbFRleHQoKSwgMCk7XG4gICAgaWYgKCFyYW5nZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHtwb3MsIGVuZH0gb2YgcmFuZ2UpIHtcbiAgICAgIGlmICgvQEV4cG9ydERlY29yYXRlZEl0ZW1zXFxiLy50ZXN0KGRlY2xhcmF0aW9uLmdldEZ1bGxUZXh0KCkuc3Vic3RyaW5nKHBvcywgZW5kKSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSk7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVILDJDQUFtQztJQUVuQzs7T0FFRztJQUNILGtDQUNJLFNBQXVCLEVBQUUsV0FBMkI7UUFDdEQsNkVBQTZFO1FBQzdFLElBQUksSUFBSSxHQUFZLFNBQVMsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUU7WUFDN0MsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUU7Z0JBQ3ZGLElBQUksR0FBSSxJQUF5QyxDQUFDLFVBQVUsQ0FBQzthQUM5RDtpQkFBTTtnQkFDTCx1REFBdUQ7Z0JBQ3ZELE9BQU8sRUFBRSxDQUFDO2FBQ1g7U0FDRjtRQUVELElBQUksTUFBTSxHQUFHLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3ZCLElBQUksTUFBTSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRTtZQUN2QyxNQUFNLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQy9DO1FBQ0QsT0FBTyxNQUFNLENBQUMsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFuQkQsNERBbUJDO0lBRUQ7OztPQUdHO0lBQ0gsK0JBQXNDLElBQWEsRUFBRSxXQUEyQjtRQUM5RSxPQUFPLElBQUksQ0FBQyxVQUFVO1lBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQUEsU0FBUyxJQUFJLE9BQUEsb0JBQW9CLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxFQUE1QyxDQUE0QyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUhELHNEQUdDO0lBRUQ7O09BRUc7SUFDSCw4QkFBOEIsU0FBdUIsRUFBRSxXQUEyQjtRQUNoRixPQUFPLHdCQUF3QixDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBQSxXQUFXO1lBQ3RFLElBQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdkUsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDVixPQUFPLEtBQUssQ0FBQzthQUNkOztnQkFDRCxLQUF5QixJQUFBLFVBQUEsU0FBQSxLQUFLLENBQUEsNEJBQUE7b0JBQW5CLElBQUEsb0JBQVUsRUFBVCxZQUFHLEVBQUUsWUFBRztvQkFDbEIsSUFBSSx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRTt3QkFDakYsT0FBTyxJQUFJLENBQUM7cUJBQ2I7aUJBQ0Y7Ozs7Ozs7OztZQUNELE9BQU8sS0FBSyxDQUFDOztRQUNmLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAnLi90eXBlc2NyaXB0JztcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBkZWNsYXJhdGlvbnMgZm9yIHRoZSBnaXZlbiBkZWNvcmF0b3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWNvcmF0b3JEZWNsYXJhdGlvbnMoXG4gICAgZGVjb3JhdG9yOiB0cy5EZWNvcmF0b3IsIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlcik6IHRzLkRlY2xhcmF0aW9uW10ge1xuICAvLyBXYWxrIGRvd24gdGhlIGV4cHJlc3Npb24gdG8gZmluZCB0aGUgaWRlbnRpZmllciBvZiB0aGUgZGVjb3JhdG9yIGZ1bmN0aW9uLlxuICBsZXQgbm9kZTogdHMuTm9kZSA9IGRlY29yYXRvcjtcbiAgd2hpbGUgKG5vZGUua2luZCAhPT0gdHMuU3ludGF4S2luZC5JZGVudGlmaWVyKSB7XG4gICAgaWYgKG5vZGUua2luZCA9PT0gdHMuU3ludGF4S2luZC5EZWNvcmF0b3IgfHwgbm9kZS5raW5kID09PSB0cy5TeW50YXhLaW5kLkNhbGxFeHByZXNzaW9uKSB7XG4gICAgICBub2RlID0gKG5vZGUgYXMgdHMuRGVjb3JhdG9yIHwgdHMuQ2FsbEV4cHJlc3Npb24pLmV4cHJlc3Npb247XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFdlIGRvIG5vdCBrbm93IGhvdyB0byBoYW5kbGUgdGhpcyB0eXBlIG9mIGRlY29yYXRvci5cbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBsZXQgZGVjU3ltID0gdHlwZUNoZWNrZXIuZ2V0U3ltYm9sQXRMb2NhdGlvbihub2RlKTtcbiAgaWYgKCFkZWNTeW0pIHJldHVybiBbXTtcbiAgaWYgKGRlY1N5bS5mbGFncyAmIHRzLlN5bWJvbEZsYWdzLkFsaWFzKSB7XG4gICAgZGVjU3ltID0gdHlwZUNoZWNrZXIuZ2V0QWxpYXNlZFN5bWJvbChkZWNTeW0pO1xuICB9XG4gIHJldHVybiBkZWNTeW0uZ2V0RGVjbGFyYXRpb25zKCkgfHwgW107XG59XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIG5vZGUgaGFzIGFuIGV4cG9ydGluZyBkZWNvcmF0b3IgIChpLmUuLCBhIGRlY29yYXRvciB3aXRoIEBFeHBvcnREZWNvcmF0ZWRJdGVtc1xuICogaW4gaXRzIEpTRG9jKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc0V4cG9ydGluZ0RlY29yYXRvcihub2RlOiB0cy5Ob2RlLCB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIpIHtcbiAgcmV0dXJuIG5vZGUuZGVjb3JhdG9ycyAmJlxuICAgICAgbm9kZS5kZWNvcmF0b3JzLnNvbWUoZGVjb3JhdG9yID0+IGlzRXhwb3J0aW5nRGVjb3JhdG9yKGRlY29yYXRvciwgdHlwZUNoZWNrZXIpKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGRlY29yYXRvciBoYXMgYW4gQEV4cG9ydERlY29yYXRlZEl0ZW1zIGRpcmVjdGl2ZSBpbiBpdHMgSlNEb2MuXG4gKi9cbmZ1bmN0aW9uIGlzRXhwb3J0aW5nRGVjb3JhdG9yKGRlY29yYXRvcjogdHMuRGVjb3JhdG9yLCB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIpIHtcbiAgcmV0dXJuIGdldERlY29yYXRvckRlY2xhcmF0aW9ucyhkZWNvcmF0b3IsIHR5cGVDaGVja2VyKS5zb21lKGRlY2xhcmF0aW9uID0+IHtcbiAgICBjb25zdCByYW5nZSA9IHRzLmdldExlYWRpbmdDb21tZW50UmFuZ2VzKGRlY2xhcmF0aW9uLmdldEZ1bGxUZXh0KCksIDApO1xuICAgIGlmICghcmFuZ2UpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZm9yIChjb25zdCB7cG9zLCBlbmR9IG9mIHJhbmdlKSB7XG4gICAgICBpZiAoL0BFeHBvcnREZWNvcmF0ZWRJdGVtc1xcYi8udGVzdChkZWNsYXJhdGlvbi5nZXRGdWxsVGV4dCgpLnN1YnN0cmluZyhwb3MsIGVuZCkpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0pO1xufVxuIl19

@@ -18,2 +18,4 @@ /// <amd-module name="tsickle/src/es5processor" />

googmodule?: boolean;
/** Identifies whether this file is the result of a JS transpilation. */
isJsTranspilation?: boolean;
/** Whether the emit targets ES5 or ES6+. */

@@ -20,0 +22,0 @@ es5Mode?: boolean;

@@ -126,2 +126,2 @@ /**

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZW92ZXJ2aWV3X2NvbW1lbnRfdHJhbnNmb3JtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZmlsZW92ZXJ2aWV3X2NvbW1lbnRfdHJhbnNmb3JtZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVILHlDQUFpQztJQUNqQyxpRUFBbUY7SUFDbkYsMkNBQW1DO0lBRW5DOzs7T0FHRztJQUNILElBQU0sNEJBQTRCLEdBQzlCLElBQUksR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFFM0U7Ozs7O09BS0c7SUFDSCxzQ0FBNkMsSUFBWTtRQUN2RCxJQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsNEJBQTRCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBM0MsQ0FBMkMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFIRCxvRUFHQztJQUVEOzs7T0FHRztJQUNILHNDQUE2QyxPQUFpQztRQUU1RSxNQUFNLENBQUMsVUFBQyxFQUFpQjtZQUN2QixJQUFJLFFBQVEsR0FBNEIsRUFBRSxDQUFDO1lBQzNDLDhGQUE4RjtZQUM5RixFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztnQkFDeEYsUUFBUSxHQUFHLEVBQUUsQ0FBQyw0QkFBNEIsQ0FB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QUFrQixFQUFDO1lBQ25ELEVBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBQztTQUNsRSxDQUFDLENBQUM7UUFDSCxJQUFJLHVCQUF1QixHQUFHLDRDQUF5QixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVELHVCQUF1QixHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FDcEQsdUJBQXVCLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEYsTUFBTSxDQUFDLHVDQUFvQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsZUFBZSxXQUFFLHVCQUF1QixHQUFLLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ25HLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIGpzZG9jIGZyb20gJy4vanNkb2MnO1xuaW1wb3J0IHtjcmVhdGVOb3RFbWl0dGVkU3RhdGVtZW50LCB1cGRhdGVTb3VyY2VGaWxlTm9kZX0gZnJvbSAnLi90cmFuc2Zvcm1lcl91dGlsJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJy4vdHlwZXNjcmlwdCc7XG5cbi8qKlxuICogQSBzZXQgb2YgSlNEb2MgdGFncyB0aGF0IG1hcmsgYSBjb21tZW50IGFzIGEgZmlsZW92ZXJ2aWV3IGNvbW1lbnQuIFRoZXNlIGFyZSByZWNvZ25pemVkIGJ5IG90aGVyXG4gKiBwaWVjZXMgb2YgaW5mcmFzdHJ1Y3R1cmUgKENsb3N1cmUgQ29tcGlsZXIsIG1vZHVsZSBzeXN0ZW0sIC4uLikuXG4gKi9cbmNvbnN0IEZJTEVPVkVSVklFV19DT01NRU5UX01BUktFUlM6IFJlYWRvbmx5U2V0PHN0cmluZz4gPVxuICAgIG5ldyBTZXQoWydmaWxlb3ZlcnZpZXcnLCAnZXh0ZXJucycsICdtb2ROYW1lJywgJ21vZHMnLCAncGludG9tb2R1bGUnXSk7XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBjb21tZW50IGlzIGEgXFxAZmlsZW92ZXJ2aWV3IHN0eWxlIGNvbW1lbnQgaW4gdGhlIENsb3N1cmUgc2Vuc2UsIGkuZS4gYVxuICogY29tbWVudCB0aGF0IGhhcyBKU0RvYyB0YWdzIG1hcmtpbmcgaXQgYXMgYSBmaWxlb3ZlcnZpZXcgY29tbWVudC5cbiAqIE5vdGUgdGhhdCB0aGlzIGlzIGRpZmZlcmVudCBmcm9tIFR5cGVTY3JpcHQncyB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb25jZXB0LCB3aGVyZSBhIGZpbGUgY29tbWVudFxuICogaXMgYSBjb21tZW50IHNlcGFyYXRlZCBmcm9tIHRoZSByZXN0IG9mIHRoZSBmaWxlIGJ5IGEgZG91YmxlIG5ld2xpbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Nsb3N1cmVGaWxlb3ZlcnZpZXdDb21tZW50KHRleHQ6IHN0cmluZykge1xuICBjb25zdCBjdXJyZW50ID0ganNkb2MucGFyc2UodGV4dCk7XG4gIHJldHVybiBjdXJyZW50ICE9PSBudWxsICYmIGN1cnJlbnQudGFncy5zb21lKHQgPT4gRklMRU9WRVJWSUVXX0NPTU1FTlRfTUFSS0VSUy5oYXModC50YWdOYW1lKSk7XG59XG5cbi8qKlxuICogQSB0cmFuc2Zvcm1lciB0aGF0IGVuc3VyZXMgdGhlIGVtaXR0ZWQgSlMgZmlsZSBoYXMgYW4gXFxAZmlsZW92ZXJ2aWV3IGNvbW1lbnQgdGhhdCBjb250YWlucyBhblxuICogXFxAc3VwcHJlc3Mge2NoZWNrVHlwZXN9IGFubm90YXRpb24gYnkgZWl0aGVyIGFkZGluZyBvciB1cGRhdGluZyBhbiBleGlzdGluZyBjb21tZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtRmlsZW92ZXJ2aWV3Q29tbWVudChjb250ZXh0OiB0cy5UcmFuc2Zvcm1hdGlvbkNvbnRleHQpOlxuICAgIChzZjogdHMuU291cmNlRmlsZSkgPT4gdHMuU291cmNlRmlsZSB7XG4gIHJldHVybiAoc2Y6IHRzLlNvdXJjZUZpbGUpID0+IHtcbiAgICBsZXQgY29tbWVudHM6IHRzLlN5bnRoZXNpemVkQ29tbWVudFtdID0gW107XG4gICAgLy8gVXNlIHRyYWlsaW5nIGNvbW1lbnRzIGJlY2F1c2UgdGhhdCdzIHdoYXQgdHJhbnNmb3JtZXJfdXRpbC50cyBjcmVhdGVzIChpLmUuIGJ5IGNvbnZlbnRpb24pLlxuICAgIGlmIChzZi5zdGF0ZW1lbnRzLmxlbmd0aCAmJiBzZi5zdGF0ZW1lbnRzWzBdLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuTm90RW1pdHRlZFN0YXRlbWVudCkge1xuICAgICAgY29tbWVudHMgPSB0cy5nZXRTeW50aGV0aWNUcmFpbGluZ0NvbW1lbnRzKHNmLnN0YXRlbWVudHNbMF0pIHx8IFtdO1xuICAgIH1cblxuICAgIGxldCBmaWxlb3ZlcnZpZXdJZHggPSAtMTtcbiAgICBsZXQgcGFyc2VkOiB7dGFnczoganNkb2MuVGFnW119fG51bGwgPSBudWxsO1xuICAgIGZvciAobGV0IGkgPSBjb21tZW50cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgY29uc3QgY3VycmVudCA9IGpzZG9jLnBhcnNlQ29udGVudHMoY29tbWVudHNbaV0udGV4dCk7XG4gICAgICBpZiAoY3VycmVudCAhPT0gbnVsbCAmJiBjdXJyZW50LnRhZ3Muc29tZSh0ID0+IEZJTEVPVkVSVklFV19DT01NRU5UX01BUktFUlMuaGFzKHQudGFnTmFtZSkpKSB7XG4gICAgICAgIGZpbGVvdmVydmlld0lkeCA9IGk7XG4gICAgICAgIHBhcnNlZCA9IGN1cnJlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBBZGQgYSBAc3VwcHJlc3Mge2NoZWNrVHlwZXN9IHRhZyB0byBlYWNoIHNvdXJjZSBmaWxlJ3MgSlNEb2MgY29tbWVudCxcbiAgICAvLyBiZWluZyBjYXJlZnVsIHRvIHJldGFpbiBleGlzdGluZyBjb21tZW50cyBhbmQgdGhlaXIgQHN1cHByZXNzJ2lvbnMuXG4gICAgLy8gQ2xvc3VyZSBDb21waWxlciBjb25zaWRlcnMgdGhlICpsYXN0KiBjb21tZW50IHdpdGggQGZpbGVvdmVydmlldyAob3IgQGV4dGVybnMgb3IgQG5vY29tcGlsZSlcbiAgICAvLyB0aGF0IGhhcyBub3QgYmVlbiBhdHRhY2hlZCB0byBzb21lIG90aGVyIHRyZWUgbm9kZSB0byBiZSB0aGUgZmlsZSBvdmVydmlldyBjb21tZW50LCBhbmRcbiAgICAvLyBvbmx5IGFwcGxpZXMgQHN1cHByZXNzIHRhZ3MgZnJvbSBpdC5cbiAgICAvLyBBSkQgY29uc2lkZXJzICphbnkqIGNvbW1lbnQgbWVudGlvbmluZyBAZmlsZW92ZXJ2aWV3LlxuICAgIGlmICghcGFyc2VkKSB7XG4gICAgICAvLyBObyBleGlzdGluZyBjb21tZW50IHRvIG1lcmdlIHdpdGgsIGp1c3QgZW1pdCBhIG5ldyBvbmUuXG4gICAgICByZXR1cm4gYWRkTmV3RmlsZW92ZXJ2aWV3Q29tbWVudChzZik7XG4gICAgfVxuXG4gICAgLy8gQWRkIEBzdXBwcmVzcyB7Y2hlY2tUeXBlc30sIG9yIGFkZCB0byB0aGUgbGlzdCBpbiBhbiBleGlzdGluZyBAc3VwcHJlc3MgdGFnLlxuICAgIC8vIENsb3N1cmUgY29tcGlsZXIgYmFyZnMgaWYgdGhlcmUncyBhIGR1cGxpY2F0ZWQgQHN1cHByZXNzIHRhZyBpbiBhIGZpbGUsIHNvIHRoZSB0YWcgbXVzdFxuICAgIC8vIG9ubHkgYXBwZWFyIG9uY2UgYW5kIGJlIG1lcmdlZC5cbiAgICBjb25zdCB7dGFnc30gPSBwYXJzZWQ7XG4gICAgY29uc3Qgc3VwcHJlc3NUYWcgPSB0YWdzLmZpbmQodCA9PiB0LnRhZ05hbWUgPT09ICdzdXBwcmVzcycpO1xuICAgIGlmIChzdXBwcmVzc1RhZykge1xuICAgICAgY29uc3Qgc3VwcHJlc3Npb25zID0gc3VwcHJlc3NUYWcudHlwZSB8fCAnJztcbiAgICAgIGNvbnN0IHN1cHByZXNzaW9uc0xpc3QgPSBzdXBwcmVzc2lvbnMuc3BsaXQoJywnKS5tYXAocyA9PiBzLnRyaW0oKSk7XG4gICAgICBpZiAoc3VwcHJlc3Npb25zTGlzdC5pbmRleE9mKCdjaGVja1R5cGVzJykgPT09IC0xKSB7XG4gICAgICAgIHN1cHByZXNzaW9uc0xpc3QucHVzaCgnY2hlY2tUeXBlcycpO1xuICAgICAgfVxuICAgICAgc3VwcHJlc3NUYWcudHlwZSA9IHN1cHByZXNzaW9uc0xpc3Quam9pbignLCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YWdzLnB1c2goe1xuICAgICAgICB0YWdOYW1lOiAnc3VwcHJlc3MnLFxuICAgICAgICB0eXBlOiAnY2hlY2tUeXBlcycsXG4gICAgICAgIHRleHQ6ICdjaGVja2VkIGJ5IHRzYycsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgY29tbWVudFRleHQgPSBqc2RvYy50b1N0cmluZ1dpdGhvdXRTdGFydEVuZCh0YWdzKTtcbiAgICBjb21tZW50c1tmaWxlb3ZlcnZpZXdJZHhdLnRleHQgPSBjb21tZW50VGV4dDtcbiAgICAvLyBzZiBkb2VzIG5vdCBuZWVkIHRvIGJlIHVwZGF0ZWQsIHN5bnRoZXNpemVkIGNvbW1lbnRzIGFyZSBtdXRhYmxlLlxuICAgIHJldHVybiBzZjtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYWRkTmV3RmlsZW92ZXJ2aWV3Q29tbWVudChzZjogdHMuU291cmNlRmlsZSk6IHRzLlNvdXJjZUZpbGUge1xuICBjb25zdCBjb21tZW50VGV4dCA9IGpzZG9jLnRvU3RyaW5nV2l0aG91dFN0YXJ0RW5kKFtcbiAgICB7dGFnTmFtZTogJ2ZpbGVvdmVydmlldycsIHRleHQ6ICdhZGRlZCBieSB0c2lja2xlJ30sXG4gICAge3RhZ05hbWU6ICdzdXBwcmVzcycsIHR5cGU6ICdjaGVja1R5cGVzJywgdGV4dDogJ2NoZWNrZWQgYnkgdHNjJ30sXG4gIF0pO1xuICBsZXQgc3ludGhldGljRmlyc3RTdGF0ZW1lbnQgPSBjcmVhdGVOb3RFbWl0dGVkU3RhdGVtZW50KHNmKTtcbiAgc3ludGhldGljRmlyc3RTdGF0ZW1lbnQgPSB0cy5hZGRTeW50aGV0aWNUcmFpbGluZ0NvbW1lbnQoXG4gICAgICBzeW50aGV0aWNGaXJzdFN0YXRlbWVudCwgdHMuU3ludGF4S2luZC5NdWx0aUxpbmVDb21tZW50VHJpdmlhLCBjb21tZW50VGV4dCwgdHJ1ZSk7XG4gIHJldHVybiB1cGRhdGVTb3VyY2VGaWxlTm9kZShzZiwgdHMuY3JlYXRlTm9kZUFycmF5KFtzeW50aGV0aWNGaXJzdFN0YXRlbWVudCwgLi4uc2Yuc3RhdGVtZW50c10pKTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZW92ZXJ2aWV3X2NvbW1lbnRfdHJhbnNmb3JtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZmlsZW92ZXJ2aWV3X2NvbW1lbnRfdHJhbnNmb3JtZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVILHlDQUFpQztJQUNqQyxpRUFBbUY7SUFDbkYsMkNBQW1DO0lBRW5DOzs7T0FHRztJQUNILElBQU0sNEJBQTRCLEdBQzlCLElBQUksR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFFM0U7Ozs7O09BS0c7SUFDSCxzQ0FBNkMsSUFBWTtRQUN2RCxJQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sT0FBTyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQTNDLENBQTJDLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBSEQsb0VBR0M7SUFFRDs7O09BR0c7SUFDSCxzQ0FBNkMsT0FBaUM7UUFFNUUsT0FBTyxVQUFDLEVBQWlCO1lBQ3ZCLElBQUksUUFBUSxHQUE0QixFQUFFLENBQUM7WUFDM0MsOEZBQThGO1lBQzlGLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRTtnQkFDdkYsUUFBUSxHQUFHLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3BFO1lBRUQsSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekIsSUFBSSxNQUFNLEdBQTZCLElBQUksQ0FBQztZQUM1QyxLQUFLLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzdDLElBQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLE9BQU8sS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSw0QkFBNEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUEzQyxDQUEyQyxDQUFDLEVBQUU7b0JBQzNGLGVBQWUsR0FBRyxDQUFDLENBQUM7b0JBQ3BCLE1BQU0sR0FBRyxPQUFPLENBQUM7b0JBQ2pCLE1BQU07aUJBQ1A7YUFDRjtZQUNELHdFQUF3RTtZQUN4RSxzRUFBc0U7WUFDdEUsK0ZBQStGO1lBQy9GLDBGQUEwRjtZQUMxRix1Q0FBdUM7WUFDdkMsd0RBQXdEO1lBQ3hELElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ1gsMERBQTBEO2dCQUMxRCxPQUFPLHlCQUF5QixDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3RDO1lBRUQsK0VBQStFO1lBQy9FLDBGQUEwRjtZQUMxRixrQ0FBa0M7WUFDM0IsSUFBQSxrQkFBSSxDQUFXO1lBQ3RCLElBQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsT0FBTyxLQUFLLFVBQVUsRUFBeEIsQ0FBd0IsQ0FBQyxDQUFDO1lBQzdELElBQUksV0FBVyxFQUFFO2dCQUNmLElBQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUM1QyxJQUFNLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFSLENBQVEsQ0FBQyxDQUFDO2dCQUNwRSxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtvQkFDakQsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2lCQUNyQztnQkFDRCxXQUFXLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUMvQztpQkFBTTtnQkFDTCxJQUFJLENBQUMsSUFBSSxDQUFDO29CQUNSLE9BQU8sRUFBRSxVQUFVO29CQUNuQixJQUFJLEVBQUUsWUFBWTtvQkFDbEIsSUFBSSxFQUFFLGdCQUFnQjtpQkFDdkIsQ0FBQyxDQUFDO2FBQ0o7WUFDRCxJQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEQsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksR0FBRyxXQUFXLENBQUM7WUFDN0Msb0VBQW9FO1lBQ3BFLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQXRERCxvRUFzREM7SUFFRCxtQ0FBbUMsRUFBaUI7UUFDbEQsSUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLHVCQUF1QixDQUFDO1lBQ2hELEVBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUM7WUFDbkQsRUFBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFDO1NBQ2xFLENBQUMsQ0FBQztRQUNILElBQUksdUJBQXVCLEdBQUcsNENBQXlCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUQsdUJBQXVCLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUNwRCx1QkFBdUIsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLHNCQUFzQixFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0RixPQUFPLHVDQUFvQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsZUFBZSxXQUFFLHVCQUF1QixHQUFLLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ25HLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIGpzZG9jIGZyb20gJy4vanNkb2MnO1xuaW1wb3J0IHtjcmVhdGVOb3RFbWl0dGVkU3RhdGVtZW50LCB1cGRhdGVTb3VyY2VGaWxlTm9kZX0gZnJvbSAnLi90cmFuc2Zvcm1lcl91dGlsJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJy4vdHlwZXNjcmlwdCc7XG5cbi8qKlxuICogQSBzZXQgb2YgSlNEb2MgdGFncyB0aGF0IG1hcmsgYSBjb21tZW50IGFzIGEgZmlsZW92ZXJ2aWV3IGNvbW1lbnQuIFRoZXNlIGFyZSByZWNvZ25pemVkIGJ5IG90aGVyXG4gKiBwaWVjZXMgb2YgaW5mcmFzdHJ1Y3R1cmUgKENsb3N1cmUgQ29tcGlsZXIsIG1vZHVsZSBzeXN0ZW0sIC4uLikuXG4gKi9cbmNvbnN0IEZJTEVPVkVSVklFV19DT01NRU5UX01BUktFUlM6IFJlYWRvbmx5U2V0PHN0cmluZz4gPVxuICAgIG5ldyBTZXQoWydmaWxlb3ZlcnZpZXcnLCAnZXh0ZXJucycsICdtb2ROYW1lJywgJ21vZHMnLCAncGludG9tb2R1bGUnXSk7XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBjb21tZW50IGlzIGEgXFxAZmlsZW92ZXJ2aWV3IHN0eWxlIGNvbW1lbnQgaW4gdGhlIENsb3N1cmUgc2Vuc2UsIGkuZS4gYVxuICogY29tbWVudCB0aGF0IGhhcyBKU0RvYyB0YWdzIG1hcmtpbmcgaXQgYXMgYSBmaWxlb3ZlcnZpZXcgY29tbWVudC5cbiAqIE5vdGUgdGhhdCB0aGlzIGlzIGRpZmZlcmVudCBmcm9tIFR5cGVTY3JpcHQncyB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb25jZXB0LCB3aGVyZSBhIGZpbGUgY29tbWVudFxuICogaXMgYSBjb21tZW50IHNlcGFyYXRlZCBmcm9tIHRoZSByZXN0IG9mIHRoZSBmaWxlIGJ5IGEgZG91YmxlIG5ld2xpbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Nsb3N1cmVGaWxlb3ZlcnZpZXdDb21tZW50KHRleHQ6IHN0cmluZykge1xuICBjb25zdCBjdXJyZW50ID0ganNkb2MucGFyc2UodGV4dCk7XG4gIHJldHVybiBjdXJyZW50ICE9PSBudWxsICYmIGN1cnJlbnQudGFncy5zb21lKHQgPT4gRklMRU9WRVJWSUVXX0NPTU1FTlRfTUFSS0VSUy5oYXModC50YWdOYW1lKSk7XG59XG5cbi8qKlxuICogQSB0cmFuc2Zvcm1lciB0aGF0IGVuc3VyZXMgdGhlIGVtaXR0ZWQgSlMgZmlsZSBoYXMgYW4gXFxAZmlsZW92ZXJ2aWV3IGNvbW1lbnQgdGhhdCBjb250YWlucyBhblxuICogXFxAc3VwcHJlc3Mge2NoZWNrVHlwZXN9IGFubm90YXRpb24gYnkgZWl0aGVyIGFkZGluZyBvciB1cGRhdGluZyBhbiBleGlzdGluZyBjb21tZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtRmlsZW92ZXJ2aWV3Q29tbWVudChjb250ZXh0OiB0cy5UcmFuc2Zvcm1hdGlvbkNvbnRleHQpOlxuICAgIChzZjogdHMuU291cmNlRmlsZSkgPT4gdHMuU291cmNlRmlsZSB7XG4gIHJldHVybiAoc2Y6IHRzLlNvdXJjZUZpbGUpID0+IHtcbiAgICBsZXQgY29tbWVudHM6IHRzLlN5bnRoZXNpemVkQ29tbWVudFtdID0gW107XG4gICAgLy8gVXNlIHRyYWlsaW5nIGNvbW1lbnRzIGJlY2F1c2UgdGhhdCdzIHdoYXQgdHJhbnNmb3JtZXJfdXRpbC50cyBjcmVhdGVzIChpLmUuIGJ5IGNvbnZlbnRpb24pLlxuICAgIGlmIChzZi5zdGF0ZW1lbnRzLmxlbmd0aCAmJiBzZi5zdGF0ZW1lbnRzWzBdLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuTm90RW1pdHRlZFN0YXRlbWVudCkge1xuICAgICAgY29tbWVudHMgPSB0cy5nZXRTeW50aGV0aWNUcmFpbGluZ0NvbW1lbnRzKHNmLnN0YXRlbWVudHNbMF0pIHx8IFtdO1xuICAgIH1cblxuICAgIGxldCBmaWxlb3ZlcnZpZXdJZHggPSAtMTtcbiAgICBsZXQgcGFyc2VkOiB7dGFnczoganNkb2MuVGFnW119fG51bGwgPSBudWxsO1xuICAgIGZvciAobGV0IGkgPSBjb21tZW50cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgY29uc3QgY3VycmVudCA9IGpzZG9jLnBhcnNlQ29udGVudHMoY29tbWVudHNbaV0udGV4dCk7XG4gICAgICBpZiAoY3VycmVudCAhPT0gbnVsbCAmJiBjdXJyZW50LnRhZ3Muc29tZSh0ID0+IEZJTEVPVkVSVklFV19DT01NRU5UX01BUktFUlMuaGFzKHQudGFnTmFtZSkpKSB7XG4gICAgICAgIGZpbGVvdmVydmlld0lkeCA9IGk7XG4gICAgICAgIHBhcnNlZCA9IGN1cnJlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBBZGQgYSBAc3VwcHJlc3Mge2NoZWNrVHlwZXN9IHRhZyB0byBlYWNoIHNvdXJjZSBmaWxlJ3MgSlNEb2MgY29tbWVudCxcbiAgICAvLyBiZWluZyBjYXJlZnVsIHRvIHJldGFpbiBleGlzdGluZyBjb21tZW50cyBhbmQgdGhlaXIgQHN1cHByZXNzJ2lvbnMuXG4gICAgLy8gQ2xvc3VyZSBDb21waWxlciBjb25zaWRlcnMgdGhlICpsYXN0KiBjb21tZW50IHdpdGggQGZpbGVvdmVydmlldyAob3IgQGV4dGVybnMgb3IgQG5vY29tcGlsZSlcbiAgICAvLyB0aGF0IGhhcyBub3QgYmVlbiBhdHRhY2hlZCB0byBzb21lIG90aGVyIHRyZWUgbm9kZSB0byBiZSB0aGUgZmlsZSBvdmVydmlldyBjb21tZW50LCBhbmRcbiAgICAvLyBvbmx5IGFwcGxpZXMgQHN1cHByZXNzIHRhZ3MgZnJvbSBpdC5cbiAgICAvLyBBSkQgY29uc2lkZXJzICphbnkqIGNvbW1lbnQgbWVudGlvbmluZyBAZmlsZW92ZXJ2aWV3LlxuICAgIGlmICghcGFyc2VkKSB7XG4gICAgICAvLyBObyBleGlzdGluZyBjb21tZW50IHRvIG1lcmdlIHdpdGgsIGp1c3QgZW1pdCBhIG5ldyBvbmUuXG4gICAgICByZXR1cm4gYWRkTmV3RmlsZW92ZXJ2aWV3Q29tbWVudChzZik7XG4gICAgfVxuXG4gICAgLy8gQWRkIEBzdXBwcmVzcyB7Y2hlY2tUeXBlc30sIG9yIGFkZCB0byB0aGUgbGlzdCBpbiBhbiBleGlzdGluZyBAc3VwcHJlc3MgdGFnLlxuICAgIC8vIENsb3N1cmUgY29tcGlsZXIgYmFyZnMgaWYgdGhlcmUncyBhIGR1cGxpY2F0ZWQgQHN1cHByZXNzIHRhZyBpbiBhIGZpbGUsIHNvIHRoZSB0YWcgbXVzdFxuICAgIC8vIG9ubHkgYXBwZWFyIG9uY2UgYW5kIGJlIG1lcmdlZC5cbiAgICBjb25zdCB7dGFnc30gPSBwYXJzZWQ7XG4gICAgY29uc3Qgc3VwcHJlc3NUYWcgPSB0YWdzLmZpbmQodCA9PiB0LnRhZ05hbWUgPT09ICdzdXBwcmVzcycpO1xuICAgIGlmIChzdXBwcmVzc1RhZykge1xuICAgICAgY29uc3Qgc3VwcHJlc3Npb25zID0gc3VwcHJlc3NUYWcudHlwZSB8fCAnJztcbiAgICAgIGNvbnN0IHN1cHByZXNzaW9uc0xpc3QgPSBzdXBwcmVzc2lvbnMuc3BsaXQoJywnKS5tYXAocyA9PiBzLnRyaW0oKSk7XG4gICAgICBpZiAoc3VwcHJlc3Npb25zTGlzdC5pbmRleE9mKCdjaGVja1R5cGVzJykgPT09IC0xKSB7XG4gICAgICAgIHN1cHByZXNzaW9uc0xpc3QucHVzaCgnY2hlY2tUeXBlcycpO1xuICAgICAgfVxuICAgICAgc3VwcHJlc3NUYWcudHlwZSA9IHN1cHByZXNzaW9uc0xpc3Quam9pbignLCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YWdzLnB1c2goe1xuICAgICAgICB0YWdOYW1lOiAnc3VwcHJlc3MnLFxuICAgICAgICB0eXBlOiAnY2hlY2tUeXBlcycsXG4gICAgICAgIHRleHQ6ICdjaGVja2VkIGJ5IHRzYycsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgY29tbWVudFRleHQgPSBqc2RvYy50b1N0cmluZ1dpdGhvdXRTdGFydEVuZCh0YWdzKTtcbiAgICBjb21tZW50c1tmaWxlb3ZlcnZpZXdJZHhdLnRleHQgPSBjb21tZW50VGV4dDtcbiAgICAvLyBzZiBkb2VzIG5vdCBuZWVkIHRvIGJlIHVwZGF0ZWQsIHN5bnRoZXNpemVkIGNvbW1lbnRzIGFyZSBtdXRhYmxlLlxuICAgIHJldHVybiBzZjtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYWRkTmV3RmlsZW92ZXJ2aWV3Q29tbWVudChzZjogdHMuU291cmNlRmlsZSk6IHRzLlNvdXJjZUZpbGUge1xuICBjb25zdCBjb21tZW50VGV4dCA9IGpzZG9jLnRvU3RyaW5nV2l0aG91dFN0YXJ0RW5kKFtcbiAgICB7dGFnTmFtZTogJ2ZpbGVvdmVydmlldycsIHRleHQ6ICdhZGRlZCBieSB0c2lja2xlJ30sXG4gICAge3RhZ05hbWU6ICdzdXBwcmVzcycsIHR5cGU6ICdjaGVja1R5cGVzJywgdGV4dDogJ2NoZWNrZWQgYnkgdHNjJ30sXG4gIF0pO1xuICBsZXQgc3ludGhldGljRmlyc3RTdGF0ZW1lbnQgPSBjcmVhdGVOb3RFbWl0dGVkU3RhdGVtZW50KHNmKTtcbiAgc3ludGhldGljRmlyc3RTdGF0ZW1lbnQgPSB0cy5hZGRTeW50aGV0aWNUcmFpbGluZ0NvbW1lbnQoXG4gICAgICBzeW50aGV0aWNGaXJzdFN0YXRlbWVudCwgdHMuU3ludGF4S2luZC5NdWx0aUxpbmVDb21tZW50VHJpdmlhLCBjb21tZW50VGV4dCwgdHJ1ZSk7XG4gIHJldHVybiB1cGRhdGVTb3VyY2VGaWxlTm9kZShzZiwgdHMuY3JlYXRlTm9kZUFycmF5KFtzeW50aGV0aWNGaXJzdFN0YXRlbWVudCwgLi4uc2Yuc3RhdGVtZW50c10pKTtcbn1cbiJdfQ==

@@ -377,2 +377,2 @@ /**

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNkb2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvanNkb2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVILHlDQUE0QztJQXNDNUM7Ozs7OztPQU1HO0lBQ0gsSUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUNuQyxVQUFVLEVBQU8sVUFBVTtRQUMzQixRQUFRLEVBQVMsdUJBQXVCO1FBQ3hDLE9BQU8sRUFBVSxVQUFVO1FBQzNCLGFBQWEsRUFBSSxXQUFXO1FBQzVCLFFBQVEsRUFBUyxZQUFZO1FBQzdCLE1BQU0sRUFBVyxNQUFNO1FBQ3ZCLFVBQVUsRUFBTyxTQUFTO1FBQzFCLGFBQWEsRUFBSSxNQUFNO1FBQ3ZCLFFBQVEsRUFBUyxRQUFRO1FBQ3pCLFNBQVMsRUFBUSxTQUFTO1FBQzFCLGNBQWMsRUFBRyxPQUFPO1FBQ3hCLGVBQWUsRUFBRSxtQkFBbUI7UUFDcEMsUUFBUSxFQUFTLElBQUk7UUFDckIsYUFBYSxFQUFJLFFBQVE7UUFDekIsWUFBWSxFQUFLLGNBQWM7UUFDL0IsWUFBWSxFQUFLLFdBQVc7UUFDNUIsY0FBYyxFQUFHLGNBQWM7UUFDL0IsZUFBZSxFQUFFLHNCQUFzQjtRQUN2QyxPQUFPLEVBQVUsU0FBUztRQUMxQixNQUFNLEVBQVcsU0FBUztRQUMxQixVQUFVLEVBQU8sU0FBUztRQUMxQixNQUFNLEVBQVcsVUFBVTtRQUMzQixTQUFTLEVBQVEsWUFBWTtRQUM3QixXQUFXLEVBQU0sZUFBZTtRQUNoQyxVQUFVLEVBQU8sT0FBTztRQUN4QixTQUFTLEVBQVEsT0FBTztRQUN4QixhQUFhLEVBQUksaUJBQWlCO1FBQ2xDLFVBQVUsRUFBTyxhQUFhO1FBQzlCLFNBQVMsRUFBUSxXQUFXO1FBQzVCLFFBQVEsRUFBUyxRQUFRO1FBQ3pCLFlBQVksRUFBSyxVQUFVO1FBQzNCLFFBQVEsRUFB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Q0FBQztZQUNwQixHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN0QixDQUFDO1FBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQzs7SUFDYixDQUFDO0lBbENELHNCQWtDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtub3JtYWxpemVMaW5lRW5kaW5nc30gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBUeXBlU2NyaXB0IGhhcyBhbiBBUEkgZm9yIEpTRG9jIGFscmVhZHksIGJ1dCBpdCdzIG5vdCBleHBvc2VkLlxuICogaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy83MzkzXG4gKiBGb3Igbm93IHdlIGNyZWF0ZSB0eXBlcyB0aGF0IGFyZSBzaW1pbGFyIHRvIHRoZWlycyBzbyB0aGF0IG1pZ3JhdGluZ1xuICogdG8gdGhlaXIgQVBJIHdpbGwgYmUgZWFzaWVyLiAgU2VlIGUuZy4gdHMuSlNEb2NUYWcgYW5kIHRzLkpTRG9jQ29tbWVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWcge1xuICAvKipcbiAgICogdGFnTmFtZSBpcyBlLmcuIFwicGFyYW1cIiBpbiBhbiBAcGFyYW0gZGVjbGFyYXRpb24uICBJdCBpcyB0aGUgZW1wdHkgc3RyaW5nXG4gICAqIGZvciB0aGUgcGxhaW4gdGV4dCBkb2N1bWVudGF0aW9uIHRoYXQgb2NjdXJzIGJlZm9yZSBhbnkgQGZvbyBsaW5lcy5cbiAgICovXG4gIHRhZ05hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIHBhcmFtZXRlck5hbWUgaXMgdGhlIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiBwYXJhbWV0ZXIsIGUuZy4gXCJmb29cIlxuICAgKiBpbiBgXFxAcGFyYW0gZm9vIFRoZSBmb28gcGFyYW1gXG4gICAqL1xuICBwYXJhbWV0ZXJOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgYSBKU0RvYyBcXEBwYXJhbSwgXFxAdHlwZSBldGMgdGFnLCByZW5kZXJlZCBpbiBjdXJseSBicmFjZXMuXG4gICAqIENhbiBhbHNvIGhvbGQgdGhlIHR5cGUgb2YgYW4gXFxAc3VwcHJlc3MuXG4gICAqL1xuICB0eXBlPzogc3RyaW5nO1xuICAvKiogb3B0aW9uYWwgaXMgdHJ1ZSBmb3Igb3B0aW9uYWwgZnVuY3Rpb24gcGFyYW1ldGVycy4gKi9cbiAgb3B0aW9uYWw/OiBib29sZWFuO1xuICAvKiogcmVzdFBhcmFtIGlzIHRydWUgZm9yIFwiLi4ueDogZm9vW11cIiBmdW5jdGlvbiBwYXJhbWV0ZXJzLiAqL1xuICByZXN0UGFyYW0/OiBib29sZWFuO1xuICAvKipcbiAgICogZGVzdHJ1Y3R1cmluZyBpcyB0cnVlIGZvciBkZXN0cnVjdHVyaW5nIGJpbmQgcGFyYW1ldGVycywgd2hpY2ggcmVxdWlyZVxuICAgKiBub24tbnVsbCBhcmd1bWVudHMgb24gdGhlIENsb3N1cmUgc2lkZS4gIENhbiBsaWtlbHkgcmVtb3ZlIHRoaXNcbiAgICogb25jZSBUeXBlU2NyaXB0IG51bGxhYmxlIHR5cGVzIGFyZSBhdmFpbGFibGUuXG4gICAqL1xuICBkZXN0cnVjdHVyaW5nPzogYm9vbGVhbjtcbiAgLyoqIEFueSByZW1haW5pbmcgdGV4dCBvbiB0aGUgdGFnLCBlLmcuIHRoZSBkZXNjcmlwdGlvbi4gKi9cbiAgdGV4dD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIGxpc3Qgb2YgYWxsIEpTRG9jIHRhZ3MgYWxsb3dlZCBieSB0aGUgQ2xvc3VyZSBjb21waWxlci5cbiAqIFRoZSBwdWJsaWMgQ2xvc3VyZSBkb2NzIGRvbid0IGxpc3QgYWxsIHRoZSB0YWdzIGl0IGFsbG93czsgdGhpcyBsaXN0IGNvbWVzXG4gKiBmcm9tIHRoZSBjb21waWxlciBzb3VyY2UgaXRzZWxmLlxuICogaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWNvbXBpbGVyL2Jsb2IvbWFzdGVyL3NyYy9jb20vZ29vZ2xlL2phdmFzY3JpcHQvanNjb21wL3BhcnNpbmcvQW5ub3RhdGlvbi5qYXZhXG4gKiBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2Nsb3N1cmUtY29tcGlsZXIvYmxvYi9tYXN0ZXIvc3JjL2NvbS9nb29nbGUvamF2YXNjcmlwdC9qc2NvbXAvcGFyc2luZy9QYXJzZXJDb25maWcucHJvcGVydGllc1xuICovXG5jb25zdCBKU0RPQ19UQUdTX1dISVRFTElTVCA9IG5ldyBTZXQoW1xuICAnYWJzdHJhY3QnLCAgICAgICdhcmd1bWVudCcsXG4gICdhdXRob3InLCAgICAgICAgJ2NvbnNpc3RlbnRJZEdlbmVyYXRvcicsXG4gICdjb25zdCcsICAgICAgICAgJ2NvbnN0YW50JyxcbiAgJ2NvbnN0cnVjdG9yJywgICAnY29weXJpZ2h0JyxcbiAgJ2RlZmluZScsICAgICAgICAnZGVwcmVjYXRlZCcsXG4gICdkZXNjJywgICAgICAgICAgJ2RpY3QnLFxuICAnZGlzcG9zZXMnLCAgICAgICdlbmhhbmNlJyxcbiAgJ2VuaGFuY2VhYmxlJywgICAnZW51bScsXG4gICdleHBvcnQnLCAgICAgICAgJ2V4cG9zZScsXG4gICdleHRlbmRzJywgICAgICAgJ2V4dGVybnMnLFxuICAnZmlsZW92ZXJ2aWV3JywgICdmaW5hbCcsXG4gICdoYXNzb3lkZWxjYWxsJywgJ2hhc3NveWRlbHRlbXBsYXRlJyxcbiAgJ2hpZGRlbicsICAgICAgICAnaWQnLFxuICAnaWRHZW5lcmF0b3InLCAgICdpZ25vcmUnLFxuICAnaW1wbGVtZW50cycsICAgICdpbXBsaWNpdENhc3QnLFxuICAnaW5oZXJpdERvYycsICAgICdpbnRlcmZhY2UnLFxuICAnamFnZ2VySW5qZWN0JywgICdqYWdnZXJNb2R1bGUnLFxuICAnamFnZ2VyUHJvdmlkZScsICdqYWdnZXJQcm92aWRlUHJvbWlzZScsXG4gICdsZW5kcycsICAgICAgICAgJ2xpY2Vuc2UnLFxuICAnbGluaycsICAgICAgICAgICdtZWFuaW5nJyxcbiAgJ21vZGlmaWVzJywgICAgICAnbW9kTmFtZScsXG4gICdtb2RzJywgICAgICAgICAgJ25nSW5qZWN0JyxcbiAgJ25vYWxpYXMnLCAgICAgICAnbm9jb2xsYXBzZScsXG4gICdub2NvbXBpbGUnLCAgICAgJ25vc2lkZWVmZmVjdHMnLFxuICAnb3ZlcnJpZGUnLCAgICAgICdvd25lcicsXG4gICdwYWNrYWdlJywgICAgICAgJ3BhcmFtJyxcbiAgJ3BpbnRvbW9kdWxlJywgICAncG9seW1lckJlaGF2aW9yJyxcbiAgJ3ByZXNlcnZlJywgICAgICAncHJlc2VydmVUcnknLFxuICAncHJpdmF0ZScsICAgICAgICdwcm90ZWN0ZWQnLFxuICAncHVibGljJywgICAgICAgICdyZWNvcmQnLFxuICAncmVxdWlyZWNzcycsICAgICdyZXF1aXJlcycsXG4gICdyZXR1cm4nLCAgICAgICAgJ3JldHVybnMnLFxuICAnc2VlJywgICAgICAgICAgICdzdGFibGVJZEdlbmVyYXRvcicsXG4gICdzdHJ1Y3QnLCAgICAgICAgJ3N1cHByZXNzJyxcbiAgJ3RlbXBsYXRlJywgICAgICAndGhpcycsXG4gICd0aHJvd3MnLCAgICAgICAgJ3R5cGUnLFxuICAndHlwZWRlZicsICAgICAgICd1bnJlc3RyaWN0ZWQnLFxuICAndmVyc2lvbicsICAgICAgICd3aXphY3Rpb24nLFxuICAnd2l6bW9kdWxlJyxcbl0pO1xuXG4vKipcbiAqIEEgbGlzdCBvZiBKU0RvYyBAdGFncyB0aGF0IGFyZSBuZXZlciBhbGxvd2VkIGluIFR5cGVTY3JpcHQgc291cmNlLiBUaGVzZSBhcmUgQ2xvc3VyZSB0YWdzIHRoYXRcbiAqIGNhbiBiZSBleHByZXNzZWQgaW4gdGhlIFR5cGVTY3JpcHQgc3VyZmFjZSBzeW50YXguIEFzIHRzaWNrbGUncyBlbWl0IHdpbGwgbWFuZ2xlIHR5cGUgbmFtZXMsXG4gKiB0aGVzZSB3aWxsIGNhdXNlIENsb3N1cmUgQ29tcGlsZXIgaXNzdWVzIGFuZCBzaG91bGQgbm90IGJlIHVzZWQuXG4gKi9cbmNvbnN0IEpTRE9DX1RBR1NfQkxBQ0tMSVNUID0gbmV3IFNldChbXG4gICdhdWdtZW50cycsICdjbGFzcycsICAgICAgJ2NvbnN0cnVjdHMnLCAnY29uc3RydWN0b3InLCAnZW51bScsICAgICAgJ2V4dGVuZHMnLCAnZmllbGQnLFxuICAnZnVuY3Rpb24nLCAnaW1wbGVtZW50cycsICdpbnRlcmZhY2UnLCAgJ2xlbmRzJywgICAgICAgJ25hbWVzcGFjZScsICdwcml2YXRlJywgJ3B1YmxpYycsXG4gICdyZWNvcmQnLCAgICdzdGF0aWMnLCAgICAgJ3RlbXBsYXRlJywgICAndGhpcycsICAgICAgICAndHlwZScsICAgICAgJ3R5cGVkZWYnLFxuXSk7XG5cbi8qKlxuICogQSBsaXN0IG9mIEpTRG9jIEB0YWdzIHRoYXQgbWlnaHQgaW5jbHVkZSBhIHt0eXBlfSBhZnRlciB0aGVtLiBPbmx5IGJhbm5lZCB3aGVuIGEgdHlwZSBpcyBwYXNzZWQuXG4gKiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBpbmNsdWRlIHRhZ3MgdGhhdCBjYXJyeSBhIG5vbi10eXBlIHN5c3RlbSB0eXBlLCBlLmcuIFxcQHN1cHByZXNzLlxuICovXG5jb25zdCBKU0RPQ19UQUdTX1dJVEhfVFlQRVMgPSBuZXcgU2V0KFtcbiAgJ2NvbnN0JyxcbiAgJ2V4cG9ydCcsXG4gICdwYXJhbScsXG4gICdyZXR1cm4nLFxuXSk7XG5cbi8qKlxuICogUmVzdWx0IG9mIHBhcnNpbmcgYSBKU0RvYyBjb21tZW50LiBTdWNoIGNvbW1lbnRzIGVzc2VudGlhbGx5IGFyZSBidWlsdCBvZiBhIGxpc3Qgb2YgdGFncy5cbiAqIEluIGFkZGl0aW9uIHRvIHRoZSB0YWdzLCB0aGlzIG1pZ2h0IGFsc28gY29udGFpbiB3YXJuaW5ncyB0byBpbmRpY2F0ZSBub24tZmF0YWwgcHJvYmxlbXNcbiAqIHdoaWxlIGZpbmRpbmcgdGhlIHRhZ3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkSlNEb2NDb21tZW50IHtcbiAgdGFnczogVGFnW107XG4gIHdhcm5pbmdzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogcGFyc2UgcGFyc2VzIEpTRG9jIG91dCBvZiBhIGNvbW1lbnQgc3RyaW5nLlxuICogUmV0dXJucyBudWxsIGlmIGNvbW1lbnQgaXMgbm90IEpTRG9jLlxuICovXG4vLyBUT0RPKG1hcnRpbnByb2JzdCk6IHJlcHJlc2VudGluZyBKU0RvYyBhcyBhIGxpc3Qgb2YgdGFncyBpcyB0b28gc2ltcGxpc3RpYy4gV2UgbmVlZCBmdW5jdGlvbmFsaXR5XG4vLyBzdWNoIGFzIG1lcmdpbmcgKGJlbG93KSwgZGUtZHVwbGljYXRpbmcgY2VydGFpbiB0YWdzIChAZGVwcmVjYXRlZCksIGFuZCBzcGVjaWFsIHRyZWF0bWVudCBmb3Jcbi8vIG90aGVycyAoZS5nLiBAc3VwcHJlc3MpLiBXZSBzaG91bGQgaW50cm9kdWNlIGEgcHJvcGVyIG1vZGVsIGNsYXNzIHdpdGggYSBtb3JlIHN1aXRhYmxlIGRhdGFcbi8vIHN0cnVjdXJlIChlLmcuIGEgTWFwPFRhZ05hbWUsIFZhbHVlc1tdPikuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2UoY29tbWVudDogc3RyaW5nKTogUGFyc2VkSlNEb2NDb21tZW50fG51bGwge1xuICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSBwcm9wZXIgbGluZSBlbmRpbmdzIGJlZm9yZSBwYXJzaW5nIG9uIFdpbmRvd3MuXG4gIGNvbW1lbnQgPSBub3JtYWxpemVMaW5lRW5kaW5ncyhjb21tZW50KTtcbiAgLy8gVE9ETyhldmFubSk6IHRoaXMgaXMgYSBwaWxlIG9mIGhhY2t5IHJlZ2V4ZXMgZm9yIG5vdywgYmVjYXVzZSB3ZVxuICAvLyB3b3VsZCByYXRoZXIgdXNlIHRoZSBiZXR0ZXIgVHlwZVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBKU0RvY1xuICAvLyBwYXJzaW5nLiAgaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy83MzkzXG4gIGNvbnN0IG1hdGNoID0gY29tbWVudC5tYXRjaCgvXlxcL1xcKlxcKihbXFxzXFxTXSo/KVxcKlxcLyQvKTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIG51bGw7XG4gIHJldHVybiBwYXJzZUNvbnRlbnRzKG1hdGNoWzFdLnRyaW0oKSk7XG59XG5cbi8qKlxuICogcGFyc2VDb250ZW50cyBwYXJzZXMgSlNEb2Mgb3V0IG9mIGEgY29tbWVudCB0ZXh0LlxuICogUmV0dXJucyBudWxsIGlmIGNvbW1lbnQgaXMgbm90IEpTRG9jLlxuICpcbiAqIEBwYXJhbSBjb21tZW50VGV4dCBhIGNvbW1lbnQncyB0ZXh0IGNvbnRlbnQsIGkuZS4gdGhlIGNvbW1lbnQgdy9vIC8qIGFuZCAqIC8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUNvbnRlbnRzKGNvbW1lbnRUZXh0OiBzdHJpbmcpOiB7dGFnczogVGFnW10sIHdhcm5pbmdzPzogc3RyaW5nW119fG51bGwge1xuICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSBwcm9wZXIgbGluZSBlbmRpbmdzIGJlZm9yZSBwYXJzaW5nIG9uIFdpbmRvd3MuXG4gIGNvbW1lbnRUZXh0ID0gbm9ybWFsaXplTGluZUVuZGluZ3MoY29tbWVudFRleHQpO1xuICAvLyBTdHJpcCBhbGwgdGhlIFwiICogXCIgYml0cyBmcm9tIHRoZSBmcm9udCBvZiBlYWNoIGxpbmUuXG4gIGNvbW1lbnRUZXh0ID0gY29tbWVudFRleHQucmVwbGFjZSgvXlxccypcXCo/ID8vZ20sICcnKTtcbiAgY29uc3QgbGluZXMgPSBjb21tZW50VGV4dC5zcGxpdCgnXFxuJyk7XG4gIGNvbnN0IHRhZ3M6IFRhZ1tdID0gW107XG4gIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICBsZXQgbWF0Y2ggPSBsaW5lLm1hdGNoKC9eQChcXFMrKSAqKC4qKS8pO1xuICAgIGlmIChtYXRjaCkge1xuICAgICAgbGV0IFtfLCB0YWdOYW1lLCB0ZXh0XSA9IG1hdGNoO1xuICAgICAgaWYgKHRhZ05hbWUgPT09ICdyZXR1cm5zJykge1xuICAgICAgICAvLyBBIHN5bm9ueW0gZm9yICdyZXR1cm4nLlxuICAgICAgICB0YWdOYW1lID0gJ3JldHVybic7XG4gICAgICB9XG4gICAgICBsZXQgdHlwZTogc3RyaW5nfHVuZGVmaW5lZDtcbiAgICAgIGlmIChKU0RPQ19UQUdTX0JMQUNLTElTVC5oYXModGFnTmFtZSkpIHtcbiAgICAgICAgd2FybmluZ3MucHVzaChgQCR7dGFnTmFtZX0gYW5ub3RhdGlvbnMgYXJlIHJlZHVuZGFudCB3aXRoIFR5cGVTY3JpcHQgZXF1aXZhbGVudHNgKTtcbiAgICAgICAgY29udGludWU7ICAvLyBEcm9wIHRoZSB0YWcgc28gQ2xvc3VyZSB3b24ndCBwcm9jZXNzIGl0LlxuICAgICAgfSBlbHNlIGlmIChKU0RPQ19UQUdTX1dJVEhfVFlQRVMuaGFzKHRhZ05hbWUpICYmIHRleHRbMF0gPT09ICd7Jykge1xuICAgICAgICB3YXJuaW5ncy5wdXNoKFxuICAgICAgICAgICAgYHRoZSB0eXBlIGFubm90YXRpb24gb24gQCR7dGFnTmFtZX0gaXMgcmVkdW5kYW50IHdpdGggaXRzIFR5cGVTY3JpcHQgdHlwZSwgYCArXG4gICAgICAgICAgICBgcmVtb3ZlIHRoZSB7Li4ufSBwYXJ0YCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIGlmICh0YWdOYW1lID09PSAnc3VwcHJlc3MnKSB7XG4gICAgICAgIGNvbnN0IHN1cHByZXNzTWF0Y2ggPSB0ZXh0Lm1hdGNoKC9eXFx7KC4qKVxcfSguKikkLyk7XG4gICAgICAgIGlmICghc3VwcHJlc3NNYXRjaCkge1xuICAgICAgICAgIHdhcm5pbmdzLnB1c2goYG1hbGZvcm1lZCBAc3VwcHJlc3MgdGFnOiBcIiR7dGV4dH1cImApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIFssIHR5cGUsIHRleHRdID0gc3VwcHJlc3NNYXRjaDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0YWdOYW1lID09PSAnZGljdCcpIHtcbiAgICAgICAgd2FybmluZ3MucHVzaCgndXNlIGluZGV4IHNpZ25hdHVyZXMgKGBbazogc3RyaW5nXTogdHlwZWApIGluc3RlYWQgb2YgQGRpY3QnKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIEdyYWIgdGhlIHBhcmFtZXRlciBuYW1lIGZyb20gQHBhcmFtIHRhZ3MuXG4gICAgICBsZXQgcGFyYW1ldGVyTmFtZTogc3RyaW5nfHVuZGVmaW5lZDtcbiAgICAgIGlmICh0YWdOYW1lID09PSAncGFyYW0nKSB7XG4gICAgICAgIG1hdGNoID0gdGV4dC5tYXRjaCgvXihcXFMrKSA/KC4qKS8pO1xuICAgICAgICBpZiAobWF0Y2gpIFtfLCBwYXJhbWV0ZXJOYW1lLCB0ZXh0XSA9IG1hdGNoO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0YWc6IFRhZyA9IHt0YWdOYW1lfTtcbiAgICAgIGlmIChwYXJhbWV0ZXJOYW1lKSB0YWcucGFyYW1ldGVyTmFtZSA9IHBhcmFtZXRlck5hbWU7XG4gICAgICBpZiAodGV4dCkgdGFnLnRleHQgPSB0ZXh0O1xuICAgICAgaWYgKHR5cGUpIHRhZy50eXBlID0gdHlwZTtcbiAgICAgIHRhZ3MucHVzaCh0YWcpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUZXh0IHdpdGhvdXQgYSBwcmVjZWRpbmcgQHRhZyBvbiBpdCBpcyBlaXRoZXIgdGhlIHBsYWluIHRleHRcbiAgICAgIC8vIGRvY3VtZW50YXRpb24gb3IgYSBjb250aW51YXRpb24gb2YgYSBwcmV2aW91cyB0YWcuXG4gICAgICBpZiAodGFncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGFncy5wdXNoKHt0YWdOYW1lOiAnJywgdGV4dDogbGluZX0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbGFzdFRhZyA9IHRhZ3NbdGFncy5sZW5ndGggLSAxXTtcbiAgICAgICAgbGFzdFRhZy50ZXh0ID0gKGxhc3RUYWcudGV4dCB8fCAnJykgKyAnXFxuJyArIGxpbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICh3YXJuaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHt0YWdzLCB3YXJuaW5nc307XG4gIH1cbiAgcmV0dXJuIHt0YWdzfTtcbn1cblxuLyoqXG4gKiBTZXJpYWxpemVzIGEgVGFnIGludG8gYSBzdHJpbmcgdXNhYmxlIGluIGEgY29tbWVudC5cbiAqIFJldHVybnMgYSBzdHJpbmcgbGlrZSBcIiBAZm9vIHtiYXJ9IGJhelwiIChub3RlIHRoZSB3aGl0ZXNwYWNlKS5cbiAqL1xuZnVuY3Rpb24gdGFnVG9TdHJpbmcodGFnOiBUYWcsIGVzY2FwZUV4dHJhVGFncyA9IG5ldyBTZXQ8c3RyaW5nPigpKTogc3RyaW5nIHtcbiAgbGV0IG91dCA9ICcnO1xuICBpZiAodGFnLnRhZ05hbWUpIHtcbiAgICBpZiAoIUpTRE9DX1RBR1NfV0hJVEVMSVNULmhhcyh0YWcudGFnTmFtZSkgfHwgZXNjYXBlRXh0cmFUYWdzLmhhcyh0YWcudGFnTmFtZSkpIHtcbiAgICAgIC8vIEVzY2FwZSB0YWdzIHdlIGRvbid0IHVuZGVyc3RhbmQuICBUaGlzIGlzIGEgc3VidGxlXG4gICAgICAvLyBjb21wcm9taXNlIGJldHdlZW4gbXVsdGlwbGUgaXNzdWVzLlxuICAgICAgLy8gMSkgSWYgd2UgcGFzcyB0aHJvdWdoIHRoZXNlIG5vbi1DbG9zdXJlIHRhZ3MsIHRoZSB1c2VyIHdpbGxcbiAgICAgIC8vICAgIGdldCBhIHdhcm5pbmcgZnJvbSBDbG9zdXJlLCBhbmQgdGhlIHBvaW50IG9mIHRzaWNrbGUgaXNcbiAgICAgIC8vICAgIHRvIGluc3VsYXRlIHRoZSB1c2VyIGZyb20gQ2xvc3VyZS5cbiAgICAgIC8vIDIpIFRoZSBvdXRwdXQgb2YgdHNpY2tsZSBpcyBmb3IgQ2xvc3VyZSBidXQgYWxzbyBtYXkgYmUgcmVhZFxuICAgICAgLy8gICAgYnkgaHVtYW5zLCBmb3IgZXhhbXBsZSBub24tVHlwZVNjcmlwdCB1c2VycyBvZiBBbmd1bGFyLlxuICAgICAgLy8gMykgRmluYWxseSwgd2UgZG9uJ3Qgd2FudCB0byB3YXJuIGJlY2F1c2UgdXNlcnMgc2hvdWxkIGJlXG4gICAgICAvLyAgICBmcmVlIHRvIGFkZCB3aGljaGV2ZXIgSlNEb2MgdGhleSBmZWVsIGxpa2UuICBJZiB0aGUgdXNlclxuICAgICAgLy8gICAgd2FudHMgaGVscCBlbnN1cmluZyB0aGV5IGRpZG4ndCB0eXBvIGEgdGFnLCB0aGF0IGlzIHRoZVxuICAgICAgLy8gICAgcmVzcG9uc2liaWxpdHkgb2YgYSBsaW50ZXIuXG4gICAgICBvdXQgKz0gYCBcXFxcQCR7dGFnLnRhZ05hbWV9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9IGAgQCR7dGFnLnRhZ05hbWV9YDtcbiAgICB9XG4gIH1cbiAgaWYgKHRhZy50eXBlKSB7XG4gICAgb3V0ICs9ICcgeyc7XG4gICAgaWYgKHRhZy5yZXN0UGFyYW0pIHtcbiAgICAgIG91dCArPSAnLi4uJztcbiAgICB9XG4gICAgb3V0ICs9IHRhZy50eXBlO1xuICAgIGlmICh0YWcub3B0aW9uYWwpIHtcbiAgICAgIG91dCArPSAnPSc7XG4gICAgfVxuICAgIG91dCArPSAnfSc7XG4gIH1cbiAgaWYgKHRhZy5wYXJhbWV0ZXJOYW1lKSB7XG4gICAgb3V0ICs9ICcgJyArIHRhZy5wYXJhbWV0ZXJOYW1lO1xuICB9XG4gIGlmICh0YWcudGV4dCkge1xuICAgIG91dCArPSAnICcgKyB0YWcudGV4dC5yZXBsYWNlKC9AL2csICdcXFxcQCcpO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG5cbi8qKiBUYWdzIHRoYXQgbXVzdCBvbmx5IG9jY3VyIG9uY2VzIGluIGEgY29tbWVudCAoZmlsdGVyZWQgYmVsb3cpLiAqL1xuY29uc3QgU0lOR0xFVE9OX1RBR1MgPSBuZXcgU2V0KFsnZGVwcmVjYXRlZCddKTtcblxuLyoqIFNlcmlhbGl6ZXMgYSBDb21tZW50IG91dCB0byBhIHN0cmluZywgYnV0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHN0YXJ0IGFuZCBlbmQgY29tbWVudCB0b2tlbnMuICovXG5leHBvcnQgZnVuY3Rpb24gdG9TdHJpbmdXaXRob3V0U3RhcnRFbmQodGFnczogVGFnW10sIGVzY2FwZUV4dHJhVGFncyA9IG5ldyBTZXQ8c3RyaW5nPigpKTogc3RyaW5nIHtcbiAgcmV0dXJuIHNlcmlhbGl6ZSh0YWdzLCBmYWxzZSwgZXNjYXBlRXh0cmFUYWdzKTtcbn1cblxuLyoqIFNlcmlhbGl6ZXMgYSBDb21tZW50IG91dCB0byBhIHN0cmluZyB1c2FibGUgaW4gc291cmNlIGNvZGUuICovXG5leHBvcnQgZnVuY3Rpb24gdG9TdHJpbmcodGFnczogVGFnW10sIGVzY2FwZUV4dHJhVGFncyA9IG5ldyBTZXQ8c3RyaW5nPigpKTogc3RyaW5nIHtcbiAgcmV0dXJuIHNlcmlhbGl6ZSh0YWdzLCB0cnVlLCBlc2NhcGVFeHRyYVRhZ3MpO1xufVxuXG5mdW5jdGlvbiBzZXJpYWxpemUoXG4gICAgdGFnczogVGFnW10sIGluY2x1ZGVTdGFydEVuZDogYm9vbGVhbiwgZXNjYXBlRXh0cmFUYWdzID0gbmV3IFNldDxzdHJpbmc+KCkpOiBzdHJpbmcge1xuICBpZiAodGFncy5sZW5ndGggPT09IDApIHJldHVybiAnJztcbiAgaWYgKHRhZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgY29uc3QgdGFnID0gdGFnc1swXTtcbiAgICBpZiAoKHRhZy50YWdOYW1lID09PSAndHlwZScgfHwgdGFnLnRhZ05hbWUgPT09ICdub2NvbGxhcHNlJykgJiZcbiAgICAgICAgKCF0YWcudGV4dCB8fCAhdGFnLnRleHQubWF0Y2goJ1xcbicpKSkge1xuICAgICAgLy8gU3BlY2lhbC1jYXNlIG9uZS1saW5lciBcInR5cGVcIiBhbmQgXCJub2NvbGxhcHNlXCIgdGFncyB0byBmaXQgb24gb25lIGxpbmUsIGUuZy5cbiAgICAgIC8vICAgLyoqIEB0eXBlIHtmb299ICovXG4gICAgICByZXR1cm4gJy8qKicgKyB0YWdUb1N0cmluZyh0YWcsIGVzY2FwZUV4dHJhVGFncykgKyAnICovXFxuJztcbiAgICB9XG4gICAgLy8gT3RoZXJ3aXNlLCBmYWxsIHRocm91Z2ggdG8gdGhlIG11bHRpLWxpbmUgb3V0cHV0LlxuICB9XG5cbiAgbGV0IG91dCA9IGluY2x1ZGVTdGFydEVuZCA/ICcvKipcXG4nIDogJypcXG4nO1xuICBjb25zdCBlbWl0dGVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgdGFnIG9mIHRhZ3MpIHtcbiAgICBpZiAoZW1pdHRlZC5oYXModGFnLnRhZ05hbWUpICYmIFNJTkdMRVRPTl9UQUdTLmhhcyh0YWcudGFnTmFtZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBlbWl0dGVkLmFkZCh0YWcudGFnTmFtZSk7XG4gICAgb3V0ICs9ICcgKic7XG4gICAgLy8gSWYgdGhlIHRhZ1RvU3RyaW5nIGlzIG11bHRpLWxpbmUsIGluc2VydCBcIiAqIFwiIHByZWZpeGVzIG9uIHN1YnNlcXVlbnQgbGluZXMuXG4gICAgb3V0ICs9IHRhZ1RvU3RyaW5nKHRhZywgZXNjYXBlRXh0cmFUYWdzKS5zcGxpdCgnXFxuJykuam9pbignXFxuICogJyk7XG4gICAgb3V0ICs9ICdcXG4nO1xuICB9XG4gIG91dCArPSBpbmNsdWRlU3RhcnRFbmQgPyAnICovXFxuJyA6ICcgJztcbiAgcmV0dXJuIG91dDtcbn1cblxuLyoqIE1lcmdlcyBtdWx0aXBsZSB0YWdzIChvZiB0aGUgc2FtZSB0YWdOYW1lIHR5cGUpIGludG8gYSBzaW5nbGUgdW5pZmllZCB0YWcuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UodGFnczogVGFnW10pOiBUYWcge1xuICBjb25zdCB0YWdOYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBwYXJhbWV0ZXJOYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCB0eXBlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCB0ZXh0cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAvLyBJZiBhbnkgb2YgdGhlIHRhZ3MgYXJlIG9wdGlvbmFsL3Jlc3QsIHRoZW4gdGhlIG1lcmdlZCBvdXRwdXQgaXMgb3B0aW9uYWwvcmVzdC5cbiAgbGV0IG9wdGlvbmFsID0gZmFsc2U7XG4gIGxldCByZXN0UGFyYW0gPSBmYWxzZTtcbiAgZm9yIChjb25zdCB0YWcgb2YgdGFncykge1xuICAgIGlmICh0YWcudGFnTmFtZSkgdGFnTmFtZXMuYWRkKHRhZy50YWdOYW1lKTtcbiAgICBpZiAodGFnLnBhcmFtZXRlck5hbWUpIHBhcmFtZXRlck5hbWVzLmFkZCh0YWcucGFyYW1ldGVyTmFtZSk7XG4gICAgaWYgKHRhZy50eXBlKSB0eXBlcy5hZGQodGFnLnR5cGUpO1xuICAgIGlmICh0YWcudGV4dCkgdGV4dHMuYWRkKHRhZy50ZXh0KTtcbiAgICBpZiAodGFnLm9wdGlvbmFsKSBvcHRpb25hbCA9IHRydWU7XG4gICAgaWYgKHRhZy5yZXN0UGFyYW0pIHJlc3RQYXJhbSA9IHRydWU7XG4gIH1cblxuICBpZiAodGFnTmFtZXMuc2l6ZSAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgY2Fubm90IG1lcmdlIGRpZmZlcmluZyB0YWdzOiAke0pTT04uc3RyaW5naWZ5KHRhZ3MpfWApO1xuICB9XG4gIGNvbnN0IHRhZ05hbWUgPSB0YWdOYW1lcy52YWx1ZXMoKS5uZXh0KCkudmFsdWU7XG4gIGNvbnN0IHBhcmFtZXRlck5hbWUgPVxuICAgICAgcGFyYW1ldGVyTmFtZXMuc2l6ZSA+IDAgPyBBcnJheS5mcm9tKHBhcmFtZXRlck5hbWVzKS5qb2luKCdfb3JfJykgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IHR5cGUgPSB0eXBlcy5zaXplID4gMCA/IEFycmF5LmZyb20odHlwZXMpLmpvaW4oJ3wnKSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgdGV4dCA9IHRleHRzLnNpemUgPiAwID8gQXJyYXkuZnJvbSh0ZXh0cykuam9pbignIC8gJykgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IHRhZzogVGFnID0ge3RhZ05hbWUsIHBhcmFtZXRlck5hbWUsIHR5cGUsIHRleHR9O1xuICAvLyBOb3RlOiBhIHBhcmFtIGNhbiBlaXRoZXIgYmUgb3B0aW9uYWwgb3IgYSByZXN0IHBhcmFtOyBpZiB3ZSBtZXJnZWQgYW5cbiAgLy8gb3B0aW9uYWwgYW5kIHJlc3QgcGFyYW0gdG9nZXRoZXIsIHByZWZlciBtYXJraW5nIGl0IGFzIGEgcmVzdCBwYXJhbS5cbiAgaWYgKHJlc3RQYXJhbSkge1xuICAgIHRhZy5yZXN0UGFyYW0gPSB0cnVlO1xuICB9IGVsc2UgaWYgKG9wdGlvbmFsKSB7XG4gICAgdGFnLm9wdGlvbmFsID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gdGFnO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNkb2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvanNkb2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVILHlDQUE0QztJQXNDNUM7Ozs7OztPQU1HO0lBQ0gsSUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUNuQyxVQUFVLEVBQU8sVUFBVTtRQUMzQixRQUFRLEVBQVMsdUJBQXVCO1FBQ3hDLE9BQU8sRUFBVSxVQUFVO1FBQzNCLGFBQWEsRUFBSSxXQUFXO1FBQzVCLFFBQVEsRUFBUyxZQUFZO1FBQzdCLE1BQU0sRUFBVyxNQUFNO1FBQ3ZCLFVBQVUsRUFBTyxTQUFTO1FBQzFCLGFBQWEsRUFBSSxNQUFNO1FBQ3ZCLFFBQVEsRUFBUyxRQUFRO1FBQ3pCLFNBQVMsRUFBUSxTQUFTO1FBQzFCLGNBQWMsRUFBRyxPQUFPO1FBQ3hCLGVBQWUsRUFBRSxtQkFBbUI7UUFDcEMsUUFBUSxFQUFTLElBQUk7UUFDckIsYUFBYSxFQUFJLFFBQVE7UUFDekIsWUFBWSxFQUFLLGNBQWM7UUFDL0IsWUFBWSxFQUFLLFdBQVc7UUFDNUIsY0FBYyxFQUFHLGNBQWM7UUFDL0IsZUFBZSxFQUFFLHNCQUFzQjtRQUN2QyxPQUFPLEVBQVUsU0FBUztRQUMxQixNQUFNLEVBQVcsU0FBUztRQUMxQixVQUFVLEVBQU8sU0FBUztRQUMxQixNQUFNLEVBQVcsVUFBVTtRQUMzQixTQUFTLEVBQVEsWUFBWTtRQUM3QixXQUFXLEVBQU0sZUFBZTtRQUNoQyxVQUFVLEVBQU8sT0FBTztRQUN4QixTQUFTLEVBQVEsT0FBTztRQUN4QixhQUFhLEVBQUksaUJBQWlCO1FBQ2xDLFVBQVUsRUFBTyxhQUFhO1FBQzlCLFNBQVMsRUFBUSxXQUFXO1FBQzVCLFFBQVEsRUFBUyxRQUFRO1FBQ3pCLFlBQVksRUFBSyxVQUFVO1FBQzNCLFFBQVEsRUFB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O0lBQ2IsQ0FBQztJQWxDRCxzQkFrQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7bm9ybWFsaXplTGluZUVuZGluZ3N9IGZyb20gJy4vdXRpbCc7XG5cbi8qKlxuICogVHlwZVNjcmlwdCBoYXMgYW4gQVBJIGZvciBKU0RvYyBhbHJlYWR5LCBidXQgaXQncyBub3QgZXhwb3NlZC5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvNzM5M1xuICogRm9yIG5vdyB3ZSBjcmVhdGUgdHlwZXMgdGhhdCBhcmUgc2ltaWxhciB0byB0aGVpcnMgc28gdGhhdCBtaWdyYXRpbmdcbiAqIHRvIHRoZWlyIEFQSSB3aWxsIGJlIGVhc2llci4gIFNlZSBlLmcuIHRzLkpTRG9jVGFnIGFuZCB0cy5KU0RvY0NvbW1lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIHtcbiAgLyoqXG4gICAqIHRhZ05hbWUgaXMgZS5nLiBcInBhcmFtXCIgaW4gYW4gQHBhcmFtIGRlY2xhcmF0aW9uLiAgSXQgaXMgdGhlIGVtcHR5IHN0cmluZ1xuICAgKiBmb3IgdGhlIHBsYWluIHRleHQgZG9jdW1lbnRhdGlvbiB0aGF0IG9jY3VycyBiZWZvcmUgYW55IEBmb28gbGluZXMuXG4gICAqL1xuICB0YWdOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBwYXJhbWV0ZXJOYW1lIGlzIHRoZSB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gcGFyYW1ldGVyLCBlLmcuIFwiZm9vXCJcbiAgICogaW4gYFxcQHBhcmFtIGZvbyBUaGUgZm9vIHBhcmFtYFxuICAgKi9cbiAgcGFyYW1ldGVyTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGEgSlNEb2MgXFxAcGFyYW0sIFxcQHR5cGUgZXRjIHRhZywgcmVuZGVyZWQgaW4gY3VybHkgYnJhY2VzLlxuICAgKiBDYW4gYWxzbyBob2xkIHRoZSB0eXBlIG9mIGFuIFxcQHN1cHByZXNzLlxuICAgKi9cbiAgdHlwZT86IHN0cmluZztcbiAgLyoqIG9wdGlvbmFsIGlzIHRydWUgZm9yIG9wdGlvbmFsIGZ1bmN0aW9uIHBhcmFtZXRlcnMuICovXG4gIG9wdGlvbmFsPzogYm9vbGVhbjtcbiAgLyoqIHJlc3RQYXJhbSBpcyB0cnVlIGZvciBcIi4uLng6IGZvb1tdXCIgZnVuY3Rpb24gcGFyYW1ldGVycy4gKi9cbiAgcmVzdFBhcmFtPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIGRlc3RydWN0dXJpbmcgaXMgdHJ1ZSBmb3IgZGVzdHJ1Y3R1cmluZyBiaW5kIHBhcmFtZXRlcnMsIHdoaWNoIHJlcXVpcmVcbiAgICogbm9uLW51bGwgYXJndW1lbnRzIG9uIHRoZSBDbG9zdXJlIHNpZGUuICBDYW4gbGlrZWx5IHJlbW92ZSB0aGlzXG4gICAqIG9uY2UgVHlwZVNjcmlwdCBudWxsYWJsZSB0eXBlcyBhcmUgYXZhaWxhYmxlLlxuICAgKi9cbiAgZGVzdHJ1Y3R1cmluZz86IGJvb2xlYW47XG4gIC8qKiBBbnkgcmVtYWluaW5nIHRleHQgb24gdGhlIHRhZywgZS5nLiB0aGUgZGVzY3JpcHRpb24uICovXG4gIHRleHQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBsaXN0IG9mIGFsbCBKU0RvYyB0YWdzIGFsbG93ZWQgYnkgdGhlIENsb3N1cmUgY29tcGlsZXIuXG4gKiBUaGUgcHVibGljIENsb3N1cmUgZG9jcyBkb24ndCBsaXN0IGFsbCB0aGUgdGFncyBpdCBhbGxvd3M7IHRoaXMgbGlzdCBjb21lc1xuICogZnJvbSB0aGUgY29tcGlsZXIgc291cmNlIGl0c2VsZi5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvY2xvc3VyZS1jb21waWxlci9ibG9iL21hc3Rlci9zcmMvY29tL2dvb2dsZS9qYXZhc2NyaXB0L2pzY29tcC9wYXJzaW5nL0Fubm90YXRpb24uamF2YVxuICogaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWNvbXBpbGVyL2Jsb2IvbWFzdGVyL3NyYy9jb20vZ29vZ2xlL2phdmFzY3JpcHQvanNjb21wL3BhcnNpbmcvUGFyc2VyQ29uZmlnLnByb3BlcnRpZXNcbiAqL1xuY29uc3QgSlNET0NfVEFHU19XSElURUxJU1QgPSBuZXcgU2V0KFtcbiAgJ2Fic3RyYWN0JywgICAgICAnYXJndW1lbnQnLFxuICAnYXV0aG9yJywgICAgICAgICdjb25zaXN0ZW50SWRHZW5lcmF0b3InLFxuICAnY29uc3QnLCAgICAgICAgICdjb25zdGFudCcsXG4gICdjb25zdHJ1Y3RvcicsICAgJ2NvcHlyaWdodCcsXG4gICdkZWZpbmUnLCAgICAgICAgJ2RlcHJlY2F0ZWQnLFxuICAnZGVzYycsICAgICAgICAgICdkaWN0JyxcbiAgJ2Rpc3Bvc2VzJywgICAgICAnZW5oYW5jZScsXG4gICdlbmhhbmNlYWJsZScsICAgJ2VudW0nLFxuICAnZXhwb3J0JywgICAgICAgICdleHBvc2UnLFxuICAnZXh0ZW5kcycsICAgICAgICdleHRlcm5zJyxcbiAgJ2ZpbGVvdmVydmlldycsICAnZmluYWwnLFxuICAnaGFzc295ZGVsY2FsbCcsICdoYXNzb3lkZWx0ZW1wbGF0ZScsXG4gICdoaWRkZW4nLCAgICAgICAgJ2lkJyxcbiAgJ2lkR2VuZXJhdG9yJywgICAnaWdub3JlJyxcbiAgJ2ltcGxlbWVudHMnLCAgICAnaW1wbGljaXRDYXN0JyxcbiAgJ2luaGVyaXREb2MnLCAgICAnaW50ZXJmYWNlJyxcbiAgJ2phZ2dlckluamVjdCcsICAnamFnZ2VyTW9kdWxlJyxcbiAgJ2phZ2dlclByb3ZpZGUnLCAnamFnZ2VyUHJvdmlkZVByb21pc2UnLFxuICAnbGVuZHMnLCAgICAgICAgICdsaWNlbnNlJyxcbiAgJ2xpbmsnLCAgICAgICAgICAnbWVhbmluZycsXG4gICdtb2RpZmllcycsICAgICAgJ21vZE5hbWUnLFxuICAnbW9kcycsICAgICAgICAgICduZ0luamVjdCcsXG4gICdub2FsaWFzJywgICAgICAgJ25vY29sbGFwc2UnLFxuICAnbm9jb21waWxlJywgICAgICdub3NpZGVlZmZlY3RzJyxcbiAgJ292ZXJyaWRlJywgICAgICAnb3duZXInLFxuICAncGFja2FnZScsICAgICAgICdwYXJhbScsXG4gICdwaW50b21vZHVsZScsICAgJ3BvbHltZXJCZWhhdmlvcicsXG4gICdwcmVzZXJ2ZScsICAgICAgJ3ByZXNlcnZlVHJ5JyxcbiAgJ3ByaXZhdGUnLCAgICAgICAncHJvdGVjdGVkJyxcbiAgJ3B1YmxpYycsICAgICAgICAncmVjb3JkJyxcbiAgJ3JlcXVpcmVjc3MnLCAgICAncmVxdWlyZXMnLFxuICAncmV0dXJuJywgICAgICAgICdyZXR1cm5zJyxcbiAgJ3NlZScsICAgICAgICAgICAnc3RhYmxlSWRHZW5lcmF0b3InLFxuICAnc3RydWN0JywgICAgICAgICdzdXBwcmVzcycsXG4gICd0ZW1wbGF0ZScsICAgICAgJ3RoaXMnLFxuICAndGhyb3dzJywgICAgICAgICd0eXBlJyxcbiAgJ3R5cGVkZWYnLCAgICAgICAndW5yZXN0cmljdGVkJyxcbiAgJ3ZlcnNpb24nLCAgICAgICAnd2l6YWN0aW9uJyxcbiAgJ3dpem1vZHVsZScsXG5dKTtcblxuLyoqXG4gKiBBIGxpc3Qgb2YgSlNEb2MgQHRhZ3MgdGhhdCBhcmUgbmV2ZXIgYWxsb3dlZCBpbiBUeXBlU2NyaXB0IHNvdXJjZS4gVGhlc2UgYXJlIENsb3N1cmUgdGFncyB0aGF0XG4gKiBjYW4gYmUgZXhwcmVzc2VkIGluIHRoZSBUeXBlU2NyaXB0IHN1cmZhY2Ugc3ludGF4LiBBcyB0c2lja2xlJ3MgZW1pdCB3aWxsIG1hbmdsZSB0eXBlIG5hbWVzLFxuICogdGhlc2Ugd2lsbCBjYXVzZSBDbG9zdXJlIENvbXBpbGVyIGlzc3VlcyBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLlxuICovXG5jb25zdCBKU0RPQ19UQUdTX0JMQUNLTElTVCA9IG5ldyBTZXQoW1xuICAnYXVnbWVudHMnLCAnY2xhc3MnLCAgICAgICdjb25zdHJ1Y3RzJywgJ2NvbnN0cnVjdG9yJywgJ2VudW0nLCAgICAgICdleHRlbmRzJywgJ2ZpZWxkJyxcbiAgJ2Z1bmN0aW9uJywgJ2ltcGxlbWVudHMnLCAnaW50ZXJmYWNlJywgICdsZW5kcycsICAgICAgICduYW1lc3BhY2UnLCAncHJpdmF0ZScsICdwdWJsaWMnLFxuICAncmVjb3JkJywgICAnc3RhdGljJywgICAgICd0ZW1wbGF0ZScsICAgJ3RoaXMnLCAgICAgICAgJ3R5cGUnLCAgICAgICd0eXBlZGVmJyxcbl0pO1xuXG4vKipcbiAqIEEgbGlzdCBvZiBKU0RvYyBAdGFncyB0aGF0IG1pZ2h0IGluY2x1ZGUgYSB7dHlwZX0gYWZ0ZXIgdGhlbS4gT25seSBiYW5uZWQgd2hlbiBhIHR5cGUgaXMgcGFzc2VkLlxuICogTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgaW5jbHVkZSB0YWdzIHRoYXQgY2FycnkgYSBub24tdHlwZSBzeXN0ZW0gdHlwZSwgZS5nLiBcXEBzdXBwcmVzcy5cbiAqL1xuY29uc3QgSlNET0NfVEFHU19XSVRIX1RZUEVTID0gbmV3IFNldChbXG4gICdjb25zdCcsXG4gICdleHBvcnQnLFxuICAncGFyYW0nLFxuICAncmV0dXJuJyxcbl0pO1xuXG4vKipcbiAqIFJlc3VsdCBvZiBwYXJzaW5nIGEgSlNEb2MgY29tbWVudC4gU3VjaCBjb21tZW50cyBlc3NlbnRpYWxseSBhcmUgYnVpbHQgb2YgYSBsaXN0IG9mIHRhZ3MuXG4gKiBJbiBhZGRpdGlvbiB0byB0aGUgdGFncywgdGhpcyBtaWdodCBhbHNvIGNvbnRhaW4gd2FybmluZ3MgdG8gaW5kaWNhdGUgbm9uLWZhdGFsIHByb2JsZW1zXG4gKiB3aGlsZSBmaW5kaW5nIHRoZSB0YWdzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZEpTRG9jQ29tbWVudCB7XG4gIHRhZ3M6IFRhZ1tdO1xuICB3YXJuaW5ncz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIHBhcnNlIHBhcnNlcyBKU0RvYyBvdXQgb2YgYSBjb21tZW50IHN0cmluZy5cbiAqIFJldHVybnMgbnVsbCBpZiBjb21tZW50IGlzIG5vdCBKU0RvYy5cbiAqL1xuLy8gVE9ETyhtYXJ0aW5wcm9ic3QpOiByZXByZXNlbnRpbmcgSlNEb2MgYXMgYSBsaXN0IG9mIHRhZ3MgaXMgdG9vIHNpbXBsaXN0aWMuIFdlIG5lZWQgZnVuY3Rpb25hbGl0eVxuLy8gc3VjaCBhcyBtZXJnaW5nIChiZWxvdyksIGRlLWR1cGxpY2F0aW5nIGNlcnRhaW4gdGFncyAoQGRlcHJlY2F0ZWQpLCBhbmQgc3BlY2lhbCB0cmVhdG1lbnQgZm9yXG4vLyBvdGhlcnMgKGUuZy4gQHN1cHByZXNzKS4gV2Ugc2hvdWxkIGludHJvZHVjZSBhIHByb3BlciBtb2RlbCBjbGFzcyB3aXRoIGEgbW9yZSBzdWl0YWJsZSBkYXRhXG4vLyBzdHJ1Y3VyZSAoZS5nLiBhIE1hcDxUYWdOYW1lLCBWYWx1ZXNbXT4pLlxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKGNvbW1lbnQ6IHN0cmluZyk6IFBhcnNlZEpTRG9jQ29tbWVudHxudWxsIHtcbiAgLy8gTWFrZSBzdXJlIHdlIGhhdmUgcHJvcGVyIGxpbmUgZW5kaW5ncyBiZWZvcmUgcGFyc2luZyBvbiBXaW5kb3dzLlxuICBjb21tZW50ID0gbm9ybWFsaXplTGluZUVuZGluZ3MoY29tbWVudCk7XG4gIC8vIFRPRE8oZXZhbm0pOiB0aGlzIGlzIGEgcGlsZSBvZiBoYWNreSByZWdleGVzIGZvciBub3csIGJlY2F1c2Ugd2VcbiAgLy8gd291bGQgcmF0aGVyIHVzZSB0aGUgYmV0dGVyIFR5cGVTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgSlNEb2NcbiAgLy8gcGFyc2luZy4gIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvNzM5M1xuICBjb25zdCBtYXRjaCA9IGNvbW1lbnQubWF0Y2goL15cXC9cXCpcXCooW1xcc1xcU10qPylcXCpcXC8kLyk7XG4gIGlmICghbWF0Y2gpIHJldHVybiBudWxsO1xuICByZXR1cm4gcGFyc2VDb250ZW50cyhtYXRjaFsxXS50cmltKCkpO1xufVxuXG4vKipcbiAqIHBhcnNlQ29udGVudHMgcGFyc2VzIEpTRG9jIG91dCBvZiBhIGNvbW1lbnQgdGV4dC5cbiAqIFJldHVybnMgbnVsbCBpZiBjb21tZW50IGlzIG5vdCBKU0RvYy5cbiAqXG4gKiBAcGFyYW0gY29tbWVudFRleHQgYSBjb21tZW50J3MgdGV4dCBjb250ZW50LCBpLmUuIHRoZSBjb21tZW50IHcvbyAvKiBhbmQgKiAvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDb250ZW50cyhjb21tZW50VGV4dDogc3RyaW5nKToge3RhZ3M6IFRhZ1tdLCB3YXJuaW5ncz86IHN0cmluZ1tdfXxudWxsIHtcbiAgLy8gTWFrZSBzdXJlIHdlIGhhdmUgcHJvcGVyIGxpbmUgZW5kaW5ncyBiZWZvcmUgcGFyc2luZyBvbiBXaW5kb3dzLlxuICBjb21tZW50VGV4dCA9IG5vcm1hbGl6ZUxpbmVFbmRpbmdzKGNvbW1lbnRUZXh0KTtcbiAgLy8gU3RyaXAgYWxsIHRoZSBcIiAqIFwiIGJpdHMgZnJvbSB0aGUgZnJvbnQgb2YgZWFjaCBsaW5lLlxuICBjb21tZW50VGV4dCA9IGNvbW1lbnRUZXh0LnJlcGxhY2UoL15cXHMqXFwqPyA/L2dtLCAnJyk7XG4gIGNvbnN0IGxpbmVzID0gY29tbWVudFRleHQuc3BsaXQoJ1xcbicpO1xuICBjb25zdCB0YWdzOiBUYWdbXSA9IFtdO1xuICBjb25zdCB3YXJuaW5nczogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgbGV0IG1hdGNoID0gbGluZS5tYXRjaCgvXkAoXFxTKykgKiguKikvKTtcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIGxldCBbXywgdGFnTmFtZSwgdGV4dF0gPSBtYXRjaDtcbiAgICAgIGlmICh0YWdOYW1lID09PSAncmV0dXJucycpIHtcbiAgICAgICAgLy8gQSBzeW5vbnltIGZvciAncmV0dXJuJy5cbiAgICAgICAgdGFnTmFtZSA9ICdyZXR1cm4nO1xuICAgICAgfVxuICAgICAgbGV0IHR5cGU6IHN0cmluZ3x1bmRlZmluZWQ7XG4gICAgICBpZiAoSlNET0NfVEFHU19CTEFDS0xJU1QuaGFzKHRhZ05hbWUpKSB7XG4gICAgICAgIHdhcm5pbmdzLnB1c2goYEAke3RhZ05hbWV9IGFubm90YXRpb25zIGFyZSByZWR1bmRhbnQgd2l0aCBUeXBlU2NyaXB0IGVxdWl2YWxlbnRzYCk7XG4gICAgICAgIGNvbnRpbnVlOyAgLy8gRHJvcCB0aGUgdGFnIHNvIENsb3N1cmUgd29uJ3QgcHJvY2VzcyBpdC5cbiAgICAgIH0gZWxzZSBpZiAoSlNET0NfVEFHU19XSVRIX1RZUEVTLmhhcyh0YWdOYW1lKSAmJiB0ZXh0WzBdID09PSAneycpIHtcbiAgICAgICAgd2FybmluZ3MucHVzaChcbiAgICAgICAgICAgIGB0aGUgdHlwZSBhbm5vdGF0aW9uIG9uIEAke3RhZ05hbWV9IGlzIHJlZHVuZGFudCB3aXRoIGl0cyBUeXBlU2NyaXB0IHR5cGUsIGAgK1xuICAgICAgICAgICAgYHJlbW92ZSB0aGUgey4uLn0gcGFydGApO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSBpZiAodGFnTmFtZSA9PT0gJ3N1cHByZXNzJykge1xuICAgICAgICBjb25zdCBzdXBwcmVzc01hdGNoID0gdGV4dC5tYXRjaCgvXlxceyguKilcXH0oLiopJC8pO1xuICAgICAgICBpZiAoIXN1cHByZXNzTWF0Y2gpIHtcbiAgICAgICAgICB3YXJuaW5ncy5wdXNoKGBtYWxmb3JtZWQgQHN1cHByZXNzIHRhZzogXCIke3RleHR9XCJgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbLCB0eXBlLCB0ZXh0XSA9IHN1cHByZXNzTWF0Y2g7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGFnTmFtZSA9PT0gJ2RpY3QnKSB7XG4gICAgICAgIHdhcm5pbmdzLnB1c2goJ3VzZSBpbmRleCBzaWduYXR1cmVzIChgW2s6IHN0cmluZ106IHR5cGVgKSBpbnN0ZWFkIG9mIEBkaWN0Jyk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBHcmFiIHRoZSBwYXJhbWV0ZXIgbmFtZSBmcm9tIEBwYXJhbSB0YWdzLlxuICAgICAgbGV0IHBhcmFtZXRlck5hbWU6IHN0cmluZ3x1bmRlZmluZWQ7XG4gICAgICBpZiAodGFnTmFtZSA9PT0gJ3BhcmFtJykge1xuICAgICAgICBtYXRjaCA9IHRleHQubWF0Y2goL14oXFxTKykgPyguKikvKTtcbiAgICAgICAgaWYgKG1hdGNoKSBbXywgcGFyYW1ldGVyTmFtZSwgdGV4dF0gPSBtYXRjaDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGFnOiBUYWcgPSB7dGFnTmFtZX07XG4gICAgICBpZiAocGFyYW1ldGVyTmFtZSkgdGFnLnBhcmFtZXRlck5hbWUgPSBwYXJhbWV0ZXJOYW1lO1xuICAgICAgaWYgKHRleHQpIHRhZy50ZXh0ID0gdGV4dDtcbiAgICAgIGlmICh0eXBlKSB0YWcudHlwZSA9IHR5cGU7XG4gICAgICB0YWdzLnB1c2godGFnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGV4dCB3aXRob3V0IGEgcHJlY2VkaW5nIEB0YWcgb24gaXQgaXMgZWl0aGVyIHRoZSBwbGFpbiB0ZXh0XG4gICAgICAvLyBkb2N1bWVudGF0aW9uIG9yIGEgY29udGludWF0aW9uIG9mIGEgcHJldmlvdXMgdGFnLlxuICAgICAgaWYgKHRhZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRhZ3MucHVzaCh7dGFnTmFtZTogJycsIHRleHQ6IGxpbmV9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGxhc3RUYWcgPSB0YWdzW3RhZ3MubGVuZ3RoIC0gMV07XG4gICAgICAgIGxhc3RUYWcudGV4dCA9IChsYXN0VGFnLnRleHQgfHwgJycpICsgJ1xcbicgKyBsaW5lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAod2FybmluZ3MubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiB7dGFncywgd2FybmluZ3N9O1xuICB9XG4gIHJldHVybiB7dGFnc307XG59XG5cbi8qKlxuICogU2VyaWFsaXplcyBhIFRhZyBpbnRvIGEgc3RyaW5nIHVzYWJsZSBpbiBhIGNvbW1lbnQuXG4gKiBSZXR1cm5zIGEgc3RyaW5nIGxpa2UgXCIgQGZvbyB7YmFyfSBiYXpcIiAobm90ZSB0aGUgd2hpdGVzcGFjZSkuXG4gKi9cbmZ1bmN0aW9uIHRhZ1RvU3RyaW5nKHRhZzogVGFnLCBlc2NhcGVFeHRyYVRhZ3MgPSBuZXcgU2V0PHN0cmluZz4oKSk6IHN0cmluZyB7XG4gIGxldCBvdXQgPSAnJztcbiAgaWYgKHRhZy50YWdOYW1lKSB7XG4gICAgaWYgKCFKU0RPQ19UQUdTX1dISVRFTElTVC5oYXModGFnLnRhZ05hbWUpIHx8IGVzY2FwZUV4dHJhVGFncy5oYXModGFnLnRhZ05hbWUpKSB7XG4gICAgICAvLyBFc2NhcGUgdGFncyB3ZSBkb24ndCB1bmRlcnN0YW5kLiAgVGhpcyBpcyBhIHN1YnRsZVxuICAgICAgLy8gY29tcHJvbWlzZSBiZXR3ZWVuIG11bHRpcGxlIGlzc3Vlcy5cbiAgICAgIC8vIDEpIElmIHdlIHBhc3MgdGhyb3VnaCB0aGVzZSBub24tQ2xvc3VyZSB0YWdzLCB0aGUgdXNlciB3aWxsXG4gICAgICAvLyAgICBnZXQgYSB3YXJuaW5nIGZyb20gQ2xvc3VyZSwgYW5kIHRoZSBwb2ludCBvZiB0c2lja2xlIGlzXG4gICAgICAvLyAgICB0byBpbnN1bGF0ZSB0aGUgdXNlciBmcm9tIENsb3N1cmUuXG4gICAgICAvLyAyKSBUaGUgb3V0cHV0IG9mIHRzaWNrbGUgaXMgZm9yIENsb3N1cmUgYnV0IGFsc28gbWF5IGJlIHJlYWRcbiAgICAgIC8vICAgIGJ5IGh1bWFucywgZm9yIGV4YW1wbGUgbm9uLVR5cGVTY3JpcHQgdXNlcnMgb2YgQW5ndWxhci5cbiAgICAgIC8vIDMpIEZpbmFsbHksIHdlIGRvbid0IHdhbnQgdG8gd2FybiBiZWNhdXNlIHVzZXJzIHNob3VsZCBiZVxuICAgICAgLy8gICAgZnJlZSB0byBhZGQgd2hpY2hldmVyIEpTRG9jIHRoZXkgZmVlbCBsaWtlLiAgSWYgdGhlIHVzZXJcbiAgICAgIC8vICAgIHdhbnRzIGhlbHAgZW5zdXJpbmcgdGhleSBkaWRuJ3QgdHlwbyBhIHRhZywgdGhhdCBpcyB0aGVcbiAgICAgIC8vICAgIHJlc3BvbnNpYmlsaXR5IG9mIGEgbGludGVyLlxuICAgICAgb3V0ICs9IGAgXFxcXEAke3RhZy50YWdOYW1lfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSBgIEAke3RhZy50YWdOYW1lfWA7XG4gICAgfVxuICB9XG4gIGlmICh0YWcudHlwZSkge1xuICAgIG91dCArPSAnIHsnO1xuICAgIGlmICh0YWcucmVzdFBhcmFtKSB7XG4gICAgICBvdXQgKz0gJy4uLic7XG4gICAgfVxuICAgIG91dCArPSB0YWcudHlwZTtcbiAgICBpZiAodGFnLm9wdGlvbmFsKSB7XG4gICAgICBvdXQgKz0gJz0nO1xuICAgIH1cbiAgICBvdXQgKz0gJ30nO1xuICB9XG4gIGlmICh0YWcucGFyYW1ldGVyTmFtZSkge1xuICAgIG91dCArPSAnICcgKyB0YWcucGFyYW1ldGVyTmFtZTtcbiAgfVxuICBpZiAodGFnLnRleHQpIHtcbiAgICBvdXQgKz0gJyAnICsgdGFnLnRleHQucmVwbGFjZSgvQC9nLCAnXFxcXEAnKTtcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuXG4vKiogVGFncyB0aGF0IG11c3Qgb25seSBvY2N1ciBvbmNlcyBpbiBhIGNvbW1lbnQgKGZpbHRlcmVkIGJlbG93KS4gKi9cbmNvbnN0IFNJTkdMRVRPTl9UQUdTID0gbmV3IFNldChbJ2RlcHJlY2F0ZWQnXSk7XG5cbi8qKiBTZXJpYWxpemVzIGEgQ29tbWVudCBvdXQgdG8gYSBzdHJpbmcsIGJ1dCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBzdGFydCBhbmQgZW5kIGNvbW1lbnQgdG9rZW5zLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvU3RyaW5nV2l0aG91dFN0YXJ0RW5kKHRhZ3M6IFRhZ1tdLCBlc2NhcGVFeHRyYVRhZ3MgPSBuZXcgU2V0PHN0cmluZz4oKSk6IHN0cmluZyB7XG4gIHJldHVybiBzZXJpYWxpemUodGFncywgZmFsc2UsIGVzY2FwZUV4dHJhVGFncyk7XG59XG5cbi8qKiBTZXJpYWxpemVzIGEgQ29tbWVudCBvdXQgdG8gYSBzdHJpbmcgdXNhYmxlIGluIHNvdXJjZSBjb2RlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvU3RyaW5nKHRhZ3M6IFRhZ1tdLCBlc2NhcGVFeHRyYVRhZ3MgPSBuZXcgU2V0PHN0cmluZz4oKSk6IHN0cmluZyB7XG4gIHJldHVybiBzZXJpYWxpemUodGFncywgdHJ1ZSwgZXNjYXBlRXh0cmFUYWdzKTtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplKFxuICAgIHRhZ3M6IFRhZ1tdLCBpbmNsdWRlU3RhcnRFbmQ6IGJvb2xlYW4sIGVzY2FwZUV4dHJhVGFncyA9IG5ldyBTZXQ8c3RyaW5nPigpKTogc3RyaW5nIHtcbiAgaWYgKHRhZ3MubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gIGlmICh0YWdzLmxlbmd0aCA9PT0gMSkge1xuICAgIGNvbnN0IHRhZyA9IHRhZ3NbMF07XG4gICAgaWYgKCh0YWcudGFnTmFtZSA9PT0gJ3R5cGUnIHx8IHRhZy50YWdOYW1lID09PSAnbm9jb2xsYXBzZScpICYmXG4gICAgICAgICghdGFnLnRleHQgfHwgIXRhZy50ZXh0Lm1hdGNoKCdcXG4nKSkpIHtcbiAgICAgIC8vIFNwZWNpYWwtY2FzZSBvbmUtbGluZXIgXCJ0eXBlXCIgYW5kIFwibm9jb2xsYXBzZVwiIHRhZ3MgdG8gZml0IG9uIG9uZSBsaW5lLCBlLmcuXG4gICAgICAvLyAgIC8qKiBAdHlwZSB7Zm9vfSAqL1xuICAgICAgcmV0dXJuICcvKionICsgdGFnVG9TdHJpbmcodGFnLCBlc2NhcGVFeHRyYVRhZ3MpICsgJyAqL1xcbic7XG4gICAgfVxuICAgIC8vIE90aGVyd2lzZSwgZmFsbCB0aHJvdWdoIHRvIHRoZSBtdWx0aS1saW5lIG91dHB1dC5cbiAgfVxuXG4gIGxldCBvdXQgPSBpbmNsdWRlU3RhcnRFbmQgPyAnLyoqXFxuJyA6ICcqXFxuJztcbiAgY29uc3QgZW1pdHRlZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IHRhZyBvZiB0YWdzKSB7XG4gICAgaWYgKGVtaXR0ZWQuaGFzKHRhZy50YWdOYW1lKSAmJiBTSU5HTEVUT05fVEFHUy5oYXModGFnLnRhZ05hbWUpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgZW1pdHRlZC5hZGQodGFnLnRhZ05hbWUpO1xuICAgIG91dCArPSAnIConO1xuICAgIC8vIElmIHRoZSB0YWdUb1N0cmluZyBpcyBtdWx0aS1saW5lLCBpbnNlcnQgXCIgKiBcIiBwcmVmaXhlcyBvbiBzdWJzZXF1ZW50IGxpbmVzLlxuICAgIG91dCArPSB0YWdUb1N0cmluZyh0YWcsIGVzY2FwZUV4dHJhVGFncykuc3BsaXQoJ1xcbicpLmpvaW4oJ1xcbiAqICcpO1xuICAgIG91dCArPSAnXFxuJztcbiAgfVxuICBvdXQgKz0gaW5jbHVkZVN0YXJ0RW5kID8gJyAqL1xcbicgOiAnICc7XG4gIHJldHVybiBvdXQ7XG59XG5cbi8qKiBNZXJnZXMgbXVsdGlwbGUgdGFncyAob2YgdGhlIHNhbWUgdGFnTmFtZSB0eXBlKSBpbnRvIGEgc2luZ2xlIHVuaWZpZWQgdGFnLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlKHRhZ3M6IFRhZ1tdKTogVGFnIHtcbiAgY29uc3QgdGFnTmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3QgcGFyYW1ldGVyTmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3QgdHlwZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3QgdGV4dHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgLy8gSWYgYW55IG9mIHRoZSB0YWdzIGFyZSBvcHRpb25hbC9yZXN0LCB0aGVuIHRoZSBtZXJnZWQgb3V0cHV0IGlzIG9wdGlvbmFsL3Jlc3QuXG4gIGxldCBvcHRpb25hbCA9IGZhbHNlO1xuICBsZXQgcmVzdFBhcmFtID0gZmFsc2U7XG4gIGZvciAoY29uc3QgdGFnIG9mIHRhZ3MpIHtcbiAgICBpZiAodGFnLnRhZ05hbWUpIHRhZ05hbWVzLmFkZCh0YWcudGFnTmFtZSk7XG4gICAgaWYgKHRhZy5wYXJhbWV0ZXJOYW1lKSBwYXJhbWV0ZXJOYW1lcy5hZGQodGFnLnBhcmFtZXRlck5hbWUpO1xuICAgIGlmICh0YWcudHlwZSkgdHlwZXMuYWRkKHRhZy50eXBlKTtcbiAgICBpZiAodGFnLnRleHQpIHRleHRzLmFkZCh0YWcudGV4dCk7XG4gICAgaWYgKHRhZy5vcHRpb25hbCkgb3B0aW9uYWwgPSB0cnVlO1xuICAgIGlmICh0YWcucmVzdFBhcmFtKSByZXN0UGFyYW0gPSB0cnVlO1xuICB9XG5cbiAgaWYgKHRhZ05hbWVzLnNpemUgIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGNhbm5vdCBtZXJnZSBkaWZmZXJpbmcgdGFnczogJHtKU09OLnN0cmluZ2lmeSh0YWdzKX1gKTtcbiAgfVxuICBjb25zdCB0YWdOYW1lID0gdGFnTmFtZXMudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuICBjb25zdCBwYXJhbWV0ZXJOYW1lID1cbiAgICAgIHBhcmFtZXRlck5hbWVzLnNpemUgPiAwID8gQXJyYXkuZnJvbShwYXJhbWV0ZXJOYW1lcykuam9pbignX29yXycpIDogdW5kZWZpbmVkO1xuICBjb25zdCB0eXBlID0gdHlwZXMuc2l6ZSA+IDAgPyBBcnJheS5mcm9tKHR5cGVzKS5qb2luKCd8JykgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IHRleHQgPSB0ZXh0cy5zaXplID4gMCA/IEFycmF5LmZyb20odGV4dHMpLmpvaW4oJyAvICcpIDogdW5kZWZpbmVkO1xuICBjb25zdCB0YWc6IFRhZyA9IHt0YWdOYW1lLCBwYXJhbWV0ZXJOYW1lLCB0eXBlLCB0ZXh0fTtcbiAgLy8gTm90ZTogYSBwYXJhbSBjYW4gZWl0aGVyIGJlIG9wdGlvbmFsIG9yIGEgcmVzdCBwYXJhbTsgaWYgd2UgbWVyZ2VkIGFuXG4gIC8vIG9wdGlvbmFsIGFuZCByZXN0IHBhcmFtIHRvZ2V0aGVyLCBwcmVmZXIgbWFya2luZyBpdCBhcyBhIHJlc3QgcGFyYW0uXG4gIGlmIChyZXN0UGFyYW0pIHtcbiAgICB0YWcucmVzdFBhcmFtID0gdHJ1ZTtcbiAgfSBlbHNlIGlmIChvcHRpb25hbCkge1xuICAgIHRhZy5vcHRpb25hbCA9IHRydWU7XG4gIH1cbiAgcmV0dXJuIHRhZztcbn1cbiJdfQ==

@@ -193,2 +193,2 @@ #!/usr/bin/env node

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFVQSx1QkFBeUI7SUFDekIsbUNBQXFDO0lBQ3JDLCtCQUFpQztJQUNqQywyQkFBNkI7SUFDN0IsMkNBQW1DO0lBRW5DLG9EQUE0QztJQUM1Qyw2Q0FBcUM7SUFDckMsK0NBQTBDO0lBQzFDLHlDQUFnRDtJQWlCaEQ7UUFDRSxPQUFPLENBQUMsS0FBSyxDQUFDLGdZQVNmLENBQUMsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCw4QkFBOEIsSUFBYztRQUMxQyxJQUFNLFFBQVEsR0FBYSxFQUFFLENBQUM7UUFDOUIsSUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDOztZQUNsQyxHQUFHLENBQUMsQ0FBZSxJQUFBLEtBQUEsU0FBQSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBLGdCQUFBO2dCQUFyQyxJQUFNLElBQUksV0FBQTtnQkFDYixNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO29CQUNiLEtBQUssR0FBRyxDQUFDO29CQUNULEtBQUssTUFBTTt3QkFDVCxLQUFLLEVBQUUsQ0FBQzt3QkFDUixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNoQixLQUFLLENBQUM7b0JBQ1IsS0FBSyxTQUFTO3dCQUNaLFFBQVEsQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUN4QyxLQUFLLENBQUM7b0JBQ1IsS0FBSyxPQUFPO3dCQUNWLFFBQVEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO3dCQUN4QixLQUFLLENBQUM7b0JBQ1IsS0FBSyxTQUFTO3dCQUNaLFFBQVEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO3dCQUN4QixLQUFLLENBQUM7b0JBQ1IsS0FBSyxv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QyxDQUFDO1lBQ3BDLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQyxDQUFDO1FBQ1AsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQzdELE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBRUQsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ2hELEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDdEYsQ0FBQztRQUNELE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQztRQUM1QixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBtaW5pbWlzdCBmcm9tICdtaW5pbWlzdCc7XG5pbXBvcnQgKiBhcyBta2RpcnAgZnJvbSAnbWtkaXJwJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICcuL3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQgKiBhcyBjbGlTdXBwb3J0IGZyb20gJy4vY2xpX3N1cHBvcnQnO1xuaW1wb3J0ICogYXMgdHNpY2tsZSBmcm9tICcuL3RzaWNrbGUnO1xuaW1wb3J0IHtNb2R1bGVzTWFuaWZlc3R9IGZyb20gJy4vdHNpY2tsZSc7XG5pbXBvcnQge2dldENvbW1vblBhcmVudERpcmVjdG9yeX0gZnJvbSAnLi91dGlsJztcblxuLyoqIFRzaWNrbGUgc2V0dGluZ3MgcGFzc2VkIG9uIHRoZSBjb21tYW5kIGxpbmUuICovXG5leHBvcnQgaW50ZXJmYWNlIFNldHRpbmdzIHtcbiAgLyoqIElmIHByb3ZpZGVkLCBkbyBub3QgbW9kaWZ5IHF1b3Rpbmcgb2YgcHJvcGVydHkgYWNjZXNzZXMuICovXG4gIGRpc2FibGVBdXRvUXVvdGluZz86IGJvb2xlYW47XG5cbiAgLyoqIElmIHByb3ZpZGVkLCBwYXRoIHRvIHNhdmUgZXh0ZXJucyB0by4gKi9cbiAgZXh0ZXJuc1BhdGg/OiBzdHJpbmc7XG5cbiAgLyoqIElmIHByb3ZpZGVkLCBhdHRlbXB0IHRvIHByb3ZpZGUgdHlwZXMgcmF0aGVyIHRoYW4gez99LiAqL1xuICBpc1R5cGVkPzogYm9vbGVhbjtcblxuICAvKiogSWYgdHJ1ZSwgbG9nIGludGVybmFsIGRlYnVnIHdhcm5pbmdzIHRvIHRoZSBjb25zb2xlLiAqL1xuICB2ZXJib3NlPzogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gdXNhZ2UoKSB7XG4gIGNvbnNvbGUuZXJyb3IoYHVzYWdlOiB0c2lja2xlIFt0c2lja2xlIG9wdGlvbnNdIC0tIFt0c2Mgb3B0aW9uc11cblxuZXhhbXBsZTpcbiAgdHNpY2tsZSAtLWV4dGVybnM9Zm9vL2V4dGVybnMuanMgLS0gLXAgc3JjIC0tbm9JbXBsaWNpdEFueVxuXG50c2lja2xlIGZsYWdzIGFyZTpcbiAgLS1leHRlcm5zPVBBVEggICAgICAgIHNhdmUgZ2VuZXJhdGVkIENsb3N1cmUgZXh0ZXJucy5qcyB0byBQQVRIXG4gIC0tdHlwZWQgICAgICAgICAgICAgICBbZXhwZXJpbWVudGFsXSBhdHRlbXB0IHRvIHByb3ZpZGUgQ2xvc3VyZSB0eXBlcyBpbnN0ZWFkIG9mIHs/fVxuICAtLWRpc2FibGVBdXRvUXVvdGluZyAgZG8gbm90IGF1dG9tYXRpY2FsbHkgYXBwbHkgcXVvdGVzIHRvIHByb3BlcnR5IGFjY2Vzc2VzXG5gKTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIGNvbW1hbmQtbGluZSBhcmd1bWVudHMsIGV4dHJhY3RpbmcgdGhlIHRzaWNrbGUgc2V0dGluZ3MgYW5kXG4gKiB0aGUgYXJndW1lbnRzIHRvIHBhc3Mgb24gdG8gdHNjLlxuICovXG5mdW5jdGlvbiBsb2FkU2V0dGluZ3NGcm9tQXJncyhhcmdzOiBzdHJpbmdbXSk6IHtzZXR0aW5nczogU2V0dGluZ3MsIHRzY0FyZ3M6IHN0cmluZ1tdfSB7XG4gIGNvbnN0IHNldHRpbmdzOiBTZXR0aW5ncyA9IHt9O1xuICBjb25zdCBwYXJzZWRBcmdzID0gbWluaW1pc3QoYXJncyk7XG4gIGZvciAoY29uc3QgZmxhZyBvZiBPYmplY3Qua2V5cyhwYXJzZWRBcmdzKSkge1xuICAgIHN3aXRjaCAoZmxhZykge1xuICAgICAgY2FzZSAnaCc6XG4gICAgICBjYXNlICdoZWxwJzpcbiAgICAgICAgdXNhZ2UoKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V4dGVybnMnOlxuICAgICAgICBzZXR0aW5ncy5leHRlcm5zUGF0aCA9IHBhcnNlZEFyZ3NbZmxhZ107XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndHlwZWQnOlxuICAgICAgICBzZXR0aW5ncy5pc1R5cGVkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd2ZXJib3NlJzpcbiAgICAgICAgc2V0dGluZ3MudmVyYm9zZSA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGlzYWJsZUF1dG9RdW90aW5nJzpcbiAgICAgICAgc2V0dGluZ3MuZGlzYWJsZUF1dG9RdW90aW5nID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdfJzpcbiAgICAgICAgLy8gVGhpcyBpcyBwYXJ0IG9mIHRoZSBtaW5pbWlzdCBBUEksIGFuZCBob2xkcyBhcmdzIGFmdGVyIHRoZSAnLS0nLlxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYHVua25vd24gZmxhZyAnLS0ke2ZsYWd9J2ApO1xuICAgICAgICB1c2FnZSgpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuICB9XG4gIC8vIEFyZ3VtZW50cyBhZnRlciB0aGUgJy0tJyBhcmcgYXJlIGFyZ3VtZW50cyB0byB0c2MuXG4gIGNvbnN0IHRzY0FyZ3MgPSBwYXJzZWRBcmdzWydfJ107XG4gIHJldHVybiB7c2V0dGluZ3MsIHRzY0FyZ3N9O1xufVxuXG4vKipcbiAqIExvYWRzIHRoZSB0c2NvbmZpZy5qc29uIGZyb20gYSBkaXJlY3RvcnkuXG4gKlxuICogVE9ETyhtYXJ0aW5wcm9ic3QpOiB1c2UgdHMuZmluZENvbmZpZ0ZpbGUgdG8gbWF0Y2ggdHNjIGJlaGF2aW91ci5cbiAqXG4gKiBAcGFyYW0gYXJncyB0c2MgY29tbWFuZC1saW5lIGFyZ3VtZW50cy5cbiAqL1xuZnVuY3Rpb24gbG9hZFRzY0NvbmZpZyhhcmdzOiBzdHJpbmdbXSk6XG4gICAge29wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucywgZmlsZU5hbWVzOiBzdHJpbmdbXSwgZXJyb3JzOiB0cy5EaWFnbm9zdGljW119IHtcbiAgLy8gR2F0aGVyIHRzYyBvcHRpb25zL2lucHV0IGZpbGVzIGZyb20gY29tbWFuZCBsaW5lLlxuICBsZXQge29wdGlvbnMsIGZpbGVOYW1lcywgZXJyb3JzfSA9IHRzLnBhcnNlQ29tbWFuZExpbmUoYXJncyk7XG4gIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiB7b3B0aW9uczoge30sIGZpbGVOYW1lczogW10sIGVycm9yc307XG4gIH1cblxuICAvLyBTdG9yZSBmaWxlIGFyZ3VtZW50c1xuICBjb25zdCB0c0ZpbGVBcmd1bWVudHMgPSBmaWxlTmFtZXM7XG5cbiAgLy8gUmVhZCBmdXJ0aGVyIHNldHRpbmdzIGZyb20gdHNjb25maWcuanNvbi5cbiAgY29uc3QgcHJvamVjdERpciA9IG9wdGlvbnMucHJvamVjdCB8fCAnLic7XG4gIGNvbnN0IGNvbmZpZ0ZpbGVOYW1lID0gcGF0aC5qb2luKHByb2plY3REaXIsICd0c2NvbmZpZy5qc29uJyk7XG4gIGNvbnN0IHtjb25maWc6IGpzb24sIGVycm9yfSA9XG4gICAgICB0cy5yZWFkQ29uZmlnRmlsZShjb25maWdGaWxlTmFtZSwgcGF0aCA9PiBmcy5yZWFkRmlsZVN5bmMocGF0aCwgJ3V0Zi04JykpO1xuICBpZiAoZXJyb3IpIHtcbiAgICByZXR1cm4ge29wdGlvbnM6IHt9LCBmaWxlTmFtZXM6IFtdLCBlcnJvcnM6IFtlcnJvcl19O1xuICB9XG4gICh7b3B0aW9ucywgZmlsZU5hbWVzLCBlcnJvcnN9ID1cbiAgICAgICB0cy5wYXJzZUpzb25Db25maWdGaWxlQ29udGVudChqc29uLCB0cy5zeXMsIHByb2plY3REaXIsIG9wdGlvbnMsIGNvbmZpZ0ZpbGVOYW1lKSk7XG4gIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiB7b3B0aW9uczoge30sIGZpbGVOYW1lczogW10sIGVycm9yc307XG4gIH1cblxuICAvLyBpZiBmaWxlIGFyZ3VtZW50cyB3ZXJlIGdpdmVuIHRvIHRoZSB0eXBlc2NyaXB0IHRyYW5zcGlsZXIgdGhlbiB0cmFuc3BpbGUgb25seSB0aG9zZSBmaWxlc1xuICBmaWxlTmFtZXMgPSB0c0ZpbGVBcmd1bWVudHMubGVuZ3RoID4gMCA/IHRzRmlsZUFyZ3VtZW50cyA6IGZpbGVOYW1lcztcblxuICByZXR1cm4ge29wdGlvbnMsIGZpbGVOYW1lcywgZXJyb3JzOiBbXX07XG59XG5cbi8qKlxuICogQ29tcGlsZXMgVHlwZVNjcmlwdCBjb2RlIGludG8gQ2xvc3VyZS1jb21waWxlci1yZWFkeSBKUy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQ2xvc3VyZUpTKFxuICAgIG9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucywgZmlsZU5hbWVzOiBzdHJpbmdbXSwgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgIHdyaXRlRmlsZT86IHRzLldyaXRlRmlsZUNhbGxiYWNrKTogdHNpY2tsZS5FbWl0UmVzdWx0IHtcbiAgLy8gVXNlIGFic29sdXRlIHBhdGhzIHRvIGRldGVybWluZSB3aGF0IGZpbGVzIHRvIHByb2Nlc3Mgc2luY2UgZmlsZXMgbWF5IGJlIGltcG9ydGVkIHVzaW5nXG4gIC8vIHJlbGF0aXZlIG9yIGFic29sdXRlIHBhdGhzXG4gIGNvbnN0IGFic29sdXRlRmlsZU5hbWVzID0gZmlsZU5hbWVzLm1hcChpID0+IHBhdGgucmVzb2x2ZShpKSk7XG5cbiAgY29uc3QgY29tcGlsZXJIb3N0ID0gdHMuY3JlYXRlQ29tcGlsZXJIb3N0KG9wdGlvbnMpO1xuICBjb25zdCBwcm9ncmFtID0gdHMuY3JlYXRlUHJvZ3JhbShmaWxlTmFtZXMsIG9wdGlvbnMsIGNvbXBpbGVySG9zdCk7XG4gIGNvbnN0IGZpbGVzVG9Qcm9jZXNzID0gbmV3IFNldChhYnNvbHV0ZUZpbGVOYW1lcyk7XG4gIGNvbnN0IHJvb3RNb2R1bGVQYXRoID0gb3B0aW9ucy5yb290RGlyIHx8IGdldENvbW1vblBhcmVudERpcmVjdG9yeShhYnNvbHV0ZUZpbGVOYW1lcyk7XG4gIGNvbnN0IHRyYW5zZm9ybWVySG9zdDogdHNpY2tsZS5Uc2lja2xlSG9zdCA9IHtcbiAgICBzaG91bGRTa2lwVHNpY2tsZVByb2Nlc3Npbmc6IChmaWxlTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gIWZpbGVzVG9Qcm9jZXNzLmhhcyhwYXRoLnJlc29sdmUoZmlsZU5hbWUpKTtcbiAgICB9LFxuICAgIHNob3VsZElnbm9yZVdhcm5pbmdzRm9yUGF0aDogKGZpbGVOYW1lOiBzdHJpbmcpID0+IGZhbHNlLFxuICAgIHBhdGhUb01vZHVsZU5hbWU6IGNsaVN1cHBvcnQucGF0aFRvTW9kdWxlTmFtZS5iaW5kKG51bGwsIHJvb3RNb2R1bGVQYXRoKSxcbiAgICBmaWxlTmFtZVRvTW9kdWxlSWQ6IChmaWxlTmFtZSkgPT4gZmlsZU5hbWUsXG4gICAgZXM1TW9kZTogdHJ1ZSxcbiAgICBnb29nbW9kdWxlOiB0cnVlLFxuICAgIHByZWx1ZGU6ICcnLFxuICAgIHRyYW5zZm9ybURlY29yYXRvcnM6IHRydWUsXG4gICAgdHJhbnNmb3JtVHlwZXNUb0Nsb3N1cmU6IHRydWUsXG4gICAgdHlwZUJsYWNrTGlzdFBhdGhzOiBuZXcgU2V0KCksXG4gICAgZGlzYWJsZUF1dG9RdW90aW5nOiBzZXR0aW5ncy5kaXNhYmxlQXV0b1F1b3RpbmcsXG4gICAgdW50eXBlZDogZmFsc2UsXG4gICAgbG9nV2FybmluZzogKHdhcm5pbmcpID0+IGNvbnNvbGUuZXJyb3IodHNpY2tsZS5mb3JtYXREaWFnbm9zdGljcyhbd2FybmluZ10pKSxcbiAgICBvcHRpb25zLFxuICAgIGhvc3Q6IGNvbXBpbGVySG9zdCxcbiAgfTtcbiAgY29uc3QgZGlhZ25vc3RpY3MgPSB0cy5nZXRQcmVFbWl0RGlhZ25vc3RpY3MocHJvZ3JhbSk7XG4gIGlmIChkaWFnbm9zdGljcy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRpYWdub3N0aWNzLFxuICAgICAgbW9kdWxlc01hbmlmZXN0OiBuZXcgTW9kdWxlc01hbmlmZXN0KCksXG4gICAgICBleHRlcm5zOiB7fSxcbiAgICAgIGVtaXRTa2lwcGVkOiB0cnVlLFxuICAgICAgZW1pdHRlZEZpbGVzOiBbXSxcbiAgICB9O1xuICB9XG4gIHJldHVybiB0c2lja2xlLmVtaXRXaXRoVHNpY2tsZShcbiAgICAgIHByb2dyYW0sIHRyYW5zZm9ybWVySG9zdCwgY29tcGlsZXJIb3N0LCBvcHRpb25zLCB1bmRlZmluZWQsIHdyaXRlRmlsZSk7XG59XG5cbmZ1bmN0aW9uIG1haW4oYXJnczogc3RyaW5nW10pOiBudW1iZXIge1xuICBjb25zdCB7c2V0dGluZ3MsIHRzY0FyZ3N9ID0gbG9hZFNldHRpbmdzRnJvbUFyZ3MoYXJncyk7XG4gIGNvbnN0IGNvbmZpZyA9IGxvYWRUc2NDb25maWcodHNjQXJncyk7XG4gIGlmIChjb25maWcuZXJyb3JzLmxlbmd0aCkge1xuICAgIGNvbnNvbGUuZXJyb3IodHNpY2tsZS5mb3JtYXREaWFnbm9zdGljcyhjb25maWcuZXJyb3JzKSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBpZiAoY29uZmlnLm9wdGlvbnMubW9kdWxlICE9PSB0cy5Nb2R1bGVLaW5kLkNvbW1vbkpTKSB7XG4gICAgLy8gVGhpcyBpcyBub3QgYW4gdXBzdHJlYW0gVHlwZVNjcmlwdCBkaWFnbm9zdGljLCB0aGVyZWZvcmUgaXQgZG9lcyBub3QgZ29cbiAgICAvLyB0aHJvdWdoIHRoZSBkaWFnbm9zdGljcyBhcnJheSBtZWNoYW5pc20uXG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgJ3RzaWNrbGUgY29udmVydHMgVHlwZVNjcmlwdCBtb2R1bGVzIHRvIENsb3N1cmUgbW9kdWxlcyB2aWEgQ29tbW9uSlMgaW50ZXJuYWxseS4gJyArXG4gICAgICAgICdTZXQgdHNjb25maWcuanMgXCJtb2R1bGVcIjogXCJjb21tb25qc1wiJyk7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICAvLyBSdW4gdHNpY2tsZStUU0MgdG8gY29udmVydCBpbnB1dHMgdG8gQ2xvc3VyZSBKUyBmaWxlcy5cbiAgY29uc3QgcmVzdWx0ID0gdG9DbG9zdXJlSlMoXG4gICAgICBjb25maWcub3B0aW9ucywgY29uZmlnLmZpbGVOYW1lcywgc2V0dGluZ3MsIChmaWxlUGF0aDogc3RyaW5nLCBjb250ZW50czogc3RyaW5nKSA9PiB7XG4gICAgICAgIG1rZGlycC5zeW5jKHBhdGguZGlybmFtZShmaWxlUGF0aCkpO1xuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBjb250ZW50cywge2VuY29kaW5nOiAndXRmLTgnfSk7XG4gICAgICB9KTtcbiAgaWYgKHJlc3VsdC5kaWFnbm9zdGljcy5sZW5ndGgpIHtcbiAgICBjb25zb2xlLmVycm9yKHRzaWNrbGUuZm9ybWF0RGlhZ25vc3RpY3MocmVzdWx0LmRpYWdub3N0aWNzKSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBpZiAoc2V0dGluZ3MuZXh0ZXJuc1BhdGgpIHtcbiAgICBta2RpcnAuc3luYyhwYXRoLmRpcm5hbWUoc2V0dGluZ3MuZXh0ZXJuc1BhdGgpKTtcbiAgICBmcy53cml0ZUZpbGVTeW5jKHNldHRpbmdzLmV4dGVybnNQYXRoLCB0c2lja2xlLmdldEdlbmVyYXRlZEV4dGVybnMocmVzdWx0LmV4dGVybnMpKTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy8gQ0xJIGVudHJ5IHBvaW50XG5pZiAocmVxdWlyZS5tYWluID09PSBtb2R1bGUpIHtcbiAgcHJvY2Vzcy5leGl0KG1haW4ocHJvY2Vzcy5hcmd2LnNwbGljZSgyKSkpO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFVQSx1QkFBeUI7SUFDekIsbUNBQXFDO0lBQ3JDLCtCQUFpQztJQUNqQywyQkFBNkI7SUFDN0IsMkNBQW1DO0lBRW5DLG9EQUE0QztJQUM1Qyw2Q0FBcUM7SUFDckMsK0NBQTBDO0lBQzFDLHlDQUFnRDtJQWlCaEQ7UUFDRSxPQUFPLENBQUMsS0FBSyxDQUFDLGdZQVNmLENBQUMsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCw4QkFBOEIsSUFBYztRQUMxQyxJQUFNLFFBQVEsR0FBYSxFQUFFLENBQUM7UUFDOUIsSUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDOztZQUNsQyxLQUFtQixJQUFBLEtBQUEsU0FBQSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBLGdCQUFBO2dCQUFyQyxJQUFNLElBQUksV0FBQTtnQkFDYixRQUFRLElBQUksRUFBRTtvQkFDWixLQUFLLEdBQUcsQ0FBQztvQkFDVCxLQUFLLE1BQU07d0JBQ1QsS0FBSyxFQUFFLENBQUM7d0JBQ1IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDaEIsTUFBTTtvQkFDUixLQUFLLFNBQVM7d0JBQ1osUUFBUSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ3hDLE1BQU07b0JBQ1IsS0FBSyxPQUFPO3dCQUNWLFFBQVEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO3dCQUN4QixNQUFNO29CQUNSLEtBQUssU0FBUzt3QkFDWixRQUFRLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQzt3QkFDeEIsTUFBTTtvQkFDUixLQUFLLG9CQUFvQjt3QkFDdkIsUUFBUSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQzt3QkFD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QUFRLENBQUMsV0FBVyxFQUFFO1lBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNoRCxFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ3JGO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7UUFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzVDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIG1pbmltaXN0IGZyb20gJ21pbmltaXN0JztcbmltcG9ydCAqIGFzIG1rZGlycCBmcm9tICdta2RpcnAnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJy4vdHlwZXNjcmlwdCc7XG5cbmltcG9ydCAqIGFzIGNsaVN1cHBvcnQgZnJvbSAnLi9jbGlfc3VwcG9ydCc7XG5pbXBvcnQgKiBhcyB0c2lja2xlIGZyb20gJy4vdHNpY2tsZSc7XG5pbXBvcnQge01vZHVsZXNNYW5pZmVzdH0gZnJvbSAnLi90c2lja2xlJztcbmltcG9ydCB7Z2V0Q29tbW9uUGFyZW50RGlyZWN0b3J5fSBmcm9tICcuL3V0aWwnO1xuXG4vKiogVHNpY2tsZSBzZXR0aW5ncyBwYXNzZWQgb24gdGhlIGNvbW1hbmQgbGluZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2V0dGluZ3Mge1xuICAvKiogSWYgcHJvdmlkZWQsIGRvIG5vdCBtb2RpZnkgcXVvdGluZyBvZiBwcm9wZXJ0eSBhY2Nlc3Nlcy4gKi9cbiAgZGlzYWJsZUF1dG9RdW90aW5nPzogYm9vbGVhbjtcblxuICAvKiogSWYgcHJvdmlkZWQsIHBhdGggdG8gc2F2ZSBleHRlcm5zIHRvLiAqL1xuICBleHRlcm5zUGF0aD86IHN0cmluZztcblxuICAvKiogSWYgcHJvdmlkZWQsIGF0dGVtcHQgdG8gcHJvdmlkZSB0eXBlcyByYXRoZXIgdGhhbiB7P30uICovXG4gIGlzVHlwZWQ/OiBib29sZWFuO1xuXG4gIC8qKiBJZiB0cnVlLCBsb2cgaW50ZXJuYWwgZGVidWcgd2FybmluZ3MgdG8gdGhlIGNvbnNvbGUuICovXG4gIHZlcmJvc2U/OiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiB1c2FnZSgpIHtcbiAgY29uc29sZS5lcnJvcihgdXNhZ2U6IHRzaWNrbGUgW3RzaWNrbGUgb3B0aW9uc10gLS0gW3RzYyBvcHRpb25zXVxuXG5leGFtcGxlOlxuICB0c2lja2xlIC0tZXh0ZXJucz1mb28vZXh0ZXJucy5qcyAtLSAtcCBzcmMgLS1ub0ltcGxpY2l0QW55XG5cbnRzaWNrbGUgZmxhZ3MgYXJlOlxuICAtLWV4dGVybnM9UEFUSCAgICAgICAgc2F2ZSBnZW5lcmF0ZWQgQ2xvc3VyZSBleHRlcm5zLmpzIHRvIFBBVEhcbiAgLS10eXBlZCAgICAgICAgICAgICAgIFtleHBlcmltZW50YWxdIGF0dGVtcHQgdG8gcHJvdmlkZSBDbG9zdXJlIHR5cGVzIGluc3RlYWQgb2Ygez99XG4gIC0tZGlzYWJsZUF1dG9RdW90aW5nICBkbyBub3QgYXV0b21hdGljYWxseSBhcHBseSBxdW90ZXMgdG8gcHJvcGVydHkgYWNjZXNzZXNcbmApO1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgY29tbWFuZC1saW5lIGFyZ3VtZW50cywgZXh0cmFjdGluZyB0aGUgdHNpY2tsZSBzZXR0aW5ncyBhbmRcbiAqIHRoZSBhcmd1bWVudHMgdG8gcGFzcyBvbiB0byB0c2MuXG4gKi9cbmZ1bmN0aW9uIGxvYWRTZXR0aW5nc0Zyb21BcmdzKGFyZ3M6IHN0cmluZ1tdKToge3NldHRpbmdzOiBTZXR0aW5ncywgdHNjQXJnczogc3RyaW5nW119IHtcbiAgY29uc3Qgc2V0dGluZ3M6IFNldHRpbmdzID0ge307XG4gIGNvbnN0IHBhcnNlZEFyZ3MgPSBtaW5pbWlzdChhcmdzKTtcbiAgZm9yIChjb25zdCBmbGFnIG9mIE9iamVjdC5rZXlzKHBhcnNlZEFyZ3MpKSB7XG4gICAgc3dpdGNoIChmbGFnKSB7XG4gICAgICBjYXNlICdoJzpcbiAgICAgIGNhc2UgJ2hlbHAnOlxuICAgICAgICB1c2FnZSgpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXh0ZXJucyc6XG4gICAgICAgIHNldHRpbmdzLmV4dGVybnNQYXRoID0gcGFyc2VkQXJnc1tmbGFnXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0eXBlZCc6XG4gICAgICAgIHNldHRpbmdzLmlzVHlwZWQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3ZlcmJvc2UnOlxuICAgICAgICBzZXR0aW5ncy52ZXJib3NlID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkaXNhYmxlQXV0b1F1b3RpbmcnOlxuICAgICAgICBzZXR0aW5ncy5kaXNhYmxlQXV0b1F1b3RpbmcgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ18nOlxuICAgICAgICAvLyBUaGlzIGlzIHBhcnQgb2YgdGhlIG1pbmltaXN0IEFQSSwgYW5kIGhvbGRzIGFyZ3MgYWZ0ZXIgdGhlICctLScuXG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS5lcnJvcihgdW5rbm93biBmbGFnICctLSR7ZmxhZ30nYCk7XG4gICAgICAgIHVzYWdlKCk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gIH1cbiAgLy8gQXJndW1lbnRzIGFmdGVyIHRoZSAnLS0nIGFyZyBhcmUgYXJndW1lbnRzIHRvIHRzYy5cbiAgY29uc3QgdHNjQXJncyA9IHBhcnNlZEFyZ3NbJ18nXTtcbiAgcmV0dXJuIHtzZXR0aW5ncywgdHNjQXJnc307XG59XG5cbi8qKlxuICogTG9hZHMgdGhlIHRzY29uZmlnLmpzb24gZnJvbSBhIGRpcmVjdG9yeS5cbiAqXG4gKiBUT0RPKG1hcnRpbnByb2JzdCk6IHVzZSB0cy5maW5kQ29uZmlnRmlsZSB0byBtYXRjaCB0c2MgYmVoYXZpb3VyLlxuICpcbiAqIEBwYXJhbSBhcmdzIHRzYyBjb21tYW5kLWxpbmUgYXJndW1lbnRzLlxuICovXG5mdW5jdGlvbiBsb2FkVHNjQ29uZmlnKGFyZ3M6IHN0cmluZ1tdKTpcbiAgICB7b3B0aW9uczogdHMuQ29tcGlsZXJPcHRpb25zLCBmaWxlTmFtZXM6IHN0cmluZ1tdLCBlcnJvcnM6IHRzLkRpYWdub3N0aWNbXX0ge1xuICAvLyBHYXRoZXIgdHNjIG9wdGlvbnMvaW5wdXQgZmlsZXMgZnJvbSBjb21tYW5kIGxpbmUuXG4gIGxldCB7b3B0aW9ucywgZmlsZU5hbWVzLCBlcnJvcnN9ID0gdHMucGFyc2VDb21tYW5kTGluZShhcmdzKTtcbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHtvcHRpb25zOiB7fSwgZmlsZU5hbWVzOiBbXSwgZXJyb3JzfTtcbiAgfVxuXG4gIC8vIFN0b3JlIGZpbGUgYXJndW1lbnRzXG4gIGNvbnN0IHRzRmlsZUFyZ3VtZW50cyA9IGZpbGVOYW1lcztcblxuICAvLyBSZWFkIGZ1cnRoZXIgc2V0dGluZ3MgZnJvbSB0c2NvbmZpZy5qc29uLlxuICBjb25zdCBwcm9qZWN0RGlyID0gb3B0aW9ucy5wcm9qZWN0IHx8ICcuJztcbiAgY29uc3QgY29uZmlnRmlsZU5hbWUgPSBwYXRoLmpvaW4ocHJvamVjdERpciwgJ3RzY29uZmlnLmpzb24nKTtcbiAgY29uc3Qge2NvbmZpZzoganNvbiwgZXJyb3J9ID1cbiAgICAgIHRzLnJlYWRDb25maWdGaWxlKGNvbmZpZ0ZpbGVOYW1lLCBwYXRoID0+IGZzLnJlYWRGaWxlU3luYyhwYXRoLCAndXRmLTgnKSk7XG4gIGlmIChlcnJvcikge1xuICAgIHJldHVybiB7b3B0aW9uczoge30sIGZpbGVOYW1lczogW10sIGVycm9yczogW2Vycm9yXX07XG4gIH1cbiAgKHtvcHRpb25zLCBmaWxlTmFtZXMsIGVycm9yc30gPVxuICAgICAgIHRzLnBhcnNlSnNvbkNvbmZpZ0ZpbGVDb250ZW50KGpzb24sIHRzLnN5cywgcHJvamVjdERpciwgb3B0aW9ucywgY29uZmlnRmlsZU5hbWUpKTtcbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHtvcHRpb25zOiB7fSwgZmlsZU5hbWVzOiBbXSwgZXJyb3JzfTtcbiAgfVxuXG4gIC8vIGlmIGZpbGUgYXJndW1lbnRzIHdlcmUgZ2l2ZW4gdG8gdGhlIHR5cGVzY3JpcHQgdHJhbnNwaWxlciB0aGVuIHRyYW5zcGlsZSBvbmx5IHRob3NlIGZpbGVzXG4gIGZpbGVOYW1lcyA9IHRzRmlsZUFyZ3VtZW50cy5sZW5ndGggPiAwID8gdHNGaWxlQXJndW1lbnRzIDogZmlsZU5hbWVzO1xuXG4gIHJldHVybiB7b3B0aW9ucywgZmlsZU5hbWVzLCBlcnJvcnM6IFtdfTtcbn1cblxuLyoqXG4gKiBDb21waWxlcyBUeXBlU2NyaXB0IGNvZGUgaW50byBDbG9zdXJlLWNvbXBpbGVyLXJlYWR5IEpTLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9DbG9zdXJlSlMoXG4gICAgb3B0aW9uczogdHMuQ29tcGlsZXJPcHRpb25zLCBmaWxlTmFtZXM6IHN0cmluZ1tdLCBzZXR0aW5nczogU2V0dGluZ3MsXG4gICAgd3JpdGVGaWxlPzogdHMuV3JpdGVGaWxlQ2FsbGJhY2spOiB0c2lja2xlLkVtaXRSZXN1bHQge1xuICAvLyBVc2UgYWJzb2x1dGUgcGF0aHMgdG8gZGV0ZXJtaW5lIHdoYXQgZmlsZXMgdG8gcHJvY2VzcyBzaW5jZSBmaWxlcyBtYXkgYmUgaW1wb3J0ZWQgdXNpbmdcbiAgLy8gcmVsYXRpdmUgb3IgYWJzb2x1dGUgcGF0aHNcbiAgY29uc3QgYWJzb2x1dGVGaWxlTmFtZXMgPSBmaWxlTmFtZXMubWFwKGkgPT4gcGF0aC5yZXNvbHZlKGkpKTtcblxuICBjb25zdCBjb21waWxlckhvc3QgPSB0cy5jcmVhdGVDb21waWxlckhvc3Qob3B0aW9ucyk7XG4gIGNvbnN0IHByb2dyYW0gPSB0cy5jcmVhdGVQcm9ncmFtKGZpbGVOYW1lcywgb3B0aW9ucywgY29tcGlsZXJIb3N0KTtcbiAgY29uc3QgZmlsZXNUb1Byb2Nlc3MgPSBuZXcgU2V0KGFic29sdXRlRmlsZU5hbWVzKTtcbiAgY29uc3Qgcm9vdE1vZHVsZVBhdGggPSBvcHRpb25zLnJvb3REaXIgfHwgZ2V0Q29tbW9uUGFyZW50RGlyZWN0b3J5KGFic29sdXRlRmlsZU5hbWVzKTtcbiAgY29uc3QgdHJhbnNmb3JtZXJIb3N0OiB0c2lja2xlLlRzaWNrbGVIb3N0ID0ge1xuICAgIHNob3VsZFNraXBUc2lja2xlUHJvY2Vzc2luZzogKGZpbGVOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiAhZmlsZXNUb1Byb2Nlc3MuaGFzKHBhdGgucmVzb2x2ZShmaWxlTmFtZSkpO1xuICAgIH0sXG4gICAgc2hvdWxkSWdub3JlV2FybmluZ3NGb3JQYXRoOiAoZmlsZU5hbWU6IHN0cmluZykgPT4gZmFsc2UsXG4gICAgcGF0aFRvTW9kdWxlTmFtZTogY2xpU3VwcG9ydC5wYXRoVG9Nb2R1bGVOYW1lLmJpbmQobnVsbCwgcm9vdE1vZHVsZVBhdGgpLFxuICAgIGZpbGVOYW1lVG9Nb2R1bGVJZDogKGZpbGVOYW1lKSA9PiBmaWxlTmFtZSxcbiAgICBlczVNb2RlOiB0cnVlLFxuICAgIGdvb2dtb2R1bGU6IHRydWUsXG4gICAgcHJlbHVkZTogJycsXG4gICAgdHJhbnNmb3JtRGVjb3JhdG9yczogdHJ1ZSxcbiAgICB0cmFuc2Zvcm1UeXBlc1RvQ2xvc3VyZTogdHJ1ZSxcbiAgICB0eXBlQmxhY2tMaXN0UGF0aHM6IG5ldyBTZXQoKSxcbiAgICBkaXNhYmxlQXV0b1F1b3Rpbmc6IHNldHRpbmdzLmRpc2FibGVBdXRvUXVvdGluZyxcbiAgICB1bnR5cGVkOiBmYWxzZSxcbiAgICBsb2dXYXJuaW5nOiAod2FybmluZykgPT4gY29uc29sZS5lcnJvcih0c2lja2xlLmZvcm1hdERpYWdub3N0aWNzKFt3YXJuaW5nXSkpLFxuICAgIG9wdGlvbnMsXG4gICAgaG9zdDogY29tcGlsZXJIb3N0LFxuICB9O1xuICBjb25zdCBkaWFnbm9zdGljcyA9IHRzLmdldFByZUVtaXREaWFnbm9zdGljcyhwcm9ncmFtKTtcbiAgaWYgKGRpYWdub3N0aWNzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGlhZ25vc3RpY3MsXG4gICAgICBtb2R1bGVzTWFuaWZlc3Q6IG5ldyBNb2R1bGVzTWFuaWZlc3QoKSxcbiAgICAgIGV4dGVybnM6IHt9LFxuICAgICAgZW1pdFNraXBwZWQ6IHRydWUsXG4gICAgICBlbWl0dGVkRmlsZXM6IFtdLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHRzaWNrbGUuZW1pdFdpdGhUc2lja2xlKFxuICAgICAgcHJvZ3JhbSwgdHJhbnNmb3JtZXJIb3N0LCBjb21waWxlckhvc3QsIG9wdGlvbnMsIHVuZGVmaW5lZCwgd3JpdGVGaWxlKTtcbn1cblxuZnVuY3Rpb24gbWFpbihhcmdzOiBzdHJpbmdbXSk6IG51bWJlciB7XG4gIGNvbnN0IHtzZXR0aW5ncywgdHNjQXJnc30gPSBsb2FkU2V0dGluZ3NGcm9tQXJncyhhcmdzKTtcbiAgY29uc3QgY29uZmlnID0gbG9hZFRzY0NvbmZpZyh0c2NBcmdzKTtcbiAgaWYgKGNvbmZpZy5lcnJvcnMubGVuZ3RoKSB7XG4gICAgY29uc29sZS5lcnJvcih0c2lja2xlLmZvcm1hdERpYWdub3N0aWNzKGNvbmZpZy5lcnJvcnMpKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGlmIChjb25maWcub3B0aW9ucy5tb2R1bGUgIT09IHRzLk1vZHVsZUtpbmQuQ29tbW9uSlMpIHtcbiAgICAvLyBUaGlzIGlzIG5vdCBhbiB1cHN0cmVhbSBUeXBlU2NyaXB0IGRpYWdub3N0aWMsIHRoZXJlZm9yZSBpdCBkb2VzIG5vdCBnb1xuICAgIC8vIHRocm91Z2ggdGhlIGRpYWdub3N0aWNzIGFycmF5IG1lY2hhbmlzbS5cbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAndHNpY2tsZSBjb252ZXJ0cyBUeXBlU2NyaXB0IG1vZHVsZXMgdG8gQ2xvc3VyZSBtb2R1bGVzIHZpYSBDb21tb25KUyBpbnRlcm5hbGx5LiAnICtcbiAgICAgICAgJ1NldCB0c2NvbmZpZy5qcyBcIm1vZHVsZVwiOiBcImNvbW1vbmpzXCInKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIC8vIFJ1biB0c2lja2xlK1RTQyB0byBjb252ZXJ0IGlucHV0cyB0byBDbG9zdXJlIEpTIGZpbGVzLlxuICBjb25zdCByZXN1bHQgPSB0b0Nsb3N1cmVKUyhcbiAgICAgIGNvbmZpZy5vcHRpb25zLCBjb25maWcuZmlsZU5hbWVzLCBzZXR0aW5ncywgKGZpbGVQYXRoOiBzdHJpbmcsIGNvbnRlbnRzOiBzdHJpbmcpID0+IHtcbiAgICAgICAgbWtkaXJwLnN5bmMocGF0aC5kaXJuYW1lKGZpbGVQYXRoKSk7XG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIGNvbnRlbnRzLCB7ZW5jb2Rpbmc6ICd1dGYtOCd9KTtcbiAgICAgIH0pO1xuICBpZiAocmVzdWx0LmRpYWdub3N0aWNzLmxlbmd0aCkge1xuICAgIGNvbnNvbGUuZXJyb3IodHNpY2tsZS5mb3JtYXREaWFnbm9zdGljcyhyZXN1bHQuZGlhZ25vc3RpY3MpKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGlmIChzZXR0aW5ncy5leHRlcm5zUGF0aCkge1xuICAgIG1rZGlycC5zeW5jKHBhdGguZGlybmFtZShzZXR0aW5ncy5leHRlcm5zUGF0aCkpO1xuICAgIGZzLndyaXRlRmlsZVN5bmMoc2V0dGluZ3MuZXh0ZXJuc1BhdGgsIHRzaWNrbGUuZ2V0R2VuZXJhdGVkRXh0ZXJucyhyZXN1bHQuZXh0ZXJucykpO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vLyBDTEkgZW50cnkgcG9pbnRcbmlmIChyZXF1aXJlLm1haW4gPT09IG1vZHVsZSkge1xuICBwcm9jZXNzLmV4aXQobWFpbihwcm9jZXNzLmFyZ3Yuc3BsaWNlKDIpKSk7XG59XG4iXX0=

@@ -62,2 +62,2 @@ /**

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlc19tYW5pZmVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzX21hbmlmZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7O0lBSUgsNkVBQTZFO0lBQzdFO1FBQUE7WUFDRSxpREFBaUQ7WUFDekMscUJBQWdCLEdBQW9CLEVBQUUsQ0FBQztZQUMvQyxxRUFBcUU7WUFDN0Qsc0JBQWlCLEdBQXNCLEVBQUUsQ0FBQztRQStCcEQsQ0FBQztRQTdCQyxxQ0FBVyxHQUFYLFVBQVksS0FBc0I7WUFDaEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDN0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDakUsQ0FBQztRQUVELG1DQUFTLEdBQVQsVUFBVSxRQUFnQixFQUFFLE1BQWM7WUFDeEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQztZQUN6QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3hDLENBQUM7UUFFRCw2Q0FBbUIsR0FBbkIsVUFBb0IsUUFBZ0IsRUFBRSxjQUFzQjtZQUMxRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFFRCxzQkFBSSxvQ0FBTztpQkFBWDtnQkFDRSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM1QyxDQUFDOzs7V0FBQTtRQUVELCtDQUFxQixHQUFyQixVQUFzQixNQUFjO1lBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUVELHNCQUFJLHNDQUFTO2lCQUFiO2dCQUNFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzdDLENBQUM7OztXQUFBO1FBRUQsOENBQW9CLEdBQXBCLFVBQXFCLFFBQWdCO1lBQ25DLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNILHNCQUFDO0lBQUQsQ0FBQyxBQW5DRCxJQW1DQztJQW5DWSwwQ0FBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBGaWxlTWFwPFQ+IHsgW2ZpbGVOYW1lOiBzdHJpbmddOiBUOyB9XG5cbi8qKiBBIGNsYXNzIHRoYXQgbWFpbnRhaW5zIHRoZSBtb2R1bGUgZGVwZW5kZW5jeSBncmFwaCBvZiBvdXRwdXQgSlMgZmlsZXMuICovXG5leHBvcnQgY2xhc3MgTW9kdWxlc01hbmlmZXN0IHtcbiAgLyoqIE1hcCBvZiBnb29nbW9kdWxlIG1vZHVsZSBuYW1lIHRvIGZpbGUgbmFtZSAqL1xuICBwcml2YXRlIG1vZHVsZVRvRmlsZU5hbWU6IEZpbGVNYXA8c3RyaW5nPiA9IHt9O1xuICAvKiogTWFwIG9mIGZpbGUgbmFtZSB0byBhcnJheXMgb2YgaW1wb3J0ZWQgZ29vZ21vZHVsZSBtb2R1bGUgbmFtZXMgKi9cbiAgcHJpdmF0ZSByZWZlcmVuY2VkTW9kdWxlczogRmlsZU1hcDxzdHJpbmdbXT4gPSB7fTtcblxuICBhZGRNYW5pZmVzdChvdGhlcjogTW9kdWxlc01hbmlmZXN0KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLm1vZHVsZVRvRmlsZU5hbWUsIG90aGVyLm1vZHVsZVRvRmlsZU5hbWUpO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5yZWZlcmVuY2VkTW9kdWxlcywgb3RoZXIucmVmZXJlbmNlZE1vZHVsZXMpO1xuICB9XG5cbiAgYWRkTW9kdWxlKGZpbGVOYW1lOiBzdHJpbmcsIG1vZHVsZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5tb2R1bGVUb0ZpbGVOYW1lW21vZHVsZV0gPSBmaWxlTmFtZTtcbiAgICB0aGlzLnJlZmVyZW5jZWRNb2R1bGVzW2ZpbGVOYW1lXSA9IFtdO1xuICB9XG5cbiAgYWRkUmVmZXJlbmNlZE1vZHVsZShmaWxlTmFtZTogc3RyaW5nLCByZXNvbHZlZE1vZHVsZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5yZWZlcmVuY2VkTW9kdWxlc1tmaWxlTmFtZV0ucHVzaChyZXNvbHZlZE1vZHVsZSk7XG4gIH1cblxuICBnZXQgbW9kdWxlcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMubW9kdWxlVG9GaWxlTmFtZSk7XG4gIH1cblxuICBnZXRGaWxlTmFtZUZyb21Nb2R1bGUobW9kdWxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm1vZHVsZVRvRmlsZU5hbWVbbW9kdWxlXTtcbiAgfVxuXG4gIGdldCBmaWxlTmFtZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnJlZmVyZW5jZWRNb2R1bGVzKTtcbiAgfVxuXG4gIGdldFJlZmVyZW5jZWRNb2R1bGVzKGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlZE1vZHVsZXNbZmlsZU5hbWVdO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlc19tYW5pZmVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzX21hbmlmZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7O0lBSUgsNkVBQTZFO0lBQzdFO1FBQUE7WUFDRSxpREFBaUQ7WUFDekMscUJBQWdCLEdBQW9CLEVBQUUsQ0FBQztZQUMvQyxxRUFBcUU7WUFDN0Qsc0JBQWlCLEdBQXNCLEVBQUUsQ0FBQztRQStCcEQsQ0FBQztRQTdCQyxxQ0FBVyxHQUFYLFVBQVksS0FBc0I7WUFDaEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDN0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDakUsQ0FBQztRQUVELG1DQUFTLEdBQVQsVUFBVSxRQUFnQixFQUFFLE1BQWM7WUFDeEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQztZQUN6QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3hDLENBQUM7UUFFRCw2Q0FBbUIsR0FBbkIsVUFBb0IsUUFBZ0IsRUFBRSxjQUFzQjtZQUMxRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFFRCxzQkFBSSxvQ0FBTztpQkFBWDtnQkFDRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDNUMsQ0FBQzs7O1dBQUE7UUFFRCwrQ0FBcUIsR0FBckIsVUFBc0IsTUFBYztZQUNsQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBRUQsc0JBQUksc0NBQVM7aUJBQWI7Z0JBQ0UsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzdDLENBQUM7OztXQUFBO1FBRUQsOENBQW9CLEdBQXBCLFVBQXFCLFFBQWdCO1lBQ25DLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDSCxzQkFBQztJQUFELENBQUMsQUFuQ0QsSUFtQ0M7SUFuQ1ksMENBQWUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZU1hcDxUPiB7IFtmaWxlTmFtZTogc3RyaW5nXTogVDsgfVxuXG4vKiogQSBjbGFzcyB0aGF0IG1haW50YWlucyB0aGUgbW9kdWxlIGRlcGVuZGVuY3kgZ3JhcGggb2Ygb3V0cHV0IEpTIGZpbGVzLiAqL1xuZXhwb3J0IGNsYXNzIE1vZHVsZXNNYW5pZmVzdCB7XG4gIC8qKiBNYXAgb2YgZ29vZ21vZHVsZSBtb2R1bGUgbmFtZSB0byBmaWxlIG5hbWUgKi9cbiAgcHJpdmF0ZSBtb2R1bGVUb0ZpbGVOYW1lOiBGaWxlTWFwPHN0cmluZz4gPSB7fTtcbiAgLyoqIE1hcCBvZiBmaWxlIG5hbWUgdG8gYXJyYXlzIG9mIGltcG9ydGVkIGdvb2dtb2R1bGUgbW9kdWxlIG5hbWVzICovXG4gIHByaXZhdGUgcmVmZXJlbmNlZE1vZHVsZXM6IEZpbGVNYXA8c3RyaW5nW10+ID0ge307XG5cbiAgYWRkTWFuaWZlc3Qob3RoZXI6IE1vZHVsZXNNYW5pZmVzdCkge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5tb2R1bGVUb0ZpbGVOYW1lLCBvdGhlci5tb2R1bGVUb0ZpbGVOYW1lKTtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMucmVmZXJlbmNlZE1vZHVsZXMsIG90aGVyLnJlZmVyZW5jZWRNb2R1bGVzKTtcbiAgfVxuXG4gIGFkZE1vZHVsZShmaWxlTmFtZTogc3RyaW5nLCBtb2R1bGU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubW9kdWxlVG9GaWxlTmFtZVttb2R1bGVdID0gZmlsZU5hbWU7XG4gICAgdGhpcy5yZWZlcmVuY2VkTW9kdWxlc1tmaWxlTmFtZV0gPSBbXTtcbiAgfVxuXG4gIGFkZFJlZmVyZW5jZWRNb2R1bGUoZmlsZU5hbWU6IHN0cmluZywgcmVzb2x2ZWRNb2R1bGU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucmVmZXJlbmNlZE1vZHVsZXNbZmlsZU5hbWVdLnB1c2gocmVzb2x2ZWRNb2R1bGUpO1xuICB9XG5cbiAgZ2V0IG1vZHVsZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLm1vZHVsZVRvRmlsZU5hbWUpO1xuICB9XG5cbiAgZ2V0RmlsZU5hbWVGcm9tTW9kdWxlKG1vZHVsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tb2R1bGVUb0ZpbGVOYW1lW21vZHVsZV07XG4gIH1cblxuICBnZXQgZmlsZU5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5yZWZlcmVuY2VkTW9kdWxlcyk7XG4gIH1cblxuICBnZXRSZWZlcmVuY2VkTW9kdWxlcyhmaWxlTmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZWRNb2R1bGVzW2ZpbGVOYW1lXTtcbiAgfVxufVxuIl19

@@ -281,2 +281,2 @@ /**

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV3cml0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmV3cml0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRUgsaUdBQWdGO0lBQ2hGLGlFQUFvRjtJQUNwRiwyQ0FBbUM7SUFFbkM7Ozs7T0FJRztJQUNIO1FBaUJFLGtCQUFtQixJQUFtQixFQUFVLFlBQStDO1lBQS9DLDZCQUFBLEVBQUEsZUFBNkIscUNBQWtCO1lBQTVFLFNBQUksR0FBSixJQUFJLENBQWU7WUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBbUM7WUFoQnZGLFdBQU0sR0FBYSxFQUFFLENBQUM7WUFDOUIsNkNBQTZDO1lBQ25DLGdCQUFXLEdBQW9CLEVBQUUsQ0FBQztZQUM1QyxzQ0FBc0M7WUFDOUIsYUFBUSxHQUFtQixFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFDLENBQUM7WUFDckU7OztlQUdHO1lBQ0ssV0FBTSxHQUFHLENBQUMsQ0FBQztZQUNuQjs7O2VBR0c7WUFDSywyQkFBc0IsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUdwQyxDQUFDO1FBRUQsNEJBQVMsR0FBVCxVQUFVLE1BQWU7WUFDdkIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7WUFDckQsQ0FBQztZQUNELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9CLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ1gsMEZBQTBGO2dCQUMxRiwyRkFBMkY7Z0JBQzNGLHlGQUF5RjtnQkFDekYsSUFBSSxZQUFZLEdBQUcsQ0FBQyxD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Q0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFMRCw4Q0FLQztJQUVEOzs7T0FHRztJQUNILHNCQUE2QixJQUFZO1FBQ3ZDLDRFQUE0RTtRQUM1RSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUNkLENBQUM7SUFKRCxvQ0FJQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtpc0Nsb3N1cmVGaWxlb3ZlcnZpZXdDb21tZW50fSBmcm9tICcuL2ZpbGVvdmVydmlld19jb21tZW50X3RyYW5zZm9ybWVyJztcbmltcG9ydCB7Tk9PUF9TT1VSQ0VfTUFQUEVSLCBTb3VyY2VNYXBwZXIsIFNvdXJjZVBvc2l0aW9ufSBmcm9tICcuL3NvdXJjZV9tYXBfdXRpbHMnO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAnLi90eXBlc2NyaXB0JztcblxuLyoqXG4gKiBBIFJld3JpdGVyIG1hbmFnZXMgaXRlcmF0aW5nIHRocm91Z2ggYSB0cy5Tb3VyY2VGaWxlLCBjb3B5aW5nIGlucHV0XG4gKiB0byBvdXRwdXQgd2hpbGUgbGV0dGluZyB0aGUgc3ViY2xhc3MgcG90ZW50aWFsbHkgYWx0ZXIgc29tZSBub2Rlc1xuICogYWxvbmcgdGhlIHdheSBieSBpbXBsZW1lbnRpbmcgbWF5YmVQcm9jZXNzKCkuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSZXdyaXRlciB7XG4gIHByaXZhdGUgb3V0cHV0OiBzdHJpbmdbXSA9IFtdO1xuICAvKiogRXJyb3JzIGZvdW5kIHdoaWxlIGV4YW1pbmluZyB0aGUgY29kZS4gKi9cbiAgcHJvdGVjdGVkIGRpYWdub3N0aWNzOiB0cy5EaWFnbm9zdGljW10gPSBbXTtcbiAgLyoqIEN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIG91dHB1dC4gKi9cbiAgcHJpdmF0ZSBwb3NpdGlvbjogU291cmNlUG9zaXRpb24gPSB7bGluZTogMCwgY29sdW1uOiAwLCBwb3NpdGlvbjogMH07XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBsZXZlbCBvZiByZWN1cnNpb24gdGhyb3VnaCBUeXBlU2NyaXB0IE5vZGVzLiAgVXNlZCBpbiBmb3JtYXR0aW5nIGludGVybmFsIGRlYnVnXG4gICAqIHByaW50IHN0YXRlbWVudHMuXG4gICAqL1xuICBwcml2YXRlIGluZGVudCA9IDA7XG4gIC8qKlxuICAgKiBTa2lwIGVtaXR0aW5nIGFueSBjb2RlIGJlZm9yZSB0aGUgZ2l2ZW4gb2Zmc2V0LiBFLmcuIHVzZWQgdG8gYXZvaWQgZW1pdHRpbmcgQGZpbGVvdmVydmlld1xuICAgKiBjb21tZW50cyB0d2ljZS5cbiAgICovXG4gIHByaXZhdGUgc2tpcENvbW1lbnRzVXBUb09mZnNldCA9IC0xO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBmaWxlOiB0cy5Tb3VyY2VGaWxlLCBwcml2YXRlIHNvdXJjZU1hcHBlcjogU291cmNlTWFwcGVyID0gTk9PUF9TT1VSQ0VfTUFQUEVSKSB7XG4gIH1cblxuICBnZXRPdXRwdXQocHJlZml4Pzogc3RyaW5nKToge291dHB1dDogc3RyaW5nLCBkaWFnbm9zdGljczogdHMuRGlhZ25vc3RpY1tdfSB7XG4gICAgaWYgKHRoaXMuaW5kZW50ICE9PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Zpc2l0KCkgZmFpbGVkIHRvIHRyYWNrIG5lc3RpbmcnKTtcbiAgICB9XG4gICAgbGV0IG91dCA9IHRoaXMub3V0cHV0LmpvaW4oJycpO1xuICAgIGlmIChwcmVmaXgpIHtcbiAgICAgIC8vIEluc2VydCBwcmVmaXggYWZ0ZXIgYW55IGxlYWRpbmcgQGZpbGVvdmVydmlldyBjb21tZW50cywgc28gdGhleSBzdGlsbCBjb21lIGZpcnN0IGluIHRoZVxuICAgICAgLy8gZmlsZS4gVGhpcyBtdXN0IG5vdCB1c2UgZmlsZS5nZXRTdGFydCgpIChjb21tZW50IHBvc2l0aW9uIGluIHRoZSBpbnB1dCBmaWxlKSwgYnV0IHJhaHRlclxuICAgICAgLy8gY2hlY2sgY29tbWVudHMgaW4gdGhlIG5ldyBvdXRwdXQsIGFzIHRob3NlIChpbiBwYXJ0aWN1bGFyIGZvciBjb21tZW50cykgYXJlIHVucmVsYXRlZC5cbiAgICAgIGxldCBpbnNlcnRpb25JZHggPSAwO1xuICAgICAgZm9yIChjb25zdCBjciBvZiB0cy5nZXRMZWFkaW5nQ29tbWVudFJhbmdlcyhvdXQsIDApIHx8IFtdKSB7XG4gICAgICAgIGlmIChpc0Nsb3N1cmVGaWxlb3ZlcnZpZXdDb21tZW50KG91dC5zdWJzdHJpbmcoY3IucG9zLCBjci5lbmQpKSkge1xuICAgICAgICAgIGluc2VydGlvbklkeCA9IGNyLmVuZDtcbiAgICAgICAgICAvLyBJbmNsdWRlIHNwYWNlIChpbiBwYXJ0aWN1bGFyIGxpbmUgYnJlYWtzKSBhZnRlciBhIEBmaWxlb3ZlcnZpZXcgY29tbWVudDsgd2l0aG91dCB0aGVcbiAgICAgICAgICAvLyBzcGFjZSBzZXBlcmF0aW5nIGl0LCBUeXBlU2NyaXB0IG1pZ2h0IGVsaWRlIHRoZSBlbWl0LlxuICAgICAgICAgIHdoaWxlIChpbnNlcnRpb25JZHggPCBvdXQubGVuZ3RoICYmIG91dFtpbnNlcnRpb25JZHhdLm1hdGNoKC9cXHMvKSkgaW5zZXJ0aW9uSWR4Kys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG91dCA9IG91dC5zdWJzdHJpbmcoMCwgaW5zZXJ0aW9uSWR4KSArIHByZWZpeCArIG91dC5zdWJzdHJpbmcoaW5zZXJ0aW9uSWR4KTtcbiAgICAgIHRoaXMuc291cmNlTWFwcGVyLnNoaWZ0QnlPZmZzZXQocHJlZml4Lmxlbmd0aCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBvdXRwdXQ6IG91dCxcbiAgICAgIGRpYWdub3N0aWNzOiB0aGlzLmRpYWdub3N0aWNzLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogdmlzaXQgdHJhdmVyc2VzIGEgTm9kZSwgcmVjdXJzaXZlbHkgd3JpdGluZyBhbGwgbm9kZXMgbm90IGhhbmRsZWQgYnkgdGhpcy5tYXliZVByb2Nlc3MuXG4gICAqL1xuICB2aXNpdChub2RlOiB0cy5Ob2RlKSB7XG4gICAgLy8gdGhpcy5sb2dXaXRoSW5kZW50KCdub2RlOiAnICsgdHMuU3ludGF4S2luZFtub2RlLmtpbmRdKTtcbiAgICB0aGlzLmluZGVudCsrO1xuICAgIHRyeSB7XG4gICAgICBpZiAoIXRoaXMubWF5YmVQcm9jZXNzKG5vZGUpKSB7XG4gICAgICAgIHRoaXMud3JpdGVOb2RlKG5vZGUpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICghZS5tZXNzYWdlKSBlLm1lc3NhZ2UgPSAnVW5oYW5kbGVkIGVycm9yIGluIHRzaWNrbGUnO1xuICAgICAgZS5tZXNzYWdlICs9IGBcXG4gYXQgJHt0cy5TeW50YXhLaW5kW25vZGUua2luZF19IGluICR7dGhpcy5maWxlLmZpbGVOYW1lfTpgO1xuICAgICAgY29uc3Qge2xpbmUsIGNoYXJhY3Rlcn0gPSB0aGlzLmZpbGUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24obm9kZS5nZXRTdGFydCgpKTtcbiAgICAgIGUubWVzc2FnZSArPSBgJHtsaW5lICsgMX06JHtjaGFyYWN0ZXIgKyAxfWA7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICB0aGlzLmluZGVudC0tO1xuICB9XG5cbiAgLyoqXG4gICAqIG1heWJlUHJvY2VzcyBsZXRzIHN1YmNsYXNzZXMgb3B0aW9uYWxseSBwcm9jZXNzZXMgYSBub2RlLlxuICAgKlxuICAgKiBAcmV0dXJuIFRydWUgaWYgdGhlIG5vZGUgaGFzIGJlZW4gaGFuZGxlZCBhbmQgZG9lc24ndCBuZWVkIHRvIGJlIHRyYXZlcnNlZDtcbiAgICogICAgZmFsc2UgdG8gaGF2ZSB0aGUgbm9kZSB3cml0dGVuIGFuZCBpdHMgY2hpbGRyZW4gcmVjdXJzaXZlbHkgdmlzaXRlZC5cbiAgICovXG4gIHByb3RlY3RlZCBtYXliZVByb2Nlc3Mobm9kZTogdHMuTm9kZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiB3cml0ZU5vZGUgd3JpdGVzIGEgdHMuTm9kZSwgY2FsbGluZyB0aGlzLnZpc2l0KCkgb24gaXRzIGNoaWxkcmVuLiAqL1xuICB3cml0ZU5vZGUobm9kZTogdHMuTm9kZSwgc2tpcENvbW1lbnRzID0gZmFsc2UsIG5ld0xpbmVJZkNvbW1lbnRzU3RyaXBwZWQgPSB0cnVlKSB7XG4gICAgbGV0IHBvcyA9IG5vZGUuZ2V0RnVsbFN0YXJ0KCk7XG4gICAgaWYgKHNraXBDb21tZW50cykge1xuICAgICAgLy8gVG8gc2tpcCBjb21tZW50cywgd2Ugc2tpcCBhbGwgd2hpdGVzcGFjZS9jb21tZW50cyBwcmVjZWRpbmdcbiAgICAgIC8vIHRoZSBub2RlLiAgQnV0IGlmIHRoZXJlIHdhcyBhbnl0aGluZyBza2lwcGVkIHdlIHNob3VsZCBlbWl0XG4gICAgICAvLyBhIG5ld2xpbmUgaW4gaXRzIHBsYWNlIHNvIHRoYXQgdGhlIG5vZGUgcmVtYWlucyBzZXBhcmF0ZWRcbiAgICAgIC8vIGZyb20gdGhlIHByZXZpb3VzIG5vZGUuICBUT0RPOiBkb24ndCBza2lwIGFueXRoaW5nIGhlcmUgaWZcbiAgICAgIC8vIHRoZXJlIHdhc24ndCBhbnkgY29tbWVudC5cbiAgICAgIGlmIChuZXdMaW5lSWZDb21tZW50c1N0cmlwcGVkICYmIG5vZGUuZ2V0RnVsbFN0YXJ0KCkgPCBub2RlLmdldFN0YXJ0KCkpIHtcbiAgICAgICAgdGhpcy5lbWl0KCdcXG4nKTtcbiAgICAgIH1cbiAgICAgIHBvcyA9IG5vZGUuZ2V0U3RhcnQoKTtcbiAgICB9XG4gICAgdGhpcy53cml0ZU5vZGVGcm9tKG5vZGUsIHBvcyk7XG4gIH1cblxuICB3cml0ZU5vZGVGcm9tKG5vZGU6IHRzLk5vZGUsIHBvczogbnVtYmVyLCBlbmQgPSBub2RlLmdldEVuZCgpKSB7XG4gICAgaWYgKGVuZCA8PSB0aGlzLnNraXBDb21tZW50c1VwVG9PZmZzZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgb2xkU2tpcENvbW1lbnRzVXBUb09mZnNldCA9IHRoaXMuc2tpcENvbW1lbnRzVXBUb09mZnNldDtcbiAgICB0aGlzLnNraXBDb21tZW50c1VwVG9PZmZzZXQgPSBNYXRoLm1heCh0aGlzLnNraXBDb21tZW50c1VwVG9PZmZzZXQsIHBvcyk7XG4gICAgdHMuZm9yRWFjaENoaWxkKG5vZGUsIGNoaWxkID0+IHtcbiAgICAgIHRoaXMud3JpdGVSYW5nZShub2RlLCBwb3MsIGNoaWxkLmdldEZ1bGxTdGFydCgpKTtcbiAgICAgIHRoaXMudmlzaXQoY2hpbGQpO1xuICAgICAgcG9zID0gY2hpbGQuZ2V0RW5kKCk7XG4gICAgfSk7XG4gICAgdGhpcy53cml0ZVJhbmdlKG5vZGUsIHBvcywgZW5kKTtcbiAgICB0aGlzLnNraXBDb21tZW50c1VwVG9PZmZzZXQgPSBvbGRTa2lwQ29tbWVudHNVcFRvT2Zmc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlcyBhbGwgbGVhZGluZyB0cml2aWEgKHdoaXRlc3BhY2Ugb3IgY29tbWVudHMpIG9uIG5vZGUsIG9yIGFsbCB0cml2aWEgdXAgdG8gdGhlIGdpdmVuXG4gICAqIHBvc2l0aW9uLiBBbHNvIG1hcmtzIHRob3NlIHRyaXZpYSBhcyBcImFscmVhZHkgZW1pdHRlZFwiIGJ5IHNoaWZ0aW5nIHRoZSBza2lwQ29tbWVudHNVcFRvIG1hcmtlci5cbiAgICovXG4gIHdyaXRlTGVhZGluZ1RyaXZpYShub2RlOiB0cy5Ob2RlLCB1cFRvID0gMCkge1xuICAgIGNvbnN0IHVwVG9PZmZzZXQgPSB1cFRvIHx8IG5vZGUuZ2V0U3RhcnQoKTtcbiAgICB0aGlzLndyaXRlUmFuZ2Uobm9kZSwgbm9kZS5nZXRGdWxsU3RhcnQoKSwgdXBUbyB8fCBub2RlLmdldFN0YXJ0KCkpO1xuICAgIHRoaXMuc2tpcENvbW1lbnRzVXBUb09mZnNldCA9IHVwVG9PZmZzZXQ7XG4gIH1cblxuICBhZGRTb3VyY2VNYXBwaW5nKG5vZGU6IHRzLk5vZGUpIHtcbiAgICB0aGlzLndyaXRlUmFuZ2Uobm9kZSwgbm9kZS5nZXRFbmQoKSwgbm9kZS5nZXRFbmQoKSk7XG4gIH1cblxuICAvKipcbiAgICogV3JpdGUgYSBzcGFuIG9mIHRoZSBpbnB1dCBmaWxlIGFzIGV4cHJlc3NlZCBieSBhYnNvbHV0ZSBvZmZzZXRzLlxuICAgKiBUaGVzZSBvZmZzZXRzIGFyZSBmb3VuZCBpbiBhdHRyaWJ1dGVzIGxpa2Ugbm9kZS5nZXRGdWxsU3RhcnQoKSBhbmRcbiAgICogbm9kZS5nZXRFbmQoKS5cbiAgICovXG4gIHdyaXRlUmFuZ2Uobm9kZTogdHMuTm9kZSwgZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKSB7XG4gICAgY29uc3QgZnVsbFN0YXJ0ID0gbm9kZS5nZXRGdWxsU3RhcnQoKTtcbiAgICBjb25zdCB0ZXh0U3RhcnQgPSBub2RlLmdldFN0YXJ0KCk7XG4gICAgaWYgKGZyb20gPj0gZnVsbFN0YXJ0ICYmIGZyb20gPCB0ZXh0U3RhcnQpIHtcbiAgICAgIGZyb20gPSBNYXRoLm1heChmcm9tLCB0aGlzLnNraXBDb21tZW50c1VwVG9PZmZzZXQpO1xuICAgIH1cbiAgICAvLyBBZGQgYSBzb3VyY2UgbWFwcGluZy4gd3JpdGVSYW5nZShmcm9tLCB0bykgYWx3YXlzIGNvcnJlc3BvbmRzIHRvXG4gICAgLy8gb3JpZ2luYWwgc291cmNlIGNvZGUsIHNvIGFkZCBhIG1hcHBpbmcgYXQgdGhlIGN1cnJlbnQgbG9jYXRpb24gdGhhdFxuICAgIC8vIHBvaW50cyBiYWNrIHRvIHRoZSBsb2NhdGlvbiBhdCBgZnJvbWAuIFRoZSBhZGRpdGlvbmFsIGNvZGUgZ2VuZXJhdGVkXG4gICAgLy8gYnkgdHNpY2tsZSB3aWxsIHRoZW4gYmUgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBsYXN0IG1hcHBlZCBjb2RlXG4gICAgLy8gc2VjdGlvbiBwcmVjZWRpbmcgaXQuIFRoYXQncyBhcmd1YWJseSBpbmNvcnJlY3QgKGUuZy4gZm9yIHRoZSBmYWtlXG4gICAgLy8gbWV0aG9kcyBkZWZpbmluZyBwcm9wZXJ0aWVzKSwgYnV0IGlzIGdvb2QgZW5vdWdoIGZvciBzdGFjayB0cmFjZXMuXG4gICAgY29uc3QgcG9zID0gdGhpcy5maWxlLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKGZyb20pO1xuICAgIHRoaXMuc291cmNlTWFwcGVyLmFkZE1hcHBpbmcoXG4gICAgICAgIG5vZGUsIHtsaW5lOiBwb3MubGluZSwgY29sdW1uOiBwb3MuY2hhcmFjdGVyLCBwb3NpdGlvbjogZnJvbX0sIHRoaXMucG9zaXRpb24sIHRvIC0gZnJvbSk7XG4gICAgLy8gZ2V0U291cmNlRmlsZSgpLmdldFRleHQoKSBpcyB3cm9uZyBoZXJlIGJlY2F1c2UgaXQgaGFzIHRoZSB0ZXh0IG9mXG4gICAgLy8gdGhlIFNvdXJjZUZpbGUgbm9kZSBvZiB0aGUgQVNULCB3aGljaCBkb2Vzbid0IGNvbnRhaW4gdGhlIGNvbW1lbnRzXG4gICAgLy8gcHJlY2VkaW5nIHRoYXQgbm9kZS4gIFNlbWFudGljYWxseSB0aGVzZSByYW5nZXMgYXJlIGp1c3Qgb2Zmc2V0c1xuICAgIC8vIGludG8gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlIHRleHQsIHNvIHNsaWNlIGZyb20gdGhhdC5cbiAgICBjb25zdCB0ZXh0ID0gdGhpcy5maWxlLnRleHQuc2xpY2UoZnJvbSwgdG8pO1xuICAgIGlmICh0ZXh0KSB7XG4gICAgICB0aGlzLmVtaXQodGV4dCk7XG4gICAgfVxuICB9XG5cbiAgZW1pdChzdHI6IHN0cmluZykge1xuICAgIHRoaXMub3V0cHV0LnB1c2goc3RyKTtcbiAgICBmb3IgKGNvbnN0IGMgb2Ygc3RyKSB7XG4gICAgICB0aGlzLnBvc2l0aW9uLmNvbHVtbisrO1xuICAgICAgaWYgKGMgPT09ICdcXG4nKSB7XG4gICAgICAgIHRoaXMucG9zaXRpb24ubGluZSsrO1xuICAgICAgICB0aGlzLnBvc2l0aW9uLmNvbHVtbiA9IDA7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucG9zaXRpb24ucG9zaXRpb24gKz0gc3RyLmxlbmd0aDtcbiAgfVxuXG4gIC8qKiBSZW1vdmVzIGNvbW1lbnQgbWV0YWNoYXJhY3RlcnMgZnJvbSBhIHN0cmluZywgdG8gbWFrZSBpdCBzYWZlIHRvIGVtYmVkIGluIGEgY29tbWVudC4gKi9cbiAgZXNjYXBlRm9yQ29tbWVudChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9cXC9cXCovZywgJ19fJykucmVwbGFjZSgvXFwqXFwvL2csICdfXycpO1xuICB9XG5cbiAgLyogdHNsaW50OmRpc2FibGU6IG5vLXVudXNlZC12YXJpYWJsZSAqL1xuICBsb2dXaXRoSW5kZW50KG1lc3NhZ2U6IHN0cmluZykge1xuICAgIC8qIHRzbGludDplbmFibGU6IG5vLXVudXNlZC12YXJpYWJsZSAqL1xuICAgIGNvbnN0IHByZWZpeCA9IG5ldyBBcnJheSh0aGlzLmluZGVudCArIDEpLmpvaW4oJ3wgJyk7XG4gICAgY29uc29sZS5sb2cocHJlZml4ICsgbWVzc2FnZSk7XG4gIH1cblxuICAvKipcbiAgICogUHJvZHVjZXMgYSBjb21waWxlciBlcnJvciB0aGF0IHJlZmVyZW5jZXMgdGhlIE5vZGUncyBraW5kLiAgVGhpcyBpcyB1c2VmdWwgZm9yIHRoZSBcImVsc2VcIlxuICAgKiBicmFuY2ggb2YgY29kZSB0aGF0IGlzIGF0dGVtcHRpbmcgdG8gaGFuZGxlIGFsbCBwb3NzaWJsZSBpbnB1dCBOb2RlIHR5cGVzLCB0byBlbnN1cmUgYWxsIGNhc2VzXG4gICAqIGNvdmVyZWQuXG4gICAqL1xuICBlcnJvclVuaW1wbGVtZW50ZWRLaW5kKG5vZGU6IHRzLk5vZGUsIHdoZXJlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmVycm9yKG5vZGUsIGAke3RzLlN5bnRheEtpbmRbbm9kZS5raW5kXX0gbm90IGltcGxlbWVudGVkIGluICR7d2hlcmV9YCk7XG4gIH1cblxuICBlcnJvcihub2RlOiB0cy5Ob2RlLCBtZXNzYWdlVGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5kaWFnbm9zdGljcy5wdXNoKHtcbiAgICAgIGZpbGU6IG5vZGUuZ2V0U291cmNlRmlsZSgpLFxuICAgICAgc3RhcnQ6IG5vZGUuZ2V0U3RhcnQoKSxcbiAgICAgIGxlbmd0aDogbm9kZS5nZXRFbmQoKSAtIG5vZGUuZ2V0U3RhcnQoKSxcbiAgICAgIG1lc3NhZ2VUZXh0LFxuICAgICAgY2F0ZWdvcnk6IHRzLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcbiAgICAgIGNvZGU6IDAsXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqIFJldHVybnMgdGhlIHN0cmluZyBjb250ZW50cyBvZiBhIHRzLklkZW50aWZpZXIuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SWRlbnRpZmllclRleHQoaWRlbnRpZmllcjogdHMuSWRlbnRpZmllcik6IHN0cmluZyB7XG4gIC8vIE5PVEU6IHRoZSAndGV4dCcgcHJvcGVydHkgb24gYW4gSWRlbnRpZmllciBtYXkgYmUgZXNjYXBlZCBpZiBpdCBzdGFydHNcbiAgLy8gd2l0aCAnX18nLCBzbyBqdXN0IHVzZSBnZXRUZXh0KCkuXG4gIHJldHVybiBpZGVudGlmaWVyLmdldFRleHQoKTtcbn1cblxuLyoqIFJldHVybnMgYSBkb3Qtam9pbmVkIHF1YWxpZmllZCBuYW1lIChmb28uYmFyLkJheikuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW50aXR5TmFtZVRleHQobmFtZTogdHMuRW50aXR5TmFtZSk6IHN0cmluZyB7XG4gIGlmICh0cy5pc0lkZW50aWZpZXIobmFtZSkpIHtcbiAgICByZXR1cm4gZ2V0SWRlbnRpZmllclRleHQobmFtZSk7XG4gIH1cbiAgcmV0dXJuIGdldEVudGl0eU5hbWVUZXh0KG5hbWUubGVmdCkgKyAnLicgKyBnZXRJZGVudGlmaWVyVGV4dChuYW1lLnJpZ2h0KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBlc2NhcGVkIFR5cGVTY3JpcHQgbmFtZSBpbnRvIHRoZSBvcmlnaW5hbCBzb3VyY2UgbmFtZS5cbiAqIFByZWZlciBnZXRJZGVudGlmaWVyVGV4dCgpIGluc3RlYWQgaWYgcG9zc2libGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmVzY2FwZU5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gU2VlIHRoZSBwcml2YXRlIGZ1bmN0aW9uIHVuZXNjYXBlSWRlbnRpZmllciBpbiBUeXBlU2NyaXB0J3MgdXRpbGl0aWVzLnRzLlxuICBpZiAobmFtZS5tYXRjaCgvXl9fXy8pKSByZXR1cm4gbmFtZS5zdWJzdHIoMSk7XG4gIHJldHVybiBuYW1lO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV3cml0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmV3cml0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRUgsaUdBQWdGO0lBQ2hGLGlFQUFvRjtJQUNwRiwyQ0FBbUM7SUFFbkM7Ozs7T0FJRztJQUNIO1FBaUJFLGtCQUFtQixJQUFtQixFQUFVLFlBQStDO1lBQS9DLDZCQUFBLEVBQUEsZUFBNkIscUNBQWtCO1lBQTVFLFNBQUksR0FBSixJQUFJLENBQWU7WUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBbUM7WUFoQnZGLFdBQU0sR0FBYSxFQUFFLENBQUM7WUFDOUIsNkNBQTZDO1lBQ25DLGdCQUFXLEdBQW9CLEVBQUUsQ0FBQztZQUM1QyxzQ0FBc0M7WUFDOUIsYUFBUSxHQUFtQixFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFDLENBQUM7WUFDckU7OztlQUdHO1lBQ0ssV0FBTSxHQUFHLENBQUMsQ0FBQztZQUNuQjs7O2VBR0c7WUFDSywyQkFBc0IsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUdwQyxDQUFDO1FBRUQsNEJBQVMsR0FBVCxVQUFVLE1BQWU7WUFDdkIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO2FBQ3BEO1lBQ0QsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDL0IsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsMEZBQTBGO2dCQUMxRiwyRkFBMkY7Z0JBQzNGLHlGQUF5RjtnQkFDekYsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDOztvQkFDckIsS0FBaUIsSUFBQSxLQUFBLFNBQUEsRUFBRSxDQUFDLHVC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LG9DQUlDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge2lzQ2xvc3VyZUZpbGVvdmVydmlld0NvbW1lbnR9IGZyb20gJy4vZmlsZW92ZXJ2aWV3X2NvbW1lbnRfdHJhbnNmb3JtZXInO1xuaW1wb3J0IHtOT09QX1NPVVJDRV9NQVBQRVIsIFNvdXJjZU1hcHBlciwgU291cmNlUG9zaXRpb259IGZyb20gJy4vc291cmNlX21hcF91dGlscyc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICcuL3R5cGVzY3JpcHQnO1xuXG4vKipcbiAqIEEgUmV3cml0ZXIgbWFuYWdlcyBpdGVyYXRpbmcgdGhyb3VnaCBhIHRzLlNvdXJjZUZpbGUsIGNvcHlpbmcgaW5wdXRcbiAqIHRvIG91dHB1dCB3aGlsZSBsZXR0aW5nIHRoZSBzdWJjbGFzcyBwb3RlbnRpYWxseSBhbHRlciBzb21lIG5vZGVzXG4gKiBhbG9uZyB0aGUgd2F5IGJ5IGltcGxlbWVudGluZyBtYXliZVByb2Nlc3MoKS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJld3JpdGVyIHtcbiAgcHJpdmF0ZSBvdXRwdXQ6IHN0cmluZ1tdID0gW107XG4gIC8qKiBFcnJvcnMgZm91bmQgd2hpbGUgZXhhbWluaW5nIHRoZSBjb2RlLiAqL1xuICBwcm90ZWN0ZWQgZGlhZ25vc3RpY3M6IHRzLkRpYWdub3N0aWNbXSA9IFtdO1xuICAvKiogQ3VycmVudCBwb3NpdGlvbiBpbiB0aGUgb3V0cHV0LiAqL1xuICBwcml2YXRlIHBvc2l0aW9uOiBTb3VyY2VQb3NpdGlvbiA9IHtsaW5lOiAwLCBjb2x1bW46IDAsIHBvc2l0aW9uOiAwfTtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGxldmVsIG9mIHJlY3Vyc2lvbiB0aHJvdWdoIFR5cGVTY3JpcHQgTm9kZXMuICBVc2VkIGluIGZvcm1hdHRpbmcgaW50ZXJuYWwgZGVidWdcbiAgICogcHJpbnQgc3RhdGVtZW50cy5cbiAgICovXG4gIHByaXZhdGUgaW5kZW50ID0gMDtcbiAgLyoqXG4gICAqIFNraXAgZW1pdHRpbmcgYW55IGNvZGUgYmVmb3JlIHRoZSBnaXZlbiBvZmZzZXQuIEUuZy4gdXNlZCB0byBhdm9pZCBlbWl0dGluZyBAZmlsZW92ZXJ2aWV3XG4gICAqIGNvbW1lbnRzIHR3aWNlLlxuICAgKi9cbiAgcHJpdmF0ZSBza2lwQ29tbWVudHNVcFRvT2Zmc2V0ID0gLTE7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGZpbGU6IHRzLlNvdXJjZUZpbGUsIHByaXZhdGUgc291cmNlTWFwcGVyOiBTb3VyY2VNYXBwZXIgPSBOT09QX1NPVVJDRV9NQVBQRVIpIHtcbiAgfVxuXG4gIGdldE91dHB1dChwcmVmaXg/OiBzdHJpbmcpOiB7b3V0cHV0OiBzdHJpbmcsIGRpYWdub3N0aWNzOiB0cy5EaWFnbm9zdGljW119IHtcbiAgICBpZiAodGhpcy5pbmRlbnQgIT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndmlzaXQoKSBmYWlsZWQgdG8gdHJhY2sgbmVzdGluZycpO1xuICAgIH1cbiAgICBsZXQgb3V0ID0gdGhpcy5vdXRwdXQuam9pbignJyk7XG4gICAgaWYgKHByZWZpeCkge1xuICAgICAgLy8gSW5zZXJ0IHByZWZpeCBhZnRlciBhbnkgbGVhZGluZyBAZmlsZW92ZXJ2aWV3IGNvbW1lbnRzLCBzbyB0aGV5IHN0aWxsIGNvbWUgZmlyc3QgaW4gdGhlXG4gICAgICAvLyBmaWxlLiBUaGlzIG11c3Qgbm90IHVzZSBmaWxlLmdldFN0YXJ0KCkgKGNvbW1lbnQgcG9zaXRpb24gaW4gdGhlIGlucHV0IGZpbGUpLCBidXQgcmFodGVyXG4gICAgICAvLyBjaGVjayBjb21tZW50cyBpbiB0aGUgbmV3IG91dHB1dCwgYXMgdGhvc2UgKGluIHBhcnRpY3VsYXIgZm9yIGNvbW1lbnRzKSBhcmUgdW5yZWxhdGVkLlxuICAgICAgbGV0IGluc2VydGlvbklkeCA9IDA7XG4gICAgICBmb3IgKGNvbnN0IGNyIG9mIHRzLmdldExlYWRpbmdDb21tZW50UmFuZ2VzKG91dCwgMCkgfHwgW10pIHtcbiAgICAgICAgaWYgKGlzQ2xvc3VyZUZpbGVvdmVydmlld0NvbW1lbnQob3V0LnN1YnN0cmluZyhjci5wb3MsIGNyLmVuZCkpKSB7XG4gICAgICAgICAgaW5zZXJ0aW9uSWR4ID0gY3IuZW5kO1xuICAgICAgICAgIC8vIEluY2x1ZGUgc3BhY2UgKGluIHBhcnRpY3VsYXIgbGluZSBicmVha3MpIGFmdGVyIGEgQGZpbGVvdmVydmlldyBjb21tZW50OyB3aXRob3V0IHRoZVxuICAgICAgICAgIC8vIHNwYWNlIHNlcGVyYXRpbmcgaXQsIFR5cGVTY3JpcHQgbWlnaHQgZWxpZGUgdGhlIGVtaXQuXG4gICAgICAgICAgd2hpbGUgKGluc2VydGlvbklkeCA8IG91dC5sZW5ndGggJiYgb3V0W2luc2VydGlvbklkeF0ubWF0Y2goL1xccy8pKSBpbnNlcnRpb25JZHgrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgb3V0ID0gb3V0LnN1YnN0cmluZygwLCBpbnNlcnRpb25JZHgpICsgcHJlZml4ICsgb3V0LnN1YnN0cmluZyhpbnNlcnRpb25JZHgpO1xuICAgICAgdGhpcy5zb3VyY2VNYXBwZXIuc2hpZnRCeU9mZnNldChwcmVmaXgubGVuZ3RoKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIG91dHB1dDogb3V0LFxuICAgICAgZGlhZ25vc3RpY3M6IHRoaXMuZGlhZ25vc3RpY3MsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiB2aXNpdCB0cmF2ZXJzZXMgYSBOb2RlLCByZWN1cnNpdmVseSB3cml0aW5nIGFsbCBub2RlcyBub3QgaGFuZGxlZCBieSB0aGlzLm1heWJlUHJvY2Vzcy5cbiAgICovXG4gIHZpc2l0KG5vZGU6IHRzLk5vZGUpIHtcbiAgICAvLyB0aGlzLmxvZ1dpdGhJbmRlbnQoJ25vZGU6ICcgKyB0cy5TeW50YXhLaW5kW25vZGUua2luZF0pO1xuICAgIHRoaXMuaW5kZW50Kys7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghdGhpcy5tYXliZVByb2Nlc3Mobm9kZSkpIHtcbiAgICAgICAgdGhpcy53cml0ZU5vZGUobm9kZSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCFlLm1lc3NhZ2UpIGUubWVzc2FnZSA9ICdVbmhhbmRsZWQgZXJyb3IgaW4gdHNpY2tsZSc7XG4gICAgICBlLm1lc3NhZ2UgKz0gYFxcbiBhdCAke3RzLlN5bnRheEtpbmRbbm9kZS5raW5kXX0gaW4gJHt0aGlzLmZpbGUuZmlsZU5hbWV9OmA7XG4gICAgICBjb25zdCB7bGluZSwgY2hhcmFjdGVyfSA9IHRoaXMuZmlsZS5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihub2RlLmdldFN0YXJ0KCkpO1xuICAgICAgZS5tZXNzYWdlICs9IGAke2xpbmUgKyAxfToke2NoYXJhY3RlciArIDF9YDtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIHRoaXMuaW5kZW50LS07XG4gIH1cblxuICAvKipcbiAgICogbWF5YmVQcm9jZXNzIGxldHMgc3ViY2xhc3NlcyBvcHRpb25hbGx5IHByb2Nlc3NlcyBhIG5vZGUuXG4gICAqXG4gICAqIEByZXR1cm4gVHJ1ZSBpZiB0aGUgbm9kZSBoYXMgYmVlbiBoYW5kbGVkIGFuZCBkb2Vzbid0IG5lZWQgdG8gYmUgdHJhdmVyc2VkO1xuICAgKiAgICBmYWxzZSB0byBoYXZlIHRoZSBub2RlIHdyaXR0ZW4gYW5kIGl0cyBjaGlsZHJlbiByZWN1cnNpdmVseSB2aXNpdGVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIG1heWJlUHJvY2Vzcyhub2RlOiB0cy5Ob2RlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqIHdyaXRlTm9kZSB3cml0ZXMgYSB0cy5Ob2RlLCBjYWxsaW5nIHRoaXMudmlzaXQoKSBvbiBpdHMgY2hpbGRyZW4uICovXG4gIHdyaXRlTm9kZShub2RlOiB0cy5Ob2RlLCBza2lwQ29tbWVudHMgPSBmYWxzZSwgbmV3TGluZUlmQ29tbWVudHNTdHJpcHBlZCA9IHRydWUpIHtcbiAgICBsZXQgcG9zID0gbm9kZS5nZXRGdWxsU3RhcnQoKTtcbiAgICBpZiAoc2tpcENvbW1lbnRzKSB7XG4gICAgICAvLyBUbyBza2lwIGNvbW1lbnRzLCB3ZSBza2lwIGFsbCB3aGl0ZXNwYWNlL2NvbW1lbnRzIHByZWNlZGluZ1xuICAgICAgLy8gdGhlIG5vZGUuICBCdXQgaWYgdGhlcmUgd2FzIGFueXRoaW5nIHNraXBwZWQgd2Ugc2hvdWxkIGVtaXRcbiAgICAgIC8vIGEgbmV3bGluZSBpbiBpdHMgcGxhY2Ugc28gdGhhdCB0aGUgbm9kZSByZW1haW5zIHNlcGFyYXRlZFxuICAgICAgLy8gZnJvbSB0aGUgcHJldmlvdXMgbm9kZS4gIFRPRE86IGRvbid0IHNraXAgYW55dGhpbmcgaGVyZSBpZlxuICAgICAgLy8gdGhlcmUgd2Fzbid0IGFueSBjb21tZW50LlxuICAgICAgaWYgKG5ld0xpbmVJZkNvbW1lbnRzU3RyaXBwZWQgJiYgbm9kZS5nZXRGdWxsU3RhcnQoKSA8IG5vZGUuZ2V0U3RhcnQoKSkge1xuICAgICAgICB0aGlzLmVtaXQoJ1xcbicpO1xuICAgICAgfVxuICAgICAgcG9zID0gbm9kZS5nZXRTdGFydCgpO1xuICAgIH1cbiAgICB0aGlzLndyaXRlTm9kZUZyb20obm9kZSwgcG9zKTtcbiAgfVxuXG4gIHdyaXRlTm9kZUZyb20obm9kZTogdHMuTm9kZSwgcG9zOiBudW1iZXIsIGVuZCA9IG5vZGUuZ2V0RW5kKCkpIHtcbiAgICBpZiAoZW5kIDw9IHRoaXMuc2tpcENvbW1lbnRzVXBUb09mZnNldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvbGRTa2lwQ29tbWVudHNVcFRvT2Zmc2V0ID0gdGhpcy5za2lwQ29tbWVudHNVcFRvT2Zmc2V0O1xuICAgIHRoaXMuc2tpcENvbW1lbnRzVXBUb09mZnNldCA9IE1hdGgubWF4KHRoaXMuc2tpcENvbW1lbnRzVXBUb09mZnNldCwgcG9zKTtcbiAgICB0cy5mb3JFYWNoQ2hpbGQobm9kZSwgY2hpbGQgPT4ge1xuICAgICAgdGhpcy53cml0ZVJhbmdlKG5vZGUsIHBvcywgY2hpbGQuZ2V0RnVsbFN0YXJ0KCkpO1xuICAgICAgdGhpcy52aXNpdChjaGlsZCk7XG4gICAgICBwb3MgPSBjaGlsZC5nZXRFbmQoKTtcbiAgICB9KTtcbiAgICB0aGlzLndyaXRlUmFuZ2Uobm9kZSwgcG9zLCBlbmQpO1xuICAgIHRoaXMuc2tpcENvbW1lbnRzVXBUb09mZnNldCA9IG9sZFNraXBDb21tZW50c1VwVG9PZmZzZXQ7XG4gIH1cblxuICAvKipcbiAgICogV3JpdGVzIGFsbCBsZWFkaW5nIHRyaXZpYSAod2hpdGVzcGFjZSBvciBjb21tZW50cykgb24gbm9kZSwgb3IgYWxsIHRyaXZpYSB1cCB0byB0aGUgZ2l2ZW5cbiAgICogcG9zaXRpb24uIEFsc28gbWFya3MgdGhvc2UgdHJpdmlhIGFzIFwiYWxyZWFkeSBlbWl0dGVkXCIgYnkgc2hpZnRpbmcgdGhlIHNraXBDb21tZW50c1VwVG8gbWFya2VyLlxuICAgKi9cbiAgd3JpdGVMZWFkaW5nVHJpdmlhKG5vZGU6IHRzLk5vZGUsIHVwVG8gPSAwKSB7XG4gICAgY29uc3QgdXBUb09mZnNldCA9IHVwVG8gfHwgbm9kZS5nZXRTdGFydCgpO1xuICAgIHRoaXMud3JpdGVSYW5nZShub2RlLCBub2RlLmdldEZ1bGxTdGFydCgpLCB1cFRvIHx8IG5vZGUuZ2V0U3RhcnQoKSk7XG4gICAgdGhpcy5za2lwQ29tbWVudHNVcFRvT2Zmc2V0ID0gdXBUb09mZnNldDtcbiAgfVxuXG4gIGFkZFNvdXJjZU1hcHBpbmcobm9kZTogdHMuTm9kZSkge1xuICAgIHRoaXMud3JpdGVSYW5nZShub2RlLCBub2RlLmdldEVuZCgpLCBub2RlLmdldEVuZCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZSBhIHNwYW4gb2YgdGhlIGlucHV0IGZpbGUgYXMgZXhwcmVzc2VkIGJ5IGFic29sdXRlIG9mZnNldHMuXG4gICAqIFRoZXNlIG9mZnNldHMgYXJlIGZvdW5kIGluIGF0dHJpYnV0ZXMgbGlrZSBub2RlLmdldEZ1bGxTdGFydCgpIGFuZFxuICAgKiBub2RlLmdldEVuZCgpLlxuICAgKi9cbiAgd3JpdGVSYW5nZShub2RlOiB0cy5Ob2RlLCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpIHtcbiAgICBjb25zdCBmdWxsU3RhcnQgPSBub2RlLmdldEZ1bGxTdGFydCgpO1xuICAgIGNvbnN0IHRleHRTdGFydCA9IG5vZGUuZ2V0U3RhcnQoKTtcbiAgICBpZiAoZnJvbSA+PSBmdWxsU3RhcnQgJiYgZnJvbSA8IHRleHRTdGFydCkge1xuICAgICAgZnJvbSA9IE1hdGgubWF4KGZyb20sIHRoaXMuc2tpcENvbW1lbnRzVXBUb09mZnNldCk7XG4gICAgfVxuICAgIC8vIEFkZCBhIHNvdXJjZSBtYXBwaW5nLiB3cml0ZVJhbmdlKGZyb20sIHRvKSBhbHdheXMgY29ycmVzcG9uZHMgdG9cbiAgICAvLyBvcmlnaW5hbCBzb3VyY2UgY29kZSwgc28gYWRkIGEgbWFwcGluZyBhdCB0aGUgY3VycmVudCBsb2NhdGlvbiB0aGF0XG4gICAgLy8gcG9pbnRzIGJhY2sgdG8gdGhlIGxvY2F0aW9uIGF0IGBmcm9tYC4gVGhlIGFkZGl0aW9uYWwgY29kZSBnZW5lcmF0ZWRcbiAgICAvLyBieSB0c2lja2xlIHdpbGwgdGhlbiBiZSBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIGxhc3QgbWFwcGVkIGNvZGVcbiAgICAvLyBzZWN0aW9uIHByZWNlZGluZyBpdC4gVGhhdCdzIGFyZ3VhYmx5IGluY29ycmVjdCAoZS5nLiBmb3IgdGhlIGZha2VcbiAgICAvLyBtZXRob2RzIGRlZmluaW5nIHByb3BlcnRpZXMpLCBidXQgaXMgZ29vZCBlbm91Z2ggZm9yIHN0YWNrIHRyYWNlcy5cbiAgICBjb25zdCBwb3MgPSB0aGlzLmZpbGUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oZnJvbSk7XG4gICAgdGhpcy5zb3VyY2VNYXBwZXIuYWRkTWFwcGluZyhcbiAgICAgICAgbm9kZSwge2xpbmU6IHBvcy5saW5lLCBjb2x1bW46IHBvcy5jaGFyYWN0ZXIsIHBvc2l0aW9uOiBmcm9tfSwgdGhpcy5wb3NpdGlvbiwgdG8gLSBmcm9tKTtcbiAgICAvLyBnZXRTb3VyY2VGaWxlKCkuZ2V0VGV4dCgpIGlzIHdyb25nIGhlcmUgYmVjYXVzZSBpdCBoYXMgdGhlIHRleHQgb2ZcbiAgICAvLyB0aGUgU291cmNlRmlsZSBub2RlIG9mIHRoZSBBU1QsIHdoaWNoIGRvZXNuJ3QgY29udGFpbiB0aGUgY29tbWVudHNcbiAgICAvLyBwcmVjZWRpbmcgdGhhdCBub2RlLiAgU2VtYW50aWNhbGx5IHRoZXNlIHJhbmdlcyBhcmUganVzdCBvZmZzZXRzXG4gICAgLy8gaW50byB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGUgdGV4dCwgc28gc2xpY2UgZnJvbSB0aGF0LlxuICAgIGNvbnN0IHRleHQgPSB0aGlzLmZpbGUudGV4dC5zbGljZShmcm9tLCB0byk7XG4gICAgaWYgKHRleHQpIHtcbiAgICAgIHRoaXMuZW1pdCh0ZXh0KTtcbiAgICB9XG4gIH1cblxuICBlbWl0KHN0cjogc3RyaW5nKSB7XG4gICAgdGhpcy5vdXRwdXQucHVzaChzdHIpO1xuICAgIGZvciAoY29uc3QgYyBvZiBzdHIpIHtcbiAgICAgIHRoaXMucG9zaXRpb24uY29sdW1uKys7XG4gICAgICBpZiAoYyA9PT0gJ1xcbicpIHtcbiAgICAgICAgdGhpcy5wb3NpdGlvbi5saW5lKys7XG4gICAgICAgIHRoaXMucG9zaXRpb24uY29sdW1uID0gMDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5wb3NpdGlvbi5wb3NpdGlvbiArPSBzdHIubGVuZ3RoO1xuICB9XG5cbiAgLyoqIFJlbW92ZXMgY29tbWVudCBtZXRhY2hhcmFjdGVycyBmcm9tIGEgc3RyaW5nLCB0byBtYWtlIGl0IHNhZmUgdG8gZW1iZWQgaW4gYSBjb21tZW50LiAqL1xuICBlc2NhcGVGb3JDb21tZW50KHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1xcL1xcKi9nLCAnX18nKS5yZXBsYWNlKC9cXCpcXC8vZywgJ19fJyk7XG4gIH1cblxuICAvKiB0c2xpbnQ6ZGlzYWJsZTogbm8tdW51c2VkLXZhcmlhYmxlICovXG4gIGxvZ1dpdGhJbmRlbnQobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgLyogdHNsaW50OmVuYWJsZTogbm8tdW51c2VkLXZhcmlhYmxlICovXG4gICAgY29uc3QgcHJlZml4ID0gbmV3IEFycmF5KHRoaXMuaW5kZW50ICsgMSkuam9pbignfCAnKTtcbiAgICBjb25zb2xlLmxvZyhwcmVmaXggKyBtZXNzYWdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9kdWNlcyBhIGNvbXBpbGVyIGVycm9yIHRoYXQgcmVmZXJlbmNlcyB0aGUgTm9kZSdzIGtpbmQuICBUaGlzIGlzIHVzZWZ1bCBmb3IgdGhlIFwiZWxzZVwiXG4gICAqIGJyYW5jaCBvZiBjb2RlIHRoYXQgaXMgYXR0ZW1wdGluZyB0byBoYW5kbGUgYWxsIHBvc3NpYmxlIGlucHV0IE5vZGUgdHlwZXMsIHRvIGVuc3VyZSBhbGwgY2FzZXNcbiAgICogY292ZXJlZC5cbiAgICovXG4gIGVycm9yVW5pbXBsZW1lbnRlZEtpbmQobm9kZTogdHMuTm9kZSwgd2hlcmU6IHN0cmluZykge1xuICAgIHRoaXMuZXJyb3Iobm9kZSwgYCR7dHMuU3ludGF4S2luZFtub2RlLmtpbmRdfSBub3QgaW1wbGVtZW50ZWQgaW4gJHt3aGVyZX1gKTtcbiAgfVxuXG4gIGVycm9yKG5vZGU6IHRzLk5vZGUsIG1lc3NhZ2VUZXh0OiBzdHJpbmcpIHtcbiAgICB0aGlzLmRpYWdub3N0aWNzLnB1c2goe1xuICAgICAgZmlsZTogbm9kZS5nZXRTb3VyY2VGaWxlKCksXG4gICAgICBzdGFydDogbm9kZS5nZXRTdGFydCgpLFxuICAgICAgbGVuZ3RoOiBub2RlLmdldEVuZCgpIC0gbm9kZS5nZXRTdGFydCgpLFxuICAgICAgbWVzc2FnZVRleHQsXG4gICAgICBjYXRlZ29yeTogdHMuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yLFxuICAgICAgY29kZTogMCxcbiAgICB9KTtcbiAgfVxufVxuXG4vKiogUmV0dXJucyB0aGUgc3RyaW5nIGNvbnRlbnRzIG9mIGEgdHMuSWRlbnRpZmllci4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJZGVudGlmaWVyVGV4dChpZGVudGlmaWVyOiB0cy5JZGVudGlmaWVyKTogc3RyaW5nIHtcbiAgLy8gTk9URTogdGhlICd0ZXh0JyBwcm9wZXJ0eSBvbiBhbiBJZGVudGlmaWVyIG1heSBiZSBlc2NhcGVkIGlmIGl0IHN0YXJ0c1xuICAvLyB3aXRoICdfXycsIHNvIGp1c3QgdXNlIGdldFRleHQoKS5cbiAgcmV0dXJuIGlkZW50aWZpZXIuZ2V0VGV4dCgpO1xufVxuXG4vKiogUmV0dXJucyBhIGRvdC1qb2luZWQgcXVhbGlmaWVkIG5hbWUgKGZvby5iYXIuQmF6KS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbnRpdHlOYW1lVGV4dChuYW1lOiB0cy5FbnRpdHlOYW1lKTogc3RyaW5nIHtcbiAgaWYgKHRzLmlzSWRlbnRpZmllcihuYW1lKSkge1xuICAgIHJldHVybiBnZXRJZGVudGlmaWVyVGV4dChuYW1lKTtcbiAgfVxuICByZXR1cm4gZ2V0RW50aXR5TmFtZVRleHQobmFtZS5sZWZ0KSArICcuJyArIGdldElkZW50aWZpZXJUZXh0KG5hbWUucmlnaHQpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIGVzY2FwZWQgVHlwZVNjcmlwdCBuYW1lIGludG8gdGhlIG9yaWdpbmFsIHNvdXJjZSBuYW1lLlxuICogUHJlZmVyIGdldElkZW50aWZpZXJUZXh0KCkgaW5zdGVhZCBpZiBwb3NzaWJsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuZXNjYXBlTmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBTZWUgdGhlIHByaXZhdGUgZnVuY3Rpb24gdW5lc2NhcGVJZGVudGlmaWVyIGluIFR5cGVTY3JpcHQncyB1dGlsaXRpZXMudHMuXG4gIGlmIChuYW1lLm1hdGNoKC9eX19fLykpIHJldHVybiBuYW1lLnN1YnN0cigxKTtcbiAgcmV0dXJuIG5hbWU7XG59XG4iXX0=

@@ -124,2 +124,2 @@ /**

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlX21hcF91dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zb3VyY2VfbWFwX3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7O0lBRUgseUNBQStFO0lBMEIvRTs7OztPQUlHO0lBQ0g7UUFDRSxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsMERBQTBELEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVELGlDQUF3QyxNQUFjO1FBQ3BELE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUZELDBEQUVDO0lBRUQsaUNBQXdDLE1BQWM7UUFDcEQsSUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLENBQUM7UUFDdEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFIRCwwREFHQztJQUVELGdDQUF1QyxNQUFjO1FBQ25ELElBQU0sb0JBQW9CLEdBQUcsdUJBQXVCLEVBQUUsQ0FBQztRQUN2RCxJQUFJLGNBQWMsR0FBeUIsSUFBSSxDQUFDO1FBQ2hELElBQUksTUFBTSxHQUF5QixJQUFJLENBQUM7UUFDeEMsNERBQTREO1FBQzVELDREQUE0RDtRQUM1RCwyREFBMkQ7UUFDM0QsbUNBQW1DO1FBQ25DLEdBQUcsQ0FBQztZQUNGLGNBQWMsR0FBRyxNQUFNLENBQUM7WUFDeEIsTUFBTSxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxDQUFDLFFBQVEsTUFBTSxLQUFLLElBQUksRUFBRTtRQUMxQixJQUFNLGdCQUFnQixHQUFHLGNBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQWRELHdEQWNDO0lBRUQsK0JBQXNDLE1BQWM7UUFDbEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRkQsc0RBRUM7SUFFRDs7O09BR0c7SUFDSCw0QkFBbUMsTUFBYyxFQUFFLFNBQWlCO1FBQ2xFLElBQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNFLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FDakIsdUJBQXVCLEVBQUUsRUFDekIsdURBQXFELGdCQUFrQixDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sTUFBTSxDQUFJLE1BQU0sNERBQXVELGdCQUFrQixDQUFDO1FBQzVGLENBQUM7SUFDSCxDQUFDO0lBVEQsZ0RBU0M7SUFFRCx3QkFBK0IsSUFBWSxFQUFFLFFBQWlCLEVBQUUsVUFBbUI7UUFDakYsSUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQWlCLENBQUM7UUFDdEQsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUNmLFlBQVksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNiLFlBQVksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1FBQy9CLENBQUM7UUFDRCxNQUFNLENBQUMsWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFURCx3Q0FTQztJQUVELHNDQUE2QyxpQkFBb0M7UUFFL0UsTUFBTSxDQUFDLCtCQUFrQixDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFIRCxvRUFHQztJQUVEOzs7OztPQUtHO0lBQ0gsc0NBQ0ksa0JBQXNDLEVBQUUsUUFBaUIsRUFDekQsVUFBbUI7UUFDckIsSUFBTSxZQUFZLEdBQUksa0JBQStDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDL0UsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUNmLFlBQVksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNiLFlBQVksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1FBQy9CLENBQUM7UUFDRCxNQUFNLENBQUMsSUFBSSw4QkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBWEQsb0VBV0M7SUFFRCxpQ0FBd0MsYUFBcUI7UUFDM0QsMkVBQTJFO1FBQzNFLDJFQUEyRTtRQUMzRSwyRUFBMkU7UUFDM0UsMkVBQTJFO1FBQzNFLEVBQUU7UUFDRix3RkFBd0Y7UUFDeEYsK0VBQStFO1FBQy9FLGtDQUFrQztRQUNsQyxNQUFNLENBQUMsSUFBSSw4QkFBaUIsQ0FBQyxhQUFvQixDQUEyQixDQUFDO0lBQy9FLENBQUM7SUFWRCwwREFVQztJQUVELGtDQUF5QyxhQUFxQjtRQUM1RCxNQUFNLENBQUMsK0JBQWtCLENBQUMsYUFBYSxDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUZELDREQUVDO0lBZ0NZLFFBQUEsa0JBQWtCLEdBQWlCO1FBQzlDLGFBQWEsZ0JBQWUsQ0FBQztRQUM3QixVQUFVLGdCQUFlLENBQUM7S0FDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtSYXdTb3VyY2VNYXAsIFNvdXJjZU1hcENvbnN1bWVyLCBTb3VyY2VNYXBHZW5lcmF0b3J9IGZyb20gJ3NvdXJjZS1tYXAnO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAnLi90eXBlc2NyaXB0JztcblxuLyoqXG4gKiBUaGlzIGludGVyZmFjZSB3YXMgZGVmaW5lZCBpbiBAdHlwZXMvc291cmNlLW1hcCBidXQgaXMgYWJzZW50IGZyb20gdGhlIHR5cGluZ3NcbiAqIGRpc3RyaWJ1dGVkIGluIHRoZSBzb3VyY2UtbWFwIHBhY2thZ2UuXG4gKiBDb3BpZWQgZnJvbSBodHRwczovL3VucGtnLmNvbS9AdHlwZXMvc291cmNlLW1hcEAwLjUuMi9pbmRleC5kLnRzXG4gKiBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvdHNpY2tsZS9pc3N1ZXMvNzUwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzaWNTb3VyY2VNYXBDb25zdW1lciBleHRlbmRzIFNvdXJjZU1hcENvbnN1bWVyIHtcbiAgZmlsZTogc3RyaW5nO1xuICBzb3VyY2VSb290OiBzdHJpbmc7XG4gIHNvdXJjZXM6IHN0cmluZ1tdO1xuICBzb3VyY2VzQ29udGVudDogc3RyaW5nW107XG59XG5cbi8qKlxuICogVGhlIHRvSlNPTiBtZXRob2QgaXMgaW50cm9kdWNlZCBpblxuICogaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvc291cmNlLW1hcC9jb21taXQvN2MwNmFjODNkZDZkNzVlNjVmNzE3MjcxODRhMmQ4NjMwYTE1YmY1OCNkaWZmLTc5NDVmNmJiNDQ1ZDk1Njc5NDU2NGUwOThlZjIwYmIzXG4gKiBIb3dldmVyIHRoZXJlIGlzIGEgYnJlYWtpbmcgY2hhbmdlIGluIDAuNy5cbiAqIHNlZSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci90c2lja2xlL2lzc3Vlcy83NTBcbiAqL1xuZXhwb3J0IHR5cGUgU291cmNlTWFwR2VuZXJhdG9yVG9Kc29uID0gU291cmNlTWFwR2VuZXJhdG9yJntcbiAgdG9KU09OKCk6IFJhd1NvdXJjZU1hcDtcbn07XG5cbi8qKlxuICogUmV0dXJuIGEgbmV3IFJlZ0V4cCBvYmplY3QgZXZlcnkgdGltZSB3ZSB3YW50IG9uZSBiZWNhdXNlIHRoZVxuICogUmVnRXhwIG9iamVjdCBoYXMgaW50ZXJuYWwgc3RhdGUgdGhhdCB3ZSBkb24ndCB3YW50IHRvIHBlcnNpc3RcbiAqIGJldHdlZW4gZGlmZmVyZW50IGxvZ2ljYWwgdXNlcy5cbiAqL1xuZnVuY3Rpb24gZ2V0SW5saW5lU291cmNlTWFwUmVnZXgoKTogUmVnRXhwIHtcbiAgcmV0dXJuIG5ldyBSZWdFeHAoJ14vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LCguKikkJywgJ21nJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb250YWluc0lubGluZVNvdXJjZU1hcChzb3VyY2U6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0SW5saW5lU291cmNlTWFwQ291bnQoc291cmNlKSA+IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbmxpbmVTb3VyY2VNYXBDb3VudChzb3VyY2U6IHN0cmluZyk6IG51bWJlciB7XG4gIGNvbnN0IG1hdGNoID0gc291cmNlLm1hdGNoKGdldElubGluZVNvdXJjZU1hcFJlZ2V4KCkpO1xuICByZXR1cm4gbWF0Y2ggPyBtYXRjaC5sZW5ndGggOiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdElubGluZVNvdXJjZU1hcChzb3VyY2U6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGlubGluZVNvdXJjZU1hcFJlZ2V4ID0gZ2V0SW5saW5lU291cmNlTWFwUmVnZXgoKTtcbiAgbGV0IHByZXZpb3VzUmVzdWx0OiBSZWdFeHBFeGVjQXJyYXl8bnVsbCA9IG51bGw7XG4gIGxldCByZXN1bHQ6IFJlZ0V4cEV4ZWNBcnJheXxudWxsID0gbnVsbDtcbiAgLy8gV2Ugd2FudCB0byBleHRyYWN0IHRoZSBsYXN0IHNvdXJjZSBtYXAgaW4gdGhlIHNvdXJjZSBmaWxlXG4gIC8vIHNpbmNlIHRoYXQncyBwcm9iYWJseSB0aGUgbW9zdCByZWNlbnQgb25lIGFkZGVkLiAgV2Uga2VlcFxuICAvLyBtYXRjaGluZyBhZ2FpbnN0IHRoZSBzb3VyY2UgdW50aWwgd2UgZG9uJ3QgZ2V0IGEgcmVzdWx0LFxuICAvLyB0aGVuIHdlIHVzZSB0aGUgcHJldmlvdXMgcmVzdWx0LlxuICBkbyB7XG4gICAgcHJldmlvdXNSZXN1bHQgPSByZXN1bHQ7XG4gICAgcmVzdWx0ID0gaW5saW5lU291cmNlTWFwUmVnZXguZXhlYyhzb3VyY2UpO1xuICB9IHdoaWxlIChyZXN1bHQgIT09IG51bGwpO1xuICBjb25zdCBiYXNlNjRFbmNvZGVkTWFwID0gcHJldmlvdXNSZXN1bHQhWzFdO1xuICByZXR1cm4gQnVmZmVyLmZyb20oYmFzZTY0RW5jb2RlZE1hcCwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCd1dGY4Jyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVJbmxpbmVTb3VyY2VNYXAoc291cmNlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc291cmNlLnJlcGxhY2UoZ2V0SW5saW5lU291cmNlTWFwUmVnZXgoKSwgJycpO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIHNvdXJjZSBtYXAgaW5saW5lIGluIHRoZSBmaWxlLiAgSWYgdGhlcmUncyBhbiBleGlzdGluZyBpbmxpbmUgc291cmNlXG4gKiBtYXAsIGl0IGNsb2JiZXJzIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0SW5saW5lU291cmNlTWFwKHNvdXJjZTogc3RyaW5nLCBzb3VyY2VNYXA6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGVuY29kZWRTb3VyY2VNYXAgPSBCdWZmZXIuZnJvbShzb3VyY2VNYXAsICd1dGY4JykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICBpZiAoY29udGFpbnNJbmxpbmVTb3VyY2VNYXAoc291cmNlKSkge1xuICAgIHJldHVybiBzb3VyY2UucmVwbGFjZShcbiAgICAgICAgZ2V0SW5saW5lU291cmNlTWFwUmVnZXgoKSxcbiAgICAgICAgYC8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsJHtlbmNvZGVkU291cmNlTWFwfWApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBgJHtzb3VyY2V9XFxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCwke2VuY29kZWRTb3VyY2VNYXB9YDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTb3VyY2VNYXAodGV4dDogc3RyaW5nLCBmaWxlTmFtZT86IHN0cmluZywgc291cmNlTmFtZT86IHN0cmluZyk6IFJhd1NvdXJjZU1hcCB7XG4gIGNvbnN0IHJhd1NvdXJjZU1hcCA9IEpTT04ucGFyc2UodGV4dCkgYXMgUmF3U291cmNlTWFwO1xuICBpZiAoc291cmNlTmFtZSkge1xuICAgIHJhd1NvdXJjZU1hcC5zb3VyY2VzID0gW3NvdXJjZU5hbWVdO1xuICB9XG4gIGlmIChmaWxlTmFtZSkge1xuICAgIHJhd1NvdXJjZU1hcC5maWxlID0gZmlsZU5hbWU7XG4gIH1cbiAgcmV0dXJuIHJhd1NvdXJjZU1hcDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvdXJjZU1hcENvbnN1bWVyVG9HZW5lcmF0b3Ioc291cmNlTWFwQ29uc3VtZXI6IFNvdXJjZU1hcENvbnN1bWVyKTpcbiAgICBTb3VyY2VNYXBHZW5lcmF0b3Ige1xuICByZXR1cm4gU291cmNlTWFwR2VuZXJhdG9yLmZyb21Tb3VyY2VNYXAoc291cmNlTWFwQ29uc3VtZXIpO1xufVxuXG4vKipcbiAqIFRzYyBpZGVudGlmaWVzIHNvdXJjZSBmaWxlcyBieSB0aGVpciByZWxhdGl2ZSBwYXRoIHRvIHRoZSBvdXRwdXQgZmlsZS4gIFNpbmNlXG4gKiB0aGVyZSdzIG5vIGVhc3kgd2F5IHRvIGlkZW50aWZ5IHRoZXNlIHJlbGF0aXZlIHBhdGhzIHdoZW4gdHNpY2tsZSBnZW5lcmF0ZXMgaXRzXG4gKiBvd24gc291cmNlIG1hcHMsIHdlIHBhdGNoIHRoZW0gd2l0aCB0aGUgZmlsZSBuYW1lIGZyb20gdGhlIHRzYyBzb3VyY2UgbWFwc1xuICogYmVmb3JlIGNvbXBvc2luZyB0aGVtLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc291cmNlTWFwR2VuZXJhdG9yVG9Db25zdW1lcihcbiAgICBzb3VyY2VNYXBHZW5lcmF0b3I6IFNvdXJjZU1hcEdlbmVyYXRvciwgZmlsZU5hbWU/OiBzdHJpbmcsXG4gICAgc291cmNlTmFtZT86IHN0cmluZyk6IFNvdXJjZU1hcENvbnN1bWVyIHtcbiAgY29uc3QgcmF3U291cmNlTWFwID0gKHNvdXJjZU1hcEdlbmVyYXRvciBhcyBTb3VyY2VNYXBHZW5lcmF0b3JUb0pzb24pLnRvSlNPTigpO1xuICBpZiAoc291cmNlTmFtZSkge1xuICAgIHJhd1NvdXJjZU1hcC5zb3VyY2VzID0gW3NvdXJjZU5hbWVdO1xuICB9XG4gIGlmIChmaWxlTmFtZSkge1xuICAgIHJhd1NvdXJjZU1hcC5maWxlID0gZmlsZU5hbWU7XG4gIH1cbiAgcmV0dXJuIG5ldyBTb3VyY2VNYXBDb25zdW1lcihyYXdTb3VyY2VNYXApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc291cmNlTWFwVGV4dFRvQ29uc3VtZXIoc291cmNlTWFwVGV4dDogc3RyaW5nKTogQmFzaWNTb3VyY2VNYXBDb25zdW1lciB7XG4gIC8vIHRoZSBTb3VyY2VNYXBDb25zdW1lciBjb25zdHJ1Y3RvciByZXR1cm5zIGEgQmFzaWNTb3VyY2VNYXBDb25zdW1lciBvciBhblxuICAvLyBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIgZGVwZW5kaW5nIG9uIGlmIHlvdSBwYXNzIGluIGEgUmF3U291cmNlTWFwIG9yIGFcbiAgLy8gUmF3SW5kZXhNYXAgb3IgdGhlIHN0cmluZyBqc29uIG9mIGVpdGhlci4gIEluIHRoaXMgY2FzZSB3ZSdyZSBwYXNzaW5nIGluXG4gIC8vIHRoZSBzdHJpbmcgZm9yIGEgUmF3U291cmNlTWFwLCBzbyB3ZSBhbHdheXMgZ2V0IGEgQmFzaWNTb3VyY2VNYXBDb25zdW1lclxuICAvL1xuICAvLyBOb3RlLCB0aGUgdHlwaW5ncyBkaXN0cmlidXRlZCB3aXRoIHRoZSBsaWJyYXJ5IGFyZSBtaXNzaW5nIHRoaXMgY29uc3RydWN0b3Igb3ZlcmxvYWQsXG4gIC8vIHNvIHdlIG11c3QgdHlwZSBpdCBhcyBhbnksIHNlZSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci90c2lja2xlL2lzc3Vlcy83NTBcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLWFueVxuICByZXR1cm4gbmV3IFNvdXJjZU1hcENvbnN1bWVyKHNvdXJjZU1hcFRleHQgYXMgYW55KSBhcyBCYXNpY1NvdXJjZU1hcENvbnN1bWVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc291cmNlTWFwVGV4dFRvR2VuZXJhdG9yKHNvdXJjZU1hcFRleHQ6IHN0cmluZyk6IFNvdXJjZU1hcEdlbmVyYXRvciB7XG4gIHJldHVybiBTb3VyY2VNYXBHZW5lcmF0b3IuZnJvbVNvdXJjZU1hcChzb3VyY2VNYXBUZXh0VG9Db25zdW1lcihzb3VyY2VNYXBUZXh0KSk7XG59XG5cbi8qKlxuICogQSBwb3NpdGlvbiBpbiBhIHNvdXJjZSBtYXAuIEFsbCBvZmZzZXRzIGFyZSB6ZXJvLWJhc2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZVBvc2l0aW9uIHtcbiAgLyoqIDAgYmFzZWQgKi9cbiAgY29sdW1uOiBudW1iZXI7XG4gIC8qKiAwIGJhc2VkICovXG4gIGxpbmU6IG51bWJlcjtcbiAgLyoqIDAgYmFzZWQgZnVsbCBvZmZzZXQgaW4gdGhlIGZpbGUuICovXG4gIHBvc2l0aW9uOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlTWFwcGVyIHtcbiAgLyoqXG4gICAqIExvZ2ljYWxseSBzaGlmdCBhbGwgc291cmNlIHBvc2l0aW9ucyBieSBgb2Zmc2V0YC5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgaXMgdXNlZnVsIGlmIGNvZGUgaGFzIHRvIHByZXBlbmQgYWRkaXRpb25hbCB0ZXh0IHRvIHRoZSBnZW5lcmF0ZWQgb3V0cHV0IGFmdGVyXG4gICAqIHNvdXJjZSBtYXBwaW5ncyBoYXZlIGFscmVhZHkgYmVlbiBnZW5lcmF0ZWQuIFRoZSBzb3VyY2UgbWFwcyBhcmUgdGhlbiB0cmFuc3BhcmVudGx5IGFkanVzdGVkXG4gICAqIGR1cmluZyBUeXBlU2NyaXB0IG91dHB1dCBnZW5lcmF0aW9uLlxuICAgKi9cbiAgc2hpZnRCeU9mZnNldChvZmZzZXQ6IG51bWJlcik6IHZvaWQ7XG4gIC8qKlxuICAgKiBBZGRzIGEgbWFwcGluZyBmcm9tIGBvcmlnaW5hbE5vZGVgIGluIGBvcmlnaW5hbGAgcG9zaXRpb24gdG8gaXRzIG5ldyBsb2NhdGlvbiBpbiB0aGUgb3V0cHV0LFxuICAgKiBzcGFubmluZyBmcm9tIGBnZW5lcmF0ZWRgIChhbiBvZmZzZXQgaW4gdGhlIGZpbGUpIGZvciBgbGVuZ3RoYCBjaGFyYWN0ZXJzLlxuICAgKi9cbiAgYWRkTWFwcGluZyhcbiAgICAgIG9yaWdpbmFsTm9kZTogdHMuTm9kZSwgb3JpZ2luYWw6IFNvdXJjZVBvc2l0aW9uLCBnZW5lcmF0ZWQ6IFNvdXJjZVBvc2l0aW9uLFxuICAgICAgbGVuZ3RoOiBudW1iZXIpOiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgTk9PUF9TT1VSQ0VfTUFQUEVSOiBTb3VyY2VNYXBwZXIgPSB7XG4gIHNoaWZ0QnlPZmZzZXQoKSB7Lyogbm8tb3AgKi99LFxuICBhZGRNYXBwaW5nKCkgey8qIG5vLW9wICovfSxcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlX21hcF91dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zb3VyY2VfbWFwX3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7O0lBRUgseUNBQStFO0lBMEIvRTs7OztPQUlHO0lBQ0g7UUFDRSxPQUFPLElBQUksTUFBTSxDQUFDLDBEQUEwRCxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxpQ0FBd0MsTUFBYztRQUNwRCxPQUFPLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRkQsMERBRUM7SUFFRCxpQ0FBd0MsTUFBYztRQUNwRCxJQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQztRQUN0RCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFIRCwwREFHQztJQUVELGdDQUF1QyxNQUFjO1FBQ25ELElBQU0sb0JBQW9CLEdBQUcsdUJBQXVCLEVBQUUsQ0FBQztRQUN2RCxJQUFJLGNBQWMsR0FBeUIsSUFBSSxDQUFDO1FBQ2hELElBQUksTUFBTSxHQUF5QixJQUFJLENBQUM7UUFDeEMsNERBQTREO1FBQzVELDREQUE0RDtRQUM1RCwyREFBMkQ7UUFDM0QsbUNBQW1DO1FBQ25DLEdBQUc7WUFDRCxjQUFjLEdBQUcsTUFBTSxDQUFDO1lBQ3hCLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDNUMsUUFBUSxNQUFNLEtBQUssSUFBSSxFQUFFO1FBQzFCLElBQU0sZ0JBQWdCLEdBQUcsY0FBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQWRELHdEQWNDO0lBRUQsK0JBQXNDLE1BQWM7UUFDbEQsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUZELHNEQUVDO0lBRUQ7OztPQUdHO0lBQ0gsNEJBQW1DLE1BQWMsRUFBRSxTQUFpQjtRQUNsRSxJQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzRSxJQUFJLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ25DLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FDakIsdUJBQXVCLEVBQUUsRUFDekIsdURBQXFELGdCQUFrQixDQUFDLENBQUM7U0FDOUU7YUFBTTtZQUNMLE9BQVUsTUFBTSw0REFBdUQsZ0JBQWtCLENBQUM7U0FDM0Y7SUFDSCxDQUFDO0lBVEQsZ0RBU0M7SUFFRCx3QkFBK0IsSUFBWSxFQUFFLFFBQWlCLEVBQUUsVUFBbUI7UUFDakYsSUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQWlCLENBQUM7UUFDdEQsSUFBSSxVQUFVLEVBQUU7WUFDZCxZQUFZLENBQUMsT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDckM7UUFDRCxJQUFJLFFBQVEsRUFBRTtZQUNaLFlBQVksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1NBQzlCO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQVRELHdDQVNDO0lBRUQsc0NBQTZDLGlCQUFvQztRQUUvRSxPQUFPLCtCQUFrQixDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFIRCxvRUFHQztJQUVEOzs7OztPQUtHO0lBQ0gsc0NBQ0ksa0JBQXNDLEVBQUUsUUFBaUIsRUFDekQsVUFBbUI7UUFDckIsSUFBTSxZQUFZLEdBQUksa0JBQStDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDL0UsSUFBSSxVQUFVLEVBQUU7WUFDZCxZQUFZLENBQUMsT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDckM7UUFDRCxJQUFJLFFBQVEsRUFBRTtZQUNaLFlBQVksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1NBQzlCO1FBQ0QsT0FBTyxJQUFJLDhCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFYRCxvRUFXQztJQUVELGlDQUF3QyxhQUFxQjtRQUMzRCwyRUFBMkU7UUFDM0UsMkVBQTJFO1FBQzNFLDJFQUEyRTtRQUMzRSwyRUFBMkU7UUFDM0UsRUFBRTtRQUNGLHdGQUF3RjtRQUN4RiwrRUFBK0U7UUFDL0Usa0NBQWtDO1FBQ2xDLE9BQU8sSUFBSSw4QkFBaUIsQ0FBQyxhQUFvQixDQUEyQixDQUFDO0lBQy9FLENBQUM7SUFWRCwwREFVQztJQUVELGtDQUF5QyxhQUFxQjtRQUM1RCxPQUFPLCtCQUFrQixDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFGRCw0REFFQztJQWdDWSxRQUFBLGtCQUFrQixHQUFpQjtRQUM5QyxhQUFhLGdCQUFlLENBQUM7UUFDN0IsVUFBVSxnQkFBZSxDQUFDO0tBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7UmF3U291cmNlTWFwLCBTb3VyY2VNYXBDb25zdW1lciwgU291cmNlTWFwR2VuZXJhdG9yfSBmcm9tICdzb3VyY2UtbWFwJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJy4vdHlwZXNjcmlwdCc7XG5cbi8qKlxuICogVGhpcyBpbnRlcmZhY2Ugd2FzIGRlZmluZWQgaW4gQHR5cGVzL3NvdXJjZS1tYXAgYnV0IGlzIGFic2VudCBmcm9tIHRoZSB0eXBpbmdzXG4gKiBkaXN0cmlidXRlZCBpbiB0aGUgc291cmNlLW1hcCBwYWNrYWdlLlxuICogQ29waWVkIGZyb20gaHR0cHM6Ly91bnBrZy5jb20vQHR5cGVzL3NvdXJjZS1tYXBAMC41LjIvaW5kZXguZC50c1xuICogc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL3RzaWNrbGUvaXNzdWVzLzc1MFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2ljU291cmNlTWFwQ29uc3VtZXIgZXh0ZW5kcyBTb3VyY2VNYXBDb25zdW1lciB7XG4gIGZpbGU6IHN0cmluZztcbiAgc291cmNlUm9vdDogc3RyaW5nO1xuICBzb3VyY2VzOiBzdHJpbmdbXTtcbiAgc291cmNlc0NvbnRlbnQ6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFRoZSB0b0pTT04gbWV0aG9kIGlzIGludHJvZHVjZWQgaW5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3NvdXJjZS1tYXAvY29tbWl0LzdjMDZhYzgzZGQ2ZDc1ZTY1ZjcxNzI3MTg0YTJkODYzMGExNWJmNTgjZGlmZi03OTQ1ZjZiYjQ0NWQ5NTY3OTQ1NjRlMDk4ZWYyMGJiM1xuICogSG93ZXZlciB0aGVyZSBpcyBhIGJyZWFraW5nIGNoYW5nZSBpbiAwLjcuXG4gKiBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvdHNpY2tsZS9pc3N1ZXMvNzUwXG4gKi9cbmV4cG9ydCB0eXBlIFNvdXJjZU1hcEdlbmVyYXRvclRvSnNvbiA9IFNvdXJjZU1hcEdlbmVyYXRvciZ7XG4gIHRvSlNPTigpOiBSYXdTb3VyY2VNYXA7XG59O1xuXG4vKipcbiAqIFJldHVybiBhIG5ldyBSZWdFeHAgb2JqZWN0IGV2ZXJ5IHRpbWUgd2Ugd2FudCBvbmUgYmVjYXVzZSB0aGVcbiAqIFJlZ0V4cCBvYmplY3QgaGFzIGludGVybmFsIHN0YXRlIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBwZXJzaXN0XG4gKiBiZXR3ZWVuIGRpZmZlcmVudCBsb2dpY2FsIHVzZXMuXG4gKi9cbmZ1bmN0aW9uIGdldElubGluZVNvdXJjZU1hcFJlZ2V4KCk6IFJlZ0V4cCB7XG4gIHJldHVybiBuZXcgUmVnRXhwKCdeLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCwoLiopJCcsICdtZycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udGFpbnNJbmxpbmVTb3VyY2VNYXAoc291cmNlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGdldElubGluZVNvdXJjZU1hcENvdW50KHNvdXJjZSkgPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5saW5lU291cmNlTWFwQ291bnQoc291cmNlOiBzdHJpbmcpOiBudW1iZXIge1xuICBjb25zdCBtYXRjaCA9IHNvdXJjZS5tYXRjaChnZXRJbmxpbmVTb3VyY2VNYXBSZWdleCgpKTtcbiAgcmV0dXJuIG1hdGNoID8gbWF0Y2gubGVuZ3RoIDogMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RJbmxpbmVTb3VyY2VNYXAoc291cmNlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBpbmxpbmVTb3VyY2VNYXBSZWdleCA9IGdldElubGluZVNvdXJjZU1hcFJlZ2V4KCk7XG4gIGxldCBwcmV2aW91c1Jlc3VsdDogUmVnRXhwRXhlY0FycmF5fG51bGwgPSBudWxsO1xuICBsZXQgcmVzdWx0OiBSZWdFeHBFeGVjQXJyYXl8bnVsbCA9IG51bGw7XG4gIC8vIFdlIHdhbnQgdG8gZXh0cmFjdCB0aGUgbGFzdCBzb3VyY2UgbWFwIGluIHRoZSBzb3VyY2UgZmlsZVxuICAvLyBzaW5jZSB0aGF0J3MgcHJvYmFibHkgdGhlIG1vc3QgcmVjZW50IG9uZSBhZGRlZC4gIFdlIGtlZXBcbiAgLy8gbWF0Y2hpbmcgYWdhaW5zdCB0aGUgc291cmNlIHVudGlsIHdlIGRvbid0IGdldCBhIHJlc3VsdCxcbiAgLy8gdGhlbiB3ZSB1c2UgdGhlIHByZXZpb3VzIHJlc3VsdC5cbiAgZG8ge1xuICAgIHByZXZpb3VzUmVzdWx0ID0gcmVzdWx0O1xuICAgIHJlc3VsdCA9IGlubGluZVNvdXJjZU1hcFJlZ2V4LmV4ZWMoc291cmNlKTtcbiAgfSB3aGlsZSAocmVzdWx0ICE9PSBudWxsKTtcbiAgY29uc3QgYmFzZTY0RW5jb2RlZE1hcCA9IHByZXZpb3VzUmVzdWx0IVsxXTtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGJhc2U2NEVuY29kZWRNYXAsICdiYXNlNjQnKS50b1N0cmluZygndXRmOCcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlSW5saW5lU291cmNlTWFwKHNvdXJjZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHNvdXJjZS5yZXBsYWNlKGdldElubGluZVNvdXJjZU1hcFJlZ2V4KCksICcnKTtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBzb3VyY2UgbWFwIGlubGluZSBpbiB0aGUgZmlsZS4gIElmIHRoZXJlJ3MgYW4gZXhpc3RpbmcgaW5saW5lIHNvdXJjZVxuICogbWFwLCBpdCBjbG9iYmVycyBpdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldElubGluZVNvdXJjZU1hcChzb3VyY2U6IHN0cmluZywgc291cmNlTWFwOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBlbmNvZGVkU291cmNlTWFwID0gQnVmZmVyLmZyb20oc291cmNlTWFwLCAndXRmOCcpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgaWYgKGNvbnRhaW5zSW5saW5lU291cmNlTWFwKHNvdXJjZSkpIHtcbiAgICByZXR1cm4gc291cmNlLnJlcGxhY2UoXG4gICAgICAgIGdldElubGluZVNvdXJjZU1hcFJlZ2V4KCksXG4gICAgICAgIGAvLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LCR7ZW5jb2RlZFNvdXJjZU1hcH1gKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYCR7c291cmNlfVxcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsJHtlbmNvZGVkU291cmNlTWFwfWA7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU291cmNlTWFwKHRleHQ6IHN0cmluZywgZmlsZU5hbWU/OiBzdHJpbmcsIHNvdXJjZU5hbWU/OiBzdHJpbmcpOiBSYXdTb3VyY2VNYXAge1xuICBjb25zdCByYXdTb3VyY2VNYXAgPSBKU09OLnBhcnNlKHRleHQpIGFzIFJhd1NvdXJjZU1hcDtcbiAgaWYgKHNvdXJjZU5hbWUpIHtcbiAgICByYXdTb3VyY2VNYXAuc291cmNlcyA9IFtzb3VyY2VOYW1lXTtcbiAgfVxuICBpZiAoZmlsZU5hbWUpIHtcbiAgICByYXdTb3VyY2VNYXAuZmlsZSA9IGZpbGVOYW1lO1xuICB9XG4gIHJldHVybiByYXdTb3VyY2VNYXA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb3VyY2VNYXBDb25zdW1lclRvR2VuZXJhdG9yKHNvdXJjZU1hcENvbnN1bWVyOiBTb3VyY2VNYXBDb25zdW1lcik6XG4gICAgU291cmNlTWFwR2VuZXJhdG9yIHtcbiAgcmV0dXJuIFNvdXJjZU1hcEdlbmVyYXRvci5mcm9tU291cmNlTWFwKHNvdXJjZU1hcENvbnN1bWVyKTtcbn1cblxuLyoqXG4gKiBUc2MgaWRlbnRpZmllcyBzb3VyY2UgZmlsZXMgYnkgdGhlaXIgcmVsYXRpdmUgcGF0aCB0byB0aGUgb3V0cHV0IGZpbGUuICBTaW5jZVxuICogdGhlcmUncyBubyBlYXN5IHdheSB0byBpZGVudGlmeSB0aGVzZSByZWxhdGl2ZSBwYXRocyB3aGVuIHRzaWNrbGUgZ2VuZXJhdGVzIGl0c1xuICogb3duIHNvdXJjZSBtYXBzLCB3ZSBwYXRjaCB0aGVtIHdpdGggdGhlIGZpbGUgbmFtZSBmcm9tIHRoZSB0c2Mgc291cmNlIG1hcHNcbiAqIGJlZm9yZSBjb21wb3NpbmcgdGhlbS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvdXJjZU1hcEdlbmVyYXRvclRvQ29uc3VtZXIoXG4gICAgc291cmNlTWFwR2VuZXJhdG9yOiBTb3VyY2VNYXBHZW5lcmF0b3IsIGZpbGVOYW1lPzogc3RyaW5nLFxuICAgIHNvdXJjZU5hbWU/OiBzdHJpbmcpOiBTb3VyY2VNYXBDb25zdW1lciB7XG4gIGNvbnN0IHJhd1NvdXJjZU1hcCA9IChzb3VyY2VNYXBHZW5lcmF0b3IgYXMgU291cmNlTWFwR2VuZXJhdG9yVG9Kc29uKS50b0pTT04oKTtcbiAgaWYgKHNvdXJjZU5hbWUpIHtcbiAgICByYXdTb3VyY2VNYXAuc291cmNlcyA9IFtzb3VyY2VOYW1lXTtcbiAgfVxuICBpZiAoZmlsZU5hbWUpIHtcbiAgICByYXdTb3VyY2VNYXAuZmlsZSA9IGZpbGVOYW1lO1xuICB9XG4gIHJldHVybiBuZXcgU291cmNlTWFwQ29uc3VtZXIocmF3U291cmNlTWFwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvdXJjZU1hcFRleHRUb0NvbnN1bWVyKHNvdXJjZU1hcFRleHQ6IHN0cmluZyk6IEJhc2ljU291cmNlTWFwQ29uc3VtZXIge1xuICAvLyB0aGUgU291cmNlTWFwQ29uc3VtZXIgY29uc3RydWN0b3IgcmV0dXJucyBhIEJhc2ljU291cmNlTWFwQ29uc3VtZXIgb3IgYW5cbiAgLy8gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyIGRlcGVuZGluZyBvbiBpZiB5b3UgcGFzcyBpbiBhIFJhd1NvdXJjZU1hcCBvciBhXG4gIC8vIFJhd0luZGV4TWFwIG9yIHRoZSBzdHJpbmcganNvbiBvZiBlaXRoZXIuICBJbiB0aGlzIGNhc2Ugd2UncmUgcGFzc2luZyBpblxuICAvLyB0aGUgc3RyaW5nIGZvciBhIFJhd1NvdXJjZU1hcCwgc28gd2UgYWx3YXlzIGdldCBhIEJhc2ljU291cmNlTWFwQ29uc3VtZXJcbiAgLy9cbiAgLy8gTm90ZSwgdGhlIHR5cGluZ3MgZGlzdHJpYnV0ZWQgd2l0aCB0aGUgbGlicmFyeSBhcmUgbWlzc2luZyB0aGlzIGNvbnN0cnVjdG9yIG92ZXJsb2FkLFxuICAvLyBzbyB3ZSBtdXN0IHR5cGUgaXQgYXMgYW55LCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvdHNpY2tsZS9pc3N1ZXMvNzUwXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby1hbnlcbiAgcmV0dXJuIG5ldyBTb3VyY2VNYXBDb25zdW1lcihzb3VyY2VNYXBUZXh0IGFzIGFueSkgYXMgQmFzaWNTb3VyY2VNYXBDb25zdW1lcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvdXJjZU1hcFRleHRUb0dlbmVyYXRvcihzb3VyY2VNYXBUZXh0OiBzdHJpbmcpOiBTb3VyY2VNYXBHZW5lcmF0b3Ige1xuICByZXR1cm4gU291cmNlTWFwR2VuZXJhdG9yLmZyb21Tb3VyY2VNYXAoc291cmNlTWFwVGV4dFRvQ29uc3VtZXIoc291cmNlTWFwVGV4dCkpO1xufVxuXG4vKipcbiAqIEEgcG9zaXRpb24gaW4gYSBzb3VyY2UgbWFwLiBBbGwgb2Zmc2V0cyBhcmUgemVyby1iYXNlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTb3VyY2VQb3NpdGlvbiB7XG4gIC8qKiAwIGJhc2VkICovXG4gIGNvbHVtbjogbnVtYmVyO1xuICAvKiogMCBiYXNlZCAqL1xuICBsaW5lOiBudW1iZXI7XG4gIC8qKiAwIGJhc2VkIGZ1bGwgb2Zmc2V0IGluIHRoZSBmaWxlLiAqL1xuICBwb3NpdGlvbjogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZU1hcHBlciB7XG4gIC8qKlxuICAgKiBMb2dpY2FsbHkgc2hpZnQgYWxsIHNvdXJjZSBwb3NpdGlvbnMgYnkgYG9mZnNldGAuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGlzIHVzZWZ1bCBpZiBjb2RlIGhhcyB0byBwcmVwZW5kIGFkZGl0aW9uYWwgdGV4dCB0byB0aGUgZ2VuZXJhdGVkIG91dHB1dCBhZnRlclxuICAgKiBzb3VyY2UgbWFwcGluZ3MgaGF2ZSBhbHJlYWR5IGJlZW4gZ2VuZXJhdGVkLiBUaGUgc291cmNlIG1hcHMgYXJlIHRoZW4gdHJhbnNwYXJlbnRseSBhZGp1c3RlZFxuICAgKiBkdXJpbmcgVHlwZVNjcmlwdCBvdXRwdXQgZ2VuZXJhdGlvbi5cbiAgICovXG4gIHNoaWZ0QnlPZmZzZXQob2Zmc2V0OiBudW1iZXIpOiB2b2lkO1xuICAvKipcbiAgICogQWRkcyBhIG1hcHBpbmcgZnJvbSBgb3JpZ2luYWxOb2RlYCBpbiBgb3JpZ2luYWxgIHBvc2l0aW9uIHRvIGl0cyBuZXcgbG9jYXRpb24gaW4gdGhlIG91dHB1dCxcbiAgICogc3Bhbm5pbmcgZnJvbSBgZ2VuZXJhdGVkYCAoYW4gb2Zmc2V0IGluIHRoZSBmaWxlKSBmb3IgYGxlbmd0aGAgY2hhcmFjdGVycy5cbiAgICovXG4gIGFkZE1hcHBpbmcoXG4gICAgICBvcmlnaW5hbE5vZGU6IHRzLk5vZGUsIG9yaWdpbmFsOiBTb3VyY2VQb3NpdGlvbiwgZ2VuZXJhdGVkOiBTb3VyY2VQb3NpdGlvbixcbiAgICAgIGxlbmd0aDogbnVtYmVyKTogdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IE5PT1BfU09VUkNFX01BUFBFUjogU291cmNlTWFwcGVyID0ge1xuICBzaGlmdEJ5T2Zmc2V0KCkgey8qIG5vLW9wICovfSxcbiAgYWRkTWFwcGluZygpIHsvKiBuby1vcCAqL30sXG59O1xuIl19

@@ -199,2 +199,2 @@ /**

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtZXJfc291cmNlbWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zZm9ybWVyX3NvdXJjZW1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7OztJQUdILGlFQUEwRztJQUMxRywyQ0FBbUM7SUFFbkM7Ozs7Ozs7Ozs7O09BV0c7SUFDSCx3Q0FDSSxzQkFDVTtRQUNaLE1BQU0sQ0FBQyxVQUFDLE9BQU8sSUFBSyxPQUFBLFVBQUMsVUFBVTtZQUM3QixJQUFNLFlBQVksR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDNUMsSUFBTSxxQkFBcUIsR0FBRyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDL0UsSUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUMvQixVQUFVLENBQUMsUUFBUSxFQUFFLHFCQUFxQixFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzlFLElBQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0QyxNQUFNLENBQUMsdUNBQW9CLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUUvRCxtQkFBc0MsSUFBTztnQkFDM0MsTUFBTSxDQUFDLG1EQUFnQyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBTSxDQUFDO1lBQ3RGLENBQUM7WUFFRCx1QkFBdUIsSUFBYTtnQkFDbEMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7b0JBQzFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQztnQkFDRCxJQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxD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LENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDO0lBQzNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7U291cmNlTWFwcGVyLCBTb3VyY2VQb3NpdGlvbn0gZnJvbSAnLi9zb3VyY2VfbWFwX3V0aWxzJztcbmltcG9ydCB7aXNUeXBlTm9kZUtpbmQsIHVwZGF0ZVNvdXJjZUZpbGVOb2RlLCB2aXNpdE5vZGVXaXRoU3ludGhlc2l6ZWRDb21tZW50c30gZnJvbSAnLi90cmFuc2Zvcm1lcl91dGlsJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJy4vdHlwZXNjcmlwdCc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIFR5cGVTY3JpcHQgdHJhbnNmb3JtZXIgYmFzZWQgb24gYSBzb3VyY2UtPnRleHQgdHJhbnNmb3JtYXRpb24uXG4gKlxuICogVHlwZVNjcmlwdCB0cmFuc2Zvcm1lcnMgb3BlcmF0ZSBvbiBBU1Qgbm9kZXMuIE5ld2x5IGNyZWF0ZWQgbm9kZXMgbXVzdCBiZSBtYXJrZWQgYXMgcmVwbGFjaW5nIGFuXG4gKiBvbGRlciBBU1Qgbm9kZS4gVGhpcyBzaGltIGFsbG93cyBydW5uaW5nIGEgdHJhbnNmb3JtYXRpb24gc3RlcCB0aGF0J3MgYmFzZWQgb24gZW1pdHRpbmcgbmV3IHRleHRcbiAqIGFzIGEgbm9kZSBiYXNlZCB0cmFuc2Zvcm1lci4gSXQgYWNoaWV2ZXMgdGhhdCBieSBydW5uaW5nIHRoZSB0cmFuc2Zvcm1hdGlvbiwgY29sbGVjdGluZyBhIHNvdXJjZVxuICogbWFwcGluZyBpbiB0aGUgcHJvY2VzcywgYW5kIHRoZW4gYWZ0ZXJ3YXJkcyBwYXJzaW5nIHRoZSBzb3VyY2UgdGV4dCBpbnRvIGEgbmV3IEFTVCBhbmQgbWFya2luZ1xuICogdGhlIG5ldyBub2RlcyBhcyByZXByZXNlbnRhdGlvbnMgb2YgdGhlIG9sZCBub2RlcyBiYXNlZCBvbiB0aGVpciBzb3VyY2UgbWFwIHBvc2l0aW9ucy5cbiAqXG4gKiBUaGUgcHJvY2VzcyBtYXJrcyBhbGwgbm9kZXMgYXMgc3ludGhlc2l6ZWQgZXhjZXB0IGZvciBhIGhhbmRmdWwgb2Ygc3BlY2lhbCBjYXNlcyAoaWRlbnRpZmllcnNcbiAqIGV0YykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUcmFuc2Zvcm1lckZyb21Tb3VyY2VNYXAoXG4gICAgc291cmNlQmFzZWRUcmFuc2Zvcm1lcjogKHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsIHNvdXJjZU1hcHBlcjogU291cmNlTWFwcGVyKSA9PlxuICAgICAgICBzdHJpbmcpOiB0cy5UcmFuc2Zvcm1lckZhY3Rvcnk8dHMuU291cmNlRmlsZT4ge1xuICByZXR1cm4gKGNvbnRleHQpID0+IChzb3VyY2VGaWxlKSA9PiB7XG4gICAgY29uc3Qgc291cmNlTWFwcGVyID0gbmV3IE5vZGVTb3VyY2VNYXBwZXIoKTtcbiAgICBjb25zdCB0cmFuc2Zvcm1lZFNvdXJjZVRleHQgPSBzb3VyY2VCYXNlZFRyYW5zZm9ybWVyKHNvdXJjZUZpbGUsIHNvdXJjZU1hcHBlcik7XG4gICAgY29uc3QgbmV3RmlsZSA9IHRzLmNyZWF0ZVNvdXJjZUZpbGUoXG4gICAgICAgIHNvdXJjZUZpbGUuZmlsZU5hbWUsIHRyYW5zZm9ybWVkU291cmNlVGV4dCwgdHMuU2NyaXB0VGFyZ2V0LkxhdGVzdCwgdHJ1ZSk7XG4gICAgY29uc3QgbWFwcGVkRmlsZSA9IHZpc2l0Tm9kZShuZXdGaWxlKTtcbiAgICByZXR1cm4gdXBkYXRlU291cmNlRmlsZU5vZGUoc291cmNlRmlsZSwgbWFwcGVkRmlsZS5zdGF0ZW1lbnRzKTtcblxuICAgIGZ1bmN0aW9uIHZpc2l0Tm9kZTxUIGV4dGVuZHMgdHMuTm9kZT4obm9kZTogVCk6IFQge1xuICAgICAgcmV0dXJuIHZpc2l0Tm9kZVdpdGhTeW50aGVzaXplZENvbW1lbnRzKGNvbnRleHQsIG5ld0ZpbGUsIG5vZGUsIHZpc2l0Tm9kZUltcGwpIGFzIFQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdmlzaXROb2RlSW1wbChub2RlOiB0cy5Ob2RlKSB7XG4gICAgICBpZiAobm9kZS5mbGFncyAmIHRzLk5vZGVGbGFncy5TeW50aGVzaXplZCkge1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG9yaWdpbmFsTm9kZSA9IHNvdXJjZU1hcHBlci5nZXRPcmlnaW5hbE5vZGUobm9kZSk7XG5cbiAgICAgIC8vIFVzZSB0aGUgb3JpZ2luYWxOb2RlIGZvcjpcbiAgICAgIC8vIC0gbGl0ZXJhbHM6IGFzIGUuZy4gdHlwZXNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHN5bnRoZXRpYyByZWdleCBsaXRlcmFsc1xuICAgICAgLy8gLSBpZGVudGlmaWVyczogYXMgdGhleSBkb24ndCBoYXZlIGNoaWxkcmVuIGFuZCBiZWhhdmUgd2VsbFxuICAgICAgLy8gICAgcmVnYXJkaW5nIGNvbW1lbnQgc3ludGhlc2l6YXRpb25cbiAgICAgIC8vIC0gdHlwZXM6IGFzIHRoZXkgYXJlIG5vdCBlbWl0ZWQgYW55d2F5c1xuICAgICAgLy8gICAgICAgICAgYW5kIGl0IGxlYWRzIHRvIGVycm9ycyB3aXRoIGBleHRlbmRzYCBjYXNlcy5cbiAgICAgIC8vIC0gaW1wb3J0cy9leHBvcnRzOiBhcyBUeXBlU2NyaXB0IHdpbGwgb25seSBhdHRlbXB0IHRvIGVsaWRlIHR5cGUgb25seVxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgIGltcG9ydHMgaWYgdGhlIG5ldyBub2RlIGlzIGlkZW50aWNhbCB0byB0aGUgb3JpZ2luYWwgbm9kZS5cbiAgICAgIGlmIChvcmlnaW5hbE5vZGUpIHtcbiAgICAgICAgaWYgKGlzTGl0ZXJhbEtpbmQobm9kZS5raW5kKSB8fCBub2RlLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuSWRlbnRpZmllciB8fFxuICAgICAgICAgICAgaXNUeXBlTm9kZUtpbmQobm9kZS5raW5kKSB8fCBub2RlLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuSW5kZXhTaWduYXR1cmUpIHtcbiAgICAgICAgICByZXR1cm4gb3JpZ2luYWxOb2RlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuSW1wb3J0RGVjbGFyYXRpb24gfHxcbiAgICAgICAgICAgIG5vZGUua2luZCA9PT0gdHMuU3ludGF4S2luZC5JbXBvcnRFcXVhbHNEZWNsYXJhdGlvbiB8fFxuICAgICAgICAgICAgbm9kZS5raW5kID09PSB0cy5TeW50YXhLaW5kLkV4cG9ydEFzc2lnbm1lbnQpIHtcbiAgICAgICAgICByZXR1cm4gb3JpZ2luYWxOb2RlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0cy5pc0V4cG9ydERlY2xhcmF0aW9uKG5vZGUpKSB7XG4gICAgICAgICAgLy8gUmV0dXJuIHRoZSBvcmlnaW5hbCBub2RlcyBmb3IgZXhwb3J0IGRlY2xhcmF0aW9ucywgdW5sZXNzIHRoZXkgd2VyZSBleHBhbmRlZCBmcm9tIGFuXG4gICAgICAgICAgLy8gZXhwb3J0ICogdG8gc3BlY2lmaWMgZXhwb3J0ZWQgc3ltYm9scy5cbiAgICAgICAgICBjb25zdCBvcmlnaW5hbEV4cG9ydCA9IG9yaWdpbmFsTm9kZSBhcyB0cy5FeHBvcnREZWNsYXJhdGlvbjtcbiAgICAgICAgICBpZiAoIW5vZGUubW9kdWxlU3BlY2lmaWVyKSB7XG4gICAgICAgICAgICAvLyBleHBvcnQge2EsIGIsIGN9O1xuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsTm9kZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCEhb3JpZ2luYWxFeHBvcnQuZXhwb3J0Q2xhdXNlID09PSAhIW5vZGUuZXhwb3J0Q2xhdXNlKSB7XG4gICAgICAgICAgICAvLyBUaGlzIGFscmVhZHkgd2FzIGV4cG9ydGVkIHdpdGggc3ltYm9scyAoZXhwb3J0IHsuLi59KSBvciB3YXMgbm90IGV4cGFuZGVkLlxuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsTm9kZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gUmV3cm90ZSBleHBvcnQgKiAtPiBleHBvcnQgey4uLn0sIHRoZSBleHBvcnQgZGVjbGFyYXRpb24gbXVzdCBiZSBlbWl0dGVkIGluIHRoZSB1cGRhdGVkXG4gICAgICAgICAgLy8gZm9ybS5cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbm9kZSA9IHRzLnZpc2l0RWFjaENoaWxkKG5vZGUsIHZpc2l0Tm9kZSwgY29udGV4dCk7XG5cbiAgICAgIG5vZGUuZmxhZ3MgfD0gdHMuTm9kZUZsYWdzLlN5bnRoZXNpemVkO1xuICAgICAgbm9kZS5wYXJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICB0cy5zZXRUZXh0UmFuZ2Uobm9kZSwgb3JpZ2luYWxOb2RlID8gb3JpZ2luYWxOb2RlIDoge3BvczogLTEsIGVuZDogLTF9KTtcbiAgICAgIHRzLnNldE9yaWdpbmFsTm9kZShub2RlLCBvcmlnaW5hbE5vZGUpO1xuXG4gICAgICAvLyBMb29wIG92ZXIgYWxsIG5lc3RlZCB0cy5Ob2RlQXJyYXlzIC9cbiAgICAgIC8vIHRzLk5vZGVzIHRoYXQgd2VyZSBub3QgdmlzaXRlZCBhbmQgc2V0IHRoZWlyXG4gICAgICAvLyB0ZXh0IHJhbmdlIHRvIC0xIHRvIG5vdCBlbWl0IHRoZWlyIHdoaXRlc3BhY2UuXG4gICAgICAvLyBTYWRseSwgVHlwZVNjcmlwdCBkb2VzIG5vdCBoYXZlIGFuIEFQSSBmb3IgdGhpcy4uLlxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueSBUbyByZWFkIGFsbCBwcm9wZXJ0aWVzXG4gICAgICBjb25zdCBub2RlQW55ID0gbm9kZSBhcyB7W2tleTogc3RyaW5nXTogYW55fTtcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnkgVG8gcmVhZCBhbGwgcHJvcGVydGllc1xuICAgICAgY29uc3Qgb3JpZ2luYWxOb2RlQW55ID0gb3JpZ2luYWxOb2RlIGFzIHtba2V5OiBzdHJpbmddOiBhbnl9O1xuICAgICAgZm9yIChjb25zdCBwcm9wIGluIG5vZGVBbnkpIHtcbiAgICAgICAgaWYgKG5vZGVBbnkuaGFzT3duUHJvcGVydHkocHJvcCkpIHtcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBub2RlQW55W3Byb3BdO1xuICAgICAgICAgIGlmIChpc05vZGVBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIC8vIHJlc2V0IHRoZSBwb3MvZW5kIG9mIGFsbCBOb2RlQXJyYXlzIHNvIHRoYXQgd2UgZG9uJ3QgZW1pdCBjb21tZW50c1xuICAgICAgICAgICAgLy8gZnJvbSB0aGVtLlxuICAgICAgICAgICAgdHMuc2V0VGV4dFJhbmdlKHZhbHVlLCB7cG9zOiAtMSwgZW5kOiAtMX0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgIGlzVG9rZW4odmFsdWUpICYmICEodmFsdWUuZmxhZ3MgJiB0cy5Ob2RlRmxhZ3MuU3ludGhlc2l6ZWQpICYmXG4gICAgICAgICAgICAgIHZhbHVlLmdldFNvdXJjZUZpbGUoKSAhPT0gc291cmNlRmlsZSkge1xuICAgICAgICAgICAgLy8gVXNlIHRoZSBvcmlnaW5hbCBUZXh0UmFuZ2UgZm9yIGFsbCBub24gdmlzaXRlZCB0b2tlbnMgKGUuZy4gdGhlXG4gICAgICAgICAgICAvLyBgQmluYXJ5RXhwcmVzc2lvbi5vcGVyYXRvclRva2VuYCkgdG8gcHJlc2VydmUgdGhlIGZvcm1hdHRpbmdcbiAgICAgICAgICAgIGNvbnN0IHRleHRSYW5nZSA9IG9yaWdpbmFsTm9kZSA/IG9yaWdpbmFsTm9kZUFueVtwcm9wXSA6IHtwb3M6IC0xLCBlbmQ6IC0xfTtcbiAgICAgICAgICAgIHRzLnNldFRleHRSYW5nZSh2YWx1ZSwgdGV4dFJhbmdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBgU291cmNlTWFwcGVyYCB0aGF0IHN0b3JlcyBhbmQgcmV0cmlldmVzIG1hcHBpbmdzXG4gKiB0byBvcmlnaW5hbCBub2Rlcy5cbiAqL1xuY2xhc3MgTm9kZVNvdXJjZU1hcHBlciBpbXBsZW1lbnRzIFNvdXJjZU1hcHBlciB7XG4gIHByaXZhdGUgb3JpZ2luYWxOb2RlQnlHZW5lcmF0ZWRSYW5nZSA9IG5ldyBNYXA8c3RyaW5nLCB0cy5Ob2RlPigpO1xuICBwcml2YXRlIGdlblN0YXJ0UG9zaXRpb25zID0gbmV3IE1hcDx0cy5Ob2RlLCBudW1iZXI+KCk7XG4gIC8qKiBDb25jZXB0dWFsIG9mZnNldCBmb3IgYWxsIG5vZGVzIGluIHRoaXMgbWFwcGluZy4gKi9cbiAgcHJpdmF0ZSBvZmZzZXQgPSAwO1xuXG4gIHByaXZhdGUgYWRkRnVsbE5vZGVSYW5nZShub2RlOiB0cy5Ob2RlLCBnZW5TdGFydFBvczogbnVtYmVyKSB7XG4gICAgdGhpcy5vcmlnaW5hbE5vZGVCeUdlbmVyYXRlZFJhbmdlLnNldChcbiAgICAgICAgdGhpcy5ub2RlQ2FjaGVLZXkobm9kZS5raW5kLCBnZW5TdGFydFBvcywgZ2VuU3RhcnRQb3MgKyAobm9kZS5nZXRFbmQoKSAtIG5vZGUuZ2V0U3RhcnQoKSkpLFxuICAgICAgICBub2RlKTtcbiAgICBub2RlLmZvckVhY2hDaGlsZChcbiAgICAgICAgY2hpbGQgPT4gdGhpcy5hZGRGdWxsTm9kZVJhbmdlKGNoaWxkLCBnZW5TdGFydFBvcyArIChjaGlsZC5nZXRTdGFydCgpIC0gbm9kZS5nZXRTdGFydCgpKSkpO1xuICB9XG5cbiAgc2hpZnRCeU9mZnNldChvZmZzZXQ6IG51bWJlcikge1xuICAgIHRoaXMub2Zmc2V0ICs9IG9mZnNldDtcbiAgfVxuXG4gIGFkZE1hcHBpbmcoXG4gICAgICBvcmlnaW5hbE5vZGU6IHRzLk5vZGUsIG9yaWdpbmFsOiBTb3VyY2VQb3NpdGlvbiwgZ2VuZXJhdGVkOiBTb3VyY2VQb3NpdGlvbiwgbGVuZ3RoOiBudW1iZXIpIHtcbiAgICBsZXQgb3JpZ2luYWxTdGFydFBvcyA9IG9yaWdpbmFsLnBvc2l0aW9uO1xuICAgIGxldCBnZW5TdGFydFBvcyA9IGdlbmVyYXRlZC5wb3NpdGlvbjtcbiAgICBpZiAob3JpZ2luYWxTdGFydFBvcyA+PSBvcmlnaW5hbE5vZGUuZ2V0RnVsbFN0YXJ0KCkgJiZcbiAgICAgICAgb3JpZ2luYWxTdGFydFBvcyA8PSBvcmlnaW5hbE5vZGUuZ2V0U3RhcnQoKSkge1xuICAgICAgLy8gYWx3YXlzIHVzZSB0aGUgbm9kZS5nZXRTdGFydCgpIGZvciB0aGUgaW5kZXgsXG4gICAgICAvLyBhcyBjb21tZW50cyBhbmQgd2hpdGVzcGFjZXMgbWlnaHQgZGlmZmVyIGJldHdlZW4gdGhlIG9yaWdpbmFsIGFuZCB0cmFuc2Zvcm1lZCBjb2RlLlxuICAgICAgY29uc3QgZGlmZlRvU3RhcnQgPSBvcmlnaW5hbE5vZGUuZ2V0U3RhcnQoKSAtIG9yaWdpbmFsU3RhcnRQb3M7XG4gICAgICBvcmlnaW5hbFN0YXJ0UG9zICs9IGRpZmZUb1N0YXJ0O1xuICAgICAgZ2VuU3RhcnRQb3MgKz0gZGlmZlRvU3RhcnQ7XG4gICAgICBsZW5ndGggLT0gZGlmZlRvU3RhcnQ7XG4gICAgICB0aGlzLmdlblN0YXJ0UG9zaXRpb25zLnNldChvcmlnaW5hbE5vZGUsIGdlblN0YXJ0UG9zKTtcbiAgICB9XG4gICAgaWYgKG9yaWdpbmFsU3RhcnRQb3MgKyBsZW5ndGggPT09IG9yaWdpbmFsTm9kZS5nZXRFbmQoKSkge1xuICAgICAgdGhpcy5vcmlnaW5hbE5vZGVCeUdlbmVyYXRlZFJhbmdlLnNldChcbiAgICAgICAgICB0aGlzLm5vZGVDYWNoZUtleShcbiAgICAgICAgICAgICAgb3JpZ2luYWxOb2RlLmtpbmQsIHRoaXMuZ2VuU3RhcnRQb3NpdGlvbnMuZ2V0KG9yaWdpbmFsTm9kZSkhLCBnZW5TdGFydFBvcyArIGxlbmd0aCksXG4gICAgICAgICAgb3JpZ2luYWxOb2RlKTtcbiAgICB9XG4gICAgb3JpZ2luYWxOb2RlLmZvckVhY2hDaGlsZCgoY2hpbGQpID0+IHtcbiAgICAgIGlmIChjaGlsZC5nZXRTdGFydCgpID49IG9yaWdpbmFsU3RhcnRQb3MgJiYgY2hpbGQuZ2V0RW5kKCkgPD0gb3JpZ2luYWxTdGFydFBvcyArIGxlbmd0aCkge1xuICAgICAgICB0aGlzLmFkZEZ1bGxOb2RlUmFuZ2UoY2hpbGQsIGdlblN0YXJ0UG9zICsgKGNoaWxkLmdldFN0YXJ0KCkgLSBvcmlnaW5hbFN0YXJ0UG9zKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKiogRm9yIHRoZSBuZXdseSBwYXJzZWQgYG5vZGVgLCBmaW5kIHdoYXQgbm9kZSBjb3JyZXNwb25kZWQgdG8gaXQgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSB0ZXh0LiAqL1xuICBnZXRPcmlnaW5hbE5vZGUobm9kZTogdHMuTm9kZSk6IHRzLk5vZGV8dW5kZWZpbmVkIHtcbiAgICAvLyBBcHBseSB0aGUgb2Zmc2V0OiBpZiB0aGVyZSBpcyBhbiBvZmZzZXQgPiAwLCBhbGwgbm9kZXMgYXJlIGNvbmNlcHR1YWxseSBzaGlmdGVkIGJ5IHNvIG1hbnlcbiAgICAvLyBjaGFyYWN0ZXJzIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLlxuICAgIGxldCBzdGFydCA9IG5vZGUuZ2V0U3RhcnQoKSAtIHRoaXMub2Zmc2V0O1xuICAgIGlmIChzdGFydCA8IDApIHtcbiAgICAgIC8vIFNwZWNpYWwgY2FzZTogdGhlIHNvdXJjZSBmaWxlIGNvbmNlcHR1YWxseSBzcGFucyBhbGwgb2YgdGhlIGZpbGUsIGluY2x1ZGluZyBhbnkgYWRkZWRcbiAgICAgIC8vIHByZWZpeCBhZGRlZCB0aGF0IGNhdXNlcyBvZmZzZXQgdG8gYmUgc2V0LlxuICAgICAgaWYgKG5vZGUua2luZCAhPT0gdHMuU3ludGF4S2luZC5Tb3VyY2VGaWxlKSB7XG4gICAgICAgIC8vIE5vZGVzIHdpdGhpbiBbMCwgb2Zmc2V0XSBvZiB0aGUgbmV3IGZpbGUgKHN0YXJ0IDwgMCkgaXMgdGhlIGFkZGl0aW9uYWwgcHJlZml4IHRoYXQgaGFzIG5vXG4gICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgbm9kZXMgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSwgc28gcmV0dXJuIHVuZGVmaW5lZC5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHN0YXJ0ID0gMDtcbiAgICB9XG4gICAgY29uc3QgZW5kID0gbm9kZS5nZXRFbmQoKSAtIHRoaXMub2Zmc2V0O1xuICAgIGNvbnN0IGtleSA9IHRoaXMubm9kZUNhY2hlS2V5KG5vZGUua2luZCwgc3RhcnQsIGVuZCk7XG4gICAgcmV0dXJuIHRoaXMub3JpZ2luYWxOb2RlQnlHZW5lcmF0ZWRSYW5nZS5nZXQoa2V5KTtcbiAgfVxuXG4gIHByaXZhdGUgbm9kZUNhY2hlS2V5KGtpbmQ6IHRzLlN5bnRheEtpbmQsIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7a2luZH0jJHtzdGFydH0jJHtlbmR9YDtcbiAgfVxufVxuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG5mdW5jdGlvbiBpc05vZGVBcnJheSh2YWx1ZTogYW55KTogdmFsdWUgaXMgdHMuTm9kZUFycmF5PGFueT4ge1xuICBjb25zdCBhbnlWYWx1ZSA9IHZhbHVlO1xuICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgYW55VmFsdWUucG9zICE9PSB1bmRlZmluZWQgJiYgYW55VmFsdWUuZW5kICE9PSB1bmRlZmluZWQ7XG59XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbmZ1bmN0aW9uIGlzVG9rZW4odmFsdWU6IGFueSk6IHZhbHVlIGlzIHRzLlRva2VuPGFueT4ge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlLmtpbmQgPj0gdHMuU3ludGF4S2luZC5GaXJzdFRva2VuICYmXG4gICAgICB2YWx1ZS5raW5kIDw9IHRzLlN5bnRheEtpbmQuTGFzdFRva2VuO1xufVxuXG4vLyBDb3BpZWQgZnJvbSBUeXBlU2NyaXB0XG5mdW5jdGlvbiBpc0xpdGVyYWxLaW5kKGtpbmQ6IHRzLlN5bnRheEtpbmQpIHtcbiAgcmV0dXJuIHRzLlN5bnRheEtpbmQuRmlyc3RMaXRlcmFsVG9rZW4gPD0ga2luZCAmJiBraW5kIDw9IHRzLlN5bnRheEtpbmQuTGFzdExpdGVyYWxUb2tlbjtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtZXJfc291cmNlbWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zZm9ybWVyX3NvdXJjZW1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7OztJQUdILGlFQUEwRztJQUMxRywyQ0FBbUM7SUFFbkM7Ozs7Ozs7Ozs7O09BV0c7SUFDSCx3Q0FDSSxzQkFDVTtRQUNaLE9BQU8sVUFBQyxPQUFPLElBQUssT0FBQSxVQUFDLFVBQVU7WUFDN0IsSUFBTSxZQUFZLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQzVDLElBQU0scUJBQXFCLEdBQUcsc0JBQXNCLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQy9FLElBQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FDL0IsVUFBVSxDQUFDLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM5RSxJQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEMsT0FBTyx1Q0FBb0IsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRS9ELG1CQUFzQyxJQUFPO2dCQUMzQyxPQUFPLG1EQUFnQyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBTSxDQUFDO1lBQ3RGLENBQUM7WUFFRCx1QkFBdUIsSUFBYTtnQkFDbEMsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFO29CQUN6QyxPQUFPLElBQUksQ0FBQztpQkFDYjtnQkFDRCxJQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUV4RCw0QkFBNEI7Z0JBQzVCLDJFQUEyRTtnQkFDM0UsNkRBQTZEO2dCQUM3RCxzQ0FBc0M7Z0JBQ3RDLDBDQUEwQztnQkFDMUMsd0RBQXdEO2dCQUN4RCx3RUFBd0U7Z0JBQ3hFLGdGQUFnRjtnQkFDaEYsSUFBSSxZQUFZLEVBQUU7b0JBQ2hCLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVTt3QkFDbEUsaUNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRTt3QkFDM0UsT0FBTyxZQUFZLENBQUM7cUJBQ3JCO29CQUNELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLGlCQUFpQjt3QkFDN0MsSUFBSSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLHVCQUF1Qjt3QkFDbkQsSUFBSSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFO3dCQUNoRCxPQUFPLFlBQVksQ0FBQztxQkFDckI7b0JBQ0QsSUFBSSxFQUFFLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQ2hDLHVGQUF1Rjt3QkFDdkYseUNBQXlDO3dCQUN6QyxJQUFNLGNBQWMsR0FBRyxZQUFvQyxDQUFDO3dCQUM1RCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTs0QkFDekIsb0JBQW9COzRCQUNwQixPQUFPLFlBQVksQ0FBQzt5QkFDckI7d0JBQ0QsSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDLFlBQVksS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTs0QkFDekQsNkVBQTZFOzRCQUM3RSxPQUFPLFlBQVksQ0FBQzt5QkFDckI7d0JBQ0QsMEZBQTBGO3dCQUMxRixRQUFRO3FCQUNUO2lCQUNGO2dCQUNELElBQUksR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBRW5ELElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO2dCQUN4QixFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQztnQkFDeEUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBRXZDLHVDQUF1QztnQkFDdkMsK0NBQStDO2dCQUMvQyxpREFBaUQ7Z0JBQ2pELHFEQUFxRDtnQkFDckQseURBQXlEO2dCQUN6RCxJQUFNLE9BQU8sR0FBRyxJQUE0QixDQUFDO2dCQUM3Qyx5REFBeUQ7Z0JBQ3pELElBQU0sZUFBZSxHQUFHLFlBQW9DLENBQUM7Z0JBQzdELEtBQUssSUFBTSxJQUFJLElBQUksT0FBTyxFQUFFO29CQUMxQixJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQ2hDLGtDQUFrQzt3QkFDbEMsSUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUM1QixJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRTs0QkFDdEIscUVBQXFFOzRCQUNyRSxhQUFhOzRCQUNiLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEVBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUM7eUJBQzVDOzZCQUFNLElBQ0gsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDOzRCQUMzRCxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssVUFBVSxFQUFFOzRCQUN4QyxrRUFBa0U7NEJBQ2xFLCtEQUErRDs0QkFDL0QsSUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDOzRCQUM1RSxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQzt5QkFDbkM7cUJBQ0Y7aUJBQ0Y7Z0JBRUQsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQyxFQXhGbUIsQ0F3Rm5CLENBQUM7SUFDSixDQUFDO0lBNUZELHdFQTRGQztJQUVEOzs7T0FHRztJQUNIO1FBQUE7WUFDVSxpQ0FBNEIsR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztZQUMxRCxzQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztZQUN2RCx1REFBdUQ7WUFDL0MsV0FBTSxHQUFHLENBQUMsQ0FBQztRQWdFckIsQ0FBQztRQTlEUywyQ0FBZ0IsR0FBeEIsVUFBeUIsSUFBYSxFQUFFLFdBQW1CO1lBQTNELGlCQU1DO1lBTEMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEdBQUcsQ0FDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFDMUYsSUFBSSxDQUFDLENBQUM7WUFDVixJQUFJLENBQUMsWUFBWSxDQUNiLFVBQUEsS0FBSyxJQUFJLE9BQUEsS0FBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxXQUFXLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBaEYsQ0FBZ0YsQ0FBQyxDQUFDO1FBQ2pHLENBQUM7UUFFRCx3Q0FBYSxHQUFiLFVBQWMsTUFBYztZQUMxQixJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQztRQUN4QixDQUFDO1FBRUQscUNBQVUsR0FBVixVQUNJLFlBQXFCLEVBQUUsUUFBd0IsRUFBRSxTQUF5QixFQUFFLE1BQWM7WUFEOUYsaUJBeUJDO1lBdkJDLElBQUksZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUN6QyxJQUFJLFdBQVcsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDO1lBQ3JDLElBQUksZ0JBQWdCLElBQUksWUFBWSxDQUFDLFlBQVksRUFBRTtnQkFDL0MsZ0JBQWdCLElBQUksWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUMvQyxnREFBZ0Q7Z0JBQ2hELHNGQUFzRjtnQkFDdEYsSUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLFFBQVEsRUFBRSxHQUFHLGdCQUFnQixDQUFDO2dCQUMvRCxnQkFBZ0IsSUFBSSxXQUFXLENBQUM7Z0JBQ2hDLFdBQVcsSUFBSSxXQUFXLENBQUM7Z0JBQzNCLE1BQU0sSUFBSSxXQUFXLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2FBQ3ZEO1lBQ0QsSUFBSSxnQkFBZ0IsR0FBRyxNQUFNLEtBQUssWUFBWSxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUN2RCxJQUFJLENBQUMsNEJBQTRCLENBQUMsR0FBRyxDQUNqQyxJQUFJLENBQUMsWUFBWSxDQUNiLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUUsRUFBRSxXQUFXLEdBQUcsTUFBTSxDQUFDLEVBQ3ZGLFlBQVksQ0FBQyxDQUFDO2FBQ25CO1lBQ0QsWUFBWSxDQUFDLFlBQVksQ0FBQyxVQUFDLEtBQUs7Z0JBQzlCLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLGdCQUFnQixJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxnQkFBZ0IsR0FBRyxNQUFNLEVBQUU7b0JBQ3ZGLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsV0FBVyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQztpQkFDbkY7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxrR0FBa0c7UUFDbEcsMENBQWUsR0FBZixVQUFnQixJQUFhO1lBQzNCLDZGQUE2RjtZQUM3Rix5Q0FBeUM7WUFDekMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDMUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO2dCQUNiLHdGQUF3RjtnQkFDeEYsNkNBQTZDO2dCQUM3QyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUU7b0JBQzFDLDRGQUE0RjtvQkFDNUYsbUVBQW1FO29CQUNuRSxPQUFPLFNBQVMsQ0FBQztpQkFDbEI7Z0JBQ0QsS0FBSyxHQUFHLENBQUMsQ0FBQzthQUNYO1lBQ0QsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDeEMsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNyRCxPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUVPLHVDQUFZLEdBQXBCLFVBQXFCLElBQW1CLEVBQUUsS0FBYSxFQUFFLEdBQVc7WUFDbEUsT0FBVSxJQUFJLFNBQUksS0FBSyxTQUFJLEdBQUssQ0FBQztRQUNuQyxDQUFDO1FBQ0gsdUJBQUM7SUFBRCxDQUFDLEFBcEVELElBb0VDO0lBRUQsa0NBQWtDO0lBQ2xDLHFCQUFxQixLQUFVO1FBQzdCLElBQU0sUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN2QixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksUUFBUSxDQUFDLEdBQUcsS0FBSyxTQUFTLElBQUksUUFBUSxDQUFDLEdBQUcsS0FBSyxTQUFTLENBQUM7SUFDMUYsQ0FBQztJQUVELGtDQUFrQztJQUNsQyxpQkFBaUIsS0FBVTtRQUN6QixPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVO1lBQ3ZGLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUM7SUFDNUMsQ0FBQztJQUVELHlCQUF5QjtJQUN6Qix1QkFBdUIsSUFBbUI7UUFDeEMsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLGlCQUFpQixJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQztJQUMzRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1NvdXJjZU1hcHBlciwgU291cmNlUG9zaXRpb259IGZyb20gJy4vc291cmNlX21hcF91dGlscyc7XG5pbXBvcnQge2lzVHlwZU5vZGVLaW5kLCB1cGRhdGVTb3VyY2VGaWxlTm9kZSwgdmlzaXROb2RlV2l0aFN5bnRoZXNpemVkQ29tbWVudHN9IGZyb20gJy4vdHJhbnNmb3JtZXJfdXRpbCc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICcuL3R5cGVzY3JpcHQnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBUeXBlU2NyaXB0IHRyYW5zZm9ybWVyIGJhc2VkIG9uIGEgc291cmNlLT50ZXh0IHRyYW5zZm9ybWF0aW9uLlxuICpcbiAqIFR5cGVTY3JpcHQgdHJhbnNmb3JtZXJzIG9wZXJhdGUgb24gQVNUIG5vZGVzLiBOZXdseSBjcmVhdGVkIG5vZGVzIG11c3QgYmUgbWFya2VkIGFzIHJlcGxhY2luZyBhblxuICogb2xkZXIgQVNUIG5vZGUuIFRoaXMgc2hpbSBhbGxvd3MgcnVubmluZyBhIHRyYW5zZm9ybWF0aW9uIHN0ZXAgdGhhdCdzIGJhc2VkIG9uIGVtaXR0aW5nIG5ldyB0ZXh0XG4gKiBhcyBhIG5vZGUgYmFzZWQgdHJhbnNmb3JtZXIuIEl0IGFjaGlldmVzIHRoYXQgYnkgcnVubmluZyB0aGUgdHJhbnNmb3JtYXRpb24sIGNvbGxlY3RpbmcgYSBzb3VyY2VcbiAqIG1hcHBpbmcgaW4gdGhlIHByb2Nlc3MsIGFuZCB0aGVuIGFmdGVyd2FyZHMgcGFyc2luZyB0aGUgc291cmNlIHRleHQgaW50byBhIG5ldyBBU1QgYW5kIG1hcmtpbmdcbiAqIHRoZSBuZXcgbm9kZXMgYXMgcmVwcmVzZW50YXRpb25zIG9mIHRoZSBvbGQgbm9kZXMgYmFzZWQgb24gdGhlaXIgc291cmNlIG1hcCBwb3NpdGlvbnMuXG4gKlxuICogVGhlIHByb2Nlc3MgbWFya3MgYWxsIG5vZGVzIGFzIHN5bnRoZXNpemVkIGV4Y2VwdCBmb3IgYSBoYW5kZnVsIG9mIHNwZWNpYWwgY2FzZXMgKGlkZW50aWZpZXJzXG4gKiBldGMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHJhbnNmb3JtZXJGcm9tU291cmNlTWFwKFxuICAgIHNvdXJjZUJhc2VkVHJhbnNmb3JtZXI6IChzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLCBzb3VyY2VNYXBwZXI6IFNvdXJjZU1hcHBlcikgPT5cbiAgICAgICAgc3RyaW5nKTogdHMuVHJhbnNmb3JtZXJGYWN0b3J5PHRzLlNvdXJjZUZpbGU+IHtcbiAgcmV0dXJuIChjb250ZXh0KSA9PiAoc291cmNlRmlsZSkgPT4ge1xuICAgIGNvbnN0IHNvdXJjZU1hcHBlciA9IG5ldyBOb2RlU291cmNlTWFwcGVyKCk7XG4gICAgY29uc3QgdHJhbnNmb3JtZWRTb3VyY2VUZXh0ID0gc291cmNlQmFzZWRUcmFuc2Zvcm1lcihzb3VyY2VGaWxlLCBzb3VyY2VNYXBwZXIpO1xuICAgIGNvbnN0IG5ld0ZpbGUgPSB0cy5jcmVhdGVTb3VyY2VGaWxlKFxuICAgICAgICBzb3VyY2VGaWxlLmZpbGVOYW1lLCB0cmFuc2Zvcm1lZFNvdXJjZVRleHQsIHRzLlNjcmlwdFRhcmdldC5MYXRlc3QsIHRydWUpO1xuICAgIGNvbnN0IG1hcHBlZEZpbGUgPSB2aXNpdE5vZGUobmV3RmlsZSk7XG4gICAgcmV0dXJuIHVwZGF0ZVNvdXJjZUZpbGVOb2RlKHNvdXJjZUZpbGUsIG1hcHBlZEZpbGUuc3RhdGVtZW50cyk7XG5cbiAgICBmdW5jdGlvbiB2aXNpdE5vZGU8VCBleHRlbmRzIHRzLk5vZGU+KG5vZGU6IFQpOiBUIHtcbiAgICAgIHJldHVybiB2aXNpdE5vZGVXaXRoU3ludGhlc2l6ZWRDb21tZW50cyhjb250ZXh0LCBuZXdGaWxlLCBub2RlLCB2aXNpdE5vZGVJbXBsKSBhcyBUO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZpc2l0Tm9kZUltcGwobm9kZTogdHMuTm9kZSkge1xuICAgICAgaWYgKG5vZGUuZmxhZ3MgJiB0cy5Ob2RlRmxhZ3MuU3ludGhlc2l6ZWQpIHtcbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICB9XG4gICAgICBjb25zdCBvcmlnaW5hbE5vZGUgPSBzb3VyY2VNYXBwZXIuZ2V0T3JpZ2luYWxOb2RlKG5vZGUpO1xuXG4gICAgICAvLyBVc2UgdGhlIG9yaWdpbmFsTm9kZSBmb3I6XG4gICAgICAvLyAtIGxpdGVyYWxzOiBhcyBlLmcuIHR5cGVzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCBzeW50aGV0aWMgcmVnZXggbGl0ZXJhbHNcbiAgICAgIC8vIC0gaWRlbnRpZmllcnM6IGFzIHRoZXkgZG9uJ3QgaGF2ZSBjaGlsZHJlbiBhbmQgYmVoYXZlIHdlbGxcbiAgICAgIC8vICAgIHJlZ2FyZGluZyBjb21tZW50IHN5bnRoZXNpemF0aW9uXG4gICAgICAvLyAtIHR5cGVzOiBhcyB0aGV5IGFyZSBub3QgZW1pdGVkIGFueXdheXNcbiAgICAgIC8vICAgICAgICAgIGFuZCBpdCBsZWFkcyB0byBlcnJvcnMgd2l0aCBgZXh0ZW5kc2AgY2FzZXMuXG4gICAgICAvLyAtIGltcG9ydHMvZXhwb3J0czogYXMgVHlwZVNjcmlwdCB3aWxsIG9ubHkgYXR0ZW1wdCB0byBlbGlkZSB0eXBlIG9ubHlcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICBpbXBvcnRzIGlmIHRoZSBuZXcgbm9kZSBpcyBpZGVudGljYWwgdG8gdGhlIG9yaWdpbmFsIG5vZGUuXG4gICAgICBpZiAob3JpZ2luYWxOb2RlKSB7XG4gICAgICAgIGlmIChpc0xpdGVyYWxLaW5kKG5vZGUua2luZCkgfHwgbm9kZS5raW5kID09PSB0cy5TeW50YXhLaW5kLklkZW50aWZpZXIgfHxcbiAgICAgICAgICAgIGlzVHlwZU5vZGVLaW5kKG5vZGUua2luZCkgfHwgbm9kZS5raW5kID09PSB0cy5TeW50YXhLaW5kLkluZGV4U2lnbmF0dXJlKSB7XG4gICAgICAgICAgcmV0dXJuIG9yaWdpbmFsTm9kZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5raW5kID09PSB0cy5TeW50YXhLaW5kLkltcG9ydERlY2xhcmF0aW9uIHx8XG4gICAgICAgICAgICBub2RlLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24gfHxcbiAgICAgICAgICAgIG5vZGUua2luZCA9PT0gdHMuU3ludGF4S2luZC5FeHBvcnRBc3NpZ25tZW50KSB7XG4gICAgICAgICAgcmV0dXJuIG9yaWdpbmFsTm9kZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHMuaXNFeHBvcnREZWNsYXJhdGlvbihub2RlKSkge1xuICAgICAgICAgIC8vIFJldHVybiB0aGUgb3JpZ2luYWwgbm9kZXMgZm9yIGV4cG9ydCBkZWNsYXJhdGlvbnMsIHVubGVzcyB0aGV5IHdlcmUgZXhwYW5kZWQgZnJvbSBhblxuICAgICAgICAgIC8vIGV4cG9ydCAqIHRvIHNwZWNpZmljIGV4cG9ydGVkIHN5bWJvbHMuXG4gICAgICAgICAgY29uc3Qgb3JpZ2luYWxFeHBvcnQgPSBvcmlnaW5hbE5vZGUgYXMgdHMuRXhwb3J0RGVjbGFyYXRpb247XG4gICAgICAgICAgaWYgKCFub2RlLm1vZHVsZVNwZWNpZmllcikge1xuICAgICAgICAgICAgLy8gZXhwb3J0IHthLCBiLCBjfTtcbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbE5vZGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghIW9yaWdpbmFsRXhwb3J0LmV4cG9ydENsYXVzZSA9PT0gISFub2RlLmV4cG9ydENsYXVzZSkge1xuICAgICAgICAgICAgLy8gVGhpcyBhbHJlYWR5IHdhcyBleHBvcnRlZCB3aXRoIHN5bWJvbHMgKGV4cG9ydCB7Li4ufSkgb3Igd2FzIG5vdCBleHBhbmRlZC5cbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbE5vZGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFJld3JvdGUgZXhwb3J0ICogLT4gZXhwb3J0IHsuLi59LCB0aGUgZXhwb3J0IGRlY2xhcmF0aW9uIG11c3QgYmUgZW1pdHRlZCBpbiB0aGUgdXBkYXRlZFxuICAgICAgICAgIC8vIGZvcm0uXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG5vZGUgPSB0cy52aXNpdEVhY2hDaGlsZChub2RlLCB2aXNpdE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICBub2RlLmZsYWdzIHw9IHRzLk5vZGVGbGFncy5TeW50aGVzaXplZDtcbiAgICAgIG5vZGUucGFyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgdHMuc2V0VGV4dFJhbmdlKG5vZGUsIG9yaWdpbmFsTm9kZSA/IG9yaWdpbmFsTm9kZSA6IHtwb3M6IC0xLCBlbmQ6IC0xfSk7XG4gICAgICB0cy5zZXRPcmlnaW5hbE5vZGUobm9kZSwgb3JpZ2luYWxOb2RlKTtcblxuICAgICAgLy8gTG9vcCBvdmVyIGFsbCBuZXN0ZWQgdHMuTm9kZUFycmF5cyAvXG4gICAgICAvLyB0cy5Ob2RlcyB0aGF0IHdlcmUgbm90IHZpc2l0ZWQgYW5kIHNldCB0aGVpclxuICAgICAgLy8gdGV4dCByYW5nZSB0byAtMSB0byBub3QgZW1pdCB0aGVpciB3aGl0ZXNwYWNlLlxuICAgICAgLy8gU2FkbHksIFR5cGVTY3JpcHQgZG9lcyBub3QgaGF2ZSBhbiBBUEkgZm9yIHRoaXMuLi5cbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnkgVG8gcmVhZCBhbGwgcHJvcGVydGllc1xuICAgICAgY29uc3Qgbm9kZUFueSA9IG5vZGUgYXMge1trZXk6IHN0cmluZ106IGFueX07XG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55IFRvIHJlYWQgYWxsIHByb3BlcnRpZXNcbiAgICAgIGNvbnN0IG9yaWdpbmFsTm9kZUFueSA9IG9yaWdpbmFsTm9kZSBhcyB7W2tleTogc3RyaW5nXTogYW55fTtcbiAgICAgIGZvciAoY29uc3QgcHJvcCBpbiBub2RlQW55KSB7XG4gICAgICAgIGlmIChub2RlQW55Lmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICAgICAgICAgIGNvbnN0IHZhbHVlID0gbm9kZUFueVtwcm9wXTtcbiAgICAgICAgICBpZiAoaXNOb2RlQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAvLyByZXNldCB0aGUgcG9zL2VuZCBvZiBhbGwgTm9kZUFycmF5cyBzbyB0aGF0IHdlIGRvbid0IGVtaXQgY29tbWVudHNcbiAgICAgICAgICAgIC8vIGZyb20gdGhlbS5cbiAgICAgICAgICAgIHRzLnNldFRleHRSYW5nZSh2YWx1ZSwge3BvczogLTEsIGVuZDogLTF9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICBpc1Rva2VuKHZhbHVlKSAmJiAhKHZhbHVlLmZsYWdzICYgdHMuTm9kZUZsYWdzLlN5bnRoZXNpemVkKSAmJlxuICAgICAgICAgICAgICB2YWx1ZS5nZXRTb3VyY2VGaWxlKCkgIT09IHNvdXJjZUZpbGUpIHtcbiAgICAgICAgICAgIC8vIFVzZSB0aGUgb3JpZ2luYWwgVGV4dFJhbmdlIGZvciBhbGwgbm9uIHZpc2l0ZWQgdG9rZW5zIChlLmcuIHRoZVxuICAgICAgICAgICAgLy8gYEJpbmFyeUV4cHJlc3Npb24ub3BlcmF0b3JUb2tlbmApIHRvIHByZXNlcnZlIHRoZSBmb3JtYXR0aW5nXG4gICAgICAgICAgICBjb25zdCB0ZXh0UmFuZ2UgPSBvcmlnaW5hbE5vZGUgPyBvcmlnaW5hbE5vZGVBbnlbcHJvcF0gOiB7cG9zOiAtMSwgZW5kOiAtMX07XG4gICAgICAgICAgICB0cy5zZXRUZXh0UmFuZ2UodmFsdWUsIHRleHRSYW5nZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFNvdXJjZU1hcHBlcmAgdGhhdCBzdG9yZXMgYW5kIHJldHJpZXZlcyBtYXBwaW5nc1xuICogdG8gb3JpZ2luYWwgbm9kZXMuXG4gKi9cbmNsYXNzIE5vZGVTb3VyY2VNYXBwZXIgaW1wbGVtZW50cyBTb3VyY2VNYXBwZXIge1xuICBwcml2YXRlIG9yaWdpbmFsTm9kZUJ5R2VuZXJhdGVkUmFuZ2UgPSBuZXcgTWFwPHN0cmluZywgdHMuTm9kZT4oKTtcbiAgcHJpdmF0ZSBnZW5TdGFydFBvc2l0aW9ucyA9IG5ldyBNYXA8dHMuTm9kZSwgbnVtYmVyPigpO1xuICAvKiogQ29uY2VwdHVhbCBvZmZzZXQgZm9yIGFsbCBub2RlcyBpbiB0aGlzIG1hcHBpbmcuICovXG4gIHByaXZhdGUgb2Zmc2V0ID0gMDtcblxuICBwcml2YXRlIGFkZEZ1bGxOb2RlUmFuZ2Uobm9kZTogdHMuTm9kZSwgZ2VuU3RhcnRQb3M6IG51bWJlcikge1xuICAgIHRoaXMub3JpZ2luYWxOb2RlQnlHZW5lcmF0ZWRSYW5nZS5zZXQoXG4gICAgICAgIHRoaXMubm9kZUNhY2hlS2V5KG5vZGUua2luZCwgZ2VuU3RhcnRQb3MsIGdlblN0YXJ0UG9zICsgKG5vZGUuZ2V0RW5kKCkgLSBub2RlLmdldFN0YXJ0KCkpKSxcbiAgICAgICAgbm9kZSk7XG4gICAgbm9kZS5mb3JFYWNoQ2hpbGQoXG4gICAgICAgIGNoaWxkID0+IHRoaXMuYWRkRnVsbE5vZGVSYW5nZShjaGlsZCwgZ2VuU3RhcnRQb3MgKyAoY2hpbGQuZ2V0U3RhcnQoKSAtIG5vZGUuZ2V0U3RhcnQoKSkpKTtcbiAgfVxuXG4gIHNoaWZ0QnlPZmZzZXQob2Zmc2V0OiBudW1iZXIpIHtcbiAgICB0aGlzLm9mZnNldCArPSBvZmZzZXQ7XG4gIH1cblxuICBhZGRNYXBwaW5nKFxuICAgICAgb3JpZ2luYWxOb2RlOiB0cy5Ob2RlLCBvcmlnaW5hbDogU291cmNlUG9zaXRpb24sIGdlbmVyYXRlZDogU291cmNlUG9zaXRpb24sIGxlbmd0aDogbnVtYmVyKSB7XG4gICAgbGV0IG9yaWdpbmFsU3RhcnRQb3MgPSBvcmlnaW5hbC5wb3NpdGlvbjtcbiAgICBsZXQgZ2VuU3RhcnRQb3MgPSBnZW5lcmF0ZWQucG9zaXRpb247XG4gICAgaWYgKG9yaWdpbmFsU3RhcnRQb3MgPj0gb3JpZ2luYWxOb2RlLmdldEZ1bGxTdGFydCgpICYmXG4gICAgICAgIG9yaWdpbmFsU3RhcnRQb3MgPD0gb3JpZ2luYWxOb2RlLmdldFN0YXJ0KCkpIHtcbiAgICAgIC8vIGFsd2F5cyB1c2UgdGhlIG5vZGUuZ2V0U3RhcnQoKSBmb3IgdGhlIGluZGV4LFxuICAgICAgLy8gYXMgY29tbWVudHMgYW5kIHdoaXRlc3BhY2VzIG1pZ2h0IGRpZmZlciBiZXR3ZWVuIHRoZSBvcmlnaW5hbCBhbmQgdHJhbnNmb3JtZWQgY29kZS5cbiAgICAgIGNvbnN0IGRpZmZUb1N0YXJ0ID0gb3JpZ2luYWxOb2RlLmdldFN0YXJ0KCkgLSBvcmlnaW5hbFN0YXJ0UG9zO1xuICAgICAgb3JpZ2luYWxTdGFydFBvcyArPSBkaWZmVG9TdGFydDtcbiAgICAgIGdlblN0YXJ0UG9zICs9IGRpZmZUb1N0YXJ0O1xuICAgICAgbGVuZ3RoIC09IGRpZmZUb1N0YXJ0O1xuICAgICAgdGhpcy5nZW5TdGFydFBvc2l0aW9ucy5zZXQob3JpZ2luYWxOb2RlLCBnZW5TdGFydFBvcyk7XG4gICAgfVxuICAgIGlmIChvcmlnaW5hbFN0YXJ0UG9zICsgbGVuZ3RoID09PSBvcmlnaW5hbE5vZGUuZ2V0RW5kKCkpIHtcbiAgICAgIHRoaXMub3JpZ2luYWxOb2RlQnlHZW5lcmF0ZWRSYW5nZS5zZXQoXG4gICAgICAgICAgdGhpcy5ub2RlQ2FjaGVLZXkoXG4gICAgICAgICAgICAgIG9yaWdpbmFsTm9kZS5raW5kLCB0aGlzLmdlblN0YXJ0UG9zaXRpb25zLmdldChvcmlnaW5hbE5vZGUpISwgZ2VuU3RhcnRQb3MgKyBsZW5ndGgpLFxuICAgICAgICAgIG9yaWdpbmFsTm9kZSk7XG4gICAgfVxuICAgIG9yaWdpbmFsTm9kZS5mb3JFYWNoQ2hpbGQoKGNoaWxkKSA9PiB7XG4gICAgICBpZiAoY2hpbGQuZ2V0U3RhcnQoKSA+PSBvcmlnaW5hbFN0YXJ0UG9zICYmIGNoaWxkLmdldEVuZCgpIDw9IG9yaWdpbmFsU3RhcnRQb3MgKyBsZW5ndGgpIHtcbiAgICAgICAgdGhpcy5hZGRGdWxsTm9kZVJhbmdlKGNoaWxkLCBnZW5TdGFydFBvcyArIChjaGlsZC5nZXRTdGFydCgpIC0gb3JpZ2luYWxTdGFydFBvcykpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqIEZvciB0aGUgbmV3bHkgcGFyc2VkIGBub2RlYCwgZmluZCB3aGF0IG5vZGUgY29ycmVzcG9uZGVkIHRvIGl0IGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgdGV4dC4gKi9cbiAgZ2V0T3JpZ2luYWxOb2RlKG5vZGU6IHRzLk5vZGUpOiB0cy5Ob2RlfHVuZGVmaW5lZCB7XG4gICAgLy8gQXBwbHkgdGhlIG9mZnNldDogaWYgdGhlcmUgaXMgYW4gb2Zmc2V0ID4gMCwgYWxsIG5vZGVzIGFyZSBjb25jZXB0dWFsbHkgc2hpZnRlZCBieSBzbyBtYW55XG4gICAgLy8gY2hhcmFjdGVycyBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZS5cbiAgICBsZXQgc3RhcnQgPSBub2RlLmdldFN0YXJ0KCkgLSB0aGlzLm9mZnNldDtcbiAgICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgICAvLyBTcGVjaWFsIGNhc2U6IHRoZSBzb3VyY2UgZmlsZSBjb25jZXB0dWFsbHkgc3BhbnMgYWxsIG9mIHRoZSBmaWxlLCBpbmNsdWRpbmcgYW55IGFkZGVkXG4gICAgICAvLyBwcmVmaXggYWRkZWQgdGhhdCBjYXVzZXMgb2Zmc2V0IHRvIGJlIHNldC5cbiAgICAgIGlmIChub2RlLmtpbmQgIT09IHRzLlN5bnRheEtpbmQuU291cmNlRmlsZSkge1xuICAgICAgICAvLyBOb2RlcyB3aXRoaW4gWzAsIG9mZnNldF0gb2YgdGhlIG5ldyBmaWxlIChzdGFydCA8IDApIGlzIHRoZSBhZGRpdGlvbmFsIHByZWZpeCB0aGF0IGhhcyBub1xuICAgICAgICAvLyBjb3JyZXNwb25kaW5nIG5vZGVzIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIHNvIHJldHVybiB1bmRlZmluZWQuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBzdGFydCA9IDA7XG4gICAgfVxuICAgIGNvbnN0IGVuZCA9IG5vZGUuZ2V0RW5kKCkgLSB0aGlzLm9mZnNldDtcbiAgICBjb25zdCBrZXkgPSB0aGlzLm5vZGVDYWNoZUtleShub2RlLmtpbmQsIHN0YXJ0LCBlbmQpO1xuICAgIHJldHVybiB0aGlzLm9yaWdpbmFsTm9kZUJ5R2VuZXJhdGVkUmFuZ2UuZ2V0KGtleSk7XG4gIH1cblxuICBwcml2YXRlIG5vZGVDYWNoZUtleShraW5kOiB0cy5TeW50YXhLaW5kLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke2tpbmR9IyR7c3RhcnR9IyR7ZW5kfWA7XG4gIH1cbn1cblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuZnVuY3Rpb24gaXNOb2RlQXJyYXkodmFsdWU6IGFueSk6IHZhbHVlIGlzIHRzLk5vZGVBcnJheTxhbnk+IHtcbiAgY29uc3QgYW55VmFsdWUgPSB2YWx1ZTtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpICYmIGFueVZhbHVlLnBvcyAhPT0gdW5kZWZpbmVkICYmIGFueVZhbHVlLmVuZCAhPT0gdW5kZWZpbmVkO1xufVxuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG5mdW5jdGlvbiBpc1Rva2VuKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyB0cy5Ub2tlbjxhbnk+IHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZS5raW5kID49IHRzLlN5bnRheEtpbmQuRmlyc3RUb2tlbiAmJlxuICAgICAgdmFsdWUua2luZCA8PSB0cy5TeW50YXhLaW5kLkxhc3RUb2tlbjtcbn1cblxuLy8gQ29waWVkIGZyb20gVHlwZVNjcmlwdFxuZnVuY3Rpb24gaXNMaXRlcmFsS2luZChraW5kOiB0cy5TeW50YXhLaW5kKSB7XG4gIHJldHVybiB0cy5TeW50YXhLaW5kLkZpcnN0TGl0ZXJhbFRva2VuIDw9IGtpbmQgJiYga2luZCA8PSB0cy5TeW50YXhLaW5kLkxhc3RMaXRlcmFsVG9rZW47XG59XG4iXX0=

@@ -17,4 +17,4 @@ /// <amd-module name="tsickle/src/typescript" />

import * as ts from 'typescript';
export { __String, addSyntheticTrailingComment, AssertionExpression, BinaryExpression, Block, CallExpression, CancellationToken, ClassDeclaration, ClassElement, ClassLikeDeclaration, CommentRange, CompilerHost, CompilerOptions, ConstructorDeclaration, createArrayLiteral, createArrayTypeNode, createCompilerHost, createIdentifier, createKeywordTypeNode, createNodeArray, createNotEmittedStatement, createObjectLiteral, createProgram, createProperty, createPropertyAssignment, createPropertySignature, createSourceFile, createToken, createTypeLiteralNode, createTypeReferenceNode, CustomTransformers, Declaration, DeclarationStatement, DeclarationWithTypeParameters, Decorator, Diagnostic, DiagnosticCategory, ElementAccessExpression, EmitFlags, EmitResult, EntityName, EnumDeclaration, EnumMember, ExportDeclaration, ExportSpecifier, Expression, ExpressionStatement, flattenDiagnosticMessageText, forEachChild, FunctionDeclaration, FunctionLikeDeclaration, GetAccessorDeclaration, getCombinedModifierFlags, getLeadingCommentRanges, getLineAndCharacterOfPosition, getMutableClone, getOriginalNode, getPreEmitDiagnostics, getSyntheticLeadingComments, getSyntheticTrailingComments, getTrailingCommentRanges, Identifier, ImportDeclaration, ImportEqualsDeclaration, ImportSpecifier, InterfaceDeclaration, isBinaryExpression, isExportDeclaration, isExpressionStatement, isIdentifier, MethodDeclaration, ModifierFlags, ModuleBlock, ModuleDeclaration, ModuleKind, ModuleResolutionHost, NamedDeclaration, NamedImports, Node, NodeArray, NodeFlags, NonNullExpression, NotEmittedStatement, ObjectLiteralElementLike, ObjectLiteralExpression, ParameterDeclaration, parseCommandLine, parseJsonConfigFileContent, Program, PropertyAccessExpression, PropertyAssignment, PropertyDeclaration, PropertyName, PropertySignature, readConfigFile, resolveModuleName, ScriptTarget, SetAccessorDeclaration, setEmitFlags, setOriginalNode, setSourceMapRange, setSyntheticLeadingComments, setSyntheticTrailingComments, setTextRange, SignatureDeclaration, SourceFile, Statement, StringLiteral, Symbol, SymbolFlags, SyntaxKind, SynthesizedComment, sys, Token, TransformationContext, Transformer, TransformerFactory, Type, TypeAliasDeclaration, TypeChecker, TypeElement, TypeFlags, TypeNode, TypeReference, UnionType, updateBlock, VariableDeclaration, VariableStatement, visitEachChild, visitLexicalEnvironment, Visitor, WriteFileCallback } from 'typescript';
export { __String, addSyntheticTrailingComment, AssertionExpression, BinaryExpression, Block, CallExpression, CancellationToken, ClassDeclaration, ClassElement, ClassLikeDeclaration, CommentRange, CompilerHost, CompilerOptions, ConstructorDeclaration, createArrayLiteral, createArrayTypeNode, createCompilerHost, createIdentifier, createKeywordTypeNode, createNodeArray, createNotEmittedStatement, createObjectLiteral, createProgram, createProperty, createPropertyAssignment, createPropertySignature, createSourceFile, createToken, createTypeLiteralNode, createTypeReferenceNode, CustomTransformers, Declaration, DeclarationStatement, DeclarationWithTypeParameters, Decorator, Diagnostic, DiagnosticCategory, ElementAccessExpression, EmitFlags, EmitResult, EntityName, EnumDeclaration, EnumMember, ExportDeclaration, ExportSpecifier, Expression, ExpressionStatement, flattenDiagnosticMessageText, forEachChild, FunctionDeclaration, FunctionLikeDeclaration, GetAccessorDeclaration, getCombinedModifierFlags, getLeadingCommentRanges, getLineAndCharacterOfPosition, getMutableClone, getOriginalNode, getPreEmitDiagnostics, getSyntheticLeadingComments, getSyntheticTrailingComments, getTrailingCommentRanges, Identifier, ImportDeclaration, ImportEqualsDeclaration, ImportSpecifier, InterfaceDeclaration, isBinaryExpression, isCallExpression, isExportDeclaration, isExpressionStatement, isIdentifier, isVariableStatement, MethodDeclaration, ModifierFlags, ModuleBlock, ModuleDeclaration, ModuleKind, ModuleResolutionHost, NamedDeclaration, NamedImports, Node, NodeArray, NodeFlags, NonNullExpression, NotEmittedStatement, ObjectLiteralElementLike, ObjectLiteralExpression, ParameterDeclaration, parseCommandLine, parseJsonConfigFileContent, Program, PropertyAccessExpression, PropertyAssignment, PropertyDeclaration, PropertyName, PropertySignature, readConfigFile, resolveModuleName, ScriptTarget, SetAccessorDeclaration, setEmitFlags, setOriginalNode, setSourceMapRange, setSyntheticLeadingComments, setSyntheticTrailingComments, setTextRange, SignatureDeclaration, SourceFile, Statement, StringLiteral, Symbol, SymbolFlags, SyntaxKind, SynthesizedComment, sys, Token, TransformationContext, Transformer, TransformerFactory, Type, TypeAliasDeclaration, TypeChecker, TypeElement, TypeFlags, TypeNode, TypeReference, UnionType, updateBlock, VariableDeclaration, VariableStatement, visitEachChild, visitLexicalEnvironment, Visitor, WriteFileCallback } from 'typescript';
export declare function getEmitFlags(node: ts.Node): ts.EmitFlags | undefined;
export declare let updateProperty: typeof ts.updateProperty;

@@ -76,5 +76,7 @@ /**

exports.isBinaryExpression = typescript_1.isBinaryExpression;
exports.isCallExpression = typescript_1.isCallExpression;
exports.isExportDeclaration = typescript_1.isExportDeclaration;
exports.isExpressionStatement = typescript_1.isExpressionStatement;
exports.isIdentifier = typescript_1.isIdentifier;
exports.isVariableStatement = typescript_1.isVariableStatement;
exports.ModifierFlags = typescript_1.ModifierFlags;

@@ -119,2 +121,2 @@ exports.ModuleKind = typescript_1.ModuleKind;

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90eXBlc2NyaXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNIOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVILCtFQUErRTtJQUUvRSwrQkFBaUM7SUFLakMseUNBQXUzRTtJQUFyMkUsbURBQUEsMkJBQTJCLENBQUE7SUFBOE0sMENBQUEsa0JBQWtCLENBQUE7SUFBRSwyQ0FBQSxtQkFBbUIsQ0FBQTtJQUFFLDBDQUFBLGtCQUFrQixDQUFBO0lBQUUsd0NBQUEsZ0JBQWdCLENBQUE7SUFBRSw2Q0FBQSxxQkFBcUIsQ0FBQTtJQUFFLHVDQUFBLGVBQWUsQ0FBQTtJQUFFLGlEQUFBLHlCQUF5QixDQUFBO0lBQUUsMkNBQUEsbUJBQW1CLENBQUE7SUFBRSxxQ0FBQSxhQUFhLENBQUE7SUFBRSxzQ0FBQSxjQUFjLENBQUE7SUFBRSxnREFBQSx3QkFBd0IsQ0FBQTtJQUFFLCtDQUFBLHVCQUF1QixDQUFBO0lBQUUsd0NBQUEsZ0JBQWdCLENBQUE7SUFBRSxtQ0FBQSxXQUFXLENBQUE7SUFBRSw2Q0FBQSxxQkFBcUIsQ0FBQTtJQUFFLCtDQUFBLHVCQUF1QixDQUFBO0lBQStHLDBDQUFBLGtCQUFrQixDQUFBO0lBQTJCLGlDQUFBLFNBQVMsQ0FBQTtJQUE0SCxvREFBQSw0QkFBNEIsQ0FBQTtJQUFFLG9DQUFBLFlBQVksQ0FBQTtJQUF3RSxnREFBQSx3QkFBd0IsQ0FBQTtJQUFFLCtDQUFBLHVCQUF1QixDQUFBO0lBQUUscURBQUEsNkJBQTZCLENBQUE7SUFBRSx1Q0FBQSxlQUFlLENBQUE7SUFBRSx1Q0FBQSxlQUFlLENBQUE7SUFBRSw2Q0FBQSxxQkFBcUIsQ0FBQTtJQUFFLG1EQUFBLDJCQUEyQixDQUFBO0lBQUUsb0RBQUEsNEJBQTRCLENBQUE7SUFBRSxnREFBQSx3QkFBd0IsQ0FBQTtJQUFpRywwQ0FBQSxrQkFBa0IsQ0FBQTtJQUFFLDJDQUFBLG1CQUFtQixDQUFBO0lBQUUsNkNBQUEscUJBQXFCLENBQUE7SUFBRSxvQ0FBQSxZQUFZLENBQUE7SUFBcUIscUNBQUEsYUFBYSxDQUFBO0lBQWtDLGtDQUFBLFVBQVUsQ0FBQTtJQUF5RSxpQ0FBQSxTQUFTLENBQUE7SUFBbUgsd0NBQUEsZ0JBQWdCLENBQUE7SUFBRSxrREFBQSwwQkFBMEIsQ0FBQTtJQUErRyxzQ0FBQSxjQUFjLENBQUE7SUFBRSx5Q0FBQSxpQkFBaUIsQ0FBQTtJQUFFLG9DQUFBLFlBQVksQ0FBQTtJQUEwQixvQ0FBQSxZQUFZLENBQUE7SUFBRSx1Q0FBQSxlQUFlLENBQUE7SUFBRSx5Q0FBQSxpQkFBaUIsQ0FBQTtJQUFFLG1EQUFBLDJCQUEyQixDQUFBO0lBQUUsb0RBQUEsNEJBQTRCLENBQUE7SUFBRSxvQ0FBQSxZQUFZLENBQUE7SUFBc0UsbUNBQUEsV0FBVyxDQUFBO0lBQUUsa0NBQUEsVUFBVSxDQUFBO0lBQXNCLDJCQUFBLEdBQUcsQ0FBQTtJQUF1SCxpQ0FBQSxTQUFTLENBQUE7SUFBc0MsbUNBQUEsV0FBVyxDQUFBO0lBQTBDLHNDQUFBLGNBQWMsQ0FBQTtJQUFFLCtDQUFBLHVCQUF1QixDQUFBO0lBRXYwRSxrREFBa0Q7SUFDbEQsNkVBQTZFO0lBQzdFLHlCQUF5QjtJQUN6QixzQkFBNkIsSUFBYTtRQUN4QyxNQUFNLENBQUUsRUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRkQsb0NBRUM7SUFFRCw4RkFBOEY7SUFDOUYsY0FBYztJQUNILFFBQUEsY0FBYyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUM7SUFFeEMsSUFBQSxxQ0FBc0MsRUFBckMsYUFBSyxFQUFFLGFBQUssQ0FBMEI7SUFDN0MsRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLEdBQUcsSUFBSSxLQUFLLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFNLGtCQUFnQixHQUFHLEVBQUUsQ0FBQyxjQUFtRCxDQUFDO1FBQ2hGLHNCQUFjLEdBQUcsVUFBQyxJQUE0QixFQUFFLFVBQWlELEVBQy9FLFNBQStDLEVBQUUsSUFBNEIsRUFDN0UsYUFBeUMsRUFBRSxJQUEyQixFQUN0RSxXQUFvQztZQUNwRCxNQUFNLENBQUMsa0JBQWdCLENBQ1osSUFBdUMsRUFBRSxVQUFxQyxFQUM5RSxTQUFnQixFQUFFLElBQVcsRUFBRSxJQUFXLEVBQUUsV0FBa0IsQ0FBUSxDQUFDO1FBQ3BGLENBQUMsQ0FBQztJQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgQWJzdHJhY3Rpb24gb3ZlciB0aGUgVHlwZVNjcmlwdCBBUEkgdGhhdCBtYWtlcyBtdWx0aXBsZVxuICogdmVyc2lvbnMgb2YgVHlwZVNjcmlwdCBhcHBlYXIgdG8gYmUgaW50ZXJvcGVyYWJsZS4gQW55IHRpbWUgYSBicmVha2luZyBjaGFuZ2VcbiAqIGluIFR5cGVTY3JpcHQgYWZmZWN0cyBUc2lja2xlIGNvZGUsIHdlIHNob3VsZCBleHRlbmQgdGhpcyBzaGltIHRvIHByZXNlbnQgYW5cbiAqIHVuYnJva2VuIEFQSS5cbiAqIEFsbCBjb2RlIGluIHRzaWNrbGUgc2hvdWxkIGltcG9ydCBmcm9tIHRoaXMgbG9jYXRpb24sIG5vdCBmcm9tICd0eXBlc2NyaXB0Jy5cbiAqL1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZTpuby1hbnkgV2UgbmVlZCB0byBkbyB2YXJpb3VzIHVuc2FmZSBjYXN0cyBiZXR3ZWVuIFRTIHZlcnNpb25zXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG4vLyBOb3RlLCB0aGlzIGltcG9ydCBkZXBlbmRzIG9uIGEgZ2VucnVsZSBjb3B5aW5nIHRoZSAuZC50cyBmaWxlIHRvIHRoaXMgcGFja2FnZVxuaW1wb3J0ICogYXMgdHMyNCBmcm9tICcuL3R5cGVzY3JpcHQtMi40JztcblxuZXhwb3J0IHtfX1N0cmluZywgYWRkU3ludGhldGljVHJhaWxpbmdDb21tZW50LCBBc3NlcnRpb25FeHByZXNzaW9uLCBCaW5hcnlFeHByZXNzaW9uLCBCbG9jaywgQ2FsbEV4cHJlc3Npb24sIENhbmNlbGxhdGlvblRva2VuLCBDbGFzc0RlY2xhcmF0aW9uLCBDbGFzc0VsZW1lbnQsIENsYXNzTGlrZURlY2xhcmF0aW9uLCBDb21tZW50UmFuZ2UsIENvbXBpbGVySG9zdCwgQ29tcGlsZXJPcHRpb25zLCBDb25zdHJ1Y3RvckRlY2xhcmF0aW9uLCBjcmVhdGVBcnJheUxpdGVyYWwsIGNyZWF0ZUFycmF5VHlwZU5vZGUsIGNyZWF0ZUNvbXBpbGVySG9zdCwgY3JlYXRlSWRlbnRpZmllciwgY3JlYXRlS2V5d29yZFR5cGVOb2RlLCBjcmVhdGVOb2RlQXJyYXksIGNyZWF0ZU5vdEVtaXR0ZWRTdGF0ZW1lbnQsIGNyZWF0ZU9iamVjdExpdGVyYWwsIGNyZWF0ZVByb2dyYW0sIGNyZWF0ZVByb3BlcnR5LCBjcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQsIGNyZWF0ZVByb3BlcnR5U2lnbmF0dXJlLCBjcmVhdGVTb3VyY2VGaWxlLCBjcmVhdGVUb2tlbiwgY3JlYXRlVHlwZUxpdGVyYWxOb2RlLCBjcmVhdGVUeXBlUmVmZXJlbmNlTm9kZSwgQ3VzdG9tVHJhbnNmb3JtZXJzLCBEZWNsYXJhdGlvbiwgRGVjbGFyYXRpb25TdGF0ZW1lbnQsIERlY2xhcmF0aW9uV2l0aFR5cGVQYXJhbWV0ZXJzLCBEZWNvcmF0b3IsIERpYWdub3N0aWMsIERpYWdub3N0aWNDYXRlZ29yeSwgRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24sIEVtaXRGbGFncywgRW1pdFJlc3VsdCwgRW50aXR5TmFtZSwgRW51bURlY2xhcmF0aW9uLCBFbnVtTWVtYmVyLCBFeHBvcnREZWNsYXJhdGlvbiwgRXhwb3J0U3BlY2lmaWVyLCBFeHByZXNzaW9uLCBFeHByZXNzaW9uU3RhdGVtZW50LCBmbGF0dGVuRGlhZ25vc3RpY01lc3NhZ2VUZXh0LCBmb3JFYWNoQ2hpbGQsIEZ1bmN0aW9uRGVjbGFyYXRpb24sIEZ1bmN0aW9uTGlrZURlY2xhcmF0aW9uLCBHZXRBY2Nlc3NvckRlY2xhcmF0aW9uLCBnZXRDb21iaW5lZE1vZGlmaWVyRmxhZ3MsIGdldExlYWRpbmdDb21tZW50UmFuZ2VzLCBnZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbiwgZ2V0TXV0YWJsZUNsb25lLCBnZXRPcmlnaW5hbE5vZGUsIGdldFByZUVtaXREaWFnbm9zdGljcywgZ2V0U3ludGhldGljTGVhZGluZ0NvbW1lbnRzLCBnZXRTeW50aGV0aWNUcmFpbGluZ0NvbW1lbnRzLCBnZXRUcmFpbGluZ0NvbW1lbnRSYW5nZXMsIElkZW50aWZpZXIsIEltcG9ydERlY2xhcmF0aW9uLCBJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbiwgSW1wb3J0U3BlY2lmaWVyLCBJbnRlcmZhY2VEZWNsYXJhdGlvbiwgaXNCaW5hcnlFeHByZXNzaW9uLCBpc0V4cG9ydERlY2xhcmF0aW9uLCBpc0V4cHJlc3Npb25TdGF0ZW1lbnQsIGlzSWRlbnRpZmllciwgTWV0aG9kRGVjbGFyYXRpb24sIE1vZGlmaWVyRmxhZ3MsIE1vZHVsZUJsb2NrLCBNb2R1bGVEZWNsYXJhdGlvbiwgTW9kdWxlS2luZCwgTW9kdWxlUmVzb2x1dGlvbkhvc3QsIE5hbWVkRGVjbGFyYXRpb24sIE5hbWVkSW1wb3J0cywgTm9kZSwgTm9kZUFycmF5LCBOb2RlRmxhZ3MsIE5vbk51bGxFeHByZXNzaW9uLCBOb3RFbWl0dGVkU3RhdGVtZW50LCBPYmplY3RMaXRlcmFsRWxlbWVudExpa2UsIE9iamVjdExpdGVyYWxFeHByZXNzaW9uLCBQYXJhbWV0ZXJEZWNsYXJhdGlvbiwgcGFyc2VDb21tYW5kTGluZSwgcGFyc2VKc29uQ29uZmlnRmlsZUNvbnRlbnQsIFByb2dyYW0sIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiwgUHJvcGVydHlBc3NpZ25tZW50LCBQcm9wZXJ0eURlY2xhcmF0aW9uLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2lnbmF0dXJlLCByZWFkQ29uZmlnRmlsZSwgcmVzb2x2ZU1vZHVsZU5hbWUsIFNjcmlwdFRhcmdldCwgU2V0QWNjZXNzb3JEZWNsYXJhdGlvbiwgc2V0RW1pdEZsYWdzLCBzZXRPcmlnaW5hbE5vZGUsIHNldFNvdXJjZU1hcFJhbmdlLCBzZXRTeW50aGV0aWNMZWFkaW5nQ29tbWVudHMsIHNldFN5bnRoZXRpY1RyYWlsaW5nQ29tbWVudHMsIHNldFRleHRSYW5nZSwgU2lnbmF0dXJlRGVjbGFyYXRpb24sIFNvdXJjZUZpbGUsIFN0YXRlbWVudCwgU3RyaW5nTGl0ZXJhbCwgU3ltYm9sLCBTeW1ib2xGbGFncywgU3ludGF4S2luZCwgU3ludGhlc2l6ZWRDb21tZW50LCBzeXMsIFRva2VuLCBUcmFuc2Zvcm1hdGlvbkNvbnRleHQsIFRyYW5zZm9ybWVyLCBUcmFuc2Zvcm1lckZhY3RvcnksIFR5cGUsIFR5cGVBbGlhc0RlY2xhcmF0aW9uLCBUeXBlQ2hlY2tlciwgVHlwZUVsZW1lbnQsIFR5cGVGbGFncywgVHlwZU5vZGUsIFR5cGVSZWZlcmVuY2UsIFVuaW9uVHlwZSwgdXBkYXRlQmxvY2ssIFZhcmlhYmxlRGVjbGFyYXRpb24sIFZhcmlhYmxlU3RhdGVtZW50LCB2aXNpdEVhY2hDaGlsZCwgdmlzaXRMZXhpY2FsRW52aXJvbm1lbnQsIFZpc2l0b3IsIFdyaXRlRmlsZUNhbGxiYWNrfSBmcm9tICd0eXBlc2NyaXB0JztcblxuLy8gZ2V0RW1pdEZsYWdzIGlzIG5vdyBwcml2YXRlIHN0YXJ0aW5nIGluIFRTIDIuNS5cbi8vIFNvIHdlIGRlZmluZSBvdXIgb3duIG1ldGhvZCB0aGF0IGNhbGxzIHRocm91Z2ggdG8gVHlwZVNjcmlwdCB0byBkZWZlYXQgdGhlXG4vLyB2aXNpYmlsaXR5IGNvbnN0cmFpbnQuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW1pdEZsYWdzKG5vZGU6IHRzLk5vZGUpOiB0cy5FbWl0RmxhZ3N8dW5kZWZpbmVkIHtcbiAgcmV0dXJuICh0cyBhcyBhbnkpLmdldEVtaXRGbGFncyhub2RlKTtcbn1cblxuLy8gQmV0d2VlbiBUeXBlU2NyaXB0IDIuNCBhbmQgMi41IHVwZGF0ZVByb3BlcnR5IHdhcyBtb2RpZmllZC4gSWYgY2FsbGVkIHdpdGggMi40IHJlLW9yZGVyIHRoZVxuLy8gcGFyYW1ldGVycy5cbmV4cG9ydCBsZXQgdXBkYXRlUHJvcGVydHkgPSB0cy51cGRhdGVQcm9wZXJ0eTtcblxuY29uc3QgW21ham9yLCBtaW5vcl0gPSB0cy52ZXJzaW9uLnNwbGl0KCcuJyk7XG5pZiAobWFqb3IgPT09ICcyJyAmJiBtaW5vciA9PT0gJzQnKSB7XG4gIGNvbnN0IHVwZGF0ZVByb3BlcnR5MjQgPSB0cy51cGRhdGVQcm9wZXJ0eSBhcyBhbnkgYXMgdHlwZW9mIHRzMjQudXBkYXRlUHJvcGVydHk7XG4gIHVwZGF0ZVByb3BlcnR5ID0gKG5vZGU6IHRzLlByb3BlcnR5RGVjbGFyYXRpb24sIGRlY29yYXRvcnM6IFJlYWRvbmx5QXJyYXk8dHMuRGVjb3JhdG9yPnx1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyczogUmVhZG9ubHlBcnJheTx0cy5Nb2RpZmllcj58dW5kZWZpbmVkLCBuYW1lOiBzdHJpbmd8dHMuUHJvcGVydHlOYW1lLFxuICAgICAgICAgICAgICAgICAgICBxdWVzdGlvblRva2VuOiB0cy5RdWVzdGlvblRva2VufHVuZGVmaW5lZCwgdHlwZTogdHMuVHlwZU5vZGV8dW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXplcjogdHMuRXhwcmVzc2lvbnx1bmRlZmluZWQpOiB0cy5Qcm9wZXJ0eURlY2xhcmF0aW9uID0+IHtcbiAgICByZXR1cm4gdXBkYXRlUHJvcGVydHkyNChcbiAgICAgICAgICAgICAgIG5vZGUgYXMgYW55IGFzIHRzMjQuUHJvcGVydHlEZWNsYXJhdGlvbiwgZGVjb3JhdG9ycyBhcyBhbnkgYXMgdHMyNC5EZWNvcmF0b3JbXSxcbiAgICAgICAgICAgICAgIG1vZGlmaWVycyBhcyBhbnksIG5hbWUgYXMgYW55LCB0eXBlIGFzIGFueSzCoGluaXRpYWxpemVyIGFzIGFueSkgYXMgYW55O1xuICB9O1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90eXBlc2NyaXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNIOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVILCtFQUErRTtJQUUvRSwrQkFBaUM7SUFLakMseUNBQTg1RTtJQUE1NEUsbURBQUEsMkJBQTJCLENBQUE7SUFBOE0sMENBQUEsa0JBQWtCLENBQUE7SUFBRSwyQ0FBQSxtQkFBbUIsQ0FBQTtJQUFFLDBDQUFBLGtCQUFrQixDQUFBO0lBQUUsd0NBQUEsZ0JBQWdCLENBQUE7SUFBRSw2Q0FBQSxxQkFBcUIsQ0FBQTtJQUFFLHVDQUFBLGVBQWUsQ0FBQTtJQUFFLGlEQUFBLHlCQUF5QixDQUFBO0lBQUUsMkNBQUEsbUJBQW1CLENBQUE7SUFBRSxxQ0FBQSxhQUFhLENBQUE7SUFBRSxzQ0FBQSxjQUFjLENBQUE7SUFBRSxnREFBQSx3QkFBd0IsQ0FBQTtJQUFFLCtDQUFBLHVCQUF1QixDQUFBO0lBQUUsd0NBQUEsZ0JBQWdCLENBQUE7SUFBRSxtQ0FBQSxXQUFXLENBQUE7SUFBRSw2Q0FBQSxxQkFBcUIsQ0FBQTtJQUFFLCtDQUFBLHVCQUF1QixDQUFBO0lBQStHLDBDQUFBLGtCQUFrQixDQUFBO0lBQTJCLGlDQUFBLFNBQVMsQ0FBQTtJQUE0SCxvREFBQSw0QkFBNEIsQ0FBQTtJQUFFLG9DQUFBLFlBQVksQ0FBQTtJQUF3RSxnREFBQSx3QkFBd0IsQ0FBQTtJQUFFLCtDQUFBLHVCQUF1QixDQUFBO0lBQUUscURBQUEsNkJBQTZCLENBQUE7SUFBRSx1Q0FBQSxlQUFlLENBQUE7SUFBRSx1Q0FBQSxlQUFlLENBQUE7SUFBRSw2Q0FBQSxxQkFBcUIsQ0FBQTtJQUFFLG1EQUFBLDJCQUEyQixDQUFBO0lBQUUsb0RBQUEsNEJBQTRCLENBQUE7SUFBRSxnREFBQSx3QkFBd0IsQ0FBQTtJQUFpRywwQ0FBQSxrQkFBa0IsQ0FBQTtJQUFFLHdDQUFBLGdCQUFnQixDQUFBO0lBQUUsMkNBQUEsbUJBQW1CLENBQUE7SUFBRSw2Q0FBQSxxQkFBcUIsQ0FBQTtJQUFFLG9DQUFBLFlBQVksQ0FBQTtJQUFFLDJDQUFBLG1CQUFtQixDQUFBO0lBQXFCLHFDQUFBLGFBQWEsQ0FBQTtJQUFrQyxrQ0FBQSxVQUFVLENBQUE7SUFBeUUsaUNBQUEsU0FBUyxDQUFBO0lBQW1ILHdDQUFBLGdCQUFnQixDQUFBO0lBQUUsa0RBQUEsMEJBQTBCLENBQUE7SUFBK0csc0NBQUEsY0FBYyxDQUFBO0lBQUUseUNBQUEsaUJBQWlCLENBQUE7SUFBRSxvQ0FBQSxZQUFZLENBQUE7SUFBMEIsb0NBQUEsWUFBWSxDQUFBO0lBQUUsdUNBQUEsZUFBZSxDQUFBO0lBQUUseUNBQUEsaUJBQWlCLENBQUE7SUFBRSxtREFBQSwyQkFBMkIsQ0FBQTtJQUFFLG9EQUFBLDRCQUE0QixDQUFBO0lBQUUsb0NBQUEsWUFBWSxDQUFBO0lBQXNFLG1DQUFBLFdBQVcsQ0FBQTtJQUFFLGtDQUFBLFVBQVUsQ0FBQTtJQUFzQiwyQkFBQSxHQUFHLENBQUE7SUFBdUgsaUNBQUEsU0FBUyxDQUFBO0lBQXNDLG1DQUFBLFdBQVcsQ0FBQTtJQUEwQyxzQ0FBQSxjQUFjLENBQUE7SUFBRSwrQ0FBQSx1QkFBdUIsQ0FBQTtJQUU5MkUsa0RBQWtEO0lBQ2xELDZFQUE2RTtJQUM3RSx5QkFBeUI7SUFDekIsc0JBQTZCLElBQWE7UUFDeEMsT0FBUSxFQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFGRCxvQ0FFQztJQUVELDhGQUE4RjtJQUM5RixjQUFjO0lBQ0gsUUFBQSxjQUFjLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQztJQUV4QyxJQUFBLHFDQUFzQyxFQUFyQyxhQUFLLEVBQUUsYUFBSyxDQUEwQjtJQUM3QyxJQUFJLEtBQUssS0FBSyxHQUFHLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRTtRQUNsQyxJQUFNLGtCQUFnQixHQUFHLEVBQUUsQ0FBQyxjQUFtRCxDQUFDO1FBQ2hGLHNCQUFjLEdBQUcsVUFBQyxJQUE0QixFQUFFLFVBQWlELEVBQy9FLFNBQStDLEVBQUUsSUFBNEIsRUFDN0UsYUFBeUMsRUFBRSxJQUEyQixFQUN0RSxXQUFvQztZQUNwRCxPQUFPLGtCQUFnQixDQUNaLElBQXVDLEVBQUUsVUFBcUMsRUFDOUUsU0FBZ0IsRUFBRSxJQUFXLEVBQUUsSUFBVyxFQUFFLFdBQWtCLENBQVEsQ0FBQztRQUNwRixDQUFDLENBQUM7S0FDSCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbi8qKlxuICogQGZpbGVvdmVydmlldyBBYnN0cmFjdGlvbiBvdmVyIHRoZSBUeXBlU2NyaXB0IEFQSSB0aGF0IG1ha2VzIG11bHRpcGxlXG4gKiB2ZXJzaW9ucyBvZiBUeXBlU2NyaXB0IGFwcGVhciB0byBiZSBpbnRlcm9wZXJhYmxlLiBBbnkgdGltZSBhIGJyZWFraW5nIGNoYW5nZVxuICogaW4gVHlwZVNjcmlwdCBhZmZlY3RzIFRzaWNrbGUgY29kZSwgd2Ugc2hvdWxkIGV4dGVuZCB0aGlzIHNoaW0gdG8gcHJlc2VudCBhblxuICogdW5icm9rZW4gQVBJLlxuICogQWxsIGNvZGUgaW4gdHNpY2tsZSBzaG91bGQgaW1wb3J0IGZyb20gdGhpcyBsb2NhdGlvbiwgbm90IGZyb20gJ3R5cGVzY3JpcHQnLlxuICovXG5cbi8vIHRzbGludDpkaXNhYmxlOm5vLWFueSBXZSBuZWVkIHRvIGRvIHZhcmlvdXMgdW5zYWZlIGNhc3RzIGJldHdlZW4gVFMgdmVyc2lvbnNcblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbi8vIE5vdGUsIHRoaXMgaW1wb3J0IGRlcGVuZHMgb24gYSBnZW5ydWxlIGNvcHlpbmcgdGhlIC5kLnRzIGZpbGUgdG8gdGhpcyBwYWNrYWdlXG5pbXBvcnQgKiBhcyB0czI0IGZyb20gJy4vdHlwZXNjcmlwdC0yLjQnO1xuXG5leHBvcnQge19fU3RyaW5nLCBhZGRTeW50aGV0aWNUcmFpbGluZ0NvbW1lbnQsIEFzc2VydGlvbkV4cHJlc3Npb24sIEJpbmFyeUV4cHJlc3Npb24sIEJsb2NrLCBDYWxsRXhwcmVzc2lvbiwgQ2FuY2VsbGF0aW9uVG9rZW4sIENsYXNzRGVjbGFyYXRpb24sIENsYXNzRWxlbWVudCwgQ2xhc3NMaWtlRGVjbGFyYXRpb24sIENvbW1lbnRSYW5nZSwgQ29tcGlsZXJIb3N0LCBDb21waWxlck9wdGlvbnMsIENvbnN0cnVjdG9yRGVjbGFyYXRpb24sIGNyZWF0ZUFycmF5TGl0ZXJhbCwgY3JlYXRlQXJyYXlUeXBlTm9kZSwgY3JlYXRlQ29tcGlsZXJIb3N0LCBjcmVhdGVJZGVudGlmaWVyLCBjcmVhdGVLZXl3b3JkVHlwZU5vZGUsIGNyZWF0ZU5vZGVBcnJheSwgY3JlYXRlTm90RW1pdHRlZFN0YXRlbWVudCwgY3JlYXRlT2JqZWN0TGl0ZXJhbCwgY3JlYXRlUHJvZ3JhbSwgY3JlYXRlUHJvcGVydHksIGNyZWF0ZVByb3BlcnR5QXNzaWdubWVudCwgY3JlYXRlUHJvcGVydHlTaWduYXR1cmUsIGNyZWF0ZVNvdXJjZUZpbGUsIGNyZWF0ZVRva2VuLCBjcmVhdGVUeXBlTGl0ZXJhbE5vZGUsIGNyZWF0ZVR5cGVSZWZlcmVuY2VOb2RlLCBDdXN0b21UcmFuc2Zvcm1lcnMsIERlY2xhcmF0aW9uLCBEZWNsYXJhdGlvblN0YXRlbWVudCwgRGVjbGFyYXRpb25XaXRoVHlwZVBhcmFtZXRlcnMsIERlY29yYXRvciwgRGlhZ25vc3RpYywgRGlhZ25vc3RpY0NhdGVnb3J5LCBFbGVtZW50QWNjZXNzRXhwcmVzc2lvbiwgRW1pdEZsYWdzLCBFbWl0UmVzdWx0LCBFbnRpdHlOYW1lLCBFbnVtRGVjbGFyYXRpb24sIEVudW1NZW1iZXIsIEV4cG9ydERlY2xhcmF0aW9uLCBFeHBvcnRTcGVjaWZpZXIsIEV4cHJlc3Npb24sIEV4cHJlc3Npb25TdGF0ZW1lbnQsIGZsYXR0ZW5EaWFnbm9zdGljTWVzc2FnZVRleHQsIGZvckVhY2hDaGlsZCwgRnVuY3Rpb25EZWNsYXJhdGlvbiwgRnVuY3Rpb25MaWtlRGVjbGFyYXRpb24sIEdldEFjY2Vzc29yRGVjbGFyYXRpb24sIGdldENvbWJpbmVkTW9kaWZpZXJGbGFncywgZ2V0TGVhZGluZ0NvbW1lbnRSYW5nZXMsIGdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uLCBnZXRNdXRhYmxlQ2xvbmUsIGdldE9yaWdpbmFsTm9kZSwgZ2V0UHJlRW1pdERpYWdub3N0aWNzLCBnZXRTeW50aGV0aWNMZWFkaW5nQ29tbWVudHMsIGdldFN5bnRoZXRpY1RyYWlsaW5nQ29tbWVudHMsIGdldFRyYWlsaW5nQ29tbWVudFJhbmdlcywgSWRlbnRpZmllciwgSW1wb3J0RGVjbGFyYXRpb24sIEltcG9ydEVxdWFsc0RlY2xhcmF0aW9uLCBJbXBvcnRTcGVjaWZpZXIsIEludGVyZmFjZURlY2xhcmF0aW9uLCBpc0JpbmFyeUV4cHJlc3Npb24sIGlzQ2FsbEV4cHJlc3Npb24sIGlzRXhwb3J0RGVjbGFyYXRpb24sIGlzRXhwcmVzc2lvblN0YXRlbWVudCwgaXNJZGVudGlmaWVyLCBpc1ZhcmlhYmxlU3RhdGVtZW50LCBNZXRob2REZWNsYXJhdGlvbiwgTW9kaWZpZXJGbGFncywgTW9kdWxlQmxvY2ssIE1vZHVsZURlY2xhcmF0aW9uLCBNb2R1bGVLaW5kLCBNb2R1bGVSZXNvbHV0aW9uSG9zdCwgTmFtZWREZWNsYXJhdGlvbiwgTmFtZWRJbXBvcnRzLCBOb2RlLCBOb2RlQXJyYXksIE5vZGVGbGFncywgTm9uTnVsbEV4cHJlc3Npb24sIE5vdEVtaXR0ZWRTdGF0ZW1lbnQsIE9iamVjdExpdGVyYWxFbGVtZW50TGlrZSwgT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24sIFBhcmFtZXRlckRlY2xhcmF0aW9uLCBwYXJzZUNvbW1hbmRMaW5lLCBwYXJzZUpzb25Db25maWdGaWxlQ29udGVudCwgUHJvZ3JhbSwgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLCBQcm9wZXJ0eUFzc2lnbm1lbnQsIFByb3BlcnR5RGVjbGFyYXRpb24sIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTaWduYXR1cmUsIHJlYWRDb25maWdGaWxlLCByZXNvbHZlTW9kdWxlTmFtZSwgU2NyaXB0VGFyZ2V0LCBTZXRBY2Nlc3NvckRlY2xhcmF0aW9uLCBzZXRFbWl0RmxhZ3MsIHNldE9yaWdpbmFsTm9kZSwgc2V0U291cmNlTWFwUmFuZ2UsIHNldFN5bnRoZXRpY0xlYWRpbmdDb21tZW50cywgc2V0U3ludGhldGljVHJhaWxpbmdDb21tZW50cywgc2V0VGV4dFJhbmdlLCBTaWduYXR1cmVEZWNsYXJhdGlvbiwgU291cmNlRmlsZSwgU3RhdGVtZW50LCBTdHJpbmdMaXRlcmFsLCBTeW1ib2wsIFN5bWJvbEZsYWdzLCBTeW50YXhLaW5kLCBTeW50aGVzaXplZENvbW1lbnQsIHN5cywgVG9rZW4sIFRyYW5zZm9ybWF0aW9uQ29udGV4dCwgVHJhbnNmb3JtZXIsIFRyYW5zZm9ybWVyRmFjdG9yeSwgVHlwZSwgVHlwZUFsaWFzRGVjbGFyYXRpb24sIFR5cGVDaGVja2VyLCBUeXBlRWxlbWVudCwgVHlwZUZsYWdzLCBUeXBlTm9kZSwgVHlwZVJlZmVyZW5jZSwgVW5pb25UeXBlLCB1cGRhdGVCbG9jaywgVmFyaWFibGVEZWNsYXJhdGlvbiwgVmFyaWFibGVTdGF0ZW1lbnQsIHZpc2l0RWFjaENoaWxkLCB2aXNpdExleGljYWxFbnZpcm9ubWVudCwgVmlzaXRvciwgV3JpdGVGaWxlQ2FsbGJhY2t9IGZyb20gJ3R5cGVzY3JpcHQnO1xuXG4vLyBnZXRFbWl0RmxhZ3MgaXMgbm93IHByaXZhdGUgc3RhcnRpbmcgaW4gVFMgMi41LlxuLy8gU28gd2UgZGVmaW5lIG91ciBvd24gbWV0aG9kIHRoYXQgY2FsbHMgdGhyb3VnaCB0byBUeXBlU2NyaXB0IHRvIGRlZmVhdCB0aGVcbi8vIHZpc2liaWxpdHkgY29uc3RyYWludC5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbWl0RmxhZ3Mobm9kZTogdHMuTm9kZSk6IHRzLkVtaXRGbGFnc3x1bmRlZmluZWQge1xuICByZXR1cm4gKHRzIGFzIGFueSkuZ2V0RW1pdEZsYWdzKG5vZGUpO1xufVxuXG4vLyBCZXR3ZWVuIFR5cGVTY3JpcHQgMi40IGFuZCAyLjUgdXBkYXRlUHJvcGVydHkgd2FzIG1vZGlmaWVkLiBJZiBjYWxsZWQgd2l0aCAyLjQgcmUtb3JkZXIgdGhlXG4vLyBwYXJhbWV0ZXJzLlxuZXhwb3J0IGxldCB1cGRhdGVQcm9wZXJ0eSA9IHRzLnVwZGF0ZVByb3BlcnR5O1xuXG5jb25zdCBbbWFqb3IsIG1pbm9yXSA9IHRzLnZlcnNpb24uc3BsaXQoJy4nKTtcbmlmIChtYWpvciA9PT0gJzInICYmIG1pbm9yID09PSAnNCcpIHtcbiAgY29uc3QgdXBkYXRlUHJvcGVydHkyNCA9IHRzLnVwZGF0ZVByb3BlcnR5IGFzIGFueSBhcyB0eXBlb2YgdHMyNC51cGRhdGVQcm9wZXJ0eTtcbiAgdXBkYXRlUHJvcGVydHkgPSAobm9kZTogdHMuUHJvcGVydHlEZWNsYXJhdGlvbiwgZGVjb3JhdG9yczogUmVhZG9ubHlBcnJheTx0cy5EZWNvcmF0b3I+fHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzOiBSZWFkb25seUFycmF5PHRzLk1vZGlmaWVyPnx1bmRlZmluZWQsIG5hbWU6IHN0cmluZ3x0cy5Qcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uVG9rZW46IHRzLlF1ZXN0aW9uVG9rZW58dW5kZWZpbmVkLCB0eXBlOiB0cy5UeXBlTm9kZXx1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemVyOiB0cy5FeHByZXNzaW9ufHVuZGVmaW5lZCk6IHRzLlByb3BlcnR5RGVjbGFyYXRpb24gPT4ge1xuICAgIHJldHVybiB1cGRhdGVQcm9wZXJ0eTI0KFxuICAgICAgICAgICAgICAgbm9kZSBhcyBhbnkgYXMgdHMyNC5Qcm9wZXJ0eURlY2xhcmF0aW9uLCBkZWNvcmF0b3JzIGFzIGFueSBhcyB0czI0LkRlY29yYXRvcltdLFxuICAgICAgICAgICAgICAgbW9kaWZpZXJzIGFzIGFueSwgbmFtZSBhcyBhbnksIHR5cGUgYXMgYW55LMKgaW5pdGlhbGl6ZXIgYXMgYW55KSBhcyBhbnk7XG4gIH07XG59XG4iXX0=

@@ -94,2 +94,2 @@ /**

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7O0lBRUgsd0RBQXdEO0lBQ3hELDBEQUEwRDtJQUMxRCxnQ0FBZ0M7SUFFaEMsMkJBQTZCO0lBQzdCLCtCQUFpQztJQUVqQzs7Ozs7T0FLRztJQUNILDJDQUNJLGdCQUFxQyxFQUFFLFFBQXlCO1FBQ2xFLE1BQU0sQ0FBQztZQUNMLGFBQWEsZUFBQTtZQUNiLG9CQUFvQixFQUFFLFFBQVEsQ0FBQyxvQkFBb0I7WUFDbkQscUJBQXFCLEVBQUUsUUFBUSxDQUFDLHFCQUFxQjtZQUNyRCxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVM7WUFDN0IsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLG1CQUFtQjtZQUNqRCxvQkFBb0IsRUFBRSxRQUFRLENBQUMsb0JBQW9CO1lBQ25ELHlCQUF5QixFQUFFLFFBQVEsQ0FBQyx5QkFBeUI7WUFDN0QsVUFBVSxFQUFFLFFBQVEsQ0FBQyxVQUFVO1lBQy9CLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtZQUMvQixRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVE7WUFDM0IsZUFBZSxFQUFFLFFBQVEsQ0FBQyxlQUFlO1lBQ3pDLGNBQWMsRUFBRSxRQUFRLENBQUMsY0FBYztTQUN4QyxDQUFDO1FBRUYsdUJBQ0ksUUFBZ0IsRUFBRSxlQUFnQyxFQUNsRCxPQUFtQztZQUNyQyxJQUFNLElBQUksR0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsRCxJQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUMsRUFBRSxDQUFDLENBQUMsVUFBVSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdCLE1BQU0sQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUNwRSxDQUFDO1lBQ0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRSxDQUFDO0lBQ0gsQ0FBQztJQTNCRCw4RUEyQkM7SUFFRDs7T0FFRztJQUNILDhCQUFxQyxLQUFhO1FBQ2hELE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRkQsb0RBRUM7SUFFRCxnRUFBZ0U7SUFDaEUseUJBQWdDLElBQWEsRUFBRSxJQUFzQjtRQUNuRSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFGRCwwQ0FFQztJQUVELHVCQUE4QixRQUFnQjtRQUM1QyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRkQsc0NBRUM7SUFFRDs7T0FFRztJQUNILGtDQUF5QyxTQUFtQjtRQUMxRCxJQUFNLFlBQVksR0FBRyxTQUFTLENBQUM7UUFDL0IsSUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN0RCxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMxQyxJQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNWLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN2QyxDQUFDLEVBQUUsQ0FBQztZQUNOLENBQUM7WUFDRCxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFFLHFDQUFxQztRQUNqRSxDQUFDO1FBQ0QsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDYixDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7SUFoQkQsNERBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vLyB0b0FycmF5IGlzIGEgdGVtcG9yYXJ5IGZ1bmN0aW9uIHRvIGhlbHAgaW4gdGhlIHVzZSBvZlxuLy8gRVM2IG1hcHMgYW5kIHNldHMgd2hlbiBydW5uaW5nIG9uIG5vZGUgNCwgd2hpY2ggZG9lc24ndFxuLy8gc3VwcG9ydCBJdGVyYXRvcnMgY29tcGxldGVseS5cblxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG4vKipcbiAqIENvbnN0cnVjdHMgYSBuZXcgdHMuQ29tcGlsZXJIb3N0IHRoYXQgb3ZlcmxheXMgc291cmNlcyBpbiBzdWJzdGl0dXRlU291cmNlXG4gKiBvdmVyIGFub3RoZXIgdHMuQ29tcGlsZXJIb3N0LlxuICpcbiAqIEBwYXJhbSBzdWJzdGl0dXRlU291cmNlIEEgbWFwIG9mIHNvdXJjZSBmaWxlIG5hbWUgLT4gb3ZlcmxheSBzb3VyY2UgdGV4dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNvdXJjZVJlcGxhY2luZ0NvbXBpbGVySG9zdChcbiAgICBzdWJzdGl0dXRlU291cmNlOiBNYXA8c3RyaW5nLCBzdHJpbmc+LCBkZWxlZ2F0ZTogdHMuQ29tcGlsZXJIb3N0KTogdHMuQ29tcGlsZXJIb3N0IHtcbiAgcmV0dXJuIHtcbiAgICBnZXRTb3VyY2VGaWxlLFxuICAgIGdldENhbmNlbGxhdGlvblRva2VuOiBkZWxlZ2F0ZS5nZXRDYW5jZWxsYXRpb25Ub2tlbixcbiAgICBnZXREZWZhdWx0TGliRmlsZU5hbWU6IGRlbGVnYXRlLmdldERlZmF1bHRMaWJGaWxlTmFtZSxcbiAgICB3cml0ZUZpbGU6IGRlbGVnYXRlLndyaXRlRmlsZSxcbiAgICBnZXRDdXJyZW50RGlyZWN0b3J5OiBkZWxlZ2F0ZS5nZXRDdXJyZW50RGlyZWN0b3J5LFxuICAgIGdldENhbm9uaWNhbEZpbGVOYW1lOiBkZWxlZ2F0ZS5nZXRDYW5vbmljYWxGaWxlTmFtZSxcbiAgICB1c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzOiBkZWxlZ2F0ZS51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzLFxuICAgIGdldE5ld0xpbmU6IGRlbGVnYXRlLmdldE5ld0xpbmUsXG4gICAgZmlsZUV4aXN0czogZGVsZWdhdGUuZmlsZUV4aXN0cyxcbiAgICByZWFkRmlsZTogZGVsZWdhdGUucmVhZEZpbGUsXG4gICAgZGlyZWN0b3J5RXhpc3RzOiBkZWxlZ2F0ZS5kaXJlY3RvcnlFeGlzdHMsXG4gICAgZ2V0RGlyZWN0b3JpZXM6IGRlbGVnYXRlLmdldERpcmVjdG9yaWVzLFxuICB9O1xuXG4gIGZ1bmN0aW9uIGdldFNvdXJjZUZpbGUoXG4gICAgICBmaWxlTmFtZTogc3RyaW5nLCBsYW5ndWFnZVZlcnNpb246IHRzLlNjcmlwdFRhcmdldCxcbiAgICAgIG9uRXJyb3I/OiAobWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkKTogdHMuU291cmNlRmlsZXx1bmRlZmluZWQge1xuICAgIGNvbnN0IHBhdGg6IHN0cmluZyA9IHRzLnN5cy5yZXNvbHZlUGF0aChmaWxlTmFtZSk7XG4gICAgY29uc3Qgc291cmNlVGV4dCA9IHN1YnN0aXR1dGVTb3VyY2UuZ2V0KHBhdGgpO1xuICAgIGlmIChzb3VyY2VUZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cy5jcmVhdGVTb3VyY2VGaWxlKGZpbGVOYW1lLCBzb3VyY2VUZXh0LCBsYW5ndWFnZVZlcnNpb24pO1xuICAgIH1cbiAgICByZXR1cm4gZGVsZWdhdGUuZ2V0U291cmNlRmlsZShwYXRoLCBsYW5ndWFnZVZlcnNpb24sIG9uRXJyb3IpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgaW5wdXQgc3RyaW5nIHdpdGggbGluZSBlbmRpbmdzIG5vcm1hbGl6ZWQgdG8gJ1xcbicuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVMaW5lRW5kaW5ncyhpbnB1dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGlucHV0LnJlcGxhY2UoL1xcclxcbi9nLCAnXFxuJyk7XG59XG5cbi8qKiBAcmV0dXJuIHRydWUgaWYgbm9kZSBoYXMgdGhlIHNwZWNpZmllZCBtb2RpZmllciBmbGFnIHNldC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNNb2RpZmllckZsYWcobm9kZTogdHMuTm9kZSwgZmxhZzogdHMuTW9kaWZpZXJGbGFncyk6IGJvb2xlYW4ge1xuICByZXR1cm4gKHRzLmdldENvbWJpbmVkTW9kaWZpZXJGbGFncyhub2RlKSAmIGZsYWcpICE9PSAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEdHNGaWxlTmFtZShmaWxlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAvXFwuZFxcLnRzJC8udGVzdChmaWxlTmFtZSk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIHRoZSBsb3dlc3QtbGV2ZWwgY29tbW9uIHBhcmVudCBkaXJlY3Rvcnkgb2YgdGhlIGdpdmVuIGxpc3Qgb2YgZmlsZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21tb25QYXJlbnREaXJlY3RvcnkoZmlsZU5hbWVzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIGNvbnN0IHBhdGhTcGxpdHRlciA9IC9bXFwvXFxcXF0rLztcbiAgY29uc3QgY29tbW9uUGFyZW50ID0gZmlsZU5hbWVzWzBdLnNwbGl0KHBhdGhTcGxpdHRlcik7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgZmlsZU5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgdGhpc1BhdGggPSBmaWxlTmFtZXNbaV0uc3BsaXQocGF0aFNwbGl0dGVyKTtcbiAgICBsZXQgaiA9IDA7XG4gICAgd2hpbGUgKHRoaXNQYXRoW2pdID09PSBjb21tb25QYXJlbnRbal0pIHtcbiAgICAgIGorKztcbiAgICB9XG4gICAgY29tbW9uUGFyZW50Lmxlbmd0aCA9IGo7ICAvLyBUcnVuY2F0ZSB3aXRob3V0IGNvcHlpbmcgdGhlIGFycmF5XG4gIH1cbiAgaWYgKGNvbW1vblBhcmVudC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gJy8nO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjb21tb25QYXJlbnQuam9pbihwYXRoLnNlcCk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7O0lBRUgsd0RBQXdEO0lBQ3hELDBEQUEwRDtJQUMxRCxnQ0FBZ0M7SUFFaEMsMkJBQTZCO0lBQzdCLCtCQUFpQztJQUVqQzs7Ozs7T0FLRztJQUNILDJDQUNJLGdCQUFxQyxFQUFFLFFBQXlCO1FBQ2xFLE9BQU87WUFDTCxhQUFhLGVBQUE7WUFDYixvQkFBb0IsRUFBRSxRQUFRLENBQUMsb0JBQW9CO1lBQ25ELHFCQUFxQixFQUFFLFFBQVEsQ0FBQyxxQkFBcUI7WUFDckQsU0FBUyxFQUFFLFFBQVEsQ0FBQyxTQUFTO1lBQzdCLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxtQkFBbUI7WUFDakQsb0JBQW9CLEVBQUUsUUFBUSxDQUFDLG9CQUFvQjtZQUNuRCx5QkFBeUIsRUFBRSxRQUFRLENBQUMseUJBQXlCO1lBQzdELFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtZQUMvQixVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVU7WUFDL0IsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRO1lBQzNCLGVBQWUsRUFBRSxRQUFRLENBQUMsZUFBZTtZQUN6QyxjQUFjLEVBQUUsUUFBUSxDQUFDLGNBQWM7U0FDeEMsQ0FBQztRQUVGLHVCQUNJLFFBQWdCLEVBQUUsZUFBZ0MsRUFDbEQsT0FBbUM7WUFDckMsSUFBTSxJQUFJLEdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEQsSUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlDLElBQUksVUFBVSxLQUFLLFNBQVMsRUFBRTtnQkFDNUIsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxlQUFlLENBQUMsQ0FBQzthQUNuRTtZQUNELE9BQU8sUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hFLENBQUM7SUFDSCxDQUFDO0lBM0JELDhFQTJCQztJQUVEOztPQUVHO0lBQ0gsOEJBQXFDLEtBQWE7UUFDaEQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRkQsb0RBRUM7SUFFRCxnRUFBZ0U7SUFDaEUseUJBQWdDLElBQWEsRUFBRSxJQUFzQjtRQUNuRSxPQUFPLENBQUMsRUFBRSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRkQsMENBRUM7SUFFRCx1QkFBOEIsUUFBZ0I7UUFDNUMsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFGRCxzQ0FFQztJQUVEOztPQUVHO0lBQ0gsa0NBQXlDLFNBQW1CO1FBQzFELElBQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQztRQUMvQixJQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3RELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3pDLElBQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ1YsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN0QyxDQUFDLEVBQUUsQ0FBQzthQUNMO1lBQ0QsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBRSxxQ0FBcUM7U0FDaEU7UUFDRCxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzdCLE9BQU8sR0FBRyxDQUFDO1NBQ1o7YUFBTTtZQUNMLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDcEM7SUFDSCxDQUFDO0lBaEJELDREQWdCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLy8gdG9BcnJheSBpcyBhIHRlbXBvcmFyeSBmdW5jdGlvbiB0byBoZWxwIGluIHRoZSB1c2Ugb2Zcbi8vIEVTNiBtYXBzIGFuZCBzZXRzIHdoZW4gcnVubmluZyBvbiBub2RlIDQsIHdoaWNoIGRvZXNuJ3Rcbi8vIHN1cHBvcnQgSXRlcmF0b3JzIGNvbXBsZXRlbHkuXG5cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuLyoqXG4gKiBDb25zdHJ1Y3RzIGEgbmV3IHRzLkNvbXBpbGVySG9zdCB0aGF0IG92ZXJsYXlzIHNvdXJjZXMgaW4gc3Vic3RpdHV0ZVNvdXJjZVxuICogb3ZlciBhbm90aGVyIHRzLkNvbXBpbGVySG9zdC5cbiAqXG4gKiBAcGFyYW0gc3Vic3RpdHV0ZVNvdXJjZSBBIG1hcCBvZiBzb3VyY2UgZmlsZSBuYW1lIC0+IG92ZXJsYXkgc291cmNlIHRleHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTb3VyY2VSZXBsYWNpbmdDb21waWxlckhvc3QoXG4gICAgc3Vic3RpdHV0ZVNvdXJjZTogTWFwPHN0cmluZywgc3RyaW5nPiwgZGVsZWdhdGU6IHRzLkNvbXBpbGVySG9zdCk6IHRzLkNvbXBpbGVySG9zdCB7XG4gIHJldHVybiB7XG4gICAgZ2V0U291cmNlRmlsZSxcbiAgICBnZXRDYW5jZWxsYXRpb25Ub2tlbjogZGVsZWdhdGUuZ2V0Q2FuY2VsbGF0aW9uVG9rZW4sXG4gICAgZ2V0RGVmYXVsdExpYkZpbGVOYW1lOiBkZWxlZ2F0ZS5nZXREZWZhdWx0TGliRmlsZU5hbWUsXG4gICAgd3JpdGVGaWxlOiBkZWxlZ2F0ZS53cml0ZUZpbGUsXG4gICAgZ2V0Q3VycmVudERpcmVjdG9yeTogZGVsZWdhdGUuZ2V0Q3VycmVudERpcmVjdG9yeSxcbiAgICBnZXRDYW5vbmljYWxGaWxlTmFtZTogZGVsZWdhdGUuZ2V0Q2Fub25pY2FsRmlsZU5hbWUsXG4gICAgdXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lczogZGVsZWdhdGUudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcyxcbiAgICBnZXROZXdMaW5lOiBkZWxlZ2F0ZS5nZXROZXdMaW5lLFxuICAgIGZpbGVFeGlzdHM6IGRlbGVnYXRlLmZpbGVFeGlzdHMsXG4gICAgcmVhZEZpbGU6IGRlbGVnYXRlLnJlYWRGaWxlLFxuICAgIGRpcmVjdG9yeUV4aXN0czogZGVsZWdhdGUuZGlyZWN0b3J5RXhpc3RzLFxuICAgIGdldERpcmVjdG9yaWVzOiBkZWxlZ2F0ZS5nZXREaXJlY3RvcmllcyxcbiAgfTtcblxuICBmdW5jdGlvbiBnZXRTb3VyY2VGaWxlKFxuICAgICAgZmlsZU5hbWU6IHN0cmluZywgbGFuZ3VhZ2VWZXJzaW9uOiB0cy5TY3JpcHRUYXJnZXQsXG4gICAgICBvbkVycm9yPzogKG1lc3NhZ2U6IHN0cmluZykgPT4gdm9pZCk6IHRzLlNvdXJjZUZpbGV8dW5kZWZpbmVkIHtcbiAgICBjb25zdCBwYXRoOiBzdHJpbmcgPSB0cy5zeXMucmVzb2x2ZVBhdGgoZmlsZU5hbWUpO1xuICAgIGNvbnN0IHNvdXJjZVRleHQgPSBzdWJzdGl0dXRlU291cmNlLmdldChwYXRoKTtcbiAgICBpZiAoc291cmNlVGV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHMuY3JlYXRlU291cmNlRmlsZShmaWxlTmFtZSwgc291cmNlVGV4dCwgbGFuZ3VhZ2VWZXJzaW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIGRlbGVnYXRlLmdldFNvdXJjZUZpbGUocGF0aCwgbGFuZ3VhZ2VWZXJzaW9uLCBvbkVycm9yKTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGlucHV0IHN0cmluZyB3aXRoIGxpbmUgZW5kaW5ncyBub3JtYWxpemVkIHRvICdcXG4nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplTGluZUVuZGluZ3MoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBpbnB1dC5yZXBsYWNlKC9cXHJcXG4vZywgJ1xcbicpO1xufVxuXG4vKiogQHJldHVybiB0cnVlIGlmIG5vZGUgaGFzIHRoZSBzcGVjaWZpZWQgbW9kaWZpZXIgZmxhZyBzZXQuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzTW9kaWZpZXJGbGFnKG5vZGU6IHRzLk5vZGUsIGZsYWc6IHRzLk1vZGlmaWVyRmxhZ3MpOiBib29sZWFuIHtcbiAgcmV0dXJuICh0cy5nZXRDb21iaW5lZE1vZGlmaWVyRmxhZ3Mobm9kZSkgJiBmbGFnKSAhPT0gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRHRzRmlsZU5hbWUoZmlsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gL1xcLmRcXC50cyQvLnRlc3QoZmlsZU5hbWUpO1xufVxuXG4vKipcbiAqIERldGVybWluZSB0aGUgbG93ZXN0LWxldmVsIGNvbW1vbiBwYXJlbnQgZGlyZWN0b3J5IG9mIHRoZSBnaXZlbiBsaXN0IG9mIGZpbGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29tbW9uUGFyZW50RGlyZWN0b3J5KGZpbGVOYW1lczogc3RyaW5nW10pOiBzdHJpbmcge1xuICBjb25zdCBwYXRoU3BsaXR0ZXIgPSAvW1xcL1xcXFxdKy87XG4gIGNvbnN0IGNvbW1vblBhcmVudCA9IGZpbGVOYW1lc1swXS5zcGxpdChwYXRoU3BsaXR0ZXIpO1xuICBmb3IgKGxldCBpID0gMTsgaSA8IGZpbGVOYW1lcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHRoaXNQYXRoID0gZmlsZU5hbWVzW2ldLnNwbGl0KHBhdGhTcGxpdHRlcik7XG4gICAgbGV0IGogPSAwO1xuICAgIHdoaWxlICh0aGlzUGF0aFtqXSA9PT0gY29tbW9uUGFyZW50W2pdKSB7XG4gICAgICBqKys7XG4gICAgfVxuICAgIGNvbW1vblBhcmVudC5sZW5ndGggPSBqOyAgLy8gVHJ1bmNhdGUgd2l0aG91dCBjb3B5aW5nIHRoZSBhcnJheVxuICB9XG4gIGlmIChjb21tb25QYXJlbnQubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICcvJztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY29tbW9uUGFyZW50LmpvaW4ocGF0aC5zZXApO1xuICB9XG59XG4iXX0=

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

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

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

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

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

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc