ontimize-web-ngx 15.3.1 → 15.3.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/esm2020/lib/components/app-sidenav/index.mjs +2 -1
- package/esm2020/lib/components/bar-menu/index.mjs +2 -1
- package/esm2020/lib/components/filter-builder/index.mjs +2 -1
- package/esm2020/lib/components/form/index.mjs +3 -1
- package/esm2020/lib/components/index.mjs +3 -1
- package/esm2020/lib/components/input/radio/o-radio.component.mjs +32 -5
- package/esm2020/lib/components/o-service-component.class.mjs +42 -21
- package/esm2020/lib/components/table/column/o-column.class.mjs +2 -2
- package/esm2020/lib/components/table/column/o-table-column.component.mjs +2 -4
- package/esm2020/lib/components/table/extensions/dialog/export/o-table-export-dialog.component.mjs +2 -2
- package/esm2020/lib/components/table/extensions/header/table-columns-filter/o-table-columns-filter.component.mjs +7 -4
- package/esm2020/lib/components/table/o-table.component.mjs +64 -40
- package/esm2020/lib/layouts/form-layout/o-form-layout-manager-base.class.mjs +1 -1
- package/esm2020/lib/layouts/form-layout/o-form-layout-manager.component.mjs +14 -3
- package/esm2020/lib/layouts/form-layout/split-pane/o-form-layout-split-pane.component.mjs +2 -1
- package/esm2020/lib/layouts/form-layout/tabgroup/o-form-layout-tabgroup.component.mjs +1 -14
- package/esm2020/lib/layouts/index.mjs +3 -1
- package/esm2020/lib/services/navigation.service.mjs +10 -2
- package/esm2020/lib/services/permissions/ontimize-ee-permissions.service.mjs +24 -15
- package/esm2020/lib/services/state/o-table-component-state.service.mjs +12 -4
- package/esm2020/lib/shared/index.mjs +3 -1
- package/esm2020/lib/types/form-layout-detail-component-data.type.mjs +1 -1
- package/fesm2015/ontimize-web-ngx.mjs +217 -112
- package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
- package/fesm2020/ontimize-web-ngx.mjs +199 -103
- package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
- package/lib/components/app-sidenav/index.d.ts +1 -0
- package/lib/components/bar-menu/index.d.ts +1 -0
- package/lib/components/filter-builder/index.d.ts +1 -0
- package/lib/components/form/index.d.ts +2 -0
- package/lib/components/index.d.ts +2 -0
- package/lib/components/input/radio/o-radio.component.d.ts +8 -3
- package/lib/components/o-service-component.class.d.ts +2 -2
- package/lib/components/table/column/o-table-column.component.d.ts +0 -1
- package/lib/components/table/extensions/header/table-columns-filter/o-table-columns-filter.component.d.ts +4 -3
- package/lib/components/table/o-table.component.d.ts +19 -2
- package/lib/layouts/form-layout/o-form-layout-manager-base.class.d.ts +3 -0
- package/lib/layouts/form-layout/tabgroup/o-form-layout-tabgroup.component.d.ts +0 -1
- package/lib/layouts/index.d.ts +2 -0
- package/lib/services/navigation.service.d.ts +8 -4
- package/lib/shared/index.d.ts +2 -0
- package/lib/types/form-layout-detail-component-data.type.d.ts +3 -1
- package/package.json +1 -1
|
@@ -3,4 +3,5 @@ export * from './menu-group/o-app-sidenav-menu-group.component';
|
|
|
3
3
|
export * from './menu-item/o-app-sidenav-menu-item.component';
|
|
4
4
|
export * from './o-app-sidenav.component';
|
|
5
5
|
export * from './o-app-sidenav.module';
|
|
6
|
-
|
|
6
|
+
export * from './o-app-sidenav-base.class';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9hcHAtc2lkZW5hdi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaW1hZ2Uvby1hcHAtc2lkZW5hdi1pbWFnZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9tZW51LWdyb3VwL28tYXBwLXNpZGVuYXYtbWVudS1ncm91cC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9tZW51LWl0ZW0vby1hcHAtc2lkZW5hdi1tZW51LWl0ZW0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vby1hcHAtc2lkZW5hdi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9vLWFwcC1zaWRlbmF2Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL28tYXBwLXNpZGVuYXYtYmFzZS5jbGFzcyc7Il19
|
|
@@ -6,4 +6,5 @@ export * from './menu-separator/o-bar-menu-separator.component';
|
|
|
6
6
|
export * from './o-bar-menu.component';
|
|
7
7
|
export * from './o-bar-menu.module';
|
|
8
8
|
export * from './o-base-menu-item.class';
|
|
9
|
-
|
|
9
|
+
export * from './o-bar-menu-base.class';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9iYXItbWVudS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbG9jYWxlLW1lbnUtaXRlbS9vLWxvY2FsZS1iYXItbWVudS1pdGVtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL21lbnUtZ3JvdXAvby1iYXItbWVudS1ncm91cC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9tZW51LWl0ZW0vby1iYXItbWVudS1pdGVtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL21lbnUtbmVzdGVkL28tYmFyLW1lbnUtbmVzdGVkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL21lbnUtc2VwYXJhdG9yL28tYmFyLW1lbnUtc2VwYXJhdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL28tYmFyLW1lbnUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vby1iYXItbWVudS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9vLWJhc2UtbWVudS1pdGVtLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vby1iYXItbWVudS1iYXNlLmNsYXNzJztcbiJdfQ==
|
|
@@ -3,4 +3,5 @@ export * from './/o-filter-builder-query.directive';
|
|
|
3
3
|
export * from './o-filter-builder.component';
|
|
4
4
|
export * from './o-filter-builder.module';
|
|
5
5
|
export * from './filter-builder-menu/filter-builder-menu.component';
|
|
6
|
-
|
|
6
|
+
export * from './o-filter-builder-base.class';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXItYnVpbGRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYywrQkFBK0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vby1maWx0ZXItYnVpbGRlci1jbGVhci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi8vby1maWx0ZXItYnVpbGRlci1xdWVyeS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9vLWZpbHRlci1idWlsZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL28tZmlsdGVyLWJ1aWxkZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVyLWJ1aWxkZXItbWVudS9maWx0ZXItYnVpbGRlci1tZW51LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL28tZmlsdGVyLWJ1aWxkZXItYmFzZS5jbGFzcyc7XG4iXX0=
|
|
@@ -9,4 +9,6 @@ export * from './o-form-value';
|
|
|
9
9
|
export * from './toolbar/o-form-toolbar.component';
|
|
10
10
|
export * from './toolbar/o-form-toolbar.module';
|
|
11
11
|
export * from './o-form-tokens';
|
|
12
|
-
|
|
12
|
+
export * from './o-form-base.class';
|
|
13
|
+
export * from './toolbar/o-form-toolbar-base.class';
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMscUNBQXFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NhY2hlL28tZm9ybS5jYWNoZS5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL2d1YXJkcy9vLWZvcm0tY2FuLWRlYWN0aXZhdGUuZ3VhcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9uYXZpZ2F0aW9uL28tZm9ybS1uYXZpZ2F0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL25hdmlnYXRpb24vby1mb3JtLm5hdmlnYXRpb24uY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9vLWZvcm0tbWVzc2FnZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vby1mb3JtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL28tZm9ybS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9vLWZvcm0tdmFsdWUnO1xuZXhwb3J0ICogZnJvbSAnLi90b29sYmFyL28tZm9ybS10b29sYmFyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3Rvb2xiYXIvby1mb3JtLXRvb2xiYXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vby1mb3JtLXRva2Vucyc7XG5leHBvcnQgKiBmcm9tICcuL28tZm9ybS1iYXNlLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vdG9vbGJhci9vLWZvcm0tdG9vbGJhci1iYXNlLmNsYXNzJyJdfQ==
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './app-header/o-app-header.component';
|
|
2
2
|
export * from './app-header/o-app-header.module';
|
|
3
|
+
export * from './app-header/o-app-header-base.class';
|
|
3
4
|
export * from './app-sidenav/index';
|
|
4
5
|
export * from './bar-menu/index';
|
|
5
6
|
export * from './breadcrumb/o-breadcrumb.component';
|
|
@@ -40,4 +41,5 @@ export * from './expandable-container/o-expandable-container.component';
|
|
|
40
41
|
export * from './expandable-container/o-expandable-container.module';
|
|
41
42
|
export * from './tree/index';
|
|
42
43
|
export * from './o-skeleton.component';
|
|
43
|
-
|
|
44
|
+
export * from './user-info/o-user-info-base.class';
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsdUVBQXVFLENBQUM7QUFDdEYsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsb0NBQW9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FwcC1oZWFkZXIvby1hcHAtaGVhZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2FwcC1oZWFkZXIvby1hcHAtaGVhZGVyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2FwcC1oZWFkZXIvby1hcHAtaGVhZGVyLWJhc2UuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9hcHAtc2lkZW5hdi9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2Jhci1tZW51L2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vYnJlYWRjcnVtYi9vLWJyZWFkY3J1bWIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYnJlYWRjcnVtYi9vLWJyZWFkY3J1bWIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vYnV0dG9uLXRvZ2dsZS9vLWJ1dHRvbi10b2dnbGUtZ3JvdXAvby1idXR0b24tdG9nZ2xlLWdyb3VwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2J1dHRvbi10b2dnbGUvby1idXR0b24tdG9nZ2xlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2J1dHRvbi10b2dnbGUvby1idXR0b24tdG9nZ2xlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2J1dHRvbi9vLWJ1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9idXR0b24vby1idXR0b24ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vY2FyZC1tZW51LWl0ZW0vby1jYXJkLW1lbnUtaXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXJkLW1lbnUtaXRlbS9vLWNhcmQtbWVudS1pdGVtLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRhaW5lci9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRleHRtZW51L2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVyLWJ1aWxkZXIvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWNvbnRhaW5lci9vLWZvcm0tY29udGFpbmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tY29udGFpbmVyL28tZm9ybS1jb250YWluZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2dyaWQvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9pbWFnZS9mdWxsc2NyZWVuL2Z1bGxzY3JlZW4tZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2ltYWdlL28taW1hZ2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vaW1hZ2Uvby1pbWFnZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2xhbmd1YWdlLXNlbGVjdG9yL28tbGFuZ3VhZ2Utc2VsZWN0b3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGFuZ3VhZ2Utc2VsZWN0b3Ivby1sYW5ndWFnZS1zZWxlY3Rvci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saXN0L2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vbWF0ZXJpYWwvY2tlZGl0b3IvY2stZWRpdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL21hdGVyaWFsL2NrZWRpdG9yL2NrLWVkaXRvci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9vLWNvbXBvbmVudC5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL28tZm9ybS1kYXRhLWNvbXBvbmVudC5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL28tc2VydmljZS1iYXNlLWNvbXBvbmVudC5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL28tc2VydmljZS1jb21wb25lbnQuY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9vLXZhbHVlLWNoYW5nZS1ldmVudC5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci1pbmZvL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vZHVhbC1saXN0LXNlbGVjdG9yL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vby1kYXRhLXRvb2xiYXIvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9leHBhbmRhYmxlLWNvbnRhaW5lci9vLWV4cGFuZGFibGUtY29udGFpbmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2V4cGFuZGFibGUtY29udGFpbmVyL28tZXhwYW5kYWJsZS1jb250YWluZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vdHJlZS9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL28tc2tlbGV0b24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci1pbmZvL28tdXNlci1pbmZvLWJhc2UuY2xhc3MnO1xuXG4iXX0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Component, ElementRef, forwardRef, Inject, Injector, Optional, ViewEncapsulation } from '@angular/core';
|
|
1
|
+
import { Component, ElementRef, forwardRef, Inject, Injector, Optional, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { MatRadioGroup } from '@angular/material/radio';
|
|
2
3
|
import { OntimizeServiceProvider } from '../../../services/factories';
|
|
3
4
|
import { Util } from '../../../util/util';
|
|
4
5
|
import { OFormComponent } from '../../form/o-form.component';
|
|
@@ -35,6 +36,23 @@ export class ORadioComponent extends OFormServiceComponent {
|
|
|
35
36
|
if (this.queryOnInit) {
|
|
36
37
|
this.queryData();
|
|
37
38
|
}
|
|
39
|
+
this.updateFormLayoutManagerState();
|
|
40
|
+
}
|
|
41
|
+
updateFormLayoutManagerState() {
|
|
42
|
+
const formLayoutManager = this.form.getFormManager();
|
|
43
|
+
if (formLayoutManager && formLayoutManager.storeState && formLayoutManager.isTabMode() && formLayoutManager.oTabGroup) {
|
|
44
|
+
if (!Util.isDefined(this.formLayoutManagerTabIndex)) {
|
|
45
|
+
const tabGroupData = formLayoutManager.oTabGroup.data;
|
|
46
|
+
const keysValues = this.form.getFormNavigation().getCurrentKeysValues();
|
|
47
|
+
const data = tabGroupData.find(item => Object.entries(keysValues).every(([key, value]) => item.params[key] == value));
|
|
48
|
+
this.formLayoutManagerTabIndex = data?.id;
|
|
49
|
+
}
|
|
50
|
+
this.tabsSubscriptions = formLayoutManager.onSelectedTabChange.subscribe((arg) => {
|
|
51
|
+
if (arg.data.id === this.formLayoutManagerTabIndex) {
|
|
52
|
+
this.mrg.value = this.getValue();
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
38
56
|
}
|
|
39
57
|
onMatRadioGroupChange(e) {
|
|
40
58
|
const newValue = e.value;
|
|
@@ -63,22 +81,31 @@ export class ORadioComponent extends OFormServiceComponent {
|
|
|
63
81
|
}
|
|
64
82
|
return '';
|
|
65
83
|
}
|
|
84
|
+
ngOnDestroy() {
|
|
85
|
+
super.destroy();
|
|
86
|
+
if (this.tabsSubscriptions) {
|
|
87
|
+
this.tabsSubscriptions.unsubscribe();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
66
90
|
}
|
|
67
91
|
ORadioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ORadioComponent, deps: [{ token: forwardRef(() => OFormComponent), optional: true }, { token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
68
92
|
ORadioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ORadioComponent, selector: "o-radio", inputs: { layout: "layout", labelPosition: ["label-position", "labelPosition"], labelGap: ["label-gap", "labelGap"] }, host: { properties: { "class.o-radio": "true" } }, providers: [
|
|
69
93
|
OntimizeServiceProvider
|
|
70
|
-
], usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipShowDelay]=\"tooltipShowDelay\"\n [matTooltipHideDelay]=\"tooltipHideDelay\" class=\"relative\" [oContextMenu]=\"oContextMenu\">\n <!-- mat-form-field and hidden input are used only for displaying component label and errors as mat-radio is not supported inside form-field -->\n <!-- https://github.com/angular/material2/issues/7891 -->\n <mat-form-field [appearance]=\"appearance\" [hideRequiredMarker]=\"hideRequiredMarker\"\n [class.read-only]=\"isReadOnly\" [class.custom-width]=\"hasCustomWidth\" [class.o-radio-from-field-row]=\"layout==='row'\"\n floatLabel=\"always\" class=\"mat-form-field--no-underline\" fxFill [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n <input matInput [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"placeHolder\"\n [required]=\"isRequired\" style=\"display: none\" />\n <mat-radio-group [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [name]=\"getAttribute()\"\n [value]=\"getValue()\" [required]=\"isRequired\" [labelPosition]=\"labelPosition\"\n (change)=\"onMatRadioGroupChange($event)\" [fxLayout]=\"layout\" [fxLayoutGap]=\"labelGap\">\n <mat-radio-button *ngFor=\"let item of dataArray\" [value]=\"getValueColumn(item)\"
|
|
94
|
+
], viewQueries: [{ propertyName: "mrg", first: true, predicate: MatRadioGroup, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipShowDelay]=\"tooltipShowDelay\"\n [matTooltipHideDelay]=\"tooltipHideDelay\" class=\"relative\" [oContextMenu]=\"oContextMenu\">\n <!-- mat-form-field and hidden input are used only for displaying component label and errors as mat-radio is not supported inside form-field -->\n <!-- https://github.com/angular/material2/issues/7891 -->\n <mat-form-field [appearance]=\"appearance\" [hideRequiredMarker]=\"hideRequiredMarker\"\n [class.read-only]=\"isReadOnly\" [class.custom-width]=\"hasCustomWidth\" [class.o-radio-from-field-row]=\"layout==='row'\"\n floatLabel=\"always\" class=\"mat-form-field--no-underline\" fxFill [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n <input matInput [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"placeHolder\"\n [required]=\"isRequired\" style=\"display: none\" />\n <mat-radio-group [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [name]=\"getAttribute()\"\n [value]=\"getValue()\" [required]=\"isRequired\" [labelPosition]=\"labelPosition\"\n (change)=\"onMatRadioGroupChange($event)\" [fxLayout]=\"layout\" [fxLayoutGap]=\"labelGap\">\n <mat-radio-button [id]=\"'o-radio-button-'+i\" *ngFor=\"let item of dataArray;let i = index\" [value]=\"getValueColumn(item)\"\n [disabled]=\"!enabled\">\n {{ getOptionDescriptionValue(item) }}\n </mat-radio-button>\n </mat-radio-group>\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n {{ oError.text | oTranslate }}\n </mat-error>\n </mat-form-field>\n <div *ngIf=\"isReadOnly\" (click)=\"$event.stopPropagation()\" class=\"read-only-blocker\" fxFill></div>\n\n <o-context-menu *ngIf=\"!this.isReadOnly && this.enabled\">\n <o-context-menu-item attr=\"refresh\" label=\"FORM_SERVICE_COMPONENT.REFRESH\" svg-icon=\"ontimize:autorenew\" (execute)=\"refresh()\">\n </o-context-menu-item>\n </o-context-menu>\n</div>\n", styles: [".o-radio .mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border:none}.o-radio .mat-mdc-form-field:not(.custom-width).o-radio-from-field-row .mat-mdc-form-field-infix{width:auto}.o-radio .read-only-blocker{z-index:2;position:absolute;top:0;left:0;right:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i2.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.OMatErrorDirective, selector: "[oMatError]", inputs: ["oMatError"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i7.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i7.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i9.OContextMenuDirective, selector: "[oContextMenu]", inputs: ["oContextMenu", "oContextMenuData"] }, { kind: "component", type: i10.OContextMenuComponent, selector: "o-context-menu", outputs: ["onShow", "onClose"] }, { kind: "component", type: i11.OContextMenuItemComponent, selector: "o-context-menu-item", outputs: ["execute"] }, { kind: "pipe", type: i12.OTranslatePipe, name: "oTranslate" }], encapsulation: i0.ViewEncapsulation.None });
|
|
71
95
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ORadioComponent, decorators: [{
|
|
72
96
|
type: Component,
|
|
73
97
|
args: [{ selector: 'o-radio', inputs: DEFAULT_INPUTS_O_RADIO, providers: [
|
|
74
98
|
OntimizeServiceProvider
|
|
75
99
|
], encapsulation: ViewEncapsulation.None, host: {
|
|
76
100
|
'[class.o-radio]': 'true'
|
|
77
|
-
}, template: "<div [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipShowDelay]=\"tooltipShowDelay\"\n [matTooltipHideDelay]=\"tooltipHideDelay\" class=\"relative\" [oContextMenu]=\"oContextMenu\">\n <!-- mat-form-field and hidden input are used only for displaying component label and errors as mat-radio is not supported inside form-field -->\n <!-- https://github.com/angular/material2/issues/7891 -->\n <mat-form-field [appearance]=\"appearance\" [hideRequiredMarker]=\"hideRequiredMarker\"\n [class.read-only]=\"isReadOnly\" [class.custom-width]=\"hasCustomWidth\" [class.o-radio-from-field-row]=\"layout==='row'\"\n floatLabel=\"always\" class=\"mat-form-field--no-underline\" fxFill [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n <input matInput [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"placeHolder\"\n [required]=\"isRequired\" style=\"display: none\" />\n <mat-radio-group [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [name]=\"getAttribute()\"\n [value]=\"getValue()\" [required]=\"isRequired\" [labelPosition]=\"labelPosition\"\n (change)=\"onMatRadioGroupChange($event)\" [fxLayout]=\"layout\" [fxLayoutGap]=\"labelGap\">\n <mat-radio-button *ngFor=\"let item of dataArray\" [value]=\"getValueColumn(item)\"
|
|
101
|
+
}, template: "<div [formGroup]=\"getFormGroup()\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipShowDelay]=\"tooltipShowDelay\"\n [matTooltipHideDelay]=\"tooltipHideDelay\" class=\"relative\" [oContextMenu]=\"oContextMenu\">\n <!-- mat-form-field and hidden input are used only for displaying component label and errors as mat-radio is not supported inside form-field -->\n <!-- https://github.com/angular/material2/issues/7891 -->\n <mat-form-field [appearance]=\"appearance\" [hideRequiredMarker]=\"hideRequiredMarker\"\n [class.read-only]=\"isReadOnly\" [class.custom-width]=\"hasCustomWidth\" [class.o-radio-from-field-row]=\"layout==='row'\"\n floatLabel=\"always\" class=\"mat-form-field--no-underline\" fxFill [subscriptSizing]=\"subscriptSizing\">\n <mat-label *ngIf=\"labelVisible\">{{ olabel | oTranslate }}</mat-label>\n <input matInput [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"placeHolder\"\n [required]=\"isRequired\" style=\"display: none\" />\n <mat-radio-group [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [name]=\"getAttribute()\"\n [value]=\"getValue()\" [required]=\"isRequired\" [labelPosition]=\"labelPosition\"\n (change)=\"onMatRadioGroupChange($event)\" [fxLayout]=\"layout\" [fxLayoutGap]=\"labelGap\">\n <mat-radio-button [id]=\"'o-radio-button-'+i\" *ngFor=\"let item of dataArray;let i = index\" [value]=\"getValueColumn(item)\"\n [disabled]=\"!enabled\">\n {{ getOptionDescriptionValue(item) }}\n </mat-radio-button>\n </mat-radio-group>\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n {{ oError.text | oTranslate }}\n </mat-error>\n </mat-form-field>\n <div *ngIf=\"isReadOnly\" (click)=\"$event.stopPropagation()\" class=\"read-only-blocker\" fxFill></div>\n\n <o-context-menu *ngIf=\"!this.isReadOnly && this.enabled\">\n <o-context-menu-item attr=\"refresh\" label=\"FORM_SERVICE_COMPONENT.REFRESH\" svg-icon=\"ontimize:autorenew\" (execute)=\"refresh()\">\n </o-context-menu-item>\n </o-context-menu>\n</div>\n", styles: [".o-radio .mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border:none}.o-radio .mat-mdc-form-field:not(.custom-width).o-radio-from-field-row .mat-mdc-form-field-infix{width:auto}.o-radio .read-only-blocker{z-index:2;position:absolute;top:0;left:0;right:0}\n"] }]
|
|
78
102
|
}], ctorParameters: function () { return [{ type: i13.OFormComponent, decorators: [{
|
|
79
103
|
type: Optional
|
|
80
104
|
}, {
|
|
81
105
|
type: Inject,
|
|
82
106
|
args: [forwardRef(() => OFormComponent)]
|
|
83
|
-
}] }, { type: i0.ElementRef }, { type: i0.Injector }]; }
|
|
84
|
-
|
|
107
|
+
}] }, { type: i0.ElementRef }, { type: i0.Injector }]; }, propDecorators: { mrg: [{
|
|
108
|
+
type: ViewChild,
|
|
109
|
+
args: [MatRadioGroup]
|
|
110
|
+
}] } });
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1yYWRpby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC9yYWRpby9vLXJhZGlvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0L3JhZGlvL28tcmFkaW8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFhLFFBQVEsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEosT0FBTyxFQUFrQixhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFFMUUsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7SUFDcEMsUUFBUTtJQUNSLCtCQUErQjtJQUMvQixxQkFBcUI7Q0FDdEIsQ0FBQztBQWdCRixNQUFNLE9BQU8sZUFBZ0IsU0FBUSxxQkFBcUI7SUFheEQsWUFDd0QsSUFBb0IsRUFDMUUsS0FBaUIsRUFDakIsUUFBa0I7UUFFbEIsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFmeEIsV0FBTSxHQUFxQixRQUFRLENBQUM7UUFDcEMsa0JBQWEsR0FBdUIsT0FBTyxDQUFDO1FBQzVDLGFBQVEsR0FBRyxLQUFLLENBQUE7SUFjdkIsQ0FBQztJQUVELGVBQWU7UUFDYixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNsQjtRQUNELElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCw0QkFBNEI7UUFDMUIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXJELElBQUksaUJBQWlCLElBQUksaUJBQWlCLENBQUMsVUFBVSxJQUFJLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxJQUFJLGlCQUFpQixDQUFDLFNBQVMsRUFBRTtZQUNySCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsRUFBRTtnQkFDbkQsTUFBTSxZQUFZLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFFdEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQ3hFLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDcEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQzlCLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUM1QyxDQUFDLENBQUM7Z0JBQ0wsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksRUFBRSxFQUFFLENBQUM7YUFDM0M7WUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQy9FLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLHlCQUF5QixFQUFFO29CQUNsRCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7aUJBQ2xDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFHRCxxQkFBcUIsQ0FBQyxDQUFpQjtRQUNyQyxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFO1lBQ3RCLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQyxXQUFXO1lBQ3pDLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLHFCQUFxQixFQUFFLEtBQUs7U0FDN0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFTO1FBQ3RCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ2pELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDcEMsSUFBSSxNQUFNLEtBQUssV0FBVyxFQUFFO2dCQUMxQixNQUFNLEdBQUcsSUFBSSxDQUFDO2FBQ2Y7WUFDRCxPQUFPLE1BQU0sQ0FBQztTQUNmO1FBQ0QsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFO1lBQy9FLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUNuRixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUN2SztTQUNGO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRU0sV0FBVztRQUNoQixLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFaEIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RDO0lBRUgsQ0FBQzs7NkdBekZVLGVBQWUsa0JBY0osVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQztpR0FkM0MsZUFBZSw0TUFSZjtRQUNULHVCQUF1QjtLQUN4QiwrREFnQlUsYUFBYSx1RUN4QzFCLDh0RUFpQ0E7NEZESGEsZUFBZTtrQkFiM0IsU0FBUzsrQkFDRSxTQUFTLFVBR1gsc0JBQXNCLGFBQ25CO3dCQUNULHVCQUF1QjtxQkFDeEIsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSixpQkFBaUIsRUFBRSxNQUFNO3FCQUMxQjs7MEJBZ0JFLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQzs0RkFKNUIsR0FBRztzQkFBNUIsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBJbmplY3QsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRSYWRpb0NoYW5nZSwgTWF0UmFkaW9Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvJztcblxuaW1wb3J0IHsgT250aW1pemVTZXJ2aWNlUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mYWN0b3JpZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPRm9ybVZhbHVlIH0gZnJvbSAnLi4vLi4vZm9ybS9vLWZvcm0tdmFsdWUnO1xuaW1wb3J0IHsgT0Zvcm1Db21wb25lbnQgfSBmcm9tICcuLi8uLi9mb3JtL28tZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgT1ZhbHVlQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi8uLi9vLXZhbHVlLWNoYW5nZS1ldmVudC5jbGFzcyc7XG5pbXBvcnQgeyBPRm9ybVNlcnZpY2VDb21wb25lbnQgfSBmcm9tICcuLi9vLWZvcm0tc2VydmljZS1jb21wb25lbnQuY2xhc3MnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19SQURJTyA9IFtcbiAgJ2xheW91dCcsXG4gICdsYWJlbFBvc2l0aW9uOiBsYWJlbC1wb3NpdGlvbicsXG4gICdsYWJlbEdhcDogbGFiZWwtZ2FwJ1xuXTtcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLXJhZGlvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tcmFkaW8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLXJhZGlvLmNvbXBvbmVudC5zY3NzJ10sXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19SQURJTyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgT250aW1pemVTZXJ2aWNlUHJvdmlkZXJcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby1yYWRpb10nOiAndHJ1ZSdcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBPUmFkaW9Db21wb25lbnQgZXh0ZW5kcyBPRm9ybVNlcnZpY2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIC8qIElucHV0cyAqL1xuICBwdWJsaWMgbGF5b3V0OiAncm93JyB8ICdjb2x1bW4nID0gJ2NvbHVtbic7XG4gIHB1YmxpYyBsYWJlbFBvc2l0aW9uOiAnYmVmb3JlJyB8ICdhZnRlcicgPSAnYWZ0ZXInO1xuICBwdWJsaWMgbGFiZWxHYXAgPSAnOHB4J1xuICAvKiBFbmQgaW5wdXRzKi9cblxuICB2YWx1ZTogT0Zvcm1WYWx1ZTtcbiAgdGFic1N1YnNjcmlwdGlvbnM6IGFueTtcbiAgQFZpZXdDaGlsZChNYXRSYWRpb0dyb3VwKSBtcmc6IE1hdFJhZGlvR3JvdXA7XG4gIGZvcm1MYXlvdXRNYW5hZ2VyVGFiSW5kZXg6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gT0Zvcm1Db21wb25lbnQpKSBmb3JtOiBPRm9ybUNvbXBvbmVudCxcbiAgICBlbFJlZjogRWxlbWVudFJlZixcbiAgICBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gICAgc3VwZXIoZm9ybSwgZWxSZWYsIGluamVjdG9yKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICBpZiAodGhpcy5xdWVyeU9uSW5pdCkge1xuICAgICAgdGhpcy5xdWVyeURhdGEoKTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVGb3JtTGF5b3V0TWFuYWdlclN0YXRlKCk7XG4gIH1cblxuICB1cGRhdGVGb3JtTGF5b3V0TWFuYWdlclN0YXRlKCkge1xuICAgIGNvbnN0IGZvcm1MYXlvdXRNYW5hZ2VyID0gdGhpcy5mb3JtLmdldEZvcm1NYW5hZ2VyKCk7XG5cbiAgICBpZiAoZm9ybUxheW91dE1hbmFnZXIgJiYgZm9ybUxheW91dE1hbmFnZXIuc3RvcmVTdGF0ZSAmJiBmb3JtTGF5b3V0TWFuYWdlci5pc1RhYk1vZGUoKSAmJiBmb3JtTGF5b3V0TWFuYWdlci5vVGFiR3JvdXApIHtcbiAgICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5mb3JtTGF5b3V0TWFuYWdlclRhYkluZGV4KSkge1xuICAgICAgICBjb25zdCB0YWJHcm91cERhdGEgPSBmb3JtTGF5b3V0TWFuYWdlci5vVGFiR3JvdXAuZGF0YTtcblxuICAgICAgICBjb25zdCBrZXlzVmFsdWVzID0gdGhpcy5mb3JtLmdldEZvcm1OYXZpZ2F0aW9uKCkuZ2V0Q3VycmVudEtleXNWYWx1ZXMoKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRhYkdyb3VwRGF0YS5maW5kKGl0ZW0gPT5cbiAgICAgICAgICBPYmplY3QuZW50cmllcyhrZXlzVmFsdWVzKS5ldmVyeShcbiAgICAgICAgICAgIChba2V5LCB2YWx1ZV0pID0+IGl0ZW0ucGFyYW1zW2tleV0gPT0gdmFsdWVcbiAgICAgICAgICApKTtcbiAgICAgICAgdGhpcy5mb3JtTGF5b3V0TWFuYWdlclRhYkluZGV4ID0gZGF0YT8uaWQ7XG4gICAgICB9XG4gICAgICB0aGlzLnRhYnNTdWJzY3JpcHRpb25zID0gZm9ybUxheW91dE1hbmFnZXIub25TZWxlY3RlZFRhYkNoYW5nZS5zdWJzY3JpYmUoKGFyZykgPT4ge1xuICAgICAgICBpZiAoYXJnLmRhdGEuaWQgPT09IHRoaXMuZm9ybUxheW91dE1hbmFnZXJUYWJJbmRleCkge1xuICAgICAgICAgIHRoaXMubXJnLnZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuXG4gIG9uTWF0UmFkaW9Hcm91cENoYW5nZShlOiBNYXRSYWRpb0NoYW5nZSk6IHZvaWQge1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gZS52YWx1ZTtcbiAgICB0aGlzLnNldFZhbHVlKG5ld1ZhbHVlLCB7XG4gICAgICBjaGFuZ2VUeXBlOiBPVmFsdWVDaGFuZ2VFdmVudC5VU0VSX0NIQU5HRSxcbiAgICAgIGVtaXRFdmVudDogZmFsc2UsXG4gICAgICBlbWl0TW9kZWxUb1ZpZXdDaGFuZ2U6IGZhbHNlXG4gICAgfSk7XG4gIH1cblxuICBnZXRWYWx1ZUNvbHVtbihpdGVtOiBhbnkpIHtcbiAgICBpZiAoaXRlbSAmJiBpdGVtLmhhc093blByb3BlcnR5KHRoaXMudmFsdWVDb2x1bW4pKSB7XG4gICAgICBsZXQgb3B0aW9uID0gaXRlbVt0aGlzLnZhbHVlQ29sdW1uXTtcbiAgICAgIGlmIChvcHRpb24gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIG9wdGlvbiA9IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3B0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgZ2V0RGVzY3JpcHRpb25WYWx1ZSgpIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5kZXNjcmlwdGlvbkNvbEFycmF5KSAmJiB0aGlzLmRlc2NyaXB0aW9uQ29sQXJyYXkubGVuZ3RoKSB7XG4gICAgICBjb25zdCBjdXJySXRlbSA9IHRoaXMuZGF0YUFycmF5LmZpbmQoZSA9PiBlW3RoaXMudmFsdWVDb2x1bW5dID09PSB0aGlzLmdldFZhbHVlKCkpO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKGN1cnJJdGVtKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZXNjcmlwdGlvbkNvbEFycmF5Lm1hcChjb2wgPT4gKHRoaXMudHJhbnNsYXRlICYmIHRoaXMudHJhbnNsYXRlU2VydmljZSkgPyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KGN1cnJJdGVtW2NvbF0pIDogY3Vyckl0ZW1bY29sXSkuam9pbih0aGlzLnNlcGFyYXRvcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5kZXN0cm95KCk7XG5cbiAgICBpZiAodGhpcy50YWJzU3Vic2NyaXB0aW9ucykge1xuICAgICAgdGhpcy50YWJzU3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICB9XG5cbn1cbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJnZXRGb3JtR3JvdXAoKVwiIFttYXRUb29sdGlwXT1cInRvb2x0aXBcIiBbbWF0VG9vbHRpcENsYXNzXT1cInRvb2x0aXBDbGFzc1wiXG4gIFttYXRUb29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCIgW21hdFRvb2x0aXBTaG93RGVsYXldPVwidG9vbHRpcFNob3dEZWxheVwiXG4gIFttYXRUb29sdGlwSGlkZURlbGF5XT1cInRvb2x0aXBIaWRlRGVsYXlcIiBjbGFzcz1cInJlbGF0aXZlXCIgW29Db250ZXh0TWVudV09XCJvQ29udGV4dE1lbnVcIj5cbiAgPCEtLSBtYXQtZm9ybS1maWVsZCBhbmQgaGlkZGVuIGlucHV0IGFyZSB1c2VkIG9ubHkgZm9yIGRpc3BsYXlpbmcgY29tcG9uZW50IGxhYmVsIGFuZCBlcnJvcnMgYXMgbWF0LXJhZGlvIGlzIG5vdCBzdXBwb3J0ZWQgaW5zaWRlIGZvcm0tZmllbGQgLS0+XG4gIDwhLS0gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvbWF0ZXJpYWwyL2lzc3Vlcy83ODkxIC0tPlxuICA8bWF0LWZvcm0tZmllbGQgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiIFtoaWRlUmVxdWlyZWRNYXJrZXJdPVwiaGlkZVJlcXVpcmVkTWFya2VyXCJcbiAgICBbY2xhc3MucmVhZC1vbmx5XT1cImlzUmVhZE9ubHlcIiBbY2xhc3MuY3VzdG9tLXdpZHRoXT1cImhhc0N1c3RvbVdpZHRoXCIgW2NsYXNzLm8tcmFkaW8tZnJvbS1maWVsZC1yb3ddPVwibGF5b3V0PT09J3JvdydcIlxuICAgIGZsb2F0TGFiZWw9XCJhbHdheXNcIiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLS1uby11bmRlcmxpbmVcIiBmeEZpbGwgW3N1YnNjcmlwdFNpemluZ109XCJzdWJzY3JpcHRTaXppbmdcIj5cbiAgICA8bWF0LWxhYmVsICpuZ0lmPVwibGFiZWxWaXNpYmxlXCI+e3sgb2xhYmVsIHwgb1RyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dCBtYXRJbnB1dCBbaWRdPVwiZ2V0QXR0cmlidXRlKClcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImdldEF0dHJpYnV0ZSgpXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCJcbiAgICAgIFtyZXF1aXJlZF09XCJpc1JlcXVpcmVkXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgLz5cbiAgICA8bWF0LXJhZGlvLWdyb3VwIFtpZF09XCJnZXRBdHRyaWJ1dGUoKVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiZ2V0QXR0cmlidXRlKClcIiBbbmFtZV09XCJnZXRBdHRyaWJ1dGUoKVwiXG4gICAgICBbdmFsdWVdPVwiZ2V0VmFsdWUoKVwiIFtyZXF1aXJlZF09XCJpc1JlcXVpcmVkXCIgW2xhYmVsUG9zaXRpb25dPVwibGFiZWxQb3NpdGlvblwiXG4gICAgICAoY2hhbmdlKT1cIm9uTWF0UmFkaW9Hcm91cENoYW5nZSgkZXZlbnQpXCIgW2Z4TGF5b3V0XT1cImxheW91dFwiIFtmeExheW91dEdhcF09XCJsYWJlbEdhcFwiPlxuICAgICAgPG1hdC1yYWRpby1idXR0b24gW2lkXT1cIidvLXJhZGlvLWJ1dHRvbi0nK2lcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhQXJyYXk7bGV0IGkgPSBpbmRleFwiIFt2YWx1ZV09XCJnZXRWYWx1ZUNvbHVtbihpdGVtKVwiXG4gICAgICAgW2Rpc2FibGVkXT1cIiFlbmFibGVkXCI+XG4gICAgICAgIHt7IGdldE9wdGlvbkRlc2NyaXB0aW9uVmFsdWUoaXRlbSkgfX1cbiAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICA8L21hdC1yYWRpby1ncm91cD5cbiAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAge3sgJ0ZPUk1fVkFMSURBVElPTi5SRVFVSVJFRCcgfCBvVHJhbnNsYXRlIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgb0Vycm9yIG9mIGdldEFjdGl2ZU9FcnJvcnMoKVwiPlxuICAgICAge3sgb0Vycm9yLnRleHQgfCBvVHJhbnNsYXRlIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDxkaXYgKm5nSWY9XCJpc1JlYWRPbmx5XCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIGNsYXNzPVwicmVhZC1vbmx5LWJsb2NrZXJcIiBmeEZpbGw+PC9kaXY+XG5cbiAgPG8tY29udGV4dC1tZW51ICpuZ0lmPVwiIXRoaXMuaXNSZWFkT25seSAmJiB0aGlzLmVuYWJsZWRcIj5cbiAgICA8by1jb250ZXh0LW1lbnUtaXRlbSBhdHRyPVwicmVmcmVzaFwiIGxhYmVsPVwiRk9STV9TRVJWSUNFX0NPTVBPTkVOVC5SRUZSRVNIXCIgc3ZnLWljb249XCJvbnRpbWl6ZTphdXRvcmVuZXdcIiAoZXhlY3V0ZSk9XCJyZWZyZXNoKClcIj5cbiAgICA8L28tY29udGV4dC1tZW51LWl0ZW0+XG4gIDwvby1jb250ZXh0LW1lbnU+XG48L2Rpdj5cbiJdfQ==
|