barsa-sap-ui 1.0.258 → 1.0.261

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.
@@ -7,7 +7,7 @@ export class BarsaTinyemceComponent extends BaseComponent {
7
7
  this._el = _el;
8
8
  this.valueChange = new EventEmitter();
9
9
  this.tinyInit = new EventEmitter();
10
- this.tinyHostId = getUniqueId(2);
10
+ this.tinyHostId = `a_${getUniqueId(2)}`;
11
11
  this.tinyMCEConfig = {};
12
12
  }
13
13
  ngOnChanges(simpleChanges) {
@@ -51,29 +51,54 @@ export class BarsaTinyemceComponent extends BaseComponent {
51
51
  this.tinyMCEConfig.height = '100%';
52
52
  this.tinyMCEConfig.width = '100%';
53
53
  this.tinyMCEConfig.selector = '#' + this.tinyHostId;
54
- this.tinyMCEConfig.skin = 'oxide';
55
54
  this.tinyMCEConfig.content_css = 'assets/Resources/fonts/Iran.css';
56
55
  this.tinyMCEConfig.directionality = 'rtl';
57
56
  this.tinyMCEConfig.language = 'fa_IR';
58
- this.tinyMCEConfig.menubar = false;
59
- this.tinyMCEConfig.statusbar = false;
57
+ this.tinyMCEConfig.promotion = false;
60
58
  this.tinyMCEConfig.paste_data_images = true;
61
59
  this.tinyMCEConfig.defaultFontName = 'BarsaFont';
62
60
  this.tinyMCEConfig.defaultFontSize = '12px';
63
- this.tinyMCEConfig.inline = true;
61
+ this.tinyMCEConfig.statusbar = false;
62
+ this.tinyMCEConfig.inline = false;
64
63
  this.tinyMCEConfig.theme_advanced_resizing = true;
65
- this.tinyMCEConfig.images_dataimg_filter = (img) => img.hasAttribute('internal-blob');
66
- this.tinyMCEConfig.toolbar = true;
67
- this.tinyMCEConfig.font_formats =
64
+ this.tinyMCEConfig.font_family_formats =
68
65
  'BarsaFont=BarsaFont;Arial=arial,helvetica,sans-serif; Courier New=courier new,courier,monospace;';
69
- this.tinyMCEConfig.fontsize_formats = '8pt 10pt 12pt 14pt 18pt 24pt 36pt';
66
+ this.tinyMCEConfig.font_size_formats = '8pt 10pt 12pt 14pt 18pt 24pt 36pt';
70
67
  this.tinyMCEConfig.plugins = [
71
- `print preview importcss searchreplace autolink autoresize autosave save directionality visualblocks visualchars fullscreen
72
- link media template codesample table charmap hr pagebreak nonbreaking anchor toc insertdatetime advlist lists wordcount
73
- imagetools textpattern noneditable help charmap quickbars emoticons`
68
+ 'advlist',
69
+ 'anchor',
70
+ 'autolink',
71
+ 'autosave',
72
+ 'charmap',
73
+ 'code',
74
+ 'codesample',
75
+ 'directionality',
76
+ 'emoticons',
77
+ 'fullscreen',
78
+ 'help',
79
+ 'image',
80
+ 'importcss',
81
+ 'insertdatetime',
82
+ 'link',
83
+ 'lists',
84
+ 'media',
85
+ 'nonbreaking',
86
+ 'pagebreak',
87
+ 'preview',
88
+ 'quickbars',
89
+ 'save',
90
+ 'searchreplace',
91
+ 'table',
92
+ 'template',
93
+ 'visualblocks',
94
+ 'visualchars',
95
+ 'wordcount',
96
+ 'autoresize'
97
+ ];
98
+ this.tinyMCEConfig.toolbar = [
99
+ `defaultVerbs barsaImage | insert | forecolor backcolor fontfamily fontsize | bullist numlist outdent indent | removeformat` +
100
+ ` | undo redo | copy cut paste | blocks | bold italic | alignleft aligncenter alignright alignjustify ltr rtl`
74
101
  ];
75
- this.tinyMCEConfig.toolbar = `defaultVerbs barsaImage | insert | forecolor backcolor fontselect fontsizeselect | undo redo | copy cut paste
76
- | formatselect | bold italic backcolor | alignleft aligncenter alignright alignjustify ltr rtl | bullist numlist outdent indent | removeformat`;
77
102
  const tinymceSettingsGlobal = window.tinymceSettings;
78
103
  let tinymceSettings = BarsaApi.Common.Util.TryGetValue(this.Setting, 'JsonExtraProp.tinymceSettings');
79
104
  tinymceSettings = BarsaApi.Common.Merger.Merge(tinymceSettingsGlobal, tinymceSettings);
@@ -173,7 +198,7 @@ export class BarsaTinyemceComponent extends BaseComponent {
173
198
  const setContent = ed.setContent;
174
199
  ed.setContent = (...args) => {
175
200
  setContent.apply(ed, args);
176
- ed.fire('change', {});
201
+ ed.dispatch('change', {});
177
202
  };
178
203
  hasInit = true;
179
204
  this.tinyInit.emit();
@@ -331,4 +356,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
331
356
  }], tinyInit: [{
332
357
  type: Output
333
358
  }] } });
