@sumaris-net/ngx-components 1.9.0 → 1.9.3
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 +155 -163
- 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 +2 -1
- package/esm2015/src/app/admin/users/list/users.js +5 -22
- package/esm2015/src/app/core/form/entity-editor.class.js +16 -8
- package/esm2015/src/app/core/home/home.js +1 -1
- package/esm2015/src/app/core/register/confirm/confirm.js +1 -1
- package/esm2015/src/app/core/services/account.service.js +1 -1
- package/esm2015/src/app/core/table/memory-table.class.js +2 -7
- package/esm2015/src/app/core/table/table.class.js +24 -27
- package/esm2015/src/app/social/list/user-events.table.js +3 -8
- package/fesm2015/sumaris-net.ngx-components.js +47 -56
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +1 -1
- package/src/app/admin/users/list/users.d.ts +1 -12
- package/src/app/core/form/entity-editor.class.d.ts +3 -2
- package/src/app/core/table/memory-table.class.d.ts +0 -1
- package/src/app/core/table/table.class.d.ts +8 -10
- package/src/app/social/list/user-events.table.d.ts +0 -1
- package/sumaris-net.ngx-components.metadata.json +1 -1
package/doc/changelog.md
CHANGED
|
@@ -4,15 +4,10 @@ import { Person, PRIORITIZED_AUTHORITIES } from '../../../core/services/model/pe
|
|
|
4
4
|
import { referentialToString, StatusById, StatusList } from '../../../core/services/model/referential.model';
|
|
5
5
|
import { PersonService } from '../../services/person.service';
|
|
6
6
|
import { PersonValidatorService } from '../../services/validator/person.validator';
|
|
7
|
-
import { ModalController } from '@ionic/angular';
|
|
8
|
-
import { ActivatedRoute, Router } from '@angular/router';
|
|
9
7
|
import { AccountService } from '../../../core/services/account.service';
|
|
10
|
-
import { Location } from '@angular/common';
|
|
11
8
|
import { FormBuilder } from '@angular/forms';
|
|
12
9
|
import { AppTable, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, SETTINGS_FILTER } from '../../../core/table/table.class';
|
|
13
10
|
import { ValidatorService } from '@e-is/ngx-material-table';
|
|
14
|
-
import { PlatformService } from '../../../core/services/platform.service';
|
|
15
|
-
import { LocalSettingsService } from '../../../core/services/local-settings.service';
|
|
16
11
|
import { debounceTime, filter, tap } from 'rxjs/operators';
|
|
17
12
|
import { EntitiesTableDataSource } from '../../../core/table/entities-table-datasource.class';
|
|
18
13
|
import { isNotNil } from '../../../shared/functions';
|
|
@@ -23,8 +18,8 @@ import { CORE_CONFIG_OPTIONS } from '../../../core/services/config/core.config';
|
|
|
23
18
|
import { MatExpansionPanel } from '@angular/material/expansion';
|
|
24
19
|
import { slideUpDownAnimation } from '../../../shared/material/material.animations';
|
|
25
20
|
export class UsersPage extends AppTable {
|
|
26
|
-
constructor(
|
|
27
|
-
super(
|
|
21
|
+
constructor(injector, accountService, validatorService, configService, dataService, cd, formBuilder, environment) {
|
|
22
|
+
super(injector, RESERVED_START_COLUMNS
|
|
28
23
|
.concat([
|
|
29
24
|
'avatar',
|
|
30
25
|
'lastName',
|
|
@@ -43,14 +38,8 @@ export class UsersPage extends AppTable {
|
|
|
43
38
|
dataServiceOptions: {
|
|
44
39
|
saveOnlyDirtyRows: true
|
|
45
40
|
}
|
|
46
|
-
}), null
|
|
47
|
-
this.route = route;
|
|
48
|
-
this.router = router;
|
|
49
|
-
this.platform = platform;
|
|
50
|
-
this.location = location;
|
|
51
|
-
this.modalCtrl = modalCtrl;
|
|
41
|
+
}), null);
|
|
52
42
|
this.accountService = accountService;
|
|
53
|
-
this.settings = settings;
|
|
54
43
|
this.validatorService = validatorService;
|
|
55
44
|
this.configService = configService;
|
|
56
45
|
this.dataService = dataService;
|
|
@@ -174,23 +163,17 @@ UsersPage.decorators = [
|
|
|
174
163
|
},] }
|
|
175
164
|
];
|
|
176
165
|
UsersPage.ctorParameters = () => [
|
|
177
|
-
{ type:
|
|
178
|
-
{ type: Router },
|
|
179
|
-
{ type: PlatformService },
|
|
180
|
-
{ type: Location },
|
|
181
|
-
{ type: ModalController },
|
|
166
|
+
{ type: Injector },
|
|
182
167
|
{ type: AccountService },
|
|
183
|
-
{ type: LocalSettingsService },
|
|
184
168
|
{ type: ValidatorService },
|
|
185
169
|
{ type: ConfigService },
|
|
186
170
|
{ type: PersonService },
|
|
187
171
|
{ type: ChangeDetectorRef },
|
|
188
172
|
{ type: FormBuilder },
|
|
189
|
-
{ type: Injector },
|
|
190
173
|
{ type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] }
|
|
191
174
|
];
|
|
192
175
|
UsersPage.propDecorators = {
|
|
193
176
|
useSticky: [{ type: Input }],
|
|
194
177
|
filterExpansionPanel: [{ type: ViewChild, args: [MatExpansionPanel, { static: true },] }]
|
|
195
178
|
};
|
|
196
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2FkbWluL3VzZXJzL2xpc3QvdXNlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hJLE9BQU8sRUFBQyxNQUFNLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUMxRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQzdHLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLGNBQWMsRUFBRSxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDdEUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBa0IsV0FBVyxFQUFZLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsT0FBTyxFQUFDLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxzQkFBc0IsRUFBRSxlQUFlLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4SCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUUxRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDeEUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sK0NBQStDLENBQUM7QUFDbkYsT0FBTyxF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O0lBQ3pCLENBQUM7OztZQWpNRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsMHVrQkFBeUI7Z0JBRXpCLFNBQVMsRUFBRTtvQkFDVCxFQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUM7aUJBQ2pFO2dCQUNELFVBQVUsRUFBRSxDQUFDLG9CQUFvQixDQUFDO2dCQUNsQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7OztZQTdCTyxjQUFjO1lBQUUsTUFBTTtZQU90QixlQUFlO1lBTGYsUUFBUTtZQUhSLGVBQWU7WUFFZixjQUFjO1lBT2Qsb0JBQW9CO1lBSHBCLGdCQUFnQjtZQVNoQixhQUFhO1lBakJiLGFBQWE7WUFIWSxpQkFBaUI7WUFTekIsV0FBVztZQVRtQyxRQUFROzRDQXlFMUUsTUFBTSxTQUFDLFdBQVc7Ozt3QkFsQnBCLEtBQUs7bUNBRUwsU0FBUyxTQUFDLGlCQUFpQixFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BlcnNvbiwgUFJJT1JJVElaRURfQVVUSE9SSVRJRVN9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvcGVyc29uLm1vZGVsJztcbmltcG9ydCB7IHJlZmVyZW50aWFsVG9TdHJpbmcsIFN0YXR1c0J5SWQsIFN0YXR1c0xpc3QgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL3JlZmVyZW50aWFsLm1vZGVsJztcbmltcG9ydCB7UGVyc29uU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGVyc29uLnNlcnZpY2UnO1xuaW1wb3J0IHtQZXJzb25WYWxpZGF0b3JTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92YWxpZGF0b3IvcGVyc29uLnZhbGlkYXRvcic7XG5pbXBvcnQge01vZGFsQ29udHJvbGxlcn0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtBY2NvdW50U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9hY2NvdW50LnNlcnZpY2UnO1xuaW1wb3J0IHtMb2NhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0FwcFRhYmxlLCBSRVNFUlZFRF9FTkRfQ09MVU1OUywgUkVTRVJWRURfU1RBUlRfQ09MVU1OUywgU0VUVElOR1NfRklMVEVSfSBmcm9tICcuLi8uLi8uLi9jb3JlL3RhYmxlL3RhYmxlLmNsYXNzJztcbmltcG9ydCB7VmFsaWRhdG9yU2VydmljZX0gZnJvbSAnQGUtaXMvbmd4LW1hdGVyaWFsLXRhYmxlJztcbmltcG9ydCB7Rm9ybUZpZWxkRGVmaW5pdGlvbn0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Zvcm0vZmllbGQubW9kZWwnO1xuaW1wb3J0IHtQbGF0Zm9ybVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvcGxhdGZvcm0uc2VydmljZSc7XG5pbXBvcnQge0xvY2FsU2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2xvY2FsLXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIGZpbHRlciwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0VudGl0aWVzVGFibGVEYXRhU291cmNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3RhYmxlL2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2UuY2xhc3MnO1xuaW1wb3J0IHtCZWFucywgaXNOb3ROaWwsIHNwbGl0QnlJZH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQge0VOVklST05NRU5UfSBmcm9tICcuLi8uLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQuY2xhc3MnO1xuaW1wb3J0IHtQZXJzb25GaWx0ZXJ9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpbHRlci9wZXJzb24uZmlsdGVyJztcbmltcG9ydCB7Q29uZmlnU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQge0NPUkVfQ09ORklHX09QVElPTlN9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvY29uZmlnL2NvcmUuY29uZmlnJztcbmltcG9ydCB7QXV0aFRva2VuVHlwZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHtNYXRFeHBhbnNpb25QYW5lbH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcbmltcG9ydCB7c2xpZGVVcERvd25BbmltYXRpb259IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9tYXRlcmlhbC9tYXRlcmlhbC5hbmltYXRpb25zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXVzZXJzLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICd1c2Vycy5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdXNlcnMuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7cHJvdmlkZTogVmFsaWRhdG9yU2VydmljZSwgdXNlRXhpc3Rpbmc6IFBlcnNvblZhbGlkYXRvclNlcnZpY2V9XG4gIF0sXG4gIGFuaW1hdGlvbnM6IFtzbGlkZVVwRG93bkFuaW1hdGlvbl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJzUGFnZSBleHRlbmRzIEFwcFRhYmxlPFBlcnNvbiwgUGVyc29uRmlsdGVyPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgY2FuRWRpdCA9IGZhbHNlO1xuICBmaWx0ZXJGb3JtOiBGb3JtR3JvdXA7XG4gIHByb2ZpbGVzID0gWy4uLlBSSU9SSVRJWkVEX0FVVEhPUklUSUVTXS5yZXZlcnNlKCk7XG4gIGFkZGl0aW9uYWxGaWVsZHM6IEZvcm1GaWVsZERlZmluaXRpb25bXTtcbiAgZmlsdGVyQ3JpdGVyaWFDb3VudCA9IDA7XG5cbiAgcmVhZG9ubHkgc3RhdHVzTGlzdCA9IFN0YXR1c0xpc3Q7XG4gIHJlYWRvbmx5IHN0YXR1c0J5SWQgPSBTdGF0dXNCeUlkO1xuXG4gIHNldCBzaG93VXNlcm5hbWVDb2x1bW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldFNob3dDb2x1bW4oJ3VzZXJuYW1lJywgdmFsdWUpO1xuICB9XG5cbiAgc2V0IHNob3dVc2VybmFtZUV4dHJhbmV0Q29sdW1uKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXRTaG93Q29sdW1uKCd1c2VybmFtZUV4dHJhbmV0JywgdmFsdWUpO1xuICB9XG5cbiAgQElucHV0KCkgdXNlU3RpY2t5ID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZChNYXRFeHBhbnNpb25QYW5lbCwge3N0YXRpYzogdHJ1ZX0pIGZpbHRlckV4cGFuc2lvblBhbmVsOiBNYXRFeHBhbnNpb25QYW5lbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICBwcm90ZWN0ZWQgcGxhdGZvcm06IFBsYXRmb3JtU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbG9jYXRpb246IExvY2F0aW9uLFxuICAgIHByb3RlY3RlZCBtb2RhbEN0cmw6IE1vZGFsQ29udHJvbGxlcixcbiAgICBwcm90ZWN0ZWQgYWNjb3VudFNlcnZpY2U6IEFjY291bnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBzZXR0aW5nczogTG9jYWxTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHZhbGlkYXRvclNlcnZpY2U6IFZhbGlkYXRvclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGRhdGFTZXJ2aWNlOiBQZXJzb25TZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBASW5qZWN0KEVOVklST05NRU5UKSBlbnZpcm9ubWVudFxuICApIHtcbiAgICBzdXBlcihyb3V0ZSwgcm91dGVyLCBwbGF0Zm9ybSwgbG9jYXRpb24sIG1vZGFsQ3RybCwgc2V0dGluZ3MsXG4gICAgICBSRVNFUlZFRF9TVEFSVF9DT0xVTU5TXG4gICAgICAgIC5jb25jYXQoW1xuICAgICAgICAgICdhdmF0YXInLFxuICAgICAgICAgICdsYXN0TmFtZScsXG4gICAgICAgICAgJ2ZpcnN0TmFtZScsXG4gICAgICAgICAgJ2VtYWlsJyxcbiAgICAgICAgICAncHJvZmlsZScsXG4gICAgICAgICAgJ3N0YXR1cycsXG4gICAgICAgICAgJ3VzZXJuYW1lJyxcbiAgICAgICAgICAndXNlcm5hbWVFeHRyYW5ldCcsXG4gICAgICAgICAgJ3B1YmtleSdcbiAgICAgICAgXSlcbiAgICAgICAgLmNvbmNhdChhY2NvdW50U2VydmljZS5hZGRpdGlvbmFsRmllbGRzLm1hcChmaWVsZCA9PiBmaWVsZC5rZXkpKVxuICAgICAgICAuY29uY2F0KFJFU0VSVkVEX0VORF9DT0xVTU5TKSxcbiAgICAgIG5ldyBFbnRpdGllc1RhYmxlRGF0YVNvdXJjZShQZXJzb24sIGRhdGFTZXJ2aWNlLCB2YWxpZGF0b3JTZXJ2aWNlLCB7XG4gICAgICAgIHByZXBlbmROZXdFbGVtZW50czogZmFsc2UsXG4gICAgICAgIHN1cHByZXNzRXJyb3JzOiBlbnZpcm9ubWVudC5wcm9kdWN0aW9uLFxuICAgICAgICBkYXRhU2VydmljZU9wdGlvbnM6IHtcbiAgICAgICAgICBzYXZlT25seURpcnR5Um93czogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIG51bGwsXG4gICAgICBpbmplY3RvclxuICAgICk7XG5cblxuICAgIHRoaXMuaW5saW5lRWRpdGlvbiA9IGFjY291bnRTZXJ2aWNlLmlzQWRtaW4oKTsgLy8gQWxsb3cgaW5saW5lIGVkaXRpb24gb25seSBpZiBhZG1pblxuICAgIHRoaXMuY2FuRWRpdCA9IGFjY291bnRTZXJ2aWNlLmlzQWRtaW4oKTtcbiAgICB0aGlzLmNvbmZpcm1CZWZvcmVEZWxldGUgPSB0cnVlO1xuICAgIHRoaXMuYXV0b0xvYWQgPSBmYWxzZTsgLy8gV2FpdCBjb25maWcgbG9hZGluZ1xuICAgIHRoaXMuaTE4bkNvbHVtblByZWZpeCA9ICdVU0VSLic7XG4gICAgdGhpcy5kZWZhdWx0U29ydEJ5ID0gJ2xhc3ROYW1lJztcbiAgICB0aGlzLmRlZmF1bHRTb3J0RGlyZWN0aW9uID0gJ2FzYyc7XG5cbiAgICB0aGlzLmZpbHRlckZvcm0gPSBmb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBzZWFyY2hUZXh0OiBbbnVsbF0sXG4gICAgICBzdGF0dXNJZDogW251bGxdXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZGl0aW9uYWxGaWVsZHMgPSAodGhpcy5hY2NvdW50U2VydmljZS5hZGRpdGlvbmFsRmllbGRzIHx8IFtdKVxuICAgICAgLmZpbHRlcihmaWVsZCA9PiBpc05vdE5pbChmaWVsZC5hdXRvY29tcGxldGUpKVxuICAgICAgLm1hcChmaWVsZCA9PiB7XG4gICAgICAgIC8vIE1ha2Ugc3VyZSB0byBnZXQgdGhlIGZpbmFsIGF1dG9jb21wbGV0ZSBjb25maWcgKGUuZy4gd2l0aCBhIHN1Z2dlc3RGbiBmdW5jdGlvbilcbiAgICAgICAgZmllbGQuYXV0b2NvbXBsZXRlID0gdGhpcy5yZWdpc3RlckF1dG9jb21wbGV0ZUZpZWxkKGZpZWxkLmtleSwge1xuICAgICAgICAgIC4uLmZpZWxkLmF1dG9jb21wbGV0ZSAvLyBDb3B5LCB0byBiZSBzdXJlIHRoZSBvcmlnaW5hbCBjb25maWcgaXMgdW5jaGFuZ2VkXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9KTtcblxuICAgIC8vIEZvciBERVYgb25seSAtLVxuICAgIHRoaXMuZGVidWcgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5zdWJzY3JpYmUoY29uZmlnID0+IHtcbiAgICAgICAgY29uc3QgYXV0aFRva2VuVHlwZSA9IGNvbmZpZy5nZXRQcm9wZXJ0eShDT1JFX0NPTkZJR19PUFRJT05TLkFVVEhfVE9LRU5fVFlQRSkgYXMgQXV0aFRva2VuVHlwZTtcbiAgICAgICAgY29uc29sZS5kZWJ1ZygnW3VzZXJzXSBBdXRoVG9rZW5UeXBlPScgKyBhdXRoVG9rZW5UeXBlKVxuICAgICAgICBzd2l0Y2ggKGF1dGhUb2tlblR5cGUpIHtcbiAgICAgICAgICBjYXNlIFwiYmFzaWNcIjpcbiAgICAgICAgICAgIHRoaXMuc2V0U2hvd0NvbHVtbigncHVia2V5JywgZmFsc2UsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgICAgY2FzZSBcImJhc2ljLWFuZC10b2tlblwiOlxuICAgICAgICAgICAgdGhpcy5zZXRTaG93Q29sdW1uKCd1c2VybmFtZScsIHRydWUsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgICAgICB0aGlzLnNldFNob3dDb2x1bW4oJ3VzZXJuYW1lRXh0cmFuZXQnLCB0cnVlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcInRva2VuXCI6XG4gICAgICAgICAgICB0aGlzLnNldFNob3dDb2x1bW4oJ3B1YmtleScsIHRydWUsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgICAgICB0aGlzLnNldFNob3dDb2x1bW4oJ3VzZXJuYW1lJywgZmFsc2UsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgICAgICB0aGlzLnNldFNob3dDb2x1bW4oJ3VzZXJuYW1lRXh0cmFuZXQnLCBmYWxzZSwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbnMoKTtcbiAgICAgICAgdGhpcy5vblJlZnJlc2guZW1pdCgpO1xuICAgICAgfSlcbiAgICApXG5cbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgdGhpcy5vblJlZnJlc2guc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgICB0aGlzLmZpbHRlckZvcm0ubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgIH0pKTtcblxuICAgIC8vIFVwZGF0ZSBmaWx0ZXIgd2hlbiBjaGFuZ2VzXG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgIHRoaXMuZmlsdGVyRm9ybS52YWx1ZUNoYW5nZXNcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDI1MCksXG4gICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuZmlsdGVyRm9ybS52YWxpZCksXG4gICAgICAgICAgdGFwKGpzb24gPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gUGVyc29uRmlsdGVyLmZyb21PYmplY3QoanNvbik7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckNyaXRlcmlhQ291bnQgPSBmaWx0ZXIuY291bnROb3RFbXB0eUNyaXRlcmlhKCk7XG4gICAgICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBmaWx0ZXIsIHdpdGhvdXQgcmVsb2FkaW5nIHRoZSBjb250ZW50XG4gICAgICAgICAgICB0aGlzLnNldEZpbHRlcihmaWx0ZXIsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgLy8gU2F2ZSBmaWx0ZXIgaW4gc2V0dGluZ3MgKGFmdGVyIGEgZGVib3VuY2UgdGltZSlcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcbiAgICAgICAgICB0YXAoanNvbiA9PiB0aGlzLnNldHRpbmdzLnNhdmVQYWdlU2V0dGluZyh0aGlzLnNldHRpbmdzSWQsIGpzb24sIFNFVFRJTkdTX0ZJTFRFUikpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpKTtcblxuICAgIC8vIFJlc3RvcmUgZmlsdGVyIGZyb20gc2V0dGluZ3MsIG9yIGxvYWQgYWxsXG4gICAgdGhpcy5yZXN0b3JlRmlsdGVyT3JMb2FkKCk7XG4gIH1cblxuICBhcHBseUZpbHRlckFuZENsb3NlUGFuZWwoZXZlbnQ/OiBVSUV2ZW50KSB7XG4gICAgdGhpcy5vblJlZnJlc2guZW1pdChldmVudCk7XG4gICAgdGhpcy5maWx0ZXJFeHBhbnNpb25QYW5lbC5jbG9zZSgpO1xuICB9XG5cbiAgcmVzZXRGaWx0ZXIoZXZlbnQ/OiBVSUV2ZW50KSB7XG4gICAgdGhpcy50b3RhbFJvd0NvdW50ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWFDb3VudCA9IDA7XG4gICAgdGhpcy5tYXJrQXNMb2FkaW5nKCk7XG4gICAgdGhpcy5maWx0ZXJGb3JtLnJlc2V0KCk7XG4gICAgdGhpcy5zZXRGaWx0ZXIobnVsbCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcmVzdG9yZUZpbHRlck9yTG9hZCgpIHtcbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcblxuICAgIGNvbnNvbGUuZGVidWcoXCJbdXNlcnNdIFJlc3RvcmluZyBmaWx0ZXIgZnJvbSBzZXR0aW5ncy4uLlwiKTtcblxuICAgIGNvbnN0IGpzb24gPSB0aGlzLnNldHRpbmdzLmdldFBhZ2VTZXR0aW5ncyh0aGlzLnNldHRpbmdzSWQsIFNFVFRJTkdTX0ZJTFRFUikgfHwge307XG4gICAgY29uc3QgZmlsdGVyID0gUGVyc29uRmlsdGVyLmZyb21PYmplY3QoanNvbik7XG5cbiAgICB0aGlzLmZpbHRlckZvcm0ucGF0Y2hWYWx1ZShqc29uKTtcbiAgICB0aGlzLnNldEZpbHRlcihmaWx0ZXIsIHtlbWl0RXZlbnQ6IHRydWV9KTtcbiAgfVxuXG4gIGNsZWFyQ29udHJvbFZhbHVlKGV2ZW50OiBVSUV2ZW50LCBmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sKTogYm9vbGVhbiB7XG4gICAgaWYgKGV2ZW50KSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgLy8gQXZvaWQgdG8gZW50ZXIgaW5wdXQgdGhlIGZpZWxkXG4gICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmVmZXJlbnRpYWxUb1N0cmluZyA9IHJlZmVyZW50aWFsVG9TdHJpbmc7XG5cbiAgLyogLS0gcHJvdGVjdGVkIG1ldGhvZHMgLS0gKi9cblxuICBwcm90ZWN0ZWQgbWFya0ZvckNoZWNrKCkge1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxufVxuXG4iXX0=
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2FkbWluL3VzZXJzL2xpc3QvdXNlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hJLE9BQU8sRUFBQyxNQUFNLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUMxRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQzdHLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUdqRixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFFdEUsT0FBTyxFQUFrQixXQUFXLEVBQVksTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUMsUUFBUSxFQUFFLG9CQUFvQixFQUFFLHNCQUFzQixFQUFFLGVBQWUsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hILE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBSTFELE9BQU8sRUFBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBQzVGLE9BQU8sRUFBUSxRQUFRLEVBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDdkUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FB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QUMsSUFBSSxDQUFDLENBQUM7WUFFN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUM1QyxDQUFDO0tBQUE7SUFFRCxpQkFBaUIsQ0FBQyxLQUFjLEVBQUUsV0FBNEI7UUFDNUQsSUFBSSxLQUFLO1lBQUUsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsaUNBQWlDO1FBQ3JFLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBSUQsNkJBQTZCO0lBRW5CLFlBQVk7UUFDcEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDOzs7WUExTEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLDB1a0JBQXlCO2dCQUV6QixTQUFTLEVBQUU7b0JBQ1QsRUFBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFDO2lCQUNqRTtnQkFDRCxVQUFVLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDbEMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUFuQ3NFLFFBQVE7WUFPdkUsY0FBYztZQUlkLGdCQUFnQjtZQVNoQixhQUFhO1lBakJiLGFBQWE7WUFIWSxpQkFBaUI7WUFTekIsV0FBVzs0Q0EwRC9CLE1BQU0sU0FBQyxXQUFXOzs7d0JBWnBCLEtBQUs7bUNBRUwsU0FBUyxTQUFDLGlCQUFpQixFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BlcnNvbiwgUFJJT1JJVElaRURfQVVUSE9SSVRJRVN9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvcGVyc29uLm1vZGVsJztcbmltcG9ydCB7IHJlZmVyZW50aWFsVG9TdHJpbmcsIFN0YXR1c0J5SWQsIFN0YXR1c0xpc3QgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL3JlZmVyZW50aWFsLm1vZGVsJztcbmltcG9ydCB7UGVyc29uU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGVyc29uLnNlcnZpY2UnO1xuaW1wb3J0IHtQZXJzb25WYWxpZGF0b3JTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92YWxpZGF0b3IvcGVyc29uLnZhbGlkYXRvcic7XG5pbXBvcnQge01vZGFsQ29udHJvbGxlcn0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtBY2NvdW50U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9hY2NvdW50LnNlcnZpY2UnO1xuaW1wb3J0IHtMb2NhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0FwcFRhYmxlLCBSRVNFUlZFRF9FTkRfQ09MVU1OUywgUkVTRVJWRURfU1RBUlRfQ09MVU1OUywgU0VUVElOR1NfRklMVEVSfSBmcm9tICcuLi8uLi8uLi9jb3JlL3RhYmxlL3RhYmxlLmNsYXNzJztcbmltcG9ydCB7VmFsaWRhdG9yU2VydmljZX0gZnJvbSAnQGUtaXMvbmd4LW1hdGVyaWFsLXRhYmxlJztcbmltcG9ydCB7Rm9ybUZpZWxkRGVmaW5pdGlvbn0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Zvcm0vZmllbGQubW9kZWwnO1xuaW1wb3J0IHtQbGF0Zm9ybVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvcGxhdGZvcm0uc2VydmljZSc7XG5pbXBvcnQge0xvY2FsU2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2xvY2FsLXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIGZpbHRlciwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0VudGl0aWVzVGFibGVEYXRhU291cmNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3RhYmxlL2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2UuY2xhc3MnO1xuaW1wb3J0IHtCZWFucywgaXNOb3ROaWwsIHNwbGl0QnlJZH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQge0VOVklST05NRU5UfSBmcm9tICcuLi8uLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQuY2xhc3MnO1xuaW1wb3J0IHtQZXJzb25GaWx0ZXJ9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpbHRlci9wZXJzb24uZmlsdGVyJztcbmltcG9ydCB7Q29uZmlnU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQge0NPUkVfQ09ORklHX09QVElPTlN9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvY29uZmlnL2NvcmUuY29uZmlnJztcbmltcG9ydCB7QXV0aFRva2VuVHlwZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHtNYXRFeHBhbnNpb25QYW5lbH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcbmltcG9ydCB7c2xpZGVVcERvd25BbmltYXRpb259IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9tYXRlcmlhbC9tYXRlcmlhbC5hbmltYXRpb25zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXVzZXJzLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICd1c2Vycy5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdXNlcnMuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7cHJvdmlkZTogVmFsaWRhdG9yU2VydmljZSwgdXNlRXhpc3Rpbmc6IFBlcnNvblZhbGlkYXRvclNlcnZpY2V9XG4gIF0sXG4gIGFuaW1hdGlvbnM6IFtzbGlkZVVwRG93bkFuaW1hdGlvbl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJzUGFnZSBleHRlbmRzIEFwcFRhYmxlPFBlcnNvbiwgUGVyc29uRmlsdGVyPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgY2FuRWRpdCA9IGZhbHNlO1xuICBmaWx0ZXJGb3JtOiBGb3JtR3JvdXA7XG4gIHByb2ZpbGVzID0gWy4uLlBSSU9SSVRJWkVEX0FVVEhPUklUSUVTXS5yZXZlcnNlKCk7XG4gIGFkZGl0aW9uYWxGaWVsZHM6IEZvcm1GaWVsZERlZmluaXRpb25bXTtcbiAgZmlsdGVyQ3JpdGVyaWFDb3VudCA9IDA7XG5cbiAgcmVhZG9ubHkgc3RhdHVzTGlzdCA9IFN0YXR1c0xpc3Q7XG4gIHJlYWRvbmx5IHN0YXR1c0J5SWQgPSBTdGF0dXNCeUlkO1xuXG4gIHNldCBzaG93VXNlcm5hbWVDb2x1bW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldFNob3dDb2x1bW4oJ3VzZXJuYW1lJywgdmFsdWUpO1xuICB9XG5cbiAgc2V0IHNob3dVc2VybmFtZUV4dHJhbmV0Q29sdW1uKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXRTaG93Q29sdW1uKCd1c2VybmFtZUV4dHJhbmV0JywgdmFsdWUpO1xuICB9XG5cbiAgQElucHV0KCkgdXNlU3RpY2t5ID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZChNYXRFeHBhbnNpb25QYW5lbCwge3N0YXRpYzogdHJ1ZX0pIGZpbHRlckV4cGFuc2lvblBhbmVsOiBNYXRFeHBhbnNpb25QYW5lbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGFjY291bnRTZXJ2aWNlOiBBY2NvdW50U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgdmFsaWRhdG9yU2VydmljZTogVmFsaWRhdG9yU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZGF0YVNlcnZpY2U6IFBlcnNvblNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgQEluamVjdChFTlZJUk9OTUVOVCkgZW52aXJvbm1lbnRcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IsXG4gICAgICBSRVNFUlZFRF9TVEFSVF9DT0xVTU5TXG4gICAgICAgIC5jb25jYXQoW1xuICAgICAgICAgICdhdmF0YXInLFxuICAgICAgICAgICdsYXN0TmFtZScsXG4gICAgICAgICAgJ2ZpcnN0TmFtZScsXG4gICAgICAgICAgJ2VtYWlsJyxcbiAgICAgICAgICAncHJvZmlsZScsXG4gICAgICAgICAgJ3N0YXR1cycsXG4gICAgICAgICAgJ3VzZXJuYW1lJyxcbiAgICAgICAgICAndXNlcm5hbWVFeHRyYW5ldCcsXG4gICAgICAgICAgJ3B1YmtleSdcbiAgICAgICAgXSlcbiAgICAgICAgLmNvbmNhdChhY2NvdW50U2VydmljZS5hZGRpdGlvbmFsRmllbGRzLm1hcChmaWVsZCA9PiBmaWVsZC5rZXkpKVxuICAgICAgICAuY29uY2F0KFJFU0VSVkVEX0VORF9DT0xVTU5TKSxcbiAgICAgIG5ldyBFbnRpdGllc1RhYmxlRGF0YVNvdXJjZShQZXJzb24sIGRhdGFTZXJ2aWNlLCB2YWxpZGF0b3JTZXJ2aWNlLCB7XG4gICAgICAgIHByZXBlbmROZXdFbGVtZW50czogZmFsc2UsXG4gICAgICAgIHN1cHByZXNzRXJyb3JzOiBlbnZpcm9ubWVudC5wcm9kdWN0aW9uLFxuICAgICAgICBkYXRhU2VydmljZU9wdGlvbnM6IHtcbiAgICAgICAgICBzYXZlT25seURpcnR5Um93czogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIG51bGxcbiAgICApO1xuXG5cbiAgICB0aGlzLmlubGluZUVkaXRpb24gPSBhY2NvdW50U2VydmljZS5pc0FkbWluKCk7IC8vIEFsbG93IGlubGluZSBlZGl0aW9uIG9ubHkgaWYgYWRtaW5cbiAgICB0aGlzLmNhbkVkaXQgPSBhY2NvdW50U2VydmljZS5pc0FkbWluKCk7XG4gICAgdGhpcy5jb25maXJtQmVmb3JlRGVsZXRlID0gdHJ1ZTtcbiAgICB0aGlzLmF1dG9Mb2FkID0gZmFsc2U7IC8vIFdhaXQgY29uZmlnIGxvYWRpbmdcbiAgICB0aGlzLmkxOG5Db2x1bW5QcmVmaXggPSAnVVNFUi4nO1xuICAgIHRoaXMuZGVmYXVsdFNvcnRCeSA9ICdsYXN0TmFtZSc7XG4gICAgdGhpcy5kZWZhdWx0U29ydERpcmVjdGlvbiA9ICdhc2MnO1xuXG4gICAgdGhpcy5maWx0ZXJGb3JtID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgc2VhcmNoVGV4dDogW251bGxdLFxuICAgICAgc3RhdHVzSWQ6IFtudWxsXVxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRpdGlvbmFsRmllbGRzID0gKHRoaXMuYWNjb3VudFNlcnZpY2UuYWRkaXRpb25hbEZpZWxkcyB8fCBbXSlcbiAgICAgIC5maWx0ZXIoZmllbGQgPT4gaXNOb3ROaWwoZmllbGQuYXV0b2NvbXBsZXRlKSlcbiAgICAgIC5tYXAoZmllbGQgPT4ge1xuICAgICAgICAvLyBNYWtlIHN1cmUgdG8gZ2V0IHRoZSBmaW5hbCBhdXRvY29tcGxldGUgY29uZmlnIChlLmcuIHdpdGggYSBzdWdnZXN0Rm4gZnVuY3Rpb24pXG4gICAgICAgIGZpZWxkLmF1dG9jb21wbGV0ZSA9IHRoaXMucmVnaXN0ZXJBdXRvY29tcGxldGVGaWVsZChmaWVsZC5rZXksIHtcbiAgICAgICAgICAuLi5maWVsZC5hdXRvY29tcGxldGUgLy8gQ29weSwgdG8gYmUgc3VyZSB0aGUgb3JpZ2luYWwgY29uZmlnIGlzIHVuY2hhbmdlZFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfSk7XG5cbiAgICAvLyBGb3IgREVWIG9ubHkgLS1cbiAgICB0aGlzLmRlYnVnID0gIWVudmlyb25tZW50LnByb2R1Y3Rpb247XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcuc3Vic2NyaWJlKGNvbmZpZyA9PiB7XG4gICAgICAgIGNvbnN0IGF1dGhUb2tlblR5cGUgPSBjb25maWcuZ2V0UHJvcGVydHkoQ09SRV9DT05GSUdfT1BUSU9OUy5BVVRIX1RPS0VOX1RZUEUpIGFzIEF1dGhUb2tlblR5cGU7XG4gICAgICAgIGNvbnNvbGUuZGVidWcoJ1t1c2Vyc10gQXV0aFRva2VuVHlwZT0nICsgYXV0aFRva2VuVHlwZSlcbiAgICAgICAgc3dpdGNoIChhdXRoVG9rZW5UeXBlKSB7XG4gICAgICAgICAgY2FzZSBcImJhc2ljXCI6XG4gICAgICAgICAgICB0aGlzLnNldFNob3dDb2x1bW4oJ3B1YmtleScsIGZhbHNlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICAgIGNhc2UgXCJiYXNpYy1hbmQtdG9rZW5cIjpcbiAgICAgICAgICAgIHRoaXMuc2V0U2hvd0NvbHVtbigndXNlcm5hbWUnLCB0cnVlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICAgICAgdGhpcy5zZXRTaG93Q29sdW1uKCd1c2VybmFtZUV4dHJhbmV0JywgdHJ1ZSwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJ0b2tlblwiOlxuICAgICAgICAgICAgdGhpcy5zZXRTaG93Q29sdW1uKCdwdWJrZXknLCB0cnVlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICAgICAgdGhpcy5zZXRTaG93Q29sdW1uKCd1c2VybmFtZScsIGZhbHNlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICAgICAgdGhpcy5zZXRTaG93Q29sdW1uKCd1c2VybmFtZUV4dHJhbmV0JywgZmFsc2UsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVDb2x1bW5zKCk7XG4gICAgICAgIHRoaXMub25SZWZyZXNoLmVtaXQoKTtcbiAgICAgIH0pXG4gICAgKVxuXG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgIHRoaXMub25SZWZyZXNoLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZmlsdGVyRm9ybS5tYXJrQXNVbnRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICB9KSk7XG5cbiAgICAvLyBVcGRhdGUgZmlsdGVyIHdoZW4gY2hhbmdlc1xuICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24oXG4gICAgICB0aGlzLmZpbHRlckZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZSgyNTApLFxuICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmZpbHRlckZvcm0udmFsaWQpLFxuICAgICAgICAgIHRhcChqc29uID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlciA9IFBlcnNvbkZpbHRlci5mcm9tT2JqZWN0KGpzb24pO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJDcml0ZXJpYUNvdW50ID0gZmlsdGVyLmNvdW50Tm90RW1wdHlDcml0ZXJpYSgpO1xuICAgICAgICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgZmlsdGVyLCB3aXRob3V0IHJlbG9hZGluZyB0aGUgY29udGVudFxuICAgICAgICAgICAgdGhpcy5zZXRGaWx0ZXIoZmlsdGVyLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIC8vIFNhdmUgZmlsdGVyIGluIHNldHRpbmdzIChhZnRlciBhIGRlYm91bmNlIHRpbWUpXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDUwMCksXG4gICAgICAgICAgdGFwKGpzb24gPT4gdGhpcy5zZXR0aW5ncy5zYXZlUGFnZVNldHRpbmcodGhpcy5zZXR0aW5nc0lkLCBqc29uLCBTRVRUSU5HU19GSUxURVIpKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKSk7XG5cbiAgICAvLyBSZXN0b3JlIGZpbHRlciBmcm9tIHNldHRpbmdzLCBvciBsb2FkIGFsbFxuICAgIHRoaXMucmVzdG9yZUZpbHRlck9yTG9hZCgpO1xuICB9XG5cbiAgYXBwbHlGaWx0ZXJBbmRDbG9zZVBhbmVsKGV2ZW50PzogVUlFdmVudCkge1xuICAgIHRoaXMub25SZWZyZXNoLmVtaXQoZXZlbnQpO1xuICAgIHRoaXMuZmlsdGVyRXhwYW5zaW9uUGFuZWwuY2xvc2UoKTtcbiAgfVxuXG4gIHJlc2V0RmlsdGVyKGV2ZW50PzogVUlFdmVudCkge1xuICAgIHRoaXMudG90YWxSb3dDb3VudCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmZpbHRlckNyaXRlcmlhQ291bnQgPSAwO1xuICAgIHRoaXMubWFya0FzTG9hZGluZygpO1xuICAgIHRoaXMuZmlsdGVyRm9ybS5yZXNldCgpO1xuICAgIHRoaXMuc2V0RmlsdGVyKG51bGwpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHJlc3RvcmVGaWx0ZXJPckxvYWQoKSB7XG4gICAgdGhpcy5tYXJrQXNMb2FkaW5nKCk7XG5cbiAgICBjb25zb2xlLmRlYnVnKFwiW3VzZXJzXSBSZXN0b3JpbmcgZmlsdGVyIGZyb20gc2V0dGluZ3MuLi5cIik7XG5cbiAgICBjb25zdCBqc29uID0gdGhpcy5zZXR0aW5ncy5nZXRQYWdlU2V0dGluZ3ModGhpcy5zZXR0aW5nc0lkLCBTRVRUSU5HU19GSUxURVIpIHx8IHt9O1xuICAgIGNvbnN0IGZpbHRlciA9IFBlcnNvbkZpbHRlci5mcm9tT2JqZWN0KGpzb24pO1xuXG4gICAgdGhpcy5maWx0ZXJGb3JtLnBhdGNoVmFsdWUoanNvbik7XG4gICAgdGhpcy5zZXRGaWx0ZXIoZmlsdGVyLCB7ZW1pdEV2ZW50OiB0cnVlfSk7XG4gIH1cblxuICBjbGVhckNvbnRyb2xWYWx1ZShldmVudDogVUlFdmVudCwgZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IGJvb2xlYW4ge1xuICAgIGlmIChldmVudCkgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IC8vIEF2b2lkIHRvIGVudGVyIGlucHV0IHRoZSBmaWVsZFxuICAgIGZvcm1Db250cm9sLnNldFZhbHVlKG51bGwpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJlZmVyZW50aWFsVG9TdHJpbmcgPSByZWZlcmVudGlhbFRvU3RyaW5nO1xuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzIC0tICovXG5cbiAgcHJvdGVjdGVkIG1hcmtGb3JDaGVjaygpIHtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbn1cblxuIl19
|
|
@@ -24,7 +24,6 @@ export class AppEntityEditor extends AppTabEditor {
|
|
|
24
24
|
this.dataType = dataType;
|
|
25
25
|
this.dataService = dataService;
|
|
26
26
|
this.saving = false;
|
|
27
|
-
this.hasRemoteListener = false;
|
|
28
27
|
this.$title = new Subject();
|
|
29
28
|
this.onUpdateView = new EventEmitter();
|
|
30
29
|
options = Object.assign({
|
|
@@ -103,6 +102,7 @@ export class AppEntityEditor extends AppTabEditor {
|
|
|
103
102
|
}
|
|
104
103
|
ngOnDestroy() {
|
|
105
104
|
super.ngOnDestroy();
|
|
105
|
+
this.listenRemoteSubscription = null; // already unsubscribe in the super function
|
|
106
106
|
this.$title.complete();
|
|
107
107
|
this.$title.unsubscribe();
|
|
108
108
|
this.onUpdateView.complete();
|
|
@@ -181,11 +181,10 @@ export class AppEntityEditor extends AppTabEditor {
|
|
|
181
181
|
}
|
|
182
182
|
startListenRemoteChanges() {
|
|
183
183
|
// Skip if disable, or already listening
|
|
184
|
-
if (this.
|
|
184
|
+
if (this.listenRemoteSubscription || !this._enableListenChanges || this.isNewData)
|
|
185
185
|
return;
|
|
186
186
|
// Listen for changes on server
|
|
187
|
-
this.
|
|
188
|
-
this.registerSubscription(this.dataService.listenChanges(this.data.id)
|
|
187
|
+
this.listenRemoteSubscription = this.dataService.listenChanges(this.data.id)
|
|
189
188
|
.pipe(filter(isNotNil))
|
|
190
189
|
.subscribe((data) => {
|
|
191
190
|
if (data.updateDate && data.updateDate.isAfter(this.data.updateDate)) {
|
|
@@ -199,8 +198,16 @@ export class AppEntityEditor extends AppTabEditor {
|
|
|
199
198
|
console.debug(`[data-editor] Changes detected on server, at {${data.updateDate}}, but page is dirty: skip reloading.`);
|
|
200
199
|
}
|
|
201
200
|
}
|
|
202
|
-
})
|
|
203
|
-
|
|
201
|
+
});
|
|
202
|
+
this.listenRemoteSubscription.add(() => this.listenRemoteSubscription = null);
|
|
203
|
+
this.registerSubscription(this.listenRemoteSubscription);
|
|
204
|
+
}
|
|
205
|
+
stopListenRemoteChanges() {
|
|
206
|
+
if (this.listenRemoteSubscription) {
|
|
207
|
+
this.unregisterSubscription(this.listenRemoteSubscription);
|
|
208
|
+
this.listenRemoteSubscription.unsubscribe();
|
|
209
|
+
this.listenRemoteSubscription = null;
|
|
210
|
+
}
|
|
204
211
|
}
|
|
205
212
|
updateView(data, opts) {
|
|
206
213
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -344,7 +351,7 @@ export class AppEntityEditor extends AppTabEditor {
|
|
|
344
351
|
// Update the view (e.g metadata)
|
|
345
352
|
yield this.updateView(updatedData, opts);
|
|
346
353
|
// Subscribe to remote changes
|
|
347
|
-
if (!this.
|
|
354
|
+
if (!this.listenRemoteSubscription)
|
|
348
355
|
this.startListenRemoteChanges();
|
|
349
356
|
this.submitted = false;
|
|
350
357
|
return true;
|
|
@@ -499,6 +506,7 @@ export class AppEntityEditor extends AppTabEditor {
|
|
|
499
506
|
}
|
|
500
507
|
unload() {
|
|
501
508
|
return __awaiter(this, void 0, void 0, function* () {
|
|
509
|
+
this.stopListenRemoteChanges();
|
|
502
510
|
this.form.reset();
|
|
503
511
|
this.registerForms();
|
|
504
512
|
this._dirty = false;
|
|
@@ -636,4 +644,4 @@ AppEntityEditor.ctorParameters = () => [
|
|
|
636
644
|
{ type: undefined },
|
|
637
645
|
{ type: AppEditorOptions, decorators: [{ type: Optional }] }
|
|
638
646
|
];
|
|
639
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWVkaXRvci5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL2VudGl0eS1lZGl0b3IuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBaUIsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQXFCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQTJCLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXhDLE9BQU8sRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFjLE1BQU0sY0FBYyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTNILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUNBQXlD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dGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWxlcnRDb250cm9sbGVyLCBUb2FzdENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBBZGRUb1BhZ2VIaXN0b3J5T3B0aW9ucywgTG9jYWxTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9sb2NhbC1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBVc2FnZU1vZGUgfSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9zZXR0aW5ncy5tb2RlbCc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBcHBUYWJFZGl0b3IsIEFwcFRhYkVkaXRvck9wdGlvbnMgfSBmcm9tICcuL2VkaXRvci5jbGFzcyc7XG5pbXBvcnQgeyBBcHBGb3JtVXRpbHMsIEZvcm1FcnJvcnMgfSBmcm9tICcuL2Zvcm0udXRpbHMnO1xuaW1wb3J0IHsgQWxlcnRzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2FsZXJ0cyc7XG5pbXBvcnQgeyBFcnJvckNvZGVzLCBTZXJ2ZXJFcnJvckNvZGVzIH0gZnJvbSAnLi4vc2VydmljZXMvZXJyb3JzJztcbmltcG9ydCB7IGlzSW50LCBpc05pbCwgaXNOaWxPckJsYW5rLCBpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsLCBpc05vdE5pbE9yQmxhbmssIHRvQm9vbGVhbiB9IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgRW50aXR5U2VydmljZUxvYWRPcHRpb25zLCBJRW50aXR5U2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBEYXRlRm9ybWF0UGlwZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9waXBlcy9kYXRlLWZvcm1hdC5waXBlJztcbmltcG9ydCB7IEVOVklST05NRU5UIH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzJztcbmltcG9ydCB7IEhpc3RvcnlQYWdlUmVmZXJlbmNlIH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvaGlzdG9yeS5tb2RlbCc7XG5pbXBvcnQgeyBXYWl0Rm9yT3B0aW9ucyB9IGZyb20gJy4uLy4uL3NoYXJlZC9vYnNlcnZhYmxlcyc7XG5pbXBvcnQgeyBGb3JtRXJyb3JUcmFuc2xhdG9yIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3ZhbGlkYXRvci9mb3JtLWVycm9yLWFkYXB0ZXIuY2xhc3MnO1xuXG5leHBvcnQgY2xhc3MgQXBwRWRpdG9yT3B0aW9ucyBleHRlbmRzIEFwcFRhYkVkaXRvck9wdGlvbnMge1xuICBhdXRvTG9hZD86IGJvb2xlYW47XG4gIGF1dG9Mb2FkRGVsYXk/OiBudW1iZXI7XG4gIHBhdGhJZEF0dHJpYnV0ZT86IHN0cmluZztcbiAgZW5hYmxlTGlzdGVuQ2hhbmdlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENoYW5nZSBwYWdlIHJvdXRlICh3aW5kb3cgVVJMKSB3aGVuIHNhdmluZyBmb3IgdGhlIGZpcnN0IHRpbWVcbiAgICovXG4gIGF1dG9VcGRhdGVSb3V0ZT86IGJvb2xlYW47IC8vIERlZmF1bHQgdG8gdHJ1ZVxuXG4gIC8qKlxuICAgKiBPcGVuIHRoZSBuZXh0IHRhYiwgYWZ0ZXIgc2F2aW5nIGZvciB0aGUgZmlyc3QgdGltZVxuICAgKi9cbiAgYXV0b09wZW5OZXh0VGFiPzogYm9vbGVhbjsgLy8gRGVmYXVsdCB0byB0cnVlXG5cbiAgaTE4blByZWZpeD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBFcnJvciB7XG4gIGNvZGU/OiBudW1iZXI7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBBcHBFcnJvcldpdGhEZXRhaWxzIGV4dGVuZHMgQXBwRXJyb3Ige1xuICBkZXRhaWxzPzogQXBwRXJyb3IgJiB7ZXJyb3JzPzogRm9ybUVycm9yc307XG59XG5cbi8vIEBkeW5hbWljXG5ARGlyZWN0aXZlKClcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFwcEVudGl0eUVkaXRvcjxcbiAgVCBleHRlbmRzIEVudGl0eTxULCBJRD4sXG4gIFMgZXh0ZW5kcyBJRW50aXR5U2VydmljZTxULCBJRD4gPSBJRW50aXR5U2VydmljZTxULCBhbnk+LFxuICBJRCA9IG51bWJlclxuICA+XG4gIGV4dGVuZHMgQXBwVGFiRWRpdG9yPFQsIElELCBFbnRpdHlTZXJ2aWNlTG9hZE9wdGlvbnM+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuXG4gIHByaXZhdGUgX3VzYWdlTW9kZTogVXNhZ2VNb2RlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lbmFibGVMaXN0ZW5DaGFuZ2VzOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYXRoSWRBdHRyaWJ1dGU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfYXV0b0xvYWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2F1dG9Mb2FkRGVsYXk6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXV0b1VwZGF0ZVJvdXRlOiBib29sZWFuO1xuICBwcml2YXRlIF9hdXRvT3Blbk5leHRUYWI6IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIGRhdGVGb3JtYXQ6IERhdGVGb3JtYXRQaXBlO1xuICBwcm90ZWN0ZWQgY2Q6IENoYW5nZURldGVjdG9yUmVmO1xuICBwcm90ZWN0ZWQgc2V0dGluZ3M6IExvY2FsU2V0dGluZ3NTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgZXJyb3JUcmFuc2xhdG9yOiBGb3JtRXJyb3JUcmFuc2xhdG9yO1xuXG4gIGRhdGE6IFQ7XG4gIHNhdmluZyA9IGZhbHNlO1xuICBoYXNSZW1vdGVMaXN0ZW5lciA9IGZhbHNlO1xuICBkZWZhdWx0QmFja0hyZWY6IHN0cmluZztcbiAgaGlzdG9yeUljb246IHtpY29uPzogc3RyaW5nOyBtYXRJY29uPzogc3RyaW5nIH07XG5cbiAgJHRpdGxlID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBvblVwZGF0ZVZpZXcgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG5cbiAgZ2V0IHVzYWdlTW9kZSgpOiBVc2FnZU1vZGUge1xuICAgIHJldHVybiB0aGlzLl91c2FnZU1vZGU7XG4gIH1cblxuICBzZXQgdXNhZ2VNb2RlKHZhbHVlOiBVc2FnZU1vZGUpIHtcbiAgICBpZiAodGhpcy5fdXNhZ2VNb2RlICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5fdXNhZ2VNb2RlID0gdmFsdWU7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpc09uRmllbGRNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzLmlzT25GaWVsZE1vZGUodGhpcy5fdXNhZ2VNb2RlKTtcbiAgfVxuXG4gIGdldCBpc05ld0RhdGEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzTmlsKHRoaXMuZGF0YT8uaWQpO1xuICB9XG5cbiAgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmc7XG4gIH1cblxuICBnZXQgc2VydmljZSgpOiBTIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZTtcbiAgfVxuXG4gIG1hcmtBc1NhdmluZyhvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pe1xuICAgIGlmICghdGhpcy5zYXZpbmcpIHtcbiAgICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcbiAgICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgbWFya0FzU2F2ZWQob3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KXtcbiAgICBpZiAodGhpcy5zYXZpbmcpIHtcbiAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gICAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGRhdGFUeXBlOiBuZXcoKSA9PiBULFxuICAgIHByb3RlY3RlZCBkYXRhU2VydmljZT86IFMsXG4gICAgQE9wdGlvbmFsKCkgb3B0aW9ucz86IEFwcEVkaXRvck9wdGlvbnNcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IuZ2V0KEFjdGl2YXRlZFJvdXRlKSxcbiAgICAgIGluamVjdG9yLmdldChSb3V0ZXIpLFxuICAgICAgaW5qZWN0b3IuZ2V0KEFsZXJ0Q29udHJvbGxlciksXG4gICAgICBpbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSksXG4gICAgICBvcHRpb25zKTtcbiAgICBvcHRpb25zID0gPEFwcEVkaXRvck9wdGlvbnM+e1xuICAgICAgLy8gRGVmYXVsdCBvcHRpb25zXG4gICAgICBlbmFibGVMaXN0ZW5DaGFuZ2VzOiAoaW5qZWN0b3IuZ2V0KEVOVklST05NRU5UKS5saXN0ZW5SZW1vdGVDaGFuZ2VzID09PSB0cnVlKSxcbiAgICAgIHBhdGhJZEF0dHJpYnV0ZTogJ2lkJyxcbiAgICAgIGF1dG9Mb2FkOiB0cnVlLFxuICAgICAgYXV0b1VwZGF0ZVJvdXRlOiB0cnVlLFxuICAgICAgaTE4blByZWZpeDogJycsXG5cbiAgICAgIC8vIEZvbGxvd2luZyBvcHRpb25zIGFyZSBvdmVycmlkZSBpbnNpZGUgbmdPbkluaXQoKVxuICAgICAgLy8gYXV0b09wZW5OZXh0VGFiOiAuLi4sXG5cbiAgICAgIC8vIE92ZXJyaWRlIGRlZmF1bHRzXG4gICAgICAuLi5vcHRpb25zXG4gICAgfTtcblxuICAgIHRoaXMuc2V0dGluZ3MgPSBpbmplY3Rvci5nZXQoTG9jYWxTZXR0aW5nc1NlcnZpY2UpO1xuICAgIHRoaXMuZXJyb3JUcmFuc2xhdG9yID0gaW5qZWN0b3IuZ2V0KEZvcm1FcnJvclRyYW5zbGF0b3IpO1xuICAgIHRoaXMuY2QgPSBpbmplY3Rvci5nZXQoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHRoaXMuZGF0ZUZvcm1hdCA9IGluamVjdG9yLmdldChEYXRlRm9ybWF0UGlwZSk7XG4gICAgdGhpcy50b2FzdENvbnRyb2xsZXIgPSBpbmplY3Rvci5nZXQoVG9hc3RDb250cm9sbGVyKTtcbiAgICB0aGlzLl9lbmFibGVMaXN0ZW5DaGFuZ2VzID0gb3B0aW9ucy5lbmFibGVMaXN0ZW5DaGFuZ2VzO1xuICAgIHRoaXMuX3BhdGhJZEF0dHJpYnV0ZSA9IG9wdGlvbnMucGF0aElkQXR0cmlidXRlO1xuICAgIHRoaXMuX2F1dG9Mb2FkID0gb3B0aW9ucy5hdXRvTG9hZDtcbiAgICB0aGlzLl9hdXRvTG9hZERlbGF5ID0gb3B0aW9ucy5hdXRvTG9hZERlbGF5O1xuICAgIHRoaXMuX2F1dG9VcGRhdGVSb3V0ZSA9IG9wdGlvbnMuYXV0b1VwZGF0ZVJvdXRlO1xuICAgIHRoaXMuX2F1dG9PcGVuTmV4dFRhYiA9IG9wdGlvbnMuYXV0b09wZW5OZXh0VGFiO1xuICAgIHRoaXMuaTE4bkNvbnRleHQgPSB7XG4gICAgICBwcmVmaXg6IG9wdGlvbnMuaTE4blByZWZpeCxcbiAgICAgIHN1ZmZpeDogJydcbiAgICB9O1xuXG4gICAgLy8gRk9SIERFViBPTkxZIC0tLS1cbiAgICAvL3RoaXMuZGVidWcgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAvLyBEZWZhdWx0c1xuICAgIHRoaXMuX2F1dG9PcGVuTmV4dFRhYiA9IHRvQm9vbGVhbih0aGlzLl9hdXRvT3Blbk5leHRUYWIsICF0aGlzLmlzT25GaWVsZE1vZGUpO1xuICAgIHRoaXMuaGlzdG9yeUljb24gPSB0aGlzLmhpc3RvcnlJY29uIHx8IHtpY29uOiAnbGlzdCd9O1xuXG4gICAgLy8gUmVnaXN0ZXIgZm9ybXNcbiAgICB0aGlzLnJlZ2lzdGVyRm9ybXMoKTtcblxuICAgIC8vIERpc2FibGUgcGFnZSwgZHVyaW5nIGxvYWRcbiAgICB0aGlzLmRpc2FibGUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcblxuICAgIC8vIExvYWQgZGF0YVxuICAgIGlmICh0aGlzLl9hdXRvTG9hZCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmxvYWRGcm9tUm91dGUoKSwgdGhpcy5fYXV0b0xvYWREZWxheSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcblxuICAgIHRoaXMuJHRpdGxlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4kdGl0bGUudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9uVXBkYXRlVmlldy5jb21wbGV0ZSgpO1xuICAgIHRoaXMub25VcGRhdGVWaWV3LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBkYXRhIGZyb20gdGhlIHNuYXBzaG90IHJvdXRlXG4gICAqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBsb2FkRnJvbVJvdXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJvdXRlID0gdGhpcy5yb3V0ZS5zbmFwc2hvdDtcbiAgICBpZiAoIXJvdXRlIHx8IGlzTmlsT3JCbGFuayh0aGlzLl9wYXRoSWRBdHRyaWJ1dGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBsb2FkIGZyb20gcm91dGU6IG1pc3NpbmcgXFwncm91dGVcXCcgb3IgXFwnb3B0aW9ucy5wYXRoSWRBdHRyaWJ1dGVcXCcuJyk7XG4gICAgfVxuICAgIGxldCBpZCA9IHJvdXRlLnBhcmFtc1t0aGlzLl9wYXRoSWRBdHRyaWJ1dGVdO1xuICAgIGlmIChpc05pbChpZCkgfHwgaWQgPT09ICduZXcnKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2FkKHVuZGVmaW5lZCwgcm91dGUucGFyYW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ29udmVydCBhcyBudW1iZXIsIGlmIG5lZWRcbiAgICAgIGlmIChpc0ludChpZCkpIHtcbiAgICAgICAgaWQgPSBwYXJzZUludChpZCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5sb2FkKGlkLCByb3V0ZS5wYXJhbXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGRhdGEgZnJvbSBpZCwgdXNpbmcgdGhlIGRhdGFTZXJ2aWNlXG4gICAqXG4gICAqIEBwYXJhbSBpZFxuICAgKiBAcGFyYW0gb3B0c1xuICAgKi9cbiAgYXN5bmMgbG9hZChpZD86IElELCBvcHRzPzogRW50aXR5U2VydmljZUxvYWRPcHRpb25zICYge1xuICAgIGVtaXRFdmVudD86IGJvb2xlYW47XG4gICAgb3BlblRhYkluZGV4PzogbnVtYmVyO1xuICAgIHVwZGF0ZVRhYkFuZFJvdXRlPzogYm9vbGVhbjtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH0pIHtcbiAgICBpZiAoIXRoaXMuZGF0YVNlcnZpY2UpIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGxvYWQgZGF0YTogbWlzc2luZyBcXCdkYXRhU2VydmljZVxcJyEnKTtcblxuICAgIHRoaXMucmVzZXRFcnJvcigpO1xuXG4gICAgLy8gTmV3IGRhdGFcbiAgICBpZiAoaXNOaWwoaWQpKSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBDcmVhdGUgdXNpbmcgZGVmYXVsdCB2YWx1ZXNcbiAgICAgICAgY29uc3QgZGF0YSA9IG5ldyB0aGlzLmRhdGFUeXBlKCk7XG4gICAgICAgIHRoaXMuX3VzYWdlTW9kZSA9IHRoaXMuY29tcHV0ZVVzYWdlTW9kZShkYXRhKTtcbiAgICAgICAgYXdhaXQgdGhpcy5vbk5ld0VudGl0eShkYXRhLCBvcHRzKTtcbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVWaWV3KGRhdGEsIHtcbiAgICAgICAgICBvcGVuVGFiSW5kZXg6IDAsXG4gICAgICAgICAgLi4ub3B0c1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhpcy5zZXRFcnJvcihlcnIsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IDA7XG4gICAgICB9XG4gICAgICBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBMb2FkIGV4aXN0aW5nIGRhdGFcbiAgICBlbHNlIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmRhdGFTZXJ2aWNlLmxvYWQoaWQsIG9wdHMpO1xuICAgICAgICBpZiAoIWRhdGEpIHRocm93IHtjb2RlOiBFcnJvckNvZGVzLkRBVEFfTk9UX0ZPVU5EX0VSUk9SLCBtZXNzYWdlOiAnRVJST1IuREFUQV9OT19GT1VORCd9O1xuICAgICAgICB0aGlzLl91c2FnZU1vZGUgPSB0aGlzLmNvbXB1dGVVc2FnZU1vZGUoZGF0YSk7XG4gICAgICAgIGF3YWl0IHRoaXMub25FbnRpdHlMb2FkZWQoZGF0YSwgb3B0cyk7XG4gICAgICAgIGF3YWl0IHRoaXMudXBkYXRlVmlldyhkYXRhLCBvcHRzKTtcbiAgICAgICAgdGhpcy5zdGFydExpc3RlblJlbW90ZUNoYW5nZXMoKTtcbiAgICAgIH1cbiAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhpcy5zZXRFcnJvcihlcnIpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPSAwO1xuICAgICAgfVxuICAgICAgZmluYWxseSB7XG4gICAgICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhcnRMaXN0ZW5SZW1vdGVDaGFuZ2VzKCkge1xuICAgIC8vIFNraXAgaWYgZGlzYWJsZSwgb3IgYWxyZWFkeSBsaXN0ZW5pbmdcbiAgICBpZiAodGhpcy5oYXNSZW1vdGVMaXN0ZW5lciB8fCAhdGhpcy5fZW5hYmxlTGlzdGVuQ2hhbmdlcyB8fCB0aGlzLmlzTmV3RGF0YSkgcmV0dXJuO1xuXG4gICAgLy8gTGlzdGVuIGZvciBjaGFuZ2VzIG9uIHNlcnZlclxuICAgIHRoaXMuaGFzUmVtb3RlTGlzdGVuZXIgPSB0cnVlO1xuXG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgIHRoaXMuZGF0YVNlcnZpY2UubGlzdGVuQ2hhbmdlcyh0aGlzLmRhdGEuaWQpXG4gICAgICAgIC5waXBlKGZpbHRlcihpc05vdE5pbCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IFQpID0+IHtcbiAgICAgICAgICBpZiAoZGF0YS51cGRhdGVEYXRlICYmIChkYXRhLnVwZGF0ZURhdGUgYXMgTW9tZW50KS5pc0FmdGVyKHRoaXMuZGF0YS51cGRhdGVEYXRlKSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRpcnR5KSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmRlYnVnKSBjb25zb2xlLmRlYnVnKGBbZGF0YS1lZGl0b3JdIENoYW5nZXMgZGV0ZWN0ZWQgb24gc2VydmVyLCBhdCB7JHtkYXRhLnVwZGF0ZURhdGV9fSA6IHJlbG9hZGluZyBwYWdlLi4uYCk7XG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlVmlldyhkYXRhKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmRlYnVnKSBjb25zb2xlLmRlYnVnKGBbZGF0YS1lZGl0b3JdIENoYW5nZXMgZGV0ZWN0ZWQgb24gc2VydmVyLCBhdCB7JHtkYXRhLnVwZGF0ZURhdGV9fSwgYnV0IHBhZ2UgaXMgZGlydHk6IHNraXAgcmVsb2FkaW5nLmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmFkZCgoKSA9PiB0aGlzLmhhc1JlbW90ZUxpc3RlbmVyID0gZmFsc2UpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVZpZXcoZGF0YTogVCB8IG51bGwsIG9wdHM/OiB7XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgICBvcGVuVGFiSW5kZXg/OiBudW1iZXI7XG4gICAgdXBkYXRlUm91dGU/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaWRDaGFuZ2VkID0gaXNOb3ROaWwoZGF0YS5pZClcbiAgICAgICYmIHRoaXMucHJldmlvdXNEYXRhSWQgIT09IHVuZGVmaW5lZCAvLyBJZ25vcmUgaWYgZmlyc3QgbG9hZGluZyAoPXVuZGVmaW5lZClcbiAgICAgICYmIHRoaXMucHJldmlvdXNEYXRhSWQgIT09IGRhdGEuaWQ7XG5cbiAgICBvcHRzID0ge1xuICAgICAgdXBkYXRlUm91dGU6IHRoaXMuX2F1dG9VcGRhdGVSb3V0ZSAmJiBpZENoYW5nZWQgJiYgIXRoaXMubG9hZGluZyxcbiAgICAgIG9wZW5UYWJJbmRleDogdGhpcy5fYXV0b09wZW5OZXh0VGFiICYmIGlkQ2hhbmdlZCAmJiBpc05pbCh0aGlzLnByZXZpb3VzRGF0YUlkKSAmJiB0aGlzLmNvbXB1dGVOZXh0VGFiSW5kZXgoKSxcbiAgICAgIC4uLm9wdHNcbiAgICB9O1xuXG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICB0aGlzLnByZXZpb3VzRGF0YUlkID0gZGF0YS5pZCB8fCBudWxsO1xuXG4gICAgYXdhaXQgdGhpcy5yZWFkeSgpO1xuICAgIGNvbnN0IHByb21pc2VPclZvaWQgPSB0aGlzLnNldFZhbHVlKGRhdGEpO1xuICAgIGlmIChwcm9taXNlT3JWb2lkKSBhd2FpdCBwcm9taXNlT3JWb2lkO1xuXG4gICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgdGhpcy5tYXJrQXNVbnRvdWNoZWQoKTtcbiAgICAgIHRoaXMudXBkYXRlVmlld1N0YXRlKGRhdGEpO1xuXG4gICAgICAvLyBOZWVkIHRvIHVwZGF0ZSByb3V0ZVxuICAgICAgaWYgKG9wdHMudXBkYXRlUm91dGUgPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy51cGRhdGVUYWJBbmRSb3V0ZShkYXRhLCBvcHRzKVxuICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgdGl0bGUgLSBzaG91bGQgYmUgZXhlY3V0ZWQgQUZURVIgdXBkYXRlUm91dGUgYmVjYXVzZSBvZiBwYXRoIGNoYW5nZSAtIGZpeCAjMTg1XG4gICAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy51cGRhdGVUaXRsZShkYXRhKSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgLy8gVXBkYXRlIHRoZSBuZXh0IHRhYlxuICAgICAgICB0aGlzLnVwZGF0ZVRhYkluZGV4KG9wdHMub3BlblRhYkluZGV4KTtcblxuICAgICAgICAvLyBVcGRhdGUgdGhlIHRpdGxlLlxuICAgICAgICB0aGlzLnVwZGF0ZVRpdGxlKGRhdGEpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm9uVXBkYXRlVmlldy5lbWl0KGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGUgb3IgZGlzYWJsZSBzdGF0ZVxuICAgKi9cbiAgdXBkYXRlVmlld1N0YXRlKGRhdGE6IFQsIG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICBpZiAodGhpcy5pc05ld0RhdGEgfHwgdGhpcy5jYW5Vc2VyV3JpdGUoZGF0YSkpIHtcbiAgICAgIHRoaXMuZW5hYmxlKG9wdHMpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuZGlzYWJsZShvcHRzKTtcblxuICAgICAgLy8gQWxsb3cgdG8gc29ydCB0YWJsZVxuICAgICAgdGhpcy50YWJsZXMuZm9yRWFjaCh0ID0+IHQuZW5hYmxlU29ydCgpKTtcbiAgICB9XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHJvdXRlIGxvY2F0aW9uLCBhbmQgb3BlbiB0aGUgbmV4dCB0YWJcbiAgICovXG4gIGFzeW5jIHVwZGF0ZVRhYkFuZFJvdXRlKGRhdGE6IFQsIG9wdHM/OiB7XG4gICAgb3BlblRhYkluZGV4PzogbnVtYmVyO1xuICB9KTogUHJvbWlzZTx2b2lkPiB7XG5cbiAgICB0aGlzLnF1ZXJ5UGFyYW1zID0gdGhpcy5xdWVyeVBhcmFtcyB8fCB7fTtcblxuICAgIC8vIE9wZW4gdGhlIG5leHQgdGFiXG4gICAgdGhpcy51cGRhdGVUYWJJbmRleChvcHRzICYmIG9wdHMub3BlblRhYkluZGV4KTtcblxuICAgIC8vIFNhdmUgdGhlIG9wZW5lZCB0YWIgaW50byB0aGUgcXVlcnlQYXJhbXNcbiAgICB0aGlzLnF1ZXJ5UGFyYW1zLnRhYiA9IHRoaXMuc2VsZWN0ZWRUYWJJbmRleDtcblxuICAgIC8vIFVwZGF0ZSByb3V0ZSBsb2NhdGlvblxuICAgIGNvbnN0IGZvcmNlZFF1ZXJ5UGFyYW1zID0ge307XG4gICAgZm9yY2VkUXVlcnlQYXJhbXNbdGhpcy5fcGF0aElkQXR0cmlidXRlXSA9IGRhdGEgJiYgaXNOb3ROaWwoZGF0YS5pZCkgPyBkYXRhLmlkIDogJ25ldyc7XG4gICAgaWYgKGRhdGEgJiYgaXNOb3ROaWwoZGF0YS5pZCkpIHtcbiAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLiddLCB7XG4gICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICAgIHF1ZXJ5UGFyYW1zOiB7Li4udGhpcy5xdWVyeVBhcmFtcywgLi4uZm9yY2VkUXVlcnlQYXJhbXN9XG4gICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uJywgJ25ldyddLCB7XG4gICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICAgIHF1ZXJ5UGFyYW1zOiB7Li4udGhpcy5xdWVyeVBhcmFtcywgLi4uZm9yY2VkUXVlcnlQYXJhbXN9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnVwZGF0ZVJvdXRlKGRhdGEsIHRoaXMucXVlcnlQYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgcm91dGUgbG9jYXRpb24sIGFuZCBvcGVuIHRoZSBuZXh0IHRhYlxuICAgKi9cbiAgdXBkYXRlVGFiSW5kZXgodGFiSW5kZXg/OiBudW1iZXIpIHtcbiAgICBpZiAoaXNOb3ROaWwodGFiSW5kZXgpICYmIHRhYkluZGV4ID4gdGhpcy5zZWxlY3RlZFRhYkluZGV4KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPSB0YWJJbmRleDtcbiAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2F2ZUFuZENsb3NlKGV2ZW50OiBFdmVudCwgb3B0aW9ucz86IGFueSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXG4gICAgY29uc3Qgc2F2ZWQgPSBhd2FpdCB0aGlzLnNhdmUoZXZlbnQpO1xuICAgIGlmIChzYXZlZCkge1xuICAgICAgYXdhaXQgdGhpcy5jbG9zZShldmVudCk7XG4gICAgfVxuICAgIHJldHVybiBzYXZlZDtcbiAgfVxuXG4gIGFzeW5jIGNsb3NlKGV2ZW50OiBFdmVudCkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHJldHVybjtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ29CYWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSB0aGUgZWRpdG9yLCBieSBjYWxsaW5nIHRoZSBkYXRhU2VydmljZS5zYXZlKCkuXG4gICAqIEVuc3VyZSB0aGF0IGVkaXRvciBpZiB2YWxpZC4gSWYgbm90LCBkaXNwbGF5IGFuIGVycm9yXG4gICAqIEBwYXJhbSBldmVudFxuICAgKiBAcGFyYW0gb3B0c1xuICAgKi9cbiAgYXN5bmMgc2F2ZShldmVudD86IEV2ZW50LCBvcHRzPzogYW55KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMubG9hZGluZyB8fCB0aGlzLnNhdmluZykge1xuICAgICAgY29uc29sZS5kZWJ1ZygnW2RhdGEtZWRpdG9yXSBTa2lwIHNhdmU6IGVkaXRvciBpcyBidXN5IChsb2FkaW5nIG9yIHNhdmluZyknKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmRpcnR5KSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbZGF0YS1lZGl0b3JdIFNraXAgc2F2ZTogZWRpdG9yIG5vdCBkaXJ0eScpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gV2FpdCBlbmQgb2YgYXN5bmMgdmFsaWRhdGlvblxuICAgIGF3YWl0IHRoaXMud2FpdFdoaWxlUGVuZGluZygpO1xuXG4gICAgLy8gSWYgaW52YWxpZFxuICAgIGlmICh0aGlzLmludmFsaWQpIHtcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgdGhpcy5sb2dGb3JtRXJyb3JzKCk7XG4gICAgICB0aGlzLm9wZW5GaXJzdEludmFsaWRUYWIoKTtcblxuICAgICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMubWFya0FzU2F2aW5nKCk7XG4gICAgdGhpcy5yZXNldEVycm9yKCk7XG5cbiAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2RhdGEtZWRpdG9yXSBTYXZpbmcgZGF0YS4uLicpO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIEdldCBkYXRhXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5nZXRWYWx1ZSgpO1xuXG4gICAgICB0aGlzLmRpc2FibGUoKTtcblxuICAgICAgLy8gU2F2ZSBmb3JtXG4gICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IGF3YWl0IHRoaXMuZGF0YVNlcnZpY2Uuc2F2ZShkYXRhLCBvcHRzKTtcblxuICAgICAgYXdhaXQgdGhpcy5vbkVudGl0eVNhdmVkKHVwZGF0ZWREYXRhKTtcblxuICAgICAgLy8gVXBkYXRlIHRoZSB2aWV3IChlLmcgbWV0YWRhdGEpXG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZVZpZXcodXBkYXRlZERhdGEsIG9wdHMpO1xuXG4gICAgICAvLyBTdWJzY3JpYmUgdG8gcmVtb3RlIGNoYW5nZXNcbiAgICAgIGlmICghdGhpcy5oYXNSZW1vdGVMaXN0ZW5lcikgdGhpcy5zdGFydExpc3RlblJlbW90ZUNoYW5nZXMoKTtcblxuICAgICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG4gICAgICB0aGlzLnNldEVycm9yKGVycik7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPSAwO1xuICAgICAgdGhpcy5zY3JvbGxUb1RvcCgpOyAvLyBTY3JvbGwgdG8gdG9wICh0byBzaG93IGVycm9yKVxuICAgICAgdGhpcy5tYXJrQXNEaXJ0eSgpO1xuICAgICAgdGhpcy5lbmFibGUoKTtcblxuICAgICAgLy8gQ29uY3VycmVudCBjaGFuZ2Ugb24gcG9kXG4gICAgICBpZiAoZXJyLmNvZGUgPT09IFNlcnZlckVycm9yQ29kZXMuQkFEX1VQREFURV9EQVRFICYmIGlzTm90TmlsKHRoaXMuZGF0YS5pZCkpIHtcbiAgICAgICAgLy8gQ2FsbCBhIGRhdGEgcmVsb2FkIChpbiBiYWNrZ3JvdW5kKSwgdG8gdXBkYXRlIHRoZSBHcmFwaFFMIGNhY2hlLCBhbmQgYWxsb3cgdG8gY2FuY2VsIGNoYW5nZXNcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5sb2FkKHRoaXMuZGF0YS5pZCwge2ZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5J30pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ1tkYXRhLWVkaXRvcl0gRGF0YSBjYWNoZSByZWxvYWRlZC4gVXNlciBjYW4gcmVsb2FkIHBhZ2UnKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5tYXJrQXNTYXZlZCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIGRhdGEgKGlmIGRpcnR5IGFuZCB2YWxpZCksIGFuZCByZXR1cm4gaXQuIE90aGVyd2lzZSwgcmV0dXJuIG5pbCB2YWx1ZS5cbiAgICovXG4gIGFzeW5jIHNhdmVBbmRHZXREYXRhSWZWYWxpZCgpOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICAvLyBGb3JtIGlzIG5vdCB2YWxpZFxuICAgIGlmICghdGhpcy52YWxpZCkge1xuXG4gICAgICAvLyBNYWtlIHN1cmUgdmFsaWRhdGlvbiBpcyBmaW5pc2hlZFxuICAgICAgYXdhaXQgQXBwRm9ybVV0aWxzLndhaXRXaGlsZVBlbmRpbmcodGhpcyk7XG5cbiAgICAgIC8vIElmIGludmFsaWQ6IE9wZW4gdGhlIGZpcnN0IHRhYiBpbiBlcnJvclxuICAgICAgaWYgKHRoaXMuaW52YWxpZCkge1xuICAgICAgICB0aGlzLm9wZW5GaXJzdEludmFsaWRUYWIoKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgLy8gQ29udGludWUgKHZhbGlkKVxuICAgIH1cblxuICAgIC8vIEZvcm0gaXMgdmFsaWQsIGJ1dCBub3Qgc2F2ZWRcbiAgICBpZiAodGhpcy5kaXJ0eSkge1xuICAgICAgY29uc3Qgc2F2ZWQgPSBhd2FpdCB0aGlzLnNhdmUobmV3IEV2ZW50KCdzYXZlJykpO1xuICAgICAgaWYgKCFzYXZlZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBWYWxpZCBhbmQgc2F2ZWQgZGF0YVxuICAgIHJldHVybiB0aGlzLmRhdGE7XG4gIH1cblxuICBhc3luYyBkZWxldGUoZXZlbnQ/OiBVSUV2ZW50KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMubG9hZGluZyB8fCB0aGlzLnNhdmluZykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQXNrIHVzZXIgY29uZmlybWF0aW9uXG4gICAgY29uc3QgY29uZmlybWF0aW9uID0gYXdhaXQgQWxlcnRzLmFza0RlbGV0ZUNvbmZpcm1hdGlvbih0aGlzLmFsZXJ0Q3RybCwgdGhpcy50cmFuc2xhdGUpO1xuICAgIGlmICghY29uZmlybWF0aW9uKSByZXR1cm47XG5cbiAgICBjb25zb2xlLmRlYnVnKCdbZGF0YS1lZGl0b3JdIEFza2luZyB0byBkZWxldGUuLi4nKTtcblxuICAgIHRoaXMubWFya0FzU2F2aW5nKCk7XG4gICAgdGhpcy5yZXNldEVycm9yKCk7XG5cbiAgICB0cnkge1xuICAgICAgLy8gR2V0IGRhdGFcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBpc05ldyA9IHRoaXMuaXNOZXdEYXRhO1xuXG4gICAgICB0aGlzLmRpc2FibGUoKTtcblxuICAgICAgaWYgKCFpc05ldykge1xuICAgICAgICBhd2FpdCB0aGlzLmRhdGFTZXJ2aWNlLmRlbGV0ZShkYXRhKTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgdGhpcy5vbkVudGl0eURlbGV0ZWQoZGF0YSk7XG5cbiAgICAgIC8vIFJlbW92ZSBwYWdlIGhpc3RvcnlcbiAgICAgIHRoaXMucmVtb3ZlUGFnZUhpc3RvcnkoKTtcblxuXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG4gICAgICB0aGlzLnNldEVycm9yKGVycik7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPSAwO1xuICAgICAgdGhpcy5tYXJrQXNTYXZlZCgpO1xuICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBXYWl0LCB0aGVuIGdvIGJhY2sgKHdhaXQgaXMgbmVlZCBpbiBvcmRlciB0byB1cGRhdGUgYmFjayBocmVmIGlzIG5lZWQpXG4gICAgYXdhaXQgc2V0VGltZW91dCgoKSA9PiB0aGlzLmdvQmFjaygpLCA1MDApO1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBhc3luYyByZWxvYWQoKSB7XG4gICAgdGhpcy5tYXJrQXNMb2FkaW5nKCk7XG4gICAgYXdhaXQgdGhpcy5sb2FkKHRoaXMuZGF0YSAmJiB0aGlzLmRhdGEuaWQpO1xuICB9XG5cbiAgYXN5bmMgZ29CYWNrKGV2ZW50PzogRXZlbnQpOiBQcm9taXNlPHZvaWQgfCBib29sZWFuPiB7XG4gICAgLy8gR28gYmFja1xuICAgIGlmICh0aGlzLnRvb2xiYXI/LmNhbkdvQmFjaykge1xuICAgICAgcmV0dXJuIHRoaXMudG9vbGJhci5nb0JhY2soKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy5kZWZhdWx0QmFja0hyZWYpIHtcbiAgICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMuZGVmYXVsdEJhY2tIcmVmKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQmFjayB0byBob21lXG4gICAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnLycpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0RXJyb3Iob3B0cz86IHtlbWl0RXZlbnQ/OiBib29sZWFufSkge1xuICAgIGlmIChpc05vdE5pbE9yQmxhbmsodGhpcy5lcnJvcikpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuICAgICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBzZXRFcnJvcihlcnI6IHN0cmluZyB8IEFwcEVycm9yV2l0aERldGFpbHMsIG9wdHM/OiB7ZW1pdEV2ZW50PzogYm9vbGVhbjsgZGV0YWlsc0Nzc0NsYXNzPzogc3RyaW5nO30pIHtcblxuICAgIGlmICghZXJyIHx8IHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbZW50aXR5LWVkaXRvcl0gRXJyb3I6ICcgKyAoZXJyIHx8ICcnKSk7XG4gICAgICB0aGlzLmVycm9yID0gZXJyIGFzIHN0cmluZztcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbZW50aXR5LWVkaXRvcl0gRXJyb3I6ICcgKyBlcnIubWVzc2FnZSB8fCAnJywgZXJyKTtcbiAgICAgIGxldCB1c2VyTWVzc2FnZSA9IGVyci5tZXNzYWdlICYmIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoZXJyLm1lc3NhZ2UpIHx8IGVycjtcblxuICAgICAgLy8gQWRkIGRldGFpbHMgZXJyb3IgKGlmIGFueSkgdW5kZXIgdGhlIG1haW4gbWVzc2FnZVxuICAgICAgY29uc3QgZGV0YWlsTWVzc2FnZSA9ICghZXJyLmRldGFpbHMgfHwgdHlwZW9mIGVyci5kZXRhaWxzID09PSAnc3RyaW5nJylcbiAgICAgICAgPyBlcnIuZGV0YWlscyBhcyBzdHJpbmdcbiAgICAgICAgOiBlcnIuZGV0YWlscy5tZXNzYWdlO1xuICAgICAgaWYgKGlzTm90TmlsT3JCbGFuayhkZXRhaWxNZXNzYWdlKSkge1xuICAgICAgICBjb25zdCBjc3NDbGFzcyA9IG9wdHM/LmRldGFpbHNDc3NDbGFzcyB8fCAnaGlkZGVuLXhzIGhpZGRlbi1zbSc7XG4gICAgICAgIHVzZXJNZXNzYWdlICs9IGA8YnIvPjxzbWFsbCBjbGFzcz1cIiR7Y3NzQ2xhc3N9XCIgdGl0bGU9XCIke2RldGFpbE1lc3NhZ2V9XCI+YDtcbiAgICAgICAgdXNlck1lc3NhZ2UgKz0gZGV0YWlsTWVzc2FnZS5sZW5ndGggPCA3MCA/IGRldGFpbE1lc3NhZ2UgOiBkZXRhaWxNZXNzYWdlLnN1YnN0cmluZygwLCA2NykgKyAnLi4uJztcbiAgICAgICAgdXNlck1lc3NhZ2UgKz0gJzwvc21hbGw+JztcbiAgICAgIH1cbiAgICAgIHRoaXMuZXJyb3IgPSB1c2VyTWVzc2FnZTtcbiAgICB9XG4gICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qIC0tIHB1YmxpYyBhYnN0cmFjdCBtZXRob2RzICh0byBvdmVycmlkZSkgLS0gKi9cblxuICBjYW5Vc2VyV3JpdGUoZGF0YTogVCwgb3B0cz86IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmNhblVzZXJXcml0ZShkYXRhLCBvcHRzKTtcbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBhYnN0cmFjdCBtZXRob2RzICh0byBvdmVycmlkZSkgLS0gKi9cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVnaXN0ZXJGb3JtcygpO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBjb21wdXRlVGl0bGUoZGF0YTogVCk6IFByb21pc2U8c3RyaW5nPjtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0VmFsdWUoZGF0YTogVCk6IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgZm9ybSgpOiBGb3JtR3JvdXA7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldEZpcnN0SW52YWxpZFRhYkluZGV4KCk6IG51bWJlcjtcblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kcyAtLSAqL1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gdW5kZWZpbmVkIHRvIGtlZXAgc2FtZSB0YWJcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGNvbXB1dGVOZXh0VGFiSW5kZXgoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBuZXh0VGFiSW5kZXggPSB0aGlzLnNlbGVjdGVkVGFiSW5kZXggKyAxO1xuICAgIHJldHVybiBuZXh0VGFiSW5kZXggPCB0aGlzLnRhYkNvdW50ID8gbmV4dFRhYkluZGV4IDogdW5kZWZpbmVkO1xuICB9XG5cbiAgYXN5bmMgdW5sb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICAgIHRoaXMucmVnaXN0ZXJGb3JtcygpO1xuICAgIHRoaXMuX2RpcnR5ID0gZmFsc2U7XG4gICAgdGhpcy5kYXRhID0gbnVsbDtcbiAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG9uQmVmb3JlRW50aXR5TG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBjYW4gYmUgb3ZlcndyaXR0ZW4gYnkgc3ViY2xhc3Nlc1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG9uTmV3RW50aXR5KGRhdGE6IFQsIG9wdGlvbnM/OiBFbnRpdHlTZXJ2aWNlTG9hZE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBjYW4gYmUgb3ZlcndyaXR0ZW4gYnkgc3ViY2xhc3Nlc1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG9uRW50aXR5TG9hZGVkKGRhdGE6IFQsIG9wdGlvbnM/OiBFbnRpdHlTZXJ2aWNlTG9hZE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBjYW4gYmUgb3ZlcndyaXR0ZW4gYnkgc3ViY2xhc3Nlc1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG9uRW50aXR5U2F2ZWQoZGF0YTogVCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIGNhbiBiZSBvdmVyd3JpdHRlbiBieSBzdWJjbGFzc2VzXG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgb25FbnRpdHlEZWxldGVkKGRhdGE6IFQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBjYW4gYmUgb3ZlcndyaXR0ZW4gYnkgc3ViY2xhc3Nlc1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbXB1dGVVc2FnZU1vZGUoZGF0YTogVCk6IFVzYWdlTW9kZSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3MuaXNVc2FnZU1vZGUoJ0ZJRUxEJykgPyAnRklFTEQnIDogJ0RFU0snO1xuICB9XG5cbiAgcHJvdGVjdGVkIHdhaXRXaGlsZVBlbmRpbmcob3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIEFwcEZvcm1VdGlscy53YWl0V2hpbGVQZW5kaW5nKHRoaXMsIG9wdHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldFZhbHVlKCk6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IGpzb24gPSBhd2FpdCB0aGlzLmdldEpzb25WYWx1ZVRvU2F2ZSgpO1xuXG4gICAgY29uc3QgcmVzID0gbmV3IHRoaXMuZGF0YVR5cGUoKTtcbiAgICByZXMuZnJvbU9iamVjdChqc29uKTtcblxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0SnNvblZhbHVlVG9TYXZlKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmZvcm0udmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGUgdGhlIHRpdGxlXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgdXBkYXRlVGl0bGUoZGF0YT86IFQpIHtcbiAgICBkYXRhID0gZGF0YSB8fCB0aGlzLmRhdGE7XG4gICAgY29uc3QgdGl0bGUgPSBhd2FpdCB0aGlzLmNvbXB1dGVUaXRsZShkYXRhKTtcbiAgICB0aGlzLiR0aXRsZS5uZXh0KHRpdGxlKTtcblxuICAgIC8vIElmIE5PVCBkYXRhLCB0aGVuIGFkZCB0byBwYWdlIGhpc3RvcnlcbiAgICBpZiAoIXRoaXMuaXNOZXdEYXRhKSB7XG4gICAgICBjb25zdCBwYWdlID0gYXdhaXQgdGhpcy5jb21wdXRlUGFnZUhpc3RvcnkodGl0bGUpO1xuICAgICAgcmV0dXJuIHRoaXMuYWRkVG9QYWdlSGlzdG9yeShwYWdlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgYWRkVG9QYWdlSGlzdG9yeShwYWdlOiBIaXN0b3J5UGFnZVJlZmVyZW5jZSwgb3B0cz86IEFkZFRvUGFnZUhpc3RvcnlPcHRpb25zKSB7XG4gICAgaWYgKCFwYWdlKSByZXR1cm47IC8vIFNraXBcblxuICAgIHJldHVybiB0aGlzLnNldHRpbmdzLmFkZFRvUGFnZUhpc3RvcnkocGFnZSwge1xuICAgICAgcmVtb3ZlUGF0aFF1ZXJ5UGFyYW1zOiB0cnVlLFxuICAgICAgcmVtb3ZlVGl0bGVTbWFsbFRhZzogdHJ1ZSxcbiAgICAgIGVtaXRFdmVudDogZmFsc2UsXG4gICAgICAuLi5vcHRzXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgY29tcHV0ZVBhZ2VIaXN0b3J5KHRpdGxlOiBzdHJpbmcpOiBQcm9taXNlPEhpc3RvcnlQYWdlUmVmZXJlbmNlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlLFxuICAgICAgcGF0aDogdGhpcy5yb3V0ZXIudXJsXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyByZW1vdmVQYWdlSGlzdG9yeShvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5yZW1vdmVQYWdlSGlzdG9yeSh0aGlzLnJvdXRlci51cmwsIG9wdHMpO1xuICB9XG5cblxuICBwcm90ZWN0ZWQgY29tcHV0ZVBhZ2VVcmwoaWQ6IElEfCduZXcnKTogc3RyaW5nIHwgYW55W10ge1xuICAgIGNvbnN0IHBhcmVudFVybCA9IHRoaXMuZ2V0UGFyZW50UGFnZVVybCgpO1xuICAgIHJldHVybiBwYXJlbnRVcmwgJiYgYCR7cGFyZW50VXJsfS8ke2lkfWA7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0UGFyZW50UGFnZVVybCh3aXRoUXVlcnlQYXJhbXM/OiBib29sZWFuKSB7XG4gICAgbGV0IHBhcmVudFVybCA9IHRoaXMuZGVmYXVsdEJhY2tIcmVmO1xuXG4gICAgLy8gUmVtb3ZlIHF1ZXJ5IHBhcmFtc1xuICAgIGlmICh3aXRoUXVlcnlQYXJhbXMgIT09IHRydWUgJiYgcGFyZW50VXJsICYmIHBhcmVudFVybC5pbmRleE9mKCc/JykgIT09IC0xKSB7XG4gICAgICBwYXJlbnRVcmwgPSBwYXJlbnRVcmwuc3Vic3RyKDAsIHBhcmVudFVybC5pbmRleE9mKCc/JykpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJlbnRVcmw7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWFya0ZvckNoZWNrKCkge1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKiAtLSBwcml2YXRlIGZ1bmN0aW9ucyAtLSAqL1xuXG4gIC8qKlxuICAgKiBPcGVuIHRoZSBmaXJzdCB0YWIgdGhhdCBpcyBpbnZhbGlkXG4gICAqL1xuICBwcml2YXRlIG9wZW5GaXJzdEludmFsaWRUYWIoKSB7XG4gICAgY29uc3QgaW52YWxpZFRhYkluZGV4ID0gdGhpcy5nZXRGaXJzdEludmFsaWRUYWJJbmRleCgpO1xuICAgIGlmIChpbnZhbGlkVGFiSW5kZXggIT09IC0xICYmIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCAhPT0gaW52YWxpZFRhYkluZGV4KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPSBpbnZhbGlkVGFiSW5kZXg7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyB1cGRhdGVSb3V0ZShkYXRhOiBULCBxdWVyeVBhcmFtczogYW55KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuY29tcHV0ZVBhZ2VVcmwoaXNOb3ROaWwoZGF0YS5pZCkgPyBkYXRhLmlkIDogJ25ldycpO1xuICAgIGNvbnN0IGNvbW1hbmRzOiBhbnlbXSA9IChwYXRoICYmIHR5cGVvZiBwYXRoID09PSAnc3RyaW5nJykgPyBwYXRoLnNwbGl0KCcvJykgOiBwYXRoIGFzIGFueVtdO1xuICAgIGlmIChpc05vdEVtcHR5QXJyYXkoY29tbWFuZHMpKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoY29tbWFuZHMsIHtcbiAgICAgICAgcmVwbGFjZVVybDogdHJ1ZSxcbiAgICAgICAgcXVlcnlQYXJhbXM6IHRoaXMucXVlcnlQYXJhbXNcbiAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybignU2tpcCBwYWdlIHJvdXRlIHVwZGF0ZS4gSW52YWxpZCBwYWdlIHBhdGg6ICcsIHBhdGgpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
647
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWVkaXRvci5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL2VudGl0eS1lZGl0b3IuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBaUIsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQXFCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFFN0MsT0FBTyxFQUEyQixvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBYyxNQUFNLGNBQWMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUzSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlDQUF5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Q0FBQyxFQUFFO2dCQUM3QixPQUFPLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFO29CQUMxQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO2lCQUM5QixDQUFDLENBQUM7YUFDSjtpQkFDSTtnQkFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLDZDQUE2QyxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ25FO1FBQ0gsQ0FBQztLQUFBOzs7WUF6dUJGLFNBQVM7OztZQXREMEQsUUFBUTs7O1lBbUlsRCxnQkFBZ0IsdUJBQXJDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWxlcnRDb250cm9sbGVyLCBUb2FzdENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IEFkZFRvUGFnZUhpc3RvcnlPcHRpb25zLCBMb2NhbFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xvY2FsLXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IFVzYWdlTW9kZSB9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL3NldHRpbmdzLm1vZGVsJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFwcFRhYkVkaXRvciwgQXBwVGFiRWRpdG9yT3B0aW9ucyB9IGZyb20gJy4vZWRpdG9yLmNsYXNzJztcbmltcG9ydCB7IEFwcEZvcm1VdGlscywgRm9ybUVycm9ycyB9IGZyb20gJy4vZm9ybS51dGlscyc7XG5pbXBvcnQgeyBBbGVydHMgfSBmcm9tICcuLi8uLi9zaGFyZWQvYWxlcnRzJztcbmltcG9ydCB7IEVycm9yQ29kZXMsIFNlcnZlckVycm9yQ29kZXMgfSBmcm9tICcuLi9zZXJ2aWNlcy9lcnJvcnMnO1xuaW1wb3J0IHsgaXNJbnQsIGlzTmlsLCBpc05pbE9yQmxhbmssIGlzTm90RW1wdHlBcnJheSwgaXNOb3ROaWwsIGlzTm90TmlsT3JCbGFuaywgdG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBFbnRpdHlTZXJ2aWNlTG9hZE9wdGlvbnMsIElFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IERhdGVGb3JtYXRQaXBlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3BpcGVzL2RhdGUtZm9ybWF0LnBpcGUnO1xuaW1wb3J0IHsgRU5WSVJPTk1FTlQgfSBmcm9tICcuLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQuY2xhc3MnO1xuaW1wb3J0IHsgSGlzdG9yeVBhZ2VSZWZlcmVuY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9oaXN0b3J5Lm1vZGVsJztcbmltcG9ydCB7IFdhaXRGb3JPcHRpb25zIH0gZnJvbSAnLi4vLi4vc2hhcmVkL29ic2VydmFibGVzJztcbmltcG9ydCB7IEZvcm1FcnJvclRyYW5zbGF0b3IgfSBmcm9tICcuLi8uLi9zaGFyZWQvdmFsaWRhdG9yL2Zvcm0tZXJyb3ItYWRhcHRlci5jbGFzcyc7XG5cbmV4cG9ydCBjbGFzcyBBcHBFZGl0b3JPcHRpb25zIGV4dGVuZHMgQXBwVGFiRWRpdG9yT3B0aW9ucyB7XG4gIGF1dG9Mb2FkPzogYm9vbGVhbjtcbiAgYXV0b0xvYWREZWxheT86IG51bWJlcjtcbiAgcGF0aElkQXR0cmlidXRlPzogc3RyaW5nO1xuICBlbmFibGVMaXN0ZW5DaGFuZ2VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2hhbmdlIHBhZ2Ugcm91dGUgKHdpbmRvdyBVUkwpIHdoZW4gc2F2aW5nIGZvciB0aGUgZmlyc3QgdGltZVxuICAgKi9cbiAgYXV0b1VwZGF0ZVJvdXRlPzogYm9vbGVhbjsgLy8gRGVmYXVsdCB0byB0cnVlXG5cbiAgLyoqXG4gICAqIE9wZW4gdGhlIG5leHQgdGFiLCBhZnRlciBzYXZpbmcgZm9yIHRoZSBmaXJzdCB0aW1lXG4gICAqL1xuICBhdXRvT3Blbk5leHRUYWI/OiBib29sZWFuOyAvLyBEZWZhdWx0IHRvIHRydWVcblxuICBpMThuUHJlZml4Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcEVycm9yIHtcbiAgY29kZT86IG51bWJlcjtcbiAgbWVzc2FnZT86IHN0cmluZztcbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcEVycm9yV2l0aERldGFpbHMgZXh0ZW5kcyBBcHBFcnJvciB7XG4gIGRldGFpbHM/OiBBcHBFcnJvciAmIHtlcnJvcnM/OiBGb3JtRXJyb3JzfTtcbn1cblxuLy8gQGR5bmFtaWNcbkBEaXJlY3RpdmUoKVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXBwRW50aXR5RWRpdG9yPFxuICBUIGV4dGVuZHMgRW50aXR5PFQsIElEPixcbiAgUyBleHRlbmRzIElFbnRpdHlTZXJ2aWNlPFQsIElEPiA9IElFbnRpdHlTZXJ2aWNlPFQsIGFueT4sXG4gIElEID0gbnVtYmVyXG4gID5cbiAgZXh0ZW5kcyBBcHBUYWJFZGl0b3I8VCwgSUQsIEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucz5cbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgcHJpdmF0ZSBfdXNhZ2VNb2RlOiBVc2FnZU1vZGU7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VuYWJsZUxpc3RlbkNoYW5nZXM6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhdGhJZEF0dHJpYnV0ZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hdXRvTG9hZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXV0b0xvYWREZWxheTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hdXRvVXBkYXRlUm91dGU6IGJvb2xlYW47XG4gIHByaXZhdGUgX2F1dG9PcGVuTmV4dFRhYjogYm9vbGVhbjtcblxuICBwcm90ZWN0ZWQgZGF0ZUZvcm1hdDogRGF0ZUZvcm1hdFBpcGU7XG4gIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gIHByb3RlY3RlZCBzZXR0aW5nczogTG9jYWxTZXR0aW5nc1NlcnZpY2U7XG4gIHByb3RlY3RlZCBlcnJvclRyYW5zbGF0b3I6IEZvcm1FcnJvclRyYW5zbGF0b3I7XG5cbiAgZGF0YTogVDtcbiAgc2F2aW5nID0gZmFsc2U7XG4gIGxpc3RlblJlbW90ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBkZWZhdWx0QmFja0hyZWY6IHN0cmluZztcbiAgaGlzdG9yeUljb246IHtpY29uPzogc3RyaW5nOyBtYXRJY29uPzogc3RyaW5nIH07XG5cbiAgJHRpdGxlID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBvblVwZGF0ZVZpZXcgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG5cbiAgZ2V0IHVzYWdlTW9kZSgpOiBVc2FnZU1vZGUge1xuICAgIHJldHVybiB0aGlzLl91c2FnZU1vZGU7XG4gIH1cblxuICBzZXQgdXNhZ2VNb2RlKHZhbHVlOiBVc2FnZU1vZGUpIHtcbiAgICBpZiAodGhpcy5fdXNhZ2VNb2RlICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5fdXNhZ2VNb2RlID0gdmFsdWU7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpc09uRmllbGRNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzLmlzT25GaWVsZE1vZGUodGhpcy5fdXNhZ2VNb2RlKTtcbiAgfVxuXG4gIGdldCBpc05ld0RhdGEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzTmlsKHRoaXMuZGF0YT8uaWQpO1xuICB9XG5cbiAgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmc7XG4gIH1cblxuICBnZXQgc2VydmljZSgpOiBTIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZTtcbiAgfVxuXG4gIG1hcmtBc1NhdmluZyhvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pe1xuICAgIGlmICghdGhpcy5zYXZpbmcpIHtcbiAgICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcbiAgICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgbWFya0FzU2F2ZWQob3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KXtcbiAgICBpZiAodGhpcy5zYXZpbmcpIHtcbiAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gICAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGRhdGFUeXBlOiBuZXcoKSA9PiBULFxuICAgIHByb3RlY3RlZCBkYXRhU2VydmljZT86IFMsXG4gICAgQE9wdGlvbmFsKCkgb3B0aW9ucz86IEFwcEVkaXRvck9wdGlvbnNcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IuZ2V0KEFjdGl2YXRlZFJvdXRlKSxcbiAgICAgIGluamVjdG9yLmdldChSb3V0ZXIpLFxuICAgICAgaW5qZWN0b3IuZ2V0KEFsZXJ0Q29udHJvbGxlciksXG4gICAgICBpbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSksXG4gICAgICBvcHRpb25zKTtcbiAgICBvcHRpb25zID0gPEFwcEVkaXRvck9wdGlvbnM+e1xuICAgICAgLy8gRGVmYXVsdCBvcHRpb25zXG4gICAgICBlbmFibGVMaXN0ZW5DaGFuZ2VzOiAoaW5qZWN0b3IuZ2V0KEVOVklST05NRU5UKS5saXN0ZW5SZW1vdGVDaGFuZ2VzID09PSB0cnVlKSxcbiAgICAgIHBhdGhJZEF0dHJpYnV0ZTogJ2lkJyxcbiAgICAgIGF1dG9Mb2FkOiB0cnVlLFxuICAgICAgYXV0b1VwZGF0ZVJvdXRlOiB0cnVlLFxuICAgICAgaTE4blByZWZpeDogJycsXG5cbiAgICAgIC8vIEZvbGxvd2luZyBvcHRpb25zIGFyZSBvdmVycmlkZSBpbnNpZGUgbmdPbkluaXQoKVxuICAgICAgLy8gYXV0b09wZW5OZXh0VGFiOiAuLi4sXG5cbiAgICAgIC8vIE92ZXJyaWRlIGRlZmF1bHRzXG4gICAgICAuLi5vcHRpb25zXG4gICAgfTtcblxuICAgIHRoaXMuc2V0dGluZ3MgPSBpbmplY3Rvci5nZXQoTG9jYWxTZXR0aW5nc1NlcnZpY2UpO1xuICAgIHRoaXMuZXJyb3JUcmFuc2xhdG9yID0gaW5qZWN0b3IuZ2V0KEZvcm1FcnJvclRyYW5zbGF0b3IpO1xuICAgIHRoaXMuY2QgPSBpbmplY3Rvci5nZXQoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHRoaXMuZGF0ZUZvcm1hdCA9IGluamVjdG9yLmdldChEYXRlRm9ybWF0UGlwZSk7XG4gICAgdGhpcy50b2FzdENvbnRyb2xsZXIgPSBpbmplY3Rvci5nZXQoVG9hc3RDb250cm9sbGVyKTtcbiAgICB0aGlzLl9lbmFibGVMaXN0ZW5DaGFuZ2VzID0gb3B0aW9ucy5lbmFibGVMaXN0ZW5DaGFuZ2VzO1xuICAgIHRoaXMuX3BhdGhJZEF0dHJpYnV0ZSA9IG9wdGlvbnMucGF0aElkQXR0cmlidXRlO1xuICAgIHRoaXMuX2F1dG9Mb2FkID0gb3B0aW9ucy5hdXRvTG9hZDtcbiAgICB0aGlzLl9hdXRvTG9hZERlbGF5ID0gb3B0aW9ucy5hdXRvTG9hZERlbGF5O1xuICAgIHRoaXMuX2F1dG9VcGRhdGVSb3V0ZSA9IG9wdGlvbnMuYXV0b1VwZGF0ZVJvdXRlO1xuICAgIHRoaXMuX2F1dG9PcGVuTmV4dFRhYiA9IG9wdGlvbnMuYXV0b09wZW5OZXh0VGFiO1xuICAgIHRoaXMuaTE4bkNvbnRleHQgPSB7XG4gICAgICBwcmVmaXg6IG9wdGlvbnMuaTE4blByZWZpeCxcbiAgICAgIHN1ZmZpeDogJydcbiAgICB9O1xuXG4gICAgLy8gRk9SIERFViBPTkxZIC0tLS1cbiAgICAvL3RoaXMuZGVidWcgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAvLyBEZWZhdWx0c1xuICAgIHRoaXMuX2F1dG9PcGVuTmV4dFRhYiA9IHRvQm9vbGVhbih0aGlzLl9hdXRvT3Blbk5leHRUYWIsICF0aGlzLmlzT25GaWVsZE1vZGUpO1xuICAgIHRoaXMuaGlzdG9yeUljb24gPSB0aGlzLmhpc3RvcnlJY29uIHx8IHtpY29uOiAnbGlzdCd9O1xuXG4gICAgLy8gUmVnaXN0ZXIgZm9ybXNcbiAgICB0aGlzLnJlZ2lzdGVyRm9ybXMoKTtcblxuICAgIC8vIERpc2FibGUgcGFnZSwgZHVyaW5nIGxvYWRcbiAgICB0aGlzLmRpc2FibGUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcblxuICAgIC8vIExvYWQgZGF0YVxuICAgIGlmICh0aGlzLl9hdXRvTG9hZCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmxvYWRGcm9tUm91dGUoKSwgdGhpcy5fYXV0b0xvYWREZWxheSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLmxpc3RlblJlbW90ZVN1YnNjcmlwdGlvbiA9IG51bGw7IC8vIGFscmVhZHkgdW5zdWJzY3JpYmUgaW4gdGhlIHN1cGVyIGZ1bmN0aW9uXG4gICAgdGhpcy4kdGl0bGUuY29tcGxldGUoKTtcbiAgICB0aGlzLiR0aXRsZS51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub25VcGRhdGVWaWV3LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vblVwZGF0ZVZpZXcudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGRhdGEgZnJvbSB0aGUgc25hcHNob3Qgcm91dGVcbiAgICpcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGxvYWRGcm9tUm91dGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgcm91dGUgPSB0aGlzLnJvdXRlLnNuYXBzaG90O1xuICAgIGlmICghcm91dGUgfHwgaXNOaWxPckJsYW5rKHRoaXMuX3BhdGhJZEF0dHJpYnV0ZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGxvYWQgZnJvbSByb3V0ZTogbWlzc2luZyBcXCdyb3V0ZVxcJyBvciBcXCdvcHRpb25zLnBhdGhJZEF0dHJpYnV0ZVxcJy4nKTtcbiAgICB9XG4gICAgbGV0IGlkID0gcm91dGUucGFyYW1zW3RoaXMuX3BhdGhJZEF0dHJpYnV0ZV07XG4gICAgaWYgKGlzTmlsKGlkKSB8fCBpZCA9PT0gJ25ldycpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvYWQodW5kZWZpbmVkLCByb3V0ZS5wYXJhbXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDb252ZXJ0IGFzIG51bWJlciwgaWYgbmVlZFxuICAgICAgaWYgKGlzSW50KGlkKSkge1xuICAgICAgICBpZCA9IHBhcnNlSW50KGlkKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmxvYWQoaWQsIHJvdXRlLnBhcmFtcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgZGF0YSBmcm9tIGlkLCB1c2luZyB0aGUgZGF0YVNlcnZpY2VcbiAgICpcbiAgICogQHBhcmFtIGlkXG4gICAqIEBwYXJhbSBvcHRzXG4gICAqL1xuICBhc3luYyBsb2FkKGlkPzogSUQsIG9wdHM/OiBFbnRpdHlTZXJ2aWNlTG9hZE9wdGlvbnMgJiB7XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgICBvcGVuVGFiSW5kZXg/OiBudW1iZXI7XG4gICAgdXBkYXRlVGFiQW5kUm91dGU/OiBib29sZWFuO1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfSkge1xuICAgIGlmICghdGhpcy5kYXRhU2VydmljZSkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgbG9hZCBkYXRhOiBtaXNzaW5nIFxcJ2RhdGFTZXJ2aWNlXFwnIScpO1xuXG4gICAgdGhpcy5yZXNldEVycm9yKCk7XG5cbiAgICAvLyBOZXcgZGF0YVxuICAgIGlmIChpc05pbChpZCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIENyZWF0ZSB1c2luZyBkZWZhdWx0IHZhbHVlc1xuICAgICAgICBjb25zdCBkYXRhID0gbmV3IHRoaXMuZGF0YVR5cGUoKTtcbiAgICAgICAgdGhpcy5fdXNhZ2VNb2RlID0gdGhpcy5jb21wdXRlVXNhZ2VNb2RlKGRhdGEpO1xuICAgICAgICBhd2FpdCB0aGlzLm9uTmV3RW50aXR5KGRhdGEsIG9wdHMpO1xuICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZVZpZXcoZGF0YSwge1xuICAgICAgICAgIG9wZW5UYWJJbmRleDogMCxcbiAgICAgICAgICAuLi5vcHRzXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLnNldEVycm9yKGVyciwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4ID0gMDtcbiAgICAgIH1cbiAgICAgIGZpbmFsbHkge1xuICAgICAgICB0aGlzLm1hcmtBc0xvYWRlZCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIExvYWQgZXhpc3RpbmcgZGF0YVxuICAgIGVsc2Uge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZGF0YVNlcnZpY2UubG9hZChpZCwgb3B0cyk7XG4gICAgICAgIGlmICghZGF0YSkgdGhyb3cge2NvZGU6IEVycm9yQ29kZXMuREFUQV9OT1RfRk9VTkRfRVJST1IsIG1lc3NhZ2U6ICdFUlJPUi5EQVRBX05PX0ZPVU5EJ307XG4gICAgICAgIHRoaXMuX3VzYWdlTW9kZSA9IHRoaXMuY29tcHV0ZVVzYWdlTW9kZShkYXRhKTtcbiAgICAgICAgYXdhaXQgdGhpcy5vbkVudGl0eUxvYWRlZChkYXRhLCBvcHRzKTtcbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVWaWV3KGRhdGEsIG9wdHMpO1xuICAgICAgICB0aGlzLnN0YXJ0TGlzdGVuUmVtb3RlQ2hhbmdlcygpO1xuICAgICAgfVxuICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLnNldEVycm9yKGVycik7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IDA7XG4gICAgICB9XG4gICAgICBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGFydExpc3RlblJlbW90ZUNoYW5nZXMoKSB7XG4gICAgLy8gU2tpcCBpZiBkaXNhYmxlLCBvciBhbHJlYWR5IGxpc3RlbmluZ1xuICAgIGlmICh0aGlzLmxpc3RlblJlbW90ZVN1YnNjcmlwdGlvbiB8fCAhdGhpcy5fZW5hYmxlTGlzdGVuQ2hhbmdlcyB8fCB0aGlzLmlzTmV3RGF0YSkgcmV0dXJuO1xuXG4gICAgLy8gTGlzdGVuIGZvciBjaGFuZ2VzIG9uIHNlcnZlclxuICAgIHRoaXMubGlzdGVuUmVtb3RlU3Vic2NyaXB0aW9uID0gdGhpcy5kYXRhU2VydmljZS5saXN0ZW5DaGFuZ2VzKHRoaXMuZGF0YS5pZClcbiAgICAgIC5waXBlKGZpbHRlcihpc05vdE5pbCkpXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBUKSA9PiB7XG4gICAgICAgIGlmIChkYXRhLnVwZGF0ZURhdGUgJiYgKGRhdGEudXBkYXRlRGF0ZSBhcyBNb21lbnQpLmlzQWZ0ZXIodGhpcy5kYXRhLnVwZGF0ZURhdGUpKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmRpcnR5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2RhdGEtZWRpdG9yXSBDaGFuZ2VzIGRldGVjdGVkIG9uIHNlcnZlciwgYXQgeyR7ZGF0YS51cGRhdGVEYXRlfX0gOiByZWxvYWRpbmcgcGFnZS4uLmApO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWaWV3KGRhdGEpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2RhdGEtZWRpdG9yXSBDaGFuZ2VzIGRldGVjdGVkIG9uIHNlcnZlciwgYXQgeyR7ZGF0YS51cGRhdGVEYXRlfX0sIGJ1dCBwYWdlIGlzIGRpcnR5OiBza2lwIHJlbG9hZGluZy5gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIHRoaXMubGlzdGVuUmVtb3RlU3Vic2NyaXB0aW9uLmFkZCgoKSA9PiB0aGlzLmxpc3RlblJlbW90ZVN1YnNjcmlwdGlvbiA9IG51bGwpO1xuICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24odGhpcy5saXN0ZW5SZW1vdGVTdWJzY3JpcHRpb24pO1xuICB9XG5cbiAgc3RvcExpc3RlblJlbW90ZUNoYW5nZXMoKXtcbiAgICBpZiAodGhpcy5saXN0ZW5SZW1vdGVTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMudW5yZWdpc3RlclN1YnNjcmlwdGlvbih0aGlzLmxpc3RlblJlbW90ZVN1YnNjcmlwdGlvbik7XG4gICAgICB0aGlzLmxpc3RlblJlbW90ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5saXN0ZW5SZW1vdGVTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVZpZXcoZGF0YTogVCB8IG51bGwsIG9wdHM/OiB7XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgICBvcGVuVGFiSW5kZXg/OiBudW1iZXI7XG4gICAgdXBkYXRlUm91dGU/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaWRDaGFuZ2VkID0gaXNOb3ROaWwoZGF0YS5pZClcbiAgICAgICYmIHRoaXMucHJldmlvdXNEYXRhSWQgIT09IHVuZGVmaW5lZCAvLyBJZ25vcmUgaWYgZmlyc3QgbG9hZGluZyAoPXVuZGVmaW5lZClcbiAgICAgICYmIHRoaXMucHJldmlvdXNEYXRhSWQgIT09IGRhdGEuaWQ7XG5cbiAgICBvcHRzID0ge1xuICAgICAgdXBkYXRlUm91dGU6IHRoaXMuX2F1dG9VcGRhdGVSb3V0ZSAmJiBpZENoYW5nZWQgJiYgIXRoaXMubG9hZGluZyxcbiAgICAgIG9wZW5UYWJJbmRleDogdGhpcy5fYXV0b09wZW5OZXh0VGFiICYmIGlkQ2hhbmdlZCAmJiBpc05pbCh0aGlzLnByZXZpb3VzRGF0YUlkKSAmJiB0aGlzLmNvbXB1dGVOZXh0VGFiSW5kZXgoKSxcbiAgICAgIC4uLm9wdHNcbiAgICB9O1xuXG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICB0aGlzLnByZXZpb3VzRGF0YUlkID0gZGF0YS5pZCB8fCBudWxsO1xuXG4gICAgYXdhaXQgdGhpcy5yZWFkeSgpO1xuICAgIGNvbnN0IHByb21pc2VPclZvaWQgPSB0aGlzLnNldFZhbHVlKGRhdGEpO1xuICAgIGlmIChwcm9taXNlT3JWb2lkKSBhd2FpdCBwcm9taXNlT3JWb2lkO1xuXG4gICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgdGhpcy5tYXJrQXNVbnRvdWNoZWQoKTtcbiAgICAgIHRoaXMudXBkYXRlVmlld1N0YXRlKGRhdGEpO1xuXG4gICAgICAvLyBOZWVkIHRvIHVwZGF0ZSByb3V0ZVxuICAgICAgaWYgKG9wdHMudXBkYXRlUm91dGUgPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy51cGRhdGVUYWJBbmRSb3V0ZShkYXRhLCBvcHRzKVxuICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgdGl0bGUgLSBzaG91bGQgYmUgZXhlY3V0ZWQgQUZURVIgdXBkYXRlUm91dGUgYmVjYXVzZSBvZiBwYXRoIGNoYW5nZSAtIGZpeCAjMTg1XG4gICAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy51cGRhdGVUaXRsZShkYXRhKSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgLy8gVXBkYXRlIHRoZSBuZXh0IHRhYlxuICAgICAgICB0aGlzLnVwZGF0ZVRhYkluZGV4KG9wdHMub3BlblRhYkluZGV4KTtcblxuICAgICAgICAvLyBVcGRhdGUgdGhlIHRpdGxlLlxuICAgICAgICB0aGlzLnVwZGF0ZVRpdGxlKGRhdGEpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm9uVXBkYXRlVmlldy5lbWl0KGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGUgb3IgZGlzYWJsZSBzdGF0ZVxuICAgKi9cbiAgdXBkYXRlVmlld1N0YXRlKGRhdGE6IFQsIG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICBpZiAodGhpcy5pc05ld0RhdGEgfHwgdGhpcy5jYW5Vc2VyV3JpdGUoZGF0YSkpIHtcbiAgICAgIHRoaXMuZW5hYmxlKG9wdHMpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuZGlzYWJsZShvcHRzKTtcblxuICAgICAgLy8gQWxsb3cgdG8gc29ydCB0YWJsZVxuICAgICAgdGhpcy50YWJsZXMuZm9yRWFjaCh0ID0+IHQuZW5hYmxlU29ydCgpKTtcbiAgICB9XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHJvdXRlIGxvY2F0aW9uLCBhbmQgb3BlbiB0aGUgbmV4dCB0YWJcbiAgICovXG4gIGFzeW5jIHVwZGF0ZVRhYkFuZFJvdXRlKGRhdGE6IFQsIG9wdHM/OiB7XG4gICAgb3BlblRhYkluZGV4PzogbnVtYmVyO1xuICB9KTogUHJvbWlzZTx2b2lkPiB7XG5cbiAgICB0aGlzLnF1ZXJ5UGFyYW1zID0gdGhpcy5xdWVyeVBhcmFtcyB8fCB7fTtcblxuICAgIC8vIE9wZW4gdGhlIG5leHQgdGFiXG4gICAgdGhpcy51cGRhdGVUYWJJbmRleChvcHRzICYmIG9wdHMub3BlblRhYkluZGV4KTtcblxuICAgIC8vIFNhdmUgdGhlIG9wZW5lZCB0YWIgaW50byB0aGUgcXVlcnlQYXJhbXNcbiAgICB0aGlzLnF1ZXJ5UGFyYW1zLnRhYiA9IHRoaXMuc2VsZWN0ZWRUYWJJbmRleDtcblxuICAgIC8vIFVwZGF0ZSByb3V0ZSBsb2NhdGlvblxuICAgIGNvbnN0IGZvcmNlZFF1ZXJ5UGFyYW1zID0ge307XG4gICAgZm9yY2VkUXVlcnlQYXJhbXNbdGhpcy5fcGF0aElkQXR0cmlidXRlXSA9IGRhdGEgJiYgaXNOb3ROaWwoZGF0YS5pZCkgPyBkYXRhLmlkIDogJ25ldyc7XG4gICAgaWYgKGRhdGEgJiYgaXNOb3ROaWwoZGF0YS5pZCkpIHtcbiAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLiddLCB7XG4gICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICAgIHF1ZXJ5UGFyYW1zOiB7Li4udGhpcy5xdWVyeVBhcmFtcywgLi4uZm9yY2VkUXVlcnlQYXJhbXN9XG4gICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uJywgJ25ldyddLCB7XG4gICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICAgIHF1ZXJ5UGFyYW1zOiB7Li4udGhpcy5xdWVyeVBhcmFtcywgLi4uZm9yY2VkUXVlcnlQYXJhbXN9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnVwZGF0ZVJvdXRlKGRhdGEsIHRoaXMucXVlcnlQYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgcm91dGUgbG9jYXRpb24sIGFuZCBvcGVuIHRoZSBuZXh0IHRhYlxuICAgKi9cbiAgdXBkYXRlVGFiSW5kZXgodGFiSW5kZXg/OiBudW1iZXIpIHtcbiAgICBpZiAoaXNOb3ROaWwodGFiSW5kZXgpICYmIHRhYkluZGV4ID4gdGhpcy5zZWxlY3RlZFRhYkluZGV4KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPSB0YWJJbmRleDtcbiAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2F2ZUFuZENsb3NlKGV2ZW50OiBFdmVudCwgb3B0aW9ucz86IGFueSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXG4gICAgY29uc3Qgc2F2ZWQgPSBhd2FpdCB0aGlzLnNhdmUoZXZlbnQpO1xuICAgIGlmIChzYXZlZCkge1xuICAgICAgYXdhaXQgdGhpcy5jbG9zZShldmVudCk7XG4gICAgfVxuICAgIHJldHVybiBzYXZlZDtcbiAgfVxuXG4gIGFzeW5jIGNsb3NlKGV2ZW50OiBFdmVudCkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHJldHVybjtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ29CYWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSB0aGUgZWRpdG9yLCBieSBjYWxsaW5nIHRoZSBkYXRhU2VydmljZS5zYXZlKCkuXG4gICAqIEVuc3VyZSB0aGF0IGVkaXRvciBpZiB2YWxpZC4gSWYgbm90LCBkaXNwbGF5IGFuIGVycm9yXG4gICAqIEBwYXJhbSBldmVudFxuICAgKiBAcGFyYW0gb3B0c1xuICAgKi9cbiAgYXN5bmMgc2F2ZShldmVudD86IEV2ZW50LCBvcHRzPzogYW55KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMubG9hZGluZyB8fCB0aGlzLnNhdmluZykge1xuICAgICAgY29uc29sZS5kZWJ1ZygnW2RhdGEtZWRpdG9yXSBTa2lwIHNhdmU6IGVkaXRvciBpcyBidXN5IChsb2FkaW5nIG9yIHNhdmluZyknKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmRpcnR5KSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbZGF0YS1lZGl0b3JdIFNraXAgc2F2ZTogZWRpdG9yIG5vdCBkaXJ0eScpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gV2FpdCBlbmQgb2YgYXN5bmMgdmFsaWRhdGlvblxuICAgIGF3YWl0IHRoaXMud2FpdFdoaWxlUGVuZGluZygpO1xuXG4gICAgLy8gSWYgaW52YWxpZFxuICAgIGlmICh0aGlzLmludmFsaWQpIHtcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgdGhpcy5sb2dGb3JtRXJyb3JzKCk7XG4gICAgICB0aGlzLm9wZW5GaXJzdEludmFsaWRUYWIoKTtcblxuICAgICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMubWFya0FzU2F2aW5nKCk7XG4gICAgdGhpcy5yZXNldEVycm9yKCk7XG5cbiAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2RhdGEtZWRpdG9yXSBTYXZpbmcgZGF0YS4uLicpO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIEdldCBkYXRhXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5nZXRWYWx1ZSgpO1xuXG4gICAgICB0aGlzLmRpc2FibGUoKTtcblxuICAgICAgLy8gU2F2ZSBmb3JtXG4gICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IGF3YWl0IHRoaXMuZGF0YVNlcnZpY2Uuc2F2ZShkYXRhLCBvcHRzKTtcblxuICAgICAgYXdhaXQgdGhpcy5vbkVudGl0eVNhdmVkKHVwZGF0ZWREYXRhKTtcblxuICAgICAgLy8gVXBkYXRlIHRoZSB2aWV3IChlLmcgbWV0YWRhdGEpXG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZVZpZXcodXBkYXRlZERhdGEsIG9wdHMpO1xuXG4gICAgICAvLyBTdWJzY3JpYmUgdG8gcmVtb3RlIGNoYW5nZXNcbiAgICAgIGlmICghdGhpcy5saXN0ZW5SZW1vdGVTdWJzY3JpcHRpb24pIHRoaXMuc3RhcnRMaXN0ZW5SZW1vdGVDaGFuZ2VzKCk7XG5cbiAgICAgIHRoaXMuc3VibWl0dGVkID0gZmFsc2U7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zZXRFcnJvcihlcnIpO1xuICAgICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4ID0gMDtcbiAgICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKTsgLy8gU2Nyb2xsIHRvIHRvcCAodG8gc2hvdyBlcnJvcilcbiAgICAgIHRoaXMubWFya0FzRGlydHkoKTtcbiAgICAgIHRoaXMuZW5hYmxlKCk7XG5cbiAgICAgIC8vIENvbmN1cnJlbnQgY2hhbmdlIG9uIHBvZFxuICAgICAgaWYgKGVyci5jb2RlID09PSBTZXJ2ZXJFcnJvckNvZGVzLkJBRF9VUERBVEVfREFURSAmJiBpc05vdE5pbCh0aGlzLmRhdGEuaWQpKSB7XG4gICAgICAgIC8vIENhbGwgYSBkYXRhIHJlbG9hZCAoaW4gYmFja2dyb3VuZCksIHRvIHVwZGF0ZSB0aGUgR3JhcGhRTCBjYWNoZSwgYW5kIGFsbG93IHRvIGNhbmNlbCBjaGFuZ2VzXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2UubG9hZCh0aGlzLmRhdGEuaWQsIHtmZXRjaFBvbGljeTogJ25ldHdvcmstb25seSd9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmRlYnVnKCdbZGF0YS1lZGl0b3JdIERhdGEgY2FjaGUgcmVsb2FkZWQuIFVzZXIgY2FuIHJlbG9hZCBwYWdlJyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubWFya0FzU2F2ZWQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBkYXRhIChpZiBkaXJ0eSBhbmQgdmFsaWQpLCBhbmQgcmV0dXJuIGl0LiBPdGhlcndpc2UsIHJldHVybiBuaWwgdmFsdWUuXG4gICAqL1xuICBhc3luYyBzYXZlQW5kR2V0RGF0YUlmVmFsaWQoKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgLy8gRm9ybSBpcyBub3QgdmFsaWRcbiAgICBpZiAoIXRoaXMudmFsaWQpIHtcblxuICAgICAgLy8gTWFrZSBzdXJlIHZhbGlkYXRpb24gaXMgZmluaXNoZWRcbiAgICAgIGF3YWl0IEFwcEZvcm1VdGlscy53YWl0V2hpbGVQZW5kaW5nKHRoaXMpO1xuXG4gICAgICAvLyBJZiBpbnZhbGlkOiBPcGVuIHRoZSBmaXJzdCB0YWIgaW4gZXJyb3JcbiAgICAgIGlmICh0aGlzLmludmFsaWQpIHtcbiAgICAgICAgdGhpcy5vcGVuRmlyc3RJbnZhbGlkVGFiKCk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIENvbnRpbnVlICh2YWxpZClcbiAgICB9XG5cbiAgICAvLyBGb3JtIGlzIHZhbGlkLCBidXQgbm90IHNhdmVkXG4gICAgaWYgKHRoaXMuZGlydHkpIHtcbiAgICAgIGNvbnN0IHNhdmVkID0gYXdhaXQgdGhpcy5zYXZlKG5ldyBFdmVudCgnc2F2ZScpKTtcbiAgICAgIGlmICghc2F2ZWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gVmFsaWQgYW5kIHNhdmVkIGRhdGFcbiAgICByZXR1cm4gdGhpcy5kYXRhO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlKGV2ZW50PzogVUlFdmVudCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLmxvYWRpbmcgfHwgdGhpcy5zYXZpbmcpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIEFzayB1c2VyIGNvbmZpcm1hdGlvblxuICAgIGNvbnN0IGNvbmZpcm1hdGlvbiA9IGF3YWl0IEFsZXJ0cy5hc2tEZWxldGVDb25maXJtYXRpb24odGhpcy5hbGVydEN0cmwsIHRoaXMudHJhbnNsYXRlKTtcbiAgICBpZiAoIWNvbmZpcm1hdGlvbikgcmV0dXJuO1xuXG4gICAgY29uc29sZS5kZWJ1ZygnW2RhdGEtZWRpdG9yXSBBc2tpbmcgdG8gZGVsZXRlLi4uJyk7XG5cbiAgICB0aGlzLm1hcmtBc1NhdmluZygpO1xuICAgIHRoaXMucmVzZXRFcnJvcigpO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIEdldCBkYXRhXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgaXNOZXcgPSB0aGlzLmlzTmV3RGF0YTtcblxuICAgICAgdGhpcy5kaXNhYmxlKCk7XG5cbiAgICAgIGlmICghaXNOZXcpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5kYXRhU2VydmljZS5kZWxldGUoZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRoaXMub25FbnRpdHlEZWxldGVkKGRhdGEpO1xuXG4gICAgICAvLyBSZW1vdmUgcGFnZSBoaXN0b3J5XG4gICAgICB0aGlzLnJlbW92ZVBhZ2VIaXN0b3J5KCk7XG5cblxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zZXRFcnJvcihlcnIpO1xuICAgICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4ID0gMDtcbiAgICAgIHRoaXMubWFya0FzU2F2ZWQoKTtcbiAgICAgIHRoaXMuZW5hYmxlKCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gV2FpdCwgdGhlbiBnbyBiYWNrICh3YWl0IGlzIG5lZWQgaW4gb3JkZXIgdG8gdXBkYXRlIGJhY2sgaHJlZiBpcyBuZWVkKVxuICAgIGF3YWl0IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5nb0JhY2soKSwgNTAwKTtcblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgcmVsb2FkKCkge1xuICAgIHRoaXMubWFya0FzTG9hZGluZygpO1xuICAgIGF3YWl0IHRoaXMubG9hZCh0aGlzLmRhdGEgJiYgdGhpcy5kYXRhLmlkKTtcbiAgfVxuXG4gIGFzeW5jIGdvQmFjayhldmVudD86IEV2ZW50KTogUHJvbWlzZTx2b2lkIHwgYm9vbGVhbj4ge1xuICAgIC8vIEdvIGJhY2tcbiAgICBpZiAodGhpcy50b29sYmFyPy5jYW5Hb0JhY2spIHtcbiAgICAgIHJldHVybiB0aGlzLnRvb2xiYXIuZ29CYWNrKCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMuZGVmYXVsdEJhY2tIcmVmKSB7XG4gICAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmRlZmF1bHRCYWNrSHJlZik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEJhY2sgdG8gaG9tZVxuICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy8nKTtcbiAgICB9XG4gIH1cblxuICByZXNldEVycm9yKG9wdHM/OiB7ZW1pdEV2ZW50PzogYm9vbGVhbn0pIHtcbiAgICBpZiAoaXNOb3ROaWxPckJsYW5rKHRoaXMuZXJyb3IpKSB7XG4gICAgICB0aGlzLmVycm9yID0gbnVsbDtcbiAgICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0RXJyb3IoZXJyOiBzdHJpbmcgfCBBcHBFcnJvcldpdGhEZXRhaWxzLCBvcHRzPzoge2VtaXRFdmVudD86IGJvb2xlYW47IGRldGFpbHNDc3NDbGFzcz86IHN0cmluZzt9KSB7XG5cbiAgICBpZiAoIWVyciB8fCB0eXBlb2YgZXJyID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc29sZS5lcnJvcignW2VudGl0eS1lZGl0b3JdIEVycm9yOiAnICsgKGVyciB8fCAnJykpO1xuICAgICAgdGhpcy5lcnJvciA9IGVyciBhcyBzdHJpbmc7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignW2VudGl0eS1lZGl0b3JdIEVycm9yOiAnICsgZXJyLm1lc3NhZ2UgfHwgJycsIGVycik7XG4gICAgICBsZXQgdXNlck1lc3NhZ2UgPSBlcnIubWVzc2FnZSAmJiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGVyci5tZXNzYWdlKSB8fCBlcnI7XG5cbiAgICAgIC8vIEFkZCBkZXRhaWxzIGVycm9yIChpZiBhbnkpIHVuZGVyIHRoZSBtYWluIG1lc3NhZ2VcbiAgICAgIGNvbnN0IGRldGFpbE1lc3NhZ2UgPSAoIWVyci5kZXRhaWxzIHx8IHR5cGVvZiBlcnIuZGV0YWlscyA9PT0gJ3N0cmluZycpXG4gICAgICAgID8gZXJyLmRldGFpbHMgYXMgc3RyaW5nXG4gICAgICAgIDogZXJyLmRldGFpbHMubWVzc2FnZTtcbiAgICAgIGlmIChpc05vdE5pbE9yQmxhbmsoZGV0YWlsTWVzc2FnZSkpIHtcbiAgICAgICAgY29uc3QgY3NzQ2xhc3MgPSBvcHRzPy5kZXRhaWxzQ3NzQ2xhc3MgfHwgJ2hpZGRlbi14cyBoaWRkZW4tc20nO1xuICAgICAgICB1c2VyTWVzc2FnZSArPSBgPGJyLz48c21hbGwgY2xhc3M9XCIke2Nzc0NsYXNzfVwiIHRpdGxlPVwiJHtkZXRhaWxNZXNzYWdlfVwiPmA7XG4gICAgICAgIHVzZXJNZXNzYWdlICs9IGRldGFpbE1lc3NhZ2UubGVuZ3RoIDwgNzAgPyBkZXRhaWxNZXNzYWdlIDogZGV0YWlsTWVzc2FnZS5zdWJzdHJpbmcoMCwgNjcpICsgJy4uLic7XG4gICAgICAgIHVzZXJNZXNzYWdlICs9ICc8L3NtYWxsPic7XG4gICAgICB9XG4gICAgICB0aGlzLmVycm9yID0gdXNlck1lc3NhZ2U7XG4gICAgfVxuICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKiAtLSBwdWJsaWMgYWJzdHJhY3QgbWV0aG9kcyAodG8gb3ZlcnJpZGUpIC0tICovXG5cbiAgY2FuVXNlcldyaXRlKGRhdGE6IFQsIG9wdHM/OiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5jYW5Vc2VyV3JpdGUoZGF0YSwgb3B0cyk7XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgYWJzdHJhY3QgbWV0aG9kcyAodG8gb3ZlcnJpZGUpIC0tICovXG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlZ2lzdGVyRm9ybXMoKTtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY29tcHV0ZVRpdGxlKGRhdGE6IFQpOiBQcm9taXNlPHN0cmluZz47XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNldFZhbHVlKGRhdGE6IFQpOiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IGZvcm0oKTogRm9ybUdyb3VwO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRGaXJzdEludmFsaWRUYWJJbmRleCgpOiBudW1iZXI7XG5cbiAgLyogLS0gcHJvdGVjdGVkIG1ldGhvZHMgLS0gKi9cblxuICAvKipcbiAgICogUmV0dXJuIHVuZGVmaW5lZCB0byBrZWVwIHNhbWUgdGFiXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBjb21wdXRlTmV4dFRhYkluZGV4KCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbmV4dFRhYkluZGV4ID0gdGhpcy5zZWxlY3RlZFRhYkluZGV4ICsgMTtcbiAgICByZXR1cm4gbmV4dFRhYkluZGV4IDwgdGhpcy50YWJDb3VudCA/IG5leHRUYWJJbmRleCA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnN0b3BMaXN0ZW5SZW1vdGVDaGFuZ2VzKCk7XG4gICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gICAgdGhpcy5yZWdpc3RlckZvcm1zKCk7XG4gICAgdGhpcy5fZGlydHkgPSBmYWxzZTtcbiAgICB0aGlzLmRhdGEgPSBudWxsO1xuICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgb25CZWZvcmVFbnRpdHlMb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIGNhbiBiZSBvdmVyd3JpdHRlbiBieSBzdWJjbGFzc2VzXG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgb25OZXdFbnRpdHkoZGF0YTogVCwgb3B0aW9ucz86IEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIGNhbiBiZSBvdmVyd3JpdHRlbiBieSBzdWJjbGFzc2VzXG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgb25FbnRpdHlMb2FkZWQoZGF0YTogVCwgb3B0aW9ucz86IEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIGNhbiBiZSBvdmVyd3JpdHRlbiBieSBzdWJjbGFzc2VzXG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgb25FbnRpdHlTYXZlZChkYXRhOiBUKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gY2FuIGJlIG92ZXJ3cml0dGVuIGJ5IHN1YmNsYXNzZXNcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBvbkVudGl0eURlbGV0ZWQoZGF0YTogVCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIGNhbiBiZSBvdmVyd3JpdHRlbiBieSBzdWJjbGFzc2VzXG4gIH1cblxuICBwcm90ZWN0ZWQgY29tcHV0ZVVzYWdlTW9kZShkYXRhOiBUKTogVXNhZ2VNb2RlIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5pc1VzYWdlTW9kZSgnRklFTEQnKSA/ICdGSUVMRCcgOiAnREVTSyc7XG4gIH1cblxuICBwcm90ZWN0ZWQgd2FpdFdoaWxlUGVuZGluZyhvcHRzPzogV2FpdEZvck9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gQXBwRm9ybVV0aWxzLndhaXRXaGlsZVBlbmRpbmcodGhpcywgb3B0cyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0VmFsdWUoKTogUHJvbWlzZTxUPiB7XG4gICAgY29uc3QganNvbiA9IGF3YWl0IHRoaXMuZ2V0SnNvblZhbHVlVG9TYXZlKCk7XG5cbiAgICBjb25zdCByZXMgPSBuZXcgdGhpcy5kYXRhVHlwZSgpO1xuICAgIHJlcy5mcm9tT2JqZWN0KGpzb24pO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRKc29uVmFsdWVUb1NhdmUoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuZm9ybS52YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZSB0aGUgdGl0bGVcbiAgICpcbiAgICogQHBhcmFtIGRhdGFcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyB1cGRhdGVUaXRsZShkYXRhPzogVCkge1xuICAgIGRhdGEgPSBkYXRhIHx8IHRoaXMuZGF0YTtcbiAgICBjb25zdCB0aXRsZSA9IGF3YWl0IHRoaXMuY29tcHV0ZVRpdGxlKGRhdGEpO1xuICAgIHRoaXMuJHRpdGxlLm5leHQodGl0bGUpO1xuXG4gICAgLy8gSWYgTk9UIGRhdGEsIHRoZW4gYWRkIHRvIHBhZ2UgaGlzdG9yeVxuICAgIGlmICghdGhpcy5pc05ld0RhdGEpIHtcbiAgICAgIGNvbnN0IHBhZ2UgPSBhd2FpdCB0aGlzLmNvbXB1dGVQYWdlSGlzdG9yeSh0aXRsZSk7XG4gICAgICByZXR1cm4gdGhpcy5hZGRUb1BhZ2VIaXN0b3J5KHBhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBhZGRUb1BhZ2VIaXN0b3J5KHBhZ2U6IEhpc3RvcnlQYWdlUmVmZXJlbmNlLCBvcHRzPzogQWRkVG9QYWdlSGlzdG9yeU9wdGlvbnMpIHtcbiAgICBpZiAoIXBhZ2UpIHJldHVybjsgLy8gU2tpcFxuXG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3MuYWRkVG9QYWdlSGlzdG9yeShwYWdlLCB7XG4gICAgICByZW1vdmVQYXRoUXVlcnlQYXJhbXM6IHRydWUsXG4gICAgICByZW1vdmVUaXRsZVNtYWxsVGFnOiB0cnVlLFxuICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgIC4uLm9wdHNcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBjb21wdXRlUGFnZUhpc3RvcnkodGl0bGU6IHN0cmluZyk6IFByb21pc2U8SGlzdG9yeVBhZ2VSZWZlcmVuY2U+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGUsXG4gICAgICBwYXRoOiB0aGlzLnJvdXRlci51cmxcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHJlbW92ZVBhZ2VIaXN0b3J5KG9wdHM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzLnJlbW92ZVBhZ2VIaXN0b3J5KHRoaXMucm91dGVyLnVybCwgb3B0cyk7XG4gIH1cblxuXG4gIHByb3RlY3RlZCBjb21wdXRlUGFnZVVybChpZDogSUR8J25ldycpOiBzdHJpbmcgfCBhbnlbXSB7XG4gICAgY29uc3QgcGFyZW50VXJsID0gdGhpcy5nZXRQYXJlbnRQYWdlVXJsKCk7XG4gICAgcmV0dXJuIHBhcmVudFVybCAmJiBgJHtwYXJlbnRVcmx9LyR7aWR9YDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRQYXJlbnRQYWdlVXJsKHdpdGhRdWVyeVBhcmFtcz86IGJvb2xlYW4pIHtcbiAgICBsZXQgcGFyZW50VXJsID0gdGhpcy5kZWZhdWx0QmFja0hyZWY7XG5cbiAgICAvLyBSZW1vdmUgcXVlcnkgcGFyYW1zXG4gICAgaWYgKHdpdGhRdWVyeVBhcmFtcyAhPT0gdHJ1ZSAmJiBwYXJlbnRVcmwgJiYgcGFyZW50VXJsLmluZGV4T2YoJz8nKSAhPT0gLTEpIHtcbiAgICAgIHBhcmVudFVybCA9IHBhcmVudFVybC5zdWJzdHIoMCwgcGFyZW50VXJsLmluZGV4T2YoJz8nKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmVudFVybDtcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qIC0tIHByaXZhdGUgZnVuY3Rpb25zIC0tICovXG5cbiAgLyoqXG4gICAqIE9wZW4gdGhlIGZpcnN0IHRhYiB0aGF0IGlzIGludmFsaWRcbiAgICovXG4gIHByaXZhdGUgb3BlbkZpcnN0SW52YWxpZFRhYigpIHtcbiAgICBjb25zdCBpbnZhbGlkVGFiSW5kZXggPSB0aGlzLmdldEZpcnN0SW52YWxpZFRhYkluZGV4KCk7XG4gICAgaWYgKGludmFsaWRUYWJJbmRleCAhPT0gLTEgJiYgdGhpcy5zZWxlY3RlZFRhYkluZGV4ICE9PSBpbnZhbGlkVGFiSW5kZXgpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IGludmFsaWRUYWJJbmRleDtcbiAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHVwZGF0ZVJvdXRlKGRhdGE6IFQsIHF1ZXJ5UGFyYW1zOiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5jb21wdXRlUGFnZVVybChpc05vdE5pbChkYXRhLmlkKSA/IGRhdGEuaWQgOiAnbmV3Jyk7XG4gICAgY29uc3QgY29tbWFuZHM6IGFueVtdID0gKHBhdGggJiYgdHlwZW9mIHBhdGggPT09ICdzdHJpbmcnKSA/IHBhdGguc3BsaXQoJy8nKSA6IHBhdGggYXMgYW55W107XG4gICAgaWYgKGlzTm90RW1wdHlBcnJheShjb21tYW5kcykpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShjb21tYW5kcywge1xuICAgICAgICByZXBsYWNlVXJsOiB0cnVlLFxuICAgICAgICBxdWVyeVBhcmFtczogdGhpcy5xdWVyeVBhcmFtc1xuICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKCdTa2lwIHBhZ2Ugcm91dGUgdXBkYXRlLiBJbnZhbGlkIHBhZ2UgcGF0aDogJywgcGF0aCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -243,7 +243,7 @@ HomePage.decorators = [
|
|
|
243
243
|
template: "<app-toolbar [canGoBack]=\"false\"\n visible-xs visible-sm visible-mobile>\n\n <!-- change locale button -->\n <ion-button slot=\"end\" *ngIf=\"currentLocaleCode; let code\"\n [matMenuTriggerFor]=\"localeMenu\">\n <ion-label class=\"ion-text-uppercase\"> {{ code }}</ion-label>\n <mat-icon slot=\"end\">arrow_drop_down</mat-icon>\n </ion-button>\n</app-toolbar>\n\n<!-- change locale menu -->\n<mat-menu #localeMenu=\"matMenu\">\n <button *ngFor=\"let item of locales\"\n mat-menu-item\n (click)=\"changeLanguage(item.key)\">\n <ion-label>{{item.value}}</ion-label>\n </button>\n</mat-menu>\n\n<ion-content [ngStyle]=\"contentStyle\" no-padding-xs>\n\n <!-- loading spinner -->\n <div class=\"loading-page\" [class.cdk-visually-hidden]=\"!loading\">\n <div class=\"spinner\" *ngIf=\"loading && showSpinner\">\n <p>Loading...</p>\n <div class=\"sk-cube1 sk-cube\"></div>\n <div class=\"sk-cube2 sk-cube\"></div>\n <div class=\"sk-cube4 sk-cube\"></div>\n <div class=\"sk-cube3 sk-cube\"></div>\n </div>\n </div>\n\n <!-- Desktop: translucent top toolbar -->\n <div hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar translucent>\n <ion-buttons slot=\"start\">\n <ion-menu-toggle>\n <ion-button color=\"light\" fill=\"clear\">\n <ion-icon slot=\"icon-only\" name=\"menu\"></ion-icon>\n </ion-button>\n </ion-menu-toggle>\n </ion-buttons>\n\n <ion-buttons slot=\"end\">\n <!-- change locale button -->\n <ion-button color=\"secondary\" fill=\"solid\"\n *ngIf=\"currentLocaleCode; let code\"\n [matMenuTriggerFor]=\"localeMenu\">\n <ion-label class=\"ion-text-uppercase\"> {{ code }}</ion-label>\n <mat-icon slot=\"end\">arrow_drop_down</mat-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </div>\n\n <!-- Install (and upgrade) card -->\n <app-install-upgrade-card [isLogin]=\"isLogin\"\n showInstallButton=\"true\">\n </app-install-upgrade-card>\n\n <!-- Welcome card -->\n <ion-card *ngIf=\"!loading\"\n class=\"main welcome ion-padding ion-text-center ion-align-self-center\"\n @fadeInAnimation>\n <ion-card-header>\n <ion-card-title class=\"ion-text-center\">\n <span *ngIf=\"isWeb\" [innerHTML]=\"'HOME.WELCOME_WEB'|translate: {appName: appName}\"></span>\n <span *ngIf=\"!isWeb\" [innerHTML]=\"'HOME.WELCOME_APP'|translate: {appName: appName}\"></span>\n </ion-card-title>\n <ion-card-subtitle [innerHTML]=\"description\">\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content class=\"ion-no-padding\">\n <ion-text color=\"primary\">\n <img class=\"logo\" *ngIf=\"logo\" src=\"{{ logo }}\">\n </ion-text>\n <!-- register help text -->\n <ion-text *ngIf=\"!isLogin && canRegister\">\n <br/>\n <span translate>HOME.REGISTER_HELP</span>\n </ion-text>\n </ion-card-content>\n\n <ion-footer class=\"ion-padding-top\">\n\n <!-- If NOT login -->\n <ng-container *ngIf=\"!isLogin; else loginButtons;\">\n\n <ion-button *ngIf=\"canRegister\" expand=\"block\" color=\"tertiary\" (click)=\"register()\">\n <span translate>HOME.BTN_REGISTER</span>\n </ion-button>\n <ion-button expand=\"block\" color=\"light\" [routerLink]=\"['/']\" (click)=\"login()\">\n <span translate>AUTH.BTN_LOGIN</span>\n </ion-button>\n\n </ng-container>\n\n <!-- If user login -->\n <ng-template #loginButtons>\n\n <!-- Feature buttons -->\n <ng-container *ngIf=\"$filteredButtons | async as buttons\">\n <ng-container *ngFor=\"let item of buttons\">\n <ion-button *ngIf=\"item.path\"\n expand=\"block\" color=\"tertiary\"\n [class]=\"item.cssClass\"\n [routerLink]=\"item.path\"\n routerDirection=\"root\">\n <ion-icon slot=\"start\" class=\"ion-float-start\" *ngIf=\"item.icon\" [name]=\"item.icon\"></ion-icon>\n <mat-icon slot=\"start\" class=\"ion-float-start\" *ngIf=\"item.matIcon\">{{item.matIcon}}</mat-icon>\n <ion-text>{{'HOME.BTN_DATA_ENTRY'|translate: {name: (item.title | translate) } }}</ion-text>\n </ion-button>\n\n <!-- divider -->\n <div *ngIf=\"!item.path && !item.action\" [class]=\"item.cssClass\">\n <ion-label translate>{{item.title}} </ion-label>\n </div>\n </ng-container>\n\n <!--<p *ngIf=\"buttons.length\" class=\"visible-mobile\"> </p>-->\n </ng-container>\n\n <ion-button expand=\"block\" color=\"secondary\" [routerLink]=\"['/account']\">\n <ion-icon slot=\"start\" class=\"ion-float-start\" name=\"person-circle\"></ion-icon>\n <ion-text translate>HOME.BTN_MY_ACCOUNT</ion-text>\n </ion-button>\n\n <p hidden-xs hidden-sm hidden-mobile>\n <ion-text [innerHTML]=\"'HOME.NOT_THIS_ACCOUNT_QUESTION' | translate: {displayName: accountName }\"></ion-text>\n <br/>\n <ion-text>\n <a href=\"#\" (click)=\"logout($event)\">\n <span translate>HOME.BTN_DISCONNECT</span>\n </a>\n </ion-text>\n </p>\n\n\n </ng-template>\n\n </ion-footer>\n </ion-card>\n\n <!-- Page history -->\n <ion-grid *ngIf=\"!loading && isLogin && pageHistory.length; else bottomBanner\"\n class=\"history-container ion-align-self-center\">\n <ion-row>\n <ion-col size=\"12\" size-xl=\"\" *ngFor=\"let page of pageHistory; trackBy: getPagePath\"\n class=\"ion-text-center\">\n <ion-card class=\"ion-align-self-start ion-text-start\" @fadeInAnimation>\n <ion-card-header class=\"ion-no-padding\">\n <!-- top bar -->\n <ion-card-subtitle>\n <button type=\"button\" tabindex=\"-1\"\n (click)=\"settings.removePageHistory(page.path)\"\n mat-icon-button class=\"ion-float-start ion-no-margin\">\n <mat-icon>close</mat-icon>\n </button>\n <ion-label [innerHTML]=\"page.subtitle|translate\"></ion-label>\n <ion-text class=\"ion-float-end\" [title]=\"page.time|dateFormat:{time: true}\">\n <small><ion-icon name=\"time-outline\"></ion-icon> {{ page.time|dateFromNow }}</small> \n </ion-text>\n </ion-card-subtitle>\n\n <!-- main page -->\n <ion-card-title class=\"ion-no-margin ion-no-padding\">\n <ion-item detail=\"true\"\n tappable class=\"text-1x\"\n [routerLink]=\"page.path\"\n routerDirection=\"root\" lines=\"none\">\n <!-- page icon-->\n <ion-icon *ngIf=\"page.icon\" slot=\"start\" [name]=\"page.icon\"></ion-icon>\n <mat-icon *ngIf=\"page.matIcon\" slot=\"start\">{{page.matIcon}}</mat-icon>\n\n <ion-label color=\"primary\" [innerHTML]=\"page.title\"></ion-label>\n </ion-item>\n </ion-card-title>\n </ion-card-header>\n\n <!-- children pages -->\n <ion-card-content class=\"ion-no-padding ion-padding-start\" *ngIf=\"page.children?.length\">\n <ion-list class=\"ion-no-padding\">\n <ion-item detail=\"true\"\n *ngFor=\"let childPage of page.children\"\n tappable class=\"text-1x\"\n [routerLink]=\"childPage.path\"\n routerDirection=\"root\">\n <!-- page icon-->\n <ion-icon *ngIf=\"childPage.icon\" slot=\"start\" color=\"dark\" [name]=\"childPage.icon\"></ion-icon>\n <mat-icon *ngIf=\"childPage.matIcon\" slot=\"start\" color=\"dark\">{{childPage.matIcon}}</mat-icon>\n\n <ion-label color=\"dark\" [innerHTML]=\"childPage.title\"></ion-label>\n </ion-item>\n </ion-list>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n <!-- Display configured Departments logos -->\n <ng-template #bottomBanner>\n <div class=\"bottom-banner ion-text-center ion-padding\" *ngIf=\"!loadingBanner\" @fadeInAnimation>\n <a href=\"{{ item.siteUrl }}\" *ngFor=\"let item of $partners | async \">\n <img class=\"logo\" src=\"{{ item.logo }}\" alt=\"{{item.label}}\" [title]=\"item.label\" />\n </a>\n </div>\n </ng-template>\n\n\n</ion-content>\n",
|
|
244
244
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
245
245
|
animations: [fadeInAnimation, slideUpDownAnimation],
|
|
246
|
-
styles: ["h1,h2,h3,h4,h5{white-space:normal}.center,ion-content ion-card.welcome img{text-align:center;display:inline-block}ion-content{--background:transparent;background-size:cover;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;display:inline-block;padding:15px}ion-content,ion-content .loading-page{background-color:var(--ion-color-primary)}ion-content .loading-page{display:block;height:100%;width:100%;position:absolute;z-index:5;transition:background .5s linear;-webkit-transition:background 1.5s linear}ion-content .loading-page.hidden{background-color:rgba(var(--ion-color-primary),0)}ion-content ion-card{z-index:9}ion-content ion-card ion-card-header{display:block}ion-content ion-card ion-card-header ion-card-subtitle,ion-content ion-card ion-card-header ion-card-title{display:block;width:100%}ion-content ion-card.main{min-width:240px;max-width:400px;margin-left:auto;margin-right:auto}ion-content ion-card.welcome{background-color:hsla(0,0%,100%,.7)}ion-content ion-card.welcome button{margin-top:16px}ion-content ion-card.welcome img{max-width:250px}ion-content .history-container{margin-left:auto;margin-right:auto}ion-content .history-container ion-card{display:inline-block;box-sizing:border-box;z-index:8;min-width:240px;max-width:400px;width:100%;margin-left:auto;margin-right:auto;background-color:hsla(0,0%,100%,.7)}ion-content .history-container ion-card ion-card-header ion-card-subtitle{height:40px}ion-content .history-container ion-card ion-card-header ion-card-subtitle button[float-start]{z-index:99;margin:0}ion-content .history-container ion-card ion-card-header ion-card-subtitle ion-label{line-height:40px}ion-content .history-container ion-card ion-card-header ion-card-subtitle ion-label[float-end]{padding-right:16px;font-weight:400}ion-content .history-container ion-card ion-card-header ion-card-title ion-item{--ion-item-background:$transparent;--ion-item-icon-color:var(--ion-color-primary);--ion-item-text-color:var(--ion-color-primary)}ion-content .history-container ion-card ion-card-header ion-card-title ion-item ion-icon[slot=start],ion-content .history-container ion-card ion-card-header ion-card-title ion-item mat-icon[slot=start]{margin-right:unset;-webkit-margin-end:16px!important;margin-inline-end:16px!important;color:var(--ion-item-icon-color)!important;fill:currentColor;stroke:currentColor}ion-content .history-container ion-card ion-card-header ion-card-title ion-item ion-label,ion-content .history-container ion-card ion-card-header ion-card-title ion-item ion-text{color:var(--ion-item-text-color)!important;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}ion-content .history-container ion-card ion-card-content ion-list{--ion-item-background:var(--ion-color-transparent)}ion-content .history-container ion-card ion-card-content ion-list ion-item{--ion-item-icon-color:var(--ion-color-dark);--ion-item-text-color:var(--ion-color-dark)}ion-content .history-container ion-card ion-card-content ion-list ion-item ion-icon[slot=start],ion-content .history-container ion-card ion-card-content ion-list ion-item mat-icon[slot=start]{color:var(--ion-item-icon-color)!important;fill:currentColor;stroke:currentColor;margin-right:unset;-webkit-margin-end:16px!important;margin-inline-end:16px!important}ion-content .history-container ion-card ion-card-content ion-list ion-item ion-label,ion-content .history-container ion-card ion-card-content ion-list ion-item ion-text{color:var(--ion-item-text-color)!important}ion-content .bottom-banner{background-color:hsla(0,0%,100%,.7);min-width:240px;z-index:0;position:absolute;left:16px;right:16px;bottom:16px}ion-content .bottom-banner img.logo{max-height:50px;margin-left:8px}ion-content ion-text{text-align:center}@media screen and (max-width:575px){ion-content ion-card{min-width:160px;width:calc(100% - 20px);max-width:100%;margin-left:10px;margin-right:10px}ion-content ion-card h1{margin-top:0;font-size:20px}ion-content ion-card button{margin-top:8px}ion-content .bottom-banner{display:block;position:unset}ion-content .bottom-banner img.logo{max-height:30px}}@media screen and (max-width:767px) and (min-width:576px){ion-content{min-height:555px}ion-content .bottom-banner img.logo{max-height:40px}}@media screen and (min-width:768px){ion-content{min-height:calc(100% - 100px)}}"]
|
|
246
|
+
styles: ["h1,h2,h3,h4,h5{white-space:normal}.center,ion-content ion-card.welcome img{text-align:center;display:inline-block}ion-content{--background:transparent;background-size:cover;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;display:inline-block;padding:15px}ion-content,ion-content .loading-page{background-color:var(--ion-color-primary)}ion-content .loading-page{display:block;height:100%;width:100%;position:absolute;z-index:5;transition:background .5s linear;-webkit-transition:background 1.5s linear}ion-content .loading-page.hidden{background-color:rgba(var(--ion-color-primary),0)}ion-content ion-card{z-index:9}ion-content ion-card ion-card-header{display:block}ion-content ion-card ion-card-header ion-card-subtitle,ion-content ion-card ion-card-header ion-card-title{display:block;width:100%}ion-content ion-card.main{min-width:240px;max-width:400px;margin-left:auto;margin-right:auto}ion-content ion-card.welcome{background-color:hsla(0,0%,100%,.7)}ion-content ion-card.welcome button{margin-top:16px}ion-content ion-card.welcome img{max-width:250px}ion-content .history-container{margin-left:auto;margin-right:auto}ion-content .history-container ion-card{display:inline-block;box-sizing:border-box;z-index:8;min-width:240px;max-width:400px;width:100%;margin-left:auto;margin-right:auto;background-color:hsla(0,0%,100%,.7)}ion-content .history-container ion-card ion-card-header ion-card-subtitle{height:40px}ion-content .history-container ion-card ion-card-header ion-card-subtitle button[float-start]{z-index:99;margin:0}ion-content .history-container ion-card ion-card-header ion-card-subtitle ion-label{line-height:40px}ion-content .history-container ion-card ion-card-header ion-card-subtitle ion-label[float-end]{padding-right:16px;font-weight:400}ion-content .history-container ion-card ion-card-header ion-card-title ion-item{--ion-item-background:$transparent;--ion-item-icon-color:var(--ion-color-primary);--ion-item-text-color:var(--ion-color-primary)}ion-content .history-container ion-card ion-card-header ion-card-title ion-item ion-icon[slot=start],ion-content .history-container ion-card ion-card-header ion-card-title ion-item mat-icon[slot=start]{margin-right:unset;-webkit-margin-end:16px!important;margin-inline-end:16px!important;color:var(--ion-item-icon-color)!important;fill:currentColor;stroke:currentColor}ion-content .history-container ion-card ion-card-header ion-card-title ion-item ion-label,ion-content .history-container ion-card ion-card-header ion-card-title ion-item ion-text{color:var(--ion-item-text-color)!important;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}ion-content .history-container ion-card ion-card-content ion-list{--ion-item-background:var(--ion-color-transparent)}ion-content .history-container ion-card ion-card-content ion-list ion-item{--ion-item-icon-color:var(--ion-color-dark);--ion-item-text-color:var(--ion-color-dark)}ion-content .history-container ion-card ion-card-content ion-list ion-item ion-icon[slot=start],ion-content .history-container ion-card ion-card-content ion-list ion-item mat-icon[slot=start]{color:var(--ion-item-icon-color)!important;fill:currentColor;stroke:currentColor;margin-right:unset;-webkit-margin-end:16px!important;margin-inline-end:16px!important}ion-content .history-container ion-card ion-card-content ion-list ion-item ion-label,ion-content .history-container ion-card ion-card-content ion-list ion-item ion-text{color:var(--ion-item-text-color)!important}ion-content .bottom-banner{background-color:hsla(0,0%,100%,.7);min-width:240px;z-index:0;position:absolute;left:16px;right:16px;bottom:16px}ion-content .bottom-banner img.logo{max-height:50px;margin-left:8px}ion-content ion-text{text-align:center}@media screen and (max-width:575px){ion-content ion-card{min-width:160px;width:calc(100% - 20px);max-width:100%;margin-left:10px;margin-right:10px}ion-content ion-card h1{margin-top:0;font-size:20px}ion-content ion-card ion-card-content ion-button{margin-top:8px}ion-content .bottom-banner{display:block;position:unset}ion-content .bottom-banner img.logo{max-height:30px}}@media screen and (max-width:767px) and (min-width:576px){ion-content{min-height:555px}ion-content .bottom-banner img.logo{max-height:40px}}@media screen and (min-width:768px){ion-content{min-height:calc(100% - 100px)}}"]
|
|
247
247
|
},] }
|
|
248
248
|
];
|
|
249
249
|
HomePage.ctorParameters = () => [
|
|
@@ -74,7 +74,7 @@ RegisterConfirmPage.decorators = [
|
|
|
74
74
|
{ type: Component, args: [{
|
|
75
75
|
selector: 'page-register-confirm',
|
|
76
76
|
template: "<app-toolbar [title]=\"'REGISTER.CONFIRMED.TITLE'|translate\" color=\"primary\">\n</app-toolbar>\n\n\n<ion-content class=\"bg-image-cover center ion-padding\" [ngStyle]=\"contentStyle\">\n\n <p class=\"hidden-xs ion-padding\"> <br /><br /></p>\n <p class=\"hidden-xs\"> </p>\n\n\n <ion-card>\n <ion-card-content>\n\n <div>\n <ng-container *ngIf=\"loading\">\n <h4 translate>REGISTER.CONFIRMED.LOADING</h4>\n <p><ion-spinner></ion-spinner></p>\n </ng-container>\n\n <!-- error -->\n <ion-item *ngIf=\"!loading && error\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n </div>\n\n <div *ngIf=\"!loading && !error\">\n <h3>\n <ion-icon name=\"checkmark\"></ion-icon>\n <b translate>REGISTER.CONFIRMED.SUB_TITLE</b>\n </h3>\n\n <ion-text>\n <p [innerHTML]=\"'REGISTER.CONFIRMED.SUCCESS'|translate: {email: email}\"></p>\n <p *ngIf=\"!isLogin\" [innerHTML]=\"'REGISTER.CONFIRMED.LOGIN_HELP'|translate\"></p>\n </ion-text>\n\n </div>\n\n </ion-card-content>\n\n <ion-footer *ngIf=\"!loading\">\n <ion-button expand=\"full\" color=\"primary\" [routerLink]=\"['/account']\" *ngIf=\"!isLogin\">\n <ion-icon name=\"log-in\" slot=\"start\"></ion-icon>\n <span translate>AUTH.BTN_LOGIN</span>\n </ion-button>\n\n <ion-button expand=\"full\" color=\"secondary\" [routerLink]=\"['/account']\" *ngIf=\"isLogin\">\n <ion-icon name=\"contact\" slot=\"start\"></ion-icon>\n <span translate>HOME.BTN_MY_ACCOUNT</span>\n </ion-button>\n </ion-footer>\n </ion-card>\n\n</ion-content>\n",
|
|
77
|
-
styles: ["h1,h2,h3,h4,h5{white-space:normal}.bottom-banner,.center,ion-card,ion-card img,ion-content,ion-text{text-align:center;display:inline-block}ion-content{--ion-background-color:transparent;background-size:cover;display:inline-block;padding:15px}ion-card{padding:var(--ion-padding);background-color:hsla(0,0%,100%,.7);min-width:240px;max-width:400px;z-index:9}ion-card button{margin-top:16px}ion-card img{max-width:250px}.bottom-banner{padding:var(--ion-padding);background-color:hsla(0,0%,100%,.7);min-width:240px;z-index:0}.bottom-banner img.logo{max-height:50px;margin-left:8px}@media screen and (max-width:575px){ion-content ion-card{min-width:160px;width:auto;max-width:260px}ion-content ion-card img{max-width:100px;margin-left:8px}ion-content ion-card button{margin-top:8px}.bottom-banner img.logo{max-height:30px}}@media screen and (max-width:767px) and (min-width:576px){ion-content{min-height:555px}.bottom-banner img.logo{max-height:40px}}@media screen and (min-width:768px){ion-content{min-height:606px}.main-content{padding-bottom:0}.bottom-banner{position:absolute;bottom:16px;left:16px;right:16px}}"]
|
|
77
|
+
styles: ["h1,h2,h3,h4,h5{white-space:normal}.bottom-banner,.center,ion-card,ion-card img,ion-content,ion-text{text-align:center;display:inline-block}ion-content{--ion-background-color:transparent;background-size:cover;display:inline-block;padding:15px}ion-card{padding:var(--ion-padding);background-color:hsla(0,0%,100%,.7);min-width:240px;max-width:400px;z-index:9}ion-card button{margin-top:16px}ion-card img{max-width:250px}.bottom-banner{padding:var(--ion-padding);background-color:hsla(0,0%,100%,.7);min-width:240px;z-index:0}.bottom-banner img.logo{max-height:50px;margin-left:8px}@media screen and (max-width:575px){ion-content ion-card{min-width:160px;width:auto;max-width:260px}ion-content ion-card img{max-width:100px;margin-left:8px}ion-content ion-card ion-footer ion-button{margin-top:8px}.bottom-banner img.logo{max-height:30px}}@media screen and (max-width:767px) and (min-width:576px){ion-content{min-height:555px}.bottom-banner img.logo{max-height:40px}}@media screen and (min-width:768px){ion-content{min-height:606px}.main-content{padding-bottom:0}.bottom-banner{position:absolute;bottom:16px;left:16px;right:16px}}"]
|
|
78
78
|
},] }
|
|
79
79
|
];
|
|
80
80
|
RegisterConfirmPage.ctorParameters = () => [
|