@universis/ngx-tables 6.0.0 → 15.0.2

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.
Files changed (163) hide show
  1. package/esm2020/lib/actions/table.actions.mjs +27 -0
  2. package/esm2020/lib/advanced-aggregator.mjs +2 -0
  3. package/esm2020/lib/components/add-items/add-items.component.mjs +138 -0
  4. package/esm2020/lib/components/advanced-aggregator/advanced-aggregator.component.mjs +126 -0
  5. package/esm2020/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.mjs +53 -0
  6. package/esm2020/lib/components/advanced-list/advanced-list.component.mjs +184 -0
  7. package/esm2020/lib/components/advanced-row-action/advanced-row-action.component.mjs +178 -0
  8. package/esm2020/lib/components/advanced-search-form/advanced-search-form.component.mjs +154 -0
  9. package/esm2020/lib/components/advanced-select/advanced-select.component.mjs +42 -0
  10. package/esm2020/lib/components/advanced-select/advanced-select.service.mjs +38 -0
  11. package/esm2020/lib/components/advanced-table/advanced-filter-value-provider.service.mjs +31 -0
  12. package/esm2020/lib/components/advanced-table/advanced-table-resolvers.mjs +40 -0
  13. package/esm2020/lib/components/advanced-table/advanced-table-search-base.mjs +31 -0
  14. package/esm2020/lib/components/advanced-table/advanced-table-search.component.mjs +525 -0
  15. package/esm2020/lib/components/advanced-table/advanced-table-settings.component.mjs +108 -0
  16. package/esm2020/lib/components/advanced-table/advanced-table.component.mjs +1599 -0
  17. package/esm2020/lib/components/advanced-table/advanced-table.formatters.interface.mjs +17 -0
  18. package/esm2020/lib/components/advanced-table/advanced-table.formatters.mjs +429 -0
  19. package/esm2020/lib/components/advanced-table/advanced-table.interfaces.mjs +2 -0
  20. package/esm2020/lib/components/advanced-table-modal/advanced-table-modal-base.component.mjs +420 -0
  21. package/esm2020/lib/components/column-selector/column-selector.component.mjs +205 -0
  22. package/esm2020/lib/components/column-selector/column-selector.service.mjs +45 -0
  23. package/esm2020/lib/components/table-simple-header/table-simple-header.component.mjs +52 -0
  24. package/esm2020/lib/directives/advance-search-state.directive.mjs +111 -0
  25. package/esm2020/lib/directives/advance-table-state.directive.mjs +63 -0
  26. package/esm2020/lib/directives/advanced-search-router-state.directive.mjs +64 -0
  27. package/esm2020/lib/directives/advanced-table-editor.directive.mjs +154 -0
  28. package/esm2020/lib/directives/btnexp.directive.mjs +222 -0
  29. package/esm2020/lib/i18n/tables.el.mjs +129 -0
  30. package/esm2020/lib/i18n/tables.en.mjs +128 -0
  31. package/esm2020/lib/pipes/advanced-aggregator.pipe.mjs +38 -0
  32. package/esm2020/lib/pipes/advansed-aggregator-list-title-parse.pipe.mjs +45 -0
  33. package/esm2020/lib/reducers/index.mjs +37 -0
  34. package/esm2020/lib/services/advanced-aggregator/advanced-aggregator.service.mjs +119 -0
  35. package/esm2020/lib/tables.activated-table.service.mjs +46 -0
  36. package/esm2020/lib/tables.module.mjs +218 -0
  37. package/esm2020/public_api.mjs +37 -0
  38. package/esm2020/universis-ngx-tables.mjs +5 -0
  39. package/fesm2015/universis-ngx-tables.mjs +5642 -0
  40. package/fesm2015/universis-ngx-tables.mjs.map +1 -0
  41. package/fesm2020/universis-ngx-tables.mjs +5609 -0
  42. package/fesm2020/universis-ngx-tables.mjs.map +1 -0
  43. package/index.d.ts +5 -0
  44. package/lib/actions/table.actions.d.ts +4 -4
  45. package/lib/components/add-items/add-items.component.d.ts +5 -5
  46. package/lib/components/advanced-aggregator/advanced-aggregator.component.d.ts +10 -4
  47. package/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.d.ts +4 -1
  48. package/lib/components/advanced-list/advanced-list.component.d.ts +6 -3
  49. package/lib/components/advanced-row-action/advanced-row-action.component.d.ts +9 -7
  50. package/lib/components/advanced-search-form/advanced-search-form.component.d.ts +4 -1
  51. package/lib/components/advanced-select/advanced-select.component.d.ts +3 -1
  52. package/lib/components/advanced-select/advanced-select.service.d.ts +3 -0
  53. package/lib/components/advanced-table/advanced-filter-value-provider.service.d.ts +3 -0
  54. package/lib/components/advanced-table/advanced-table-resolvers.d.ts +5 -0
  55. package/lib/components/advanced-table/advanced-table-search-base.d.ts +6 -2
  56. package/lib/components/advanced-table/advanced-table-search.component.d.ts +6 -2
  57. package/lib/components/advanced-table/advanced-table-settings.component.d.ts +3 -0
  58. package/lib/components/advanced-table/advanced-table.component.d.ts +21 -12
  59. package/lib/components/advanced-table-modal/advanced-table-modal-base.component.d.ts +4 -1
  60. package/lib/components/column-selector/column-selector.component.d.ts +5 -2
  61. package/lib/components/column-selector/column-selector.service.d.ts +3 -0
  62. package/lib/components/table-simple-header/table-simple-header.component.d.ts +5 -0
  63. package/lib/directives/advance-search-state.directive.d.ts +3 -0
  64. package/lib/directives/advance-table-state.directive.d.ts +3 -0
  65. package/lib/directives/advanced-search-router-state.directive.d.ts +3 -0
  66. package/lib/directives/advanced-table-editor.directive.d.ts +4 -1
  67. package/lib/directives/btnexp.directive.d.ts +3 -0
  68. package/lib/i18n/tables.el.d.ts +107 -107
  69. package/lib/i18n/tables.en.d.ts +106 -106
  70. package/lib/pipes/advanced-aggregator.pipe.d.ts +4 -1
  71. package/lib/pipes/advansed-aggregator-list-title-parse.pipe.d.ts +4 -1
  72. package/lib/reducers/index.d.ts +5 -3
  73. package/lib/services/advanced-aggregator/advanced-aggregator.service.d.ts +3 -0
  74. package/lib/tables.activated-table.service.d.ts +5 -1
  75. package/lib/tables.module.d.ts +36 -0
  76. package/package.json +44 -42
  77. package/public_api.d.ts +3 -0
  78. package/bundles/universis-ngx-tables.umd.js +0 -8161
  79. package/bundles/universis-ngx-tables.umd.js.map +0 -1
  80. package/bundles/universis-ngx-tables.umd.min.js +0 -2
  81. package/bundles/universis-ngx-tables.umd.min.js.map +0 -1
  82. package/esm2015/lib/actions/table.actions.js +0 -69
  83. package/esm2015/lib/advanced-aggregator.js +0 -6
  84. package/esm2015/lib/components/add-items/add-items.component.js +0 -209
  85. package/esm2015/lib/components/advanced-aggregator/advanced-aggregator.component.js +0 -190
  86. package/esm2015/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.js +0 -80
  87. package/esm2015/lib/components/advanced-list/advanced-list.component.js +0 -245
  88. package/esm2015/lib/components/advanced-row-action/advanced-row-action.component.js +0 -265
  89. package/esm2015/lib/components/advanced-search-form/advanced-search-form.component.js +0 -213
  90. package/esm2015/lib/components/advanced-select/advanced-select.component.js +0 -97
  91. package/esm2015/lib/components/advanced-select/advanced-select.service.js +0 -57
  92. package/esm2015/lib/components/advanced-table/advanced-filter-value-provider.service.js +0 -58
  93. package/esm2015/lib/components/advanced-table/advanced-table-resolvers.js +0 -72
  94. package/esm2015/lib/components/advanced-table/advanced-table-search-base.js +0 -49
  95. package/esm2015/lib/components/advanced-table/advanced-table-search.component.js +0 -718
  96. package/esm2015/lib/components/advanced-table/advanced-table-settings.component.js +0 -191
  97. package/esm2015/lib/components/advanced-table/advanced-table.component.js +0 -1973
  98. package/esm2015/lib/components/advanced-table/advanced-table.formatters.interface.js +0 -53
  99. package/esm2015/lib/components/advanced-table/advanced-table.formatters.js +0 -642
  100. package/esm2015/lib/components/advanced-table/advanced-table.interfaces.js +0 -6
  101. package/esm2015/lib/components/advanced-table-modal/advanced-table-modal-base.component.js +0 -553
  102. package/esm2015/lib/components/column-selector/column-selector.component.js +0 -296
  103. package/esm2015/lib/components/column-selector/column-selector.service.js +0 -64
  104. package/esm2015/lib/components/table-simple-header/table-simple-header.component.js +0 -76
  105. package/esm2015/lib/directives/advance-search-state.directive.js +0 -147
  106. package/esm2015/lib/directives/advance-table-state.directive.js +0 -86
  107. package/esm2015/lib/directives/advanced-search-router-state.directive.js +0 -90
  108. package/esm2015/lib/directives/advanced-table-editor.directive.js +0 -186
  109. package/esm2015/lib/directives/btnexp.directive.js +0 -272
  110. package/esm2015/lib/i18n/tables.el.js +0 -133
  111. package/esm2015/lib/i18n/tables.en.js +0 -132
  112. package/esm2015/lib/pipes/advanced-aggregator.pipe.js +0 -39
  113. package/esm2015/lib/pipes/advansed-aggregator-list-title-parse.pipe.js +0 -58
  114. package/esm2015/lib/reducers/index.js +0 -63
  115. package/esm2015/lib/services/advanced-aggregator/advanced-aggregator.service.js +0 -142
  116. package/esm2015/lib/tables.activated-table.service.js +0 -85
  117. package/esm2015/lib/tables.module.js +0 -163
  118. package/esm2015/public_api.js +0 -37
  119. package/esm2015/universis-ngx-tables.js +0 -13
  120. package/esm5/lib/actions/table.actions.js +0 -64
  121. package/esm5/lib/advanced-aggregator.js +0 -6
  122. package/esm5/lib/components/add-items/add-items.component.js +0 -243
  123. package/esm5/lib/components/advanced-aggregator/advanced-aggregator.component.js +0 -265
  124. package/esm5/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.js +0 -99
  125. package/esm5/lib/components/advanced-list/advanced-list.component.js +0 -273
  126. package/esm5/lib/components/advanced-row-action/advanced-row-action.component.js +0 -288
  127. package/esm5/lib/components/advanced-search-form/advanced-search-form.component.js +0 -232
  128. package/esm5/lib/components/advanced-select/advanced-select.component.js +0 -103
  129. package/esm5/lib/components/advanced-select/advanced-select.service.js +0 -61
  130. package/esm5/lib/components/advanced-table/advanced-filter-value-provider.service.js +0 -82
  131. package/esm5/lib/components/advanced-table/advanced-table-resolvers.js +0 -80
  132. package/esm5/lib/components/advanced-table/advanced-table-search-base.js +0 -59
  133. package/esm5/lib/components/advanced-table/advanced-table-search.component.js +0 -828
  134. package/esm5/lib/components/advanced-table/advanced-table-settings.component.js +0 -212
  135. package/esm5/lib/components/advanced-table/advanced-table.component.js +0 -2145
  136. package/esm5/lib/components/advanced-table/advanced-table.formatters.interface.js +0 -53
  137. package/esm5/lib/components/advanced-table/advanced-table.formatters.js +0 -815
  138. package/esm5/lib/components/advanced-table/advanced-table.interfaces.js +0 -6
  139. package/esm5/lib/components/advanced-table-modal/advanced-table-modal-base.component.js +0 -555
  140. package/esm5/lib/components/column-selector/column-selector.component.js +0 -389
  141. package/esm5/lib/components/column-selector/column-selector.service.js +0 -68
  142. package/esm5/lib/components/table-simple-header/table-simple-header.component.js +0 -92
  143. package/esm5/lib/directives/advance-search-state.directive.js +0 -169
  144. package/esm5/lib/directives/advance-table-state.directive.js +0 -87
  145. package/esm5/lib/directives/advanced-search-router-state.directive.js +0 -98
  146. package/esm5/lib/directives/advanced-table-editor.directive.js +0 -244
  147. package/esm5/lib/directives/btnexp.directive.js +0 -389
  148. package/esm5/lib/i18n/tables.el.js +0 -133
  149. package/esm5/lib/i18n/tables.en.js +0 -132
  150. package/esm5/lib/pipes/advanced-aggregator.pipe.js +0 -65
  151. package/esm5/lib/pipes/advansed-aggregator-list-title-parse.pipe.js +0 -75
  152. package/esm5/lib/reducers/index.js +0 -65
  153. package/esm5/lib/services/advanced-aggregator/advanced-aggregator.service.js +0 -196
  154. package/esm5/lib/tables.activated-table.service.js +0 -88
  155. package/esm5/lib/tables.module.js +0 -168
  156. package/esm5/public_api.js +0 -37
  157. package/esm5/universis-ngx-tables.js +0 -13
  158. package/fesm2015/universis-ngx-tables.js +0 -6745
  159. package/fesm2015/universis-ngx-tables.js.map +0 -1
  160. package/fesm5/universis-ngx-tables.js +0 -7837
  161. package/fesm5/universis-ngx-tables.js.map +0 -1
  162. package/universis-ngx-tables.d.ts +0 -8
  163. package/universis-ngx-tables.metadata.json +0 -1