334
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdGlueWVtY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdGlueWVtY2UvYmFyc2EtdGlueWVtY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdGlueWVtY2UvYmFyc2EtdGlueWVtY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQVd4RixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsYUFBYTtJQWlCckQsWUFBc0IsR0FBZTtRQUNqQyxLQUFLLEVBQUUsQ0FBQztRQURVLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFiM0IsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3RDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hDLGVBQVUsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsa0JBQWEsR0FBUSxFQUFFLENBQUM7SUFZeEIsQ0FBQztJQUNELFdBQVcsQ0FBQyxhQUE0QjtRQUNwQyxLQUFLLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pDLElBQUksYUFBYSxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFO1lBQ3pELElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNuRDtRQUNELElBQUksYUFBYSxD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QUE0QjtRQUM1Qix5QkFBeUI7UUFDekIsa0JBQWtCO0lBQ3RCLENBQUM7SUFFTyxlQUFlLENBQUMsRUFBTztRQUMzQixNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEUsSUFBSSxJQUFJLEVBQUU7WUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7U0FDbEM7SUFDTCxDQUFDOzttSEFoV1Esc0JBQXNCO3VHQUF0QixzQkFBc0IsK09DeEJuQywwTUFHQTsyRkRxQmEsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNJLG9CQUFvQixtQkFHYix1QkFBdUIsQ0FBQyxNQUFNO2lHQUd0QyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIEFmdGVyVmlld0luaXQsXHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENvbXBvbmVudCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIE91dHB1dCxcclxuICAgIFNpbXBsZUNoYW5nZXNcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnQsIEJhcnNhQXBpLCBnZXRVbmlxdWVJZCwgaXNGdW5jdGlvbiB9IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuZGVjbGFyZSBjb25zdCB3aW5kb3c6IGFueTtcclxuZGVjbGFyZSBjb25zdCB0aW55bWNlOiBhbnk7XHJcbmRlY2xhcmUgY29uc3QgaGVhZDogYW55O1xyXG5kZWNsYXJlIGNvbnN0ICQ6IGFueTtcclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JzdS1iYXJzYS10aW55ZW1jZScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFyc2EtdGlueWVtY2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYmFyc2EtdGlueWVtY2UuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXJzYVRpbnllbWNlQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcclxuICAgIEBJbnB1dCgpIFNldHRpbmc6IGFueTtcclxuICAgIEBJbnB1dCgpIGlzUmVhZG9ubHk6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSB2YWx1ZTogYW55O1xyXG4gICAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgdGlueUluaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICB0aW55SG9zdElkID0gZ2V0VW5pcXVlSWQoMik7XHJcbiAgICB0aW55TUNFQ29uZmlnOiBhbnkgPSB7fTtcclxuICAgIGVkaXRvcjogYW55O1xyXG4gICAgZGVmYXVsdFZlcmJzOiBhbnk7XHJcbiAgICB3eXNpd3lnSW50aWFsaXplZDogYm9vbGVhbjtcclxuICAgIGludGlhbGl6YXRpb25JblByb2dyZXNzOiBib29sZWFuO1xyXG4gICAgZWRpdG9yVmFsdWU6IHN0cmluZztcclxuXHJcbiAgICBpZnJhbUJvZHlJbm5lckh0bWw6IHN0cmluZztcclxuICAgIGhlaWdodDogbnVtYmVyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfZWw6IEVsZW1lbnRSZWYpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG4gICAgbmdPbkNoYW5nZXMoc2ltcGxlQ2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKHNpbXBsZUNoYW5nZXMpO1xyXG4gICAgICAgIGlmIChzaW1wbGVDaGFuZ2VzLnZhbHVlICYmICFzaW1wbGVDaGFuZ2VzLnZhbHVlLmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUoc2ltcGxlQ2hhbmdlcy52YWx1ZS5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2ltcGxlQ2hhbmdlcy5kaXNhYmxlICYmICFzaW1wbGVDaGFuZ2VzLmRpc2FibGUuZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICAgICAgY29uc3QgZGlzYmFsZSA9IHNpbXBsZUNoYW5nZXMuZGlzYWJsZS5jdXJyZW50VmFsdWU7XHJcbiAgICAgICAgICAgIGlmIChkaXNiYWxlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERpc2FibGUoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RW5hYmxlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNpbXBsZUNoYW5nZXMucmVhZG9ubHkgJiYgIXNpbXBsZUNoYW5nZXMucmVhZG9ubHkuZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRSZWFkT25seShzaW1wbGVDaGFuZ2VzLnJlYWRvbmx5LmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICB0aGlzLmhlaWdodCA9ICh0aGlzLl9lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5jbGllbnRIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xyXG4gICAgICAgIHRoaXMubG9hZFRpbnlNY2UoKTtcclxuICAgIH1cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95VGlueW1jZSgpO1xyXG4gICAgfVxyXG4gICAgbG9hZFRpbnlNY2UoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLlNldHRpbmcuSXNIdG1sVmlld2VyKSB7XHJcbiAgICAgICAgICAgIGhlYWQubG9hZChbJ0xpYi90aW55bWNlL3RpbnltY2UubWluLmpzJ10sICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJlcGFyZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdGlsaXplKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5oZWlnaHQgPSAnMTAwJSc7XHJcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLndpZHRoID0gJzEwMCUnO1xyXG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5zZWxlY3RvciA9ICcjJyArIHRoaXMudGlueUhvc3RJZDtcclxuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcuc2tpbiA9ICdveGlkZSc7XHJcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLmNvbnRlbnRfY3NzID0gJ2Fzc2V0cy9SZXNvdXJjZXMvZm9udHMvSXJhbi5jc3MnO1xyXG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5kaXJlY3Rpb25hbGl0eSA9ICdydGwnO1xyXG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5sYW5ndWFnZSA9ICdmYV9JUic7XHJcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLm1lbnViYXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcuc3RhdHVzYmFyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnBhc3RlX2RhdGFfaW1hZ2VzID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcuZGVmYXVsdEZvbnROYW1lID0gJ0JhcnNhRm9udCc7XHJcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLmRlZmF1bHRGb250U2l6ZSA9ICcxMnB4JztcclxuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcuaW5saW5lID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcudGhlbWVfYWR2YW5jZWRfcmVzaXppbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5pbWFnZXNfZGF0YWltZ19maWx0ZXIgPSAoaW1nKSA9PiBpbWcuaGFzQXR0cmlidXRlKCdpbnRlcm5hbC1ibG9iJyk7XHJcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnRvb2xiYXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5mb250X2Zvcm1hdHMgPVxyXG4gICAgICAgICAgICAnQmFyc2FGb250PUJhcnNhRm9udDtBcmlhbD1hcmlhbCxoZWx2ZXRpY2Esc2Fucy1zZXJpZjsgQ291cmllciBOZXc9Y291cmllciBuZXcsY291cmllcixtb25vc3BhY2U7JztcclxuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcuZm9udHNpemVfZm9ybWF0cyA9ICc4cHQgMTBwdCAxMnB0IDE0cHQgMThwdCAyNHB0IDM2cHQnO1xyXG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5wbHVnaW5zID0gW1xyXG4gICAgICAgICAgICBgcHJpbnQgcHJldmlldyBpbXBvcnRjc3Mgc2VhcmNocmVwbGFjZSBhdXRvbGluayBhdXRvcmVzaXplIGF1dG9zYXZlIHNhdmUgZGlyZWN0aW9uYWxpdHkgdmlzdWFsYmxvY2tzIHZpc3VhbGNoYXJzIGZ1bGxzY3JlZW4gXHJcbiAgICAgICAgICAgIGxpbmsgbWVkaWEgdGVtcGxhdGUgY29kZXNhbXBsZSB0YWJsZSBjaGFybWFwIGhyIHBhZ2VicmVhayBub25icmVha2luZyBhbmNob3IgdG9jIGluc2VydGRhdGV0aW1lIGFkdmxpc3QgbGlzdHMgd29yZGNvdW50IFxyXG4gICAgICAgICAgICBpbWFnZXRvb2xzIHRleHRwYXR0ZXJuIG5vbmVkaXRhYmxlIGhlbHAgY2hhcm1hcCBxdWlja2JhcnMgZW1vdGljb25zYFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnRvb2xiYXIgPSBgZGVmYXVsdFZlcmJzIGJhcnNhSW1hZ2UgfCBpbnNlcnQgfCBmb3JlY29sb3IgYmFja2NvbG9yIGZvbnRzZWxlY3QgZm9udHNpemVzZWxlY3QgfCB1bmRvIHJlZG8gfCBjb3B5IGN1dCBwYXN0ZSBcclxuICAgICAgICAgICAgfCBmb3JtYXRzZWxlY3QgfCBib2xkIGl0YWxpYyBiYWNrY29sb3IgIHwgYWxpZ25sZWZ0IGFsaWduY2VudGVyIGFsaWducmlnaHQgYWxpZ25qdXN0aWZ5IGx0ciBydGwgIHwgYnVsbGlzdCBudW1saXN0IG91dGRlbnQgaW5kZW50IHwgcmVtb3ZlZm9ybWF0YDtcclxuXHJcbiAgICAgICAgY29uc3QgdGlueW1jZVNldHRpbmdzR2xvYmFsID0gd2luZG93LnRpbnltY2VTZXR0aW5ncztcclxuICAgICAgICBsZXQgdGlueW1jZVNldHRpbmdzID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUodGhpcy5TZXR0aW5nLCAnSnNvbkV4dHJhUHJvcC50aW55bWNlU2V0dGluZ3MnKTtcclxuICAgICAgICB0aW55bWNlU2V0dGluZ3MgPSBCYXJzYUFwaS5Db21tb24uTWVyZ2VyLk1lcmdlKHRpbnltY2VTZXR0aW5nc0dsb2JhbCwgdGlueW1jZVNldHRpbmdzKTtcclxuICAgICAgICBpZiAoIXRpbnltY2VTZXR0aW5ncyAmJiBBcnJheS5pc0FycmF5KHRpbnltY2VTZXR0aW5ncykpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRpbnltY2VTZXR0aW5ncykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnW2l0ZW0ua2V5XSA9IGl0ZW0udmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlzUmVhZG9ubHkpIHtcclxuICAgICAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLm1lbnViYXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnN0YXR1c2JhciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcucGx1Z2lucyA9IFsnYXV0b3Jlc2l6ZSddO1xyXG4gICAgICAgICAgICAvLyB0aGlzLnRpbnlNQ0VDb25maWcucGx1Z2lucyA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcudG9vbGJhciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHVzZXJTZXR1cDogKGVkaXRvcjogYW55KSA9PiB2b2lkO1xyXG5cclxuICAgICAgICBpZiAodGhpcy50aW55TUNFQ29uZmlnLnNldHVwKSB7XHJcbiAgICAgICAgICAgIHVzZXJTZXR1cCA9IHRoaXMudGlueU1DRUNvbmZpZy5zZXR1cDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFZlcmJzTWVudTogYW55ID0gW107XHJcbiAgICAgICAgLy8gQkVHSU46IHNldHVwXHJcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnNldHVwID0gKGVkKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yID0gZWQ7XHJcblxyXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNSZWFkb25seSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVmYXVsdFZlcmJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0VmVyYnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmVyYnNNZW51LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0uSHRtbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdtZW51aXRlbScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLlRpdGxlIHx8IGl0ZW0uSHRtbC5yZXBsYWNlKC88YnJcXHMqXFwvPz4vZ2ksICcgJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFjdGlvbjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkLmV4ZWNDb21tYW5kKCdtY2VJbnNlcnRSYXdIVE1MJywgZmFsc2UsIGl0ZW0uSHRtbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWQudWkucmVnaXN0cnkuYWRkU3BsaXRCdXR0b24oJ2JhcnNhSW1hZ2UnLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogJ2luc2VydCcsXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ltYWdlJyxcclxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiAnSW5zZXJ0IEltYWdlIEFzIEJhc2U2NCcsXHJcbiAgICAgICAgICAgICAgICAgICAgb25BY3Rpb246ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgQmFyc2FBcGkuQ29tbW9uLkFzeW5jLldhdGVyZmFsbChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUaW5lbWNlLkVtYmVkSW1hZ2UnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5GaWxlRGlhbG9nOiB0aGlzLlNob3dPcGVuRmlsZURpYWxvZy5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydEJhc2U2NDogdGhpcy5JbnNlcnRCYXNlNjQuYmluZCh0aGlzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnIsIHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhcnNhQXBpLkNvbW1vbi5Bc3luYy5GaW5hbGl6ZShlcnIsIHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBvbkl0ZW1BY3Rpb246ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgQmFyc2FBcGkuQ29tbW9uLkFzeW5jLldhdGVyZmFsbChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUaW5lbWNlLlVwbG9hZFRvRGF0YWJhc2UnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5GaWxlRGlhbG9nOiB0aGlzLlNob3dVcGxvYWRXaW5kb3cuYmluZCh0aGlzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnIsIHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhcnNhQXBpLkNvbW1vbi5Bc3luYy5GaW5hbGl6ZShlcnIsIHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBmZXRjaDogKGNhbGxiYWNrKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdjaG9pY2VpdGVtJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiAndXBsb2FkJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnaW1hZ2UnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6ICdVcGxvYWQgSW1hZ2UnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAndXBsb2FkJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhpdGVtcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgZWQudWkucmVnaXN0cnkuYWRkTWVudUJ1dHRvbignZGVmYXVsdFZlcmJzJywge1xyXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6ICfYudio2KfYsdiq2YfYp9uMINm+24zYtCDZgdix2LYnLFxyXG4gICAgICAgICAgICAgICAgICAgIGZldGNoOiAoY2FsbGJhY2spID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZGVmYXVsdFZlcmJzTWVudSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbih3aW5kb3cudGlueW1jZVNldHVwKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy50aW55bWNlU2V0dXAuY2FsbCh0aGlzLCB0aGlzLCBlZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGhhc0luaXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgZWQub24oJ2luaXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnd5c2l3eWdJbnRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW50aWFsaXphdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlKHRoaXMudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGlueU1DRUNvbmZpZy5kZWZhdWx0Rm9udE5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBlZC5leGVjQ29tbWFuZCgnRm9udE5hbWUnLCBmYWxzZSwgdGhpcy50aW55TUNFQ29uZmlnLmRlZmF1bHRGb250TmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50aW55TUNFQ29uZmlnLmRlZmF1bHRGb250U2l6ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVkLmV4ZWNDb21tYW5kKCdGb250U2l6ZScsIGZhbHNlLCB0aGlzLnRpbnlNQ0VDb25maWcuZGVmYXVsdEZvbnRTaXplKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzUmVhZG9ubHkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlYWRPbmx5KHRoaXMuaXNSZWFkb25seSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBUaGlzIHBpZWNlIG9mIGNvZGUgc29sdmVzIHRoZSBwcm9ibGVtIG9mIGNoYW5nZSBwcm9wYWdhdGlvbiBzbyB0aGF0XHJcbiAgICAgICAgICAgICAgICAvLyB0aGVyZSBpcyBubyBuZWVkIHRvIGNhbGwgdHJpZ2dlclNhdmVcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNldENvbnRlbnQgPSBlZC5zZXRDb250ZW50O1xyXG4gICAgICAgICAgICAgICAgZWQuc2V0Q29udGVudCA9ICguLi5hcmdzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0Q29udGVudC5hcHBseShlZCwgYXJncyk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWQuZmlyZSgnY2hhbmdlJywge30pO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIGhhc0luaXQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50aW55SW5pdC5lbWl0KCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpZnJhbUVsOiBIVE1MSUZyYW1lRWxlbWVudCA9IGVkLmlmcmFtZUVsZW1lbnQ7XHJcbiAgICAgICAgICAgICAgICBpZiAoaWZyYW1FbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmcmFtRWwuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHRoaXMuX29uTG9hZElmcmFtZS5iaW5kKHRoaXMpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAvLyBDYXRjaCBhbmQgcHJvcGFnYXRlIHRoZSBjaGFuZ2UgZXZlbnRcclxuICAgICAgICAgICAgbGV0IG9sZENvbnRlbnQgPSBudWxsO1xyXG4gICAgICAgICAgICBlZC5vbignY2hhbmdlIGtleXVwJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3dmFsID0gZWQuZ2V0Q29udGVudCgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5ld3ZhbCA9PT0gb2xkQ29udGVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBvbGRDb250ZW50ID0gbmV3dmFsO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFoYXNJbml0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGVkLnNhdmUoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWRpdG9yVmFsdWUgPSBuZXd2YWw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQobmV3dmFsKTtcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuY29udGV4dC5maXJlRXZlbnQoJ2NoYW5nZScsIHRoaXMsIG5ld3ZhbCwgb2xkdmFsLCB7fSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgZWQub24oJ2ZvY3VzJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gVE9ET1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGlmICh1c2VyU2V0dXApIHtcclxuICAgICAgICAgICAgICAgIHVzZXJTZXR1cChlZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIFNob3dVcGxvYWRXaW5kb3coKTogdm9pZCB7fVxyXG4gICAgU2hvd09wZW5GaWxlRGlhbG9nKGRvUmV0dXJuKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgaW5wdXQ6IGFueSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XHJcbiAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2ZpbGUnKTtcclxuICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ2FjY2VwdCcsICdpbWFnZS8qJyk7XHJcblxyXG4gICAgICAgIGlucHV0Lm9uY2hhbmdlID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXNbMF07XHJcblxyXG4gICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGJhc2U2NCA9IHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nO1xyXG4gICAgICAgICAgICAgICAgYmFzZTY0ID0gYmFzZTY0LnNwbGl0KCcsJylbMV07XHJcbiAgICAgICAgICAgICAgICBkb1JldHVybihudWxsLCBiYXNlNjQpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpbnB1dC5jbGljaygpO1xyXG4gICAgfVxyXG4gICAgSW5zZXJ0QmFzZTY0KGJhc2U2NCwgZG9SZXR1cm4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmVkaXRvci5leGVjQ29tbWFuZCgnbWNlSW5zZXJ0UmF3SFRNTCcsIGZhbHNlLCAnPGltZyBzcmM9ZGF0YTppbWFnZS9wbmc7YmFzZTY0LCcgKyBiYXNlNjQgKyAnIC8+Jyk7XHJcbiAgICAgICAgZG9SZXR1cm4oKTtcclxuICAgIH1cclxuICAgIGdldFZhbHVlKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgICAgIGxldCByZXMgPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLnd5c2l3eWdJbnRpYWxpemVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVkID0gdGlueW1jZS5nZXQodGhpcy50aW55SG9zdElkKTtcclxuICAgICAgICAgICAgaWYgKGVkKSB7XHJcbiAgICAgICAgICAgICAgICByZXMgPSBlZC5nZXRDb250ZW50KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9XHJcbiAgICBzZXRWYWx1ZSh2YWx1ZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLnNldFZhbHVlVGlueSgpO1xyXG4gICAgfVxyXG4gICAgc2V0VmFsdWVUaW55KCk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKHRoaXMud3lzaXd5Z0ludGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgY29uc3QgZWQgPSB0aW55bWNlLmdldCh0aGlzLnRpbnlIb3N0SWQpO1xyXG4gICAgICAgICAgICBpZiAoZWQpIHtcclxuICAgICAgICAgICAgICAgIGVkLnNldENvbnRlbnQodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XHJcbiAgICB9XHJcbiAgICBmb2N1cygpOiBhbnkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzUmVhZG9ubHkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy53eXNpd3lnSW50aWFsaXplZCkge1xyXG4gICAgICAgICAgICB0aW55bWNlLmV4ZWNDb21tYW5kKCdtY2VGb2N1cycsIGZhbHNlLCAnaWRfb2ZfdGV4dGFyZWEnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RW5hYmxlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnd5c2l3eWdJbnRpYWxpemVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVkID0gdGlueW1jZS5nZXQodGhpcy50aW55SG9zdElkKTtcclxuICAgICAgICAgICAgZWQuZ2V0Qm9keSgpLnNldEF0dHJpYnV0ZSgnY29udGVudGVkaXRhYmxlJywgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNldERpc2FibGUoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMud3lzaXd5Z0ludGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgY29uc3QgZWQgPSB0aW55bWNlLmdldCh0aGlzLnRpbnlIb3N0SWQpO1xyXG4gICAgICAgICAgICBlZC5nZXRCb2R5KCkuc2V0QXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnLCBmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgc2V0UmVhZE9ubHkocmVhZE9ubHkpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy53eXNpd3lnSW50aWFsaXplZCkge1xyXG4gICAgICAgICAgICBjb25zdCBlZCA9IHRpbnltY2UuZ2V0KHRoaXMudGlueUhvc3RJZCk7XHJcbiAgICAgICAgICAgIGVkLmdldEJvZHkoKS5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsICFyZWFkT25seSk7XHJcbiAgICAgICAgICAgIGlmIChyZWFkT25seSkge1xyXG4gICAgICAgICAgICAgICAgJCgnLnRveC1lZGl0b3ItaGVhZGVyJykuaGlkZSgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgJCgnLnRveC1lZGl0b3ItaGVhZGVyJykuaGlkZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRlc3Ryb3lUaW55bWNlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLlNldHRpbmcuSXNIdG1sVmlld2VyKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZWQgPSB0aW55bWNlLmdldCh0aGlzLnRpbnlIb3N0SWQpO1xyXG4gICAgICAgIGlmIChlZCkge1xyXG4gICAgICAgICAgICBpZiAoZWQuaWZyYW1lRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgZWQuaWZyYW1lRWxlbWVudC5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlZC5kZXN0cm95KGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIHByZXBhcmUoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pbml0aWxpemUoKTtcclxuICAgICAgICB0aW55bWNlLmluaXQodGhpcy50aW55TUNFQ29uZmlnKTtcclxuICAgICAgICB0aGlzLmludGlhbGl6YXRpb25JblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy53eXNpd3lnSW50aWFsaXplZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9vbkxvYWRJZnJhbWUoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuZWRpdG9yVmFsdWU7XHJcbiAgICAgICAgLy8gY29uc3QgZWQgPSB0aW55bWNlLmdldCh0aGlzLnRpbnlIb3N0SWQpO1xyXG4gICAgICAgIC8vIHRoaXMuX3JlbW92ZU92ZXJmbG93KGVkKTtcclxuICAgICAgICAvLyB0aGlzLmRlc3Ryb3lUaW55bWNlKCk7XHJcbiAgICAgICAgLy8gdGhpcy5wcmVwYXJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfcmVtb3ZlT3ZlcmZsb3coZWQ6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGh0bWwgPSBlZC5pZnJhbWVFbGVtZW50Py5jb250ZW50RG9jdW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoJ2h0bWwnKTtcclxuICAgICAgICBpZiAoaHRtbCkge1xyXG4gICAgICAgICAgICBodG1sLnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJmZC1pbnB1dCB0aW55d3JhcHBlclwiIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlaWdodFwiIFtpZF09XCJ0aW55SG9zdElkXCI+PC9kaXY+XHJcblxyXG48IS0tIDx0ZXh0YXJlYSBbaWRdPVwidGlueUhvc3RJZFwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyB2aXNpYmlsaXR5OiBoaWRkZW5cIj48L3RleHRhcmVhPiAtLT5cclxuIl19
359
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdGlueWVtY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdGlueWVtY2UvYmFyc2EtdGlueWVtY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdGlueWVtY2UvYmFyc2EtdGlueWVtY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQVd4RixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsYUFBYTtJQWlCckQsWUFBc0IsR0FBZTtRQUNqQyxLQUFLLEVBQUUsQ0FBQztRQURVLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFiM0IsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3RDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hDLGVBQVUsR0FBRyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ25DLGtCQUFhLEdBQVEsRUFBRSxDQUFDO0lBWXhCLENBQUM7SUFDRCxXQUFXLENBQUMsYUFBNEI7UUFDcEMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNqQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRTtZQUN6RCxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDbkQ7UUFDRCxJ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QUM7UUFDckMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztJQUNsQyxDQUFDO0lBQ08sYUFBYTtRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDOUIsMkNBQTJDO1FBQzNDLDRCQUE0QjtRQUM1Qix5QkFBeUI7UUFDekIsa0JBQWtCO0lBQ3RCLENBQUM7SUFFTyxlQUFlLENBQUMsRUFBTztRQUMzQixNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEUsSUFBSSxJQUFJLEVBQUU7WUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7U0FDbEM7SUFDTCxDQUFDOzttSEEzWFEsc0JBQXNCO3VHQUF0QixzQkFBc0IsK09DeEJuQywwTUFHQTsyRkRxQmEsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNJLG9CQUFvQixtQkFHYix1QkFBdUIsQ0FBQyxNQUFNO2lHQUd0QyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50LCBCYXJzYUFwaSwgZ2V0VW5pcXVlSWQsIGlzRnVuY3Rpb24gfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5kZWNsYXJlIGNvbnN0IHdpbmRvdzogYW55O1xuZGVjbGFyZSBjb25zdCB0aW55bWNlOiBhbnk7XG5kZWNsYXJlIGNvbnN0IGhlYWQ6IGFueTtcbmRlY2xhcmUgY29uc3QgJDogYW55O1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdic3UtYmFyc2EtdGlueWVtY2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS10aW55ZW1jZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYmFyc2EtdGlueWVtY2UuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBCYXJzYVRpbnllbWNlQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKSBTZXR0aW5nOiBhbnk7XG4gICAgQElucHV0KCkgaXNSZWFkb25seTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSB2YWx1ZTogYW55O1xuICAgIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSB0aW55SW5pdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB0aW55SG9zdElkID0gYGFfJHtnZXRVbmlxdWVJZCgyKX1gO1xuICAgIHRpbnlNQ0VDb25maWc6IGFueSA9IHt9O1xuICAgIGVkaXRvcjogYW55O1xuICAgIGRlZmF1bHRWZXJiczogYW55O1xuICAgIHd5c2l3eWdJbnRpYWxpemVkOiBib29sZWFuO1xuICAgIGludGlhbGl6YXRpb25JblByb2dyZXNzOiBib29sZWFuO1xuICAgIGVkaXRvclZhbHVlOiBzdHJpbmc7XG5cbiAgICBpZnJhbUJvZHlJbm5lckh0bWw6IHN0cmluZztcbiAgICBoZWlnaHQ6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfZWw6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG4gICAgbmdPbkNoYW5nZXMoc2ltcGxlQ2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhzaW1wbGVDaGFuZ2VzKTtcbiAgICAgICAgaWYgKHNpbXBsZUNoYW5nZXMudmFsdWUgJiYgIXNpbXBsZUNoYW5nZXMudmFsdWUuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUoc2ltcGxlQ2hhbmdlcy52YWx1ZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzaW1wbGVDaGFuZ2VzLmRpc2FibGUgJiYgIXNpbXBsZUNoYW5nZXMuZGlzYWJsZS5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgY29uc3QgZGlzYmFsZSA9IHNpbXBsZUNoYW5nZXMuZGlzYWJsZS5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBpZiAoZGlzYmFsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGlzYWJsZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEVuYWJsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzaW1wbGVDaGFuZ2VzLnJlYWRvbmx5ICYmICFzaW1wbGVDaGFuZ2VzLnJlYWRvbmx5LmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnNldFJlYWRPbmx5KHNpbXBsZUNoYW5nZXMucmVhZG9ubHkuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5oZWlnaHQgPSAodGhpcy5fZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuY2xpZW50SGVpZ2h0O1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIHRoaXMubG9hZFRpbnlNY2UoKTtcbiAgICB9XG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveVRpbnltY2UoKTtcbiAgICB9XG4gICAgbG9hZFRpbnlNY2UoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5TZXR0aW5nLklzSHRtbFZpZXdlcikge1xuICAgICAgICAgICAgaGVhZC5sb2FkKFsnTGliL3RpbnltY2UvdGlueW1jZS5taW4uanMnXSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHJlcGFyZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0aWxpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5oZWlnaHQgPSAnMTAwJSc7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy53aWR0aCA9ICcxMDAlJztcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnNlbGVjdG9yID0gJyMnICsgdGhpcy50aW55SG9zdElkO1xuXG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5jb250ZW50X2NzcyA9ICdhc3NldHMvUmVzb3VyY2VzL2ZvbnRzL0lyYW4uY3NzJztcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLmRpcmVjdGlvbmFsaXR5ID0gJ3J0bCc7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5sYW5ndWFnZSA9ICdmYV9JUic7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5wcm9tb3Rpb24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnBhc3RlX2RhdGFfaW1hZ2VzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLmRlZmF1bHRGb250TmFtZSA9ICdCYXJzYUZvbnQnO1xuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcuZGVmYXVsdEZvbnRTaXplID0gJzEycHgnO1xuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcuc3RhdHVzYmFyID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5pbmxpbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnRoZW1lX2FkdmFuY2VkX3Jlc2l6aW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLmZvbnRfZmFtaWx5X2Zvcm1hdHMgPVxuICAgICAgICAgICAgJ0JhcnNhRm9udD1CYXJzYUZvbnQ7QXJpYWw9YXJpYWwsaGVsdmV0aWNhLHNhbnMtc2VyaWY7IENvdXJpZXIgTmV3PWNvdXJpZXIgbmV3LGNvdXJpZXIsbW9ub3NwYWNlOyc7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5mb250X3NpemVfZm9ybWF0cyA9ICc4cHQgMTBwdCAxMnB0IDE0cHQgMThwdCAyNHB0IDM2cHQnO1xuXG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5wbHVnaW5zID0gW1xuICAgICAgICAgICAgJ2Fkdmxpc3QnLFxuICAgICAgICAgICAgJ2FuY2hvcicsXG4gICAgICAgICAgICAnYXV0b2xpbmsnLFxuICAgICAgICAgICAgJ2F1dG9zYXZlJyxcbiAgICAgICAgICAgICdjaGFybWFwJyxcbiAgICAgICAgICAgICdjb2RlJyxcbiAgICAgICAgICAgICdjb2Rlc2FtcGxlJyxcbiAgICAgICAgICAgICdkaXJlY3Rpb25hbGl0eScsXG4gICAgICAgICAgICAnZW1vdGljb25zJyxcbiAgICAgICAgICAgICdmdWxsc2NyZWVuJyxcbiAgICAgICAgICAgICdoZWxwJyxcbiAgICAgICAgICAgICdpbWFnZScsXG4gICAgICAgICAgICAnaW1wb3J0Y3NzJyxcbiAgICAgICAgICAgICdpbnNlcnRkYXRldGltZScsXG4gICAgICAgICAgICAnbGluaycsXG4gICAgICAgICAgICAnbGlzdHMnLFxuICAgICAgICAgICAgJ21lZGlhJyxcbiAgICAgICAgICAgICdub25icmVha2luZycsXG4gICAgICAgICAgICAncGFnZWJyZWFrJyxcbiAgICAgICAgICAgICdwcmV2aWV3JyxcbiAgICAgICAgICAgICdxdWlja2JhcnMnLFxuICAgICAgICAgICAgJ3NhdmUnLFxuICAgICAgICAgICAgJ3NlYXJjaHJlcGxhY2UnLFxuICAgICAgICAgICAgJ3RhYmxlJyxcbiAgICAgICAgICAgICd0ZW1wbGF0ZScsXG4gICAgICAgICAgICAndmlzdWFsYmxvY2tzJyxcbiAgICAgICAgICAgICd2aXN1YWxjaGFycycsXG4gICAgICAgICAgICAnd29yZGNvdW50JyxcbiAgICAgICAgICAgICdhdXRvcmVzaXplJ1xuICAgICAgICBdO1xuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcudG9vbGJhciA9IFtcbiAgICAgICAgICAgIGBkZWZhdWx0VmVyYnMgYmFyc2FJbWFnZSB8IGluc2VydCB8IGZvcmVjb2xvciBiYWNrY29sb3IgZm9udGZhbWlseSBmb250c2l6ZSB8IGJ1bGxpc3QgbnVtbGlzdCBvdXRkZW50IGluZGVudCB8IHJlbW92ZWZvcm1hdGAgK1xuICAgICAgICAgICAgICAgIGAgfCB1bmRvIHJlZG8gfCBjb3B5IGN1dCBwYXN0ZSB8IGJsb2NrcyB8IGJvbGQgaXRhbGljIHwgYWxpZ25sZWZ0IGFsaWduY2VudGVyIGFsaWducmlnaHQgYWxpZ25qdXN0aWZ5IGx0ciBydGxgXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgdGlueW1jZVNldHRpbmdzR2xvYmFsID0gd2luZG93LnRpbnltY2VTZXR0aW5ncztcbiAgICAgICAgbGV0IHRpbnltY2VTZXR0aW5ncyA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKHRoaXMuU2V0dGluZywgJ0pzb25FeHRyYVByb3AudGlueW1jZVNldHRpbmdzJyk7XG4gICAgICAgIHRpbnltY2VTZXR0aW5ncyA9IEJhcnNhQXBpLkNvbW1vbi5NZXJnZXIuTWVyZ2UodGlueW1jZVNldHRpbmdzR2xvYmFsLCB0aW55bWNlU2V0dGluZ3MpO1xuICAgICAgICBpZiAoIXRpbnltY2VTZXR0aW5ncyAmJiBBcnJheS5pc0FycmF5KHRpbnltY2VTZXR0aW5ncykpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aW55bWNlU2V0dGluZ3MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWdbaXRlbS5rZXldID0gaXRlbS52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzUmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5tZW51YmFyID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcuc3RhdHVzYmFyID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcucGx1Z2lucyA9IFsnYXV0b3Jlc2l6ZSddO1xuICAgICAgICAgICAgLy8gdGhpcy50aW55TUNFQ29uZmlnLnBsdWdpbnMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy50b29sYmFyID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdXNlclNldHVwOiAoZWRpdG9yOiBhbnkpID0+IHZvaWQ7XG5cbiAgICAgICAgaWYgKHRoaXMudGlueU1DRUNvbmZpZy5zZXR1cCkge1xuICAgICAgICAgICAgdXNlclNldHVwID0gdGhpcy50aW55TUNFQ29uZmlnLnNldHVwO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRlZmF1bHRWZXJic01lbnU6IGFueSA9IFtdO1xuICAgICAgICAvLyBCRUdJTjogc2V0dXBcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnNldHVwID0gKGVkKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVkaXRvciA9IGVkO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNSZWFkb25seSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlZmF1bHRWZXJicykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRWZXJicy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmVyYnNNZW51LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBpdGVtLkh0bWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ21lbnVpdGVtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLlRpdGxlIHx8IGl0ZW0uSHRtbC5yZXBsYWNlKC88YnJcXHMqXFwvPz4vZ2ksICcgJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25BY3Rpb246ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWQuZXhlY0NvbW1hbmQoJ21jZUluc2VydFJhd0hUTUwnLCBmYWxzZSwgaXRlbS5IdG1sKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVkLnVpLnJlZ2lzdHJ5LmFkZFNwbGl0QnV0dG9uKCdiYXJzYUltYWdlJywge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnaW5zZXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ltYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcDogJ0luc2VydCBJbWFnZSBBcyBCYXNlNjQnLFxuICAgICAgICAgICAgICAgICAgICBvbkFjdGlvbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgQmFyc2FBcGkuQ29tbW9uLkFzeW5jLldhdGVyZmFsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGluZW1jZS5FbWJlZEltYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5GaWxlRGlhbG9nOiB0aGlzLlNob3dPcGVuRmlsZURpYWxvZy5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRCYXNlNjQ6IHRoaXMuSW5zZXJ0QmFzZTY0LmJpbmQodGhpcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnIsIHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXJzYUFwaS5Db21tb24uQXN5bmMuRmluYWxpemUoZXJyLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG9uSXRlbUFjdGlvbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgQmFyc2FBcGkuQ29tbW9uLkFzeW5jLldhdGVyZmFsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGluZW1jZS5VcGxvYWRUb0RhdGFiYXNlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5GaWxlRGlhbG9nOiB0aGlzLlNob3dVcGxvYWRXaW5kb3cuYmluZCh0aGlzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVyciwgcmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhcnNhQXBpLkNvbW1vbi5Bc3luYy5GaW5hbGl6ZShlcnIsIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2g6IChjYWxsYmFjaykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnY2hvaWNlaXRlbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6ICd1cGxvYWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnaW1hZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiAnVXBsb2FkIEltYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICd1cGxvYWQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGl0ZW1zKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgZWQudWkucmVnaXN0cnkuYWRkTWVudUJ1dHRvbignZGVmYXVsdFZlcmJzJywge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiAn2LnYqNin2LHYqtmH2KfbjCDZvtuM2LQg2YHYsdi2JyxcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2g6IChjYWxsYmFjaykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZGVmYXVsdFZlcmJzTWVudSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbih3aW5kb3cudGlueW1jZVNldHVwKSkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cudGlueW1jZVNldHVwLmNhbGwodGhpcywgdGhpcywgZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBoYXNJbml0ID0gZmFsc2U7XG4gICAgICAgICAgICBlZC5vbignaW5pdCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnd5c2l3eWdJbnRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmludGlhbGl6YXRpb25JblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy50aW55TUNFQ29uZmlnLmRlZmF1bHRGb250TmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBlZC5leGVjQ29tbWFuZCgnRm9udE5hbWUnLCBmYWxzZSwgdGhpcy50aW55TUNFQ29uZmlnLmRlZmF1bHRGb250TmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRpbnlNQ0VDb25maWcuZGVmYXVsdEZvbnRTaXplKSB7XG4gICAgICAgICAgICAgICAgICAgIGVkLmV4ZWNDb21tYW5kKCdGb250U2l6ZScsIGZhbHNlLCB0aGlzLnRpbnlNQ0VDb25maWcuZGVmYXVsdEZvbnRTaXplKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNSZWFkb25seSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlYWRPbmx5KHRoaXMuaXNSZWFkb25seSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFRoaXMgcGllY2Ugb2YgY29kZSBzb2x2ZXMgdGhlIHByb2JsZW0gb2YgY2hhbmdlIHByb3BhZ2F0aW9uIHNvIHRoYXRcbiAgICAgICAgICAgICAgICAvLyB0aGVyZSBpcyBubyBuZWVkIHRvIGNhbGwgdHJpZ2dlclNhdmVcbiAgICAgICAgICAgICAgICBjb25zdCBzZXRDb250ZW50ID0gZWQuc2V0Q29udGVudDtcbiAgICAgICAgICAgICAgICBlZC5zZXRDb250ZW50ID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Q29udGVudC5hcHBseShlZCwgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIGVkLmRpc3BhdGNoKCdjaGFuZ2UnLCB7fSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBoYXNJbml0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnRpbnlJbml0LmVtaXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpZnJhbUVsOiBIVE1MSUZyYW1lRWxlbWVudCA9IGVkLmlmcmFtZUVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgaWYgKGlmcmFtRWwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWZyYW1FbC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgdGhpcy5fb25Mb2FkSWZyYW1lLmJpbmQodGhpcykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBDYXRjaCBhbmQgcHJvcGFnYXRlIHRoZSBjaGFuZ2UgZXZlbnRcbiAgICAgICAgICAgIGxldCBvbGRDb250ZW50ID0gbnVsbDtcbiAgICAgICAgICAgIGVkLm9uKCdjaGFuZ2Uga2V5dXAnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3dmFsID0gZWQuZ2V0Q29udGVudCgpO1xuICAgICAgICAgICAgICAgIGlmIChuZXd2YWwgPT09IG9sZENvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG9sZENvbnRlbnQgPSBuZXd2YWw7XG4gICAgICAgICAgICAgICAgaWYgKCFoYXNJbml0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBlZC5zYXZlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0b3JWYWx1ZSA9IG5ld3ZhbDtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQobmV3dmFsKTtcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmNvbnRleHQuZmlyZUV2ZW50KCdjaGFuZ2UnLCB0aGlzLCBuZXd2YWwsIG9sZHZhbCwge30pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGVkLm9uKCdmb2N1cycsICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHVzZXJTZXR1cCkge1xuICAgICAgICAgICAgICAgIHVzZXJTZXR1cChlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgU2hvd1VwbG9hZFdpbmRvdygpOiB2b2lkIHt9XG4gICAgU2hvd09wZW5GaWxlRGlhbG9nKGRvUmV0dXJuKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlucHV0OiBhbnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnZmlsZScpO1xuICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ2FjY2VwdCcsICdpbWFnZS8qJyk7XG5cbiAgICAgICAgaW5wdXQub25jaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXNbMF07XG5cbiAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiYXNlNjQgPSByZWFkZXIucmVzdWx0IGFzIHN0cmluZztcbiAgICAgICAgICAgICAgICBiYXNlNjQgPSBiYXNlNjQuc3BsaXQoJywnKVsxXTtcbiAgICAgICAgICAgICAgICBkb1JldHVybihudWxsLCBiYXNlNjQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlucHV0LmNsaWNrKCk7XG4gICAgfVxuICAgIEluc2VydEJhc2U2NChiYXNlNjQsIGRvUmV0dXJuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWRpdG9yLmV4ZWNDb21tYW5kKCdtY2VJbnNlcnRSYXdIVE1MJywgZmFsc2UsICc8aW1nIHNyYz1kYXRhOmltYWdlL3BuZztiYXNlNjQsJyArIGJhc2U2NCArICcgLz4nKTtcbiAgICAgICAgZG9SZXR1cm4oKTtcbiAgICB9XG4gICAgZ2V0VmFsdWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGxldCByZXMgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy53eXNpd3lnSW50aWFsaXplZCkge1xuICAgICAgICAgICAgY29uc3QgZWQgPSB0aW55bWNlLmdldCh0aGlzLnRpbnlIb3N0SWQpO1xuICAgICAgICAgICAgaWYgKGVkKSB7XG4gICAgICAgICAgICAgICAgcmVzID0gZWQuZ2V0Q29udGVudCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgc2V0VmFsdWUodmFsdWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNldFZhbHVlVGlueSgpO1xuICAgIH1cbiAgICBzZXRWYWx1ZVRpbnkoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMud3lzaXd5Z0ludGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVkID0gdGlueW1jZS5nZXQodGhpcy50aW55SG9zdElkKTtcbiAgICAgICAgICAgIGlmIChlZCkge1xuICAgICAgICAgICAgICAgIGVkLnNldENvbnRlbnQodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICAgIGZvY3VzKCk6IGFueSB7XG4gICAgICAgIGlmICh0aGlzLmlzUmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMud3lzaXd5Z0ludGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRpbnltY2UuZXhlY0NvbW1hbmQoJ21jZUZvY3VzJywgZmFsc2UsICdpZF9vZl90ZXh0YXJlYScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHNldEVuYWJsZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMud3lzaXd5Z0ludGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVkID0gdGlueW1jZS5nZXQodGhpcy50aW55SG9zdElkKTtcbiAgICAgICAgICAgIGVkLmdldEJvZHkoKS5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsIHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMud3lzaXd5Z0ludGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVkID0gdGlueW1jZS5nZXQodGhpcy50aW55SG9zdElkKTtcbiAgICAgICAgICAgIGVkLmdldEJvZHkoKS5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzZXRSZWFkT25seShyZWFkT25seSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy53eXNpd3lnSW50aWFsaXplZCkge1xuICAgICAgICAgICAgY29uc3QgZWQgPSB0aW55bWNlLmdldCh0aGlzLnRpbnlIb3N0SWQpO1xuICAgICAgICAgICAgZWQuZ2V0Qm9keSgpLnNldEF0dHJpYnV0ZSgnY29udGVudGVkaXRhYmxlJywgIXJlYWRPbmx5KTtcbiAgICAgICAgICAgIGlmIChyZWFkT25seSkge1xuICAgICAgICAgICAgICAgICQoJy50b3gtZWRpdG9yLWhlYWRlcicpLmhpZGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgJCgnLnRveC1lZGl0b3ItaGVhZGVyJykuaGlkZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVzdHJveVRpbnltY2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLlNldHRpbmcuSXNIdG1sVmlld2VyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZWQgPSB0aW55bWNlLmdldCh0aGlzLnRpbnlIb3N0SWQpO1xuICAgICAgICBpZiAoZWQpIHtcbiAgICAgICAgICAgIGlmIChlZC5pZnJhbWVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgZWQuaWZyYW1lRWxlbWVudC5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVkLmRlc3Ryb3koZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgcHJlcGFyZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0aWxpemUoKTtcbiAgICAgICAgdGlueW1jZS5pbml0KHRoaXMudGlueU1DRUNvbmZpZyk7XG4gICAgICAgIHRoaXMuaW50aWFsaXphdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgdGhpcy53eXNpd3lnSW50aWFsaXplZCA9IHRydWU7XG4gICAgfVxuICAgIHByaXZhdGUgX29uTG9hZElmcmFtZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuZWRpdG9yVmFsdWU7XG4gICAgICAgIC8vIGNvbnN0IGVkID0gdGlueW1jZS5nZXQodGhpcy50aW55SG9zdElkKTtcbiAgICAgICAgLy8gdGhpcy5fcmVtb3ZlT3ZlcmZsb3coZWQpO1xuICAgICAgICAvLyB0aGlzLmRlc3Ryb3lUaW55bWNlKCk7XG4gICAgICAgIC8vIHRoaXMucHJlcGFyZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlbW92ZU92ZXJmbG93KGVkOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaHRtbCA9IGVkLmlmcmFtZUVsZW1lbnQ/LmNvbnRlbnREb2N1bWVudD8ucXVlcnlTZWxlY3RvcignaHRtbCcpO1xuICAgICAgICBpZiAoaHRtbCkge1xuICAgICAgICAgICAgaHRtbC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZkLWlucHV0IHRpbnl3cmFwcGVyXCIgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVpZ2h0XCIgW2lkXT1cInRpbnlIb3N0SWRcIj48L2Rpdj5cclxuXHJcbjwhLS0gPHRleHRhcmVhIFtpZF09XCJ0aW55SG9zdElkXCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7IHZpc2liaWxpdHk6IGhpZGRlblwiPjwvdGV4dGFyZWE+IC0tPlxyXG4iXX0=
@@ -30,14 +30,14 @@ export class UiFormPanelComponent extends FormBaseComponent {
30
30
  }
