@universis/ngx-tables 0.7.28 → 0.7.30
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/universis-ngx-tables.umd.js +5 -5
- package/bundles/universis-ngx-tables.umd.js.map +1 -1
- package/bundles/universis-ngx-tables.umd.min.js +1 -1
- package/bundles/universis-ngx-tables.umd.min.js.map +1 -1
- package/esm2015/lib/components/advanced-table/advanced-table.component.js +2 -2
- package/esm2015/lib/components/advanced-table/advanced-table.formatters.js +5 -5
- package/esm5/lib/components/advanced-table/advanced-table.component.js +2 -2
- package/esm5/lib/components/advanced-table/advanced-table.formatters.js +5 -5
- package/fesm2015/universis-ngx-tables.js +5 -5
- package/fesm2015/universis-ngx-tables.js.map +1 -1
- package/fesm5/universis-ngx-tables.js +6 -6
- package/fesm5/universis-ngx-tables.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"universis-ngx-tables.umd.js.map","sources":["../../node_modules/tslib/tslib.es6.js","ng://@universis/ngx-tables/lib/components/advanced-table/advanced-table.formatters.ts","ng://@universis/ngx-tables/lib/components/advanced-table/advanced-filter-value-provider.service.ts","ng://@universis/ngx-tables/lib/components/column-selector/column-selector.component.ts","ng://@universis/ngx-tables/lib/components/column-selector/column-selector.service.ts","ng://@universis/ngx-tables/lib/components/advanced-table/advanced-table.component.ts","ng://@universis/ngx-tables/lib/components/advanced-list/advanced-list.component.ts","ng://@universis/ngx-tables/lib/components/advanced-row-action/advanced-row-action.component.ts","ng://@universis/ngx-tables/lib/components/advanced-table/advanced-table-search-base.ts","ng://@universis/ngx-tables/lib/components/advanced-search-form/advanced-search-form.component.ts","ng://@universis/ngx-tables/lib/components/advanced-table-modal/advanced-table-modal-base.component.ts","ng://@universis/ngx-tables/lib/components/advanced-select/advanced-select.component.ts","ng://@universis/ngx-tables/lib/components/advanced-select/advanced-select.service.ts","ng://@universis/ngx-tables/lib/components/advanced-table/advanced-table-resolvers.ts","ng://@universis/ngx-tables/lib/tables.activated-table.service.ts","ng://@universis/ngx-tables/lib/components/advanced-table/advanced-table-settings.component.ts","ng://@universis/ngx-tables/lib/components/advanced-table/advanced-table-search.component.ts","ng://@universis/ngx-tables/lib/components/advanced-table/advanced-table.formatters.interface.ts","ng://@universis/ngx-tables/lib/components/table-simple-header/table-simple-header.component.ts","ng://@universis/ngx-tables/lib/directives/advanced-table-editor.directive.ts","ng://@universis/ngx-tables/lib/directives/btnexp.directive.ts","ng://@universis/ngx-tables/lib/services/advanced-aggregator/advanced-aggregator.service.ts","ng://@universis/ngx-tables/lib/components/advanced-aggregator/advanced-aggregator.component.ts","ng://@universis/ngx-tables/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.ts","ng://@universis/ngx-tables/lib/components/add-items/add-items.component.ts","ng://@universis/ngx-tables/lib/pipes/advanced-aggregator.pipe.ts","ng://@universis/ngx-tables/lib/pipes/advansed-aggregator-list-title-parse.pipe.ts","ng://@universis/ngx-tables/lib/i18n/tables.el.ts","ng://@universis/ngx-tables/lib/i18n/tables.en.ts","ng://@universis/ngx-tables/lib/actions/table.actions.ts","ng://@universis/ngx-tables/lib/reducers/index.ts","ng://@universis/ngx-tables/lib/directives/advance-table-state.directive.ts","ng://@universis/ngx-tables/lib/directives/advance-search-state.directive.ts","ng://@universis/ngx-tables/lib/directives/advanced-search-router-state.directive.ts","ng://@universis/ngx-tables/lib/tables.module.ts","ng://@universis/ngx-tables/public_api.ts","ng://@universis/ngx-tables/universis-ngx-tables.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { template, at } from 'lodash';\nimport { TableColumnConfiguration } from './advanced-table.interfaces';\nimport { Injector } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DatePipe } from '@angular/common';\nimport * as ISO6391 from 'iso-639-1/build';\nimport { ActivatedRoute, NavigationExtras, Router, UrlTree } from '@angular/router';\ndeclare var jQuery: any;\nexport abstract class AdvancedColumnFormatter implements TableColumnConfiguration {\n\n public static templateCache = new Map<string, (data: any) => string>();\n\n protected injector: Injector;\n public className: string;\n public defaultContent: string;\n public formatString: string;\n public formatter: string;\n public hidden: boolean;\n public name: string;\n public order: string;\n public property: string;\n public sortable: boolean;\n public title: string;\n public formatOptions?: any;\n public actions?: Array<any>;\n\n public static template(expr: string): (data: any) => string {\n let result = AdvancedColumnFormatter.templateCache.get(expr);\n if (typeof result === 'function') {\n return result;\n }\n result = template(expr);\n AdvancedColumnFormatter.templateCache.set(expr, result);\n return result;\n }\n\n public abstract render(data: any, type: string, row: any, meta: any): any;\n\n protected createUrlTree(data: any, options: { commands: any[], navigationExtras?: NavigationExtras }): UrlTree {\n if (Array.isArray(options.commands)) {\n const activatedRoute: ActivatedRoute = this.injector.get(ActivatedRoute);\n const router: Router = this.injector.get(Router);\n const commands = options.commands.map((command) => {\n if (typeof command === 'string') {\n return AdvancedColumnFormatter.template(command)(data);\n }\n if (command.outlets) {\n const commandOutlets = {};\n Object.keys(command.outlets).forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(command.outlets, key)) {\n const outlet = command.outlets[key];\n if (Array.isArray(outlet)) {\n Object.defineProperty(commandOutlets, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: outlet.map((x) => {\n return AdvancedColumnFormatter.template(x)(data);\n }),\n });\n } else {\n Object.defineProperty(commandOutlets, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: outlet,\n });\n }\n }\n });\n return {\n outlets: commandOutlets,\n };\n }\n return command;\n });\n const queryParams = {};\n let replaceUrl = true;\n if (options.navigationExtras && options.navigationExtras.queryParams) {\n Object.keys(options.navigationExtras.queryParams).map((key) => {\n const text = options.navigationExtras.queryParams[key];\n queryParams[key] = AdvancedColumnFormatter.template(text)(data);\n });\n }\n if (options.navigationExtras && typeof options.navigationExtras.replaceUrl !== 'undefined') {\n replaceUrl = options.navigationExtras.replaceUrl;\n }\n let skipLocationChange = false;\n if (options.navigationExtras && typeof options.navigationExtras.skipLocationChange !== 'undefined') {\n skipLocationChange = options.navigationExtras.skipLocationChange;\n }\n\n let fragment: string;\n if (options.navigationExtras && typeof options.navigationExtras.fragment !== 'undefined') {\n fragment = options.navigationExtras.fragment;\n }\n\n return router.createUrlTree(commands,\n {\n fragment,\n relativeTo: activatedRoute,\n queryParams,\n replaceUrl,\n skipLocationChange,\n }\n );\n }\n }\n}\n\nexport interface OnAdvancedColumnAfterRender {\n afterRender(cell: any, cellData: any, rowData: any, rowIndex: number, colIndex: number): void;\n}\n\nexport class NestedPropertyFormatter extends AdvancedColumnFormatter {\n public render(data, type, row, meta) {\n // get column\n const column = meta.settings.aoColumns[meta.col];\n if (column && column.data) {\n return at(row, column.data.replace(/\\//g, '.'));\n }\n return data;\n }\n constructor() {\n super();\n }\n}\n\nexport class ButtonFormatter extends AdvancedColumnFormatter {\n public render(data, type, row, meta) {\n if (data == null) {\n return '';\n }\n // get column\n const column = meta.settings.aoColumns[meta.col];\n // get format options\n const formatOptions = Object.assign({\n buttonClass: 'btn btn-default',\n }, this.formatOptions);\n // get text content\n let buttonText: string;\n let buttonTitle = '';\n if (formatOptions.buttonText) {\n buttonText = this.injector.get(TranslateService).instant(formatOptions.buttonText);\n } else {\n buttonText = formatOptions.buttonContent;\n }\n if (formatOptions.buttonTitle) {\n buttonTitle = this.injector.get(TranslateService).instant(formatOptions.buttonTitle);\n }\n if (Array.isArray(this.formatOptions.commands)) {\n let routerLink = this.createUrlTree(row, this.formatOptions);\n return `<a class=\"${formatOptions.buttonClass}\" title=\"${buttonTitle}\" href=\"#${routerLink}\">${buttonText}</a>`;\n }\n // and return button\n const href = AdvancedColumnFormatter.template(this.formatString)(row);\n return `<a class=\"${formatOptions.buttonClass}\" title=\"${buttonTitle}\" href=\"${href}\">${buttonText}</a>`;\n }\n constructor() {\n super();\n }\n}\n\nexport class LinkFormatter extends AdvancedColumnFormatter {\n public render(data: any, type: string, row: any, meta: any): any {\n // get column\n const column = meta.settings.aoColumns[meta.col];\n if (column && column.data) {\n return `<a href=\"${(AdvancedColumnFormatter.template(this.formatString)(row))}\">${data}</a>`;\n }\n return data;\n }\n constructor() {\n super();\n }\n}\n\nexport class ActionLinkFormatter extends AdvancedColumnFormatter\n implements OnAdvancedColumnAfterRender {\n public render(data: any, type: string, row: any, meta: any): any {\n // get column\n const column = meta.settings.aoColumns[meta.col];\n\n if (column && column.data) {\n const actions = this.actions || [];\n let index = 1;\n for (const action of actions) {\n Object.assign(action, {\n name: action.name || `action${index}`,\n });\n index += 1;\n }\n // return the dropdown menu with 3 dots\n return `<div class='dropdown details-control' data-id='${data}' data-type='student' >\n <a id=\"dropdownMenuButton-${data}\"\n data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n <span class=\"fa-2x text-dots\"></span>\n </a>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButton-${data}\">\n ${actions.map((x) => {\n if (x.type === 'divider') {\n return `<div class=\"dropdown-divider\"></div>`;\n }\n if (x.formatOptions && x.formatOptions.commands) {\n const urlTree = this.createUrlTree(row, x.formatOptions);\n return `<a data-name='${x.name}' class=\"dropdown-item\" href=\"${urlTree.toString()}\">\n ${this.injector.get(TranslateService).instant(x.title)}\n </a>`;\n }\n return `<a data-name='${x.name}' class=\"dropdown-item\" href=\"${AdvancedColumnFormatter.template(x.href)(row)}\">\n ${this.injector.get(TranslateService).instant(x.title)}\n </a>`;\n })\n .join('')}\n </div>\n </div>`;\n }\n return data;\n }\n\n constructor() {\n super();\n }\n public afterRender(cell: any, cellData: any, rowData: any, rowIndex: number, colIndex: number): void {\n // assign bootstrap dropdown (?)\n }\n}\n\nexport class ActionButtonFormatter extends AdvancedColumnFormatter\n implements OnAdvancedColumnAfterRender {\n public render(data: any, type: string, row: any, meta: any): any {\n // get column\n const column = meta.settings.aoColumns[meta.col];\n\n if (column && column.data) {\n const actions = this.actions || [];\n let index = 1;\n for (const action of actions) {\n Object.assign(action, {\n name: action.name || `action${index}`,\n });\n index += 1;\n }\n let buttonText: string;\n if (this.formatOptions && this.formatOptions.buttonText) {\n // if button text is a literal expression\n if (this.formatOptions.buttonText.includes('${')) {\n // use template\n buttonText = AdvancedColumnFormatter.template(this.formatOptions.buttonText)(row);\n } else {\n // otherwise translate it\n buttonText = this.injector.get(TranslateService).instant(this.formatOptions.buttonText);\n }\n }\n let buttonTitle: string;\n if (this.formatOptions && this.formatOptions.buttonTitle) {\n buttonTitle = this.injector.get(TranslateService).instant(this.formatOptions.buttonTbuttonTitleext);\n }\n const buttonClass = (this.formatOptions && this.formatOptions.buttonClass) || 'btn btn-light';\n // return the dropdown menu with 3 dots\n return `<div class='dropdown details-control' data-id='${data}'>\n <a class=\"${buttonClass} dropdown-toggle\" href=\"#\" role=\"button\" title=\"${buttonTitle}\"\n id=\"dropdownMenuButton-${data}\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n ${buttonText}\n </a>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButton-${data}\">\n ${actions.map((x) => {\n if (x.type === 'divider') {\n return `<div class=\"dropdown-divider\"></div>`;\n }\n if (x.commands) {\n const urlTree = this.createUrlTree(row, x);\n return `<a class=\"dropdown-item\" href=\"${urlTree.toString()}\">\n ${this.injector.get(TranslateService).instant(x.title)}\n </a>`;\n }\n return `<a class=\"dropdown-item\" href=\"${AdvancedColumnFormatter.template(x.href)(row)}\">\n ${this.injector.get(TranslateService).instant(x.title)}\n </a>`;\n })\n .join('')}\n </div>\n </div>`;\n }\n return data;\n }\n\n constructor() {\n super();\n }\n public afterRender(cell: any, cellData: any, rowData: any, rowIndex: number, colIndex: number): void {\n // assign bootstrap dropdown (?)\n }\n}\n\nexport class ActionSplitButtonFormatter extends AdvancedColumnFormatter\n implements OnAdvancedColumnAfterRender {\n public render(data: any, type: string, row: any, meta: any): any {\n // get column\n const column = meta.settings.aoColumns[meta.col];\n\n if (column && column.data) {\n const actions = this.actions || [];\n let index = 1;\n for (const action of actions) {\n Object.assign(action, {\n name: action.name || `action${index}`,\n });\n index += 1;\n }\n if (actions.length === 0) {\n return;\n }\n const buttonClass = (this.formatOptions && this.formatOptions.buttonClass) || 'btn btn-light';\n // return the dropdown menu with 3 dots\n const defaultAction = actions[0];\n let defaultActionHref: string;\n if (defaultAction && defaultAction.commands) {\n defaultActionHref = this.createUrlTree(row, defaultAction).toString();\n } else {\n defaultActionHref = AdvancedColumnFormatter.template(defaultAction.href)(row);\n }\n return `<div class=\"btn-group\">\n <a type=\"button\" class=\"${buttonClass}\" href=\"${defaultActionHref}\">\n ${this.injector.get(TranslateService).instant(defaultAction.title)}\n </a>\n <button type=\"button\" class=\"${buttonClass} dropdown-toggle dropdown-toggle-split\"\n data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n <span class=\"sr-only\">${this.injector.get(TranslateService).instant('Toggle Dropdown')}</span>\n </button>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButton-${data}\">\n ${actions.map((x) => {\n if (x.title === '-') {\n return `<div class=\"dropdown-divider\"></div>`;\n }\n if (x.commands) {\n const urlTree = this.createUrlTree(row, x);\n return `<a class=\"dropdown-item\" href=\"${urlTree.toString()}\">\n ${this.injector.get(TranslateService).instant(x.title)}\n </a>`;\n }\n return `<a class=\"dropdown-item\" href=\"${AdvancedColumnFormatter.template(x.href)(row)}\">\n ${this.injector.get(TranslateService).instant(x.title)}\n </a>`;\n })\n .join('')}\n </div>\n </div>`;\n }\n return data;\n }\n\n constructor() {\n super();\n }\n public afterRender(cell: any, cellData: any, rowData: any, rowIndex: number, colIndex: number): void {\n // assign bootstrap dropdown (?)\n }\n}\n\nexport class SelectRowFormatter extends AdvancedColumnFormatter {\n public render(data, type, row, meta) {\n // get column\n const column = meta.settings.aoColumns[meta.col];\n if (column && column.data) {\n const _tpl = `<input class=\"checkbox checkbox-theme\" type=\"checkbox\"\n id=\"s-${meta.row}\" /><label for=\"s-${meta.row}\"> </label>`;\n return AdvancedColumnFormatter.template(_tpl)(row);\n }\n return data;\n }\n constructor() {\n super();\n }\n}\n\nexport class TemplateFormatter extends AdvancedColumnFormatter {\n public render(data: any, type: string, row: any, meta: any): any {\n // get column\n const column = meta.settings.aoColumns[meta.col];\n if (column && column.data) {\n return AdvancedColumnFormatter.template(this.formatString)(row);\n }\n return data;\n }\n constructor() {\n super();\n }\n}\n\nexport class TrueFalseFormatter extends AdvancedColumnFormatter {\n\n public render(data, type, row, meta) {\n return data ? this.injector.get(TranslateService).instant('TrueFalse.long.Yes') :\n this.injector.get(TranslateService).instant('TrueFalse.long.No');\n }\n\n constructor() {\n super();\n }\n}\n\ndeclare interface TranslationFormatterTemplate {\n translateTemplate?: (data: any) => string;\n}\n\nexport class TranslationFormatter extends AdvancedColumnFormatter {\n public render(data: any, type: string, row: any, meta: any): any {\n // get column\n const column: TranslationFormatterTemplate = meta.settings.aoColumns[meta.col];\n if (column && data != null) {\n return this.injector.get(TranslateService).instant(\n AdvancedColumnFormatter.template(this.formatString)({\n value: data,\n }));\n }\n return this.injector.get(TranslateService).instant('Unknown');\n }\n constructor() {\n super();\n }\n}\n\nexport class DateTimeFormatter extends AdvancedColumnFormatter {\n public render(data: any, type: string, row: any, meta: any): any {\n // get column\n const column = meta.settings.aoColumns[meta.col];\n if (column && column.data) {\n const datePipe: DatePipe = new DatePipe(this.injector.get(TranslateService).currentLang);\n if (typeof data === 'string' && /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}$/.test(data)) {\n return datePipe.transform(new Date(data + ':00'), this.formatString);\n }\n return datePipe.transform(data, this.formatString);\n }\n return data;\n }\n constructor() {\n super();\n }\n}\n\nexport class NgClassFormatter extends AdvancedColumnFormatter {\n public render(data, type, row, meta) {\n // get column\n const column = meta.settings.aoColumns[meta.col];\n if (column && column.data) {\n // get formatOptions\n if (this.formatOptions) {\n const ngClass = this.formatOptions.ngClass;\n // check condition for each key\n column.ngClassTemplates = column.ngClassTemplates || {};\n for (const key of Object.keys(ngClass)) {\n const result = AdvancedColumnFormatter.template(ngClass[key])(row);\n const fn = new Function(`return ${result};`);\n // if condition returns true add class\n if (fn() === true) {\n return `<span class=\"${key}\">${data}</span>`;\n }\n }\n }\n return data;\n }\n return data;\n }\n constructor() {\n super();\n }\n}\nexport class LanguageFormatter extends AdvancedColumnFormatter {\n public render(data, type, row, meta) {\n if (data) {\n return ISO6391.getNativeName(data);\n }\n return data;\n }\n constructor() {\n super();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TemplatePipe } from '@universis/common';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AdvancedFilterValueProvider {\n\n public values = { };\n private _template: TemplatePipe;\n\n constructor() {\n this._template = new TemplatePipe();\n }\n\n buildFilter(filter) {\n if (filter) {\n return this._template.transform(filter, this.values)\n }\n }\n\n async asyncBuildFilter(filter) {\n if (filter) {\n return this._template.transform(filter, await this.getValues());\n }\n }\n\n async getValues() {\n return this.values;\n }\n\n}\n","import { Component, OnInit, OnDestroy, Input, EventEmitter, ViewEncapsulation, OnChanges, SimpleChanges, ChangeDetectorRef, ViewChild, ElementRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { RouterModalOkCancel } from '@universis/common/routing';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n@Component({\n selector: 'app-column-selector',\n templateUrl: './column-selector.component.html',\n encapsulation: ViewEncapsulation.None,\n styles: [\n `\n .form-select {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n padding: 5px;\n }\n .form-select * {\n padding: 5px 5px;\n }\n .btn.disabled, .btn:disabled {\n border-color: transparent !important;\n }\n `\n ]\n})\nexport class ColumnSelectorComponent extends RouterModalOkCancel implements OnInit, OnDestroy, OnChanges {\n \n @Input() columns: { key: string, title: string, visible: boolean, index: number }[];\n public dismiss: EventEmitter<any> = new EventEmitter();\n\n @Input() selectedColumns: { key: string, title: string }[];\n\n @ViewChild('moveUpButton') moveUpButton: ElementRef;\n @ViewChild('moveDownButton') moveDownButton: ElementRef;\n\n availableColumnsControl = new FormControl();\n selectedColumnsControl = new FormControl();\n\n ok(): Promise<any> {\n this._modalRef.hide();\n this.applyChanges();\n this.dismiss.emit('ok');\n return Promise.resolve('ok');\n }\n cancel(): Promise<any> {\n this._modalRef.hide();\n this.dismiss.emit('cancel');\n return Promise.resolve('cancel');\n }\n\n constructor(router: Router,\n activatedRoute: ActivatedRoute,\n private _modalRef: BsModalRef,\n private ref: ChangeDetectorRef,\n private _translateService: TranslateService) { \n super(router, activatedRoute);\n }\n ngOnChanges(changes: SimpleChanges): void {\n //\n }\n ngOnDestroy(): void {\n //\n }\n ngOnInit(): void {\n if (Array.isArray(this.columns)) {\n this.selectedColumns = this.columns.filter((item) => {\n return item.visible;\n }).sort((a, b) => {\n if (a.index < b.index) {\n return -1\n }\n if (a.index > b.index) {\n return 1;\n }\n return 0;\n }).map((item) => {\n return {\n key: item.key,\n title: item.title\n }\n });\n }\n }\n\n private applyChanges() {\n let moveIndex = this.selectedColumns.length - 1;\n for (const column of this.columns) {\n const findIndex = this.selectedColumns.findIndex((item) => {\n return item.key === column.key;\n });\n if (findIndex < 0) {\n column.visible = false;\n moveIndex += 1;\n column.index = moveIndex;\n } else {\n column.visible = true;\n column.index = findIndex;\n }\n }\n }\n\n removeColumns() {\n const selected = this.selectedColumnsControl.value as string[];\n if (selected.length > 0) {\n for (const value of selected) {\n let findIndex = this.selectedColumns.findIndex((item) => {\n return item.key === value;\n });\n if (findIndex >= 0) {\n this.selectedColumns.splice(findIndex, 1);\n }\n }\n // reset column\n this.selectedColumnsControl.reset();\n }\n }\n\n addColumns() {\n const selected = this.availableColumnsControl.value as string[];\n if (selected.length > 0) {\n for (const value of selected) {\n let findColumn = this.columns.find((item) => {\n return item.key === value;\n });\n if (findColumn) {\n const findIndex = this.selectedColumns.findIndex((item) => {\n return item.key === value;\n });\n if (findIndex < 0) {\n this.selectedColumns.push({\n key: findColumn.key,\n title: findColumn.title\n });\n }\n }\n }\n // find the last index of the selected items\n const lastSelectedIndex = this.columns.findIndex((item) => {\n return item.key === selected[selected.length - 1];\n });\n // reset control\n this.availableColumnsControl.reset();\n if (lastSelectedIndex > -1 && lastSelectedIndex < this.columns.length - 1) {\n this.availableColumnsControl.patchValue([\n this.columns[lastSelectedIndex + 1].key\n ])\n }\n }\n }\n\n moveUp() {\n this.moveUpButton.nativeElement.disabled = true;\n const selected = this.selectedColumnsControl.value as string[];\n if (selected.length > 0) {\n for (const value of selected) {\n const findIndex = this.selectedColumns.findIndex((item) => {\n return item.key === value;\n });\n if (findIndex > 0) {\n const column = this.selectedColumns[findIndex];\n this.selectedColumns.splice(findIndex, 1);\n this.selectedColumns.splice(findIndex - 1 , 0, column);\n }\n }\n }\n this.moveUpButton.nativeElement.disabled = false;\n }\n\n moveDown() {\n this.moveDownButton.nativeElement.disabled = true;\n const selected = this.selectedColumnsControl.value as string[];\n if (selected.length > 0) {\n for (const value of selected) {\n let findIndex = this.selectedColumns.findIndex((item) => {\n return item.key === value;\n });\n const length = this.columns.length;\n if (findIndex >= 0 && findIndex < length) {\n const column = this.selectedColumns[findIndex];\n this.selectedColumns.splice(findIndex, 1);\n this.selectedColumns.splice(findIndex + 1 , 0, column);\n }\n }\n }\n this.moveDownButton.nativeElement.disabled = false;\n }\n \n\n}\n","import { Injectable } from '@angular/core';\nimport { ModalService } from '@universis/common';\nimport { ColumnSelectorComponent } from './column-selector.component';\nimport { cloneDeep } from 'lodash';\n\n@Injectable()\nexport class ColumnSelectorService {\n\n constructor(private _modal: ModalService) {\n //\n }\n\n selectColumns(columns: { key: string, title: string, visible: boolean, index: number }): \n Promise<{result: string, columns?: { key: string, title: string, visible: boolean, index: number }[]}> {\n return new Promise((resolve, reject) => {\n try {\n const modalRef = this._modal.openModalComponent(ColumnSelectorComponent, {\n class: 'modal-lg modal-table',\n ignoreBackdropClick: true,\n animated: true,\n initialState: {\n columns: columns,\n }\n });\n const componentRef: ColumnSelectorComponent = modalRef.content;\n componentRef.dismiss.subscribe((result: string) => {\n if (result === 'ok') {\n return resolve({\n result: result,\n columns: componentRef.columns\n });\n }\n return resolve({\n result: result\n });\n \n });\n } catch (err) {\n return reject(err);\n }\n });\n }\n\n}\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef, EventEmitter,\n Inject,\n InjectionToken,\n Injector,\n Input, OnDestroy,\n OnInit, Output,\n ViewChild,\n ViewEncapsulation,\n OnChanges,\n SimpleChanges\n} from '@angular/core';\nimport {AngularDataContext} from '@themost/angular';\nimport {TranslatePipe, TranslateService} from '@ngx-translate/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {TableColumnConfiguration, TableConfiguration} from './advanced-table.interfaces';\nimport {DataServiceQueryParams} from '@themost/client';\nimport {AdvancedColumnFormatter} from './advanced-table.formatters';\nimport {ClientDataQueryable} from '@themost/client';\nimport {AdvancedFilterValueProvider} from './advanced-filter-value-provider.service';\nimport {Subscription, BehaviorSubject} from 'rxjs';\nimport {TemplatePipe, LoadingService} from '@universis/common';\nimport {IAdvancedTableFormatters} from './advanced-table.formatters.interface';\n// important note: use this import to avoid Cannot call a namespace ('jquery') error\nimport * as jQuery_ from 'jquery';\nimport 'datatables.net';\nimport {template} from 'lodash';\nimport 'datatables.net-scroller';\nimport 'datatables.net-colreorder';\nimport { HttpClient } from '@angular/common/http';\nimport { ColumnSelectorService } from '../column-selector/column-selector.service';\n// restore jquery import to avoid Cannot call a namespace ('jquery') error\nconst jQuery = jQuery_;\nexport interface AdvancedTableDataResult {\n recordsTotal: number;\n recordsFiltered: number;\n data: Array<any>;\n}\n\nconst DataTablesApi: any = jQuery.fn.dataTable.Api;\nDataTablesApi.register( 'processing()', function( show: any ) {\n return this.iterator('table', ( ctx: any ) => {\n ctx.oApi._fnProcessingDisplay( ctx, show );\n } );\n});\n\nclass TableTranslationChangeDetector extends ChangeDetectorRef {\n public checkNoChanges(): void {\n }\n\n public detach(): void {\n }\n\n public detectChanges(): void {\n }\n\n public markForCheck(): void {\n }\n\n public reattach(): void {\n }\n\n}\n\nexport let COLUMN_FORMATTERS = new InjectionToken('column.formatters');\n\nclass ColumnFormatter extends AdvancedColumnFormatter {\n constructor(protected injector: Injector) {\n super();\n }\n\n public class: string;\n public className: string;\n public defaultContent: string;\n public formatString: string;\n public formatter: string;\n public hidden: boolean;\n public name: string;\n public order: string;\n public property: string;\n public sortable: boolean;\n public title: string;\n\n public render(data: any, type: any, row: any, meta: any) {\n //\n }\n}\n\nfunction forceCast<T>(input: any): T {\n return input;\n}\n\nexport class AdvancedTableConfiguration {\n public static cast(input: any, clone?: boolean): TableConfiguration {\n if (clone) {\n return forceCast<TableConfiguration>(JSON.parse(JSON.stringify(input)));\n }\n return forceCast<TableConfiguration>(input);\n }\n}\n\nfunction getRandomIdentifier() {\n return (\n Number(String(Math.random()).slice(2))\n ).toString(36);\n}\n\n@Component({\n // tslint:disable-next-line: component-selector\n selector: 'app-advanced-table',\n template: `\n <table #table class=\"dataTable\">\n </table>\n <div #emptyTable class=\"d-none\">\n <div>\n <div class=\"mt-4\">\n <div class=\"icon-circle bg-gray-300 border-gray-100\"></div>\n </div>\n <div class=\"mt-4\">\n <h4 class=\"font-3xl text-dark\" [translate]=\"'Tables.EmptyTableTitle'\"></h4>\n <p class=\"font-lg text-dark\" [translate]=\"'Tables.EmptyTableMessage'\"></p>\n </div>\n </div>\n </div>\n `,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./advanced-table.component.scss'],\n})\nexport class AdvancedTableComponent implements OnInit, OnDestroy, OnChanges {\n\n private _query: ClientDataQueryable;\n private _config: TableConfiguration;\n private _firstLoad = true;\n private _showFooter = true;\n private _showHeader = true;\n private _showPaging = false;\n private _id = getRandomIdentifier();\n public smartSelect = false;\n public configChanges = new BehaviorSubject<any>(null);\n\n @ViewChild('table') public table: ElementRef;\n @ViewChild('emptyTable') public emptyTable: ElementRef;\n @ViewChild('loadingTable') public loadingTable: ElementRef;\n @Input() public height = 800;\n @Input() public showActions = true;\n @Input() public autoLoad = true;\n @Output('load') public load: EventEmitter<AdvancedTableDataResult> = new EventEmitter<AdvancedTableDataResult>();\n @Output('init') public init: EventEmitter<any> = new EventEmitter<any>();\n @Input('reload') public reload: EventEmitter<any> = new EventEmitter<any>();\n @Output('select') public select: EventEmitter<any> = new EventEmitter<any>();\n @Output('draw') public draw: EventEmitter<any> = new EventEmitter<any>();\n @Output('page') public page: EventEmitter<any> = new EventEmitter<any>();\n @Output('order') public order: EventEmitter<any[][]> = new EventEmitter<any[][]>();\n @Output('scroll') public scroll: EventEmitter<{ top: number; left: number }> = new EventEmitter<{ top: number; left: number }>();\n @Output('selectedItems') public selectedItems: EventEmitter<any> = new EventEmitter<any>();\n @Output('loading') public loading: EventEmitter<{\n target: AdvancedTableComponent\n }> = new EventEmitter<{\n target: AdvancedTableComponent\n }>();\n\n @Input() public scrollable = true;\n @Input() public serverSide = true;\n @Input() public lengthMenu = [50, 100, 200, 500];\n @Input() public paging = true;\n @Input() public pageLength = 25;\n @Input() public columnOrdering = false;\n @Input() public stateSave = false;\n @Input() public stateLoadCallback: (settings: any, callback: (state: any) => void) => void;\n @Input() public stateSaveCallback: (settings: any, state: any) => void;\n\n @Input() public scrollY = 800;\n @Input() public scrollX = true;\n /**\n * Enables row selection. The defaulr value is false\n */\n @Input() public selectable = false;\n /**\n * Enables or disable multiple selection. The default values is true.\n */\n @Input() public multipleSelect = true;\n /**\n * Enables custom selection and hides select column. The default value is false\n */\n @Input() public customSelect = false;\n @Input() public selected = [];\n public unselected = [];\n /**\n * Gets or sets a URL to load table configuration from\n */\n @Input() public configSrc: string;\n\n /**\n * Gets or sets table configuration\n */\n @Input('config')\n public set config(value: TableConfiguration) {\n this._config = value;\n // raise subscription\n this.configChanges.next(this._config);\n }\n\n public get config() {\n return this._config;\n }\n\n /**\n * Indicates whether table footer will be visible or not\n */\n @Input('showFooter')\n public set showFooter(value: boolean) {\n this._showFooter = value;\n // show or hide footer\n if (this._element && this._element.nativeElement) {\n const element = ( this._element.nativeElement as HTMLDivElement)\n .querySelector('.dataTables_info');\n if (element == null) {\n return;\n }\n if (value) {\n element.classList.remove('d-none');\n } else {\n element.classList.add('d-none');\n }\n }\n }\n\n public get showFooter() {\n return this._showFooter;\n }\n\n /**\n * Indicates whether table footer will be visible or not\n */\n @Input('showHeader')\n public set showHeader(value: boolean) {\n this._showHeader = value;\n // show or hide footer\n if (this._element && this._element.nativeElement) {\n const element = ( this._element.nativeElement as HTMLDivElement)\n .querySelector('.dataTable>thead');\n if (element == null) {\n return;\n }\n const dataTable = ( this._element.nativeElement as HTMLDivElement).querySelector('.dataTable');\n if (value) {\n element.classList.remove('d-none');\n // add top margin\n dataTable.classList.remove('mt-2');\n } else {\n element.classList.add('d-none');\n // remove top margin\n dataTable.classList.add('mt-2');\n }\n }\n }\n\n public get showHeader() {\n return this._showHeader;\n }\n\n /**\n * Indicates whether paging information will be visible or not\n */\n @Input('showPaging')\n public set showPaging(value: boolean) {\n this._showPaging = value;\n // show or hide footer\n if (this._element && this._element.nativeElement) {\n const element = ( this._element.nativeElement as HTMLDivElement)\n .querySelector('.dataTables_paginate');\n if (element == null) {\n return;\n }\n if (value) {\n jQuery(element).show();\n } else {\n jQuery(element).hide();\n }\n }\n }\n\n public get showPaging() {\n return this._showPaging;\n }\n\n /**\n * Gets or sets an active query for this table\n */\n @Input('query')\n public set query(value: ClientDataQueryable) {\n this._query = value;\n }\n\n public get query() {\n return this._query;\n }\n\n public readonly translator: TranslatePipe;\n public dataTable: any;\n public dtOptions: any;\n private lastQueryParams: DataServiceQueryParams;\n private reloadSubscription: Subscription;\n\n constructor(private _context: AngularDataContext,\n @Inject(COLUMN_FORMATTERS) private _columnFormatters: IAdvancedTableFormatters,\n private _activatedRoute: ActivatedRoute,\n private _translateService: TranslateService,\n private _injector: Injector,\n private _advancedFilterValueProvider: AdvancedFilterValueProvider,\n private _element: ElementRef,\n private _template: TemplatePipe,\n private _loading: LoadingService,\n private _http: HttpClient,\n private _columnSelector: ColumnSelectorService) {\n // initialize translate pipe\n this.translator = new TranslatePipe(this._translateService, new TableTranslationChangeDetector());\n jQuery.fn.dataTable.ext.classes.sPageButton = 'btn';\n jQuery.fn.dataTable.ext.classes.sPageButtonActive = 'btn btn-light';\n this.reloadSubscription = this.reload.subscribe((data) => {\n this.fetch();\n });\n }\n\n // simple search\n public search(searchText) {\n this.query = this.query || this._context.model(this.config.model).asQueryable();\n if (this.serverSide) {\n if (searchText && this.config.searchExpression) {\n // validate search text in double quotes\n if (/^\"(.*?)\"$/.test(searchText)) {\n this.query.setParam('$filter',\n this._template.transform(this.config.searchExpression, {\n text: searchText.replace(/^\"|\"$/g, ''),\n }));\n } else {\n // try to split words\n const words = searchText.split(' ');\n // join words to a single filter\n const filter = words.map((word) => {\n return this._template.transform(this.config.searchExpression, {\n text: word,\n });\n }).join(' and ');\n // set filter\n this.query.setParam('$filter', filter);\n }\n } else {\n // clear filter\n this.query.setParam('$filter', null);\n }\n this._firstLoad = false;\n this.dataTable.draw();\n } else {\n // ensure empty table layout\n this.resetEmptyTable();\n // search locally\n this.dataTable.search(searchText.trim()).draw();\n // get indexes of filtered rows\n const indexes = Array.from(this.dataTable.context[0].aiDisplay);\n // set recordsFiltered\n const recordsFiltered = indexes.length;\n // set recordsTotal\n const recordsTotal = indexes.length;\n // retrieve data from indexes\n const rows = Array.from(this.dataTable.rows().data());\n const data = indexes.map(index => rows[<number>index]);\n // emit results to load output\n this.load.emit({\n data: data,\n recordsFiltered: recordsFiltered,\n recordsTotal: recordsTotal\n });\n }\n }\n\n public fetch(clearSelected?: boolean) {\n // if data table is null\n if (this.dataTable == null) {\n // initialize data table\n return this.ngOnInit();\n }\n // clear selection if parameter is not declared or it's true\n if (clearSelected == null || clearSelected === true) {\n // set smart select to false\n this.smartSelect = false;\n // clear selected items\n if (this.selected.length) {\n this.selected.splice(0, this.selected.length);\n }\n // clear unselected items\n if (this.unselected.length) {\n this.unselected.splice(0, this.unselected.length);\n }\n }\n // otherwise load data only\n this.dataTable.draw();\n }\n\n public destroy() {\n if (this.dataTable) {\n this.dataTable.destroy();\n this._firstLoad = true;\n jQuery(this.table.nativeElement).empty();\n this.dataTable = null;\n // clear selected items\n if (this.selected.length) {\n this.selected.splice(0, this.selected.length);\n }\n // clear unselected items\n if (this.unselected.length) {\n this.unselected.splice(0, this.unselected.length);\n }\n // set smart select to false\n this.smartSelect = false;\n }\n }\n\n /**\n * Selects the specified data row\n */\n public selectRow(row: any, silent?: boolean) {\n if (row) {\n // get row\n const rowNode = row.node();\n // if multiple select is false\n if (this.multipleSelect === false) {\n if (this.customSelect === false) {\n // enumerate row\n this.dataTable.rows().nodes().each((node: any) => {\n if (node !== rowNode) {\n jQuery(node).find(':checkbox').prop('checked', false);\n }\n });\n } else {\n this.dataTable.rows('.selected').nodes().each((node: any) => {\n if (node !== rowNode) {\n jQuery(node).removeClass('selected');\n }\n });\n }\n // clear selected\n this.selected.splice(0, this.selected.length);\n }\n // if custom select mode is off\n if (this.customSelect === false) {\n jQuery(rowNode).find(':checkbox').prop('checked', true);\n } else {\n // otherwise add class\n jQuery(row.node()).addClass('selected');\n }\n // get row data\n const key = this.config.columns[0].property || this.config.columns[0].name;\n const data = row.data();\n // search selected items\n let findIndex = this.selected.findIndex((x) => {\n return x[key] === data[key];\n });\n if (findIndex >= 0) {\n // remove previously selected row\n this.selected.splice(findIndex, 1);\n }\n this.selected.push(data);\n // validate unselected data\n findIndex = this.unselected.findIndex((x) => {\n return x[key] === data[key];\n });\n if (findIndex >= 0) {\n // remove previously selected row\n this.unselected.splice(findIndex, 1);\n }\n if (silent) {\n return;\n }\n this.selectedItems.emit(this.selected);\n }\n }\n\n /**\n * Unselects the specified data row if it's selected\n */\n public unSelectRow(row: any, silent?: boolean) {\n if (row) {\n // if custom select mode is off\n if (this.customSelect === false) {\n jQuery(row.node()).find(':checkbox').prop('checked', false);\n } else {\n // otherwise add class\n jQuery(row.node()).removeClass('selected');\n }\n // get first column key\n const key = this.config.columns[0].property || this.config.columns[0].name;\n const data = row.data();\n const id = data[key];\n let findIndex = this.selected.findIndex((x) => {\n return x[key] === id;\n });\n if (findIndex >= 0) {\n this.selected.splice(findIndex, 1);\n if (this.smartSelect) {\n // add this row to unselected rows\n findIndex = this.unselected.findIndex((x) => {\n return x[key] === id;\n });\n if (findIndex < 0) {\n this.unselected.push(data);\n }\n }\n if (silent) {\n return;\n }\n this.selectedItems.emit(this.selected);\n }\n }\n }\n\n public selectAny() {\n if (this.dataTable && this.selectable) {\n // set smart select flag\n this.smartSelect = true;\n // select any row\n this.dataTable.rows().every((index: any) => {\n const row = this.dataTable.row( index );\n this.selectRow(row, true);\n });\n // emit selection event\n this.selectedItems.emit(this.selected);\n }\n }\n\n public selectNone() {\n if (this.dataTable && this.selectable) {\n // set smart select flag\n this.smartSelect = false;\n this.unselected.splice(0, this.unselected.length);\n // select any row\n this.dataTable.rows().every((index: any) => {\n const row = this.dataTable.row( index );\n this.unSelectRow(row, true);\n });\n this.selected.splice(0, this.selected.length);\n // emit selection event\n this.selectedItems.emit(this.selected);\n }\n }\n\n public toggleSelectRow(row: any) {\n if (row) {\n const data = row.data();\n // get first column key\n const key = this.config.columns[0].property || this.config.columns[0].name;\n // get id\n const id = data[key];\n // find if row is selected\n const findIndex = this.selected.find((x) => {\n return x[key] === id;\n });\n // if row is selected\n if (findIndex >= 0) {\n // unselect\n this.unSelectRow(row);\n } else {\n this.selectRow(row);\n }\n }\n }\n\n // noinspection JSMethodCanBeStatic\n /**\n * Datatables column renderer for select checkbox\n * @param data\n * @param type\n * @param row\n * @param meta\n * @private\n */\n private _renderSelect(data, type, row, meta) {\n // get column\n const column = meta.settings.aoColumns[meta.col];\n if (typeof column.selectTemplate !== 'function') {\n Object.assign(column, {\n selectTemplate: template(`<input class=\"checkbox checkbox-theme s-row\" type=\"checkbox\"\n id=\"s-${this._id}-\\${meta.row}\" data-id=\"\\${data}\" /><label for=\"s-${this._id}-\\${meta.row}\"> </label>\n `),\n });\n }\n // render template\n return column.selectTemplate({\n meta,\n data,\n });\n }\n\n public ngOnInit() {\n const self = this;\n if (this.dataTable) {\n this.destroy();\n }\n if (this.config) {\n this.loading.emit({\n target: this\n });\n // parse properties\n if (Object.prototype.hasOwnProperty.call(this.config, 'selectable')) {\n this.selectable = this.config.selectable;\n }\n if (Object.prototype.hasOwnProperty.call(this.config, 'multipleSelect')) {\n this.multipleSelect = this.config.multipleSelect;\n }\n // prepare configuration for columns\n const tableColumns = this.config.columns\n // filter action link column\n .filter((column) => {\n if (column.formatter && column.formatter === 'ActionLinkFormatter' && this.showActions === false) {\n return false;\n }\n return true;\n }).map((column) => {\n // convert column to advance table column\n return Object.assign(new ColumnFormatter(this._injector), column);\n }).map((column) => {\n const columnDefinition = {\n data: column.property || column.name,\n defaultContent: column.hasOwnProperty('defaultContent') ? column.defaultContent : '',\n title: this.translator.transform(column.title),\n sortable: column.hasOwnProperty('sortable') ? column.sortable : true,\n visible: column.hasOwnProperty('hidden') ? !column.hidden : true,\n name: column.name,\n };\n\n if (column.className) {\n Object.assign(columnDefinition, {\n className: column.className,\n });\n } else {\n Object.assign(columnDefinition, {\n className: '',\n });\n }\n\n if (column.formatters) {\n Object.assign(columnDefinition, {\n render(data: any, type: string, row: any, meta: any) {\n let result = data;\n column.formatters.forEach((columnFormatter) => {\n const formatter = self._columnFormatters[columnFormatter.formatter];\n if (formatter && typeof formatter.render === 'function') {\n column.formatString = columnFormatter.formatString;\n column.formatOptions = columnFormatter.formatOptions;\n }\n result = formatter.render.bind(column)(result, type, row, meta);\n });\n delete column.formatString;\n delete column.formatOptions;\n return result;\n },\n });\n // check if column formatters export createdCell event\n const items = column.formatters.filter((columnFormatter) => {\n return typeof columnFormatter.afterRender === 'function';\n });\n if (items.length > 0) {\n Object.assign(columnDefinition, {\n createdCell(cell: any, cellData: any, rowData: any, rowIndex: number, colIndex: number) {\n items.forEach((columnFormatter) => {\n const formatter = self._columnFormatters[columnFormatter.formatter];\n if (formatter && typeof formatter.afterRender === 'function') {\n formatter.afterRender.bind(column)(cell, cellData, rowData, rowIndex, colIndex);\n }\n });\n },\n });\n }\n }\n if (column.formatter) {\n const formatter = self._columnFormatters[column.formatter];\n if (formatter && typeof formatter.render === 'function') {\n Object.assign(columnDefinition, {\n render: formatter.render.bind(column),\n });\n }\n if (formatter && typeof formatter.afterRender === 'function') {\n Object.assign(columnDefinition, {\n render: formatter.render.bind(column),\n });\n Object.assign(columnDefinition, {\n createdCell: formatter.afterRender.bind(column),\n });\n }\n }\n return columnDefinition;\n });\n // get table element\n const tableElement = jQuery(this.table.nativeElement);\n jQuery(window).on('resize', () => {\n setTimeout(() => {\n if (this.dataTable) {\n this.dataTable.columns.adjust();\n }\n }, 1);\n });\n // tslint:disable-next-line: no-shadowed-variable\n tableElement.on('processing.dt', (event, settings, processing) => {\n if (processing) {\n // clear empty table element\n tableElement.find('.dataTables_empty').html('');\n setTimeout(() => {\n tableElement.addClass('processing');\n }, 0);\n } else {\n setTimeout(() => {\n tableElement.removeClass('processing');\n }, 0);\n }\n });\n let drawIndex = 1;\n tableElement.on('order.dt', (event: any) => {\n if (this.dataTable) {\n const order = this.dataTable.order();\n const columns = tableColumns;\n if (order && order.length) {\n this.order.emit(order);\n }\n }\n }).on('draw.dt', (event) => {\n this.draw.emit();\n if (this.dataTable) {\n const info: { page: number; pages: number } = this.dataTable.page.info();\n this.page.emit(info);\n if(drawIndex > 1)\n return\n try {\n drawIndex++;\n setTimeout(() => {this.dataTable.columns.adjust();}, 1);\n } catch (err) {\n console.error('ERROR', 'An error occurred while adjusting table columns');\n console.error(err);\n }\n }\n });\n\n // allow selection\n if (this.selectable) {\n // get first column (as row primary key)\n // todo::allow row primary key configuration\n const firstColumn = this.config.columns[0];\n // add select column\n const selectColumnDefinition = {\n className: 'text-center pl-4 pr-0',\n data: firstColumn.property || firstColumn.name,\n defaultContent: '',\n title: '',\n sortable: false,\n visible: !this.customSelect,\n name: firstColumn.name,\n };\n // assign renderer\n Object.assign(selectColumnDefinition, {\n render: this._renderSelect.bind(this),\n });\n // and finally add column\n tableColumns.unshift(selectColumnDefinition);\n // user interface additions\n // handle page change event (a trick for firing draw.dt events)\n tableElement\n // handle draw events\n .on('draw.dt', () => {\n\n if (this.customSelect) {\n // enable row selection event\n tableElement.find('tbody').on('click', 'tr', function() {\n // select row\n const row = self.dataTable.row(this);\n // add row\n self.select.emit(row);\n });\n }\n const elements = tableElement.find('input.s-row');\n elements.off('click').on('click', this.onSelectionChange.bind(this));\n // make selection on current page\n const key = this.config.columns[0].property;\n if (this.selected.length > 0) {\n // enumerate selected items\n this.selected.forEach((item) => {\n // find row identifier\n const id = item[key];\n // if identifier is defined\n if (id != null) {\n // try to find check element with this identifier in attribute data-id\n tableElement.find(`input[data-id='${id}']`).prop('checked', true);\n }\n });\n }\n if (this.smartSelect) {\n // select rows that are not selected\n // and do not included in unselected collection\n tableElement.find('input[data-id]').each((index, element) => {\n // get data id\n if (this.unselected.findIndex((x) => {\n // tslint:disable-next-line:triple-equals\n return x[key] == jQuery(element).attr('data-id');\n }) < 0) {\n this.selectRow(this.dataTable.row(index));\n }\n });\n } else if (this.selected.length === 0) {\n tableElement.find('input[data-id]').prop('checked', false);\n }\n });\n }\n // initialize data table\n const settings = {\n // set length menu\n lengthMenu: [5, 10, 50, 100, 200, 500],\n // hide length menu\n lengthChange: false,\n // enable search but hide search box (css)\n searching: true,\n // enable data processing\n processing: true,\n // enable getting server side data\n serverSide: this.serverSide,\n // enumerate table columns\n columns: tableColumns,\n colReorder: this.columnOrdering,\n order: [],\n // set scroll x\n scrollX: this.scrollX,\n dom: 'Bfrtip',\n autoWidth: false,\n buttons: [\n {\n extend: 'excel',\n filename: this.config.title,\n className: 'd-none',\n exportOptions: {\n columns: 'th:not(:first-child)',\n },\n },\n ],\n // define server data callback\n fnServerData(sSource: any, aoData: any, fnCallback: any, oSettings: any) {\n // if method is invoked for the first time\n if (self._firstLoad) {\n // disabled first load flag\n self._firstLoad = false;\n // if auto load is disabled\n if (self.autoLoad === false) {\n const emptyDataSet = {\n recordsTotal: 0,\n recordsFiltered: 0,\n data: [],\n };\n // emit empty data\n self.load.emit(emptyDataSet);\n // return empty data\n return fnCallback(emptyDataSet);\n }\n }\n // get activated route params\n const queryParams = self._activatedRoute.snapshot.queryParams;\n // get columns\n const columns = aoData[1].value;\n // get order expression\n const order = aoData[2].value;\n // get skip records param\n let skip = aoData[3].value;\n // get page size param\n let top = aoData[4].value;\n // get search value\n const search = aoData[5].value;\n // get data queryable\n const q = self._query instanceof ClientDataQueryable ? self._query : self._context.model(self.config.model).asQueryable();\n // apply paging params\n if (top) {\n q.take(top).skip(skip);\n }\n // apply order params\n if (order && order.length) {\n // get order query expression\n const orderByStr = order.map((expr: any) => {\n return tableColumns[expr.column].name + ' ' + expr.dir || 'asc';\n }).join(',');\n // set order\n q.setParam('$orderby', orderByStr);\n }\n // configure $select parameter\n const select = self.config.columns.filter( (column) => {\n if ( column.virtual === true ) {\n return false;\n }\n return true;\n }).map((column) => {\n if (column.property) {\n return column.name + ' as ' + column.property;\n } else {\n return column.name;\n }\n });\n q.select.apply(q, select);\n // configure $filter\n if (queryParams.$filter && queryParams.$filter.length) {\n // set route filter\n const qParams = q.getParams();\n q.setParam('$filter', null);\n const expressions = [ queryParams.$filter ];\n if (qParams.$filter) { expressions.push('(' + qParams.$filter + ')' ); }\n q.filter(expressions.join(' and '));\n }\n // check if query parameters contain filter\n if (queryParams.$expand && queryParams.$expand.length) {\n // set route $expand\n q.setParam('$expand', queryParams.$expand);\n } else if (self.config && self.config.defaults && self.config.defaults.expand) {\n q.setParam('$expand', self.config.defaults.expand);\n }\n if (!q.getParams()['$orderby'] && self.config && self.config.defaults && self.config.defaults.orderBy) {\n q.setParam('$orderby', self.config.defaults.orderBy);\n }\n if (self.config && self.config.defaults && self.config.defaults.groupBy) {\n q.setParam('$groupby', self.config.defaults.groupBy);\n }\n // append default filter\n if (self.config && self.config.defaults && self.config.defaults.filter) {\n return self._advancedFilterValueProvider.asyncBuildFilter(self.config.defaults.filter).then((defaultFilterString) => {\n if (defaultFilterString) {\n const qParams = q.getParams();\n q.setParam('$filter', null);\n const expressions = [ defaultFilterString ];\n if (qParams.$filter) { expressions.push('(' + qParams.$filter + ')' ); }\n q.filter(expressions.join(' and '));\n }\n self.lastQueryParams = q.getParams();\n q.getList().then((items) => {\n const dataSet = {\n recordsTotal: items.total,\n recordsFiltered: items.total,\n data: items.value,\n };\n if (items.total === 0) {\n self.resetEmptyTable();\n }\n // emit load event\n self.load.emit(dataSet);\n // return data\n return fnCallback(dataSet);\n });\n }).catch((err) => {\n console.error('TABLES', err);\n });\n }\n self.lastQueryParams = q.getParams();\n q.getList().then((items) => {\n const dataSet = {\n recordsTotal: items.total,\n recordsFiltered: items.total,\n data: items.value,\n };\n if (items.total === 0) {\n self.resetEmptyTable();\n }\n // emit load event\n self.load.emit(dataSet);\n // return data\n return fnCallback(dataSet);\n }).catch((err) => {\n console.error('TABLES', err);\n });\n },\n language: Object.assign({ }, self.translator.transform('Tables.DataTable'),\n {emptyTable: ' ' }),\n };\n\n const stateSettings = {\n stateSave: this.stateSave\n };\n if (this.stateLoadCallback) {\n Object.assign(stateSettings, {\n stateLoadCallback: this.stateLoadCallback\n });\n }\n if (this.stateSaveCallback) {\n Object.assign(stateSettings, {\n stateSaveCallback: this.stateSaveCallback\n });\n }\n Object.assign(settings, stateSettings);\n\n if (this.scrollable) {\n // set continuous scrolling\n Object.assign(settings, {\n scrollY: this.scrollY,\n scrollCollapse: false,\n scroller: {\n loadingIndicator: false,\n displayBuffer: 10,\n },\n });\n } else {\n Object.assign(settings, {\n scrollY: this.scrollY,\n paging: this.paging,\n pageLength: this.pageLength,\n });\n }\n if (this.selectable) {\n\n }\n // handle init.dt event and emit local event\n this.dataTable = tableElement.on('init.dt', (event) => {\n const scroller = jQuery(event.target).parent();\n // handle scrolling\n scroller.on('scroll', (scrollEvent) => {\n const target = jQuery(scrollEvent.target);\n const top = target.scrollTop();\n const left = target.scrollLeft();\n if (this.dataTable) {\n this.scroll.emit({\n top,\n left\n });\n }\n });\n }).DataTable(settings);\n this.init.emit();\n // show or hide header\n if (!this.showHeader) {\n ( this._element.nativeElement as HTMLDivElement)\n .querySelector('.dataTable>thead').classList.add('d-none');\n ( this._element.nativeElement as HTMLDivElement)\n .querySelector('.dataTable').classList.add('mt-2');\n }\n\n // show or hide footer\n if (!this.showFooter) {\n ( this._element.nativeElement as HTMLDivElement)\n .querySelector('.dataTables_info').classList.add('d-none');\n }\n // show or hide pager\n if (this.showPaging) {\n this.showPaging = true;\n }\n }\n }\n\n scrollTop(value: number) {\n if (this.dataTable) {\n this.dataTable.parent().scrollTop(value);\n }\n }\n\n scrollLeft(value: number) {\n if (this.dataTable) {\n this.dataTable.parent().scrollLeft(value);\n }\n }\n\n get lastQuery(): ClientDataQueryable {\n if (this.config == null) {\n return null;\n }\n if (this.lastQueryParams == null) {\n return null;\n }\n const q = this._context.model(this.config.model).asQueryable();\n Object.keys(this.lastQueryParams).forEach( (key) => {\n q.setParam(key, this.lastQueryParams[key]);\n });\n // return query\n return q;\n }\n\n /**\n * Fetches and updates a single row\n * @param find - Any object which is being converted to a query\n */\n public fetchOne(find: any) {\n if (find == null) {\n return;\n }\n if (this.dataTable == null) {\n return;\n }\n if (this.lastQueryParams == null) {\n return;\n }\n // get rows\n const rows = Array.from(this.dataTable.rows().data());\n if (rows && rows.length) {\n // find result\n const findKeys = Object.keys(find);\n if (findKeys.length === 0) {\n // do nothing\n return;\n }\n // find row index by searching each property\n const rowIndex = rows.findIndex((row: any) => {\n return findKeys.map( (key) => {\n return row[key] === find[key];\n }).filter( (res) => {\n return res === false;\n }).length === 0;\n });\n // if row has been found\n if (rowIndex >= 0) {\n const query = this._context.model(this.config.model).asQueryable();\n // select attributes\n query.setParam('$select', this.lastQueryParams.$select);\n if (this.lastQueryParams.$expand) {\n // apply expand attributes\n query.setParam('$expand', this.lastQueryParams.$expand);\n }\n // apply filter for row\n findKeys.forEach( (key) => {\n const column = this.config.columns.find( (col) => {\n return col.property === key || col.name === key;\n });\n if (column) {\n // get property or name\n const property = column.property || column.name;\n query.and(property).equal(find[key]);\n } else {\n query.and(key).equal(find[key]);\n }\n });\n // and finally get item\n return query.getItem().then( (item) => {\n // if item exists\n const row = this.dataTable.row(rowIndex);\n const checked = jQuery(row.node()).find(':checkbox').prop('checked');\n if (item) {\n // redraw row\n row.data(item);\n jQuery(row.node()).find(':checkbox').off('click').on('click', this.onSelectionChange.bind(this));\n // if row is already selected\n if (checked) {\n this.selectRow(row, true);\n }\n }\n return Promise.resolve();\n });\n }\n }\n return Promise.resolve();\n }\n\n public ngOnDestroy(): void {\n if (this.reloadSubscription) {\n this.reloadSubscription.unsubscribe();\n }\n }\n\n /**\n * Handle selection change\n * @param $event\n */\n public onSelectionChange($event) {\n const input = $event.target as HTMLInputElement;\n // get row from id\n const rowIndex = parseInt(/-(\\d+)$/g.exec(input.id)[1], 10);\n // get row\n const row = this.dataTable.row(rowIndex).data();\n // get row identifier\n if (row) {\n const key = this.config.columns[0].property;\n const id = row[key];\n let findItemIndex = this.selected.findIndex((item) => {\n return item[key] === id;\n });\n if (input.checked) {\n if (findItemIndex < 0) {\n // add row to selected rows\n this.selected.push(row);\n this.selectedItems.emit(this.selected);\n }\n } else {\n if (findItemIndex >= 0) {\n // remove selected item\n this.selected.splice(findItemIndex, 1);\n if (this.smartSelect) {\n // add row to unselected rows\n findItemIndex = this.unselected.findIndex((item) => {\n return item[key] === id;\n });\n if (findItemIndex < 0) {\n this.unselected.push(row);\n this.selectedItems.emit(this.selected);\n }\n }\n }\n }\n }\n }\n\n private resetEmptyTable() {\n // this operation is important\n // due to ng data binding\n // empty table template has no translated text during ngOnInit()\n if (this.dataTable && this.dataTable.context[0]) {\n this.dataTable.context[0].oLanguage.sEmptyTable =\n this.dataTable.context[0].oLanguage.sZeroRecords = this.emptyTable.nativeElement.innerHTML;\n }\n }\n\n private clearEmptyTable() {\n if (this.dataTable && this.dataTable.context[0]) {\n this.dataTable.context[0].oLanguage.sEmptyTable = '';\n }\n }\n\n public export() {\n const element: HTMLElement = document.querySelector('.dt-buttons .buttons-excel') as HTMLElement;\n element.click();\n }\n\n public handleColumns(columnsToShow) {\n const table = this.dataTable;\n this.config.columns.slice(1).forEach((column, i) => {\n if (!column.hidden) {\n if (columnsToShow.includes(column.name)) {\n // noinspection TypeScriptValidateJSTypes\n table.column(column.name + ':name').visible(true);\n } else {\n // noinspection TypeScriptValidateJSTypes\n table.column(column.name + ':name').visible(false);\n }\n }\n });\n }\n\n public getConfig() {\n return this.config;\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (Object.prototype.hasOwnProperty.call(changes, 'configSrc')) {\n if (changes.configSrc != null) {\n // load table configuration on change\n // tslint:disable-next-line: triple-equals\n if (changes.configSrc.currentValue && (changes.configSrc.currentValue != changes.configSrc.previousValue)) {\n this._http.get(changes.configSrc.currentValue).toPromise().then((config: TableConfiguration) => {\n // set configuration\n this.config = config;\n this.destroy();\n // fetch and redraw\n this.fetch();\n }).catch((err) => {\n console.error('TABLES', 'An error occurred while loading table configuration.');\n console.error(err);\n });\n }\n }\n }\n }\n\n public reset(load?: boolean): void {\n this.query = null;\n this.destroy();\n this.autoLoad = !!load;\n this.ngOnInit();\n }\n\n selectColumns() {\n // get column order e.g. [0, 4, 1, 2, 3]\n const columnOrder: number[] = this.dataTable.colReorder.order();\n // get column definitions\n const columnDefs = this.dataTable.settings().init().columns;\n const columns = columnDefs.map((\n columnDef: { key: string, title: string, visible: boolean, sortable: boolean, index: number }, i: number) => {\n let key = `column-${i}`;\n let title = columnDef.title;\n // get column index\n const index = columnOrder.indexOf(i);\n const visible = this.dataTable.column(index).visible();\n // set title for select column\n if (i == 0 && this.selectable) {\n title = '<' + this._translateService.instant('Tables.SelectColumn') + '>';\n }\n // get column title\n if (title != null && title.length === 0) {\n title = null;\n }\n if (title == null) {\n // try to find column placeholder\n let placeholder = null;\n if (this.selectable) {\n if (i > 0) {\n placeholder = this.config.columns[i - 1].placeholder;\n }\n } else {\n placeholder = this.config.columns[i].placeholder;\n }\n if (placeholder != null) {\n title = '<' + this._translateService.instant(placeholder) + '>';\n }\n }\n if (title == null) {\n title = '<' + this._translateService.instant('Tables.UnknownColumn') + '>';\n }\n return {\n key,\n title,\n visible,\n index\n }\n });\n this._columnSelector.selectColumns(columns).then((event) => {\n if (event.result === 'ok') {\n // get column order e.g. [3, 1, 2, 0, 4]\n let indexes = event.columns.map((item) => {\n return item.index;\n });\n // reset column visibilty\n for (let index = 0; index < event.columns.length; index++) {\n const element = event.columns[index];\n const colIndex = columnOrder.indexOf(index);\n // set visibilty with redraw (=true)\n this.dataTable.column(colIndex).visible(element.visible, true);\n }\n // finally apply column order\n this.dataTable.colReorder.order(indexes, true);\n }\n });\n }\n\n}\n","import { Component, OnInit, ViewChild, OnDestroy, Injectable, Input } from '@angular/core';\nimport { AngularDataContext, AngularDataService } from '@themost/angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subscription } from 'rxjs';\nimport { ActivatedRoute } from '@angular/router';\n// tslint:disable-next-line: max-line-length\nimport { AdvancedTableComponent, AdvancedTableDataResult, AdvancedTableConfiguration } from '../advanced-table/advanced-table.component';\nimport { ErrorService, DIALOG_BUTTONS, ModalService, UserActivityService } from '@universis/common';\nimport {ResponseError} from '@themost/client';\nimport { TableConfiguration } from '../advanced-table/advanced-table.interfaces';\nimport { ToastService } from '@universis/common';\n\n@Component({\n selector: 'app-advanced-list',\n templateUrl: './advanced-list.component.html'\n})\nexport class AdvancedListComponent implements OnInit, OnDestroy {\n\n public recordsTotal: number;\n public config: TableConfiguration;\n private subscription: Subscription;\n private dataSubscription: Subscription;\n private reloadSubscription: Subscription;\n @Input('entitySet') entitySet: string;\n @Input('category') category: string;\n @Input('description') description: string;\n @Input('longDescription') longDescription: string;\n @Input('tableConfiguration') tableConfiguration: any;\n @Input('searchConfiguration') searchConfiguration: any;\n @ViewChild('table') table: AdvancedTableComponent;\n @Input('allowSaveOption') allowSaveOption: boolean = true;\n\n constructor(private _context: AngularDataContext,\n private _translateService: TranslateService,\n private _activatedRoute: ActivatedRoute,\n private _errorService: ErrorService,\n private _toastService: ToastService,\n private _modalService: ModalService,\n private _userActivityService: UserActivityService\n ) { }\n ngOnDestroy(): void {\n if (this.dataSubscription) {\n this.dataSubscription.unsubscribe();\n }\n if (this.reloadSubscription) {\n this.reloadSubscription.unsubscribe();\n }\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n async ngOnInit() {\n try {\n // get metadata\n const metadata = await this._context.getMetadata();\n // get route data\n this.dataSubscription = this._activatedRoute.data.subscribe( routeData => {\n // get entityType\n const re = new RegExp(`^${routeData.model}$`, 'ig');\n const entitySet = metadata.EntityContainer.EntitySet.find( x => {\n return re.test(x.Name);\n });\n // if entity type is null\n if (entitySet == null) {\n // navigate to error\n return this._errorService.navigateToError(new ResponseError('EntitySet Not Found', 404));\n }\n // get entity type\n const entityType = metadata.EntityType.find( x => {\n return x.Name === entitySet.EntityType;\n });\n if (entityType == null) {\n return this._errorService.navigateToError(new ResponseError('EntityType Not Found', 404));\n }\n if (routeData.searchConfiguration) {\n if (Object.prototype.hasOwnProperty.call(routeData.searchConfiguration, 'allowSave')) {\n this.allowSaveOption = routeData.searchConfiguration.allowSave;\n }\n this.searchConfiguration = routeData.searchConfiguration;\n }\n if (routeData.tableConfiguration) {\n this.tableConfiguration = routeData.tableConfiguration;\n }\n if (routeData.description) {\n this.description = this._translateService.instant(routeData.description);\n }\n if (routeData.longDescription) {\n this.longDescription = this._translateService.instant(routeData.longDescription);\n }\n if (routeData.category) {\n this.category = this._translateService.instant(routeData.category);\n }\n // clone default configuration\n const defaultConfiguration = AdvancedTableConfiguration.cast(this.tableConfiguration, true);\n // correct edit button link\n const column = defaultConfiguration.columns.find( col => {\n return col.formatter === 'ButtonFormatter' && col.formatString === '(modal:edit)';\n });\n if (column) {\n const url: Array<string> = [];\n this._activatedRoute.snapshot.pathFromRoot.forEach( route => {\n url.push.apply(url, route.url);\n });\n column.formatString = `#/${url.join('/')}/(modal:\\$\\{id\\}/edit)`;\n }\n // create list configuration by assigning list entity set\n this.table.config = Object.assign({\n model: entitySet.Name\n }, defaultConfiguration);\n // fetch data\n this.table.fetch(true);\n // do reload by using hidden fragment e.g. /classes#reload\n this.reloadSubscription = this._activatedRoute.fragment.subscribe(fragment => {\n if (fragment && fragment === 'reload') {\n this._toastService.show(\n this.description,\n this._translateService.instant('Settings.OperationCompleted')\n );\n this.table.fetch(true);\n }\n });\n // finally add user activity\n this._userActivityService.setItem({\n category: this.category,\n description: this.description,\n url: window.location.hash.substring(1),\n dateCreated: new Date\n });\n });\n } catch (err) {\n console.error(err);\n return this._errorService.showError(err);\n }\n }\n\n\n /**\n * Data load event handler of advanced table component\n * @param {AdvancedTableDataResult} data\n */\n onDataLoad(data: AdvancedTableDataResult) {\n this.recordsTotal = data.recordsTotal;\n }\n\n /**\n * Remove selected items\n */\n remove() {\n if (this.table && this.table.selected && this.table.selected.length) {\n // get items to remove\n const items = this.table.selected;\n return this._modalService.showWarningDialog(\n this._translateService.instant('Tables.RemoveItemsTitle'),\n this._translateService.instant('Tables.RemoveItemsMessage'),\n DIALOG_BUTTONS.OkCancel).then(result => {\n if (result === 'ok') {\n this._context.model(this.table.config.model).remove(items).then(() => {\n this._toastService.show(\n this.description + ':' + this._translateService.instant('Tables.RemoveItemMessage.title'),\n this._translateService.instant((items.length === 1 ?\n 'Tables.RemoveItemMessage.one' : 'Tables.RemoveItemMessage.many')\n , { value: items.length })\n );\n this.table.fetch(true);\n }).catch(err => {\n this._errorService.showError(err, {\n continueLink: '.'\n });\n });\n }\n });\n }\n }\n\n}\n","import {Component, OnInit, OnDestroy, Input, EventEmitter,\n ViewChild, ElementRef, ViewEncapsulation, OnChanges, SimpleChanges, AfterViewInit, Output} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {AngularDataContext} from '@themost/angular';\nimport 'rxjs/add/observable/combineLatest';\nimport {ErrorService, ModalService, ToastService} from '@universis/common';\nimport {RouterModalOkCancel} from '@universis/common/routing';\nimport {AppEventService} from '@universis/common';\nimport {Observable, Subscription} from 'rxjs';\nimport {AdvancedFormComponent} from '@universis/forms';\nimport { ProgressbarComponent } from 'ngx-bootstrap/progressbar';\n\n@Component({\n selector: 'app-advanced-row-action',\n templateUrl: './advanced-row-action.component.html',\n styles: [\n `\n .fa-1_5x {\n font-size: 1.5rem;\n }\n .form-control:disabled, .form-control[readonly] {\n background-color: inherit;\n }\n .form-check.checkbox {\n position: relative\n }\n `\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class AdvancedRowActionComponent extends RouterModalOkCancel implements OnInit, AfterViewInit, OnDestroy {\n\n invalidSubscription: any;\n\n\n @Input() items: any;\n @Input() modalIcon = 'fas fa-project-diagram';\n @Input() description: string;\n @Input() formTemplate: string;\n @Input() progressType = 'indigo';\n @Output() data: any;\n @Input() additionalMessage: string;\n @Input() errorMessage = 'Tables.Actions.CompletedWithErrors';\n public lastError: any;\n public loading = false;\n @ViewChild('progress') progressComponent: ProgressbarComponent;\n @ViewChild('progressContainer') progressContainer: ElementRef;\n @ViewChild('formComponent') formComponent: AdvancedFormComponent;\n @Input() refresh: any = new EventEmitter<any>();\n @Input() execute: Observable<any>;\n private refreshSubscription: Subscription;\n private executeSubscription: Subscription;\n\n constructor(router: Router,\n activatedRoute: ActivatedRoute,\n private _translateService: TranslateService,\n private _context: AngularDataContext,\n private _errorService: ErrorService,\n private _modalService: ModalService,\n private _appEvent: AppEventService) {\n super(router, activatedRoute);\n // set modal size\n this.modalClass = 'modal-lg';\n // set modal title\n this.modalTitle = 'Tables.Actions.Label';\n // disable ok button\n this.okButtonDisabled = false;\n // set button text\n this.okButtonText = 'Tables.Actions.Start';\n }\n\n get form() {\n return this.formComponent;\n }\n ngOnInit() {\n this.refreshSubscription = this.refresh.subscribe((value) => {\n if (value && value.progress) {\n let progress = 0;\n if (value.progress < 0) {\n progress = 0;\n } else if (value.progress > 100) {\n progress = 100;\n } else {\n progress = value.progress;\n }\n this.progressComponent.value = progress;\n this.showProgress();\n }\n });\n\n }\n\n ngAfterViewInit(): void {\n if (this.formComponent && this.formComponent.form) {\n this.okButtonDisabled = true;\n this.invalidSubscription = this.formComponent.form.change.subscribe((event: any) => {\n if (Object.prototype.hasOwnProperty.call(event, \"isValid\") && (event.changed != null)) {\n this.okButtonDisabled = !event.isValid;\n }\n });\n }\n }\n\n ngOnDestroy() {\n if (this.refreshSubscription) {\n this.refreshSubscription.unsubscribe();\n }\n if (this.executeSubscription) {\n this.executeSubscription.unsubscribe();\n }\n if (this.invalidSubscription) {\n this.invalidSubscription.unsubscribe();\n }\n }\n\n cancel(): Promise<any> {\n if (this.loading) {\n return;\n }\n // close\n if (this._modalService.modalRef) {\n return this._modalService.modalRef.hide();\n }\n }\n\n async ok() {\n try {\n this.loading = true;\n this.lastError = null;\n if (this.formComponent && this.formComponent.form &&\n this.formComponent.form.formio && this.formComponent.form.formio.data) {\n // set data\n this.data = this.formComponent.form.formio.data;\n }\n // do action\n this.execute.subscribe((result) => {\n this.loading = false;\n this.refresh.emit({\n progress: 100\n });\n if (result && result.errors && result.errors > 0) {\n // show message for partial success\n if (result.errors === 1) {\n this.lastError = new Error(this._translateService.instant(\n `${this.errorMessage}.Description.One`));\n } else {\n this.lastError = new Error(this._translateService.instant(\n `${this.errorMessage}.Description.Many`,\n result));\n }\n this.refresh.emit({\n progress: 1\n });\n this.hideProgress();\n return;\n }\n if (this._modalService.modalRef) {\n this._modalService.modalRef.hide();\n }\n }, (err) => {\n this.loading = false;\n this.lastError = err;\n this.refresh.emit({\n progress: 0\n });\n });\n } catch (err) {\n this.loading = false;\n this.lastError = err;\n }\n }\n\n showProgress() {\n this.progressContainer.nativeElement.classList.replace('invisible', 'visible');\n }\n\n hideProgress() {\n this.progressContainer.nativeElement.classList.replace('visible', 'invisible');\n }\n\n\n\n}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n@Component({\n template: ''\n })\nexport class AdvancedTableSearchBaseComponent {\n private _filter: any;\n @Output() filterChange = new EventEmitter();\n\n @Input()\n get filter() {\n return this._filter;\n }\n\n set filter(value) {\n this._filter = value;\n }\n\n onKeyEnter(event: KeyboardEvent) {\n if (event.code === 'Enter') {\n this.filterChange.emit(this._filter);\n }\n }\n}\n","import {AfterViewInit, Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild, ViewEncapsulation, OnChanges, SimpleChanges} from '@angular/core';\nimport {FormioComponent, FormioForm} from 'angular-formio';\nimport {AngularDataContext} from '@themost/angular';\nimport {ActivatedRoute} from '@angular/router';\nimport {ServiceUrlPreProcessor, TranslatePreProcessor} from '@universis/forms';\nimport {AdvancedTableSearchBaseComponent} from '../advanced-table/advanced-table-search-base';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Subscription} from 'rxjs';\nimport {AdvancedTableComponent} from '../advanced-table/advanced-table.component';\nimport { HttpClient } from '@angular/common/http';\n\n@Component({\n selector: 'app-advanced-search-form',\n template: `\n <div class=\"p-4\">\n <formio #formioComponent class=\"formio-search\" (keydown)=\"onKeyEnter($event)\" (change)=\"onChange($event)\" (formLoad)=\"onFormLoad($event)\"\n [refresh]=\"refreshForm\" [submission]=\"submission\" [form]=\"form\"></formio>\n </div>\n `,\n styleUrls: ['./advanced-search-form.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AdvancedSearchFormComponent extends AdvancedTableSearchBaseComponent implements OnInit, OnDestroy, AfterViewInit, OnChanges {\n\n\n @ViewChild('formioComponent') formComponent: FormioComponent;\n @Input() form: any = {};\n @Input() formSrc: string;\n @Output() refreshForm = new EventEmitter<any>();\n @Output() loading = new EventEmitter<{ target: AdvancedSearchFormComponent}>();\n submission: any = { data: {} };\n private filterSubscription: Subscription;\n public componentLoading = true;\n\n constructor(private _context: AngularDataContext,\n private _translateService: TranslateService,\n private _activatedRoute: ActivatedRoute,\n private _http: HttpClient\n ) {\n super();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (Object.prototype.hasOwnProperty.call(changes, 'form')) {\n if (changes.form != null) {\n if (changes.form.currentValue &&\n changes.form.currentValue != changes.form.previousValue) {\n this.ngOnInit();\n }\n }\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'formSrc')) {\n if (changes.formSrc != null) {\n if (changes.formSrc.currentValue &&\n changes.formSrc.currentValue != changes.formSrc.previousValue) {\n this._http.get(changes.formSrc.currentValue).toPromise().then((form) => {\n // set form\n this.form = form;\n // and init\n this.ngOnInit();\n }).catch((err) => {\n console.error('An error occurred while loading search configuration');\n console.error(err);\n });\n }\n }\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'filter')) {\n if (changes.filter != null) {\n this.submission.data = changes.filter.currentValue || {};\n this.refreshForm.emit({\n submission: this.submission\n });\n }\n }\n }\n\n ngOnInit(): void {\n if (this.form) {\n new ServiceUrlPreProcessor(this._context).parse(this.form);\n new TranslatePreProcessor(this._translateService).parse(this.form);\n this.submission = {\n data: this.filter\n };\n this.loading.emit({\n target: this\n });\n this.refreshForm.emit({\n form: this.form\n });\n this.componentLoading = false;\n this.filterSubscription = this.filterChange.subscribe( filter => {\n this.submission.data = filter;\n this.refreshForm.emit({\n submission: this.submission\n });\n });\n }\n }\n\n onChange(event: object) {\n Object.keys(this.formComponent.submission.data).forEach(key => {\n if (Object.prototype.hasOwnProperty.call(this.formComponent.submission.data, key)) {\n const value = this.formComponent.submission.data[key];\n // the filter with type is a string and is not empty\n const isEmptyString = typeof value === 'string' && value.length === 0;\n // do not include empty objects in filter\n const isEmptyObject = typeof value === 'object' && Object.keys(value).length === 0;\n // make isEmptyString, isEmptyObject mutex\n if (!isEmptyString && !isEmptyObject) {\n Object.defineProperty(this.filter, key, {\n configurable : true,\n enumerable: true,\n value : value\n });\n } else {\n delete this.filter[key];\n }\n }\n });\n }\n\n onFormLoad(form: FormioForm) {\n const currentLang = this._translateService.currentLang;\n this.formComponent.formio.i18next.options.resources[currentLang] = { translation : this._translateService.instant(`Forms`) };\n this.formComponent.formio.language = currentLang;\n }\n\n ngAfterViewInit(): void {\n //\n }\n\n ngOnDestroy(): void {\n if (this.filterSubscription) {\n this.filterSubscription.unsubscribe();\n }\n }\n}\n","import { Component, ElementRef, Input, OnDestroy, OnInit, ViewChild, AfterViewInit, DoCheck } from '@angular/core';\nimport { RouterModalOkCancel } from '@universis/common/routing';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TableConfiguration } from '../advanced-table/advanced-table.interfaces';\nimport { Subscription } from 'rxjs';\nimport { AdvancedTableComponent, AdvancedTableDataResult } from '../advanced-table/advanced-table.component';\nimport { AngularDataContext } from '@themost/angular';\nimport { AdvancedFilterValueProvider } from './../advanced-table/advanced-filter-value-provider.service';\nimport { DatePipe } from '@angular/common';\nimport { TemplatePipe } from '@universis/common';\nexport declare interface PageInfo {\n page: number;\n pages: number;\n start: number;\n end: number;\n length: number;\n recordsTotal: number;\n recordsDisplay: number;\n serverSide?: boolean;\n}\n\n// important: export this const due to AOT compilation errors\n// see more https://angular.io/guide/aot-metadata-errors#only-initialized-variables\nexport const AdvancedTableModalBaseTemplate = `\n<div>\n <!-- search -->\n <div class=\"row mt-3\">\n <div class=\"col-12 col-lg-3\">\n <div class=\"input-group mb-3\">\n <input spellcheck=\"false\" type=\"text\" #searchElement\n (keyup)=\"onKeyUp($event)\" [(ngModel)]=\"searchText\"\n class=\"form-control bg-gray-100 border-0\"\n placeholder=\"{{'Tables.SearchPlaceholder' | translate}}\" aria-label=\"Search\" aria-describedby=\"basic-addon2\">\n <div class=\"input-group-append\">\n <button class=\"btn btn-default bg-gray-100 border-0\" type=\"button\" (click)=\"onSearch()\">\n <i class=\"fa fa-search text-secondary\"></i>\n </button>\n </div>\n </div>\n </div>\n <div #emptyTable class=\"d-none\">\n <div>\n <div class=\"mt-4\">\n <div class=\"icon-circle bg-gray-300 border-gray-100\"></div>\n </div>\n <div class=\"mt-4\">\n <h4 class=\"font-3xl text-dark\" [translate]=\"'Tables.EmptyTableTitle'\"></h4>\n <p class=\"font-lg text-dark\" [translate]=\"'Tables.EmptyTableMessage'\"></p>\n </div>\n\n </div>\n </div>\n <div class=\"col-12 col-lg-5\">\n <div class=\"btn-toolbar\">\n <button class=\"btn btn-gray-100\">\n <i class=\"fa fa-sliders-h pr-2 text-secondary\" aria-hidden=\"true\"></i>{{'Tables.Filters' | translate}}\n </button>\n <div #dropdownFilter class=\"dropdown ml-3\">\n <button class=\"btn btn-gray-100 dropdown-toggle\"\n type=\"button\" id=\"dropdownDefaultFilters\"\n data-toggle=\"dropdown\" dropdownToggle>\n {{ this.defaultFilter.name | translate }}\n </button>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownDefaultFilters\">\n <button type=\"button\" class=\"dropdown-item\" *ngFor=\"let filter of defaultFilters\" (click)=\"onFilterSelect(filter)\">\n {{ filter.name | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col text-lg-right mt-3 mt-lg-0 d-none\">\n <button [disabled]=\"true\" class=\"btn rounded-pill btn-outline-theme\">\n <span class=\"pr-2 font-lg\">+</span><span [translate]=\"'Tables.AddItem'\"></span>\n </button>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12\" [ngClass]=\"{ 'component-loading': loading}\">\n <app-advanced-table #advancedTable (init)=\"onTableInit()\"\n (load)=\"onDataLoad($event)\"\n [selectable]=\"true\"\n [multipleSelect]=\"true\"\n [scrollX]=\"false\" [scrollY]=\"320\"\n [pageLength]=\"pageLength\"\n [scrollable]=\"false\" [showFooter]=\"false\"\n [showActions]=\"false\" [lengthMenu]=\"lengthMenu\"\n [config]=\"tableConfig\" [configSrc]=\"tableConfigSrc\"></app-advanced-table>\n </div>\n </div>\n <div class=\"row mt-3 table-custom-pager\">\n <div class=\"col-12 d-flex\" *ngIf=\"recordsTotal\">\n <div class=\"mt-2 ml-auto mr-3 text-secondary\" [translate]=\"'Tables.RecordsPerPage'\"></div>\n <div #dropdownLength class=\"dropdown mr-3\">\n <button class=\"btn btn-gray-100 dropdown-toggle\"\n type=\"button\" id=\"dropdownPageSize\" data-toggle=\"dropdown\"\n dropdownToggle>\n {{pageLength}}\n </button>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownPageSize\">\n <button (click)=\"setLength(item)\"\n class=\"dropdown-item dropdown-item-theme\"\n type=\"button\" *ngFor=\"let item of lengthMenu\">{{item}}</button>\n </div>\n </div>\n <div class=\"mt-2 mr-2\" [translate]=\"'Tables.PageInfo'\" [translateParams]=\"pageInfo\"></div>\n <button [disabled]=\"pageInfo && pageInfo.page === 0\" class=\"btn text-nowrap\" (click)=\"firstPage()\">\n <i class=\"fa fa-chevron-left text-color-theme\"></i>\n <i class=\"fa fa-chevron-left text-color-theme\"></i>\n </button>\n <button [disabled]=\"pageInfo && pageInfo.page===0\" class=\"btn\" (click)=\"previousPage()\">\n <i class=\"fa fa-chevron-left text-color-theme\"></i>\n </button>\n <button [disabled]=\"pageInfo && pageInfo.page===pageInfo.pages-1\" class=\"btn\" (click)=\"nextPage()\">\n <i class=\"fa fa-chevron-right text-color-theme\"></i>\n </button>\n <button [disabled]=\"pageInfo && pageInfo.page===pageInfo.pages-1\" class=\"btn text-nowrap\" (click)=\"lastPage()\">\n <i class=\"fa fa-chevron-right text-color-theme\"></i>\n <i class=\"fa fa-chevron-right text-color-theme\"></i>\n </button>\n </div>\n </div>\n </div>\n`;\n\n/**\n *\n * A specific value for a criterion\n *\n */\ninterface SearchItem {\n filter: any;\n name: string;\n}\n\n@Component({\n // tslint:disable-next-line: component-selector\n selector: 'app-advanced-table-modal',\n template: AdvancedTableModalBaseTemplate,\n styles: [\n `\n\n `\n ]\n})\nexport class AdvancedTableModalBaseComponent extends RouterModalOkCancel implements OnInit, OnDestroy, AfterViewInit {\n ngAfterViewInit(): void {\n setTimeout(() => {\n if (this.searchElement && this.searchElement.nativeElement) {\n this.searchElement.nativeElement.focus();\n }\n }, 0);\n }\n\n private static readonly DEFAULT_ALL_FILTER = {\n name: 'Tables.All',\n filter: null\n };\n\n @ViewChild('advancedTable') advancedTable: AdvancedTableComponent;\n @ViewChild('emptyTable') emptyTable: ElementRef;\n @ViewChild('dropdownFilter') dropdownFilter: ElementRef;\n @ViewChild('dropdownLength') dropdownLength: ElementRef;\n @ViewChild('searchElement') searchElement: any;\n @Input('tableConfig') tableConfig: TableConfiguration;\n @Input('tableConfigSrc') tableConfigSrc: string;\n @Input('pageLength') pageLength = 25;\n @Input('searchText') searchText: string;\n @Input('lengthMenu') lengthMenu: Array<number> = [5, 10, 25, 50, 100];\n private subscription: Subscription;\n public recordsTotal = 0;\n public loading = false;\n public recordsFiltered = 0;\n public defaultFilters: Array<any> = [AdvancedTableModalBaseComponent.DEFAULT_ALL_FILTER];\n @Input('defaultFilter') defaultFilter = AdvancedTableModalBaseComponent.DEFAULT_ALL_FILTER;\n \n\n public pageInfo = <PageInfo>{\n serverSide: true\n };\n private _template: TemplatePipe;\n configChangesSubscription: Subscription;\n\n constructor(\n _router: Router,\n _activatedRoute: ActivatedRoute,\n protected _context: AngularDataContext,\n protected advancedFilterValueProvider: AdvancedFilterValueProvider,\n protected datePipe: DatePipe\n ) {\n super(_router, _activatedRoute);\n this.modalClass = 'modal-xl modal-table';\n this._template = new TemplatePipe();\n }\n\n private _getInputs(componentType): Array<any> {\n const props = componentType.__prop__metadata__;\n const inputs = [];\n if (props == null) {\n return inputs;\n }\n Object.keys(props).forEach(prop => {\n const member = props[prop][0];\n if (member.ngMetadataName === 'Input') {\n inputs.push(prop);\n }\n });\n return inputs.sort();\n }\n\n public hasInputs(): Array<string> {\n return [];\n }\n\n ngOnInit() {\n\n this.okButtonText = 'Tables.Apply';\n this.cancelButtonText = 'Tables.Cancel';\n // get route data\n this.subscription = this.activatedRoute.data.subscribe(data => {\n // set modal title if any\n if (data.title) {\n this.modalTitle = data.title;\n }\n\n if (data.config) {\n this.tableConfig = data.config;\n }\n if (this.tableConfig) {\n this.defaultFilters.push.apply(this.defaultFilters, this.tableConfig.searches);\n }\n // important: use hasInputs due to AOT compilation. Metadata properties cannot be used (e.g. @Input())\n // because there are empty during runtime\n // so we need to define manually input properties that are going to be bind through this process\n // bind all inputs\n const inputs = this.hasInputs();\n inputs.forEach(input => {\n if (Object.prototype.hasOwnProperty.call(data, input)) {\n this[input] = data[input];\n }\n });\n\n this.configChangesSubscription = this.advancedTable.configChanges.subscribe((config) => {\n if (this.tableConfig) {\n // reset default filter\n this.defaultFilter = AdvancedTableModalBaseComponent.DEFAULT_ALL_FILTER;\n // init filter\n this.defaultFilters = [AdvancedTableModalBaseComponent.DEFAULT_ALL_FILTER];\n // add extra filters\n this.defaultFilters.push.apply(this.defaultFilters, this.tableConfig.searches);\n }\n });\n\n });\n }\n\n cancel(): Promise<any> {\n return this.close();\n }\n\n ok(): Promise<any> {\n return this.close();\n }\n\n ngOnDestroy(): void {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n onDataLoad(data: AdvancedTableDataResult) {\n this.recordsTotal = data.recordsTotal;\n this.recordsFiltered = data.recordsFiltered;\n // get first page info (because page is not going to be fired for first page)\n if (data.recordsTotal > 0 && this.pageInfo.recordsTotal === 0) {\n this.pageInfo.recordsTotal = data.recordsTotal;\n }\n const self = this;\n }\n\n previousPage() {\n // go to next page\n // noinspection TypeScriptValidateJSTypes\n this.advancedTable.dataTable.page('previous').draw('page');\n }\n\n nextPage() {\n // go to next page\n // noinspection TypeScriptValidateJSTypes\n this.advancedTable.dataTable.page('next').draw('page');\n }\n\n onTableInit() {\n const self = this;\n const dataTable = self.advancedTable.dataTable;\n // get initial page info\n const initialPageInfo = <PageInfo>dataTable.page.info();\n initialPageInfo.start += 1;\n self.pageInfo = initialPageInfo;\n // change emptyTableMessage\n dataTable.context[0].oLanguage.sEmptyTable = this.emptyTable.nativeElement.innerHTML;\n // bind page change event\n dataTable.on('page.dt', function () {\n const pageInfo = <PageInfo>dataTable.page.info();\n pageInfo.start += 1;\n self.pageInfo = pageInfo;\n });\n // bind draw change event\n dataTable.on('draw.dt', function () {\n // for future use\n self.loading = false;\n const pageInfo = <PageInfo>dataTable.page.info();\n pageInfo.start += 1;\n self.pageInfo = pageInfo;\n });\n }\n\n firstPage() {\n // go to first page\n // noinspection TypeScriptValidateJSTypes\n this.advancedTable.dataTable.page('first').draw('page');\n }\n\n lastPage() {\n // go to last page\n // noinspection TypeScriptValidateJSTypes\n this.advancedTable.dataTable.page('last').draw('page');\n }\n\n setLength(value: number) {\n this.pageLength = value;\n this.advancedTable.dataTable.page.len(value).draw();\n }\n\n onKeyUp(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.key === 'Return') {\n // loading\n this.loading = true;\n this.advancedTable.search((<HTMLInputElement>event.target).value);\n }\n }\n\n onSearch() {\n // loading\n this.loading = true;\n this.advancedTable.search(this.searchText);\n }\n\n /**\n *\n * Reads the modal table and returns a list of filters to use in the table\n * query.\n *\n * @param tableConfig {object} The table configuration from json file\n * @param defaultFilterValues {object} A list of default filters\n * @param {object} searchItem The searchItem to use\n *\n */\n getFilters(\n tableConfig: any,\n defaultFilterValues = {},\n searchItem: any\n ): Array<string> {\n // Do nothing in absence of configuration.\n if (!tableConfig || !Array.isArray(tableConfig.criteria)) {\n return [];\n }\n\n if (searchItem.filter == null) {\n return [];\n }\n\n const matchedCriterion = tableConfig.criteria.find(criterion =>\n Object.prototype.hasOwnProperty.call(searchItem.filter, criterion.name)\n );\n\n if (matchedCriterion == null) {\n return [];\n }\n\n const value = searchItem.filter[matchedCriterion.name];\n\n const criterionSafeName = matchedCriterion.name !== null\n ? matchedCriterion.name.toString()\n : '';\n\n let applicableFilter: string;\n\n // Raw dates should be transformed to a specific format\n if (criterionSafeName.includes('GMT')) {\n const newDate = this.datePipe.transform(criterionSafeName, 'MM/dd/yyyy');\n applicableFilter = this._template.transform(matchedCriterion.filter, {\n value: newDate\n });\n\n } else if (criterionSafeName !== 'undefined') {\n applicableFilter = (this._template.transform(matchedCriterion.filter, Object.assign({\n value: value\n }, defaultFilterValues)));\n } else {\n applicableFilter = '';\n }\n\n return [applicableFilter];\n }\n\n onFilterSelect(value: { filter: any; name: string } | any) {\n this.advancedSearch(value);\n }\n\n /**\n *\n * Runs a filter against the modal table\n *\n * @param {object} filter The filter to use in the search\n *\n */\n async advancedSearch(filter): Promise<any> {\n // Do nothing in absence of configuration.\n if (!this.tableConfig && !Array.isArray(this.tableConfig.criteria)) {\n console.warn('No table configuration available', this.tableConfig);\n return;\n }\n\n // An advanced table has some filters by default\n let defaultFilterValues;\n try {\n defaultFilterValues = await this.advancedFilterValueProvider.getValues();\n } catch (err) {\n defaultFilterValues = {};\n }\n\n const expressions = [];\n let predefinedCriteria;\n if (filter) {\n this.defaultFilter = filter;\n predefinedCriteria = this.getFilters(\n this.tableConfig,\n defaultFilterValues,\n filter\n );\n } else {\n // Empty a falsy filter resets the results\n this.defaultFilter = AdvancedTableModalBaseComponent.DEFAULT_ALL_FILTER;\n }\n\n // search filter is applied separately, there is no need to add here.\n expressions.push(predefinedCriteria);\n\n const query = this._context.model(this.advancedTable.config.model).asQueryable();\n query.setParam('filter', expressions.join(' and ')).prepare();\n this.advancedTable.query = query;\n this.advancedTable.fetch();\n }\n}\n\n","import { AdvancedTableModalBaseComponent } from '../advanced-table-modal/advanced-table-modal-base.component';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AdvancedFilterValueProvider } from '../advanced-table/advanced-filter-value-provider.service';\nimport { AngularDataContext } from '@themost/angular';\nimport { AfterViewInit, Component, ElementRef, EventEmitter, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { DatePipe } from '@angular/common';\n\n@Component({\n // tslint:disable-next-line: component-selector\n selector: 'app-advanced-select',\n templateUrl: './advanced-select.component.html',\n styles: [\n `\n .modal-table .dataTables_wrapper {\n height: 50vh;\n overflow-y: auto;\n }\n `,\n ],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AdvancedSelectComponent extends AdvancedTableModalBaseComponent implements AfterViewInit {\n\n public dismiss: EventEmitter<any> = new EventEmitter();\n @ViewChild('searchElement') searchElement: any;\n\n constructor(router: Router,\n activatedRoute: ActivatedRoute,\n context: AngularDataContext,\n advancedFilterValueProvider: AdvancedFilterValueProvider,\n datePipe: DatePipe,\n private _modalRef: BsModalRef,\n private el: ElementRef) {\n super(router, activatedRoute, context, advancedFilterValueProvider, datePipe);\n }\n\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n setTimeout(() => {\n if (this.searchElement && this.searchElement.nativeElement) {\n this.searchElement.nativeElement.focus();\n }\n }, 0);\n }\n\n public async ok() {\n this._modalRef.hide();\n this.dismiss.emit('ok');\n }\n\n public async cancel() {\n this._modalRef.hide();\n this.dismiss.emit('cancel');\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport {ActivatedRoute, NavigationEnd, NavigationStart, Router} from '@angular/router';\nimport { ModalService } from '@universis/common';\nimport { AdvancedSelectComponent } from './advanced-select.component';\n@Injectable()\nexport class AdvancedSelectService {\n\n constructor(private _modal: ModalService) {\n //\n }\n\n select(initialState: any): Promise<{result: string, items: Array<any>}> {\n return new Promise((resolve, reject) => {\n try {\n const modalRef = this._modal.openModalComponent(AdvancedSelectComponent, {\n class: 'modal-xl modal-table',\n ignoreBackdropClick: true,\n animated: true,\n initialState: initialState\n });\n const componentRef: AdvancedSelectComponent = modalRef.content;\n componentRef.dismiss.subscribe((result) => {\n return resolve({\n result: result,\n items: componentRef.advancedTable.selected\n });\n });\n } catch (err) {\n return reject(err);\n }\n });\n }\n\n}\n","import {Injectable} from '@angular/core';\nimport {ActivatedRouteSnapshot, Resolve, RouterStateSnapshot} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {AdvancedFormsService} from '@universis/forms';\nimport {HttpClient} from '@angular/common/http';\n\n@Injectable()\nexport class AdvancedTableConfigurationResolver implements Resolve<string> {\n constructor(private _http: HttpClient) {}\n resolve(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Promise<any>|any {\n // get list\n const list = route.data.list || route.params.list;\n // get model\n const model = route.data.model || route.params.model;\n // get configuration\n return this._http.get(`assets/lists/${model}/${list}.json`).toPromise();\n }\n}\n\n@Injectable()\nexport class AdvancedSearchConfigurationResolver implements Resolve<string> {\n constructor(private _http: HttpClient) {}\n resolve(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Promise<any>|any {\n // get list\n const list = route.data.list || route.params.list;\n // get model\n const model = route.data.model || route.params.model;\n // get configuration\n return this._http.get(`assets/lists/${model}/search.${list}.json`).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\r\nimport {ActivatedRoute, NavigationEnd, NavigationStart, Router} from '@angular/router';\r\nimport {AdvancedTableComponent} from './components/advanced-table/advanced-table.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ActivatedTableService {\r\n private _activeTable: AdvancedTableComponent;\r\n constructor(private _router: Router, private _activatedRoute: ActivatedRoute) {\r\n _router.events.forEach((event) => {\r\n if ( event instanceof NavigationStart) {\r\n if (this._activeTable) {\r\n this._activeTable = null;\r\n }\r\n }\r\n });\r\n }\r\n\r\n get activeTable(): AdvancedTableComponent {\r\n return this._activeTable;\r\n }\r\n\r\n set activeTable(tableComponent: AdvancedTableComponent) {\r\n this._activeTable = tableComponent;\r\n }\r\n}\r\n","import {\r\n AfterContentInit,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { AdvancedTableComponent } from './advanced-table.component';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { AngularDataContext } from '@themost/angular';\r\nimport { DatePipe } from '@angular/common';\r\nimport { BsModalService, BsModalRef } from 'ngx-bootstrap/modal';\r\nimport {ActivatedTableService} from '../../tables.activated-table.service';\r\nimport {UserStorageService} from '@universis/common';\r\nimport {FormArray, FormBuilder, FormControl, FormGroup, ValidatorFn} from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'app-advanced-table-settings',\r\n templateUrl: './advanced-table-settings.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class AdvancedTableSettingsComponent implements OnInit, AfterViewInit {\r\n\r\n @Input() table: AdvancedTableComponent;\r\n @ViewChild('modal_settings_template') modal_settings_template: ElementRef;\r\n modalRef: BsModalRef;\r\n storageKey: any;\r\n params: any = this._activatedRoute.params;\r\n private savedTableSettings: any;\r\n form: FormGroup;\r\n columns = [];\r\n tableColumns: any;\r\n activeTableConfig: any;\r\n\r\n constructor(protected _context: AngularDataContext,\r\n protected _activatedRoute: ActivatedRoute,\r\n private elRef: ElementRef,\r\n private modalService: BsModalService,\r\n private userStorage: UserStorageService,\r\n private formBuilder: FormBuilder,\r\n private _activatedTable: ActivatedTableService) {\r\n }\r\n ngOnInit(): void {\r\n }\r\n ngAfterViewInit(): void {\r\n this.activeTableConfig = this._activatedTable.activeTable.getConfig();\r\n this.storageKey = 'registrar/settings/' + this.activeTableConfig.title + '/table/columns';\r\n this.form = this.formBuilder.group({columns: new FormArray([], this.minSelectedColumns(1))});\r\n this.userStorage.getItem(this.storageKey).then((data) => {\r\n if (data) {\r\n this.savedTableSettings = data.value;\r\n if (this.savedTableSettings) {\r\n if (this._activatedTable.activeTable) {\r\n this._activatedTable.activeTable.handleColumns(this.savedTableSettings);\r\n }\r\n }\r\n this.addCheckboxes();\r\n }\r\n });\r\n }\r\n private addCheckboxes() {\r\n this.tableColumns = this.activeTableConfig.columns.slice(1);\r\n this.tableColumns.forEach ((column, i) => {\r\n if (!column.hidden) {\r\n const control = {\r\n id: column.name,\r\n name: column.title\r\n };\r\n this.columns.push(control);\r\n }\r\n });\r\n if (this.savedTableSettings) {\r\n this.columns.forEach ((column, i) => {\r\n column.check = false;\r\n column.check = this.savedTableSettings.includes(column.id);\r\n });\r\n this.columns.map((column, i) => {\r\n const control = new FormControl(column.check);\r\n (this.form.controls.columns as FormArray).push(control);\r\n });\r\n }\r\n }\r\n\r\n openTableSettings(table_settings_modal: TemplateRef<any>) {\r\n this.modalRef = this.modalService.show(table_settings_modal);\r\n }\r\n\r\n saveTableSettings() {\r\n const selectedColumnsIds = this.form.value.columns\r\n .map((v, i) => v ? this.columns[i].id : null)\r\n .filter(v => v !== null);\r\n this.userStorage.setItem(this.storageKey, selectedColumnsIds);\r\n if (this._activatedTable.activeTable) {\r\n this._activatedTable.activeTable.handleColumns(selectedColumnsIds);\r\n }\r\n this.modalRef.hide();\r\n }\r\n\r\n dismiss() {\r\n this.modalRef.hide();\r\n }\r\n\r\n minSelectedColumns(min = 1) {\r\n const validator: ValidatorFn = (formArray: FormArray) => {\r\n const totalSelected = formArray.controls\r\n .map(control => control.value)\r\n .reduce((prev, next) => next ? prev + next : prev, 0);\r\n\r\n return totalSelected >= min ? null : { required: true };\r\n };\r\n\r\n return validator;\r\n }\r\n}\r\n","import {Component, Input, OnInit, Output, ViewChild,\n ViewEncapsulation, EventEmitter, AfterViewInit, TemplateRef, OnDestroy} from '@angular/core';\nimport { AdvancedTableComponent } from './advanced-table.component';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AngularDataContext } from '@themost/angular';\nimport { DatePipe } from '@angular/common';\nimport { UserStorageService, ModalService, DIALOG_BUTTONS } from '@universis/common';\nimport { BsModalService, BsModalRef } from 'ngx-bootstrap/modal';\nimport { TranslateService } from '@ngx-translate/core';\nimport {AdvancedFilterValueProvider} from './advanced-filter-value-provider.service';\nimport { AdvancedTableSearchBaseComponent } from './advanced-table-search-base';\nimport {TemplatePipe} from '@universis/common';\nimport { Subscription } from 'rxjs';\nimport { TextUtils } from '@themost/client';\n\nexport interface AdvancedSearchViewStatus {\n advancedView: boolean;\n}\n\nexport interface AdvancedSearchList {\n name: string;\n}\n\n@Component({\n // tslint:disable-next-line: component-selector\n selector: 'app-advanced-table-search',\n templateUrl: './advanced-table-search.component.html',\n encapsulation: ViewEncapsulation.None,\n})\n\nexport class AdvancedTableSearchComponent extends AdvancedTableSearchBaseComponent implements OnInit, AfterViewInit, OnDestroy {\n\n private queryParamSubscription: Subscription;\n private configChangesSubscription: Subscription;\n @Input() public table: AdvancedTableComponent;\n @Input() public collapsed = true;\n @Input() public allowSave = true;\n @Input() public showMore = true;\n @Input() public mergeQueryParams = false;\n @ViewChild('searchText') public searchText: any;\n @Output('viewChange') public viewChange: EventEmitter<AdvancedSearchViewStatus> = new EventEmitter<AdvancedSearchViewStatus>();\n @Output('listChange') public listChange: EventEmitter<AdvancedSearchList> = new EventEmitter<AdvancedSearchList>();\n public set text(value: string) {\n if (this.searchText) {\n this.searchText.nativeElement.value = value;\n }\n }\n\n public get text() {\n if (this.searchText) {\n return this.searchText.nativeElement.value;\n }\n }\n\n public modalRef: BsModalRef;\n public storageKey: any;\n public storageValue: any;\n public userSearchList: any = [];\n public selectedList: any = null;\n\n constructor( protected _context: AngularDataContext,\n protected _activatedRoute: ActivatedRoute,\n protected datePipe: DatePipe,\n private _modalService: BsModalService,\n private _userStorage: UserStorageService,\n private _translate: TranslateService,\n private _advancedSearchValueProvider: AdvancedFilterValueProvider,\n private _template: TemplatePipe,\n private _router: Router,\n private _modal: ModalService) { super(); }\n\n public ngOnInit(): void {\n this.configChangesSubscription = this.table.configChanges.subscribe((config) => {\n if (config == null) {\n return;\n }\n // load user searches\n this.loadUserSearchList().then(() => {\n // if search component merges query params\n // (uses queryParams to apply filter)\n if (this.mergeQueryParams) {\n this.queryParamSubscription = this._activatedRoute.queryParams.subscribe((queryParams) => {\n this.applyQueryParams(queryParams);\n });\n }\n });\n });\n }\n\n /**\n * Applies query given by the queryParams of the activated route\n * @param queryParams\n */\n private applyQueryParams(queryParams: any) {\n this.filter = {};\n if (Object.prototype.hasOwnProperty.call(queryParams, 'q')) {\n // set collapsed\n this.collapsed = true;\n // search text\n this.text = queryParams.q;\n return this.table.search(this.text);\n } else {\n this.text = '';\n }\n\n let filterParams = Object.assign({}, queryParams);\n\n if (Object.prototype.hasOwnProperty.call(queryParams, 's')) {\n // set collapsed\n this.collapsed = false;\n // find user search by name\n if (this.userSearchList) {\n this.selectedList = this.userSearchList.find((item) => {\n return item.name === queryParams.s;\n });\n if (this.selectedList) {\n filterParams = this.selectedList.filter;\n }\n }\n } else {\n this.selectedList = null;\n }\n\n Object.keys(filterParams).filter((key) => {\n // search criteria\n if (this.table && this.table.config && this.table.config.criteria) {\n return this.table.config.criteria.find((item) => {\n return item.name === key;\n });\n }\n }).forEach((key) => {\n let value = filterParams[key];\n if (TextUtils.isNumber(value)) {\n value = parseFloat(filterParams[key]);\n }\n if (this.filter[key] !== value) {\n // set value\n Object.defineProperty(this.filter, key, {\n configurable: true,\n enumerable: true,\n writable: true,\n value,\n });\n }\n if (this.filter[key] != null) {\n this.collapsed = false;\n }\n });\n\n // call filterChange event to apply change to advanced search children\n this.filterChange.emit(this.filter);\n // apply query\n this.getQuery().then((query) => {\n // if table query is null\n if (this.table.query == null) {\n // set query\n this.table.query = query;\n } else {\n if (query != null) {\n const params = query.getParams();\n // otherwise set filter params\n this.table.query.setParam('$filter', params.$filter);\n } else {\n this.table.query.setParam('$filter', null);\n }\n }\n // and finally fetch data\n this.table.fetch(true);\n });\n }\n\n public ngOnDestroy(): void {\n if (this.queryParamSubscription) {\n this.queryParamSubscription.unsubscribe();\n }\n if (this.configChangesSubscription) {\n this.configChangesSubscription.unsubscribe();\n }\n }\n\n public ngAfterViewInit(): void {\n\n }\n\n public onSearchKeyDown(event: any) {\n if (this.table && event.keyCode === 13) {\n // get search text\n const searchText = ( event.target as HTMLInputElement).value;\n // merge query params ?\n if (this.mergeQueryParams) {\n const queryParams = {\n q: searchText,\n };\n if (this.table.config && this.table.config.criteria) {\n this.table.config.criteria.forEach((item) => {\n Object.defineProperty(queryParams, item.name, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: null,\n });\n });\n }\n // try to apply filter by appending query params\n return this._router.navigate([], {\n relativeTo: this._activatedRoute,\n queryParams,\n queryParamsHandling: 'merge',\n });\n }\n this.filterChange.emit({\n q: searchText\n });\n // otherwise do search\n this.table.search(searchText);\n return false;\n }\n }\n\n public transformDate(date) {\n date = this.datePipe.transform(date, 'MM/dd/yyyy'); // whatever format you need.\n return date;\n }\n\n public convertToString(nameFilter) {\n let name = '';\n if (nameFilter != null) {\n name = nameFilter.toString();\n }\n return name;\n }\n\n// Load saved criteria searches user has stored before\n private loadUserSearchList(): Promise<void> {\n this.storageKey = 'tables/' + this.table.config.model + '/searches';\n return this._userStorage.getItem(this.storageKey).then((data) => {\n const list = data.value || [];\n // if table configuration has pre-defined searches\n if (this.table && this.table.config.searches && this.table.config.searches.length) {\n // add pre-defined lists\n list.push.apply(list, this.table.config.searches.map ( (x) => {\n x.readOnly = true; // as readonly\n x.name = this._translate.instant(x.name);\n return x;\n }));\n }\n // set user search list\n this.userSearchList = list;\n return Promise.resolve();\n }).catch((err) => {\n // DO NOT THROW ERROR\n // todo: notify component for this error in order to disable some actions\n console.error('An error occurred while getting user search list');\n console.error(err);\n return Promise.resolve();\n });\n }\n\n public onSelectUserSearch(event: any): any {\n if (this.selectedList) {\n const listFound = this.searchInListByName(this.selectedList.name);\n if (listFound) {\n if (this.mergeQueryParams) {\n const queryParams = { q: null, s: this.selectedList.name };\n // clear criteria if any\n this.table.config.criteria.forEach((item) => {\n if (Object.prototype.hasOwnProperty.call(queryParams, item.name) === false) {\n // set null value\n Object.defineProperty(queryParams, item.name, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: null,\n });\n }\n });\n return this._router.navigate([], {\n relativeTo: this._activatedRoute,\n queryParams,\n queryParamsHandling: 'merge',\n });\n }\n this.selectedList = listFound;\n this.filter = this.selectedList.filter;\n this.filterChange.emit(this.filter);\n return true;\n }\n } else {\n return this._router.navigate([], {\n relativeTo: this._activatedRoute,\n queryParams: { s: null },\n queryParamsHandling: 'merge',\n });\n }\n return false;\n }\n\n public searchInListByName(name: string): any {\n if ( Array.isArray(this.userSearchList) ) {\n const listFound = this.userSearchList.find( (x) => x.name === name);\n if ( listFound ) {\n return listFound;\n } else {\n return false;\n }\n }\n }\n\n// Update list item contents with given content (Search by object name property)\n public updateSavedSearchListItemByName( name: string, newItem: any ) {\n const itemInList = this.userSearchList.find( (x) => x.name === name );\n const index = this.userSearchList.indexOf(itemInList);\n this.userSearchList[index] = newItem;\n this.selectedList = this.userSearchList[index];\n }\n\n// Update list item contents with given content (Search by object)\n public updateSavedSearchListItemByObject( itemInList: any, newItem: any ) {\n const index = this.userSearchList.indexOf(itemInList);\n this.userSearchList[index] = newItem;\n this.selectedList = this.userSearchList[index];\n }\n\n// Delete list item from list\n public deleteItemFromSavedSearchListByObject( itemInList: any) {\n this.userSearchList = this.userSearchList.filter((item) => item !== itemInList);\n this.selectedList = null;\n this.filter = {};\n this.advancedSearch(true);\n this.uploadListOnUserStorage();\n }\n\n// User chose to save its advanced form search criteria\n public saveSearch( templateToLoad: TemplateRef<any>, newList: boolean = true) {\n if ( this.table.config.model ) {\n// Set the corresponding key to its list and show a confirmation modal window\n this.storageKey = `tables/${this.table.config.model}/searches`;\n if (this.filter && Object.keys(this.filter).length) {\n// User wants to save an existing list from the dropdown\n if ( !newList && this.selectedList ) {\n const newItem = { name : this.selectedList.name, filter : { ... this.filter } };\n this.updateSavedSearchListItemByObject ( this.selectedList, newItem );\n this.uploadListOnUserStorage();\n// User wants to save a new list\n } else {\n this.modalRef = this._modalService.show(templateToLoad);\n }\n } else {\n// User did not define any criteria\n this._modal.showWarningDialog(\n this._translate.instant('AdvancedSearch.Modal.Title'),\n this._translate.instant('AdvancedSearch.Modal.EmptyCriteriaList'),\n DIALOG_BUTTONS.Ok);\n }\n } else {\n this._modal.showWarningDialog(\n this._translate.instant('AdvancedSearch.Modal.Title'),\n this._translate.instant('AdvancedSearch.Modal.NoListDefined'),\n DIALOG_BUTTONS.Ok);\n }\n }\n\n// User Accepted => Save list and Close modal\n public confirmModal( saveFormName ): void {\n// name given and list name is unique\n if ( saveFormName && !(this.searchInListByName(saveFormName)) ) {\n const newInsertedValue = { name : saveFormName, filter : { ... this.filter } };\n if ( this.userSearchList && this.userSearchList.length !== 0 ) {\n this.userSearchList.push(newInsertedValue);\n this.storageValue = this.userSearchList;\n this.selectedList = newInsertedValue;\n } else {\n this.storageValue = [newInsertedValue];\n this.userSearchList = this.storageValue;\n this.selectedList = newInsertedValue;\n }\n this.uploadListOnUserStorage();\n this.modalRef.hide();\n } else if ( saveFormName && (this.searchInListByName(saveFormName)) ) {\n// User should insert a different name cause this one is already in use\n alert(this._translate.instant('AdvancedSearch.Modal.TitleOnListAlreadyCreated'));\n } else {\n// User did not insert any text\n alert(this._translate.instant('AdvancedSearch.Modal.TitleOnUserError'));\n }\n }\n\n// User declined => Close modal\n public closeModal(): void {\n this.modalRef.hide();\n }\n\n// Upload user's criteria on User Storage\n public uploadListOnUserStorage() {\n this._userStorage.setItem(this.storageKey, this.userSearchList.filter((x) => {\n return !x.readOnly;\n }));\n }\n\n /**\n * @deprecated This method is going to be deprecated. Use search() method instead.\n * @param {*} event\n */\n public async asyncAdvancedSearch(event?: any) {\n if ( this.table && this.table.config && Array.isArray(this.table.config.criteria)) {\n const query = await this.getQuery();\n if (this.mergeQueryParams) {\n this.selectedList = null;\n const queryParams = Object.assign({ q: null, s: null }, this.filter);\n // enumerate criteria\n this.table.config.criteria.forEach((item) => {\n if (Object.prototype.hasOwnProperty.call(queryParams, item.name) === false) {\n // set null value\n Object.defineProperty(queryParams, item.name, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: null,\n });\n }\n });\n return this._router.navigate([], {\n relativeTo: this._activatedRoute,\n queryParams,\n queryParamsHandling: 'merge',\n });\n }\n if (this.table.query) {\n this.table.query.setParam('$filter', query.getParams()['$filter']);\n } else {\n this.table.query = query;\n }\n this.filterChange.emit(this.filter);\n this.table.fetch();\n }\n }\n\n public search(): Promise<void> {\n return this.asyncAdvancedSearch().then(() => {\n // do nothing\n });\n }\n\n public async getQuery() {\n // on simple search return null\n if (this.collapsed) {\n return null;\n }\n if ( this.table && this.table.config && Array.isArray(this.table.config.criteria)) {\n const expressions = [];\n const values = await this._advancedSearchValueProvider.getValues();\n this.table.config.criteria.forEach((x) => {\n if (Object.prototype.hasOwnProperty.call(this.filter, x.name)) {\n const nameFilter = this.convertToString(this.filter[x.name]);\n if (nameFilter.includes('GMT')) {\n const newDate = this.transformDate(this.filter[x.name]);\n expressions.push(this._template.transform(x.filter, {\n value: newDate,\n }));\n } else if (this.filter[x.name] !== 'undefined') {\n expressions.push(this._template.transform(x.filter, Object.assign({\n value: this.filter[x.name],\n }, values)));\n }\n }\n });\n let query;\n if (expressions || expressions.length) {\n // create client query\n query = this._context.model(this.table.config.model).asQueryable();\n query.setParam('filter', expressions.join(' and '));\n } else {\n query = this._context.model(this.table.config.model).asQueryable();\n }\n return query;\n }\n }\n\n public advancedSearch(event: any) {\n return this.asyncAdvancedSearch(event);\n }\n\n public clear() {\n if (this.mergeQueryParams) {\n this.selectedList = null;\n const queryParams = { q: null, s: null };\n // enumerate criteria\n this.table.config.criteria.forEach((item) => {\n if (Object.prototype.hasOwnProperty.call(queryParams, item.name) === false) {\n // set null value\n Object.defineProperty(queryParams, item.name, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: null,\n });\n }\n });\n return this._router.navigate([], {\n relativeTo: this._activatedRoute,\n queryParams,\n queryParamsHandling: 'merge',\n });\n } else {\n // clear filter\n this.filter = {};\n // clear list\n this.selectedList = null;\n // raise filter change event\n this.filterChange.emit(this.filter);\n }\n }\n\n /**\n * Gets the view state of search control\n */\n public get viewState(): AdvancedSearchViewStatus {\n return {\n advancedView: !this.collapsed,\n };\n }\n\n /**\n * Switches view between simple and advanced search\n */\n public async toggleView() {\n this.collapsed = !this.collapsed;\n // emit event for view status change\n this.viewChange.emit(this.viewState);\n }\n}\n","import {\n ActionLinkFormatter, ButtonFormatter, DateTimeFormatter, LanguageFormatter,\n LinkFormatter,\n NestedPropertyFormatter, NgClassFormatter, SelectRowFormatter,\n TemplateFormatter, TranslationFormatter,\n TrueFalseFormatter, ActionButtonFormatter, ActionSplitButtonFormatter,\n} from './advanced-table.formatters';\n\nexport interface IAdvancedTableFormatters {\n ActionLinkFormatter?: ActionLinkFormatter;\n ButtonFormatter?: ButtonFormatter;\n DateTimeFormatter?: DateTimeFormatter;\n LanguageFormatter?: LanguageFormatter;\n LinkFormatter?: LinkFormatter;\n NestedPropertyFormatter?: NestedPropertyFormatter;\n NgClassFormatter?: NgClassFormatter;\n SelectRowFormatter?: SelectRowFormatter;\n TemplateFormatter?: TemplateFormatter;\n TranslationFormatter?: TranslationFormatter;\n TrueFalseFormatter?: TrueFalseFormatter;\n ActionButtonFormatter?: ActionButtonFormatter;\n ActionSplitButtonFormatter?: ActionSplitButtonFormatter;\n}\nexport const FORMATTERS: IAdvancedTableFormatters = {\n ActionLinkFormatter: new ActionLinkFormatter(),\n ButtonFormatter: new ButtonFormatter(),\n DateTimeFormatter: new DateTimeFormatter(),\n LanguageFormatter: new LanguageFormatter(),\n LinkFormatter: new LinkFormatter(),\n NestedPropertyFormatter: new NestedPropertyFormatter(),\n NgClassFormatter: new NgClassFormatter(),\n SelectRowFormatter: new SelectRowFormatter(),\n TemplateFormatter: new TemplateFormatter(),\n TranslationFormatter: new TranslationFormatter(),\n TrueFalseFormatter: new TrueFalseFormatter(),\n ActionButtonFormatter: new ActionButtonFormatter(),\n ActionSplitButtonFormatter: new ActionSplitButtonFormatter(),\n};\n","import { Component, OnInit, Input, OnDestroy, OnChanges, SimpleChanges, Output, EventEmitter } from '@angular/core';\nimport { AdvancedTableComponent, AdvancedTableDataResult } from '../advanced-table/advanced-table.component';;\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'table-simple-header-tools',\n template: `\n <ng-content></ng-content>\n `,\n styles: []\n})\nexport class SimpleHeaderToolsComponent {\n //\n}\n\n@Component({\n selector: 'app-table-simple-header',\n templateUrl: './table-simple-header.component.html',\n styles: []\n})\nexport class TableSimpleHeaderComponent implements OnInit, OnDestroy, OnChanges {\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.table) {\n if (changes.table.currentValue == null) {\n if (this.dataLoadSubscription) {\n this.dataLoadSubscription.unsubscribe();\n return;\n }\n }\n if (changes.table.currentValue != changes.table.previousValue) {\n this.dataLoadSubscription = changes.table.currentValue.load.subscribe((data: AdvancedTableDataResult) => {\n this.recordsTotal = data.recordsTotal;\n });\n }\n }\n }\n ngOnDestroy(): void {\n if (this.dataLoadSubscription) {\n this.dataLoadSubscription.unsubscribe();\n }\n }\n\n @Input() table: AdvancedTableComponent;\n public recordsTotal: number;\n public dataLoadSubscription: Subscription;\n constructor() { }\n\n ngOnInit() {\n //\n }\n\n}\n","import {\n Directive, Output, EventEmitter,\n} from '@angular/core';\nimport { AdvancedTableComponent } from '../components/advanced-table/advanced-table.component';\n\nexport class AdvancedTableNotNullError extends Error {\n constructor() {\n super('Advanced table component cannot be empty at this context.');\n }\n}\n\n@Directive(\n {\n // tslint:disable-next-line: directive-selector\n selector: '[tableEditor]',\n },\n)\nexport class AdvancedTableEditorDirective {\n\n public dirty = false;\n @Output() public dirtyChange: EventEmitter<boolean> = new EventEmitter<boolean>(false);\n\n constructor(private table: AdvancedTableComponent) {\n //\n }\n\n /**\n * Add rows to table and mark them as added rows\n */\n public add(...addItems: any[]) {\n if (this.table == null) {\n throw new AdvancedTableNotNullError();\n }\n // decorate items\n const key = this.table.config.columns[0].property || this.table.config.columns[0].name;\n for (const element of addItems) {\n let tr = this.table.dataTable.rows(':has(input[data-id=\"' + element[key] + '\"])').nodes().to$();\n if (tr.hasClass('removed')) {\n tr.toggleClass('removed text-gray-400 text-decoration-line-through');\n } else {\n this.table.dataTable.rows.add([element]);\n tr = this.table.dataTable.rows(':has(input[data-id=\"' + element[key] + '\"])').nodes().to$();\n tr.toggleClass('added font-weight-bold text-success');\n }\n }\n this.table.dataTable.draw();\n // find removed\n const removedLength = this.table.dataTable.rows('.removed')[0].length;\n // find added\n const addedLength = this.table.dataTable.rows('.added')[0].length;\n // and emit event\n const items = this.table.dataTable.rows().data();\n this.table.load.emit({\n data: items,\n recordsFiltered: items.length - removedLength,\n recordsTotal: items.length - removedLength,\n });\n this.dirty = (removedLength > 0 || addedLength > 0);\n this.dirtyChange.emit(this.dirty);\n }\n\n /**\n * Marks rows as removed rows\n */\n public remove(...removeItems: any[]) {\n if (this.table == null) {\n throw new AdvancedTableNotNullError();\n }\n // get key\n const key = this.table.config.columns[0].property || this.table.config.columns[0].name;\n // loop items\n for (const element of removeItems) {\n const tr = this.table.dataTable.rows(':has(input[data-id=\"' + element[key] + '\"])').nodes().to$();\n // if row is marked as added\n if (tr.hasClass('added')) {\n // remove this dirty row\n this.table.dataTable.rows(tr).remove();\n } else {\n // otherwise unmarked row\n tr.toggleClass('removed text-gray-400 text-decoration-line-through');\n }\n // check if item is selected\n const selectedIndex = this.table.selected.findIndex((item) => {\n return item[key] === element[key];\n });\n // and remove it from selected collection\n if (selectedIndex >= 0) {\n this.table.selected.splice(selectedIndex, 1);\n }\n }\n // re-draw table\n this.table.dataTable.draw();\n // get number of table items\n const items = this.table.dataTable.rows().data();\n // get number of removed items\n const removedLength = this.table.dataTable.rows('.removed')[0].length;\n // get number of added items\n const addedLength = this.table.dataTable.rows('.added')[0].length;\n // refresh\n this.table.load.emit({\n data: items,\n recordsFiltered: items.length - removedLength,\n recordsTotal: items.length - removedLength,\n });\n this.dirty = (removedLength > 0 || addedLength > 0);\n this.dirtyChange.emit(this.dirty);\n }\n\n public set(items: any[]) {\n if (this.table == null) {\n throw new AdvancedTableNotNullError();\n }\n // clear rows\n this.table.selected = [];\n this.table.dataTable.clear();\n // set items\n this.table.dataTable.rows.add(items).draw();\n this.table.load.emit({\n data: items,\n recordsFiltered: items.length,\n recordsTotal: items.length,\n });\n }\n\n /**\n * Undo changes\n */\n public undo() {\n if (this.table == null) {\n throw new AdvancedTableNotNullError();\n }\n // reset removed rows\n this.table.dataTable.rows('.removed').nodes().to$().toggleClass('removed text-gray-400 text-decoration-line-through');\n // remove added rows\n this.table.dataTable.rows('.added').remove();\n // clear selected items\n this.table.selected = [];\n const items = this.table.dataTable.rows().data();\n this.table.dataTable.draw();\n this.table.load.emit({\n data: items,\n recordsFiltered: items.length,\n recordsTotal: items.length,\n });\n this.dirty = false;\n this.dirtyChange.emit(this.dirty);\n }\n\n public rows() {\n if (this.table == null) {\n throw new AdvancedTableNotNullError();\n }\n return Array.from(this.table.dataTable.rows(':not(.removed)').data());\n }\n\n}\n","import {Directive, HostListener} from '@angular/core';\nimport {ActivatedTableService} from '../tables.activated-table.service';\nimport {AngularDataContext} from '@themost/angular';\nimport {ConfigurationService, ErrorService, LoadingService} from '@universis/common';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ClientDataQueryable, ResponseError} from '@themost/client';\nimport { TableConfiguration } from '../components/advanced-table/advanced-table.interfaces';\n\nconst MAX_EXPORT_ITEMS = 500;\n\ndeclare interface ExportLimitConfiguration {\n tables?: {\n exportLimit?: number\n }\n}\n\n@Directive({\n selector: '.universis-btn-export'\n})\nexport class BtnExpDirective {\n constructor(private _activatedTable: ActivatedTableService,\n private _context: AngularDataContext,\n private _config: ConfigurationService,\n private _translate: TranslateService,\n private _loadingService: LoadingService,\n private _errorService: ErrorService) {\n }\n\n @HostListener('click', ['$event'])\n async clickEvent(event) {\n event.preventDefault();\n event.stopPropagation();\n if (this._activatedTable.activeTable) {\n const lastQuery = this._activatedTable.activeTable.lastQuery;\n const tableConfig = this._activatedTable.activeTable.config;\n const serviceHeaders = this._context.getService().getHeaders();\n const queryModel = lastQuery.getModel();\n let query = this._context.model(queryModel).asQueryable();\n const queryParams = lastQuery.getParams();\n query = this.constructQuery(query, queryParams, tableConfig, serviceHeaders);\n // get export settings\n const exportSettings = this._config.settings as ExportLimitConfiguration;\n // get export limit\n const maxExportItems = exportSettings && exportSettings.tables && exportSettings.tables.exportLimit;\n if (maxExportItems && typeof maxExportItems === 'number' && maxExportItems > 0) {\n query.skip(0).take(maxExportItems);\n } else {\n query.skip(0).take(MAX_EXPORT_ITEMS);\n }\n // This constructs the URI based on the way @themost does\n const url = this.constructURL(query);\n this.downloadFile(url, query.getService().getHeaders(), query.getModel());\n }\n }\n\n /**\n * Sets the parameters to the query based on\n * the active filters of the activated table\n * @param {ClientDataQueryable} query\n * @param params: The filters of the last query of the activated table\n * @return ClientDataQueryable\n */\n setParams(query: ClientDataQueryable, params): ClientDataQueryable {\n if (params && typeof params === 'object') {\n Object.keys(params).forEach((key) => {\n query.setParam(key, params[key]);\n });\n }\n return query;\n }\n\n /**\n * Sets the headers to the query based on\n * the default headers of the DataContext\n * and appending the accept header to get\n * an xlsx file from the API\n * @param {ClientDataQueryable} query\n * @param {Headers} headers: The headers to append to the query\n * @return ClientDataQueryable\n */\n setHeaders(query: ClientDataQueryable, headers: Headers): ClientDataQueryable {\n Object.keys(headers).forEach((key) => {\n if (headers.hasOwnProperty(key)) {\n query.getService().setHeader(key, headers[key]);\n }\n });\n // sets a header to accept xlsx files\n query.getService().setHeader('Accept', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\n return query;\n }\n\n /**\n * Constructs the select parameter of the\n * ClientDataQuery by replacing the target name\n * of the field based on the localized translation\n * of that property on the advanced tabled\n * @param {ClientDataQueryable} query\n * @param tableConfig: The configuration of the activated table\n * @return ClientDataQueryable\n */\n constructQueryParam(query: ClientDataQueryable, tableConfig: TableConfiguration): ClientDataQueryable {\n let selectQuery = query.getParams().$select;\n let selectQueryArray = selectQuery.split(',');\n selectQueryArray = selectQueryArray.map((select) => {\n const words = select.split(' ');\n if (words.length === 3) {\n if (tableConfig && tableConfig.columns) {\n for(const column of tableConfig.columns) {\n if (column.property === words[2] && column.title) {\n words[2] = `\"${this._translate.instant(column.title)}\"`;\n } else if (column.property === words[2]) {\n words[2] = `\"${this._translate.instant(words[2])}\"`\n }\n }\n }\n }\n if (words.length === 1) {\n if (tableConfig && tableConfig.columns) {\n for(const column of tableConfig.columns){\n if (column.name === words[0] && column.title) {\n words[0] = `${words[0]} as \"${this._translate.instant(column.title)}\"`;\n break;\n } else if (column.name === words[0] && column.property) {\n words[0] = `${words[0]} as \"${this._translate.instant(column.property)}\"`;\n break;\n } else if (words[0] === column.name && words[0]=== \"id\" && column.hidden) {\n break;\n } else if(words[0] == column.name || words[0]=== column.property) {\n words[0] = `${words[0]} as \"${this._translate.instant(words[0])}\"`;\n }\n }\n }\n return words[0];\n }\n return words.join(' ');\n });\n selectQuery = selectQueryArray.join(',');\n query.setParam('$select', selectQuery );\n return query;\n }\n\n /**\n * Constructs the fetch URL based the query parameters\n * @param {ClientDataQueryable} query\n * @return String\n */\n constructURL(query): String {\n const baseURL = query.getService().getBase();\n let url = baseURL.endsWith('/') ? (baseURL + query.getModel() + '?') : (baseURL + '/' + query.getModel() + '?');\n Object.keys(query.getParams()).forEach((key, index) => {\n if (index === 0) {\n url += key + '=' + query.getParams()[key];\n } else {\n url += '&' + key + '=' + query.getParams()[key];\n }\n });\n return url;\n }\n\n /**\n * Constructs the query by setting the parameters of the\n * advanced table's active filters, sets the necessary headers\n * and build the select parameter of the query\n * @param {ClientDataQueryable} query\n * @param params: The filters of the last query of the activated table\n * @param tableConfig: The configuration of the activated table\n * @param {Headers} headers: The headers to append to the query\n * @return ClientDataQueryable\n */\n constructQuery(query, params, tableConfig, headers: Headers) {\n let _query = this.setParams(query, params);\n _query = this.setHeaders(_query, headers);\n _query = this.constructQueryParam(_query, tableConfig);\n return _query;\n }\n\n /**\n * Fetches and saves the xlsx file\n * @param {String} url\n * @param {Headers} serviceHeaders: The headers to append to the query\n * @param modelName: The model name of the advanced table\n */\n downloadFile(url, serviceHeaders: Headers, modelName) {\n this._loadingService.showLoading();\n fetch(encodeURI(url), {\n headers: serviceHeaders,\n credentials: 'include'\n }).then(response => {\n if (response && !response.ok) {\n throw new ResponseError(response.statusText, response.status);\n }\n return response.blob();\n }).then(blob => {\n const objectUrl = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n document.body.appendChild(a);\n a.setAttribute('style', 'display: none');\n a.href = objectUrl;\n const downloadName = `${modelName}.xlsx`;\n a.download = downloadName;\n // this adds support for IE and MS Edge (up to version 44.19041)\n if (window.navigator && window.navigator.msSaveOrOpenBlob) {\n window.navigator.msSaveOrOpenBlob(blob, downloadName);\n } else {\n // for all other browsers\n a.click();\n }\n window.URL.revokeObjectURL(objectUrl);\n a.remove();\n this._loadingService.hideLoading();\n }).catch(err => {\n this._loadingService.hideLoading();\n this._errorService.showError(err, {\n continueLink: '.'\n });\n });\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { AngularDataContext } from '@themost/angular';\nimport { TemplatePipe } from '@universis/common';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AdvancedAggregatorService {\n\n constructor(\n private _context: AngularDataContext,\n private _template: TemplatePipe\n ) { }\n\n /**\n *\n * Formats and executes the data query\n *\n * @param {string} model The target model\n * @param {object} fixedParams Pairs of parameters to always be applied\n * @param {string} queryStatement The default query to use for fetching the data (e.g. expands etc)\n * @param {Array<string>} filters A list of filter expressions to append at the query\n * @param {string} searchTemplate The template to use for searching expressions\n * @param {string} searchValue The value of the user search\n *\n * @returns {Promise<any>} The response of the query execution\n */\n async fetchData(model: string, fixedParams: object, queryStatement: string = '', filters: string[], searchTemplate?: string, searchValue?: string): Promise<any> {\n const query = this._context.model(model).asQueryable();\n\n if (!fixedParams || typeof fixedParams !== 'object') {\n fixedParams = {};\n }\n\n let filterExpressions = [];\n\n if (fixedParams) {\n for (let param of Object.keys(fixedParams)) {\n filterExpressions.push(`${param} eq ${fixedParams[param]}`);\n }\n }\n\n if (filters && Array.isArray(filters)) {\n filterExpressions = [\n ...filterExpressions,\n ...filters\n ]\n }\n\n if (searchTemplate && searchValue) {\n let evaluatedSearch;\n if (/^\"(.*?)\"$/.test(searchValue)) { // validate search text in double quotes\n evaluatedSearch = this._template.transform(searchTemplate, {\n ...fixedParams,\n text: searchValue.replace(/^\"|\"$/g, '')\n });\n } else {\n // try to split words\n const words = searchValue.split(' ');\n // join words to a single filter\n evaluatedSearch = words.map(word => {\n return this._template.transform(searchTemplate, {\n ...fixedParams,\n text: word\n });\n }).join(' and ');\n\n }\n filterExpressions.push(evaluatedSearch);\n }\n\n query.setParam('$filter', filterExpressions.join('and'));\n return query.expand(queryStatement).take(-1).getItems();\n }\n\n /**\n *\n * Formats the received data to use flat keys\n *\n * @param config The applied configuration\n * @param data The raw data\n *\n * @returns {Array<any>} The flat-key object list\n *\n */\n formatData(config, data) {\n try {\n return data.map((entry) => {\n if(entry.subitems && Array.isArray(entry.subitems)){\n entry.subitems = this.formatData(config, entry.subitems);\n }\n let entryObject = {} as any;\n for (let i = 0; i < config.columns.length; i++) {\n const keys = config.columns[i].name.split('/');\n let helperObject = entry[keys[0]];\n\n if (helperObject && keys.length > 1) {\n for (let i = 1; i < keys.length; i++) {\n if (helperObject === undefined || helperObject === null) {\n break;\n } else {\n helperObject = helperObject[keys[i]] !== undefined && helperObject[keys[i]] !== null\n ? helperObject[keys[i]]\n : undefined;\n }\n }\n }\n\n entryObject[config.columns[i].name] = helperObject;\n }\n\n if (entry.subitems) {\n entryObject.subitems = entry.subitems;\n }\n\n return entryObject;\n });\n } catch (err) {\n console.error(err);\n }\n }\n}\n","import { Component, Input, OnInit, Output, EventEmitter, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\nimport { AdvancedAggregatorService } from '../../services/advanced-aggregator/advanced-aggregator.service';\nimport { AdvancedAggregatorConfig, AdvancedAggregatorFilters } from '../../advanced-aggregator';\nimport { LoadingService } from '@universis/common';\n\n/**\n *\n * @class AdvancedAggregatorComponent\n * @classdesc An advanced list with the capability of aggregate data based on configurable filters\n *\n */\n\n@Component({\n selector: 'app-advanced-aggregator',\n templateUrl: './advanced-aggregator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AdvancedAggregatorComponent implements OnInit, OnDestroy {\n\n private _config: AdvancedAggregatorConfig;\n private _aggregators;\n private _postProcessors;\n\n public body;\n public groups = [];\n\n @Input('config')\n public set config(value: AdvancedAggregatorConfig) {\n this._config = value;\n }\n\n @Input('aggregators')\n public set aggregators(value) {\n this._aggregators = value;\n }\n\n @Input('postProcessors')\n public set postProcessors(value) {\n this._postProcessors = value;\n }\n\n @Input('params') params;\n @Input('selectedGroups') selectedGroups$;\n @Input('filters') filters$;\n @Input('searchExpression') searchExpression: string;\n\n @Output() eventHandler = new EventEmitter();\n\n constructor(\n private _changeDetector: ChangeDetectorRef,\n private _advancedAggregatorService: AdvancedAggregatorService,\n private _loadingService: LoadingService\n ) { }\n\n public get config() {\n return this._config;\n }\n\n public get aggregators() {\n return this._aggregators;\n }\n\n public get postProcessors() {\n return this._postProcessors;\n }\n\n async ngOnInit() {\n this.selectedGroups$.subscribe((data) => {\n this.groups = data;\n this._changeDetector.markForCheck();\n });\n\n this.filters$.subscribe(async (filters: AdvancedAggregatorFilters) => {\n try {\n await this.fetch(filters);\n } catch (err) {\n console.error(err);\n }\n });\n }\n\n async ngOnDestroy() {\n this.selectedGroups$.unsubscribe();\n this.filters$.unsubscribe();\n }\n\n /**\n *\n * Retrieves the data\n *\n */\n async fetch(filters: AdvancedAggregatorFilters) {\n try {\n this._loadingService.showLoading();\n let data = await this._advancedAggregatorService.fetchData(this.config.model,\n this.params,\n this.config.query,\n filters.filters,\n this.searchExpression,\n filters.text\n );\n\n if (this.postProcessors && Object.keys(this.postProcessors).length > 0 && this.config.postProcessors && this.config.postProcessors.length > 0) {\n for (let i = 0; i < this.config.postProcessors.length; i++) {\n data = await this.postProcessors[this.config.postProcessors[i].name](data);\n }\n }\n\n this.body = this._advancedAggregatorService.formatData(this.config, data);\n this._changeDetector.markForCheck();\n } catch (err) {\n console.error(err);\n } finally {\n this._loadingService.hideLoading();\n }\n }\n\n /**\n *\n * Triggers the event handler event\n *\n * @param {*} event The event data\n *\n */\n onActionEvent(event) {\n this.eventHandler.emit(event);\n }\n}\n","import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';\nimport { TemplatePipe} from '@universis/common';\n\nenum Lengths {\n XL= 'xl',\n LG= 'lg',\n MD= 'md',\n SM= 'sm',\n XS= 'xs'\n}\n\n\n@Component({\n selector: 'app-advanced-aggregator-list',\n templateUrl: './advanced-aggregator-list.component.html'\n})\nexport class AdvancedAggregatorListComponent implements OnInit {\n\n /**\n * @property {AdvancedAggregatorConfig} config The configuration object to use\n */\n @Input() config: any;\n\n /**\n * @property {Array<Array<any>>} body The list of data entries to show as the list body\n */\n @Input() body;\n\n @Output() clickEvent = new EventEmitter();\n\n constructor(private _template: TemplatePipe) { }\n\n ngOnInit() {\n this.config.columns.forEach(x => {\n x.length = Object.values(Lengths).includes(x.length) ? this._template.transform(`sis--list-group-item_${x.length}_column`, x ) :\n !x.length ? 'sis--list-group-item_sm_column': x.length ;\n })\n }\n\n /**\n *\n * Triggers the output event emitter\n *\n * @param type The type of the event as it's declared in the configuration\n * @param item The value of the current item\n * }\n */\n callCallback(type: string, data: any): void {\n this.clickEvent.emit({\n type,\n data\n });\n }\n}\n","import {Component, Input, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {RouterModalOkCancel} from '@universis/common/routing';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {Observable, Subscription} from 'rxjs';\nimport {TranslateService} from '@ngx-translate/core';\nimport {AngularDataContext} from '@themost/angular';\nimport {AdvancedTableModalBaseComponent} from '../advanced-table-modal/advanced-table-modal-base.component';\nimport {AdvancedFormComponent} from '@universis/forms';\nimport {AppEventService, ErrorService, LoadingService, ModalService, ToastService} from '@universis/common';\n\n@Component({\n selector: 'app-add-items',\n templateUrl: './add-items.component.html'\n})\nexport class AddItemsComponent extends RouterModalOkCancel implements OnInit, OnDestroy {\n\n public loading = false;\n public lastError;\n @Input() execute: Observable<any>;\n @Input() items: Array<any> = [];\n @Input() target: any;\n // @Input() selected: any;\n @Input() tableConfiguration: any;\n @Input() formName: any;\n @Input() messages: Array<any> = [];\n @ViewChild('formComponent') formComponent: AdvancedFormComponent;\n @ViewChild('selectComponent') selectComponent: AdvancedTableModalBaseComponent;\n private formLoadSubscription: Subscription;\n private formChangeSubscription: Subscription;\n private selectedSubscription: Subscription;\n\n constructor(router: Router,\n activatedRoute: ActivatedRoute,\n private _errorService: ErrorService,\n private _modalService: ModalService,\n private _appEvent: AppEventService,\n private _toastService: ToastService,\n private _loadingService: LoadingService,\n private _translateService: TranslateService,\n private _context: AngularDataContext) {\n super(router, activatedRoute);\n // set modal size\n this.modalClass = 'modal-lg';\n this.okButtonDisabled = true;\n }\n\n ngOnInit() {\n this.selectedSubscription = this.selectComponent.advancedTable.selectedItems.subscribe((items) => {\n if (this.formName == null) {\n this.okButtonDisabled = items.length === 0;\n }\n });\n\n if (this.formName != null) {\n this.formChangeSubscription = this.formComponent.form.change.subscribe((event:any) => {\n if (Object.prototype.hasOwnProperty.call(event, 'isValid')) {\n // enable or disable button based on form status\n this.okButtonDisabled = (!event.isValid);\n }\n });\n }\n\n if (this.target) {\n const target = this.target;\n }\n }\n\n cancel(): Promise<any> {\n this.clearMessages();\n if (this.loading) {\n return;\n }\n // close\n if (this._modalService.modalRef) {\n return this._modalService.modalRef.hide();\n }\n }\n\n ngOnDestroy(): void {\n if (this.formLoadSubscription) {\n this.formLoadSubscription.unsubscribe();\n }\n if (this.formChangeSubscription) {\n this.formChangeSubscription.unsubscribe();\n }\n if (this.selectedSubscription) {\n this.selectedSubscription.unsubscribe();\n }\n }\n\n // get form data\n private executeSubscription: Subscription;\n public get formData(): any {\n if (this.formComponent === null) {\n return null;\n }\n return this.formComponent.form.formio.data;\n }\n\n ok(): Promise<any> {\n try {\n this.clearMessages();\n return new Promise((resolve, reject) => {\n this.loading = false;\n this.lastError = null;\n // set courses\n this.items = this.selectComponent.advancedTable.selected\n // execute add\n this.executeSubscription = this.execute.subscribe((result) => {\n this.loading = false;\n if(this.executeSubscription){\n this.executeSubscription.unsubscribe();\n }\n // close modal\n if (this._modalService.modalRef) {\n this._modalService.modalRef.hide();\n }\n return resolve(null);\n }, (err) => {\n this.loading = false;\n // ensure that loading is hidden\n this._loadingService.hideLoading();\n // set last error\n this.lastError = err;\n return resolve(null);\n });\n });\n } catch (err) {\n this.loading = false;\n this._loadingService.hideLoading();\n this.lastError = err;\n }\n }\n\n onChange($event: any) {}\n\n clearMessages() {\n this.messages = [];\n }\n\n onFilterChange(event: { name: string, emit: boolean }) {}\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n/**\n * \n * @class AdvancedAggregatorPipe\n * @classdesc Given a list of items runs a user defined function against that list\n * \n */\n\n@Pipe({\n name: 'callAggregator'\n})\nexport class AdvancedAggregatorPipe implements PipeTransform {\n\n /**\n * \n * @override\n * \n * @param items The list of items to run the aggregator against\n * @param functionPool The functions that are available from the list caller\n * @param functionName The name of the function to be called\n * \n * @returns {string} The value to show at the UI\n * \n */\n transform(items: any[], functionPool: any, functionName: string): any {\n if (Array.isArray(items) && functionName && functionName in functionPool) {\n return functionPool[functionName](items);\n } else {\n return '-';\n }\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\n\n/**\n * \n * @class ParseTitlePipe\n * @classdesc Given a title of an aggregator list, translates and evaluates the parameter if any\n * \n */\n\n@Pipe({\n name: 'aggregatorListTitle'\n})\nexport class ParseTitlePipe implements PipeTransform {\n\n constructor(\n private _translateService: TranslateService\n ) {}\n\n /**\n * \n * @override\n * \n * @param {string} title The title of the list\n * @param {string} key The current list key that is being used\n * \n */\n transform(title: string, key: string): any {\n if (!title) {\n return '';\n } else {\n if (key === undefined || key === null || key === 'undefined' || key === 'null') {\n key = this._translateService.instant('Tables.NotDefined');\n }\n return title.split(' ')\n .map((part) => this._translateService.instant(part))\n .map((part) => part.replace('${param}', key))\n .join(' ');\n }\n }\n}\n","export const TABLES_EL = {\n \"Tables\": {\n \"Export\": \"Εξαγωγή\",\n \"More\": \"Περισσότερα\",\n \"Search\": \"Αναζήτηση\",\n \"SearchPlaceholder\": \"Αναζήτηση...\",\n \"GroupBy\": \"Ομαδοποίηση ανά\",\n \"NotDefined\": \"Μη προσδιορισμένο\",\n \"DataTable\": {\n \"paginate\": {\n \"first\": \"Πρώτη σελίδα\",\n \"last\": \"Τελεταία σελίδα\",\n \"next\": \"Επόμενη\",\n \"previous\": \"Προηγούμενη\"\n },\n \"info\": \"Εμφάνιση _START_ έως _END_ από _TOTAL_ εγγραφές\",\n \"infoEmpty\": \"Δεν βρέθηκαν εγγραφές\",\n \"loading\": \"Εμφάνιση δεδομένων...\",\n \"processing\": \"Παραλαβή δεδομένων...\",\n \"emptyTable\": \"Δεν βρέθηκαν αποτελέσματα.\"\n },\n \"ColumnDisplay\": \"Επιλογή Εμφάνισης στηλών\",\n \"ColumnDisplayInfo\": \"Επιλέξτε τις στήλες που θέλετε να εμφανίζονται.\",\n \"Save\": \"Εφαρμογή\",\n \"Apply\": \"Εφαρμογή\",\n \"Cancel\": \"Ακύρωση\",\n \"RecordsPerPage\": \"Εγγραφές ανά σελίδα\",\n \"PageInfo\": \"{{start}}-{{end}} από {{recordsTotal}}\",\n \"SearchListPlaceholder\": \"Αναζητήστε στη λίστα...\",\n \"Filters\": \"Φίλτρα\",\n \"All\": \"Όλα\",\n \"AddItem\": \"Προσθήκη στοιχείου\",\n \"EmptyTableTitle\": \"Δεν βρέθηκαν αποτελέσματα.\",\n \"EmptyTableMessage\": \"Προσπαθήστε να χρησιμοποιήσετε άλλες λέξεις κλειδιά.\",\n \"RemoveItem\": \"Διαγραφή στοιχείου\",\n \"Items\": \"στοιχεία\",\n \"Item\": \"στοιχείο\",\n \"AddItemMessage\": {\n \"title\": \"Προσθήκη στοιχείων\",\n \"one\": \"Ένα νέο στοιχείο προστέθηκε με επιτυχία.\",\n \"many\": \"{{value}} νέα στοιχεία προστέθηκαν με επιτυχία.\"\n },\n \"RemoveItemMessage\": {\n \"title\": \"Αφαίρεση στοιχείων\",\n \"one\": \"Ένα στοιχείο αφαιρέθηκε με επιτυχία.\",\n \"many\": \"{{value}} στοιχεία αφαιρέθηκαν με επιτυχία.\"\n },\n \"RemoveItemsTitle\": \"Διαγραφή στοιχείου\",\n \"RemoveItemsMessage\": \"Πρόκειται να διαγράψετε ένα ή περισσότερα στοιχεία. Θέλετε να προχωρήσετε?\",\n \"SelectAll\": \"Επιλογή όλων\",\n \"ClearSelection\": \"Αναίρεση επιλογής\",\n \"Actions\": {\n \"Label\": \"Επεξεργασία\",\n \"Start\": \"Έναρξη\",\n \"ActionMessage\": {\n \"None\": \"Δεν έχετε επιλέξει κανένα στοιχείο που να ακολουθεί τις προϋποθέσεις της ενέργειας.\",\n \"One\": \"Έχετε επιλέξει ένα στοιχείο που ακολουθεί τις προϋποθέσεις της ενέργειας. Πατήστε το πλήκτρο Έναρξη για να ξεκινήσει η διαδικασία.\",\n \"Many\": \"Έχετε επιλέξει {{length}} στοιχεία που ακολουθούν τις προϋποθέσεις της ενέργειας. Πατήστε το πλήκτρο Έναρξη για να ξεκινήσει η διαδικασία.\"\n },\n \"CompletedWithErrors\": {\n \"Title\": \"Η διαδικασία ολοκληρώθηκε με σφάλματα.\",\n \"Description\": {\n \"One\": \"Ένα στοιχείο δεν ανανεώθηκε λόγω ενός σφάλματος που συνέβη κατά την εκτέλεση της διαδικασίας.\",\n \"Many\": \"{{errors}} στοιχεία δεν ανανεώθηκαν λόγω ενός σφάλματος που συνέβη κατά την εκτέλεση της διαδικασίας.\"\n }\n },\n \"CompletedWithSuccess\": {\n \"Title\": \"Η διαδικασία ολοκληρώθηκε με επιτυχία.\"\n }\n },\n \"SelectColumns\": \"Επιλογή στηλών\",\n \"MoveUp\": \"Επάνω\",\n \"MoveDown\": \"Κάτω\",\n \"AddColumn\": \"Επιλογή\",\n \"RemoveColumn\": \"Αφαίρεση\",\n \"SelectColumnHelp\": \"Επιλέξτε μία ή περισσότερες από τις διαθέσιμες στήλες και πατήστε το πλήκτρο 'Επιλογή' για να τις εμφανίσετε. Χρησιμοποιήστε το πλήκτρο 'Αφαίρεση' για να αφαιρέσετε τις επιλεγμένες στήλες.\",\n \"MoveColumnHelp\": \"Χρησιμοποιήστε τα πλήκτρα 'Επάνω' και 'Κάτω' για να αλλάξετε την σειρά εμφάνισης των στηλών του πίνακα.\",\n \"UnknownColumn\": \"Άγνωστο\",\n \"SelectColumn\": \"Επιλογή\",\n \"ActionLinkColumn\": \"Ενέργειες\"\n },\n \"TrueFalse\": {\n \"long\": {\n \"Yes\": \"Ναι\",\n \"No\": \"Όχι\"\n }\n },\n \"Settings\": {\n \"OperationCompleted\": \"Η διαδικασία ολοκληρώθηκε με επιτυχία.\"\n },\n \"AdvancedSearch\": {\n \"Choose\": \"<Επιλέξτε μια αναζήτηση>\",\n \"ChooseDate\": \"Επιλογή ημερομηνίας\",\n \"SavedSearches\": \"Αποθηκευμένες αναζητήσεις\",\n \"ToggleDropdown\" : \"Εμφάνιση λίστας\",\n \"SaveCurrentSearch\": \"Αποθήκευση αναζήτησης\",\n \"SaveAs\" : \"Αποθήκευση ως\",\n \"Save\" : \"Αποθήκευση\",\n \"Delete\" : \"Διαγραφή\",\n \"More\": \"Περισσότερα\",\n \"Less\": \"Λιγότερα\",\n \"Modal\" : {\n \"Title\" : \"Αποθήκευση κριτηρίων αναζήτησης\",\n \"Help\" : \"Ορίστε έναν τίτλο για τα επιλεγμένα κριτήρια αναζήτησης. Αυτός ο τίτλος θα σας βοηθήσει να τα χρησιμοποιήσετε ξανά στο μέλλον.\",\n \"TitleOnUserError\" : \"Παρακαλώ εισάγετε έναν τίτλο\",\n \"TitleOnListAlreadyCreated\" : \"Το όνομα αυτό χρησιμοποιείται ήδη. Διαλέξτε ένα διαφορετικό.\",\n \"NoListDefined\" : \"Δεν έχει οριστεί το σημείο αποθήκευσης της λίστας\",\n \"EmptyCriteriaList\" : \"Δεν έχετε καθορίσει κανένα κριτήριο για αποθήκευση\",\n \"SaveNameLabel\" : \"Ονομασία λίστας\",\n \"SaveNamePlaceholder\" : \"Εισάγετε έναν τίτλο\",\n \"Accept\" : \"Αποθήκευση\",\n \"Decline\" : \"Απόρριψη\",\n \"Close\" : \"Κλείσιμο\"\n }\n },\n \"AddItems\" : {\n \"SelectItems\": \"Επιλέξτε στοιχεία\",\n }\n}\n","export const TABLES_EN = {\n \"Tables\": {\n \"Export\": \"Export\",\n \"More\": \"More\",\n \"Search\": \"Search\",\n \"SearchPlaceholder\": \"Search...\",\n \"GroupBy\": \"Group by\",\n \"NotDefined\": \"Not defined\",\n \"DataTable\": {\n \"paginate\": {\n \"first\": \"First\",\n \"last\": \"Last\",\n \"next\": \"Next\",\n \"previous\": \"Previous\"\n },\n \"info\": \"Showing _START_ to _END_ of _TOTAL_ entries\",\n \"infoEmpty\": \"Showing 0 to 0 of 0 entries\",\n \"processing\": \"Processing data...\",\n \"emptyTable\": \"There are no matching records.\"\n },\n \"ColumnDisplay\": \"Column Display\",\n \"ColumnDisplayInfo\": \"Επιλέξτε τις στήλες που θέλετε να εμφανίζονται.\",\n \"Save\": \"Save\",\n \"Apply\": \"Apply\",\n \"Cancel\": \"Cancel\",\n \"RecordsPerPage\": \"Items per page\",\n \"PageInfo\": \"{{start}}-{{end}} of {{recordsTotal}}\",\n \"SearchListPlaceHolder\": \"Search in list...\",\n \"Filters\": \"Filters\",\n \"All\": \"All\",\n \"AddItem\": \"Add item\",\n \"EmptyTableTitle\": \"There are no matching records.\",\n \"EmptyTableMessage\": \"Please try to use other keywords or search parameters.\",\n \"RemoveItem\": \"Remove item\",\n \"Items\": \"items\",\n \"Item\": \"item\",\n \"AddItemMessage\": {\n \"title\": \"Add item\",\n \"one\": \"A new item has been added successfully.\",\n \"many\": \"{{value}} new items have been added successfully.\"\n },\n \"RemoveItemMessage\": {\n \"title\": \"Remove items\",\n \"one\": \"An item has been successfully removed.\",\n \"many\": \"{{value}} items have been successfully removed.\"\n },\n \"RemoveItemsTitle\": \"Remove items\",\n \"RemoveItemsMessage\": \"You are going to remove one or more instructor courses. Do you want to proceed?\",\n \"SelectAll\": \"Select all\",\n \"ClearSelection\": \"Clear selection\",\n \"Actions\": {\n \"Label\": \"Edit\",\n \"Start\": \"Start\",\n \"ActionMessage\": {\n \"None\": \"There is no selected item that meets action requirements.\",\n \"One\": \"You have selected one item that meets action requirements.\",\n \"Many\": \"You have selected {{length}} items that meet action requirements.\"\n },\n \"CompletedWithErrors\": {\n \"Title\": \"The operation was completed with errors.\",\n \"Description\": {\n \"One\": \"One item has not been updated due to an error occurred while executing process.\",\n \"Many\": \"{{errors}} items have not been updated due to an error occurred while executing process.\"\n }\n },\n \"CompletedWithSuccess\": {\n \"Title\": \"The operation was completed successfully.\"\n }\n },\n \"SelectColumns\": \"Select columns\",\n \"MoveUp\": \"Move up\",\n \"MoveDown\": \"Move down\",\n \"AddColumn\": \"Add\",\n \"RemoveColumn\": \"Remove\",\n \"SelectColumnHelp\": \"Select one or more columns and press 'Add' button to include them in table. Use 'Remove' button to exclude one or more columns from view.\",\n \"MoveColumnHelp\": \"Use 'Move up' and 'Move down' buttons to change column order.\",\n \"UnknownColumn\": \"Unknown\",\n \"SelectColumn\": \"Select\",\n \"ActionLinkColumn\": \"Actions\"\n },\n \"TrueFalse\": {\n \"long\": {\n \"Yes\": \"Yes\",\n \"No\": \"No\"\n }\n },\n \"Settings\": {\n \"OperationCompleted\": \"The operation was completed successfully.\"\n },\n \"AdvancedSearch\": {\n \"Choose\": \"<Select a saved search>\",\n \"ChooseDate\": \"Choose date\",\n \"SavedSearches\": \"Saved searches\",\n \"ToggleDropdown\" : \"Toggle Dropdown\",\n \"SaveCurrentSearch\": \"Save search\",\n \"SaveAs\" : \"Save as...\",\n \"Save\" : \"Save\",\n \"Delete\" : \"Remove\",\n \"More\": \"More\",\n \"Less\": \"Less\",\n \"Modal\" : {\n \"Title\" : \"Save current search criteria\",\n \"Help\" : \"Please add a title for the given search criteria. This title will help you to use those criteria again in the future.\",\n \"TitleOnUserError\" : \"Please use a valid name for your list\",\n \"TitleOnListAlreadyCreated\" : \"Name already in use. Please choose a different one\",\n \"NoListDefined\" : \"Cannot define user storage key.\",\n \"EmptyCriteriaList\" : \"Please define search criteria before save.\",\n \"SaveNameLabel\" : \"List name\",\n \"SaveNamePlaceholder\" : \"Type a title here...\",\n \"Accept\" : \"Save\",\n \"Decline\" : \"Decline\",\n \"Close\" : \"Close\"\n }\n },\n \"AddItems\" : {\n \"SelectItems\": \"Select items\",\n }\n}\n","import { Action } from '@ngrx/store';\n\nexport enum TableActionTypes {\n LoadFilter = '[Table] Load Filter',\n AppendFilter = '[Table] Append Filter',\n AppendState = '[Table] Append State'\n}\n\nexport class LoadFilter implements Action {\n readonly type = TableActionTypes.LoadFilter;\n constructor(public readonly id: string) {}\n}\n\nexport class AppendFilter implements Action {\n readonly type = TableActionTypes.AppendFilter;\n constructor(public readonly id: string, public readonly filter: any) {}\n}\n\nexport class AppendState implements Action {\n readonly type = TableActionTypes.AppendState;\n constructor(public readonly id: string, public readonly data: any) {}\n}\n\nexport type TableActions = LoadFilter | AppendFilter | AppendState;\n","import {\n ActionReducerMap,\n createFeatureSelector,\n createSelector,\n} from '@ngrx/store';\nimport { cloneDeep } from 'lodash';\nimport { TableActions, TableActionTypes } from '../actions/table.actions';\n\nexport interface TableState {\n filter?: any;\n order?: any;\n table?: any;\n}\n\nexport const initialState = {\n};\n\nexport const tableInitialState: TableState = {\n filter: {},\n order: []\n}\n\nexport function tableReducer(state = initialState, action: TableActions): { [id: string]: TableState; } {\n switch (action.type) {\n\n case TableActionTypes.LoadFilter:\n return state[action.id];\n case TableActionTypes.AppendFilter:\n state[action.id] = {\n ...state[action.id],\n filter: cloneDeep(action.filter)\n };\n return state;\n \n case TableActionTypes.AppendState:\n state[action.id] = {\n ...state[action.id],\n table: action.data\n };\n return state;\n default:\n return state;\n }\n}\n\nexport interface NgxTablesState {\n tables: {\n [id: string]: TableState;\n };\n}\n\nexport const tableReducers: ActionReducerMap<NgxTablesState> = {\n tables: tableReducer,\n};\n\nexport const featureName = 'tables';\n\nexport const getTablesState = createFeatureSelector(featureName);\n\nexport const selectTable = createSelector(\n getTablesState,\n (state: NgxTablesState, props: { id: string }) => {\n return state.tables[props.id];\n }\n);","import {\n Directive, Optional, Input, OnInit,\n} from '@angular/core';\nimport { select, Store } from '@ngrx/store';\nimport { NgxTablesState } from '../reducers';\nimport { AdvancedTableComponent } from '../components/advanced-table/advanced-table.component';\nimport * as fromTables from '../reducers';\nimport { first } from 'rxjs/operators';\nimport { AppendState } from '../actions/table.actions';\nimport { cloneDeep, values } from 'lodash';\n\n@Directive(\n {\n // tslint:disable-next-line: directive-selector\n selector: '[tableState]',\n },\n)\nexport class AdvancedTableState implements OnInit {\n\n @Input() tableState: string;\n\n constructor(private table: AdvancedTableComponent,\n @Optional() private store: Store<NgxTablesState>) {\n \n }\n ngOnInit(): void {\n if (this.store == null) {\n return;\n }\n this.table.stateSave = true;\n this.table.stateLoadCallback = (settings, callback) => {\n this.store.pipe(select(fromTables.selectTable, { id: this.tableState }), first()).subscribe((state: any) => {\n return callback(state && state.table);\n });\n }\n let firstDraw = true;\n this.table.draw.subscribe(() => {\n if (firstDraw === false) {\n return;\n }\n if (this.table.dataTable == null) {\n return;\n }\n firstDraw = false;\n const loadeStateSettings: {\n oSavedState?: {\n ColReorder?: number[];\n scroller: {\n topRow: number,\n baseScrollTop: number,\n baseRowTop: number\n }\n }\n } = this.table.dataTable.settings()[0];\n const scrollerSettings = loadeStateSettings.oSavedState &&\n loadeStateSettings.oSavedState.scroller;\n if (scrollerSettings && scrollerSettings.topRow) {\n const scroller = this.table.dataTable.scroller();\n scroller.scrollToRow(scrollerSettings.topRow, true);\n }\n });\n this.table.stateSaveCallback = (settings, data) => {\n this.store.dispatch(new AppendState(this.tableState, data));\n }\n }\n}","import {\n Directive, Optional, Input, OnInit, OnDestroy\n } from '@angular/core';\nimport { select, Store } from '@ngrx/store';\nimport { AppendFilter } from '../actions/table.actions';\nimport { AdvancedTableSearchComponent } from '../components/advanced-table/advanced-table-search.component';\nimport { NgxTablesState, selectTable } from '../reducers';\nimport { first } from 'rxjs/operators';\nimport { AdvancedTableState } from './advance-table-state.directive';\nimport { Subscription } from 'rxjs';\n\n export class AdvancedTableSearchComponentNotNull extends Error {\n constructor() {\n super('Advanced table search component cannot be empty at this context.');\n }\n }\n \n @Directive(\n {\n // tslint:disable-next-line: directive-selector\n selector: '[searchState]',\n },\n )\n export class AdvancedSearchState implements OnInit, OnDestroy {\n\n @Input() searchState: string;\n private filterChangeSubscription: Subscription;\n private tableInitSubscription: Subscription;\n \n constructor(protected search: AdvancedTableSearchComponent,\n @Optional() protected store: Store<NgxTablesState>) {\n }\n ngOnInit(): void {\n if (this.store == null) {\n return;\n }\n if (this.search == null) {\n throw new AdvancedTableSearchComponentNotNull();\n }\n if (this.search.table) {\n // set auto load to false\n this.search.table.autoLoad = false;\n // handle filtering\n this.filterChangeSubscription = this.search.filterChange.subscribe((filter) => {\n this.onSearchFilter(filter);\n });\n // apply table state\n this.applyTableState();\n // handle table init\n this.tableInitSubscription = this.search.table.init.subscribe(() => {\n return this.onTableInit();\n });\n }\n }\n\n protected applyTableState() {\n // handle table state (via directive)\n const tableState = new AdvancedTableState(this.search.table, this.store);\n tableState.tableState = this.searchState;\n tableState.ngOnInit();\n }\n\n public onTableInit() {\n this.store.pipe(select(selectTable, { id: this.searchState }), first()).subscribe((state) => {\n // use order\n if (state) {\n if (state.order && state.order.length) {\n this.search.table.dataTable.order(state.order);\n }\n // use text search\n if (state.filter && state.filter.q) {\n this.search.text = state.filter.q;\n this.search.collapsed = true;\n return this.search.table.search(this.search.text);\n }\n // use predefined search \n if (state.filter && state.filter.s) {\n this.search.selectedList = this.search.userSearchList.find((item: { name: string }) => {\n return item.name === state.filter.s;\n });\n return this.search.search();\n }\n if (state.filter) {\n if (Object.keys(state.filter).length) {\n // set collapsed to false (advanced search)\n this.search.collapsed = false;\n this.search.filter = state.filter;\n return this.search.search();\n }\n }\n // ensure empty filter at this moment\n // because search() function triggers a store dispatch\n this.search.filter = {};\n return this.search.search();\n }\n });\n }\n \n private onSearchFilter(filter: any) {\n this.store.dispatch(new AppendFilter(this.searchState, filter));\n }\n\n ngOnDestroy(): void {\n if (this.filterChangeSubscription) {\n this.filterChangeSubscription.unsubscribe();\n }\n if (this.tableInitSubscription) {\n this.tableInitSubscription.unsubscribe();\n }\n }\n}","import { Directive, OnDestroy, OnInit, Optional } from \"@angular/core\";\nimport { NavigationEnd, NavigationStart, Router } from \"@angular/router\";\nimport { Store } from \"@ngrx/store\";\nimport { Subscription } from \"rxjs\";\nimport { filter } from \"rxjs/operators\";\nimport { AdvancedTableSearchComponent } from \"../components/advanced-table/advanced-table-search.component\";\nimport { NgxTablesState } from \"../reducers\";\nimport { AdvancedSearchState } from \"./advance-search-state.directive\";\n\n@Directive({\n\t// tslint:disable-next-line: directive-selector\n\tselector: \"[routerSearchState]\",\n})\nexport class AdvancedSearchRouterState\n\textends AdvancedSearchState\n\timplements OnDestroy, OnInit\n{\n\tprivate _routerSubscription: Subscription;\n\tprivate _enteringState: boolean = true;\n\tprivate _applyState: boolean = false;\n\n\tconstructor(\n\t\tprotected search: AdvancedTableSearchComponent,\n\t\t@Optional() protected store: Store<NgxTablesState>,\n\t\tprivate readonly _router: Router\n\t) {\n\t\t// call super constructor\n\t\tsuper(search, store);\n\t\t// set search state dynamically according to route\n\t\tthis._routerSubscription = this._router.events\n\t\t\t.pipe(\n\t\t\t\tfilter(\n\t\t\t\t\t(event) =>\n\t\t\t\t\t\tevent instanceof NavigationStart || event instanceof NavigationEnd\n\t\t\t\t)\n\t\t\t)\n\t\t\t.subscribe((event: NavigationStart | NavigationEnd) => {\n\t\t\t\t// capture urls regarding tab changing while the component is active\n\t\t\t\tif (event instanceof NavigationStart && !this._enteringState) {\n\t\t\t\t\t// set search state\n\t\t\t\t\tthis.searchState = event.url;\n\t\t\t\t\t// toogle applyState\n\t\t\t\t\tthis._applyState = true;\n\t\t\t\t}\n\t\t\t\t// capture url of the first activation of the component (e.g. coming from another route)\n\t\t\t\tif (event instanceof NavigationEnd && this._enteringState) {\n\t\t\t\t\t// set search state\n\t\t\t\t\tthis.searchState = event.urlAfterRedirects;\n\t\t\t\t\t// toggle enteringState\n\t\t\t\t\tthis._enteringState = false;\n\t\t\t\t}\n\t\t\t\tif (this._applyState) {\n\t\t\t\t\t// apply new table state\n\t\t\t\t\tsuper.applyTableState();\n\t\t\t\t\tthis._applyState = false;\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tngOnDestroy(): void {\n\t\t// destroy own subscriptions\n\t\tif (this._routerSubscription) {\n\t\t\tthis._routerSubscription.unsubscribe();\n\t\t}\n\t\t// destroy parent subscriptions\n\t\treturn super.ngOnDestroy();\n\t}\n}\n","import {NgModule, OnInit, CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {AdvancedTableComponent, COLUMN_FORMATTERS} from './components/advanced-table/advanced-table.component';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {AdvancedTableSearchComponent} from './components/advanced-table/advanced-table-search.component';\nimport { DatePipe } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport {BtnExpDirective} from './directives/btnexp.directive';\nimport {AdvancedTableSettingsComponent} from './components/advanced-table/advanced-table-settings.component';\nimport {SharedModule, TemplatePipe} from '@universis/common';\nimport { AdvancedTableModalBaseComponent } from './components/advanced-table-modal/advanced-table-modal-base.component';\nimport {RouterModalModule} from '@universis/common/routing';\nimport { AdvancedSearchFormComponent } from './components/advanced-search-form/advanced-search-form.component';\nimport {AdvancedFormsModule} from '@universis/forms';\nimport {FormioModule} from 'angular-formio';\nimport { AdvancedListComponent } from './components/advanced-list/advanced-list.component';\nimport {RouterModule} from '@angular/router';\nimport {\n AdvancedSearchConfigurationResolver,\n AdvancedTableConfigurationResolver\n} from './components/advanced-table/advanced-table-resolvers';\nimport {AdvancedRowActionComponent} from './components/advanced-row-action/advanced-row-action.component';\nimport {FORMATTERS} from './components/advanced-table/advanced-table.formatters.interface';\n\nimport {TABLES_EL} from './i18n/tables.el';\nimport {TABLES_EN} from './i18n/tables.en';\nimport { TableSimpleHeaderComponent, SimpleHeaderToolsComponent } from './components/table-simple-header/table-simple-header.component';\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { ProgressbarModule } from 'ngx-bootstrap/progressbar';\nimport { AdvancedSelectComponent } from './components/advanced-select/advanced-select.component';\nimport { AdvancedSelectService } from './components/advanced-select/advanced-select.service';\nimport { AdvancedTableEditorDirective } from './directives/advanced-table-editor.directive';\nimport {AdvancedAggregatorComponent} from \"./components/advanced-aggregator/advanced-aggregator.component\";\nimport {AdvancedAggregatorListComponent} from \"./components/advanced-aggregator-list/advanced-aggregator-list.component\";\nimport {AdvancedAggregatorService} from './services/advanced-aggregator/advanced-aggregator.service';\nimport {AdvancedAggregatorPipe} from './pipes/advanced-aggregator.pipe';\nimport {GroupByPipe, NgPipesModule} from 'ngx-pipes';\nimport {ParseTitlePipe} from './pipes/advansed-aggregator-list-title-parse.pipe';\nimport {AddItemsComponent} from \"./components/add-items/add-items.component\";\nimport { AdvancedSearchState } from './directives/advance-search-state.directive';\nimport { AdvancedTableState } from './directives/advance-table-state.directive';\nimport { AdvancedSearchRouterState } from './directives/advanced-search-router-state.directive';\nimport { AdvancedTableSearchBaseComponent } from './components/advanced-table/advanced-table-search-base';\nimport { ColumnSelectorComponent } from './components/column-selector/column-selector.component';\nimport { ColumnSelectorService } from './components/column-selector/column-selector.service';\n\n@NgModule({\n imports: [\n CommonModule,\n SharedModule,\n TranslateModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n RouterModalModule,\n FormioModule,\n AdvancedFormsModule,\n SharedModule,\n ModalModule,\n ProgressbarModule,\n NgPipesModule\n ],\n providers: [DatePipe, TemplatePipe,\n {\n provide: COLUMN_FORMATTERS,\n useValue: FORMATTERS\n },\n\n AdvancedTableConfigurationResolver,\n AdvancedSearchConfigurationResolver,\n AdvancedSelectService,\n AdvancedAggregatorService,\n ColumnSelectorService,\n GroupByPipe\n ],\n declarations: [\n AdvancedTableComponent,\n AdvancedTableSearchBaseComponent,\n AdvancedTableSearchComponent,\n BtnExpDirective,\n AdvancedTableSettingsComponent,\n AdvancedTableModalBaseComponent,\n AdvancedSearchFormComponent,\n AdvancedListComponent,\n AdvancedRowActionComponent,\n TableSimpleHeaderComponent,\n SimpleHeaderToolsComponent,\n AdvancedSelectComponent,\n AdvancedTableEditorDirective,\n AdvancedAggregatorComponent,\n AdvancedAggregatorListComponent,\n AdvancedAggregatorPipe,\n ParseTitlePipe,\n AddItemsComponent,\n AdvancedSearchState,\n AdvancedTableState,\n AdvancedSearchRouterState,\n ColumnSelectorComponent\n ],\n exports: [\n AdvancedTableComponent,\n AdvancedTableSearchComponent,\n BtnExpDirective,\n AdvancedTableSettingsComponent,\n AdvancedSearchFormComponent,\n AdvancedListComponent,\n AdvancedRowActionComponent,\n TableSimpleHeaderComponent,\n SimpleHeaderToolsComponent,\n AdvancedSelectComponent,\n AdvancedTableEditorDirective,\n AdvancedAggregatorComponent,\n AdvancedAggregatorListComponent,\n AddItemsComponent,\n AdvancedSearchState,\n AdvancedTableState,\n AdvancedSearchRouterState,\n ColumnSelectorComponent\n ],\n entryComponents: [\n AdvancedTableModalBaseComponent,\n AdvancedTableSettingsComponent,\n AdvancedRowActionComponent,\n AdvancedSelectComponent,\n AddItemsComponent,\n ColumnSelectorComponent\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class TablesModule implements OnInit {\n constructor(private _translateService: TranslateService) {\n this.ngOnInit().catch(err => {\n console.error('An error occurred while loading tables module');\n console.error(err);\n });\n }\n\n async ngOnInit() {\n this._translateService.setTranslation('en', TABLES_EN, true);\n this._translateService.setTranslation('el', TABLES_EL, true);\n }\n\n}\n","/*\n * Public API Surface of tables\n */\nexport * from './lib/components/advanced-list/advanced-list.component';\nexport * from './lib/components/advanced-row-action/advanced-row-action.component';\nexport * from './lib/components/advanced-search-form/advanced-search-form.component';\n\nexport * from './lib/components/advanced-select/advanced-select.component';\nexport * from './lib/components/advanced-select/advanced-select.service';\n\nexport * from './lib/components/advanced-table/advanced-table.interfaces';\nexport * from './lib/components/advanced-table/advanced-table-resolvers';\nexport * from './lib/components/advanced-table/advanced-table.formatters';\nexport * from './lib/components/advanced-table/advanced-table.component';\nexport * from './lib/components/advanced-table/advanced-table-settings.component';\nexport * from './lib/components/advanced-table/advanced-table-search-base';\nexport * from './lib/components/advanced-table/advanced-table-search.component';\nexport * from './lib/components/advanced-table/advanced-table.formatters.interface';\nexport * from './lib/components/advanced-table/advanced-filter-value-provider.service';\n\nexport * from './lib/components/advanced-table-modal/advanced-table-modal-base.component';\nexport * from './lib/components/table-simple-header/table-simple-header.component';\n\nexport * from './lib/directives/advanced-table-editor.directive';\nexport * from './lib/directives/btnexp.directive';\nexport * from './lib/components/advanced-aggregator/advanced-aggregator.component';\nexport * from './lib/components/advanced-aggregator-list/advanced-aggregator-list.component';\nexport * from './lib/components/add-items/add-items.component';\nexport * from './lib/pipes/advanced-aggregator.pipe';\nexport * from './lib/pipes/advansed-aggregator-list-title-parse.pipe';\nexport * from './lib/services/advanced-aggregator/advanced-aggregator.service';\n\nexport * from './lib/advanced-aggregator';\nexport * from './lib/tables.module';\nexport * from './lib/tables.activated-table.service';\n\nexport * from './lib/components/column-selector/column-selector.service';\nexport * from './lib/components/column-selector/column-selector.component';\n\nexport * from './lib/reducers/index';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {AdvancedSearchState as ɵa} from './lib/directives/advance-search-state.directive';\nexport {AdvancedTableState as ɵc} from './lib/directives/advance-table-state.directive';\nexport {AdvancedSearchRouterState as ɵd} from './lib/directives/advanced-search-router-state.directive';\nexport {NgxTablesState as ɵb} from './lib/reducers';"],"names":["template","ActivatedRoute","Router","tslib_1.__extends","at","TranslateService","tslib_1.__values","DatePipe","ISO6391.getNativeName","TemplatePipe","Injectable","EventEmitter","FormControl","Component","ViewEncapsulation","BsModalRef","ChangeDetectorRef","Input","ViewChild","RouterModalOkCancel","ModalService","InjectionToken","BehaviorSubject","TranslatePipe","ClientDataQueryable","AngularDataContext","Inject","Injector","ElementRef","LoadingService","HttpClient","Output","ResponseError","DIALOG_BUTTONS","ErrorService","ToastService","UserActivityService","AppEventService","ServiceUrlPreProcessor","TranslatePreProcessor","NavigationStart","FormArray","BsModalService","UserStorageService","FormBuilder","TextUtils","Directive","ConfigurationService","HostListener","ChangeDetectionStrategy","Pipe","cloneDeep","createFeatureSelector","createSelector","store","select","fromTables.selectTable","first","Store","Optional","filter","NavigationEnd","NgModule","CommonModule","SharedModule","TranslateModule","FormsModule","ReactiveFormsModule","RouterModule","RouterModalModule","FormioModule","AdvancedFormsModule","ModalModule","ProgressbarModule","NgPipesModule","GroupByPipe","CUSTOM_ELEMENTS_SCHEMA"],"mappings":";;;;;;IAAA;;;;;;;;;;;;;;IAcA;IAEA,IAAI,aAAa,GAAG,UAAS,CAAC,EAAE,CAAC;QAC7B,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;oBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC;AAEF,uBAA0B,CAAC,EAAE,CAAC;QAC1B,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,gBAAgB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC;AAED,IAAO,IAAI,QAAQ,GAAG;QAClB,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,kBAAkB,CAAC;YAC3C,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACjD,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACjB,KAAK,IAAI,CAAC,IAAI,CAAC;oBAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;wBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAChF;YACD,OAAO,CAAC,CAAC;SACZ,CAAA;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC,CAAA;AAED,uBA2B0B,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS;QACvD,eAAe,KAAK,IAAI,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QAC5G,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM;YACrD,mBAAmB,KAAK,IAAI,IAAI;gBAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aAAE;YAAC,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC;aAAE,EAAE;YAC3F,kBAAkB,KAAK,IAAI,IAAI;gBAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;aAAE;YAAC,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC;aAAE,EAAE;YAC9F,cAAc,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;YAC9G,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;SACzE,CAAC,CAAC;IACP,CAAC;AAED,yBAA4B,OAAO,EAAE,IAAI;QACrC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,cAAa,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjH,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,cAAa,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACzJ,cAAc,CAAC,IAAI,OAAO,UAAU,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;QAClE,cAAc,EAAE;YACZ,IAAI,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;YAC9D,OAAO,CAAC;gBAAE,IAAI;oBACV,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI;wBAAE,OAAO,CAAC,CAAC;oBAC7J,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;wBAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;oBACxC,QAAQ,EAAE,CAAC,CAAC,CAAC;wBACT,KAAK,CAAC,CAAC;wBAAC,KAAK,CAAC;4BAAE,CAAC,GAAG,EAAE,CAAC;4BAAC,MAAM;wBAC9B,KAAK,CAAC;4BAAE,CAAC,CAAC,KAAK,EAAE,CAAC;4BAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;wBACxD,KAAK,CAAC;4BAAE,CAAC,CAAC,KAAK,EAAE,CAAC;4BAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;4BAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;4BAAC,SAAS;wBACjD,KAAK,CAAC;4BAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;4BAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;4BAAC,SAAS;wBACjD;4BACI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;gCAAE,CAAC,GAAG,CAAC,CAAC;gCAAC,SAAS;6BAAE;4BAC5G,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gCAAE,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gCAAC,MAAM;6BAAE;4BACtF,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gCAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gCAAC,CAAC,GAAG,EAAE,CAAC;gCAAC,MAAM;6BAAE;4BACrE,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gCAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gCAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gCAAC,MAAM;6BAAE;4BACnE,IAAI,CAAC,CAAC,CAAC,CAAC;gCAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;4BACtB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;4BAAC,SAAS;qBAC9B;oBACD,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;iBAC9B;gBAAC,OAAO,CAAC,EAAE;oBAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC;iBAAE;wBAAS;oBAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBAAE;YAC1D,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SACpF;IACL,CAAC;AAED,sBASyB,CAAC;QACtB,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC9E,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO;gBAC1C,IAAI,EAAE;oBACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM;wBAAE,CAAC,GAAG,KAAK,CAAC,CAAC;oBACnC,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBAC3C;aACJ,CAAC;QACF,MAAM,IAAI,SAAS,CAAC,CAAC,GAAG,yBAAyB,GAAG,iCAAiC,CAAC,CAAC;IAC3F,CAAC;AAED,oBAAuB,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QACjB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI;YACA,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI;gBAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SAC9E;QACD,OAAO,KAAK,EAAE;YAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;SAAE;gBAC/B;YACJ,IAAI;gBACA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACpD;oBACO;gBAAE,IAAI,CAAC;oBAAE,MAAM,CAAC,CAAC,KAAK,CAAC;aAAE;SACpC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;AAED;QACI,KAAK,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE;YAC9C,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO,EAAE,CAAC;IACd,CAAC;;;QC3ID;SAoGC;QAlFe,gCAAQ,GAAtB,UAAuB,IAAY;YACjC,IAAI,MAAM,GAAG,uBAAuB,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7D,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;gBAChC,OAAO,MAAM,CAAC;aACf;YACD,MAAM,GAAGA,eAAQ,CAAC,IAAI,CAAC,CAAC;YACxB,uBAAuB,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACxD,OAAO,MAAM,CAAC;SACf;QAIS,+CAAa,GAAvB,UAAwB,IAAS,EAAE,OAAiE;YAClG,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBACnC,IAAM,cAAc,GAAmB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACC,mBAAc,CAAC,CAAC;gBACzE,IAAM,MAAM,GAAW,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACC,WAAM,CAAC,CAAC;gBACjD,IAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAC,OAAO;oBAC5C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;wBAC/B,OAAO,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;qBACxD;oBACD,IAAI,OAAO,CAAC,OAAO,EAAE;wBACnB,IAAM,gBAAc,GAAG,EAAE,CAAC;wBAC1B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG;4BACvC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;gCAC9D,IAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gCACpC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oCACzB,MAAM,CAAC,cAAc,CAAC,gBAAc,EAAE,GAAG,EAAE;wCACzC,UAAU,EAAE,IAAI;wCAChB,YAAY,EAAE,IAAI;wCAClB,QAAQ,EAAE,IAAI;wCACd,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,UAAC,CAAC;4CAClB,OAAO,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;yCAClD,CAAC;qCACH,CAAC,CAAC;iCACJ;qCAAM;oCACL,MAAM,CAAC,cAAc,CAAC,gBAAc,EAAE,GAAG,EAAE;wCACzC,UAAU,EAAE,IAAI;wCAChB,YAAY,EAAE,IAAI;wCAClB,QAAQ,EAAE,IAAI;wCACd,KAAK,EAAE,MAAM;qCACd,CAAC,CAAC;iCACJ;6BACF;yBACF,CAAC,CAAC;wBACH,OAAO;4BACL,OAAO,EAAE,gBAAc;yBACxB,CAAC;qBACH;oBACD,OAAO,OAAO,CAAC;iBAChB,CAAC,CAAC;gBACH,IAAM,aAAW,GAAG,EAAE,CAAC;gBACvB,IAAI,UAAU,GAAG,IAAI,CAAC;gBACtB,IAAI,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE;oBACpE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,UAAC,GAAG;wBACxD,IAAM,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;wBACvD,aAAW,CAAC,GAAG,CAAC,GAAG,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;qBACjE,CAAC,CAAC;iBACJ;gBACD,IAAI,OAAO,CAAC,gBAAgB,IAAI,OAAO,OAAO,CAAC,gBAAgB,CAAC,UAAU,KAAK,WAAW,EAAE;oBAC1F,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC;iBAClD;gBACD,IAAI,kBAAkB,GAAG,KAAK,CAAC;gBAC/B,IAAI,OAAO,CAAC,gBAAgB,IAAI,OAAO,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,KAAK,WAAW,EAAE;oBAClG,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;iBAClE;gBAED,IAAI,QAAQ,SAAQ,CAAC;gBACrB,IAAI,OAAO,CAAC,gBAAgB,IAAI,OAAO,OAAO,CAAC,gBAAgB,CAAC,QAAQ,KAAK,WAAW,EAAE;oBACxF,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC;iBAC9C;gBAED,OAAO,MAAM,CAAC,aAAa,CAAC,QAAQ,EAClC;oBACE,QAAQ,UAAA;oBACR,UAAU,EAAE,cAAc;oBAC1B,WAAW,eAAA;oBACX,UAAU,YAAA;oBACV,kBAAkB,oBAAA;iBACnB,CACF,CAAC;aACH;SACF;QAjGa,qCAAa,GAAG,IAAI,GAAG,EAAiC,CAAC;QAkGzE,8BAAC;KApGD,IAoGC;;QAM4CC,2CAAuB;QASlE;mBACE,iBAAO;SACR;QAVM,wCAAM,GAAb,UAAc,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;;YAEjC,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjD,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;gBACzB,OAAOC,SAAE,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;aACjD;YACD,OAAO,IAAI,CAAC;SACb;QAIH,8BAAC;IAAD,CAZA,CAA6C,uBAAuB,GAYnE;;QAEoCD,mCAAuB;QA8B1D;mBACE,iBAAO;SACR;QA/BM,gCAAM,GAAb,UAAc,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;YACjC,IAAI,IAAI,IAAI,IAAI,EAAE;gBAChB,OAAO,EAAE,CAAC;aACX;;YAED,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;YAEjD,IAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;gBAClC,WAAW,EAAE,iBAAiB;aAC/B,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;;YAEvB,IAAI,UAAkB,CAAC;YACvB,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IAAI,aAAa,CAAC,UAAU,EAAE;gBAC5B,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACE,qBAAgB,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;aACpF;iBAAM;gBACL,UAAU,GAAG,aAAa,CAAC,aAAa,CAAC;aAC1C;YACD,IAAI,aAAa,CAAC,WAAW,EAAE;gBAC7B,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,qBAAgB,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;aACtF;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;gBAC9C,IAAI,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC7D,OAAO,gBAAa,aAAa,CAAC,WAAW,mBAAY,WAAW,mBAAY,UAAU,WAAK,UAAU,SAAM,CAAC;aACjH;;YAED,IAAM,IAAI,GAAG,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC;YACtE,OAAO,gBAAa,aAAa,CAAC,WAAW,mBAAY,WAAW,kBAAW,IAAI,WAAK,UAAU,SAAM,CAAC;SAC1G;QAIH,sBAAC;IAAD,CAjCA,CAAqC,uBAAuB,GAiC3D;;QAEkCF,iCAAuB;QASxD;mBACE,iBAAO;SACR;QAVM,8BAAM,GAAb,UAAc,IAAS,EAAE,IAAY,EAAE,GAAQ,EAAE,IAAS;;YAExD,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjD,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;gBACzB,OAAO,gBAAa,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,WAAK,IAAI,SAAM,CAAC;aAC9F;YACD,OAAO,IAAI,CAAC;SACb;QAIH,oBAAC;IAAD,CAZA,CAAmC,uBAAuB,GAYzD;;QAEwCA,uCAAuB;QA2C9D;mBACE,iBAAO;SACR;QA3CM,oCAAM,GAAb,UAAc,IAAS,EAAE,IAAY,EAAE,GAAQ,EAAE,IAAS;YAA1D,iBAuCC;;;YArCC,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEjD,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;gBACzB,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;gBACnC,IAAI,KAAK,GAAG,CAAC,CAAC;;oBACd,KAAqB,IAAA,YAAAG,SAAA,OAAO,CAAA,gCAAA,qDAAE;wBAAzB,IAAM,MAAM,oBAAA;wBACf,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;4BACpB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,WAAS,KAAO;yBACtC,CAAC,CAAC;wBACH,KAAK,IAAI,CAAC,CAAC;qBACZ;;;;;;;;;;;;;;;;gBAED,OAAO,oDAAkD,IAAI,gFACnB,IAAI,2RAIiC,IAAI,kCAClE,OAAO,CAAC,GAAG,CAAC,UAAC,CAAC;oBAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE;wBACxB,OAAO,wCAAsC,CAAC;qBAC/C;oBACD,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE;wBAC/C,IAAM,OAAO,GAAG,KAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;wBACzD,OAAO,mBAAiB,CAAC,CAAC,IAAI,yCAAiC,OAAO,CAAC,QAAQ,EAAE,yCAC7D,KAAI,CAAC,QAAQ,CAAC,GAAG,CAACD,qBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,qCACnD,CAAC;qBACvB;oBACD,OAAO,mBAAiB,CAAC,CAAC,IAAI,yCAAiC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,uCACxF,KAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,qBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,mCACnD,CAAC;iBACvB,CAAC;qBACG,IAAI,CAAC,EAAE,CAAC,yDAEI,CAAC;aACnB;YACD,OAAO,IAAI,CAAC;SACb;QAKM,yCAAW,GAAlB,UAAmB,IAAS,EAAE,QAAa,EAAE,OAAY,EAAE,QAAgB,EAAE,QAAgB;;SAE5F;QACH,0BAAC;IAAD,CAjDA,CAAyC,uBAAuB,GAiD/D;;QAE0CF,yCAAuB;QA2DhE;mBACE,iBAAO;SACR;QA3DM,sCAAM,GAAb,UAAc,IAAS,EAAE,IAAY,EAAE,GAAQ,EAAE,IAAS;YAA1D,iBAuDC;;;YArDC,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEjD,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;gBACzB,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;gBACnC,IAAI,KAAK,GAAG,CAAC,CAAC;;oBACd,KAAqB,IAAA,YAAAG,SAAA,OAAO,CAAA,gCAAA,qDAAE;wBAAzB,IAAM,MAAM,oBAAA;wBACf,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;4BACpB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,WAAS,KAAO;yBACtC,CAAC,CAAC;wBACH,KAAK,IAAI,CAAC,CAAC;qBACZ;;;;;;;;;;;;;;;gBACD,IAAI,UAAU,SAAQ,CAAC;gBACvB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE;;oBAEvD,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;;wBAEhD,UAAU,GAAG,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;qBACnF;yBAAM;;wBAEL,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACD,qBAAgB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;qBACzF;iBACF;gBACD,IAAI,WAAW,SAAQ,CAAC;gBACxB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;oBACxD,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,qBAAgB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;iBACrG;gBACD,IAAM,WAAW,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,KAAK,eAAe,CAAC;;gBAE9F,OAAO,oDAAkD,IAAI,2CACnC,WAAW,8DAAmD,WAAW,0DAC1D,IAAI,2GAC3B,UAAU,0HAEmD,IAAI,kCAClE,OAAO,CAAC,GAAG,CAAC,UAAC,CAAC;oBAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE;wBACxB,OAAO,wCAAsC,CAAC;qBAC/C;oBACD,IAAI,CAAC,CAAC,QAAQ,EAAE;wBACd,IAAM,OAAO,GAAG,KAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;wBAC3C,OAAO,uCAAkC,OAAO,CAAC,QAAQ,EAAE,yCACvC,KAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,qBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,qCACnD,CAAC;qBACvB;oBACD,OAAO,uCAAkC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,uCAClE,KAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,qBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,mCACnD,CAAC;iBACvB,CAAC;qBACG,IAAI,CAAC,EAAE,CAAC,yDAEI,CAAC;aACnB;YACD,OAAO,IAAI,CAAC;SACb;QAKM,2CAAW,GAAlB,UAAmB,IAAS,EAAE,QAAa,EAAE,OAAY,EAAE,QAAgB,EAAE,QAAgB;;SAE5F;QACH,4BAAC;IAAD,CAjEA,CAA2C,uBAAuB,GAiEjE;;QAE+CF,8CAAuB;QAyDrE;mBACE,iBAAO;SACR;QAzDM,2CAAM,GAAb,UAAc,IAAS,EAAE,IAAY,EAAE,GAAQ,EAAE,IAAS;YAA1D,iBAqDC;;;YAnDC,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEjD,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;gBACzB,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;gBACnC,IAAI,KAAK,GAAG,CAAC,CAAC;;oBACd,KAAqB,IAAA,YAAAG,SAAA,OAAO,CAAA,gCAAA,qDAAE;wBAAzB,IAAM,MAAM,oBAAA;wBACf,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;4BACpB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,WAAS,KAAO;yBACtC,CAAC,CAAC;wBACH,KAAK,IAAI,CAAC,CAAC;qBACZ;;;;;;;;;;;;;;;gBACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;oBACxB,OAAO;iBACR;gBACD,IAAM,WAAW,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,KAAK,eAAe,CAAC;;gBAE9F,IAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,iBAAiB,SAAQ,CAAC;gBAC9B,IAAI,aAAa,IAAI,aAAa,CAAC,QAAQ,EAAE;oBAC3C,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC;iBACvE;qBAAM;oBACL,iBAAiB,GAAG,uBAAuB,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;iBAC/E;gBACD,OAAO,+EACiC,WAAW,kBAAW,iBAAiB,mCAC7D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACD,qBAAgB,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,wFAErC,WAAW,gMAEhB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,qBAAgB,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,sIAEvB,IAAI,kCAClE,OAAO,CAAC,GAAG,CAAC,UAAC,CAAC;oBAC7B,IAAI,CAAC,CAAC,KAAK,KAAK,GAAG,EAAE;wBACnB,OAAO,wCAAsC,CAAC;qBAC/C;oBACD,IAAI,CAAC,CAAC,QAAQ,EAAE;wBACd,IAAM,OAAO,GAAG,KAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;wBAC3C,OAAO,uCAAkC,OAAO,CAAC,QAAQ,EAAE,yCACvC,KAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,qBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,qCACnD,CAAC;qBACvB;oBACD,OAAO,uCAAkC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,uCAClE,KAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,qBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,mCACnD,CAAC;iBACvB,CAAC;qBACG,IAAI,CAAC,EAAE,CAAC,yDAEI,CAAC;aACnB;YACD,OAAO,IAAI,CAAC;SACb;QAKM,gDAAW,GAAlB,UAAmB,IAAS,EAAE,QAAa,EAAE,OAAY,EAAE,QAAgB,EAAE,QAAgB;;SAE5F;QACH,iCAAC;IAAD,CA/DA,CAAgD,uBAAuB,GA+DtE;;QAEuCF,sCAAuB;QAW7D;mBACE,iBAAO;SACR;QAZM,mCAAM,GAAb,UAAc,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;;YAEjC,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjD,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;gBACzB,IAAM,IAAI,GAAG,yEACV,IAAI,CAAC,GAAG,4BAAqB,IAAI,CAAC,GAAG,sBAAkB,CAAC;gBAC3D,OAAO,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;aACpD;YACD,OAAO,IAAI,CAAC;SACb;QAIH,yBAAC;IAAD,CAdA,CAAwC,uBAAuB,GAc9D;;QAEsCA,qCAAuB;QAS5D;mBACE,iBAAO;SACR;QAVM,kCAAM,GAAb,UAAc,IAAS,EAAE,IAAY,EAAE,GAAQ,EAAE,IAAS;;YAExD,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjD,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;gBACzB,OAAO,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC;aACjE;YACD,OAAO,IAAI,CAAC;SACb;QAIH,wBAAC;IAAD,CAZA,CAAuC,uBAAuB,GAY7D;;QAEuCA,sCAAuB;QAO7D;mBACE,iBAAO;SACR;QAPM,mCAAM,GAAb,UAAc,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;YACjC,OAAO,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACE,qBAAgB,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC;gBAC7E,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,qBAAgB,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;SACpE;QAKH,yBAAC;IAAD,CAVA,CAAwC,uBAAuB,GAU9D;;QAMyCF,wCAAuB;QAY/D;mBACE,iBAAO;SACR;QAbM,qCAAM,GAAb,UAAc,IAAS,EAAE,IAAY,EAAE,GAAQ,EAAE,IAAS;;YAExD,IAAM,MAAM,GAAiC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/E,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE;gBAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACE,qBAAgB,CAAC,CAAC,OAAO,CAChD,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBAClD,KAAK,EAAE,IAAI;iBACZ,CAAC,CAAC,CAAC;aACP;YACD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,qBAAgB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SAC/D;QAIH,2BAAC;IAAD,CAfA,CAA0C,uBAAuB,GAehE;;QAEsCF,qCAAuB;QAa5D;mBACE,iBAAO;SACR;QAdM,kCAAM,GAAb,UAAc,IAAS,EAAE,IAAY,EAAE,GAAQ,EAAE,IAAS;;YAExD,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjD,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;gBACzB,IAAM,QAAQ,GAAa,IAAII,eAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACF,qBAAgB,CAAC,CAAC,WAAW,CAAC,CAAC;gBACzF,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,8CAA8C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACzF,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;iBACtE;gBACD,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;aACpD;YACD,OAAO,IAAI,CAAC;SACb;QAIH,wBAAC;IAAD,CAhBA,CAAuC,uBAAuB,GAgB7D;;QAEqCF,oCAAuB;QAuB3D;mBACE,iBAAO;SACR;QAxBM,iCAAM,GAAb,UAAc,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;;;YAEjC,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjD,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;;gBAEzB,IAAI,IAAI,CAAC,aAAa,EAAE;oBACtB,IAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;;oBAE3C,MAAM,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC;;wBACxD,KAAkB,IAAA,KAAAG,SAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA,gBAAA,4BAAE;4BAAnC,IAAM,GAAG,WAAA;4BACZ,IAAM,MAAM,GAAG,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;4BACnE,IAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,YAAU,MAAM,MAAG,CAAC,CAAC;;4BAE7C,IAAI,EAAE,EAAE,KAAK,IAAI,EAAE;gCACjB,OAAO,mBAAgB,GAAG,WAAK,IAAI,YAAS,CAAC;6BAC9C;yBACF;;;;;;;;;;;;;;;iBACF;gBACD,OAAO,IAAI,CAAC;aACb;YACD,OAAO,IAAI,CAAC;SACb;QAIH,uBAAC;IAAD,CA1BA,CAAsC,uBAAuB,GA0B5D;;QACsCH,qCAAuB;QAO5D;mBACE,iBAAO;SACR;QARM,kCAAM,GAAb,UAAc,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;YACjC,IAAI,IAAI,EAAE;gBACR,OAAOK,qBAAqB,CAAC,IAAI,CAAC,CAAC;aACpC;YACD,OAAO,IAAI,CAAC;SACb;QAIH,wBAAC;IAAD,CAVA,CAAuC,uBAAuB;;;QCzc5D;YAHO,WAAM,GAAG,EAAG,CAAC;YAIlB,IAAI,CAAC,SAAS,GAAG,IAAIC,eAAY,EAAE,CAAC;SACrC;QAED,iDAAW,GAAX,UAAY,MAAM;YAChB,IAAI,MAAM,EAAE;gBACV,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;aACrD;SACF;QAEK,sDAAgB,GAAtB,UAAuB,MAAM;;;;;;iCACvB,MAAM;gCAAN,wBAAM;4BACD,KAAA,CAAA,KAAA,IAAI,CAAC,SAAS,EAAC,SAAS,CAAA;kCAAC,MAAM;4BAAE,qBAAM,IAAI,CAAC,SAAS,EAAE,EAAA;gCAA9D,sBAAO,wBAAiC,SAAsB,GAAC,EAAC;;;;;SAEnE;QAEK,+CAAS,GAAf;;;oBACE,sBAAO,IAAI,CAAC,MAAM,EAAC;;;SACpB;;oBA1BFC,aAAU,SAAC;wBACV,UAAU,EAAE,MAAM;qBACnB;;;;;0CALD;KAGA;;;QCwB6CP,2CAAmB;QAyB9D,iCAAY,MAAc,EACxB,cAA8B,EACtB,SAAqB,EACrB,GAAsB,EACtB,iBAAmC;YAJ7C,YAKM,kBAAM,MAAM,EAAE,cAAc,CAAC,SAChC;YAJO,eAAS,GAAT,SAAS,CAAY;YACrB,SAAG,GAAH,GAAG,CAAmB;YACtB,uBAAiB,GAAjB,iBAAiB,CAAkB;YA1BpC,aAAO,GAAsB,IAAIQ,eAAY,EAAE,CAAC;YAOvD,6BAAuB,GAAG,IAAIC,iBAAW,EAAE,CAAC;YAC5C,4BAAsB,GAAG,IAAIA,iBAAW,EAAE,CAAC;;SAoB1C;QAlBD,oCAAE,GAAF;YACI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAChC;QACD,wCAAM,GAAN;YACI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5B,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SACpC;QASD,6CAAW,GAAX,UAAY,OAAsB;;SAEjC;QACD,6CAAW,GAAX;;SAEC;QACD,0CAAQ,GAAR;YACI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBAC7B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAC,IAAI;oBAC5C,OAAO,IAAI,CAAC,OAAO,CAAC;iBACvB,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;oBACT,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE;wBACnB,OAAO,CAAC,CAAC,CAAA;qBACZ;oBACD,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE;wBACnB,OAAO,CAAC,CAAC;qBACZ;oBACD,OAAO,CAAC,CAAC;iBACZ,CAAC,CAAC,GAAG,CAAC,UAAC,IAAI;oBACR,OAAO;wBACH,GAAG,EAAE,IAAI,CAAC,GAAG;wBACb,KAAK,EAAE,IAAI,CAAC,KAAK;qBACpB,CAAA;iBACJ,CAAC,CAAC;aACN;SACJ;QAEO,8CAAY,GAApB;;YACI,IAAI,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;oCACrC,MAAM;gBACb,IAAM,SAAS,GAAG,OAAK,eAAe,CAAC,SAAS,CAAC,UAAC,IAAI;oBAClD,OAAO,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC;iBAClC,CAAC,CAAC;gBACH,IAAI,SAAS,GAAG,CAAC,EAAE;oBACf,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;oBACvB,SAAS,IAAI,CAAC,CAAC;oBACf,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;iBAC5B;qBAAM;oBACH,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;oBACtB,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;iBAC5B;aACJ;;;gBAZD,KAAqB,IAAA,KAAAN,SAAA,IAAI,CAAC,OAAO,CAAA,gBAAA;oBAA5B,IAAM,MAAM,WAAA;4BAAN,MAAM;iBAYhB;;;;;;;;;;;;;;;SACJ;QAED,+CAAa,GAAb;;YACI,IAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAiB,CAAC;YAC/D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;wCACV,KAAK;oBACZ,IAAI,SAAS,GAAG,OAAK,eAAe,CAAC,SAAS,CAAC,UAAC,IAAI;wBAChD,OAAO,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC;qBAC7B,CAAC,CAAC;oBACH,IAAI,SAAS,IAAI,CAAC,EAAE;wBAChB,OAAK,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;qBAC7C;iBACJ;;;oBAPD,KAAoB,IAAA,aAAAA,SAAA,QAAQ,CAAA,kCAAA;wBAAvB,IAAM,KAAK,qBAAA;gCAAL,KAAK;qBAOf;;;;;;;;;;;;;;;;gBAED,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;aACvC;SACJ;QAED,4CAAU,GAAV;;YACI,IAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAiB,CAAC;YAChE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;wCACV,KAAK;oBACZ,IAAI,UAAU,GAAG,OAAK,OAAO,CAAC,IAAI,CAAC,UAAC,IAAI;wBACpC,OAAO,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC;qBAC7B,CAAC,CAAC;oBACH,IAAI,UAAU,EAAE;wBACZ,IAAM,SAAS,GAAG,OAAK,eAAe,CAAC,SAAS,CAAC,UAAC,IAAI;4BAClD,OAAO,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC;yBAC7B,CAAC,CAAC;wBACH,IAAI,SAAS,GAAG,CAAC,EAAE;4BACf,OAAK,eAAe,CAAC,IAAI,CAAC;gCACtB,GAAG,EAAE,UAAU,CAAC,GAAG;gCACnB,KAAK,EAAE,UAAU,CAAC,KAAK;6BAC1B,CAAC,CAAC;yBACN;qBACJ;iBACJ;;;oBAfD,KAAoB,IAAA,aAAAA,SAAA,QAAQ,CAAA,kCAAA;wBAAvB,IAAM,KAAK,qBAAA;gCAAL,KAAK;qBAef;;;;;;;;;;;;;;;;gBAED,IAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAC,IAAI;oBAClD,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;iBACrD,CAAC,CAAC;;gBAEH,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;gBACrC,IAAI,iBAAiB,GAAG,CAAC,CAAC,IAAI,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;oBACvE,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC;wBACpC,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,GAAG;qBAC1C,CAAC,CAAA;iBACL;aACJ;SACJ;QAED,wCAAM,GAAN;;YACI,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC;YAChD,IAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAiB,CAAC;YAC/D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;wCACV,KAAK;oBACZ,IAAM,SAAS,GAAG,OAAK,eAAe,CAAC,SAAS,CAAC,UAAC,IAAI;wBAClD,OAAO,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC;qBAC7B,CAAC,CAAC;oBACH,IAAI,SAAS,GAAG,CAAC,EAAE;wBACf,IAAM,MAAM,GAAG,OAAK,eAAe,CAAC,SAAS,CAAC,CAAC;wBAC/C,OAAK,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;wBAC1C,OAAK,eAAe,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,EAAG,CAAC,EAAE,MAAM,CAAC,CAAC;qBAC1D;iBACJ;;;oBATD,KAAoB,IAAA,aAAAA,SAAA,QAAQ,CAAA,kCAAA;wBAAvB,IAAM,KAAK,qBAAA;gCAAL,KAAK;qBASf;;;;;;;;;;;;;;;aACJ;YACD,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,GAAG,KAAK,CAAC;SACpD;QAED,0CAAQ,GAAR;;YACI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC;YAClD,IAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAiB,CAAC;YAC/D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;wCACV,KAAK;oBACZ,IAAI,SAAS,GAAG,OAAK,eAAe,CAAC,SAAS,CAAC,UAAC,IAAI;wBAChD,OAAO,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC;qBAC7B,CAAC,CAAC;oBACH,IAAM,QAAM,GAAG,OAAK,OAAO,CAAC,MAAM,CAAC;oBACnC,IAAI,SAAS,IAAI,CAAC,IAAI,SAAS,GAAG,QAAM,EAAE;wBACtC,IAAM,MAAM,GAAG,OAAK,eAAe,CAAC,SAAS,CAAC,CAAC;wBAC/C,OAAK,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;wBAC1C,OAAK,eAAe,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,EAAG,CAAC,EAAE,MAAM,CAAC,CAAC;qBAC1D;iBACJ;;;oBAVD,KAAoB,IAAA,aAAAA,SAAA,QAAQ,CAAA,kCAAA;wBAAvB,IAAM,KAAK,qBAAA;gCAAL,KAAK;qBAUf;;;;;;;;;;;;;;;aACJ;YACD,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,GAAG,KAAK,CAAC;SACtD;;oBArLJO,YAAS,SAAC;wBACT,QAAQ,EAAE,qBAAqB;wBAC/B,iiHAA+C;wBAC/C,aAAa,EAAEC,oBAAiB,CAAC,IAAI;iCAEnC,0SAaC;qBAEJ;;;;;wBAxBwBZ,WAAM;wBAAtBD,mBAAc;wBAGdc,gBAAU;wBALsFC,oBAAiB;wBAGjHX,qBAAgB;;;;8BA0BpBY,QAAK;sCAGLA,QAAK;mCAELC,YAAS,SAAC,cAAc;qCACxBA,YAAS,SAAC,gBAAgB;;QA2J/B,8BAAC;KAAA,CAnK4CC,2BAAmB;;;QCnB9D,+BAAoB,MAAoB;YAApB,WAAM,GAAN,MAAM,CAAc;;SAEvC;QAED,6CAAa,GAAb,UAAc,OAAwE;YAAtF,iBA6BC;YA3BC,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;gBACjC,IAAI;oBACF,IAAM,QAAQ,GAAG,KAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,uBAAuB,EAAE;wBACvE,KAAK,EAAE,sBAAsB;wBAC7B,mBAAmB,EAAE,IAAI;wBACzB,QAAQ,EAAE,IAAI;wBACd,YAAY,EAAE;4BACZ,OAAO,EAAE,OAAO;yBACjB;qBACF,CAAC,CAAC;oBACH,IAAM,cAAY,GAA4B,QAAQ,CAAC,OAAO,CAAC;oBAC/D,cAAY,CAAC,OAAO,CAAC,SAAS,CAAC,UAAC,MAAc;wBAC5C,IAAI,MAAM,KAAK,IAAI,EAAE;4BACnB,OAAO,OAAO,CAAC;gCACb,MAAM,EAAE,MAAM;gCACd,OAAO,EAAE,cAAY,CAAC,OAAO;6BAC9B,CAAC,CAAC;yBACJ;wBACD,OAAO,OAAO,CAAC;4BACb,MAAM,EAAE,MAAM;yBACf,CAAC,CAAC;qBAEJ,CAAC,CAAC;iBACJ;gBAAC,OAAO,GAAG,EAAE;oBACZ,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;iBACpB;aACF,CAAC,CAAC;SACJ;;oBApCFT,aAAU;;;;;wBAJFU,eAAY;;;QA0CrB,4BAAC;KAtCD;;IC4BA;IACA,IAAM,MAAM,GAAG,OAAO,CAAC;IAOvB,IAAM,aAAa,GAAQ,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC;IACnD,aAAa,CAAC,QAAQ,CAAE,cAAc,EAAE,UAAU,IAAS;QACvD,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAE,GAAQ;YACpC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAE,GAAG,EAAE,IAAI,CAAE,CAAC;SAC9C,CAAE,CAAC;IACR,CAAC,CAAC,CAAC;IAEH;QAA6CjB,kDAAiB;QAA9D;;SAgBC;QAfQ,uDAAc,GAArB;SACC;QAEM,+CAAM,GAAb;SACC;QAEM,sDAAa,GAApB;SACC;QAEM,qDAAY,GAAnB;SACC;QAEM,iDAAQ,GAAf;SACC;QAEH,qCAAC;IAAD,CAhBA,CAA6Ca,oBAAiB,GAgB7D;AAED,QAAW,iBAAiB,GAAG,IAAIK,iBAAc,CAAC,mBAAmB,CAAC,CAAC;IAEvE;QAA8BlB,mCAAuB;QACnD,yBAAsB,QAAkB;YAAxC,YACE,iBAAO,SACR;YAFqB,cAAQ,GAAR,QAAQ,CAAU;;SAEvC;QAcM,gCAAM,GAAb,UAAc,IAAS,EAAE,IAAS,EAAE,GAAQ,EAAE,IAAS;;SAEtD;QACH,sBAAC;IAAD,CApBA,CAA8B,uBAAuB,GAoBpD;IAED,mBAAsB,KAAU;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;AAED;QAAA;SAOC;QANe,+BAAI,GAAlB,UAAmB,KAAU,EAAE,KAAe;YAC5C,IAAI,KAAK,EAAE;gBACT,OAAO,SAAS,CAAqB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aACzE;YACD,OAAO,SAAS,CAAqB,KAAK,CAAC,CAAC;SAC7C;QACH,iCAAC;IAAD,CAAC,IAAA;IAED;QACE,OAAO,CACL,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACtC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;AAED;QAqME,gCAAoB,QAA4B,EACD,iBAA2C,EACtE,eAA+B,EAC/B,iBAAmC,EACnC,SAAmB,EACnB,4BAAyD,EACzD,QAAoB,EACpB,SAAuB,EACvB,QAAwB,EACxB,KAAiB,EACjB,eAAsC;YAV1D,iBAkBC;YAlBmB,aAAQ,GAAR,QAAQ,CAAoB;YACD,sBAAiB,GAAjB,iBAAiB,CAA0B;YACtE,oBAAe,GAAf,eAAe,CAAgB;YAC/B,sBAAiB,GAAjB,iBAAiB,CAAkB;YACnC,cAAS,GAAT,SAAS,CAAU;YACnB,iCAA4B,GAA5B,4BAA4B,CAA6B;YACzD,aAAQ,GAAR,QAAQ,CAAY;YACpB,cAAS,GAAT,SAAS,CAAc;YACvB,aAAQ,GAAR,QAAQ,CAAgB;YACxB,UAAK,GAAL,KAAK,CAAY;YACjB,oBAAe,GAAf,eAAe,CAAuB;YAtLlD,eAAU,GAAG,IAAI,CAAC;YAClB,gBAAW,GAAG,IAAI,CAAC;YACnB,gBAAW,GAAG,IAAI,CAAC;YACnB,gBAAW,GAAG,KAAK,CAAC;YACpB,QAAG,GAAG,mBAAmB,EAAE,CAAC;YAC7B,gBAAW,GAAG,KAAK,CAAC;YACpB,kBAAa,GAAG,IAAImB,oBAAe,CAAM,IAAI,CAAC,CAAC;YAKtC,WAAM,GAAG,GAAG,CAAC;YACb,gBAAW,GAAG,IAAI,CAAC;YACnB,aAAQ,GAAG,IAAI,CAAC;YACT,SAAI,GAA0C,IAAIX,eAAY,EAA2B,CAAC;YAC1F,SAAI,GAAsB,IAAIA,eAAY,EAAO,CAAC;YACjD,WAAM,GAAsB,IAAIA,eAAY,EAAO,CAAC;YACnD,WAAM,GAAsB,IAAIA,eAAY,EAAO,CAAC;YACtD,SAAI,GAAsB,IAAIA,eAAY,EAAO,CAAC;YAClD,SAAI,GAAsB,IAAIA,eAAY,EAAO,CAAC;YACjD,UAAK,GAA0B,IAAIA,eAAY,EAAW,CAAC;YAC1D,WAAM,GAAgD,IAAIA,eAAY,EAAiC,CAAC;YACjG,kBAAa,GAAsB,IAAIA,eAAY,EAAO,CAAC;YACjE,YAAO,GAE5B,IAAIA,eAAY,EAEjB,CAAC;YAEW,eAAU,GAAG,IAAI,CAAC;YAClB,eAAU,GAAG,IAAI,CAAC;YAClB,eAAU,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YACjC,WAAM,GAAG,IAAI,CAAC;YACd,eAAU,GAAG,EAAE,CAAC;YAChB,mBAAc,GAAG,KAAK,CAAC;YACvB,cAAS,GAAG,KAAK,CAAC;YAIlB,YAAO,GAAG,GAAG,CAAC;YACd,YAAO,GAAG,IAAI,CAAC;;;;YAIf,eAAU,GAAG,KAAK,CAAC;;;;YAInB,mBAAc,GAAG,IAAI,CAAC;;;;YAItB,iBAAY,GAAG,KAAK,CAAC;YACrB,aAAQ,GAAG,EAAE,CAAC;YACvB,eAAU,GAAG,EAAE,CAAC;;YAkIrB,IAAI,CAAC,UAAU,GAAG,IAAIY,kBAAa,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,8BAA8B,EAAE,CAAC,CAAC;YAClG,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;YACpD,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,GAAG,eAAe,CAAC;YACpE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAC,IAAI;gBACnD,KAAI,CAAC,KAAK,EAAE,CAAC;aACd,CAAC,CAAC;SACJ;QA/HD,sBACW,0CAAM;iBAMjB;gBACE,OAAO,IAAI,CAAC,OAAO,CAAC;aACrB;;;;iBATD,UACkB,KAAyB;gBACzC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;;gBAErB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACvC;;;WAAA;QASD,sBACW,8CAAU;iBAiBrB;gBACE,OAAO,IAAI,CAAC,WAAW,CAAC;aACzB;;;;iBApBD,UACsB,KAAc;gBAClC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;;gBAEzB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;oBAChD,IAAM,OAAO,GAAK,IAAI,CAAC,QAAQ,CAAC,aAAgC;yBAC7D,aAAa,CAAC,kBAAkB,CAAC,CAAC;oBACrC,IAAI,OAAO,IAAI,IAAI,EAAE;wBACnB,OAAO;qBACR;oBACD,IAAI,KAAK,EAAE;wBACT,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;qBACpC;yBAAM;wBACL,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;qBACjC;iBACF;aACF;;;WAAA;QASA,sBACW,8CAAU;iBAsBrB;gBACE,OAAO,IAAI,CAAC,WAAW,CAAC;aACzB;;;;iBAzBD,UACsB,KAAc;gBAClC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;;gBAEzB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;oBAChD,IAAM,OAAO,GAAK,IAAI,CAAC,QAAQ,CAAC,aAAgC;yBAC7D,aAAa,CAAC,kBAAkB,CAAC,CAAC;oBACrC,IAAI,OAAO,IAAI,IAAI,EAAE;wBACnB,OAAO;qBACR;oBACD,IAAM,SAAS,GAAK,IAAI,CAAC,QAAQ,CAAC,aAAgC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;oBAC/F,IAAI,KAAK,EAAE;wBACT,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;;wBAEnC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;qBACpC;yBAAM;wBACL,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;;wBAEhC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;qBACjC;iBACF;aACF;;;WAAA;QASF,sBACW,8CAAU;iBAiBrB;gBACE,OAAO,IAAI,CAAC,WAAW,CAAC;aACzB;;;;iBApBD,UACsB,KAAc;gBAClC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;;gBAEzB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;oBAChD,IAAM,OAAO,GAAK,IAAI,CAAC,QAAQ,CAAC,aAAgC;yBAC7D,aAAa,CAAC,sBAAsB,CAAC,CAAC;oBACzC,IAAI,OAAO,IAAI,IAAI,EAAE;wBACnB,OAAO;qBACR;oBACD,IAAI,KAAK,EAAE;wBACT,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;qBACxB;yBAAM;wBACL,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;qBACxB;iBACF;aACF;;;WAAA;QASD,sBACW,yCAAK;iBAIhB;gBACE,OAAO,IAAI,CAAC,MAAM,CAAC;aACpB;;;;iBAPD,UACiB,KAA0B;gBACzC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;aACrB;;;WAAA;;QAiCM,uCAAM,GAAb,UAAc,UAAU;YAAxB,iBAiDC;YAhDC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAChF,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;;oBAE9C,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;wBAChC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAC3B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;4BACrD,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;yBACvC,CAAC,CAAC,CAAC;qBACP;yBAAM;;wBAEL,IAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;wBAEpC,IAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,UAAC,IAAI;4BAC5B,OAAO,KAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;gCAC5D,IAAI,EAAE,IAAI;6BACX,CAAC,CAAC;yBACJ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;wBAEjB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;qBACxC;iBACF;qBAAM;;oBAEL,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;iBACtC;gBACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;aACvB;iBAAM;;gBAEL,IAAI,CAAC,eAAe,EAAE,CAAC;;gBAEvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;;gBAEhD,IAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;;gBAEhE,IAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;;gBAEvC,IAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;;gBAEpC,IAAM,MAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;gBACtD,IAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,MAAI,CAAS,KAAK,CAAC,GAAA,CAAC,CAAC;;gBAEvD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBACb,IAAI,EAAE,IAAI;oBACV,eAAe,EAAE,eAAe;oBAChC,YAAY,EAAE,YAAY;iBAC3B,CAAC,CAAC;aACJ;SACF;QAEM,sCAAK,GAAZ,UAAa,aAAuB;;YAElC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;;gBAE1B,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;aACxB;;YAED,IAAI,aAAa,IAAI,IAAI,IAAI,aAAa,KAAK,IAAI,EAAE;;gBAEnD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;;gBAEzB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;oBACxB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;iBAC/C;;gBAED,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;oBAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;iBACnD;aACF;;YAED,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;SACvB;QAEM,wCAAO,GAAd;YACE,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;gBACzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;;gBAEtB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;oBACxB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;iBAC/C;;gBAED,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;oBAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;iBACnD;;gBAED,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;aAC1B;SACF;;;;QAKM,0CAAS,GAAhB,UAAiB,GAAQ,EAAE,MAAgB;YACzC,IAAI,GAAG,EAAE;;gBAEP,IAAM,SAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;;gBAE3B,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,EAAE;oBACjC,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE;;wBAE/B,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,UAAC,IAAS;4BAC3C,IAAI,IAAI,KAAK,SAAO,EAAE;gCACpB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;6BACvD;yBACF,CAAC,CAAC;qBACJ;yBAAM;wBACL,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,UAAC,IAAS;4BACtD,IAAI,IAAI,KAAK,SAAO,EAAE;gCACpB,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;6BACtC;yBACF,CAAC,CAAC;qBACJ;;oBAED,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;iBAC/C;;gBAED,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE;oBAC/B,MAAM,CAAC,SAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;iBACzD;qBAAM;;oBAEL,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;iBACzC;;gBAED,IAAM,KAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC3E,IAAM,MAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;;gBAExB,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAC,CAAC;oBACxC,OAAO,CAAC,CAAC,KAAG,CAAC,KAAK,MAAI,CAAC,KAAG,CAAC,CAAC;iBAC7B,CAAC,CAAC;gBACH,IAAI,SAAS,IAAI,CAAC,EAAE;;oBAElB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;iBACpC;gBACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAI,CAAC,CAAC;;gBAEzB,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAC,CAAC;oBACtC,OAAO,CAAC,CAAC,KAAG,CAAC,KAAK,MAAI,CAAC,KAAG,CAAC,CAAC;iBAC7B,CAAC,CAAC;gBACH,IAAI,SAAS,IAAI,CAAC,EAAE;;oBAElB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;iBACtC;gBACD,IAAI,MAAM,EAAE;oBACV,OAAO;iBACR;gBACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACxC;SACF;;;;QAKM,4CAAW,GAAlB,UAAmB,GAAQ,EAAE,MAAgB;YAC3C,IAAI,GAAG,EAAE;;gBAEP,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE;oBAC/B,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;iBAC7D;qBAAM;;oBAEL,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;iBAC5C;;gBAED,IAAM,KAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC3E,IAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;gBACxB,IAAM,IAAE,GAAG,IAAI,CAAC,KAAG,CAAC,CAAC;gBACrB,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAC,CAAC;oBACxC,OAAO,CAAC,CAAC,KAAG,CAAC,KAAK,IAAE,CAAC;iBACtB,CAAC,CAAC;gBACH,IAAI,SAAS,IAAI,CAAC,EAAE;oBAClB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;oBACnC,IAAI,IAAI,CAAC,WAAW,EAAE;;wBAEpB,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAC,CAAC;4BACtC,OAAO,CAAC,CAAC,KAAG,CAAC,KAAK,IAAE,CAAC;yBACtB,CAAC,CAAC;wBACH,IAAI,SAAS,GAAG,CAAC,EAAE;4BACjB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;yBAC5B;qBACF;oBACD,IAAI,MAAM,EAAE;wBACV,OAAO;qBACR;oBACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBACxC;aACF;SACF;QAEM,0CAAS,GAAhB;YAAA,iBAYC;YAXC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;;gBAErC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;;gBAExB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,UAAC,KAAU;oBACrC,IAAM,GAAG,GAAG,KAAI,CAAC,SAAS,CAAC,GAAG,CAAE,KAAK,CAAE,CAAC;oBACxC,KAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;iBAC3B,CAAC,CAAC;;gBAEH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACxC;SACF;QAEM,2CAAU,GAAjB;YAAA,iBAcC;YAbC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;;gBAErC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;;gBAElD,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,UAAC,KAAU;oBACrC,IAAM,GAAG,GAAG,KAAI,CAAC,SAAS,CAAC,GAAG,CAAE,KAAK,CAAE,CAAC;oBACxC,KAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;iBAC7B,CAAC,CAAC;gBACH,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;;gBAE9C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACxC;SACF;QAEM,gDAAe,GAAtB,UAAuB,GAAQ;YAC7B,IAAI,GAAG,EAAE;gBACP,IAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;;gBAExB,IAAM,KAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;;gBAE3E,IAAM,IAAE,GAAG,IAAI,CAAC,KAAG,CAAC,CAAC;;gBAErB,IAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAC,CAAC;oBACrC,OAAO,CAAC,CAAC,KAAG,CAAC,KAAK,IAAE,CAAC;iBACtB,CAAC,CAAC;;gBAEH,IAAI,SAAS,IAAI,CAAC,EAAE;;oBAElB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;iBACvB;qBAAM;oBACL,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;iBACrB;aACF;SACF;;;;;;;;;;QAWO,8CAAa,GAArB,UAAsB,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;;YAEzC,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjD,IAAI,OAAO,MAAM,CAAC,cAAc,KAAK,UAAU,EAAE;gBAC/C,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;oBACpB,cAAc,EAAEvB,eAAQ,CAAC,sFACjB,IAAI,CAAC,GAAG,4DAAqD,IAAI,CAAC,GAAG,4CAC5E,CAAC;iBACH,CAAC,CAAC;aACJ;;YAED,OAAO,MAAM,CAAC,cAAc,CAAC;gBAC3B,IAAI,MAAA;gBACJ,IAAI,MAAA;aACL,CAAC,CAAC;SACJ;QAEM,yCAAQ,GAAf;YAAA,iBAkcC;YAjcC,IAAM,IAAI,GAAG,IAAI,CAAC;YAClB,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,OAAO,EAAE,CAAC;aAChB;YACD,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;oBAChB,MAAM,EAAE,IAAI;iBACb,CAAC,CAAC;;gBAEH,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE;oBACnE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;iBAC1C;gBACD,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE;oBACvE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;iBAClD;;gBAED,IAAM,cAAY,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;;qBAErC,MAAM,CAAC,UAAC,MAAM;oBACb,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,qBAAqB,IAAI,KAAI,CAAC,WAAW,KAAK,KAAK,EAAE;wBAChG,OAAO,KAAK,CAAC;qBACd;oBACD,OAAO,IAAI,CAAC;iBACb,CAAC,CAAC,GAAG,CAAC,UAAC,MAAM;;oBAEZ,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,KAAI,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;iBACnE,CAAC,CAAC,GAAG,CAAC,UAAC,MAAM;oBACZ,IAAM,gBAAgB,GAAG;wBACvB,IAAI,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI;wBACpC,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,cAAc,GAAG,EAAE;wBACpF,KAAK,EAAE,KAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;wBAC9C,QAAQ,EAAE,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,QAAQ,GAAG,IAAI;wBACpE,OAAO,EAAE,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI;wBAChE,IAAI,EAAE,MAAM,CAAC,IAAI;qBAClB,CAAC;oBAEF,IAAI,MAAM,CAAC,SAAS,EAAE;wBACpB,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;4BAC9B,SAAS,EAAE,MAAM,CAAC,SAAS;yBAC5B,CAAC,CAAC;qBACJ;yBAAM;wBACL,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;4BAC9B,SAAS,EAAE,EAAE;yBACd,CAAC,CAAC;qBACJ;oBAED,IAAI,MAAM,CAAC,UAAU,EAAE;wBACrB,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;4BAC9B,MAAM,YAAC,IAAS,EAAE,IAAY,EAAE,GAAQ,EAAE,IAAS;gCACjD,IAAI,MAAM,GAAG,IAAI,CAAC;gCAClB,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,UAAC,eAAe;oCACxC,IAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;oCACpE,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,MAAM,KAAK,UAAU,EAAE;wCACvD,MAAM,CAAC,YAAY,GAAG,eAAe,CAAC,YAAY,CAAC;wCACnD,MAAM,CAAC,aAAa,GAAG,eAAe,CAAC,aAAa,CAAC;qCACtD;oCACD,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;iCACjE,CAAC,CAAC;gCACH,OAAO,MAAM,CAAC,YAAY,CAAC;gCAC3B,OAAO,MAAM,CAAC,aAAa,CAAC;gCAC5B,OAAO,MAAM,CAAC;6BACf;yBACF,CAAC,CAAC;;wBAEH,IAAM,OAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,UAAC,eAAe;4BACnD,OAAO,OAAO,eAAe,CAAC,WAAW,KAAK,UAAU,CAAC;yBAC5D,CAAC,CAAC;wBACH,IAAI,OAAK,CAAC,MAAM,GAAG,CAAC,EAAE;4BACpB,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;gCAC9B,WAAW,YAAC,IAAS,EAAE,QAAa,EAAE,OAAY,EAAE,QAAgB,EAAE,QAAgB;oCACpF,OAAK,CAAC,OAAO,CAAC,UAAC,eAAe;wCAC5B,IAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;wCACpE,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,WAAW,KAAK,UAAU,EAAE;4CAC5D,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;yCACjF;qCACF,CAAC,CAAC;iCACJ;6BACF,CAAC,CAAC;yBACJ;qBACF;oBACD,IAAI,MAAM,CAAC,SAAS,EAAE;wBACpB,IAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;wBAC3D,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,MAAM,KAAK,UAAU,EAAE;4BACvD,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;gCAC9B,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;6BACtC,CAAC,CAAC;yBACJ;wBACD,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,WAAW,KAAK,UAAU,EAAE;4BAC5D,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;gCAC9B,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;6BACtC,CAAC,CAAC;4BACH,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;gCAC9B,WAAW,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;6BAChD,CAAC,CAAC;yBACJ;qBACF;oBACD,OAAO,gBAAgB,CAAC;iBACzB,CAAC,CAAC;;gBAEL,IAAM,cAAY,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBACtD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE;oBAC1B,UAAU,CAAC;wBACT,IAAI,KAAI,CAAC,SAAS,EAAE;4BAClB,KAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;yBACjC;qBACF,EAAE,CAAC,CAAC,CAAC;iBACP,CAAC,CAAC;;gBAEH,cAAY,CAAC,EAAE,CAAC,eAAe,EAAE,UAAC,KAAK,EAAE,QAAQ,EAAE,UAAU;oBAC3D,IAAI,UAAU,EAAE;;wBAEd,cAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAChD,UAAU,CAAC;4BACT,cAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;yBACrC,EAAE,CAAC,CAAC,CAAC;qBACP;yBAAM;wBACL,UAAU,CAAC;4BACT,cAAY,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;yBACxC,EAAE,CAAC,CAAC,CAAC;qBACP;iBACF,CAAC,CAAC;gBACH,IAAI,WAAS,GAAG,CAAC,CAAC;gBAClB,cAAY,CAAC,EAAE,CAAC,UAAU,EAAE,UAAC,KAAU;oBACrC,IAAI,KAAI,CAAC,SAAS,EAAE;wBAClB,IAAM,KAAK,GAAG,KAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;wBAErC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;4BACzB,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;yBACxB;qBACF;iBACF,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,UAAC,KAAK;oBACrB,KAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACjB,IAAI,KAAI,CAAC,SAAS,EAAE;wBAClB,IAAM,IAAI,GAAoC,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;wBACzE,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACrB,IAAG,WAAS,GAAG,CAAC;4BACd,OAAM;wBACR,IAAI;4BACF,WAAS,EAAE,CAAC;4BACZ,UAAU,CAAC,cAAO,KAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAC,EAAE,CAAC,CAAC,CAAC;yBACzD;wBAAC,OAAO,GAAG,EAAE;4BACZ,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,iDAAiD,CAAC,CAAC;4BAC1E,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;yBACpB;qBACF;iBACF,CAAC,CAAC;;gBAGH,IAAI,IAAI,CAAC,UAAU,EAAE;;;oBAGnB,IAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;;oBAE3C,IAAM,sBAAsB,GAAG;wBAC7B,SAAS,EAAE,uBAAuB;wBAClC,IAAI,EAAE,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,IAAI;wBAC9C,cAAc,EAAE,EAAE;wBAClB,KAAK,EAAE,EAAE;wBACT,QAAQ,EAAE,KAAK;wBACf,OAAO,EAAE,CAAC,IAAI,CAAC,YAAY;wBAC3B,IAAI,EAAE,WAAW,CAAC,IAAI;qBACvB,CAAC;;oBAEF,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE;wBACpC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;qBACtC,CAAC,CAAC;;oBAEH,cAAY,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;;;oBAG7C,cAAY;;yBAET,EAAE,CAAC,SAAS,EAAE;wBAEb,IAAI,KAAI,CAAC,YAAY,EAAE;;4BAErB,cAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE;;gCAE3C,IAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;;gCAErC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;6BACvB,CAAC,CAAC;yBACJ;wBACD,IAAM,QAAQ,GAAG,cAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;wBAClD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,KAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC,CAAC;;wBAErE,IAAM,GAAG,GAAG,KAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;wBAC5C,IAAI,KAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;;4BAE5B,KAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,IAAI;;gCAEzB,IAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;;gCAErB,IAAI,EAAE,IAAI,IAAI,EAAE;;oCAEd,cAAY,CAAC,IAAI,CAAC,oBAAkB,EAAE,OAAI,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;iCACnE;6BACF,CAAC,CAAC;yBACJ;wBACD,IAAI,KAAI,CAAC,WAAW,EAAE;;;4BAGpB,cAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,UAAC,KAAK,EAAE,OAAO;;gCAEtD,IAAI,KAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAC,CAAC;;oCAE9B,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iCAClD,CAAC,GAAG,CAAC,EAAE;oCACN,KAAI,CAAC,SAAS,CAAC,KAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;iCAC3C;6BACF,CAAC,CAAC;yBACJ;6BAAM,IAAI,KAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;4BACrC,cAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;yBAC5D;qBACF,CAAC,CAAC;iBACN;;gBAED,IAAM,QAAQ,GAAG;;oBAEf,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;;oBAEtC,YAAY,EAAE,KAAK;;oBAEnB,SAAS,EAAE,IAAI;;oBAEf,UAAU,EAAE,IAAI;;oBAEhB,UAAU,EAAE,IAAI,CAAC,UAAU;;oBAE3B,OAAO,EAAE,cAAY;oBACrB,UAAU,EAAG,IAAI,CAAC,cAAc;oBAChC,KAAK,EAAE,EAAE;;oBAET,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,GAAG,EAAE,QAAQ;oBACb,SAAS,EAAE,KAAK;oBAChB,OAAO,EAAE;wBACP;4BACE,MAAM,EAAE,OAAO;4BACf,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;4BAC3B,SAAS,EAAE,QAAQ;4BACnB,aAAa,EAAE;gCACb,OAAO,EAAE,sBAAsB;6BAChC;yBACF;qBACF;;oBAED,YAAY,YAAC,OAAY,EAAE,MAAW,EAAE,UAAe,EAAE,SAAc;;wBAErE,IAAI,IAAI,CAAC,UAAU,EAAE;;4BAEnB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;;4BAExB,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;gCAC3B,IAAM,YAAY,GAAG;oCACnB,YAAY,EAAE,CAAC;oCACf,eAAe,EAAE,CAAC;oCAClB,IAAI,EAAE,EAAE;iCACT,CAAC;;gCAEF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;;gCAE7B,OAAO,UAAU,CAAC,YAAY,CAAC,CAAC;6BACjC;yBACF;;wBAED,IAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC;;wBAE9D,IAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;;wBAEhC,IAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;;wBAE9B,IAAI,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;;wBAE3B,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;;wBAE1B,IAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;;wBAE/B,IAAM,CAAC,GAAG,IAAI,CAAC,MAAM,YAAYwB,0BAAmB,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;;wBAE1H,IAAI,GAAG,EAAE;4BACP,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;yBACxB;;wBAED,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;;4BAEzB,IAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,UAAC,IAAS;gCACrC,OAAO,cAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC;6BACjE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;4BAEb,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;yBACpC;;wBAED,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAE,UAAC,MAAM;4BAChD,IAAK,MAAM,CAAC,OAAO,KAAK,IAAI,EAAG;gCAC7B,OAAO,KAAK,CAAC;6BACd;4BACD,OAAO,IAAI,CAAC;yBACb,CAAC,CAAC,GAAG,CAAC,UAAC,MAAM;4BACZ,IAAI,MAAM,CAAC,QAAQ,EAAE;gCACnB,OAAO,MAAM,CAAC,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC;6BAC/C;iCAAM;gCACL,OAAO,MAAM,CAAC,IAAI,CAAC;6BACpB;yBACF,CAAC,CAAC;wBACH,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;;wBAE1B,IAAI,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE;;4BAErD,IAAM,OAAO,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;4BAC9B,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;4BAC5B,IAAM,WAAW,GAAG,CAAE,WAAW,CAAC,OAAO,CAAE,CAAC;4BAC5C,IAAI,OAAO,CAAC,OAAO,EAAE;gCAAE,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,CAAE,CAAC;6BAAE;4BACxE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;yBACrC;;wBAED,IAAI,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE;;4BAErD,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;yBAC5C;6BAAM,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;4BAC7E,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;yBACpD;wBACD,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;4BACrG,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;yBACtD;wBACD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;4BACvE,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;yBACtD;;wBAED,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;4BACtE,OAAO,IAAI,CAAC,4BAA4B,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,mBAAmB;gCAC9G,IAAI,mBAAmB,EAAE;oCACvB,IAAM,OAAO,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;oCAC9B,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oCAC5B,IAAM,WAAW,GAAG,CAAE,mBAAmB,CAAE,CAAC;oCAC5C,IAAI,OAAO,CAAC,OAAO,EAAE;wCAAE,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,CAAE,CAAC;qCAAE;oCACxE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;iCACrC;gCACD,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;gCACrC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,UAAC,KAAK;oCACnB,IAAM,OAAO,GAAG;wCACd,YAAY,EAAE,KAAK,CAAC,KAAK;wCACzB,eAAe,EAAE,KAAK,CAAC,KAAK;wCAC5B,IAAI,EAAE,KAAK,CAAC,KAAK;qCAClB,CAAC;oCACF,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE;wCACrB,IAAI,CAAC,eAAe,EAAE,CAAC;qCACxB;;oCAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;oCAExB,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;iCAC9B,CAAC,CAAC;6BACJ,CAAC,CAAC,KAAK,CAAC,UAAC,GAAG;gCACX,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;6BAC9B,CAAC,CAAC;yBACJ;wBACD,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;wBACrC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,UAAC,KAAK;4BACrB,IAAM,OAAO,GAAG;gCACd,YAAY,EAAE,KAAK,CAAC,KAAK;gCACzB,eAAe,EAAE,KAAK,CAAC,KAAK;gCAC5B,IAAI,EAAE,KAAK,CAAC,KAAK;6BAClB,CAAC;4BACF,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE;gCACrB,IAAI,CAAC,eAAe,EAAE,CAAC;6BACxB;;4BAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;4BAExB,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;yBAC5B,CAAC,CAAC,KAAK,CAAC,UAAC,GAAG;4BACX,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;yBAC9B,CAAC,CAAC;qBACJ;oBACD,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAG,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,kBAAkB,CAAC,EACxE,EAAC,UAAU,EAAE,GAAG,EAAE,CAAC;iBACtB,CAAC;gBAEF,IAAM,aAAa,GAAG;oBACpB,SAAS,EAAE,IAAI,CAAC,SAAS;iBAC1B,CAAC;gBACF,IAAI,IAAI,CAAC,iBAAiB,EAAE;oBAC1B,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE;wBAC3B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;qBAC1C,CAAC,CAAC;iBACJ;gBACD,IAAI,IAAI,CAAC,iBAAiB,EAAE;oBAC1B,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE;wBAC3B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;qBAC1C,CAAC,CAAC;iBACJ;gBACD,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;gBAEvC,IAAI,IAAI,CAAC,UAAU,EAAE;;oBAEnB,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;wBACtB,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,cAAc,EAAE,KAAK;wBACrB,QAAQ,EAAE;4BACR,gBAAgB,EAAE,KAAK;4BACvB,aAAa,EAAE,EAAE;yBAClB;qBACF,CAAC,CAAC;iBACJ;qBAAM;oBACL,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;wBACtB,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,UAAU,EAAE,IAAI,CAAC,UAAU;qBAC5B,CAAC,CAAC;iBACJ;gBACD,IAAI,IAAI,CAAC,UAAU,EAAE,CAEpB;;gBAED,IAAI,CAAC,SAAS,GAAG,cAAY,CAAC,EAAE,CAAC,SAAS,EAAE,UAAC,KAAK;oBAChD,IAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;;oBAE/C,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAC,WAAW;wBAChC,IAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;wBAC1C,IAAM,GAAG,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;wBAC/B,IAAM,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;wBACjC,IAAI,KAAI,CAAC,SAAS,EAAE;4BAClB,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gCACf,GAAG,KAAA;gCACH,IAAI,MAAA;6BACL,CAAC,CAAC;yBACJ;qBACF,CAAC,CAAC;iBACJ,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACvB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;;gBAEjB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;oBAClB,IAAI,CAAC,QAAQ,CAAC,aAAgC;yBAC7C,aAAa,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC3D,IAAI,CAAC,QAAQ,CAAC,aAAgC;yBAC7C,aAAa,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACtD;;gBAGD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;oBAClB,IAAI,CAAC,QAAQ,CAAC,aAAgC;yBAC7C,aAAa,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC9D;;gBAED,IAAI,IAAI,CAAC,UAAU,EAAE;oBACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;iBACxB;aACF;SACF;QAED,0CAAS,GAAT,UAAU,KAAa;YACrB,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;aAC1C;SACF;QAED,2CAAU,GAAV,UAAW,KAAa;YACtB,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;aAC3C;SACF;QAED,sBAAI,6CAAS;iBAAb;gBAAA,iBAaC;gBAZC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;oBACvB,OAAO,IAAI,CAAC;iBACb;gBACD,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;oBAChC,OAAO,IAAI,CAAC;iBACb;gBACD,IAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC/D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAE,UAAC,GAAG;oBAC7C,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;iBAC5C,CAAC,CAAC;;gBAEH,OAAO,CAAC,CAAC;aACV;;;WAAA;;;;;QAMM,yCAAQ,GAAf,UAAgB,IAAS;YAAzB,iBAoEC;YAnEC,IAAI,IAAI,IAAI,IAAI,EAAE;gBAChB,OAAO;aACR;YACD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;gBAC3B,OAAO;aACP;YACD,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;gBAChC,OAAO;aACR;;YAED,IAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YACtD,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;;gBAEvB,IAAM,UAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnC,IAAI,UAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;;oBAEzB,OAAO;iBACR;;gBAED,IAAM,UAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAC,GAAQ;oBACvC,OAAO,UAAQ,CAAC,GAAG,CAAE,UAAC,GAAG;wBACvB,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC;qBAC/B,CAAC,CAAC,MAAM,CAAE,UAAC,GAAG;wBACb,OAAO,GAAG,KAAK,KAAK,CAAC;qBACtB,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;iBACjB,CAAC,CAAC;;gBAEH,IAAI,UAAQ,IAAI,CAAC,EAAE;oBACjB,IAAM,OAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;;oBAEnE,OAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;oBACxD,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;;wBAEhC,OAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;qBACzD;;oBAED,UAAQ,CAAC,OAAO,CAAE,UAAC,GAAG;wBACpB,IAAM,MAAM,GAAG,KAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAE,UAAC,GAAG;4BAC3C,OAAO,GAAG,CAAC,QAAQ,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC;yBACjD,CAAC,CAAC;wBACH,IAAI,MAAM,EAAE;;4BAEV,IAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC;4BAChD,OAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;yBACtC;6BAAM;4BACL,OAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;yBACjC;qBACF,CAAC,CAAC;;oBAEH,OAAO,OAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAAE,UAAC,IAAI;;wBAEhC,IAAM,GAAG,GAAG,KAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAQ,CAAC,CAAC;wBACzC,IAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBACrE,IAAI,IAAI,EAAE;;4BAER,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BACf,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,KAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC,CAAC;;4BAEjG,IAAI,OAAO,EAAE;gCACX,KAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;6BAC3B;yBACF;wBACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;qBAC1B,CAAC,CAAC;iBACJ;aACF;YACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC1B;QAEM,4CAAW,GAAlB;YACE,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAC3B,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;aACvC;SACF;;;;;QAMM,kDAAiB,GAAxB,UAAyB,MAAM;YAC7B,IAAM,KAAK,GAAI,MAAM,CAAC,MAA0B,CAAC;;YAEjD,IAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;;YAE5D,IAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;;YAEhD,IAAI,GAAG,EAAE;gBACP,IAAM,KAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAC5C,IAAM,IAAE,GAAG,GAAG,CAAC,KAAG,CAAC,CAAC;gBACpB,IAAI,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAC,IAAI;oBAC/C,OAAO,IAAI,CAAC,KAAG,CAAC,KAAK,IAAE,CAAC;iBACzB,CAAC,CAAC;gBACH,IAAI,KAAK,CAAC,OAAO,EAAE;oBACjB,IAAI,aAAa,GAAG,CAAC,EAAE;;wBAErB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACxB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;qBACxC;iBACF;qBAAM;oBACL,IAAI,aAAa,IAAI,CAAC,EAAE;;wBAEtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;wBACvC,IAAI,IAAI,CAAC,WAAW,EAAE;;4BAEpB,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAC,IAAI;gCAC7C,OAAO,IAAI,CAAC,KAAG,CAAC,KAAK,IAAE,CAAC;6BACzB,CAAC,CAAC;4BACH,IAAI,aAAa,GAAG,CAAC,EAAE;gCACrB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gCAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;6BACxC;yBACF;qBACF;iBACF;aACF;SACF;QAEO,gDAAe,GAAvB;;;;YAIE,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC/C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW;oBAC/C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC;aAC5F;SACF;QAEO,gDAAe,GAAvB;YACE,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC/C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,GAAG,EAAE,CAAC;aACtD;SACF;QAEM,uCAAM,GAAb;YACE,IAAM,OAAO,GAAgB,QAAQ,CAAC,aAAa,CAAC,4BAA4B,CAAgB,CAAC;YACjG,OAAO,CAAC,KAAK,EAAE,CAAC;SACjB;QAEM,8CAAa,GAApB,UAAqB,aAAa;YAChC,IAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAC,MAAM,EAAE,CAAC;gBAC7C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;oBAClB,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;;wBAEvC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;qBACnD;yBAAM;;wBAEL,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;qBACpD;iBACF;aACF,CAAC,CAAC;SACJ;QAEM,0CAAS,GAAhB;YACE,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;QAEM,4CAAW,GAAlB,UAAmB,OAAsB;YAAzC,iBAmBC;YAlBC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE;gBAC9D,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI,EAAE;;;oBAG7B,IAAI,OAAO,CAAC,SAAS,CAAC,YAAY,KAAK,OAAO,CAAC,SAAS,CAAC,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE;wBACzG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,UAAC,MAA0B;;4BAEzF,KAAI,CAAC,MAAM,GAAG,MAAM,CAAC;4BACrB,KAAI,CAAC,OAAO,EAAE,CAAC;;4BAEf,KAAI,CAAC,KAAK,EAAE,CAAC;yBACd,CAAC,CAAC,KAAK,CAAC,UAAC,GAAG;4BACX,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,sDAAsD,CAAC,CAAC;4BAChF,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;yBACpB,CAAC,CAAC;qBACJ;iBACF;aACF;SACF;QAEM,sCAAK,GAAZ,UAAa,IAAc;YACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;QAED,8CAAa,GAAb;YAAA,iBA6DC;;YA3DC,IAAM,WAAW,GAAa,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;;YAEhE,IAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC;YAC5D,IAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,UAC7B,SAA6F,EAAE,CAAS;gBACxG,IAAI,GAAG,GAAG,YAAU,CAAG,CAAC;gBACxB,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;;gBAE5B,IAAM,KAAK,GAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACtC,IAAM,OAAO,GAAG,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;;gBAEvD,IAAI,CAAC,IAAI,CAAC,IAAI,KAAI,CAAC,UAAU,EAAE;oBAC7B,KAAK,GAAG,GAAG,GAAG,KAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,GAAG,CAAC;iBAC3E;;gBAED,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;oBACvC,KAAK,GAAG,IAAI,CAAC;iBACd;gBACD,IAAI,KAAK,IAAI,IAAI,EAAE;;oBAEjB,IAAI,WAAW,GAAG,IAAI,CAAC;oBACvB,IAAI,KAAI,CAAC,UAAU,EAAE;wBACnB,IAAI,CAAC,GAAG,CAAC,EAAE;4BACT,WAAW,GAAG,KAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC;yBACtD;qBACF;yBAAM;wBACL,WAAW,GAAG,KAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;qBAClD;oBACD,IAAI,WAAW,IAAI,IAAI,EAAE;wBACvB,KAAK,GAAG,GAAG,GAAG,KAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC;qBACjE;iBACF;gBACD,IAAI,KAAK,IAAI,IAAI,EAAE;oBACjB,KAAK,GAAG,GAAG,GAAG,KAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,sBAAsB,CAAC,GAAG,GAAG,CAAC;iBAC5E;gBACD,OAAO;oBACL,GAAG,KAAA;oBACH,KAAK,OAAA;oBACL,OAAO,SAAA;oBACP,KAAK,OAAA;iBACN,CAAA;aACF,CAAC,CAAC;YACH,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAC,KAAK;gBACrD,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;;oBAEzB,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,IAAI;wBACnC,OAAO,IAAI,CAAC,KAAK,CAAC;qBACnB,CAAC,CAAC;;oBAEH,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;wBACzD,IAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBACrC,IAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;;wBAE5C,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;qBAChE;;oBAED,KAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;iBAChD;aACF,CAAC,CAAC;SACJ;;oBAhsCFX,YAAS,SAAC;;wBAET,QAAQ,EAAE,oBAAoB;wBAC9B,QAAQ,EAAE,qeAcT;wBACD,aAAa,EAAEC,oBAAiB,CAAC,IAAI;;qBAEtC;;;;;wBAnHOW,qBAAkB;wDAqSXC,SAAM,SAAC,iBAAiB;wBAnS/BzB,mBAAc;wBADCI,qBAAgB;wBATrCsB,WAAQ;wBAeF,2BAA2B;wBAlBjCC,aAAU;wBAoBJnB,eAAY;wBAAEoB,iBAAc;wBAQ3BC,eAAU;wBACV,qBAAqB;;;;4BA8G3BZ,YAAS,SAAC,OAAO;iCACjBA,YAAS,SAAC,YAAY;mCACtBA,YAAS,SAAC,cAAc;6BACxBD,QAAK;kCACLA,QAAK;+BACLA,QAAK;2BACLc,SAAM,SAAC,MAAM;2BACbA,SAAM,SAAC,MAAM;6BACbd,QAAK,SAAC,QAAQ;6BACdc,SAAM,SAAC,QAAQ;2BACfA,SAAM,SAAC,MAAM;2BACbA,SAAM,SAAC,MAAM;4BACbA,SAAM,SAAC,OAAO;6BACdA,SAAM,SAAC,QAAQ;oCACfA,SAAM,SAAC,eAAe;8BACtBA,SAAM,SAAC,SAAS;iCAMhBd,QAAK;iCACLA,QAAK;iCACLA,QAAK;6BACLA,QAAK;iCACLA,QAAK;qCACLA,QAAK;gCACLA,QAAK;wCACLA,QAAK;wCACLA,QAAK;8BAELA,QAAK;8BACLA,QAAK;iCAILA,QAAK;qCAILA,QAAK;mCAILA,QAAK;+BACLA,QAAK;gCAKLA,QAAK;6BAKLA,QAAK,SAAC,QAAQ;iCAcdA,QAAK,SAAC,YAAY;iCAyBjBA,QAAK,SAAC,YAAY;iCA8BnBA,QAAK,SAAC,YAAY;4BAyBlBA,QAAK,SAAC,OAAO;;QA4gChB,6BAAC;KAlsCD;;;QC7EE,+BAAoB,QAA4B,EACtC,iBAAmC,EACnC,eAA+B,EAC/B,aAA2B,EAC3B,aAA2B,EAC3B,aAA2B,EAC3B,oBAAyC;YAN/B,aAAQ,GAAR,QAAQ,CAAoB;YACtC,sBAAiB,GAAjB,iBAAiB,CAAkB;YACnC,oBAAe,GAAf,eAAe,CAAgB;YAC/B,kBAAa,GAAb,aAAa,CAAc;YAC3B,kBAAa,GAAb,aAAa,CAAc;YAC3B,kBAAa,GAAb,aAAa,CAAc;YAC3B,yBAAoB,GAApB,oBAAoB,CAAqB;YARzB,oBAAe,GAAY,IAAI,CAAC;SASnD;QACP,2CAAW,GAAX;YACE,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACzB,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;aACrC;YACD,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAC3B,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;aACvC;YACD,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;aACjC;SACF;QAEK,wCAAQ,GAAd;;;;;;;;4BAGqB,qBAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAA;;4BAA5C,aAAW,SAAiC;;4BAElD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAE,UAAA,SAAS;;gCAEpE,IAAM,EAAE,GAAG,IAAI,MAAM,CAAC,MAAI,SAAS,CAAC,KAAK,MAAG,EAAE,IAAI,CAAC,CAAC;gCACpD,IAAM,SAAS,GAAG,UAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAE,UAAA,CAAC;oCAC1D,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;iCACxB,CAAC,CAAC;;gCAEH,IAAI,SAAS,IAAI,IAAI,EAAE;;oCAErB,OAAO,KAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAIe,oBAAa,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,CAAC;iCAC1F;;gCAED,IAAM,UAAU,GAAG,UAAQ,CAAC,UAAU,CAAC,IAAI,CAAE,UAAA,CAAC;oCAC5C,OAAO,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,CAAC;iCACxC,CAAC,CAAC;gCACH,IAAI,UAAU,IAAI,IAAI,EAAE;oCACtB,OAAO,KAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAIA,oBAAa,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC,CAAC;iCAC3F;gCACD,IAAI,SAAS,CAAC,mBAAmB,EAAE;oCACjC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,WAAW,CAAC,EAAE;wCACpF,KAAI,CAAC,eAAe,GAAG,SAAS,CAAC,mBAAmB,CAAC,SAAS,CAAC;qCAChE;oCACD,KAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC,mBAAmB,CAAC;iCAC1D;gCACD,IAAI,SAAS,CAAC,kBAAkB,EAAE;oCAChC,KAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC,kBAAkB,CAAC;iCACxD;gCACD,IAAI,SAAS,CAAC,WAAW,EAAE;oCACzB,KAAI,CAAC,WAAW,GAAG,KAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;iCAC1E;gCACD,IAAI,SAAS,CAAC,eAAe,EAAE;oCAC7B,KAAI,CAAC,eAAe,GAAG,KAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;iCAClF;gCACD,IAAI,SAAS,CAAC,QAAQ,EAAE;oCACtB,KAAI,CAAC,QAAQ,GAAG,KAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;iCACpE;;gCAED,IAAM,oBAAoB,GAAG,0BAA0B,CAAC,IAAI,CAAC,KAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;;gCAE5F,IAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAE,UAAA,GAAG;oCACnD,OAAO,GAAG,CAAC,SAAS,KAAK,iBAAiB,IAAI,GAAG,CAAC,YAAY,KAAK,cAAc,CAAC;iCACnF,CAAC,CAAC;gCACH,IAAI,MAAM,EAAE;oCACV,IAAM,KAAG,GAAkB,EAAE,CAAC;oCAC9B,KAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAE,UAAA,KAAK;wCACvD,KAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;qCAChC,CAAC,CAAC;oCACH,MAAM,CAAC,YAAY,GAAG,OAAK,KAAG,CAAC,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC;iCAClE;;gCAED,KAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;oCAChC,KAAK,EAAE,SAAS,CAAC,IAAI;iCACtB,EAAE,oBAAoB,CAAC,CAAC;;gCAEzB,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;;gCAEvB,KAAI,CAAC,kBAAkB,GAAG,KAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAA,QAAQ;oCACxE,IAAI,QAAQ,IAAI,QAAQ,KAAK,QAAQ,EAAE;wCACrC,KAAI,CAAC,aAAa,CAAC,IAAI,CACrB,KAAI,CAAC,WAAW,EAChB,KAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAC9D,CAAC;wCACF,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;qCACxB;iCACF,CAAC,CAAC;;gCAEH,KAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;oCAChC,QAAQ,EAAE,KAAI,CAAC,QAAQ;oCACvB,WAAW,EAAE,KAAI,CAAC,WAAW;oCAC7B,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;oCACtC,WAAW,EAAE,IAAI,IAAI;iCACtB,CAAC,CAAC;6BACJ,CAAC,CAAC;;;;4BAEH,OAAO,CAAC,KAAK,CAAC,KAAG,CAAC,CAAC;4BACnB,sBAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAG,CAAC,EAAC;;;;;SAE5C;;;;;QAOD,0CAAU,GAAV,UAAW,IAA6B;YACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;SACvC;;;;QAKD,sCAAM,GAAN;YAAA,iBAyBC;YAxBC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE;;gBAEnE,IAAM,OAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAClC,OAAO,IAAI,CAAC,aAAa,CAAC,iBAAiB,CACzC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,yBAAyB,CAAC,EACzD,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,2BAA2B,CAAC,EAC3DC,iBAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAA,MAAM;oBAClC,IAAI,MAAM,KAAK,IAAI,EAAE;wBACnB,KAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAK,CAAC,CAAC,IAAI,CAAC;4BAC9D,KAAI,CAAC,aAAa,CAAC,IAAI,CACrB,KAAI,CAAC,WAAW,GAAG,GAAG,GAAG,KAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,gCAAgC,CAAC,EACzF,KAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAK,CAAC,MAAM,KAAK,CAAC;gCAChD,8BAA8B,GAAG,+BAA+B,GAC9D,EAAE,KAAK,EAAE,OAAK,CAAC,MAAM,EAAE,CAAC,CAC7B,CAAC;4BACF,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;yBACxB,CAAC,CAAC,KAAK,CAAC,UAAA,GAAG;4BACV,KAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,EAAE;gCAChC,YAAY,EAAE,GAAG;6BAClB,CAAC,CAAC;yBACJ,CAAC,CAAC;qBACJ;iBACF,CAAC,CAAC;aACN;SACF;;oBAjKFpB,YAAS,SAAC;wBACT,QAAQ,EAAE,mBAAmB;wBAC7B,ylEAA6C;qBAC9C;;;;;wBAdQY,qBAAkB;wBAClBpB,qBAAgB;wBAEhBJ,mBAAc;wBAGdiC,eAAY;wBAGZC,eAAY;wBAHkBf,eAAY;wBAAEgB,sBAAmB;;;;gCAgBrEnB,QAAK,SAAC,WAAW;+BACjBA,QAAK,SAAC,UAAU;kCAChBA,QAAK,SAAC,aAAa;sCACnBA,QAAK,SAAC,iBAAiB;yCACvBA,QAAK,SAAC,oBAAoB;0CAC1BA,QAAK,SAAC,qBAAqB;4BAC3BC,YAAS,SAAC,OAAO;sCACjBD,QAAK,SAAC,iBAAiB;;QAiJ1B,4BAAC;KAnKD;;;QCmBgDd,8CAAmB;QAuB/D,oCAAY,MAAc,EACd,cAA8B,EACtB,iBAAmC,EACnC,QAA4B,EAC5B,aAA2B,EAC3B,aAA2B,EAC3B,SAA0B;YAN9C,YAOI,kBAAM,MAAM,EAAE,cAAc,CAAC,SAShC;YAdmB,uBAAiB,GAAjB,iBAAiB,CAAkB;YACnC,cAAQ,GAAR,QAAQ,CAAoB;YAC5B,mBAAa,GAAb,aAAa,CAAc;YAC3B,mBAAa,GAAb,aAAa,CAAc;YAC3B,eAAS,GAAT,SAAS,CAAiB;YAvBrC,eAAS,GAAG,wBAAwB,CAAC;YAGrC,kBAAY,GAAG,QAAQ,CAAC;YAGxB,kBAAY,GAAG,oCAAoC,CAAC;YAEtD,aAAO,GAAG,KAAK,CAAC;YAId,aAAO,GAAQ,IAAIQ,eAAY,EAAO,CAAC;;YAc5C,KAAI,CAAC,UAAU,GAAG,UAAU,CAAC;;YAE7B,KAAI,CAAC,UAAU,GAAG,sBAAsB,CAAC;;YAEzC,KAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;;YAE9B,KAAI,CAAC,YAAY,GAAG,sBAAsB,CAAC;;SAC9C;QAED,sBAAI,4CAAI;iBAAR;gBACE,OAAO,IAAI,CAAC,aAAa,CAAC;aAC3B;;;WAAA;QACD,6CAAQ,GAAR;YAAA,iBAgBC;YAfG,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAC,KAAK;gBACpD,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE;oBACzB,IAAI,QAAQ,GAAG,CAAC,CAAC;oBACjB,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE;wBACpB,QAAQ,GAAG,CAAC,CAAC;qBAChB;yBAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,GAAG,EAAE;wBAC7B,QAAQ,GAAG,GAAG,CAAC;qBAClB;yBAAM;wBACH,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;qBAC7B;oBACD,KAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,QAAQ,CAAC;oBACxC,KAAI,CAAC,YAAY,EAAE,CAAC;iBACvB;aACJ,CAAC,CAAC;SAEN;QAED,oDAAe,GAAf;YAAA,iBASC;YARC,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;gBACjD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAC7B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAC,KAAU;oBAC5E,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,EAAE;wBACpF,KAAI,CAAC,gBAAgB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;qBACzC;iBACH,CAAC,CAAC;aACJ;SACF;QAED,gDAAW,GAAX;YACI,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC1B,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;aAC1C;YACD,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC1B,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;aAC1C;YACD,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC1B,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;aAC1C;SACJ;QAED,2CAAM,GAAN;YACI,IAAI,IAAI,CAAC,OAAO,EAAE;gBACd,OAAO;aACV;;YAED,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;gBAC7B,OAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;aAC9C;SACJ;QAEK,uCAAE,GAAR;;;;oBACI,IAAI;wBACA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;wBACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;wBACtB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI;4BAC/C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;;4BAEnE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;yBACjD;;wBAEL,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAC,MAAM;4BAC1B,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;4BACrB,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gCACd,QAAQ,EAAE,GAAG;6BAChB,CAAC,CAAC;4BACH,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;;gCAE9C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;oCACrB,KAAI,CAAC,SAAS,GAAG,IAAI,KAAK,CAAC,KAAI,CAAC,iBAAiB,CAAC,OAAO,CAClD,KAAI,CAAC,YAAY,qBAAkB,CAAC,CAAC,CAAC;iCAChD;qCAAM;oCACH,KAAI,CAAC,SAAS,GAAG,IAAI,KAAK,CAAC,KAAI,CAAC,iBAAiB,CAAC,OAAO,CACpD,KAAI,CAAC,YAAY,sBAAmB,EACrC,MAAM,CAAC,CAAC,CAAC;iCAChB;gCACD,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC;oCACd,QAAQ,EAAE,CAAC;iCACd,CAAC,CAAC;gCACH,KAAI,CAAC,YAAY,EAAE,CAAC;gCACpB,OAAO;6BACV;4BACD,IAAI,KAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;gCAC7B,KAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;6BACtC;yBACJ,EAAE,UAAC,GAAG;4BACH,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;4BACrB,KAAI,CAAC,SAAS,GAAG,GAAG,CAAC;4BACrB,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gCACd,QAAQ,EAAE,CAAC;6BACd,CAAC,CAAC;yBACN,CAAC,CAAC;qBACN;oBAAC,OAAO,GAAG,EAAE;wBACV,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;wBACrB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;qBACxB;;;;SACJ;QAED,iDAAY,GAAZ;YACI,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;SAClF;QAED,iDAAY,GAAZ;YACI,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;SAClF;;oBAtKJE,YAAS,SAAC;wBACP,QAAQ,EAAE,yBAAyB;wBACnC,y4FAAmD;wBAcnD,aAAa,EAAEC,oBAAiB,CAAC,IAAI;iCAZjC,kQAUC;qBAGR;;;;;wBA3BuBZ,WAAM;wBAAtBD,mBAAc;wBADdI,qBAAgB;wBAEhBoB,qBAAkB;wBAElBS,eAAY;wBAAEd,eAAY;wBAE1BiB,kBAAe;;;;4BA4BlBpB,QAAK;gCACLA,QAAK;kCACLA,QAAK;mCACLA,QAAK;mCACLA,QAAK;2BACLc,SAAM;wCACNd,QAAK;mCACLA,QAAK;wCAGLC,YAAS,SAAC,UAAU;wCACpBA,YAAS,SAAC,mBAAmB;oCAC7BA,YAAS,SAAC,eAAe;8BACzBD,QAAK;8BACLA,QAAK;;QAqIV,iCAAC;KAAA,CAxJ+CE,2BAAmB;;;QC9BnE;YAKc,iBAAY,GAAG,IAAIR,eAAY,EAAE,CAAC;SAgB/C;QAdG,sBACK,oDAAM;iBADX;gBAEI,OAAO,IAAI,CAAC,OAAO,CAAC;aACvB;iBAED,UAAW,KAAK;gBACZ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACxB;;;WAJA;QAMD,qDAAU,GAAV,UAAW,KAAoB;YAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;gBACxB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACxC;SACJ;;oBApBJE,YAAS,SAAC;wBACP,QAAQ,EAAE,EAAE;qBACb;;;mCAGEkB,SAAM;6BAENd,QAAK;;QAcV,uCAAC;KArBD;;;QCqBiDd,+CAAgC;QAY/E,qCAAoB,QAA4B,EAC5B,iBAAmC,EACnC,eAA+B,EAC/B,KAAiB;YAHrC,YAKE,iBAAO,SACR;YANmB,cAAQ,GAAR,QAAQ,CAAoB;YAC5B,uBAAiB,GAAjB,iBAAiB,CAAkB;YACnC,qBAAe,GAAf,eAAe,CAAgB;YAC/B,WAAK,GAAL,KAAK,CAAY;YAX5B,UAAI,GAAQ,EAAE,CAAC;YAEd,iBAAW,GAAG,IAAIQ,eAAY,EAAO,CAAC;YACtC,aAAO,GAAG,IAAIA,eAAY,EAA0C,CAAC;YAC/E,gBAAU,GAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;YAExB,sBAAgB,GAAG,IAAI,CAAC;;SAQ9B;QAED,iDAAW,GAAX,UAAY,OAAsB;YAAlC,iBAiCC;YAhCC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;gBACzD,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE;oBACxB,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY;wBAC3B,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE;wBACzD,IAAI,CAAC,QAAQ,EAAE,CAAC;qBACjB;iBACF;aACF;YACD,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE;gBAC5D,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,EAAE;oBAC3B,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY;wBAC9B,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE;wBAC/D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,UAAC,IAAI;;4BAEjE,KAAI,CAAC,IAAI,GAAG,IAAI,CAAC;;4BAEjB,KAAI,CAAC,QAAQ,EAAE,CAAC;yBACjB,CAAC,CAAC,KAAK,CAAC,UAAC,GAAG;4BACX,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;4BACtE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;yBACpB,CAAC,CAAC;qBACJ;iBACF;aACF;YACD,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;gBAC3D,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE;oBAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;oBACzD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;wBACpB,UAAU,EAAE,IAAI,CAAC,UAAU;qBAC5B,CAAC,CAAC;iBACJ;aACF;SACF;QAED,8CAAQ,GAAR;YAAA,iBAqBC;YApBC,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,IAAI2B,8BAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3D,IAAIC,6BAAqB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnE,IAAI,CAAC,UAAU,GAAG;oBAChB,IAAI,EAAE,IAAI,CAAC,MAAM;iBAClB,CAAC;gBACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;oBAChB,MAAM,EAAE,IAAI;iBACb,CAAC,CAAC;gBACH,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;oBACpB,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB,CAAC,CAAC;gBACH,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;gBAC9B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAE,UAAA,MAAM;oBAC3D,KAAI,CAAC,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC;oBAC9B,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC;wBACpB,UAAU,EAAE,KAAI,CAAC,UAAU;qBAC5B,CAAC,CAAC;iBACJ,CAAC,CAAC;aACJ;SACF;QAED,8CAAQ,GAAR,UAAS,KAAa;YAAtB,iBAoBC;YAnBC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG;gBACzD,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;oBACjF,IAAM,KAAK,GAAG,KAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;oBAEtD,IAAM,aAAa,GAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;;oBAEvE,IAAM,aAAa,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;;oBAEnF,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,EAAE;wBACpC,MAAM,CAAC,cAAc,CAAC,KAAI,CAAC,MAAM,EAAE,GAAG,EAAE;4BACtC,YAAY,EAAG,IAAI;4BACnB,UAAU,EAAE,IAAI;4BAChB,KAAK,EAAG,KAAK;yBACd,CAAC,CAAC;qBACJ;yBAAM;wBACL,OAAO,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;qBACzB;iBACF;aACF,CAAC,CAAC;SACJ;QAED,gDAAU,GAAV,UAAW,IAAgB;YACzB,IAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;YACvD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,EAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7H,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC;SAClD;QAED,qDAAe,GAAf;;SAEC;QAED,iDAAW,GAAX;YACE,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAC3B,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;aACvC;SACF;;oBA7HF1B,YAAS,SAAC;wBACT,QAAQ,EAAE,0BAA0B;wBACpC,QAAQ,EAAE,mSAKT;wBAED,aAAa,EAAEC,oBAAiB,CAAC,IAAI;;qBACtC;;;;;wBAnBOW,qBAAkB;wBAIlBpB,qBAAgB;wBAHhBJ,mBAAc;wBAMb6B,eAAU;;;;oCAgBhBZ,YAAS,SAAC,iBAAiB;2BAC3BD,QAAK;8BACLA,QAAK;kCACLc,SAAM;8BACNA,SAAM;;QA4GT,kCAAC;KAAA,CAnHgD,gCAAgC;;ICDjF;IACA;AACA,QAAa,8BAA8B,GAAG,m+JAoG7C,CAAC;AAYF;QAUqD5B,mDAAmB;QAsCtE,yCACE,OAAe,EACf,eAA+B,EACrB,QAA4B,EAC5B,2BAAwD,EACxD,QAAkB;YAL9B,YAOE,kBAAM,OAAO,EAAE,eAAe,CAAC,SAGhC;YAPW,cAAQ,GAAR,QAAQ,CAAoB;YAC5B,iCAA2B,GAA3B,2BAA2B,CAA6B;YACxD,cAAQ,GAAR,QAAQ,CAAU;YAtBT,gBAAU,GAAG,EAAE,CAAC;YAEhB,gBAAU,GAAkB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAE/D,kBAAY,GAAG,CAAC,CAAC;YACjB,aAAO,GAAG,KAAK,CAAC;YAChB,qBAAe,GAAG,CAAC,CAAC;YACpB,oBAAc,GAAe,CAAC,+BAA+B,CAAC,kBAAkB,CAAC,CAAC;YACjE,mBAAa,GAAG,+BAA+B,CAAC,kBAAkB,CAAC;YAGpF,cAAQ,GAAa;gBAC1B,UAAU,EAAE,IAAI;aACjB,CAAC;YAYA,KAAI,CAAC,UAAU,GAAG,sBAAsB,CAAC;YACzC,KAAI,CAAC,SAAS,GAAG,IAAIM,eAAY,EAAE,CAAC;;SACrC;QA/CD,yDAAe,GAAf;YAAA,iBAMC;YALC,UAAU,CAAC;gBACT,IAAI,KAAI,CAAC,aAAa,IAAI,KAAI,CAAC,aAAa,CAAC,aAAa,EAAE;oBAC1D,KAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;iBAC1C;aACF,EAAE,CAAC,CAAC,CAAC;SACP;QA2CO,oDAAU,GAAlB,UAAmB,aAAa;YAC9B,IAAM,KAAK,GAAG,aAAa,CAAC,kBAAkB,CAAC;YAC/C,IAAM,MAAM,GAAG,EAAE,CAAC;YAClB,IAAI,KAAK,IAAI,IAAI,EAAE;gBACjB,OAAO,MAAM,CAAC;aACf;YACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAA,IAAI;gBAC7B,IAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9B,IAAI,MAAM,CAAC,cAAc,KAAK,OAAO,EAAE;oBACrC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACnB;aACF,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;SACtB;QAEM,mDAAS,GAAhB;YACE,OAAO,EAAE,CAAC;SACX;QAED,kDAAQ,GAAR;YAAA,iBAwCC;YAtCC,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC;YACnC,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;;YAExC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,UAAA,IAAI;;gBAEzD,IAAI,IAAI,CAAC,KAAK,EAAE;oBACd,KAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;iBAC9B;gBAED,IAAI,IAAI,CAAC,MAAM,EAAE;oBACf,KAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;iBAChC;gBACD,IAAI,KAAI,CAAC,WAAW,EAAE;oBACpB,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAI,CAAC,cAAc,EAAE,KAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;iBAChF;;;;;gBAKD,IAAM,MAAM,GAAG,KAAI,CAAC,SAAS,EAAE,CAAC;gBAChC,MAAM,CAAC,OAAO,CAAC,UAAA,KAAK;oBAClB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;wBACrD,KAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;qBAC3B;iBACF,CAAC,CAAC;gBAEH,KAAI,CAAC,yBAAyB,GAAG,KAAI,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,UAAC,MAAM;oBACjF,IAAI,KAAI,CAAC,WAAW,EAAE;;wBAEpB,KAAI,CAAC,aAAa,GAAG,+BAA+B,CAAC,kBAAkB,CAAC;;wBAExE,KAAI,CAAC,cAAc,GAAG,CAAC,+BAA+B,CAAC,kBAAkB,CAAC,CAAC;;wBAE3E,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAI,CAAC,cAAc,EAAE,KAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;qBAChF;iBACF,CAAC,CAAC;aAEJ,CAAC,CAAC;SACJ;QAED,gDAAM,GAAN;YACE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;SACrB;QAED,4CAAE,GAAF;YACE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;SACrB;QAED,qDAAW,GAAX;YACE,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;aACjC;SACF;QAED,oDAAU,GAAV,UAAW,IAA6B;YACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YACtC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;;YAE5C,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,KAAK,CAAC,EAAE;gBAC7D,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;aAChD;SAEF;QAED,sDAAY,GAAZ;;;YAGE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC5D;QAED,kDAAQ,GAAR;;;YAGE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACxD;QAED,qDAAW,GAAX;YACE,IAAM,IAAI,GAAG,IAAI,CAAC;YAClB,IAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;;YAE/C,IAAM,eAAe,GAAa,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACxD,eAAe,CAAC,KAAK,IAAI,CAAC,CAAC;YAC3B,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC;;YAEhC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC;;YAErF,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE;gBACtB,IAAM,QAAQ,GAAa,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACjD,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;gBACpB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;aAC1B,CAAC,CAAC;;YAEH,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE;;gBAEtB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,IAAM,QAAQ,GAAa,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACjD,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;gBACpB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;aAC1B,CAAC,CAAC;SACJ;QAED,mDAAS,GAAT;;;YAGE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACzD;QAED,kDAAQ,GAAR;;;YAGE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACxD;QAED,mDAAS,GAAT,UAAU,KAAa;YACrB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;SACrD;QAED,iDAAO,GAAP,UAAQ,KAAoB;YAC1B,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;;gBAEnD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAoB,KAAK,CAAC,MAAO,CAAC,KAAK,CAAC,CAAC;aACnE;SACF;QAED,kDAAQ,GAAR;;YAEE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC5C;;;;;;;;;;;QAYD,oDAAU,GAAV,UACE,WAAgB,EAChB,mBAAwB,EACxB,UAAe;YADf,oCAAA;gBAAA,wBAAwB;;;YAIxB,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE;gBACxD,OAAO,EAAE,CAAC;aACX;YAED,IAAI,UAAU,CAAC,MAAM,IAAI,IAAI,EAAE;gBAC7B,OAAO,EAAE,CAAC;aACX;YAED,IAAM,gBAAgB,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAA,SAAS;gBAC1D,OAAA,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC;aAAA,CACxE,CAAC;YAEF,IAAI,gBAAgB,IAAI,IAAI,EAAE;gBAC5B,OAAO,EAAE,CAAC;aACX;YAED,IAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAEvD,IAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,KAAK,IAAI;kBACpD,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE;kBAChC,EAAE,CAAC;YAEP,IAAI,gBAAwB,CAAC;;YAG7B,IAAI,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBACrC,IAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;gBACzE,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE;oBACnE,KAAK,EAAE,OAAO;iBACf,CAAC,CAAC;aAEJ;iBAAM,IAAI,iBAAiB,KAAK,WAAW,EAAE;gBAC5C,gBAAgB,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;oBAClF,KAAK,EAAE,KAAK;iBACb,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;aAC3B;iBAAM;gBACL,gBAAgB,GAAG,EAAE,CAAC;aACvB;YAED,OAAO,CAAC,gBAAgB,CAAC,CAAC;SAC3B;QAED,wDAAc,GAAd,UAAe,KAA0C;YACvD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;SAC5B;;;;;;;;QASK,wDAAc,GAApB,UAAqB,MAAM;;;;;;;4BAEzB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE;gCAClE,OAAO,CAAC,IAAI,CAAC,kCAAkC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gCACnE,sBAAO;6BACR;;;;4BAKuB,qBAAM,IAAI,CAAC,2BAA2B,CAAC,SAAS,EAAE,EAAA;;4BAAxE,mBAAmB,GAAG,SAAkD,CAAC;;;;4BAEzE,mBAAmB,GAAG,EAAE,CAAC;;;4BAGrB,WAAW,GAAG,EAAE,CAAC;4BAEvB,IAAI,MAAM,EAAE;gCACV,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;gCAC5B,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAClC,IAAI,CAAC,WAAW,EAChB,mBAAmB,EACnB,MAAM,CACP,CAAC;6BACH;iCAAM;;gCAEL,IAAI,CAAC,aAAa,GAAG,+BAA+B,CAAC,kBAAkB,CAAC;6BACzE;;4BAGD,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;4BAE/B,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;4BACjF,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;4BAC9D,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC;4BACjC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;;;;;SAC5B;QA3SuB,kDAAkB,GAAG;YAC3C,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,IAAI;SACb,CAAC;;oBAtBHI,YAAS,SAAC;;wBAET,QAAQ,EAAE,0BAA0B;wBACpC,QAAQ,EAAE,8BAA8B;iCAEtC,UAEC;qBAEJ;;;;;wBA9IwBX,WAAM;wBAAtBD,mBAAc;wBAIdwB,qBAAkB;wBAClB,2BAA2B;wBAC3BlB,eAAQ;;;;oCAuJdW,YAAS,SAAC,eAAe;iCACzBA,YAAS,SAAC,YAAY;qCACtBA,YAAS,SAAC,gBAAgB;qCAC1BA,YAAS,SAAC,gBAAgB;oCAC1BA,YAAS,SAAC,eAAe;kCACzBD,QAAK,SAAC,aAAa;qCACnBA,QAAK,SAAC,gBAAgB;iCACtBA,QAAK,SAAC,YAAY;iCAClBA,QAAK,SAAC,YAAY;iCAClBA,QAAK,SAAC,YAAY;oCAMlBA,QAAK,SAAC,eAAe;;QAwRxB,sCAAC;KAAA,CArToDE,2BAAmB;;;QC3H3BhB,2CAA+B;QAK1E,iCAAY,MAAc,EACxB,cAA8B,EAC9B,OAA2B,EAC3B,2BAAwD,EACxD,QAAkB,EACV,SAAqB,EACrB,EAAc;YANxB,YAOE,kBAAM,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,2BAA2B,EAAE,QAAQ,CAAC,SAC9E;YAHS,eAAS,GAAT,SAAS,CAAY;YACrB,QAAE,GAAF,EAAE,CAAY;YATjB,aAAO,GAAsB,IAAIQ,eAAY,EAAE,CAAC;;SAWtD;QAED,iDAAe,GAAf;YAAA,iBAOC;YANC,iBAAM,eAAe,WAAE,CAAC;YACxB,UAAU,CAAC;gBACT,IAAI,KAAI,CAAC,aAAa,IAAI,KAAI,CAAC,aAAa,CAAC,aAAa,EAAE;oBAC1D,KAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;iBAC1C;aACF,EAAE,CAAC,CAAC,CAAC;SACP;QAEY,oCAAE,GAAf;;;oBACE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;oBACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;;;SACzB;QAEY,wCAAM,GAAnB;;;oBACE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;oBACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;;;SAC7B;;oBA9CFE,YAAS,SAAC;;wBAET,QAAQ,EAAE,qBAAqB;wBAC/B,gpLAA+C;wBAS/C,aAAa,EAAEC,oBAAiB,CAAC,IAAI;iCAPnC,qGAKC;qBAGJ;;;;;wBApBwBZ,WAAM;wBAAtBD,mBAAc;wBAEdwB,qBAAkB;wBADlB,2BAA2B;wBAI3BlB,eAAQ;wBADRQ,gBAAU;wBADgBa,aAAU;;;;oCAqB1CV,YAAS,SAAC,eAAe;;QA+B5B,8BAAC;KAAA,CAlC4C,+BAA+B;;;QCf1E,+BAAoB,MAAoB;YAApB,WAAM,GAAN,MAAM,CAAc;;SAEvC;QAED,sCAAM,GAAN,UAAO,YAAiB;YAAxB,iBAoBC;YAnBC,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;gBACjC,IAAI;oBACF,IAAM,QAAQ,GAAG,KAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,uBAAuB,EAAE;wBACvE,KAAK,EAAE,sBAAsB;wBAC7B,mBAAmB,EAAE,IAAI;wBACzB,QAAQ,EAAE,IAAI;wBACd,YAAY,EAAE,YAAY;qBAC3B,CAAC,CAAC;oBACH,IAAM,cAAY,GAA4B,QAAQ,CAAC,OAAO,CAAC;oBAC/D,cAAY,CAAC,OAAO,CAAC,SAAS,CAAC,UAAC,MAAM;wBACpC,OAAO,OAAO,CAAC;4BACb,MAAM,EAAE,MAAM;4BACd,KAAK,EAAE,cAAY,CAAC,aAAa,CAAC,QAAQ;yBAC3C,CAAC,CAAC;qBACJ,CAAC,CAAC;iBACJ;gBAAC,OAAO,GAAG,EAAE;oBACZ,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;iBACpB;aACF,CAAC,CAAC;SACJ;;oBA3BFR,aAAU;;;;;wBAFFU,eAAY;;;QA+BrB,4BAAC;KA7BD;;;QCII,4CAAoB,KAAiB;YAAjB,UAAK,GAAL,KAAK,CAAY;SAAI;QACzC,oDAAO,GAAP,UACI,KAA6B,EAC7B,KAA0B;;YAG1B,IAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;;YAElD,IAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;;YAErD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAgB,KAAK,SAAI,IAAI,UAAO,CAAC,CAAC,SAAS,EAAE,CAAC;SAC3E;;oBAbJV,aAAU;;;;;wBAFHoB,eAAU;;;QAgBlB,yCAAC;KAdD,IAcC;;QAIG,6CAAoB,KAAiB;YAAjB,UAAK,GAAL,KAAK,CAAY;SAAI;QACzC,qDAAO,GAAP,UACI,KAA6B,EAC7B,KAA0B;;YAG1B,IAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;;YAElD,IAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;;YAErD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAgB,KAAK,gBAAW,IAAI,UAAO,CAAC,CAAC,SAAS,EAAE,CAAC;SAClF;;oBAbJpB,aAAU;;;;;wBAlBHoB,eAAU;;;QAgClB,0CAAC;KAdD;;;QCbE,+BAAoB,OAAe,EAAU,eAA+B;YAA5E,iBAQC;YARmB,YAAO,GAAP,OAAO,CAAQ;YAAU,oBAAe,GAAf,eAAe,CAAgB;YAC1E,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK;gBAC3B,IAAK,KAAK,YAAYU,oBAAe,EAAE;oBACrC,IAAI,KAAI,CAAC,YAAY,EAAE;wBACrB,KAAI,CAAC,YAAY,GAAG,IAAI,CAAC;qBAC1B;iBACF;aACF,CAAC,CAAC;SACJ;QAED,sBAAI,8CAAW;iBAAf;gBACE,OAAO,IAAI,CAAC,YAAY,CAAC;aAC1B;iBAED,UAAgB,cAAsC;gBACpD,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC;aACpC;;;WAJA;;oBAjBF9B,aAAU,SAAC;wBACV,UAAU,EAAE,MAAM;qBACnB;;;;;wBALuDR,WAAM;wBAAtDD,mBAAc;;;;oCADtB;KAIA;;;QCqCE,wCAAsB,QAA4B,EAC5B,eAA+B,EACjC,KAAiB,EACjB,YAA4B,EAC5B,WAA+B,EAC/B,WAAwB,EACxB,eAAsC;YANpC,aAAQ,GAAR,QAAQ,CAAoB;YAC5B,oBAAe,GAAf,eAAe,CAAgB;YACjC,UAAK,GAAL,KAAK,CAAY;YACjB,iBAAY,GAAZ,YAAY,CAAgB;YAC5B,gBAAW,GAAX,WAAW,CAAoB;YAC/B,gBAAW,GAAX,WAAW,CAAa;YACxB,oBAAe,GAAf,eAAe,CAAuB;YAb1D,WAAM,GAAQ,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;YAG1C,YAAO,GAAG,EAAE,CAAC;SAWZ;QACD,iDAAQ,GAAR;SACC;QACD,wDAAe,GAAf;YAAA,iBAeC;YAdC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;YACtE,IAAI,CAAC,UAAU,GAAG,qBAAqB,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,gBAAgB,CAAC;YAC1F,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAC,OAAO,EAAE,IAAIwC,eAAS,CAAC,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC;YAC7F,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAC,IAAI;gBAClD,IAAI,IAAI,EAAE;oBACR,KAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC;oBACrC,IAAI,KAAI,CAAC,kBAAkB,EAAE;wBAC3B,IAAI,KAAI,CAAC,eAAe,CAAC,WAAW,EAAE;4BACpC,KAAI,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,KAAI,CAAC,kBAAkB,CAAC,CAAC;yBACzE;qBACF;oBACD,KAAI,CAAC,aAAa,EAAE,CAAC;iBACtB;aACF,CAAC,CAAC;SACJ;QACO,sDAAa,GAArB;YAAA,iBAqBC;YApBC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,YAAY,CAAC,OAAO,CAAE,UAAC,MAAM,EAAE,CAAC;gBACnC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;oBAClB,IAAM,OAAO,GAAG;wBACd,EAAE,EAAE,MAAM,CAAC,IAAI;wBACf,IAAI,EAAE,MAAM,CAAC,KAAK;qBACnB,CAAC;oBACF,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAC5B;aACF,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAC3B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAE,UAAC,MAAM,EAAE,CAAC;oBAC9B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;oBACrB,MAAM,CAAC,KAAK,GAAG,KAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;iBAC5D,CAAC,CAAC;gBACH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,EAAE,CAAC;oBACzB,IAAM,OAAO,GAAG,IAAI7B,iBAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC7C,KAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACzD,CAAC,CAAC;aACJ;SACF;QAED,0DAAiB,GAAjB,UAAkB,oBAAsC;YACtD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;SAC9D;QAED,0DAAiB,GAAjB;YAAA,iBASC;YARC,IAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;iBAC/C,GAAG,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,GAAG,KAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,GAAA,CAAC;iBAC5C,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,KAAK,IAAI,GAAA,CAAC,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;YAC9D,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;gBACpC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;aACpE;YACD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACtB;QAED,gDAAO,GAAP;YACE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACtB;QAED,2DAAkB,GAAlB,UAAmB,GAAO;YAAP,oBAAA;gBAAA,OAAO;;YACxB,IAAM,SAAS,GAAgB,UAAC,SAAoB;gBAClD,IAAM,aAAa,GAAG,SAAS,CAAC,QAAQ;qBACrC,GAAG,CAAC,UAAA,OAAO,IAAI,OAAA,OAAO,CAAC,KAAK,GAAA,CAAC;qBAC7B,MAAM,CAAC,UAAC,IAAI,EAAE,IAAI,IAAK,OAAA,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAA,EAAE,CAAC,CAAC,CAAC;gBAExD,OAAO,aAAa,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;aACzD,CAAC;YAEF,OAAO,SAAS,CAAC;SAClB;;oBAjGFC,YAAS,SAAC;wBACT,QAAQ,EAAE,6BAA6B;wBACvC,s9CAAuD;wBACvD,aAAa,EAAEC,oBAAiB,CAAC,IAAI;qBACtC;;;;;wBAXQW,qBAAkB;wBADlBxB,mBAAc;wBATrB2B,aAAU;wBAYHc,oBAAc;wBAEfC,qBAAkB;wBACPC,iBAAW;wBAFtB,qBAAqB;;;;4BAY1B3B,QAAK;8CACLC,YAAS,SAAC,yBAAyB;;QAyFtC,qCAAC;KAlGD;;;QCQkDf,gDAAgC;QA8BhF,sCAAuB,QAA4B,EAC5B,eAA+B,EAC/B,QAAkB,EACpB,aAA6B,EAC7B,YAAgC,EAChC,UAA4B,EAC5B,4BAAyD,EACzD,SAAuB,EACvB,OAAe,EACf,MAAoB;YATzC,YAS6C,iBAAO,SAAG;YAThC,cAAQ,GAAR,QAAQ,CAAoB;YAC5B,qBAAe,GAAf,eAAe,CAAgB;YAC/B,cAAQ,GAAR,QAAQ,CAAU;YACpB,mBAAa,GAAb,aAAa,CAAgB;YAC7B,kBAAY,GAAZ,YAAY,CAAoB;YAChC,gBAAU,GAAV,UAAU,CAAkB;YAC5B,kCAA4B,GAA5B,4BAA4B,CAA6B;YACzD,eAAS,GAAT,SAAS,CAAc;YACvB,aAAO,GAAP,OAAO,CAAQ;YACf,YAAM,GAAN,MAAM,CAAc;YAlCzB,eAAS,GAAG,IAAI,CAAC;YACjB,eAAS,GAAG,IAAI,CAAC;YACjB,cAAQ,GAAG,IAAI,CAAC;YAChB,sBAAgB,GAAG,KAAK,CAAC;YAEZ,gBAAU,GAA2C,IAAIQ,eAAY,EAA4B,CAAC;YAClG,gBAAU,GAAqC,IAAIA,eAAY,EAAsB,CAAC;YAgB5G,oBAAc,GAAQ,EAAE,CAAC;YACzB,kBAAY,GAAQ,IAAI,CAAC;;SAWuB;QA3BvD,sBAAW,8CAAI;iBAMf;gBACE,IAAI,IAAI,CAAC,UAAU,EAAE;oBACnB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC;iBAC5C;aACF;iBAVD,UAAgB,KAAa;gBAC3B,IAAI,IAAI,CAAC,UAAU,EAAE;oBACnB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC;iBAC7C;aACF;;;WAAA;QAyBM,+CAAQ,GAAf;YAAA,iBAgBC;YAfC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,UAAC,MAAM;gBACvE,IAAI,MAAM,IAAI,IAAI,EAAE;oBAClB,OAAO;iBACR;;gBAED,KAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC;;;oBAG7B,IAAI,KAAI,CAAC,gBAAgB,EAAE;wBACzB,KAAI,CAAC,sBAAsB,GAAG,KAAI,CAAC,eAAe,CAAC,WAAW,CAAC,SAAS,CAAC,UAAC,WAAW;4BACnF,KAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;yBACpC,CAAC,CAAC;qBACJ;iBACF,CAAC,CAAC;aACJ,CAAC,CAAC;SACN;;;;;QAMO,uDAAgB,GAAxB,UAAyB,WAAgB;YAAzC,iBA4EC;YA3EC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;YACjB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE;;gBAE1D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;;gBAEtB,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC;gBAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACrC;iBAAM;gBACL,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;aAChB;YAED,IAAI,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YAElD,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE;;gBAE1D,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;;gBAEvB,IAAI,IAAI,CAAC,cAAc,EAAE;oBACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAC,IAAI;wBAChD,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC;qBACpC,CAAC,CAAC;oBACH,IAAI,IAAI,CAAC,YAAY,EAAE;wBACrB,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;qBACzC;iBACF;aACF;iBAAM;gBACL,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;aAC1B;YAED,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,UAAC,GAAG;;gBAEnC,IAAI,KAAI,CAAC,KAAK,IAAI,KAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;oBACjE,OAAO,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAC,IAAI;wBAC1C,OAAO,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC;qBAC1B,CAAC,CAAC;iBACJ;aACF,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG;gBACb,IAAI,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;gBAC9B,IAAIkC,gBAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;oBAC7B,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;iBACvC;gBACD,IAAI,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE;;oBAE9B,MAAM,CAAC,cAAc,CAAC,KAAI,CAAC,MAAM,EAAE,GAAG,EAAE;wBACtC,YAAY,EAAE,IAAI;wBAClB,UAAU,EAAE,IAAI;wBAChB,QAAQ,EAAE,IAAI;wBACd,KAAK,OAAA;qBACN,CAAC,CAAC;iBACJ;gBACD,IAAI,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;oBAC5B,KAAI,CAAC,SAAS,GAAG,KAAK,CAAC;iBACxB;aACF,CAAC,CAAC;;YAGH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;YAEpC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAC,KAAK;;gBAEzB,IAAI,KAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;;oBAE5B,KAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;iBAC1B;qBAAM;oBACL,IAAI,KAAK,IAAI,IAAI,EAAE;wBACjB,IAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;;wBAEjC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;qBACtD;yBAAM;wBACL,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;qBAC5C;iBACF;;gBAED,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aACxB,CAAC,CAAC;SACJ;QAEM,kDAAW,GAAlB;YACE,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBAC/B,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;aAC3C;YACD,IAAI,IAAI,CAAC,yBAAyB,EAAE;gBAClC,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,CAAC;aAC9C;SACF;QAEM,sDAAe,GAAtB;SAEC;QAEM,sDAAe,GAAtB,UAAuB,KAAU;YAC/B,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,EAAE;;gBAEtC,IAAM,UAAU,GAAK,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC;;gBAE7D,IAAI,IAAI,CAAC,gBAAgB,EAAE;oBACzB,IAAM,aAAW,GAAG;wBAClB,CAAC,EAAE,UAAU;qBACd,CAAC;oBACF,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;wBACnD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,IAAI;4BACtC,MAAM,CAAC,cAAc,CAAC,aAAW,EAAE,IAAI,CAAC,IAAI,EAAE;gCAC1C,YAAY,EAAE,IAAI;gCAClB,UAAU,EAAE,IAAI;gCAChB,QAAQ,EAAE,IAAI;gCACd,KAAK,EAAE,IAAI;6BACZ,CAAC,CAAC;yBACN,CAAC,CAAC;qBACJ;;oBAED,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;wBAC/B,UAAU,EAAE,IAAI,CAAC,eAAe;wBAChC,WAAW,eAAA;wBACX,mBAAmB,EAAE,OAAO;qBAC7B,CAAC,CAAC;iBACJ;gBACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;oBACrB,CAAC,EAAE,UAAU;iBACd,CAAC,CAAC;;gBAEH,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC9B,OAAO,KAAK,CAAC;aACd;SACF;QAEM,oDAAa,GAApB,UAAqB,IAAI;YACvB,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC;SACb;QAEM,sDAAe,GAAtB,UAAuB,UAAU;YAC/B,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,UAAU,IAAI,IAAI,EAAE;gBACtB,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;aAC9B;YACD,OAAO,IAAI,CAAC;SACb;;QAGO,yDAAkB,GAA1B;YAAA,iBAuBC;YAtBC,IAAI,CAAC,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC;YACpE,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAC,IAAI;gBAC1D,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;;gBAE9B,IAAI,KAAI,CAAC,KAAK,IAAI,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;;oBAEjF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAG,UAAC,CAAC;wBACvD,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;wBAClB,CAAC,CAAC,IAAI,GAAG,KAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;wBACzC,OAAO,CAAC,CAAC;qBACV,CAAC,CAAC,CAAC;iBACL;;gBAED,KAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;aAC1B,CAAC,CAAC,KAAK,CAAC,UAAC,GAAG;;;gBAGX,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;gBAClE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACnB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;aAC1B,CAAC,CAAC;SACJ;QAEM,yDAAkB,GAAzB,UAA0B,KAAU;YAClC,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBAClE,IAAI,SAAS,EAAE;oBACb,IAAI,IAAI,CAAC,gBAAgB,EAAE;wBACzB,IAAM,aAAW,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;;wBAE3D,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,IAAI;4BACtC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,aAAW,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE;;gCAE1E,MAAM,CAAC,cAAc,CAAC,aAAW,EAAE,IAAI,CAAC,IAAI,EAAE;oCAC5C,YAAY,EAAE,IAAI;oCAClB,UAAU,EAAE,IAAI;oCAChB,QAAQ,EAAE,IAAI;oCACd,KAAK,EAAE,IAAI;iCACZ,CAAC,CAAC;6BACJ;yBACF,CAAC,CAAC;wBACH,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;4BAC/B,UAAU,EAAE,IAAI,CAAC,eAAe;4BAChC,WAAW,eAAA;4BACX,mBAAmB,EAAE,OAAO;yBAC7B,CAAC,CAAC;qBACJ;oBACD,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;oBAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;oBACvC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACpC,OAAO,IAAI,CAAC;iBACb;aACF;iBAAM;gBACL,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;oBAC/B,UAAU,EAAE,IAAI,CAAC,eAAe;oBAChC,WAAW,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE;oBACxB,mBAAmB,EAAE,OAAO;iBAC7B,CAAC,CAAC;aACJ;YACD,OAAO,KAAK,CAAC;SACd;QAEM,yDAAkB,GAAzB,UAA0B,IAAY;YACpC,IAAK,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,EAAG;gBACxC,IAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,KAAK,IAAI,GAAA,CAAC,CAAC;gBACpE,IAAK,SAAS,EAAG;oBACf,OAAO,SAAS,CAAC;iBAClB;qBAAM;oBACL,OAAO,KAAK,CAAC;iBACd;aACF;SACF;;QAGM,sEAA+B,GAAtC,UAAwC,IAAY,EAAE,OAAY;YAChE,IAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,KAAK,IAAI,GAAA,CAAE,CAAC;YACtE,IAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACtD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;YACrC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;SAChD;;QAGM,wEAAiC,GAAxC,UAA0C,UAAe,EAAE,OAAY;YACrE,IAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACtD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;YACrC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;SAChD;;QAGM,4EAAqC,GAA5C,UAA8C,UAAe;YAC3D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,KAAK,UAAU,GAAA,CAAC,CAAC;YAChF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;YACjB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;;QAGM,iDAAU,GAAjB,UAAmB,cAAgC,EAAE,OAAuB;YAAvB,wBAAA;gBAAA,cAAuB;;YAC1E,IAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAG;;gBAE7B,IAAI,CAAC,UAAU,GAAG,YAAU,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,cAAW,CAAC;gBAC/D,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;;oBAElD,IAAK,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,EAAG;wBACnC,IAAM,OAAO,GAAG,EAAE,IAAI,EAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,eAAS,IAAI,CAAC,MAAM,CAAE,EAAE,CAAC;wBACjF,IAAI,CAAC,iCAAiC,CAAG,IAAI,CAAC,YAAY,EAAE,OAAO,CAAE,CAAC;wBACtE,IAAI,CAAC,uBAAuB,EAAE,CAAC;;qBAEhC;yBAAM;wBACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;qBACzD;iBACF;qBAAM;;oBAEL,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAC3B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,4BAA4B,CAAC,EACrD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,wCAAwC,CAAC,EACjEZ,iBAAc,CAAC,EAAE,CAAC,CAAC;iBACtB;aACF;iBAAM;gBACL,IAAI,CAAC,MAAM,CAAC,iBAAiB,CACzB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,4BAA4B,CAAC,EACrD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,oCAAoC,CAAC,EAC7DA,iBAAc,CAAC,EAAE,CAAC,CAAC;aACxB;SACF;;QAGM,mDAAY,GAAnB,UAAqB,YAAY;;YAE/B,IAAK,YAAY,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,EAAG;gBAC9D,IAAM,gBAAgB,GAAG,EAAE,IAAI,EAAI,YAAY,EAAE,MAAM,eAAS,IAAI,CAAC,MAAM,CAAE,EAAE,CAAC;gBAChF,IAAK,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAG;oBAC7D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;oBAC3C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC;oBACxC,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC;iBACtC;qBAAM;oBACL,IAAI,CAAC,YAAY,GAAG,CAAC,gBAAgB,CAAC,CAAC;oBACvC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC;oBACxC,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC;iBACtC;gBACD,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;aACtB;iBAAM,IAAK,YAAY,KAAK,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,EAAG;;gBAEpE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,CAAC;aAClF;iBAAM;;gBAEL,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,CAAC;aACzE;SACF;;QAGM,iDAAU,GAAjB;YACE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACtB;;QAGM,8DAAuB,GAA9B;YACE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAC,CAAC;gBACtE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;aACpB,CAAC,CAAC,CAAC;SACL;;;;;QAMY,0DAAmB,GAAhC,UAAiC,KAAW;;;;;;kCACrC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;gCAA5E,wBAA4E;4BACjE,qBAAM,IAAI,CAAC,QAAQ,EAAE,EAAA;;4BAA7B,KAAK,GAAG,SAAqB;4BACnC,IAAI,IAAI,CAAC,gBAAgB,EAAE;gCACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gCACnB,gBAAc,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;;gCAErE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,IAAI;oCACtC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,aAAW,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE;;wCAE1E,MAAM,CAAC,cAAc,CAAC,aAAW,EAAE,IAAI,CAAC,IAAI,EAAE;4CAC5C,YAAY,EAAE,IAAI;4CAClB,UAAU,EAAE,IAAI;4CAChB,QAAQ,EAAE,IAAI;4CACd,KAAK,EAAE,IAAI;yCACZ,CAAC,CAAC;qCACJ;iCACF,CAAC,CAAC;gCACH,sBAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;wCAC/B,UAAU,EAAE,IAAI,CAAC,eAAe;wCAChC,WAAW,eAAA;wCACX,mBAAmB,EAAE,OAAO;qCAC7B,CAAC,EAAC;6BACJ;4BACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;gCACpB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;6BACpE;iCAAM;gCACL,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;6BAC1B;4BACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;4BACpC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;;;;;;SAEtB;QAEM,6CAAM,GAAb;YACE,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC;;aAEtC,CAAC,CAAC;SACJ;QAEY,+CAAQ,GAArB;;;;;;;;4BAEE,IAAI,IAAI,CAAC,SAAS,EAAE;gCAClB,sBAAO,IAAI,EAAC;6BACb;kCACI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;gCAA5E,wBAA4E;4BACzE,gBAAc,EAAE,CAAC;4BACR,qBAAM,IAAI,CAAC,4BAA4B,CAAC,SAAS,EAAE,EAAA;;4BAA5D,WAAS,SAAmD;4BAClE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,CAAC;gCACnC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE;oCAC7D,IAAM,UAAU,GAAG,KAAI,CAAC,eAAe,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;oCAC7D,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;wCAC9B,IAAM,OAAO,GAAG,KAAI,CAAC,aAAa,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;wCACxD,aAAW,CAAC,IAAI,CAAC,KAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE;4CAClD,KAAK,EAAE,OAAO;yCACf,CAAC,CAAC,CAAC;qCACL;yCAAM,IAAI,KAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE;wCAC9C,aAAW,CAAC,IAAI,CAAC,KAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;4CAChE,KAAK,EAAE,KAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;yCAC3B,EAAE,QAAM,CAAC,CAAC,CAAC,CAAC;qCACd;iCACF;6BACF,CAAC,CAAC;4BACC,KAAK,SAAA,CAAC;4BACV,IAAI,aAAW,IAAI,aAAW,CAAC,MAAM,EAAE;;gCAErC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;gCACnE,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;6BACrD;iCAAM;gCACL,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;6BACpE;4BACD,sBAAO,KAAK,EAAC;;;;;SAEhB;QAEM,qDAAc,GAArB,UAAsB,KAAU;YAC9B,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;SACxC;QAEM,4CAAK,GAAZ;YACE,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,IAAM,aAAW,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;;gBAEzC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,IAAI;oBACtC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,aAAW,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE;;wBAE1E,MAAM,CAAC,cAAc,CAAC,aAAW,EAAE,IAAI,CAAC,IAAI,EAAE;4BAC5C,YAAY,EAAE,IAAI;4BAClB,UAAU,EAAE,IAAI;4BAChB,QAAQ,EAAE,IAAI;4BACd,KAAK,EAAE,IAAI;yBACZ,CAAC,CAAC;qBACJ;iBACF,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;oBAC/B,UAAU,EAAE,IAAI,CAAC,eAAe;oBAChC,WAAW,eAAA;oBACX,mBAAmB,EAAE,OAAO;iBAC7B,CAAC,CAAC;aACJ;iBAAM;;gBAEP,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;;gBAEjB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;;gBAEzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACrC;SACF;QAKD,sBAAW,mDAAS;;;;iBAApB;gBACE,OAAO;oBACL,YAAY,EAAE,CAAC,IAAI,CAAC,SAAS;iBAC9B,CAAC;aACH;;;WAAA;;;;QAKY,iDAAU,GAAvB;;;oBACE,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;;oBAEjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;;;;SACtC;;oBA1fFpB,YAAS,SAAC;;wBAET,QAAQ,EAAE,2BAA2B;wBACrC,yyMAAqD;wBACrD,aAAa,EAAEC,oBAAiB,CAAC,IAAI;qBACtC;;;;;wBAxBQW,qBAAkB;wBADlBxB,mBAAc;wBAEdM,eAAQ;wBAERmC,oBAAc;wBADdC,qBAAkB;wBAElBtC,qBAAgB;wBACjB,2BAA2B;wBAE3BI,eAAY;wBARKP,WAAM;wBAGFkB,eAAY;;;;4BA4BtCH,QAAK;gCACLA,QAAK;gCACLA,QAAK;+BACLA,QAAK;uCACLA,QAAK;iCACLC,YAAS,SAAC,YAAY;iCACtBa,SAAM,SAAC,YAAY;iCACnBA,SAAM,SAAC,YAAY;;QAyetB,mCAAC;KAAA,CApfiD,gCAAgC;;QCPrE,UAAU,GAA6B;QAC9C,mBAAmB,EAAE,IAAI,mBAAmB,EAAE;QAC9C,eAAe,EAAE,IAAI,eAAe,EAAE;QACtC,iBAAiB,EAAE,IAAI,iBAAiB,EAAE;QAC1C,iBAAiB,EAAE,IAAI,iBAAiB,EAAE;QAC1C,aAAa,EAAE,IAAI,aAAa,EAAE;QAClC,uBAAuB,EAAE,IAAI,uBAAuB,EAAE;QACtD,gBAAgB,EAAE,IAAI,gBAAgB,EAAE;QACxC,kBAAkB,EAAE,IAAI,kBAAkB,EAAE;QAC5C,iBAAiB,EAAE,IAAI,iBAAiB,EAAE;QAC1C,oBAAoB,EAAE,IAAI,oBAAoB,EAAE;QAChD,kBAAkB,EAAE,IAAI,kBAAkB,EAAE;QAC5C,qBAAqB,EAAE,IAAI,qBAAqB,EAAE;QAClD,0BAA0B,EAAE,IAAI,0BAA0B,EAAE;KACjE;;;QCjCD;SASC;;oBATAlB,YAAS,SAAC;wBACT,QAAQ,EAAE,2BAA2B;wBACrC,QAAQ,EAAE,mCAET;qBAEF;;QAGD,iCAAC;KATD,IASC;;QAgCC;SAAiB;QAxBjB,gDAAW,GAAX,UAAY,OAAsB;YAAlC,iBAcC;YAbC,IAAI,OAAO,CAAC,KAAK,EAAE;gBACjB,IAAI,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,EAAE;oBACtC,IAAI,IAAI,CAAC,oBAAoB,EAAE;wBAC7B,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;wBACxC,OAAO;qBACR;iBACF;gBACD,IAAI,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE;oBAC7D,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,UAAC,IAA6B;wBAClG,KAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;qBACvC,CAAC,CAAC;iBACJ;aACF;SACF;QACD,gDAAW,GAAX;YACE,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBAC7B,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;aACzC;SACF;QAOD,6CAAQ,GAAR;;SAEC;;oBAlCFA,YAAS,SAAC;wBACT,QAAQ,EAAE,yBAAyB;wBACnC,6wBAAmD;qBAEpD;;;;;4BAuBEI,QAAK;;QASR,iCAAC;KApCD;;;QCV+Cd,6CAAK;QAClD;mBACE,kBAAM,2DAA2D,CAAC;SACnE;QACH,gCAAC;IAAD,CAJA,CAA+C,KAAK,GAInD;;QAaC,sCAAoB,KAA6B;YAA7B,UAAK,GAAL,KAAK,CAAwB;YAH1C,UAAK,GAAG,KAAK,CAAC;YACJ,gBAAW,GAA0B,IAAIQ,eAAY,CAAU,KAAK,CAAC,CAAC;;SAItF;;;;QAKM,0CAAG,GAAV;YAAW,kBAAkB;iBAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;gBAAlB,6BAAkB;;;YAC3B,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;gBACtB,MAAM,IAAI,yBAAyB,EAAE,CAAC;aACvC;;YAED,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;;gBACvF,KAAsB,IAAA,aAAAL,SAAA,QAAQ,CAAA,kCAAA,wDAAE;oBAA3B,IAAM,OAAO,qBAAA;oBAChB,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC;oBAChG,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;wBAC1B,EAAE,CAAC,WAAW,CAAC,oDAAoD,CAAC,CAAC;qBACtE;yBAAM;wBACL,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;wBACzC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC;wBAC5F,EAAE,CAAC,WAAW,CAAC,qCAAqC,CAAC,CAAC;qBACvD;iBACF;;;;;;;;;;;;;;;YACD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;;YAE5B,IAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;;YAEtE,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;;YAElE,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YACjD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBACnB,IAAI,EAAE,KAAK;gBACX,eAAe,EAAE,KAAK,CAAC,MAAM,GAAG,aAAa;gBAC7C,YAAY,EAAE,KAAK,CAAC,MAAM,GAAG,aAAa;aAC3C,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,IAAI,aAAa,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;YACpD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACnC;;;;QAKM,6CAAM,GAAb;YAAc,qBAAqB;iBAArB,UAAqB,EAArB,qBAAqB,EAArB,IAAqB;gBAArB,gCAAqB;;;YACjC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;gBACtB,MAAM,IAAI,yBAAyB,EAAE,CAAC;aACvC;;YAED,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oCAE5E,OAAO;gBACd,IAAM,EAAE,GAAG,OAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC;;gBAElG,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;;oBAExB,OAAK,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;iBACxC;qBAAM;;oBAEL,EAAE,CAAC,WAAW,CAAC,oDAAoD,CAAC,CAAC;iBACtE;;gBAED,IAAM,aAAa,GAAG,OAAK,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAC,IAAI;oBACvD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;iBACnC,CAAC,CAAC;;gBAEH,IAAI,aAAa,IAAI,CAAC,EAAE;oBACtB,OAAK,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;iBAC9C;aACF;;;;gBAlBH,KAAsB,IAAA,gBAAAA,SAAA,WAAW,CAAA,wCAAA;oBAA5B,IAAM,OAAO,wBAAA;4BAAP,OAAO;iBAkBf;;;;;;;;;;;;;;;;YAEH,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;;YAE5B,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;;YAEjD,IAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;;YAEtE,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;;YAElE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,KAAK;gBACX,eAAe,EAAE,KAAK,CAAC,MAAM,GAAG,aAAa;gBAC7C,YAAY,EAAE,KAAK,CAAC,MAAM,GAAG,aAAa;aAC3C,CAAC,CAAC;YACL,IAAI,CAAC,KAAK,IAAI,aAAa,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;YACpD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACnC;QAEM,0CAAG,GAAV,UAAW,KAAY;YACrB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;gBACtB,MAAM,IAAI,yBAAyB,EAAE,CAAC;aACvC;;YAED,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;;YAE7B,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBACnB,IAAI,EAAE,KAAK;gBACX,eAAe,EAAE,KAAK,CAAC,MAAM;gBAC7B,YAAY,EAAE,KAAK,CAAC,MAAM;aAC3B,CAAC,CAAC;SACJ;;;;QAKM,2CAAI,GAAX;YACE,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;gBACtB,MAAM,IAAI,yBAAyB,EAAE,CAAC;aACvC;;YAED,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,oDAAoD,CAAC,CAAC;;YAEtH,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;;YAE7C,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;YACzB,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YACjD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBACnB,IAAI,EAAE,KAAK;gBACX,eAAe,EAAE,KAAK,CAAC,MAAM;gBAC7B,YAAY,EAAE,KAAK,CAAC,MAAM;aAC3B,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACnC;QAEM,2CAAI,GAAX;YACE,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;gBACtB,MAAM,IAAI,yBAAyB,EAAE,CAAC;aACvC;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;SACvE;;oBA9IFwC,YAAS,SACT;;wBAEE,QAAQ,EAAE,eAAe;qBAC1B;;;;;wBAZO,sBAAsB;;;;kCAiB5Bf,SAAM;;QAuIT,mCAAC;KAhJD;;ICHA,IAAM,gBAAgB,GAAG,GAAG,CAAC;AAQ7B;QAIE,yBAAoB,eAAsC,EACtC,QAA4B,EAC5B,OAA6B,EAC7B,UAA4B,EAC5B,eAA+B,EAC/B,aAA2B;YAL3B,oBAAe,GAAf,eAAe,CAAuB;YACtC,aAAQ,GAAR,QAAQ,CAAoB;YAC5B,YAAO,GAAP,OAAO,CAAsB;YAC7B,eAAU,GAAV,UAAU,CAAkB;YAC5B,oBAAe,GAAf,eAAe,CAAgB;YAC/B,kBAAa,GAAb,aAAa,CAAc;SAC9C;QAGK,oCAAU,GADhB,UACiB,KAAK;;;;oBACpB,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,KAAK,CAAC,eAAe,EAAE,CAAC;oBACxB,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;wBAC9B,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,SAAS,CAAC;wBACvD,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC;wBACtD,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,CAAC;wBACzD,UAAU,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;wBACpC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;wBACpD,WAAW,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;wBAC1C,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;wBAEvE,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,QAAoC,CAAC;wBAEnE,cAAc,GAAG,cAAc,IAAI,cAAc,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC;wBACpG,IAAI,cAAc,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,GAAG,CAAC,EAAE;4BAC9E,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;yBACpC;6BAAM;4BACL,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;yBACtC;wBAEK,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;wBACrC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;qBAC3E;;;;SACF;;;;;;;;QASD,mCAAS,GAAT,UAAU,KAA0B,EAAE,MAAM;YAC1C,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBACxC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG;oBAC9B,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;iBAClC,CAAC,CAAC;aACJ;YACD,OAAO,KAAK,CAAC;SACd;;;;;;;;;;QAWD,oCAAU,GAAV,UAAW,KAA0B,EAAE,OAAgB;YACrD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG;gBAC/B,IAAI,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;oBAC/B,KAAK,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;iBACjD;aACF,CAAC,CAAC;;YAEH,KAAK,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,mEAAmE,CAAC,CAAC;YAC5G,OAAO,KAAK,CAAC;SACd;;;;;;;;;;QAWD,6CAAmB,GAAnB,UAAoB,KAA0B,EAAE,WAA+B;YAA/E,iBAuCC;YAtCC,IAAI,WAAW,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC;YAC5C,IAAI,gBAAgB,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9C,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAC,MAAM;;gBAC7C,IAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;oBACtB,IAAI,WAAW,IAAI,WAAW,CAAC,OAAO,EAAE;;4BACtC,KAAoB,IAAA,KAAAzB,SAAA,WAAW,CAAC,OAAO,CAAA,gBAAA,4BAAE;gCAArC,IAAM,MAAM,WAAA;gCACd,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE;oCAChD,KAAK,CAAC,CAAC,CAAC,GAAG,OAAI,KAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAG,CAAC;iCACzD;qCAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE;oCACvC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAI,KAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAG,CAAA;iCACpD;6BACF;;;;;;;;;;;;;;;qBACF;iBACF;gBACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;oBACtB,IAAI,WAAW,IAAI,WAAW,CAAC,OAAO,EAAE;;4BACtC,KAAoB,IAAA,KAAAA,SAAA,WAAW,CAAC,OAAO,CAAA,gBAAA,4BAAC;gCAApC,IAAM,MAAM,WAAA;gCACd,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE;oCAC5C,KAAK,CAAC,CAAC,CAAC,GAAM,KAAK,CAAC,CAAC,CAAC,cAAQ,KAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAG,CAAC;oCACvE,MAAM;iCACP;qCAAM,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE;oCACtD,KAAK,CAAC,CAAC,CAAC,GAAM,KAAK,CAAC,CAAC,CAAC,cAAQ,KAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAG,CAAC;oCAC1E,MAAM;iCACP;qCAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAI,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE;oCACxE,MAAM;iCACP;qCAAM,IAAG,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAI,MAAM,CAAC,QAAQ,EAAE;oCAChE,KAAK,CAAC,CAAC,CAAC,GAAM,KAAK,CAAC,CAAC,CAAC,cAAQ,KAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAG,CAAC;iCACpE;6BACF;;;;;;;;;;;;;;;qBACF;oBACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;iBACjB;gBACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACxB,CAAC,CAAC;YACH,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAE,CAAC;YACxC,OAAO,KAAK,CAAC;SACd;;;;;;QAOD,sCAAY,GAAZ,UAAa,KAAK;YAChB,IAAM,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,CAAC;YAC7C,IAAI,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,GAAG,KAAK,OAAO,GAAG,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC,CAAC;YAChH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG,EAAE,KAAK;gBAChD,IAAI,KAAK,KAAK,CAAC,EAAE;oBACf,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;iBAC3C;qBAAM;oBACL,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;iBACjD;aACF,CAAC,CAAC;YACH,OAAO,GAAG,CAAC;SACZ;;;;;;;;;;;QAYD,wCAAc,GAAd,UAAe,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAgB;YACzD,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC3C,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC1C,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACvD,OAAO,MAAM,CAAC;SACf;;;;;;;QAQD,sCAAY,GAAZ,UAAa,GAAG,EAAE,cAAuB,EAAE,SAAS;YAApD,iBAkCC;YAjCC,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;YACnC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBACpB,OAAO,EAAE,cAAc;gBACvB,WAAW,EAAE,SAAS;aACvB,CAAC,CAAC,IAAI,CAAC,UAAA,QAAQ;gBACd,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;oBAC5B,MAAM,IAAI0B,oBAAa,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;iBAC/D;gBACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;aACxB,CAAC,CAAC,IAAI,CAAC,UAAA,IAAI;gBACV,IAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBACnD,IAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBACtC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBAC7B,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;gBACzC,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC;gBACnB,IAAM,YAAY,GAAM,SAAS,UAAO,CAAC;gBACzC,CAAC,CAAC,QAAQ,GAAG,YAAY,CAAC;;gBAE1B,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE;oBACzD,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;iBACvD;qBAAM;;oBAEL,CAAC,CAAC,KAAK,EAAE,CAAC;iBACX;gBACD,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBACtC,CAAC,CAAC,MAAM,EAAE,CAAC;gBACX,KAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;aACpC,CAAC,CAAC,KAAK,CAAC,UAAA,GAAG;gBACV,KAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;gBACnC,KAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,EAAE;oBAChC,YAAY,EAAE,GAAG;iBAClB,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;;oBAxMFc,YAAS,SAAC;wBACT,QAAQ,EAAE,uBAAuB;qBAClC;;;;;wBAjBO,qBAAqB;wBACrBrB,qBAAkB;wBAClBsB,uBAAoB;wBACpB1C,qBAAgB;wBADoBwB,iBAAc;wBAA5BK,eAAY;;;;iCAyBvCc,eAAY,SAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;QA8LnC,sBAAC;KA1MD;;;QCPE,mCACU,QAA4B,EAC5B,SAAuB;YADvB,aAAQ,GAAR,QAAQ,CAAoB;YAC5B,cAAS,GAAT,SAAS,CAAc;SAC5B;;;;;;;;;;;;;;QAeC,6CAAS,GAAf,UAAgB,KAAa,EAAE,WAAmB,EAAE,cAA2B,EAAE,OAAiB,EAAE,cAAuB,EAAE,WAAoB;YAA7F,+BAAA;gBAAA,mBAA2B;;;;;;oBACvE,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;oBAEvD,IAAI,CAAC,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;wBACnD,WAAW,GAAG,EAAE,CAAC;qBAClB;oBAEG,iBAAiB,GAAG,EAAE,CAAC;oBAE3B,IAAI,WAAW,EAAE;;4BACf,KAAkB,KAAA1C,SAAA,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA,4CAAE;gCAAnC,KAAK;gCACZ,iBAAiB,CAAC,IAAI,CAAI,KAAK,YAAO,WAAW,CAAC,KAAK,CAAG,CAAC,CAAC;6BAC7D;;;;;;;;;;;;;;;qBACF;oBAED,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;wBACrC,iBAAiB,YACZ,iBAAiB,EACjB,OAAO,CACX,CAAA;qBACF;oBAED,IAAI,cAAc,IAAI,WAAW,EAAE;wBAC7B,eAAe,SAAA,CAAC;wBACpB,IAAI,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;4BACjC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,eACpD,WAAW,IACd,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IACvC,CAAC;yBACJ;6BAAM;4BAEC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;4BAErC,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI;gCAC9B,OAAO,KAAI,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,eACzC,WAAW,IACd,IAAI,EAAE,IAAI,IACV,CAAC;6BACJ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;yBAElB;wBACD,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;qBACzC;oBAED,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBACzD,sBAAO,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAC;;;SACzD;;;;;;;;;;;QAYD,8CAAU,GAAV,UAAW,MAAM,EAAE,IAAI;YAAvB,iBAmCC;YAlCC,IAAI;gBACF,OAAO,IAAI,CAAC,GAAG,CAAC,UAAC,KAAK;oBACpB,IAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAC;wBACjD,KAAK,CAAC,QAAQ,GAAG,KAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;qBAC1D;oBACD,IAAI,WAAW,GAAG,EAAS,CAAC;oBAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAC9C,IAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBAC/C,IAAI,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;wBAElC,IAAI,YAAY,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;4BACnC,KAAK,IAAI,GAAC,GAAG,CAAC,EAAE,GAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAC,EAAE,EAAE;gCACpC,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,EAAE;oCACvD,MAAM;iCACP;qCAAM;oCACL,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,GAAC,CAAC,CAAC,KAAK,SAAS,IAAI,YAAY,CAAC,IAAI,CAAC,GAAC,CAAC,CAAC,KAAK,IAAI;0CAChF,YAAY,CAAC,IAAI,CAAC,GAAC,CAAC,CAAC;0CACrB,SAAS,CAAC;iCACf;6BACF;yBACF;wBAED,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;qBACpD;oBAED,IAAI,KAAK,CAAC,QAAQ,EAAE;wBAClB,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;qBACvC;oBAED,OAAO,WAAW,CAAC;iBACpB,CAAC,CAAC;aACJ;YAAC,OAAO,GAAG,EAAE;gBACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aACpB;SACF;;oBApHFI,aAAU,SAAC;wBACV,UAAU,EAAE,MAAM;qBACnB;;;;;wBALQe,qBAAkB;wBAClBhB,eAAY;;;;wCAFrB;KAIA;;ICCA;;;;;;AAOA;QAoCE,qCACU,eAAkC,EAClC,0BAAqD,EACrD,eAA+B;YAF/B,oBAAe,GAAf,eAAe,CAAmB;YAClC,+BAA0B,GAA1B,0BAA0B,CAA2B;YACrD,oBAAe,GAAf,eAAe,CAAgB;YA3BlC,WAAM,GAAG,EAAE,CAAC;YAsBT,iBAAY,GAAG,IAAIE,eAAY,EAAE,CAAC;SAMvC;QA1BL,sBACW,+CAAM;iBA2BjB;gBACE,OAAO,IAAI,CAAC,OAAO,CAAC;aACrB;iBA9BD,UACkB,KAA+B;gBAC/C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACtB;;;WAAA;QAED,sBACW,oDAAW;iBA0BtB;gBACE,OAAO,IAAI,CAAC,YAAY,CAAC;aAC1B;iBA7BD,UACuB,KAAK;gBAC1B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;aAC3B;;;WAAA;QAED,sBACW,uDAAc;iBAyBzB;gBACE,OAAO,IAAI,CAAC,eAAe,CAAC;aAC7B;iBA5BD,UAC0B,KAAK;gBAC7B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;aAC9B;;;WAAA;QA2BK,8CAAQ,GAAd;;;;oBACE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,UAAC,IAAI;wBAClC,KAAI,CAAC,MAAM,GAAG,IAAI,CAAC;wBACnB,KAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;qBACrC,CAAC,CAAC;oBAEH,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAO,OAAkC;;;;;;;wCAE7D,qBAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAA;;wCAAzB,SAAyB,CAAC;;;;wCAE1B,OAAO,CAAC,KAAK,CAAC,KAAG,CAAC,CAAC;;;;;;qBAEtB,CAAC,CAAC;;;;SACJ;QAEK,iDAAW,GAAjB;;;oBACE,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;oBACnC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;;;;SAC7B;;;;;;QAOK,2CAAK,GAAX,UAAY,OAAkC;;;;;;;4BAE1C,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;4BACxB,qBAAM,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAC1E,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,CAAC,KAAK,EACjB,OAAO,CAAC,OAAO,EACf,IAAI,CAAC,gBAAgB,EACrB,OAAO,CAAC,IAAI,CACb,EAAA;;4BANG,IAAI,GAAG,SAMV;kCAEG,IAAI,CAAC,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAA;gCAAzI,wBAAyI;4BAClI,CAAC,GAAG,CAAC;;;kCAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAA;;4BAC5C,qBAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAA;;4BAA1E,IAAI,GAAG,SAAmE,CAAC;;;4BADtB,CAAC,EAAE,CAAA;;;4BAK5D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;4BAC1E,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;;;;4BAEpC,OAAO,CAAC,KAAK,CAAC,KAAG,CAAC,CAAC;;;4BAEnB,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;;;;;;SAEtC;;;;;;;;QASD,mDAAa,GAAb,UAAc,KAAK;YACjB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC/B;;oBAlHFE,YAAS,SAAC;wBACT,QAAQ,EAAE,yBAAyB;wBACnC,2lHAAmD;wBACnD,eAAe,EAAEoC,0BAAuB,CAAC,MAAM;qBAChD;;;;;wBAhB4FjC,oBAAiB;wBACrG,yBAAyB;wBAEzBa,iBAAc;;;;6BAuBpBZ,QAAK,SAAC,QAAQ;kCAKdA,QAAK,SAAC,aAAa;qCAKnBA,QAAK,SAAC,gBAAgB;6BAKtBA,QAAK,SAAC,QAAQ;sCACdA,QAAK,SAAC,gBAAgB;+BACtBA,QAAK,SAAC,SAAS;uCACfA,QAAK,SAAC,kBAAkB;mCAExBc,SAAM;;QAiFT,kCAAC;KAnHD;;ICTA,IAAK,OAMJ;IAND,WAAK,OAAO;QACV,oBAAQ,CAAA;QACR,oBAAQ,CAAA;QACR,oBAAQ,CAAA;QACR,oBAAQ,CAAA;QACR,oBAAQ,CAAA;IACV,CAAC,EANI,OAAO,KAAP,OAAO,QAMX;AAGD;QAkBE,yCAAoB,SAAuB;YAAvB,cAAS,GAAT,SAAS,CAAc;YAFjC,eAAU,GAAG,IAAIpB,eAAY,EAAE,CAAC;SAEM;QAEhD,kDAAQ,GAAR;YAAA,iBAKC;YAJC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAA,CAAC;gBAC3B,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,KAAI,CAAC,SAAS,CAAC,SAAS,CAAC,0BAAwB,CAAC,CAAC,MAAM,YAAS,EAAE,CAAC,CAAE;oBAC5H,CAAC,CAAC,CAAC,MAAM,GAAG,gCAAgC,GAAE,CAAC,CAAC,MAAM,CAAE;aAC3D,CAAC,CAAA;SACH;;;;;;;;;QAUD,sDAAY,GAAZ,UAAa,IAAY,EAAE,IAAS;YAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACnB,IAAI,MAAA;gBACJ,IAAI,MAAA;aACL,CAAC,CAAC;SACJ;;oBAxCFE,YAAS,SAAC;wBACT,QAAQ,EAAE,8BAA8B;wBACxC,qoNAAwD;qBACzD;;;;;wBAdQJ,eAAY;;;;6BAoBlBQ,QAAK;2BAKLA,QAAK;iCAELc,SAAM;;QAyBT,sCAAC;KAzCD;;;QCEuC5B,qCAAmB;QAiBxD,2BAAY,MAAc,EACd,cAA8B,EACtB,aAA2B,EAC3B,aAA2B,EAC3B,SAA0B,EAC1B,aAA2B,EAC3B,eAA+B,EAC/B,iBAAmC,EACnC,QAA4B;YARhD,YASE,kBAAM,MAAM,EAAE,cAAc,CAAC,SAI9B;YAXmB,mBAAa,GAAb,aAAa,CAAc;YAC3B,mBAAa,GAAb,aAAa,CAAc;YAC3B,eAAS,GAAT,SAAS,CAAiB;YAC1B,mBAAa,GAAb,aAAa,CAAc;YAC3B,qBAAe,GAAf,eAAe,CAAgB;YAC/B,uBAAiB,GAAjB,iBAAiB,CAAkB;YACnC,cAAQ,GAAR,QAAQ,CAAoB;YAvBzC,aAAO,GAAG,KAAK,CAAC;YAGd,WAAK,GAAe,EAAE,CAAC;YAKvB,cAAQ,GAAe,EAAE,CAAC;;YAkBjC,KAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAC7B,KAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;;SAC9B;QAED,oCAAQ,GAAR;YAAA,iBAmBC;YAlBC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,UAAC,KAAK;gBAC3F,IAAI,KAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;oBACzB,KAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;iBAC5C;aACF,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;gBACzB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAC,KAAS;oBAC/E,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE;;wBAE1D,KAAI,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;qBAC1C;iBACF,CAAC,CAAC;aACJ;YAED,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;aAC5B;SACF;QAED,kCAAM,GAAN;YACE,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,OAAO;aACR;;YAED,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;gBAC/B,OAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;aAC5C;SACF;QAED,uCAAW,GAAX;YACE,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBAC7B,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;aACzC;YACD,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBAC/B,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;aAC3C;YACD,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBAC7B,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;aACzC;SACF;QAIC,sBAAW,uCAAQ;iBAAnB;gBACE,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE;oBAC/B,OAAO,IAAI,CAAC;iBACb;gBACD,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;aAC5C;;;WAAA;QAED,8BAAE,GAAF;YAAA,iBAiCD;YAhCG,IAAI;gBACF,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;oBACnC,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;oBACrB,KAAI,CAAC,SAAS,GAAG,IAAI,CAAC;;oBAEtB,KAAI,CAAC,KAAK,GAAG,KAAI,CAAC,eAAe,CAAC,aAAa,CAAC,QAAQ,CAAA;;oBAEvD,KAAI,CAAC,mBAAmB,GAAG,KAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAC,MAAM;wBACxD,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;wBACtB,IAAG,KAAI,CAAC,mBAAmB,EAAC;4BAC1B,KAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;yBACxC;;wBAEA,IAAI,KAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;4BAC/B,KAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;yBACpC;wBACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;qBACtB,EAAE,UAAC,GAAG;wBACL,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;;wBAErB,KAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;;wBAEnC,KAAI,CAAC,SAAS,GAAG,GAAG,CAAC;wBACrB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;qBACtB,CAAC,CAAC;iBACJ,CAAC,CAAC;aACJ;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;gBACnC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;aACtB;SACF;QAED,oCAAQ,GAAR,UAAS,MAAW,KAAI;QAExB,yCAAa,GAAb;YACE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;SACpB;QAED,0CAAc,GAAd,UAAe,KAAuC,KAAI;;oBAlI3DU,YAAS,SAAC;wBACT,QAAQ,EAAE,eAAe;wBACzB,+tJAAyC;qBAC1C;;;;;wBAXuBX,WAAM;wBAAtBD,mBAAc;wBAMGiC,eAAY;wBAAkBd,eAAY;wBAA3DiB,kBAAe;wBAA8CF,eAAY;wBAA1CN,iBAAc;wBAJ7CxB,qBAAgB;wBAChBoB,qBAAkB;;;;8BAavBR,QAAK;4BACLA,QAAK;6BACLA,QAAK;yCAELA,QAAK;+BACLA,QAAK;+BACLA,QAAK;oCACLC,YAAS,SAAC,eAAe;sCACzBA,YAAS,SAAC,iBAAiB;;QAmH9B,wBAAC;KAAA,CA/HsCC,2BAAmB;;ICZ1D;;;;;;AAOA;QAAA;SAuBC;;;;;;;;;;;;QAPC,0CAAS,GAAT,UAAU,KAAY,EAAE,YAAiB,EAAE,YAAoB;YAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,YAAY,IAAI,YAAY,IAAI,YAAY,EAAE;gBACxE,OAAO,YAAY,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC;aAC1C;iBAAM;gBACL,OAAO,GAAG,CAAC;aACZ;SACF;;oBAtBF+B,OAAI,SAAC;wBACJ,IAAI,EAAE,gBAAgB;qBACvB;;QAqBD,6BAAC;KAvBD;;ICNA;;;;;;AAOA;QAKE,wBACU,iBAAmC;YAAnC,sBAAiB,GAAjB,iBAAiB,CAAkB;SACzC;;;;;;;;;QAUJ,kCAAS,GAAT,UAAU,KAAa,EAAE,GAAW;YAApC,iBAYC;YAXC,IAAI,CAAC,KAAK,EAAE;gBACV,OAAO,EAAE,CAAC;aACX;iBAAM;gBACL,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,MAAM,EAAE;oBAC9E,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;iBAC3D;gBACD,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;qBACpB,GAAG,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAA,CAAC;qBACnD,GAAG,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,GAAA,CAAC;qBAC5C,IAAI,CAAC,GAAG,CAAC,CAAC;aACd;SACF;;oBA7BFA,OAAI,SAAC;wBACJ,IAAI,EAAE,qBAAqB;qBAC5B;;;;;wBAXQ7C,qBAAgB;;;QAuCzB,qBAAC;KA9BD;;ICVO,IAAM,SAAS,GAAG;QACrB,QAAQ,EAAE;YACN,QAAQ,EAAE,SAAS;YACnB,MAAM,EAAE,aAAa;YACrB,QAAQ,EAAE,WAAW;YACrB,mBAAmB,EAAE,cAAc;YACnC,SAAS,EAAE,iBAAiB;YAC5B,YAAY,EAAE,mBAAmB;YACjC,WAAW,EAAE;gBACT,UAAU,EAAE;oBACR,OAAO,EAAE,cAAc;oBACvB,MAAM,EAAE,iBAAiB;oBACzB,MAAM,EAAE,SAAS;oBACjB,UAAU,EAAE,aAAa;iBAC5B;gBACD,MAAM,EAAE,iDAAiD;gBACzD,WAAW,EAAE,uBAAuB;gBACpC,SAAS,EAAE,uBAAuB;gBAClC,YAAY,EAAE,uBAAuB;gBACrC,YAAY,EAAE,4BAA4B;aAC7C;YACH,eAAe,EAAE,0BAA0B;YAC3C,mBAAmB,EAAE,iDAAiD;YACtE,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,UAAU;YACnB,QAAQ,EAAE,SAAS;YACnB,gBAAgB,EAAE,qBAAqB;YACvC,UAAU,EAAE,wCAAwC;YACpD,uBAAuB,EAAE,yBAAyB;YAClD,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,KAAK;YACV,SAAS,EAAE,oBAAoB;YAC/B,iBAAiB,EAAE,4BAA4B;YAC/C,mBAAmB,EAAE,sDAAsD;YAC3E,YAAY,EAAE,oBAAoB;YAClC,OAAO,EAAE,UAAU;YACnB,MAAM,EAAE,UAAU;YAClB,gBAAgB,EAAE;gBACd,OAAO,EAAE,oBAAoB;gBAC7B,KAAK,EAAE,0CAA0C;gBACjD,MAAM,EAAE,iDAAiD;aAC1D;YACH,mBAAmB,EAAE;gBACjB,OAAO,EAAE,oBAAoB;gBAC7B,KAAK,EAAE,sCAAsC;gBAC7C,MAAM,EAAE,6CAA6C;aACxD;YACD,kBAAkB,EAAE,oBAAoB;YACxC,oBAAoB,EAAE,4EAA4E;YAClG,WAAW,EAAE,cAAc;YAC3B,gBAAgB,EAAE,mBAAmB;YACvC,SAAS,EAAE;gBACT,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,QAAQ;gBACjB,eAAe,EAAE;oBACf,MAAM,EAAE,qFAAqF;oBAC7F,KAAK,EAAE,oIAAoI;oBAC3I,MAAM,EAAE,4IAA4I;iBACrJ;gBACD,qBAAqB,EAAE;oBACrB,OAAO,EAAE,wCAAwC;oBACjD,aAAa,EAAE;wBACb,KAAK,EAAE,+FAA+F;wBACtG,MAAM,EAAE,uGAAuG;qBAChH;iBACF;gBACD,sBAAsB,EAAE;oBACtB,OAAO,EAAE,wCAAwC;iBAClD;aACF;YACD,eAAe,EAAE,gBAAgB;YACjC,QAAQ,EAAE,OAAO;YACjB,UAAU,EAAE,MAAM;YAClB,WAAW,EAAE,SAAS;YACtB,cAAc,EAAE,UAAU;YAC1B,kBAAkB,EAAE,8LAA8L;YAClN,gBAAgB,EAAE,yGAAyG;YAC3H,eAAe,EAAE,SAAS;YAC1B,cAAc,EAAE,SAAS;YACzB,kBAAkB,EAAE,WAAW;SAChC;QACD,WAAW,EAAE;YACT,MAAM,EAAE;gBACJ,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,KAAK;aACd;SACJ;QACD,UAAU,EAAE;YACV,oBAAoB,EAAE,wCAAwC;SAC/D;QACD,gBAAgB,EAAE;YACd,QAAQ,EAAE,0BAA0B;YACpC,YAAY,EAAE,qBAAqB;YACnC,eAAe,EAAE,2BAA2B;YAC5C,gBAAgB,EAAG,iBAAiB;YACpC,mBAAmB,EAAE,uBAAuB;YAC5C,QAAQ,EAAG,eAAe;YAC1B,MAAM,EAAG,YAAY;YACrB,QAAQ,EAAG,UAAU;YACrB,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,UAAU;YAClB,OAAO,EAAG;gBACN,OAAO,EAAG,iCAAiC;gBAC3C,MAAM,EAAG,gIAAgI;gBACzI,kBAAkB,EAAG,8BAA8B;gBACnD,2BAA2B,EAAG,8DAA8D;gBAC5F,eAAe,EAAG,mDAAmD;gBACrE,mBAAmB,EAAG,oDAAoD;gBAC1E,eAAe,EAAG,iBAAiB;gBACnC,qBAAqB,EAAG,qBAAqB;gBAC7C,QAAQ,EAAG,YAAY;gBACvB,SAAS,EAAG,UAAU;gBACtB,OAAO,EAAG,UAAU;aACvB;SACJ;QACD,UAAU,EAAG;YACX,aAAa,EAAE,mBAAmB;SACnC;KACJ,CAAA;;ICtHM,IAAM,SAAS,GAAG;QACrB,QAAQ,EAAE;YACR,QAAQ,EAAE,QAAQ;YAChB,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,QAAQ;YAClB,mBAAmB,EAAE,WAAW;YAChC,SAAS,EAAE,UAAU;YACrB,YAAY,EAAE,aAAa;YAC3B,WAAW,EAAE;gBACT,UAAU,EAAE;oBACR,OAAO,EAAE,OAAO;oBAChB,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,UAAU;iBACzB;gBACD,MAAM,EAAE,6CAA6C;gBACrD,WAAW,EAAE,6BAA6B;gBAC1C,YAAY,EAAE,oBAAoB;gBAClC,YAAY,EAAE,gCAAgC;aACjD;YACH,eAAe,EAAE,gBAAgB;YACjC,mBAAmB,EAAE,iDAAiD;YACtE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,QAAQ;YAClB,gBAAgB,EAAE,gBAAgB;YAClC,UAAU,EAAE,uCAAuC;YACnD,uBAAuB,EAAE,mBAAmB;YAC5C,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,UAAU;YACrB,iBAAiB,EAAE,gCAAgC;YACnD,mBAAmB,EAAE,wDAAwD;YAC7E,YAAY,EAAE,aAAa;YAC3B,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,MAAM;YAChB,gBAAgB,EAAE;gBAChB,OAAO,EAAE,UAAU;gBACnB,KAAK,EAAE,yCAAyC;gBAChD,MAAM,EAAE,mDAAmD;aAC5D;YACD,mBAAmB,EAAE;gBACnB,OAAO,EAAE,cAAc;gBACvB,KAAK,EAAE,wCAAwC;gBAC/C,MAAM,EAAE,iDAAiD;aAC1D;YACD,kBAAkB,EAAE,cAAc;YAClC,oBAAoB,EAAE,iFAAiF;YACrG,WAAW,EAAE,YAAY;YACzB,gBAAgB,EAAE,iBAAiB;YACnC,SAAS,EAAE;gBACT,OAAO,EAAE,MAAM;gBACf,OAAO,EAAE,OAAO;gBAChB,eAAe,EAAE;oBACf,MAAM,EAAE,2DAA2D;oBACnE,KAAK,EAAE,4DAA4D;oBACnE,MAAM,EAAE,mEAAmE;iBAC5E;gBACD,qBAAqB,EAAE;oBACrB,OAAO,EAAE,0CAA0C;oBACnD,aAAa,EAAE;wBACb,KAAK,EAAE,iFAAiF;wBACxF,MAAM,EAAE,0FAA0F;qBACnG;iBACF;gBACD,sBAAsB,EAAE;oBACtB,OAAO,EAAE,2CAA2C;iBACrD;aACF;YACD,eAAe,EAAE,gBAAgB;YACjC,QAAQ,EAAE,SAAS;YACnB,UAAU,EAAE,WAAW;YACvB,WAAW,EAAE,KAAK;YAClB,cAAc,EAAE,QAAQ;YACxB,kBAAkB,EAAE,2IAA2I;YAC/J,gBAAgB,EAAE,+DAA+D;YACjF,eAAe,EAAE,SAAS;YAC1B,cAAc,EAAE,QAAQ;YACxB,kBAAkB,EAAE,SAAS;SAC9B;QACD,WAAW,EAAE;YACT,MAAM,EAAE;gBACJ,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,IAAI;aACb;SACJ;QACD,UAAU,EAAE;YACV,oBAAoB,EAAE,2CAA2C;SAClE;QACD,gBAAgB,EAAE;YACd,QAAQ,EAAE,yBAAyB;YACnC,YAAY,EAAE,aAAa;YAC3B,eAAe,EAAE,gBAAgB;YACjC,gBAAgB,EAAG,iBAAiB;YACpC,mBAAmB,EAAE,aAAa;YAClC,QAAQ,EAAG,YAAY;YACvB,MAAM,EAAG,MAAM;YACf,QAAQ,EAAG,QAAQ;YACnB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,MAAM;YACd,OAAO,EAAG;gBACN,OAAO,EAAG,8BAA8B;gBACxC,MAAM,EAAG,uHAAuH;gBAChI,kBAAkB,EAAG,uCAAuC;gBAC5D,2BAA2B,EAAG,oDAAoD;gBAClF,eAAe,EAAG,iCAAiC;gBACnD,mBAAmB,EAAG,4CAA4C;gBAClE,eAAe,EAAG,WAAW;gBAC7B,qBAAqB,EAAG,sBAAsB;gBAC9C,QAAQ,EAAG,MAAM;gBACjB,SAAS,EAAG,SAAS;gBACrB,OAAO,EAAG,OAAO;aACpB;SACJ;QACH,UAAU,EAAG;YACX,aAAa,EAAE,cAAc;SAC9B;KACF,CAAA;;ICnHD,IAAY,gBAIX;IAJD,WAAY,gBAAgB;QAC1B,sDAAkC,CAAA;QAClC,0DAAsC,CAAA;QACtC,wDAAoC,CAAA;IACtC,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B;AAED,IAKA;QAEE,sBAA4B,EAAU,EAAkB,MAAW;YAAvC,OAAE,GAAF,EAAE,CAAQ;YAAkB,WAAM,GAAN,MAAM,CAAK;YAD1D,SAAI,GAAG,gBAAgB,CAAC,YAAY,CAAC;SACyB;QACzE,mBAAC;IAAD,CAAC,IAAA;IAED;QAEE,qBAA4B,EAAU,EAAkB,IAAS;YAArC,OAAE,GAAF,EAAE,CAAQ;YAAkB,SAAI,GAAJ,IAAI,CAAK;YADxD,SAAI,GAAG,gBAAgB,CAAC,WAAW,CAAC;SACwB;QACvE,kBAAC;IAAD,CAAC,IAAA;;QCPY,YAAY,GAAG,EAC3B,CAAC;AAEF,QAAa,iBAAiB,GAAe;QAC3C,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;KACV,CAAA;AAED,0BAA6B,KAAoB,EAAE,MAAoB;QAA1C,sBAAA;YAAA,oBAAoB;;QAC/C,QAAQ,MAAM,CAAC,IAAI;YAEjB,KAAK,gBAAgB,CAAC,UAAU;gBAC9B,OAAO,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC1B,KAAK,gBAAgB,CAAC,YAAY;gBAC9B,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,gBACX,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IACnB,MAAM,EAAE8C,gBAAS,CAAC,MAAM,CAAC,MAAM,CAAC,GACjC,CAAC;gBACF,OAAO,KAAK,CAAC;YAEjB,KAAK,gBAAgB,CAAC,WAAW;gBAC3B,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,gBACX,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IACnB,KAAK,EAAE,MAAM,CAAC,IAAI,GACnB,CAAC;gBACF,OAAO,KAAK,CAAC;YACnB;gBACE,OAAO,KAAK,CAAC;SAChB;IACH,CAAC;AAQD,QAAa,aAAa,GAAqC;QAC7D,MAAM,EAAE,YAAY;KACrB,CAAC;AAEF,QAAa,WAAW,GAAG,QAAQ,CAAC;AAEpC,QAAa,cAAc,GAAGC,2BAAqB,CAAC,WAAW,CAAC,CAAC;AAEjE,QAAa,WAAW,GAAGC,oBAAc,CACvC,cAAc,EACd,UAAC,KAAqB,EAAE,KAAqB;QAC3C,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC,CACF;;;QC3CG,4BAAoB,KAA6B,EACzBC,QAA4B;YADhC,UAAK,GAAL,KAAK,CAAwB;YACzB,UAAK,GAALA,QAAK,CAAuB;SAEnD;QACD,qCAAQ,GAAR;YAAA,iBAuCC;YAtCG,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;gBACpB,OAAO;aACV;YACD,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,UAAC,QAAQ,EAAE,QAAQ;gBAC9C,KAAI,CAAC,KAAK,CAAC,IAAI,CAACC,YAAM,CAACC,WAAsB,EAAE,EAAE,EAAE,EAAE,KAAI,CAAC,UAAU,EAAE,CAAC,EAAEC,eAAK,EAAE,CAAC,CAAC,SAAS,CAAC,UAAC,KAAU;oBACnG,OAAO,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;iBACzC,CAAC,CAAC;aACN,CAAA;YACD,IAAI,SAAS,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;gBACtB,IAAI,SAAS,KAAK,KAAK,EAAE;oBACrB,OAAO;iBACV;gBACD,IAAI,KAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,EAAE;oBAC9B,OAAO;iBACV;gBACD,SAAS,GAAG,KAAK,CAAC;gBAClB,IAAM,kBAAkB,GASpB,KAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAM,gBAAgB,GAAG,kBAAkB,CAAC,WAAW;oBACnD,kBAAkB,CAAC,WAAW,CAAC,QAAQ,CAAC;gBAC5C,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,EAAE;oBAC7C,IAAM,QAAQ,GAAG,KAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;oBACjD,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;iBACvD;aACJ,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,UAAC,QAAQ,EAAE,IAAI;gBAC1C,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,KAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;aAC/D,CAAA;SACJ;;oBArDJX,YAAS,SACN;;wBAEI,QAAQ,EAAE,cAAc;qBAC3B;;;;;wBAVI,sBAAsB;wBAFdY,WAAK,uBAmBbC,WAAQ;;;;iCAHZ1C,QAAK;;QA8CV,yBAAC;KAtDD;;ICAE;QAAyDd,uDAAK;QAC5D;mBACE,kBAAM,kEAAkE,CAAC;SAC1E;QACH,0CAAC;IAAD,CAJA,CAAyD,KAAK,GAI7D;;QAcC,6BAAsB,MAAoC,EAChCmD,QAA4B;YADhC,WAAM,GAAN,MAAM,CAA8B;YAChC,UAAK,GAALA,QAAK,CAAuB;SACrD;QACD,sCAAQ,GAAR;YAAA,iBAqBC;YApBC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;gBACtB,OAAO;aACR;YACD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;gBACrB,MAAM,IAAI,mCAAmC,EAAE,CAAC;aACnD;YACD,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;;gBAEnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;;gBAEnC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,MAAM;oBACxE,KAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;iBAC7B,CAAC,CAAC;;gBAEH,IAAI,CAAC,eAAe,EAAE,CAAC;;gBAEvB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;oBAC5D,OAAO,KAAI,CAAC,WAAW,EAAE,CAAC;iBAC3B,CAAC,CAAC;aACN;SACF;QAES,6CAAe,GAAzB;;YAEE,IAAM,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACzE,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;YACzC,UAAU,CAAC,QAAQ,EAAE,CAAC;SACvB;QAEM,yCAAW,GAAlB;YAAA,iBAkCG;YAjCC,IAAI,CAAC,KAAK,CAAC,IAAI,CAACC,YAAM,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,EAAEE,eAAK,EAAE,CAAC,CAAC,SAAS,CAAC,UAAC,KAAK;;gBAEtF,IAAI,KAAK,EAAE;oBACT,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;wBACrC,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;qBAChD;;oBAED,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE;wBAClC,KAAI,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;wBAClC,KAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;wBAC7B,OAAO,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;qBACnD;;oBAED,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE;wBAClC,KAAI,CAAC,MAAM,CAAC,YAAY,GAAG,KAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,UAAC,IAAsB;4BAChF,OAAO,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;yBACrC,CAAC,CAAC;wBACH,OAAO,KAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;qBAC7B;oBACD,IAAI,KAAK,CAAC,MAAM,EAAE;wBAChB,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;;4BAEpC,KAAI,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;4BAC9B,KAAI,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;4BAClC,OAAO,KAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;yBAC7B;qBACF;;;oBAGD,KAAI,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;oBACxB,OAAO,KAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;iBAC7B;aACF,CAAC,CAAC;SACJ;QAEO,4CAAc,GAAtB,UAAuB,MAAW;YAChC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;SACjE;QAED,yCAAW,GAAX;YACE,IAAI,IAAI,CAAC,wBAAwB,EAAE;gBACjC,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,CAAC;aAC7C;YACD,IAAI,IAAI,CAAC,qBAAqB,EAAE;gBAC9B,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC;aAC1C;SACF;;oBA5FJX,YAAS,SACT;;wBAEE,QAAQ,EAAE,eAAe;qBAC1B;;;;;wBAhBK,4BAA4B;wBAFpBY,WAAK,uBA2BbC,WAAQ;;;;kCALZ1C,QAAK;;QAqFV,0BAAC;KA7FC;;;QCHOd,6CAAmB;QAO3B,mCACW,MAAoC,EACxBmD,QAA4B,EACjC,OAAe;YAHjC;;YAMC,kBAAM,MAAM,EAAEA,QAAK,CAAC,SA8BpB;YAnCU,YAAM,GAAN,MAAM,CAA8B;YACxB,WAAK,GAALA,QAAK,CAAuB;YACjC,aAAO,GAAP,OAAO,CAAQ;YANzB,oBAAc,GAAY,IAAI,CAAC;YAC/B,iBAAW,GAAY,KAAK,CAAC;;YAUpC,KAAI,CAAC,mBAAmB,GAAG,KAAI,CAAC,OAAO,CAAC,MAAM;iBAC5C,IAAI,CACJM,gBAAM,CACL,UAAC,KAAK;gBACL,OAAA,KAAK,YAAYpB,oBAAe,IAAI,KAAK,YAAYqB,kBAAa;aAAA,CACnE,CACD;iBACA,SAAS,CAAC,UAAC,KAAsC;;gBAEjD,IAAI,KAAK,YAAYrB,oBAAe,IAAI,CAAC,KAAI,CAAC,cAAc,EAAE;;oBAE7D,KAAI,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC;;oBAE7B,KAAI,CAAC,WAAW,GAAG,IAAI,CAAC;iBACxB;;gBAED,IAAI,KAAK,YAAYqB,kBAAa,IAAI,KAAI,CAAC,cAAc,EAAE;;oBAE1D,KAAI,CAAC,WAAW,GAAG,KAAK,CAAC,iBAAiB,CAAC;;oBAE3C,KAAI,CAAC,cAAc,GAAG,KAAK,CAAC;iBAC5B;gBACD,IAAI,KAAI,CAAC,WAAW,EAAE;;oBAErB,iBAAM,eAAe,YAAE,CAAC;oBACxB,KAAI,CAAC,WAAW,GAAG,KAAK,CAAC;iBACzB;aACD,CAAC,CAAC;;SACJ;QAED,+CAAW,GAAX;;YAEC,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC7B,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;aACvC;;YAED,OAAO,iBAAM,WAAW,WAAE,CAAC;SAC3B;;oBAzDDf,YAAS,SAAC;;wBAEV,QAAQ,EAAE,qBAAqB;qBAC/B;;;;;wBAPQ,4BAA4B;wBAH5BY,WAAK,uBAqBXC,WAAQ;wBAtB8BzD,WAAM;;;QAkE/C,gCAAC;KAAA,CArDQ,mBAAmB;;aCoDV,UAAU;AAnB5B;QAoFI,sBAAoB,iBAAmC;YAAnC,sBAAiB,GAAjB,iBAAiB,CAAkB;YACnD,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,UAAA,GAAG;gBACrB,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;gBAC/D,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aACtB,CAAC,CAAC;SACN;QAEK,+BAAQ,GAAd;;;oBACI,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;oBAC7D,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;;;;SAChE;;oBA9FJ4D,WAAQ,SAAC;wBACN,OAAO,EAAE;4BACLC,mBAAY;4BACZC,eAAY;4BACZC,oBAAe;4BACfC,iBAAW;4BACXC,yBAAmB;4BACnBC,iBAAY;4BACZC,yBAAiB;4BACjBC,0BAAY;4BACZC,2BAAmB;4BACnBP,eAAY;4BACZQ,iBAAW;4BACXC,6BAAiB;4BACjBC,sBAAa;yBAChB;wBACD,SAAS,EAAE,CAACnE,eAAQ,EAAEE,eAAY;4BAChC;gCACE,OAAO,EAAE,iBAAiB;gCAC1B,QAAQ,IAAY;6BACrB;4BAED,kCAAkC;4BAChC,mCAAmC;4BACnC,qBAAqB;4BACrB,yBAAyB;4BACzB,qBAAqB;4BACrBkE,oBAAW;yBACZ;wBACH,YAAY,EAAE;4BACV,sBAAsB;4BACtB,gCAAgC;4BAChC,4BAA4B;4BAC5B,eAAe;4BACf,8BAA8B;4BAC9B,+BAA+B;4BAC/B,2BAA2B;4BAC3B,qBAAqB;4BACrB,0BAA0B;4BAC1B,0BAA0B;4BAC1B,0BAA0B;4BAC1B,uBAAuB;4BACvB,4BAA4B;4BAC5B,2BAA2B;4BAC3B,+BAA+B;4BAC/B,sBAAsB;4BACtB,cAAc;4BACd,iBAAiB;4BACjB,mBAAmB;4BACnB,kBAAkB;4BAClB,yBAAyB;4BACzB,uBAAuB;yBAC1B;wBACD,OAAO,EAAE;4BACL,sBAAsB;4BACtB,4BAA4B;4BAC5B,eAAe;4BACf,8BAA8B;4BAC9B,2BAA2B;4BAC3B,qBAAqB;4BACrB,0BAA0B;4BAC1B,0BAA0B;4BAC1B,0BAA0B;4BAC1B,uBAAuB;4BACvB,4BAA4B;4BAC5B,2BAA2B;4BAC3B,+BAA+B;4BAC/B,iBAAiB;4BACjB,mBAAmB;4BACnB,kBAAkB;4BAClB,yBAAyB;4BACzB,uBAAuB;yBAC1B;wBACD,eAAe,EAAE;4BACb,+BAA+B;4BAC/B,8BAA8B;4BAC9B,0BAA0B;4BAC1B,uBAAuB;4BACvB,iBAAiB;4BACjB,uBAAuB;yBAC1B;wBACD,OAAO,EAAE,CAACC,yBAAsB,CAAC;qBACpC;;;;;wBA9HwBvE,qBAAgB;;;QA4IzC,mBAAC;KAhGD;;IC/CA;;OAEG;;ICFH;;OAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"universis-ngx-tables.umd.js.map","sources":["../../node_modules/tslib/tslib.es6.js","ng://@universis/ngx-tables/lib/components/advanced-table/advanced-table.formatters.ts","ng://@universis/ngx-tables/lib/components/advanced-table/advanced-filter-value-provider.service.ts","ng://@universis/ngx-tables/lib/components/column-selector/column-selector.component.ts","ng://@universis/ngx-tables/lib/components/column-selector/column-selector.service.ts","ng://@universis/ngx-tables/lib/components/advanced-table/advanced-table.component.ts","ng://@universis/ngx-tables/lib/components/advanced-list/advanced-list.component.ts","ng://@universis/ngx-tables/lib/components/advanced-row-action/advanced-row-action.component.ts","ng://@universis/ngx-tables/lib/components/advanced-table/advanced-table-search-base.ts","ng://@universis/ngx-tables/lib/components/advanced-search-form/advanced-search-form.component.ts","ng://@universis/ngx-tables/lib/components/advanced-table-modal/advanced-table-modal-base.component.ts","ng://@universis/ngx-tables/lib/components/advanced-select/advanced-select.component.ts","ng://@universis/ngx-tables/lib/components/advanced-select/advanced-select.service.ts","ng://@universis/ngx-tables/lib/components/advanced-table/advanced-table-resolvers.ts","ng://@universis/ngx-tables/lib/tables.activated-table.service.ts","ng://@universis/ngx-tables/lib/components/advanced-table/advanced-table-settings.component.ts","ng://@universis/ngx-tables/lib/components/advanced-table/advanced-table-search.component.ts","ng://@universis/ngx-tables/lib/components/advanced-table/advanced-table.formatters.interface.ts","ng://@universis/ngx-tables/lib/components/table-simple-header/table-simple-header.component.ts","ng://@universis/ngx-tables/lib/directives/advanced-table-editor.directive.ts","ng://@universis/ngx-tables/lib/directives/btnexp.directive.ts","ng://@universis/ngx-tables/lib/services/advanced-aggregator/advanced-aggregator.service.ts","ng://@universis/ngx-tables/lib/components/advanced-aggregator/advanced-aggregator.component.ts","ng://@universis/ngx-tables/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.ts","ng://@universis/ngx-tables/lib/components/add-items/add-items.component.ts","ng://@universis/ngx-tables/lib/pipes/advanced-aggregator.pipe.ts","ng://@universis/ngx-tables/lib/pipes/advansed-aggregator-list-title-parse.pipe.ts","ng://@universis/ngx-tables/lib/i18n/tables.el.ts","ng://@universis/ngx-tables/lib/i18n/tables.en.ts","ng://@universis/ngx-tables/lib/actions/table.actions.ts","ng://@universis/ngx-tables/lib/reducers/index.ts","ng://@universis/ngx-tables/lib/directives/advance-table-state.directive.ts","ng://@universis/ngx-tables/lib/directives/advance-search-state.directive.ts","ng://@universis/ngx-tables/lib/directives/advanced-search-router-state.directive.ts","ng://@universis/ngx-tables/lib/tables.module.ts","ng://@universis/ngx-tables/public_api.ts","ng://@universis/ngx-tables/universis-ngx-tables.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { template, at } from 'lodash';\nimport { TableColumnConfiguration } from './advanced-table.interfaces';\nimport { Injector } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DatePipe } from '@angular/common';\nimport * as ISO6391 from 'iso-639-1/build';\nimport { ActivatedRoute, NavigationExtras, Router, UrlTree } from '@angular/router';\ndeclare var jQuery: any;\nexport abstract class AdvancedColumnFormatter implements TableColumnConfiguration {\n\n public static templateCache = new Map<string, (data: any) => string>();\n\n protected injector: Injector;\n public className: string;\n public defaultContent: string;\n public formatString: string;\n public formatter: string;\n public hidden: boolean;\n public name: string;\n public order: string;\n public property: string;\n public sortable: boolean;\n public title: string;\n public formatOptions?: any;\n public actions?: Array<any>;\n\n public static template(expr: string): (data: any) => string {\n let result = AdvancedColumnFormatter.templateCache.get(expr);\n if (typeof result === 'function') {\n return result;\n }\n result = template(expr);\n AdvancedColumnFormatter.templateCache.set(expr, result);\n return result;\n }\n\n public abstract render(data: any, type: string, row: any, meta: any): any;\n\n protected createUrlTree(data: any, options: { commands: any[], navigationExtras?: NavigationExtras }): UrlTree {\n if (Array.isArray(options.commands)) {\n const activatedRoute: ActivatedRoute = this.injector.get(ActivatedRoute);\n const router: Router = this.injector.get(Router);\n const commands = options.commands.map((command) => {\n if (typeof command === 'string') {\n return AdvancedColumnFormatter.template(command)(data);\n }\n if (command.outlets) {\n const commandOutlets = {};\n Object.keys(command.outlets).forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(command.outlets, key)) {\n const outlet = command.outlets[key];\n if (Array.isArray(outlet)) {\n Object.defineProperty(commandOutlets, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: outlet.map((x) => {\n return AdvancedColumnFormatter.template(x)(data);\n }),\n });\n } else {\n Object.defineProperty(commandOutlets, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: outlet,\n });\n }\n }\n });\n return {\n outlets: commandOutlets,\n };\n }\n return command;\n });\n const queryParams = {};\n let replaceUrl = true;\n if (options.navigationExtras && options.navigationExtras.queryParams) {\n Object.keys(options.navigationExtras.queryParams).map((key) => {\n const text = options.navigationExtras.queryParams[key];\n queryParams[key] = AdvancedColumnFormatter.template(text)(data);\n });\n }\n if (options.navigationExtras && typeof options.navigationExtras.replaceUrl !== 'undefined') {\n replaceUrl = options.navigationExtras.replaceUrl;\n }\n let skipLocationChange = false;\n if (options.navigationExtras && typeof options.navigationExtras.skipLocationChange !== 'undefined') {\n skipLocationChange = options.navigationExtras.skipLocationChange;\n }\n\n let fragment: string;\n if (options.navigationExtras && typeof options.navigationExtras.fragment !== 'undefined') {\n fragment = options.navigationExtras.fragment;\n }\n\n return router.createUrlTree(commands,\n {\n fragment,\n relativeTo: activatedRoute,\n queryParams,\n replaceUrl,\n skipLocationChange,\n }\n );\n }\n }\n}\n\nexport interface OnAdvancedColumnAfterRender {\n afterRender(cell: any, cellData: any, rowData: any, rowIndex: number, colIndex: number): void;\n}\n\nexport class NestedPropertyFormatter extends AdvancedColumnFormatter {\n public render(data, type, row, meta) {\n // get column\n const column = meta.settings.aoColumns[meta.col];\n if (column && column.data) {\n return at(row, column.data.replace(/\\//g, '.'));\n }\n return data;\n }\n constructor() {\n super();\n }\n}\n\nexport class ButtonFormatter extends AdvancedColumnFormatter {\n public render(data, type, row, meta) {\n if (data == null) {\n return '';\n }\n // get column\n const column = meta.settings.aoColumns[meta.col];\n // get format options\n const formatOptions = Object.assign({\n buttonClass: 'btn btn-default',\n }, this.formatOptions);\n // get text content\n let buttonText: string;\n let buttonTitle = '';\n if (formatOptions.buttonText) {\n buttonText = this.injector.get(TranslateService).instant(formatOptions.buttonText);\n } else {\n buttonText = formatOptions.buttonContent;\n }\n if (formatOptions.buttonTitle) {\n buttonTitle = this.injector.get(TranslateService).instant(formatOptions.buttonTitle);\n }\n if (Array.isArray(this.formatOptions.commands)) {\n let routerLink = this.createUrlTree(row, this.formatOptions);\n return `<a class=\"${formatOptions.buttonClass}\" title=\"${buttonTitle}\" href=\"#${routerLink}\">${buttonText}</a>`;\n }\n // and return button\n const href = AdvancedColumnFormatter.template(this.formatString)(row);\n return `<a class=\"${formatOptions.buttonClass}\" title=\"${buttonTitle}\" href=\"${href}\">${buttonText}</a>`;\n }\n constructor() {\n super();\n }\n}\n\nexport class LinkFormatter extends AdvancedColumnFormatter {\n public render(data: any, type: string, row: any, meta: any): any {\n // get column\n const column = meta.settings.aoColumns[meta.col];\n if (column && column.data) {\n return `<a href=\"${(AdvancedColumnFormatter.template(this.formatString)(row))}\">${data}</a>`;\n }\n return data;\n }\n constructor() {\n super();\n }\n}\n\nexport class ActionLinkFormatter extends AdvancedColumnFormatter\n implements OnAdvancedColumnAfterRender {\n public render(data: any, type: string, row: any, meta: any): any {\n // get column\n const column = meta.settings.aoColumns[meta.col];\n\n if (column && column.data) {\n const actions = this.actions || [];\n let index = 1;\n for (const action of actions) {\n Object.assign(action, {\n name: action.name || `action${index}`,\n });\n index += 1;\n }\n // return the dropdown menu with 3 dots\n return `<div class='dropdown details-control' data-id='${data}' data-type='student' >\n <a id=\"dropdownMenuButton-${data}\"\n data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n <span class=\"fa-2x text-dots\"></span>\n </a>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButton-${data}\">\n ${actions.map((x) => {\n if (x.type === 'divider') {\n return `<div class=\"dropdown-divider\"></div>`;\n }\n if (x.formatOptions && x.formatOptions.commands) {\n const urlTree = this.createUrlTree(row, x.formatOptions);\n return `<a data-name='${x.name}' class=\"dropdown-item\" href=\"#${urlTree.toString()}\">\n ${this.injector.get(TranslateService).instant(x.title)}\n </a>`;\n }\n return `<a data-name='${x.name}' class=\"dropdown-item\" href=\"${AdvancedColumnFormatter.template(x.href)(row)}\">\n ${this.injector.get(TranslateService).instant(x.title)}\n </a>`;\n })\n .join('')}\n </div>\n </div>`;\n }\n return data;\n }\n\n constructor() {\n super();\n }\n public afterRender(cell: any, cellData: any, rowData: any, rowIndex: number, colIndex: number): void {\n // assign bootstrap dropdown (?)\n }\n}\n\nexport class ActionButtonFormatter extends AdvancedColumnFormatter\n implements OnAdvancedColumnAfterRender {\n public render(data: any, type: string, row: any, meta: any): any {\n // get column\n const column = meta.settings.aoColumns[meta.col];\n\n if (column && column.data) {\n const actions = this.actions || [];\n let index = 1;\n for (const action of actions) {\n Object.assign(action, {\n name: action.name || `action${index}`,\n });\n index += 1;\n }\n let buttonText: string;\n if (this.formatOptions && this.formatOptions.buttonText) {\n // if button text is a literal expression\n if (this.formatOptions.buttonText.includes('${')) {\n // use template\n buttonText = AdvancedColumnFormatter.template(this.formatOptions.buttonText)(row);\n } else {\n // otherwise translate it\n buttonText = this.injector.get(TranslateService).instant(this.formatOptions.buttonText);\n }\n }\n let buttonTitle: string;\n if (this.formatOptions && this.formatOptions.buttonTitle) {\n buttonTitle = this.injector.get(TranslateService).instant(this.formatOptions.buttonTbuttonTitleext);\n }\n const buttonClass = (this.formatOptions && this.formatOptions.buttonClass) || 'btn btn-light';\n // return the dropdown menu with 3 dots\n return `<div class='dropdown details-control' data-id='${data}'>\n <a class=\"${buttonClass} dropdown-toggle\" href=\"#\" role=\"button\" title=\"${buttonTitle}\"\n id=\"dropdownMenuButton-${data}\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n ${buttonText}\n </a>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButton-${data}\">\n ${actions.map((x) => {\n if (x.type === 'divider') {\n return `<div class=\"dropdown-divider\"></div>`;\n }\n if (x.commands) {\n const urlTree = this.createUrlTree(row, x);\n return `<a class=\"dropdown-item\" href=\"#${urlTree.toString()}\">\n ${this.injector.get(TranslateService).instant(x.title)}\n </a>`;\n }\n return `<a class=\"dropdown-item\" href=\"${AdvancedColumnFormatter.template(x.href)(row)}\">\n ${this.injector.get(TranslateService).instant(x.title)}\n </a>`;\n })\n .join('')}\n </div>\n </div>`;\n }\n return data;\n }\n\n constructor() {\n super();\n }\n public afterRender(cell: any, cellData: any, rowData: any, rowIndex: number, colIndex: number): void {\n // assign bootstrap dropdown (?)\n }\n}\n\nexport class ActionSplitButtonFormatter extends AdvancedColumnFormatter\n implements OnAdvancedColumnAfterRender {\n public render(data: any, type: string, row: any, meta: any): any {\n // get column\n const column = meta.settings.aoColumns[meta.col];\n\n if (column && column.data) {\n const actions = this.actions || [];\n let index = 1;\n for (const action of actions) {\n Object.assign(action, {\n name: action.name || `action${index}`,\n });\n index += 1;\n }\n if (actions.length === 0) {\n return;\n }\n const buttonClass = (this.formatOptions && this.formatOptions.buttonClass) || 'btn btn-light';\n // return the dropdown menu with 3 dots\n const defaultAction = actions[0];\n let defaultActionHref: string;\n if (defaultAction && defaultAction.commands) {\n defaultActionHref = '#' + this.createUrlTree(row, defaultAction).toString();\n } else {\n defaultActionHref = AdvancedColumnFormatter.template(defaultAction.href)(row);\n }\n return `<div class=\"btn-group\">\n <a type=\"button\" class=\"${buttonClass}\" href=\"${defaultActionHref}\">\n ${this.injector.get(TranslateService).instant(defaultAction.title)}\n </a>\n <button type=\"button\" class=\"${buttonClass} dropdown-toggle dropdown-toggle-split\"\n data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n <span class=\"sr-only\">${this.injector.get(TranslateService).instant('Toggle Dropdown')}</span>\n </button>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButton-${data}\">\n ${actions.map((x) => {\n if (x.title === '-') {\n return `<div class=\"dropdown-divider\"></div>`;\n }\n if (x.commands) {\n const urlTree = this.createUrlTree(row, x);\n return `<a class=\"dropdown-item\" href=\"#${urlTree.toString()}\">\n ${this.injector.get(TranslateService).instant(x.title)}\n </a>`;\n }\n return `<a class=\"dropdown-item\" href=\"${AdvancedColumnFormatter.template(x.href)(row)}\">\n ${this.injector.get(TranslateService).instant(x.title)}\n </a>`;\n })\n .join('')}\n </div>\n </div>`;\n }\n return data;\n }\n\n constructor() {\n super();\n }\n public afterRender(cell: any, cellData: any, rowData: any, rowIndex: number, colIndex: number): void {\n // assign bootstrap dropdown (?)\n }\n}\n\nexport class SelectRowFormatter extends AdvancedColumnFormatter {\n public render(data, type, row, meta) {\n // get column\n const column = meta.settings.aoColumns[meta.col];\n if (column && column.data) {\n const _tpl = `<input class=\"checkbox checkbox-theme\" type=\"checkbox\"\n id=\"s-${meta.row}\" /><label for=\"s-${meta.row}\"> </label>`;\n return AdvancedColumnFormatter.template(_tpl)(row);\n }\n return data;\n }\n constructor() {\n super();\n }\n}\n\nexport class TemplateFormatter extends AdvancedColumnFormatter {\n public render(data: any, type: string, row: any, meta: any): any {\n // get column\n const column = meta.settings.aoColumns[meta.col];\n if (column && column.data) {\n return AdvancedColumnFormatter.template(this.formatString)(row);\n }\n return data;\n }\n constructor() {\n super();\n }\n}\n\nexport class TrueFalseFormatter extends AdvancedColumnFormatter {\n\n public render(data, type, row, meta) {\n return data ? this.injector.get(TranslateService).instant('TrueFalse.long.Yes') :\n this.injector.get(TranslateService).instant('TrueFalse.long.No');\n }\n\n constructor() {\n super();\n }\n}\n\ndeclare interface TranslationFormatterTemplate {\n translateTemplate?: (data: any) => string;\n}\n\nexport class TranslationFormatter extends AdvancedColumnFormatter {\n public render(data: any, type: string, row: any, meta: any): any {\n // get column\n const column: TranslationFormatterTemplate = meta.settings.aoColumns[meta.col];\n if (column && data != null) {\n return this.injector.get(TranslateService).instant(\n AdvancedColumnFormatter.template(this.formatString)({\n value: data,\n }));\n }\n return this.injector.get(TranslateService).instant('Unknown');\n }\n constructor() {\n super();\n }\n}\n\nexport class DateTimeFormatter extends AdvancedColumnFormatter {\n public render(data: any, type: string, row: any, meta: any): any {\n // get column\n const column = meta.settings.aoColumns[meta.col];\n if (column && column.data) {\n const datePipe: DatePipe = new DatePipe(this.injector.get(TranslateService).currentLang);\n if (typeof data === 'string' && /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}$/.test(data)) {\n return datePipe.transform(new Date(data + ':00'), this.formatString);\n }\n return datePipe.transform(data, this.formatString);\n }\n return data;\n }\n constructor() {\n super();\n }\n}\n\nexport class NgClassFormatter extends AdvancedColumnFormatter {\n public render(data, type, row, meta) {\n // get column\n const column = meta.settings.aoColumns[meta.col];\n if (column && column.data) {\n // get formatOptions\n if (this.formatOptions) {\n const ngClass = this.formatOptions.ngClass;\n // check condition for each key\n column.ngClassTemplates = column.ngClassTemplates || {};\n for (const key of Object.keys(ngClass)) {\n const result = AdvancedColumnFormatter.template(ngClass[key])(row);\n const fn = new Function(`return ${result};`);\n // if condition returns true add class\n if (fn() === true) {\n return `<span class=\"${key}\">${data}</span>`;\n }\n }\n }\n return data;\n }\n return data;\n }\n constructor() {\n super();\n }\n}\nexport class LanguageFormatter extends AdvancedColumnFormatter {\n public render(data, type, row, meta) {\n if (data) {\n return ISO6391.getNativeName(data);\n }\n return data;\n }\n constructor() {\n super();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TemplatePipe } from '@universis/common';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AdvancedFilterValueProvider {\n\n public values = { };\n private _template: TemplatePipe;\n\n constructor() {\n this._template = new TemplatePipe();\n }\n\n buildFilter(filter) {\n if (filter) {\n return this._template.transform(filter, this.values)\n }\n }\n\n async asyncBuildFilter(filter) {\n if (filter) {\n return this._template.transform(filter, await this.getValues());\n }\n }\n\n async getValues() {\n return this.values;\n }\n\n}\n","import { Component, OnInit, OnDestroy, Input, EventEmitter, ViewEncapsulation, OnChanges, SimpleChanges, ChangeDetectorRef, ViewChild, ElementRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { RouterModalOkCancel } from '@universis/common/routing';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n@Component({\n selector: 'app-column-selector',\n templateUrl: './column-selector.component.html',\n encapsulation: ViewEncapsulation.None,\n styles: [\n `\n .form-select {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n padding: 5px;\n }\n .form-select * {\n padding: 5px 5px;\n }\n .btn.disabled, .btn:disabled {\n border-color: transparent !important;\n }\n `\n ]\n})\nexport class ColumnSelectorComponent extends RouterModalOkCancel implements OnInit, OnDestroy, OnChanges {\n \n @Input() columns: { key: string, title: string, visible: boolean, index: number }[];\n public dismiss: EventEmitter<any> = new EventEmitter();\n\n @Input() selectedColumns: { key: string, title: string }[];\n\n @ViewChild('moveUpButton') moveUpButton: ElementRef;\n @ViewChild('moveDownButton') moveDownButton: ElementRef;\n\n availableColumnsControl = new FormControl();\n selectedColumnsControl = new FormControl();\n\n ok(): Promise<any> {\n this._modalRef.hide();\n this.applyChanges();\n this.dismiss.emit('ok');\n return Promise.resolve('ok');\n }\n cancel(): Promise<any> {\n this._modalRef.hide();\n this.dismiss.emit('cancel');\n return Promise.resolve('cancel');\n }\n\n constructor(router: Router,\n activatedRoute: ActivatedRoute,\n private _modalRef: BsModalRef,\n private ref: ChangeDetectorRef,\n private _translateService: TranslateService) { \n super(router, activatedRoute);\n }\n ngOnChanges(changes: SimpleChanges): void {\n //\n }\n ngOnDestroy(): void {\n //\n }\n ngOnInit(): void {\n if (Array.isArray(this.columns)) {\n this.selectedColumns = this.columns.filter((item) => {\n return item.visible;\n }).sort((a, b) => {\n if (a.index < b.index) {\n return -1\n }\n if (a.index > b.index) {\n return 1;\n }\n return 0;\n }).map((item) => {\n return {\n key: item.key,\n title: item.title\n }\n });\n }\n }\n\n private applyChanges() {\n let moveIndex = this.selectedColumns.length - 1;\n for (const column of this.columns) {\n const findIndex = this.selectedColumns.findIndex((item) => {\n return item.key === column.key;\n });\n if (findIndex < 0) {\n column.visible = false;\n moveIndex += 1;\n column.index = moveIndex;\n } else {\n column.visible = true;\n column.index = findIndex;\n }\n }\n }\n\n removeColumns() {\n const selected = this.selectedColumnsControl.value as string[];\n if (selected.length > 0) {\n for (const value of selected) {\n let findIndex = this.selectedColumns.findIndex((item) => {\n return item.key === value;\n });\n if (findIndex >= 0) {\n this.selectedColumns.splice(findIndex, 1);\n }\n }\n // reset column\n this.selectedColumnsControl.reset();\n }\n }\n\n addColumns() {\n const selected = this.availableColumnsControl.value as string[];\n if (selected.length > 0) {\n for (const value of selected) {\n let findColumn = this.columns.find((item) => {\n return item.key === value;\n });\n if (findColumn) {\n const findIndex = this.selectedColumns.findIndex((item) => {\n return item.key === value;\n });\n if (findIndex < 0) {\n this.selectedColumns.push({\n key: findColumn.key,\n title: findColumn.title\n });\n }\n }\n }\n // find the last index of the selected items\n const lastSelectedIndex = this.columns.findIndex((item) => {\n return item.key === selected[selected.length - 1];\n });\n // reset control\n this.availableColumnsControl.reset();\n if (lastSelectedIndex > -1 && lastSelectedIndex < this.columns.length - 1) {\n this.availableColumnsControl.patchValue([\n this.columns[lastSelectedIndex + 1].key\n ])\n }\n }\n }\n\n moveUp() {\n this.moveUpButton.nativeElement.disabled = true;\n const selected = this.selectedColumnsControl.value as string[];\n if (selected.length > 0) {\n for (const value of selected) {\n const findIndex = this.selectedColumns.findIndex((item) => {\n return item.key === value;\n });\n if (findIndex > 0) {\n const column = this.selectedColumns[findIndex];\n this.selectedColumns.splice(findIndex, 1);\n this.selectedColumns.splice(findIndex - 1 , 0, column);\n }\n }\n }\n this.moveUpButton.nativeElement.disabled = false;\n }\n\n moveDown() {\n this.moveDownButton.nativeElement.disabled = true;\n const selected = this.selectedColumnsControl.value as string[];\n if (selected.length > 0) {\n for (const value of selected) {\n let findIndex = this.selectedColumns.findIndex((item) => {\n return item.key === value;\n });\n const length = this.columns.length;\n if (findIndex >= 0 && findIndex < length) {\n const column = this.selectedColumns[findIndex];\n this.selectedColumns.splice(findIndex, 1);\n this.selectedColumns.splice(findIndex + 1 , 0, column);\n }\n }\n }\n this.moveDownButton.nativeElement.disabled = false;\n }\n \n\n}\n","import { Injectable } from '@angular/core';\nimport { ModalService } from '@universis/common';\nimport { ColumnSelectorComponent } from './column-selector.component';\nimport { cloneDeep } from 'lodash';\n\n@Injectable()\nexport class ColumnSelectorService {\n\n constructor(private _modal: ModalService) {\n //\n }\n\n selectColumns(columns: { key: string, title: string, visible: boolean, index: number }): \n Promise<{result: string, columns?: { key: string, title: string, visible: boolean, index: number }[]}> {\n return new Promise((resolve, reject) => {\n try {\n const modalRef = this._modal.openModalComponent(ColumnSelectorComponent, {\n class: 'modal-lg modal-table',\n ignoreBackdropClick: true,\n animated: true,\n initialState: {\n columns: columns,\n }\n });\n const componentRef: ColumnSelectorComponent = modalRef.content;\n componentRef.dismiss.subscribe((result: string) => {\n if (result === 'ok') {\n return resolve({\n result: result,\n columns: componentRef.columns\n });\n }\n return resolve({\n result: result\n });\n \n });\n } catch (err) {\n return reject(err);\n }\n });\n }\n\n}\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef, EventEmitter,\n Inject,\n InjectionToken,\n Injector,\n Input, OnDestroy,\n OnInit, Output,\n ViewChild,\n ViewEncapsulation,\n OnChanges,\n SimpleChanges\n} from '@angular/core';\nimport {AngularDataContext} from '@themost/angular';\nimport {TranslatePipe, TranslateService} from '@ngx-translate/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {TableColumnConfiguration, TableConfiguration} from './advanced-table.interfaces';\nimport {DataServiceQueryParams} from '@themost/client';\nimport {AdvancedColumnFormatter} from './advanced-table.formatters';\nimport {ClientDataQueryable} from '@themost/client';\nimport {AdvancedFilterValueProvider} from './advanced-filter-value-provider.service';\nimport {Subscription, BehaviorSubject} from 'rxjs';\nimport {TemplatePipe, LoadingService} from '@universis/common';\nimport {IAdvancedTableFormatters} from './advanced-table.formatters.interface';\n// important note: use this import to avoid Cannot call a namespace ('jquery') error\nimport * as jQuery_ from 'jquery';\nimport 'datatables.net';\nimport {template} from 'lodash';\nimport 'datatables.net-scroller';\nimport 'datatables.net-colreorder';\nimport { HttpClient } from '@angular/common/http';\nimport { ColumnSelectorService } from '../column-selector/column-selector.service';\n// restore jquery import to avoid Cannot call a namespace ('jquery') error\nconst jQuery = jQuery_;\nexport interface AdvancedTableDataResult {\n recordsTotal: number;\n recordsFiltered: number;\n data: Array<any>;\n}\n\nconst DataTablesApi: any = jQuery.fn.dataTable.Api;\nDataTablesApi.register( 'processing()', function( show: any ) {\n return this.iterator('table', ( ctx: any ) => {\n ctx.oApi._fnProcessingDisplay( ctx, show );\n } );\n});\n\nclass TableTranslationChangeDetector extends ChangeDetectorRef {\n public checkNoChanges(): void {\n }\n\n public detach(): void {\n }\n\n public detectChanges(): void {\n }\n\n public markForCheck(): void {\n }\n\n public reattach(): void {\n }\n\n}\n\nexport let COLUMN_FORMATTERS = new InjectionToken('column.formatters');\n\nclass ColumnFormatter extends AdvancedColumnFormatter {\n constructor(protected injector: Injector) {\n super();\n }\n\n public class: string;\n public className: string;\n public defaultContent: string;\n public formatString: string;\n public formatter: string;\n public hidden: boolean;\n public name: string;\n public order: string;\n public property: string;\n public sortable: boolean;\n public title: string;\n\n public render(data: any, type: any, row: any, meta: any) {\n //\n }\n}\n\nfunction forceCast<T>(input: any): T {\n return input;\n}\n\nexport class AdvancedTableConfiguration {\n public static cast(input: any, clone?: boolean): TableConfiguration {\n if (clone) {\n return forceCast<TableConfiguration>(JSON.parse(JSON.stringify(input)));\n }\n return forceCast<TableConfiguration>(input);\n }\n}\n\nfunction getRandomIdentifier() {\n return (\n Number(String(Math.random()).slice(2))\n ).toString(36);\n}\n\n@Component({\n // tslint:disable-next-line: component-selector\n selector: 'app-advanced-table',\n template: `\n <table #table class=\"dataTable\">\n </table>\n <div #emptyTable class=\"d-none\">\n <div>\n <div class=\"mt-4\">\n <div class=\"icon-circle bg-gray-300 border-gray-100\"></div>\n </div>\n <div class=\"mt-4\">\n <h4 class=\"font-3xl text-dark\" [translate]=\"'Tables.EmptyTableTitle'\"></h4>\n <p class=\"font-lg text-dark\" [translate]=\"'Tables.EmptyTableMessage'\"></p>\n </div>\n </div>\n </div>\n `,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./advanced-table.component.scss'],\n})\nexport class AdvancedTableComponent implements OnInit, OnDestroy, OnChanges {\n\n private _query: ClientDataQueryable;\n private _config: TableConfiguration;\n private _firstLoad = true;\n private _showFooter = false;\n private _showHeader = true;\n private _showPaging = false;\n private _id = getRandomIdentifier();\n public smartSelect = false;\n public configChanges = new BehaviorSubject<any>(null);\n\n @ViewChild('table') public table: ElementRef;\n @ViewChild('emptyTable') public emptyTable: ElementRef;\n @ViewChild('loadingTable') public loadingTable: ElementRef;\n @Input() public height = 800;\n @Input() public showActions = true;\n @Input() public autoLoad = true;\n @Output('load') public load: EventEmitter<AdvancedTableDataResult> = new EventEmitter<AdvancedTableDataResult>();\n @Output('init') public init: EventEmitter<any> = new EventEmitter<any>();\n @Input('reload') public reload: EventEmitter<any> = new EventEmitter<any>();\n @Output('select') public select: EventEmitter<any> = new EventEmitter<any>();\n @Output('draw') public draw: EventEmitter<any> = new EventEmitter<any>();\n @Output('page') public page: EventEmitter<any> = new EventEmitter<any>();\n @Output('order') public order: EventEmitter<any[][]> = new EventEmitter<any[][]>();\n @Output('scroll') public scroll: EventEmitter<{ top: number; left: number }> = new EventEmitter<{ top: number; left: number }>();\n @Output('selectedItems') public selectedItems: EventEmitter<any> = new EventEmitter<any>();\n @Output('loading') public loading: EventEmitter<{\n target: AdvancedTableComponent\n }> = new EventEmitter<{\n target: AdvancedTableComponent\n }>();\n\n @Input() public scrollable = true;\n @Input() public serverSide = true;\n @Input() public lengthMenu = [50, 100, 200, 500];\n @Input() public paging = true;\n @Input() public pageLength = 25;\n @Input() public columnOrdering = false;\n @Input() public stateSave = false;\n @Input() public stateLoadCallback: (settings: any, callback: (state: any) => void) => void;\n @Input() public stateSaveCallback: (settings: any, state: any) => void;\n\n @Input() public scrollY = 800;\n @Input() public scrollX = true;\n /**\n * Enables row selection. The defaulr value is false\n */\n @Input() public selectable = false;\n /**\n * Enables or disable multiple selection. The default values is true.\n */\n @Input() public multipleSelect = true;\n /**\n * Enables custom selection and hides select column. The default value is false\n */\n @Input() public customSelect = false;\n @Input() public selected = [];\n public unselected = [];\n /**\n * Gets or sets a URL to load table configuration from\n */\n @Input() public configSrc: string;\n\n /**\n * Gets or sets table configuration\n */\n @Input('config')\n public set config(value: TableConfiguration) {\n this._config = value;\n // raise subscription\n this.configChanges.next(this._config);\n }\n\n public get config() {\n return this._config;\n }\n\n /**\n * Indicates whether table footer will be visible or not\n */\n @Input('showFooter')\n public set showFooter(value: boolean) {\n this._showFooter = value;\n // show or hide footer\n if (this._element && this._element.nativeElement) {\n const element = ( this._element.nativeElement as HTMLDivElement)\n .querySelector('.dataTables_info');\n if (element == null) {\n return;\n }\n if (value) {\n element.classList.remove('d-none');\n } else {\n element.classList.add('d-none');\n }\n }\n }\n\n public get showFooter() {\n return this._showFooter;\n }\n\n /**\n * Indicates whether table footer will be visible or not\n */\n @Input('showHeader')\n public set showHeader(value: boolean) {\n this._showHeader = value;\n // show or hide footer\n if (this._element && this._element.nativeElement) {\n const element = ( this._element.nativeElement as HTMLDivElement)\n .querySelector('.dataTable>thead');\n if (element == null) {\n return;\n }\n const dataTable = ( this._element.nativeElement as HTMLDivElement).querySelector('.dataTable');\n if (value) {\n element.classList.remove('d-none');\n // add top margin\n dataTable.classList.remove('mt-2');\n } else {\n element.classList.add('d-none');\n // remove top margin\n dataTable.classList.add('mt-2');\n }\n }\n }\n\n public get showHeader() {\n return this._showHeader;\n }\n\n /**\n * Indicates whether paging information will be visible or not\n */\n @Input('showPaging')\n public set showPaging(value: boolean) {\n this._showPaging = value;\n // show or hide footer\n if (this._element && this._element.nativeElement) {\n const element = ( this._element.nativeElement as HTMLDivElement)\n .querySelector('.dataTables_paginate');\n if (element == null) {\n return;\n }\n if (value) {\n jQuery(element).show();\n } else {\n jQuery(element).hide();\n }\n }\n }\n\n public get showPaging() {\n return this._showPaging;\n }\n\n /**\n * Gets or sets an active query for this table\n */\n @Input('query')\n public set query(value: ClientDataQueryable) {\n this._query = value;\n }\n\n public get query() {\n return this._query;\n }\n\n public readonly translator: TranslatePipe;\n public dataTable: any;\n public dtOptions: any;\n private lastQueryParams: DataServiceQueryParams;\n private reloadSubscription: Subscription;\n\n constructor(private _context: AngularDataContext,\n @Inject(COLUMN_FORMATTERS) private _columnFormatters: IAdvancedTableFormatters,\n private _activatedRoute: ActivatedRoute,\n private _translateService: TranslateService,\n private _injector: Injector,\n private _advancedFilterValueProvider: AdvancedFilterValueProvider,\n private _element: ElementRef,\n private _template: TemplatePipe,\n private _loading: LoadingService,\n private _http: HttpClient,\n private _columnSelector: ColumnSelectorService) {\n // initialize translate pipe\n this.translator = new TranslatePipe(this._translateService, new TableTranslationChangeDetector());\n jQuery.fn.dataTable.ext.classes.sPageButton = 'btn';\n jQuery.fn.dataTable.ext.classes.sPageButtonActive = 'btn btn-light';\n this.reloadSubscription = this.reload.subscribe((data) => {\n this.fetch();\n });\n }\n\n // simple search\n public search(searchText) {\n this.query = this.query || this._context.model(this.config.model).asQueryable();\n if (this.serverSide) {\n if (searchText && this.config.searchExpression) {\n // validate search text in double quotes\n if (/^\"(.*?)\"$/.test(searchText)) {\n this.query.setParam('$filter',\n this._template.transform(this.config.searchExpression, {\n text: searchText.replace(/^\"|\"$/g, ''),\n }));\n } else {\n // try to split words\n const words = searchText.split(' ');\n // join words to a single filter\n const filter = words.map((word) => {\n return this._template.transform(this.config.searchExpression, {\n text: word,\n });\n }).join(' and ');\n // set filter\n this.query.setParam('$filter', filter);\n }\n } else {\n // clear filter\n this.query.setParam('$filter', null);\n }\n this._firstLoad = false;\n this.dataTable.draw();\n } else {\n // ensure empty table layout\n this.resetEmptyTable();\n // search locally\n this.dataTable.search(searchText.trim()).draw();\n // get indexes of filtered rows\n const indexes = Array.from(this.dataTable.context[0].aiDisplay);\n // set recordsFiltered\n const recordsFiltered = indexes.length;\n // set recordsTotal\n const recordsTotal = indexes.length;\n // retrieve data from indexes\n const rows = Array.from(this.dataTable.rows().data());\n const data = indexes.map(index => rows[<number>index]);\n // emit results to load output\n this.load.emit({\n data: data,\n recordsFiltered: recordsFiltered,\n recordsTotal: recordsTotal\n });\n }\n }\n\n public fetch(clearSelected?: boolean) {\n // if data table is null\n if (this.dataTable == null) {\n // initialize data table\n return this.ngOnInit();\n }\n // clear selection if parameter is not declared or it's true\n if (clearSelected == null || clearSelected === true) {\n // set smart select to false\n this.smartSelect = false;\n // clear selected items\n if (this.selected.length) {\n this.selected.splice(0, this.selected.length);\n }\n // clear unselected items\n if (this.unselected.length) {\n this.unselected.splice(0, this.unselected.length);\n }\n }\n // otherwise load data only\n this.dataTable.draw();\n }\n\n public destroy() {\n if (this.dataTable) {\n this.dataTable.destroy();\n this._firstLoad = true;\n jQuery(this.table.nativeElement).empty();\n this.dataTable = null;\n // clear selected items\n if (this.selected.length) {\n this.selected.splice(0, this.selected.length);\n }\n // clear unselected items\n if (this.unselected.length) {\n this.unselected.splice(0, this.unselected.length);\n }\n // set smart select to false\n this.smartSelect = false;\n }\n }\n\n /**\n * Selects the specified data row\n */\n public selectRow(row: any, silent?: boolean) {\n if (row) {\n // get row\n const rowNode = row.node();\n // if multiple select is false\n if (this.multipleSelect === false) {\n if (this.customSelect === false) {\n // enumerate row\n this.dataTable.rows().nodes().each((node: any) => {\n if (node !== rowNode) {\n jQuery(node).find(':checkbox').prop('checked', false);\n }\n });\n } else {\n this.dataTable.rows('.selected').nodes().each((node: any) => {\n if (node !== rowNode) {\n jQuery(node).removeClass('selected');\n }\n });\n }\n // clear selected\n this.selected.splice(0, this.selected.length);\n }\n // if custom select mode is off\n if (this.customSelect === false) {\n jQuery(rowNode).find(':checkbox').prop('checked', true);\n } else {\n // otherwise add class\n jQuery(row.node()).addClass('selected');\n }\n // get row data\n const key = this.config.columns[0].property || this.config.columns[0].name;\n const data = row.data();\n // search selected items\n let findIndex = this.selected.findIndex((x) => {\n return x[key] === data[key];\n });\n if (findIndex >= 0) {\n // remove previously selected row\n this.selected.splice(findIndex, 1);\n }\n this.selected.push(data);\n // validate unselected data\n findIndex = this.unselected.findIndex((x) => {\n return x[key] === data[key];\n });\n if (findIndex >= 0) {\n // remove previously selected row\n this.unselected.splice(findIndex, 1);\n }\n if (silent) {\n return;\n }\n this.selectedItems.emit(this.selected);\n }\n }\n\n /**\n * Unselects the specified data row if it's selected\n */\n public unSelectRow(row: any, silent?: boolean) {\n if (row) {\n // if custom select mode is off\n if (this.customSelect === false) {\n jQuery(row.node()).find(':checkbox').prop('checked', false);\n } else {\n // otherwise add class\n jQuery(row.node()).removeClass('selected');\n }\n // get first column key\n const key = this.config.columns[0].property || this.config.columns[0].name;\n const data = row.data();\n const id = data[key];\n let findIndex = this.selected.findIndex((x) => {\n return x[key] === id;\n });\n if (findIndex >= 0) {\n this.selected.splice(findIndex, 1);\n if (this.smartSelect) {\n // add this row to unselected rows\n findIndex = this.unselected.findIndex((x) => {\n return x[key] === id;\n });\n if (findIndex < 0) {\n this.unselected.push(data);\n }\n }\n if (silent) {\n return;\n }\n this.selectedItems.emit(this.selected);\n }\n }\n }\n\n public selectAny() {\n if (this.dataTable && this.selectable) {\n // set smart select flag\n this.smartSelect = true;\n // select any row\n this.dataTable.rows().every((index: any) => {\n const row = this.dataTable.row( index );\n this.selectRow(row, true);\n });\n // emit selection event\n this.selectedItems.emit(this.selected);\n }\n }\n\n public selectNone() {\n if (this.dataTable && this.selectable) {\n // set smart select flag\n this.smartSelect = false;\n this.unselected.splice(0, this.unselected.length);\n // select any row\n this.dataTable.rows().every((index: any) => {\n const row = this.dataTable.row( index );\n this.unSelectRow(row, true);\n });\n this.selected.splice(0, this.selected.length);\n // emit selection event\n this.selectedItems.emit(this.selected);\n }\n }\n\n public toggleSelectRow(row: any) {\n if (row) {\n const data = row.data();\n // get first column key\n const key = this.config.columns[0].property || this.config.columns[0].name;\n // get id\n const id = data[key];\n // find if row is selected\n const findIndex = this.selected.find((x) => {\n return x[key] === id;\n });\n // if row is selected\n if (findIndex >= 0) {\n // unselect\n this.unSelectRow(row);\n } else {\n this.selectRow(row);\n }\n }\n }\n\n // noinspection JSMethodCanBeStatic\n /**\n * Datatables column renderer for select checkbox\n * @param data\n * @param type\n * @param row\n * @param meta\n * @private\n */\n private _renderSelect(data, type, row, meta) {\n // get column\n const column = meta.settings.aoColumns[meta.col];\n if (typeof column.selectTemplate !== 'function') {\n Object.assign(column, {\n selectTemplate: template(`<input class=\"checkbox checkbox-theme s-row\" type=\"checkbox\"\n id=\"s-${this._id}-\\${meta.row}\" data-id=\"\\${data}\" /><label for=\"s-${this._id}-\\${meta.row}\"> </label>\n `),\n });\n }\n // render template\n return column.selectTemplate({\n meta,\n data,\n });\n }\n\n public ngOnInit() {\n const self = this;\n if (this.dataTable) {\n this.destroy();\n }\n if (this.config) {\n this.loading.emit({\n target: this\n });\n // parse properties\n if (Object.prototype.hasOwnProperty.call(this.config, 'selectable')) {\n this.selectable = this.config.selectable;\n }\n if (Object.prototype.hasOwnProperty.call(this.config, 'multipleSelect')) {\n this.multipleSelect = this.config.multipleSelect;\n }\n // prepare configuration for columns\n const tableColumns = this.config.columns\n // filter action link column\n .filter((column) => {\n if (column.formatter && column.formatter === 'ActionLinkFormatter' && this.showActions === false) {\n return false;\n }\n return true;\n }).map((column) => {\n // convert column to advance table column\n return Object.assign(new ColumnFormatter(this._injector), column);\n }).map((column) => {\n const columnDefinition = {\n data: column.property || column.name,\n defaultContent: column.hasOwnProperty('defaultContent') ? column.defaultContent : '',\n title: this.translator.transform(column.title),\n sortable: column.hasOwnProperty('sortable') ? column.sortable : true,\n visible: column.hasOwnProperty('hidden') ? !column.hidden : true,\n name: column.name,\n };\n\n if (column.className) {\n Object.assign(columnDefinition, {\n className: column.className,\n });\n } else {\n Object.assign(columnDefinition, {\n className: '',\n });\n }\n\n if (column.formatters) {\n Object.assign(columnDefinition, {\n render(data: any, type: string, row: any, meta: any) {\n let result = data;\n column.formatters.forEach((columnFormatter) => {\n const formatter = self._columnFormatters[columnFormatter.formatter];\n if (formatter && typeof formatter.render === 'function') {\n column.formatString = columnFormatter.formatString;\n column.formatOptions = columnFormatter.formatOptions;\n }\n result = formatter.render.bind(column)(result, type, row, meta);\n });\n delete column.formatString;\n delete column.formatOptions;\n return result;\n },\n });\n // check if column formatters export createdCell event\n const items = column.formatters.filter((columnFormatter) => {\n return typeof columnFormatter.afterRender === 'function';\n });\n if (items.length > 0) {\n Object.assign(columnDefinition, {\n createdCell(cell: any, cellData: any, rowData: any, rowIndex: number, colIndex: number) {\n items.forEach((columnFormatter) => {\n const formatter = self._columnFormatters[columnFormatter.formatter];\n if (formatter && typeof formatter.afterRender === 'function') {\n formatter.afterRender.bind(column)(cell, cellData, rowData, rowIndex, colIndex);\n }\n });\n },\n });\n }\n }\n if (column.formatter) {\n const formatter = self._columnFormatters[column.formatter];\n if (formatter && typeof formatter.render === 'function') {\n Object.assign(columnDefinition, {\n render: formatter.render.bind(column),\n });\n }\n if (formatter && typeof formatter.afterRender === 'function') {\n Object.assign(columnDefinition, {\n render: formatter.render.bind(column),\n });\n Object.assign(columnDefinition, {\n createdCell: formatter.afterRender.bind(column),\n });\n }\n }\n return columnDefinition;\n });\n // get table element\n const tableElement = jQuery(this.table.nativeElement);\n jQuery(window).on('resize', () => {\n setTimeout(() => {\n if (this.dataTable) {\n this.dataTable.columns.adjust();\n }\n }, 1);\n });\n // tslint:disable-next-line: no-shadowed-variable\n tableElement.on('processing.dt', (event, settings, processing) => {\n if (processing) {\n // clear empty table element\n tableElement.find('.dataTables_empty').html('');\n setTimeout(() => {\n tableElement.addClass('processing');\n }, 0);\n } else {\n setTimeout(() => {\n tableElement.removeClass('processing');\n }, 0);\n }\n });\n let drawIndex = 1;\n tableElement.on('order.dt', (event: any) => {\n if (this.dataTable) {\n const order = this.dataTable.order();\n const columns = tableColumns;\n if (order && order.length) {\n this.order.emit(order);\n }\n }\n }).on('draw.dt', (event) => {\n this.draw.emit();\n if (this.dataTable) {\n const info: { page: number; pages: number } = this.dataTable.page.info();\n this.page.emit(info);\n if(drawIndex > 1)\n return\n try {\n drawIndex++;\n setTimeout(() => {this.dataTable.columns.adjust();}, 1);\n } catch (err) {\n console.error('ERROR', 'An error occurred while adjusting table columns');\n console.error(err);\n }\n }\n });\n\n // allow selection\n if (this.selectable) {\n // get first column (as row primary key)\n // todo::allow row primary key configuration\n const firstColumn = this.config.columns[0];\n // add select column\n const selectColumnDefinition = {\n className: 'text-center pl-4 pr-0',\n data: firstColumn.property || firstColumn.name,\n defaultContent: '',\n title: '',\n sortable: false,\n visible: !this.customSelect,\n name: firstColumn.name,\n };\n // assign renderer\n Object.assign(selectColumnDefinition, {\n render: this._renderSelect.bind(this),\n });\n // and finally add column\n tableColumns.unshift(selectColumnDefinition);\n // user interface additions\n // handle page change event (a trick for firing draw.dt events)\n tableElement\n // handle draw events\n .on('draw.dt', () => {\n\n if (this.customSelect) {\n // enable row selection event\n tableElement.find('tbody').on('click', 'tr', function() {\n // select row\n const row = self.dataTable.row(this);\n // add row\n self.select.emit(row);\n });\n }\n const elements = tableElement.find('input.s-row');\n elements.off('click').on('click', this.onSelectionChange.bind(this));\n // make selection on current page\n const key = this.config.columns[0].property;\n if (this.selected.length > 0) {\n // enumerate selected items\n this.selected.forEach((item) => {\n // find row identifier\n const id = item[key];\n // if identifier is defined\n if (id != null) {\n // try to find check element with this identifier in attribute data-id\n tableElement.find(`input[data-id='${id}']`).prop('checked', true);\n }\n });\n }\n if (this.smartSelect) {\n // select rows that are not selected\n // and do not included in unselected collection\n tableElement.find('input[data-id]').each((index, element) => {\n // get data id\n if (this.unselected.findIndex((x) => {\n // tslint:disable-next-line:triple-equals\n return x[key] == jQuery(element).attr('data-id');\n }) < 0) {\n this.selectRow(this.dataTable.row(index));\n }\n });\n } else if (this.selected.length === 0) {\n tableElement.find('input[data-id]').prop('checked', false);\n }\n });\n }\n // initialize data table\n const settings = {\n // set length menu\n lengthMenu: [5, 10, 50, 100, 200, 500],\n // hide length menu\n lengthChange: false,\n // enable search but hide search box (css)\n searching: true,\n // enable data processing\n processing: true,\n // enable getting server side data\n serverSide: this.serverSide,\n // enumerate table columns\n columns: tableColumns,\n colReorder: this.columnOrdering,\n order: [],\n // set scroll x\n scrollX: this.scrollX,\n dom: 'Bfrtip',\n autoWidth: false,\n buttons: [\n {\n extend: 'excel',\n filename: this.config.title,\n className: 'd-none',\n exportOptions: {\n columns: 'th:not(:first-child)',\n },\n },\n ],\n // define server data callback\n fnServerData(sSource: any, aoData: any, fnCallback: any, oSettings: any) {\n // if method is invoked for the first time\n if (self._firstLoad) {\n // disabled first load flag\n self._firstLoad = false;\n // if auto load is disabled\n if (self.autoLoad === false) {\n const emptyDataSet = {\n recordsTotal: 0,\n recordsFiltered: 0,\n data: [],\n };\n // emit empty data\n self.load.emit(emptyDataSet);\n // return empty data\n return fnCallback(emptyDataSet);\n }\n }\n // get activated route params\n const queryParams = self._activatedRoute.snapshot.queryParams;\n // get columns\n const columns = aoData[1].value;\n // get order expression\n const order = aoData[2].value;\n // get skip records param\n let skip = aoData[3].value;\n // get page size param\n let top = aoData[4].value;\n // get search value\n const search = aoData[5].value;\n // get data queryable\n const q = self._query instanceof ClientDataQueryable ? self._query : self._context.model(self.config.model).asQueryable();\n // apply paging params\n if (top) {\n q.take(top).skip(skip);\n }\n // apply order params\n if (order && order.length) {\n // get order query expression\n const orderByStr = order.map((expr: any) => {\n return tableColumns[expr.column].name + ' ' + expr.dir || 'asc';\n }).join(',');\n // set order\n q.setParam('$orderby', orderByStr);\n }\n // configure $select parameter\n const select = self.config.columns.filter( (column) => {\n if ( column.virtual === true ) {\n return false;\n }\n return true;\n }).map((column) => {\n if (column.property) {\n return column.name + ' as ' + column.property;\n } else {\n return column.name;\n }\n });\n q.select.apply(q, select);\n // configure $filter\n if (queryParams.$filter && queryParams.$filter.length) {\n // set route filter\n const qParams = q.getParams();\n q.setParam('$filter', null);\n const expressions = [ queryParams.$filter ];\n if (qParams.$filter) { expressions.push('(' + qParams.$filter + ')' ); }\n q.filter(expressions.join(' and '));\n }\n // check if query parameters contain filter\n if (queryParams.$expand && queryParams.$expand.length) {\n // set route $expand\n q.setParam('$expand', queryParams.$expand);\n } else if (self.config && self.config.defaults && self.config.defaults.expand) {\n q.setParam('$expand', self.config.defaults.expand);\n }\n if (!q.getParams()['$orderby'] && self.config && self.config.defaults && self.config.defaults.orderBy) {\n q.setParam('$orderby', self.config.defaults.orderBy);\n }\n if (self.config && self.config.defaults && self.config.defaults.groupBy) {\n q.setParam('$groupby', self.config.defaults.groupBy);\n }\n // append default filter\n if (self.config && self.config.defaults && self.config.defaults.filter) {\n return self._advancedFilterValueProvider.asyncBuildFilter(self.config.defaults.filter).then((defaultFilterString) => {\n if (defaultFilterString) {\n const qParams = q.getParams();\n q.setParam('$filter', null);\n const expressions = [ defaultFilterString ];\n if (qParams.$filter) { expressions.push('(' + qParams.$filter + ')' ); }\n q.filter(expressions.join(' and '));\n }\n self.lastQueryParams = q.getParams();\n q.getList().then((items) => {\n const dataSet = {\n recordsTotal: items.total,\n recordsFiltered: items.total,\n data: items.value,\n };\n if (items.total === 0) {\n self.resetEmptyTable();\n }\n // emit load event\n self.load.emit(dataSet);\n // return data\n return fnCallback(dataSet);\n });\n }).catch((err) => {\n console.error('TABLES', err);\n });\n }\n self.lastQueryParams = q.getParams();\n q.getList().then((items) => {\n const dataSet = {\n recordsTotal: items.total,\n recordsFiltered: items.total,\n data: items.value,\n };\n if (items.total === 0) {\n self.resetEmptyTable();\n }\n // emit load event\n self.load.emit(dataSet);\n // return data\n return fnCallback(dataSet);\n }).catch((err) => {\n console.error('TABLES', err);\n });\n },\n language: Object.assign({ }, self.translator.transform('Tables.DataTable'),\n {emptyTable: ' ' }),\n };\n\n const stateSettings = {\n stateSave: this.stateSave\n };\n if (this.stateLoadCallback) {\n Object.assign(stateSettings, {\n stateLoadCallback: this.stateLoadCallback\n });\n }\n if (this.stateSaveCallback) {\n Object.assign(stateSettings, {\n stateSaveCallback: this.stateSaveCallback\n });\n }\n Object.assign(settings, stateSettings);\n\n if (this.scrollable) {\n // set continuous scrolling\n Object.assign(settings, {\n scrollY: this.scrollY,\n scrollCollapse: false,\n scroller: {\n loadingIndicator: false,\n displayBuffer: 10,\n },\n });\n } else {\n Object.assign(settings, {\n scrollY: this.scrollY,\n paging: this.paging,\n pageLength: this.pageLength,\n });\n }\n if (this.selectable) {\n\n }\n // handle init.dt event and emit local event\n this.dataTable = tableElement.on('init.dt', (event) => {\n const scroller = jQuery(event.target).parent();\n // handle scrolling\n scroller.on('scroll', (scrollEvent) => {\n const target = jQuery(scrollEvent.target);\n const top = target.scrollTop();\n const left = target.scrollLeft();\n if (this.dataTable) {\n this.scroll.emit({\n top,\n left\n });\n }\n });\n }).DataTable(settings);\n this.init.emit();\n // show or hide header\n if (!this.showHeader) {\n ( this._element.nativeElement as HTMLDivElement)\n .querySelector('.dataTable>thead').classList.add('d-none');\n ( this._element.nativeElement as HTMLDivElement)\n .querySelector('.dataTable').classList.add('mt-2');\n }\n\n // show or hide footer\n if (!this.showFooter) {\n ( this._element.nativeElement as HTMLDivElement)\n .querySelector('.dataTables_info').classList.add('d-none');\n }\n // show or hide pager\n if (this.showPaging) {\n this.showPaging = true;\n }\n }\n }\n\n scrollTop(value: number) {\n if (this.dataTable) {\n this.dataTable.parent().scrollTop(value);\n }\n }\n\n scrollLeft(value: number) {\n if (this.dataTable) {\n this.dataTable.parent().scrollLeft(value);\n }\n }\n\n get lastQuery(): ClientDataQueryable {\n if (this.config == null) {\n return null;\n }\n if (this.lastQueryParams == null) {\n return null;\n }\n const q = this._context.model(this.config.model).asQueryable();\n Object.keys(this.lastQueryParams).forEach( (key) => {\n q.setParam(key, this.lastQueryParams[key]);\n });\n // return query\n return q;\n }\n\n /**\n * Fetches and updates a single row\n * @param find - Any object which is being converted to a query\n */\n public fetchOne(find: any) {\n if (find == null) {\n return;\n }\n if (this.dataTable == null) {\n return;\n }\n if (this.lastQueryParams == null) {\n return;\n }\n // get rows\n const rows = Array.from(this.dataTable.rows().data());\n if (rows && rows.length) {\n // find result\n const findKeys = Object.keys(find);\n if (findKeys.length === 0) {\n // do nothing\n return;\n }\n // find row index by searching each property\n const rowIndex = rows.findIndex((row: any) => {\n return findKeys.map( (key) => {\n return row[key] === find[key];\n }).filter( (res) => {\n return res === false;\n }).length === 0;\n });\n // if row has been found\n if (rowIndex >= 0) {\n const query = this._context.model(this.config.model).asQueryable();\n // select attributes\n query.setParam('$select', this.lastQueryParams.$select);\n if (this.lastQueryParams.$expand) {\n // apply expand attributes\n query.setParam('$expand', this.lastQueryParams.$expand);\n }\n // apply filter for row\n findKeys.forEach( (key) => {\n const column = this.config.columns.find( (col) => {\n return col.property === key || col.name === key;\n });\n if (column) {\n // get property or name\n const property = column.property || column.name;\n query.and(property).equal(find[key]);\n } else {\n query.and(key).equal(find[key]);\n }\n });\n // and finally get item\n return query.getItem().then( (item) => {\n // if item exists\n const row = this.dataTable.row(rowIndex);\n const checked = jQuery(row.node()).find(':checkbox').prop('checked');\n if (item) {\n // redraw row\n row.data(item);\n jQuery(row.node()).find(':checkbox').off('click').on('click', this.onSelectionChange.bind(this));\n // if row is already selected\n if (checked) {\n this.selectRow(row, true);\n }\n }\n return Promise.resolve();\n });\n }\n }\n return Promise.resolve();\n }\n\n public ngOnDestroy(): void {\n if (this.reloadSubscription) {\n this.reloadSubscription.unsubscribe();\n }\n }\n\n /**\n * Handle selection change\n * @param $event\n */\n public onSelectionChange($event) {\n const input = $event.target as HTMLInputElement;\n // get row from id\n const rowIndex = parseInt(/-(\\d+)$/g.exec(input.id)[1], 10);\n // get row\n const row = this.dataTable.row(rowIndex).data();\n // get row identifier\n if (row) {\n const key = this.config.columns[0].property;\n const id = row[key];\n let findItemIndex = this.selected.findIndex((item) => {\n return item[key] === id;\n });\n if (input.checked) {\n if (findItemIndex < 0) {\n // add row to selected rows\n this.selected.push(row);\n this.selectedItems.emit(this.selected);\n }\n } else {\n if (findItemIndex >= 0) {\n // remove selected item\n this.selected.splice(findItemIndex, 1);\n if (this.smartSelect) {\n // add row to unselected rows\n findItemIndex = this.unselected.findIndex((item) => {\n return item[key] === id;\n });\n if (findItemIndex < 0) {\n this.unselected.push(row);\n this.selectedItems.emit(this.selected);\n }\n }\n }\n }\n }\n }\n\n private resetEmptyTable() {\n // this operation is important\n // due to ng data binding\n // empty table template has no translated text during ngOnInit()\n if (this.dataTable && this.dataTable.context[0]) {\n this.dataTable.context[0].oLanguage.sEmptyTable =\n this.dataTable.context[0].oLanguage.sZeroRecords = this.emptyTable.nativeElement.innerHTML;\n }\n }\n\n private clearEmptyTable() {\n if (this.dataTable && this.dataTable.context[0]) {\n this.dataTable.context[0].oLanguage.sEmptyTable = '';\n }\n }\n\n public export() {\n const element: HTMLElement = document.querySelector('.dt-buttons .buttons-excel') as HTMLElement;\n element.click();\n }\n\n public handleColumns(columnsToShow) {\n const table = this.dataTable;\n this.config.columns.slice(1).forEach((column, i) => {\n if (!column.hidden) {\n if (columnsToShow.includes(column.name)) {\n // noinspection TypeScriptValidateJSTypes\n table.column(column.name + ':name').visible(true);\n } else {\n // noinspection TypeScriptValidateJSTypes\n table.column(column.name + ':name').visible(false);\n }\n }\n });\n }\n\n public getConfig() {\n return this.config;\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (Object.prototype.hasOwnProperty.call(changes, 'configSrc')) {\n if (changes.configSrc != null) {\n // load table configuration on change\n // tslint:disable-next-line: triple-equals\n if (changes.configSrc.currentValue && (changes.configSrc.currentValue != changes.configSrc.previousValue)) {\n this._http.get(changes.configSrc.currentValue).toPromise().then((config: TableConfiguration) => {\n // set configuration\n this.config = config;\n this.destroy();\n // fetch and redraw\n this.fetch();\n }).catch((err) => {\n console.error('TABLES', 'An error occurred while loading table configuration.');\n console.error(err);\n });\n }\n }\n }\n }\n\n public reset(load?: boolean): void {\n this.query = null;\n this.destroy();\n this.autoLoad = !!load;\n this.ngOnInit();\n }\n\n selectColumns() {\n // get column order e.g. [0, 4, 1, 2, 3]\n const columnOrder: number[] = this.dataTable.colReorder.order();\n // get column definitions\n const columnDefs = this.dataTable.settings().init().columns;\n const columns = columnDefs.map((\n columnDef: { key: string, title: string, visible: boolean, sortable: boolean, index: number }, i: number) => {\n let key = `column-${i}`;\n let title = columnDef.title;\n // get column index\n const index = columnOrder.indexOf(i);\n const visible = this.dataTable.column(index).visible();\n // set title for select column\n if (i == 0 && this.selectable) {\n title = '<' + this._translateService.instant('Tables.SelectColumn') + '>';\n }\n // get column title\n if (title != null && title.length === 0) {\n title = null;\n }\n if (title == null) {\n // try to find column placeholder\n let placeholder = null;\n if (this.selectable) {\n if (i > 0) {\n placeholder = this.config.columns[i - 1].placeholder;\n }\n } else {\n placeholder = this.config.columns[i].placeholder;\n }\n if (placeholder != null) {\n title = '<' + this._translateService.instant(placeholder) + '>';\n }\n }\n if (title == null) {\n title = '<' + this._translateService.instant('Tables.UnknownColumn') + '>';\n }\n return {\n key,\n title,\n visible,\n index\n }\n });\n this._columnSelector.selectColumns(columns).then((event) => {\n if (event.result === 'ok') {\n // get column order e.g. [3, 1, 2, 0, 4]\n let indexes = event.columns.map((item) => {\n return item.index;\n });\n // reset column visibilty\n for (let index = 0; index < event.columns.length; index++) {\n const element = event.columns[index];\n const colIndex = columnOrder.indexOf(index);\n // set visibilty with redraw (=true)\n this.dataTable.column(colIndex).visible(element.visible, true);\n }\n // finally apply column order\n this.dataTable.colReorder.order(indexes, true);\n }\n });\n }\n\n}\n","import { Component, OnInit, ViewChild, OnDestroy, Injectable, Input } from '@angular/core';\nimport { AngularDataContext, AngularDataService } from '@themost/angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subscription } from 'rxjs';\nimport { ActivatedRoute } from '@angular/router';\n// tslint:disable-next-line: max-line-length\nimport { AdvancedTableComponent, AdvancedTableDataResult, AdvancedTableConfiguration } from '../advanced-table/advanced-table.component';\nimport { ErrorService, DIALOG_BUTTONS, ModalService, UserActivityService } from '@universis/common';\nimport {ResponseError} from '@themost/client';\nimport { TableConfiguration } from '../advanced-table/advanced-table.interfaces';\nimport { ToastService } from '@universis/common';\n\n@Component({\n selector: 'app-advanced-list',\n templateUrl: './advanced-list.component.html'\n})\nexport class AdvancedListComponent implements OnInit, OnDestroy {\n\n public recordsTotal: number;\n public config: TableConfiguration;\n private subscription: Subscription;\n private dataSubscription: Subscription;\n private reloadSubscription: Subscription;\n @Input('entitySet') entitySet: string;\n @Input('category') category: string;\n @Input('description') description: string;\n @Input('longDescription') longDescription: string;\n @Input('tableConfiguration') tableConfiguration: any;\n @Input('searchConfiguration') searchConfiguration: any;\n @ViewChild('table') table: AdvancedTableComponent;\n @Input('allowSaveOption') allowSaveOption: boolean = true;\n\n constructor(private _context: AngularDataContext,\n private _translateService: TranslateService,\n private _activatedRoute: ActivatedRoute,\n private _errorService: ErrorService,\n private _toastService: ToastService,\n private _modalService: ModalService,\n private _userActivityService: UserActivityService\n ) { }\n ngOnDestroy(): void {\n if (this.dataSubscription) {\n this.dataSubscription.unsubscribe();\n }\n if (this.reloadSubscription) {\n this.reloadSubscription.unsubscribe();\n }\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n async ngOnInit() {\n try {\n // get metadata\n const metadata = await this._context.getMetadata();\n // get route data\n this.dataSubscription = this._activatedRoute.data.subscribe( routeData => {\n // get entityType\n const re = new RegExp(`^${routeData.model}$`, 'ig');\n const entitySet = metadata.EntityContainer.EntitySet.find( x => {\n return re.test(x.Name);\n });\n // if entity type is null\n if (entitySet == null) {\n // navigate to error\n return this._errorService.navigateToError(new ResponseError('EntitySet Not Found', 404));\n }\n // get entity type\n const entityType = metadata.EntityType.find( x => {\n return x.Name === entitySet.EntityType;\n });\n if (entityType == null) {\n return this._errorService.navigateToError(new ResponseError('EntityType Not Found', 404));\n }\n if (routeData.searchConfiguration) {\n if (Object.prototype.hasOwnProperty.call(routeData.searchConfiguration, 'allowSave')) {\n this.allowSaveOption = routeData.searchConfiguration.allowSave;\n }\n this.searchConfiguration = routeData.searchConfiguration;\n }\n if (routeData.tableConfiguration) {\n this.tableConfiguration = routeData.tableConfiguration;\n }\n if (routeData.description) {\n this.description = this._translateService.instant(routeData.description);\n }\n if (routeData.longDescription) {\n this.longDescription = this._translateService.instant(routeData.longDescription);\n }\n if (routeData.category) {\n this.category = this._translateService.instant(routeData.category);\n }\n // clone default configuration\n const defaultConfiguration = AdvancedTableConfiguration.cast(this.tableConfiguration, true);\n // correct edit button link\n const column = defaultConfiguration.columns.find( col => {\n return col.formatter === 'ButtonFormatter' && col.formatString === '(modal:edit)';\n });\n if (column) {\n const url: Array<string> = [];\n this._activatedRoute.snapshot.pathFromRoot.forEach( route => {\n url.push.apply(url, route.url);\n });\n column.formatString = `#/${url.join('/')}/(modal:\\$\\{id\\}/edit)`;\n }\n // create list configuration by assigning list entity set\n this.table.config = Object.assign({\n model: entitySet.Name\n }, defaultConfiguration);\n // fetch data\n this.table.fetch(true);\n // do reload by using hidden fragment e.g. /classes#reload\n this.reloadSubscription = this._activatedRoute.fragment.subscribe(fragment => {\n if (fragment && fragment === 'reload') {\n this._toastService.show(\n this.description,\n this._translateService.instant('Settings.OperationCompleted')\n );\n this.table.fetch(true);\n }\n });\n // finally add user activity\n this._userActivityService.setItem({\n category: this.category,\n description: this.description,\n url: window.location.hash.substring(1),\n dateCreated: new Date\n });\n });\n } catch (err) {\n console.error(err);\n return this._errorService.showError(err);\n }\n }\n\n\n /**\n * Data load event handler of advanced table component\n * @param {AdvancedTableDataResult} data\n */\n onDataLoad(data: AdvancedTableDataResult) {\n this.recordsTotal = data.recordsTotal;\n }\n\n /**\n * Remove selected items\n */\n remove() {\n if (this.table && this.table.selected && this.table.selected.length) {\n // get items to remove\n const items = this.table.selected;\n return this._modalService.showWarningDialog(\n this._translateService.instant('Tables.RemoveItemsTitle'),\n this._translateService.instant('Tables.RemoveItemsMessage'),\n DIALOG_BUTTONS.OkCancel).then(result => {\n if (result === 'ok') {\n this._context.model(this.table.config.model).remove(items).then(() => {\n this._toastService.show(\n this.description + ':' + this._translateService.instant('Tables.RemoveItemMessage.title'),\n this._translateService.instant((items.length === 1 ?\n 'Tables.RemoveItemMessage.one' : 'Tables.RemoveItemMessage.many')\n , { value: items.length })\n );\n this.table.fetch(true);\n }).catch(err => {\n this._errorService.showError(err, {\n continueLink: '.'\n });\n });\n }\n });\n }\n }\n\n}\n","import {Component, OnInit, OnDestroy, Input, EventEmitter,\n ViewChild, ElementRef, ViewEncapsulation, OnChanges, SimpleChanges, AfterViewInit, Output} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {AngularDataContext} from '@themost/angular';\nimport 'rxjs/add/observable/combineLatest';\nimport {ErrorService, ModalService, ToastService} from '@universis/common';\nimport {RouterModalOkCancel} from '@universis/common/routing';\nimport {AppEventService} from '@universis/common';\nimport {Observable, Subscription} from 'rxjs';\nimport {AdvancedFormComponent} from '@universis/forms';\nimport { ProgressbarComponent } from 'ngx-bootstrap/progressbar';\n\n@Component({\n selector: 'app-advanced-row-action',\n templateUrl: './advanced-row-action.component.html',\n styles: [\n `\n .fa-1_5x {\n font-size: 1.5rem;\n }\n .form-control:disabled, .form-control[readonly] {\n background-color: inherit;\n }\n .form-check.checkbox {\n position: relative\n }\n `\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class AdvancedRowActionComponent extends RouterModalOkCancel implements OnInit, AfterViewInit, OnDestroy {\n\n invalidSubscription: any;\n\n\n @Input() items: any;\n @Input() modalIcon = 'fas fa-project-diagram';\n @Input() description: string;\n @Input() formTemplate: string;\n @Input() progressType = 'indigo';\n @Output() data: any;\n @Input() additionalMessage: string;\n @Input() errorMessage = 'Tables.Actions.CompletedWithErrors';\n public lastError: any;\n public loading = false;\n @ViewChild('progress') progressComponent: ProgressbarComponent;\n @ViewChild('progressContainer') progressContainer: ElementRef;\n @ViewChild('formComponent') formComponent: AdvancedFormComponent;\n @Input() refresh: any = new EventEmitter<any>();\n @Input() execute: Observable<any>;\n private refreshSubscription: Subscription;\n private executeSubscription: Subscription;\n\n constructor(router: Router,\n activatedRoute: ActivatedRoute,\n private _translateService: TranslateService,\n private _context: AngularDataContext,\n private _errorService: ErrorService,\n private _modalService: ModalService,\n private _appEvent: AppEventService) {\n super(router, activatedRoute);\n // set modal size\n this.modalClass = 'modal-lg';\n // set modal title\n this.modalTitle = 'Tables.Actions.Label';\n // disable ok button\n this.okButtonDisabled = false;\n // set button text\n this.okButtonText = 'Tables.Actions.Start';\n }\n\n get form() {\n return this.formComponent;\n }\n ngOnInit() {\n this.refreshSubscription = this.refresh.subscribe((value) => {\n if (value && value.progress) {\n let progress = 0;\n if (value.progress < 0) {\n progress = 0;\n } else if (value.progress > 100) {\n progress = 100;\n } else {\n progress = value.progress;\n }\n this.progressComponent.value = progress;\n this.showProgress();\n }\n });\n\n }\n\n ngAfterViewInit(): void {\n if (this.formComponent && this.formComponent.form) {\n this.okButtonDisabled = true;\n this.invalidSubscription = this.formComponent.form.change.subscribe((event: any) => {\n if (Object.prototype.hasOwnProperty.call(event, \"isValid\") && (event.changed != null)) {\n this.okButtonDisabled = !event.isValid;\n }\n });\n }\n }\n\n ngOnDestroy() {\n if (this.refreshSubscription) {\n this.refreshSubscription.unsubscribe();\n }\n if (this.executeSubscription) {\n this.executeSubscription.unsubscribe();\n }\n if (this.invalidSubscription) {\n this.invalidSubscription.unsubscribe();\n }\n }\n\n cancel(): Promise<any> {\n if (this.loading) {\n return;\n }\n // close\n if (this._modalService.modalRef) {\n return this._modalService.modalRef.hide();\n }\n }\n\n async ok() {\n try {\n this.loading = true;\n this.lastError = null;\n if (this.formComponent && this.formComponent.form &&\n this.formComponent.form.formio && this.formComponent.form.formio.data) {\n // set data\n this.data = this.formComponent.form.formio.data;\n }\n // do action\n this.execute.subscribe((result) => {\n this.loading = false;\n this.refresh.emit({\n progress: 100\n });\n if (result && result.errors && result.errors > 0) {\n // show message for partial success\n if (result.errors === 1) {\n this.lastError = new Error(this._translateService.instant(\n `${this.errorMessage}.Description.One`));\n } else {\n this.lastError = new Error(this._translateService.instant(\n `${this.errorMessage}.Description.Many`,\n result));\n }\n this.refresh.emit({\n progress: 1\n });\n this.hideProgress();\n return;\n }\n if (this._modalService.modalRef) {\n this._modalService.modalRef.hide();\n }\n }, (err) => {\n this.loading = false;\n this.lastError = err;\n this.refresh.emit({\n progress: 0\n });\n });\n } catch (err) {\n this.loading = false;\n this.lastError = err;\n }\n }\n\n showProgress() {\n this.progressContainer.nativeElement.classList.replace('invisible', 'visible');\n }\n\n hideProgress() {\n this.progressContainer.nativeElement.classList.replace('visible', 'invisible');\n }\n\n\n\n}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n@Component({\n template: ''\n })\nexport class AdvancedTableSearchBaseComponent {\n private _filter: any;\n @Output() filterChange = new EventEmitter();\n\n @Input()\n get filter() {\n return this._filter;\n }\n\n set filter(value) {\n this._filter = value;\n }\n\n onKeyEnter(event: KeyboardEvent) {\n if (event.code === 'Enter') {\n this.filterChange.emit(this._filter);\n }\n }\n}\n","import {AfterViewInit, Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild, ViewEncapsulation, OnChanges, SimpleChanges} from '@angular/core';\nimport {FormioComponent, FormioForm} from 'angular-formio';\nimport {AngularDataContext} from '@themost/angular';\nimport {ActivatedRoute} from '@angular/router';\nimport {ServiceUrlPreProcessor, TranslatePreProcessor} from '@universis/forms';\nimport {AdvancedTableSearchBaseComponent} from '../advanced-table/advanced-table-search-base';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Subscription} from 'rxjs';\nimport {AdvancedTableComponent} from '../advanced-table/advanced-table.component';\nimport { HttpClient } from '@angular/common/http';\n\n@Component({\n selector: 'app-advanced-search-form',\n template: `\n <div class=\"p-4\">\n <formio #formioComponent class=\"formio-search\" (keydown)=\"onKeyEnter($event)\" (change)=\"onChange($event)\" (formLoad)=\"onFormLoad($event)\"\n [refresh]=\"refreshForm\" [submission]=\"submission\" [form]=\"form\"></formio>\n </div>\n `,\n styleUrls: ['./advanced-search-form.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AdvancedSearchFormComponent extends AdvancedTableSearchBaseComponent implements OnInit, OnDestroy, AfterViewInit, OnChanges {\n\n\n @ViewChild('formioComponent') formComponent: FormioComponent;\n @Input() form: any = {};\n @Input() formSrc: string;\n @Output() refreshForm = new EventEmitter<any>();\n @Output() loading = new EventEmitter<{ target: AdvancedSearchFormComponent}>();\n submission: any = { data: {} };\n private filterSubscription: Subscription;\n public componentLoading = true;\n\n constructor(private _context: AngularDataContext,\n private _translateService: TranslateService,\n private _activatedRoute: ActivatedRoute,\n private _http: HttpClient\n ) {\n super();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (Object.prototype.hasOwnProperty.call(changes, 'form')) {\n if (changes.form != null) {\n if (changes.form.currentValue &&\n changes.form.currentValue != changes.form.previousValue) {\n this.ngOnInit();\n }\n }\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'formSrc')) {\n if (changes.formSrc != null) {\n if (changes.formSrc.currentValue &&\n changes.formSrc.currentValue != changes.formSrc.previousValue) {\n this._http.get(changes.formSrc.currentValue).toPromise().then((form) => {\n // set form\n this.form = form;\n // and init\n this.ngOnInit();\n }).catch((err) => {\n console.error('An error occurred while loading search configuration');\n console.error(err);\n });\n }\n }\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'filter')) {\n if (changes.filter != null) {\n this.submission.data = changes.filter.currentValue || {};\n this.refreshForm.emit({\n submission: this.submission\n });\n }\n }\n }\n\n ngOnInit(): void {\n if (this.form) {\n new ServiceUrlPreProcessor(this._context).parse(this.form);\n new TranslatePreProcessor(this._translateService).parse(this.form);\n this.submission = {\n data: this.filter\n };\n this.loading.emit({\n target: this\n });\n this.refreshForm.emit({\n form: this.form\n });\n this.componentLoading = false;\n this.filterSubscription = this.filterChange.subscribe( filter => {\n this.submission.data = filter;\n this.refreshForm.emit({\n submission: this.submission\n });\n });\n }\n }\n\n onChange(event: object) {\n Object.keys(this.formComponent.submission.data).forEach(key => {\n if (Object.prototype.hasOwnProperty.call(this.formComponent.submission.data, key)) {\n const value = this.formComponent.submission.data[key];\n // the filter with type is a string and is not empty\n const isEmptyString = typeof value === 'string' && value.length === 0;\n // do not include empty objects in filter\n const isEmptyObject = typeof value === 'object' && Object.keys(value).length === 0;\n // make isEmptyString, isEmptyObject mutex\n if (!isEmptyString && !isEmptyObject) {\n Object.defineProperty(this.filter, key, {\n configurable : true,\n enumerable: true,\n value : value\n });\n } else {\n delete this.filter[key];\n }\n }\n });\n }\n\n onFormLoad(form: FormioForm) {\n const currentLang = this._translateService.currentLang;\n this.formComponent.formio.i18next.options.resources[currentLang] = { translation : this._translateService.instant(`Forms`) };\n this.formComponent.formio.language = currentLang;\n }\n\n ngAfterViewInit(): void {\n //\n }\n\n ngOnDestroy(): void {\n if (this.filterSubscription) {\n this.filterSubscription.unsubscribe();\n }\n }\n}\n","import { Component, ElementRef, Input, OnDestroy, OnInit, ViewChild, AfterViewInit, DoCheck } from '@angular/core';\nimport { RouterModalOkCancel } from '@universis/common/routing';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TableConfiguration } from '../advanced-table/advanced-table.interfaces';\nimport { Subscription } from 'rxjs';\nimport { AdvancedTableComponent, AdvancedTableDataResult } from '../advanced-table/advanced-table.component';\nimport { AngularDataContext } from '@themost/angular';\nimport { AdvancedFilterValueProvider } from './../advanced-table/advanced-filter-value-provider.service';\nimport { DatePipe } from '@angular/common';\nimport { TemplatePipe } from '@universis/common';\nexport declare interface PageInfo {\n page: number;\n pages: number;\n start: number;\n end: number;\n length: number;\n recordsTotal: number;\n recordsDisplay: number;\n serverSide?: boolean;\n}\n\n// important: export this const due to AOT compilation errors\n// see more https://angular.io/guide/aot-metadata-errors#only-initialized-variables\nexport const AdvancedTableModalBaseTemplate = `\n<div>\n <!-- search -->\n <div class=\"row mt-3\">\n <div class=\"col-12 col-lg-3\">\n <div class=\"input-group mb-3\">\n <input spellcheck=\"false\" type=\"text\" #searchElement\n (keyup)=\"onKeyUp($event)\" [(ngModel)]=\"searchText\"\n class=\"form-control bg-gray-100 border-0\"\n placeholder=\"{{'Tables.SearchPlaceholder' | translate}}\" aria-label=\"Search\" aria-describedby=\"basic-addon2\">\n <div class=\"input-group-append\">\n <button class=\"btn btn-default bg-gray-100 border-0\" type=\"button\" (click)=\"onSearch()\">\n <i class=\"fa fa-search text-secondary\"></i>\n </button>\n </div>\n </div>\n </div>\n <div #emptyTable class=\"d-none\">\n <div>\n <div class=\"mt-4\">\n <div class=\"icon-circle bg-gray-300 border-gray-100\"></div>\n </div>\n <div class=\"mt-4\">\n <h4 class=\"font-3xl text-dark\" [translate]=\"'Tables.EmptyTableTitle'\"></h4>\n <p class=\"font-lg text-dark\" [translate]=\"'Tables.EmptyTableMessage'\"></p>\n </div>\n\n </div>\n </div>\n <div class=\"col-12 col-lg-5\">\n <div class=\"btn-toolbar\">\n <button class=\"btn btn-gray-100\">\n <i class=\"fa fa-sliders-h pr-2 text-secondary\" aria-hidden=\"true\"></i>{{'Tables.Filters' | translate}}\n </button>\n <div #dropdownFilter class=\"dropdown ml-3\">\n <button class=\"btn btn-gray-100 dropdown-toggle\"\n type=\"button\" id=\"dropdownDefaultFilters\"\n data-toggle=\"dropdown\" dropdownToggle>\n {{ this.defaultFilter.name | translate }}\n </button>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownDefaultFilters\">\n <button type=\"button\" class=\"dropdown-item\" *ngFor=\"let filter of defaultFilters\" (click)=\"onFilterSelect(filter)\">\n {{ filter.name | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col text-lg-right mt-3 mt-lg-0 d-none\">\n <button [disabled]=\"true\" class=\"btn rounded-pill btn-outline-theme\">\n <span class=\"pr-2 font-lg\">+</span><span [translate]=\"'Tables.AddItem'\"></span>\n </button>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12\" [ngClass]=\"{ 'component-loading': loading}\">\n <app-advanced-table #advancedTable (init)=\"onTableInit()\"\n (load)=\"onDataLoad($event)\"\n [selectable]=\"true\"\n [multipleSelect]=\"true\"\n [scrollX]=\"false\" [scrollY]=\"320\"\n [pageLength]=\"pageLength\"\n [scrollable]=\"false\" [showFooter]=\"false\"\n [showActions]=\"false\" [lengthMenu]=\"lengthMenu\"\n [config]=\"tableConfig\" [configSrc]=\"tableConfigSrc\"></app-advanced-table>\n </div>\n </div>\n <div class=\"row mt-3 table-custom-pager\">\n <div class=\"col-12 d-flex\" *ngIf=\"recordsTotal\">\n <div class=\"mt-2 ml-auto mr-3 text-secondary\" [translate]=\"'Tables.RecordsPerPage'\"></div>\n <div #dropdownLength class=\"dropdown mr-3\">\n <button class=\"btn btn-gray-100 dropdown-toggle\"\n type=\"button\" id=\"dropdownPageSize\" data-toggle=\"dropdown\"\n dropdownToggle>\n {{pageLength}}\n </button>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownPageSize\">\n <button (click)=\"setLength(item)\"\n class=\"dropdown-item dropdown-item-theme\"\n type=\"button\" *ngFor=\"let item of lengthMenu\">{{item}}</button>\n </div>\n </div>\n <div class=\"mt-2 mr-2\" [translate]=\"'Tables.PageInfo'\" [translateParams]=\"pageInfo\"></div>\n <button [disabled]=\"pageInfo && pageInfo.page === 0\" class=\"btn text-nowrap\" (click)=\"firstPage()\">\n <i class=\"fa fa-chevron-left text-color-theme\"></i>\n <i class=\"fa fa-chevron-left text-color-theme\"></i>\n </button>\n <button [disabled]=\"pageInfo && pageInfo.page===0\" class=\"btn\" (click)=\"previousPage()\">\n <i class=\"fa fa-chevron-left text-color-theme\"></i>\n </button>\n <button [disabled]=\"pageInfo && pageInfo.page===pageInfo.pages-1\" class=\"btn\" (click)=\"nextPage()\">\n <i class=\"fa fa-chevron-right text-color-theme\"></i>\n </button>\n <button [disabled]=\"pageInfo && pageInfo.page===pageInfo.pages-1\" class=\"btn text-nowrap\" (click)=\"lastPage()\">\n <i class=\"fa fa-chevron-right text-color-theme\"></i>\n <i class=\"fa fa-chevron-right text-color-theme\"></i>\n </button>\n </div>\n </div>\n </div>\n`;\n\n/**\n *\n * A specific value for a criterion\n *\n */\ninterface SearchItem {\n filter: any;\n name: string;\n}\n\n@Component({\n // tslint:disable-next-line: component-selector\n selector: 'app-advanced-table-modal',\n template: AdvancedTableModalBaseTemplate,\n styles: [\n `\n\n `\n ]\n})\nexport class AdvancedTableModalBaseComponent extends RouterModalOkCancel implements OnInit, OnDestroy, AfterViewInit {\n ngAfterViewInit(): void {\n setTimeout(() => {\n if (this.searchElement && this.searchElement.nativeElement) {\n this.searchElement.nativeElement.focus();\n }\n }, 0);\n }\n\n private static readonly DEFAULT_ALL_FILTER = {\n name: 'Tables.All',\n filter: null\n };\n\n @ViewChild('advancedTable') advancedTable: AdvancedTableComponent;\n @ViewChild('emptyTable') emptyTable: ElementRef;\n @ViewChild('dropdownFilter') dropdownFilter: ElementRef;\n @ViewChild('dropdownLength') dropdownLength: ElementRef;\n @ViewChild('searchElement') searchElement: any;\n @Input('tableConfig') tableConfig: TableConfiguration;\n @Input('tableConfigSrc') tableConfigSrc: string;\n @Input('pageLength') pageLength = 25;\n @Input('searchText') searchText: string;\n @Input('lengthMenu') lengthMenu: Array<number> = [5, 10, 25, 50, 100];\n private subscription: Subscription;\n public recordsTotal = 0;\n public loading = false;\n public recordsFiltered = 0;\n public defaultFilters: Array<any> = [AdvancedTableModalBaseComponent.DEFAULT_ALL_FILTER];\n @Input('defaultFilter') defaultFilter = AdvancedTableModalBaseComponent.DEFAULT_ALL_FILTER;\n \n\n public pageInfo = <PageInfo>{\n serverSide: true\n };\n private _template: TemplatePipe;\n configChangesSubscription: Subscription;\n\n constructor(\n _router: Router,\n _activatedRoute: ActivatedRoute,\n protected _context: AngularDataContext,\n protected advancedFilterValueProvider: AdvancedFilterValueProvider,\n protected datePipe: DatePipe\n ) {\n super(_router, _activatedRoute);\n this.modalClass = 'modal-xl modal-table';\n this._template = new TemplatePipe();\n }\n\n private _getInputs(componentType): Array<any> {\n const props = componentType.__prop__metadata__;\n const inputs = [];\n if (props == null) {\n return inputs;\n }\n Object.keys(props).forEach(prop => {\n const member = props[prop][0];\n if (member.ngMetadataName === 'Input') {\n inputs.push(prop);\n }\n });\n return inputs.sort();\n }\n\n public hasInputs(): Array<string> {\n return [];\n }\n\n ngOnInit() {\n\n this.okButtonText = 'Tables.Apply';\n this.cancelButtonText = 'Tables.Cancel';\n // get route data\n this.subscription = this.activatedRoute.data.subscribe(data => {\n // set modal title if any\n if (data.title) {\n this.modalTitle = data.title;\n }\n\n if (data.config) {\n this.tableConfig = data.config;\n }\n if (this.tableConfig) {\n this.defaultFilters.push.apply(this.defaultFilters, this.tableConfig.searches);\n }\n // important: use hasInputs due to AOT compilation. Metadata properties cannot be used (e.g. @Input())\n // because there are empty during runtime\n // so we need to define manually input properties that are going to be bind through this process\n // bind all inputs\n const inputs = this.hasInputs();\n inputs.forEach(input => {\n if (Object.prototype.hasOwnProperty.call(data, input)) {\n this[input] = data[input];\n }\n });\n\n this.configChangesSubscription = this.advancedTable.configChanges.subscribe((config) => {\n if (this.tableConfig) {\n // reset default filter\n this.defaultFilter = AdvancedTableModalBaseComponent.DEFAULT_ALL_FILTER;\n // init filter\n this.defaultFilters = [AdvancedTableModalBaseComponent.DEFAULT_ALL_FILTER];\n // add extra filters\n this.defaultFilters.push.apply(this.defaultFilters, this.tableConfig.searches);\n }\n });\n\n });\n }\n\n cancel(): Promise<any> {\n return this.close();\n }\n\n ok(): Promise<any> {\n return this.close();\n }\n\n ngOnDestroy(): void {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n onDataLoad(data: AdvancedTableDataResult) {\n this.recordsTotal = data.recordsTotal;\n this.recordsFiltered = data.recordsFiltered;\n // get first page info (because page is not going to be fired for first page)\n if (data.recordsTotal > 0 && this.pageInfo.recordsTotal === 0) {\n this.pageInfo.recordsTotal = data.recordsTotal;\n }\n const self = this;\n }\n\n previousPage() {\n // go to next page\n // noinspection TypeScriptValidateJSTypes\n this.advancedTable.dataTable.page('previous').draw('page');\n }\n\n nextPage() {\n // go to next page\n // noinspection TypeScriptValidateJSTypes\n this.advancedTable.dataTable.page('next').draw('page');\n }\n\n onTableInit() {\n const self = this;\n const dataTable = self.advancedTable.dataTable;\n // get initial page info\n const initialPageInfo = <PageInfo>dataTable.page.info();\n initialPageInfo.start += 1;\n self.pageInfo = initialPageInfo;\n // change emptyTableMessage\n dataTable.context[0].oLanguage.sEmptyTable = this.emptyTable.nativeElement.innerHTML;\n // bind page change event\n dataTable.on('page.dt', function () {\n const pageInfo = <PageInfo>dataTable.page.info();\n pageInfo.start += 1;\n self.pageInfo = pageInfo;\n });\n // bind draw change event\n dataTable.on('draw.dt', function () {\n // for future use\n self.loading = false;\n const pageInfo = <PageInfo>dataTable.page.info();\n pageInfo.start += 1;\n self.pageInfo = pageInfo;\n });\n }\n\n firstPage() {\n // go to first page\n // noinspection TypeScriptValidateJSTypes\n this.advancedTable.dataTable.page('first').draw('page');\n }\n\n lastPage() {\n // go to last page\n // noinspection TypeScriptValidateJSTypes\n this.advancedTable.dataTable.page('last').draw('page');\n }\n\n setLength(value: number) {\n this.pageLength = value;\n this.advancedTable.dataTable.page.len(value).draw();\n }\n\n onKeyUp(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.key === 'Return') {\n // loading\n this.loading = true;\n this.advancedTable.search((<HTMLInputElement>event.target).value);\n }\n }\n\n onSearch() {\n // loading\n this.loading = true;\n this.advancedTable.search(this.searchText);\n }\n\n /**\n *\n * Reads the modal table and returns a list of filters to use in the table\n * query.\n *\n * @param tableConfig {object} The table configuration from json file\n * @param defaultFilterValues {object} A list of default filters\n * @param {object} searchItem The searchItem to use\n *\n */\n getFilters(\n tableConfig: any,\n defaultFilterValues = {},\n searchItem: any\n ): Array<string> {\n // Do nothing in absence of configuration.\n if (!tableConfig || !Array.isArray(tableConfig.criteria)) {\n return [];\n }\n\n if (searchItem.filter == null) {\n return [];\n }\n\n const matchedCriterion = tableConfig.criteria.find(criterion =>\n Object.prototype.hasOwnProperty.call(searchItem.filter, criterion.name)\n );\n\n if (matchedCriterion == null) {\n return [];\n }\n\n const value = searchItem.filter[matchedCriterion.name];\n\n const criterionSafeName = matchedCriterion.name !== null\n ? matchedCriterion.name.toString()\n : '';\n\n let applicableFilter: string;\n\n // Raw dates should be transformed to a specific format\n if (criterionSafeName.includes('GMT')) {\n const newDate = this.datePipe.transform(criterionSafeName, 'MM/dd/yyyy');\n applicableFilter = this._template.transform(matchedCriterion.filter, {\n value: newDate\n });\n\n } else if (criterionSafeName !== 'undefined') {\n applicableFilter = (this._template.transform(matchedCriterion.filter, Object.assign({\n value: value\n }, defaultFilterValues)));\n } else {\n applicableFilter = '';\n }\n\n return [applicableFilter];\n }\n\n onFilterSelect(value: { filter: any; name: string } | any) {\n this.advancedSearch(value);\n }\n\n /**\n *\n * Runs a filter against the modal table\n *\n * @param {object} filter The filter to use in the search\n *\n */\n async advancedSearch(filter): Promise<any> {\n // Do nothing in absence of configuration.\n if (!this.tableConfig && !Array.isArray(this.tableConfig.criteria)) {\n console.warn('No table configuration available', this.tableConfig);\n return;\n }\n\n // An advanced table has some filters by default\n let defaultFilterValues;\n try {\n defaultFilterValues = await this.advancedFilterValueProvider.getValues();\n } catch (err) {\n defaultFilterValues = {};\n }\n\n const expressions = [];\n let predefinedCriteria;\n if (filter) {\n this.defaultFilter = filter;\n predefinedCriteria = this.getFilters(\n this.tableConfig,\n defaultFilterValues,\n filter\n );\n } else {\n // Empty a falsy filter resets the results\n this.defaultFilter = AdvancedTableModalBaseComponent.DEFAULT_ALL_FILTER;\n }\n\n // search filter is applied separately, there is no need to add here.\n expressions.push(predefinedCriteria);\n\n const query = this._context.model(this.advancedTable.config.model).asQueryable();\n query.setParam('filter', expressions.join(' and ')).prepare();\n this.advancedTable.query = query;\n this.advancedTable.fetch();\n }\n}\n\n","import { AdvancedTableModalBaseComponent } from '../advanced-table-modal/advanced-table-modal-base.component';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AdvancedFilterValueProvider } from '../advanced-table/advanced-filter-value-provider.service';\nimport { AngularDataContext } from '@themost/angular';\nimport { AfterViewInit, Component, ElementRef, EventEmitter, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { DatePipe } from '@angular/common';\n\n@Component({\n // tslint:disable-next-line: component-selector\n selector: 'app-advanced-select',\n templateUrl: './advanced-select.component.html',\n styles: [\n `\n .modal-table .dataTables_wrapper {\n height: 50vh;\n overflow-y: auto;\n }\n `,\n ],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AdvancedSelectComponent extends AdvancedTableModalBaseComponent implements AfterViewInit {\n\n public dismiss: EventEmitter<any> = new EventEmitter();\n @ViewChild('searchElement') searchElement: any;\n\n constructor(router: Router,\n activatedRoute: ActivatedRoute,\n context: AngularDataContext,\n advancedFilterValueProvider: AdvancedFilterValueProvider,\n datePipe: DatePipe,\n private _modalRef: BsModalRef,\n private el: ElementRef) {\n super(router, activatedRoute, context, advancedFilterValueProvider, datePipe);\n }\n\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n setTimeout(() => {\n if (this.searchElement && this.searchElement.nativeElement) {\n this.searchElement.nativeElement.focus();\n }\n }, 0);\n }\n\n public async ok() {\n this._modalRef.hide();\n this.dismiss.emit('ok');\n }\n\n public async cancel() {\n this._modalRef.hide();\n this.dismiss.emit('cancel');\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport {ActivatedRoute, NavigationEnd, NavigationStart, Router} from '@angular/router';\nimport { ModalService } from '@universis/common';\nimport { AdvancedSelectComponent } from './advanced-select.component';\n@Injectable()\nexport class AdvancedSelectService {\n\n constructor(private _modal: ModalService) {\n //\n }\n\n select(initialState: any): Promise<{result: string, items: Array<any>}> {\n return new Promise((resolve, reject) => {\n try {\n const modalRef = this._modal.openModalComponent(AdvancedSelectComponent, {\n class: 'modal-xl modal-table',\n ignoreBackdropClick: true,\n animated: true,\n initialState: initialState\n });\n const componentRef: AdvancedSelectComponent = modalRef.content;\n componentRef.dismiss.subscribe((result) => {\n return resolve({\n result: result,\n items: componentRef.advancedTable.selected\n });\n });\n } catch (err) {\n return reject(err);\n }\n });\n }\n\n}\n","import {Injectable} from '@angular/core';\nimport {ActivatedRouteSnapshot, Resolve, RouterStateSnapshot} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {AdvancedFormsService} from '@universis/forms';\nimport {HttpClient} from '@angular/common/http';\n\n@Injectable()\nexport class AdvancedTableConfigurationResolver implements Resolve<string> {\n constructor(private _http: HttpClient) {}\n resolve(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Promise<any>|any {\n // get list\n const list = route.data.list || route.params.list;\n // get model\n const model = route.data.model || route.params.model;\n // get configuration\n return this._http.get(`assets/lists/${model}/${list}.json`).toPromise();\n }\n}\n\n@Injectable()\nexport class AdvancedSearchConfigurationResolver implements Resolve<string> {\n constructor(private _http: HttpClient) {}\n resolve(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Promise<any>|any {\n // get list\n const list = route.data.list || route.params.list;\n // get model\n const model = route.data.model || route.params.model;\n // get configuration\n return this._http.get(`assets/lists/${model}/search.${list}.json`).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\r\nimport {ActivatedRoute, NavigationEnd, NavigationStart, Router} from '@angular/router';\r\nimport {AdvancedTableComponent} from './components/advanced-table/advanced-table.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ActivatedTableService {\r\n private _activeTable: AdvancedTableComponent;\r\n constructor(private _router: Router, private _activatedRoute: ActivatedRoute) {\r\n _router.events.forEach((event) => {\r\n if ( event instanceof NavigationStart) {\r\n if (this._activeTable) {\r\n this._activeTable = null;\r\n }\r\n }\r\n });\r\n }\r\n\r\n get activeTable(): AdvancedTableComponent {\r\n return this._activeTable;\r\n }\r\n\r\n set activeTable(tableComponent: AdvancedTableComponent) {\r\n this._activeTable = tableComponent;\r\n }\r\n}\r\n","import {\r\n AfterContentInit,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { AdvancedTableComponent } from './advanced-table.component';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { AngularDataContext } from '@themost/angular';\r\nimport { DatePipe } from '@angular/common';\r\nimport { BsModalService, BsModalRef } from 'ngx-bootstrap/modal';\r\nimport {ActivatedTableService} from '../../tables.activated-table.service';\r\nimport {UserStorageService} from '@universis/common';\r\nimport {FormArray, FormBuilder, FormControl, FormGroup, ValidatorFn} from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'app-advanced-table-settings',\r\n templateUrl: './advanced-table-settings.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class AdvancedTableSettingsComponent implements OnInit, AfterViewInit {\r\n\r\n @Input() table: AdvancedTableComponent;\r\n @ViewChild('modal_settings_template') modal_settings_template: ElementRef;\r\n modalRef: BsModalRef;\r\n storageKey: any;\r\n params: any = this._activatedRoute.params;\r\n private savedTableSettings: any;\r\n form: FormGroup;\r\n columns = [];\r\n tableColumns: any;\r\n activeTableConfig: any;\r\n\r\n constructor(protected _context: AngularDataContext,\r\n protected _activatedRoute: ActivatedRoute,\r\n private elRef: ElementRef,\r\n private modalService: BsModalService,\r\n private userStorage: UserStorageService,\r\n private formBuilder: FormBuilder,\r\n private _activatedTable: ActivatedTableService) {\r\n }\r\n ngOnInit(): void {\r\n }\r\n ngAfterViewInit(): void {\r\n this.activeTableConfig = this._activatedTable.activeTable.getConfig();\r\n this.storageKey = 'registrar/settings/' + this.activeTableConfig.title + '/table/columns';\r\n this.form = this.formBuilder.group({columns: new FormArray([], this.minSelectedColumns(1))});\r\n this.userStorage.getItem(this.storageKey).then((data) => {\r\n if (data) {\r\n this.savedTableSettings = data.value;\r\n if (this.savedTableSettings) {\r\n if (this._activatedTable.activeTable) {\r\n this._activatedTable.activeTable.handleColumns(this.savedTableSettings);\r\n }\r\n }\r\n this.addCheckboxes();\r\n }\r\n });\r\n }\r\n private addCheckboxes() {\r\n this.tableColumns = this.activeTableConfig.columns.slice(1);\r\n this.tableColumns.forEach ((column, i) => {\r\n if (!column.hidden) {\r\n const control = {\r\n id: column.name,\r\n name: column.title\r\n };\r\n this.columns.push(control);\r\n }\r\n });\r\n if (this.savedTableSettings) {\r\n this.columns.forEach ((column, i) => {\r\n column.check = false;\r\n column.check = this.savedTableSettings.includes(column.id);\r\n });\r\n this.columns.map((column, i) => {\r\n const control = new FormControl(column.check);\r\n (this.form.controls.columns as FormArray).push(control);\r\n });\r\n }\r\n }\r\n\r\n openTableSettings(table_settings_modal: TemplateRef<any>) {\r\n this.modalRef = this.modalService.show(table_settings_modal);\r\n }\r\n\r\n saveTableSettings() {\r\n const selectedColumnsIds = this.form.value.columns\r\n .map((v, i) => v ? this.columns[i].id : null)\r\n .filter(v => v !== null);\r\n this.userStorage.setItem(this.storageKey, selectedColumnsIds);\r\n if (this._activatedTable.activeTable) {\r\n this._activatedTable.activeTable.handleColumns(selectedColumnsIds);\r\n }\r\n this.modalRef.hide();\r\n }\r\n\r\n dismiss() {\r\n this.modalRef.hide();\r\n }\r\n\r\n minSelectedColumns(min = 1) {\r\n const validator: ValidatorFn = (formArray: FormArray) => {\r\n const totalSelected = formArray.controls\r\n .map(control => control.value)\r\n .reduce((prev, next) => next ? prev + next : prev, 0);\r\n\r\n return totalSelected >= min ? null : { required: true };\r\n };\r\n\r\n return validator;\r\n }\r\n}\r\n","import {Component, Input, OnInit, Output, ViewChild,\n ViewEncapsulation, EventEmitter, AfterViewInit, TemplateRef, OnDestroy} from '@angular/core';\nimport { AdvancedTableComponent } from './advanced-table.component';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AngularDataContext } from '@themost/angular';\nimport { DatePipe } from '@angular/common';\nimport { UserStorageService, ModalService, DIALOG_BUTTONS } from '@universis/common';\nimport { BsModalService, BsModalRef } from 'ngx-bootstrap/modal';\nimport { TranslateService } from '@ngx-translate/core';\nimport {AdvancedFilterValueProvider} from './advanced-filter-value-provider.service';\nimport { AdvancedTableSearchBaseComponent } from './advanced-table-search-base';\nimport {TemplatePipe} from '@universis/common';\nimport { Subscription } from 'rxjs';\nimport { TextUtils } from '@themost/client';\n\nexport interface AdvancedSearchViewStatus {\n advancedView: boolean;\n}\n\nexport interface AdvancedSearchList {\n name: string;\n}\n\n@Component({\n // tslint:disable-next-line: component-selector\n selector: 'app-advanced-table-search',\n templateUrl: './advanced-table-search.component.html',\n encapsulation: ViewEncapsulation.None,\n})\n\nexport class AdvancedTableSearchComponent extends AdvancedTableSearchBaseComponent implements OnInit, AfterViewInit, OnDestroy {\n\n private queryParamSubscription: Subscription;\n private configChangesSubscription: Subscription;\n @Input() public table: AdvancedTableComponent;\n @Input() public collapsed = true;\n @Input() public allowSave = true;\n @Input() public showMore = true;\n @Input() public mergeQueryParams = false;\n @ViewChild('searchText') public searchText: any;\n @Output('viewChange') public viewChange: EventEmitter<AdvancedSearchViewStatus> = new EventEmitter<AdvancedSearchViewStatus>();\n @Output('listChange') public listChange: EventEmitter<AdvancedSearchList> = new EventEmitter<AdvancedSearchList>();\n public set text(value: string) {\n if (this.searchText) {\n this.searchText.nativeElement.value = value;\n }\n }\n\n public get text() {\n if (this.searchText) {\n return this.searchText.nativeElement.value;\n }\n }\n\n public modalRef: BsModalRef;\n public storageKey: any;\n public storageValue: any;\n public userSearchList: any = [];\n public selectedList: any = null;\n\n constructor( protected _context: AngularDataContext,\n protected _activatedRoute: ActivatedRoute,\n protected datePipe: DatePipe,\n private _modalService: BsModalService,\n private _userStorage: UserStorageService,\n private _translate: TranslateService,\n private _advancedSearchValueProvider: AdvancedFilterValueProvider,\n private _template: TemplatePipe,\n private _router: Router,\n private _modal: ModalService) { super(); }\n\n public ngOnInit(): void {\n this.configChangesSubscription = this.table.configChanges.subscribe((config) => {\n if (config == null) {\n return;\n }\n // load user searches\n this.loadUserSearchList().then(() => {\n // if search component merges query params\n // (uses queryParams to apply filter)\n if (this.mergeQueryParams) {\n this.queryParamSubscription = this._activatedRoute.queryParams.subscribe((queryParams) => {\n this.applyQueryParams(queryParams);\n });\n }\n });\n });\n }\n\n /**\n * Applies query given by the queryParams of the activated route\n * @param queryParams\n */\n private applyQueryParams(queryParams: any) {\n this.filter = {};\n if (Object.prototype.hasOwnProperty.call(queryParams, 'q')) {\n // set collapsed\n this.collapsed = true;\n // search text\n this.text = queryParams.q;\n return this.table.search(this.text);\n } else {\n this.text = '';\n }\n\n let filterParams = Object.assign({}, queryParams);\n\n if (Object.prototype.hasOwnProperty.call(queryParams, 's')) {\n // set collapsed\n this.collapsed = false;\n // find user search by name\n if (this.userSearchList) {\n this.selectedList = this.userSearchList.find((item) => {\n return item.name === queryParams.s;\n });\n if (this.selectedList) {\n filterParams = this.selectedList.filter;\n }\n }\n } else {\n this.selectedList = null;\n }\n\n Object.keys(filterParams).filter((key) => {\n // search criteria\n if (this.table && this.table.config && this.table.config.criteria) {\n return this.table.config.criteria.find((item) => {\n return item.name === key;\n });\n }\n }).forEach((key) => {\n let value = filterParams[key];\n if (TextUtils.isNumber(value)) {\n value = parseFloat(filterParams[key]);\n }\n if (this.filter[key] !== value) {\n // set value\n Object.defineProperty(this.filter, key, {\n configurable: true,\n enumerable: true,\n writable: true,\n value,\n });\n }\n if (this.filter[key] != null) {\n this.collapsed = false;\n }\n });\n\n // call filterChange event to apply change to advanced search children\n this.filterChange.emit(this.filter);\n // apply query\n this.getQuery().then((query) => {\n // if table query is null\n if (this.table.query == null) {\n // set query\n this.table.query = query;\n } else {\n if (query != null) {\n const params = query.getParams();\n // otherwise set filter params\n this.table.query.setParam('$filter', params.$filter);\n } else {\n this.table.query.setParam('$filter', null);\n }\n }\n // and finally fetch data\n this.table.fetch(true);\n });\n }\n\n public ngOnDestroy(): void {\n if (this.queryParamSubscription) {\n this.queryParamSubscription.unsubscribe();\n }\n if (this.configChangesSubscription) {\n this.configChangesSubscription.unsubscribe();\n }\n }\n\n public ngAfterViewInit(): void {\n\n }\n\n public onSearchKeyDown(event: any) {\n if (this.table && event.keyCode === 13) {\n // get search text\n const searchText = ( event.target as HTMLInputElement).value;\n // merge query params ?\n if (this.mergeQueryParams) {\n const queryParams = {\n q: searchText,\n };\n if (this.table.config && this.table.config.criteria) {\n this.table.config.criteria.forEach((item) => {\n Object.defineProperty(queryParams, item.name, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: null,\n });\n });\n }\n // try to apply filter by appending query params\n return this._router.navigate([], {\n relativeTo: this._activatedRoute,\n queryParams,\n queryParamsHandling: 'merge',\n });\n }\n this.filterChange.emit({\n q: searchText\n });\n // otherwise do search\n this.table.search(searchText);\n return false;\n }\n }\n\n public transformDate(date) {\n date = this.datePipe.transform(date, 'MM/dd/yyyy'); // whatever format you need.\n return date;\n }\n\n public convertToString(nameFilter) {\n let name = '';\n if (nameFilter != null) {\n name = nameFilter.toString();\n }\n return name;\n }\n\n// Load saved criteria searches user has stored before\n private loadUserSearchList(): Promise<void> {\n this.storageKey = 'tables/' + this.table.config.model + '/searches';\n return this._userStorage.getItem(this.storageKey).then((data) => {\n const list = data.value || [];\n // if table configuration has pre-defined searches\n if (this.table && this.table.config.searches && this.table.config.searches.length) {\n // add pre-defined lists\n list.push.apply(list, this.table.config.searches.map ( (x) => {\n x.readOnly = true; // as readonly\n x.name = this._translate.instant(x.name);\n return x;\n }));\n }\n // set user search list\n this.userSearchList = list;\n return Promise.resolve();\n }).catch((err) => {\n // DO NOT THROW ERROR\n // todo: notify component for this error in order to disable some actions\n console.error('An error occurred while getting user search list');\n console.error(err);\n return Promise.resolve();\n });\n }\n\n public onSelectUserSearch(event: any): any {\n if (this.selectedList) {\n const listFound = this.searchInListByName(this.selectedList.name);\n if (listFound) {\n if (this.mergeQueryParams) {\n const queryParams = { q: null, s: this.selectedList.name };\n // clear criteria if any\n this.table.config.criteria.forEach((item) => {\n if (Object.prototype.hasOwnProperty.call(queryParams, item.name) === false) {\n // set null value\n Object.defineProperty(queryParams, item.name, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: null,\n });\n }\n });\n return this._router.navigate([], {\n relativeTo: this._activatedRoute,\n queryParams,\n queryParamsHandling: 'merge',\n });\n }\n this.selectedList = listFound;\n this.filter = this.selectedList.filter;\n this.filterChange.emit(this.filter);\n return true;\n }\n } else {\n return this._router.navigate([], {\n relativeTo: this._activatedRoute,\n queryParams: { s: null },\n queryParamsHandling: 'merge',\n });\n }\n return false;\n }\n\n public searchInListByName(name: string): any {\n if ( Array.isArray(this.userSearchList) ) {\n const listFound = this.userSearchList.find( (x) => x.name === name);\n if ( listFound ) {\n return listFound;\n } else {\n return false;\n }\n }\n }\n\n// Update list item contents with given content (Search by object name property)\n public updateSavedSearchListItemByName( name: string, newItem: any ) {\n const itemInList = this.userSearchList.find( (x) => x.name === name );\n const index = this.userSearchList.indexOf(itemInList);\n this.userSearchList[index] = newItem;\n this.selectedList = this.userSearchList[index];\n }\n\n// Update list item contents with given content (Search by object)\n public updateSavedSearchListItemByObject( itemInList: any, newItem: any ) {\n const index = this.userSearchList.indexOf(itemInList);\n this.userSearchList[index] = newItem;\n this.selectedList = this.userSearchList[index];\n }\n\n// Delete list item from list\n public deleteItemFromSavedSearchListByObject( itemInList: any) {\n this.userSearchList = this.userSearchList.filter((item) => item !== itemInList);\n this.selectedList = null;\n this.filter = {};\n this.advancedSearch(true);\n this.uploadListOnUserStorage();\n }\n\n// User chose to save its advanced form search criteria\n public saveSearch( templateToLoad: TemplateRef<any>, newList: boolean = true) {\n if ( this.table.config.model ) {\n// Set the corresponding key to its list and show a confirmation modal window\n this.storageKey = `tables/${this.table.config.model}/searches`;\n if (this.filter && Object.keys(this.filter).length) {\n// User wants to save an existing list from the dropdown\n if ( !newList && this.selectedList ) {\n const newItem = { name : this.selectedList.name, filter : { ... this.filter } };\n this.updateSavedSearchListItemByObject ( this.selectedList, newItem );\n this.uploadListOnUserStorage();\n// User wants to save a new list\n } else {\n this.modalRef = this._modalService.show(templateToLoad);\n }\n } else {\n// User did not define any criteria\n this._modal.showWarningDialog(\n this._translate.instant('AdvancedSearch.Modal.Title'),\n this._translate.instant('AdvancedSearch.Modal.EmptyCriteriaList'),\n DIALOG_BUTTONS.Ok);\n }\n } else {\n this._modal.showWarningDialog(\n this._translate.instant('AdvancedSearch.Modal.Title'),\n this._translate.instant('AdvancedSearch.Modal.NoListDefined'),\n DIALOG_BUTTONS.Ok);\n }\n }\n\n// User Accepted => Save list and Close modal\n public confirmModal( saveFormName ): void {\n// name given and list name is unique\n if ( saveFormName && !(this.searchInListByName(saveFormName)) ) {\n const newInsertedValue = { name : saveFormName, filter : { ... this.filter } };\n if ( this.userSearchList && this.userSearchList.length !== 0 ) {\n this.userSearchList.push(newInsertedValue);\n this.storageValue = this.userSearchList;\n this.selectedList = newInsertedValue;\n } else {\n this.storageValue = [newInsertedValue];\n this.userSearchList = this.storageValue;\n this.selectedList = newInsertedValue;\n }\n this.uploadListOnUserStorage();\n this.modalRef.hide();\n } else if ( saveFormName && (this.searchInListByName(saveFormName)) ) {\n// User should insert a different name cause this one is already in use\n alert(this._translate.instant('AdvancedSearch.Modal.TitleOnListAlreadyCreated'));\n } else {\n// User did not insert any text\n alert(this._translate.instant('AdvancedSearch.Modal.TitleOnUserError'));\n }\n }\n\n// User declined => Close modal\n public closeModal(): void {\n this.modalRef.hide();\n }\n\n// Upload user's criteria on User Storage\n public uploadListOnUserStorage() {\n this._userStorage.setItem(this.storageKey, this.userSearchList.filter((x) => {\n return !x.readOnly;\n }));\n }\n\n /**\n * @deprecated This method is going to be deprecated. Use search() method instead.\n * @param {*} event\n */\n public async asyncAdvancedSearch(event?: any) {\n if ( this.table && this.table.config && Array.isArray(this.table.config.criteria)) {\n const query = await this.getQuery();\n if (this.mergeQueryParams) {\n this.selectedList = null;\n const queryParams = Object.assign({ q: null, s: null }, this.filter);\n // enumerate criteria\n this.table.config.criteria.forEach((item) => {\n if (Object.prototype.hasOwnProperty.call(queryParams, item.name) === false) {\n // set null value\n Object.defineProperty(queryParams, item.name, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: null,\n });\n }\n });\n return this._router.navigate([], {\n relativeTo: this._activatedRoute,\n queryParams,\n queryParamsHandling: 'merge',\n });\n }\n if (this.table.query) {\n this.table.query.setParam('$filter', query.getParams()['$filter']);\n } else {\n this.table.query = query;\n }\n this.filterChange.emit(this.filter);\n this.table.fetch();\n }\n }\n\n public search(): Promise<void> {\n return this.asyncAdvancedSearch().then(() => {\n // do nothing\n });\n }\n\n public async getQuery() {\n // on simple search return null\n if (this.collapsed) {\n return null;\n }\n if ( this.table && this.table.config && Array.isArray(this.table.config.criteria)) {\n const expressions = [];\n const values = await this._advancedSearchValueProvider.getValues();\n this.table.config.criteria.forEach((x) => {\n if (Object.prototype.hasOwnProperty.call(this.filter, x.name)) {\n const nameFilter = this.convertToString(this.filter[x.name]);\n if (nameFilter.includes('GMT')) {\n const newDate = this.transformDate(this.filter[x.name]);\n expressions.push(this._template.transform(x.filter, {\n value: newDate,\n }));\n } else if (this.filter[x.name] !== 'undefined') {\n expressions.push(this._template.transform(x.filter, Object.assign({\n value: this.filter[x.name],\n }, values)));\n }\n }\n });\n let query;\n if (expressions || expressions.length) {\n // create client query\n query = this._context.model(this.table.config.model).asQueryable();\n query.setParam('filter', expressions.join(' and '));\n } else {\n query = this._context.model(this.table.config.model).asQueryable();\n }\n return query;\n }\n }\n\n public advancedSearch(event: any) {\n return this.asyncAdvancedSearch(event);\n }\n\n public clear() {\n if (this.mergeQueryParams) {\n this.selectedList = null;\n const queryParams = { q: null, s: null };\n // enumerate criteria\n this.table.config.criteria.forEach((item) => {\n if (Object.prototype.hasOwnProperty.call(queryParams, item.name) === false) {\n // set null value\n Object.defineProperty(queryParams, item.name, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: null,\n });\n }\n });\n return this._router.navigate([], {\n relativeTo: this._activatedRoute,\n queryParams,\n queryParamsHandling: 'merge',\n });\n } else {\n // clear filter\n this.filter = {};\n // clear list\n this.selectedList = null;\n // raise filter change event\n this.filterChange.emit(this.filter);\n }\n }\n\n /**\n * Gets the view state of search control\n */\n public get viewState(): AdvancedSearchViewStatus {\n return {\n advancedView: !this.collapsed,\n };\n }\n\n /**\n * Switches view between simple and advanced search\n */\n public async toggleView() {\n this.collapsed = !this.collapsed;\n // emit event for view status change\n this.viewChange.emit(this.viewState);\n }\n}\n","import {\n ActionLinkFormatter, ButtonFormatter, DateTimeFormatter, LanguageFormatter,\n LinkFormatter,\n NestedPropertyFormatter, NgClassFormatter, SelectRowFormatter,\n TemplateFormatter, TranslationFormatter,\n TrueFalseFormatter, ActionButtonFormatter, ActionSplitButtonFormatter,\n} from './advanced-table.formatters';\n\nexport interface IAdvancedTableFormatters {\n ActionLinkFormatter?: ActionLinkFormatter;\n ButtonFormatter?: ButtonFormatter;\n DateTimeFormatter?: DateTimeFormatter;\n LanguageFormatter?: LanguageFormatter;\n LinkFormatter?: LinkFormatter;\n NestedPropertyFormatter?: NestedPropertyFormatter;\n NgClassFormatter?: NgClassFormatter;\n SelectRowFormatter?: SelectRowFormatter;\n TemplateFormatter?: TemplateFormatter;\n TranslationFormatter?: TranslationFormatter;\n TrueFalseFormatter?: TrueFalseFormatter;\n ActionButtonFormatter?: ActionButtonFormatter;\n ActionSplitButtonFormatter?: ActionSplitButtonFormatter;\n}\nexport const FORMATTERS: IAdvancedTableFormatters = {\n ActionLinkFormatter: new ActionLinkFormatter(),\n ButtonFormatter: new ButtonFormatter(),\n DateTimeFormatter: new DateTimeFormatter(),\n LanguageFormatter: new LanguageFormatter(),\n LinkFormatter: new LinkFormatter(),\n NestedPropertyFormatter: new NestedPropertyFormatter(),\n NgClassFormatter: new NgClassFormatter(),\n SelectRowFormatter: new SelectRowFormatter(),\n TemplateFormatter: new TemplateFormatter(),\n TranslationFormatter: new TranslationFormatter(),\n TrueFalseFormatter: new TrueFalseFormatter(),\n ActionButtonFormatter: new ActionButtonFormatter(),\n ActionSplitButtonFormatter: new ActionSplitButtonFormatter(),\n};\n","import { Component, OnInit, Input, OnDestroy, OnChanges, SimpleChanges, Output, EventEmitter } from '@angular/core';\nimport { AdvancedTableComponent, AdvancedTableDataResult } from '../advanced-table/advanced-table.component';;\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'table-simple-header-tools',\n template: `\n <ng-content></ng-content>\n `,\n styles: []\n})\nexport class SimpleHeaderToolsComponent {\n //\n}\n\n@Component({\n selector: 'app-table-simple-header',\n templateUrl: './table-simple-header.component.html',\n styles: []\n})\nexport class TableSimpleHeaderComponent implements OnInit, OnDestroy, OnChanges {\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.table) {\n if (changes.table.currentValue == null) {\n if (this.dataLoadSubscription) {\n this.dataLoadSubscription.unsubscribe();\n return;\n }\n }\n if (changes.table.currentValue != changes.table.previousValue) {\n this.dataLoadSubscription = changes.table.currentValue.load.subscribe((data: AdvancedTableDataResult) => {\n this.recordsTotal = data.recordsTotal;\n });\n }\n }\n }\n ngOnDestroy(): void {\n if (this.dataLoadSubscription) {\n this.dataLoadSubscription.unsubscribe();\n }\n }\n\n @Input() table: AdvancedTableComponent;\n public recordsTotal: number;\n public dataLoadSubscription: Subscription;\n constructor() { }\n\n ngOnInit() {\n //\n }\n\n}\n","import {\n Directive, Output, EventEmitter,\n} from '@angular/core';\nimport { AdvancedTableComponent } from '../components/advanced-table/advanced-table.component';\n\nexport class AdvancedTableNotNullError extends Error {\n constructor() {\n super('Advanced table component cannot be empty at this context.');\n }\n}\n\n@Directive(\n {\n // tslint:disable-next-line: directive-selector\n selector: '[tableEditor]',\n },\n)\nexport class AdvancedTableEditorDirective {\n\n public dirty = false;\n @Output() public dirtyChange: EventEmitter<boolean> = new EventEmitter<boolean>(false);\n\n constructor(private table: AdvancedTableComponent) {\n //\n }\n\n /**\n * Add rows to table and mark them as added rows\n */\n public add(...addItems: any[]) {\n if (this.table == null) {\n throw new AdvancedTableNotNullError();\n }\n // decorate items\n const key = this.table.config.columns[0].property || this.table.config.columns[0].name;\n for (const element of addItems) {\n let tr = this.table.dataTable.rows(':has(input[data-id=\"' + element[key] + '\"])').nodes().to$();\n if (tr.hasClass('removed')) {\n tr.toggleClass('removed text-gray-400 text-decoration-line-through');\n } else {\n this.table.dataTable.rows.add([element]);\n tr = this.table.dataTable.rows(':has(input[data-id=\"' + element[key] + '\"])').nodes().to$();\n tr.toggleClass('added font-weight-bold text-success');\n }\n }\n this.table.dataTable.draw();\n // find removed\n const removedLength = this.table.dataTable.rows('.removed')[0].length;\n // find added\n const addedLength = this.table.dataTable.rows('.added')[0].length;\n // and emit event\n const items = this.table.dataTable.rows().data();\n this.table.load.emit({\n data: items,\n recordsFiltered: items.length - removedLength,\n recordsTotal: items.length - removedLength,\n });\n this.dirty = (removedLength > 0 || addedLength > 0);\n this.dirtyChange.emit(this.dirty);\n }\n\n /**\n * Marks rows as removed rows\n */\n public remove(...removeItems: any[]) {\n if (this.table == null) {\n throw new AdvancedTableNotNullError();\n }\n // get key\n const key = this.table.config.columns[0].property || this.table.config.columns[0].name;\n // loop items\n for (const element of removeItems) {\n const tr = this.table.dataTable.rows(':has(input[data-id=\"' + element[key] + '\"])').nodes().to$();\n // if row is marked as added\n if (tr.hasClass('added')) {\n // remove this dirty row\n this.table.dataTable.rows(tr).remove();\n } else {\n // otherwise unmarked row\n tr.toggleClass('removed text-gray-400 text-decoration-line-through');\n }\n // check if item is selected\n const selectedIndex = this.table.selected.findIndex((item) => {\n return item[key] === element[key];\n });\n // and remove it from selected collection\n if (selectedIndex >= 0) {\n this.table.selected.splice(selectedIndex, 1);\n }\n }\n // re-draw table\n this.table.dataTable.draw();\n // get number of table items\n const items = this.table.dataTable.rows().data();\n // get number of removed items\n const removedLength = this.table.dataTable.rows('.removed')[0].length;\n // get number of added items\n const addedLength = this.table.dataTable.rows('.added')[0].length;\n // refresh\n this.table.load.emit({\n data: items,\n recordsFiltered: items.length - removedLength,\n recordsTotal: items.length - removedLength,\n });\n this.dirty = (removedLength > 0 || addedLength > 0);\n this.dirtyChange.emit(this.dirty);\n }\n\n public set(items: any[]) {\n if (this.table == null) {\n throw new AdvancedTableNotNullError();\n }\n // clear rows\n this.table.selected = [];\n this.table.dataTable.clear();\n // set items\n this.table.dataTable.rows.add(items).draw();\n this.table.load.emit({\n data: items,\n recordsFiltered: items.length,\n recordsTotal: items.length,\n });\n }\n\n /**\n * Undo changes\n */\n public undo() {\n if (this.table == null) {\n throw new AdvancedTableNotNullError();\n }\n // reset removed rows\n this.table.dataTable.rows('.removed').nodes().to$().toggleClass('removed text-gray-400 text-decoration-line-through');\n // remove added rows\n this.table.dataTable.rows('.added').remove();\n // clear selected items\n this.table.selected = [];\n const items = this.table.dataTable.rows().data();\n this.table.dataTable.draw();\n this.table.load.emit({\n data: items,\n recordsFiltered: items.length,\n recordsTotal: items.length,\n });\n this.dirty = false;\n this.dirtyChange.emit(this.dirty);\n }\n\n public rows() {\n if (this.table == null) {\n throw new AdvancedTableNotNullError();\n }\n return Array.from(this.table.dataTable.rows(':not(.removed)').data());\n }\n\n}\n","import {Directive, HostListener} from '@angular/core';\nimport {ActivatedTableService} from '../tables.activated-table.service';\nimport {AngularDataContext} from '@themost/angular';\nimport {ConfigurationService, ErrorService, LoadingService} from '@universis/common';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ClientDataQueryable, ResponseError} from '@themost/client';\nimport { TableConfiguration } from '../components/advanced-table/advanced-table.interfaces';\n\nconst MAX_EXPORT_ITEMS = 500;\n\ndeclare interface ExportLimitConfiguration {\n tables?: {\n exportLimit?: number\n }\n}\n\n@Directive({\n selector: '.universis-btn-export'\n})\nexport class BtnExpDirective {\n constructor(private _activatedTable: ActivatedTableService,\n private _context: AngularDataContext,\n private _config: ConfigurationService,\n private _translate: TranslateService,\n private _loadingService: LoadingService,\n private _errorService: ErrorService) {\n }\n\n @HostListener('click', ['$event'])\n async clickEvent(event) {\n event.preventDefault();\n event.stopPropagation();\n if (this._activatedTable.activeTable) {\n const lastQuery = this._activatedTable.activeTable.lastQuery;\n const tableConfig = this._activatedTable.activeTable.config;\n const serviceHeaders = this._context.getService().getHeaders();\n const queryModel = lastQuery.getModel();\n let query = this._context.model(queryModel).asQueryable();\n const queryParams = lastQuery.getParams();\n query = this.constructQuery(query, queryParams, tableConfig, serviceHeaders);\n // get export settings\n const exportSettings = this._config.settings as ExportLimitConfiguration;\n // get export limit\n const maxExportItems = exportSettings && exportSettings.tables && exportSettings.tables.exportLimit;\n if (maxExportItems && typeof maxExportItems === 'number' && maxExportItems > 0) {\n query.skip(0).take(maxExportItems);\n } else {\n query.skip(0).take(MAX_EXPORT_ITEMS);\n }\n // This constructs the URI based on the way @themost does\n const url = this.constructURL(query);\n this.downloadFile(url, query.getService().getHeaders(), query.getModel());\n }\n }\n\n /**\n * Sets the parameters to the query based on\n * the active filters of the activated table\n * @param {ClientDataQueryable} query\n * @param params: The filters of the last query of the activated table\n * @return ClientDataQueryable\n */\n setParams(query: ClientDataQueryable, params): ClientDataQueryable {\n if (params && typeof params === 'object') {\n Object.keys(params).forEach((key) => {\n query.setParam(key, params[key]);\n });\n }\n return query;\n }\n\n /**\n * Sets the headers to the query based on\n * the default headers of the DataContext\n * and appending the accept header to get\n * an xlsx file from the API\n * @param {ClientDataQueryable} query\n * @param {Headers} headers: The headers to append to the query\n * @return ClientDataQueryable\n */\n setHeaders(query: ClientDataQueryable, headers: Headers): ClientDataQueryable {\n Object.keys(headers).forEach((key) => {\n if (headers.hasOwnProperty(key)) {\n query.getService().setHeader(key, headers[key]);\n }\n });\n // sets a header to accept xlsx files\n query.getService().setHeader('Accept', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\n return query;\n }\n\n /**\n * Constructs the select parameter of the\n * ClientDataQuery by replacing the target name\n * of the field based on the localized translation\n * of that property on the advanced tabled\n * @param {ClientDataQueryable} query\n * @param tableConfig: The configuration of the activated table\n * @return ClientDataQueryable\n */\n constructQueryParam(query: ClientDataQueryable, tableConfig: TableConfiguration): ClientDataQueryable {\n let selectQuery = query.getParams().$select;\n let selectQueryArray = selectQuery.split(',');\n selectQueryArray = selectQueryArray.map((select) => {\n const words = select.split(' ');\n if (words.length === 3) {\n if (tableConfig && tableConfig.columns) {\n for(const column of tableConfig.columns) {\n if (column.property === words[2] && column.title) {\n words[2] = `\"${this._translate.instant(column.title)}\"`;\n } else if (column.property === words[2]) {\n words[2] = `\"${this._translate.instant(words[2])}\"`\n }\n }\n }\n }\n if (words.length === 1) {\n if (tableConfig && tableConfig.columns) {\n for(const column of tableConfig.columns){\n if (column.name === words[0] && column.title) {\n words[0] = `${words[0]} as \"${this._translate.instant(column.title)}\"`;\n break;\n } else if (column.name === words[0] && column.property) {\n words[0] = `${words[0]} as \"${this._translate.instant(column.property)}\"`;\n break;\n } else if (words[0] === column.name && words[0]=== \"id\" && column.hidden) {\n break;\n } else if(words[0] == column.name || words[0]=== column.property) {\n words[0] = `${words[0]} as \"${this._translate.instant(words[0])}\"`;\n }\n }\n }\n return words[0];\n }\n return words.join(' ');\n });\n selectQuery = selectQueryArray.join(',');\n query.setParam('$select', selectQuery );\n return query;\n }\n\n /**\n * Constructs the fetch URL based the query parameters\n * @param {ClientDataQueryable} query\n * @return String\n */\n constructURL(query): String {\n const baseURL = query.getService().getBase();\n let url = baseURL.endsWith('/') ? (baseURL + query.getModel() + '?') : (baseURL + '/' + query.getModel() + '?');\n Object.keys(query.getParams()).forEach((key, index) => {\n if (index === 0) {\n url += key + '=' + query.getParams()[key];\n } else {\n url += '&' + key + '=' + query.getParams()[key];\n }\n });\n return url;\n }\n\n /**\n * Constructs the query by setting the parameters of the\n * advanced table's active filters, sets the necessary headers\n * and build the select parameter of the query\n * @param {ClientDataQueryable} query\n * @param params: The filters of the last query of the activated table\n * @param tableConfig: The configuration of the activated table\n * @param {Headers} headers: The headers to append to the query\n * @return ClientDataQueryable\n */\n constructQuery(query, params, tableConfig, headers: Headers) {\n let _query = this.setParams(query, params);\n _query = this.setHeaders(_query, headers);\n _query = this.constructQueryParam(_query, tableConfig);\n return _query;\n }\n\n /**\n * Fetches and saves the xlsx file\n * @param {String} url\n * @param {Headers} serviceHeaders: The headers to append to the query\n * @param modelName: The model name of the advanced table\n */\n downloadFile(url, serviceHeaders: Headers, modelName) {\n this._loadingService.showLoading();\n fetch(encodeURI(url), {\n headers: serviceHeaders,\n credentials: 'include'\n }).then(response => {\n if (response && !response.ok) {\n throw new ResponseError(response.statusText, response.status);\n }\n return response.blob();\n }).then(blob => {\n const objectUrl = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n document.body.appendChild(a);\n a.setAttribute('style', 'display: none');\n a.href = objectUrl;\n const downloadName = `${modelName}.xlsx`;\n a.download = downloadName;\n // this adds support for IE and MS Edge (up to version 44.19041)\n if (window.navigator && window.navigator.msSaveOrOpenBlob) {\n window.navigator.msSaveOrOpenBlob(blob, downloadName);\n } else {\n // for all other browsers\n a.click();\n }\n window.URL.revokeObjectURL(objectUrl);\n a.remove();\n this._loadingService.hideLoading();\n }).catch(err => {\n this._loadingService.hideLoading();\n this._errorService.showError(err, {\n continueLink: '.'\n });\n });\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { AngularDataContext } from '@themost/angular';\nimport { TemplatePipe } from '@universis/common';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AdvancedAggregatorService {\n\n constructor(\n private _context: AngularDataContext,\n private _template: TemplatePipe\n ) { }\n\n /**\n *\n * Formats and executes the data query\n *\n * @param {string} model The target model\n * @param {object} fixedParams Pairs of parameters to always be applied\n * @param {string} queryStatement The default query to use for fetching the data (e.g. expands etc)\n * @param {Array<string>} filters A list of filter expressions to append at the query\n * @param {string} searchTemplate The template to use for searching expressions\n * @param {string} searchValue The value of the user search\n *\n * @returns {Promise<any>} The response of the query execution\n */\n async fetchData(model: string, fixedParams: object, queryStatement: string = '', filters: string[], searchTemplate?: string, searchValue?: string): Promise<any> {\n const query = this._context.model(model).asQueryable();\n\n if (!fixedParams || typeof fixedParams !== 'object') {\n fixedParams = {};\n }\n\n let filterExpressions = [];\n\n if (fixedParams) {\n for (let param of Object.keys(fixedParams)) {\n filterExpressions.push(`${param} eq ${fixedParams[param]}`);\n }\n }\n\n if (filters && Array.isArray(filters)) {\n filterExpressions = [\n ...filterExpressions,\n ...filters\n ]\n }\n\n if (searchTemplate && searchValue) {\n let evaluatedSearch;\n if (/^\"(.*?)\"$/.test(searchValue)) { // validate search text in double quotes\n evaluatedSearch = this._template.transform(searchTemplate, {\n ...fixedParams,\n text: searchValue.replace(/^\"|\"$/g, '')\n });\n } else {\n // try to split words\n const words = searchValue.split(' ');\n // join words to a single filter\n evaluatedSearch = words.map(word => {\n return this._template.transform(searchTemplate, {\n ...fixedParams,\n text: word\n });\n }).join(' and ');\n\n }\n filterExpressions.push(evaluatedSearch);\n }\n\n query.setParam('$filter', filterExpressions.join('and'));\n return query.expand(queryStatement).take(-1).getItems();\n }\n\n /**\n *\n * Formats the received data to use flat keys\n *\n * @param config The applied configuration\n * @param data The raw data\n *\n * @returns {Array<any>} The flat-key object list\n *\n */\n formatData(config, data) {\n try {\n return data.map((entry) => {\n if(entry.subitems && Array.isArray(entry.subitems)){\n entry.subitems = this.formatData(config, entry.subitems);\n }\n let entryObject = {} as any;\n for (let i = 0; i < config.columns.length; i++) {\n const keys = config.columns[i].name.split('/');\n let helperObject = entry[keys[0]];\n\n if (helperObject && keys.length > 1) {\n for (let i = 1; i < keys.length; i++) {\n if (helperObject === undefined || helperObject === null) {\n break;\n } else {\n helperObject = helperObject[keys[i]] !== undefined && helperObject[keys[i]] !== null\n ? helperObject[keys[i]]\n : undefined;\n }\n }\n }\n\n entryObject[config.columns[i].name] = helperObject;\n }\n\n if (entry.subitems) {\n entryObject.subitems = entry.subitems;\n }\n\n return entryObject;\n });\n } catch (err) {\n console.error(err);\n }\n }\n}\n","import { Component, Input, OnInit, Output, EventEmitter, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\nimport { AdvancedAggregatorService } from '../../services/advanced-aggregator/advanced-aggregator.service';\nimport { AdvancedAggregatorConfig, AdvancedAggregatorFilters } from '../../advanced-aggregator';\nimport { LoadingService } from '@universis/common';\n\n/**\n *\n * @class AdvancedAggregatorComponent\n * @classdesc An advanced list with the capability of aggregate data based on configurable filters\n *\n */\n\n@Component({\n selector: 'app-advanced-aggregator',\n templateUrl: './advanced-aggregator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AdvancedAggregatorComponent implements OnInit, OnDestroy {\n\n private _config: AdvancedAggregatorConfig;\n private _aggregators;\n private _postProcessors;\n\n public body;\n public groups = [];\n\n @Input('config')\n public set config(value: AdvancedAggregatorConfig) {\n this._config = value;\n }\n\n @Input('aggregators')\n public set aggregators(value) {\n this._aggregators = value;\n }\n\n @Input('postProcessors')\n public set postProcessors(value) {\n this._postProcessors = value;\n }\n\n @Input('params') params;\n @Input('selectedGroups') selectedGroups$;\n @Input('filters') filters$;\n @Input('searchExpression') searchExpression: string;\n\n @Output() eventHandler = new EventEmitter();\n\n constructor(\n private _changeDetector: ChangeDetectorRef,\n private _advancedAggregatorService: AdvancedAggregatorService,\n private _loadingService: LoadingService\n ) { }\n\n public get config() {\n return this._config;\n }\n\n public get aggregators() {\n return this._aggregators;\n }\n\n public get postProcessors() {\n return this._postProcessors;\n }\n\n async ngOnInit() {\n this.selectedGroups$.subscribe((data) => {\n this.groups = data;\n this._changeDetector.markForCheck();\n });\n\n this.filters$.subscribe(async (filters: AdvancedAggregatorFilters) => {\n try {\n await this.fetch(filters);\n } catch (err) {\n console.error(err);\n }\n });\n }\n\n async ngOnDestroy() {\n this.selectedGroups$.unsubscribe();\n this.filters$.unsubscribe();\n }\n\n /**\n *\n * Retrieves the data\n *\n */\n async fetch(filters: AdvancedAggregatorFilters) {\n try {\n this._loadingService.showLoading();\n let data = await this._advancedAggregatorService.fetchData(this.config.model,\n this.params,\n this.config.query,\n filters.filters,\n this.searchExpression,\n filters.text\n );\n\n if (this.postProcessors && Object.keys(this.postProcessors).length > 0 && this.config.postProcessors && this.config.postProcessors.length > 0) {\n for (let i = 0; i < this.config.postProcessors.length; i++) {\n data = await this.postProcessors[this.config.postProcessors[i].name](data);\n }\n }\n\n this.body = this._advancedAggregatorService.formatData(this.config, data);\n this._changeDetector.markForCheck();\n } catch (err) {\n console.error(err);\n } finally {\n this._loadingService.hideLoading();\n }\n }\n\n /**\n *\n * Triggers the event handler event\n *\n * @param {*} event The event data\n *\n */\n onActionEvent(event) {\n this.eventHandler.emit(event);\n }\n}\n","import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';\nimport { TemplatePipe} from '@universis/common';\n\nenum Lengths {\n XL= 'xl',\n LG= 'lg',\n MD= 'md',\n SM= 'sm',\n XS= 'xs'\n}\n\n\n@Component({\n selector: 'app-advanced-aggregator-list',\n templateUrl: './advanced-aggregator-list.component.html'\n})\nexport class AdvancedAggregatorListComponent implements OnInit {\n\n /**\n * @property {AdvancedAggregatorConfig} config The configuration object to use\n */\n @Input() config: any;\n\n /**\n * @property {Array<Array<any>>} body The list of data entries to show as the list body\n */\n @Input() body;\n\n @Output() clickEvent = new EventEmitter();\n\n constructor(private _template: TemplatePipe) { }\n\n ngOnInit() {\n this.config.columns.forEach(x => {\n x.length = Object.values(Lengths).includes(x.length) ? this._template.transform(`sis--list-group-item_${x.length}_column`, x ) :\n !x.length ? 'sis--list-group-item_sm_column': x.length ;\n })\n }\n\n /**\n *\n * Triggers the output event emitter\n *\n * @param type The type of the event as it's declared in the configuration\n * @param item The value of the current item\n * }\n */\n callCallback(type: string, data: any): void {\n this.clickEvent.emit({\n type,\n data\n });\n }\n}\n","import {Component, Input, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {RouterModalOkCancel} from '@universis/common/routing';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {Observable, Subscription} from 'rxjs';\nimport {TranslateService} from '@ngx-translate/core';\nimport {AngularDataContext} from '@themost/angular';\nimport {AdvancedTableModalBaseComponent} from '../advanced-table-modal/advanced-table-modal-base.component';\nimport {AdvancedFormComponent} from '@universis/forms';\nimport {AppEventService, ErrorService, LoadingService, ModalService, ToastService} from '@universis/common';\n\n@Component({\n selector: 'app-add-items',\n templateUrl: './add-items.component.html'\n})\nexport class AddItemsComponent extends RouterModalOkCancel implements OnInit, OnDestroy {\n\n public loading = false;\n public lastError;\n @Input() execute: Observable<any>;\n @Input() items: Array<any> = [];\n @Input() target: any;\n // @Input() selected: any;\n @Input() tableConfiguration: any;\n @Input() formName: any;\n @Input() messages: Array<any> = [];\n @ViewChild('formComponent') formComponent: AdvancedFormComponent;\n @ViewChild('selectComponent') selectComponent: AdvancedTableModalBaseComponent;\n private formLoadSubscription: Subscription;\n private formChangeSubscription: Subscription;\n private selectedSubscription: Subscription;\n\n constructor(router: Router,\n activatedRoute: ActivatedRoute,\n private _errorService: ErrorService,\n private _modalService: ModalService,\n private _appEvent: AppEventService,\n private _toastService: ToastService,\n private _loadingService: LoadingService,\n private _translateService: TranslateService,\n private _context: AngularDataContext) {\n super(router, activatedRoute);\n // set modal size\n this.modalClass = 'modal-lg';\n this.okButtonDisabled = true;\n }\n\n ngOnInit() {\n this.selectedSubscription = this.selectComponent.advancedTable.selectedItems.subscribe((items) => {\n if (this.formName == null) {\n this.okButtonDisabled = items.length === 0;\n }\n });\n\n if (this.formName != null) {\n this.formChangeSubscription = this.formComponent.form.change.subscribe((event:any) => {\n if (Object.prototype.hasOwnProperty.call(event, 'isValid')) {\n // enable or disable button based on form status\n this.okButtonDisabled = (!event.isValid);\n }\n });\n }\n\n if (this.target) {\n const target = this.target;\n }\n }\n\n cancel(): Promise<any> {\n this.clearMessages();\n if (this.loading) {\n return;\n }\n // close\n if (this._modalService.modalRef) {\n return this._modalService.modalRef.hide();\n }\n }\n\n ngOnDestroy(): void {\n if (this.formLoadSubscription) {\n this.formLoadSubscription.unsubscribe();\n }\n if (this.formChangeSubscription) {\n this.formChangeSubscription.unsubscribe();\n }\n if (this.selectedSubscription) {\n this.selectedSubscription.unsubscribe();\n }\n }\n\n // get form data\n private executeSubscription: Subscription;\n public get formData(): any {\n if (this.formComponent === null) {\n return null;\n }\n return this.formComponent.form.formio.data;\n }\n\n ok(): Promise<any> {\n try {\n this.clearMessages();\n return new Promise((resolve, reject) => {\n this.loading = false;\n this.lastError = null;\n // set courses\n this.items = this.selectComponent.advancedTable.selected\n // execute add\n this.executeSubscription = this.execute.subscribe((result) => {\n this.loading = false;\n if(this.executeSubscription){\n this.executeSubscription.unsubscribe();\n }\n // close modal\n if (this._modalService.modalRef) {\n this._modalService.modalRef.hide();\n }\n return resolve(null);\n }, (err) => {\n this.loading = false;\n // ensure that loading is hidden\n this._loadingService.hideLoading();\n // set last error\n this.lastError = err;\n return resolve(null);\n });\n });\n } catch (err) {\n this.loading = false;\n this._loadingService.hideLoading();\n this.lastError = err;\n }\n }\n\n onChange($event: any) {}\n\n clearMessages() {\n this.messages = [];\n }\n\n onFilterChange(event: { name: string, emit: boolean }) {}\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n/**\n * \n * @class AdvancedAggregatorPipe\n * @classdesc Given a list of items runs a user defined function against that list\n * \n */\n\n@Pipe({\n name: 'callAggregator'\n})\nexport class AdvancedAggregatorPipe implements PipeTransform {\n\n /**\n * \n * @override\n * \n * @param items The list of items to run the aggregator against\n * @param functionPool The functions that are available from the list caller\n * @param functionName The name of the function to be called\n * \n * @returns {string} The value to show at the UI\n * \n */\n transform(items: any[], functionPool: any, functionName: string): any {\n if (Array.isArray(items) && functionName && functionName in functionPool) {\n return functionPool[functionName](items);\n } else {\n return '-';\n }\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\n\n/**\n * \n * @class ParseTitlePipe\n * @classdesc Given a title of an aggregator list, translates and evaluates the parameter if any\n * \n */\n\n@Pipe({\n name: 'aggregatorListTitle'\n})\nexport class ParseTitlePipe implements PipeTransform {\n\n constructor(\n private _translateService: TranslateService\n ) {}\n\n /**\n * \n * @override\n * \n * @param {string} title The title of the list\n * @param {string} key The current list key that is being used\n * \n */\n transform(title: string, key: string): any {\n if (!title) {\n return '';\n } else {\n if (key === undefined || key === null || key === 'undefined' || key === 'null') {\n key = this._translateService.instant('Tables.NotDefined');\n }\n return title.split(' ')\n .map((part) => this._translateService.instant(part))\n .map((part) => part.replace('${param}', key))\n .join(' ');\n }\n }\n}\n","export const TABLES_EL = {\n \"Tables\": {\n \"Export\": \"Εξαγωγή\",\n \"More\": \"Περισσότερα\",\n \"Search\": \"Αναζήτηση\",\n \"SearchPlaceholder\": \"Αναζήτηση...\",\n \"GroupBy\": \"Ομαδοποίηση ανά\",\n \"NotDefined\": \"Μη προσδιορισμένο\",\n \"DataTable\": {\n \"paginate\": {\n \"first\": \"Πρώτη σελίδα\",\n \"last\": \"Τελεταία σελίδα\",\n \"next\": \"Επόμενη\",\n \"previous\": \"Προηγούμενη\"\n },\n \"info\": \"Εμφάνιση _START_ έως _END_ από _TOTAL_ εγγραφές\",\n \"infoEmpty\": \"Δεν βρέθηκαν εγγραφές\",\n \"loading\": \"Εμφάνιση δεδομένων...\",\n \"processing\": \"Παραλαβή δεδομένων...\",\n \"emptyTable\": \"Δεν βρέθηκαν αποτελέσματα.\"\n },\n \"ColumnDisplay\": \"Επιλογή Εμφάνισης στηλών\",\n \"ColumnDisplayInfo\": \"Επιλέξτε τις στήλες που θέλετε να εμφανίζονται.\",\n \"Save\": \"Εφαρμογή\",\n \"Apply\": \"Εφαρμογή\",\n \"Cancel\": \"Ακύρωση\",\n \"RecordsPerPage\": \"Εγγραφές ανά σελίδα\",\n \"PageInfo\": \"{{start}}-{{end}} από {{recordsTotal}}\",\n \"SearchListPlaceholder\": \"Αναζητήστε στη λίστα...\",\n \"Filters\": \"Φίλτρα\",\n \"All\": \"Όλα\",\n \"AddItem\": \"Προσθήκη στοιχείου\",\n \"EmptyTableTitle\": \"Δεν βρέθηκαν αποτελέσματα.\",\n \"EmptyTableMessage\": \"Προσπαθήστε να χρησιμοποιήσετε άλλες λέξεις κλειδιά.\",\n \"RemoveItem\": \"Διαγραφή στοιχείου\",\n \"Items\": \"στοιχεία\",\n \"Item\": \"στοιχείο\",\n \"AddItemMessage\": {\n \"title\": \"Προσθήκη στοιχείων\",\n \"one\": \"Ένα νέο στοιχείο προστέθηκε με επιτυχία.\",\n \"many\": \"{{value}} νέα στοιχεία προστέθηκαν με επιτυχία.\"\n },\n \"RemoveItemMessage\": {\n \"title\": \"Αφαίρεση στοιχείων\",\n \"one\": \"Ένα στοιχείο αφαιρέθηκε με επιτυχία.\",\n \"many\": \"{{value}} στοιχεία αφαιρέθηκαν με επιτυχία.\"\n },\n \"RemoveItemsTitle\": \"Διαγραφή στοιχείου\",\n \"RemoveItemsMessage\": \"Πρόκειται να διαγράψετε ένα ή περισσότερα στοιχεία. Θέλετε να προχωρήσετε?\",\n \"SelectAll\": \"Επιλογή όλων\",\n \"ClearSelection\": \"Αναίρεση επιλογής\",\n \"Actions\": {\n \"Label\": \"Επεξεργασία\",\n \"Start\": \"Έναρξη\",\n \"ActionMessage\": {\n \"None\": \"Δεν έχετε επιλέξει κανένα στοιχείο που να ακολουθεί τις προϋποθέσεις της ενέργειας.\",\n \"One\": \"Έχετε επιλέξει ένα στοιχείο που ακολουθεί τις προϋποθέσεις της ενέργειας. Πατήστε το πλήκτρο Έναρξη για να ξεκινήσει η διαδικασία.\",\n \"Many\": \"Έχετε επιλέξει {{length}} στοιχεία που ακολουθούν τις προϋποθέσεις της ενέργειας. Πατήστε το πλήκτρο Έναρξη για να ξεκινήσει η διαδικασία.\"\n },\n \"CompletedWithErrors\": {\n \"Title\": \"Η διαδικασία ολοκληρώθηκε με σφάλματα.\",\n \"Description\": {\n \"One\": \"Ένα στοιχείο δεν ανανεώθηκε λόγω ενός σφάλματος που συνέβη κατά την εκτέλεση της διαδικασίας.\",\n \"Many\": \"{{errors}} στοιχεία δεν ανανεώθηκαν λόγω ενός σφάλματος που συνέβη κατά την εκτέλεση της διαδικασίας.\"\n }\n },\n \"CompletedWithSuccess\": {\n \"Title\": \"Η διαδικασία ολοκληρώθηκε με επιτυχία.\"\n }\n },\n \"SelectColumns\": \"Επιλογή στηλών\",\n \"MoveUp\": \"Επάνω\",\n \"MoveDown\": \"Κάτω\",\n \"AddColumn\": \"Επιλογή\",\n \"RemoveColumn\": \"Αφαίρεση\",\n \"SelectColumnHelp\": \"Επιλέξτε μία ή περισσότερες από τις διαθέσιμες στήλες και πατήστε το πλήκτρο 'Επιλογή' για να τις εμφανίσετε. Χρησιμοποιήστε το πλήκτρο 'Αφαίρεση' για να αφαιρέσετε τις επιλεγμένες στήλες.\",\n \"MoveColumnHelp\": \"Χρησιμοποιήστε τα πλήκτρα 'Επάνω' και 'Κάτω' για να αλλάξετε την σειρά εμφάνισης των στηλών του πίνακα.\",\n \"UnknownColumn\": \"Άγνωστο\",\n \"SelectColumn\": \"Επιλογή\",\n \"ActionLinkColumn\": \"Ενέργειες\"\n },\n \"TrueFalse\": {\n \"long\": {\n \"Yes\": \"Ναι\",\n \"No\": \"Όχι\"\n }\n },\n \"Settings\": {\n \"OperationCompleted\": \"Η διαδικασία ολοκληρώθηκε με επιτυχία.\"\n },\n \"AdvancedSearch\": {\n \"Choose\": \"<Επιλέξτε μια αναζήτηση>\",\n \"ChooseDate\": \"Επιλογή ημερομηνίας\",\n \"SavedSearches\": \"Αποθηκευμένες αναζητήσεις\",\n \"ToggleDropdown\" : \"Εμφάνιση λίστας\",\n \"SaveCurrentSearch\": \"Αποθήκευση αναζήτησης\",\n \"SaveAs\" : \"Αποθήκευση ως\",\n \"Save\" : \"Αποθήκευση\",\n \"Delete\" : \"Διαγραφή\",\n \"More\": \"Περισσότερα\",\n \"Less\": \"Λιγότερα\",\n \"Modal\" : {\n \"Title\" : \"Αποθήκευση κριτηρίων αναζήτησης\",\n \"Help\" : \"Ορίστε έναν τίτλο για τα επιλεγμένα κριτήρια αναζήτησης. Αυτός ο τίτλος θα σας βοηθήσει να τα χρησιμοποιήσετε ξανά στο μέλλον.\",\n \"TitleOnUserError\" : \"Παρακαλώ εισάγετε έναν τίτλο\",\n \"TitleOnListAlreadyCreated\" : \"Το όνομα αυτό χρησιμοποιείται ήδη. Διαλέξτε ένα διαφορετικό.\",\n \"NoListDefined\" : \"Δεν έχει οριστεί το σημείο αποθήκευσης της λίστας\",\n \"EmptyCriteriaList\" : \"Δεν έχετε καθορίσει κανένα κριτήριο για αποθήκευση\",\n \"SaveNameLabel\" : \"Ονομασία λίστας\",\n \"SaveNamePlaceholder\" : \"Εισάγετε έναν τίτλο\",\n \"Accept\" : \"Αποθήκευση\",\n \"Decline\" : \"Απόρριψη\",\n \"Close\" : \"Κλείσιμο\"\n }\n },\n \"AddItems\" : {\n \"SelectItems\": \"Επιλέξτε στοιχεία\",\n }\n}\n","export const TABLES_EN = {\n \"Tables\": {\n \"Export\": \"Export\",\n \"More\": \"More\",\n \"Search\": \"Search\",\n \"SearchPlaceholder\": \"Search...\",\n \"GroupBy\": \"Group by\",\n \"NotDefined\": \"Not defined\",\n \"DataTable\": {\n \"paginate\": {\n \"first\": \"First\",\n \"last\": \"Last\",\n \"next\": \"Next\",\n \"previous\": \"Previous\"\n },\n \"info\": \"Showing _START_ to _END_ of _TOTAL_ entries\",\n \"infoEmpty\": \"Showing 0 to 0 of 0 entries\",\n \"processing\": \"Processing data...\",\n \"emptyTable\": \"There are no matching records.\"\n },\n \"ColumnDisplay\": \"Column Display\",\n \"ColumnDisplayInfo\": \"Επιλέξτε τις στήλες που θέλετε να εμφανίζονται.\",\n \"Save\": \"Save\",\n \"Apply\": \"Apply\",\n \"Cancel\": \"Cancel\",\n \"RecordsPerPage\": \"Items per page\",\n \"PageInfo\": \"{{start}}-{{end}} of {{recordsTotal}}\",\n \"SearchListPlaceHolder\": \"Search in list...\",\n \"Filters\": \"Filters\",\n \"All\": \"All\",\n \"AddItem\": \"Add item\",\n \"EmptyTableTitle\": \"There are no matching records.\",\n \"EmptyTableMessage\": \"Please try to use other keywords or search parameters.\",\n \"RemoveItem\": \"Remove item\",\n \"Items\": \"items\",\n \"Item\": \"item\",\n \"AddItemMessage\": {\n \"title\": \"Add item\",\n \"one\": \"A new item has been added successfully.\",\n \"many\": \"{{value}} new items have been added successfully.\"\n },\n \"RemoveItemMessage\": {\n \"title\": \"Remove items\",\n \"one\": \"An item has been successfully removed.\",\n \"many\": \"{{value}} items have been successfully removed.\"\n },\n \"RemoveItemsTitle\": \"Remove items\",\n \"RemoveItemsMessage\": \"You are going to remove one or more instructor courses. Do you want to proceed?\",\n \"SelectAll\": \"Select all\",\n \"ClearSelection\": \"Clear selection\",\n \"Actions\": {\n \"Label\": \"Edit\",\n \"Start\": \"Start\",\n \"ActionMessage\": {\n \"None\": \"There is no selected item that meets action requirements.\",\n \"One\": \"You have selected one item that meets action requirements.\",\n \"Many\": \"You have selected {{length}} items that meet action requirements.\"\n },\n \"CompletedWithErrors\": {\n \"Title\": \"The operation was completed with errors.\",\n \"Description\": {\n \"One\": \"One item has not been updated due to an error occurred while executing process.\",\n \"Many\": \"{{errors}} items have not been updated due to an error occurred while executing process.\"\n }\n },\n \"CompletedWithSuccess\": {\n \"Title\": \"The operation was completed successfully.\"\n }\n },\n \"SelectColumns\": \"Select columns\",\n \"MoveUp\": \"Move up\",\n \"MoveDown\": \"Move down\",\n \"AddColumn\": \"Add\",\n \"RemoveColumn\": \"Remove\",\n \"SelectColumnHelp\": \"Select one or more columns and press 'Add' button to include them in table. Use 'Remove' button to exclude one or more columns from view.\",\n \"MoveColumnHelp\": \"Use 'Move up' and 'Move down' buttons to change column order.\",\n \"UnknownColumn\": \"Unknown\",\n \"SelectColumn\": \"Select\",\n \"ActionLinkColumn\": \"Actions\"\n },\n \"TrueFalse\": {\n \"long\": {\n \"Yes\": \"Yes\",\n \"No\": \"No\"\n }\n },\n \"Settings\": {\n \"OperationCompleted\": \"The operation was completed successfully.\"\n },\n \"AdvancedSearch\": {\n \"Choose\": \"<Select a saved search>\",\n \"ChooseDate\": \"Choose date\",\n \"SavedSearches\": \"Saved searches\",\n \"ToggleDropdown\" : \"Toggle Dropdown\",\n \"SaveCurrentSearch\": \"Save search\",\n \"SaveAs\" : \"Save as...\",\n \"Save\" : \"Save\",\n \"Delete\" : \"Remove\",\n \"More\": \"More\",\n \"Less\": \"Less\",\n \"Modal\" : {\n \"Title\" : \"Save current search criteria\",\n \"Help\" : \"Please add a title for the given search criteria. This title will help you to use those criteria again in the future.\",\n \"TitleOnUserError\" : \"Please use a valid name for your list\",\n \"TitleOnListAlreadyCreated\" : \"Name already in use. Please choose a different one\",\n \"NoListDefined\" : \"Cannot define user storage key.\",\n \"EmptyCriteriaList\" : \"Please define search criteria before save.\",\n \"SaveNameLabel\" : \"List name\",\n \"SaveNamePlaceholder\" : \"Type a title here...\",\n \"Accept\" : \"Save\",\n \"Decline\" : \"Decline\",\n \"Close\" : \"Close\"\n }\n },\n \"AddItems\" : {\n \"SelectItems\": \"Select items\",\n }\n}\n","import { Action } from '@ngrx/store';\n\nexport enum TableActionTypes {\n LoadFilter = '[Table] Load Filter',\n AppendFilter = '[Table] Append Filter',\n AppendState = '[Table] Append State'\n}\n\nexport class LoadFilter implements Action {\n readonly type = TableActionTypes.LoadFilter;\n constructor(public readonly id: string) {}\n}\n\nexport class AppendFilter implements Action {\n readonly type = TableActionTypes.AppendFilter;\n constructor(public readonly id: string, public readonly filter: any) {}\n}\n\nexport class AppendState implements Action {\n readonly type = TableActionTypes.AppendState;\n constructor(public readonly id: string, public readonly data: any) {}\n}\n\nexport type TableActions = LoadFilter | AppendFilter | AppendState;\n","import {\n ActionReducerMap,\n createFeatureSelector,\n createSelector,\n} from '@ngrx/store';\nimport { cloneDeep } from 'lodash';\nimport { TableActions, TableActionTypes } from '../actions/table.actions';\n\nexport interface TableState {\n filter?: any;\n order?: any;\n table?: any;\n}\n\nexport const initialState = {\n};\n\nexport const tableInitialState: TableState = {\n filter: {},\n order: []\n}\n\nexport function tableReducer(state = initialState, action: TableActions): { [id: string]: TableState; } {\n switch (action.type) {\n\n case TableActionTypes.LoadFilter:\n return state[action.id];\n case TableActionTypes.AppendFilter:\n state[action.id] = {\n ...state[action.id],\n filter: cloneDeep(action.filter)\n };\n return state;\n \n case TableActionTypes.AppendState:\n state[action.id] = {\n ...state[action.id],\n table: action.data\n };\n return state;\n default:\n return state;\n }\n}\n\nexport interface NgxTablesState {\n tables: {\n [id: string]: TableState;\n };\n}\n\nexport const tableReducers: ActionReducerMap<NgxTablesState> = {\n tables: tableReducer,\n};\n\nexport const featureName = 'tables';\n\nexport const getTablesState = createFeatureSelector(featureName);\n\nexport const selectTable = createSelector(\n getTablesState,\n (state: NgxTablesState, props: { id: string }) => {\n return state.tables[props.id];\n }\n);","import {\n Directive, Optional, Input, OnInit,\n} from '@angular/core';\nimport { select, Store } from '@ngrx/store';\nimport { NgxTablesState } from '../reducers';\nimport { AdvancedTableComponent } from '../components/advanced-table/advanced-table.component';\nimport * as fromTables from '../reducers';\nimport { first } from 'rxjs/operators';\nimport { AppendState } from '../actions/table.actions';\nimport { cloneDeep, values } from 'lodash';\n\n@Directive(\n {\n // tslint:disable-next-line: directive-selector\n selector: '[tableState]',\n },\n)\nexport class AdvancedTableState implements OnInit {\n\n @Input() tableState: string;\n\n constructor(private table: AdvancedTableComponent,\n @Optional() private store: Store<NgxTablesState>) {\n \n }\n ngOnInit(): void {\n if (this.store == null) {\n return;\n }\n this.table.stateSave = true;\n this.table.stateLoadCallback = (settings, callback) => {\n this.store.pipe(select(fromTables.selectTable, { id: this.tableState }), first()).subscribe((state: any) => {\n return callback(state && state.table);\n });\n }\n let firstDraw = true;\n this.table.draw.subscribe(() => {\n if (firstDraw === false) {\n return;\n }\n if (this.table.dataTable == null) {\n return;\n }\n firstDraw = false;\n const loadeStateSettings: {\n oSavedState?: {\n ColReorder?: number[];\n scroller: {\n topRow: number,\n baseScrollTop: number,\n baseRowTop: number\n }\n }\n } = this.table.dataTable.settings()[0];\n const scrollerSettings = loadeStateSettings.oSavedState &&\n loadeStateSettings.oSavedState.scroller;\n if (scrollerSettings && scrollerSettings.topRow) {\n const scroller = this.table.dataTable.scroller();\n scroller.scrollToRow(scrollerSettings.topRow, true);\n }\n });\n this.table.stateSaveCallback = (settings, data) => {\n this.store.dispatch(new AppendState(this.tableState, data));\n }\n }\n}","import {\n Directive, Optional, Input, OnInit, OnDestroy\n } from '@angular/core';\nimport { select, Store } from '@ngrx/store';\nimport { AppendFilter } from '../actions/table.actions';\nimport { AdvancedTableSearchComponent } from '../components/advanced-table/advanced-table-search.component';\nimport { NgxTablesState, selectTable } from '../reducers';\nimport { first } from 'rxjs/operators';\nimport { AdvancedTableState } from './advance-table-state.directive';\nimport { Subscription } from 'rxjs';\n\n export class AdvancedTableSearchComponentNotNull extends Error {\n constructor() {\n super('Advanced table search component cannot be empty at this context.');\n }\n }\n \n @Directive(\n {\n // tslint:disable-next-line: directive-selector\n selector: '[searchState]',\n },\n )\n export class AdvancedSearchState implements OnInit, OnDestroy {\n\n @Input() searchState: string;\n private filterChangeSubscription: Subscription;\n private tableInitSubscription: Subscription;\n \n constructor(protected search: AdvancedTableSearchComponent,\n @Optional() protected store: Store<NgxTablesState>) {\n }\n ngOnInit(): void {\n if (this.store == null) {\n return;\n }\n if (this.search == null) {\n throw new AdvancedTableSearchComponentNotNull();\n }\n if (this.search.table) {\n // set auto load to false\n this.search.table.autoLoad = false;\n // handle filtering\n this.filterChangeSubscription = this.search.filterChange.subscribe((filter) => {\n this.onSearchFilter(filter);\n });\n // apply table state\n this.applyTableState();\n // handle table init\n this.tableInitSubscription = this.search.table.init.subscribe(() => {\n return this.onTableInit();\n });\n }\n }\n\n protected applyTableState() {\n // handle table state (via directive)\n const tableState = new AdvancedTableState(this.search.table, this.store);\n tableState.tableState = this.searchState;\n tableState.ngOnInit();\n }\n\n public onTableInit() {\n this.store.pipe(select(selectTable, { id: this.searchState }), first()).subscribe((state) => {\n // use order\n if (state) {\n if (state.order && state.order.length) {\n this.search.table.dataTable.order(state.order);\n }\n // use text search\n if (state.filter && state.filter.q) {\n this.search.text = state.filter.q;\n this.search.collapsed = true;\n return this.search.table.search(this.search.text);\n }\n // use predefined search \n if (state.filter && state.filter.s) {\n this.search.selectedList = this.search.userSearchList.find((item: { name: string }) => {\n return item.name === state.filter.s;\n });\n return this.search.search();\n }\n if (state.filter) {\n if (Object.keys(state.filter).length) {\n // set collapsed to false (advanced search)\n this.search.collapsed = false;\n this.search.filter = state.filter;\n return this.search.search();\n }\n }\n // ensure empty filter at this moment\n // because search() function triggers a store dispatch\n this.search.filter = {};\n return this.search.search();\n }\n });\n }\n \n private onSearchFilter(filter: any) {\n this.store.dispatch(new AppendFilter(this.searchState, filter));\n }\n\n ngOnDestroy(): void {\n if (this.filterChangeSubscription) {\n this.filterChangeSubscription.unsubscribe();\n }\n if (this.tableInitSubscription) {\n this.tableInitSubscription.unsubscribe();\n }\n }\n}","import { Directive, OnDestroy, OnInit, Optional } from \"@angular/core\";\nimport { NavigationEnd, NavigationStart, Router } from \"@angular/router\";\nimport { Store } from \"@ngrx/store\";\nimport { Subscription } from \"rxjs\";\nimport { filter } from \"rxjs/operators\";\nimport { AdvancedTableSearchComponent } from \"../components/advanced-table/advanced-table-search.component\";\nimport { NgxTablesState } from \"../reducers\";\nimport { AdvancedSearchState } from \"./advance-search-state.directive\";\n\n@Directive({\n\t// tslint:disable-next-line: directive-selector\n\tselector: \"[routerSearchState]\",\n})\nexport class AdvancedSearchRouterState\n\textends AdvancedSearchState\n\timplements OnDestroy, OnInit\n{\n\tprivate _routerSubscription: Subscription;\n\tprivate _enteringState: boolean = true;\n\tprivate _applyState: boolean = false;\n\n\tconstructor(\n\t\tprotected search: AdvancedTableSearchComponent,\n\t\t@Optional() protected store: Store<NgxTablesState>,\n\t\tprivate readonly _router: Router\n\t) {\n\t\t// call super constructor\n\t\tsuper(search, store);\n\t\t// set search state dynamically according to route\n\t\tthis._routerSubscription = this._router.events\n\t\t\t.pipe(\n\t\t\t\tfilter(\n\t\t\t\t\t(event) =>\n\t\t\t\t\t\tevent instanceof NavigationStart || event instanceof NavigationEnd\n\t\t\t\t)\n\t\t\t)\n\t\t\t.subscribe((event: NavigationStart | NavigationEnd) => {\n\t\t\t\t// capture urls regarding tab changing while the component is active\n\t\t\t\tif (event instanceof NavigationStart && !this._enteringState) {\n\t\t\t\t\t// set search state\n\t\t\t\t\tthis.searchState = event.url;\n\t\t\t\t\t// toogle applyState\n\t\t\t\t\tthis._applyState = true;\n\t\t\t\t}\n\t\t\t\t// capture url of the first activation of the component (e.g. coming from another route)\n\t\t\t\tif (event instanceof NavigationEnd && this._enteringState) {\n\t\t\t\t\t// set search state\n\t\t\t\t\tthis.searchState = event.urlAfterRedirects;\n\t\t\t\t\t// toggle enteringState\n\t\t\t\t\tthis._enteringState = false;\n\t\t\t\t}\n\t\t\t\tif (this._applyState) {\n\t\t\t\t\t// apply new table state\n\t\t\t\t\tsuper.applyTableState();\n\t\t\t\t\tthis._applyState = false;\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tngOnDestroy(): void {\n\t\t// destroy own subscriptions\n\t\tif (this._routerSubscription) {\n\t\t\tthis._routerSubscription.unsubscribe();\n\t\t}\n\t\t// destroy parent subscriptions\n\t\treturn super.ngOnDestroy();\n\t}\n}\n","import {NgModule, OnInit, CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {AdvancedTableComponent, COLUMN_FORMATTERS} from './components/advanced-table/advanced-table.component';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {AdvancedTableSearchComponent} from './components/advanced-table/advanced-table-search.component';\nimport { DatePipe } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport {BtnExpDirective} from './directives/btnexp.directive';\nimport {AdvancedTableSettingsComponent} from './components/advanced-table/advanced-table-settings.component';\nimport {SharedModule, TemplatePipe} from '@universis/common';\nimport { AdvancedTableModalBaseComponent } from './components/advanced-table-modal/advanced-table-modal-base.component';\nimport {RouterModalModule} from '@universis/common/routing';\nimport { AdvancedSearchFormComponent } from './components/advanced-search-form/advanced-search-form.component';\nimport {AdvancedFormsModule} from '@universis/forms';\nimport {FormioModule} from 'angular-formio';\nimport { AdvancedListComponent } from './components/advanced-list/advanced-list.component';\nimport {RouterModule} from '@angular/router';\nimport {\n AdvancedSearchConfigurationResolver,\n AdvancedTableConfigurationResolver\n} from './components/advanced-table/advanced-table-resolvers';\nimport {AdvancedRowActionComponent} from './components/advanced-row-action/advanced-row-action.component';\nimport {FORMATTERS} from './components/advanced-table/advanced-table.formatters.interface';\n\nimport {TABLES_EL} from './i18n/tables.el';\nimport {TABLES_EN} from './i18n/tables.en';\nimport { TableSimpleHeaderComponent, SimpleHeaderToolsComponent } from './components/table-simple-header/table-simple-header.component';\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { ProgressbarModule } from 'ngx-bootstrap/progressbar';\nimport { AdvancedSelectComponent } from './components/advanced-select/advanced-select.component';\nimport { AdvancedSelectService } from './components/advanced-select/advanced-select.service';\nimport { AdvancedTableEditorDirective } from './directives/advanced-table-editor.directive';\nimport {AdvancedAggregatorComponent} from \"./components/advanced-aggregator/advanced-aggregator.component\";\nimport {AdvancedAggregatorListComponent} from \"./components/advanced-aggregator-list/advanced-aggregator-list.component\";\nimport {AdvancedAggregatorService} from './services/advanced-aggregator/advanced-aggregator.service';\nimport {AdvancedAggregatorPipe} from './pipes/advanced-aggregator.pipe';\nimport {GroupByPipe, NgPipesModule} from 'ngx-pipes';\nimport {ParseTitlePipe} from './pipes/advansed-aggregator-list-title-parse.pipe';\nimport {AddItemsComponent} from \"./components/add-items/add-items.component\";\nimport { AdvancedSearchState } from './directives/advance-search-state.directive';\nimport { AdvancedTableState } from './directives/advance-table-state.directive';\nimport { AdvancedSearchRouterState } from './directives/advanced-search-router-state.directive';\nimport { AdvancedTableSearchBaseComponent } from './components/advanced-table/advanced-table-search-base';\nimport { ColumnSelectorComponent } from './components/column-selector/column-selector.component';\nimport { ColumnSelectorService } from './components/column-selector/column-selector.service';\n\n@NgModule({\n imports: [\n CommonModule,\n SharedModule,\n TranslateModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n RouterModalModule,\n FormioModule,\n AdvancedFormsModule,\n SharedModule,\n ModalModule,\n ProgressbarModule,\n NgPipesModule\n ],\n providers: [DatePipe, TemplatePipe,\n {\n provide: COLUMN_FORMATTERS,\n useValue: FORMATTERS\n },\n\n AdvancedTableConfigurationResolver,\n AdvancedSearchConfigurationResolver,\n AdvancedSelectService,\n AdvancedAggregatorService,\n ColumnSelectorService,\n GroupByPipe\n ],\n declarations: [\n AdvancedTableComponent,\n AdvancedTableSearchBaseComponent,\n AdvancedTableSearchComponent,\n BtnExpDirective,\n AdvancedTableSettingsComponent,\n AdvancedTableModalBaseComponent,\n AdvancedSearchFormComponent,\n AdvancedListComponent,\n AdvancedRowActionComponent,\n TableSimpleHeaderComponent,\n SimpleHeaderToolsComponent,\n AdvancedSelectComponent,\n AdvancedTableEditorDirective,\n AdvancedAggregatorComponent,\n AdvancedAggregatorListComponent,\n AdvancedAggregatorPipe,\n ParseTitlePipe,\n AddItemsComponent,\n AdvancedSearchState,\n AdvancedTableState,\n AdvancedSearchRouterState,\n ColumnSelectorComponent\n ],\n exports: [\n AdvancedTableComponent,\n AdvancedTableSearchComponent,\n BtnExpDirective,\n AdvancedTableSettingsComponent,\n AdvancedSearchFormComponent,\n AdvancedListComponent,\n AdvancedRowActionComponent,\n TableSimpleHeaderComponent,\n SimpleHeaderToolsComponent,\n AdvancedSelectComponent,\n AdvancedTableEditorDirective,\n AdvancedAggregatorComponent,\n AdvancedAggregatorListComponent,\n AddItemsComponent,\n AdvancedSearchState,\n AdvancedTableState,\n AdvancedSearchRouterState,\n ColumnSelectorComponent\n ],\n entryComponents: [\n AdvancedTableModalBaseComponent,\n AdvancedTableSettingsComponent,\n AdvancedRowActionComponent,\n AdvancedSelectComponent,\n AddItemsComponent,\n ColumnSelectorComponent\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class TablesModule implements OnInit {\n constructor(private _translateService: TranslateService) {\n this.ngOnInit().catch(err => {\n console.error('An error occurred while loading tables module');\n console.error(err);\n });\n }\n\n async ngOnInit() {\n this._translateService.setTranslation('en', TABLES_EN, true);\n this._translateService.setTranslation('el', TABLES_EL, true);\n }\n\n}\n","/*\n * Public API Surface of tables\n */\nexport * from './lib/components/advanced-list/advanced-list.component';\nexport * from './lib/components/advanced-row-action/advanced-row-action.component';\nexport * from './lib/components/advanced-search-form/advanced-search-form.component';\n\nexport * from './lib/components/advanced-select/advanced-select.component';\nexport * from './lib/components/advanced-select/advanced-select.service';\n\nexport * from './lib/components/advanced-table/advanced-table.interfaces';\nexport * from './lib/components/advanced-table/advanced-table-resolvers';\nexport * from './lib/components/advanced-table/advanced-table.formatters';\nexport * from './lib/components/advanced-table/advanced-table.component';\nexport * from './lib/components/advanced-table/advanced-table-settings.component';\nexport * from './lib/components/advanced-table/advanced-table-search-base';\nexport * from './lib/components/advanced-table/advanced-table-search.component';\nexport * from './lib/components/advanced-table/advanced-table.formatters.interface';\nexport * from './lib/components/advanced-table/advanced-filter-value-provider.service';\n\nexport * from './lib/components/advanced-table-modal/advanced-table-modal-base.component';\nexport * from './lib/components/table-simple-header/table-simple-header.component';\n\nexport * from './lib/directives/advanced-table-editor.directive';\nexport * from './lib/directives/btnexp.directive';\nexport * from './lib/components/advanced-aggregator/advanced-aggregator.component';\nexport * from './lib/components/advanced-aggregator-list/advanced-aggregator-list.component';\nexport * from './lib/components/add-items/add-items.component';\nexport * from './lib/pipes/advanced-aggregator.pipe';\nexport * from './lib/pipes/advansed-aggregator-list-title-parse.pipe';\nexport * from './lib/services/advanced-aggregator/advanced-aggregator.service';\n\nexport * from './lib/advanced-aggregator';\nexport * from './lib/tables.module';\nexport * from './lib/tables.activated-table.service';\n\nexport * from './lib/components/column-selector/column-selector.service';\nexport * from './lib/components/column-selector/column-selector.component';\n\nexport * from './lib/reducers/index';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {AdvancedSearchState as ɵa} from './lib/directives/advance-search-state.directive';\nexport {AdvancedTableState as ɵc} from './lib/directives/advance-table-state.directive';\nexport {AdvancedSearchRouterState as ɵd} from './lib/directives/advanced-search-router-state.directive';\nexport {NgxTablesState as ɵb} from './lib/reducers';"],"names":["template","ActivatedRoute","Router","tslib_1.__extends","at","TranslateService","tslib_1.__values","DatePipe","ISO6391.getNativeName","TemplatePipe","Injectable","EventEmitter","FormControl","Component","ViewEncapsulation","BsModalRef","ChangeDetectorRef","Input","ViewChild","RouterModalOkCancel","ModalService","InjectionToken","BehaviorSubject","TranslatePipe","ClientDataQueryable","AngularDataContext","Inject","Injector","ElementRef","LoadingService","HttpClient","Output","ResponseError","DIALOG_BUTTONS","ErrorService","ToastService","UserActivityService","AppEventService","ServiceUrlPreProcessor","TranslatePreProcessor","NavigationStart","FormArray","BsModalService","UserStorageService","FormBuilder","TextUtils","Directive","ConfigurationService","HostListener","ChangeDetectionStrategy","Pipe","cloneDeep","createFeatureSelector","createSelector","store","select","fromTables.selectTable","first","Store","Optional","filter","NavigationEnd","NgModule","CommonModule","SharedModule","TranslateModule","FormsModule","ReactiveFormsModule","RouterModule","RouterModalModule","FormioModule","AdvancedFormsModule","ModalModule","ProgressbarModule","NgPipesModule","GroupByPipe","CUSTOM_ELEMENTS_SCHEMA"],"mappings":"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"}
|