@sumaris-net/ngx-components 1.23.41 → 1.23.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/sumaris-net.ngx-components.umd.js +25 -21
- package/bundles/sumaris-net.ngx-components.umd.js.map +1 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js +2 -2
- package/bundles/sumaris-net.ngx-components.umd.min.js.map +1 -1
- package/doc/changelog.md +3 -0
- package/esm2015/src/app/core/form/editor.class.js +2 -2
- package/esm2015/src/app/core/graphql/graphql.utils.js +2 -3
- package/esm2015/src/app/shared/file/file.service.js +2 -3
- package/esm2015/src/app/shared/graph/graph-colors.js +5 -1
- package/esm2015/src/app/shared/services/memory-entity-service.class.js +2 -2
- package/esm2015/src/app/vendor.js +6 -1
- package/fesm2015/sumaris-net.ngx-components.js +24 -21
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +1 -1
- package/src/app/shared/graph/graph-colors.d.ts +2 -1
- package/src/app/vendor.d.ts +2 -0
- package/sumaris-net.ngx-components.metadata.json +1 -1
package/doc/changelog.md
CHANGED
|
@@ -99,7 +99,7 @@ export class AppEditor {
|
|
|
99
99
|
return this.loadingSubject.value || (this._children && this._children.findIndex(c => c.enabled && c.loading) !== -1) || false;
|
|
100
100
|
}
|
|
101
101
|
get loaded() {
|
|
102
|
-
return !this.loading;
|
|
102
|
+
return !this.loadingSubject.value && (!this._children || this._children.findIndex(c => c.enabled && c.loading) === -1) || false;
|
|
103
103
|
}
|
|
104
104
|
get touched() {
|
|
105
105
|
return this.touchedSubject.value || (this._children && this._children.findIndex(c => c.enabled && c.touched) !== -1) || false;
|
|
@@ -695,4 +695,4 @@ AppTabEditor.propDecorators = {
|
|
|
695
695
|
selectedTabIndexChange: [{ type: Output }],
|
|
696
696
|
tabGroup: [{ type: ViewChild, args: ['tabGroup', { static: true },] }]
|
|
697
697
|
};
|
|
698
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2Zvcm0vZWRpdG9yLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1SCxPQUFPLEVBQUMsY0FBYyxFQUFVLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRS9ELE9BQU8sRUFBQyxlQUFlLEVBQUUsVUFBVSxFQUFrQixNQUFNLGdCQUFnQixDQUFDO0FBQzVFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDckMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFDLGVBQWUsRUFBRSxZQUFZLEVBQTJCLE1BQU0sY0FBYyxDQUFDO0FBQ3JGLE9BQU8sRUFBbUIsTUFBTSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFFbkUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzFELE9BQU8sRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFMUQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxZQUFZLEVBQWtCLFdBQVcsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBZW5GLE1BQU0sT0FBTyxtQkFBbUI7Q0FnQi9CO0FB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QUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUM1SCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLEtBQUs7UUFDUCwyRkFBMkY7UUFDM0YsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ25HLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ25HLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ2hJLENBQUM7SUFFRCxJQUFJLE1B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d0JBQXdCO1lBQ3hCLE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDaEMsR0FBRyxJQUFJLENBQUMsTUFBTTtnQkFDZCxHQUFHLElBQUksQ0FBQyxPQUFPO2FBQ2hCO2lCQUNFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7aUJBQ3BCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFdkIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDaEQsQ0FBQztLQUFBOzs7WUF0TUYsU0FBUzs7O1lBbGxCRixjQUFjLHVCQTZtQmpCLFFBQVE7WUE3bUJtQixNQUFNO1lBRTlCLGVBQWU7WUFDZixnQkFBZ0I7WUE4bUJFLG1CQUFtQix1QkFBeEMsUUFBUTs7O3FDQWxCVixLQUFLOytCQUVMLEtBQUs7cUNBT0wsTUFBTTt1QkFFTixTQUFTLFNBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFBhcmFtcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtNYXRUYWJDaGFuZ2VFdmVudCwgTWF0VGFiR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHtBbGVydENvbnRyb2xsZXIsIElvbkNvbnRlbnQsIFRvYXN0Q29udHJvbGxlcn0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIFRlYXJkb3duTG9naWN9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBcHBUYWJsZX0gZnJvbSAnLi4vdGFibGUvdGFibGUuY2xhc3MnO1xuaW1wb3J0IHtBcHBGb3JtfSBmcm9tICcuL2Zvcm0uY2xhc3MnO1xuaW1wb3J0IHtGb3JtQnV0dG9uc0JhclRva2VufSBmcm9tICcuL2Zvcm0tYnV0dG9ucy1iYXIuY29tcG9uZW50JztcbmltcG9ydCB7QXBwRm9ybVByb3ZpZGVyLCBBcHBGb3JtVXRpbHMsIElBcHBGb3JtLCBJQXBwRm9ybUdldHRlcn0gZnJvbSAnLi9mb3JtLnV0aWxzJztcbmltcG9ydCB7U2hvd1RvYXN0T3B0aW9ucywgVG9hc3RzfSBmcm9tICcuLi8uLi9zaGFyZWQvdG9hc3QvdG9hc3RzJztcbmltcG9ydCB7SGFtbWVyU3dpcGVFdmVudH0gZnJvbSAnLi4vLi4vc2hhcmVkL2dlc3R1cmUvaGFtbWVyLnV0aWxzJztcbmltcG9ydCB7VG9vbGJhclRva2VufSBmcm9tICcuLi8uLi9zaGFyZWQvdG9vbGJhci90b29sYmFyJztcbmltcG9ydCB7aXNOb3ROaWwsIHRvTnVtYmVyfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7Q2FuTGVhdmV9IGZyb20gJy4uLy4uL3NoYXJlZC9ndWFyZC9jb21wb25lbnQtZGlydHkuZ3VhcmQnO1xuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7d2FpdEZvckZhbHNlLCBXYWl0Rm9yT3B0aW9ucywgd2FpdEZvclRydWV9IGZyb20gJy4uLy4uL3NoYXJlZC9vYnNlcnZhYmxlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUFwcEVkaXRvciBleHRlbmRzIENhbkxlYXZlLCBJQXBwRm9ybSB7XG4gIHNhdmUoZXZlbnQ/OiBFdmVudCwgb3B0aW9ucz86IGFueSk6IFByb21pc2U8Ym9vbGVhbj47XG4gIGNhbmNlbChldmVudD86IEV2ZW50KTogUHJvbWlzZTx2b2lkPjtcbiAgYWRkQ2hpbGRGb3JtKGZvcm06IElBcHBGb3JtIHwgSUFwcEZvcm1HZXR0ZXIpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElBcHBUYWJFZGl0b3IgZXh0ZW5kcyBJQXBwRWRpdG9yIHtcbiAgc2VsZWN0ZWRUYWJJbmRleDogbnVtYmVyO1xuICBzZXRTZWxlY3RlZFRhYkluZGV4KHZhbHVlOiBudW1iZXIsIG9wdHM/OiB7ZW1pdEV2ZW50PzogYm9vbGVhbjsgcmVhbGlnbklua0Jhcj86IGJvb2xlYW47fSk6IHZvaWQ7XG4gIHVubG9hZChvcHRzPzoge2VtaXRFdmVudD86IGJvb2xlYW59KTogUHJvbWlzZTx2b2lkPjtcbiAgcmVhbGlnbklua0JhcigpO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwVGFiRWRpdG9yT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiB0YWIuIDEgYnkgZGVmYXVsdFxuICAgKi9cbiAgdGFiQ291bnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqICcyMDBtcycgYnkgZGVmYXVsdFxuICAgKi9cbiAgdGFiR3JvdXBBbmltYXRpb25EdXJhdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogU2hvdWxkIGVuYWJsZSBzd2lwZSBiZXR3ZWVuIHRhYiwgb24gdG91Y2ggc2NyZWVuXG4gICAqL1xuICBlbmFibGVTd2lwZT86IGJvb2xlYW47IC8vIHRydWUgYnkgZGVmYXVsdFxufVxuXG5ARGlyZWN0aXZlKClcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFwcEVkaXRvcjxUID0gYW55LCBJRCA9IG51bWJlciwgTyA9IGFueT5cbiAgaW1wbGVtZW50cyBJQXBwRWRpdG9yLCBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgcHJpdmF0ZSBfY2hpbGRyZW46IElBcHBGb3JtW107XG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBwcm90ZWN0ZWQgX2VuYWJsZWQgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHRvYXN0Q29udHJvbGxlcjogVG9hc3RDb250cm9sbGVyO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveVN1YmplY3QgPSBuZXcgU3ViamVjdCgpO1xuXG4gIHJlYWRvbmx5IHJlYWR5U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBkaXJ0eVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgbG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBlcnJvclN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgc2F2aW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSB0b3VjaGVkU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGRlYnVnID0gZmFsc2U7XG4gIHByZXZpb3VzRGF0YUlkOiBJRDtcbiAgc3VibWl0dGVkID0gZmFsc2U7XG4gIHF1ZXJ5UGFyYW1zOiBQYXJhbXM7XG4gIGkxOG5Db250ZXh0OiB7XG4gICAgcHJlZml4OiBzdHJpbmc7XG4gICAgc3VmZml4OiBzdHJpbmc7XG4gIH07XG5cbiAgLyoqXG4gICAqICBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHJvdGVjdGVkIHNldCBfbG9hZGluZyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dCh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogIEBkZXByZWNhdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IF9sb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxvYWRpbmdTdWJqZWN0LnZhbHVlO1xuICB9XG4gIC8qKlxuICAgKiAgQGRlcHJlY2F0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgXyRyZWFkeSgpOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnJlYWR5U3ViamVjdDtcbiAgfVxuICAvKipcbiAgICogIEBkZXByZWNhdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IF8kbG9hZGluZygpOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmxvYWRpbmdTdWJqZWN0O1xuICB9XG5cbiAgZ2V0IGVycm9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JTdWJqZWN0LnZhbHVlO1xuICB9XG5cbiAgc2V0IGVycm9yKGVycm9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNldEVycm9yKGVycm9yKTtcbiAgfVxuXG4gIGdldCBzYXZpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2F2aW5nU3ViamVjdC52YWx1ZSB8fCB0aGlzLmVkaXRvcnM/LnNvbWUoZSA9PiBlLnNhdmluZyk7XG4gIH1cblxuICBAVmlld0NoaWxkKFRvb2xiYXJUb2tlbikgdG9vbGJhcjogVG9vbGJhclRva2VufG51bGwgPSBudWxsO1xuICBAVmlld0NoaWxkKEZvcm1CdXR0b25zQmFyVG9rZW4sIHsgc3RhdGljOiB0cnVlIH0pIGZvcm1CdXR0b25zQmFyOiBGb3JtQnV0dG9uc0JhclRva2VufG51bGwgPSBudWxsO1xuICBAVmlld0NoaWxkKElvbkNvbnRlbnQsIHtzdGF0aWM6IHRydWV9KSBjb250ZW50OiBJb25Db250ZW50O1xuXG4gIGdldCB0YWJsZXMoKTogQXBwVGFibGU8YW55PltdIHtcbiAgICByZXR1cm4gdGhpcy5fY2hpbGRyZW4gJiYgKHRoaXMuX2NoaWxkcmVuLmZpbHRlcihjID0+IGMgaW5zdGFuY2VvZiBBcHBUYWJsZSkgYXMgQXBwVGFibGU8YW55PltdKTtcbiAgfVxuICBnZXQgZm9ybXMoKTogQXBwRm9ybTxhbnk+W10ge1xuICAgIHJldHVybiB0aGlzLl9jaGlsZHJlbiAmJiAodGhpcy5fY2hpbGRyZW4uZmlsdGVyKGMgPT4gYyBpbnN0YW5jZW9mIEFwcEZvcm0pIGFzIEFwcEZvcm08YW55PltdKTtcbiAgfVxuICBnZXQgZWRpdG9ycygpOiBBcHBFZGl0b3I8YW55PltdIHtcbiAgICByZXR1cm4gdGhpcy5fY2hpbGRyZW4gJiYgKHRoaXMuX2NoaWxkcmVuLmZpbHRlcihjID0+IGMgaW5zdGFuY2VvZiBBcHBFZGl0b3IpIGFzIEFwcEVkaXRvcltdKTtcbiAgfVxuICBnZXQgZGlydHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlydHlTdWJqZWN0LnZhbHVlIHx8ICh0aGlzLl9jaGlsZHJlbiAmJiB0aGlzLl9jaGlsZHJlbi5maW5kSW5kZXgoYyA9PiBjLmVuYWJsZWQgJiYgYy5kaXJ0eSkgIT09IC0xKSB8fCBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJcyB2YWxpZCAodGFibGVzIGFuZCBmb3JtcylcbiAgICovXG4gIGdldCB2YWxpZCgpOiBib29sZWFuIHtcbiAgICAvLyBJbXBvcnRhbnQ6IFNob3VsZCBiZSBub3QgaW52YWxpZCBBTkQgbm90IHBlbmRpbmcsIHNvIHVzZSAnIXZhbGlkJyAoRE8gTk9UIHVzZSAnaW52YWxpZCcpXG4gICAgcmV0dXJuICF0aGlzLl9jaGlsZHJlbiB8fCB0aGlzLl9jaGlsZHJlbi5maW5kSW5kZXgoYyA9PiBjLmVuYWJsZWQgJiYgIWMudmFsaWQpID09PSAtMTtcbiAgfVxuXG4gIGdldCBpbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5fY2hpbGRyZW4gJiYgdGhpcy5fY2hpbGRyZW4uZmluZEluZGV4KGMgPT4gYy5lbmFibGVkICYmIGMuaW52YWxpZCkgIT09IC0xKSB8fCBmYWxzZTtcbiAgfVxuXG4gIGdldCBwZW5kaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5fY2hpbGRyZW4gJiYgdGhpcy5fY2hpbGRyZW4uZmluZEluZGV4KGMgPT4gYy5lbmFibGVkICYmIGMucGVuZGluZykgIT09IC0xKSB8fCBmYWxzZTtcbiAgfVxuXG4gIGdldCBsb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxvYWRpbmdTdWJqZWN0LnZhbHVlIHx8ICh0aGlzLl9jaGlsZHJlbiAmJiB0aGlzLl9jaGlsZHJlbi5maW5kSW5kZXgoYyA9PiBjLmVuYWJsZWQgJiYgYy5sb2FkaW5nKSAhPT0gLTEpIHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGxvYWRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMubG9hZGluZztcbiAgfVxuXG4gIGdldCB0b3VjaGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRvdWNoZWRTdWJqZWN0LnZhbHVlIHx8ICh0aGlzLl9jaGlsZHJlbiAmJiB0aGlzLl9jaGlsZHJlbi5maW5kSW5kZXgoYyA9PiBjLmVuYWJsZWQgJiYgYy50b3VjaGVkKSAhPT0gLTEpIHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0IHVudG91Y2hlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMudG91Y2hlZFN1YmplY3QudmFsdWUgJiYgKCF0aGlzLl9jaGlsZHJlbiB8fCB0aGlzLl9jaGlsZHJlbi5maW5kSW5kZXgoYyA9PiBjLmVuYWJsZWQgJiYgYy50b3VjaGVkKSA9PT0gLTEpIHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQ7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLl9lbmFibGVkO1xuICB9XG5cbiAgZ2V0IGNoaWxkcmVuKCk6IElBcHBGb3JtW10ge1xuICAgIHJldHVybiB0aGlzLl9jaGlsZHJlbjtcbiAgfVxuXG4gIGdldCBlbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuX2VuYWJsZWQ7XG4gIH1cblxuICBhYnN0cmFjdCBnZXQgaXNOZXdEYXRhKCk6IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxuICAgIHByb3RlY3RlZCBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlcixcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG5cbiAgICBpZiAodGhpcy5mb3JtQnV0dG9uc0Jhcikge1xuICAgICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbih0aGlzLmZvcm1CdXR0b25zQmFyLm9uQmFjay5zdWJzY3JpYmUoZXZlbnQgPT4gdGhpcy5nb0JhY2soZXZlbnQpKSk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIC8vIENhbiBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXNcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5yZWFkeVN1YmplY3QudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmxvYWRpbmdTdWJqZWN0LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5lcnJvclN1YmplY3QudW5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuZGVzdHJveVN1YmplY3QubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveVN1YmplY3QudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGFkZENoaWxkRm9ybShmb3JtOiBJQXBwRm9ybSB8IElBcHBGb3JtR2V0dGVyKSB7XG4gICAgaWYgKCFmb3JtKSB0aHJvdyBuZXcgRXJyb3IoJ1RyeWluZyB0byByZWdpc3RlciBhbiB1bmRlZmluZWQgY2hpbGQgZm9ybScpO1xuICAgIHRoaXMuX2NoaWxkcmVuID0gdGhpcy5fY2hpbGRyZW4gfHwgW107XG4gICAgaWYgKHR5cGVvZiBmb3JtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLl9jaGlsZHJlbi5wdXNoKG5ldyBBcHBGb3JtUHJvdmlkZXIoZm9ybSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuX2NoaWxkcmVuLnB1c2goZm9ybSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkQ2hpbGRGb3Jtcyhmb3JtczogKElBcHBGb3JtIHwgSUFwcEZvcm1HZXR0ZXIpW10pIHtcbiAgICAoZm9ybXMgfHwgW10pLmZvckVhY2goZm9ybSA9PiB0aGlzLmFkZENoaWxkRm9ybShmb3JtKSk7XG4gIH1cblxuICByZW1vdmVDaGlsZEZvcm0oZm9ybTogSUFwcEZvcm0gfCBJQXBwRm9ybUdldHRlcik6IElBcHBGb3JtIHwgSUFwcEZvcm1HZXR0ZXIge1xuICAgIGlmICghZm9ybSkgdGhyb3cgbmV3IEVycm9yKCdUcnlpbmcgdG8gcmVtb3ZlIGFuIHVuZGVmaW5lZCBjaGlsZCBmb3JtJyk7XG4gICAgY29uc3QgaW5kZXggPSAodGhpcy5fY2hpbGRyZW4gfHwgW10pLmZpbmRJbmRleChjID0+IGMgPT09IGZvcm0pO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHJldHVybiB0aGlzLl9jaGlsZHJlbi5zcGxpY2UoaW5kZXgsIDEpWzBdO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgZGlzYWJsZShvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgdGhpcy5fZW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuX2NoaWxkcmVuPy5mb3JFYWNoKGMgPT4gYy5kaXNhYmxlKG9wdHMpKTtcbiAgICBpZiAoIXRoaXMubG9hZGluZyAmJiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSkgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGVuYWJsZShvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgdGhpcy5fZW5hYmxlZCA9IHRydWU7XG4gICAgdGhpcy5fY2hpbGRyZW4/LmZvckVhY2goYyA9PiBjLmVuYWJsZShvcHRzKSk7XG4gICAgaWYgKCF0aGlzLmxvYWRpbmcgJiYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkpIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBtYXJrQXNQcmlzdGluZShvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgdGhpcy5lcnJvciA9IG51bGw7XG4gICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5kaXJ0eVN1YmplY3QudmFsdWUgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmRpcnR5U3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICB9XG4gICAgdGhpcy5fY2hpbGRyZW4/LmZvckVhY2goYyA9PiBjLm1hcmtBc1ByaXN0aW5lKG9wdHMpKTtcbiAgICBpZiAoIXRoaXMubG9hZGluZyAmJiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSkgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG1hcmtBc1VudG91Y2hlZChvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgaWYgKHRoaXMudG91Y2hlZFN1YmplY3QudmFsdWUgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnRvdWNoZWRTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIH1cbiAgICB0aGlzLl9jaGlsZHJlbj8uZm9yRWFjaChjID0+IGMubWFya0FzVW50b3VjaGVkKCkpO1xuICAgIGlmICghdGhpcy5sb2FkaW5nICYmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpKSB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHByZWZlciB0byB1c2UgbWFya0FsbEFzVG91Y2hlZCgpXG4gICAqIEBwYXJhbSBvcHRzXG4gICAqL1xuICBtYXJrQXNUb3VjaGVkKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICBpZiAoIXRoaXMudG91Y2hlZFN1YmplY3QudmFsdWUgIT09IHRydWUpIHtcbiAgICAgIHRoaXMudG91Y2hlZFN1YmplY3QubmV4dCh0cnVlKTtcbiAgICB9XG4gICAgdGhpcy5fY2hpbGRyZW4/LmZvckVhY2goYyA9PiBjLm1hcmtBc1RvdWNoZWQob3B0cykpO1xuICAgIGlmICghdGhpcy5sb2FkaW5nICYmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpKSB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgbWFya0FsbEFzVG91Y2hlZChvcHRzPzoge2VtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIGlmICh0aGlzLnRvdWNoZWRTdWJqZWN0LnZhbHVlICE9PSB0cnVlKSB7XG4gICAgICB0aGlzLnRvdWNoZWRTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgfVxuICAgIHRoaXMuX2NoaWxkcmVuPy5mb3JFYWNoKGMgPT4gYy5tYXJrQWxsQXNUb3VjaGVkKG9wdHMpKTtcbiAgICBpZiAoIXRoaXMubG9hZGluZyAmJiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSkgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG1hcmtBc0RpcnR5KG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuO30pe1xuICAgIGlmICghdGhpcy5kaXJ0eVN1YmplY3QudmFsdWUpIHtcbiAgICAgIHRoaXMuZGlydHlTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICBpZiAoIXRoaXMubG9hZGluZyAmJiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSkgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBtYXJrQXNMb2FkaW5nKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuO30pe1xuICAgIGlmICghdGhpcy5sb2FkaW5nU3ViamVjdC52YWx1ZSkge1xuICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpO1xuICAgICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBtYXJrQXNMb2FkZWQob3B0cz86IHtcbiAgICBvbmx5U2VsZj86IGJvb2xlYW47XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgfSl7XG4gICAgaWYgKHRoaXMubG9hZGluZ1N1YmplY3QudmFsdWUpIHtcbiAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICBpZiAoIW9wdHMgfHwgb3B0cy5vbmx5U2VsZiAhPT0gdHJ1ZSkge1xuICAgICAgICAvLyBFbWl0IHRvIGNoaWxkcmVuIGZvcm1zIGFuZCBlZGl0b3JzXG4gICAgICAgIC8vIG5vdGU6IHRhYmxlcyBzaG91bGQgYmUgY2hhbmdlZCBieSBwYXJlbnRcbiAgICAgICAgdGhpcy5mb3Jtcz8uZm9yRWFjaChmID0+IGYubWFya0FzTG9hZGVkKG9wdHMpKTtcbiAgICAgICAgdGhpcy5lZGl0b3JzPy5mb3JFYWNoKGUgPT4gZS5tYXJrQXNMb2FkZWQob3B0cykpO1xuICAgICAgfVxuICAgICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkge1xuICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG1hcmtBc1JlYWR5KG9wdHM/OiB7ZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgdGhpcy5fY2hpbGRyZW4/LmZvckVhY2goYyA9PiBjLm1hcmtBc1JlYWR5KG9wdHMpKTtcbiAgICB0aGlzLnJlYWR5U3ViamVjdC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcmVhZHkob3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMucmVhZHlTdWJqZWN0LnZhbHVlKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgcmV0dXJuIHdhaXRGb3JUcnVlKHRoaXMucmVhZHlTdWJqZWN0LCBvcHRzKTtcbiAgfVxuXG4gIHdhaXRJZGxlKG9wdHM/OiBXYWl0Rm9yT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5sb2FkaW5nU3ViamVjdC52YWx1ZSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIHJldHVybiB3YWl0Rm9yRmFsc2UodGhpcy5sb2FkaW5nU3ViamVjdCwgb3B0cyk7XG4gIH1cblxuICBtYXJrQXNTYXZpbmcob3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KXtcbiAgICBpZiAodGhpcy5zYXZpbmdTdWJqZWN0LnZhbHVlICE9PSB0cnVlKSB7XG4gICAgICB0aGlzLnNhdmluZ1N1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgbWFya0FzU2F2ZWQob3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KXtcbiAgICBpZiAodGhpcy5zYXZpbmdTdWJqZWN0LnZhbHVlICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5zYXZpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBjYW5jZWwoZXZlbnQ/OiBFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmlzTmV3RGF0YSkge1xuICAgICAgYXdhaXQgdGhpcy51bmxvYWQoKTsgLy8gYXN5bmMgcmVzZXRcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy5kaXJ0eSl7XG4gICAgICBhd2FpdCB0aGlzLnJlbG9hZCgpOyAvLyBhc3luYyByZWxvYWRcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVW5sb2FkIHRoZSBwYWdlIChyZW1vdmUgYWxsIGRhdGEpLiBVc2VmdWwgd2hlbiByZXVzaW5nIGFuZ3VsYXIgY2FjaGUgYSBjYW5jZWxsZWQgcGFnZVxuICAgKlxuICAgKiBAcGFyYW0gb3B0c1xuICAgKi9cbiAgYXN5bmMgdW5sb2FkKG9wdHM/OiB7ZW1pdEV2ZW50PzogYm9vbGVhbiB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc29sZS5kZWJ1ZygnW2VkaXRvcl0gVW5sb2FkaW5nIGRhdGEuLi4nKTtcbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcbiAgICB0aGlzLl9jaGlsZHJlbj8uZm9yRWFjaChmID0+IHtcbiAgICAgIGlmIChmIGluc3RhbmNlb2YgQXBwRm9ybSkge1xuICAgICAgICBmLnJlc2V0KG51bGwsIG9wdHMpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoZiBpbnN0YW5jZW9mIEFwcFRhYmxlKSB7XG4gICAgICAgIGYuZGF0YVNvdXJjZS5kaXNjb25uZWN0KCk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChmIGluc3RhbmNlb2YgQXBwRWRpdG9yKSB7XG4gICAgICAgIGYudW5sb2FkKG9wdHMpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5tYXJrQXNQcmlzdGluZShvcHRzKTtcbiAgICB0aGlzLm1hcmtBc1NhdmVkKG9wdHMpO1xuICB9XG5cbiAgYXN5bmMgcmVsb2FkV2l0aENvbmZpcm1hdGlvbihjb25maXJtPzogYm9vbGVhbikge1xuICAgIGNvbnN0IG5lZWRDb25maXJtID0gdGhpcy5kaXJ0eTtcbiAgICAvLyBpZiBub3QgY29uZmlybSB5ZXQ6IGFzayBjb25maXJtYXRpb25cbiAgICBpZiAoIWNvbmZpcm0gJiYgbmVlZENvbmZpcm0pIHtcbiAgICAgIGNvbnN0IHRyYW5zbGF0aW9ucyA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoWydDT01NT04uQlROX0FCT1JUX0NIQU5HRVMnLCAnQ09NTU9OLkJUTl9DQU5DRUwnLCAnQ09ORklSTS5DQU5DRUxfQ0hBTkdFUycsICdDT05GSVJNLkFMRVJUX0hFQURFUiddKTtcbiAgICAgIGNvbnN0IGFsZXJ0ID0gYXdhaXQgdGhpcy5hbGVydEN0cmwuY3JlYXRlKHtcbiAgICAgICAgaGVhZGVyOiB0cmFuc2xhdGlvbnNbJ0NPTkZJUk0uQUxFUlRfSEVBREVSJ10sXG4gICAgICAgIG1lc3NhZ2U6IHRyYW5zbGF0aW9uc1snQ09ORklSTS5DQU5DRUxfQ0hBTkdFUyddLFxuICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGV4dDogdHJhbnNsYXRpb25zWydDT01NT04uQlROX0FCT1JUX0NIQU5HRVMnXSxcbiAgICAgICAgICAgIGNzc0NsYXNzOiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgIGhhbmRsZXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgY29uZmlybSA9IHRydWU7IC8vIHVwZGF0ZSB1cHBlciB2YWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGV4dDogdHJhbnNsYXRpb25zWydDT01NT04uQlROX0NBTkNFTCddLFxuICAgICAgICAgICAgcm9sZTogJ2NhbmNlbCcsXG4gICAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9KTtcbiAgICAgIGF3YWl0IGFsZXJ0LnByZXNlbnQoKTtcbiAgICAgIGF3YWl0IGFsZXJ0Lm9uRGlkRGlzbWlzcygpO1xuICAgIH1cblxuICAgIC8vIElmIGNvbmZpcm06IGV4ZWN1dGUgdGhlIHJlbG9hZFxuICAgIGlmIChjb25maXJtIHx8ICFuZWVkQ29uZmlybSkge1xuICAgICAgdGhpcy5zY3JvbGxUb1RvcCgpO1xuICAgICAgdGhpcy5kaXNhYmxlKCk7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5yZWxvYWQoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnb0JhY2soZXZlbnQ/OiBFdmVudCk6IFByb21pc2U8dm9pZCB8IGJvb2xlYW4+IHtcbiAgICAvLyBHbyBiYWNrXG4gICAgaWYgKHRoaXMudG9vbGJhcj8uY2FuR29CYWNrKSB7XG4gICAgICByZXR1cm4gdGhpcy50b29sYmFyLmdvQmFjaygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBCYWNrIHRvIGhvbWVcbiAgICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJyk7XG4gICAgfVxuICB9XG5cblxuXG4gIGFic3RyYWN0IGxvYWQoaWQ/OiBJRCwgb3B0aW9ucz86IE8pOiBQcm9taXNlPHZvaWQ+O1xuXG4gIGFic3RyYWN0IHNhdmUoZXZlbnQ/OiBFdmVudCwgb3B0aW9ucz86IGFueSk6IFByb21pc2U8Ym9vbGVhbj47XG5cbiAgYWJzdHJhY3QgcmVsb2FkKCk6IFByb21pc2U8dm9pZD47XG5cbiAgbG9nRm9ybUVycm9ycyhwcmVmaXg/OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2VkaXRvcl0gRWRpdG9yIG5vdCB2YWxpZC4gQ2hlY2tpbmcgd2hlcmUgKGZvcm1zLCB0YWJsZXMpLi4uJyk7XG4gICAgdGhpcy5fY2hpbGRyZW4/LmZvckVhY2goYyA9PiB0aGlzLmxvZ0NoaWxkcmVuRXJyb3JzKGMsIHByZWZpeCkpO1xuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIG1ldGhvZHMgLS0gKi9cblxuICBwcm90ZWN0ZWQgYXN5bmMgc2Nyb2xsVG9Ub3AoZHVyYXRpb24/OiBudW1iZXIpIHtcbiAgICBkdXJhdGlvbiA9IHRvTnVtYmVyKGR1cmF0aW9uLCA1MDApO1xuXG4gICAgaWYgKCF0aGlzLmNvbnRlbnQpIHtcbiAgICAgIGNvbnNvbGUud2FybihgW3RhYi1lZGl0b3JdIENhbm5vdCBzY3JvbGwgdG8gdG9wLiAobm8gJ2lvbi1jb250ZW50JyB0YWcgZm91bmQgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9YCk7XG5cbiAgICAgIC8vIFRPRE86IEZJWE1FIChub3Qgd29ya2luZyBhcyB0aGUgcGFnZSBpcyBub3QgdGhlIHdpbmRvdylcbiAgICAgIGNvbnN0IHNjcm9sbFRvVG9wID0gd2luZG93LnNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgY29uc3QgcG9zID0gd2luZG93LnBhZ2VZT2Zmc2V0O1xuICAgICAgICBpZiAocG9zID4gMCkge1xuICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCBwb3MgLSAyMCk7IC8vIGhvdyBmYXIgdG8gc2Nyb2xsIG9uIGVhY2ggc3RlcFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKHNjcm9sbFRvVG9wKTtcbiAgICAgICAgfVxuICAgICAgfSwgMTYpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNvbnRlbnQuc2Nyb2xsVG9Ub3AoZHVyYXRpb24pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlZ2lzdGVyU3Vic2NyaXB0aW9uKHN1YjogU3Vic2NyaXB0aW9ufFRlYXJkb3duTG9naWMpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKHN1Yik7XG4gIH1cblxuICBwcm90ZWN0ZWQgdW5yZWdpc3RlclN1YnNjcmlwdGlvbihzdWI6IFN1YnNjcmlwdGlvbikge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5yZW1vdmUoc3ViKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBzYXZlSWZEaXJ0eUFuZENvbmZpcm0oZXZlbnQ/OiBVSUV2ZW50LCBvcHRzPzoge1xuICAgIGVtaXRFdmVudD86IGJvb2xlYW47XG4gICAgY29uZmlybWVkPzogYm9vbGVhblxuICB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKCF0aGlzLmRpcnR5KSByZXR1cm4gdHJ1ZTtcblxuICAgIGxldCBjb25maXJtZWQgPSBvcHRzPy5jb25maXJtZWQgfHwgZmFsc2U7XG4gICAgaWYgKCFjb25maXJtZWQpIHtcbiAgICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICAgIGNvbnN0IHRyYW5zbGF0aW9ucyA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoWydDT01NT04uQlROX1NBVkUnLCAnQ09NTU9OLkJUTl9DQU5DRUwnLCAnQ09NTU9OLkJUTl9BQk9SVF9DSEFOR0VTJywgJ0NPTkZJUk0uU0FWRScsICdDT05GSVJNLkFMRVJUX0hFQURFUiddKTtcbiAgICAgIGNvbnN0IGFsZXJ0ID0gYXdhaXQgdGhpcy5hbGVydEN0cmwuY3JlYXRlKHtcbiAgICAgICAgaGVhZGVyOiB0cmFuc2xhdGlvbnNbJ0NPTkZJUk0uQUxFUlRfSEVBREVSJ10sXG4gICAgICAgIG1lc3NhZ2U6IHRyYW5zbGF0aW9uc1snQ09ORklSTS5TQVZFJ10sXG4gICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGlvbnNbJ0NPTU1PTi5CVE5fQ0FOQ0VMJ10sXG4gICAgICAgICAgICByb2xlOiAnY2FuY2VsJyxcbiAgICAgICAgICAgIGNzc0NsYXNzOiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgIGhhbmRsZXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgY2FuY2VsID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRleHQ6IHRyYW5zbGF0aW9uc1snQ09NTU9OLkJUTl9BQk9SVF9DSEFOR0VTJ10sXG4gICAgICAgICAgICBjc3NDbGFzczogJ3NlY29uZGFyeScsXG4gICAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGlvbnNbJ0NPTU1PTi5CVE5fU0FWRSddLFxuICAgICAgICAgICAgaGFuZGxlcjogKCkgPT4ge1xuICAgICAgICAgICAgICBjb25maXJtZWQgPSB0cnVlOyAvLyB1cGRhdGUgdXBwZXIgdmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0pO1xuICAgICAgYXdhaXQgYWxlcnQucHJlc2VudCgpO1xuICAgICAgYXdhaXQgYWxlcnQub25EaWREaXNtaXNzKCk7XG5cbiAgICAgIGlmICghY29uZmlybWVkKSB7XG4gICAgICAgIHJldHVybiAhY2FuY2VsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnNhdmUoZXZlbnQsIG9wdHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHNob3dUb2FzdChvcHRzOiBTaG93VG9hc3RPcHRpb25zKSB7XG4gICAgaWYgKCF0aGlzLnRvYXN0Q29udHJvbGxlcikgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHRvYXN0Q29udHJvbGxlciBpbiBjb21wb25lbnRcXCdzIGNvbnN0cnVjdG9yJyk7XG4gICAgYXdhaXQgVG9hc3RzLnNob3codGhpcy50b2FzdENvbnRyb2xsZXIsIHRoaXMudHJhbnNsYXRlLCBvcHRzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBsb2dDaGlsZHJlbkVycm9ycyhjOiBJQXBwRm9ybSB8IEFic3RyYWN0Q29udHJvbCwgcHJlZml4Pzogc3RyaW5nLCBwYXRoPzogc3RyaW5nKSB7XG4gICAgcHJlZml4ID0gcHJlZml4IHx8ICdbYXBwLXRhYi1lZGl0b3JdICc7XG4gICAgLy8gSWYgZWRpdG9yXG4gICAgaWYgKGMgaW5zdGFuY2VvZiBBcHBFZGl0b3IpIHtcbiAgICAgIGMubG9nRm9ybUVycm9ycygpO1xuICAgIH1cbiAgICAvLyBBbmd1bGFyIGZvcm0gY29udHJvbFxuICAgIGVsc2UgaWYgKGMgaW5zdGFuY2VvZiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICAgIEFwcEZvcm1VdGlscy5sb2dGb3JtRXJyb3JzKGMsIHByZWZpeCwgcGF0aCk7XG4gICAgfVxuICAgIC8vIElmIGZvcm0gcHJvdmlkZXI6IGdldCBkZWxlZ2F0ZVxuICAgIGVsc2UgaWYgKGMgaW5zdGFuY2VvZiBBcHBGb3JtUHJvdmlkZXIpIHtcbiAgICAgIGlmICghYy5lbXB0eSAmJiAhYy52YWxpZCkge1xuICAgICAgICBjLndhaXREZWxlZ2F0ZSh7dGltZW91dDogMTAwMH0pLnRoZW4oZGVsZWdhdGUgPT4gdGhpcy5sb2dDaGlsZHJlbkVycm9ycyhkZWxlZ2F0ZSwgcHJlZml4LCAncHJvdmlkZXInKSk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIElmIHRhYmxlXG4gICAgZWxzZSBpZiAoYyBpbnN0YW5jZW9mIEFwcFRhYmxlKSB7XG4gICAgICBpZiAoYy5pbnZhbGlkICYmIGMuZWRpdGVkUm93ICYmIGMuZWRpdGVkUm93LnZhbGlkYXRvcikge1xuICAgICAgICBjb25zdCBwYXRoID0gYy5jb25zdHJ1Y3Rvci5uYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIEFwcEZvcm1VdGlscy5sb2dGb3JtRXJyb3JzKGMuZWRpdGVkUm93LnZhbGlkYXRvciwgcHJlZml4LCBwYXRoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gSWYgZm9ybVxuICAgIGVsc2UgaWYgKGMgaW5zdGFuY2VvZiBBcHBGb3JtKSB7XG4gICAgICBpZiAoIWMuZW1wdHkgJiYgIWMudmFsaWQpIHtcbiAgICAgICAgaWYgKGMucGVuZGluZykge1xuICAgICAgICAgIGNvbnN0IHBhdGggPSBjLmNvbnN0cnVjdG9yLm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICBjb25zb2xlLndhcm4oIGAke3ByZWZpeH0gLT4gJHtwYXRofTogd2FpdGluZyB3aGlsZSBwZW5kaW5nLi4uYCk7XG4gICAgICAgICAgQXBwRm9ybVV0aWxzLndhaXRXaGlsZVBlbmRpbmcoYywge3RpbWVvdXQ6IDEwMDB9KVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5sb2dDaGlsZHJlbkVycm9ycyhjLmZvcm0sIHByZWZpeCwgcGF0aCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIEFwcEZvcm1VdGlscy5sb2dGb3JtRXJyb3JzKGMuZm9ybSwgcHJlZml4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBJZiBlZGl0b3JcbiAgICBlbHNlIGlmIChjIGluc3RhbmNlb2YgQXBwRWRpdG9yKSB7XG4gICAgICBpZiAoIWMuZW1wdHkgJiYgIWMudmFsaWQpIHtcbiAgICAgICAgaWYgKGMucGVuZGluZykge1xuICAgICAgICAgIGNvbnN0IHBhdGggPSBjLmNvbnN0cnVjdG9yLm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICBjb25zb2xlLndhcm4oIGAke3ByZWZpeH0gLT4gJHtwYXRofTogd2FpdGluZyB3aGlsZSBwZW5kaW5nLi4uYCk7XG4gICAgICAgICAgQXBwRm9ybVV0aWxzLndhaXRXaGlsZVBlbmRpbmcoYywge3RpbWVvdXQ6IDEwMDB9KVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4gYy5sb2dGb3JtRXJyb3JzKHByZWZpeCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGMubG9nRm9ybUVycm9ycyhwcmVmaXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKCBgJHtwcmVmaXh9IFVua25vd24gY2hpbGRyZW4gc3ViLWZvcm06IGAsIGMpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRFcnJvcih2YWx1ZTogc3RyaW5nLCBvcHRzPzoge2VtaXRFdmVudD86IGJvb2xlYW47fSkge1xuICAgIGlmICh0aGlzLmVycm9yU3ViamVjdC52YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQodmFsdWUpO1xuICAgICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzZXRFcnJvcihvcHRzPzoge2VtaXRFdmVudD86IGJvb2xlYW59KSB7XG4gICAgdGhpcy5zZXRFcnJvcih1bmRlZmluZWQsIG9wdHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hcmtGb3JDaGVjaygpIHtcbiAgICAvLyBTaG91bGQgYmUgb3ZlcnJpZGUgYnkgc3ViY2xhc3NlcywgaWYgY2hhbmdlIGRldGVjdGlvbiBpcyBQdXNoXG4gIH1cbn1cblxuQERpcmVjdGl2ZSgpXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcHBUYWJFZGl0b3I8VCA9IGFueSwgSUQgPSBudW1iZXIsIE8gPSBhbnk+XG4gIGV4dGVuZHMgQXBwRWRpdG9yPFQsIElELCBPPlxuICBpbXBsZW1lbnRzIElBcHBUYWJFZGl0b3Ige1xuXG4gIHByb3RlY3RlZCBfc2VsZWN0ZWRUYWJJbmRleCA9IDA7XG5cbiAgLy8gRWRpdG9yIG9wdGlvbnNcbiAgdGFiQ291bnQ6IG51bWJlcjtcbiAgZW5hYmxlU3dpcGU6IGJvb2xlYW47XG4gIHRhYkdyb3VwQW5pbWF0aW9uRHVyYXRpb246IHN0cmluZztcblxuICBASW5wdXQoKSBxdWVyeVRhYkluZGV4UGFyYW1OYW1lOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgc2V0IHNlbGVjdGVkVGFiSW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuc2V0U2VsZWN0ZWRUYWJJbmRleCh2YWx1ZSk7XG4gIH1cbiAgZ2V0IHNlbGVjdGVkVGFiSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRUYWJJbmRleDtcbiAgfVxuXG4gIEBPdXRwdXQoKSByZWFkb25seSBzZWxlY3RlZFRhYkluZGV4Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQFZpZXdDaGlsZCgndGFiR3JvdXAnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWJHcm91cDogTWF0VGFiR3JvdXA7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsIC8vIE1vZGFsIGVkaXRvciBnaXZlICdudWxsJ1xuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICBwcm90ZWN0ZWQgYWxlcnRDdHJsOiBBbGVydENvbnRyb2xsZXIsXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBvcHRpb25zPzogQXBwVGFiRWRpdG9yT3B0aW9ucykge1xuICAgIHN1cGVyKHJvdXRlLCByb3V0ZXIsIGFsZXJ0Q3RybCwgdHJhbnNsYXRlKTtcbiAgICBvcHRpb25zID0ge1xuICAgICAgdGFiQ291bnQ6IDEsXG4gICAgICBlbmFibGVTd2lwZTogdHJ1ZSxcbiAgICAgIHRhYkdyb3VwQW5pbWF0aW9uRHVyYXRpb246ICcyMDBtcycsXG4gICAgICAuLi5vcHRpb25zXG4gICAgfVxuICAgIHRoaXMudGFiQ291bnQgPSBvcHRpb25zLnRhYkNvdW50O1xuICAgIHRoaXMuZW5hYmxlU3dpcGUgPSBvcHRpb25zLmVuYWJsZVN3aXBlO1xuICAgIHRoaXMudGFiR3JvdXBBbmltYXRpb25EdXJhdGlvbiA9IG9wdGlvbnMudGFiR3JvdXBBbmltYXRpb25EdXJhdGlvbjtcbiAgICB0aGlzLnF1ZXJ5VGFiSW5kZXhQYXJhbU5hbWUgPSAndGFiJztcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAvLyBSZWFkIHRoZSBzZWxlY3RlZCB0YWIgaW5kZXgsIGZyb20gcGF0aCBxdWVyeSBwYXJhbXNcbiAgICBpZiAodGhpcy50YWJHcm91cCAmJiB0aGlzLnJvdXRlICYmIHRoaXMucXVlcnlUYWJJbmRleFBhcmFtTmFtZSkge1xuICAgICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbih0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zXG4gICAgICAgIC5zdWJzY3JpYmUocXVlcnlQYXJhbXMgPT4ge1xuICAgICAgICAgIHRoaXMucXVlcnlQYXJhbXMgPSB7Li4ucXVlcnlQYXJhbXN9O1xuXG4gICAgICAgICAgLy8gUGFyc2UgdGFiIHBhcmFtXG4gICAgICAgICAgaWYgKHRoaXMudGFiQ291bnQgPiAxICYmIHRoaXMucXVlcnlUYWJJbmRleFBhcmFtTmFtZSkge1xuICAgICAgICAgICAgY29uc3QgdGFiSW5kZXggPSBxdWVyeVBhcmFtc1t0aGlzLnF1ZXJ5VGFiSW5kZXhQYXJhbU5hbWVdO1xuICAgICAgICAgICAgdGhpcy5xdWVyeVBhcmFtc1t0aGlzLnF1ZXJ5VGFiSW5kZXhQYXJhbU5hbWVdID0gdGFiSW5kZXggJiYgcGFyc2VJbnQodGFiSW5kZXgpIHx8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChpc05vdE5pbCh0aGlzLnF1ZXJ5UGFyYW1zW3RoaXMucXVlcnlUYWJJbmRleFBhcmFtTmFtZV0pKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IHRoaXMucXVlcnlQYXJhbXNbdGhpcy5xdWVyeVRhYkluZGV4UGFyYW1OYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBSZWFsaWduIHRhYiwgYWZ0ZXIgYSBkZWxheSBiZWNhdXNlIHRoZSB0YWIgY2FuIGJlIGRpc2FibGVkIHdoZW4gY29tcG9uZW50IGlzIGNyZWF0ZWRcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudGFiR3JvdXAucmVhbGlnbklua0JhcigpLCA1MDApO1xuICAgICAgICB9KSk7XG4gICAgfVxuICB9XG5cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleENoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMubG9hZGluZ1N1YmplY3QudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmVycm9yU3ViamVjdC51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgc2V0U2VsZWN0ZWRUYWJJbmRleCh2YWx1ZTogbnVtYmVyLCBvcHRzPzoge2VtaXRFdmVudD86IGJvb2xlYW47IHJlYWxpZ25JbmtCYXI/OiBib29sZWFuIH0pIHtcbiAgICAvLyBGaXggdmFsdWVcbiAgICBpZiAodmFsdWUgPCAwKSB7XG4gICAgICB2YWx1ZSA9IDA7XG4gICAgfVxuICAgIGVsc2UgaWYgKHZhbHVlID4gdGhpcy50YWJDb3VudCAtIDEpIHtcbiAgICAgIGNvbnNvbGUud2FybihgW3RhYi1lZGl0b3JdIEludmFsaWQgdGFiIGluZGV4ICR7dmFsdWV9LiBNYXggdmFsdWUgaXMgJHt0aGlzLnRhYkNvdW50LTF9YClcbiAgICAgIHZhbHVlID0gdGhpcy5fc2VsZWN0ZWRUYWJJbmRleDtcbiAgICB9XG5cbiAgICB0aGlzLl9zZWxlY3RlZFRhYkluZGV4ID0gdmFsdWU7XG4gICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4Q2hhbmdlLm5leHQodmFsdWUpO1xuXG4gICAgaWYgKHRoaXMudGFiR3JvdXAgJiYgKCFvcHRzIHx8IG9wdHMucmVhbGlnbklua0JhciAhPT0gZmFsc2UpKSB7XG4gICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSB2YWx1ZTtcbiAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgICAvLyBXYWl0IHRhYiBjaGFuZ2UgaW4gVUksIGJlZm9yZSByZWFsaWduIGluayB0YWJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy50YWJHcm91cC5yZWFsaWduSW5rQmFyKCksIDIwMCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICByZWFsaWduSW5rQmFyKCkge1xuICAgIHRoaXMudGFiR3JvdXA/LnJlYWxpZ25JbmtCYXIoKTtcbiAgfVxuXG5cbiAgb25UYWJDaGFuZ2UoZXZlbnQ6IE1hdFRhYkNoYW5nZUV2ZW50LCBxdWVyeVRhYkluZGV4UGFyYW1OYW1lPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcXVlcnlUYWJJbmRleFBhcmFtTmFtZSA9IHF1ZXJ5VGFiSW5kZXhQYXJhbU5hbWUgfHwgdGhpcy5xdWVyeVRhYkluZGV4UGFyYW1OYW1lO1xuXG4gICAgaWYgKCFxdWVyeVRhYkluZGV4UGFyYW1OYW1lIHx8ICF0aGlzLnJvdXRlKSByZXR1cm4gdHJ1ZTsgLy8gU2tpcCBpZiB0YWIgcXVlcnkgcGFyYW0gbm90IHNldCwgb3Igbm8gcm91dGVcblxuICAgIGlmICghdGhpcy5xdWVyeVBhcmFtcyB8fCArdGhpcy5xdWVyeVBhcmFtc1txdWVyeVRhYkluZGV4UGFyYW1OYW1lXSAhPT0gZXZlbnQuaW5kZXgpIHtcblxuICAgICAgdGhpcy5xdWVyeVBhcmFtcyA9IHRoaXMucXVlcnlQYXJhbXMgfHwge307XG4gICAgICB0aGlzLnF1ZXJ5UGFyYW1zW3F1ZXJ5VGFiSW5kZXhQYXJhbU5hbWVdID0gZXZlbnQuaW5kZXg7XG5cbiAgICAgIGlmIChxdWVyeVRhYkluZGV4UGFyYW1OYW1lID09PSAndGFiJyAmJiBpc05vdE5pbCh0aGlzLnF1ZXJ5UGFyYW1zWydzdWJ0YWInXSkpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMucXVlcnlQYXJhbXMuc3VidGFiOyAvLyBjbGVhbiBzdWJ0YWJcbiAgICAgIH1cbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLiddLCB7XG4gICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICAgIHF1ZXJ5UGFyYW1zOiB0aGlzLnF1ZXJ5UGFyYW1zLFxuICAgICAgICByZXBsYWNlVXJsOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQWN0aW9uIHRyaWdnZXJlZCB3aGVuIHVzZXIgc3dpcGVzXG4gICAqL1xuICBvblN3aXBlVGFiKGV2ZW50OiBIYW1tZXJTd2lwZUV2ZW50KTogYm9vbGVhbiB7XG4gICAgLy8gREVCVUdcbiAgICAvLyBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhcIlt0YWItcGFnZV0gb25Td2lwZVRhYigpXCIpO1xuXG4gICAgLy8gU2tpcCwgaWYgbm90IGEgdmFsaWQgc3dpcGUgZXZlbnRcbiAgICBpZiAoIXRoaXMuZW5hYmxlU3dpcGUgfHwgIWV2ZW50XG4gICAgICB8fCBldmVudC5kZWZhdWx0UHJldmVudGVkIHx8IChldmVudC5zcmNFdmVudCAmJiBldmVudC5zcmNFdmVudC5kZWZhdWx0UHJldmVudGVkKVxuICAgICAgfHwgZXZlbnQucG9pbnRlclR5cGUgIT09ICd0b3VjaCdcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBERUJVR1xuICAgIC8vaWYgKHRoaXMuZGVidWcpXG4gICAgLy9jb25zb2xlLmRlYnVnKFwiW3RhYi1wYWdlXSBEZXRlY3RlZCBzd2lwZTogXCIgKyBldmVudC50eXBlLCBldmVudCk7XG5cbiAgICBsZXQgc2VsZWN0VGFiSW5kZXggPSB0aGlzLnNlbGVjdGVkVGFiSW5kZXg7XG4gICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gICAgICAvLyBPcGVuIG5leHQgdGFiXG4gICAgICBjYXNlICdzd2lwZWxlZnQnOlxuICAgICAgICBjb25zdCBpc0xhc3QgPSBzZWxlY3RUYWJJbmRleCA+PSAodGhpcy50YWJDb3VudCAtIDEpO1xuICAgICAgICBzZWxlY3RUYWJJbmRleCA9IGlzTGFzdCA/IDAgOiBzZWxlY3RUYWJJbmRleCArIDE7XG4gICAgICAgIGJyZWFrO1xuXG5cbiAgICAgIC8vIE9wZW4gcHJldmlvdXMgdGFiXG4gICAgICBjYXNlICdzd2lwZXJpZ2h0JzpcbiAgICAgICAgY29uc3QgaXNGaXJzdCA9IHNlbGVjdFRhYkluZGV4IDw9IDA7XG4gICAgICAgIHNlbGVjdFRhYkluZGV4ID0gaXNGaXJzdCA/IHRoaXMudGFiQ291bnQgOiBzZWxlY3RUYWJJbmRleCAtIDE7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICAvLyBPdGhlciBjYXNlXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLmVycm9yKCdbdGFiLXBhZ2VdIFVua25vd24gc3dpcGUgYWN0aW9uOiAnICsgZXZlbnQudHlwZSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IHNlbGVjdFRhYkluZGV4O1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgb25TdWJUYWJDaGFuZ2UoZXZlbnQ6IE1hdFRhYkNoYW5nZUV2ZW50KSB7XG4gICAgdGhpcy5vblRhYkNoYW5nZShldmVudCwgJ3N1YnRhYicpO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKG9wdHM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW4gfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IDA7XG4gICAgYXdhaXQgc3VwZXIudW5sb2FkKG9wdHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldEZpcnN0SW52YWxpZFRhYkluZGV4KCk6IG51bWJlcjtcblxuICBwcm90ZWN0ZWQgYXN5bmMgc2F2ZURpcnR5Q2hpbGRyZW4oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgLy8gU2F2ZSBhbGwgZGlydHkgdGFibGVzXG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIC4uLnRoaXMudGFibGVzLFxuICAgICAgLi4udGhpcy5lZGl0b3JzXG4gICAgXVxuICAgICAgLmZpbHRlcihjID0+IGMuZGlydHkpXG4gICAgICAubWFwKGMgPT4gYy5zYXZlKCkpKTtcblxuICAgIHJldHVybiAhcmVzdWx0cy5zb21lKHNhdmVkID0+IHNhdmVkICE9PSB0cnVlKTtcbiAgfVxufVxuIl19
|
|
698
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2Zvcm0vZWRpdG9yLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1SCxPQUFPLEVBQUMsY0FBYyxFQUFVLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRS9ELE9BQU8sRUFBQyxlQUFlLEVBQUUsVUFBVSxFQUFrQixNQUFNLGdCQUFnQixDQUFDO0FBQzVFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDckMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFDLGVBQWUsRUFBRSxZQUFZLEVBQTJCLE1BQU0sY0FBYyxDQUFDO0FBQ3JGLE9BQU8sRUFBbUIsTUFBTSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFFbkUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzFELE9BQU8sRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFMUQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxZQUFZLEVBQWtCLFdBQVcsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBZW5GLE1BQU0sT0FBTyxtQkFBbUI7Q0FnQi9CO0FB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QUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUM1SCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLEtBQUs7UUFDUCwyRkFBMkY7UUFDM0YsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ25HLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ25HLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ2hJLENBQUM7SUFFRCxJQUFJLE1B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UUFBUSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVLLE1BQU0sQ0FBQyxJQUE4Qjs7Ozs7WUFDekMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztZQUMxQixNQUFNLE9BQU0sTUFBTSxZQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUM7S0FBQTtJQUllLGlCQUFpQjs7WUFDL0Isd0JBQXdCO1lBQ3hCLE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDaEMsR0FBRyxJQUFJLENBQUMsTUFBTTtnQkFDZCxHQUFHLElBQUksQ0FBQyxPQUFPO2FBQ2hCO2lCQUNFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7aUJBQ3BCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFdkIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDaEQsQ0FBQztLQUFBOzs7WUF0TUYsU0FBUzs7O1lBbGxCRixjQUFjLHVCQTZtQmpCLFFBQVE7WUE3bUJtQixNQUFNO1lBRTlCLGVBQWU7WUFDZixnQkFBZ0I7WUE4bUJFLG1CQUFtQix1QkFBeEMsUUFBUTs7O3FDQWxCVixLQUFLOytCQUVMLEtBQUs7cUNBT0wsTUFBTTt1QkFFTixTQUFTLFNBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFBhcmFtcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtNYXRUYWJDaGFuZ2VFdmVudCwgTWF0VGFiR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHtBbGVydENvbnRyb2xsZXIsIElvbkNvbnRlbnQsIFRvYXN0Q29udHJvbGxlcn0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIFRlYXJkb3duTG9naWN9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBcHBUYWJsZX0gZnJvbSAnLi4vdGFibGUvdGFibGUuY2xhc3MnO1xuaW1wb3J0IHtBcHBGb3JtfSBmcm9tICcuL2Zvcm0uY2xhc3MnO1xuaW1wb3J0IHtGb3JtQnV0dG9uc0JhclRva2VufSBmcm9tICcuL2Zvcm0tYnV0dG9ucy1iYXIuY29tcG9uZW50JztcbmltcG9ydCB7QXBwRm9ybVByb3ZpZGVyLCBBcHBGb3JtVXRpbHMsIElBcHBGb3JtLCBJQXBwRm9ybUdldHRlcn0gZnJvbSAnLi9mb3JtLnV0aWxzJztcbmltcG9ydCB7U2hvd1RvYXN0T3B0aW9ucywgVG9hc3RzfSBmcm9tICcuLi8uLi9zaGFyZWQvdG9hc3QvdG9hc3RzJztcbmltcG9ydCB7SGFtbWVyU3dpcGVFdmVudH0gZnJvbSAnLi4vLi4vc2hhcmVkL2dlc3R1cmUvaGFtbWVyLnV0aWxzJztcbmltcG9ydCB7VG9vbGJhclRva2VufSBmcm9tICcuLi8uLi9zaGFyZWQvdG9vbGJhci90b29sYmFyJztcbmltcG9ydCB7aXNOb3ROaWwsIHRvTnVtYmVyfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7Q2FuTGVhdmV9IGZyb20gJy4uLy4uL3NoYXJlZC9ndWFyZC9jb21wb25lbnQtZGlydHkuZ3VhcmQnO1xuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7d2FpdEZvckZhbHNlLCBXYWl0Rm9yT3B0aW9ucywgd2FpdEZvclRydWV9IGZyb20gJy4uLy4uL3NoYXJlZC9vYnNlcnZhYmxlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUFwcEVkaXRvciBleHRlbmRzIENhbkxlYXZlLCBJQXBwRm9ybSB7XG4gIHNhdmUoZXZlbnQ/OiBFdmVudCwgb3B0aW9ucz86IGFueSk6IFByb21pc2U8Ym9vbGVhbj47XG4gIGNhbmNlbChldmVudD86IEV2ZW50KTogUHJvbWlzZTx2b2lkPjtcbiAgYWRkQ2hpbGRGb3JtKGZvcm06IElBcHBGb3JtIHwgSUFwcEZvcm1HZXR0ZXIpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElBcHBUYWJFZGl0b3IgZXh0ZW5kcyBJQXBwRWRpdG9yIHtcbiAgc2VsZWN0ZWRUYWJJbmRleDogbnVtYmVyO1xuICBzZXRTZWxlY3RlZFRhYkluZGV4KHZhbHVlOiBudW1iZXIsIG9wdHM/OiB7ZW1pdEV2ZW50PzogYm9vbGVhbjsgcmVhbGlnbklua0Jhcj86IGJvb2xlYW47fSk6IHZvaWQ7XG4gIHVubG9hZChvcHRzPzoge2VtaXRFdmVudD86IGJvb2xlYW59KTogUHJvbWlzZTx2b2lkPjtcbiAgcmVhbGlnbklua0JhcigpO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwVGFiRWRpdG9yT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiB0YWIuIDEgYnkgZGVmYXVsdFxuICAgKi9cbiAgdGFiQ291bnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqICcyMDBtcycgYnkgZGVmYXVsdFxuICAgKi9cbiAgdGFiR3JvdXBBbmltYXRpb25EdXJhdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogU2hvdWxkIGVuYWJsZSBzd2lwZSBiZXR3ZWVuIHRhYiwgb24gdG91Y2ggc2NyZWVuXG4gICAqL1xuICBlbmFibGVTd2lwZT86IGJvb2xlYW47IC8vIHRydWUgYnkgZGVmYXVsdFxufVxuXG5ARGlyZWN0aXZlKClcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFwcEVkaXRvcjxUID0gYW55LCBJRCA9IG51bWJlciwgTyA9IGFueT5cbiAgaW1wbGVtZW50cyBJQXBwRWRpdG9yLCBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgcHJpdmF0ZSBfY2hpbGRyZW46IElBcHBGb3JtW107XG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBwcm90ZWN0ZWQgX2VuYWJsZWQgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHRvYXN0Q29udHJvbGxlcjogVG9hc3RDb250cm9sbGVyO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveVN1YmplY3QgPSBuZXcgU3ViamVjdCgpO1xuXG4gIHJlYWRvbmx5IHJlYWR5U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBkaXJ0eVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgbG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBlcnJvclN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgc2F2aW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSB0b3VjaGVkU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGRlYnVnID0gZmFsc2U7XG4gIHByZXZpb3VzRGF0YUlkOiBJRDtcbiAgc3VibWl0dGVkID0gZmFsc2U7XG4gIHF1ZXJ5UGFyYW1zOiBQYXJhbXM7XG4gIGkxOG5Db250ZXh0OiB7XG4gICAgcHJlZml4OiBzdHJpbmc7XG4gICAgc3VmZml4OiBzdHJpbmc7XG4gIH07XG5cbiAgLyoqXG4gICAqICBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHJvdGVjdGVkIHNldCBfbG9hZGluZyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dCh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogIEBkZXByZWNhdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IF9sb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxvYWRpbmdTdWJqZWN0LnZhbHVlO1xuICB9XG4gIC8qKlxuICAgKiAgQGRlcHJlY2F0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgXyRyZWFkeSgpOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnJlYWR5U3ViamVjdDtcbiAgfVxuICAvKipcbiAgICogIEBkZXByZWNhdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IF8kbG9hZGluZygpOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmxvYWRpbmdTdWJqZWN0O1xuICB9XG5cbiAgZ2V0IGVycm9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JTdWJqZWN0LnZhbHVlO1xuICB9XG5cbiAgc2V0IGVycm9yKGVycm9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNldEVycm9yKGVycm9yKTtcbiAgfVxuXG4gIGdldCBzYXZpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2F2aW5nU3ViamVjdC52YWx1ZSB8fCB0aGlzLmVkaXRvcnM/LnNvbWUoZSA9PiBlLnNhdmluZyk7XG4gIH1cblxuICBAVmlld0NoaWxkKFRvb2xiYXJUb2tlbikgdG9vbGJhcjogVG9vbGJhclRva2VufG51bGwgPSBudWxsO1xuICBAVmlld0NoaWxkKEZvcm1CdXR0b25zQmFyVG9rZW4sIHsgc3RhdGljOiB0cnVlIH0pIGZvcm1CdXR0b25zQmFyOiBGb3JtQnV0dG9uc0JhclRva2VufG51bGwgPSBudWxsO1xuICBAVmlld0NoaWxkKElvbkNvbnRlbnQsIHtzdGF0aWM6IHRydWV9KSBjb250ZW50OiBJb25Db250ZW50O1xuXG4gIGdldCB0YWJsZXMoKTogQXBwVGFibGU8YW55PltdIHtcbiAgICByZXR1cm4gdGhpcy5fY2hpbGRyZW4gJiYgKHRoaXMuX2NoaWxkcmVuLmZpbHRlcihjID0+IGMgaW5zdGFuY2VvZiBBcHBUYWJsZSkgYXMgQXBwVGFibGU8YW55PltdKTtcbiAgfVxuICBnZXQgZm9ybXMoKTogQXBwRm9ybTxhbnk+W10ge1xuICAgIHJldHVybiB0aGlzLl9jaGlsZHJlbiAmJiAodGhpcy5fY2hpbGRyZW4uZmlsdGVyKGMgPT4gYyBpbnN0YW5jZW9mIEFwcEZvcm0pIGFzIEFwcEZvcm08YW55PltdKTtcbiAgfVxuICBnZXQgZWRpdG9ycygpOiBBcHBFZGl0b3I8YW55PltdIHtcbiAgICByZXR1cm4gdGhpcy5fY2hpbGRyZW4gJiYgKHRoaXMuX2NoaWxkcmVuLmZpbHRlcihjID0+IGMgaW5zdGFuY2VvZiBBcHBFZGl0b3IpIGFzIEFwcEVkaXRvcltdKTtcbiAgfVxuICBnZXQgZGlydHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlydHlTdWJqZWN0LnZhbHVlIHx8ICh0aGlzLl9jaGlsZHJlbiAmJiB0aGlzLl9jaGlsZHJlbi5maW5kSW5kZXgoYyA9PiBjLmVuYWJsZWQgJiYgYy5kaXJ0eSkgIT09IC0xKSB8fCBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJcyB2YWxpZCAodGFibGVzIGFuZCBmb3JtcylcbiAgICovXG4gIGdldCB2YWxpZCgpOiBib29sZWFuIHtcbiAgICAvLyBJbXBvcnRhbnQ6IFNob3VsZCBiZSBub3QgaW52YWxpZCBBTkQgbm90IHBlbmRpbmcsIHNvIHVzZSAnIXZhbGlkJyAoRE8gTk9UIHVzZSAnaW52YWxpZCcpXG4gICAgcmV0dXJuICF0aGlzLl9jaGlsZHJlbiB8fCB0aGlzLl9jaGlsZHJlbi5maW5kSW5kZXgoYyA9PiBjLmVuYWJsZWQgJiYgIWMudmFsaWQpID09PSAtMTtcbiAgfVxuXG4gIGdldCBpbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5fY2hpbGRyZW4gJiYgdGhpcy5fY2hpbGRyZW4uZmluZEluZGV4KGMgPT4gYy5lbmFibGVkICYmIGMuaW52YWxpZCkgIT09IC0xKSB8fCBmYWxzZTtcbiAgfVxuXG4gIGdldCBwZW5kaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5fY2hpbGRyZW4gJiYgdGhpcy5fY2hpbGRyZW4uZmluZEluZGV4KGMgPT4gYy5lbmFibGVkICYmIGMucGVuZGluZykgIT09IC0xKSB8fCBmYWxzZTtcbiAgfVxuXG4gIGdldCBsb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxvYWRpbmdTdWJqZWN0LnZhbHVlIHx8ICh0aGlzLl9jaGlsZHJlbiAmJiB0aGlzLl9jaGlsZHJlbi5maW5kSW5kZXgoYyA9PiBjLmVuYWJsZWQgJiYgYy5sb2FkaW5nKSAhPT0gLTEpIHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGxvYWRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMubG9hZGluZ1N1YmplY3QudmFsdWUgJiYgKCF0aGlzLl9jaGlsZHJlbiB8fCB0aGlzLl9jaGlsZHJlbi5maW5kSW5kZXgoYyA9PiBjLmVuYWJsZWQgJiYgYy5sb2FkaW5nKSA9PT0gLTEpIHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0IHRvdWNoZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG91Y2hlZFN1YmplY3QudmFsdWUgfHwgKHRoaXMuX2NoaWxkcmVuICYmIHRoaXMuX2NoaWxkcmVuLmZpbmRJbmRleChjID0+IGMuZW5hYmxlZCAmJiBjLnRvdWNoZWQpICE9PSAtMSkgfHwgZmFsc2U7XG4gIH1cblxuICBnZXQgdW50b3VjaGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy50b3VjaGVkU3ViamVjdC52YWx1ZSAmJiAoIXRoaXMuX2NoaWxkcmVuIHx8IHRoaXMuX2NoaWxkcmVuLmZpbmRJbmRleChjID0+IGMuZW5hYmxlZCAmJiBjLnRvdWNoZWQpID09PSAtMSkgfHwgZmFsc2U7XG4gIH1cblxuICBnZXQgZW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZW5hYmxlZDtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuX2VuYWJsZWQ7XG4gIH1cblxuICBnZXQgY2hpbGRyZW4oKTogSUFwcEZvcm1bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2NoaWxkcmVuO1xuICB9XG5cbiAgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5fZW5hYmxlZDtcbiAgfVxuXG4gIGFic3RyYWN0IGdldCBpc05ld0RhdGEoKTogYm9vbGVhbjtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJvdGVjdGVkIGFsZXJ0Q3RybDogQWxlcnRDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcblxuICAgIGlmICh0aGlzLmZvcm1CdXR0b25zQmFyKSB7XG4gICAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKHRoaXMuZm9ybUJ1dHRvbnNCYXIub25CYWNrLnN1YnNjcmliZShldmVudCA9PiB0aGlzLmdvQmFjayhldmVudCkpKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nlc1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLnJlYWR5U3ViamVjdC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMubG9hZGluZ1N1YmplY3QudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmVycm9yU3ViamVjdC51bnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5kZXN0cm95U3ViamVjdC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95U3ViamVjdC51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgYWRkQ2hpbGRGb3JtKGZvcm06IElBcHBGb3JtIHwgSUFwcEZvcm1HZXR0ZXIpIHtcbiAgICBpZiAoIWZvcm0pIHRocm93IG5ldyBFcnJvcignVHJ5aW5nIHRvIHJlZ2lzdGVyIGFuIHVuZGVmaW5lZCBjaGlsZCBmb3JtJyk7XG4gICAgdGhpcy5fY2hpbGRyZW4gPSB0aGlzLl9jaGlsZHJlbiB8fCBbXTtcbiAgICBpZiAodHlwZW9mIGZvcm0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuX2NoaWxkcmVuLnB1c2gobmV3IEFwcEZvcm1Qcm92aWRlcihmb3JtKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5fY2hpbGRyZW4ucHVzaChmb3JtKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhZGRDaGlsZEZvcm1zKGZvcm1zOiAoSUFwcEZvcm0gfCBJQXBwRm9ybUdldHRlcilbXSkge1xuICAgIChmb3JtcyB8fCBbXSkuZm9yRWFjaChmb3JtID0+IHRoaXMuYWRkQ2hpbGRGb3JtKGZvcm0pKTtcbiAgfVxuXG4gIHJlbW92ZUNoaWxkRm9ybShmb3JtOiBJQXBwRm9ybSB8IElBcHBGb3JtR2V0dGVyKTogSUFwcEZvcm0gfCBJQXBwRm9ybUdldHRlciB7XG4gICAgaWYgKCFmb3JtKSB0aHJvdyBuZXcgRXJyb3IoJ1RyeWluZyB0byByZW1vdmUgYW4gdW5kZWZpbmVkIGNoaWxkIGZvcm0nKTtcbiAgICBjb25zdCBpbmRleCA9ICh0aGlzLl9jaGlsZHJlbiB8fCBbXSkuZmluZEluZGV4KGMgPT4gYyA9PT0gZm9ybSk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2NoaWxkcmVuLnNwbGljZShpbmRleCwgMSlbMF07XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBkaXNhYmxlKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICB0aGlzLl9lbmFibGVkID0gZmFsc2U7XG4gICAgdGhpcy5fY2hpbGRyZW4/LmZvckVhY2goYyA9PiBjLmRpc2FibGUob3B0cykpO1xuICAgIGlmICghdGhpcy5sb2FkaW5nICYmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpKSB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZW5hYmxlKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICB0aGlzLl9lbmFibGVkID0gdHJ1ZTtcbiAgICB0aGlzLl9jaGlsZHJlbj8uZm9yRWFjaChjID0+IGMuZW5hYmxlKG9wdHMpKTtcbiAgICBpZiAoIXRoaXMubG9hZGluZyAmJiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSkgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG1hcmtBc1ByaXN0aW5lKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICB0aGlzLmVycm9yID0gbnVsbDtcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmRpcnR5U3ViamVjdC52YWx1ZSAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuZGlydHlTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIH1cbiAgICB0aGlzLl9jaGlsZHJlbj8uZm9yRWFjaChjID0+IGMubWFya0FzUHJpc3RpbmUob3B0cykpO1xuICAgIGlmICghdGhpcy5sb2FkaW5nICYmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpKSB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgbWFya0FzVW50b3VjaGVkKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICBpZiAodGhpcy50b3VjaGVkU3ViamVjdC52YWx1ZSAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMudG91Y2hlZFN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgfVxuICAgIHRoaXMuX2NoaWxkcmVuPy5mb3JFYWNoKGMgPT4gYy5tYXJrQXNVbnRvdWNoZWQoKSk7XG4gICAgaWYgKCF0aGlzLmxvYWRpbmcgJiYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkpIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgcHJlZmVyIHRvIHVzZSBtYXJrQWxsQXNUb3VjaGVkKClcbiAgICogQHBhcmFtIG9wdHNcbiAgICovXG4gIG1hcmtBc1RvdWNoZWQob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIGlmICghdGhpcy50b3VjaGVkU3ViamVjdC52YWx1ZSAhPT0gdHJ1ZSkge1xuICAgICAgdGhpcy50b3VjaGVkU3ViamVjdC5uZXh0KHRydWUpO1xuICAgIH1cbiAgICB0aGlzLl9jaGlsZHJlbj8uZm9yRWFjaChjID0+IGMubWFya0FzVG91Y2hlZChvcHRzKSk7XG4gICAgaWYgKCF0aGlzLmxvYWRpbmcgJiYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkpIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBtYXJrQWxsQXNUb3VjaGVkKG9wdHM/OiB7ZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgaWYgKHRoaXMudG91Y2hlZFN1YmplY3QudmFsdWUgIT09IHRydWUpIHtcbiAgICAgIHRoaXMudG91Y2hlZFN1YmplY3QubmV4dCh0cnVlKTtcbiAgICB9XG4gICAgdGhpcy5fY2hpbGRyZW4/LmZvckVhY2goYyA9PiBjLm1hcmtBbGxBc1RvdWNoZWQob3B0cykpO1xuICAgIGlmICghdGhpcy5sb2FkaW5nICYmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpKSB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgbWFya0FzRGlydHkob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW47fSl7XG4gICAgaWYgKCF0aGlzLmRpcnR5U3ViamVjdC52YWx1ZSkge1xuICAgICAgdGhpcy5kaXJ0eVN1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgIGlmICghdGhpcy5sb2FkaW5nICYmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpKSB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIG1hcmtBc0xvYWRpbmcob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW47fSl7XG4gICAgaWYgKCF0aGlzLmxvYWRpbmdTdWJqZWN0LnZhbHVlKSB7XG4gICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIG1hcmtBc0xvYWRlZChvcHRzPzoge1xuICAgIG9ubHlTZWxmPzogYm9vbGVhbjtcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICB9KXtcbiAgICBpZiAodGhpcy5sb2FkaW5nU3ViamVjdC52YWx1ZSkge1xuICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgIGlmICghb3B0cyB8fCBvcHRzLm9ubHlTZWxmICE9PSB0cnVlKSB7XG4gICAgICAgIC8vIEVtaXQgdG8gY2hpbGRyZW4gZm9ybXMgYW5kIGVkaXRvcnNcbiAgICAgICAgLy8gbm90ZTogdGFibGVzIHNob3VsZCBiZSBjaGFuZ2VkIGJ5IHBhcmVudFxuICAgICAgICB0aGlzLmZvcm1zPy5mb3JFYWNoKGYgPT4gZi5tYXJrQXNMb2FkZWQob3B0cykpO1xuICAgICAgICB0aGlzLmVkaXRvcnM/LmZvckVhY2goZSA9PiBlLm1hcmtBc0xvYWRlZChvcHRzKSk7XG4gICAgICB9XG4gICAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbWFya0FzUmVhZHkob3B0cz86IHtlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICB0aGlzLl9jaGlsZHJlbj8uZm9yRWFjaChjID0+IGMubWFya0FzUmVhZHkob3B0cykpO1xuICAgIHRoaXMucmVhZHlTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gIH1cblxuICByZWFkeShvcHRzPzogV2FpdEZvck9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5yZWFkeVN1YmplY3QudmFsdWUpIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICByZXR1cm4gd2FpdEZvclRydWUodGhpcy5yZWFkeVN1YmplY3QsIG9wdHMpO1xuICB9XG5cbiAgd2FpdElkbGUob3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmxvYWRpbmdTdWJqZWN0LnZhbHVlKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgcmV0dXJuIHdhaXRGb3JGYWxzZSh0aGlzLmxvYWRpbmdTdWJqZWN0LCBvcHRzKTtcbiAgfVxuXG4gIG1hcmtBc1NhdmluZyhvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pe1xuICAgIGlmICh0aGlzLnNhdmluZ1N1YmplY3QudmFsdWUgIT09IHRydWUpIHtcbiAgICAgIHRoaXMuc2F2aW5nU3ViamVjdC5uZXh0KHRydWUpO1xuICAgICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBtYXJrQXNTYXZlZChvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pe1xuICAgIGlmICh0aGlzLnNhdmluZ1N1YmplY3QudmFsdWUgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnNhdmluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNhbmNlbChldmVudD86IEV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNOZXdEYXRhKSB7XG4gICAgICBhd2FpdCB0aGlzLnVubG9hZCgpOyAvLyBhc3luYyByZXNldFxuICAgIH1cbiAgICBlbHNlIGlmICh0aGlzLmRpcnR5KXtcbiAgICAgIGF3YWl0IHRoaXMucmVsb2FkKCk7IC8vIGFzeW5jIHJlbG9hZFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVbmxvYWQgdGhlIHBhZ2UgKHJlbW92ZSBhbGwgZGF0YSkuIFVzZWZ1bCB3aGVuIHJldXNpbmcgYW5ndWxhciBjYWNoZSBhIGNhbmNlbGxlZCBwYWdlXG4gICAqXG4gICAqIEBwYXJhbSBvcHRzXG4gICAqL1xuICBhc3luYyB1bmxvYWQob3B0cz86IHtlbWl0RXZlbnQ/OiBib29sZWFuIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zb2xlLmRlYnVnKCdbZWRpdG9yXSBVbmxvYWRpbmcgZGF0YS4uLicpO1xuICAgIHRoaXMubWFya0FzTG9hZGluZygpO1xuICAgIHRoaXMuX2NoaWxkcmVuPy5mb3JFYWNoKGYgPT4ge1xuICAgICAgaWYgKGYgaW5zdGFuY2VvZiBBcHBGb3JtKSB7XG4gICAgICAgIGYucmVzZXQobnVsbCwgb3B0cyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChmIGluc3RhbmNlb2YgQXBwVGFibGUpIHtcbiAgICAgICAgZi5kYXRhU291cmNlLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGYgaW5zdGFuY2VvZiBBcHBFZGl0b3IpIHtcbiAgICAgICAgZi51bmxvYWQob3B0cyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm1hcmtBc1ByaXN0aW5lKG9wdHMpO1xuICAgIHRoaXMubWFya0FzU2F2ZWQob3B0cyk7XG4gIH1cblxuICBhc3luYyByZWxvYWRXaXRoQ29uZmlybWF0aW9uKGNvbmZpcm0/OiBib29sZWFuKSB7XG4gICAgY29uc3QgbmVlZENvbmZpcm0gPSB0aGlzLmRpcnR5O1xuICAgIC8vIGlmIG5vdCBjb25maXJtIHlldDogYXNrIGNvbmZpcm1hdGlvblxuICAgIGlmICghY29uZmlybSAmJiBuZWVkQ29uZmlybSkge1xuICAgICAgY29uc3QgdHJhbnNsYXRpb25zID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChbJ0NPTU1PTi5CVE5fQUJPUlRfQ0hBTkdFUycsICdDT01NT04uQlROX0NBTkNFTCcsICdDT05GSVJNLkNBTkNFTF9DSEFOR0VTJywgJ0NPTkZJUk0uQUxFUlRfSEVBREVSJ10pO1xuICAgICAgY29uc3QgYWxlcnQgPSBhd2FpdCB0aGlzLmFsZXJ0Q3RybC5jcmVhdGUoe1xuICAgICAgICBoZWFkZXI6IHRyYW5zbGF0aW9uc1snQ09ORklSTS5BTEVSVF9IRUFERVInXSxcbiAgICAgICAgbWVzc2FnZTogdHJhbnNsYXRpb25zWydDT05GSVJNLkNBTkNFTF9DSEFOR0VTJ10sXG4gICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGlvbnNbJ0NPTU1PTi5CVE5fQUJPUlRfQ0hBTkdFUyddLFxuICAgICAgICAgICAgY3NzQ2xhc3M6ICdzZWNvbmRhcnknLFxuICAgICAgICAgICAgaGFuZGxlcjogKCkgPT4ge1xuICAgICAgICAgICAgICBjb25maXJtID0gdHJ1ZTsgLy8gdXBkYXRlIHVwcGVyIHZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGlvbnNbJ0NPTU1PTi5CVE5fQ0FOQ0VMJ10sXG4gICAgICAgICAgICByb2xlOiAnY2FuY2VsJyxcbiAgICAgICAgICAgIGhhbmRsZXI6ICgpID0+IHtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0pO1xuICAgICAgYXdhaXQgYWxlcnQucHJlc2VudCgpO1xuICAgICAgYXdhaXQgYWxlcnQub25EaWREaXNtaXNzKCk7XG4gICAgfVxuXG4gICAgLy8gSWYgY29uZmlybTogZXhlY3V0ZSB0aGUgcmVsb2FkXG4gICAgaWYgKGNvbmZpcm0gfHwgIW5lZWRDb25maXJtKSB7XG4gICAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgICB0aGlzLmRpc2FibGUoKTtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnJlbG9hZCgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdvQmFjayhldmVudD86IEV2ZW50KTogUHJvbWlzZTx2b2lkIHwgYm9vbGVhbj4ge1xuICAgIC8vIEdvIGJhY2tcbiAgICBpZiAodGhpcy50b29sYmFyPy5jYW5Hb0JhY2spIHtcbiAgICAgIHJldHVybiB0aGlzLnRvb2xiYXIuZ29CYWNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEJhY2sgdG8gaG9tZVxuICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy8nKTtcbiAgICB9XG4gIH1cblxuXG5cbiAgYWJzdHJhY3QgbG9hZChpZD86IElELCBvcHRpb25zPzogTyk6IFByb21pc2U8dm9pZD47XG5cbiAgYWJzdHJhY3Qgc2F2ZShldmVudD86IEV2ZW50LCBvcHRpb25zPzogYW55KTogUHJvbWlzZTxib29sZWFuPjtcblxuICBhYnN0cmFjdCByZWxvYWQoKTogUHJvbWlzZTx2b2lkPjtcblxuICBsb2dGb3JtRXJyb3JzKHByZWZpeD86IHN0cmluZykge1xuICAgIGlmICh0aGlzLmRlYnVnKSBjb25zb2xlLmRlYnVnKCdbZWRpdG9yXSBFZGl0b3Igbm90IHZhbGlkLiBDaGVja2luZyB3aGVyZSAoZm9ybXMsIHRhYmxlcykuLi4nKTtcbiAgICB0aGlzLl9jaGlsZHJlbj8uZm9yRWFjaChjID0+IHRoaXMubG9nQ2hpbGRyZW5FcnJvcnMoYywgcHJlZml4KSk7XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kcyAtLSAqL1xuXG4gIHByb3RlY3RlZCBhc3luYyBzY3JvbGxUb1RvcChkdXJhdGlvbj86IG51bWJlcikge1xuICAgIGR1cmF0aW9uID0gdG9OdW1iZXIoZHVyYXRpb24sIDUwMCk7XG5cbiAgICBpZiAoIXRoaXMuY29udGVudCkge1xuICAgICAgY29uc29sZS53YXJuKGBbdGFiLWVkaXRvcl0gQ2Fubm90IHNjcm9sbCB0byB0b3AuIChubyAnaW9uLWNvbnRlbnQnIHRhZyBmb3VuZCAke3RoaXMuY29uc3RydWN0b3IubmFtZX1gKTtcblxuICAgICAgLy8gVE9ETzogRklYTUUgKG5vdCB3b3JraW5nIGFzIHRoZSBwYWdlIGlzIG5vdCB0aGUgd2luZG93KVxuICAgICAgY29uc3Qgc2Nyb2xsVG9Ub3AgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBjb25zdCBwb3MgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gICAgICAgIGlmIChwb3MgPiAwKSB7XG4gICAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIHBvcyAtIDIwKTsgLy8gaG93IGZhciB0byBzY3JvbGwgb24gZWFjaCBzdGVwXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoc2Nyb2xsVG9Ub3ApO1xuICAgICAgICB9XG4gICAgICB9LCAxNik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY29udGVudC5zY3JvbGxUb1RvcChkdXJhdGlvbik7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVnaXN0ZXJTdWJzY3JpcHRpb24oc3ViOiBTdWJzY3JpcHRpb258VGVhcmRvd25Mb2dpYykge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoc3ViKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1bnJlZ2lzdGVyU3Vic2NyaXB0aW9uKHN1YjogU3Vic2NyaXB0aW9uKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnJlbW92ZShzdWIpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHNhdmVJZkRpcnR5QW5kQ29uZmlybShldmVudD86IFVJRXZlbnQsIG9wdHM/OiB7XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgICBjb25maXJtZWQ/OiBib29sZWFuXG4gIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoIXRoaXMuZGlydHkpIHJldHVybiB0cnVlO1xuXG4gICAgbGV0IGNvbmZpcm1lZCA9IG9wdHM/LmNvbmZpcm1lZCB8fCBmYWxzZTtcbiAgICBpZiAoIWNvbmZpcm1lZCkge1xuICAgICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgICAgY29uc3QgdHJhbnNsYXRpb25zID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChbJ0NPTU1PTi5CVE5fU0FWRScsICdDT01NT04uQlROX0NBTkNFTCcsICdDT01NT04uQlROX0FCT1JUX0NIQU5HRVMnLCAnQ09ORklSTS5TQVZFJywgJ0NPTkZJUk0uQUxFUlRfSEVBREVSJ10pO1xuICAgICAgY29uc3QgYWxlcnQgPSBhd2FpdCB0aGlzLmFsZXJ0Q3RybC5jcmVhdGUoe1xuICAgICAgICBoZWFkZXI6IHRyYW5zbGF0aW9uc1snQ09ORklSTS5BTEVSVF9IRUFERVInXSxcbiAgICAgICAgbWVzc2FnZTogdHJhbnNsYXRpb25zWydDT05GSVJNLlNBVkUnXSxcbiAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRleHQ6IHRyYW5zbGF0aW9uc1snQ09NTU9OLkJUTl9DQU5DRUwnXSxcbiAgICAgICAgICAgIHJvbGU6ICdjYW5jZWwnLFxuICAgICAgICAgICAgY3NzQ2xhc3M6ICdzZWNvbmRhcnknLFxuICAgICAgICAgICAgaGFuZGxlcjogKCkgPT4ge1xuICAgICAgICAgICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGV4dDogdHJhbnNsYXRpb25zWydDT01NT04uQlROX0FCT1JUX0NIQU5HRVMnXSxcbiAgICAgICAgICAgIGNzc0NsYXNzOiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgIGhhbmRsZXI6ICgpID0+IHtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRleHQ6IHRyYW5zbGF0aW9uc1snQ09NTU9OLkJUTl9TQVZFJ10sXG4gICAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbmZpcm1lZCA9IHRydWU7IC8vIHVwZGF0ZSB1cHBlciB2YWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSk7XG4gICAgICBhd2FpdCBhbGVydC5wcmVzZW50KCk7XG4gICAgICBhd2FpdCBhbGVydC5vbkRpZERpc21pc3MoKTtcblxuICAgICAgaWYgKCFjb25maXJtZWQpIHtcbiAgICAgICAgcmV0dXJuICFjYW5jZWw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuc2F2ZShldmVudCwgb3B0cyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgc2hvd1RvYXN0KG9wdHM6IFNob3dUb2FzdE9wdGlvbnMpIHtcbiAgICBpZiAoIXRoaXMudG9hc3RDb250cm9sbGVyKSB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgdG9hc3RDb250cm9sbGVyIGluIGNvbXBvbmVudFxcJ3MgY29uc3RydWN0b3InKTtcbiAgICBhd2FpdCBUb2FzdHMuc2hvdyh0aGlzLnRvYXN0Q29udHJvbGxlciwgdGhpcy50cmFuc2xhdGUsIG9wdHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGxvZ0NoaWxkcmVuRXJyb3JzKGM6IElBcHBGb3JtIHwgQWJzdHJhY3RDb250cm9sLCBwcmVmaXg/OiBzdHJpbmcsIHBhdGg/OiBzdHJpbmcpIHtcbiAgICBwcmVmaXggPSBwcmVmaXggfHwgJ1thcHAtdGFiLWVkaXRvcl0gJztcbiAgICAvLyBJZiBlZGl0b3JcbiAgICBpZiAoYyBpbnN0YW5jZW9mIEFwcEVkaXRvcikge1xuICAgICAgYy5sb2dGb3JtRXJyb3JzKCk7XG4gICAgfVxuICAgIC8vIEFuZ3VsYXIgZm9ybSBjb250cm9sXG4gICAgZWxzZSBpZiAoYyBpbnN0YW5jZW9mIEFic3RyYWN0Q29udHJvbCkge1xuICAgICAgQXBwRm9ybVV0aWxzLmxvZ0Zvcm1FcnJvcnMoYywgcHJlZml4LCBwYXRoKTtcbiAgICB9XG4gICAgLy8gSWYgZm9ybSBwcm92aWRlcjogZ2V0IGRlbGVnYXRlXG4gICAgZWxzZSBpZiAoYyBpbnN0YW5jZW9mIEFwcEZvcm1Qcm92aWRlcikge1xuICAgICAgaWYgKCFjLmVtcHR5ICYmICFjLnZhbGlkKSB7XG4gICAgICAgIGMud2FpdERlbGVnYXRlKHt0aW1lb3V0OiAxMDAwfSkudGhlbihkZWxlZ2F0ZSA9PiB0aGlzLmxvZ0NoaWxkcmVuRXJyb3JzKGRlbGVnYXRlLCBwcmVmaXgsICdwcm92aWRlcicpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gSWYgdGFibGVcbiAgICBlbHNlIGlmIChjIGluc3RhbmNlb2YgQXBwVGFibGUpIHtcbiAgICAgIGlmIChjLmludmFsaWQgJiYgYy5lZGl0ZWRSb3cgJiYgYy5lZGl0ZWRSb3cudmFsaWRhdG9yKSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBjLmNvbnN0cnVjdG9yLm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgQXBwRm9ybVV0aWxzLmxvZ0Zvcm1FcnJvcnMoYy5lZGl0ZWRSb3cudmFsaWRhdG9yLCBwcmVmaXgsIHBhdGgpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBJZiBmb3JtXG4gICAgZWxzZSBpZiAoYyBpbnN0YW5jZW9mIEFwcEZvcm0pIHtcbiAgICAgIGlmICghYy5lbXB0eSAmJiAhYy52YWxpZCkge1xuICAgICAgICBpZiAoYy5wZW5kaW5nKSB7XG4gICAgICAgICAgY29uc3QgcGF0aCA9IGMuY29uc3RydWN0b3IubmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIGNvbnNvbGUud2FybiggYCR7cHJlZml4fSAtPiAke3BhdGh9OiB3YWl0aW5nIHdoaWxlIHBlbmRpbmcuLi5gKTtcbiAgICAgICAgICBBcHBGb3JtVXRpbHMud2FpdFdoaWxlUGVuZGluZyhjLCB7dGltZW91dDogMTAwMH0pXG4gICAgICAgICAgICAudGhlbigoKSA9PiB0aGlzLmxvZ0NoaWxkcmVuRXJyb3JzKGMuZm9ybSwgcHJlZml4LCBwYXRoKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgQXBwRm9ybVV0aWxzLmxvZ0Zvcm1FcnJvcnMoYy5mb3JtLCBwcmVmaXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIElmIGVkaXRvclxuICAgIGVsc2UgaWYgKGMgaW5zdGFuY2VvZiBBcHBFZGl0b3IpIHtcbiAgICAgIGlmICghYy5lbXB0eSAmJiAhYy52YWxpZCkge1xuICAgICAgICBpZiAoYy5wZW5kaW5nKSB7XG4gICAgICAgICAgY29uc3QgcGF0aCA9IGMuY29uc3RydWN0b3IubmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIGNvbnNvbGUud2FybiggYCR7cHJlZml4fSAtPiAke3BhdGh9OiB3YWl0aW5nIHdoaWxlIHBlbmRpbmcuLi5gKTtcbiAgICAgICAgICBBcHBGb3JtVXRpbHMud2FpdFdoaWxlUGVuZGluZyhjLCB7dGltZW91dDogMTAwMH0pXG4gICAgICAgICAgICAudGhlbigoKSA9PiBjLmxvZ0Zvcm1FcnJvcnMocHJlZml4KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgYy5sb2dGb3JtRXJyb3JzKHByZWZpeCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oIGAke3ByZWZpeH0gVW5rbm93biBjaGlsZHJlbiBzdWItZm9ybTogYCwgYyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNldEVycm9yKHZhbHVlOiBzdHJpbmcsIG9wdHM/OiB7ZW1pdEV2ZW50PzogYm9vbGVhbjt9KSB7XG4gICAgaWYgKHRoaXMuZXJyb3JTdWJqZWN0LnZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dCh2YWx1ZSk7XG4gICAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCByZXNldEVycm9yKG9wdHM/OiB7ZW1pdEV2ZW50PzogYm9vbGVhbn0pIHtcbiAgICB0aGlzLnNldEVycm9yKHVuZGVmaW5lZCwgb3B0cyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWFya0ZvckNoZWNrKCkge1xuICAgIC8vIFNob3VsZCBiZSBvdmVycmlkZSBieSBzdWJjbGFzc2VzLCBpZiBjaGFuZ2UgZGV0ZWN0aW9uIGlzIFB1c2hcbiAgfVxufVxuXG5ARGlyZWN0aXZlKClcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFwcFRhYkVkaXRvcjxUID0gYW55LCBJRCA9IG51bWJlciwgTyA9IGFueT5cbiAgZXh0ZW5kcyBBcHBFZGl0b3I8VCwgSUQsIE8+XG4gIGltcGxlbWVudHMgSUFwcFRhYkVkaXRvciB7XG5cbiAgcHJvdGVjdGVkIF9zZWxlY3RlZFRhYkluZGV4ID0gMDtcblxuICAvLyBFZGl0b3Igb3B0aW9uc1xuICB0YWJDb3VudDogbnVtYmVyO1xuICBlbmFibGVTd2lwZTogYm9vbGVhbjtcbiAgdGFiR3JvdXBBbmltYXRpb25EdXJhdGlvbjogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHF1ZXJ5VGFiSW5kZXhQYXJhbU5hbWU6IHN0cmluZztcblxuICBASW5wdXQoKSBzZXQgc2VsZWN0ZWRUYWJJbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5zZXRTZWxlY3RlZFRhYkluZGV4KHZhbHVlKTtcbiAgfVxuICBnZXQgc2VsZWN0ZWRUYWJJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZFRhYkluZGV4O1xuICB9XG5cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHNlbGVjdGVkVGFiSW5kZXhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBAVmlld0NoaWxkKCd0YWJHcm91cCcsIHsgc3RhdGljOiB0cnVlIH0pIHRhYkdyb3VwOiBNYXRUYWJHcm91cDtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgLy8gTW9kYWwgZWRpdG9yIGdpdmUgJ251bGwnXG4gICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxuICAgIHByb3RlY3RlZCBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlcixcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIG9wdGlvbnM/OiBBcHBUYWJFZGl0b3JPcHRpb25zKSB7XG4gICAgc3VwZXIocm91dGUsIHJvdXRlciwgYWxlcnRDdHJsLCB0cmFuc2xhdGUpO1xuICAgIG9wdGlvbnMgPSB7XG4gICAgICB0YWJDb3VudDogMSxcbiAgICAgIGVuYWJsZVN3aXBlOiB0cnVlLFxuICAgICAgdGFiR3JvdXBBbmltYXRpb25EdXJhdGlvbjogJzIwMG1zJyxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICB9XG4gICAgdGhpcy50YWJDb3VudCA9IG9wdGlvbnMudGFiQ291bnQ7XG4gICAgdGhpcy5lbmFibGVTd2lwZSA9IG9wdGlvbnMuZW5hYmxlU3dpcGU7XG4gICAgdGhpcy50YWJHcm91cEFuaW1hdGlvbkR1cmF0aW9uID0gb3B0aW9ucy50YWJHcm91cEFuaW1hdGlvbkR1cmF0aW9uO1xuICAgIHRoaXMucXVlcnlUYWJJbmRleFBhcmFtTmFtZSA9ICd0YWInO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIC8vIFJlYWQgdGhlIHNlbGVjdGVkIHRhYiBpbmRleCwgZnJvbSBwYXRoIHF1ZXJ5IHBhcmFtc1xuICAgIGlmICh0aGlzLnRhYkdyb3VwICYmIHRoaXMucm91dGUgJiYgdGhpcy5xdWVyeVRhYkluZGV4UGFyYW1OYW1lKSB7XG4gICAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKHRoaXMucm91dGUucXVlcnlQYXJhbXNcbiAgICAgICAgLnN1YnNjcmliZShxdWVyeVBhcmFtcyA9PiB7XG4gICAgICAgICAgdGhpcy5xdWVyeVBhcmFtcyA9IHsuLi5xdWVyeVBhcmFtc307XG5cbiAgICAgICAgICAvLyBQYXJzZSB0YWIgcGFyYW1cbiAgICAgICAgICBpZiAodGhpcy50YWJDb3VudCA+IDEgJiYgdGhpcy5xdWVyeVRhYkluZGV4UGFyYW1OYW1lKSB7XG4gICAgICAgICAgICBjb25zdCB0YWJJbmRleCA9IHF1ZXJ5UGFyYW1zW3RoaXMucXVlcnlUYWJJbmRleFBhcmFtTmFtZV07XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zW3RoaXMucXVlcnlUYWJJbmRleFBhcmFtTmFtZV0gPSB0YWJJbmRleCAmJiBwYXJzZUludCh0YWJJbmRleCkgfHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKGlzTm90TmlsKHRoaXMucXVlcnlQYXJhbXNbdGhpcy5xdWVyeVRhYkluZGV4UGFyYW1OYW1lXSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4ID0gdGhpcy5xdWVyeVBhcmFtc1t0aGlzLnF1ZXJ5VGFiSW5kZXhQYXJhbU5hbWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFJlYWxpZ24gdGFiLCBhZnRlciBhIGRlbGF5IGJlY2F1c2UgdGhlIHRhYiBjYW4gYmUgZGlzYWJsZWQgd2hlbiBjb21wb25lbnQgaXMgY3JlYXRlZFxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy50YWJHcm91cC5yZWFsaWduSW5rQmFyKCksIDUwMCk7XG4gICAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4Q2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5sb2FkaW5nU3ViamVjdC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZXJyb3JTdWJqZWN0LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBzZXRTZWxlY3RlZFRhYkluZGV4KHZhbHVlOiBudW1iZXIsIG9wdHM/OiB7ZW1pdEV2ZW50PzogYm9vbGVhbjsgcmVhbGlnbklua0Jhcj86IGJvb2xlYW4gfSkge1xuICAgIC8vIEZpeCB2YWx1ZVxuICAgIGlmICh2YWx1ZSA8IDApIHtcbiAgICAgIHZhbHVlID0gMDtcbiAgICB9XG4gICAgZWxzZSBpZiAodmFsdWUgPiB0aGlzLnRhYkNvdW50IC0gMSkge1xuICAgICAgY29uc29sZS53YXJuKGBbdGFiLWVkaXRvcl0gSW52YWxpZCB0YWIgaW5kZXggJHt2YWx1ZX0uIE1heCB2YWx1ZSBpcyAke3RoaXMudGFiQ291bnQtMX1gKVxuICAgICAgdmFsdWUgPSB0aGlzLl9zZWxlY3RlZFRhYkluZGV4O1xuICAgIH1cblxuICAgIHRoaXMuX3NlbGVjdGVkVGFiSW5kZXggPSB2YWx1ZTtcbiAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXhDaGFuZ2UubmV4dCh2YWx1ZSk7XG5cbiAgICBpZiAodGhpcy50YWJHcm91cCAmJiAoIW9wdHMgfHwgb3B0cy5yZWFsaWduSW5rQmFyICE9PSBmYWxzZSkpIHtcbiAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IHZhbHVlO1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIC8vIFdhaXQgdGFiIGNoYW5nZSBpbiBVSSwgYmVmb3JlIHJlYWxpZ24gaW5rIHRhYlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnRhYkdyb3VwLnJlYWxpZ25JbmtCYXIoKSwgMjAwKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHJlYWxpZ25JbmtCYXIoKSB7XG4gICAgdGhpcy50YWJHcm91cD8ucmVhbGlnbklua0JhcigpO1xuICB9XG5cblxuICBvblRhYkNoYW5nZShldmVudDogTWF0VGFiQ2hhbmdlRXZlbnQsIHF1ZXJ5VGFiSW5kZXhQYXJhbU5hbWU/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBxdWVyeVRhYkluZGV4UGFyYW1OYW1lID0gcXVlcnlUYWJJbmRleFBhcmFtTmFtZSB8fCB0aGlzLnF1ZXJ5VGFiSW5kZXhQYXJhbU5hbWU7XG5cbiAgICBpZiAoIXF1ZXJ5VGFiSW5kZXhQYXJhbU5hbWUgfHwgIXRoaXMucm91dGUpIHJldHVybiB0cnVlOyAvLyBTa2lwIGlmIHRhYiBxdWVyeSBwYXJhbSBub3Qgc2V0LCBvciBubyByb3V0ZVxuXG4gICAgaWYgKCF0aGlzLnF1ZXJ5UGFyYW1zIHx8ICt0aGlzLnF1ZXJ5UGFyYW1zW3F1ZXJ5VGFiSW5kZXhQYXJhbU5hbWVdICE9PSBldmVudC5pbmRleCkge1xuXG4gICAgICB0aGlzLnF1ZXJ5UGFyYW1zID0gdGhpcy5xdWVyeVBhcmFtcyB8fCB7fTtcbiAgICAgIHRoaXMucXVlcnlQYXJhbXNbcXVlcnlUYWJJbmRleFBhcmFtTmFtZV0gPSBldmVudC5pbmRleDtcblxuICAgICAgaWYgKHF1ZXJ5VGFiSW5kZXhQYXJhbU5hbWUgPT09ICd0YWInICYmIGlzTm90TmlsKHRoaXMucXVlcnlQYXJhbXNbJ3N1YnRhYiddKSkge1xuICAgICAgICBkZWxldGUgdGhpcy5xdWVyeVBhcmFtcy5zdWJ0YWI7IC8vIGNsZWFuIHN1YnRhYlxuICAgICAgfVxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuJ10sIHtcbiAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgICAgcXVlcnlQYXJhbXM6IHRoaXMucXVlcnlQYXJhbXMsXG4gICAgICAgIHJlcGxhY2VVcmw6IHRydWVcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3Rpb24gdHJpZ2dlcmVkIHdoZW4gdXNlciBzd2lwZXNcbiAgICovXG4gIG9uU3dpcGVUYWIoZXZlbnQ6IEhhbW1lclN3aXBlRXZlbnQpOiBib29sZWFuIHtcbiAgICAvLyBERUJVR1xuICAgIC8vIGlmICh0aGlzLmRlYnVnKSBjb25zb2xlLmRlYnVnKFwiW3RhYi1wYWdlXSBvblN3aXBlVGFiKClcIik7XG5cbiAgICAvLyBTa2lwLCBpZiBub3QgYSB2YWxpZCBzd2lwZSBldmVudFxuICAgIGlmICghdGhpcy5lbmFibGVTd2lwZSB8fCAhZXZlbnRcbiAgICAgIHx8IGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgfHwgKGV2ZW50LnNyY0V2ZW50ICYmIGV2ZW50LnNyY0V2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpXG4gICAgICB8fCBldmVudC5wb2ludGVyVHlwZSAhPT0gJ3RvdWNoJ1xuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIERFQlVHXG4gICAgLy9pZiAodGhpcy5kZWJ1ZylcbiAgICAvL2NvbnNvbGUuZGVidWcoXCJbdGFiLXBhZ2VdIERldGVjdGVkIHN3aXBlOiBcIiArIGV2ZW50LnR5cGUsIGV2ZW50KTtcblxuICAgIGxldCBzZWxlY3RUYWJJbmRleCA9IHRoaXMuc2VsZWN0ZWRUYWJJbmRleDtcbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgIC8vIE9wZW4gbmV4dCB0YWJcbiAgICAgIGNhc2UgJ3N3aXBlbGVmdCc6XG4gICAgICAgIGNvbnN0IGlzTGFzdCA9IHNlbGVjdFRhYkluZGV4ID49ICh0aGlzLnRhYkNvdW50IC0gMSk7XG4gICAgICAgIHNlbGVjdFRhYkluZGV4ID0gaXNMYXN0ID8gMCA6IHNlbGVjdFRhYkluZGV4ICsgMTtcbiAgICAgICAgYnJlYWs7XG5cblxuICAgICAgLy8gT3BlbiBwcmV2aW91cyB0YWJcbiAgICAgIGNhc2UgJ3N3aXBlcmlnaHQnOlxuICAgICAgICBjb25zdCBpc0ZpcnN0ID0gc2VsZWN0VGFiSW5kZXggPD0gMDtcbiAgICAgICAgc2VsZWN0VGFiSW5kZXggPSBpc0ZpcnN0ID8gdGhpcy50YWJDb3VudCA6IHNlbGVjdFRhYkluZGV4IC0gMTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIC8vIE90aGVyIGNhc2VcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1t0YWItcGFnZV0gVW5rbm93biBzd2lwZSBhY3Rpb246ICcgKyBldmVudC50eXBlKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4ID0gc2VsZWN0VGFiSW5kZXg7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBvblN1YlRhYkNoYW5nZShldmVudDogTWF0VGFiQ2hhbmdlRXZlbnQpIHtcbiAgICB0aGlzLm9uVGFiQ2hhbmdlKGV2ZW50LCAnc3VidGFiJyk7XG4gIH1cblxuICBhc3luYyB1bmxvYWQob3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4ID0gMDtcbiAgICBhd2FpdCBzdXBlci51bmxvYWQob3B0cyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0Rmlyc3RJbnZhbGlkVGFiSW5kZXgoKTogbnVtYmVyO1xuXG4gIHByb3RlY3RlZCBhc3luYyBzYXZlRGlydHlDaGlsZHJlbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAvLyBTYXZlIGFsbCBkaXJ0eSB0YWJsZXNcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgLi4udGhpcy50YWJsZXMsXG4gICAgICAuLi50aGlzLmVkaXRvcnNcbiAgICBdXG4gICAgICAuZmlsdGVyKGMgPT4gYy5kaXJ0eSlcbiAgICAgIC5tYXAoYyA9PiBjLnNhdmUoKSkpO1xuXG4gICAgcmV0dXJuICFyZXN1bHRzLnNvbWUoc2F2ZWQgPT4gc2F2ZWQgIT09IHRydWUpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
2
|
import { ApolloLink } from '@apollo/client/core';
|
|
3
|
-
import * as uuidv4Imported from 'uuid/v4';
|
|
4
|
-
const uuidv4 = uuidv4Imported;
|
|
5
3
|
import { EventEmitter } from '@angular/core';
|
|
6
4
|
import { debounceTime, filter, switchMap } from 'rxjs/operators';
|
|
7
5
|
import { BehaviorSubject } from 'rxjs';
|
|
8
6
|
import { getMainDefinition } from '@apollo/client/utilities';
|
|
7
|
+
import { uuidv4 } from '../../vendor';
|
|
9
8
|
const _global = typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : {});
|
|
10
9
|
export const NativeWebSocket = _global.WebSocket || _global.MozWebSocket;
|
|
11
10
|
/**
|
|
@@ -104,4 +103,4 @@ export function restoreTrackedQueries(opts) {
|
|
|
104
103
|
return Promise.all(promises);
|
|
105
104
|
});
|
|
106
105
|
}
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9ncmFwaHFsL2dyYXBocWwudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBZSxVQUFVLEVBQXNCLE1BQU0scUJBQXFCLENBQUM7QUFDbEYsT0FBTyxLQUFLLGNBQWMsTUFBTSxTQUFTLENBQUM7QUFDMUMsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDO0FBQzlCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFDLGVBQWUsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUszRCxNQUFNLE9BQU8sR0FBRyxPQUFPLE1BQU0sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkcsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQztBQUV6RTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsVUFBUyxHQUFXLEVBQUUsU0FBNkI7SUFDN0UsT0FBTyxJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUEsZ0JBQWdCLENBQUMsQ0FBQztBQUNsRCxDQUFRLENBQUM7QUFDVCxZQUFZLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUM7QUFDN0MsWUFBWSxDQUFDLE9BQU8sR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDO0FBQy9D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QUVELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBZ0IscUJBQXFCLENBQUMsSUFJM0M7O1FBRUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBQW1CLENBQUM7UUFFbkcsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPO1FBQ2xCLElBQUksSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLGlEQUFpRCxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXZGLE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUMvQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNyRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNqRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN6RCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO2dCQUM5QixPQUFPO2dCQUNQLFFBQVEsRUFBRSxLQUFLO2dCQUNmLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxrQkFBa0I7Z0JBQzlDLGlEQUFpRDtnQkFDakQsU0FBUzthQUNWLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXBvbGxvQ2xpZW50LCBBcG9sbG9MaW5rLCBOZXh0TGluaywgT3BlcmF0aW9ufSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCAqIGFzIHV1aWR2NEltcG9ydGVkIGZyb20gJ3V1aWQvdjQnO1xuY29uc3QgdXVpZHY0ID0gdXVpZHY0SW1wb3J0ZWQ7XG5pbXBvcnQge0V2ZW50RW1pdHRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgZmlsdGVyLCBzd2l0Y2hNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Z2V0TWFpbkRlZmluaXRpb259IGZyb20gJ0BhcG9sbG8vY2xpZW50L3V0aWxpdGllcyc7XG5pbXBvcnQge1BlcnNpc3RlbnRTdG9yYWdlfSBmcm9tICdhcG9sbG8zLWNhY2hlLXBlcnNpc3QnO1xuaW1wb3J0IHtDb25uZWN0aW9uVHlwZX0gZnJvbSAnLi4vc2VydmljZXMvbmV0d29yay5zZXJ2aWNlJztcblxuZGVjbGFyZSBsZXQgd2luZG93OiBhbnk7XG5jb25zdCBfZ2xvYmFsID0gdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB7fSk7XG5leHBvcnQgY29uc3QgTmF0aXZlV2ViU29ja2V0ID0gX2dsb2JhbC5XZWJTb2NrZXQgfHwgX2dsb2JhbC5Nb3pXZWJTb2NrZXQ7XG5cbi8qKlxuICogQXBwV2ViU29ja2V0IGNsYXNzLlxuICogV2l0aCBhIGhhY2sgb24gZGVmYXVsdCBXZWJzb2NrZXQsIHRvIGF2b2lkIHRoZSB1c2Ugb2YgcHJvdG9jb2xcbiAqL1xuZXhwb3J0IGNvbnN0IEFwcFdlYlNvY2tldCA9IGZ1bmN0aW9uKHVybDogc3RyaW5nLCBwcm90b2NvbHM/OiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICByZXR1cm4gbmV3IE5hdGl2ZVdlYlNvY2tldCh1cmwvKm5vIHByb3RvY29scyovKTtcbn0gYXMgYW55O1xuQXBwV2ViU29ja2V0LkNMT1NFRCA9IE5hdGl2ZVdlYlNvY2tldC5DTE9TRUQ7XG5BcHBXZWJTb2NrZXQuQ0xPU0lORyA9IE5hdGl2ZVdlYlNvY2tldC5DTE9TSU5HO1xuQXBwV2ViU29ja2V0LkNPTk5FQ1RJTkcgPSBOYXRpdmVXZWJTb2NrZXQuQ09OTkVDVElORztcbkFwcFdlYlNvY2tldC5PUEVOID0gTmF0aXZlV2ViU29ja2V0Lk9QRU47XG5cbmV4cG9ydCBmdW5jdGlvbiBpc011dGF0aW9uT3BlcmF0aW9uKG9wZXJhdGlvbjogT3BlcmF0aW9uKSB7XG4gIGNvbnN0IGRlZiA9IGdldE1haW5EZWZpbml0aW9uKG9wZXJhdGlvbi5xdWVyeSk7XG4gIHJldHVybiBkZWYua2luZCA9PT0gJ09wZXJhdGlvbkRlZmluaXRpb24nICYmIGRlZi5vcGVyYXRpb24gPT09ICdtdXRhdGlvbic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N1YnNjcmlwdGlvbk9wZXJhdGlvbihvcGVyYXRpb246IE9wZXJhdGlvbikge1xuICBjb25zdCBkZWYgPSBnZXRNYWluRGVmaW5pdGlvbihvcGVyYXRpb24ucXVlcnkpO1xuICByZXR1cm4gZGVmLmtpbmQgPT09ICdPcGVyYXRpb25EZWZpbml0aW9uJyAmJiBkZWYub3BlcmF0aW9uID09PSAnc3Vic2NyaXB0aW9uJztcbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNrZWRRdWVyeSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgcXVlcnlKU09OOiBzdHJpbmc7XG4gIHZhcmlhYmxlc0pTT046IHN0cmluZztcbiAgY29udGV4dEpTT046IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IFRSQUNLRURfUVVFUklFU19TVE9SQUdFX0tFWSA9ICdhcG9sbG8tdHJhY2tlci1wZXJzaXN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRyYWNrZXJMaW5rKG9wdHM6IHtcbiAgc3RvcmFnZT86IFBlcnNpc3RlbnRTdG9yYWdlPHN0cmluZz47XG4gIG9uTmV0d29ya1N0YXR1c0NoYW5nZTogT2JzZXJ2YWJsZTxDb25uZWN0aW9uVHlwZT47XG4gIGRlYm91bmNlPzogbnVtYmVyO1xuICBkZWJ1Zz86IGJvb2xlYW47XG4gIH0pOiBBcG9sbG9MaW5rIHtcblxuICBjb25zdCB0cmFja2VkUXVlcmllc1VwZGF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIGNvbnN0IHRyYWNrZWRRdWVyaWVzQnlJZDoge1tpZDogc3RyaW5nXTogVHJhY2tlZFF1ZXJ5fSA9IHt9O1xuXG4gIGNvbnN0IG5ldHdvcmtTdGF0dXNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCdub25lJyk7XG4gIG9wdHMub25OZXR3b3JrU3RhdHVzQ2hhbmdlLnN1YnNjcmliZSh0eXBlID0+IG5ldHdvcmtTdGF0dXNTdWJqZWN0Lm5leHQodHlwZSkpO1xuXG4gIC8vIFNhdmUgcGVuZGluZyBhbmQgdHJhY2tlZCBxdWVyaWVzIGluIHN0b3JhZ2VcbiAgdHJhY2tlZFF1ZXJpZXNVcGRhdGVkLnBpcGUoXG4gICAgZGVib3VuY2VUaW1lKG9wdHMuZGVib3VuY2UgfHwgMTAwMCksXG4gICAgc3dpdGNoTWFwKCgpID0+IG5ldHdvcmtTdGF0dXNTdWJqZWN0KSxcbiAgICAvLyBDb250aW51ZSBpZiBvZmZsaW5lXG4gICAgZmlsdGVyKCh0eXBlKSA9PiB0eXBlID09PSAnbm9uZScgJiYgISFvcHRzLnN0b3JhZ2UpXG4gICkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNvbnN0IHRyYWNrZWRRdWVyaWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModHJhY2tlZFF1ZXJpZXNCeUlkKVxuICAgICAgICAubWFwKGtleSA9PiB0cmFja2VkUXVlcmllc0J5SWRba2V5XSlcbiAgICAgICAgLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkKTtcbiAgICAgIGlmIChvcHRzLmRlYnVnKSBjb25zb2xlLmRlYnVnKCdbYXBvbGxvLXRyYWNrZXItbGlua10gU2F2aW5nIHRyYWNrZWQgcXVlcmllcyB0byBzdG9yYWdlJywgdHJhY2tlZFF1ZXJpZXMpO1xuICAgICAgcmV0dXJuIG9wdHMuc3RvcmFnZS5zZXRJdGVtKFRSQUNLRURfUVVFUklFU19TVE9SQUdFX0tFWSwgSlNPTi5zdHJpbmdpZnkodHJhY2tlZFF1ZXJpZXMpKTtcbiAgICB9KTtcblxuICByZXR1cm4gbmV3IEFwb2xsb0xpbmsoKG9wZXJhdGlvbjogT3BlcmF0aW9uLCBmb3J3YXJkOiBOZXh0TGluaykgPT4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSBvcGVyYXRpb24uZ2V0Q29udGV4dCgpO1xuXG4gICAgLy8gU2tpcCBpZiBub3QgdHJhY2tlZFxuICAgIGlmICghY29udGV4dCB8fCAhY29udGV4dC50cmFja2VkKSByZXR1cm4gZm9yd2FyZChvcGVyYXRpb24pO1xuXG4gICAgY29uc3QgaWQgPSBjb250ZXh0LnNlcmlhbGl6YXRpb25LZXkgfHwgdXVpZHY0KCk7XG4gICAgY29uc29sZS5kZWJ1ZyhgW2Fwb2xsby10cmFja2VyLWxpbmtdIFdhdGNoaW5nIHRyYWNrZWQgcXVlcnkgeyR7b3BlcmF0aW9uLm9wZXJhdGlvbk5hbWV9IyR7aWR9fWApO1xuXG4gICAgLy8gQ2xlYW4gY29udGV4dCwgYmVmb3JlIGNhbGxpbmcgSlNPTi5zdHJpbmdpZnkgKHJlbW92ZSB1bnVzZWQgYXR0cmlidXRlcylcbiAgICBjb25zdCBjbGVhbkNvbnRleHQgPSB7IC4uLmNvbnRleHQsIC4uLntvcHRpbWlzdGljUmVzcG9uc2U6IG51bGwsIGNhY2hlOiBudWxsfSB9O1xuXG4gICAgY29uc3QgdHJhY2tlZFF1ZXJ5OiBUcmFja2VkUXVlcnkgPSB7XG4gICAgICBpZCxcbiAgICAgIG5hbWU6IG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lLFxuICAgICAgcXVlcnlKU09OOiBKU09OLnN0cmluZ2lmeShvcGVyYXRpb24ucXVlcnkpLFxuICAgICAgdmFyaWFibGVzSlNPTjogSlNPTi5zdHJpbmdpZnkob3BlcmF0aW9uLnZhcmlhYmxlcyksXG4gICAgICBjb250ZXh0SlNPTjogSlNPTi5zdHJpbmdpZnkoY2xlYW5Db250ZXh0KVxuICAgIH07XG5cbiAgICAvLyBBZGQgdG8gbWFwXG4gICAgdHJhY2tlZFF1ZXJpZXNCeUlkW2lkXSA9IHRyYWNrZWRRdWVyeTtcbiAgICB0cmFja2VkUXVlcmllc1VwZGF0ZWQuZW1pdCgpO1xuXG4gICAgY29uc3QgbmV4dE9wZXJhdGlvbiA9IGZvcndhcmQob3BlcmF0aW9uKVxuICAgICAgLm1hcChkYXRhID0+IHtcbiAgICAgICAgY29uc29sZS5kZWJ1ZyhgW2Fwb2xsby10cmFja2VyLWxpbmtdIFF1ZXJ5IHske29wZXJhdGlvbi5vcGVyYXRpb25OYW1lfSMke2lkfX0gc3VjY2VlZCFgLCBkYXRhKTtcbiAgICAgICAgZGVsZXRlIHRyYWNrZWRRdWVyaWVzQnlJZFtpZF07XG4gICAgICAgIHRyYWNrZWRRdWVyaWVzVXBkYXRlZC5lbWl0KHRyYWNrZWRRdWVyaWVzQnlJZCk7IC8vIHVwZGF0ZVxuXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgfSk7XG5cbiAgICAvLyBJZiBvZmZsaW5lLCByZXR1cm4gdGhlIG9wdGltaXN0aWMgcmVzcG9uc2VcbiAgICBpZiAobmV0d29ya1N0YXR1c1N1YmplY3QuZ2V0VmFsdWUoKSA9PT0gJ25vbmUnKSB7XG4gICAgICBpZiAoY29udGV4dC5vcHRpbWlzdGljUmVzcG9uc2UpIHtcbiAgICAgICAgY29uc29sZS5kZWJ1ZyhgW2Fwb2xsby10cmFja2VyLWxpbmtdIFF1ZXJ5IHske29wZXJhdGlvbi5vcGVyYXRpb25OYW1lfSMke2lkfX0gaGFzIG9wdGltaXN0aWMgcmVzcG9uc2U6IGAsIGNvbnRleHQub3B0aW1pc3RpY1Jlc3BvbnNlKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oYFthcG9sbG8tdHJhY2tlci1saW5rXSBRdWVyeSB7JHtvcGVyYXRpb24ub3BlcmF0aW9uTmFtZX0jJHtpZH19IG1pc3NpbmcgJ2NvbnRleHQub3B0aW1pc3RpY1Jlc3BvbnNlJzogd2FpdGluZyBuZXR3b3JrIFVQIGJlZm9yZSB0byBjb250aW51ZS4uLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXh0T3BlcmF0aW9uO1xuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc3RvcmVUcmFja2VkUXVlcmllcyhvcHRzOiB7XG4gIGFwb2xsb0NsaWVudDogQXBvbGxvQ2xpZW50PGFueT47XG4gIHN0b3JhZ2U6IFBlcnNpc3RlbnRTdG9yYWdlPGFueT47XG4gIGRlYnVnPzogYm9vbGVhbjtcbn0pIHtcblxuICBjb25zdCBsaXN0ID0gSlNPTi5wYXJzZShhd2FpdCBvcHRzLnN0b3JhZ2UuZ2V0SXRlbShUUkFDS0VEX1FVRVJJRVNfU1RPUkFHRV9LRVkpKSBhcyBUcmFja2VkUXVlcnlbXTtcblxuICBpZiAoIWxpc3QpIHJldHVybjtcbiAgaWYgKG9wdHMuZGVidWcpIGNvbnNvbGUuZGVidWcoJ1thcG9sbG8tdHJhY2tlci1saW5rXSBSZXN0b3JpbmcgdHJhY2tlZCBxdWVyaWVzJywgbGlzdCk7XG5cbiAgY29uc3QgcHJvbWlzZXMgPSAobGlzdCB8fCBbXSkubWFwKHRyYWNrZWRRdWVyeSA9PiB7XG4gICAgY29uc3QgY29udGV4dCA9IEpTT04ucGFyc2UodHJhY2tlZFF1ZXJ5LmNvbnRleHRKU09OKTtcbiAgICBjb25zdCBxdWVyeSA9IEpTT04ucGFyc2UodHJhY2tlZFF1ZXJ5LnF1ZXJ5SlNPTik7XG4gICAgY29uc3QgdmFyaWFibGVzID0gSlNPTi5wYXJzZSh0cmFja2VkUXVlcnkudmFyaWFibGVzSlNPTik7XG4gICAgcmV0dXJuIG9wdHMuYXBvbGxvQ2xpZW50Lm11dGF0ZSh7XG4gICAgICBjb250ZXh0LFxuICAgICAgbXV0YXRpb246IHF1ZXJ5LFxuICAgICAgb3B0aW1pc3RpY1Jlc3BvbnNlOiBjb250ZXh0Lm9wdGltaXN0aWNSZXNwb25zZSxcbiAgICAgIC8vdXBkYXRlOiB1cGRhdGVIYW5kbGVyQnlOYW1lW3RyYWNrZWRRdWVyeS5uYW1lXSxcbiAgICAgIHZhcmlhYmxlcyxcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcbn1cbiJdfQ==
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9ncmFwaHFsL2dyYXBocWwudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBZSxVQUFVLEVBQXNCLE1BQU0scUJBQXFCLENBQUM7QUFDbEYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQUMsZUFBZSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRzNELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFHcEMsTUFBTSxPQUFPLEdBQUcsT0FBTyxNQUFNLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZHLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFFekU7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLFVBQVMsR0FBVyxFQUFFLFNBQTZCO0lBQzdFLE9BQU8sSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFBLGdCQUFnQixDQUFDLENBQUM7QUFDbEQsQ0FBUSxDQUFDO0FBQ1QsWUFBWSxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDO0FBQzdDLFlBQVksQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQztBQUMvQyxZQUFZLENBQUMsVUFBVSxHQUFHLGVBQWUs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QUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQWdCLHFCQUFxQixDQUFDLElBSTNDOztRQUVDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQUFtQixDQUFDO1FBRW5HLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUNsQixJQUFJLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxpREFBaUQsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUV2RixNQUFNLFFBQVEsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDckQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDakQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDekQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztnQkFDOUIsT0FBTztnQkFDUCxRQUFRLEVBQUUsS0FBSztnQkFDZixrQkFBa0IsRUFBRSxPQUFPLENBQUMsa0JBQWtCO2dCQUM5QyxpREFBaUQ7Z0JBQ2pELFNBQVM7YUFDVixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fwb2xsb0NsaWVudCwgQXBvbGxvTGluaywgTmV4dExpbmssIE9wZXJhdGlvbn0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQge0V2ZW50RW1pdHRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgZmlsdGVyLCBzd2l0Y2hNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Z2V0TWFpbkRlZmluaXRpb259IGZyb20gJ0BhcG9sbG8vY2xpZW50L3V0aWxpdGllcyc7XG5pbXBvcnQge1BlcnNpc3RlbnRTdG9yYWdlfSBmcm9tICdhcG9sbG8zLWNhY2hlLXBlcnNpc3QnO1xuaW1wb3J0IHtDb25uZWN0aW9uVHlwZX0gZnJvbSAnLi4vc2VydmljZXMvbmV0d29yay5zZXJ2aWNlJztcbmltcG9ydCB7dXVpZHY0fSBmcm9tICcuLi8uLi92ZW5kb3InO1xuXG5kZWNsYXJlIGxldCB3aW5kb3c6IGFueTtcbmNvbnN0IF9nbG9iYWwgPSB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbCA6ICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHt9KTtcbmV4cG9ydCBjb25zdCBOYXRpdmVXZWJTb2NrZXQgPSBfZ2xvYmFsLldlYlNvY2tldCB8fCBfZ2xvYmFsLk1veldlYlNvY2tldDtcblxuLyoqXG4gKiBBcHBXZWJTb2NrZXQgY2xhc3MuXG4gKiBXaXRoIGEgaGFjayBvbiBkZWZhdWx0IFdlYnNvY2tldCwgdG8gYXZvaWQgdGhlIHVzZSBvZiBwcm90b2NvbFxuICovXG5leHBvcnQgY29uc3QgQXBwV2ViU29ja2V0ID0gZnVuY3Rpb24odXJsOiBzdHJpbmcsIHByb3RvY29scz86IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gIHJldHVybiBuZXcgTmF0aXZlV2ViU29ja2V0KHVybC8qbm8gcHJvdG9jb2xzKi8pO1xufSBhcyBhbnk7XG5BcHBXZWJTb2NrZXQuQ0xPU0VEID0gTmF0aXZlV2ViU29ja2V0LkNMT1NFRDtcbkFwcFdlYlNvY2tldC5DTE9TSU5HID0gTmF0aXZlV2ViU29ja2V0LkNMT1NJTkc7XG5BcHBXZWJTb2NrZXQuQ09OTkVDVElORyA9IE5hdGl2ZVdlYlNvY2tldC5DT05ORUNUSU5HO1xuQXBwV2ViU29ja2V0Lk9QRU4gPSBOYXRpdmVXZWJTb2NrZXQuT1BFTjtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTXV0YXRpb25PcGVyYXRpb24ob3BlcmF0aW9uOiBPcGVyYXRpb24pIHtcbiAgY29uc3QgZGVmID0gZ2V0TWFpbkRlZmluaXRpb24ob3BlcmF0aW9uLnF1ZXJ5KTtcbiAgcmV0dXJuIGRlZi5raW5kID09PSAnT3BlcmF0aW9uRGVmaW5pdGlvbicgJiYgZGVmLm9wZXJhdGlvbiA9PT0gJ211dGF0aW9uJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3Vic2NyaXB0aW9uT3BlcmF0aW9uKG9wZXJhdGlvbjogT3BlcmF0aW9uKSB7XG4gIGNvbnN0IGRlZiA9IGdldE1haW5EZWZpbml0aW9uKG9wZXJhdGlvbi5xdWVyeSk7XG4gIHJldHVybiBkZWYua2luZCA9PT0gJ09wZXJhdGlvbkRlZmluaXRpb24nICYmIGRlZi5vcGVyYXRpb24gPT09ICdzdWJzY3JpcHRpb24nO1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhY2tlZFF1ZXJ5IHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBxdWVyeUpTT046IHN0cmluZztcbiAgdmFyaWFibGVzSlNPTjogc3RyaW5nO1xuICBjb250ZXh0SlNPTjogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgVFJBQ0tFRF9RVUVSSUVTX1NUT1JBR0VfS0VZID0gJ2Fwb2xsby10cmFja2VyLXBlcnNpc3QnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHJhY2tlckxpbmsob3B0czoge1xuICBzdG9yYWdlPzogUGVyc2lzdGVudFN0b3JhZ2U8c3RyaW5nPjtcbiAgb25OZXR3b3JrU3RhdHVzQ2hhbmdlOiBPYnNlcnZhYmxlPENvbm5lY3Rpb25UeXBlPjtcbiAgZGVib3VuY2U/OiBudW1iZXI7XG4gIGRlYnVnPzogYm9vbGVhbjtcbiAgfSk6IEFwb2xsb0xpbmsge1xuXG4gIGNvbnN0IHRyYWNrZWRRdWVyaWVzVXBkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgY29uc3QgdHJhY2tlZFF1ZXJpZXNCeUlkOiB7W2lkOiBzdHJpbmddOiBUcmFja2VkUXVlcnl9ID0ge307XG5cbiAgY29uc3QgbmV0d29ya1N0YXR1c1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJ25vbmUnKTtcbiAgb3B0cy5vbk5ldHdvcmtTdGF0dXNDaGFuZ2Uuc3Vic2NyaWJlKHR5cGUgPT4gbmV0d29ya1N0YXR1c1N1YmplY3QubmV4dCh0eXBlKSk7XG5cbiAgLy8gU2F2ZSBwZW5kaW5nIGFuZCB0cmFja2VkIHF1ZXJpZXMgaW4gc3RvcmFnZVxuICB0cmFja2VkUXVlcmllc1VwZGF0ZWQucGlwZShcbiAgICBkZWJvdW5jZVRpbWUob3B0cy5kZWJvdW5jZSB8fCAxMDAwKSxcbiAgICBzd2l0Y2hNYXAoKCkgPT4gbmV0d29ya1N0YXR1c1N1YmplY3QpLFxuICAgIC8vIENvbnRpbnVlIGlmIG9mZmxpbmVcbiAgICBmaWx0ZXIoKHR5cGUpID0+IHR5cGUgPT09ICdub25lJyAmJiAhIW9wdHMuc3RvcmFnZSlcbiAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgdHJhY2tlZFF1ZXJpZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0cmFja2VkUXVlcmllc0J5SWQpXG4gICAgICAgIC5tYXAoa2V5ID0+IHRyYWNrZWRRdWVyaWVzQnlJZFtrZXldKVxuICAgICAgICAuZmlsdGVyKHZhbHVlID0+IHZhbHVlICE9PSB1bmRlZmluZWQpO1xuICAgICAgaWYgKG9wdHMuZGVidWcpIGNvbnNvbGUuZGVidWcoJ1thcG9sbG8tdHJhY2tlci1saW5rXSBTYXZpbmcgdHJhY2tlZCBxdWVyaWVzIHRvIHN0b3JhZ2UnLCB0cmFja2VkUXVlcmllcyk7XG4gICAgICByZXR1cm4gb3B0cy5zdG9yYWdlLnNldEl0ZW0oVFJBQ0tFRF9RVUVSSUVTX1NUT1JBR0VfS0VZLCBKU09OLnN0cmluZ2lmeSh0cmFja2VkUXVlcmllcykpO1xuICAgIH0pO1xuXG4gIHJldHVybiBuZXcgQXBvbGxvTGluaygob3BlcmF0aW9uOiBPcGVyYXRpb24sIGZvcndhcmQ6IE5leHRMaW5rKSA9PiB7XG4gICAgY29uc3QgY29udGV4dCA9IG9wZXJhdGlvbi5nZXRDb250ZXh0KCk7XG5cbiAgICAvLyBTa2lwIGlmIG5vdCB0cmFja2VkXG4gICAgaWYgKCFjb250ZXh0IHx8ICFjb250ZXh0LnRyYWNrZWQpIHJldHVybiBmb3J3YXJkKG9wZXJhdGlvbik7XG5cbiAgICBjb25zdCBpZCA9IGNvbnRleHQuc2VyaWFsaXphdGlvbktleSB8fCB1dWlkdjQoKTtcbiAgICBjb25zb2xlLmRlYnVnKGBbYXBvbGxvLXRyYWNrZXItbGlua10gV2F0Y2hpbmcgdHJhY2tlZCBxdWVyeSB7JHtvcGVyYXRpb24ub3BlcmF0aW9uTmFtZX0jJHtpZH19YCk7XG5cbiAgICAvLyBDbGVhbiBjb250ZXh0LCBiZWZvcmUgY2FsbGluZyBKU09OLnN0cmluZ2lmeSAocmVtb3ZlIHVudXNlZCBhdHRyaWJ1dGVzKVxuICAgIGNvbnN0IGNsZWFuQ29udGV4dCA9IHsgLi4uY29udGV4dCwgLi4ue29wdGltaXN0aWNSZXNwb25zZTogbnVsbCwgY2FjaGU6IG51bGx9IH07XG5cbiAgICBjb25zdCB0cmFja2VkUXVlcnk6IFRyYWNrZWRRdWVyeSA9IHtcbiAgICAgIGlkLFxuICAgICAgbmFtZTogb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUsXG4gICAgICBxdWVyeUpTT046IEpTT04uc3RyaW5naWZ5KG9wZXJhdGlvbi5xdWVyeSksXG4gICAgICB2YXJpYWJsZXNKU09OOiBKU09OLnN0cmluZ2lmeShvcGVyYXRpb24udmFyaWFibGVzKSxcbiAgICAgIGNvbnRleHRKU09OOiBKU09OLnN0cmluZ2lmeShjbGVhbkNvbnRleHQpXG4gICAgfTtcblxuICAgIC8vIEFkZCB0byBtYXBcbiAgICB0cmFja2VkUXVlcmllc0J5SWRbaWRdID0gdHJhY2tlZFF1ZXJ5O1xuICAgIHRyYWNrZWRRdWVyaWVzVXBkYXRlZC5lbWl0KCk7XG5cbiAgICBjb25zdCBuZXh0T3BlcmF0aW9uID0gZm9yd2FyZChvcGVyYXRpb24pXG4gICAgICAubWFwKGRhdGEgPT4ge1xuICAgICAgICBjb25zb2xlLmRlYnVnKGBbYXBvbGxvLXRyYWNrZXItbGlua10gUXVlcnkgeyR7b3BlcmF0aW9uLm9wZXJhdGlvbk5hbWV9IyR7aWR9fSBzdWNjZWVkIWAsIGRhdGEpO1xuICAgICAgICBkZWxldGUgdHJhY2tlZFF1ZXJpZXNCeUlkW2lkXTtcbiAgICAgICAgdHJhY2tlZFF1ZXJpZXNVcGRhdGVkLmVtaXQodHJhY2tlZFF1ZXJpZXNCeUlkKTsgLy8gdXBkYXRlXG5cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICB9KTtcblxuICAgIC8vIElmIG9mZmxpbmUsIHJldHVybiB0aGUgb3B0aW1pc3RpYyByZXNwb25zZVxuICAgIGlmIChuZXR3b3JrU3RhdHVzU3ViamVjdC5nZXRWYWx1ZSgpID09PSAnbm9uZScpIHtcbiAgICAgIGlmIChjb250ZXh0Lm9wdGltaXN0aWNSZXNwb25zZSkge1xuICAgICAgICBjb25zb2xlLmRlYnVnKGBbYXBvbGxvLXRyYWNrZXItbGlua10gUXVlcnkgeyR7b3BlcmF0aW9uLm9wZXJhdGlvbk5hbWV9IyR7aWR9fSBoYXMgb3B0aW1pc3RpYyByZXNwb25zZTogYCwgY29udGV4dC5vcHRpbWlzdGljUmVzcG9uc2UpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgW2Fwb2xsby10cmFja2VyLWxpbmtdIFF1ZXJ5IHske29wZXJhdGlvbi5vcGVyYXRpb25OYW1lfSMke2lkfX0gbWlzc2luZyAnY29udGV4dC5vcHRpbWlzdGljUmVzcG9uc2UnOiB3YWl0aW5nIG5ldHdvcmsgVVAgYmVmb3JlIHRvIGNvbnRpbnVlLi4uYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHRPcGVyYXRpb247XG4gIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzdG9yZVRyYWNrZWRRdWVyaWVzKG9wdHM6IHtcbiAgYXBvbGxvQ2xpZW50OiBBcG9sbG9DbGllbnQ8YW55PjtcbiAgc3RvcmFnZTogUGVyc2lzdGVudFN0b3JhZ2U8YW55PjtcbiAgZGVidWc/OiBib29sZWFuO1xufSkge1xuXG4gIGNvbnN0IGxpc3QgPSBKU09OLnBhcnNlKGF3YWl0IG9wdHMuc3RvcmFnZS5nZXRJdGVtKFRSQUNLRURfUVVFUklFU19TVE9SQUdFX0tFWSkpIGFzIFRyYWNrZWRRdWVyeVtdO1xuXG4gIGlmICghbGlzdCkgcmV0dXJuO1xuICBpZiAob3B0cy5kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2Fwb2xsby10cmFja2VyLWxpbmtdIFJlc3RvcmluZyB0cmFja2VkIHF1ZXJpZXMnLCBsaXN0KTtcblxuICBjb25zdCBwcm9taXNlcyA9IChsaXN0IHx8IFtdKS5tYXAodHJhY2tlZFF1ZXJ5ID0+IHtcbiAgICBjb25zdCBjb250ZXh0ID0gSlNPTi5wYXJzZSh0cmFja2VkUXVlcnkuY29udGV4dEpTT04pO1xuICAgIGNvbnN0IHF1ZXJ5ID0gSlNPTi5wYXJzZSh0cmFja2VkUXVlcnkucXVlcnlKU09OKTtcbiAgICBjb25zdCB2YXJpYWJsZXMgPSBKU09OLnBhcnNlKHRyYWNrZWRRdWVyeS52YXJpYWJsZXNKU09OKTtcbiAgICByZXR1cm4gb3B0cy5hcG9sbG9DbGllbnQubXV0YXRlKHtcbiAgICAgIGNvbnRleHQsXG4gICAgICBtdXRhdGlvbjogcXVlcnksXG4gICAgICBvcHRpbWlzdGljUmVzcG9uc2U6IGNvbnRleHQub3B0aW1pc3RpY1Jlc3BvbnNlLFxuICAgICAgLy91cGRhdGU6IHVwZGF0ZUhhbmRsZXJCeU5hbWVbdHJhY2tlZFF1ZXJ5Lm5hbWVdLFxuICAgICAgdmFyaWFibGVzLFxuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xufVxuIl19
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
2
|
import { Inject, Injectable } from '@angular/core';
|
|
3
3
|
import { Platform } from '@ionic/angular';
|
|
4
|
-
import * as uuidv4Imported from 'uuid/v4';
|
|
5
4
|
import { ImagesUtils } from './images.utils';
|
|
6
5
|
import { chainPromises, firstNotNilPromise } from '../observables';
|
|
7
6
|
import { HttpClient } from '@angular/common/http';
|
|
8
7
|
import { ENVIRONMENT } from '../../../environments/environment.class';
|
|
8
|
+
import { uuidv4 } from '../../vendor';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
import * as i1 from "@ionic/angular";
|
|
11
11
|
import * as i2 from "@angular/common/http";
|
|
12
12
|
import * as i3 from "../../../environments/environment.class";
|
|
13
|
-
const uuidv4 = uuidv4Imported;
|
|
14
13
|
export class FileService {
|
|
15
14
|
constructor(platform,
|
|
16
15
|
//private transfer: FileTransfer,
|
|
@@ -118,4 +117,4 @@ FileService.ctorParameters = () => [
|
|
|
118
117
|
{ type: HttpClient },
|
|
119
118
|
{ type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] }
|
|
120
119
|
];
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZmlsZS9maWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEtBQUssY0FBYyxNQUFNLFNBQVMsQ0FBQztBQUMxQyxPQUFPLEVBQUMsV0FBVyxFQUFxQixNQUFNLGdCQUFnQixDQUFDO0FBQy9ELE9BQU8sRUFBQyxhQUFhLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHlDQUF5QyxDQUFDOzs7OztBQUVwRSxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUM7QUFTOUIsTUFBTSxPQUFPLFdBQVc7SUFhdEIsWUFDVSxRQUFrQjtJQUMxQixpQ0FBaUM7SUFDakMsaUNBQWlDO0lBQ3pCLElBQWdCLEVBQ08sV0FBVztRQUpsQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBR2xCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDTyxnQkFBVyxHQUFYLFdBQVcsQ0FBQTtRQWZwQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBaUJ2QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQztRQUV0QyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFoQkQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxLQUFLLENBQUM7UUFDYixnQ0FBZ0M7UUFDaEMsbUNBQW1DO0lB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Q0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3RFLElBQUksS0FBSztvQkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLDBCQUEwQixPQUFPLFVBQVUsVUFBVSxZQUFZLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO2dCQUNoSCxPQUFPLE9BQU8sQ0FBQzthQUNoQjtZQUVELG9CQUFvQjtZQUNwQixPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO0tBQUE7SUFFRCw2QkFBNkI7SUFFbkIsS0FBSztRQUViLHFCQUFxQjtRQUNyQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN6QixpRkFBaUY7WUFDakYsZ0dBQWdHO1lBQ2hHLG1FQUFtRTtZQUVuRSxnRUFBZ0U7WUFDaEUscUJBQXFCO1lBQ3JCLGtFQUFrRTtZQUNsRSwrREFBK0Q7WUFDL0QsT0FBTztZQUNQLG9CQUFvQjtZQUNwQiw2SUFBNkk7WUFDN0ksc0RBQXNEO1lBQ3RELFFBQVE7U0FDVDtRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7Ozs7WUF4SEYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2dCQUNsQixJQUFJLEVBQUU7b0JBQ0osUUFBUTtvQkFDUixVQUFVO2lCQUNYO2FBQ0Y7OztZQWZPLFFBQVE7WUFJUixVQUFVOzRDQThCYixNQUFNLFNBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UGxhdGZvcm19IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCAqIGFzIHV1aWR2NEltcG9ydGVkIGZyb20gJ3V1aWQvdjQnO1xuaW1wb3J0IHtJbWFnZXNVdGlscywgSW1hZ2VSZXNpemVPcHRpb25zfSBmcm9tICcuL2ltYWdlcy51dGlscyc7XG5pbXBvcnQge2NoYWluUHJvbWlzZXMsIGZpcnN0Tm90TmlsUHJvbWlzZX0gZnJvbSAnLi4vb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0VOVklST05NRU5UfSBmcm9tICcuLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQuY2xhc3MnO1xuXG5jb25zdCB1dWlkdjQgPSB1dWlkdjRJbXBvcnRlZDtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGRlcHM6IFtcbiAgICBQbGF0Zm9ybSxcbiAgICBIdHRwQ2xpZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRmlsZVNlcnZpY2Uge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlYnVnOiBib29sZWFuO1xuICBwcml2YXRlIF9zdGFydGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfaW1hZ2VEaXJlY3Rvcnk6IHN0cmluZztcblxuICBnZXQgY2FuVXNlRmlsZVN5c3RlbSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gICAgLy8gRklYTUU6IHNlZW1zIG5vdCB3b3JraW5nIHdlbGxcbiAgICAvL3JldHVybiAhIXRoaXMuZmlsZS5kYXRhRGlyZWN0b3J5O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgLy9wcml2YXRlIHRyYW5zZmVyOiBGaWxlVHJhbnNmZXIsXG4gICAgLy9AT3B0aW9uYWwoKSBwcml2YXRlIGZpbGU6IEZpbGUsXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIEBJbmplY3QoRU5WSVJPTk1FTlQpIHByb3RlY3RlZCBlbnZpcm9ubWVudCkge1xuXG4gICAgdGhpcy5fZGVidWcgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcblxuICAgIHBsYXRmb3JtLnJlYWR5KCkudGhlbigoKSA9PiB0aGlzLnN0YXJ0KCkpO1xuICB9XG5cbiAgZ2V0SW1hZ2VzKHNvdXJjZXM6IHN0cmluZ1tdLCBvcHRzPzogSW1hZ2VSZXNpemVPcHRpb25zICYge1xuICAgIG91dHB1dFR5cGU/OiAnZmlsZVVybCcgfCAnZGF0YVVybCc7XG4gIH0pOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgaWYgKCF0aGlzLl9zdGFydGVkKSB0aHJvdyBuZXcgRXJyb3IoJ1BsYXRmb3JtIG11c3QgYmUgc3RhcnRlZCBmaXJzdCEnKTtcblxuICAgIC8vY29uc3QgZmlsZVRyYW5zZmVyID0gdGhpcy5jYW5Vc2VGaWxlU3lzdGVtID8gdGhpcy50cmFuc2Zlci5jcmVhdGUoKSA6IHVuZGVmaW5lZDtcbiAgICAvL2NvbnN0IGpvYnNGYWN0b3JpZXMgPSAoc291cmNlcyB8fCBbXSkubWFwKHNvdXJjZSA9PiAoKSA9PiB0aGlzLmdldEltYWdlKHNvdXJjZSwgey4uLm9wdHMsIGZpbGVUcmFuc2Zlcn0pKTtcblxuICAgIGNvbnN0IGpvYnNGYWN0b3JpZXMgPSAoc291cmNlcyB8fCBbXSkubWFwKHNvdXJjZSA9PiAoKSA9PiB0aGlzLmdldEltYWdlKHNvdXJjZSwgey4uLm9wdHN9KSk7XG4gICAgcmV0dXJuIGNoYWluUHJvbWlzZXM8c3RyaW5nPihqb2JzRmFjdG9yaWVzKTtcbiAgfVxuXG4gIGFzeW5jIGdldEltYWdlKGZpbGVVcmw6IHN0cmluZywgb3B0cz86IEltYWdlUmVzaXplT3B0aW9ucyAmIHtcbiAgICBvdXRwdXRUeXBlPzogJ2ZpbGVVcmwnIHwgJ2RhdGFVcmwnO1xuICAgIH0pOiBQcm9taXNlPHN0cmluZz4ge1xuXG4gICAgbGV0IG91dHB1dFR5cGUgPSBvcHRzICYmIG9wdHMub3V0cHV0VHlwZSB8fCAodGhpcy5jYW5Vc2VGaWxlU3lzdGVtID8gJ2ZpbGVVcmwnIDogJ2RhdGFVcmwnKTtcblxuICAgIGNvbnN0IGRlYnVnID0gdGhpcy5fZGVidWcgLyomJiAoIW9wdHMgfHwgIW9wdHMuZmlsZVRyYW5zZmVyKSovO1xuICAgIGNvbnN0IG5vdyA9IGRlYnVnICYmIERhdGUubm93KCk7XG4gICAgaWYgKGRlYnVnKSBjb25zb2xlLmRlYnVnKGBbZmlsZV0gRmV0Y2hpbmcgaW1hZ2UgeyR7ZmlsZVVybH19IGludG8gJHtvdXRwdXRUeXBlfS4uLmApO1xuXG4gICAgLy8gUmVhZCB0aGUgZmlsZW5hbWVcbiAgICBjb25zdCBsYXN0U2xhc2hJbmRleCA9IGZpbGVVcmwubGFzdEluZGV4T2YoJy8nKTtcbiAgICBpZiAobGFzdFNsYXNoSW5kZXggPT09IC0xKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgVVJMOiAnICsgZmlsZVVybCk7XG4gICAgY29uc3QgZmlsZU5hbWUgPSBsYXN0U2xhc2hJbmRleCA8IChmaWxlVXJsLmxlbmd0aCAtIDEpICYmIGZpbGVVcmwuc3Vic3RyaW5nKGxhc3RTbGFzaEluZGV4ICsgMSkgfHwgdXVpZHY0KCk7XG5cblxuICAgIC8vIERvd25sb2FkIGludG8gdGhlIGZpbGUgc3lzdGVtXG4gICAgaWYgKG91dHB1dFR5cGUgPT09ICdmaWxlVXJsJyAmJiB0aGlzLmNhblVzZUZpbGVTeXN0ZW0pIHtcbiAgICAgIGNvbnNvbGUud2FybihgV0FSTjogW2ZpbGVdIERvd25sb2FkaW5nIGltYWdlIHske2ZpbGVVcmx9fSBpbiBsb2NhbCBmaWxlc3lzdGVtLi4uYCk7XG4gICAgICBjb25zdCB0YXJnZXRGaWxlUGF0aCA9IHRoaXMuX2ltYWdlRGlyZWN0b3J5ICsgZmlsZU5hbWU7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBibG9iOiBCbG9iID0gYXdhaXQgZmlyc3ROb3ROaWxQcm9taXNlKHRoaXMuaHR0cC5nZXQoZmlsZVVybCwge1xuICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcbiAgICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyxcbiAgICAgICAgICByZXBvcnRQcm9ncmVzczogZmFsc2VcbiAgICAgICAgfSkpO1xuICAgICAgICBjb25zb2xlLmRlYnVnKCdbZmlsZV0gR2V0dGluZyBibG9iIDonICsgYmxvYi50eXBlKTtcblxuICAgICAgICAvL2F3YWl0IHRoaXMuZmlsZS53cml0ZUZpbGUodGhpcy5faW1hZ2VEaXJlY3RvcnksIGZpbGVOYW1lLCBibG9iLCB7cmVwbGFjZTogdHJ1ZX0pO1xuXG4gICAgICAgIC8vY29uc3QgZmlsZVRyYW5zZmVyID0gKG9wdHMgJiYgb3B0cy5maWxlVHJhbnNmZXIpIHx8IHRoaXMudHJhbnNmZXIuY3JlYXRlKCk7XG4gICAgICAgIC8vYXdhaXQgZmlsZVRyYW5zZmVyLmRvd25sb2FkKHNvdXJjZSwgdGFyZ2V0RmlsZVBhdGgpO1xuICAgICAgICBpZiAoZGVidWcpIGNvbnNvbGUuZGVidWcoYFtmaWxlXSBGZXRjaGluZyBpbWFnZSB7JHtmaWxlVXJsfX0gaW50byAke291dHB1dFR5cGV9IFtPS10gaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG4gICAgICAgIHJldHVybiB0YXJnZXRGaWxlUGF0aDtcbiAgICAgIH1cbiAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgW2ZpbGVdIEVycm9yIHdoaWxlIGRvd25sb2FkICR7ZmlsZVVybH06ICR7ZXJyICYmIGVyci5tZXNzYWdlIHx8IGVycn1gKTtcblxuICAgICAgICAvLyBDb250aW51ZSAoZmFsbGJhY2sgdG8gZGF0YSBVcmwpXG4gICAgICAgIG91dHB1dFR5cGUgPSAnZGF0YVVybCc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG91dHB1dFR5cGUgPT09ICdkYXRhVXJsJykge1xuICAgICAgLy8gR2V0IGFzIGRhdGEgdXJsIChlLmcuICdkYXRhOmltYWdlL3BuZzouLi4nKVxuICAgICAgY29uc3QgZGF0YVVybCA9IGF3YWl0IEltYWdlc1V0aWxzLnJlYWRBbmRSZXNpemVGcm9tVXJsKGZpbGVVcmwsIG9wdHMpO1xuICAgICAgaWYgKGRlYnVnKSBjb25zb2xlLmRlYnVnKGBbZmlsZV0gRmV0Y2hpbmcgaW1hZ2UgeyR7ZmlsZVVybH19IGludG8gJHtvdXRwdXRUeXBlfSBbT0tdIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2ApO1xuICAgICAgcmV0dXJuIGRhdGFVcmw7XG4gICAgfVxuXG4gICAgLy8gS2VlcCBvcmlnaW5hbCBVUkxcbiAgICByZXR1cm4gZmlsZVVybDtcbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzIC0tICovXG5cbiAgcHJvdGVjdGVkIHN0YXJ0KCkge1xuXG4gICAgLy8gRmlsZSBzeXN0ZW0gZXhpc3RzXG4gICAgaWYgKHRoaXMuY2FuVXNlRmlsZVN5c3RlbSkge1xuICAgICAgLy9jb25zb2xlLmluZm8oXCJbZmlsZV0gQXBwbGljYXRpb24gZGlyZWN0b3J5OiBcIiwgdGhpcy5maWxlLmFwcGxpY2F0aW9uRGlyZWN0b3J5KTtcbiAgICAgIC8vY29uc29sZS5pbmZvKFwiW2ZpbGVdIEFwcGxpY2F0aW9uIHN0b3JhZ2UgZGlyZWN0b3J5OiBcIiwgdGhpcy5maWxlLmFwcGxpY2F0aW9uU3RvcmFnZURpcmVjdG9yeSk7XG4gICAgICAvL2NvbnNvbGUuaW5mbyhcIltmaWxlXSBEYXRhIGRpcmVjdG9yeTogXCIsIHRoaXMuZmlsZS5kYXRhRGlyZWN0b3J5KTtcblxuICAgICAgLy8gdGhpcy5maWxlLmNyZWF0ZURpcih0aGlzLmZpbGUuZGF0YURpcmVjdG9yeSwgJ2ltYWdlcycsIGZhbHNlKVxuICAgICAgLy8gICAudGhlbigoZGlyKSA9PiB7XG4gICAgICAvLyAgICAgdGhpcy5faW1hZ2VEaXJlY3RvcnkgPSB0aGlzLmZpbGUuZGF0YURpcmVjdG9yeSArICdpbWFnZXMvJztcbiAgICAgIC8vICAgICBjb25zb2xlLmluZm8oXCJbZmlsZV0gSW1hZ2VzIGRpcmVjdG9yeTogXCIsIGRpci5mdWxsUGF0aCk7XG4gICAgICAvLyAgIH0pXG4gICAgICAvLyAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgLy8gICAgIGNvbnNvbGUuZXJyb3IoXCJbZmlsZV0gQ2Fubm90IGNyZWF0ZSB0aGUgaW1hZ2VzIGRpcmVjdG9yeTogXCIgKyAodGhpcy5maWxlLmRhdGFEaXJlY3RvcnkgKyAnaW1hZ2VzLyA6ICcgKyAoZXJyICYmIGVyci5tZXNzYWdlIHx8IGVycikpKTtcbiAgICAgIC8vICAgICB0aGlzLl9pbWFnZURpcmVjdG9yeSA9IHRoaXMuZmlsZS5kYXRhRGlyZWN0b3J5O1xuICAgICAgLy8gICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGFydGVkID0gdHJ1ZTtcbiAgfVxuXG59XG4iXX0=
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZmlsZS9maWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUMsV0FBVyxFQUFxQixNQUFNLGdCQUFnQixDQUFDO0FBQy9ELE9BQU8sRUFBQyxhQUFhLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxjQUFjLENBQUM7Ozs7O0FBU3BDLE1BQU0sT0FBTyxXQUFXO0lBYXRCLFlBQ1UsUUFBa0I7SUFDMUIsaUNBQWlDO0lBQ2pDLGlDQUFpQztJQUN6QixJQUFnQixFQUNPLFdBQVc7UUFKbEMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUdsQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ08sZ0JBQVcsR0FBWCxXQUFXLENBQUE7UUFmcEMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQWlCdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7UUFFdEMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBaEJELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sS0FBSyxDQUFDO1FBQ2IsZ0NBQWdDO1FBQ2hDLG1DQUFtQztJQUNyQyxDQUFDO0lBY0QsU0FBUyxDQUFDLE9B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LElBQUksQ0FBQyxDQUFDO2dCQUN0RSxJQUFJLEtBQUs7b0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsT0FBTyxVQUFVLFVBQVUsWUFBWSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQztnQkFDaEgsT0FBTyxPQUFPLENBQUM7YUFDaEI7WUFFRCxvQkFBb0I7WUFDcEIsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztLQUFBO0lBRUQsNkJBQTZCO0lBRW5CLEtBQUs7UUFFYixxQkFBcUI7UUFDckIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsaUZBQWlGO1lBQ2pGLGdHQUFnRztZQUNoRyxtRUFBbUU7WUFFbkUsZ0VBQWdFO1lBQ2hFLHFCQUFxQjtZQUNyQixrRUFBa0U7WUFDbEUsK0RBQStEO1lBQy9ELE9BQU87WUFDUCxvQkFBb0I7WUFDcEIsNklBQTZJO1lBQzdJLHNEQUFzRDtZQUN0RCxRQUFRO1NBQ1Q7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN2QixDQUFDOzs7O1lBeEhGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTtnQkFDbEIsSUFBSSxFQUFFO29CQUNKLFFBQVE7b0JBQ1IsVUFBVTtpQkFDWDthQUNGOzs7WUFiTyxRQUFRO1lBR1IsVUFBVTs0Q0E2QmIsTUFBTSxTQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BsYXRmb3JtfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge0ltYWdlc1V0aWxzLCBJbWFnZVJlc2l6ZU9wdGlvbnN9IGZyb20gJy4vaW1hZ2VzLnV0aWxzJztcbmltcG9ydCB7Y2hhaW5Qcm9taXNlcywgZmlyc3ROb3ROaWxQcm9taXNlfSBmcm9tICcuLi9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7RU5WSVJPTk1FTlR9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQge3V1aWR2NH0gZnJvbSAnLi4vLi4vdmVuZG9yJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGRlcHM6IFtcbiAgICBQbGF0Zm9ybSxcbiAgICBIdHRwQ2xpZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRmlsZVNlcnZpY2Uge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlYnVnOiBib29sZWFuO1xuICBwcml2YXRlIF9zdGFydGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfaW1hZ2VEaXJlY3Rvcnk6IHN0cmluZztcblxuICBnZXQgY2FuVXNlRmlsZVN5c3RlbSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gICAgLy8gRklYTUU6IHNlZW1zIG5vdCB3b3JraW5nIHdlbGxcbiAgICAvL3JldHVybiAhIXRoaXMuZmlsZS5kYXRhRGlyZWN0b3J5O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgLy9wcml2YXRlIHRyYW5zZmVyOiBGaWxlVHJhbnNmZXIsXG4gICAgLy9AT3B0aW9uYWwoKSBwcml2YXRlIGZpbGU6IEZpbGUsXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIEBJbmplY3QoRU5WSVJPTk1FTlQpIHByb3RlY3RlZCBlbnZpcm9ubWVudCkge1xuXG4gICAgdGhpcy5fZGVidWcgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcblxuICAgIHBsYXRmb3JtLnJlYWR5KCkudGhlbigoKSA9PiB0aGlzLnN0YXJ0KCkpO1xuICB9XG5cbiAgZ2V0SW1hZ2VzKHNvdXJjZXM6IHN0cmluZ1tdLCBvcHRzPzogSW1hZ2VSZXNpemVPcHRpb25zICYge1xuICAgIG91dHB1dFR5cGU/OiAnZmlsZVVybCcgfCAnZGF0YVVybCc7XG4gIH0pOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgaWYgKCF0aGlzLl9zdGFydGVkKSB0aHJvdyBuZXcgRXJyb3IoJ1BsYXRmb3JtIG11c3QgYmUgc3RhcnRlZCBmaXJzdCEnKTtcblxuICAgIC8vY29uc3QgZmlsZVRyYW5zZmVyID0gdGhpcy5jYW5Vc2VGaWxlU3lzdGVtID8gdGhpcy50cmFuc2Zlci5jcmVhdGUoKSA6IHVuZGVmaW5lZDtcbiAgICAvL2NvbnN0IGpvYnNGYWN0b3JpZXMgPSAoc291cmNlcyB8fCBbXSkubWFwKHNvdXJjZSA9PiAoKSA9PiB0aGlzLmdldEltYWdlKHNvdXJjZSwgey4uLm9wdHMsIGZpbGVUcmFuc2Zlcn0pKTtcblxuICAgIGNvbnN0IGpvYnNGYWN0b3JpZXMgPSAoc291cmNlcyB8fCBbXSkubWFwKHNvdXJjZSA9PiAoKSA9PiB0aGlzLmdldEltYWdlKHNvdXJjZSwgey4uLm9wdHN9KSk7XG4gICAgcmV0dXJuIGNoYWluUHJvbWlzZXM8c3RyaW5nPihqb2JzRmFjdG9yaWVzKTtcbiAgfVxuXG4gIGFzeW5jIGdldEltYWdlKGZpbGVVcmw6IHN0cmluZywgb3B0cz86IEltYWdlUmVzaXplT3B0aW9ucyAmIHtcbiAgICBvdXRwdXRUeXBlPzogJ2ZpbGVVcmwnIHwgJ2RhdGFVcmwnO1xuICAgIH0pOiBQcm9taXNlPHN0cmluZz4ge1xuXG4gICAgbGV0IG91dHB1dFR5cGUgPSBvcHRzICYmIG9wdHMub3V0cHV0VHlwZSB8fCAodGhpcy5jYW5Vc2VGaWxlU3lzdGVtID8gJ2ZpbGVVcmwnIDogJ2RhdGFVcmwnKTtcblxuICAgIGNvbnN0IGRlYnVnID0gdGhpcy5fZGVidWcgLyomJiAoIW9wdHMgfHwgIW9wdHMuZmlsZVRyYW5zZmVyKSovO1xuICAgIGNvbnN0IG5vdyA9IGRlYnVnICYmIERhdGUubm93KCk7XG4gICAgaWYgKGRlYnVnKSBjb25zb2xlLmRlYnVnKGBbZmlsZV0gRmV0Y2hpbmcgaW1hZ2UgeyR7ZmlsZVVybH19IGludG8gJHtvdXRwdXRUeXBlfS4uLmApO1xuXG4gICAgLy8gUmVhZCB0aGUgZmlsZW5hbWVcbiAgICBjb25zdCBsYXN0U2xhc2hJbmRleCA9IGZpbGVVcmwubGFzdEluZGV4T2YoJy8nKTtcbiAgICBpZiAobGFzdFNsYXNoSW5kZXggPT09IC0xKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgVVJMOiAnICsgZmlsZVVybCk7XG4gICAgY29uc3QgZmlsZU5hbWUgPSBsYXN0U2xhc2hJbmRleCA8IChmaWxlVXJsLmxlbmd0aCAtIDEpICYmIGZpbGVVcmwuc3Vic3RyaW5nKGxhc3RTbGFzaEluZGV4ICsgMSkgfHwgdXVpZHY0KCk7XG5cblxuICAgIC8vIERvd25sb2FkIGludG8gdGhlIGZpbGUgc3lzdGVtXG4gICAgaWYgKG91dHB1dFR5cGUgPT09ICdmaWxlVXJsJyAmJiB0aGlzLmNhblVzZUZpbGVTeXN0ZW0pIHtcbiAgICAgIGNvbnNvbGUud2FybihgV0FSTjogW2ZpbGVdIERvd25sb2FkaW5nIGltYWdlIHske2ZpbGVVcmx9fSBpbiBsb2NhbCBmaWxlc3lzdGVtLi4uYCk7XG4gICAgICBjb25zdCB0YXJnZXRGaWxlUGF0aCA9IHRoaXMuX2ltYWdlRGlyZWN0b3J5ICsgZmlsZU5hbWU7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBibG9iOiBCbG9iID0gYXdhaXQgZmlyc3ROb3ROaWxQcm9taXNlKHRoaXMuaHR0cC5nZXQoZmlsZVVybCwge1xuICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcbiAgICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyxcbiAgICAgICAgICByZXBvcnRQcm9ncmVzczogZmFsc2VcbiAgICAgICAgfSkpO1xuICAgICAgICBjb25zb2xlLmRlYnVnKCdbZmlsZV0gR2V0dGluZyBibG9iIDonICsgYmxvYi50eXBlKTtcblxuICAgICAgICAvL2F3YWl0IHRoaXMuZmlsZS53cml0ZUZpbGUodGhpcy5faW1hZ2VEaXJlY3RvcnksIGZpbGVOYW1lLCBibG9iLCB7cmVwbGFjZTogdHJ1ZX0pO1xuXG4gICAgICAgIC8vY29uc3QgZmlsZVRyYW5zZmVyID0gKG9wdHMgJiYgb3B0cy5maWxlVHJhbnNmZXIpIHx8IHRoaXMudHJhbnNmZXIuY3JlYXRlKCk7XG4gICAgICAgIC8vYXdhaXQgZmlsZVRyYW5zZmVyLmRvd25sb2FkKHNvdXJjZSwgdGFyZ2V0RmlsZVBhdGgpO1xuICAgICAgICBpZiAoZGVidWcpIGNvbnNvbGUuZGVidWcoYFtmaWxlXSBGZXRjaGluZyBpbWFnZSB7JHtmaWxlVXJsfX0gaW50byAke291dHB1dFR5cGV9IFtPS10gaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG4gICAgICAgIHJldHVybiB0YXJnZXRGaWxlUGF0aDtcbiAgICAgIH1cbiAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgW2ZpbGVdIEVycm9yIHdoaWxlIGRvd25sb2FkICR7ZmlsZVVybH06ICR7ZXJyICYmIGVyci5tZXNzYWdlIHx8IGVycn1gKTtcblxuICAgICAgICAvLyBDb250aW51ZSAoZmFsbGJhY2sgdG8gZGF0YSBVcmwpXG4gICAgICAgIG91dHB1dFR5cGUgPSAnZGF0YVVybCc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG91dHB1dFR5cGUgPT09ICdkYXRhVXJsJykge1xuICAgICAgLy8gR2V0IGFzIGRhdGEgdXJsIChlLmcuICdkYXRhOmltYWdlL3BuZzouLi4nKVxuICAgICAgY29uc3QgZGF0YVVybCA9IGF3YWl0IEltYWdlc1V0aWxzLnJlYWRBbmRSZXNpemVGcm9tVXJsKGZpbGVVcmwsIG9wdHMpO1xuICAgICAgaWYgKGRlYnVnKSBjb25zb2xlLmRlYnVnKGBbZmlsZV0gRmV0Y2hpbmcgaW1hZ2UgeyR7ZmlsZVVybH19IGludG8gJHtvdXRwdXRUeXBlfSBbT0tdIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2ApO1xuICAgICAgcmV0dXJuIGRhdGFVcmw7XG4gICAgfVxuXG4gICAgLy8gS2VlcCBvcmlnaW5hbCBVUkxcbiAgICByZXR1cm4gZmlsZVVybDtcbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzIC0tICovXG5cbiAgcHJvdGVjdGVkIHN0YXJ0KCkge1xuXG4gICAgLy8gRmlsZSBzeXN0ZW0gZXhpc3RzXG4gICAgaWYgKHRoaXMuY2FuVXNlRmlsZVN5c3RlbSkge1xuICAgICAgLy9jb25zb2xlLmluZm8oXCJbZmlsZV0gQXBwbGljYXRpb24gZGlyZWN0b3J5OiBcIiwgdGhpcy5maWxlLmFwcGxpY2F0aW9uRGlyZWN0b3J5KTtcbiAgICAgIC8vY29uc29sZS5pbmZvKFwiW2ZpbGVdIEFwcGxpY2F0aW9uIHN0b3JhZ2UgZGlyZWN0b3J5OiBcIiwgdGhpcy5maWxlLmFwcGxpY2F0aW9uU3RvcmFnZURpcmVjdG9yeSk7XG4gICAgICAvL2NvbnNvbGUuaW5mbyhcIltmaWxlXSBEYXRhIGRpcmVjdG9yeTogXCIsIHRoaXMuZmlsZS5kYXRhRGlyZWN0b3J5KTtcblxuICAgICAgLy8gdGhpcy5maWxlLmNyZWF0ZURpcih0aGlzLmZpbGUuZGF0YURpcmVjdG9yeSwgJ2ltYWdlcycsIGZhbHNlKVxuICAgICAgLy8gICAudGhlbigoZGlyKSA9PiB7XG4gICAgICAvLyAgICAgdGhpcy5faW1hZ2VEaXJlY3RvcnkgPSB0aGlzLmZpbGUuZGF0YURpcmVjdG9yeSArICdpbWFnZXMvJztcbiAgICAgIC8vICAgICBjb25zb2xlLmluZm8oXCJbZmlsZV0gSW1hZ2VzIGRpcmVjdG9yeTogXCIsIGRpci5mdWxsUGF0aCk7XG4gICAgICAvLyAgIH0pXG4gICAgICAvLyAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgLy8gICAgIGNvbnNvbGUuZXJyb3IoXCJbZmlsZV0gQ2Fubm90IGNyZWF0ZSB0aGUgaW1hZ2VzIGRpcmVjdG9yeTogXCIgKyAodGhpcy5maWxlLmRhdGFEaXJlY3RvcnkgKyAnaW1hZ2VzLyA6ICcgKyAoZXJyICYmIGVyci5tZXNzYWdlIHx8IGVycikpKTtcbiAgICAgIC8vICAgICB0aGlzLl9pbWFnZURpcmVjdG9yeSA9IHRoaXMuZmlsZS5kYXRhRGlyZWN0b3J5O1xuICAgICAgLy8gICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGFydGVkID0gdHJ1ZTtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -44,6 +44,10 @@ export class Color {
|
|
|
44
44
|
return null;
|
|
45
45
|
return new Color([+parts[0], +parts[1], +parts[2]], parts.length === 4 && +parts[3] || 1, 'custom');
|
|
46
46
|
}
|
|
47
|
+
static parseHexa(hexColor) {
|
|
48
|
+
const split = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hexColor);
|
|
49
|
+
return new Color(split ? split.slice(1, 4).map(i => parseInt(i, 16)) : [0, 0, 0]);
|
|
50
|
+
}
|
|
47
51
|
get name() {
|
|
48
52
|
return this._name;
|
|
49
53
|
}
|
|
@@ -253,4 +257,4 @@ function linearColorGradient(count, options) {
|
|
|
253
257
|
return result;
|
|
254
258
|
}
|
|
255
259
|
export { ɵ0 };
|
|
256
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGgtY29sb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZ3JhcGgvZ3JhcGgtY29sb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBUzdDOztHQUVHO0FBQ0gsTUFBTSxXQUFXLEdBQUc7SUFDbEIsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDdEIsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDdEIsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDMUIsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDdkIsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDckIsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDdEIsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDdkIsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEIsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDbEIsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7Q0FDbEIsQ0FBQztBQUVGLDhCQUE4QjtBQUM5QixNQUFNLFNBQVMsR0FBNkIsRUFBRSxDQUFDO0FBRy9DOztHQUVHO0FBQ0gsV0FBVztBQUNYLE1BQU0sT0FBTyxLQUFLO0lBNEJoQixZQUNVLFNB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ZXNDb250ZW50IjpbImltcG9ydCB7UHJlZGVmaW5lZENvbG9yc30gZnJvbSAnQGlvbmljL2NvcmUnO1xuaW1wb3J0IHtpc05pbCwgaXNOb3ROaWx9IGZyb20gJy4uL2Z1bmN0aW9ucyc7XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgQ29sb3JOYW1lID0gUHJlZGVmaW5lZENvbG9ycyB8XG4gICd3aGl0ZSdcbiAgfCAncmVkJ1xuICB8ICdncmVlbidcbiAgfCAnYmx1ZSc7XG5cblxuLyoqXG4gKiBEZWZpbmUgaGVyZSB0aGVtZSBjb2xvcnNcbiAqL1xuY29uc3QgcmdiQXJyYXlNYXAgPSB7XG4gIHdoaXRlOiBbMjU1LCAyNTUsIDI1NV0sXG4gIHByaW1hcnk6IFsyMCwgNjcsIDE0NV0sIC8vIG9rXG4gIHNlY29uZGFyeTogWzExNywgMTk2LCAyNTNdLCAvLyBva1xuICB0ZXJ0aWFyeTogWzkxLCA5NCwgMjQ0XSwgLy8gb2tcbiAgZGFuZ2VyOiBbMjQ1LCA2MSwgNjFdLCAvLyBva1xuICBsaWdodDogWzI0NCwgMjQ1LCAyNDhdLCAvLyBva1xuICBtZWRpdW06IFsxNTIsIDE1NCwgMTYyXSwgLy8gb2tcbiAgZGFyazogWzM0LCAzNiwgNDBdLCAvLyBva1xuICByZWQ6IFsyNTUsIDAsIDBdLFxuICBncmVlbjogWzAsIDI1NSwgMF0sXG4gIGJsdWU6IFswLCAwLCAyNTVdXG59O1xuXG4vLyBGaWxsIGEgbWFwIG9mIENvbG9yIG9iamVjdHNcbmNvbnN0IGNvbG9yc01hcDogeyBba2V5OiBzdHJpbmddOiBDb2xvciB9ID0ge307XG5cblxuLyoqXG4gKiBVc2VmdWwgY2xhc3MgZm9yIGNvbG9yIGNvbnZlcnNpb25cbiAqL1xuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBDb2xvciB7XG5cbiAgLy8gSGVscGVyIG1ldGhvZCwgdG8gcmV0cmlldmUgYSBjb2xvclxuICBzdGF0aWMgZ2V0KG5hbWU6IENvbG9yTmFtZSk6IENvbG9yIHtcbiAgICByZXR1cm4gY29sb3JzTWFwW25hbWVdIGFzIENvbG9yO1xuICB9XG5cbiAgc3RhdGljIHBhcnNlUmdiYShyZ2JhOiBzdHJpbmcpOiBDb2xvcnxudWxse1xuICAgICAgaWYgKCFyZ2JhIHx8ICghcmdiYS5zdGFydHNXaXRoKCdyZ2IoJykgJiYgIXJnYmEuc3RhcnRzV2l0aCgncmdiYSgnKSkpIHJldHVybiBudWxsO1xuXG4gICAgICAvLyBQYXJzZSBwYXJ0c1xuICAgICAgY29uc3QgcGFydHMgPSByZ2JhXG4gICAgICAgIC5yZXBsYWNlKCdyZ2IoJywgJycpXG4gICAgICAgIC5yZXBsYWNlKCdyZ2JhKCcsICcnKVxuICAgICAgICAucmVwbGFjZSgnKScsICcnKVxuICAgICAgICAuc3BsaXQoJywnKTtcblxuICAgICAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMyAmJiBwYXJ0cy5sZW5ndGggIT09IDQpIHJldHVybiBudWxsO1xuXG4gICAgICByZXR1cm4gbmV3IENvbG9yKFsrcGFydHNbMF0sICtwYXJ0c1sxXSwgK3BhcnRzWzJdXSxcbiAgICAgICAgcGFydHMubGVuZ3RoID09PSA0ICYmICtwYXJ0c1szXSB8fCAxLFxuICAgICAgICAnY3VzdG9tJyk7XG4gIH1cblxuICBzdGF0aWMgdHJhbnNwYXJlbnQgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IENvbG9yKFswLDAsMF0sIDAsICd0cmFuc2x1Y2VudCcpO1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3JnYkFycmF5OiBudW1iZXJbXSxcbiAgICBwcml2YXRlIF9vcGFjaXR5PzogbnVtYmVyLFxuICAgIHByaXZhdGUgX25hbWU6IHN0cmluZyA9ICdjdXN0b20nXG4gICkge1xuICB9XG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gIH1cbiAgZ2V0IG9wYWNpdHkoKTogbnVtYmVye1xuICAgIHJldHVybiBpc05vdE5pbCh0aGlzLl9vcGFjaXR5KSA/IHRoaXMuX29wYWNpdHkgOiAxO1xuICB9XG4gIGdldCByZ2IoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLl9yZ2JBcnJheTtcbiAgfVxuXG4gIGdldCByKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3JnYkFycmF5WzBdO1xuICB9XG5cbiAgZ2V0IGcoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcmdiQXJyYXlbMV07XG4gIH1cblxuICBnZXQgYigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9yZ2JBcnJheVsyXTtcbiAgfVxuXG4gIHJnYmEob3BhY2l0eT86IG51bWJlcik6IHN0cmluZyB7XG4gICAgb3BhY2l0eSA9IGlzTm90TmlsKG9wYWNpdHkpID8gb3BhY2l0eSA6IHRoaXMuX29wYWNpdHk7XG4gICAgaWYgKGlzTmlsKG9wYWNpdHkpIHx8IG9wYWNpdHkgPCAwIHx8IG9wYWNpdHkgPiAxKSB7XG4gICAgICByZXR1cm4gJ3JnYignICsgdGhpcy5fcmdiQXJyYXkuam9pbignLCcpICsgJyknO1xuICAgIH1cbiAgICByZXR1cm4gJ3JnYmEoJyArIHRoaXMuX3JnYkFycmF5LmpvaW4oJywnKSArICcsJyArIG9wYWNpdHkgKyAnKSc7XG4gIH1cblxufVxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQ29sb3JHcmFkaWVudE9wdGlvbnMge1xuICBvcGFjaXR5PzogbnVtYmVyO1xuICBzdGFydENvbG9yPzogbnVtYmVyW107XG4gIG1haW5Db2xvcj86IG51bWJlcltdO1xuICBtYWluQ29sb3JJbmRleD86IG51bWJlcjtcbiAgZW5kQ29sb3I/OiBudW1iZXJbXTtcbiAgZm9ybWF0PzogJ3JnYid8J2hleCd8J2FycmF5Jztcbn1cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIENvbG9yU2NhbGVPcHRpb25zIGV4dGVuZHMgQ29sb3JHcmFkaWVudE9wdGlvbnN7XG4gIG1pbj86IG51bWJlcjtcbiAgbWF4PzogbnVtYmVyO1xuICB1cHBlck1heD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBDb2xvclNjYWxlTGVnZW5kSXRlbSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGNvbG9yOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBDb2xvclNjYWxlTGVnZW5kIHtcbiAgaXRlbXM6IENvbG9yU2NhbGVMZWdlbmRJdGVtW107XG59XG5cbi8qKlxuICogSGVscGVyIGNsYXNzIGZvciBjb2xvcnMgc2NhbGVcbiAqL1xuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBDb2xvclNjYWxlIHtcblxuICBzdGF0aWMgY3VzdG9tID0gKGNvdW50OiBudW1iZXIsIG9wdGlvbnM/OiBDb2xvclNjYWxlT3B0aW9ucykgPT4ge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgIHJldHVybiBuZXcgQ29sb3JTY2FsZShcbiAgICAgIGxpbmVhckNvbG9yR3JhZGllbnRXaXRoSW50ZXJtZWRpYXRlKGNvdW50LCB7XG4gICAgICAgIG9wYWNpdHk6IG9wdGlvbnMub3BhY2l0eSxcbiAgICAgICAgc3RhcnRDb2xvcjogb3B0aW9ucy5zdGFydENvbG9yIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgbWFpbkNvbG9yOiBvcHRpb25zLm1haW5Db2xvciB8fCB1bmRlZmluZWQsXG4gICAgICAgIG1haW5Db2xvckluZGV4OiBpc05vdE5pbChvcHRpb25zLm1haW5Db2xvckluZGV4KSA/IG9wdGlvbnMubWFpbkNvbG9ySW5kZXggOiB1bmRlZmluZWQsXG4gICAgICAgIGVuZENvbG9yOiBvcHRpb25zLmVuZENvbG9yIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgZm9ybWF0OiBvcHRpb25zLmZvcm1hdFxuICAgICAgfSkgYXMgc3RyaW5nW10sXG4gICAgICBvcHRpb25zXG4gICAgKTtcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdCgpIHtcbiAgICByZXR1cm4gQ29sb3JTY2FsZS5jdXN0b20oMjUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGFycmF5IHdpdGggdGhlIGdpdmVuIGNvbG9yXG4gICAqKi9cbiAgc3RhdGljIGZpeChsZW5ndGg/OiBudW1iZXIsIGNvbG9yTmFtZT86IENvbG9yTmFtZSk6IGFueVtdIHtcbiAgICByZXR1cm4gQXJyYXkuYXBwbHkobnVsbCwgQXJyYXkobGVuZ3RoIHx8IDI1KSlcbiAgICAgIC5tYXAoU3RyaW5nLnByb3RvdHlwZS52YWx1ZU9mLCBDb2xvci5nZXQoY29sb3JOYW1lIHx8ICdwcmltYXJ5JykucmdiYSgwLjUpKTtcbiAgfVxuXG4gIHByaXZhdGUgX21pbjogbnVtYmVyO1xuICBwcml2YXRlIF9tYXg6IG51bWJlcjtcbiAgcHJpdmF0ZSBfcmFuZ2VTaXplOiBudW1iZXI7XG4gIHByaXZhdGUgX2xlZ2VuZEl0ZW1zOiBDb2xvclNjYWxlTGVnZW5kSXRlbVtdO1xuXG4gIGdldCBtaW4oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWluO1xuICB9XG4gIGdldCBtYXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4O1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb2xvckFycmF5OiBzdHJpbmdbXSwgb3B0aW9ucz86IENvbG9yU2NhbGVPcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgLy8gcmVzZXJ2ZWQgbGFzdCBjb2xvcnMgZm9yIHZhbHVlID4gbWF4XG4gICAgY29uc3QgbmJJbnRlcnZhbEJlZm9yZVVwcGVyID0gIW9wdGlvbnMudXBwZXJNYXggPyBjb2xvckFycmF5Lmxlbmd0aCA6IChjb2xvckFycmF5Lmxlbmd0aCAtIDEpO1xuICAgIHRoaXMuX21pbiA9IG9wdGlvbnMubWluIHx8IDA7XG4gICAgdGhpcy5fbWF4ID0gb3B0aW9ucy5tYXggfHwgbmJJbnRlcnZhbEJlZm9yZVVwcGVyO1xuICAgIHRoaXMuX3JhbmdlU2l6ZSA9IE1hdGgucm91bmQoKHRoaXMuX21heCAtIHRoaXMuX21pbikgLyBuYkludGVydmFsQmVmb3JlVXBwZXIpO1xuICAgIHRoaXMuX2xlZ2VuZEl0ZW1zID0gdGhpcy5jb21wdXRlTGVnZW5kKCk7XG4gIH1cblxuICBnZXQgbGVnZW5kKCk6IENvbG9yU2NhbGVMZWdlbmQge1xuICAgIHJldHVybiB7XG4gICAgICBpdGVtczogdGhpcy5fbGVnZW5kSXRlbXNcbiAgICB9O1xuICB9XG5cbiAgZ2V0VmFsdWVDb2xvcih2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBpbmRleCA9IE1hdGguZmxvb3IodmFsdWUgKiAodGhpcy5jb2xvckFycmF5Lmxlbmd0aCAtIDEpIC8gdGhpcy5fbWF4KTtcbiAgICByZXR1cm4gdGhpcy5jb2xvckFycmF5W2luZGV4XTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb21wdXRlTGVnZW5kKCk6IENvbG9yU2NhbGVMZWdlbmRJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLmNvbG9yQXJyYXkubWFwKChjb2xvciwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXggKiB0aGlzLl9yYW5nZVNpemU7XG4gICAgICBjb25zdCBlbmQgPSBzdGFydCArIHRoaXMuX3JhbmdlU2l6ZTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbG9yLFxuICAgICAgICBsYWJlbDogKGVuZCA8IHRoaXMuX21heCkgPyBgJHtzdGFydC50b0xvY2FsZVN0cmluZygpfSAtICR7ZW5kLnRvTG9jYWxlU3RyaW5nKCl9YCA6IGAgPj0gJHtzdGFydH1gXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG59XG5cblxuLy8gRmlsbCBjb2xvcnNNYXBcbk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHJnYkFycmF5TWFwKVxuICAuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgY29sb3JzTWFwW2tleV0gPSBuZXcgQ29sb3IocmdiQXJyYXlNYXBba2V5XSwgMSwga2V5KTtcbiAgfSk7XG5cbi8vIEludGVybmFsIGZ1bmN0aW9uXG5mdW5jdGlvbiBzdGF0ZTJzaWRlKHN0YXRlKSB7XG4gIHN3aXRjaCAoc3RhdGUpIHtcbiAgICBjYXNlIDA6XG4gICAgICByZXR1cm4gMDtcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gLTE7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIDA7XG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIDE7XG4gIH1cbn1cblxuXG5jb25zdCBTQ0FMRV9PUFRJT05TX0RFRkFVTFQgPSB7XG4gIHN0YXJ0Q29sb3I6IHJnYkFycmF5TWFwLnJlZCxcbiAgc3RhcnRTdGF0ZXM6IFswLCAyLCAzXSwgLy8gUj1rZWVwLCBWPWtlZXAsIEI9aW5jcmVhc2VcbiAgc3RhcnRTdGVwc0ZuOiAoZGVmYXVsdFN0YXRlU2l6ZTogbnVtYmVyKSA9PiBbXG4gICAgICBNYXRoLnJvdW5kKChyZ2JBcnJheU1hcC5yZWRbMF0gLSA1MCkgLyBkZWZhdWx0U3RhdGVTaXplKSxcbiAgICAgIE1hdGgucm91bmQoKDI1NSAtIHJnYkFycmF5TWFwLnJlZFsxXSkgLyBkZWZhdWx0U3RhdGVTaXplKSxcbiAgICAgIE1hdGgucm91bmQoKDI1NSAtIHJnYkFycmF5TWFwLnJlZFsyXSkgLyBkZWZhdWx0U3RhdGVTaXplKVxuICAgIF1cbn07XG5cbi8qKlxuICogSW50ZXJuYWwgZnVuY3Rpb24sIHRoYXQgY3JlYXRlIGEgY29sb3JzIHNjYWxlLCB1c2luZyBpdGVyYXRpb25cbiAqXG4gKiBAcGFyYW0gY291bnRcbiAqIEBwYXJhbSBvcGFjaXR5XG4gKiBAcGFyYW0gc3RhcnRDb2xvclxuICogQHBhcmFtIHN0YXJ0U3RhdGVcbiAqIEByZXR1cm5zXG4gKi9cbmZ1bmN0aW9uIGxpbmVhckNvbG9yR3JhZGllbnRXaXRoSW50ZXJtZWRpYXRlKGNvdW50OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPzogQ29sb3JHcmFkaWVudE9wdGlvbnMpOiBhbnlbXSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIC8vIEZyb20gWzAsMV1cbiAgb3B0aW9ucy5vcGFjaXR5ID0gKG9wdGlvbnMub3BhY2l0eSA+IDAgJiYgb3B0aW9ucy5vcGFjaXR5IDwgMSkgPyBvcHRpb25zLm9wYWNpdHkgOiAxO1xuICBvcHRpb25zLnN0YXJ0Q29sb3IgPSBvcHRpb25zLnN0YXJ0Q29sb3IgfHwgWzI1NSwgMjU1LCAxOTBdOyAvLyBkZWZhdWx0IHN0YXJ0ID0gY3JlbWVcbiAgb3B0aW9ucy5tYWluQ29sb3JJbmRleCA9IG9wdGlvbnMubWFpbkNvbG9ySW5kZXggJiYgb3B0aW9ucy5tYWluQ29sb3JJbmRleCA8IGNvdW50IC0gMSA/IG9wdGlvbnMubWFpbkNvbG9ySW5kZXggOiBjb3VudCAtIDE7XG4gIG9wdGlvbnMuZW5kQ29sb3IgPSBvcHRpb25zLmVuZENvbG9yIHx8IFsyNTUsIDAsIDBdOyAvLyBkZWZhdWx0IG1haW4gPSByZWRcbiAgb3B0aW9ucy5mb3JtYXQgPSBvcHRpb25zLmZvcm1hdCB8fCAncmdiJztcblxuICBpZiAoIW9wdGlvbnMubWFpbkNvbG9yKSB7XG4gICAgcmV0dXJuIGxpbmVhckNvbG9yR3JhZGllbnQoY291bnQsIHtcbiAgICAgIG9wYWNpdHk6IG9wdGlvbnMub3BhY2l0eSxcbiAgICAgIHN0YXJ0Q29sb3I6IG9wdGlvbnMuc3RhcnRDb2xvcixcbiAgICAgIGVuZENvbG9yOiBvcHRpb25zLmVuZENvbG9yLFxuICAgICAgZm9ybWF0OiBvcHRpb25zLmZvcm1hdFxuICAgIH0pO1xuICB9XG5cbiAgZWxzZSB7XG4gICAgLy8gU3RlcCAxOiBzdGFydENvbG9yIC0+IG1haW5Db2xvclxuICAgIGNvbnN0IHJlc3VsdCA9IGxpbmVhckNvbG9yR3JhZGllbnQob3B0aW9ucy5tYWluQ29sb3JJbmRleCArIDEsIHtcbiAgICAgIG9wYWNpdHk6IG9wdGlvbnMub3BhY2l0eSxcbiAgICAgIHN0YXJ0Q29sb3I6IG9wdGlvbnMuc3RhcnRDb2xvcixcbiAgICAgIGVuZENvbG9yOiBvcHRpb25zLm1haW5Db2xvcixcbiAgICAgIGZvcm1hdDogb3B0aW9ucy5mb3JtYXRcbiAgICB9KTtcblxuICAgIC8vIFN0ZXAgMjogbWFpbkNvbG9yIC0+IGVuZENvbG9yXG4gICAgaWYgKG9wdGlvbnMubWFpbkNvbG9ySW5kZXggPCBjb3VudCAtIDEpIHtcbiAgICAgIHJldHVybiByZXN1bHQuY29uY2F0KFxuICAgICAgICBsaW5lYXJDb2xvckdyYWRpZW50KGNvdW50IC0gb3B0aW9ucy5tYWluQ29sb3JJbmRleCwge1xuICAgICAgICAgIG9wYWNpdHk6IG9wdGlvbnMub3BhY2l0eSxcbiAgICAgICAgICBzdGFydENvbG9yOiBvcHRpb25zLm1haW5Db2xvcixcbiAgICAgICAgICBlbmRDb2xvcjogb3B0aW9ucy5lbmRDb2xvcixcbiAgICAgICAgICBmb3JtYXQ6IG9wdGlvbnMuZm9ybWF0XG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBsaW5lYXJDb2xvckdyYWRpZW50KGNvdW50OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM/OiBDb2xvckdyYWRpZW50T3B0aW9ucyk6IGFueVtdIHtcblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAvLyBGcm9tIFswLDFdXG4gIG9wdGlvbnMub3BhY2l0eSA9IChvcHRpb25zLm9wYWNpdHkgPiAwICYmIG9wdGlvbnMub3BhY2l0eSA8IDEpID8gb3B0aW9ucy5vcGFjaXR5IDogMTtcbiAgb3B0aW9ucy5zdGFydENvbG9yID0gb3B0aW9ucy5zdGFydENvbG9yIHx8IFsyNTUsIDI1NSwgMjU1XTsgLy8gZGVmYXVsdCBzdGFydCA9IHdoaXRlXG4gIG9wdGlvbnMuZW5kQ29sb3IgPSBvcHRpb25zLmVuZENvbG9yIHx8IFsyNTUsIDAsIDBdOyAvLyBkZWZhdWx0IGVuZCA9IHJlZFxuICBvcHRpb25zLmZvcm1hdCA9IG9wdGlvbnMuZm9ybWF0IHx8ICdyZ2InO1xuXG4gIGNvbnN0IHJlc3VsdDogbnVtYmVyW11bXSA9IFtdO1xuICBjb25zdCBjb2xvciA9IG9wdGlvbnMuc3RhcnRDb2xvci5zbGljZSgpOyAvLyBjb3B5IHRoZSBzdGFydCBjb2xvclxuICBjb25zdCBkZWx0YSA9IFtcbiAgICBNYXRoLnJvdW5kKChvcHRpb25zLmVuZENvbG9yWzBdIC0gb3B0aW9ucy5zdGFydENvbG9yWzBdKSAvIGNvdW50KSxcbiAgICBNYXRoLnJvdW5kKChvcHRpb25zLmVuZENvbG9yWzFdIC0gb3B0aW9ucy5zdGFydENvbG9yWzFdKSAvIGNvdW50KSxcbiAgICBNYXRoLnJvdW5kKChvcHRpb25zLmVuZENvbG9yWzJdIC0gb3B0aW9ucy5zdGFydENvbG9yWzJdKSAvIGNvdW50KVxuICBdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQgLSAxOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IDM7IGorKykge1xuICAgICAgY29sb3Jbal0gKz0gZGVsdGFbal07XG4gICAgfVxuICAgIHJlc3VsdC5wdXNoKGNvbG9yLnNsaWNlKCkpO1xuICB9XG5cbiAgLy8gRm9yY2UgbGFzdCBjb2xvciA9IGVuZCBjb2xvclxuICByZXN1bHQucHVzaChvcHRpb25zLmVuZENvbG9yLnNsaWNlKCkpO1xuXG4gIC8vIE91dHB1dCBhcyBhcnJheVxuICBpZiAob3B0aW9ucy5mb3JtYXQgPT09ICdhcnJheScpIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gT3V0cHV0IGFzIHJnYihyLGcsYikgc3RyaW5nXG4gIGlmIChvcHRpb25zLmZvcm1hdCA9PT0gJ3JnYicpIHtcbiAgICBpZiAob3B0aW9ucy5vcGFjaXR5ID49IDEpIHtcbiAgICAgIHJldHVybiByZXN1bHQubWFwKGNvbG9yID0+ICdyZ2IoJyArIGNvbG9yLmpvaW4oJywnKSArICcpJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByZXN1bHQubWFwKGNvbG9yID0+ICdyZ2JhKCcgKyBjb2xvci5jb25jYXQob3B0aW9ucy5vcGFjaXR5KS5qb2luKCcsJykgKyAnKScpO1xuICAgIH1cbiAgfVxuXG4gIC8vIE91dHB1dCBhcyBoZXhcbiAgLy8gVE9ET1xuICAvLyByZXR1cm4gcmVzdWx0Lm1hcChjb2xvciA9PiB7XG4gIC8vICAgcmV0dXJuIFwicmdiKFwiICsgY29sb3Iuam9pbignLCcpICsgXCIpXCI7XG4gIC8vIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuIl19
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGgtY29sb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZ3JhcGgvZ3JhcGgtY29sb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBUzdDOztHQUVHO0FBQ0gsTUFBTSxXQUFXLEdBQUc7SUFDbEIsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDdEIsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDdEIsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDMUIsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDdkIsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDckIsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDdEIsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDdkIsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEIsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDbEIsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7Q0FDbEIsQ0FBQztBQUVGLDhCQUE4QjtBQUM5QixNQUFNLFNBQVMsR0FBNkIsRUFBRSxDQUFDO0FBRy9DOztHQUVHO0FBQ0gsV0FBVztBQUNYLE1BQU0sT0FBTyxLQUFLO0lBaUNoQixZQUNVLFNB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RyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1NBQzVEO2FBQU07WUFDTCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1NBQ3JGO0tBQ0Y7SUFFRCxnQkFBZ0I7SUFDaEIsT0FBTztJQUNQLCtCQUErQjtJQUMvQiwyQ0FBMkM7SUFDM0MsTUFBTTtJQUNOLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1ByZWRlZmluZWRDb2xvcnN9IGZyb20gJ0Bpb25pYy9jb3JlJztcbmltcG9ydCB7aXNOaWwsIGlzTm90TmlsfSBmcm9tICcuLi9mdW5jdGlvbnMnO1xuXG5leHBvcnQgZGVjbGFyZSB0eXBlIENvbG9yTmFtZSA9IFByZWRlZmluZWRDb2xvcnMgfFxuICAnd2hpdGUnXG4gIHwgJ3JlZCdcbiAgfCAnZ3JlZW4nXG4gIHwgJ2JsdWUnO1xuXG5cbi8qKlxuICogRGVmaW5lIGhlcmUgdGhlbWUgY29sb3JzXG4gKi9cbmNvbnN0IHJnYkFycmF5TWFwID0ge1xuICB3aGl0ZTogWzI1NSwgMjU1LCAyNTVdLFxuICBwcmltYXJ5OiBbMjAsIDY3LCAxNDVdLCAvLyBva1xuICBzZWNvbmRhcnk6IFsxMTcsIDE5NiwgMjUzXSwgLy8gb2tcbiAgdGVydGlhcnk6IFs5MSwgOTQsIDI0NF0sIC8vIG9rXG4gIGRhbmdlcjogWzI0NSwgNjEsIDYxXSwgLy8gb2tcbiAgbGlnaHQ6IFsyNDQsIDI0NSwgMjQ4XSwgLy8gb2tcbiAgbWVkaXVtOiBbMTUyLCAxNTQsIDE2Ml0sIC8vIG9rXG4gIGRhcms6IFszNCwgMzYsIDQwXSwgLy8gb2tcbiAgcmVkOiBbMjU1LCAwLCAwXSxcbiAgZ3JlZW46IFswLCAyNTUsIDBdLFxuICBibHVlOiBbMCwgMCwgMjU1XVxufTtcblxuLy8gRmlsbCBhIG1hcCBvZiBDb2xvciBvYmplY3RzXG5jb25zdCBjb2xvcnNNYXA6IHsgW2tleTogc3RyaW5nXTogQ29sb3IgfSA9IHt9O1xuXG5cbi8qKlxuICogVXNlZnVsIGNsYXNzIGZvciBjb2xvciBjb252ZXJzaW9uXG4gKi9cbi8vIEBkeW5hbWljXG5leHBvcnQgY2xhc3MgQ29sb3Ige1xuXG4gIC8vIEhlbHBlciBtZXRob2QsIHRvIHJldHJpZXZlIGEgY29sb3JcbiAgc3RhdGljIGdldChuYW1lOiBDb2xvck5hbWUpOiBDb2xvciB7XG4gICAgcmV0dXJuIGNvbG9yc01hcFtuYW1lXSBhcyBDb2xvcjtcbiAgfVxuXG4gIHN0YXRpYyBwYXJzZVJnYmEocmdiYTogc3RyaW5nKTogQ29sb3J8bnVsbHtcbiAgICAgIGlmICghcmdiYSB8fCAoIXJnYmEuc3RhcnRzV2l0aCgncmdiKCcpICYmICFyZ2JhLnN0YXJ0c1dpdGgoJ3JnYmEoJykpKSByZXR1cm4gbnVsbDtcblxuICAgICAgLy8gUGFyc2UgcGFydHNcbiAgICAgIGNvbnN0IHBhcnRzID0gcmdiYVxuICAgICAgICAucmVwbGFjZSgncmdiKCcsICcnKVxuICAgICAgICAucmVwbGFjZSgncmdiYSgnLCAnJylcbiAgICAgICAgLnJlcGxhY2UoJyknLCAnJylcbiAgICAgICAgLnNwbGl0KCcsJyk7XG5cbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggIT09IDMgJiYgcGFydHMubGVuZ3RoICE9PSA0KSByZXR1cm4gbnVsbDtcblxuICAgICAgcmV0dXJuIG5ldyBDb2xvcihbK3BhcnRzWzBdLCArcGFydHNbMV0sICtwYXJ0c1syXV0sXG4gICAgICAgIHBhcnRzLmxlbmd0aCA9PT0gNCAmJiArcGFydHNbM10gfHwgMSxcbiAgICAgICAgJ2N1c3RvbScpO1xuICB9XG5cbiAgc3RhdGljIHBhcnNlSGV4YShoZXhDb2xvcjogc3RyaW5nKTogQ29sb3Ige1xuICAgIGNvbnN0IHNwbGl0ID0gL14jPyhbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KSQvaS5leGVjKGhleENvbG9yKTtcbiAgICByZXR1cm4gbmV3IENvbG9yKHNwbGl0ID8gc3BsaXQuc2xpY2UoMSwgNCkubWFwKGkgPT4gcGFyc2VJbnQoaSwgMTYpKSA6IFswLCAwLCAwXSk7XG4gIH1cblxuICBzdGF0aWMgdHJhbnNwYXJlbnQgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IENvbG9yKFswLDAsMF0sIDAsICd0cmFuc2x1Y2VudCcpO1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3JnYkFycmF5OiBudW1iZXJbXSxcbiAgICBwcml2YXRlIF9vcGFjaXR5PzogbnVtYmVyLFxuICAgIHByaXZhdGUgX25hbWU6IHN0cmluZyA9ICdjdXN0b20nXG4gICkge1xuICB9XG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gIH1cbiAgZ2V0IG9wYWNpdHkoKTogbnVtYmVye1xuICAgIHJldHVybiBpc05vdE5pbCh0aGlzLl9vcGFjaXR5KSA/IHRoaXMuX29wYWNpdHkgOiAxO1xuICB9XG4gIGdldCByZ2IoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLl9yZ2JBcnJheTtcbiAgfVxuXG4gIGdldCByKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3JnYkFycmF5WzBdO1xuICB9XG5cbiAgZ2V0IGcoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcmdiQXJyYXlbMV07XG4gIH1cblxuICBnZXQgYigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9yZ2JBcnJheVsyXTtcbiAgfVxuXG4gIHJnYmEob3BhY2l0eT86IG51bWJlcik6IHN0cmluZyB7XG4gICAgb3BhY2l0eSA9IGlzTm90TmlsKG9wYWNpdHkpID8gb3BhY2l0eSA6IHRoaXMuX29wYWNpdHk7XG4gICAgaWYgKGlzTmlsKG9wYWNpdHkpIHx8IG9wYWNpdHkgPCAwIHx8IG9wYWNpdHkgPiAxKSB7XG4gICAgICByZXR1cm4gJ3JnYignICsgdGhpcy5fcmdiQXJyYXkuam9pbignLCcpICsgJyknO1xuICAgIH1cbiAgICByZXR1cm4gJ3JnYmEoJyArIHRoaXMuX3JnYkFycmF5LmpvaW4oJywnKSArICcsJyArIG9wYWNpdHkgKyAnKSc7XG4gIH1cblxufVxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQ29sb3JHcmFkaWVudE9wdGlvbnMge1xuICBvcGFjaXR5PzogbnVtYmVyO1xuICBzdGFydENvbG9yPzogbnVtYmVyW107XG4gIG1haW5Db2xvcj86IG51bWJlcltdO1xuICBtYWluQ29sb3JJbmRleD86IG51bWJlcjtcbiAgZW5kQ29sb3I/OiBudW1iZXJbXTtcbiAgZm9ybWF0PzogJ3JnYid8J2hleCd8J2FycmF5Jztcbn1cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIENvbG9yU2NhbGVPcHRpb25zIGV4dGVuZHMgQ29sb3JHcmFkaWVudE9wdGlvbnN7XG4gIG1pbj86IG51bWJlcjtcbiAgbWF4PzogbnVtYmVyO1xuICB1cHBlck1heD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBDb2xvclNjYWxlTGVnZW5kSXRlbSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGNvbG9yOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBDb2xvclNjYWxlTGVnZW5kIHtcbiAgaXRlbXM6IENvbG9yU2NhbGVMZWdlbmRJdGVtW107XG59XG5cbi8qKlxuICogSGVscGVyIGNsYXNzIGZvciBjb2xvcnMgc2NhbGVcbiAqL1xuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBDb2xvclNjYWxlIHtcblxuICBzdGF0aWMgY3VzdG9tID0gKGNvdW50OiBudW1iZXIsIG9wdGlvbnM/OiBDb2xvclNjYWxlT3B0aW9ucykgPT4ge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgIHJldHVybiBuZXcgQ29sb3JTY2FsZShcbiAgICAgIGxpbmVhckNvbG9yR3JhZGllbnRXaXRoSW50ZXJtZWRpYXRlKGNvdW50LCB7XG4gICAgICAgIG9wYWNpdHk6IG9wdGlvbnMub3BhY2l0eSxcbiAgICAgICAgc3RhcnRDb2xvcjogb3B0aW9ucy5zdGFydENvbG9yIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgbWFpbkNvbG9yOiBvcHRpb25zLm1haW5Db2xvciB8fCB1bmRlZmluZWQsXG4gICAgICAgIG1haW5Db2xvckluZGV4OiBpc05vdE5pbChvcHRpb25zLm1haW5Db2xvckluZGV4KSA/IG9wdGlvbnMubWFpbkNvbG9ySW5kZXggOiB1bmRlZmluZWQsXG4gICAgICAgIGVuZENvbG9yOiBvcHRpb25zLmVuZENvbG9yIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgZm9ybWF0OiBvcHRpb25zLmZvcm1hdFxuICAgICAgfSkgYXMgc3RyaW5nW10sXG4gICAgICBvcHRpb25zXG4gICAgKTtcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdCgpIHtcbiAgICByZXR1cm4gQ29sb3JTY2FsZS5jdXN0b20oMjUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGFycmF5IHdpdGggdGhlIGdpdmVuIGNvbG9yXG4gICAqKi9cbiAgc3RhdGljIGZpeChsZW5ndGg/OiBudW1iZXIsIGNvbG9yTmFtZT86IENvbG9yTmFtZSk6IGFueVtdIHtcbiAgICByZXR1cm4gQXJyYXkuYXBwbHkobnVsbCwgQXJyYXkobGVuZ3RoIHx8IDI1KSlcbiAgICAgIC5tYXAoU3RyaW5nLnByb3RvdHlwZS52YWx1ZU9mLCBDb2xvci5nZXQoY29sb3JOYW1lIHx8ICdwcmltYXJ5JykucmdiYSgwLjUpKTtcbiAgfVxuXG4gIHByaXZhdGUgX21pbjogbnVtYmVyO1xuICBwcml2YXRlIF9tYXg6IG51bWJlcjtcbiAgcHJpdmF0ZSBfcmFuZ2VTaXplOiBudW1iZXI7XG4gIHByaXZhdGUgX2xlZ2VuZEl0ZW1zOiBDb2xvclNjYWxlTGVnZW5kSXRlbVtdO1xuXG4gIGdldCBtaW4oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWluO1xuICB9XG4gIGdldCBtYXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4O1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb2xvckFycmF5OiBzdHJpbmdbXSwgb3B0aW9ucz86IENvbG9yU2NhbGVPcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgLy8gcmVzZXJ2ZWQgbGFzdCBjb2xvcnMgZm9yIHZhbHVlID4gbWF4XG4gICAgY29uc3QgbmJJbnRlcnZhbEJlZm9yZVVwcGVyID0gIW9wdGlvbnMudXBwZXJNYXggPyBjb2xvckFycmF5Lmxlbmd0aCA6IChjb2xvckFycmF5Lmxlbmd0aCAtIDEpO1xuICAgIHRoaXMuX21pbiA9IG9wdGlvbnMubWluIHx8IDA7XG4gICAgdGhpcy5fbWF4ID0gb3B0aW9ucy5tYXggfHwgbmJJbnRlcnZhbEJlZm9yZVVwcGVyO1xuICAgIHRoaXMuX3JhbmdlU2l6ZSA9IE1hdGgucm91bmQoKHRoaXMuX21heCAtIHRoaXMuX21pbikgLyBuYkludGVydmFsQmVmb3JlVXBwZXIpO1xuICAgIHRoaXMuX2xlZ2VuZEl0ZW1zID0gdGhpcy5jb21wdXRlTGVnZW5kKCk7XG4gIH1cblxuICBnZXQgbGVnZW5kKCk6IENvbG9yU2NhbGVMZWdlbmQge1xuICAgIHJldHVybiB7XG4gICAgICBpdGVtczogdGhpcy5fbGVnZW5kSXRlbXNcbiAgICB9O1xuICB9XG5cbiAgZ2V0VmFsdWVDb2xvcih2YWx1ZTogbnVtYmVyKTogc3RyaW5nfG51bWJlcltdIHtcbiAgICBjb25zdCBpbmRleCA9IE1hdGguZmxvb3IodmFsdWUgKiAodGhpcy5jb2xvckFycmF5Lmxlbmd0aCAtIDEpIC8gdGhpcy5fbWF4KTtcbiAgICByZXR1cm4gdGhpcy5jb2xvckFycmF5W2luZGV4XTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb21wdXRlTGVnZW5kKCk6IENvbG9yU2NhbGVMZWdlbmRJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLmNvbG9yQXJyYXkubWFwKChjb2xvciwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXggKiB0aGlzLl9yYW5nZVNpemU7XG4gICAgICBjb25zdCBlbmQgPSBzdGFydCArIHRoaXMuX3JhbmdlU2l6ZTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbG9yLFxuICAgICAgICBsYWJlbDogKGVuZCA8IHRoaXMuX21heCkgPyBgJHtzdGFydC50b0xvY2FsZVN0cmluZygpfSAtICR7ZW5kLnRvTG9jYWxlU3RyaW5nKCl9YCA6IGAgPj0gJHtzdGFydH1gXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG59XG5cblxuLy8gRmlsbCBjb2xvcnNNYXBcbk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHJnYkFycmF5TWFwKVxuICAuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgY29sb3JzTWFwW2tleV0gPSBuZXcgQ29sb3IocmdiQXJyYXlNYXBba2V5XSwgMSwga2V5KTtcbiAgfSk7XG5cbi8vIEludGVybmFsIGZ1bmN0aW9uXG5mdW5jdGlvbiBzdGF0ZTJzaWRlKHN0YXRlKSB7XG4gIHN3aXRjaCAoc3RhdGUpIHtcbiAgICBjYXNlIDA6XG4gICAgICByZXR1cm4gMDtcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gLTE7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIDA7XG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIDE7XG4gIH1cbn1cblxuXG5jb25zdCBTQ0FMRV9PUFRJT05TX0RFRkFVTFQgPSB7XG4gIHN0YXJ0Q29sb3I6IHJnYkFycmF5TWFwLnJlZCxcbiAgc3RhcnRTdGF0ZXM6IFswLCAyLCAzXSwgLy8gUj1rZWVwLCBWPWtlZXAsIEI9aW5jcmVhc2VcbiAgc3RhcnRTdGVwc0ZuOiAoZGVmYXVsdFN0YXRlU2l6ZTogbnVtYmVyKSA9PiBbXG4gICAgICBNYXRoLnJvdW5kKChyZ2JBcnJheU1hcC5yZWRbMF0gLSA1MCkgLyBkZWZhdWx0U3RhdGVTaXplKSxcbiAgICAgIE1hdGgucm91bmQoKDI1NSAtIHJnYkFycmF5TWFwLnJlZFsxXSkgLyBkZWZhdWx0U3RhdGVTaXplKSxcbiAgICAgIE1hdGgucm91bmQoKDI1NSAtIHJnYkFycmF5TWFwLnJlZFsyXSkgLyBkZWZhdWx0U3RhdGVTaXplKVxuICAgIF1cbn07XG5cbi8qKlxuICogSW50ZXJuYWwgZnVuY3Rpb24sIHRoYXQgY3JlYXRlIGEgY29sb3JzIHNjYWxlLCB1c2luZyBpdGVyYXRpb25cbiAqXG4gKiBAcGFyYW0gY291bnRcbiAqIEBwYXJhbSBvcGFjaXR5XG4gKiBAcGFyYW0gc3RhcnRDb2xvclxuICogQHBhcmFtIHN0YXJ0U3RhdGVcbiAqIEByZXR1cm5zXG4gKi9cbmZ1bmN0aW9uIGxpbmVhckNvbG9yR3JhZGllbnRXaXRoSW50ZXJtZWRpYXRlKGNvdW50OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPzogQ29sb3JHcmFkaWVudE9wdGlvbnMpOiBhbnlbXSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIC8vIEZyb20gWzAsMV1cbiAgb3B0aW9ucy5vcGFjaXR5ID0gKG9wdGlvbnMub3BhY2l0eSA+IDAgJiYgb3B0aW9ucy5vcGFjaXR5IDwgMSkgPyBvcHRpb25zLm9wYWNpdHkgOiAxO1xuICBvcHRpb25zLnN0YXJ0Q29sb3IgPSBvcHRpb25zLnN0YXJ0Q29sb3IgfHwgWzI1NSwgMjU1LCAxOTBdOyAvLyBkZWZhdWx0IHN0YXJ0ID0gY3JlbWVcbiAgb3B0aW9ucy5tYWluQ29sb3JJbmRleCA9IG9wdGlvbnMubWFpbkNvbG9ySW5kZXggJiYgb3B0aW9ucy5tYWluQ29sb3JJbmRleCA8IGNvdW50IC0gMSA/IG9wdGlvbnMubWFpbkNvbG9ySW5kZXggOiBjb3VudCAtIDE7XG4gIG9wdGlvbnMuZW5kQ29sb3IgPSBvcHRpb25zLmVuZENvbG9yIHx8IFsyNTUsIDAsIDBdOyAvLyBkZWZhdWx0IG1haW4gPSByZWRcbiAgb3B0aW9ucy5mb3JtYXQgPSBvcHRpb25zLmZvcm1hdCB8fCAncmdiJztcblxuICBpZiAoIW9wdGlvbnMubWFpbkNvbG9yKSB7XG4gICAgcmV0dXJuIGxpbmVhckNvbG9yR3JhZGllbnQoY291bnQsIHtcbiAgICAgIG9wYWNpdHk6IG9wdGlvbnMub3BhY2l0eSxcbiAgICAgIHN0YXJ0Q29sb3I6IG9wdGlvbnMuc3RhcnRDb2xvcixcbiAgICAgIGVuZENvbG9yOiBvcHRpb25zLmVuZENvbG9yLFxuICAgICAgZm9ybWF0OiBvcHRpb25zLmZvcm1hdFxuICAgIH0pO1xuICB9XG5cbiAgZWxzZSB7XG4gICAgLy8gU3RlcCAxOiBzdGFydENvbG9yIC0+IG1haW5Db2xvclxuICAgIGNvbnN0IHJlc3VsdCA9IGxpbmVhckNvbG9yR3JhZGllbnQob3B0aW9ucy5tYWluQ29sb3JJbmRleCArIDEsIHtcbiAgICAgIG9wYWNpdHk6IG9wdGlvbnMub3BhY2l0eSxcbiAgICAgIHN0YXJ0Q29sb3I6IG9wdGlvbnMuc3RhcnRDb2xvcixcbiAgICAgIGVuZENvbG9yOiBvcHRpb25zLm1haW5Db2xvcixcbiAgICAgIGZvcm1hdDogb3B0aW9ucy5mb3JtYXRcbiAgICB9KTtcblxuICAgIC8vIFN0ZXAgMjogbWFpbkNvbG9yIC0+IGVuZENvbG9yXG4gICAgaWYgKG9wdGlvbnMubWFpbkNvbG9ySW5kZXggPCBjb3VudCAtIDEpIHtcbiAgICAgIHJldHVybiByZXN1bHQuY29uY2F0KFxuICAgICAgICBsaW5lYXJDb2xvckdyYWRpZW50KGNvdW50IC0gb3B0aW9ucy5tYWluQ29sb3JJbmRleCwge1xuICAgICAgICAgIG9wYWNpdHk6IG9wdGlvbnMub3BhY2l0eSxcbiAgICAgICAgICBzdGFydENvbG9yOiBvcHRpb25zLm1haW5Db2xvcixcbiAgICAgICAgICBlbmRDb2xvcjogb3B0aW9ucy5lbmRDb2xvcixcbiAgICAgICAgICBmb3JtYXQ6IG9wdGlvbnMuZm9ybWF0XG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBsaW5lYXJDb2xvckdyYWRpZW50KGNvdW50OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM/OiBDb2xvckdyYWRpZW50T3B0aW9ucyk6IGFueVtdIHtcblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAvLyBGcm9tIFswLDFdXG4gIG9wdGlvbnMub3BhY2l0eSA9IChvcHRpb25zLm9wYWNpdHkgPiAwICYmIG9wdGlvbnMub3BhY2l0eSA8IDEpID8gb3B0aW9ucy5vcGFjaXR5IDogMTtcbiAgb3B0aW9ucy5zdGFydENvbG9yID0gb3B0aW9ucy5zdGFydENvbG9yIHx8IFsyNTUsIDI1NSwgMjU1XTsgLy8gZGVmYXVsdCBzdGFydCA9IHdoaXRlXG4gIG9wdGlvbnMuZW5kQ29sb3IgPSBvcHRpb25zLmVuZENvbG9yIHx8IFsyNTUsIDAsIDBdOyAvLyBkZWZhdWx0IGVuZCA9IHJlZFxuICBvcHRpb25zLmZvcm1hdCA9IG9wdGlvbnMuZm9ybWF0IHx8ICdyZ2InO1xuXG4gIGNvbnN0IHJlc3VsdDogbnVtYmVyW11bXSA9IFtdO1xuICBjb25zdCBjb2xvciA9IG9wdGlvbnMuc3RhcnRDb2xvci5zbGljZSgpOyAvLyBjb3B5IHRoZSBzdGFydCBjb2xvclxuICBjb25zdCBkZWx0YSA9IFtcbiAgICBNYXRoLnJvdW5kKChvcHRpb25zLmVuZENvbG9yWzBdIC0gb3B0aW9ucy5zdGFydENvbG9yWzBdKSAvIGNvdW50KSxcbiAgICBNYXRoLnJvdW5kKChvcHRpb25zLmVuZENvbG9yWzFdIC0gb3B0aW9ucy5zdGFydENvbG9yWzFdKSAvIGNvdW50KSxcbiAgICBNYXRoLnJvdW5kKChvcHRpb25zLmVuZENvbG9yWzJdIC0gb3B0aW9ucy5zdGFydENvbG9yWzJdKSAvIGNvdW50KVxuICBdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQgLSAxOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IDM7IGorKykge1xuICAgICAgY29sb3Jbal0gKz0gZGVsdGFbal07XG4gICAgfVxuICAgIHJlc3VsdC5wdXNoKGNvbG9yLnNsaWNlKCkpO1xuICB9XG5cbiAgLy8gRm9yY2UgbGFzdCBjb2xvciA9IGVuZCBjb2xvclxuICByZXN1bHQucHVzaChvcHRpb25zLmVuZENvbG9yLnNsaWNlKCkpO1xuXG4gIC8vIE91dHB1dCBhcyBhcnJheVxuICBpZiAob3B0aW9ucy5mb3JtYXQgPT09ICdhcnJheScpIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gT3V0cHV0IGFzIHJnYihyLGcsYikgc3RyaW5nXG4gIGlmIChvcHRpb25zLmZvcm1hdCA9PT0gJ3JnYicpIHtcbiAgICBpZiAob3B0aW9ucy5vcGFjaXR5ID49IDEpIHtcbiAgICAgIHJldHVybiByZXN1bHQubWFwKGNvbG9yID0+ICdyZ2IoJyArIGNvbG9yLmpvaW4oJywnKSArICcpJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByZXN1bHQubWFwKGNvbG9yID0+ICdyZ2JhKCcgKyBjb2xvci5jb25jYXQob3B0aW9ucy5vcGFjaXR5KS5qb2luKCcsJykgKyAnKScpO1xuICAgIH1cbiAgfVxuXG4gIC8vIE91dHB1dCBhcyBoZXhcbiAgLy8gVE9ET1xuICAvLyByZXR1cm4gcmVzdWx0Lm1hcChjb2xvciA9PiB7XG4gIC8vICAgcmV0dXJuIFwicmdiKFwiICsgY29sb3Iuam9pbignLCcpICsgXCIpXCI7XG4gIC8vIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuIl19
|