31
31
  }
32
32
  UiFormPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiFormPanelComponent, deps: [{ token: i1.BreadcrumbService }, { token: i2.ContentDensityService }, { token: i1.PortalService }, { token: i3.ActivatedRoute }, { token: i3.Router }, { token: i1.FormPanelService, self: true }], target: i0.ɵɵFactoryTarget.Component });
33
- UiFormPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiFormPanelComponent, selector: "bsu-ui-form-panel", host: { properties: { "attr.typeDefName": "this._typeDefName" } }, providers: [FormPanelService], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"isSearchPanel || (isSimple$ | async) || isSubForm || isModal || isFormReport; else dynamicPage\">\r\n <bsu-mask *ngIf=\"mask$ | async\"> </bsu-mask>\r\n <div>\r\n <bsu-ly-layout-container-of-root\r\n [config]=\"layout94$ | async\"\r\n [isPanel]=\"false\"\r\n [isRoot]=\"true\"\r\n ></bsu-ly-layout-container-of-root>\r\n <div class=\"workflow-buttons\" *ngIf=\"toolbarItems$ | async as toolbarItems\">\r\n <div style=\"flex-grow: 1\"></div>\r\n <bsu-layout-actions\r\n style=\"display: flex; column-gap: 1rem\"\r\n [simple]=\"true\"\r\n [buttons]=\"[]\"\r\n [workflowButtons]=\"toolbarItems\"\r\n (toolClick)=\"onToolbarClick($event)\"\r\n >\r\n </bsu-layout-actions>\r\n </div>\r\n </div>\r\n <!-- <div fd-bar barDesign=\"floating-footer\">\r\n <div\r\n *ngIf=\"context.WorkflowPanelUi\"\r\n fd-bar-right\r\n [footerActions]=\"context.WorkflowPanelUi\"\r\n ></div>\r\n <div\r\n *ngIf=\"\r\n !context.WorkflowPanelUi &&\r\n showToolbar &&\r\n \r\n toolbar.items.length > 0\r\n \"\r\n fd-bar-right\r\n [footerActions]=\"toolbar\"\r\n ></div>\r\n </div> -->\r\n</ng-container>\r\n<ng-template #dynamicPage>\r\n <bsu-fundamental-dynamic-form\r\n [style.position]=\"(mask$ | async) ? 'relative' : null\"\r\n [canSend]=\"(canSend$ | async) === true\"\r\n [removeContentPadding]=\"(headerRemoveContentPadding$ | async)!!\"\r\n [breadCrumbs]=\"breadCrumbs$ | async\"\r\n [description]=\"(headerDescription$ | async)!!\"\r\n [hideClose]=\"(hideClose$ | async)!!\"\r\n [hideTitle]=\"(hideTitle$ | async)!!\"\r\n [hidePin]=\"(hidePin$ | async)!!\"\r\n [title]=\"(title$ | async)!!\"\r\n [subtitle]=\"(headerSubtitle$ | async)!!\"\r\n [toolbarItems]=\"toolbarItems$ | async | tlbButtons: 'inFooter':false\"\r\n [layoutActions]=\"toolbarItems$ | async | tlbButtons: 'inFooter':true\"\r\n [toolbarVisible]=\"(toolbarVisible$ | async)!!\"\r\n [facetList]=\"(headerLayout$ | async)?.FacetList2\"\r\n [parameters]=\"parameters\"\r\n [workflowPanelUi]=\"workflowPanelUi$ | async\"\r\n [isMobile]=\"isMobile\"\r\n [layout94]=\"layout94$ | async\"\r\n [rtl]=\"(rtl$ | async)!!\"\r\n [mask]=\"(mask$ | async)!!\"\r\n [mo]=\"(mo$ | async)!!\"\r\n [dirValue]=\"(dirValue$ | async)!!\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n [contentDensity]=\"(contentDensity$ | async)!!\"\r\n [modernTabs]=\"(modernTabs$ | async)!!\"\r\n [avatar]=\"(avatar$ | async)!!\"\r\n [fieldDict]=\"(fieldDict$ | async)!!\"\r\n (close)=\"onClose()\"\r\n (toolbarClick)=\"onToolbarClick($event)\"\r\n [contentIsPage]=\"parameters?.ContentIsPage\"\r\n (workflowChoiceClick)=\"onWorkflowChoiceClick($event)\"\r\n ></bsu-fundamental-dynamic-form>\r\n</ng-template>\r\n", styles: [":host{display:block;width:100%;min-height:100%}.workflow-buttons{display:flex;margin-top:5px;padding:5px}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.LyLayoutContainerOfRootComponent, selector: "bsu-ly-layout-container-of-root" }, { kind: "component", type: i6.MaskComponent, selector: "bsu-mask", inputs: ["size", "marginTop"] }, { kind: "component", type: i7.FundamentalDynamicFormComponent, selector: "bsu-fundamental-dynamic-form", inputs: ["breadCrumbs", "toolbarVisible", "toolbarItems", "layoutActions", "layout94", "parameters", "workflowPanelUi", "context", "title", "subtitle", "description", "facetList", "fieldDict", "removeHeaderBorder", "removeContentPadding", "isMobile", "mo", "avatar", "rtl", "hideTitle", "hideClose", "hidePin", "mask", "canSend", "contentIsPage", "contentDensity", "deviceSize", "dirValue", "modernTabs"], outputs: ["toolbarClick", "workflowChoiceClick", "close"] }, { kind: "component", type: i8.LayoutActionsComponent, selector: "bsu-layout-actions", inputs: ["workflowButtons", "workflowButtonsComboMode", "canSend", "simple"], outputs: ["workflowChoiceSelect"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TlbButtonsPipe, name: "tlbButtons" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
33
+ UiFormPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiFormPanelComponent, selector: "bsu-ui-form-panel", host: { properties: { "attr.typeDefName": "this._typeDefName" } }, providers: [FormPanelService], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"isSearchPanel || (isSimple$ | async) || isSubForm || isModal || isFormReport; else dynamicPage\">\n <bsu-mask *ngIf=\"mask$ | async\"> </bsu-mask>\n <div>\n <bsu-ly-layout-container-of-root\n [config]=\"layout94$ | async\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n ></bsu-ly-layout-container-of-root>\n <div class=\"workflow-buttons\" *ngIf=\"workflowButtons$ | async as workflowButtons\">\n <div style=\"flex-grow: 1\"></div>\n <bsu-layout-actions\n style=\"display: flex; column-gap: 1rem\"\n [simple]=\"true\"\n [buttons]=\"[]\"\n [workflowButtons]=\"workflowButtons\"\n (toolClick)=\"onToolbarClick($event)\"\n >\n </bsu-layout-actions>\n </div>\n </div>\n <!-- <div fd-bar barDesign=\"floating-footer\">\n <div\n *ngIf=\"context.WorkflowPanelUi\"\n fd-bar-right\n [footerActions]=\"context.WorkflowPanelUi\"\n ></div>\n <div\n *ngIf=\"\n !context.WorkflowPanelUi &&\n showToolbar &&\n \n toolbar.items.length > 0\n \"\n fd-bar-right\n [footerActions]=\"toolbar\"\n ></div>\n </div> -->\n</ng-container>\n<ng-template #dynamicPage>\n <bsu-fundamental-dynamic-form\n [style.position]=\"(mask$ | async) ? 'relative' : null\"\n [canSend]=\"(canSend$ | async) === true\"\n [removeContentPadding]=\"(headerRemoveContentPadding$ | async)!!\"\n [breadCrumbs]=\"breadCrumbs$ | async\"\n [description]=\"(headerDescription$ | async)!!\"\n [hideClose]=\"(hideClose$ | async)!!\"\n [hideTitle]=\"(hideTitle$ | async)!!\"\n [hidePin]=\"(hidePin$ | async)!!\"\n [title]=\"(title$ | async)!!\"\n [subtitle]=\"(headerSubtitle$ | async)!!\"\n [toolbarItems]=\"toolbarItems$ | async | tlbButtons: 'inFooter':false\"\n [layoutActions]=\"toolbarItems$ | async | tlbButtons: 'inFooter':true\"\n [toolbarVisible]=\"(toolbarVisible$ | async)!!\"\n [facetList]=\"(headerLayout$ | async)?.FacetList2\"\n [parameters]=\"parameters\"\n [workflowPanelUi]=\"workflowPanelUi$ | async\"\n [isMobile]=\"isMobile\"\n [layout94]=\"layout94$ | async\"\n [rtl]=\"(rtl$ | async)!!\"\n [mask]=\"(mask$ | async)!!\"\n [mo]=\"(mo$ | async)!!\"\n [dirValue]=\"(dirValue$ | async)!!\"\n [deviceSize]=\"(deviceSize$ | async)!!\"\n [contentDensity]=\"(contentDensity$ | async)!!\"\n [modernTabs]=\"(modernTabs$ | async)!!\"\n [avatar]=\"(avatar$ | async)!!\"\n [fieldDict]=\"(fieldDict$ | async)!!\"\n (close)=\"onClose()\"\n (toolbarClick)=\"onToolbarClick($event)\"\n [contentIsPage]=\"parameters?.ContentIsPage\"\n (workflowChoiceClick)=\"onWorkflowChoiceClick($event)\"\n ></bsu-fundamental-dynamic-form>\n</ng-template>\n", styles: [":host{display:block;width:100%;min-height:100%}.workflow-buttons{display:flex;margin-top:5px;padding:5px}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.LyLayoutContainerOfRootComponent, selector: "bsu-ly-layout-container-of-root" }, { kind: "component", type: i6.MaskComponent, selector: "bsu-mask", inputs: ["size", "marginTop"] }, { kind: "component", type: i7.FundamentalDynamicFormComponent, selector: "bsu-fundamental-dynamic-form", inputs: ["breadCrumbs", "toolbarVisible", "toolbarItems", "layoutActions", "layout94", "parameters", "workflowPanelUi", "context", "title", "subtitle", "description", "facetList", "fieldDict", "removeHeaderBorder", "removeContentPadding", "isMobile", "mo", "avatar", "rtl", "hideTitle", "hideClose", "hidePin", "mask", "canSend", "contentIsPage", "contentDensity", "deviceSize", "dirValue", "modernTabs"], outputs: ["toolbarClick", "workflowChoiceClick", "close"] }, { kind: "component", type: i8.LayoutActionsComponent, selector: "bsu-layout-actions", inputs: ["workflowButtons", "workflowButtonsComboMode", "canSend", "simple"], outputs: ["workflowChoiceSelect"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TlbButtonsPipe, name: "tlbButtons" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
34
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiFormPanelComponent, decorators: [{
35
35
  type: Component,
36
- args: [{ selector: 'bsu-ui-form-panel', changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormPanelService], template: "<ng-container *ngIf=\"isSearchPanel || (isSimple$ | async) || isSubForm || isModal || isFormReport; else dynamicPage\">\r\n <bsu-mask *ngIf=\"mask$ | async\"> </bsu-mask>\r\n <div>\r\n <bsu-ly-layout-container-of-root\r\n [config]=\"layout94$ | async\"\r\n [isPanel]=\"false\"\r\n [isRoot]=\"true\"\r\n ></bsu-ly-layout-container-of-root>\r\n <div class=\"workflow-buttons\" *ngIf=\"toolbarItems$ | async as toolbarItems\">\r\n <div style=\"flex-grow: 1\"></div>\r\n <bsu-layout-actions\r\n style=\"display: flex; column-gap: 1rem\"\r\n [simple]=\"true\"\r\n [buttons]=\"[]\"\r\n [workflowButtons]=\"toolbarItems\"\r\n (toolClick)=\"onToolbarClick($event)\"\r\n >\r\n </bsu-layout-actions>\r\n </div>\r\n </div>\r\n <!-- <div fd-bar barDesign=\"floating-footer\">\r\n <div\r\n *ngIf=\"context.WorkflowPanelUi\"\r\n fd-bar-right\r\n [footerActions]=\"context.WorkflowPanelUi\"\r\n ></div>\r\n <div\r\n *ngIf=\"\r\n !context.WorkflowPanelUi &&\r\n showToolbar &&\r\n \r\n toolbar.items.length > 0\r\n \"\r\n fd-bar-right\r\n [footerActions]=\"toolbar\"\r\n ></div>\r\n </div> -->\r\n</ng-container>\r\n<ng-template #dynamicPage>\r\n <bsu-fundamental-dynamic-form\r\n [style.position]=\"(mask$ | async) ? 'relative' : null\"\r\n [canSend]=\"(canSend$ | async) === true\"\r\n [removeContentPadding]=\"(headerRemoveContentPadding$ | async)!!\"\r\n [breadCrumbs]=\"breadCrumbs$ | async\"\r\n [description]=\"(headerDescription$ | async)!!\"\r\n [hideClose]=\"(hideClose$ | async)!!\"\r\n [hideTitle]=\"(hideTitle$ | async)!!\"\r\n [hidePin]=\"(hidePin$ | async)!!\"\r\n [title]=\"(title$ | async)!!\"\r\n [subtitle]=\"(headerSubtitle$ | async)!!\"\r\n [toolbarItems]=\"toolbarItems$ | async | tlbButtons: 'inFooter':false\"\r\n [layoutActions]=\"toolbarItems$ | async | tlbButtons: 'inFooter':true\"\r\n [toolbarVisible]=\"(toolbarVisible$ | async)!!\"\r\n [facetList]=\"(headerLayout$ | async)?.FacetList2\"\r\n [parameters]=\"parameters\"\r\n [workflowPanelUi]=\"workflowPanelUi$ | async\"\r\n [isMobile]=\"isMobile\"\r\n [layout94]=\"layout94$ | async\"\r\n [rtl]=\"(rtl$ | async)!!\"\r\n [mask]=\"(mask$ | async)!!\"\r\n [mo]=\"(mo$ | async)!!\"\r\n [dirValue]=\"(dirValue$ | async)!!\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n [contentDensity]=\"(contentDensity$ | async)!!\"\r\n [modernTabs]=\"(modernTabs$ | async)!!\"\r\n [avatar]=\"(avatar$ | async)!!\"\r\n [fieldDict]=\"(fieldDict$ | async)!!\"\r\n (close)=\"onClose()\"\r\n (toolbarClick)=\"onToolbarClick($event)\"\r\n [contentIsPage]=\"parameters?.ContentIsPage\"\r\n (workflowChoiceClick)=\"onWorkflowChoiceClick($event)\"\r\n ></bsu-fundamental-dynamic-form>\r\n</ng-template>\r\n", styles: [":host{display:block;width:100%;min-height:100%}.workflow-buttons{display:flex;margin-top:5px;padding:5px}\n"] }]
36
+ args: [{ selector: 'bsu-ui-form-panel', changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormPanelService], template: "<ng-container *ngIf=\"isSearchPanel || (isSimple$ | async) || isSubForm || isModal || isFormReport; else dynamicPage\">\n <bsu-mask *ngIf=\"mask$ | async\"> </bsu-mask>\n <div>\n <bsu-ly-layout-container-of-root\n [config]=\"layout94$ | async\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n ></bsu-ly-layout-container-of-root>\n <div class=\"workflow-buttons\" *ngIf=\"workflowButtons$ | async as workflowButtons\">\n <div style=\"flex-grow: 1\"></div>\n <bsu-layout-actions\n style=\"display: flex; column-gap: 1rem\"\n [simple]=\"true\"\n [buttons]=\"[]\"\n [workflowButtons]=\"workflowButtons\"\n (toolClick)=\"onToolbarClick($event)\"\n >\n </bsu-layout-actions>\n </div>\n </div>\n <!-- <div fd-bar barDesign=\"floating-footer\">\n <div\n *ngIf=\"context.WorkflowPanelUi\"\n fd-bar-right\n [footerActions]=\"context.WorkflowPanelUi\"\n ></div>\n <div\n *ngIf=\"\n !context.WorkflowPanelUi &&\n showToolbar &&\n \n toolbar.items.length > 0\n \"\n fd-bar-right\n [footerActions]=\"toolbar\"\n ></div>\n </div> -->\n</ng-container>\n<ng-template #dynamicPage>\n <bsu-fundamental-dynamic-form\n [style.position]=\"(mask$ | async) ? 'relative' : null\"\n [canSend]=\"(canSend$ | async) === true\"\n [removeContentPadding]=\"(headerRemoveContentPadding$ | async)!!\"\n [breadCrumbs]=\"breadCrumbs$ | async\"\n [description]=\"(headerDescription$ | async)!!\"\n [hideClose]=\"(hideClose$ | async)!!\"\n [hideTitle]=\"(hideTitle$ | async)!!\"\n [hidePin]=\"(hidePin$ | async)!!\"\n [title]=\"(title$ | async)!!\"\n [subtitle]=\"(headerSubtitle$ | async)!!\"\n [toolbarItems]=\"toolbarItems$ | async | tlbButtons: 'inFooter':false\"\n [layoutActions]=\"toolbarItems$ | async | tlbButtons: 'inFooter':true\"\n [toolbarVisible]=\"(toolbarVisible$ | async)!!\"\n [facetList]=\"(headerLayout$ | async)?.FacetList2\"\n [parameters]=\"parameters\"\n [workflowPanelUi]=\"workflowPanelUi$ | async\"\n [isMobile]=\"isMobile\"\n [layout94]=\"layout94$ | async\"\n [rtl]=\"(rtl$ | async)!!\"\n [mask]=\"(mask$ | async)!!\"\n [mo]=\"(mo$ | async)!!\"\n [dirValue]=\"(dirValue$ | async)!!\"\n [deviceSize]=\"(deviceSize$ | async)!!\"\n [contentDensity]=\"(contentDensity$ | async)!!\"\n [modernTabs]=\"(modernTabs$ | async)!!\"\n [avatar]=\"(avatar$ | async)!!\"\n [fieldDict]=\"(fieldDict$ | async)!!\"\n (close)=\"onClose()\"\n (toolbarClick)=\"onToolbarClick($event)\"\n [contentIsPage]=\"parameters?.ContentIsPage\"\n (workflowChoiceClick)=\"onWorkflowChoiceClick($event)\"\n ></bsu-fundamental-dynamic-form>\n</ng-template>\n", styles: [":host{display:block;width:100%;min-height:100%}.workflow-buttons{display:flex;margin-top:5px;padding:5px}\n"] }]
37
37
  }], ctorParameters: function () { return [{ type: i1.BreadcrumbService }, { type: i2.ContentDensityService }, { type: i1.PortalService }, { type: i3.ActivatedRoute }, { type: i3.Router }, { type: i1.FormPanelService, decorators: [{
38
38
  type: Self
39
39
  }] }]; }, propDecorators: { _typeDefName: [{
40
40
  type: HostBinding,
41
41
  args: ['attr.typeDefName']
42
42
  }] } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktZm9ybS1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS1mb3JtLXBhbmVsL3VpLWZvcm0tcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktZm9ybS1wYW5lbC91aS1mb3JtLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUl0RixPQUFPLEVBQ0gsaUJBQWlCLEVBR2pCLGdCQUFnQixFQUVuQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7O0FBVTlCLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxpQkFBaUI7SUFRdkQsWUFDYyxrQkFBcUMsRUFDckMsc0JBQTZDLEVBQzdDLGNBQTZCLEVBQzdCLGVBQStCLEVBQy9CLE9BQWUsRUFDUCxpQkFBbUMsQ0FBQyx1Q0FBdUM7O1FBRTdGLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBUGYsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXVCO1FBQzdDLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUMvQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ1Asc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQWJ4QixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQWdCL0MsSUFBSSxDQUFDLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxZQUFZLENBQUM7UUFDcEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxzQkFBc0IsQ0FBQyxjQUFjLENBQUM7UUFDN0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxjQUFjLENBQUMsV0FBVyxDQUFDO1FBQzlDLElBQUksQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQztRQUMxQyxJQUFJLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDO1FBQ2hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUFFLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdGLENBQUM7O2lIQXhCUSxvQkFBb0I7cUdBQXBCLG9CQUFvQiwrR0FGbEIsQ0FBQyxnQkFBZ0IsQ0FBQyxpRENsQmpDLHFrR0F5RUE7MkZEckRhLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDSSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLGdCQUFnQixDQUFDOzswQkFnQnhCLElBQUk7NENBYndCLFlBQVk7c0JBQTVDLFdBQVc7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eSwgQ29udGVudERlbnNpdHlTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBGb3JtQmFzZUNvbXBvbmVudCxcclxuICAgIFBvcnRhbFNlcnZpY2UsXHJcbiAgICBCcmVhZENydW1iSW5mbyxcclxuICAgIEZvcm1QYW5lbFNlcnZpY2UsXHJcbiAgICBCcmVhZGNydW1iU2VydmljZVxyXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnN1LXVpLWZvcm0tcGFuZWwnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3VpLWZvcm0tcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdWktZm9ybS1wYW5lbC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBwcm92aWRlcnM6IFtGb3JtUGFuZWxTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlGb3JtUGFuZWxDb21wb25lbnQgZXh0ZW5kcyBGb3JtQmFzZUNvbXBvbmVudCB7XHJcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudHlwZURlZk5hbWUnKSBfdHlwZURlZk5hbWUgPSAnJztcclxuICAgIGJyZWFkQ3J1bWJzJDogT2JzZXJ2YWJsZTxCcmVhZENydW1iSW5mb1tdPjtcclxuICAgIGNvbnRlbnREZW5zaXR5JDogT2JzZXJ2YWJsZTxDb250ZW50RGVuc2l0eT47XHJcbiAgICBkZXZpY2VTaXplJDogT2JzZXJ2YWJsZTwncycgfCAnbScgfCAnbCcgfCAneGwnPjtcclxuICAgIGRpclZhbHVlJDogT2JzZXJ2YWJsZTwncnRsJyB8ICdsdHInPjtcclxuICAgIHJ0bCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgICBjYW5TZW5kJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCBfYnJlYWRjcnVtYlNlcnZpY2U6IEJyZWFkY3J1bWJTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfY29udGVudERlbnNpdHlTZXJ2aWNlOiBDb250ZW50RGVuc2l0eVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9wb3J0YWxTZXJ2aWNlOiBQb3J0YWxTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgQFNlbGYoKSBwcm90ZWN0ZWQgX2Zvcm1QYW5lbFNlcnZpY2U6IEZvcm1QYW5lbFNlcnZpY2UgLy8gcHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihfZm9ybVBhbmVsU2VydmljZSk7XHJcbiAgICAgICAgdGhpcy5icmVhZENydW1icyQgPSBfYnJlYWRjcnVtYlNlcnZpY2UuYnJlYWRjcnVtYnMkO1xyXG4gICAgICAgIHRoaXMuY29udGVudERlbnNpdHkkID0gX2NvbnRlbnREZW5zaXR5U2VydmljZS5jb250ZW50RGVuc2l0eTtcclxuICAgICAgICB0aGlzLmRldmljZVNpemUkID0gX3BvcnRhbFNlcnZpY2UuZGV2aWNlU2l6ZSQ7XHJcbiAgICAgICAgdGhpcy5kaXJWYWx1ZSQgPSBfcG9ydGFsU2VydmljZS5kaXJWYWx1ZSQ7XHJcbiAgICAgICAgdGhpcy5ydGwkID0gX3BvcnRhbFNlcnZpY2UucnRsJDtcclxuICAgICAgICB0aGlzLmNhblNlbmQkID0gdGhpcy5fZm9ybVBhbmVsU2VydmljZS5jYW5TZW5kJDtcclxuICAgICAgICB0aGlzLl9mb3JtUGFuZWxTZXJ2aWNlLm1vJC5zdWJzY3JpYmUoKGMpID0+ICh0aGlzLl90eXBlRGVmTmFtZSA9IGM/LiRUeXBlRGVmTmFtZSA/PyAnJykpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJpc1NlYXJjaFBhbmVsIHx8IChpc1NpbXBsZSQgfCBhc3luYykgfHwgaXNTdWJGb3JtIHx8IGlzTW9kYWwgfHwgaXNGb3JtUmVwb3J0OyBlbHNlIGR5bmFtaWNQYWdlXCI+XHJcbiAgICA8YnN1LW1hc2sgKm5nSWY9XCJtYXNrJCB8IGFzeW5jXCI+IDwvYnN1LW1hc2s+XHJcbiAgICA8ZGl2PlxyXG4gICAgICAgIDxic3UtbHktbGF5b3V0LWNvbnRhaW5lci1vZi1yb290XHJcbiAgICAgICAgICAgIFtjb25maWddPVwibGF5b3V0OTQkIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICBbaXNQYW5lbF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIFtpc1Jvb3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgPjwvYnN1LWx5LWxheW91dC1jb250YWluZXItb2Ytcm9vdD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwid29ya2Zsb3ctYnV0dG9uc1wiICpuZ0lmPVwidG9vbGJhckl0ZW1zJCB8IGFzeW5jIGFzIHRvb2xiYXJJdGVtc1wiPlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxic3UtbGF5b3V0LWFjdGlvbnNcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogZmxleDsgY29sdW1uLWdhcDogMXJlbVwiXHJcbiAgICAgICAgICAgICAgICBbc2ltcGxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2J1dHRvbnNdPVwiW11cIlxyXG4gICAgICAgICAgICAgICAgW3dvcmtmbG93QnV0dG9uc109XCJ0b29sYmFySXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgKHRvb2xDbGljayk9XCJvblRvb2xiYXJDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L2JzdS1sYXlvdXQtYWN0aW9ucz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSA8ZGl2IGZkLWJhciBiYXJEZXNpZ249XCJmbG9hdGluZy1mb290ZXJcIj5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJjb250ZXh0LldvcmtmbG93UGFuZWxVaVwiXHJcbiAgICAgIGZkLWJhci1yaWdodFxyXG4gICAgICBbZm9vdGVyQWN0aW9uc109XCJjb250ZXh0LldvcmtmbG93UGFuZWxVaVwiXHJcbiAgICA+PC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgIWNvbnRleHQuV29ya2Zsb3dQYW5lbFVpICYmXHJcbiAgICAgICAgc2hvd1Rvb2xiYXIgJiZcclxuICAgICAgICBcclxuICAgICAgICB0b29sYmFyLml0ZW1zLmxlbmd0aCA+IDBcclxuICAgICAgXCJcclxuICAgICAgZmQtYmFyLXJpZ2h0XHJcbiAgICAgIFtmb290ZXJBY3Rpb25zXT1cInRvb2xiYXJcIlxyXG4gICAgPjwvZGl2PlxyXG4gIDwvZGl2PiAtLT5cclxuPC9uZy1jb250YWluZXI+XHJcbjxuZy10ZW1wbGF0ZSAjZHluYW1pY1BhZ2U+XHJcbiAgICA8YnN1LWZ1bmRhbWVudGFsLWR5bmFtaWMtZm9ybVxyXG4gICAgICAgIFtzdHlsZS5wb3NpdGlvbl09XCIobWFzayQgfCBhc3luYykgPyAncmVsYXRpdmUnIDogbnVsbFwiXHJcbiAgICAgICAgW2NhblNlbmRdPVwiKGNhblNlbmQkIHwgYXN5bmMpID09PSB0cnVlXCJcclxuICAgICAgICBbcmVtb3ZlQ29udGVudFBhZGRpbmddPVwiKGhlYWRlclJlbW92ZUNvbnRlbnRQYWRkaW5nJCB8IGFzeW5jKSEhXCJcclxuICAgICAgICBbYnJlYWRDcnVtYnNdPVwiYnJlYWRDcnVtYnMkIHwgYXN5bmNcIlxyXG4gICAgICAgIFtkZXNjcmlwdGlvbl09XCIoaGVhZGVyRGVzY3JpcHRpb24kIHwgYXN5bmMpISFcIlxyXG4gICAgICAgIFtoaWRlQ2xvc2VdPVwiKGhpZGVDbG9zZSQgfCBhc3luYykhIVwiXHJcbiAgICAgICAgW2hpZGVUaXRsZV09XCIoaGlkZVRpdGxlJCB8IGFzeW5jKSEhXCJcclxuICAgICAgICBbaGlkZVBpbl09XCIoaGlkZVBpbiQgfCBhc3luYykhIVwiXHJcbiAgICAgICAgW3RpdGxlXT1cIih0aXRsZSQgfCBhc3luYykhIVwiXHJcbiAgICAgICAgW3N1YnRpdGxlXT1cIihoZWFkZXJTdWJ0aXRsZSQgfCBhc3luYykhIVwiXHJcbiAgICAgICAgW3Rvb2xiYXJJdGVtc109XCJ0b29sYmFySXRlbXMkIHwgYXN5bmMgfCB0bGJCdXR0b25zOiAnaW5Gb290ZXInOmZhbHNlXCJcclxuICAgICAgICBbbGF5b3V0QWN0aW9uc109XCJ0b29sYmFySXRlbXMkIHwgYXN5bmMgfCB0bGJCdXR0b25zOiAnaW5Gb290ZXInOnRydWVcIlxyXG4gICAgICAgIFt0b29sYmFyVmlzaWJsZV09XCIodG9vbGJhclZpc2libGUkIHwgYXN5bmMpISFcIlxyXG4gICAgICAgIFtmYWNldExpc3RdPVwiKGhlYWRlckxheW91dCQgfCBhc3luYyk/LkZhY2V0TGlzdDJcIlxyXG4gICAgICAgIFtwYXJhbWV0ZXJzXT1cInBhcmFtZXRlcnNcIlxyXG4gICAgICAgIFt3b3JrZmxvd1BhbmVsVWldPVwid29ya2Zsb3dQYW5lbFVpJCB8IGFzeW5jXCJcclxuICAgICAgICBbaXNNb2JpbGVdPVwiaXNNb2JpbGVcIlxyXG4gICAgICAgIFtsYXlvdXQ5NF09XCJsYXlvdXQ5NCQgfCBhc3luY1wiXHJcbiAgICAgICAgW3J0bF09XCIocnRsJCB8IGFzeW5jKSEhXCJcclxuICAgICAgICBbbWFza109XCIobWFzayQgfCBhc3luYykhIVwiXHJcbiAgICAgICAgW21vXT1cIihtbyQgfCBhc3luYykhIVwiXHJcbiAgICAgICAgW2RpclZhbHVlXT1cIihkaXJWYWx1ZSQgfCBhc3luYykhIVwiXHJcbiAgICAgICAgW2RldmljZVNpemVdPVwiKGRldmljZVNpemUkIHwgYXN5bmMpISFcIlxyXG4gICAgICAgIFtjb250ZW50RGVuc2l0eV09XCIoY29udGVudERlbnNpdHkkIHwgYXN5bmMpISFcIlxyXG4gICAgICAgIFttb2Rlcm5UYWJzXT1cIihtb2Rlcm5UYWJzJCB8IGFzeW5jKSEhXCJcclxuICAgICAgICBbYXZhdGFyXT1cIihhdmF0YXIkIHwgYXN5bmMpISFcIlxyXG4gICAgICAgIFtmaWVsZERpY3RdPVwiKGZpZWxkRGljdCQgfCBhc3luYykhIVwiXHJcbiAgICAgICAgKGNsb3NlKT1cIm9uQ2xvc2UoKVwiXHJcbiAgICAgICAgKHRvb2xiYXJDbGljayk9XCJvblRvb2xiYXJDbGljaygkZXZlbnQpXCJcclxuICAgICAgICBbY29udGVudElzUGFnZV09XCJwYXJhbWV0ZXJzPy5Db250ZW50SXNQYWdlXCJcclxuICAgICAgICAod29ya2Zsb3dDaG9pY2VDbGljayk9XCJvbldvcmtmbG93Q2hvaWNlQ2xpY2soJGV2ZW50KVwiXHJcbiAgICA+PC9ic3UtZnVuZGFtZW50YWwtZHluYW1pYy1mb3JtPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktZm9ybS1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS1mb3JtLXBhbmVsL3VpLWZvcm0tcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktZm9ybS1wYW5lbC91aS1mb3JtLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUl0RixPQUFPLEVBQ0gsaUJBQWlCLEVBR2pCLGdCQUFnQixFQUVuQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7O0FBVTlCLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxpQkFBaUI7SUFRdkQsWUFDYyxrQkFBcUMsRUFDckMsc0JBQTZDLEVBQzdDLGNBQTZCLEVBQzdCLGVBQStCLEVBQy9CLE9BQWUsRUFDUCxpQkFBbUMsQ0FBQyx1Q0FBdUM7O1FBRTdGLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBUGYsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXVCO1FBQzdDLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUMvQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ1Asc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQWJ4QixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQWdCL0MsSUFBSSxDQUFDLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxZQUFZLENBQUM7UUFDcEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxzQkFBc0IsQ0FBQyxjQUFjLENBQUM7UUFDN0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxjQUFjLENBQUMsV0FBVyxDQUFDO1FBQzlDLElBQUksQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQztRQUMxQyxJQUFJLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDO1FBQ2hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUFFLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdGLENBQUM7O2lIQXhCUSxvQkFBb0I7cUdBQXBCLG9CQUFvQiwrR0FGbEIsQ0FBQyxnQkFBZ0IsQ0FBQyxpRENsQmpDLDQ3RkF5RUE7MkZEckRhLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDSSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLGdCQUFnQixDQUFDOzswQkFnQnhCLElBQUk7NENBYndCLFlBQVk7c0JBQTVDLFdBQVc7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eSwgQ29udGVudERlbnNpdHlTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBGb3JtQmFzZUNvbXBvbmVudCxcclxuICAgIFBvcnRhbFNlcnZpY2UsXHJcbiAgICBCcmVhZENydW1iSW5mbyxcclxuICAgIEZvcm1QYW5lbFNlcnZpY2UsXHJcbiAgICBCcmVhZGNydW1iU2VydmljZVxyXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnN1LXVpLWZvcm0tcGFuZWwnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3VpLWZvcm0tcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdWktZm9ybS1wYW5lbC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBwcm92aWRlcnM6IFtGb3JtUGFuZWxTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlGb3JtUGFuZWxDb21wb25lbnQgZXh0ZW5kcyBGb3JtQmFzZUNvbXBvbmVudCB7XHJcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudHlwZURlZk5hbWUnKSBfdHlwZURlZk5hbWUgPSAnJztcclxuICAgIGJyZWFkQ3J1bWJzJDogT2JzZXJ2YWJsZTxCcmVhZENydW1iSW5mb1tdPjtcclxuICAgIGNvbnRlbnREZW5zaXR5JDogT2JzZXJ2YWJsZTxDb250ZW50RGVuc2l0eT47XHJcbiAgICBkZXZpY2VTaXplJDogT2JzZXJ2YWJsZTwncycgfCAnbScgfCAnbCcgfCAneGwnPjtcclxuICAgIGRpclZhbHVlJDogT2JzZXJ2YWJsZTwncnRsJyB8ICdsdHInPjtcclxuICAgIHJ0bCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgICBjYW5TZW5kJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCBfYnJlYWRjcnVtYlNlcnZpY2U6IEJyZWFkY3J1bWJTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfY29udGVudERlbnNpdHlTZXJ2aWNlOiBDb250ZW50RGVuc2l0eVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9wb3J0YWxTZXJ2aWNlOiBQb3J0YWxTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgQFNlbGYoKSBwcm90ZWN0ZWQgX2Zvcm1QYW5lbFNlcnZpY2U6IEZvcm1QYW5lbFNlcnZpY2UgLy8gcHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihfZm9ybVBhbmVsU2VydmljZSk7XHJcbiAgICAgICAgdGhpcy5icmVhZENydW1icyQgPSBfYnJlYWRjcnVtYlNlcnZpY2UuYnJlYWRjcnVtYnMkO1xyXG4gICAgICAgIHRoaXMuY29udGVudERlbnNpdHkkID0gX2NvbnRlbnREZW5zaXR5U2VydmljZS5jb250ZW50RGVuc2l0eTtcclxuICAgICAgICB0aGlzLmRldmljZVNpemUkID0gX3BvcnRhbFNlcnZpY2UuZGV2aWNlU2l6ZSQ7XHJcbiAgICAgICAgdGhpcy5kaXJWYWx1ZSQgPSBfcG9ydGFsU2VydmljZS5kaXJWYWx1ZSQ7XHJcbiAgICAgICAgdGhpcy5ydGwkID0gX3BvcnRhbFNlcnZpY2UucnRsJDtcclxuICAgICAgICB0aGlzLmNhblNlbmQkID0gdGhpcy5fZm9ybVBhbmVsU2VydmljZS5jYW5TZW5kJDtcclxuICAgICAgICB0aGlzLl9mb3JtUGFuZWxTZXJ2aWNlLm1vJC5zdWJzY3JpYmUoKGMpID0+ICh0aGlzLl90eXBlRGVmTmFtZSA9IGM/LiRUeXBlRGVmTmFtZSA/PyAnJykpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJpc1NlYXJjaFBhbmVsIHx8IChpc1NpbXBsZSQgfCBhc3luYykgfHwgaXNTdWJGb3JtIHx8IGlzTW9kYWwgfHwgaXNGb3JtUmVwb3J0OyBlbHNlIGR5bmFtaWNQYWdlXCI+XG4gICAgPGJzdS1tYXNrICpuZ0lmPVwibWFzayQgfCBhc3luY1wiPiA8L2JzdS1tYXNrPlxuICAgIDxkaXY+XG4gICAgICAgIDxic3UtbHktbGF5b3V0LWNvbnRhaW5lci1vZi1yb290XG4gICAgICAgICAgICBbY29uZmlnXT1cImxheW91dDk0JCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtpc1BhbmVsXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtpc1Jvb3RdPVwidHJ1ZVwiXG4gICAgICAgID48L2JzdS1seS1sYXlvdXQtY29udGFpbmVyLW9mLXJvb3Q+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3b3JrZmxvdy1idXR0b25zXCIgKm5nSWY9XCJ3b3JrZmxvd0J1dHRvbnMkIHwgYXN5bmMgYXMgd29ya2Zsb3dCdXR0b25zXCI+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxXCI+PC9kaXY+XG4gICAgICAgICAgICA8YnN1LWxheW91dC1hY3Rpb25zXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBjb2x1bW4tZ2FwOiAxcmVtXCJcbiAgICAgICAgICAgICAgICBbc2ltcGxlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtidXR0b25zXT1cIltdXCJcbiAgICAgICAgICAgICAgICBbd29ya2Zsb3dCdXR0b25zXT1cIndvcmtmbG93QnV0dG9uc1wiXG4gICAgICAgICAgICAgICAgKHRvb2xDbGljayk9XCJvblRvb2xiYXJDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvYnN1LWxheW91dC1hY3Rpb25zPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIDxkaXYgZmQtYmFyIGJhckRlc2lnbj1cImZsb2F0aW5nLWZvb3RlclwiPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiY29udGV4dC5Xb3JrZmxvd1BhbmVsVWlcIlxuICAgICAgZmQtYmFyLXJpZ2h0XG4gICAgICBbZm9vdGVyQWN0aW9uc109XCJjb250ZXh0LldvcmtmbG93UGFuZWxVaVwiXG4gICAgPjwvZGl2PlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgICFjb250ZXh0LldvcmtmbG93UGFuZWxVaSAmJlxuICAgICAgICBzaG93VG9vbGJhciAmJlxuICAgICAgICBcbiAgICAgICAgdG9vbGJhci5pdGVtcy5sZW5ndGggPiAwXG4gICAgICBcIlxuICAgICAgZmQtYmFyLXJpZ2h0XG4gICAgICBbZm9vdGVyQWN0aW9uc109XCJ0b29sYmFyXCJcbiAgICA+PC9kaXY+XG4gIDwvZGl2PiAtLT5cbjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICNkeW5hbWljUGFnZT5cbiAgICA8YnN1LWZ1bmRhbWVudGFsLWR5bmFtaWMtZm9ybVxuICAgICAgICBbc3R5bGUucG9zaXRpb25dPVwiKG1hc2skIHwgYXN5bmMpID8gJ3JlbGF0aXZlJyA6IG51bGxcIlxuICAgICAgICBbY2FuU2VuZF09XCIoY2FuU2VuZCQgfCBhc3luYykgPT09IHRydWVcIlxuICAgICAgICBbcmVtb3ZlQ29udGVudFBhZGRpbmddPVwiKGhlYWRlclJlbW92ZUNvbnRlbnRQYWRkaW5nJCB8IGFzeW5jKSEhXCJcbiAgICAgICAgW2JyZWFkQ3J1bWJzXT1cImJyZWFkQ3J1bWJzJCB8IGFzeW5jXCJcbiAgICAgICAgW2Rlc2NyaXB0aW9uXT1cIihoZWFkZXJEZXNjcmlwdGlvbiQgfCBhc3luYykhIVwiXG4gICAgICAgIFtoaWRlQ2xvc2VdPVwiKGhpZGVDbG9zZSQgfCBhc3luYykhIVwiXG4gICAgICAgIFtoaWRlVGl0bGVdPVwiKGhpZGVUaXRsZSQgfCBhc3luYykhIVwiXG4gICAgICAgIFtoaWRlUGluXT1cIihoaWRlUGluJCB8IGFzeW5jKSEhXCJcbiAgICAgICAgW3RpdGxlXT1cIih0aXRsZSQgfCBhc3luYykhIVwiXG4gICAgICAgIFtzdWJ0aXRsZV09XCIoaGVhZGVyU3VidGl0bGUkIHwgYXN5bmMpISFcIlxuICAgICAgICBbdG9vbGJhckl0ZW1zXT1cInRvb2xiYXJJdGVtcyQgfCBhc3luYyB8IHRsYkJ1dHRvbnM6ICdpbkZvb3Rlcic6ZmFsc2VcIlxuICAgICAgICBbbGF5b3V0QWN0aW9uc109XCJ0b29sYmFySXRlbXMkIHwgYXN5bmMgfCB0bGJCdXR0b25zOiAnaW5Gb290ZXInOnRydWVcIlxuICAgICAgICBbdG9vbGJhclZpc2libGVdPVwiKHRvb2xiYXJWaXNpYmxlJCB8IGFzeW5jKSEhXCJcbiAgICAgICAgW2ZhY2V0TGlzdF09XCIoaGVhZGVyTGF5b3V0JCB8IGFzeW5jKT8uRmFjZXRMaXN0MlwiXG4gICAgICAgIFtwYXJhbWV0ZXJzXT1cInBhcmFtZXRlcnNcIlxuICAgICAgICBbd29ya2Zsb3dQYW5lbFVpXT1cIndvcmtmbG93UGFuZWxVaSQgfCBhc3luY1wiXG4gICAgICAgIFtpc01vYmlsZV09XCJpc01vYmlsZVwiXG4gICAgICAgIFtsYXlvdXQ5NF09XCJsYXlvdXQ5NCQgfCBhc3luY1wiXG4gICAgICAgIFtydGxdPVwiKHJ0bCQgfCBhc3luYykhIVwiXG4gICAgICAgIFttYXNrXT1cIihtYXNrJCB8IGFzeW5jKSEhXCJcbiAgICAgICAgW21vXT1cIihtbyQgfCBhc3luYykhIVwiXG4gICAgICAgIFtkaXJWYWx1ZV09XCIoZGlyVmFsdWUkIHwgYXN5bmMpISFcIlxuICAgICAgICBbZGV2aWNlU2l6ZV09XCIoZGV2aWNlU2l6ZSQgfCBhc3luYykhIVwiXG4gICAgICAgIFtjb250ZW50RGVuc2l0eV09XCIoY29udGVudERlbnNpdHkkIHwgYXN5bmMpISFcIlxuICAgICAgICBbbW9kZXJuVGFic109XCIobW9kZXJuVGFicyQgfCBhc3luYykhIVwiXG4gICAgICAgIFthdmF0YXJdPVwiKGF2YXRhciQgfCBhc3luYykhIVwiXG4gICAgICAgIFtmaWVsZERpY3RdPVwiKGZpZWxkRGljdCQgfCBhc3luYykhIVwiXG4gICAgICAgIChjbG9zZSk9XCJvbkNsb3NlKClcIlxuICAgICAgICAodG9vbGJhckNsaWNrKT1cIm9uVG9vbGJhckNsaWNrKCRldmVudClcIlxuICAgICAgICBbY29udGVudElzUGFnZV09XCJwYXJhbWV0ZXJzPy5Db250ZW50SXNQYWdlXCJcbiAgICAgICAgKHdvcmtmbG93Q2hvaWNlQ2xpY2spPVwib25Xb3JrZmxvd0Nob2ljZUNsaWNrKCRldmVudClcIlxuICAgID48L2JzdS1mdW5kYW1lbnRhbC1keW5hbWljLWZvcm0+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -87,10 +87,10 @@ export class UiTableViewComponent extends ReportViewBaseComponent {
87
87
  }