@@ -1,213 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
4
- */
5
- import { Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
6
- import { FormioComponent } from 'angular-formio';
7
- import { AngularDataContext } from '@themost/angular';
8
- import { ActivatedRoute } from '@angular/router';
9
- import { ServiceUrlPreProcessor, TranslatePreProcessor } from '@universis/forms';
10
- import { AdvancedTableSearchBaseComponent } from '../advanced-table/advanced-table-search-base';
11
- import { TranslateService } from '@ngx-translate/core';
12
- import { HttpClient } from '@angular/common/http';
13
- export class AdvancedSearchFormComponent extends AdvancedTableSearchBaseComponent {
14
- /**
15
- * @param {?} _context
16
- * @param {?} _translateService
17
- * @param {?} _activatedRoute
18
- * @param {?} _http
19
- */
20
- constructor(_context, _translateService, _activatedRoute, _http) {
21
- super();
22
- this._context = _context;
23
- this._translateService = _translateService;
24
- this._activatedRoute = _activatedRoute;
25
- this._http = _http;
26
- this.form = {};
27
- this.refreshForm = new EventEmitter();
28
- this.loading = new EventEmitter();
29
- this.submission = { data: {} };
30
- this.componentLoading = true;
31
- }
32
- /**
33
- * @param {?} changes
34
- * @return {?}
35
- */
36
- ngOnChanges(changes) {
37
- if (Object.prototype.hasOwnProperty.call(changes, 'form')) {
38
- if (changes["form"] != null) {
39
- if (changes["form"].currentValue &&
40
- // tslint:disable-next-line:triple-equals
41
- changes["form"].currentValue != changes["form"].previousValue) {
42
- this.ngOnInit();
43
- }
44
- }
45
- }
46
- if (Object.prototype.hasOwnProperty.call(changes, 'formSrc')) {
47
- if (changes["formSrc"] != null) {
48
- if (changes["formSrc"].currentValue &&
49
- // tslint:disable-next-line:triple-equals
50
- changes["formSrc"].currentValue != changes["formSrc"].previousValue) {
51
- this._http.get(changes["formSrc"].currentValue).toPromise().then((form) => {
52
- // set form
53
- this.form = form;
54
- // and init
55
- this.ngOnInit();
56
- }).catch((err) => {
57
- console.error('An error occurred while loading search configuration');
58
- console.error(err);
59
- });
60
- }
61
- }
62
- }
63
- if (Object.prototype.hasOwnProperty.call(changes, 'filter')) {
64
- if (changes["filter"] != null) {
65
- this.submission.data = changes["filter"].currentValue || {};
66
- this.refreshForm.emit({
67
- submission: this.submission
68
- });
69
- }
70
- }
71
- }
72
- /**
73
- * @return {?}
74
- */
75
- ngOnInit() {
76
- if (this.form) {
77
- new ServiceUrlPreProcessor(this._context).parse(this.form);
78
- new TranslatePreProcessor(this._translateService).parse(this.form);
79
- this.submission = {
80
- data: this.filter
81
- };
82
- this.loading.emit({
83
- target: this
84
- });
85
- this.refreshForm.emit({
86
- form: this.form
87
- });
88
- this.componentLoading = false;
89
- this.filterSubscription = this.filterChange.subscribe(filter => {
90
- this.submission.data = filter;
91
- this.refreshForm.emit({
92
- submission: this.submission
93
- });
94
- });
95
- }
96
- }
97
- /**
98
- * @param {?} event
99
- * @return {?}
100
- */
101
- onChange(event) {
102
- if (this.formComponent == null) {
103
- return;
104
- }
105
- /** @type {?} */
106
- const formComponent = this.formComponent;
107
- Object.keys(formComponent.submission.data).forEach(key => {
108
- if (Object.prototype.hasOwnProperty.call(formComponent.submission.data, key)) {
109
- /** @type {?} */
110
- const value = formComponent.submission.data[key];
111
- /** @type {?} */
112
- const isEmptyString = typeof value === 'string' && value.length === 0;
113
- /** @type {?} */
114
- const isEmptyObject = typeof value === 'object' && Object.keys(value).length === 0;
115
- // make isEmptyString, isEmptyObject mutex
116
- if (!isEmptyString && !isEmptyObject) {
117
- Object.defineProperty(this.filter, key, {
118
- configurable: true,
119
- enumerable: true,
120
- value: value
121
- });
122
- }
123
- else {
124
- delete this.filter[key];
125
- }
126
- }
127
- });
128
- }
129
- /**
130
- * @param {?} form
131
- * @return {?}
132
- */
133
- onFormLoad(form) {
134
- if (this.formComponent == null) {
135
- return;
136
- }
137
- /** @type {?} */
138
- const currentLang = this._translateService.currentLang;
139
- this.formComponent.formio.i18next.options.resources[currentLang] = { translation: this._translateService.instant(`Forms`) };
140
- this.formComponent.formio.language = currentLang;
141
- }
142
- /**
143
- * @return {?}
144
- */
145
- ngAfterViewInit() {
146
- //
147
- }
148
- /**
149
- * @return {?}
150
- */
151
- ngOnDestroy() {
152
- if (this.filterSubscription) {
153
- this.filterSubscription.unsubscribe();
154
- }
155
- }
156
- }
157
- AdvancedSearchFormComponent.decorators = [
158
- { type: Component, args: [{
159
- // tslint:disable-next-line:component-selector
160
- selector: 'app-advanced-search-form',
161
- template: `
162
- <div class="p-4">
163
- <formio #formioComponent class="formio-search"
164
- (keydown)="onKeyEnter($event)" (change)="onChange($event)" (formLoad)="onFormLoad($event)"
165
- [refresh]="refreshForm" [submission]="submission" [form]="form"></formio>
166
- </div>
167
- `,
168
- encapsulation: ViewEncapsulation.None,
169
- styles: ["formio.formio-search .form-group{margin-bottom:0}formio.formio-search .form-group .col-form-label{font-size:90%;padding-top:4px;padding-bottom:4px}.choices__list.choices__list--single .choices__item:first-child.choices__item--selectable{width:85%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}"]
170
- }] }
171
- ];
172
- /** @nocollapse */
173
- AdvancedSearchFormComponent.ctorParameters = () => [
174
- { type: AngularDataContext },
175
- { type: TranslateService },
176
- { type: ActivatedRoute },
177
- { type: HttpClient }
178
- ];
179
- AdvancedSearchFormComponent.propDecorators = {
180
- formComponent: [{ type: ViewChild, args: ['formioComponent',] }],
181
- form: [{ type: Input }],
182
- formSrc: [{ type: Input }],
183
- refreshForm: [{ type: Output }],
184
- loading: [{ type: Output }]
185
- };
186
- if (false) {
187
- /** @type {?} */
188
- AdvancedSearchFormComponent.prototype.formComponent;
189
- /** @type {?} */
190
- AdvancedSearchFormComponent.prototype.form;
191
- /** @type {?} */
192
- AdvancedSearchFormComponent.prototype.formSrc;
193
- /** @type {?} */
194
- AdvancedSearchFormComponent.prototype.refreshForm;
195
- /** @type {?} */
196
- AdvancedSearchFormComponent.prototype.loading;
197
- /** @type {?} */
198
- AdvancedSearchFormComponent.prototype.submission;
199
- /** @type {?} */
200
- AdvancedSearchFormComponent.prototype.filterSubscription;
201
- /** @type {?} */
202
- AdvancedSearchFormComponent.prototype.componentLoading;
203
- /** @type {?} */
204
- AdvancedSearchFormComponent.prototype._context;
205
- /** @type {?} */
206
- AdvancedSearchFormComponent.prototype._translateService;
207
- /** @type {?} */
208
- AdvancedSearchFormComponent.prototype._activatedRoute;
209
- /** @type {?} */
210
- AdvancedSearchFormComponent.prototype._http;
211
- }
212
-
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtc2VhcmNoLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHVuaXZlcnNpcy9uZ3gtdGFibGVzLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvYWR2YW5jZWQtc2VhcmNoLWZvcm0vYWR2YW5jZWQtc2VhcmNoLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUMvSixPQUFPLEVBQUMsZUFBZSxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQy9FLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQzlGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRXJELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQWVsRCxNQUFNLGtDQUFtQyxTQUFRLGdDQUFnQzs7Ozs7OztJQVkvRSxZQUFvQixRQUE0QixFQUM1QixtQkFDQSxpQkFDQTtRQUVsQixLQUFLLEVBQUUsQ0FBQztRQUxVLGFBQVEsR0FBUixRQUFRLENBQW9CO1FBQzVCLHNCQUFpQixHQUFqQixpQkFBaUI7UUFDakIsb0JBQWUsR0FBZixlQUFlO1FBQ2YsVUFBSyxHQUFMLEtBQUs7b0JBWEosRUFBRTsyQkFFQyxJQUFJLFlBQVksRUFBTzt1QkFDM0IsSUFBSSxZQUFZLEVBQTBDOzBCQUM1RCxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7Z0NBRUosSUFBSTtLQVE3Qjs7Ozs7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQ3pELElBQUksT0FBTyxZQUFTLElBQUksRUFBRTtnQkFDeEIsSUFBSSxPQUFPLFNBQU0sWUFBWTs7b0JBRTNCLE9BQU8sU0FBTSxZQUFZLElBQUksT0FBTyxTQUFNLGFBQWEsRUFBRTtvQkFDekQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2lCQUNqQjthQUNGO1NBQ0Y7UUFDRCxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQUU7WUFDNUQsSUFBSSxPQUFPLGVBQVksSUFBSSxFQUFFO2dCQUMzQixJQUFJLE9BQU8sWUFBUyxZQUFZOztvQkFFOUIsT0FBTyxZQUFTLFlBQVksSUFBSSxPQUFPLFlBQVMsYUFBYSxFQUFFO29CQUMvRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLFlBQVMsWUFBWSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7O3dCQUVyRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQzs7d0JBRWpCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztxQkFDakIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO3dCQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQzt3QkFDdEUsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDcEIsQ0FBQyxDQUFDO2lCQUNKO2FBQ0Y7U0FDRjtRQUNELElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsRUFBRTtZQUMzRCxJQUFJLE9BQU8sY0FBVyxJQUFJLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLE9BQU8sV0FBUSxZQUFZLElBQUksRUFBRSxDQUFDO2dCQUN6RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztvQkFDcEIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2lCQUM1QixDQUFDLENBQUM7YUFDSjtTQUNGO0tBQ0Y7Ozs7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzRCxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkUsSUFBSSxDQUFDLFVBQVUsR0FBRztnQkFDaEIsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNO2FBQ2xCLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDaEIsTUFBTSxFQUFFLElBQUk7YUFDYixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztnQkFDcEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2FBQ2hCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7WUFDOUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFFLE1BQU0sQ0FBQyxFQUFFO2dCQUM5RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO29CQUNwQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7aUJBQzVCLENBQUMsQ0FBQzthQUNKLENBQUMsQ0FBQztTQUNKO0tBQ0Y7Ozs7O0lBRUQsUUFBUSxDQUFDLEtBQWE7UUFDcEIsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksRUFBRTtZQUM5QixPQUFPO1NBQ1I7O1FBQ0QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN6QyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZELElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFOztnQkFDNUUsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7O2dCQUVqRCxNQUFNLGFBQWEsR0FBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7O2dCQUV2RSxNQUFNLGFBQWEsR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDOztnQkFFbkYsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLGFBQWEsRUFBRTtvQkFDcEMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTt3QkFDdEMsWUFBWSxFQUFHLElBQUk7d0JBQ25CLFVBQVUsRUFBRSxJQUFJO3dCQUNoQixLQUFLLEVBQUcsS0FBSztxQkFDZCxDQUFDLENBQUM7aUJBQ0o7cUJBQU07b0JBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUN6QjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0tBQ0o7Ozs7O0lBRUQsVUFBVSxDQUFDLElBQWdCO1FBQ3pCLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLEVBQUU7WUFDOUIsT0FBTztTQUNSOztRQUNELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUM7UUFDdkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzdILElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUM7S0FDbEQ7Ozs7SUFFRCxlQUFlOztLQUVkOzs7O0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN2QztLQUNGOzs7WUF4SUYsU0FBUyxTQUFDOztnQkFFVCxRQUFRLEVBQUUsMEJBQTBCO2dCQUNwQyxRQUFRLEVBQUU7Ozs7OztHQU1UO2dCQUVELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJOzthQUN0Qzs7OztZQXBCTyxrQkFBa0I7WUFJbEIsZ0JBQWdCO1lBSGhCLGNBQWM7WUFLYixVQUFVOzs7NEJBa0JoQixTQUFTLFNBQUMsaUJBQWlCO21CQUMzQixLQUFLO3NCQUNMLEtBQUs7MEJBQ0wsTUFBTTtzQkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxuaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24sIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1pb0NvbXBvbmVudCwgRm9ybWlvRm9ybX0gZnJvbSAnYW5ndWxhci1mb3JtaW8nO1xuaW1wb3J0IHtBbmd1bGFyRGF0YUNvbnRleHR9IGZyb20gJ0B0aGVtb3N0L2FuZ3VsYXInO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7U2VydmljZVVybFByZVByb2Nlc3NvciwgVHJhbnNsYXRlUHJlUHJvY2Vzc29yfSBmcm9tICdAdW5pdmVyc2lzL2Zvcm1zJztcbmltcG9ydCB7QWR2YW5jZWRUYWJsZVNlYXJjaEJhc2VDb21wb25lbnR9IGZyb20gJy4uL2FkdmFuY2VkLXRhYmxlL2FkdmFuY2VkLXRhYmxlLXNlYXJjaC1iYXNlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2FwcC1hZHZhbmNlZC1zZWFyY2gtZm9ybScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInAtNFwiPlxuICAgICAgPGZvcm1pbyAjZm9ybWlvQ29tcG9uZW50IGNsYXNzPVwiZm9ybWlvLXNlYXJjaFwiXG4gICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5RW50ZXIoJGV2ZW50KVwiIChjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiIChmb3JtTG9hZCk9XCJvbkZvcm1Mb2FkKCRldmVudClcIlxuICAgICAgICAgICAgICBbcmVmcmVzaF09XCJyZWZyZXNoRm9ybVwiIFtzdWJtaXNzaW9uXT1cInN1Ym1pc3Npb25cIiBbZm9ybV09XCJmb3JtXCI+PC9mb3JtaW8+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2FkdmFuY2VkLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgQWR2YW5jZWRTZWFyY2hGb3JtQ29tcG9uZW50IGV4dGVuZHMgQWR2YW5jZWRUYWJsZVNlYXJjaEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcblxuXG4gIEBWaWV3Q2hpbGQoJ2Zvcm1pb0NvbXBvbmVudCcpIGZvcm1Db21wb25lbnQ/OiBGb3JtaW9Db21wb25lbnQ7XG4gIEBJbnB1dCgpIGZvcm06IGFueSA9IHt9O1xuICBASW5wdXQoKSBmb3JtU3JjPzogc3RyaW5nO1xuICBAT3V0cHV0KCkgcmVmcmVzaEZvcm0gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGxvYWRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPHsgdGFyZ2V0OiBBZHZhbmNlZFNlYXJjaEZvcm1Db21wb25lbnR9PigpO1xuICBzdWJtaXNzaW9uOiBhbnkgPSB7IGRhdGE6IHt9IH07XG4gIHByaXZhdGUgZmlsdGVyU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgY29tcG9uZW50TG9hZGluZyA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY29udGV4dDogQW5ndWxhckRhdGFDb250ZXh0LFxuICAgICAgICAgICAgICBwcml2YXRlIF90cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIF9hY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnRcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNoYW5nZXMsICdmb3JtJykpIHtcbiAgICAgIGlmIChjaGFuZ2VzLmZvcm0gIT0gbnVsbCkge1xuICAgICAgICBpZiAoY2hhbmdlcy5mb3JtLmN1cnJlbnRWYWx1ZSAmJlxuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp0cmlwbGUtZXF1YWxzXG4gICAgICAgICAgY2hhbmdlcy5mb3JtLmN1cnJlbnRWYWx1ZSAhPSBjaGFuZ2VzLmZvcm0ucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgIHRoaXMubmdPbkluaXQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNoYW5nZXMsICdmb3JtU3JjJykpIHtcbiAgICAgIGlmIChjaGFuZ2VzLmZvcm1TcmMgIT0gbnVsbCkge1xuICAgICAgICBpZiAoY2hhbmdlcy5mb3JtU3JjLmN1cnJlbnRWYWx1ZSAmJlxuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp0cmlwbGUtZXF1YWxzXG4gICAgICAgICAgY2hhbmdlcy5mb3JtU3JjLmN1cnJlbnRWYWx1ZSAhPSBjaGFuZ2VzLmZvcm1TcmMucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgIHRoaXMuX2h0dHAuZ2V0KGNoYW5nZXMuZm9ybVNyYy5jdXJyZW50VmFsdWUpLnRvUHJvbWlzZSgpLnRoZW4oKGZvcm0pID0+IHtcbiAgICAgICAgICAgIC8vIHNldCBmb3JtXG4gICAgICAgICAgICB0aGlzLmZvcm0gPSBmb3JtO1xuICAgICAgICAgICAgLy8gYW5kIGluaXRcbiAgICAgICAgICAgIHRoaXMubmdPbkluaXQoKTtcbiAgICAgICAgICB9KS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBsb2FkaW5nIHNlYXJjaCBjb25maWd1cmF0aW9uJyk7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjaGFuZ2VzLCAnZmlsdGVyJykpIHtcbiAgICAgIGlmIChjaGFuZ2VzLmZpbHRlciAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMuc3VibWlzc2lvbi5kYXRhID0gY2hhbmdlcy5maWx0ZXIuY3VycmVudFZhbHVlIHx8IHt9O1xuICAgICAgICB0aGlzLnJlZnJlc2hGb3JtLmVtaXQoe1xuICAgICAgICAgIHN1Ym1pc3Npb246IHRoaXMuc3VibWlzc2lvblxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtKSB7XG4gICAgICBuZXcgU2VydmljZVVybFByZVByb2Nlc3Nvcih0aGlzLl9jb250ZXh0KS5wYXJzZSh0aGlzLmZvcm0pO1xuICAgICAgbmV3IFRyYW5zbGF0ZVByZVByb2Nlc3Nvcih0aGlzLl90cmFuc2xhdGVTZXJ2aWNlKS5wYXJzZSh0aGlzLmZvcm0pO1xuICAgICAgdGhpcy5zdWJtaXNzaW9uID0ge1xuICAgICAgICBkYXRhOiB0aGlzLmZpbHRlclxuICAgICAgfTtcbiAgICAgIHRoaXMubG9hZGluZy5lbWl0KHtcbiAgICAgICAgdGFyZ2V0OiB0aGlzXG4gICAgICB9KTtcbiAgICAgIHRoaXMucmVmcmVzaEZvcm0uZW1pdCh7XG4gICAgICAgIGZvcm06IHRoaXMuZm9ybVxuICAgICAgfSk7XG4gICAgICB0aGlzLmNvbXBvbmVudExvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuZmlsdGVyU3Vic2NyaXB0aW9uID0gdGhpcy5maWx0ZXJDaGFuZ2Uuc3Vic2NyaWJlKCBmaWx0ZXIgPT4ge1xuICAgICAgICB0aGlzLnN1Ym1pc3Npb24uZGF0YSA9IGZpbHRlcjtcbiAgICAgICAgdGhpcy5yZWZyZXNoRm9ybS5lbWl0KHtcbiAgICAgICAgICBzdWJtaXNzaW9uOiB0aGlzLnN1Ym1pc3Npb25cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZShldmVudDogb2JqZWN0KSB7XG4gICAgaWYgKHRoaXMuZm9ybUNvbXBvbmVudCA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZvcm1Db21wb25lbnQgPSB0aGlzLmZvcm1Db21wb25lbnQ7XG4gICAgT2JqZWN0LmtleXMoZm9ybUNvbXBvbmVudC5zdWJtaXNzaW9uLmRhdGEpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZm9ybUNvbXBvbmVudC5zdWJtaXNzaW9uLmRhdGEsIGtleSkpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBmb3JtQ29tcG9uZW50LnN1Ym1pc3Npb24uZGF0YVtrZXldO1xuICAgICAgICAvLyB0aGUgZmlsdGVyIHdpdGggdHlwZSBpcyBhIHN0cmluZyBhbmQgaXMgbm90IGVtcHR5XG4gICAgICAgIGNvbnN0IGlzRW1wdHlTdHJpbmcgPSAgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGggPT09IDA7XG4gICAgICAgIC8vIGRvIG5vdCBpbmNsdWRlIGVtcHR5IG9iamVjdHMgaW4gZmlsdGVyXG4gICAgICAgIGNvbnN0IGlzRW1wdHlPYmplY3QgPSB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDA7XG4gICAgICAgIC8vIG1ha2UgaXNFbXB0eVN0cmluZywgaXNFbXB0eU9iamVjdCBtdXRleFxuICAgICAgICBpZiAoIWlzRW1wdHlTdHJpbmcgJiYgIWlzRW1wdHlPYmplY3QpIHtcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5maWx0ZXIsIGtleSwge1xuICAgICAgICAgICAgY29uZmlndXJhYmxlIDogdHJ1ZSxcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZSA6IHZhbHVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIHRoaXMuZmlsdGVyW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uRm9ybUxvYWQoZm9ybTogRm9ybWlvRm9ybSkge1xuICAgIGlmICh0aGlzLmZvcm1Db21wb25lbnQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50TGFuZyA9IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmc7XG4gICAgdGhpcy5mb3JtQ29tcG9uZW50LmZvcm1pby5pMThuZXh0Lm9wdGlvbnMucmVzb3VyY2VzW2N1cnJlbnRMYW5nXSA9IHsgdHJhbnNsYXRpb24gOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYEZvcm1zYCkgfTtcbiAgICB0aGlzLmZvcm1Db21wb25lbnQuZm9ybWlvLmxhbmd1YWdlID0gY3VycmVudExhbmc7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy9cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZpbHRlclN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5maWx0ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,97 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
4
- */
5
- import * as tslib_1 from "tslib";
6
- import { AdvancedTableModalBaseComponent } from '../advanced-table-modal/advanced-table-modal-base.component';
7
- import { ActivatedRoute, Router } from '@angular/router';
8
- import { AdvancedFilterValueProvider } from '../advanced-table/advanced-filter-value-provider.service';
9
- import { AngularDataContext } from '@themost/angular';
10
- import { Component, ElementRef, EventEmitter, ViewChild, ViewEncapsulation } from '@angular/core';
11
- import { BsModalRef } from 'ngx-bootstrap/modal';
12
- import { DatePipe } from '@angular/common';
13
- export class AdvancedSelectComponent extends AdvancedTableModalBaseComponent {
14
- /**
15
- * @param {?} router
16
- * @param {?} activatedRoute
17
- * @param {?} context
18
- * @param {?} advancedFilterValueProvider
19
- * @param {?} datePipe
20
- * @param {?} _modalRef
21
- * @param {?} el
22
- */
23
- constructor(router, activatedRoute, context, advancedFilterValueProvider, datePipe, _modalRef, el) {
24
- super(router, activatedRoute, context, advancedFilterValueProvider, datePipe);
25
- this._modalRef = _modalRef;
26
- this.el = el;
27
- this.dismiss = new EventEmitter();
28
- }
29
- /**
30
- * @return {?}
31
- */
32
- ngAfterViewInit() {
33
- super.ngAfterViewInit();
34
- setTimeout(() => {
35
- if (this.searchElement && this.searchElement.nativeElement) {
36
- this.searchElement.nativeElement.focus();
37
- }
38
- }, 0);
39
- }
40
- /**
41
- * @return {?}
42
- */
43
- ok() {
44
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
45
- this._modalRef.hide();
46
- this.dismiss.emit('ok');
47
- });
48
- }
49
- /**
50
- * @return {?}
51
- */
52
- cancel() {
53
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
54
- this._modalRef.hide();
55
- this.dismiss.emit('cancel');
56
- });
57
- }
58
- }
59
- AdvancedSelectComponent.decorators = [
60
- { type: Component, args: [{
61
- // tslint:disable-next-line: component-selector
62
- selector: 'app-advanced-select',
63
- template: "<div class=\"modal-header\" *ngIf=\"modalTitle\">\n <h5 class=\"modal-title\">{{modalTitle | translate}}</h5>\n <button [disabled]=\"cancelButtonDisabled\" (click)=\"cancel()\" type=\"button\" class=\"close\" data-dismiss=\"modal\"\n aria-label=\"Cancel\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n</div>\n<div class=\"modal-body\">\n <div>\n <!-- search -->\n <div class=\"row mt-3\">\n <div class=\"col-12 col-lg-3\">\n <div class=\"input-group mb-3\">\n <input spellcheck=\"false\" type=\"text\" #searchElement (keyup)=\"onKeyUp($event)\" [(ngModel)]=\"searchText\" \n class=\"form-control bg-gray-100 border-0\" placeholder=\"{{'Tables.SearchPlaceholder' | translate}}\"\n aria-label=\"Search\" aria-describedby=\"basic-addon2\">\n <div class=\"input-group-append\">\n <button class=\"btn btn-default bg-gray-100 border-0\" type=\"button\" (click)=\"onSearch()\">\n <i class=\"fa fa-search text-secondary\"></i>\n </button>\n </div>\n </div>\n </div>\n <div #emptyTable class=\"d-none\">\n <div>\n <div class=\"mt-4\">\n <div class=\"icon-circle bg-gray-300 border-gray-100\"></div>\n </div>\n <div class=\"mt-4\">\n <h4 class=\"font-3xl text-dark\" [translate]=\"'Tables.EmptyTableTitle'\"></h4>\n <p class=\"font-lg text-dark\" [translate]=\"'Tables.EmptyTableMessage'\"></p>\n </div>\n\n </div>\n </div>\n <div class=\"col-12 col-lg-5\">\n <div class=\"btn-toolbar\">\n <button class=\"btn btn-gray-100\">\n <i class=\"fa fa-sliders-h pr-2 text-secondary\" aria-hidden=\"true\"></i>{{'Tables.Filters' | translate}}\n </button>\n <div class=\"dropdown ml-3\">\n <button dropdownToggle class=\"btn btn-gray-100 dropdown-toggle\" type=\"button\" id=\"dropdownDefaultFilters\"\n data-toggle=\"dropdown\">\n {{ this.defaultFilter.name | translate }}\n </button>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownDefaultFilters\">\n <a class=\"dropdown-item\" *ngFor=\"let filter of defaultFilters\"\n (click)=\"advancedSearch(filter.filter ? filter : '')\">\n {{ filter.name | translate }}\n </a>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col text-lg-right mt-3 mt-lg-0 d-none\">\n <button [disabled]=\"true\" class=\"btn rounded-pill btn-outline-theme\">\n <span class=\"pr-2 font-lg\">+</span><span [translate]=\"'Tables.AddItem'\"></span>\n </button>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12\" [ngClass]=\"{ 'component-loading': loading}\">\n <app-advanced-table #advancedTable (init)=\"onTableInit()\" (load)=\"onDataLoad($event)\"\n [autoLoad]=\"true\"\n [selectable]=\"true\" [multipleSelect]=\"true\" [scrollX]=\"false\" [scrollY]=\"320\" [pageLength]=\"pageLength\"\n [scrollable]=\"false\" [showFooter]=\"false\" [showActions]=\"false\" [lengthMenu]=\"lengthMenu\"\n [config]=\"tableConfig\" [configSrc]=\"tableConfigSrc\"></app-advanced-table>\n </div>\n </div>\n <div class=\"row mt-3 table-custom-pager\">\n <div class=\"col-12 d-flex\" *ngIf=\"recordsTotal\">\n <div class=\"mt-2 ml-auto mr-3 text-secondary\" [translate]=\"'Tables.RecordsPerPage'\"></div>\n <div class=\"dropdown mr-3\">\n <button dropdownToggle class=\"btn btn-gray-100 dropdown-toggle\" type=\"button\" id=\"dropdownPageSize\"\n data-toggle=\"dropdown\">\n {{pageLength}}\n </button>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownPageSize\">\n <button (click)=\"setLength(item)\" class=\"dropdown-item dropdown-item-theme\" type=\"button\"\n *ngFor=\"let item of lengthMenu\">{{item}}</button>\n </div>\n </div>\n <div class=\"mt-2 mr-2\" [translate]=\"'Tables.PageInfo'\" [translateParams]=\"pageInfo\"></div>\n <button [disabled]=\"pageInfo && pageInfo.page === 0\" class=\"btn text-nowrap\" (click)=\"firstPage()\">\n <i class=\"fa fa-chevron-left text-color-theme\"></i>\n <i class=\"fa fa-chevron-left text-color-theme\"></i>\n </button>\n <button [disabled]=\"pageInfo && pageInfo.page===0\" class=\"btn\" (click)=\"previousPage()\">\n <i class=\"fa fa-chevron-left text-color-theme\"></i>\n </button>\n <button [disabled]=\"pageInfo && pageInfo.page===pageInfo.pages-1\" class=\"btn\" (click)=\"nextPage()\">\n <i class=\"fa fa-chevron-right text-color-theme\"></i>\n </button>\n <button [disabled]=\"pageInfo && pageInfo.page===pageInfo.pages-1\" class=\"btn text-nowrap\"\n (click)=\"lastPage()\">\n <i class=\"fa fa-chevron-right text-color-theme\"></i>\n <i class=\"fa fa-chevron-right text-color-theme\"></i>\n </button>\n </div>\n </div>\n </div>\n</div>\n<div class=\"modal-footer justify-content-end\">\n <button [disabled]=\"okButtonDisabled\" (click)=\"ok()\" type=\"button\" [ngClass]=\"okButtonClass\">\n {{okButtonText | translate}}\n </button>\n <button [disabled]=\"cancelButtonDisabled\" (click)=\"cancel()\" type=\"button\" [ngClass]=\"cancelButtonClass\"\n data-dismiss=\"modal\">\n {{ cancelButtonText | translate}}\n </button>\n</div>\n",
64
- encapsulation: ViewEncapsulation.None,
65
- styles: [`
66
- .modal-table .dataTables_wrapper {
67
- height: 50vh;
68
- overflow-y: auto;
69
- }
70
- `]
71
- }] }
72
- ];
73
- /** @nocollapse */
74
- AdvancedSelectComponent.ctorParameters = () => [
75
- { type: Router },
76
- { type: ActivatedRoute },
77
- { type: AngularDataContext },
78
- { type: AdvancedFilterValueProvider },
79
- { type: DatePipe },
80
- { type: BsModalRef },
81
- { type: ElementRef }
82
- ];
83
- AdvancedSelectComponent.propDecorators = {
84
- searchElement: [{ type: ViewChild, args: ['searchElement',] }]
85
- };
86
- if (false) {
87
- /** @type {?} */
88
- AdvancedSelectComponent.prototype.dismiss;
89
- /** @type {?} */
90
- AdvancedSelectComponent.prototype.searchElement;
91
- /** @type {?} */
92
- AdvancedSelectComponent.prototype._modalRef;
93
- /** @type {?} */
94
- AdvancedSelectComponent.prototype.el;
95
- }
96
-
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B1bml2ZXJzaXMvbmd4LXRhYmxlcy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2FkdmFuY2VkLXNlbGVjdC9hZHZhbmNlZC1zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDOUcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBZ0IzQyxNQUFNLDhCQUErQixTQUFRLCtCQUErQjs7Ozs7Ozs7OztJQUsxRSxZQUFZLE1BQWMsRUFDeEIsY0FBOEIsRUFDOUIsT0FBMkIsRUFDM0IsMkJBQXdELEVBQ3hELFFBQWtCLEVBQ1YsV0FDQTtRQUNSLEtBQUssQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUZ0RSxjQUFTLEdBQVQsU0FBUztRQUNULE9BQUUsR0FBRixFQUFFO3VCQVR3QixJQUFJLFlBQVksRUFBRTtLQVdyRDs7OztJQUVELGVBQWU7UUFDYixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRTtnQkFDMUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDMUM7U0FDRixFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQ1A7Ozs7SUFFWSxFQUFFOztZQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Ozs7OztJQUdiLE1BQU07O1lBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Ozs7O1lBN0MvQixTQUFTLFNBQUM7O2dCQUVULFFBQVEsRUFBRSxxQkFBcUI7Z0JBQy9CLGdwTEFBK0M7Z0JBUy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO3lCQVBuQzs7Ozs7S0FLQzthQUdKOzs7O1lBcEJ3QixNQUFNO1lBQXRCLGNBQWM7WUFFZCxrQkFBa0I7WUFEbEIsMkJBQTJCO1lBSTNCLFFBQVE7WUFEUixVQUFVO1lBRGdCLFVBQVU7Ozs0QkFxQjFDLFNBQVMsU0FBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWR2YW5jZWRUYWJsZU1vZGFsQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2FkdmFuY2VkLXRhYmxlLW1vZGFsL2FkdmFuY2VkLXRhYmxlLW1vZGFsLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWR2YW5jZWRGaWx0ZXJWYWx1ZVByb3ZpZGVyIH0gZnJvbSAnLi4vYWR2YW5jZWQtdGFibGUvYWR2YW5jZWQtZmlsdGVyLXZhbHVlLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQW5ndWxhckRhdGFDb250ZXh0IH0gZnJvbSAnQHRoZW1vc3QvYW5ndWxhcic7XG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBjb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdhcHAtYWR2YW5jZWQtc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkdmFuY2VkLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAubW9kYWwtdGFibGUgLmRhdGFUYWJsZXNfd3JhcHBlciB7XG4gICAgICBoZWlnaHQ6IDUwdmg7XG4gICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIH1cbiAgICBgLFxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBZHZhbmNlZFNlbGVjdENvbXBvbmVudCBleHRlbmRzIEFkdmFuY2VkVGFibGVNb2RhbEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcblxuICBwdWJsaWMgZGlzbWlzczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaEVsZW1lbnQnKSBzZWFyY2hFbGVtZW50OiBhbnk7XG5cbiAgY29uc3RydWN0b3Iocm91dGVyOiBSb3V0ZXIsXG4gICAgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIGNvbnRleHQ6IEFuZ3VsYXJEYXRhQ29udGV4dCxcbiAgICBhZHZhbmNlZEZpbHRlclZhbHVlUHJvdmlkZXI6IEFkdmFuY2VkRmlsdGVyVmFsdWVQcm92aWRlcixcbiAgICBkYXRlUGlwZTogRGF0ZVBpcGUsXG4gICAgcHJpdmF0ZSBfbW9kYWxSZWY6IEJzTW9kYWxSZWYsXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZikge1xuICAgIHN1cGVyKHJvdXRlciwgYWN0aXZhdGVkUm91dGUsIGNvbnRleHQsIGFkdmFuY2VkRmlsdGVyVmFsdWVQcm92aWRlciwgZGF0ZVBpcGUpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2VhcmNoRWxlbWVudCAmJiB0aGlzLnNlYXJjaEVsZW1lbnQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICB0aGlzLnNlYXJjaEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sIDApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIG9rKCkge1xuICAgIHRoaXMuX21vZGFsUmVmLmhpZGUoKTtcbiAgICB0aGlzLmRpc21pc3MuZW1pdCgnb2snKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjYW5jZWwoKSB7XG4gICAgdGhpcy5fbW9kYWxSZWYuaGlkZSgpO1xuICAgIHRoaXMuZGlzbWlzcy5lbWl0KCdjYW5jZWwnKTtcbiAgfVxuXG59XG4iXX0=
@@ -1,57 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
4
- */
5
- import { Injectable } from '@angular/core';
6
- import { ModalService } from '@universis/common';
7
- import { AdvancedSelectComponent } from './advanced-select.component';
8
- export class AdvancedSelectService {
9
- /**
10
- * @param {?} _modal
11
- */
12
- constructor(_modal) {
13
- //
14
- this._modal = _modal;
15
- }
16
- /**
17
- * @param {?} initialState
18
- * @return {?}
19
- */
20
- select(initialState) {
21
- return new Promise((resolve, reject) => {
22
- try {
23
- /** @type {?} */
24
- const modalRef = this._modal.openModalComponent(AdvancedSelectComponent, {
25
- class: 'modal-xl modal-table',
26
- ignoreBackdropClick: true,
27
- animated: true,
28
- initialState: initialState
29
- });
30
- /** @type {?} */
31
- const componentRef = modalRef.content;
32
- componentRef.dismiss.subscribe((result) => {
33
- return resolve({
34
- result: result,
35
- items: /** @type {?} */ ((componentRef.advancedTable && componentRef.advancedTable.selected))
36
- });
37
- });
38
- }
39
- catch (err) {
40
- return reject(err);
41
- }
42
- });
43
- }
44
- }
45
- AdvancedSelectService.decorators = [
46
- { type: Injectable }
47
- ];
48
- /** @nocollapse */
49
- AdvancedSelectService.ctorParameters = () => [
50
- { type: ModalService }
51
- ];
52
- if (false) {
53
- /** @type {?} */
54
- AdvancedSelectService.prototype._modal;
55
- }
56
-
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtc2VsZWN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdW5pdmVyc2lzL25neC10YWJsZXMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9hZHZhbmNlZC1zZWxlY3QvYWR2YW5jZWQtc2VsZWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXRFLE1BQU07Ozs7SUFFSixZQUFvQixNQUFvQjs7UUFBcEIsV0FBTSxHQUFOLE1BQU0sQ0FBYztLQUV2Qzs7Ozs7SUFFRCxNQUFNLENBQUMsWUFBaUI7UUFDdEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJOztnQkFDRixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLHVCQUF1QixFQUFFO29CQUN2RSxLQUFLLEVBQUUsc0JBQXNCO29CQUM3QixtQkFBbUIsRUFBRSxJQUFJO29CQUN6QixRQUFRLEVBQUUsSUFBSTtvQkFDZCxZQUFZLEVBQUUsWUFBWTtpQkFDM0IsQ0FBQyxDQUFDOztnQkFDSCxNQUFNLFlBQVksR0FBNEIsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDL0QsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDeEMsT0FBTyxPQUFPLENBQUM7d0JBQ2IsTUFBTSxFQUFFLE1BQU07d0JBQ2QsS0FBSyxvQkFBRSxDQUFDLFlBQVksQ0FBQyxhQUFhLElBQUksWUFBWSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQVUsQ0FBQTtxQkFDcEYsQ0FBQyxDQUFDO2lCQUNKLENBQUMsQ0FBQzthQUNKO1lBQUMsT0FBTyxHQUFHLEVBQUU7Z0JBQ1osT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDcEI7U0FDRixDQUFDLENBQUM7S0FDSjs7O1lBM0JGLFVBQVU7Ozs7WUFGRixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlIH0gZnJvbSAnQHVuaXZlcnNpcy9jb21tb24nO1xuaW1wb3J0IHsgQWR2YW5jZWRTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL2FkdmFuY2VkLXNlbGVjdC5jb21wb25lbnQnO1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFkdmFuY2VkU2VsZWN0U2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfbW9kYWw6IE1vZGFsU2VydmljZSkge1xuICAgIC8vXG4gIH1cblxuICBzZWxlY3QoaW5pdGlhbFN0YXRlOiBhbnkpOiBQcm9taXNlPHtyZXN1bHQ6IHN0cmluZywgaXRlbXM6IEFycmF5PGFueT59PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5fbW9kYWwub3Blbk1vZGFsQ29tcG9uZW50KEFkdmFuY2VkU2VsZWN0Q29tcG9uZW50LCB7XG4gICAgICAgICAgY2xhc3M6ICdtb2RhbC14bCBtb2RhbC10YWJsZScsXG4gICAgICAgICAgaWdub3JlQmFja2Ryb3BDbGljazogdHJ1ZSxcbiAgICAgICAgICBhbmltYXRlZDogdHJ1ZSxcbiAgICAgICAgICBpbml0aWFsU3RhdGU6IGluaXRpYWxTdGF0ZVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50UmVmOiBBZHZhbmNlZFNlbGVjdENvbXBvbmVudCA9IG1vZGFsUmVmLmNvbnRlbnQ7XG4gICAgICAgIGNvbXBvbmVudFJlZi5kaXNtaXNzLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoe1xuICAgICAgICAgICAgcmVzdWx0OiByZXN1bHQsXG4gICAgICAgICAgICBpdGVtczogKGNvbXBvbmVudFJlZi5hZHZhbmNlZFRhYmxlICYmIGNvbXBvbmVudFJlZi5hZHZhbmNlZFRhYmxlLnNlbGVjdGVkKSBhcyBhbnlbXVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,58 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
4
- */
5
- import * as tslib_1 from "tslib";
6
- import { Injectable } from '@angular/core';
7
- import { TemplatePipe } from '@universis/common';
8
- import * as i0 from "@angular/core";
9
- export class AdvancedFilterValueProvider {
10
- constructor() {
11
- this.values = {};
12
- this._template = new TemplatePipe();
13
- }
14
- /**
15
- * @param {?} filter
16
- * @return {?}
17
- */
18
- buildFilter(filter) {
19
- if (filter) {
20
- return this._template.transform(filter, this.values);
21
- }
22
- }
23
- /**
24
- * @param {?} filter
25
- * @return {?}
26
- */
27
- asyncBuildFilter(filter) {
28
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
29
- if (filter) {
30
- return this._template.transform(filter, yield this.getValues());
31
- }
32
- });
33
- }
34
- /**
35
- * @return {?}
36
- */
37
- getValues() {
38
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
39
- return this.values;
40
- });
41
- }
42
- }
43
- AdvancedFilterValueProvider.decorators = [
44
- { type: Injectable, args: [{
45
- providedIn: 'root'
46
- },] }
47
- ];
48
- /** @nocollapse */
49
- AdvancedFilterValueProvider.ctorParameters = () => [];
50
- /** @nocollapse */ AdvancedFilterValueProvider.ngInjectableDef = i0.defineInjectable({ factory: function AdvancedFilterValueProvider_Factory() { return new AdvancedFilterValueProvider(); }, token: AdvancedFilterValueProvider, providedIn: "root" });
51
- if (false) {
52
- /** @type {?} */
53
- AdvancedFilterValueProvider.prototype.values;
54
- /** @type {?} */
55
- AdvancedFilterValueProvider.prototype._template;
56
- }
57
-
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtZmlsdGVyLXZhbHVlLXByb3ZpZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdW5pdmVyc2lzL25neC10YWJsZXMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9hZHZhbmNlZC10YWJsZS9hZHZhbmNlZC1maWx0ZXItdmFsdWUtcHJvdmlkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUtqRCxNQUFNO0lBS0o7c0JBSGdCLEVBQUc7UUFJakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0tBQ3JDOzs7OztJQUVELFdBQVcsQ0FBQyxNQUFNO1FBQ2hCLElBQUksTUFBTSxFQUFFO1lBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3REO0tBQ0Y7Ozs7O0lBRUssZ0JBQWdCLENBQUMsTUFBTTs7WUFDM0IsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQzthQUNqRTs7S0FDRjs7OztJQUVLLFNBQVM7O1lBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDOztLQUNwQjs7O1lBMUJGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRlbXBsYXRlUGlwZSB9IGZyb20gJ0B1bml2ZXJzaXMvY29tbW9uJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQWR2YW5jZWRGaWx0ZXJWYWx1ZVByb3ZpZGVyIHtcblxuICBwdWJsaWMgdmFsdWVzID0geyB9O1xuICBwcml2YXRlIF90ZW1wbGF0ZTogVGVtcGxhdGVQaXBlO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX3RlbXBsYXRlID0gbmV3IFRlbXBsYXRlUGlwZSgpO1xuICB9XG5cbiAgYnVpbGRGaWx0ZXIoZmlsdGVyKSB7XG4gICAgaWYgKGZpbHRlcikge1xuICAgICAgcmV0dXJuIHRoaXMuX3RlbXBsYXRlLnRyYW5zZm9ybShmaWx0ZXIsIHRoaXMudmFsdWVzKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBhc3luY0J1aWxkRmlsdGVyKGZpbHRlcikge1xuICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLl90ZW1wbGF0ZS50cmFuc2Zvcm0oZmlsdGVyLCBhd2FpdCB0aGlzLmdldFZhbHVlcygpKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRWYWx1ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzO1xuICB9XG5cbn1cbiJdfQ==
@@ -1,72 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
4
- */
5
- import { Injectable } from '@angular/core';
6
- import { HttpClient } from '@angular/common/http';
7
- export class AdvancedTableConfigurationResolver {
8
- /**
9
- * @param {?} _http
10
- */
11
- constructor(_http) {
12
- this._http = _http;
13
- }
14
- /**
15
- * @param {?} route
16
- * @param {?} state
17
- * @return {?}
18
- */
19
- resolve(route, state) {
20
- /** @type {?} */
21
- const list = route.data["list"] || route.params["list"];
22
- /** @type {?} */
23
- const model = route.data["model"] || route.params["model"];
24
- // get configuration
25
- return this._http.get(`assets/lists/${model}/${list}.json`).toPromise();
26
- }
27
- }
28
- AdvancedTableConfigurationResolver.decorators = [
29
- { type: Injectable }
30
- ];
31
- /** @nocollapse */
32
- AdvancedTableConfigurationResolver.ctorParameters = () => [
33
- { type: HttpClient }
34
- ];
35
- if (false) {
36
- /** @type {?} */
37
- AdvancedTableConfigurationResolver.prototype._http;
38
- }
39
- export class AdvancedSearchConfigurationResolver {
40
- /**
41
- * @param {?} _http
42
- */
43
- constructor(_http) {
44
- this._http = _http;
45
- }
46
- /**
47
- * @param {?} route
48
- * @param {?} state
49
- * @return {?}
50
- */
51
- resolve(route, state) {
52
- /** @type {?} */
53
- const list = route.data["list"] || route.params["list"];
54
- /** @type {?} */
55
- const model = route.data["model"] || route.params["model"];
56
- // get configuration
57
- return this._http.get(`assets/lists/${model}/search.${list}.json`).toPromise();
58
- }
59
- }
60
- AdvancedSearchConfigurationResolver.decorators = [
61
- { type: Injectable }
62
- ];
63
- /** @nocollapse */
64
- AdvancedSearchConfigurationResolver.ctorParameters = () => [
65
- { type: HttpClient }
66
- ];
67
- if (false) {
68
- /** @type {?} */
69
- AdvancedSearchConfigurationResolver.prototype._http;
70
- }
71
-
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtdGFibGUtcmVzb2x2ZXJzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHVuaXZlcnNpcy9uZ3gtdGFibGVzLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvYWR2YW5jZWQtdGFibGUvYWR2YW5jZWQtdGFibGUtcmVzb2x2ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUdoRCxNQUFNOzs7O0lBQ0YsWUFBb0IsS0FBaUI7UUFBakIsVUFBSyxHQUFMLEtBQUssQ0FBWTtLQUFJOzs7Ozs7SUFDekMsT0FBTyxDQUNILEtBQTZCLEVBQzdCLEtBQTBCOztRQUcxQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxZQUFTLEtBQUssQ0FBQyxNQUFNLFFBQUssQ0FBQzs7UUFFbEQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksYUFBVSxLQUFLLENBQUMsTUFBTSxTQUFNLENBQUM7O1FBRXJELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0tBQzNFOzs7WUFiSixVQUFVOzs7O1lBRkgsVUFBVTs7Ozs7O0FBbUJsQixNQUFNOzs7O0lBQ0YsWUFBb0IsS0FBaUI7UUFBakIsVUFBSyxHQUFMLEtBQUssQ0FBWTtLQUFJOzs7Ozs7SUFDekMsT0FBTyxDQUNILEtBQTZCLEVBQzdCLEtBQTBCOztRQUcxQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxZQUFTLEtBQUssQ0FBQyxNQUFNLFFBQUssQ0FBQzs7UUFFbEQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksYUFBVSxLQUFLLENBQUMsTUFBTSxTQUFNLENBQUM7O1FBRXJELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEtBQUssV0FBVyxJQUFJLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0tBQ2xGOzs7WUFiSixVQUFVOzs7O1lBbEJILFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSZXNvbHZlLCBSb3V0ZXJTdGF0ZVNuYXBzaG90fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBZHZhbmNlZFRhYmxlQ29uZmlndXJhdGlvblJlc29sdmVyIGltcGxlbWVudHMgUmVzb2x2ZTxzdHJpbmc+IHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9odHRwOiBIdHRwQ2xpZW50KSB7fVxuICAgIHJlc29sdmUoXG4gICAgICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgICAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICAgICk6IFByb21pc2U8YW55Pnxhbnkge1xuICAgICAgICAvLyBnZXQgbGlzdFxuICAgICAgICBjb25zdCBsaXN0ID0gcm91dGUuZGF0YS5saXN0IHx8IHJvdXRlLnBhcmFtcy5saXN0O1xuICAgICAgICAvLyBnZXQgbW9kZWxcbiAgICAgICAgY29uc3QgbW9kZWwgPSByb3V0ZS5kYXRhLm1vZGVsIHx8IHJvdXRlLnBhcmFtcy5tb2RlbDtcbiAgICAgICAgLy8gZ2V0IGNvbmZpZ3VyYXRpb25cbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0KGBhc3NldHMvbGlzdHMvJHttb2RlbH0vJHtsaXN0fS5qc29uYCkudG9Qcm9taXNlKCk7XG4gICAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQWR2YW5jZWRTZWFyY2hDb25maWd1cmF0aW9uUmVzb2x2ZXIgaW1wbGVtZW50cyBSZXNvbHZlPHN0cmluZz4ge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQpIHt9XG4gICAgcmVzb2x2ZShcbiAgICAgICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4gICAgKTogUHJvbWlzZTxhbnk+fGFueSB7XG4gICAgICAgIC8vIGdldCBsaXN0XG4gICAgICAgIGNvbnN0IGxpc3QgPSByb3V0ZS5kYXRhLmxpc3QgfHwgcm91dGUucGFyYW1zLmxpc3Q7XG4gICAgICAgIC8vIGdldCBtb2RlbFxuICAgICAgICBjb25zdCBtb2RlbCA9IHJvdXRlLmRhdGEubW9kZWwgfHwgcm91dGUucGFyYW1zLm1vZGVsO1xuICAgICAgICAvLyBnZXQgY29uZmlndXJhdGlvblxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQoYGFzc2V0cy9saXN0cy8ke21vZGVsfS9zZWFyY2guJHtsaXN0fS5qc29uYCkudG9Qcm9taXNlKCk7XG4gICAgfVxufVxuIl19
@@ -1,49 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
4
- */
5
- import { Component, EventEmitter, Input, Output } from '@angular/core';
6
- export class AdvancedTableSearchBaseComponent {
7
- constructor() {
8
- this.filterChange = new EventEmitter();
9
- }
10
- /**
11
- * @return {?}
12
- */
13
- get filter() {
14
- return this._filter;
15
- }
16
- /**
17
- * @param {?} value
18
- * @return {?}
19
- */
20
- set filter(value) {
21
- this._filter = value;
22
- }
23
- /**
24
- * @param {?} event
25
- * @return {?}
26
- */
27
- onKeyEnter(event) {
28
- if (event.code === 'Enter') {
29
- this.filterChange.emit(this._filter);
30
- }
31
- }
32
- }
33
- AdvancedTableSearchBaseComponent.decorators = [
34
- { type: Component, args: [{
35
- template: ''
36
- }] }
37
- ];
38
- AdvancedTableSearchBaseComponent.propDecorators = {
39
- filterChange: [{ type: Output }],
40
- filter: [{ type: Input }]
41
- };
42
- if (false) {
43
- /** @type {?} */
44
- AdvancedTableSearchBaseComponent.prototype._filter;
45
- /** @type {?} */
46
- AdvancedTableSearchBaseComponent.prototype.filterChange;
47
- }
48
-
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtdGFibGUtc2VhcmNoLWJhc2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdW5pdmVyc2lzL25neC10YWJsZXMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9hZHZhbmNlZC10YWJsZS9hZHZhbmNlZC10YWJsZS1zZWFyY2gtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUlyRSxNQUFNOzs0QkFFdUIsSUFBSSxZQUFZLEVBQUU7Ozs7O0lBRTNDLElBQ0ssTUFBTTtRQUNQLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztLQUN2Qjs7Ozs7SUFFRCxJQUFJLE1BQU0sQ0FBQyxLQUFLO1FBQ1osSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7S0FDeEI7Ozs7O0lBRUQsVUFBVSxDQUFDLEtBQW9CO1FBQzNCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3hDO0tBQ0o7OztZQXBCSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLEVBQUU7YUFDYjs7OzJCQUdFLE1BQU07cUJBRU4sS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGU6ICcnXG4gIH0pXG5leHBvcnQgY2xhc3MgQWR2YW5jZWRUYWJsZVNlYXJjaEJhc2VDb21wb25lbnQge1xuICAgIHByaXZhdGUgX2ZpbHRlcjogYW55O1xuICAgIEBPdXRwdXQoKSBmaWx0ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCAgZmlsdGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVyO1xuICAgIH1cblxuICAgIHNldCBmaWx0ZXIodmFsdWUpIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyID0gdmFsdWU7XG4gICAgfVxuXG4gICAgb25LZXlFbnRlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCh0aGlzLl9maWx0ZXIpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19