@energycap/components 0.26.10 → 0.26.11-rounded-corners-plus.20220107-1502
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/energycap-components.umd.js +32 -27
- package/bundles/energycap-components.umd.js.map +1 -1
- package/bundles/energycap-components.umd.min.js +1 -1
- package/bundles/energycap-components.umd.min.js.map +1 -1
- package/energycap-components.metadata.json +1 -1
- package/energycap-components.min.css +3 -3
- package/esm2015/lib/controls/banner/banner.component.js +1 -1
- package/esm2015/lib/controls/button/button.component.js +1 -1
- package/esm2015/lib/controls/checkbox/checkbox.component.js +1 -1
- package/esm2015/lib/controls/combobox/combobox.component.js +3 -3
- package/esm2015/lib/controls/dropdown/dropdown.component.js +3 -3
- package/esm2015/lib/controls/file-upload/file-upload.component.js +3 -3
- package/esm2015/lib/controls/form-control/form-control.component.js +1 -1
- package/esm2015/lib/controls/menu/menu.component.js +3 -3
- package/esm2015/lib/controls/popover/popover.component.js +1 -1
- package/esm2015/lib/controls/radio-button/radio-button.component.js +1 -1
- package/esm2015/lib/controls/select/select.component.js +1 -1
- package/esm2015/lib/controls/tabs/tabs.component.js +1 -1
- package/esm2015/lib/controls/textbox/textbox.component.js +1 -1
- package/esm2015/lib/display/app-bar/app-bar.component.js +9 -4
- package/esm2015/lib/display/confirm/confirm.component.js +2 -2
- package/esm2015/lib/display/dialog/dialog.component.js +1 -1
- package/esm2015/lib/display/json-display/json-display.component.js +1 -1
- package/esm2015/lib/display/table/searchable-table.component.js +3 -3
- package/esm2015/lib/display/table/table.component.js +1 -1
- package/esm2015/lib/display/tags/tags.component.js +1 -1
- package/fesm2015/energycap-components.js +32 -27
- package/fesm2015/energycap-components.js.map +1 -1
- package/lib/controls/dropdown/dropdown.component.d.ts +1 -0
- package/lib/display/app-bar/app-bar.component.d.ts +3 -2
- package/package.json +1 -1
- package/src/styles/_global-variables.scss +7 -0
- package/src/styles/_variables.scss +1 -1
- package/src/styles/components/_card.scss +5 -2
- package/src/styles/index.scss +1 -0
- package/src/styles/mixins/_control-base.scss +3 -1
- package/src/styles/mixins/_dialog-base.scss +2 -2
- package/src/styles/mixins/_form-control-base.scss +4 -5
- package/src/styles/mixins/_table-base.scss +9 -4
- package/src/styles/mixins/_tabs-base.scss +5 -2
- package/src/styles/mixins/_tags-base.scss +2 -2
- package/src/styles/utilities/_common.scss +30 -2
- package/src/styles/utilities/_layout.scss +13 -13
|
@@ -195,7 +195,7 @@ DialogComponent.decorators = [
|
|
|
195
195
|
{ type: Component, args: [{
|
|
196
196
|
selector: 'ec-dialog',
|
|
197
197
|
template: '<article [style.width.px]="width" [style.min-width]="minWidth" class="dialog-{{size}}" cdkTrapFocus cdkTrapFocusAutoCapture><ng-template #content></ng-template></article>',
|
|
198
|
-
styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@-webkit-keyframes slideIn{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slideIn{0%{transform:translateX(100%)}to{transform:translateX(0)}}:host{align-items:center;background-color:rgba(26,26,35,.5);bottom:0;display:none;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:60}:host.is-open{display:flex}:host.fade-in{-webkit-animation-duration:125ms;-webkit-animation-fill-mode:forwards;-webkit-animation-timing-function:ease-in-out;animation-duration:125ms;animation-fill-mode:forwards;animation-timing-function:ease-in-out}:host.fade-in,:host.fade-out{-webkit-animation-name:fadeIn;animation-name:fadeIn}:host.fade-out{-webkit-animation-duration:.1s;-webkit-animation-fill-mode:forwards;-webkit-animation-timing-function:ease-in-out;animation-direction:reverse;animation-duration:.1s;animation-fill-mode:forwards;animation-timing-function:ease-in-out}:host.is-panel{background-color:transparent}:host.is-panel article{border-bottom:0;border-right:0;border-top:0;bottom:0;box-shadow:0 0 8px rgba(26,26,35,.12);max-height:none;position:absolute;right:0;top:0}:host.is-panel.fade-in{-webkit-animation:none;animation:none}:host.is-panel.fade-in article{-webkit-animation-duration:.25s;-webkit-animation-fill-mode:forwards;-webkit-animation-name:slideIn;-webkit-animation-timing-function:ease-out;animation-duration:.25s;animation-fill-mode:forwards;animation-name:slideIn;animation-timing-function:ease-out}:host.is-panel.fade-out{-webkit-animation:none;animation:none}:host.is-panel.fade-out article{-webkit-animation-duration:225ms;-webkit-animation-fill-mode:forwards;-webkit-animation-name:slideIn;-webkit-animation-timing-function:ease-in;animation-direction:reverse;animation-duration:225ms;animation-fill-mode:forwards;animation-name:slideIn;animation-timing-function:ease-in}:host.is-top-aligned{align-items:flex-start}:host.is-top-aligned article{margin-top:20vh;min-height:auto}article{background-clip:padding-box;background-color:#f1f3f4;border-radius:
|
|
198
|
+
styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@-webkit-keyframes slideIn{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slideIn{0%{transform:translateX(100%)}to{transform:translateX(0)}}:host{align-items:center;background-color:rgba(26,26,35,.5);bottom:0;display:none;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:60}:host.is-open{display:flex}:host.fade-in{-webkit-animation-duration:125ms;-webkit-animation-fill-mode:forwards;-webkit-animation-timing-function:ease-in-out;animation-duration:125ms;animation-fill-mode:forwards;animation-timing-function:ease-in-out}:host.fade-in,:host.fade-out{-webkit-animation-name:fadeIn;animation-name:fadeIn}:host.fade-out{-webkit-animation-duration:.1s;-webkit-animation-fill-mode:forwards;-webkit-animation-timing-function:ease-in-out;animation-direction:reverse;animation-duration:.1s;animation-fill-mode:forwards;animation-timing-function:ease-in-out}:host.is-panel{background-color:transparent}:host.is-panel article{border-bottom:0;border-right:0;border-top:0;bottom:0;box-shadow:0 0 8px rgba(26,26,35,.12);max-height:none;position:absolute;right:0;top:0}:host.is-panel.fade-in{-webkit-animation:none;animation:none}:host.is-panel.fade-in article{-webkit-animation-duration:.25s;-webkit-animation-fill-mode:forwards;-webkit-animation-name:slideIn;-webkit-animation-timing-function:ease-out;animation-duration:.25s;animation-fill-mode:forwards;animation-name:slideIn;animation-timing-function:ease-out}:host.is-panel.fade-out{-webkit-animation:none;animation:none}:host.is-panel.fade-out article{-webkit-animation-duration:225ms;-webkit-animation-fill-mode:forwards;-webkit-animation-name:slideIn;-webkit-animation-timing-function:ease-in;animation-direction:reverse;animation-duration:225ms;animation-fill-mode:forwards;animation-name:slideIn;animation-timing-function:ease-in}:host.is-top-aligned{align-items:flex-start}:host.is-top-aligned article{margin-top:20vh;min-height:auto}article{background-clip:padding-box;background-color:#f1f3f4;border-radius:calc(var(--ec-border-radius, .25rem)*2);box-shadow:0 0 .625rem rgba(26,26,35,.2);display:flex;flex:none;max-height:90vh;max-width:90vw;min-height:9rem}.dialog-xsmall{width:20rem}.dialog-small{width:30rem}.dialog-medium{width:40rem}.dialog-large{width:50rem}.dialog-xlarge{width:60rem}.dialog-full{width:90vw}"]
|
|
199
199
|
},] }
|
|
200
200
|
];
|
|
201
201
|
DialogComponent.ctorParameters = () => [
|
|
@@ -29,7 +29,7 @@ JsonDisplayComponent.decorators = [
|
|
|
29
29
|
{ type: Component, args: [{
|
|
30
30
|
selector: 'ec-json-display',
|
|
31
31
|
template: "<ec-button id=\"{{id}}_copy\"\r\n class=\"copy-button\"\r\n *ngIf=\"jsonDisplay.value\"\r\n type=\"icon\"\r\n icon=\"icon-copy\"\r\n [ecCopyButton]=\"jsonDisplay\">\r\n</ec-button>\r\n<pre><code>{{jsonDisplay.value}}</code></pre>",
|
|
32
|
-
styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}:host{background:#354751;border-radius:
|
|
32
|
+
styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}:host{background:#354751;border-radius:calc(var(--ec-border-radius, .25rem)*1.5);color:hsla(0,0%,100%,.6);display:block;font-size:.75rem;max-height:15rem;min-height:2.125rem;overflow-x:auto;overflow-y:auto;position:relative;text-align:right}pre{margin-bottom:0;margin-top:-2rem;text-align:left}pre code{display:block;padding:.5rem}.copy-button{position:sticky;top:0}.copy-button ::ng-deep .ec-icon{color:hsla(0,0%,100%,.6)!important}.copy-button ::ng-deep button:hover{background-color:transparent!important}.copy-button ::ng-deep button:hover .ec-icon{color:#fff!important}"]
|
|
33
33
|
},] }
|
|
34
34
|
];
|
|
35
35
|
JsonDisplayComponent.ctorParameters = () => [
|
|
@@ -237,8 +237,8 @@ export class SearchableTableComponent {
|
|
|
237
237
|
SearchableTableComponent.decorators = [
|
|
238
238
|
{ type: Component, args: [{
|
|
239
239
|
selector: 'ec-searchable-table',
|
|
240
|
-
template: "<header *ngIf=\"!hideHeader\"\r\n class=\"d-flex flex-shrink align-items-center mb-3\">\r\n <ec-textbox id=\"{{id}}_searchbox\"\r\n *ngIf=\"!hideSearchControl\"\r\n class=\"mb-0 flex-grow mr-2\"\r\n [autofocus]=\"autofocus\"\r\n [formModel]=\"searchModel\"\r\n [tabindex]=\"searchboxTabIndex\"\r\n [placeholder]=\"searchboxPlaceholder\"\r\n [readonly]=\"searchboxReadonly\"></ec-textbox>\r\n <div class=\"flex-grow\">\r\n <ng-content select=\".searchable-table-controls\"></ng-content>\r\n </div>\r\n</header>\r\n<section id=\"{{id}}_card\"\r\n class=\"card m-0 d-flex flex-column bg-content\"\r\n [class.is-translucent]=\"status.status !== 'error'\"\r\n ecOverlay\r\n [status]=\"status.status\"\r\n [message]=\"status.message\"\r\n [displayAsMask]=\"true\">\r\n <ng-content select=\".card-header\"></ng-content>\r\n <ec-table id=\"{{id}}_table\"\r\n class=\"flex-shrink-max {{tableClasses}}\"\r\n [class.is-fixed]=\"tableLayoutFixed\"\r\n [sortable]=\"sortable\"\r\n [sort]=\"sort\"\r\n (sortChange)=\"onSortChange($event)\"\r\n [resizable]=\"resizable\"\r\n [scrollable]=\"true\"\r\n [selectable]=\"selectable\"\r\n [selectionContext]=\"selectionContext\"\r\n [selectionToolbarTemplate]=\"selectionToolbarTemplate\"\r\n [resizableColumns]=\"resizableColumns\">\r\n <ng-content></ng-content>\r\n </ec-table>\r\n\r\n <!-- pagination footer visible if table is page-able and there are more than one page of results -->\r\n <footer *ngIf=\"!hideFooter && pageable && searchResults.totalItemsBeforePaging! > pageSize!\" class=\"d-flex flex-shrink align-items-center border-top\">\r\n <ec-table-pagination id=\"{{id}}_pager\"\r\n class=\"font-color-primary\"\r\n [totalItems]=\"searchResults.totalItemsBeforePaging\"\r\n [pageSize]=\"pageSize\"\r\n [maxTabs]=\"maxTabs\"\r\n [pageNumber]=\"pageInfo?.pageNumber\"\r\n (pageChanged)=\"onPageChange($event)\">\r\n </ec-table-pagination>\r\n <div id=\"resultsCount\"\r\n *ngIf=\"searchResults?.items?.length\"\r\n class=\"ml-auto mr-2 font-color-hint text-truncate\" \r\n title=\"{{resultsCount}} {{additionalCountText}}\">{{resultsCount}} {{additionalCountText}}</div>\r\n </footer>\r\n\r\n <!-- default footer: visible if hideFooter is false and table is not page-able or there are only one page of results (always shows if there is a caption to indicate no results) -->\r\n <footer *ngIf=\"(!hideFooter && (!pageable || searchResults.totalItemsBeforePaging! <= pageSize!)) || tableCaption\"\r\n class=\"p-2 d-flex\"\r\n [class.has-results]=\"searchResults?.items?.length\">\r\n <ng-content *ngIf=\"!tableCaption\"\r\n select=\".searchable-table-footer\"></ng-content>\r\n <div id=\"tableCaption\"\r\n *ngIf=\"tableCaption\"\r\n [innerHTML]=\"tableCaption\"></div>\r\n <div id=\"resultsCount\"\r\n *ngIf=\"searchResults?.items?.length\"\r\n class=\"ml-auto text-truncate\"\r\n title=\"{{resultsCount}} {{additionalCountText}}\">{{resultsCount}} {{additionalCountText}}</div>\r\n </footer>\r\n</section>",
|
|
241
|
-
styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}:host{display:flex;flex:1 1;flex-direction:column;min-height:0}footer{font-size:.75rem;line-height:1rem}footer.has-results{border-top:1px solid rgba(26,26,35,.18);color:rgba(26,26,35,.38);text-align:right}"]
|
|
240
|
+
template: "<header *ngIf=\"!hideHeader\"\r\n class=\"d-flex flex-shrink align-items-center mb-3\">\r\n <ec-textbox id=\"{{id}}_searchbox\"\r\n *ngIf=\"!hideSearchControl\"\r\n class=\"mb-0 flex-grow mr-2\"\r\n [autofocus]=\"autofocus\"\r\n [formModel]=\"searchModel\"\r\n [tabindex]=\"searchboxTabIndex\"\r\n [placeholder]=\"searchboxPlaceholder\"\r\n [readonly]=\"searchboxReadonly\"></ec-textbox>\r\n <div class=\"flex-grow\">\r\n <ng-content select=\".searchable-table-controls\"></ng-content>\r\n </div>\r\n</header>\r\n<section id=\"{{id}}_card\"\r\n class=\"card m-0 d-flex flex-column bg-content\"\r\n [class.is-translucent]=\"status.status !== 'error'\"\r\n [class.has-mask]=\"status.status !== 'hasData'\"\r\n ecOverlay\r\n [status]=\"status.status\"\r\n [message]=\"status.message\"\r\n [displayAsMask]=\"true\">\r\n <ng-content select=\".card-header\"></ng-content>\r\n <ec-table id=\"{{id}}_table\"\r\n class=\"flex-shrink-max {{tableClasses}}\"\r\n [class.is-fixed]=\"tableLayoutFixed\"\r\n [sortable]=\"sortable\"\r\n [sort]=\"sort\"\r\n (sortChange)=\"onSortChange($event)\"\r\n [resizable]=\"resizable\"\r\n [scrollable]=\"true\"\r\n [selectable]=\"selectable\"\r\n [selectionContext]=\"selectionContext\"\r\n [selectionToolbarTemplate]=\"selectionToolbarTemplate\"\r\n [resizableColumns]=\"resizableColumns\">\r\n <ng-content></ng-content>\r\n </ec-table>\r\n\r\n <!-- pagination footer visible if table is page-able and there are more than one page of results -->\r\n <footer *ngIf=\"!hideFooter && pageable && searchResults.totalItemsBeforePaging! > pageSize!\" class=\"d-flex flex-shrink align-items-center border-top\">\r\n <ec-table-pagination id=\"{{id}}_pager\"\r\n class=\"font-color-primary\"\r\n [totalItems]=\"searchResults.totalItemsBeforePaging\"\r\n [pageSize]=\"pageSize\"\r\n [maxTabs]=\"maxTabs\"\r\n [pageNumber]=\"pageInfo?.pageNumber\"\r\n (pageChanged)=\"onPageChange($event)\">\r\n </ec-table-pagination>\r\n <div id=\"resultsCount\"\r\n *ngIf=\"searchResults?.items?.length\"\r\n class=\"ml-auto mr-2 font-color-hint text-truncate\" \r\n title=\"{{resultsCount}} {{additionalCountText}}\">{{resultsCount}} {{additionalCountText}}</div>\r\n </footer>\r\n\r\n <!-- default footer: visible if hideFooter is false and table is not page-able or there are only one page of results (always shows if there is a caption to indicate no results) -->\r\n <footer *ngIf=\"(!hideFooter && (!pageable || searchResults.totalItemsBeforePaging! <= pageSize!)) || tableCaption\"\r\n class=\"p-2 d-flex\"\r\n [class.has-results]=\"searchResults?.items?.length\">\r\n <ng-content *ngIf=\"!tableCaption\"\r\n select=\".searchable-table-footer\"></ng-content>\r\n <div id=\"tableCaption\"\r\n *ngIf=\"tableCaption\"\r\n [innerHTML]=\"tableCaption\"></div>\r\n <div id=\"resultsCount\"\r\n *ngIf=\"searchResults?.items?.length\"\r\n class=\"ml-auto text-truncate\"\r\n title=\"{{resultsCount}} {{additionalCountText}}\">{{resultsCount}} {{additionalCountText}}</div>\r\n </footer>\r\n</section>",
|
|
241
|
+
styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}:host{display:flex;flex:1 1;flex-direction:column;min-height:0}:host ::ng-deep .card-header+ec-table.is-selectable th{height:2.5rem;padding-bottom:.9375rem}:host ::ng-deep .card-header+ec-table.is-selectable th.is-resizable .handle{padding-top:.5rem}:host ::ng-deep .card-header+ec-table.is-selectable th.is-resizable .handle:before{top:.5rem}:host ::ng-deep .card-header+ec-table.is-selectable .selectable-table-toolbar{height:2.5rem;padding-bottom:.5rem}footer{font-size:.75rem;line-height:1rem}footer.has-results{border-top:1px solid rgba(26,26,35,.18);color:rgba(26,26,35,.38);text-align:right}.card.has-mask{min-height:15rem}"]
|
|
242
242
|
},] }
|
|
243
243
|
];
|
|
244
244
|
SearchableTableComponent.ctorParameters = () => [
|
|
@@ -281,4 +281,4 @@ SearchableTableComponent.propDecorators = {
|
|
|
281
281
|
additionalCountText: [{ type: Input }],
|
|
282
282
|
selectable: [{ type: Input }]
|
|
283
283
|
};
|
|
284
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90YWJsZS9zZWFyY2hhYmxlLXRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFpQixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEosT0FBTyxFQUFlLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQU0sTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRWpFLE9BQU8sRUFBYyx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVl4RSxNQUFNLE9BQU8sd0JBQXdCO0lBMExuQyxZQUNVLFlBQTBCLEVBQzFCLGdCQUFrQyxFQUNsQyxZQUEwQjtR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WixnQkFBZ0I7WUFPaEIsWUFBWTs7O2lCQWdCbEIsS0FBSzt3QkFDTCxLQUFLO3VCQUNMLEtBQUs7bUJBQ0wsS0FBSzt3QkFDTCxLQUFLOzJCQUtMLEtBQUs7eUJBR0wsTUFBTTtnQ0FHTixNQUFNLFNBQUMsWUFBWTttQ0FHbkIsS0FBSzt3QkFPTCxLQUFLOzRCQU9MLEtBQUs7cUNBWUwsS0FBSztvQkFVTCxLQUFLO3VCQVdMLEtBQUs7c0JBR0wsS0FBSztxQkFHTCxLQUFLOytCQUtMLEtBQUs7MEJBR0wsTUFBTTtnQ0FHTixLQUFLOzJCQUdMLEtBQUs7Z0NBR0wsS0FBSzt5QkFHTCxLQUFLO3lCQUdMLEtBQUs7eUJBR0wsS0FBSzt1QkFzQkwsS0FBSzt1QkFLTCxLQUFLO3NCQUtMLEtBQUs7Z0NBS0wsS0FBSzsrQkFHTCxLQUFLO3VDQUdMLEtBQUs7K0JBRUwsZUFBZSxTQUFDLHdCQUF3QixFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQztrQ0FHN0QsS0FBSzt5QkFHTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBFTVBUWSwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgbWFwLCBwbHVjaywgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCwgc2tpcFVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBFcnJvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2Vycm9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPdmVybGF5IH0gZnJvbSAnLi4vdmlldy1vdmVybGF5L3ZpZXctb3ZlcmxheS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZVNvcnQgfSBmcm9tICcuL3RhYmxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBhZ2luZ0luZm8sIFRhYmxlUGFnaW5hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtcGFnaW5hdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSb3dDb3VudFBpcGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvZGlzcGxheS9waXBlcy9yb3ctY291bnQucGlwZSc7XHJcbmltcG9ydCB7IFRhYmxlU2VsZWN0YWJsZVJvd0NvbnRleHQgfSBmcm9tICcuL3RhYmxlLXNlbGVjdGFibGUtcm93LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc2l6YWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vcmVzaXphYmxlLWNvbHVtbi5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IHR5cGUgVGFibGVTZWFyY2hSZXN1bHRzID0geyBpdGVtczogdW5rbm93bltdLCB0b3RhbEl0ZW1zOiBudW1iZXIsIHRvdGFsSXRlbXNCZWZvcmVQYWdpbmc/OiBudW1iZXIgfTtcclxuZXhwb3J0IHR5cGUgU2VhcmNoYWJsZVRhYmxlUmVmcmVzaE9wdGlvbnMgPSB7IGNsZWFyU2VhcmNoPzogYm9vbGVhbiB9O1xyXG5cclxudHlwZSBTZWFyY2hhYmxlVGFibGVGb3JtTW9kZWwgPSB7IHNlYXJjaE1vZGVsPzogc3RyaW5nIH07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLXNlYXJjaGFibGUtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2hhYmxlLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2hhYmxlLXRhYmxlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNlYXJjaGFibGVUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQElucHV0KCkgaWQgPSAnJztcclxuICBASW5wdXQoKSByZXNpemFibGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzb3J0YWJsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNvcnQ/OiBUYWJsZVNvcnQ7XHJcbiAgQElucHV0KCkgYXV0b2ZvY3VzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlNldCB0byBhIHNwYWNlLXNlcGFyYXRlZCBzZXQgb2Ygc3RyaW5ncyB0aGF0IHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZWMtdGFibGUgY2xhc3MgYXR0cmlidXRlXHJcbiAgICogdGhpcyBhbGxvd3MgZmluZXIgY29udHJvbCBvdmVyIHN0eWxpbmcuXHJcbiAgICovXHJcbiAgQElucHV0KCkgdGFibGVDbGFzc2VzOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqIEVtaXRzIHdoZW4gdGFibGUgc29ydCBoYXMgY2hhbmdlZCAqL1xyXG4gIEBPdXRwdXQoKSBzb3J0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8VGFibGVTb3J0PiA9IG5ldyBFdmVudEVtaXR0ZXI8VGFibGVTb3J0PigpO1xyXG5cclxuICAvKiogRW1pdHMgd2hlbiB0aGUgdGFibGUgcGFnZSBoYXMgY2hhbmdlZCAqL1xyXG4gIEBPdXRwdXQoJ3BhZ2VDaGFuZ2UnKSBwYWdlQ2hhbmdlRW1pdHRlcjogRXZlbnRFbWl0dGVyPFBhZ2luZ0luZm8+ID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdpbmdJbmZvPigpO1xyXG5cclxuICAvKiogUGxhY2Vob2xkZXIgdGV4dCBmb3IgdGhlIHNlYXJjaGJveCAqL1xyXG4gIEBJbnB1dCgpIHNlYXJjaGJveFBsYWNlaG9sZGVyID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm1Hcm91cCBmb3IgdGhlIHNlYXJjaGJveFxyXG4gICAqXHJcbiAgICogVGhlIHJlZmVyZW5jZWQgRm9ybUdyb3VwICoqbXVzdCoqIGNvbnRhaW4gYSBGb3JtQ29udHJvbCBjYWxsZWQgJ3NlYXJjaE1vZGVsJy5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgZm9ybU1vZGVsITogRm9ybUdyb3VwO1xyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5ZWQgaW4gb3ZlcmxheSB3aGVuIG5vIGRhdGEgaXMgcmV0dXJuZWQgKHdpdGhvdXQgc2VhcmNoaW5nKS5cclxuICAgKlxyXG4gICAqIERlZmF1bHRzIHRvIFwiU2VhcmNoYWJsZVRhYmxlX0RlZmF1bHRfTm9EYXRhX1NDXCJcclxuICAgKi9cclxuICBASW5wdXQoKSBub0RhdGFNZXNzYWdlOiBzdHJpbmcgPSAnU2VhcmNoYWJsZVRhYmxlX0RlZmF1bHRfTm9EYXRhX1NDJztcclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheWVkIGluIG92ZXJsYXkgd2hlbiBubyBkYXRhIGlzIHJldHVybmVkIChhZnRlciBzZWFyY2hpbmcpLlxyXG4gICAqIEVuc3VyZSB0cmFuc2xhdGlvbiBoYXMgYW4gaW50ZXJwb2xhdGlvbiBwbGFjZWhvbGRlciBmb3IgXCJzZWFyY2hUZXh0XCIuXHJcbiAgICpcclxuICAgKiBEZWZhdWx0cyB0byBcIlNlYXJjaGFibGVUYWJsZV9EZWZhdWx0X05vTWF0Y2hlc19TQ1wiXHJcbiAgICpcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIC8vIDcgcmVxdWlyZXMgc2luZ2xlIGN1cmx5IGJyYWNlc1xyXG4gICAqIE5vIGl0ZW1zIGZvdW5kIG1hdGNoaW5nIDxzdHJvbmc+e3tzZWFyY2hUZXh0fX08L3N0cm9uZz5cclxuICAgKi9cclxuICBASW5wdXQoKSBub1NlYXJjaFJlc3VsdHNNZXNzYWdlOiBzdHJpbmcgPSAnU2VhcmNoYWJsZVRhYmxlX0RlZmF1bHRfTm9NYXRjaGVzX1NDJztcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhdGVzIGhvc3RpbmcgcGFnZSBpcyByZWFkeSBmb3IgdGhlIHRhYmxlIHRvIGxvYWQgZGF0YS5cclxuICAgKlxyXG4gICAqIE5leHQgYW5kIENvbXBsZXRlIHRoaXMgb2JzZXJ2YWJsZSBhZnRlciBob3N0aW5nIHBhZ2UgaGFzIG1hZGUgYW55IHByZWxpbWluYXJ5XHJcbiAgICogQVBJIChvciBvdGhlciBhc3luY2hyb25vdXMpIGNhbGxzIHRvIGxvYWQgcHJlcmVxdWlzaXRlIGRhdGEgdXBvbiB3aGljaCB0aGUgY29kZVxyXG4gICAqIGluIHRoZSBgZ2V0SXRlbXNgIGZ1bmN0aW9uIGRlcGVuZHMuICBVc2UgYSBgUmVwbGF5U3ViamVjdGAgdG8gZW5zdXJlIGV2ZXJ5IGNvbXBvbmVudFxyXG4gICAqIHRoYXQgdXNlcyB0aGlzIG9ic2VydmFibGUgZ2V0cyB0aGUgTmV4dCBhbmQgQ29tcGxldGUgbm90aWZpY2F0aW9ucy5cclxuICAgKi9cclxuICBASW5wdXQoKSByZWFkeSE6IE9ic2VydmFibGU8dm9pZD47XHJcblxyXG4gIC8qKlxyXG4gICAqIEZ1bmN0aW9uIGNhbGxlZCB0byBnZXQgaXRlbXMgdG8gZGlzcGxheSBpbiB0aGUgdGFibGUuXHJcbiAgICogSWYgcGFnZWFibGUgaXMgdHJ1ZSwgdGhlIFRhYmxlU2VhcmNoUmVzdWx0cyBuZWVkIHRvIGluY2x1ZGUgdG90YWxJdGVtc0JlZm9yZVBhZ2luZywgd2hpY2ggaXMgdGhlXHJcbiAgICogY291bnQgb2YgaXRlbXMgYmVmb3JlIHlvdSd2ZSBhcHBsaWVkIGFueSBwYWdpbmF0aW9uIChpLmUuIHRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMgdGhhdCBjYW1lIGJhY2sgZnJvbSB0aGUgc2VhcmNoKS5cclxuICAgKlxyXG4gICAqIE1ha2Ugc3VyZSB0byBiaW5kIHRoZSBzY29wZSBpbiB0aGUgdGVtcGxhdGVcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIFtnZXRJdGVtc109XCJ5b3VyRnVuY3Rpb24uYmluZCh0aGlzKVwiXHJcbiAgICovXHJcbiAgQElucHV0KCkgZ2V0SXRlbXMhOiAoc2VhcmNoPzogc3RyaW5nLCBwYWdlQ2hhbmdlSW5mbz86IFBhZ2luZ0luZm8pID0+IE9ic2VydmFibGU8VGFibGVTZWFyY2hSZXN1bHRzPjtcclxuXHJcbiAgLyoqIE9ic2VydmFibGUgdGhhdCB3aWxsIGZvcmNlIHRoZSBnZXRJdGVtcyBmdW5jdGlvbiB0byBnZXQgY2FsbGVkIGFnYWluICovXHJcbiAgQElucHV0KCkgcmVmcmVzaD86IE9ic2VydmFibGU8U2VhcmNoYWJsZVRhYmxlUmVmcmVzaE9wdGlvbnMgfCB1bmRlZmluZWQ+O1xyXG5cclxuICAvKiogQWxsb3cgdGhlIGhvc3QgY29tcG9uZW50IHRvIHN1cHBseSBhbiBvdmVybGF5IHRvIGNvbnRyb2wgdGhlIHBlbmRpbmcgc3RhdGUgb2YgdGhlIHRhYmxlICovXHJcbiAgQElucHV0KCkgc3RhdHVzOiBPdmVybGF5ID0gbmV3IE92ZXJsYXkoJ2hhc0RhdGEnKTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgdW5kZXJseWluZyB0YWJsZSdzIGxheW91dCB0byBmaXhlZC5cclxuICAgKi9cclxuICBASW5wdXQoKSB0YWJsZUxheW91dEZpeGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBFbWl0cyBpdGVtcyByZXR1cm5lZCBieSB0aGUgZ2V0SXRlbXMgZnVuY3Rpb24sIGFsb25nIHdpdGggdG90YWwgY291bnQgKi9cclxuICBAT3V0cHV0KCkgaXRlbXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxUYWJsZVNlYXJjaFJlc3VsdHM+ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVNlYXJjaFJlc3VsdHM+KCk7XHJcblxyXG4gIC8qKiBPcHRpb25hbCB0YWIgaW5kZXggZm9yIHRoZSBzZWFyY2hib3ggKi9cclxuICBASW5wdXQoKSBzZWFyY2hib3hUYWJJbmRleD86IG51bWJlcjtcclxuXHJcbiAgLyoqIE1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIHRvIHNob3cgaW4gdGhlIHRhYmxlIChkZWZhdWx0OiAxMDApICovXHJcbiAgQElucHV0KCkgbWF4SXRlbUNvdW50OiBudW1iZXIgPSAxMDA7XHJcblxyXG4gIC8qKiBTZXQgdG8gdHJ1ZSB0byBoaWRlIHNlYXJjaCBib3ggKGRvZXMgbm90IGhpZGUgdGhlIG90aGVyIHNlYXJjaGFibGUgdGFibGUgY29udHJvbHMgKi9cclxuICBASW5wdXQoKSBoaWRlU2VhcmNoQ29udHJvbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogU2V0IHRvIHRydWUgdG8gaGlkZSB0aGUgZW50aXJlIGhlYWRlciAqL1xyXG4gIEBJbnB1dCgpIGhpZGVIZWFkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIFR5cGUgb2Ygb2JqZWN0IGluIHRoZSB0YWJsZS4gRGlzcGxheWVkIGluIGZvb3RlciAoZGVmYXVsdDogJ3Jlc3VsdHMnKSovXHJcbiAgQElucHV0KCkgb2JqZWN0VHlwZTogc3RyaW5nID0gJ3Jlc3VsdHMnO1xyXG5cclxuICAvKiogU2V0IHRvIHRydWUgdG8gaGlkZSB0aGUgdGFibGUgZm9vdGVyICovXHJcbiAgQElucHV0KCkgaGlkZUZvb3RlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBTZXQgdG8gdHJ1ZSB0byBlbmFibGUgcGFnaW5nLiBJZiBwYWdpbmcgaXMgZW5hYmxlZCwgcGFnZVNpemUgbXVzdCBiZSBwcm92aWRlZC5cclxuICAgKiBnZXRJdGVtcyB3aWxsIGJlIHBhc3NlZCBib3RoIGEgc2VhcmNoIGFuZCBhIFBhZ2luZ0luZm8gb2JqZWN0IHdoZW4gY2FsbGVkLiBJdCBtdXN0IGluY2x1ZGUgdG90YWxJdGVtc0JlZm9yZVBhZ2luZyBpbiB0aGUgVGFibGVTZWFyY2hSZXN1bHRzIG91dHB1dC5cclxuICAgKiBIZXJlIGlzIGEgc2ltcGxlIGltcGxlbWVudGF0aW9uOiBcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIGdldEl0ZW1zKHNlYXJjaD86IHN0cmluZywgcGFnZUNoYW5nZUluZm8/OiBQYWdpbmdJbmZvKTogT2JzZXJ2YWJsZTxUYWJsZVNlYXJjaFJlc3VsdHM+IHtcclxuICAgICAgbGV0IHJlc3VsdHM6IFNpbXBsZUl0ZW1bXSA9IFsuLi50aGlzLnBhZ2luYXRlZFRhYmxlSXRlbXNdO1xyXG4gICAgICAvL2FwcGx5IHNlYXJjaFxyXG4gICAgICBpZihzZWFyY2gpIHtcclxuICAgICAgICByZXN1bHRzID0gdGhpcy5wYWdpbmF0ZWRUYWJsZUl0ZW1zLmZpbHRlcihpID0+IGkuYS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaC50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAgIH1cclxuICAgICAgLy9nZXQgY291bnQgYmVmb3JlIGFwcGx5aW5nIHBhZ2luZ1xyXG4gICAgICBsZXQgY291bnRCZWZvcmVQYWdpbmcgPSByZXN1bHRzLmxlbmd0aDtcclxuICAgICAgLy9hcHBseSBwYWdpbmdcclxuICAgICAgaWYocGFnZUNoYW5nZUluZm8pIHtcclxuICAgICAgICByZXN1bHRzID0gcmVzdWx0cy5zbGljZShwYWdlQ2hhbmdlSW5mbyEuc2tpcCwgcGFnZUNoYW5nZUluZm8hLnNraXAgKyBwYWdlQ2hhbmdlSW5mbyEucGFnZVNpemUpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBvZih7IGl0ZW1zOiByZXN1bHRzLCB0b3RhbEl0ZW1zOiByZXN1bHRzLmxlbmd0aCwgdG90YWxJdGVtc0JlZm9yZVBhZ2luZzogY291bnRCZWZvcmVQYWdpbmcgfSk7XHJcbiAgICB9XHJcbiAgKi9cclxuICBASW5wdXQoKSBwYWdlYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBNYXggc2l6ZSBvZiBhIHBhZ2UuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcGFnZVNpemU/OiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gKiBNYXhpbXVtIG51bWJlciBvZiBwYWdlIHRhYnMgdG8gc2hvd1xyXG4gKi9cclxuICBASW5wdXQoKSBtYXhUYWJzPzogbnVtYmVyID0gMTA7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ha2VzIHRoZSBzZWFyY2hib3ggcmVhZG9ubHkgaWYgdHJ1ZS5cclxuICAgKi9cclxuICBASW5wdXQoKSBzZWFyY2hib3hSZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogUGFzc2VkIHRvIHRoZSBpbm5lciBUYWJsZUNvbXBvbmVudCB0byBlbmFibGUgcm93IHNlbGVjdGlvbiAqL1xyXG4gIEBJbnB1dCgpIHNlbGVjdGlvbkNvbnRleHQ/OiBUYWJsZVNlbGVjdGFibGVSb3dDb250ZXh0O1xyXG5cclxuICAvKiogUGFzc2VkIHRvIHRoZSBpbm5lciBUYWJsZUNvbXBvbmVudCB0byBkaXNwbGF5IGEgdG9vbGJhciB3aGVuIDEgb3IgbW9yZSByb3dzIGFyZSBzZWxlY3RlZC4gUmVxdWlyZXMgYFtzZWxlY3Rpb25Db250ZXh0XWAgdG8gYmUgZGVmaW5lZC4gKi9cclxuICBASW5wdXQoKSBzZWxlY3Rpb25Ub29sYmFyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIFxyXG4gIEBDb250ZW50Q2hpbGRyZW4oUmVzaXphYmxlQ29sdW1uQ29tcG9uZW50LCB7ZGVzY2VuZGFudHM6IHRydWV9KSByZXNpemFibGVDb2x1bW5zITogUXVlcnlMaXN0PFJlc2l6YWJsZUNvbHVtbkNvbXBvbmVudD47XHJcblxyXG4gIC8qKiBPcHRpb25hbCB0ZXh0IHRvIGFkZCB0byB0aGUgcmVzdWx0cyBjb3VudCBpbiB0aGUgdGFibGUgZm9vdGVyLiBUaGlzIHRleHQgd2lsbCBiZSBhZGRlZCBhZnRlciB0aGUgY291bnQgYW5kIG9iamVjdFR5cGUuICovXHJcbiAgQElucHV0KCkgYWRkaXRpb25hbENvdW50VGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKiBFbmFibGVzIHRhYmxlIHJvdyBzZWxlY3Rpb24gYW5kIHJvdyBoaWdobGlnaHRpbmcgc3R5bGVzIHdoZW4gdHJ1ZSAqL1xyXG4gIEBJbnB1dCgpIHNlbGVjdGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogUGFnaW5nSW5mbyBmb3IgdGhlIGN1cnJlbnQgcGFnZS5cclxuICAgKi9cclxuICBwdWJsaWMgcGFnZUluZm8/OiBQYWdpbmdJbmZvO1xyXG5cclxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBzZWFyY2hNb2RlbCAqL1xyXG4gIHB1YmxpYyBnZXQgc2VhcmNoTW9kZWwoKTogRm9ybUNvbnRyb2wge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybU1vZGVsLmNvbnRyb2xzLnNlYXJjaE1vZGVsIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGV4dCBkaXNwbGF5ZWQgaW4gdGhlIGZvb3Rlci5cclxuICAgKiBTb21ldGltZXMgYG5vRGF0YU1lc3NhZ2VgLCBzb21ldGltZXMgYG5vU2VhcmNoUmVzdWx0c01lc3NhZ2VgXHJcbiAgICovXHJcbiAgcHVibGljIHRhYmxlQ2FwdGlvbjogc3RyaW5nID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy5ub0RhdGFNZXNzYWdlIHx8ICdTZWFyY2hhYmxlVGFibGVfRGVmYXVsdF9Ob0RhdGFfU0MnKTtcclxuXHJcbiAgLyoqIGNvdW50IG9mIHJlc3VsdHMgZGlzcGxheWVkIGluIHRoZSB0YWJsZSAqL1xyXG4gIHB1YmxpYyByZXN1bHRzQ291bnQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKiogSXRlbXMgcmV0dXJuZWQgYnkgdGhlIGdldEl0ZW1zIGZ1bmN0aW9uLCBhbG9uZyB3aXRoIHRvdGFsIGNvdW50ICovXHJcbiAgcHVibGljIHNlYXJjaFJlc3VsdHM6IFRhYmxlU2VhcmNoUmVzdWx0cyA9IHsgaXRlbXM6IFtdLCB0b3RhbEl0ZW1zOiAwIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHBhc3NlZCBhbiBpbnB1dCBmb3IgcmVmcmVzaCwgdHJpZ2dlcnMgcmVsb2FkaW5nIGl0ZW1zLlxyXG4gICAqIE90aGVyd2lzZSwgY29tcGxldGVzIGltbWVkaWF0ZWx5ICh3aWxsIG5ldmVyIHRyaWdnZXIgcmVsb2FkKS5cclxuICAgKi9cclxuICBwcml2YXRlIHJlZnJlc2hUcmlnZ2VyOiBPYnNlcnZhYmxlPFNlYXJjaGFibGVUYWJsZUZvcm1Nb2RlbCB8IHVuZGVmaW5lZD4gPSBFTVBUWTtcclxuICBwcml2YXRlIGRlc3Ryb3llZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHByaXZhdGUgcGFnZUNoYW5nZWQ6IFN1YmplY3Q8U2VhcmNoYWJsZVRhYmxlRm9ybU1vZGVsPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIC8qKiBUcmlnZ2VycyB0aGUgaW5pdGlhbCBsb2FkIG9mIHRoZSB0YWJsZSAqL1xyXG4gIHByaXZhdGUgaW5pdFRhYmxlID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZXJyb3JTZXJ2aWNlOiBFcnJvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvd0NvdW50UGlwZTogUm93Q291bnRQaXBlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0YXR1cy5zZXRTdGF0dXMoJ3BlbmRpbmcnLCAnTG9hZGluZycpO1xyXG4gICAgdGhpcy5zZXRVcFJlZnJlc2hUcmlnZ2VyKCk7XHJcblxyXG4gICAgLy8gV2F0Y2ggZm9yIHNlYXJjaGJveC9vdGhlciBjb250cm9sIGNoYW5nZXMgb3IgcmVmcmVzaCByZXF1ZXN0c1xyXG4gICAgY29uc3Qgc2VhcmNoT3JSZWZyZXNoID0gbWVyZ2UoXHJcbiAgICAgIHRoaXMuZm9ybU1vZGVsLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICAgIHNraXBVbnRpbCh0aGlzLnJlYWR5KSxcclxuICAgICAgICBkZWJvdW5jZVRpbWUoMzAwKVxyXG4gICAgICApLFxyXG4gICAgICB0aGlzLnJlZnJlc2hUcmlnZ2VyLFxyXG4gICAgICB0aGlzLmluaXRUYWJsZVxyXG4gICAgKS5waXBlKHRhcCgoKT0+IHtcclxuICAgICAgLy9hIGNoYW5nZSB0byBhbnkgZm9ybSBjb250cm9sIG9yIGEgcmVmcmVzaCBzaG91bGQgcmVzZXQgdGhlIHBhZ2VJbmZvIHRvIHRoZSBmaXJzdCBwYWdlIGlmIHRoZSB0YWJsZSBpcyBwYWdlYWJsZS5cclxuICAgICAgLy8oaWYgd2UgZGlkbnQgcmVzZXQgdGhlIHBhZ2VJbmZvLCB3ZSdkIGhhdmUgdG8gY2FsbCBnZXRJdGVtcyB3aXRoIHRoZSBwcmV2aW91cyBwYWdlSW5mbywgd2hpY2ggbWF5IG5vdCBiZSB2YWxpZCBmb3IgdGhlIG5ldyByZXN1bHRzKVxyXG4gICAgICBpZih0aGlzLnBhZ2VhYmxlKSB7XHJcbiAgICAgICAgdGhpcy5wYWdlSW5mbyA9IFRhYmxlUGFnaW5hdGlvbkNvbXBvbmVudC5nZXRQYWdpbmdJbmZvKDEsIHRoaXMucGFnZVNpemUhKTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG5cclxuICAgIGNvbnN0IHVwZGF0ZVJlc3VsdHMgPSBtZXJnZShcclxuICAgICAgc2VhcmNoT3JSZWZyZXNoLFxyXG4gICAgICB0aGlzLnBhZ2VDaGFuZ2VkXHJcbiAgICApXHJcblxyXG4gICAgLy8gQ2FsbCBnZXRJdGVtcyBhbmQgd2F0Y2ggZm9yIGVycm9yc1xyXG4gICAgY29uc3QgZ2V0RGF0YSA9IHVwZGF0ZVJlc3VsdHMucGlwZShcclxuICAgICAgLy8gUGx1Y2sgdGhlIHNlYXJjaE1vZGVsIHZhbHVlIG91dCBvZiB0aGUgZm9ybU1vZGVsXHJcbiAgICAgIHBsdWNrKCdzZWFyY2hNb2RlbCcpLFxyXG5cclxuICAgICAgLy8gRW5zdXJlIHNlYXJjaCBzdHJpbmcgaXMgZGVmaW5lZFxyXG4gICAgICAvLyBUcmltIGFuZCBsb3dlcmNhc2UgaXQgdG8gYWlkIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoaW5nXHJcbiAgICAgIG1hcCgoc2VhcmNoU3RyaW5nPzogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgbGV0IHNlYXJjaCA9IHNlYXJjaFN0cmluZyB8fCAnJztcclxuICAgICAgICByZXR1cm4gc2VhcmNoLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICB9KSxcclxuXHJcbiAgICAgIC8vIFNob3cgc3RhdHVzIG92ZXJsYXlcclxuICAgICAgdGFwKCgpID0+IHRoaXMuc3RhdHVzLnNldFN0YXR1cygncGVuZGluZycsICdMb2FkaW5nJykpLFxyXG5cclxuICAgICAgLy8gQ2FsbCBwYXNzZWQgZnVuY3Rpb25cclxuICAgICAgc3dpdGNoTWFwKChzZWFyY2hTdHJpbmc6IHN0cmluZykgPT4gXHJcbiAgICAgICAgLy9pZiB0aGUgdGFibGUgaXMgcGFnZWFibGUsIHBhZ2VJbmZvIHdpbGwgYmUgZGVmaW5lZC5cclxuICAgICAgICB0aGlzLmdldEl0ZW1zKHNlYXJjaFN0cmluZywgdGhpcy5wYWdlSW5mbylcclxuICAgICAgKSxcclxuXHJcbiAgICAgIC8vIElmIHBhc3NlZCBmdW5jdGlvbiBmYWlscywgc2hvdyBlcnJvciBzdGF0dXNcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyLCBjYXVnaHQpID0+IHtcclxuICAgICAgICB0aGlzLnN0YXR1cy5zZXRTdGF0dXMoJ2Vycm9yJywgdGhpcy5lcnJvclNlcnZpY2UucGFyc2VBcGlFcnJvcihlcnIpKTtcclxuICAgICAgICAvLyByZXR1cm4gdGhlIGNhdWdodCBvYnNlcnZhYmxlIHNvIHRoZSBzdWJzY3JpcHRpb24gZG9lc24ndCBjb21wbGV0ZVxyXG4gICAgICAgIHJldHVybiBjYXVnaHQ7XHJcbiAgICAgIH0pLFxyXG5cclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSxcclxuICAgICk7XHJcblxyXG4gICAgLy8gSGFuZGxlIHJldHVybmVkIGRhdGEgYW5kIG5vdGlmeSBwYXJlbnRcclxuICAgIGdldERhdGEuc3Vic2NyaWJlKChyZXN1bHRzOiBUYWJsZVNlYXJjaFJlc3VsdHMpID0+IHtcclxuICAgICAgLy8gTGltaXRpbmcgbnVtYmVyIG9mIHJlc3VsdHMgdG8gc2hvdyBpZiBub3QgcGFnZWFibGUgKGlmIHBhZ2VhYmxlIHRoZSBtYXggbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSB0YWJsZVxyXG4gICAgICAvLyBjYW4gYmUgbW9kaWZpZWQgYnkgaW5jcmVhc2luZy9kZWNyZWFzaW5nIHRoZSBwYWdlU2l6ZS4pXHJcbiAgICAgIGlmKCF0aGlzLnBhZ2VhYmxlKSB7XHJcbiAgICAgICAgcmVzdWx0cy5pdGVtcyA9IHJlc3VsdHMuaXRlbXMuc2xpY2UoMCwgdGhpcy5tYXhJdGVtQ291bnQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBOZWVkIHRvIGtub3cgdGhpcyAoYWxvbmcgd2l0aCBpZiB0aGVyZSdzIGEgdmFsdWUgaW4gdGhlIGZvcm1Nb2RlbCkgdG8gZGV0ZXJtaW5lIHdoYXQgdG8gc2hvdyBpbiB0aGUgZm9vdGVyXHJcbiAgICAgIHRoaXMuc2VhcmNoUmVzdWx0cyA9IHJlc3VsdHM7XHJcbiAgICBcclxuICAgICAgdGhpcy50YWJsZUNhcHRpb24gPSB0aGlzLmdldENhcHRpb24ocmVzdWx0cyk7XHJcbiAgICAgIHRoaXMucmVzdWx0c0NvdW50ID0gdGhpcy5wYWdlYWJsZSA/IHRoaXMucm93Q291bnRQaXBlLnRyYW5zZm9ybShyZXN1bHRzLCB0aGlzLm9iamVjdFR5cGUsIHVuZGVmaW5lZCwgdGhpcy5wYWdlSW5mbyk6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm93Q291bnRQaXBlLnRyYW5zZm9ybShyZXN1bHRzLCB0aGlzLm9iamVjdFR5cGUsIHRoaXMubWF4SXRlbUNvdW50KTtcclxuXHJcbiAgICAgIC8vIERpc2FibGUgc2VhcmNoYm94IHdoZW4gaW4gbm8tZGF0YSBzdGF0ZVxyXG4gICAgICBpZiAoIXJlc3VsdHMuaXRlbXMubGVuZ3RoICYmICF0aGlzLnNlYXJjaE1vZGVsLnZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hNb2RlbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlYXJjaE1vZGVsLmRpc2FibGVkKSB7XHJcbiAgICAgICAgLy8gcmUtZW5hYmxlIGlmIGl0IHdhcyBkaXNhYmxlZCwgYnV0IG5vdyBoYXMgaXRlbXNcclxuICAgICAgICB0aGlzLnNlYXJjaE1vZGVsLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc3RhdHVzLnNldFN0YXR1cygnaGFzRGF0YScpO1xyXG4gICAgICAvLyBTZW5kIHRoZSByZXN1bHRzIHRvIHRoZSBwYXJlbnQgY29tcG9uZW50XHJcbiAgICAgIHRoaXMuaXRlbXNDaGFuZ2UuZW1pdChyZXN1bHRzKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFdoZW4gJ3JlYWR5JyBpcyBjb21wbGV0ZWQgYnkgdGhlIGhvc3QsIGluaXRpYWxpemUgdGhlIHRhYmxlIHdpdGggdGhlIGN1cnJlbnQgZm9ybSBtb2RlbCB2YWx1ZXNcclxuICAgIHRoaXMucmVhZHkuc3Vic2NyaWJlKHtcclxuICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmluaXRUYWJsZS5uZXh0KHRoaXMuZm9ybU1vZGVsLnZhbHVlKTtcclxuICAgICAgICB0aGlzLmluaXRUYWJsZS5jb21wbGV0ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95ZWQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIC8qKiBQYXNzIGFsb25nIHNvcnQgdG8gcGFyZW50IGNvbXBvbmVudCAqL1xyXG4gIG9uU29ydENoYW5nZShzb3J0OiBUYWJsZVNvcnQpOiB2b2lkIHtcclxuICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHNvcnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hlbiBhIHBhZ2UgY2hhbmdlcywgc3RvcmUgdGhlIG5ldyBwYWdpbmdJbmZvIGFuZCBlbWl0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBmb3JtIHRvIHRyaWdnZXIgZ2V0RGF0YS5cclxuICAgKi9cclxuICBvblBhZ2VDaGFuZ2UocGFnaW5nSW5mbzogUGFnaW5nSW5mbykge1xyXG4gICAgdGhpcy5zdGF0dXMuc2V0U3RhdHVzKCdwZW5kaW5nJywgJ0xvYWRpbmcnKTtcclxuICAgIHRoaXMucGFnZUluZm8gPSBwYWdpbmdJbmZvO1xyXG4gICAgdGhpcy5wYWdlQ2hhbmdlRW1pdHRlci5lbWl0KHBhZ2luZ0luZm8pO1xyXG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5uZXh0KHRoaXMuZm9ybU1vZGVsLnZhbHVlKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBXaXJlIHVwIGEgaGFuZGxlciB0byB0aGUgYHJlZnJlc2hgIG9ic2VydmFibGUgc28gdGhhdCB3aGVuXHJcbiAgICogdGhlIGhvc3QgcGFnZSBjb250ZXh0IGNoYW5nZXMgaXQgY2FuIGZvcmNlIHRoZSB0YWJsZSB0byB1cGRhdGUgYXMgd2VsbC5cclxuICAgKlxyXG4gICAqIElmIHRoZSBgcmVmcmVzaGAgb2JzZXJ2YWJsZSBwYXNzZXMgb3B0aW9ucyBhbmQgdGhlIGBjbGVhclNlYXJjaGAgcHJvcGVydHlcclxuICAgKiBpcyBzZXQgdG8gdHJ1ZSwgcmVzZXQgdGhlIHNlYXJjaE1vZGVsIGFuZCBwYXNzIGFuIGVtcHR5IHN0cmluZy5cclxuICAgKlxyXG4gICAqIElmIGByZWZyZXNoYCBvYnNlcnZhYmxlIGRvZXMgbm90IHBhc3Mgb3B0aW9ucyBvciB0aGUgYGNsZWFyU2VhcmNoYCBwcm9wZXJ0eVxyXG4gICAqIGlzIHNldCB0byBmYWxzZSwgcGFzcyBhbG9uZyB0aGUgY3VycmVudCBzZWFyY2hNb2RlbCBWYWx1ZS5cclxuICAgKi9cclxuICBwcml2YXRlIHNldFVwUmVmcmVzaFRyaWdnZXIoKSB7XHJcbiAgICBpZiAodGhpcy5yZWZyZXNoKSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaFRyaWdnZXIgPSB0aGlzLnJlZnJlc2gucGlwZShcclxuICAgICAgICBtYXAob3B0cyA9PiB7XHJcbiAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLmNsZWFyU2VhcmNoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoTW9kZWwucmVzZXQoJycsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHsgLi4udGhpcy5mb3JtTW9kZWwsIHNlYXJjaE1vZGVsOiAnJyB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybU1vZGVsLnZhbHVlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZClcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBHZXQgdGV4dCB0byBkaXNwbGF5IGluIHRoZSBmb290ZXIuICovXHJcbiAgcHJpdmF0ZSBnZXRDYXB0aW9uKHJlc3VsdHM6IFRhYmxlU2VhcmNoUmVzdWx0cyk6IHN0cmluZyB7XHJcbiAgICBpZiAocmVzdWx0cy5pdGVtcy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNlYXJjaE1vZGVsLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLm5vU2VhcmNoUmVzdWx0c01lc3NhZ2UgfHwgJ1NlYXJjaGFibGVUYWJsZV9EZWZhdWx0X05vTWF0Y2hlc19TQycsIHsgc2VhcmNoVGV4dDogdGhpcy5zZWFyY2hNb2RlbC52YWx1ZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy5ub0RhdGFNZXNzYWdlIHx8ICdTZWFyY2hhYmxlVGFibGVfRGVmYXVsdF9Ob0RhdGFfU0MnKTtcclxuICB9XHJcblxyXG59Il19
|
|
284
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90YWJsZS9zZWFyY2hhYmxlLXRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFpQixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEosT0FBTyxFQUFlLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQU0sTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRWpFLE9BQU8sRUFBYyx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVl4RSxNQUFNLE9BQU8sd0JBQXdCO0lBMExuQyxZQUNVLFlBQTBCLEVBQzFCLGdCQUFrQyxFQUNsQyxZQUEwQjtR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WixnQkFBZ0I7WUFPaEIsWUFBWTs7O2lCQWdCbEIsS0FBSzt3QkFDTCxLQUFLO3VCQUNMLEtBQUs7bUJBQ0wsS0FBSzt3QkFDTCxLQUFLOzJCQUtMLEtBQUs7eUJBR0wsTUFBTTtnQ0FHTixNQUFNLFNBQUMsWUFBWTttQ0FHbkIsS0FBSzt3QkFPTCxLQUFLOzRCQU9MLEtBQUs7cUNBWUwsS0FBSztvQkFVTCxLQUFLO3VCQVdMLEtBQUs7c0JBR0wsS0FBSztxQkFHTCxLQUFLOytCQUtMLEtBQUs7MEJBR0wsTUFBTTtnQ0FHTixLQUFLOzJCQUdMLEtBQUs7Z0NBR0wsS0FBSzt5QkFHTCxLQUFLO3lCQUdMLEtBQUs7eUJBR0wsS0FBSzt1QkFzQkwsS0FBSzt1QkFLTCxLQUFLO3NCQUtMLEtBQUs7Z0NBS0wsS0FBSzsrQkFHTCxLQUFLO3VDQUdMLEtBQUs7K0JBRUwsZUFBZSxTQUFDLHdCQUF3QixFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQztrQ0FHN0QsS0FBSzt5QkFHTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBFTVBUWSwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgbWFwLCBwbHVjaywgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCwgc2tpcFVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBFcnJvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2Vycm9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPdmVybGF5IH0gZnJvbSAnLi4vdmlldy1vdmVybGF5L3ZpZXctb3ZlcmxheS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZVNvcnQgfSBmcm9tICcuL3RhYmxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBhZ2luZ0luZm8sIFRhYmxlUGFnaW5hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtcGFnaW5hdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSb3dDb3VudFBpcGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvZGlzcGxheS9waXBlcy9yb3ctY291bnQucGlwZSc7XHJcbmltcG9ydCB7IFRhYmxlU2VsZWN0YWJsZVJvd0NvbnRleHQgfSBmcm9tICcuL3RhYmxlLXNlbGVjdGFibGUtcm93LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc2l6YWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vcmVzaXphYmxlLWNvbHVtbi5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IHR5cGUgVGFibGVTZWFyY2hSZXN1bHRzID0geyBpdGVtczogdW5rbm93bltdLCB0b3RhbEl0ZW1zOiBudW1iZXIsIHRvdGFsSXRlbXNCZWZvcmVQYWdpbmc/OiBudW1iZXIgfTtcclxuZXhwb3J0IHR5cGUgU2VhcmNoYWJsZVRhYmxlUmVmcmVzaE9wdGlvbnMgPSB7IGNsZWFyU2VhcmNoPzogYm9vbGVhbiB9O1xyXG5cclxudHlwZSBTZWFyY2hhYmxlVGFibGVGb3JtTW9kZWwgPSB7IHNlYXJjaE1vZGVsPzogc3RyaW5nIH07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLXNlYXJjaGFibGUtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2hhYmxlLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2hhYmxlLXRhYmxlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNlYXJjaGFibGVUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQElucHV0KCkgaWQgPSAnJztcclxuICBASW5wdXQoKSByZXNpemFibGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzb3J0YWJsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNvcnQ/OiBUYWJsZVNvcnQ7XHJcbiAgQElucHV0KCkgYXV0b2ZvY3VzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlNldCB0byBhIHNwYWNlLXNlcGFyYXRlZCBzZXQgb2Ygc3RyaW5ncyB0aGF0IHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZWMtdGFibGUgY2xhc3MgYXR0cmlidXRlXHJcbiAgICogdGhpcyBhbGxvd3MgZmluZXIgY29udHJvbCBvdmVyIHN0eWxpbmcuXHJcbiAgICovXHJcbiAgQElucHV0KCkgdGFibGVDbGFzc2VzOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqIEVtaXRzIHdoZW4gdGFibGUgc29ydCBoYXMgY2hhbmdlZCAqL1xyXG4gIEBPdXRwdXQoKSBzb3J0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8VGFibGVTb3J0PiA9IG5ldyBFdmVudEVtaXR0ZXI8VGFibGVTb3J0PigpO1xyXG5cclxuICAvKiogRW1pdHMgd2hlbiB0aGUgdGFibGUgcGFnZSBoYXMgY2hhbmdlZCAqL1xyXG4gIEBPdXRwdXQoJ3BhZ2VDaGFuZ2UnKSBwYWdlQ2hhbmdlRW1pdHRlcjogRXZlbnRFbWl0dGVyPFBhZ2luZ0luZm8+ID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdpbmdJbmZvPigpO1xyXG5cclxuICAvKiogUGxhY2Vob2xkZXIgdGV4dCBmb3IgdGhlIHNlYXJjaGJveCAqL1xyXG4gIEBJbnB1dCgpIHNlYXJjaGJveFBsYWNlaG9sZGVyID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm1Hcm91cCBmb3IgdGhlIHNlYXJjaGJveFxyXG4gICAqXHJcbiAgICogVGhlIHJlZmVyZW5jZWQgRm9ybUdyb3VwICoqbXVzdCoqIGNvbnRhaW4gYSBGb3JtQ29udHJvbCBjYWxsZWQgJ3NlYXJjaE1vZGVsJy5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgZm9ybU1vZGVsITogRm9ybUdyb3VwO1xyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5ZWQgaW4gb3ZlcmxheSB3aGVuIG5vIGRhdGEgaXMgcmV0dXJuZWQgKHdpdGhvdXQgc2VhcmNoaW5nKS5cclxuICAgKlxyXG4gICAqIERlZmF1bHRzIHRvIFwiU2VhcmNoYWJsZVRhYmxlX0RlZmF1bHRfTm9EYXRhX1NDXCJcclxuICAgKi9cclxuICBASW5wdXQoKSBub0RhdGFNZXNzYWdlOiBzdHJpbmcgPSAnU2VhcmNoYWJsZVRhYmxlX0RlZmF1bHRfTm9EYXRhX1NDJztcclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheWVkIGluIG92ZXJsYXkgd2hlbiBubyBkYXRhIGlzIHJldHVybmVkIChhZnRlciBzZWFyY2hpbmcpLlxyXG4gICAqIEVuc3VyZSB0cmFuc2xhdGlvbiBoYXMgYW4gaW50ZXJwb2xhdGlvbiBwbGFjZWhvbGRlciBmb3IgXCJzZWFyY2hUZXh0XCIuXHJcbiAgICpcclxuICAgKiBEZWZhdWx0cyB0byBcIlNlYXJjaGFibGVUYWJsZV9EZWZhdWx0X05vTWF0Y2hlc19TQ1wiXHJcbiAgICpcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIC8vIDcgcmVxdWlyZXMgc2luZ2xlIGN1cmx5IGJyYWNlc1xyXG4gICAqIE5vIGl0ZW1zIGZvdW5kIG1hdGNoaW5nIDxzdHJvbmc+e3tzZWFyY2hUZXh0fX08L3N0cm9uZz5cclxuICAgKi9cclxuICBASW5wdXQoKSBub1NlYXJjaFJlc3VsdHNNZXNzYWdlOiBzdHJpbmcgPSAnU2VhcmNoYWJsZVRhYmxlX0RlZmF1bHRfTm9NYXRjaGVzX1NDJztcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhdGVzIGhvc3RpbmcgcGFnZSBpcyByZWFkeSBmb3IgdGhlIHRhYmxlIHRvIGxvYWQgZGF0YS5cclxuICAgKlxyXG4gICAqIE5leHQgYW5kIENvbXBsZXRlIHRoaXMgb2JzZXJ2YWJsZSBhZnRlciBob3N0aW5nIHBhZ2UgaGFzIG1hZGUgYW55IHByZWxpbWluYXJ5XHJcbiAgICogQVBJIChvciBvdGhlciBhc3luY2hyb25vdXMpIGNhbGxzIHRvIGxvYWQgcHJlcmVxdWlzaXRlIGRhdGEgdXBvbiB3aGljaCB0aGUgY29kZVxyXG4gICAqIGluIHRoZSBgZ2V0SXRlbXNgIGZ1bmN0aW9uIGRlcGVuZHMuICBVc2UgYSBgUmVwbGF5U3ViamVjdGAgdG8gZW5zdXJlIGV2ZXJ5IGNvbXBvbmVudFxyXG4gICAqIHRoYXQgdXNlcyB0aGlzIG9ic2VydmFibGUgZ2V0cyB0aGUgTmV4dCBhbmQgQ29tcGxldGUgbm90aWZpY2F0aW9ucy5cclxuICAgKi9cclxuICBASW5wdXQoKSByZWFkeSE6IE9ic2VydmFibGU8dm9pZD47XHJcblxyXG4gIC8qKlxyXG4gICAqIEZ1bmN0aW9uIGNhbGxlZCB0byBnZXQgaXRlbXMgdG8gZGlzcGxheSBpbiB0aGUgdGFibGUuXHJcbiAgICogSWYgcGFnZWFibGUgaXMgdHJ1ZSwgdGhlIFRhYmxlU2VhcmNoUmVzdWx0cyBuZWVkIHRvIGluY2x1ZGUgdG90YWxJdGVtc0JlZm9yZVBhZ2luZywgd2hpY2ggaXMgdGhlXHJcbiAgICogY291bnQgb2YgaXRlbXMgYmVmb3JlIHlvdSd2ZSBhcHBsaWVkIGFueSBwYWdpbmF0aW9uIChpLmUuIHRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMgdGhhdCBjYW1lIGJhY2sgZnJvbSB0aGUgc2VhcmNoKS5cclxuICAgKlxyXG4gICAqIE1ha2Ugc3VyZSB0byBiaW5kIHRoZSBzY29wZSBpbiB0aGUgdGVtcGxhdGVcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIFtnZXRJdGVtc109XCJ5b3VyRnVuY3Rpb24uYmluZCh0aGlzKVwiXHJcbiAgICovXHJcbiAgQElucHV0KCkgZ2V0SXRlbXMhOiAoc2VhcmNoPzogc3RyaW5nLCBwYWdlQ2hhbmdlSW5mbz86IFBhZ2luZ0luZm8pID0+IE9ic2VydmFibGU8VGFibGVTZWFyY2hSZXN1bHRzPjtcclxuXHJcbiAgLyoqIE9ic2VydmFibGUgdGhhdCB3aWxsIGZvcmNlIHRoZSBnZXRJdGVtcyBmdW5jdGlvbiB0byBnZXQgY2FsbGVkIGFnYWluICovXHJcbiAgQElucHV0KCkgcmVmcmVzaD86IE9ic2VydmFibGU8U2VhcmNoYWJsZVRhYmxlUmVmcmVzaE9wdGlvbnMgfCB1bmRlZmluZWQ+O1xyXG5cclxuICAvKiogQWxsb3cgdGhlIGhvc3QgY29tcG9uZW50IHRvIHN1cHBseSBhbiBvdmVybGF5IHRvIGNvbnRyb2wgdGhlIHBlbmRpbmcgc3RhdGUgb2YgdGhlIHRhYmxlICovXHJcbiAgQElucHV0KCkgc3RhdHVzOiBPdmVybGF5ID0gbmV3IE92ZXJsYXkoJ2hhc0RhdGEnKTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgdW5kZXJseWluZyB0YWJsZSdzIGxheW91dCB0byBmaXhlZC5cclxuICAgKi9cclxuICBASW5wdXQoKSB0YWJsZUxheW91dEZpeGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBFbWl0cyBpdGVtcyByZXR1cm5lZCBieSB0aGUgZ2V0SXRlbXMgZnVuY3Rpb24sIGFsb25nIHdpdGggdG90YWwgY291bnQgKi9cclxuICBAT3V0cHV0KCkgaXRlbXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxUYWJsZVNlYXJjaFJlc3VsdHM+ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVNlYXJjaFJlc3VsdHM+KCk7XHJcblxyXG4gIC8qKiBPcHRpb25hbCB0YWIgaW5kZXggZm9yIHRoZSBzZWFyY2hib3ggKi9cclxuICBASW5wdXQoKSBzZWFyY2hib3hUYWJJbmRleD86IG51bWJlcjtcclxuXHJcbiAgLyoqIE1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIHRvIHNob3cgaW4gdGhlIHRhYmxlIChkZWZhdWx0OiAxMDApICovXHJcbiAgQElucHV0KCkgbWF4SXRlbUNvdW50OiBudW1iZXIgPSAxMDA7XHJcblxyXG4gIC8qKiBTZXQgdG8gdHJ1ZSB0byBoaWRlIHNlYXJjaCBib3ggKGRvZXMgbm90IGhpZGUgdGhlIG90aGVyIHNlYXJjaGFibGUgdGFibGUgY29udHJvbHMgKi9cclxuICBASW5wdXQoKSBoaWRlU2VhcmNoQ29udHJvbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogU2V0IHRvIHRydWUgdG8gaGlkZSB0aGUgZW50aXJlIGhlYWRlciAqL1xyXG4gIEBJbnB1dCgpIGhpZGVIZWFkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIFR5cGUgb2Ygb2JqZWN0IGluIHRoZSB0YWJsZS4gRGlzcGxheWVkIGluIGZvb3RlciAoZGVmYXVsdDogJ3Jlc3VsdHMnKSovXHJcbiAgQElucHV0KCkgb2JqZWN0VHlwZTogc3RyaW5nID0gJ3Jlc3VsdHMnO1xyXG5cclxuICAvKiogU2V0IHRvIHRydWUgdG8gaGlkZSB0aGUgdGFibGUgZm9vdGVyICovXHJcbiAgQElucHV0KCkgaGlkZUZvb3RlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBTZXQgdG8gdHJ1ZSB0byBlbmFibGUgcGFnaW5nLiBJZiBwYWdpbmcgaXMgZW5hYmxlZCwgcGFnZVNpemUgbXVzdCBiZSBwcm92aWRlZC5cclxuICAgKiBnZXRJdGVtcyB3aWxsIGJlIHBhc3NlZCBib3RoIGEgc2VhcmNoIGFuZCBhIFBhZ2luZ0luZm8gb2JqZWN0IHdoZW4gY2FsbGVkLiBJdCBtdXN0IGluY2x1ZGUgdG90YWxJdGVtc0JlZm9yZVBhZ2luZyBpbiB0aGUgVGFibGVTZWFyY2hSZXN1bHRzIG91dHB1dC5cclxuICAgKiBIZXJlIGlzIGEgc2ltcGxlIGltcGxlbWVudGF0aW9uOiBcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIGdldEl0ZW1zKHNlYXJjaD86IHN0cmluZywgcGFnZUNoYW5nZUluZm8/OiBQYWdpbmdJbmZvKTogT2JzZXJ2YWJsZTxUYWJsZVNlYXJjaFJlc3VsdHM+IHtcclxuICAgICAgbGV0IHJlc3VsdHM6IFNpbXBsZUl0ZW1bXSA9IFsuLi50aGlzLnBhZ2luYXRlZFRhYmxlSXRlbXNdO1xyXG4gICAgICAvL2FwcGx5IHNlYXJjaFxyXG4gICAgICBpZihzZWFyY2gpIHtcclxuICAgICAgICByZXN1bHRzID0gdGhpcy5wYWdpbmF0ZWRUYWJsZUl0ZW1zLmZpbHRlcihpID0+IGkuYS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaC50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAgIH1cclxuICAgICAgLy9nZXQgY291bnQgYmVmb3JlIGFwcGx5aW5nIHBhZ2luZ1xyXG4gICAgICBsZXQgY291bnRCZWZvcmVQYWdpbmcgPSByZXN1bHRzLmxlbmd0aDtcclxuICAgICAgLy9hcHBseSBwYWdpbmdcclxuICAgICAgaWYocGFnZUNoYW5nZUluZm8pIHtcclxuICAgICAgICByZXN1bHRzID0gcmVzdWx0cy5zbGljZShwYWdlQ2hhbmdlSW5mbyEuc2tpcCwgcGFnZUNoYW5nZUluZm8hLnNraXAgKyBwYWdlQ2hhbmdlSW5mbyEucGFnZVNpemUpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBvZih7IGl0ZW1zOiByZXN1bHRzLCB0b3RhbEl0ZW1zOiByZXN1bHRzLmxlbmd0aCwgdG90YWxJdGVtc0JlZm9yZVBhZ2luZzogY291bnRCZWZvcmVQYWdpbmcgfSk7XHJcbiAgICB9XHJcbiAgKi9cclxuICBASW5wdXQoKSBwYWdlYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBNYXggc2l6ZSBvZiBhIHBhZ2UuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcGFnZVNpemU/OiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gKiBNYXhpbXVtIG51bWJlciBvZiBwYWdlIHRhYnMgdG8gc2hvd1xyXG4gKi9cclxuICBASW5wdXQoKSBtYXhUYWJzPzogbnVtYmVyID0gMTA7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ha2VzIHRoZSBzZWFyY2hib3ggcmVhZG9ubHkgaWYgdHJ1ZS5cclxuICAgKi9cclxuICBASW5wdXQoKSBzZWFyY2hib3hSZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogUGFzc2VkIHRvIHRoZSBpbm5lciBUYWJsZUNvbXBvbmVudCB0byBlbmFibGUgcm93IHNlbGVjdGlvbiAqL1xyXG4gIEBJbnB1dCgpIHNlbGVjdGlvbkNvbnRleHQ/OiBUYWJsZVNlbGVjdGFibGVSb3dDb250ZXh0O1xyXG5cclxuICAvKiogUGFzc2VkIHRvIHRoZSBpbm5lciBUYWJsZUNvbXBvbmVudCB0byBkaXNwbGF5IGEgdG9vbGJhciB3aGVuIDEgb3IgbW9yZSByb3dzIGFyZSBzZWxlY3RlZC4gUmVxdWlyZXMgYFtzZWxlY3Rpb25Db250ZXh0XWAgdG8gYmUgZGVmaW5lZC4gKi9cclxuICBASW5wdXQoKSBzZWxlY3Rpb25Ub29sYmFyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIFxyXG4gIEBDb250ZW50Q2hpbGRyZW4oUmVzaXphYmxlQ29sdW1uQ29tcG9uZW50LCB7ZGVzY2VuZGFudHM6IHRydWV9KSByZXNpemFibGVDb2x1bW5zITogUXVlcnlMaXN0PFJlc2l6YWJsZUNvbHVtbkNvbXBvbmVudD47XHJcblxyXG4gIC8qKiBPcHRpb25hbCB0ZXh0IHRvIGFkZCB0byB0aGUgcmVzdWx0cyBjb3VudCBpbiB0aGUgdGFibGUgZm9vdGVyLiBUaGlzIHRleHQgd2lsbCBiZSBhZGRlZCBhZnRlciB0aGUgY291bnQgYW5kIG9iamVjdFR5cGUuICovXHJcbiAgQElucHV0KCkgYWRkaXRpb25hbENvdW50VGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKiBFbmFibGVzIHRhYmxlIHJvdyBzZWxlY3Rpb24gYW5kIHJvdyBoaWdobGlnaHRpbmcgc3R5bGVzIHdoZW4gdHJ1ZSAqL1xyXG4gIEBJbnB1dCgpIHNlbGVjdGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogUGFnaW5nSW5mbyBmb3IgdGhlIGN1cnJlbnQgcGFnZS5cclxuICAgKi9cclxuICBwdWJsaWMgcGFnZUluZm8/OiBQYWdpbmdJbmZvO1xyXG5cclxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBzZWFyY2hNb2RlbCAqL1xyXG4gIHB1YmxpYyBnZXQgc2VhcmNoTW9kZWwoKTogRm9ybUNvbnRyb2wge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybU1vZGVsLmNvbnRyb2xzLnNlYXJjaE1vZGVsIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGV4dCBkaXNwbGF5ZWQgaW4gdGhlIGZvb3Rlci5cclxuICAgKiBTb21ldGltZXMgYG5vRGF0YU1lc3NhZ2VgLCBzb21ldGltZXMgYG5vU2VhcmNoUmVzdWx0c01lc3NhZ2VgXHJcbiAgICovXHJcbiAgcHVibGljIHRhYmxlQ2FwdGlvbjogc3RyaW5nID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy5ub0RhdGFNZXNzYWdlIHx8ICdTZWFyY2hhYmxlVGFibGVfRGVmYXVsdF9Ob0RhdGFfU0MnKTtcclxuXHJcbiAgLyoqIGNvdW50IG9mIHJlc3VsdHMgZGlzcGxheWVkIGluIHRoZSB0YWJsZSAqL1xyXG4gIHB1YmxpYyByZXN1bHRzQ291bnQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKiogSXRlbXMgcmV0dXJuZWQgYnkgdGhlIGdldEl0ZW1zIGZ1bmN0aW9uLCBhbG9uZyB3aXRoIHRvdGFsIGNvdW50ICovXHJcbiAgcHVibGljIHNlYXJjaFJlc3VsdHM6IFRhYmxlU2VhcmNoUmVzdWx0cyA9IHsgaXRlbXM6IFtdLCB0b3RhbEl0ZW1zOiAwIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHBhc3NlZCBhbiBpbnB1dCBmb3IgcmVmcmVzaCwgdHJpZ2dlcnMgcmVsb2FkaW5nIGl0ZW1zLlxyXG4gICAqIE90aGVyd2lzZSwgY29tcGxldGVzIGltbWVkaWF0ZWx5ICh3aWxsIG5ldmVyIHRyaWdnZXIgcmVsb2FkKS5cclxuICAgKi9cclxuICBwcml2YXRlIHJlZnJlc2hUcmlnZ2VyOiBPYnNlcnZhYmxlPFNlYXJjaGFibGVUYWJsZUZvcm1Nb2RlbCB8IHVuZGVmaW5lZD4gPSBFTVBUWTtcclxuICBwcml2YXRlIGRlc3Ryb3llZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHByaXZhdGUgcGFnZUNoYW5nZWQ6IFN1YmplY3Q8U2VhcmNoYWJsZVRhYmxlRm9ybU1vZGVsPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIC8qKiBUcmlnZ2VycyB0aGUgaW5pdGlhbCBsb2FkIG9mIHRoZSB0YWJsZSAqL1xyXG4gIHByaXZhdGUgaW5pdFRhYmxlID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZXJyb3JTZXJ2aWNlOiBFcnJvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvd0NvdW50UGlwZTogUm93Q291bnRQaXBlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0YXR1cy5zZXRTdGF0dXMoJ3BlbmRpbmcnLCAnTG9hZGluZycpO1xyXG4gICAgdGhpcy5zZXRVcFJlZnJlc2hUcmlnZ2VyKCk7XHJcblxyXG4gICAgLy8gV2F0Y2ggZm9yIHNlYXJjaGJveC9vdGhlciBjb250cm9sIGNoYW5nZXMgb3IgcmVmcmVzaCByZXF1ZXN0c1xyXG4gICAgY29uc3Qgc2VhcmNoT3JSZWZyZXNoID0gbWVyZ2UoXHJcbiAgICAgIHRoaXMuZm9ybU1vZGVsLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICAgIHNraXBVbnRpbCh0aGlzLnJlYWR5KSxcclxuICAgICAgICBkZWJvdW5jZVRpbWUoMzAwKVxyXG4gICAgICApLFxyXG4gICAgICB0aGlzLnJlZnJlc2hUcmlnZ2VyLFxyXG4gICAgICB0aGlzLmluaXRUYWJsZVxyXG4gICAgKS5waXBlKHRhcCgoKT0+IHtcclxuICAgICAgLy9hIGNoYW5nZSB0byBhbnkgZm9ybSBjb250cm9sIG9yIGEgcmVmcmVzaCBzaG91bGQgcmVzZXQgdGhlIHBhZ2VJbmZvIHRvIHRoZSBmaXJzdCBwYWdlIGlmIHRoZSB0YWJsZSBpcyBwYWdlYWJsZS5cclxuICAgICAgLy8oaWYgd2UgZGlkbnQgcmVzZXQgdGhlIHBhZ2VJbmZvLCB3ZSdkIGhhdmUgdG8gY2FsbCBnZXRJdGVtcyB3aXRoIHRoZSBwcmV2aW91cyBwYWdlSW5mbywgd2hpY2ggbWF5IG5vdCBiZSB2YWxpZCBmb3IgdGhlIG5ldyByZXN1bHRzKVxyXG4gICAgICBpZih0aGlzLnBhZ2VhYmxlKSB7XHJcbiAgICAgICAgdGhpcy5wYWdlSW5mbyA9IFRhYmxlUGFnaW5hdGlvbkNvbXBvbmVudC5nZXRQYWdpbmdJbmZvKDEsIHRoaXMucGFnZVNpemUhKTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG5cclxuICAgIGNvbnN0IHVwZGF0ZVJlc3VsdHMgPSBtZXJnZShcclxuICAgICAgc2VhcmNoT3JSZWZyZXNoLFxyXG4gICAgICB0aGlzLnBhZ2VDaGFuZ2VkXHJcbiAgICApXHJcblxyXG4gICAgLy8gQ2FsbCBnZXRJdGVtcyBhbmQgd2F0Y2ggZm9yIGVycm9yc1xyXG4gICAgY29uc3QgZ2V0RGF0YSA9IHVwZGF0ZVJlc3VsdHMucGlwZShcclxuICAgICAgLy8gUGx1Y2sgdGhlIHNlYXJjaE1vZGVsIHZhbHVlIG91dCBvZiB0aGUgZm9ybU1vZGVsXHJcbiAgICAgIHBsdWNrKCdzZWFyY2hNb2RlbCcpLFxyXG5cclxuICAgICAgLy8gRW5zdXJlIHNlYXJjaCBzdHJpbmcgaXMgZGVmaW5lZFxyXG4gICAgICAvLyBUcmltIGFuZCBsb3dlcmNhc2UgaXQgdG8gYWlkIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoaW5nXHJcbiAgICAgIG1hcCgoc2VhcmNoU3RyaW5nPzogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgbGV0IHNlYXJjaCA9IHNlYXJjaFN0cmluZyB8fCAnJztcclxuICAgICAgICByZXR1cm4gc2VhcmNoLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICB9KSxcclxuXHJcbiAgICAgIC8vIFNob3cgc3RhdHVzIG92ZXJsYXlcclxuICAgICAgdGFwKCgpID0+IHRoaXMuc3RhdHVzLnNldFN0YXR1cygncGVuZGluZycsICdMb2FkaW5nJykpLFxyXG5cclxuICAgICAgLy8gQ2FsbCBwYXNzZWQgZnVuY3Rpb25cclxuICAgICAgc3dpdGNoTWFwKChzZWFyY2hTdHJpbmc6IHN0cmluZykgPT4gXHJcbiAgICAgICAgLy9pZiB0aGUgdGFibGUgaXMgcGFnZWFibGUsIHBhZ2VJbmZvIHdpbGwgYmUgZGVmaW5lZC5cclxuICAgICAgICB0aGlzLmdldEl0ZW1zKHNlYXJjaFN0cmluZywgdGhpcy5wYWdlSW5mbylcclxuICAgICAgKSxcclxuXHJcbiAgICAgIC8vIElmIHBhc3NlZCBmdW5jdGlvbiBmYWlscywgc2hvdyBlcnJvciBzdGF0dXNcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyLCBjYXVnaHQpID0+IHtcclxuICAgICAgICB0aGlzLnN0YXR1cy5zZXRTdGF0dXMoJ2Vycm9yJywgdGhpcy5lcnJvclNlcnZpY2UucGFyc2VBcGlFcnJvcihlcnIpKTtcclxuICAgICAgICAvLyByZXR1cm4gdGhlIGNhdWdodCBvYnNlcnZhYmxlIHNvIHRoZSBzdWJzY3JpcHRpb24gZG9lc24ndCBjb21wbGV0ZVxyXG4gICAgICAgIHJldHVybiBjYXVnaHQ7XHJcbiAgICAgIH0pLFxyXG5cclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSxcclxuICAgICk7XHJcblxyXG4gICAgLy8gSGFuZGxlIHJldHVybmVkIGRhdGEgYW5kIG5vdGlmeSBwYXJlbnRcclxuICAgIGdldERhdGEuc3Vic2NyaWJlKChyZXN1bHRzOiBUYWJsZVNlYXJjaFJlc3VsdHMpID0+IHtcclxuICAgICAgLy8gTGltaXRpbmcgbnVtYmVyIG9mIHJlc3VsdHMgdG8gc2hvdyBpZiBub3QgcGFnZWFibGUgKGlmIHBhZ2VhYmxlIHRoZSBtYXggbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSB0YWJsZVxyXG4gICAgICAvLyBjYW4gYmUgbW9kaWZpZWQgYnkgaW5jcmVhc2luZy9kZWNyZWFzaW5nIHRoZSBwYWdlU2l6ZS4pXHJcbiAgICAgIGlmKCF0aGlzLnBhZ2VhYmxlKSB7XHJcbiAgICAgICAgcmVzdWx0cy5pdGVtcyA9IHJlc3VsdHMuaXRlbXMuc2xpY2UoMCwgdGhpcy5tYXhJdGVtQ291bnQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBOZWVkIHRvIGtub3cgdGhpcyAoYWxvbmcgd2l0aCBpZiB0aGVyZSdzIGEgdmFsdWUgaW4gdGhlIGZvcm1Nb2RlbCkgdG8gZGV0ZXJtaW5lIHdoYXQgdG8gc2hvdyBpbiB0aGUgZm9vdGVyXHJcbiAgICAgIHRoaXMuc2VhcmNoUmVzdWx0cyA9IHJlc3VsdHM7XHJcbiAgICBcclxuICAgICAgdGhpcy50YWJsZUNhcHRpb24gPSB0aGlzLmdldENhcHRpb24ocmVzdWx0cyk7XHJcbiAgICAgIHRoaXMucmVzdWx0c0NvdW50ID0gdGhpcy5wYWdlYWJsZSA/IHRoaXMucm93Q291bnRQaXBlLnRyYW5zZm9ybShyZXN1bHRzLCB0aGlzLm9iamVjdFR5cGUsIHVuZGVmaW5lZCwgdGhpcy5wYWdlSW5mbyk6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm93Q291bnRQaXBlLnRyYW5zZm9ybShyZXN1bHRzLCB0aGlzLm9iamVjdFR5cGUsIHRoaXMubWF4SXRlbUNvdW50KTtcclxuXHJcbiAgICAgIC8vIERpc2FibGUgc2VhcmNoYm94IHdoZW4gaW4gbm8tZGF0YSBzdGF0ZVxyXG4gICAgICBpZiAoIXJlc3VsdHMuaXRlbXMubGVuZ3RoICYmICF0aGlzLnNlYXJjaE1vZGVsLnZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hNb2RlbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlYXJjaE1vZGVsLmRpc2FibGVkKSB7XHJcbiAgICAgICAgLy8gcmUtZW5hYmxlIGlmIGl0IHdhcyBkaXNhYmxlZCwgYnV0IG5vdyBoYXMgaXRlbXNcclxuICAgICAgICB0aGlzLnNlYXJjaE1vZGVsLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc3RhdHVzLnNldFN0YXR1cygnaGFzRGF0YScpO1xyXG4gICAgICAvLyBTZW5kIHRoZSByZXN1bHRzIHRvIHRoZSBwYXJlbnQgY29tcG9uZW50XHJcbiAgICAgIHRoaXMuaXRlbXNDaGFuZ2UuZW1pdChyZXN1bHRzKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFdoZW4gJ3JlYWR5JyBpcyBjb21wbGV0ZWQgYnkgdGhlIGhvc3QsIGluaXRpYWxpemUgdGhlIHRhYmxlIHdpdGggdGhlIGN1cnJlbnQgZm9ybSBtb2RlbCB2YWx1ZXNcclxuICAgIHRoaXMucmVhZHkuc3Vic2NyaWJlKHtcclxuICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmluaXRUYWJsZS5uZXh0KHRoaXMuZm9ybU1vZGVsLnZhbHVlKTtcclxuICAgICAgICB0aGlzLmluaXRUYWJsZS5jb21wbGV0ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95ZWQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIC8qKiBQYXNzIGFsb25nIHNvcnQgdG8gcGFyZW50IGNvbXBvbmVudCAqL1xyXG4gIG9uU29ydENoYW5nZShzb3J0OiBUYWJsZVNvcnQpOiB2b2lkIHtcclxuICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHNvcnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hlbiBhIHBhZ2UgY2hhbmdlcywgc3RvcmUgdGhlIG5ldyBwYWdpbmdJbmZvIGFuZCBlbWl0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBmb3JtIHRvIHRyaWdnZXIgZ2V0RGF0YS5cclxuICAgKi9cclxuICBvblBhZ2VDaGFuZ2UocGFnaW5nSW5mbzogUGFnaW5nSW5mbykge1xyXG4gICAgdGhpcy5zdGF0dXMuc2V0U3RhdHVzKCdwZW5kaW5nJywgJ0xvYWRpbmcnKTtcclxuICAgIHRoaXMucGFnZUluZm8gPSBwYWdpbmdJbmZvO1xyXG4gICAgdGhpcy5wYWdlQ2hhbmdlRW1pdHRlci5lbWl0KHBhZ2luZ0luZm8pO1xyXG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5uZXh0KHRoaXMuZm9ybU1vZGVsLnZhbHVlKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBXaXJlIHVwIGEgaGFuZGxlciB0byB0aGUgYHJlZnJlc2hgIG9ic2VydmFibGUgc28gdGhhdCB3aGVuXHJcbiAgICogdGhlIGhvc3QgcGFnZSBjb250ZXh0IGNoYW5nZXMgaXQgY2FuIGZvcmNlIHRoZSB0YWJsZSB0byB1cGRhdGUgYXMgd2VsbC5cclxuICAgKlxyXG4gICAqIElmIHRoZSBgcmVmcmVzaGAgb2JzZXJ2YWJsZSBwYXNzZXMgb3B0aW9ucyBhbmQgdGhlIGBjbGVhclNlYXJjaGAgcHJvcGVydHlcclxuICAgKiBpcyBzZXQgdG8gdHJ1ZSwgcmVzZXQgdGhlIHNlYXJjaE1vZGVsIGFuZCBwYXNzIGFuIGVtcHR5IHN0cmluZy5cclxuICAgKlxyXG4gICAqIElmIGByZWZyZXNoYCBvYnNlcnZhYmxlIGRvZXMgbm90IHBhc3Mgb3B0aW9ucyBvciB0aGUgYGNsZWFyU2VhcmNoYCBwcm9wZXJ0eVxyXG4gICAqIGlzIHNldCB0byBmYWxzZSwgcGFzcyBhbG9uZyB0aGUgY3VycmVudCBzZWFyY2hNb2RlbCBWYWx1ZS5cclxuICAgKi9cclxuICBwcml2YXRlIHNldFVwUmVmcmVzaFRyaWdnZXIoKSB7XHJcbiAgICBpZiAodGhpcy5yZWZyZXNoKSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaFRyaWdnZXIgPSB0aGlzLnJlZnJlc2gucGlwZShcclxuICAgICAgICBtYXAob3B0cyA9PiB7XHJcbiAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLmNsZWFyU2VhcmNoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoTW9kZWwucmVzZXQoJycsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHsgLi4udGhpcy5mb3JtTW9kZWwsIHNlYXJjaE1vZGVsOiAnJyB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybU1vZGVsLnZhbHVlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZClcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBHZXQgdGV4dCB0byBkaXNwbGF5IGluIHRoZSBmb290ZXIuICovXHJcbiAgcHJpdmF0ZSBnZXRDYXB0aW9uKHJlc3VsdHM6IFRhYmxlU2VhcmNoUmVzdWx0cyk6IHN0cmluZyB7XHJcbiAgICBpZiAocmVzdWx0cy5pdGVtcy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNlYXJjaE1vZGVsLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLm5vU2VhcmNoUmVzdWx0c01lc3NhZ2UgfHwgJ1NlYXJjaGFibGVUYWJsZV9EZWZhdWx0X05vTWF0Y2hlc19TQycsIHsgc2VhcmNoVGV4dDogdGhpcy5zZWFyY2hNb2RlbC52YWx1ZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy5ub0RhdGFNZXNzYWdlIHx8ICdTZWFyY2hhYmxlVGFibGVfRGVmYXVsdF9Ob0RhdGFfU0MnKTtcclxuICB9XHJcblxyXG59Il19
|
|
@@ -183,7 +183,7 @@ TableComponent.decorators = [
|
|
|
183
183
|
selector: 'ec-table',
|
|
184
184
|
template: "<div class=\"selectable-table-toolbar\"\r\n *ngIf=\"hasSelection\">\r\n <ng-container *ngTemplateOutlet=\"selectionToolbarTemplate\"></ng-container>\r\n</div>\r\n<div id=\"{{id}}-scroll-container\" \r\n class=\"table-scroll-container\">\r\n <table class=\"main-table\"\r\n id=\"{{id}}\"\r\n [ecResizableTable]=\"resizable\"\r\n [containerEl]=\"el\"\r\n [sortableTable]=\"sortable\"\r\n [resizableColumns]=\"resizableColumns\">\r\n <ng-content></ng-content>\r\n </table>\r\n</div>",
|
|
185
185
|
encapsulation: ViewEncapsulation.None,
|
|
186
|
-
styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}ec-table{display:flex;min-height:0;position:relative}ec-table .table-scroll-container{flex:1 1;min-height:0;overflow-y:auto}ec-table .main-table{border-collapse:separate;border-spacing:0;font-size:.75rem;width:100%}ec-table .main-table th{border-bottom:
|
|
186
|
+
styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}ec-table{display:flex;min-height:0;position:relative}ec-table .table-scroll-container{flex:1 1;min-height:0;overflow-y:auto}ec-table .main-table{border-collapse:separate;border-spacing:0;font-size:.75rem;width:100%}ec-table .main-table th{border-bottom:2px solid rgba(26,26,35,.18);color:rgba(26,26,35,.66);font-weight:400;height:2rem;line-height:1rem;overflow:hidden;padding:.5rem;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}ec-table .main-table th:first-child{padding-left:1rem}ec-table .main-table th:last-child{padding-right:1rem}ec-table .main-table td{border-top:1px solid rgba(26,26,35,.18);height:2rem;line-height:1rem;overflow:hidden;padding:.5rem;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}ec-table .main-table td:first-child{padding-left:1rem}ec-table .main-table td:last-child{padding-right:1rem}ec-table .main-table tbody>tr:first-child td{border-top:0}ec-table .main-table tbody>tr.is-error td{background-color:#ecc4c5}ec-table .main-table tbody>tr.is-success td{background-color:#dff0d8}ec-table .main-table tfoot td{font-weight:700}ec-table .main-table tbody>tr.is-selected,ec-table .main-table tbody>tr.is-selected>td{background-color:#dae4e9}ec-table .main-table tr.is-heading td{border-top:0;color:rgba(26,26,35,.66);font-size:.75rem;font-weight:700;line-height:1.333333333;padding-bottom:0;text-transform:uppercase;vertical-align:bottom}ec-table .main-table tr.is-heading+tr td{border-top:0}ec-table .main-table td.actions-col,ec-table .main-table th.actions-col{padding:0}ec-table .main-table td.actions-1,ec-table .main-table th.actions-1{width:2.0625rem}ec-table .main-table td.actions-2,ec-table .main-table th.actions-2{width:4.0625rem}ec-table .main-table td.actions-3,ec-table .main-table th.actions-3{width:6.0625rem}ec-table .main-table td.actions-4,ec-table .main-table th.actions-4{width:8.0625rem}ec-table .main-table td.actions-5,ec-table .main-table th.actions-5{width:10.0625rem}ec-table.is-condensed td,ec-table.is-condensed th{height:1.5rem;padding-bottom:.25rem;padding-top:.25rem}ec-table.is-condensed:not(.has-borders)>table td{border-bottom-width:0;border-top-width:0}ec-table .selectable-table-toolbar{align-items:center;background-color:#fff;border-bottom:2px solid rgba(26,26,35,.18);display:flex;height:3rem;left:calc(var(--selection-toolbar-left, 0rem) + 1.5625rem);padding:0 .5rem;position:absolute;right:0;top:0;z-index:4}ec-table.is-scrollable>.table-scroll-container>table{position:relative}ec-table.is-scrollable>.table-scroll-container>table>thead th{background-color:#fff;position:sticky!important;top:0;z-index:1}ec-table.is-scrollable>.table-scroll-container>table>tfoot td{background-color:#fff;bottom:0;position:sticky!important;z-index:1}ec-table.is-scrollable.bg-body>.table-scroll-container>table>tfoot td,ec-table.is-scrollable.bg-body>.table-scroll-container>table>thead th{background-color:#f1f3f4}ec-table.is-sortable th[data-sortfield]{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}ec-table.is-sortable th[data-sortfield].is-resizable .content-wrapper{cursor:pointer;display:flex}ec-table.is-sortable th[data-sortfield].is-resizable .content{flex:0 1 auto}ec-table.is-sortable th[data-sortfield].is-resizable .content-wrapper:after{background-position:50%;background-repeat:no-repeat;content:\"\";display:none;flex:none;height:.875rem;margin:0 .25rem;vertical-align:top;width:.875rem}ec-table.is-sortable th[data-sortfield].is-resizable.is-sorted-asc .content-wrapper:after,ec-table.is-sortable th[data-sortfield].is-resizable.is-sorted-desc .content-wrapper:after{background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"rgba(26, 26, 35, 0.66)\" d=\"M14 8.828V27a2 2 0 1 0 4 0V8.828l4.586 4.586a2 2 0 0 0 2.828-2.828l-8-8a2 2 0 0 0-2.828 0l-8 8a2 2 0 0 0 2.828 2.828L14 8.828z\"/></svg>');display:inline-block}ec-table.is-sortable th[data-sortfield].is-resizable.is-sorted-desc .content-wrapper:after{transform:scaleY(-1)}ec-table.is-sortable th[data-sortfield].is-resizable.text-right .content-wrapper{flex-direction:row-reverse}ec-table.is-sortable th[data-sortfield]:not(.is-resizable){cursor:pointer}ec-table.is-sortable th[data-sortfield]:not(.is-resizable):after{background-position:50%;background-repeat:no-repeat;content:\"\";display:none;height:.875rem;margin:0 .25rem;vertical-align:top;width:.875rem}ec-table.is-sortable th[data-sortfield]:not(.is-resizable).is-sorted-asc:after,ec-table.is-sortable th[data-sortfield]:not(.is-resizable).is-sorted-desc:after{background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"rgba(26, 26, 35, 0.66)\" d=\"M14 8.828V27a2 2 0 1 0 4 0V8.828l4.586 4.586a2 2 0 0 0 2.828-2.828l-8-8a2 2 0 0 0-2.828 0l-8 8a2 2 0 0 0 2.828 2.828L14 8.828z\"/></svg>');display:inline-block}ec-table.is-sortable th[data-sortfield]:not(.is-resizable).is-sorted-desc:after{transform:scaleY(-1)}ec-table.is-sortable th[data-sortfield]:not(.is-resizable).text-right:after{content:\"\";display:none!important}ec-table.is-sortable th[data-sortfield]:not(.is-resizable).text-right:before{background-position:50%;background-repeat:no-repeat;content:\"\";display:none;height:.875rem;margin:0 .25rem;vertical-align:top;width:.875rem}ec-table.is-sortable th[data-sortfield]:not(.is-resizable).text-right.is-sorted-asc:before,ec-table.is-sortable th[data-sortfield]:not(.is-resizable).text-right.is-sorted-desc:before{background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"rgba(26, 26, 35, 0.66)\" d=\"M14 8.828V27a2 2 0 1 0 4 0V8.828l4.586 4.586a2 2 0 0 0 2.828-2.828l-8-8a2 2 0 0 0-2.828 0l-8 8a2 2 0 0 0 2.828 2.828L14 8.828z\"/></svg>');display:inline-block}ec-table.is-sortable th[data-sortfield]:not(.is-resizable).text-right.is-sorted-desc:before{transform:scaleY(-1)}ec-table.is-resizable .main-table{table-layout:fixed;width:100%}ec-table.is-resizable th.is-resizable{overflow:visible;position:relative;z-index:1}ec-table.is-resizable th.is-resizable.is-active{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}ec-table.is-resizable th.is-resizable.is-active .handle:after{background-color:#0084a9}ec-table.is-resizable th.is-resizable .handle{height:100%;padding:.5rem 0 .5rem 10px;position:absolute;right:-7px;right:0;top:0;width:13px;z-index:30}ec-table.is-resizable th.is-resizable .handle:after{content:\"\";display:block;height:100%;position:relative;transition:background-color .3s ease}ec-table.is-resizable th.is-resizable .handle:hover{cursor:col-resize}ec-table.is-resizable th.is-resizable .handle:hover:after{background-color:#0084a9}ec-table.is-resizable th.is-resizable .handle:before{background-color:#d2d7d9;bottom:.5rem;content:\"\";display:block;position:absolute;right:0;top:.5rem;width:1px}ec-table.is-resizable th.is-resizable .content{overflow:hidden;text-overflow:clip;white-space:nowrap}ec-table.is-resizable th.is-resizable:last-child .handle:before{display:none}ec-table.is-resizable td,ec-table.is-resizable th{overflow:hidden;text-overflow:clip;white-space:nowrap}ec-table.is-selectable .main-table thead th{height:3rem}ec-table.is-selectable .main-table tbody>tr:hover>td{background-color:#bfe0e9;border-color:transparent;cursor:pointer}ec-table.is-selectable .main-table tbody>tr:hover.is-selected{background-color:#dae4e9}ec-table.is-selectable .main-table tbody>tr:hover+tr>td{border-color:#bfe0e9}ec-table.is-selectable th.is-resizable .handle{padding-bottom:1rem;padding-top:1rem}ec-table.is-selectable th.is-resizable .handle:before{bottom:1rem;top:1rem}ec-table.is-master-detail>table{table-layout:fixed}ec-table.is-form-table td{border-top:0;font-size:1rem;height:2.5rem;line-height:2rem;padding-bottom:.25rem;padding-top:.25rem}ec-table.is-form-table tr:first-child td{height:2.75rem;padding-top:.5rem}ec-table.is-form-table tr:last-child td{height:2.75rem;padding-bottom:.5rem}ec-table.is-fixed .main-table{table-layout:fixed}"]
|
|
187
187
|
},] }
|
|
188
188
|
];
|
|
189
189
|
TableComponent.ctorParameters = () => [
|
|
@@ -59,7 +59,7 @@ TagsComponent.decorators = [
|
|
|
59
59
|
{ type: Component, args: [{
|
|
60
60
|
selector: 'ec-tags',
|
|
61
61
|
template: "<ul class=\"tags\" [class.is-wrapped]=\"wrap\">\r\n <li *ngFor=\"let tag of tagsArray; index as i\"\r\n id=\"{{id}}_tag_{{i}}\"\r\n class=\"tag is-{{tag.type}} {{tag.classList}} mr-1\"\r\n [ngClass]=\"{'text-caption-1': !isCondensed, 'text-caption-2': isCondensed, 'is-condensed': isCondensed, 'pr-0': tag.isDismissable}\"\r\n title=\"{{tag.tooltip | translate}}\">\r\n <i *ngIf=\"tag.icon\" class=\"ec-icon {{tag.icon}} font-color-muted ec-icon-sm\"></i>\r\n {{tag.label | translate}}\r\n <button id=\"{{id}}_tag_{{i}}_dismissButton\"\r\n *ngIf=\"tag.isDismissable\"\r\n (click)=\"closeTag(tag)\">\r\n <i class=\"ec-icon ec-icon-sm icon-cancel\"></i>\r\n </button>\r\n </li>\r\n</ul>",
|
|
62
|
-
styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}:host{display:block}.tags{display:flex;list-style:none;margin:0;padding:0}.tags.is-wrapped{flex-wrap:wrap;margin-top:.25rem}.tags.is-wrapped>.tag{margin-bottom:.25rem}.tag{align-items:center;background-color:rgba(172,188,195,.25);border:2px solid #acbcc3;border-radius
|
|
62
|
+
styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}:host{display:block}.tags{display:flex;list-style:none;margin:0;padding:0}.tags.is-wrapped{flex-wrap:wrap;margin-top:.25rem}.tags.is-wrapped>.tag{margin-bottom:.25rem}.tag{align-items:center;background-color:rgba(172,188,195,.25);border:2px solid #acbcc3;border-radius:calc(var(--ec-border-radius, .25rem)*3);display:inline-flex;height:1.5rem;line-height:1.25rem;overflow:hidden;padding:0 .4375rem;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}.tag>.ec-icon:first-child{margin-right:.1875rem}.tag .ec-icon{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:flex;justify-content:center;min-width:1em}.tag .ec-icon,.tag .ec-icon:after,.tag .ec-icon:before{height:auto;width:auto}.tag.is-info{background-color:rgba(172,188,195,.25);border-color:#acbcc3}.tag.is-success{background-color:rgba(193,205,35,.25);border-color:#c1cd23}.tag.is-warning{background-color:rgba(245,212,0,.25);border-color:#f5d400}.tag.is-danger{background-color:rgba(227,52,54,.25);border-color:#e33436}.tag.is-accent{background-color:rgba(144,110,168,.25);border-color:#906ea8}.tag.is-chargeback{background-color:rgba(250,123,46,.25);border-color:#fa7b2e}.tag.is-accrual{background-color:rgba(35,195,205,.25);border-color:#23c3cd}button{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:100%;padding:0 .4375rem 0 .1875rem}button:focus,button:hover{background-color:rgba(26,26,35,.1);outline:none}.is-condensed{border:0;border-radius:var(--ec-border-radius,.25rem);height:1.125rem;justify-content:center;line-height:1.125rem;min-width:1.125rem;padding:0 .25rem}.is-condensed>.ec-icon:first-child{margin-right:.125rem}.is-condensed button{padding-left:.125rem;padding-right:.25rem}"]
|
|
63
63
|
},] }
|
|
64
64
|
];
|
|
65
65
|
TagsComponent.ctorParameters = () => [];
|