88
88
  }
89
89
  UiTableViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiTableViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
90
- UiTableViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiTableViewComponent, selector: "bsu-ui-table-view", inputs: { columnWidth: "columnWidth", minWidth: "minWidth", minHeight: "minHeight", rowResizer: "rowResizer", enableResizing: "enableResizing" }, host: { properties: { "style.height.px": "this.height", "style.max-height": "this.maxHeight" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<table\n fd-table\n [popIn]=\"popin\"\n [class.fixed]=\"!contextView?.Grid_HideHeader && (!popin || secondaryColumns.length === 0)\"\n [noBorderX]=\"viewSetting?.NoVerticalBorders === true || (popin && secondaryColumns.length > 0)\"\n [noBorderY]=\"viewSetting?.NoHoriztonalBorders === true || (popin && secondaryColumns.length > 0)\"\n tableResizer\n [fitWidth]=\"fitWidth\"\n (columnResized)=\"onColumnResized($event)\"\n [containerWidth]=\"containerWidth\"\n [minWidth]=\"30\"\n [minHeight]=\"22\"\n [rowResizer]=\"rowResizer\"\n [enableResizing]=\"enableResizing\"\n>\n <ng-container\n *ngIf=\"columns | mergeFieldsToColumns: viewSetting?.MergeFieldsToColumns?.MoDataList as mergeFieldsToColumns\"\n >\n <ng-container *ngTemplateOutlet=\"headerTemplate; context: { $implicit: mergeFieldsToColumns }\"></ng-container>\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: { $implicit: mergeFieldsToColumns }\"></ng-container>\n <ng-container *ngTemplateOutlet=\"footerTemplate; context: { $implicit: mergeFieldsToColumns }\"></ng-container>\n </ng-container>\n</table>\n<ng-template #headerTemplate let-columns>\n <bsu-barsa-table-header\n [tableWidth]=\"elWidth\"\n [showDetailsInRow]=\"showDetailsInRow\"\n [hideOpenIcon]=\"hideOpenIcon\"\n [resizedByUser]=\"resizedByUser\"\n [allChecked]=\"allChecked\"\n [disableResponsive]=\"disableResponsive\"\n [isCheckList]=\"isCheckList\"\n [columns]=\"columns | filterColumnsByDetails: detailsColumns\"\n [fitWidth]=\"fitWidth\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [inlineEditMode]=\"inlineEditMode\"\n [contextMenuItems]=\"contextMenuItems\"\n [canView]=\"canView\"\n [viewSetting]=\"viewSetting\"\n [hideHeader]=\"contextView.Grid_HideHeader\"\n (allCheckbox)=\"onAllCheckbox($event)\"\n (sortAscending)=\"onSortAscending($event)\"\n (sortDescending)=\"onSortDescending($event)\"\n (filter)=\"onFilter($event)\"\n ></bsu-barsa-table-header>\n</ng-template>\n<ng-template #bodyTemplate let-columns>\n <tbody\n fd-table-body\n [noBorderX]=\"popin && secondaryColumns.length > 0\"\n [noBorderY]=\"popin && secondaryColumns.length > 0\"\n >\n <ng-container *ngIf=\"moDataList && moDataList.length > 0; else noData\">\n <ng-container\n *ngFor=\"let mo of moDataList | multipleGroupBy: groupby; let index = index; trackBy: _trackByRow\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n rowTemplate;\n context: { $implicit: mo, index: index, columns: columns, moDataListCount: moDataList.length }\n \"\n ></ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n</ng-template>\n<ng-template #footerTemplate let-columns>\n <tfoot fd-table-footer *ngIf=\"hasSummary\">\n <tr fd-table-row class=\"row-summary\">\n <td fd-table-cell *ngIf=\"isCheckList\" columnResizer>\n <strong class=\"col-total-text\">{{ 'Total' | bbbTranslate }}</strong>\n </td>\n <td fd-table-cell *ngIf=\"!isCheckList\" class=\"single-select\">\n <strong class=\"col-total-text\">{{ 'Total' | bbbTranslate }}</strong>\n </td>\n <td *ngFor=\"let column of columns; let i = index\">\n <ng-container *ngIf=\"column.HasSummary\">\n <strong style=\"direction: ltr; display: block\">\n {{ moDataList | totalSummary: column.Name | number }}</strong\n >\n </ng-container>\n </td>\n <ng-container *ngIf=\"contextMenuItems && contextMenuItems.length > 0\">\n <td fd-table-cell style=\"width: 100px\"></td>\n </ng-container>\n <td fd-table-cell *ngIf=\"canView\"></td>\n </tr>\n </tfoot>\n</ng-template>\n<ng-template #rowTemplate let-mo let-index=\"index\" let-columns=\"columns\" let-moDataListCount=\"moDataListCount\">\n <bsu-barsa-table-row\n [mo]=\"mo\"\n [showDetailsInRow]=\"showDetailsInRow\"\n [hideOpenIcon]=\"hideOpenIcon\"\n [detailsColumns]=\"detailsColumns\"\n [cartableTemplate]=\"cartableTemplates[mo.RelatedMo?.$TypeDefId]\"\n [cartableMo]=\"mo.RelatedMo\"\n [cartableWorkflowData]=\"mo.SerializedWorkflowData\"\n [detailsText]=\"viewSetting?.DetailsSetting?.ButtonText\"\n [detailsComponent]=\"detailsComponent\"\n [isChecked]=\"mo.$IsChecked\"\n [visibility]=\"mo.$Visibility\"\n [expanded]=\"mo.$Expanded\"\n [level]=\"mo.$Level\"\n [parentExpanded]=\"mo.$Parent?.$Expanded\"\n [moDataListCount]=\"moDataListCount\"\n [columnsCount]=\"columnsCount - detailsColumns.length\"\n [typeDefId]=\"typeDefId\"\n [extraRelation]=\"extraRelation\"\n [formSetting]=\"formSetting\"\n [index]=\"index\"\n [setting]=\"viewSetting\"\n [secondaryColumns]=\"secondaryColumns | filterColumnsByDetails: detailsColumns\"\n [columns]=\"columns | filterColumnsByDetails: detailsColumns\"\n [isNewInlineMo]=\"mo.$NewInlineMo\"\n [access]=\"access\"\n [inlineEditMode]=\"inlineEditMode\"\n [allowInlineEdit]=\"allowInlineEdit\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [index]=\"index\"\n [allColumns]=\"allColumns\"\n [contextMenuItems]=\"contextMenuItems\"\n [canView]=\"canView\"\n [conditionalFormats]=\"conditionalFormats\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [navigationArrow]=\"navigationArrow\"\n [isCheckList]=\"isCheckList\"\n (expandClick)=\"onExpandClick($event)\"\n (rowCheck)=\"onRowCheck($event)\"\n (rowClick)=\"onRowClick($event)\"\n (ulvCommand)=\"onUlvCommand($event)\"\n (selectNextInlineRecord)=\"onSelectNextInlineRecord($event)\"\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\n (editFormPanelCancel)=\"onEditFormPanelCancel($event)\"\n (editFormPanelValueChange)=\"onEditFormPanelValueChange($event)\"\n (cartableFormClosed)=\"onCartableFormClosed($event)\"\n >\n </bsu-barsa-table-row>\n</ng-template>\n<!--renderColumn-->\n<ng-template #noData>\n <tr *ngIf=\"!inlineEditMode || !newInlineEditMo\">\n <td colspan=\"100%\" style=\"padding: 10px\">{{ 'NoData' | bbbTranslate }}</td>\n </tr>\n</ng-template>\n", styles: [":host{display:block;width:100%;overflow-x:auto;max-width:100vw}table{margin-bottom:5px}table.fixed{table-layout:fixed}table.fixed td{overflow:hidden}tr td{font-weight:inherit}::ng-deep span.fd-toolbar__spacer{display:none}.row-summary{position:relative}.row-summary .col-total-text{position:absolute;top:25%}\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: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.TableResizerDirective, selector: "[tableResizer]", inputs: ["fitWidth", "minWidth", "minHeight", "containerWidth", "rowResizer", "enableResizing"], outputs: ["columnResized"] }, { kind: "directive", type: i2.ColumnResizerDirective, selector: "[columnResizer]", inputs: ["disableResizer"] }, { kind: "component", type: i3.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i3.TableFooterDirective, selector: "[fdTableFooter], [fd-table-footer]" }, { kind: "directive", type: i3.TableBodyDirective, selector: "[fdTableBody], [fd-table-body]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i3.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i3.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "tabindex", "hoverable", "fitContent", "noPadding", "noData", "key", "cellFocusedEventAnnouncer"] }, { kind: "component", type: i4.BarsaTableHeaderComponent, selector: "bsu-barsa-table-header", inputs: ["allChecked", "isCheckList", "columns", "fitWidth", "contextMenuItems", "canView", "hideOpenIcon", "disableOverflowContextMenu", "inlineEditMode", "hideHeader", "showDetailsInRow", "viewSetting", "tableWidth", "resizedByUser", "disableResponsive"], outputs: ["allCheckbox", "sortAscending", "sortDescending", "filter"] }, { kind: "component", type: i5.BarsaTableRowComponent, selector: "bsu-barsa-table-row", inputs: ["showDetailsInRow", "detailsComponent", "detailsColumns", "detailsText", "columnComponents"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i2.MultipleGroupByPipe, name: "multipleGroupBy" }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i2.TotalSummaryPipe, name: "totalSummary" }, { kind: "pipe", type: i2.MergeFieldsToColumnsPipe, name: "mergeFieldsToColumns" }, { kind: "pipe", type: i2.FilterColumnsByDetailsPipe, name: "filterColumnsByDetails" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
90
+ UiTableViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiTableViewComponent, selector: "bsu-ui-table-view", inputs: { columnWidth: "columnWidth", minWidth: "minWidth", minHeight: "minHeight", rowResizer: "rowResizer", enableResizing: "enableResizing" }, host: { properties: { "style.height.px": "this.height", "style.max-height": "this.maxHeight" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<table\r\n fd-table\r\n [popIn]=\"popin\"\r\n [class.fixed]=\"!contextView?.Grid_HideHeader && (!popin || secondaryColumns.length === 0)\"\r\n [noBorderX]=\"viewSetting?.NoVerticalBorders === true || (popin && secondaryColumns.length > 0)\"\r\n [noBorderY]=\"viewSetting?.NoHoriztonalBorders === true || (popin && secondaryColumns.length > 0)\"\r\n tableResizer\r\n [fitWidth]=\"fitWidth\"\r\n (columnResized)=\"onColumnResized($event)\"\r\n [containerWidth]=\"containerWidth\"\r\n [minWidth]=\"30\"\r\n [minHeight]=\"22\"\r\n [rowResizer]=\"rowResizer\"\r\n [enableResizing]=\"enableResizing\"\r\n>\r\n <ng-container\r\n *ngIf=\"columns | mergeFieldsToColumns: viewSetting?.MergeFieldsToColumns?.MoDataList as mergeFieldsToColumns\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"headerTemplate; context: { $implicit: mergeFieldsToColumns }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: { $implicit: mergeFieldsToColumns }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"footerTemplate; context: { $implicit: mergeFieldsToColumns }\"></ng-container>\r\n </ng-container>\r\n</table>\r\n<ng-template #headerTemplate let-columns>\r\n <bsu-barsa-table-header\r\n [tableWidth]=\"elWidth\"\r\n [showDetailsInRow]=\"showDetailsInRow\"\r\n [hideOpenIcon]=\"hideOpenIcon\"\r\n [resizedByUser]=\"resizedByUser\"\r\n [allChecked]=\"allChecked\"\r\n [disableResponsive]=\"disableResponsive\"\r\n [isCheckList]=\"isCheckList\"\r\n [columns]=\"columns | filterColumnsByDetails: detailsColumns\"\r\n [fitWidth]=\"fitWidth\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [contextMenuItems]=\"contextMenuItems\"\r\n [canView]=\"canView\"\r\n [viewSetting]=\"viewSetting\"\r\n [hideHeader]=\"contextView.Grid_HideHeader\"\r\n (allCheckbox)=\"onAllCheckbox($event)\"\r\n (sortAscending)=\"onSortAscending($event)\"\r\n (sortDescending)=\"onSortDescending($event)\"\r\n (filter)=\"onFilter($event)\"\r\n ></bsu-barsa-table-header>\r\n</ng-template>\r\n<ng-template #bodyTemplate let-columns>\r\n <tbody\r\n fd-table-body\r\n [noBorderX]=\"popin && secondaryColumns.length > 0\"\r\n [noBorderY]=\"popin && secondaryColumns.length > 0\"\r\n >\r\n <ng-container *ngIf=\"moDataList && moDataList.length > 0; else noData\">\r\n <ng-container\r\n *ngFor=\"let mo of moDataList | multipleGroupBy: groupby; let index = index; trackBy: _trackByRow\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n rowTemplate;\r\n context: { $implicit: mo, index: index, columns: columns, moDataListCount: moDataList.length }\r\n \"\r\n ></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n</ng-template>\r\n<ng-template #footerTemplate let-columns>\r\n <tfoot fd-table-footer *ngIf=\"hasSummary\">\r\n <tr fd-table-row class=\"row-summary\">\r\n <td fd-table-cell *ngIf=\"isCheckList\" columnResizer>\r\n <strong class=\"col-total-text\">{{ 'Total' | bbbTranslate }}</strong>\r\n </td>\r\n <td fd-table-cell *ngIf=\"!isCheckList\" class=\"single-select\">\r\n <strong class=\"col-total-text\">{{ 'Total' | bbbTranslate }}</strong>\r\n </td>\r\n <td *ngFor=\"let column of columns; let i = index\">\r\n <ng-container *ngIf=\"column.HasSummary\">\r\n <strong style=\"direction: ltr; display: block\">\r\n {{ moDataList | totalSummary: column.Name | number }}</strong\r\n >\r\n </ng-container>\r\n </td>\r\n <ng-container *ngIf=\"contextMenuItems && contextMenuItems.length > 0\">\r\n <td fd-table-cell style=\"width: 100px\"></td>\r\n </ng-container>\r\n <td fd-table-cell *ngIf=\"canView\"></td>\r\n </tr>\r\n </tfoot>\r\n</ng-template>\r\n<ng-template #rowTemplate let-mo let-index=\"index\" let-columns=\"columns\" let-moDataListCount=\"moDataListCount\">\r\n <bsu-barsa-table-row\r\n [mo]=\"mo\"\r\n [showDetailsInRow]=\"showDetailsInRow\"\r\n [hideOpenIcon]=\"hideOpenIcon\"\r\n [detailsColumns]=\"detailsColumns\"\r\n [cartableTemplate]=\"cartableTemplates[mo.RelatedMo?.$TypeDefId]\"\r\n [cartableMo]=\"mo.RelatedMo\"\r\n [cartableWorkflowData]=\"mo.SerializedWorkflowData\"\r\n [serializedRelatedMo]=\"mo.SerializedRelatedMo\"\r\n [detailsText]=\"viewSetting?.DetailsSetting?.ButtonText\"\r\n [detailsComponent]=\"detailsComponent\"\r\n [isChecked]=\"mo.$IsChecked\"\r\n [visibility]=\"mo.$Visibility\"\r\n [expanded]=\"mo.$Expanded\"\r\n [level]=\"mo.$Level\"\r\n [parentExpanded]=\"mo.$Parent?.$Expanded\"\r\n [moDataListCount]=\"moDataListCount\"\r\n [columnsCount]=\"columnsCount - detailsColumns.length\"\r\n [typeDefId]=\"typeDefId\"\r\n [extraRelation]=\"extraRelation\"\r\n [formSetting]=\"formSetting\"\r\n [index]=\"index\"\r\n [setting]=\"viewSetting\"\r\n [secondaryColumns]=\"secondaryColumns | filterColumnsByDetails: detailsColumns\"\r\n [columns]=\"columns | filterColumnsByDetails: detailsColumns\"\r\n [isNewInlineMo]=\"mo.$NewInlineMo\"\r\n [access]=\"access\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [allowInlineEdit]=\"allowInlineEdit\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [index]=\"index\"\r\n [allColumns]=\"allColumns\"\r\n [contextMenuItems]=\"contextMenuItems\"\r\n [canView]=\"canView\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [navigationArrow]=\"navigationArrow\"\r\n [isCheckList]=\"isCheckList\"\r\n (expandClick)=\"onExpandClick($event)\"\r\n (rowCheck)=\"onRowCheck($event)\"\r\n (rowClick)=\"onRowClick($event)\"\r\n (ulvCommand)=\"onUlvCommand($event)\"\r\n (selectNextInlineRecord)=\"onSelectNextInlineRecord($event)\"\r\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\r\n (editFormPanelCancel)=\"onEditFormPanelCancel($event)\"\r\n (editFormPanelValueChange)=\"onEditFormPanelValueChange($event)\"\r\n (cartableFormClosed)=\"onCartableFormClosed($event)\"\r\n >\r\n </bsu-barsa-table-row>\r\n</ng-template>\r\n<!--renderColumn-->\r\n<ng-template #noData>\r\n <tr *ngIf=\"!inlineEditMode || !newInlineEditMo\">\r\n <td colspan=\"100%\" style=\"padding: 10px\">{{ 'NoData' | bbbTranslate }}</td>\r\n </tr>\r\n</ng-template>\r\n", styles: [":host{display:block;width:100%;overflow-x:auto;max-width:100vw}table{margin-bottom:5px}table.fixed{table-layout:fixed}table.fixed td{overflow:hidden}tr td{font-weight:inherit}::ng-deep span.fd-toolbar__spacer{display:none}.row-summary{position:relative}.row-summary .col-total-text{position:absolute;top:25%}\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: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.TableResizerDirective, selector: "[tableResizer]", inputs: ["fitWidth", "minWidth", "minHeight", "containerWidth", "rowResizer", "enableResizing"], outputs: ["columnResized"] }, { kind: "directive", type: i2.ColumnResizerDirective, selector: "[columnResizer]", inputs: ["disableResizer"] }, { kind: "component", type: i3.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i3.TableFooterDirective, selector: "[fdTableFooter], [fd-table-footer]" }, { kind: "directive", type: i3.TableBodyDirective, selector: "[fdTableBody], [fd-table-body]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i3.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i3.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "tabindex", "hoverable", "fitContent", "noPadding", "noData", "key", "cellFocusedEventAnnouncer"] }, { kind: "component", type: i4.BarsaTableHeaderComponent, selector: "bsu-barsa-table-header", inputs: ["allChecked", "isCheckList", "columns", "fitWidth", "contextMenuItems", "canView", "hideOpenIcon", "disableOverflowContextMenu", "inlineEditMode", "hideHeader", "showDetailsInRow", "viewSetting", "tableWidth", "resizedByUser", "disableResponsive"], outputs: ["allCheckbox", "sortAscending", "sortDescending", "filter"] }, { kind: "component", type: i5.BarsaTableRowComponent, selector: "bsu-barsa-table-row", inputs: ["showDetailsInRow", "detailsComponent", "detailsColumns", "detailsText", "columnComponents"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i2.MultipleGroupByPipe, name: "multipleGroupBy" }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i2.TotalSummaryPipe, name: "totalSummary" }, { kind: "pipe", type: i2.MergeFieldsToColumnsPipe, name: "mergeFieldsToColumns" }, { kind: "pipe", type: i2.FilterColumnsByDetailsPipe, name: "filterColumnsByDetails" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
91
91
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiTableViewComponent, decorators: [{
92
92
  type: Component,
93
- args: [{ selector: 'bsu-ui-table-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<table\n fd-table\n [popIn]=\"popin\"\n [class.fixed]=\"!contextView?.Grid_HideHeader && (!popin || secondaryColumns.length === 0)\"\n [noBorderX]=\"viewSetting?.NoVerticalBorders === true || (popin && secondaryColumns.length > 0)\"\n [noBorderY]=\"viewSetting?.NoHoriztonalBorders === true || (popin && secondaryColumns.length > 0)\"\n tableResizer\n [fitWidth]=\"fitWidth\"\n (columnResized)=\"onColumnResized($event)\"\n [containerWidth]=\"containerWidth\"\n [minWidth]=\"30\"\n [minHeight]=\"22\"\n [rowResizer]=\"rowResizer\"\n [enableResizing]=\"enableResizing\"\n>\n <ng-container\n *ngIf=\"columns | mergeFieldsToColumns: viewSetting?.MergeFieldsToColumns?.MoDataList as mergeFieldsToColumns\"\n >\n <ng-container *ngTemplateOutlet=\"headerTemplate; context: { $implicit: mergeFieldsToColumns }\"></ng-container>\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: { $implicit: mergeFieldsToColumns }\"></ng-container>\n <ng-container *ngTemplateOutlet=\"footerTemplate; context: { $implicit: mergeFieldsToColumns }\"></ng-container>\n </ng-container>\n</table>\n<ng-template #headerTemplate let-columns>\n <bsu-barsa-table-header\n [tableWidth]=\"elWidth\"\n [showDetailsInRow]=\"showDetailsInRow\"\n [hideOpenIcon]=\"hideOpenIcon\"\n [resizedByUser]=\"resizedByUser\"\n [allChecked]=\"allChecked\"\n [disableResponsive]=\"disableResponsive\"\n [isCheckList]=\"isCheckList\"\n [columns]=\"columns | filterColumnsByDetails: detailsColumns\"\n [fitWidth]=\"fitWidth\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [inlineEditMode]=\"inlineEditMode\"\n [contextMenuItems]=\"contextMenuItems\"\n [canView]=\"canView\"\n [viewSetting]=\"viewSetting\"\n [hideHeader]=\"contextView.Grid_HideHeader\"\n (allCheckbox)=\"onAllCheckbox($event)\"\n (sortAscending)=\"onSortAscending($event)\"\n (sortDescending)=\"onSortDescending($event)\"\n (filter)=\"onFilter($event)\"\n ></bsu-barsa-table-header>\n</ng-template>\n<ng-template #bodyTemplate let-columns>\n <tbody\n fd-table-body\n [noBorderX]=\"popin && secondaryColumns.length > 0\"\n [noBorderY]=\"popin && secondaryColumns.length > 0\"\n >\n <ng-container *ngIf=\"moDataList && moDataList.length > 0; else noData\">\n <ng-container\n *ngFor=\"let mo of moDataList | multipleGroupBy: groupby; let index = index; trackBy: _trackByRow\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n rowTemplate;\n context: { $implicit: mo, index: index, columns: columns, moDataListCount: moDataList.length }\n \"\n ></ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n</ng-template>\n<ng-template #footerTemplate let-columns>\n <tfoot fd-table-footer *ngIf=\"hasSummary\">\n <tr fd-table-row class=\"row-summary\">\n <td fd-table-cell *ngIf=\"isCheckList\" columnResizer>\n <strong class=\"col-total-text\">{{ 'Total' | bbbTranslate }}</strong>\n </td>\n <td fd-table-cell *ngIf=\"!isCheckList\" class=\"single-select\">\n <strong class=\"col-total-text\">{{ 'Total' | bbbTranslate }}</strong>\n </td>\n <td *ngFor=\"let column of columns; let i = index\">\n <ng-container *ngIf=\"column.HasSummary\">\n <strong style=\"direction: ltr; display: block\">\n {{ moDataList | totalSummary: column.Name | number }}</strong\n >\n </ng-container>\n </td>\n <ng-container *ngIf=\"contextMenuItems && contextMenuItems.length > 0\">\n <td fd-table-cell style=\"width: 100px\"></td>\n </ng-container>\n <td fd-table-cell *ngIf=\"canView\"></td>\n </tr>\n </tfoot>\n</ng-template>\n<ng-template #rowTemplate let-mo let-index=\"index\" let-columns=\"columns\" let-moDataListCount=\"moDataListCount\">\n <bsu-barsa-table-row\n [mo]=\"mo\"\n [showDetailsInRow]=\"showDetailsInRow\"\n [hideOpenIcon]=\"hideOpenIcon\"\n [detailsColumns]=\"detailsColumns\"\n [cartableTemplate]=\"cartableTemplates[mo.RelatedMo?.$TypeDefId]\"\n [cartableMo]=\"mo.RelatedMo\"\n [cartableWorkflowData]=\"mo.SerializedWorkflowData\"\n [detailsText]=\"viewSetting?.DetailsSetting?.ButtonText\"\n [detailsComponent]=\"detailsComponent\"\n [isChecked]=\"mo.$IsChecked\"\n [visibility]=\"mo.$Visibility\"\n [expanded]=\"mo.$Expanded\"\n [level]=\"mo.$Level\"\n [parentExpanded]=\"mo.$Parent?.$Expanded\"\n [moDataListCount]=\"moDataListCount\"\n [columnsCount]=\"columnsCount - detailsColumns.length\"\n [typeDefId]=\"typeDefId\"\n [extraRelation]=\"extraRelation\"\n [formSetting]=\"formSetting\"\n [index]=\"index\"\n [setting]=\"viewSetting\"\n [secondaryColumns]=\"secondaryColumns | filterColumnsByDetails: detailsColumns\"\n [columns]=\"columns | filterColumnsByDetails: detailsColumns\"\n [isNewInlineMo]=\"mo.$NewInlineMo\"\n [access]=\"access\"\n [inlineEditMode]=\"inlineEditMode\"\n [allowInlineEdit]=\"allowInlineEdit\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [index]=\"index\"\n [allColumns]=\"allColumns\"\n [contextMenuItems]=\"contextMenuItems\"\n [canView]=\"canView\"\n [conditionalFormats]=\"conditionalFormats\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [navigationArrow]=\"navigationArrow\"\n [isCheckList]=\"isCheckList\"\n (expandClick)=\"onExpandClick($event)\"\n (rowCheck)=\"onRowCheck($event)\"\n (rowClick)=\"onRowClick($event)\"\n (ulvCommand)=\"onUlvCommand($event)\"\n (selectNextInlineRecord)=\"onSelectNextInlineRecord($event)\"\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\n (editFormPanelCancel)=\"onEditFormPanelCancel($event)\"\n (editFormPanelValueChange)=\"onEditFormPanelValueChange($event)\"\n (cartableFormClosed)=\"onCartableFormClosed($event)\"\n >\n </bsu-barsa-table-row>\n</ng-template>\n<!--renderColumn-->\n<ng-template #noData>\n <tr *ngIf=\"!inlineEditMode || !newInlineEditMo\">\n <td colspan=\"100%\" style=\"padding: 10px\">{{ 'NoData' | bbbTranslate }}</td>\n </tr>\n</ng-template>\n", styles: [":host{display:block;width:100%;overflow-x:auto;max-width:100vw}table{margin-bottom:5px}table.fixed{table-layout:fixed}table.fixed td{overflow:hidden}tr td{font-weight:inherit}::ng-deep span.fd-toolbar__spacer{display:none}.row-summary{position:relative}.row-summary .col-total-text{position:absolute;top:25%}\n"] }]
93
+ args: [{ selector: 'bsu-ui-table-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<table\r\n fd-table\r\n [popIn]=\"popin\"\r\n [class.fixed]=\"!contextView?.Grid_HideHeader && (!popin || secondaryColumns.length === 0)\"\r\n [noBorderX]=\"viewSetting?.NoVerticalBorders === true || (popin && secondaryColumns.length > 0)\"\r\n [noBorderY]=\"viewSetting?.NoHoriztonalBorders === true || (popin && secondaryColumns.length > 0)\"\r\n tableResizer\r\n [fitWidth]=\"fitWidth\"\r\n (columnResized)=\"onColumnResized($event)\"\r\n [containerWidth]=\"containerWidth\"\r\n [minWidth]=\"30\"\r\n [minHeight]=\"22\"\r\n [rowResizer]=\"rowResizer\"\r\n [enableResizing]=\"enableResizing\"\r\n>\r\n <ng-container\r\n *ngIf=\"columns | mergeFieldsToColumns: viewSetting?.MergeFieldsToColumns?.MoDataList as mergeFieldsToColumns\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"headerTemplate; context: { $implicit: mergeFieldsToColumns }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: { $implicit: mergeFieldsToColumns }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"footerTemplate; context: { $implicit: mergeFieldsToColumns }\"></ng-container>\r\n </ng-container>\r\n</table>\r\n<ng-template #headerTemplate let-columns>\r\n <bsu-barsa-table-header\r\n [tableWidth]=\"elWidth\"\r\n [showDetailsInRow]=\"showDetailsInRow\"\r\n [hideOpenIcon]=\"hideOpenIcon\"\r\n [resizedByUser]=\"resizedByUser\"\r\n [allChecked]=\"allChecked\"\r\n [disableResponsive]=\"disableResponsive\"\r\n [isCheckList]=\"isCheckList\"\r\n [columns]=\"columns | filterColumnsByDetails: detailsColumns\"\r\n [fitWidth]=\"fitWidth\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [contextMenuItems]=\"contextMenuItems\"\r\n [canView]=\"canView\"\r\n [viewSetting]=\"viewSetting\"\r\n [hideHeader]=\"contextView.Grid_HideHeader\"\r\n (allCheckbox)=\"onAllCheckbox($event)\"\r\n (sortAscending)=\"onSortAscending($event)\"\r\n (sortDescending)=\"onSortDescending($event)\"\r\n (filter)=\"onFilter($event)\"\r\n ></bsu-barsa-table-header>\r\n</ng-template>\r\n<ng-template #bodyTemplate let-columns>\r\n <tbody\r\n fd-table-body\r\n [noBorderX]=\"popin && secondaryColumns.length > 0\"\r\n [noBorderY]=\"popin && secondaryColumns.length > 0\"\r\n >\r\n <ng-container *ngIf=\"moDataList && moDataList.length > 0; else noData\">\r\n <ng-container\r\n *ngFor=\"let mo of moDataList | multipleGroupBy: groupby; let index = index; trackBy: _trackByRow\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n rowTemplate;\r\n context: { $implicit: mo, index: index, columns: columns, moDataListCount: moDataList.length }\r\n \"\r\n ></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n</ng-template>\r\n<ng-template #footerTemplate let-columns>\r\n <tfoot fd-table-footer *ngIf=\"hasSummary\">\r\n <tr fd-table-row class=\"row-summary\">\r\n <td fd-table-cell *ngIf=\"isCheckList\" columnResizer>\r\n <strong class=\"col-total-text\">{{ 'Total' | bbbTranslate }}</strong>\r\n </td>\r\n <td fd-table-cell *ngIf=\"!isCheckList\" class=\"single-select\">\r\n <strong class=\"col-total-text\">{{ 'Total' | bbbTranslate }}</strong>\r\n </td>\r\n <td *ngFor=\"let column of columns; let i = index\">\r\n <ng-container *ngIf=\"column.HasSummary\">\r\n <strong style=\"direction: ltr; display: block\">\r\n {{ moDataList | totalSummary: column.Name | number }}</strong\r\n >\r\n </ng-container>\r\n </td>\r\n <ng-container *ngIf=\"contextMenuItems && contextMenuItems.length > 0\">\r\n <td fd-table-cell style=\"width: 100px\"></td>\r\n </ng-container>\r\n <td fd-table-cell *ngIf=\"canView\"></td>\r\n </tr>\r\n </tfoot>\r\n</ng-template>\r\n<ng-template #rowTemplate let-mo let-index=\"index\" let-columns=\"columns\" let-moDataListCount=\"moDataListCount\">\r\n <bsu-barsa-table-row\r\n [mo]=\"mo\"\r\n [showDetailsInRow]=\"showDetailsInRow\"\r\n [hideOpenIcon]=\"hideOpenIcon\"\r\n [detailsColumns]=\"detailsColumns\"\r\n [cartableTemplate]=\"cartableTemplates[mo.RelatedMo?.$TypeDefId]\"\r\n [cartableMo]=\"mo.RelatedMo\"\r\n [cartableWorkflowData]=\"mo.SerializedWorkflowData\"\r\n [serializedRelatedMo]=\"mo.SerializedRelatedMo\"\r\n [detailsText]=\"viewSetting?.DetailsSetting?.ButtonText\"\r\n [detailsComponent]=\"detailsComponent\"\r\n [isChecked]=\"mo.$IsChecked\"\r\n [visibility]=\"mo.$Visibility\"\r\n [expanded]=\"mo.$Expanded\"\r\n [level]=\"mo.$Level\"\r\n [parentExpanded]=\"mo.$Parent?.$Expanded\"\r\n [moDataListCount]=\"moDataListCount\"\r\n [columnsCount]=\"columnsCount - detailsColumns.length\"\r\n [typeDefId]=\"typeDefId\"\r\n [extraRelation]=\"extraRelation\"\r\n [formSetting]=\"formSetting\"\r\n [index]=\"index\"\r\n [setting]=\"viewSetting\"\r\n [secondaryColumns]=\"secondaryColumns | filterColumnsByDetails: detailsColumns\"\r\n [columns]=\"columns | filterColumnsByDetails: detailsColumns\"\r\n [isNewInlineMo]=\"mo.$NewInlineMo\"\r\n [access]=\"access\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [allowInlineEdit]=\"allowInlineEdit\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [index]=\"index\"\r\n [allColumns]=\"allColumns\"\r\n [contextMenuItems]=\"contextMenuItems\"\r\n [canView]=\"canView\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [navigationArrow]=\"navigationArrow\"\r\n [isCheckList]=\"isCheckList\"\r\n (expandClick)=\"onExpandClick($event)\"\r\n (rowCheck)=\"onRowCheck($event)\"\r\n (rowClick)=\"onRowClick($event)\"\r\n (ulvCommand)=\"onUlvCommand($event)\"\r\n (selectNextInlineRecord)=\"onSelectNextInlineRecord($event)\"\r\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\r\n (editFormPanelCancel)=\"onEditFormPanelCancel($event)\"\r\n (editFormPanelValueChange)=\"onEditFormPanelValueChange($event)\"\r\n (cartableFormClosed)=\"onCartableFormClosed($event)\"\r\n >\r\n </bsu-barsa-table-row>\r\n</ng-template>\r\n<!--renderColumn-->\r\n<ng-template #noData>\r\n <tr *ngIf=\"!inlineEditMode || !newInlineEditMo\">\r\n <td colspan=\"100%\" style=\"padding: 10px\">{{ 'NoData' | bbbTranslate }}</td>\r\n </tr>\r\n</ng-template>\r\n", styles: [":host{display:block;width:100%;overflow-x:auto;max-width:100vw}table{margin-bottom:5px}table.fixed{table-layout:fixed}table.fixed td{overflow:hidden}tr td{font-weight:inherit}::ng-deep span.fd-toolbar__spacer{display:none}.row-summary{position:relative}.row-summary .col-total-text{position:absolute;top:25%}\n"] }]
94
94
  }], propDecorators: { columnWidth: [{
95
95
  type: Input
96
96
  }], minWidth: [{
@@ -108,4 +108,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
108
108
  type: HostBinding,
109
109
  args: ['style.max-height']
110
110
  }] } });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdGFibGUtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS10YWJsZS12aWV3L3VpLXRhYmxlLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktdGFibGUtdmlldy91aS10YWJsZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxLQUFLLEVBSVIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFrQyx1QkFBdUIsRUFBb0IsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7OztBQVNqSCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsdUJBQTJDO0lBTnJGOztRQWFvQyxXQUFNLEdBQWtCLElBQUksQ0FBQztRQUM1QixjQUFTLEdBQWtCLElBQUksQ0FBQztRQUVqRSxXQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ2hCLG1CQUFjLEdBQXVCLEVBQUUsQ0FBQztRQUd4QyxxQkFBZ0IsR0FBbUUsRUFBRSxDQUFDO0tBMEV6RjtJQXhFRyxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDO1FBQ3hELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUM7UUFDOUMsSUFBSSxjQUFjLEVBQUU7WUFDaEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUM7WUFDakQsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBYyxFQUFFLEVBQUU7Z0JBQ3pELE1BQU0s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LENBQUM7SUFFTyxVQUFVLENBQUMsT0FBMkIsRUFBRSxNQUFjO1FBQzFELElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtZQUM5QyxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDbkY7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDOztpSEF2RlEsb0JBQW9CO3FHQUFwQixvQkFBb0IseVZDbEJqQywrbU5BbUpBOzJGRGpJYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0ksbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFMEIsTUFBTTtzQkFBckMsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBQ0csU0FBUztzQkFBekMsV0FBVzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBIb3N0QmluZGluZyxcclxuICAgIElucHV0LFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT25Jbml0LFxyXG4gICAgU2ltcGxlQ2hhbmdlc1xyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFanJheU9sZ28sIE1ldGFvYmplY3REYXRhTW9kZWwsIFJlcG9ydFZpZXdCYXNlQ29tcG9uZW50LCBSZXBvcnRWaWV3Q29sdW1uIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5pbXBvcnQgeyBVaVRhYmxlVmlld1NldHRpbmcgfSBmcm9tICcuLi9tb2RlbHMvZ3JpZC12aWV3JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdic3UtdWktdGFibGUtdmlldycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdWktdGFibGUtdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi91aS10YWJsZS12aWV3LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlUYWJsZVZpZXdDb21wb25lbnQgZXh0ZW5kcyBSZXBvcnRWaWV3QmFzZUNvbXBvbmVudDxVaVRhYmxlVmlld1NldHRpbmc+IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gICAgQElucHV0KCkgY29sdW1uV2lkdGg6IG51bWJlcjtcclxuICAgIEBJbnB1dCgpIG1pbldpZHRoO1xyXG4gICAgQElucHV0KCkgbWluSGVpZ2h0O1xyXG4gICAgQElucHV0KCkgcm93UmVzaXplcjtcclxuICAgIEBJbnB1dCgpIGVuYWJsZVJlc2l6aW5nO1xyXG5cclxuICAgIEBIb3N0QmluZGluZygnc3R5bGUuaGVpZ2h0LnB4JykgaGVpZ2h0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICAgIEBIb3N0QmluZGluZygnc3R5bGUubWF4LWhlaWdodCcpIG1heEhlaWdodDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgX3dpZHRoID0gJzEwMCUnO1xyXG4gICAgZGV0YWlsc0NvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXSA9IFtdO1xyXG4gICAgZGV0YWlsc0NvbXBvbmVudDogRWpyYXlPbGdvO1xyXG4gICAgc2hvd0RldGFpbHNJblJvdzogYm9vbGVhbjtcclxuICAgIGNvbHVtbkNvbXBvbmVudHM6IHsgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uOyBjb21wb25lbnQ6IE1ldGFvYmplY3REYXRhTW9kZWwgfVtdID0gW107XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICBjb25zdCBkZXRhaWxzU2V0dGluZyA9IHRoaXMudmlld1NldHRpbmc/LkRldGFpbHNTZXR0aW5nO1xyXG4gICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gdGhpcy52aWV3U2V0dGluZz8uQm9keUhlaWdodDtcclxuICAgICAgICBpZiAoZGV0YWlsc1NldHRpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5kZXRhaWxzQ29tcG9uZW50ID0gZGV0YWlsc1NldHRpbmcuQ29tcG9uZW50O1xyXG4gICAgICAgICAgICBkZXRhaWxzU2V0dGluZy5Db2x1bW5zLnNwbGl0KCcsJykuZm9yRWFjaCgoY29sdW1uOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbkZvdW5kID0gdGhpcy5maW5kQ29sdW1uKHRoaXMuYWxsQ29sdW1ucywgY29sdW1uKTtcclxuICAgICAgICAgICAgICAgIGlmIChjb2x1bW5Gb3VuZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsc0NvbHVtbnMucHVzaChjb2x1bW5Gb3VuZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9zZXRIYXNTdW1tZXJ5KHRoaXMuY2FydGFibGVDaGlsZHNNbyk7XHJcbiAgICAgICAgdGhpcy5fc2V0Q29sdW1uc0NvbXBvbmVudCh0aGlzLmFsbENvbHVtbnMpO1xyXG4gICAgICAgIHRoaXMuX3NldEhlaWdodCh0aGlzLnBhcmVudEhlaWdodCk7XHJcbiAgICB9XHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgICAgICAgY29uc3QgeyBhbGxDb2x1bW5zLCBjYXJ0YWJsZVRlbXBsYXRlcywgcGFyZW50SGVpZ2h0IH0gPSBjaGFuZ2VzO1xyXG4gICAgICAgIGlmIChhbGxDb2x1bW5zICYmICFhbGxDb2x1bW5zLmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NldENvbHVtbnNDb21wb25lbnQoYWxsQ29sdW1ucy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY2FydGFibGVUZW1wbGF0ZXMgJiYgIWNhcnRhYmxlVGVtcGxhdGVzLmZpcnN0Q2hhbmdlICYmICF0aGlzLmhhc1N1bW1hcnkpIHtcclxuICAgICAgICAgICAgdGhpcy5fc2V0SGFzU3VtbWVyeShjYXJ0YWJsZVRlbXBsYXRlcy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyZW50SGVpZ2h0ICYmICFwYXJlbnRIZWlnaHQuZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fc2V0SGVpZ2h0KHBhcmVudEhlaWdodC5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfc2V0SGVpZ2h0KHBhcmVudEhlaWdodDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaW5EaWFsb2cpIHtcclxuICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSBwYXJlbnRIZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9zZXRIYXNTdW1tZXJ5KGNhcnRhYmxlVGVtcGxhdGVzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0aGlzLmRldGFpbHNDb2x1bW5zPy5sZW5ndGggPiAwIHx8XHJcbiAgICAgICAgICAgIHRoaXMuZGV0YWlsc0NvbXBvbmVudD8uU2VsZWN0b3IgfHxcclxuICAgICAgICAgICAgKGNhcnRhYmxlVGVtcGxhdGVzICYmIE9iamVjdC5rZXlzKGNhcnRhYmxlVGVtcGxhdGVzKS5sZW5ndGggPiAwKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dEZXRhaWxzSW5Sb3cgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfY29udGFpbmVyV2lkdGhDaGFuZ2VkKHZhbDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHZhbCA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLl93aWR0aCA9ICcxMDAlJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl93aWR0aCA9IHZhbCArICdweCc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCB0aGlzLl93aWR0aCk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9zZXRDb2x1bW5zQ29tcG9uZW50KGNvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNvbHVtbkNvbXBvbmVudHMgPSB0aGlzLnZpZXdTZXR0aW5nPy5Db2x1bW5Db21wb25lbnRzO1xyXG4gICAgICAgIGlmIChjb2x1bW5Db21wb25lbnRzKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbkNvbXBvbmVudHMuTW9EYXRhTGlzdC5mb3JFYWNoKChjOiBNZXRhb2JqZWN0RGF0YU1vZGVsKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmZpbmRDb2x1bW4oY29sdW1ucywgYy5UaXRsZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLiRDdXN0b21Db21wb25lbnQgPSBjLkNvbXBvbmVudDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZmluZENvbHVtbihjb2x1bW5zOiBSZXBvcnRWaWV3Q29sdW1uW10sIGNvbHVtbjogc3RyaW5nKTogUmVwb3J0Vmlld0NvbHVtbiB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgbGV0IGNvbHVtbkZvdW5kID0gdGhpcy5fZmluZENvbHVtbkJ5RGJOYW1lLnRyYW5zZm9ybShjb2x1bW5zLCBjb2x1bW4pO1xyXG4gICAgICAgIGlmICghY29sdW1uRm91bmQgJiYgdGhpcy5zZWNvbmRhcnlDb2x1bW5zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBjb2x1bW5Gb3VuZCA9IHRoaXMuX2ZpbmRDb2x1bW5CeURiTmFtZS50cmFuc2Zvcm0odGhpcy5zZWNvbmRhcnlDb2x1bW5zLCBjb2x1bW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY29sdW1uRm91bmQ7XHJcbiAgICB9XHJcbn1cclxuIiwiPHRhYmxlXG4gICAgZmQtdGFibGVcbiAgICBbcG9wSW5dPVwicG9waW5cIlxuICAgIFtjbGFzcy5maXhlZF09XCIhY29udGV4dFZpZXc/LkdyaWRfSGlkZUhlYWRlciAmJiAoIXBvcGluIHx8IHNlY29uZGFyeUNvbHVtbnMubGVuZ3RoID09PSAwKVwiXG4gICAgW25vQm9yZGVyWF09XCJ2aWV3U2V0dGluZz8uTm9WZXJ0aWNhbEJvcmRlcnMgPT09IHRydWUgfHwgKHBvcGluICYmIHNlY29uZGFyeUNvbHVtbnMubGVuZ3RoID4gMClcIlxuICAgIFtub0JvcmRlclldPVwidmlld1NldHRpbmc/Lk5vSG9yaXp0b25hbEJvcmRlcnMgPT09IHRydWUgfHwgKHBvcGluICYmIHNlY29uZGFyeUNvbHVtbnMubGVuZ3RoID4gMClcIlxuICAgIHRhYmxlUmVzaXplclxuICAgIFtmaXRXaWR0aF09XCJmaXRXaWR0aFwiXG4gICAgKGNvbHVtblJlc2l6ZWQpPVwib25Db2x1bW5SZXNpemVkKCRldmVudClcIlxuICAgIFtjb250YWluZXJXaWR0aF09XCJjb250YWluZXJXaWR0aFwiXG4gICAgW21pbldpZHRoXT1cIjMwXCJcbiAgICBbbWluSGVpZ2h0XT1cIjIyXCJcbiAgICBbcm93UmVzaXplcl09XCJyb3dSZXNpemVyXCJcbiAgICBbZW5hYmxlUmVzaXppbmddPVwiZW5hYmxlUmVzaXppbmdcIlxuPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJjb2x1bW5zIHwgbWVyZ2VGaWVsZHNUb0NvbHVtbnM6IHZpZXdTZXR0aW5nPy5NZXJnZUZpZWxkc1RvQ29sdW1ucz8uTW9EYXRhTGlzdCBhcyBtZXJnZUZpZWxkc1RvQ29sdW1uc1wiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBtZXJnZUZpZWxkc1RvQ29sdW1ucyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJib2R5VGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBtZXJnZUZpZWxkc1RvQ29sdW1ucyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG1lcmdlRmllbGRzVG9Db2x1bW5zIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvdGFibGU+XG48bmctdGVtcGxhdGUgI2hlYWRlclRlbXBsYXRlIGxldC1jb2x1bW5zPlxuICAgIDxic3UtYmFyc2EtdGFibGUtaGVhZGVyXG4gICAgICAgIFt0YWJsZVdpZHRoXT1cImVsV2lkdGhcIlxuICAgICAgICBbc2hvd0RldGFpbHNJblJvd109XCJzaG93RGV0YWlsc0luUm93XCJcbiAgICAgICAgW2hpZGVPcGVuSWNvbl09XCJoaWRlT3Blbkljb25cIlxuICAgICAgICBbcmVzaXplZEJ5VXNlcl09XCJyZXNpemVkQnlVc2VyXCJcbiAgICAgICAgW2FsbENoZWNrZWRdPVwiYWxsQ2hlY2tlZFwiXG4gICAgICAgIFtkaXNhYmxlUmVzcG9uc2l2ZV09XCJkaXNhYmxlUmVzcG9uc2l2ZVwiXG4gICAgICAgIFtpc0NoZWNrTGlzdF09XCJpc0NoZWNrTGlzdFwiXG4gICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnMgfCBmaWx0ZXJDb2x1bW5zQnlEZXRhaWxzOiBkZXRhaWxzQ29sdW1uc1wiXG4gICAgICAgIFtmaXRXaWR0aF09XCJmaXRXaWR0aFwiXG4gICAgICAgIFtkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudV09XCJkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudVwiXG4gICAgICAgIFtpbmxpbmVFZGl0TW9kZV09XCJpbmxpbmVFZGl0TW9kZVwiXG4gICAgICAgIFtjb250ZXh0TWVudUl0ZW1zXT1cImNvbnRleHRNZW51SXRlbXNcIlxuICAgICAgICBbY2FuVmlld109XCJjYW5WaWV3XCJcbiAgICAgICAgW3ZpZXdTZXR0aW5nXT1cInZpZXdTZXR0aW5nXCJcbiAgICAgICAgW2hpZGVIZWFkZXJdPVwiY29udGV4dFZpZXcuR3JpZF9IaWRlSGVhZGVyXCJcbiAgICAgICAgKGFsbENoZWNrYm94KT1cIm9uQWxsQ2hlY2tib3goJGV2ZW50KVwiXG4gICAgICAgIChzb3J0QXNjZW5kaW5nKT1cIm9uU29ydEFzY2VuZGluZygkZXZlbnQpXCJcbiAgICAgICAgKHNvcnREZXNjZW5kaW5nKT1cIm9uU29ydERlc2NlbmRpbmcoJGV2ZW50KVwiXG4gICAgICAgIChmaWx0ZXIpPVwib25GaWx0ZXIoJGV2ZW50KVwiXG4gICAgPjwvYnN1LWJhcnNhLXRhYmxlLWhlYWRlcj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2JvZHlUZW1wbGF0ZSBsZXQtY29sdW1ucz5cbiAgICA8dGJvZHlcbiAgICAgICAgZmQtdGFibGUtYm9keVxuICAgICAgICBbbm9Cb3JkZXJYXT1cInBvcGluICYmIHNlY29uZGFyeUNvbHVtbnMubGVuZ3RoID4gMFwiXG4gICAgICAgIFtub0JvcmRlclldPVwicG9waW4gJiYgc2Vjb25kYXJ5Q29sdW1ucy5sZW5ndGggPiAwXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb0RhdGFMaXN0ICYmIG1vRGF0YUxpc3QubGVuZ3RoID4gMDsgZWxzZSBub0RhdGFcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbW8gb2YgbW9EYXRhTGlzdCB8IG11bHRpcGxlR3JvdXBCeTogZ3JvdXBieTsgbGV0IGluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IF90cmFja0J5Um93XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBtbywgaW5kZXg6IGluZGV4LCBjb2x1bW5zOiBjb2x1bW5zLCBtb0RhdGFMaXN0Q291bnQ6IG1vRGF0YUxpc3QubGVuZ3RoIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC90Ym9keT5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2Zvb3RlclRlbXBsYXRlIGxldC1jb2x1bW5zPlxuICAgIDx0Zm9vdCBmZC10YWJsZS1mb290ZXIgKm5nSWY9XCJoYXNTdW1tYXJ5XCI+XG4gICAgICAgIDx0ciBmZC10YWJsZS1yb3cgY2xhc3M9XCJyb3ctc3VtbWFyeVwiPlxuICAgICAgICAgICAgPHRkIGZkLXRhYmxlLWNlbGwgKm5nSWY9XCJpc0NoZWNrTGlzdFwiIGNvbHVtblJlc2l6ZXI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImNvbC10b3RhbC10ZXh0XCI+e3sgJ1RvdGFsJyB8IGJiYlRyYW5zbGF0ZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsICpuZ0lmPVwiIWlzQ2hlY2tMaXN0XCIgY2xhc3M9XCJzaW5nbGUtc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImNvbC10b3RhbC10ZXh0XCI+e3sgJ1RvdGFsJyB8IGJiYlRyYW5zbGF0ZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLkhhc1N1bW1hcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBzdHlsZT1cImRpcmVjdGlvbjogbHRyOyBkaXNwbGF5OiBibG9ja1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbW9EYXRhTGlzdCB8IHRvdGFsU3VtbWFyeTogY29sdW1uLk5hbWUgfCBudW1iZXIgfX08L3N0cm9uZ1xuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRleHRNZW51SXRlbXMgJiYgY29udGV4dE1lbnVJdGVtcy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgPHRkIGZkLXRhYmxlLWNlbGwgc3R5bGU9XCJ3aWR0aDogMTAwcHhcIj48L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8dGQgZmQtdGFibGUtY2VsbCAqbmdJZj1cImNhblZpZXdcIj48L3RkPlxuICAgICAgICA8L3RyPlxuICAgIDwvdGZvb3Q+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNyb3dUZW1wbGF0ZSBsZXQtbW8gbGV0LWluZGV4PVwiaW5kZXhcIiBsZXQtY29sdW1ucz1cImNvbHVtbnNcIiBsZXQtbW9EYXRhTGlzdENvdW50PVwibW9EYXRhTGlzdENvdW50XCI+XG4gICAgPGJzdS1iYXJzYS10YWJsZS1yb3dcbiAgICAgICAgW21vXT1cIm1vXCJcbiAgICAgICAgW3Nob3dEZXRhaWxzSW5Sb3ddPVwic2hvd0RldGFpbHNJblJvd1wiXG4gICAgICAgIFtoaWRlT3Blbkljb25dPVwiaGlkZU9wZW5JY29uXCJcbiAgICAgICAgW2RldGFpbHNDb2x1bW5zXT1cImRldGFpbHNDb2x1bW5zXCJcbiAgICAgICAgW2NhcnRhYmxlVGVtcGxhdGVdPVwiY2FydGFibGVUZW1wbGF0ZXNbbW8uUmVsYXRlZE1vPy4kVHlwZURlZklkXVwiXG4gICAgICAgIFtjYXJ0YWJsZU1vXT1cIm1vLlJlbGF0ZWRNb1wiXG4gICAgICAgIFtjYXJ0YWJsZVdvcmtmbG93RGF0YV09XCJtby5TZXJpYWxpemVkV29ya2Zsb3dEYXRhXCJcbiAgICAgICAgW2RldGFpbHNUZXh0XT1cInZpZXdTZXR0aW5nPy5EZXRhaWxzU2V0dGluZz8uQnV0dG9uVGV4dFwiXG4gICAgICAgIFtkZXRhaWxzQ29tcG9uZW50XT1cImRldGFpbHNDb21wb25lbnRcIlxuICAgICAgICBbaXNDaGVja2VkXT1cIm1vLiRJc0NoZWNrZWRcIlxuICAgICAgICBbdmlzaWJpbGl0eV09XCJtby4kVmlzaWJpbGl0eVwiXG4gICAgICAgIFtleHBhbmRlZF09XCJtby4kRXhwYW5kZWRcIlxuICAgICAgICBbbGV2ZWxdPVwibW8uJExldmVsXCJcbiAgICAgICAgW3BhcmVudEV4cGFuZGVkXT1cIm1vLiRQYXJlbnQ/LiRFeHBhbmRlZFwiXG4gICAgICAgIFttb0RhdGFMaXN0Q291bnRdPVwibW9EYXRhTGlzdENvdW50XCJcbiAgICAgICAgW2NvbHVtbnNDb3VudF09XCJjb2x1bW5zQ291bnQgLSBkZXRhaWxzQ29sdW1ucy5sZW5ndGhcIlxuICAgICAgICBbdHlwZURlZklkXT1cInR5cGVEZWZJZFwiXG4gICAgICAgIFtleHRyYVJlbGF0aW9uXT1cImV4dHJhUmVsYXRpb25cIlxuICAgICAgICBbZm9ybVNldHRpbmddPVwiZm9ybVNldHRpbmdcIlxuICAgICAgICBbaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICBbc2V0dGluZ109XCJ2aWV3U2V0dGluZ1wiXG4gICAgICAgIFtzZWNvbmRhcnlDb2x1bW5zXT1cInNlY29uZGFyeUNvbHVtbnMgfCBmaWx0ZXJDb2x1bW5zQnlEZXRhaWxzOiBkZXRhaWxzQ29sdW1uc1wiXG4gICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnMgfCBmaWx0ZXJDb2x1bW5zQnlEZXRhaWxzOiBkZXRhaWxzQ29sdW1uc1wiXG4gICAgICAgIFtpc05ld0lubGluZU1vXT1cIm1vLiROZXdJbmxpbmVNb1wiXG4gICAgICAgIFthY2Nlc3NdPVwiYWNjZXNzXCJcbiAgICAgICAgW2lubGluZUVkaXRNb2RlXT1cImlubGluZUVkaXRNb2RlXCJcbiAgICAgICAgW2FsbG93SW5saW5lRWRpdF09XCJhbGxvd0lubGluZUVkaXRcIlxuICAgICAgICBbcnRsXT1cInJ0bFwiXG4gICAgICAgIFtkZXZpY2VOYW1lXT1cImRldmljZU5hbWVcIlxuICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcbiAgICAgICAgW2luZGV4XT1cImluZGV4XCJcbiAgICAgICAgW2FsbENvbHVtbnNdPVwiYWxsQ29sdW1uc1wiXG4gICAgICAgIFtjb250ZXh0TWVudUl0ZW1zXT1cImNvbnRleHRNZW51SXRlbXNcIlxuICAgICAgICBbY2FuVmlld109XCJjYW5WaWV3XCJcbiAgICAgICAgW2NvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxuICAgICAgICBbZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVdPVwiZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVcIlxuICAgICAgICBbbmF2aWdhdGlvbkFycm93XT1cIm5hdmlnYXRpb25BcnJvd1wiXG4gICAgICAgIFtpc0NoZWNrTGlzdF09XCJpc0NoZWNrTGlzdFwiXG4gICAgICAgIChleHBhbmRDbGljayk9XCJvbkV4cGFuZENsaWNrKCRldmVudClcIlxuICAgICAgICAocm93Q2hlY2spPVwib25Sb3dDaGVjaygkZXZlbnQpXCJcbiAgICAgICAgKHJvd0NsaWNrKT1cIm9uUm93Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgICh1bHZDb21tYW5kKT1cIm9uVWx2Q29tbWFuZCgkZXZlbnQpXCJcbiAgICAgICAgKHNlbGVjdE5leHRJbmxpbmVSZWNvcmQpPVwib25TZWxlY3ROZXh0SW5saW5lUmVjb3JkKCRldmVudClcIlxuICAgICAgICAoZWRpdEZvcm1QYW5lbFNhdmUpPVwib25FZGl0Rm9ybVBhbmVsU2F2ZSgkZXZlbnQpXCJcbiAgICAgICAgKGVkaXRGb3JtUGFuZWxDYW5jZWwpPVwib25FZGl0Rm9ybVBhbmVsQ2FuY2VsKCRldmVudClcIlxuICAgICAgICAoZWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlKT1cIm9uRWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAoY2FydGFibGVGb3JtQ2xvc2VkKT1cIm9uQ2FydGFibGVGb3JtQ2xvc2VkKCRldmVudClcIlxuICAgID5cbiAgICA8L2JzdS1iYXJzYS10YWJsZS1yb3c+XG48L25nLXRlbXBsYXRlPlxuPCEtLXJlbmRlckNvbHVtbi0tPlxuPG5nLXRlbXBsYXRlICNub0RhdGE+XG4gICAgPHRyICpuZ0lmPVwiIWlubGluZUVkaXRNb2RlIHx8ICFuZXdJbmxpbmVFZGl0TW9cIj5cbiAgICAgICAgPHRkIGNvbHNwYW49XCIxMDAlXCIgc3R5bGU9XCJwYWRkaW5nOiAxMHB4XCI+e3sgJ05vRGF0YScgfCBiYmJUcmFuc2xhdGUgfX08L3RkPlxuICAgIDwvdHI+XG48L25nLXRlbXBsYXRlPlxuIl19
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdGFibGUtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS10YWJsZS12aWV3L3VpLXRhYmxlLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktdGFibGUtdmlldy91aS10YWJsZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxLQUFLLEVBSVIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFrQyx1QkFBdUIsRUFBb0IsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7OztBQVNqSCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsdUJBQTJDO0lBTnJGOztRQWFvQyxXQUFNLEdBQWtCLElBQUksQ0FBQztRQUM1QixjQUFTLEdBQWtCLElBQUksQ0FBQztRQUVqRSxXQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ2hCLG1CQUFjLEdBQXVCLEVBQUUsQ0FBQztRQUd4QyxxQkFBZ0IsR0FBbUUsRUFBRSxDQUFDO0tBMEV6RjtJQXhFRyxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDO1FBQ3hELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUM7UUFDOUMsSUFBSSxjQUFjLEVBQUU7WUFDaEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUM7WUFDakQsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBYyxFQUFFLEVBQUU7Z0JBQ3pELE1BQU0s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LENBQUM7SUFFTyxVQUFVLENBQUMsT0FBMkIsRUFBRSxNQUFjO1FBQzFELElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtZQUM5QyxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDbkY7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDOztpSEF2RlEsb0JBQW9CO3FHQUFwQixvQkFBb0IseVZDbEJqQyxpOU5Bb0pBOzJGRGxJYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0ksbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFMEIsTUFBTTtzQkFBckMsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBQ0csU0FBUztzQkFBekMsV0FBVzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBIb3N0QmluZGluZyxcclxuICAgIElucHV0LFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT25Jbml0LFxyXG4gICAgU2ltcGxlQ2hhbmdlc1xyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFanJheU9sZ28sIE1ldGFvYmplY3REYXRhTW9kZWwsIFJlcG9ydFZpZXdCYXNlQ29tcG9uZW50LCBSZXBvcnRWaWV3Q29sdW1uIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5pbXBvcnQgeyBVaVRhYmxlVmlld1NldHRpbmcgfSBmcm9tICcuLi9tb2RlbHMvZ3JpZC12aWV3JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdic3UtdWktdGFibGUtdmlldycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdWktdGFibGUtdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi91aS10YWJsZS12aWV3LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlUYWJsZVZpZXdDb21wb25lbnQgZXh0ZW5kcyBSZXBvcnRWaWV3QmFzZUNvbXBvbmVudDxVaVRhYmxlVmlld1NldHRpbmc+IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gICAgQElucHV0KCkgY29sdW1uV2lkdGg6IG51bWJlcjtcclxuICAgIEBJbnB1dCgpIG1pbldpZHRoO1xyXG4gICAgQElucHV0KCkgbWluSGVpZ2h0O1xyXG4gICAgQElucHV0KCkgcm93UmVzaXplcjtcclxuICAgIEBJbnB1dCgpIGVuYWJsZVJlc2l6aW5nO1xyXG5cclxuICAgIEBIb3N0QmluZGluZygnc3R5bGUuaGVpZ2h0LnB4JykgaGVpZ2h0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICAgIEBIb3N0QmluZGluZygnc3R5bGUubWF4LWhlaWdodCcpIG1heEhlaWdodDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgX3dpZHRoID0gJzEwMCUnO1xyXG4gICAgZGV0YWlsc0NvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXSA9IFtdO1xyXG4gICAgZGV0YWlsc0NvbXBvbmVudDogRWpyYXlPbGdvO1xyXG4gICAgc2hvd0RldGFpbHNJblJvdzogYm9vbGVhbjtcclxuICAgIGNvbHVtbkNvbXBvbmVudHM6IHsgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uOyBjb21wb25lbnQ6IE1ldGFvYmplY3REYXRhTW9kZWwgfVtdID0gW107XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICBjb25zdCBkZXRhaWxzU2V0dGluZyA9IHRoaXMudmlld1NldHRpbmc/LkRldGFpbHNTZXR0aW5nO1xyXG4gICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gdGhpcy52aWV3U2V0dGluZz8uQm9keUhlaWdodDtcclxuICAgICAgICBpZiAoZGV0YWlsc1NldHRpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5kZXRhaWxzQ29tcG9uZW50ID0gZGV0YWlsc1NldHRpbmcuQ29tcG9uZW50O1xyXG4gICAgICAgICAgICBkZXRhaWxzU2V0dGluZy5Db2x1bW5zLnNwbGl0KCcsJykuZm9yRWFjaCgoY29sdW1uOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbkZvdW5kID0gdGhpcy5maW5kQ29sdW1uKHRoaXMuYWxsQ29sdW1ucywgY29sdW1uKTtcclxuICAgICAgICAgICAgICAgIGlmIChjb2x1bW5Gb3VuZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsc0NvbHVtbnMucHVzaChjb2x1bW5Gb3VuZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9zZXRIYXNTdW1tZXJ5KHRoaXMuY2FydGFibGVDaGlsZHNNbyk7XHJcbiAgICAgICAgdGhpcy5fc2V0Q29sdW1uc0NvbXBvbmVudCh0aGlzLmFsbENvbHVtbnMpO1xyXG4gICAgICAgIHRoaXMuX3NldEhlaWdodCh0aGlzLnBhcmVudEhlaWdodCk7XHJcbiAgICB9XHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgICAgICAgY29uc3QgeyBhbGxDb2x1bW5zLCBjYXJ0YWJsZVRlbXBsYXRlcywgcGFyZW50SGVpZ2h0IH0gPSBjaGFuZ2VzO1xyXG4gICAgICAgIGlmIChhbGxDb2x1bW5zICYmICFhbGxDb2x1bW5zLmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NldENvbHVtbnNDb21wb25lbnQoYWxsQ29sdW1ucy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY2FydGFibGVUZW1wbGF0ZXMgJiYgIWNhcnRhYmxlVGVtcGxhdGVzLmZpcnN0Q2hhbmdlICYmICF0aGlzLmhhc1N1bW1hcnkpIHtcclxuICAgICAgICAgICAgdGhpcy5fc2V0SGFzU3VtbWVyeShjYXJ0YWJsZVRlbXBsYXRlcy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyZW50SGVpZ2h0ICYmICFwYXJlbnRIZWlnaHQuZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fc2V0SGVpZ2h0KHBhcmVudEhlaWdodC5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfc2V0SGVpZ2h0KHBhcmVudEhlaWdodDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaW5EaWFsb2cpIHtcclxuICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSBwYXJlbnRIZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9zZXRIYXNTdW1tZXJ5KGNhcnRhYmxlVGVtcGxhdGVzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0aGlzLmRldGFpbHNDb2x1bW5zPy5sZW5ndGggPiAwIHx8XHJcbiAgICAgICAgICAgIHRoaXMuZGV0YWlsc0NvbXBvbmVudD8uU2VsZWN0b3IgfHxcclxuICAgICAgICAgICAgKGNhcnRhYmxlVGVtcGxhdGVzICYmIE9iamVjdC5rZXlzKGNhcnRhYmxlVGVtcGxhdGVzKS5sZW5ndGggPiAwKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dEZXRhaWxzSW5Sb3cgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfY29udGFpbmVyV2lkdGhDaGFuZ2VkKHZhbDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHZhbCA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLl93aWR0aCA9ICcxMDAlJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl93aWR0aCA9IHZhbCArICdweCc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCB0aGlzLl93aWR0aCk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9zZXRDb2x1bW5zQ29tcG9uZW50KGNvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNvbHVtbkNvbXBvbmVudHMgPSB0aGlzLnZpZXdTZXR0aW5nPy5Db2x1bW5Db21wb25lbnRzO1xyXG4gICAgICAgIGlmIChjb2x1bW5Db21wb25lbnRzKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbkNvbXBvbmVudHMuTW9EYXRhTGlzdC5mb3JFYWNoKChjOiBNZXRhb2JqZWN0RGF0YU1vZGVsKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmZpbmRDb2x1bW4oY29sdW1ucywgYy5UaXRsZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLiRDdXN0b21Db21wb25lbnQgPSBjLkNvbXBvbmVudDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZmluZENvbHVtbihjb2x1bW5zOiBSZXBvcnRWaWV3Q29sdW1uW10sIGNvbHVtbjogc3RyaW5nKTogUmVwb3J0Vmlld0NvbHVtbiB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgbGV0IGNvbHVtbkZvdW5kID0gdGhpcy5fZmluZENvbHVtbkJ5RGJOYW1lLnRyYW5zZm9ybShjb2x1bW5zLCBjb2x1bW4pO1xyXG4gICAgICAgIGlmICghY29sdW1uRm91bmQgJiYgdGhpcy5zZWNvbmRhcnlDb2x1bW5zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBjb2x1bW5Gb3VuZCA9IHRoaXMuX2ZpbmRDb2x1bW5CeURiTmFtZS50cmFuc2Zvcm0odGhpcy5zZWNvbmRhcnlDb2x1bW5zLCBjb2x1bW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY29sdW1uRm91bmQ7XHJcbiAgICB9XHJcbn1cclxuIiwiPHRhYmxlXHJcbiAgICBmZC10YWJsZVxyXG4gICAgW3BvcEluXT1cInBvcGluXCJcclxuICAgIFtjbGFzcy5maXhlZF09XCIhY29udGV4dFZpZXc/LkdyaWRfSGlkZUhlYWRlciAmJiAoIXBvcGluIHx8IHNlY29uZGFyeUNvbHVtbnMubGVuZ3RoID09PSAwKVwiXHJcbiAgICBbbm9Cb3JkZXJYXT1cInZpZXdTZXR0aW5nPy5Ob1ZlcnRpY2FsQm9yZGVycyA9PT0gdHJ1ZSB8fCAocG9waW4gJiYgc2Vjb25kYXJ5Q29sdW1ucy5sZW5ndGggPiAwKVwiXHJcbiAgICBbbm9Cb3JkZXJZXT1cInZpZXdTZXR0aW5nPy5Ob0hvcml6dG9uYWxCb3JkZXJzID09PSB0cnVlIHx8IChwb3BpbiAmJiBzZWNvbmRhcnlDb2x1bW5zLmxlbmd0aCA+IDApXCJcclxuICAgIHRhYmxlUmVzaXplclxyXG4gICAgW2ZpdFdpZHRoXT1cImZpdFdpZHRoXCJcclxuICAgIChjb2x1bW5SZXNpemVkKT1cIm9uQ29sdW1uUmVzaXplZCgkZXZlbnQpXCJcclxuICAgIFtjb250YWluZXJXaWR0aF09XCJjb250YWluZXJXaWR0aFwiXHJcbiAgICBbbWluV2lkdGhdPVwiMzBcIlxyXG4gICAgW21pbkhlaWdodF09XCIyMlwiXHJcbiAgICBbcm93UmVzaXplcl09XCJyb3dSZXNpemVyXCJcclxuICAgIFtlbmFibGVSZXNpemluZ109XCJlbmFibGVSZXNpemluZ1wiXHJcbj5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdJZj1cImNvbHVtbnMgfCBtZXJnZUZpZWxkc1RvQ29sdW1uczogdmlld1NldHRpbmc/Lk1lcmdlRmllbGRzVG9Db2x1bW5zPy5Nb0RhdGFMaXN0IGFzIG1lcmdlRmllbGRzVG9Db2x1bW5zXCJcclxuICAgID5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBtZXJnZUZpZWxkc1RvQ29sdW1ucyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJvZHlUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG1lcmdlRmllbGRzVG9Db2x1bW5zIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBtZXJnZUZpZWxkc1RvQ29sdW1ucyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuPC90YWJsZT5cclxuPG5nLXRlbXBsYXRlICNoZWFkZXJUZW1wbGF0ZSBsZXQtY29sdW1ucz5cclxuICAgIDxic3UtYmFyc2EtdGFibGUtaGVhZGVyXHJcbiAgICAgICAgW3RhYmxlV2lkdGhdPVwiZWxXaWR0aFwiXHJcbiAgICAgICAgW3Nob3dEZXRhaWxzSW5Sb3ddPVwic2hvd0RldGFpbHNJblJvd1wiXHJcbiAgICAgICAgW2hpZGVPcGVuSWNvbl09XCJoaWRlT3Blbkljb25cIlxyXG4gICAgICAgIFtyZXNpemVkQnlVc2VyXT1cInJlc2l6ZWRCeVVzZXJcIlxyXG4gICAgICAgIFthbGxDaGVja2VkXT1cImFsbENoZWNrZWRcIlxyXG4gICAgICAgIFtkaXNhYmxlUmVzcG9uc2l2ZV09XCJkaXNhYmxlUmVzcG9uc2l2ZVwiXHJcbiAgICAgICAgW2lzQ2hlY2tMaXN0XT1cImlzQ2hlY2tMaXN0XCJcclxuICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zIHwgZmlsdGVyQ29sdW1uc0J5RGV0YWlsczogZGV0YWlsc0NvbHVtbnNcIlxyXG4gICAgICAgIFtmaXRXaWR0aF09XCJmaXRXaWR0aFwiXHJcbiAgICAgICAgW2Rpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51XT1cImRpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51XCJcclxuICAgICAgICBbaW5saW5lRWRpdE1vZGVdPVwiaW5saW5lRWRpdE1vZGVcIlxyXG4gICAgICAgIFtjb250ZXh0TWVudUl0ZW1zXT1cImNvbnRleHRNZW51SXRlbXNcIlxyXG4gICAgICAgIFtjYW5WaWV3XT1cImNhblZpZXdcIlxyXG4gICAgICAgIFt2aWV3U2V0dGluZ109XCJ2aWV3U2V0dGluZ1wiXHJcbiAgICAgICAgW2hpZGVIZWFkZXJdPVwiY29udGV4dFZpZXcuR3JpZF9IaWRlSGVhZGVyXCJcclxuICAgICAgICAoYWxsQ2hlY2tib3gpPVwib25BbGxDaGVja2JveCgkZXZlbnQpXCJcclxuICAgICAgICAoc29ydEFzY2VuZGluZyk9XCJvblNvcnRBc2NlbmRpbmcoJGV2ZW50KVwiXHJcbiAgICAgICAgKHNvcnREZXNjZW5kaW5nKT1cIm9uU29ydERlc2NlbmRpbmcoJGV2ZW50KVwiXHJcbiAgICAgICAgKGZpbHRlcik9XCJvbkZpbHRlcigkZXZlbnQpXCJcclxuICAgID48L2JzdS1iYXJzYS10YWJsZS1oZWFkZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjYm9keVRlbXBsYXRlIGxldC1jb2x1bW5zPlxyXG4gICAgPHRib2R5XHJcbiAgICAgICAgZmQtdGFibGUtYm9keVxyXG4gICAgICAgIFtub0JvcmRlclhdPVwicG9waW4gJiYgc2Vjb25kYXJ5Q29sdW1ucy5sZW5ndGggPiAwXCJcclxuICAgICAgICBbbm9Cb3JkZXJZXT1cInBvcGluICYmIHNlY29uZGFyeUNvbHVtbnMubGVuZ3RoID4gMFwiXHJcbiAgICA+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vRGF0YUxpc3QgJiYgbW9EYXRhTGlzdC5sZW5ndGggPiAwOyBlbHNlIG5vRGF0YVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbW8gb2YgbW9EYXRhTGlzdCB8IG11bHRpcGxlR3JvdXBCeTogZ3JvdXBieTsgbGV0IGluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IF90cmFja0J5Um93XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd1RlbXBsYXRlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogbW8sIGluZGV4OiBpbmRleCwgY29sdW1uczogY29sdW1ucywgbW9EYXRhTGlzdENvdW50OiBtb0RhdGFMaXN0Lmxlbmd0aCB9XHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3Rib2R5PlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2Zvb3RlclRlbXBsYXRlIGxldC1jb2x1bW5zPlxyXG4gICAgPHRmb290IGZkLXRhYmxlLWZvb3RlciAqbmdJZj1cImhhc1N1bW1hcnlcIj5cclxuICAgICAgICA8dHIgZmQtdGFibGUtcm93IGNsYXNzPVwicm93LXN1bW1hcnlcIj5cclxuICAgICAgICAgICAgPHRkIGZkLXRhYmxlLWNlbGwgKm5nSWY9XCJpc0NoZWNrTGlzdFwiIGNvbHVtblJlc2l6ZXI+XHJcbiAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwiY29sLXRvdGFsLXRleHRcIj57eyAnVG90YWwnIHwgYmJiVHJhbnNsYXRlIH19PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsICpuZ0lmPVwiIWlzQ2hlY2tMaXN0XCIgY2xhc3M9XCJzaW5nbGUtc2VsZWN0XCI+XHJcbiAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwiY29sLXRvdGFsLXRleHRcIj57eyAnVG90YWwnIHwgYmJiVHJhbnNsYXRlIH19PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uSGFzU3VtbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgc3R5bGU9XCJkaXJlY3Rpb246IGx0cjsgZGlzcGxheTogYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbW9EYXRhTGlzdCB8IHRvdGFsU3VtbWFyeTogY29sdW1uLk5hbWUgfCBudW1iZXIgfX08L3N0cm9uZ1xyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGV4dE1lbnVJdGVtcyAmJiBjb250ZXh0TWVudUl0ZW1zLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsIHN0eWxlPVwid2lkdGg6IDEwMHB4XCI+PC90ZD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsICpuZ0lmPVwiY2FuVmlld1wiPjwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgIDwvdGZvb3Q+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjcm93VGVtcGxhdGUgbGV0LW1vIGxldC1pbmRleD1cImluZGV4XCIgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCIgbGV0LW1vRGF0YUxpc3RDb3VudD1cIm1vRGF0YUxpc3RDb3VudFwiPlxyXG4gICAgPGJzdS1iYXJzYS10YWJsZS1yb3dcclxuICAgICAgICBbbW9dPVwibW9cIlxyXG4gICAgICAgIFtzaG93RGV0YWlsc0luUm93XT1cInNob3dEZXRhaWxzSW5Sb3dcIlxyXG4gICAgICAgIFtoaWRlT3Blbkljb25dPVwiaGlkZU9wZW5JY29uXCJcclxuICAgICAgICBbZGV0YWlsc0NvbHVtbnNdPVwiZGV0YWlsc0NvbHVtbnNcIlxyXG4gICAgICAgIFtjYXJ0YWJsZVRlbXBsYXRlXT1cImNhcnRhYmxlVGVtcGxhdGVzW21vLlJlbGF0ZWRNbz8uJFR5cGVEZWZJZF1cIlxyXG4gICAgICAgIFtjYXJ0YWJsZU1vXT1cIm1vLlJlbGF0ZWRNb1wiXHJcbiAgICAgICAgW2NhcnRhYmxlV29ya2Zsb3dEYXRhXT1cIm1vLlNlcmlhbGl6ZWRXb3JrZmxvd0RhdGFcIlxyXG4gICAgICAgIFtzZXJpYWxpemVkUmVsYXRlZE1vXT1cIm1vLlNlcmlhbGl6ZWRSZWxhdGVkTW9cIlxyXG4gICAgICAgIFtkZXRhaWxzVGV4dF09XCJ2aWV3U2V0dGluZz8uRGV0YWlsc1NldHRpbmc/LkJ1dHRvblRleHRcIlxyXG4gICAgICAgIFtkZXRhaWxzQ29tcG9uZW50XT1cImRldGFpbHNDb21wb25lbnRcIlxyXG4gICAgICAgIFtpc0NoZWNrZWRdPVwibW8uJElzQ2hlY2tlZFwiXHJcbiAgICAgICAgW3Zpc2liaWxpdHldPVwibW8uJFZpc2liaWxpdHlcIlxyXG4gICAgICAgIFtleHBhbmRlZF09XCJtby4kRXhwYW5kZWRcIlxyXG4gICAgICAgIFtsZXZlbF09XCJtby4kTGV2ZWxcIlxyXG4gICAgICAgIFtwYXJlbnRFeHBhbmRlZF09XCJtby4kUGFyZW50Py4kRXhwYW5kZWRcIlxyXG4gICAgICAgIFttb0RhdGFMaXN0Q291bnRdPVwibW9EYXRhTGlzdENvdW50XCJcclxuICAgICAgICBbY29sdW1uc0NvdW50XT1cImNvbHVtbnNDb3VudCAtIGRldGFpbHNDb2x1bW5zLmxlbmd0aFwiXHJcbiAgICAgICAgW3R5cGVEZWZJZF09XCJ0eXBlRGVmSWRcIlxyXG4gICAgICAgIFtleHRyYVJlbGF0aW9uXT1cImV4dHJhUmVsYXRpb25cIlxyXG4gICAgICAgIFtmb3JtU2V0dGluZ109XCJmb3JtU2V0dGluZ1wiXHJcbiAgICAgICAgW2luZGV4XT1cImluZGV4XCJcclxuICAgICAgICBbc2V0dGluZ109XCJ2aWV3U2V0dGluZ1wiXHJcbiAgICAgICAgW3NlY29uZGFyeUNvbHVtbnNdPVwic2Vjb25kYXJ5Q29sdW1ucyB8IGZpbHRlckNvbHVtbnNCeURldGFpbHM6IGRldGFpbHNDb2x1bW5zXCJcclxuICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zIHwgZmlsdGVyQ29sdW1uc0J5RGV0YWlsczogZGV0YWlsc0NvbHVtbnNcIlxyXG4gICAgICAgIFtpc05ld0lubGluZU1vXT1cIm1vLiROZXdJbmxpbmVNb1wiXHJcbiAgICAgICAgW2FjY2Vzc109XCJhY2Nlc3NcIlxyXG4gICAgICAgIFtpbmxpbmVFZGl0TW9kZV09XCJpbmxpbmVFZGl0TW9kZVwiXHJcbiAgICAgICAgW2FsbG93SW5saW5lRWRpdF09XCJhbGxvd0lubGluZUVkaXRcIlxyXG4gICAgICAgIFtydGxdPVwicnRsXCJcclxuICAgICAgICBbZGV2aWNlTmFtZV09XCJkZXZpY2VOYW1lXCJcclxuICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcclxuICAgICAgICBbaW5kZXhdPVwiaW5kZXhcIlxyXG4gICAgICAgIFthbGxDb2x1bW5zXT1cImFsbENvbHVtbnNcIlxyXG4gICAgICAgIFtjb250ZXh0TWVudUl0ZW1zXT1cImNvbnRleHRNZW51SXRlbXNcIlxyXG4gICAgICAgIFtjYW5WaWV3XT1cImNhblZpZXdcIlxyXG4gICAgICAgIFtjb25kaXRpb25hbEZvcm1hdHNdPVwiY29uZGl0aW9uYWxGb3JtYXRzXCJcclxuICAgICAgICBbZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVdPVwiZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVcIlxyXG4gICAgICAgIFtuYXZpZ2F0aW9uQXJyb3ddPVwibmF2aWdhdGlvbkFycm93XCJcclxuICAgICAgICBbaXNDaGVja0xpc3RdPVwiaXNDaGVja0xpc3RcIlxyXG4gICAgICAgIChleHBhbmRDbGljayk9XCJvbkV4cGFuZENsaWNrKCRldmVudClcIlxyXG4gICAgICAgIChyb3dDaGVjayk9XCJvblJvd0NoZWNrKCRldmVudClcIlxyXG4gICAgICAgIChyb3dDbGljayk9XCJvblJvd0NsaWNrKCRldmVudClcIlxyXG4gICAgICAgICh1bHZDb21tYW5kKT1cIm9uVWx2Q29tbWFuZCgkZXZlbnQpXCJcclxuICAgICAgICAoc2VsZWN0TmV4dElubGluZVJlY29yZCk9XCJvblNlbGVjdE5leHRJbmxpbmVSZWNvcmQoJGV2ZW50KVwiXHJcbiAgICAgICAgKGVkaXRGb3JtUGFuZWxTYXZlKT1cIm9uRWRpdEZvcm1QYW5lbFNhdmUoJGV2ZW50KVwiXHJcbiAgICAgICAgKGVkaXRGb3JtUGFuZWxDYW5jZWwpPVwib25FZGl0Rm9ybVBhbmVsQ2FuY2VsKCRldmVudClcIlxyXG4gICAgICAgIChlZGl0Rm9ybVBhbmVsVmFsdWVDaGFuZ2UpPVwib25FZGl0Rm9ybVBhbmVsVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgKGNhcnRhYmxlRm9ybUNsb3NlZCk9XCJvbkNhcnRhYmxlRm9ybUNsb3NlZCgkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDwvYnN1LWJhcnNhLXRhYmxlLXJvdz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLXJlbmRlckNvbHVtbi0tPlxyXG48bmctdGVtcGxhdGUgI25vRGF0YT5cclxuICAgIDx0ciAqbmdJZj1cIiFpbmxpbmVFZGl0TW9kZSB8fCAhbmV3SW5saW5lRWRpdE1vXCI+XHJcbiAgICAgICAgPHRkIGNvbHNwYW49XCIxMDAlXCIgc3R5bGU9XCJwYWRkaW5nOiAxMHB4XCI+e3sgJ05vRGF0YScgfCBiYmJUcmFuc2xhdGUgfX08L3RkPlxyXG4gICAgPC90cj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19