imm-element-ui 2.0.0 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/README.md +24 -24
  2. package/esm2022/lib/crumb-action/crumb-action.component.mjs +3 -3
  3. package/esm2022/lib/form/form/form.component.mjs +3 -3
  4. package/esm2022/lib/form/form-field/context-menu.mjs +35 -35
  5. package/esm2022/lib/form/form-field/field-control.mjs +1 -1
  6. package/esm2022/lib/form/form-field/field-utils.mjs +1 -1
  7. package/esm2022/lib/form/form-field/form-field.mjs +135 -135
  8. package/esm2022/lib/form/form-field/form-type.mjs +85 -85
  9. package/esm2022/lib/form/form-field/index.mjs +1 -1
  10. package/esm2022/lib/form/form-field/label.directive.mjs +1 -1
  11. package/esm2022/lib/form/form-type/autocomplete.type.mjs +151 -151
  12. package/esm2022/lib/form/form-type/codemirror.type.mjs +4 -1
  13. package/esm2022/lib/form/form-type/datepicker.type.mjs +183 -183
  14. package/esm2022/lib/form/form-type/image.type.mjs +219 -219
  15. package/esm2022/lib/form/form-type/index.mjs +1 -1
  16. package/esm2022/lib/form/form-type/inputnumber.type.mjs +91 -91
  17. package/esm2022/lib/form/form-type/inputtext.type.mjs +19 -19
  18. package/esm2022/lib/form/form-type/multiselect.type.mjs +165 -163
  19. package/esm2022/lib/form/form-type/radio.type.mjs +77 -77
  20. package/esm2022/lib/form/form-type/rowselector.type.mjs +25 -25
  21. package/esm2022/lib/form/form-type/select.type.mjs +135 -133
  22. package/esm2022/lib/form/form-type/textarea.type.mjs +25 -25
  23. package/esm2022/lib/form/form-type/treeselect.type.mjs +115 -115
  24. package/esm2022/lib/form/form-type/upload.type.mjs +131 -131
  25. package/esm2022/lib/grid/actions/actions.component.mjs +1 -1
  26. package/esm2022/lib/grid/cell-edit/cell-edit-autoComplete.component.mjs +25 -25
  27. package/esm2022/lib/grid/cell-edit/cell-edit-datePicker.compoent.mjs +139 -139
  28. package/esm2022/lib/grid/cell-edit/cell-edit-inputDate.component.mjs +27 -27
  29. package/esm2022/lib/grid/cell-edit/cell-edit-inputNumber.component.mjs +75 -75
  30. package/esm2022/lib/grid/cell-edit/cell-edit-inputText.compoent.mjs +1 -1
  31. package/esm2022/lib/grid/cell-edit/cell-edit-select.component.mjs +125 -121
  32. package/esm2022/lib/grid/cell-edit/index.mjs +1 -1
  33. package/esm2022/lib/grid/cell-render/async-renderer.mjs +1 -1
  34. package/esm2022/lib/grid/cell-render/chip-render.mjs +21 -21
  35. package/esm2022/lib/grid/cell-render/img-renderer.mjs +25 -25
  36. package/esm2022/lib/grid/cell-render/link-render.mjs +13 -13
  37. package/esm2022/lib/grid/cell-render/row-span.mjs +5 -5
  38. package/esm2022/lib/grid/grid/grid.component.mjs +3 -3
  39. package/esm2022/lib/grid/grid-utils.mjs +1 -1
  40. package/esm2022/lib/grid/mock-data.mjs +1 -1
  41. package/esm2022/lib/grid/pager/pager.component.mjs +3 -3
  42. package/esm2022/lib/head/head.component.mjs +3 -3
  43. package/esm2022/lib/href-btn-list/href-btn-list.component.mjs +1 -1
  44. package/esm2022/lib/import/import.component.mjs +3 -3
  45. package/esm2022/lib/loading/loading.component.mjs +3 -3
  46. package/esm2022/lib/log/log.component.mjs +3 -3
  47. package/esm2022/lib/page-form/page-form.component.mjs +3 -3
  48. package/esm2022/lib/page-form/page-form.interface.mjs +1 -1
  49. package/esm2022/lib/page-grid-list/page-grid-list.component.mjs +3 -3
  50. package/esm2022/lib/row-selector/row-selector.component.mjs +3 -3
  51. package/esm2022/lib/search/mock-data.mjs +1 -1
  52. package/esm2022/lib/search/pop-date/pop-date.component.mjs +3 -3
  53. package/esm2022/lib/search/pop-list/pop-list.component.mjs +3 -3
  54. package/esm2022/lib/search/pop-panel/pop-panel.component.mjs +3 -3
  55. package/esm2022/lib/search/pop-select/pop-select.component.mjs +3 -3
  56. package/esm2022/lib/search/pop-self/pop-self.component.mjs +3 -3
  57. package/esm2022/lib/search/pop-sort/pop-sort.component.mjs +3 -3
  58. package/esm2022/lib/search/pop-tree/pop-tree.component.mjs +3 -3
  59. package/esm2022/lib/search/search/search.component.mjs +3 -3
  60. package/esm2022/lib/search/search-tip/search-tip.component.mjs +3 -3
  61. package/esm2022/lib/search/search-utils.mjs +1 -1
  62. package/esm2022/lib/search/text-panel/text-panel.component.mjs +3 -3
  63. package/esm2022/lib/service/i18n.service.mjs +1 -1
  64. package/esm2022/lib/service/loading.service.mjs +1 -1
  65. package/esm2022/lib/service/themeConfig.service.mjs +1 -1
  66. package/esm2022/lib/share/utils.mjs +11 -1
  67. package/esm2022/lib/steps/steps.component.mjs +1 -1
  68. package/esm2022/lib/theme-config/theme-config-panel.compoent.mjs +39 -39
  69. package/esm2022/lib/theme-config/theme-config.compoent.mjs +29 -29
  70. package/esm2022/public-api.mjs +1 -1
  71. package/fesm2022/imm-element-ui.mjs +3445 -3427
  72. package/fesm2022/imm-element-ui.mjs.map +1 -1
  73. package/lib/crumb-action/crumb-action.component.d.ts +1 -1
  74. package/lib/form/form-type/codemirror.type.d.ts +1 -1
  75. package/lib/form/form-type/multiselect.type.d.ts +1 -0
  76. package/lib/form/form-type/select.type.d.ts +1 -0
  77. package/lib/grid/cell-edit/cell-edit-select.component.d.ts +1 -0
  78. package/lib/grid/grid/grid.component.d.ts +1 -1
  79. package/lib/grid/grid-utils.d.ts +529 -2
  80. package/lib/service/themeConfig.service.d.ts +1 -1
  81. package/lib/share/utils.d.ts +2 -0
  82. package/package.json +1 -1
  83. package/src/lib/crumb-action/crumb-action.component.scss +60 -60
  84. package/src/lib/grid/grid/grid.component.scss +45 -45
  85. package/src/lib/grid/pager/pager.component.scss +3 -3
  86. package/src/lib/head/head.component.scss +3 -3
  87. package/src/lib/href-btn-list/href-btn-list.component.scss +51 -51
  88. package/src/lib/import/import.component.scss +10 -10
  89. package/src/lib/loading/loading.component.scss +31 -31
  90. package/src/lib/log/log.component.scss +26 -26
  91. package/src/lib/page-form/page-form.component.scss +31 -31
  92. package/src/lib/page-grid-list/page-grid-list.component.scss +12 -12
  93. package/src/lib/row-selector/row-selector.component.scss +1 -1
  94. package/src/lib/search/dynamic-search/dynamic-search.component.scss +70 -70
  95. package/src/lib/search/pop-date/pop-date.component.scss +67 -67
  96. package/src/lib/search/pop-list/pop-list.component.scss +23 -23
  97. package/src/lib/search/pop-panel/pop-panel.component.scss +32 -32
  98. package/src/lib/search/pop-select/pop-select.component.scss +39 -39
  99. package/src/lib/search/pop-self/pop-self.component.scss +80 -80
  100. package/src/lib/search/pop-sort/pop-sort.component.scss +49 -49
  101. package/src/lib/search/pop-tree/pop-tree.component.scss +37 -37
  102. package/src/lib/search/search/search.component.scss +70 -70
  103. package/src/lib/search/search-tip/search-tip.component.scss +50 -50
  104. package/src/lib/search/text-panel/text-panel.component.scss +24 -24
  105. package/src/lib/steps/steps.component.scss +97 -97
  106. package/src/lib/styles/styles.scss +232 -232
@@ -1 +1 @@
1
- {"version":3,"file":"imm-element-ui.mjs","sources":["../../../projects/imm-element-ui/src/lib/service/loading.service.ts","../../../projects/imm-element-ui/src/lib/service/i18n.service.ts","../../../projects/imm-element-ui/src/lib/am/am.component.ts","../../../projects/imm-element-ui/src/lib/form/form-field/field-control.ts","../../../projects/imm-element-ui/src/lib/service/action.service.ts","../../../projects/imm-element-ui/src/lib/form/form-field/label.directive.ts","../../../projects/imm-element-ui/src/lib/form/form-field/field-utils.ts","../../../projects/imm-element-ui/src/lib/form/form-field/context-menu.ts","../../../projects/imm-element-ui/src/lib/form/form-type/inputtext.type.ts","../../../projects/imm-element-ui/src/lib/form/form-type/inputnumber.type.ts","../../../projects/imm-element-ui/src/lib/form/form-type/select.type.ts","../../../projects/imm-element-ui/src/lib/form/form-type/treeselect.type.ts","../../../projects/imm-element-ui/src/lib/form/form-type/datepicker.type.ts","../../../projects/imm-element-ui/src/lib/form/form-type/autocomplete.type.ts","../../../projects/imm-element-ui/src/lib/form/form-type/multiselect.type.ts","../../../projects/imm-element-ui/src/lib/form/form-type/radio.type.ts","../../../projects/imm-element-ui/src/lib/form/form-type/textarea.type.ts","../../../projects/imm-element-ui/src/lib/form/form-type/upload.type.ts","../../../projects/imm-element-ui/src/lib/form/form-type/image.type.ts","../../../projects/imm-element-ui/src/lib/form/form-type/codemirror.type.ts","../../../projects/imm-element-ui/src/lib/service/themeConfig.service.ts","../../../projects/imm-element-ui/src/lib/share/utils.ts","../../../projects/imm-element-ui/src/lib/grid/grid-utils.ts","../../../projects/imm-element-ui/src/lib/grid/cell-edit/cell-edit-inputText.compoent.ts","../../../projects/imm-element-ui/src/lib/grid/cell-edit/cell-edit-inputNumber.component.ts","../../../projects/imm-element-ui/src/lib/grid/cell-edit/cell-edit-datePicker.compoent.ts","../../../projects/imm-element-ui/src/lib/grid/cell-edit/cell-edit-select.component.ts","../../../projects/imm-element-ui/src/lib/grid/cell-edit/cell-edit-autoComplete.component.ts","../../../projects/imm-element-ui/src/lib/grid/cell-edit/cell-edit-inputDate.component.ts","../../../projects/imm-element-ui/src/lib/grid/cell-render/link-render.ts","../../../projects/imm-element-ui/src/lib/grid/cell-render/async-renderer.ts","../../../projects/imm-element-ui/src/lib/grid/cell-render/chip-render.ts","../../../projects/imm-element-ui/src/lib/grid/cell-render/img-renderer.ts","../../../projects/imm-element-ui/src/lib/grid/cell-render/row-span.ts","../../../projects/imm-element-ui/src/lib/grid/mock-data.ts","../../../projects/imm-element-ui/src/lib/grid/grid/grid.component.ts","../../../projects/imm-element-ui/src/lib/grid/grid/grid.component.html","../../../projects/imm-element-ui/src/lib/search/pop-list/pop-list.component.ts","../../../projects/imm-element-ui/src/lib/search/pop-list/pop-list.component.html","../../../projects/imm-element-ui/src/lib/search/pop-select/pop-select.component.ts","../../../projects/imm-element-ui/src/lib/search/pop-select/pop-select.component.html","../../../projects/imm-element-ui/src/lib/search/pop-tree/pop-tree.component.ts","../../../projects/imm-element-ui/src/lib/search/pop-tree/pop-tree.component.html","../../../projects/imm-element-ui/src/lib/search/mock-data.ts","../../../projects/imm-element-ui/src/lib/search/search-utils.ts","../../../projects/imm-element-ui/src/lib/search/pop-date/pop-date.component.ts","../../../projects/imm-element-ui/src/lib/search/pop-date/pop-date.component.html","../../../projects/imm-element-ui/src/lib/search/pop-self/pop-self.component.ts","../../../projects/imm-element-ui/src/lib/search/pop-self/pop-self.component.html","../../../projects/imm-element-ui/src/lib/search/pop-sort/pop-sort.component.ts","../../../projects/imm-element-ui/src/lib/search/pop-sort/pop-sort.component.html","../../../projects/imm-element-ui/src/lib/search/pop-panel/pop-panel.component.ts","../../../projects/imm-element-ui/src/lib/search/pop-panel/pop-panel.component.html","../../../projects/imm-element-ui/src/lib/search/text-panel/text-panel.component.ts","../../../projects/imm-element-ui/src/lib/search/text-panel/text-panel.component.html","../../../projects/imm-element-ui/src/lib/search/search-tip/search-tip.component.ts","../../../projects/imm-element-ui/src/lib/search/search-tip/search-tip.component.html","../../../projects/imm-element-ui/src/lib/search/search/search.component.ts","../../../projects/imm-element-ui/src/lib/search/search/search.component.html","../../../projects/imm-element-ui/src/lib/row-selector/row-selector.component.ts","../../../projects/imm-element-ui/src/lib/row-selector/row-selector.component.html","../../../projects/imm-element-ui/src/lib/form/form-type/rowselector.type.ts","../../../projects/imm-element-ui/src/lib/form/form-field/form-type.ts","../../../projects/imm-element-ui/src/lib/form/form-field/form-field.ts","../../../projects/imm-element-ui/src/lib/form/form/form.component.ts","../../../projects/imm-element-ui/src/lib/form/form/form.component.html","../../../projects/imm-element-ui/src/lib/page-form/page-form.interface.ts","../../../projects/imm-element-ui/src/lib/crumb-action/crumb-action.component.ts","../../../projects/imm-element-ui/src/lib/crumb-action/crumb-action.component.html","../../../projects/imm-element-ui/src/lib/grid/pager/pager.component.ts","../../../projects/imm-element-ui/src/lib/grid/pager/pager.component.html","../../../projects/imm-element-ui/src/lib/grid/actions/actions.component.ts","../../../projects/imm-element-ui/src/lib/grid/actions/actions.component.html","../../../projects/imm-element-ui/src/lib/head/head.component.ts","../../../projects/imm-element-ui/src/lib/head/head.component.html","../../../projects/imm-element-ui/src/lib/import/import.component.ts","../../../projects/imm-element-ui/src/lib/import/import.component.html","../../../projects/imm-element-ui/src/lib/log/log.component.ts","../../../projects/imm-element-ui/src/lib/log/log.component.html","../../../projects/imm-element-ui/src/lib/service/userHistory.service.ts","../../../projects/imm-element-ui/src/lib/steps/steps.component.ts","../../../projects/imm-element-ui/src/lib/steps/steps.component.html","../../../projects/imm-element-ui/src/lib/href-btn-list/href-btn-list.component.ts","../../../projects/imm-element-ui/src/lib/href-btn-list/href-btn-list.component.html","../../../projects/imm-element-ui/src/lib/page-form/page-form.component.ts","../../../projects/imm-element-ui/src/lib/page-form/page-form.component.html","../../../projects/imm-element-ui/src/lib/page-grid-list/page-grid-list.component.ts","../../../projects/imm-element-ui/src/lib/page-grid-list/page-grid-list.component.html","../../../projects/imm-element-ui/src/lib/loading/loading.component.ts","../../../projects/imm-element-ui/src/lib/loading/loading.component.html","../../../projects/imm-element-ui/src/lib/theme-config/theme-config-panel.compoent.ts","../../../projects/imm-element-ui/src/lib/theme-config/theme-config.compoent.ts","../../../projects/imm-element-ui/src/public-api.ts","../../../projects/imm-element-ui/src/imm-element-ui.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\r\nimport { debounceTime, filter, pairwise, Subject } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class LoadingService {\r\n\tloading = signal<boolean>(false);\r\n\tloading$ = new Subject<boolean>();\r\n\tconstructor() {\r\n\t\tthis.loading$\r\n\t\t\t.pipe(\r\n\t\t\t\tpairwise(),\r\n\t\t\t\tfilter(([prev, curr]) => prev === true && curr === false),\r\n\t\t\t\tdebounceTime(300),\r\n\t\t\t)\r\n\t\t\t.subscribe((loading) => {\r\n\t\t\t\tthis.loading.set(loading[1]);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tthis.loading$\r\n\t\t\t.pipe(\r\n\t\t\t\tpairwise(),\r\n\t\t\t\tfilter(([prev, curr]) => prev === false && curr === true),\r\n\t\t\t)\r\n\t\t\t.subscribe((loading) => {\r\n\t\t\t\tthis.loading.set(loading[1]);\r\n\t\t\t});\r\n\t}\r\n\r\n\tsetLoading(loading: boolean): void {\r\n\t\tthis.loading$.next(loading);\r\n\t}\r\n\r\n\tgetLoading(): boolean {\r\n\t\treturn this.loading();\r\n\t}\r\n}\r\n","import { Injectable, InjectionToken } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { Platform } from '@angular/cdk/platform';\r\n// import { registerLocaleData } from '@angular/common';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { PrimeNG } from 'primeng/config';\r\n\r\nexport interface LangData {\r\n abbr: string;\r\n text: string;\r\n langKey:string\r\n} \r\nexport const LANGS: { [key: string]: LangData } = {\r\n 'zh-CN': {\r\n text: '简体中文',\r\n langKey: 'zh-CN',\r\n abbr: '🇨🇳',\r\n },\r\n 'en-US': {\r\n text: 'English',\r\n langKey: 'en-US',\r\n abbr: '🇬🇧',\r\n },\r\n 'th-TH': {\r\n text: 'แบบไทย',\r\n langKey: 'th-TH',\r\n abbr: '🇹🇭',\r\n },\r\n}\r\nexport const I18N_Token = InjectionToken<I18NServiceInterface>\r\nexport interface I18NServiceInterface {\r\n [key: string]: any;\r\n /**\r\n * Call `use` to trigger change notification\r\n *\r\n * 调用 `use` 触发变更通知\r\n */\r\n readonly change: Observable<string>;\r\n /**\r\n * Get the default language\r\n *\r\n * 获取默认语言\r\n */\r\n readonly defaultLang: string;\r\n /**\r\n * Get current language\r\n *\r\n * 获取当前语言\r\n */\r\n readonly currentLang: string;\r\n /**\r\n * Change language\r\n *\r\n * 变更语言\r\n * @param lang 语言代码\r\n * @param emit 是否触发 `change`,默认:true\r\n */\r\n use(lang: string, emit?: boolean): void;\r\n /**\r\n * Return to the current language list\r\n *\r\n * 返回当前语言列表\r\n */\r\n getLangs(): any[];\r\n /**\r\n * 翻译\r\n * - `params` 模板所需要的参数对象\r\n * - `isSafe` 是否返回安全字符,自动调用 `bypassSecurityTrustHtml`\r\n */\r\n fanyi(key: string, params?: {\r\n [key: string]: any;\r\n }, isSafe?: boolean): string;\r\n}\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class I18nService {\r\n default :string = 'zh-CN'\r\n change$ = new BehaviorSubject<string | null>(null);\r\n _langs = Object.keys(LANGS).map((code) => {\r\n const item = LANGS[code];\r\n return { code, text: item.text, abbr: item.abbr };\r\n });\r\n\r\n constructor(\r\n public translate: TranslateService,\r\n public platform: Platform,\r\n public config: PrimeNG\r\n ){\r\n const lans = this._langs.map((item) => item.code);\r\n translate.addLangs(lans);\r\n }\r\n\r\n getDefaultLang(): string {\r\n if (!this.platform.isBrowser) {\r\n return 'zh-CN';\r\n }\r\n return (navigator.languages ? navigator.languages[0] : null) || navigator.language;\r\n }\r\n use(lang: string): void {\r\n lang = lang || this.translate.getDefaultLang();\r\n this.translate.use(lang).subscribe(() => this.change$.next(lang));\r\n this.translate.get('primeng').subscribe(res => this.config.setTranslation(res));\r\n }\r\n get change(): Observable<string> {\r\n return this.change$.asObservable().pipe(filter((w) => w != null)) as Observable<string>;\r\n }\r\n\r\n /** 获取语言列表 */\r\n getLangs(): Array<{ code: string; text: string; abbr: string }> {\r\n return this._langs;\r\n }\r\n /** 翻译 */\r\n fanyi(key: string, interpolateParams?: {}): any {\r\n return this.translate.instant(key, interpolateParams);\r\n }\r\n /** 默认语言 */\r\n get defaultLang(): string {\r\n return this.default;\r\n }\r\n /** 当前语言 */\r\n get currentLang(): string {\r\n return this.translate.currentLang || this.translate.getDefaultLang() || this.default;\r\n }\r\n}","import { Component, effect, inject, signal } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { distinctUntilChanged, finalize, map } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\nimport * as FileSaver from 'file-saver';\r\nimport { FormOptions } from '../form/form/form.component';\r\nimport { SearchOptions } from '../search/search/search.component';\r\nimport { ConfirmationService, MessageService } from 'primeng/api';\r\nimport { Toast } from 'primeng/toast';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { LoadingService } from '../service/loading.service';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\nimport { I18nService } from '../service/i18n.service';\r\nexport interface Param {\r\n\tid?: number;\r\n}\r\n\r\nexport interface TraceMessage {\r\n\tid?: number;\r\n\tpid?: number; // 表中id\r\n\tfunc?: string;\r\n\toperator?: string;\r\n\tcontent?: string; // 主表变更所有字段拼接一块\r\n\tsubContent?: string; // 子表变更拼接一起\r\n\tcreatedAt?: string;\r\n}\r\nexport interface ImportExcel {\r\n\tmodelName?: string;\r\n\torgId?: number;\r\n\torgName?: string;\r\n\torgIdFeild?: string;\r\n\torgNameFeild?: string;\r\n}\r\n\r\nexport interface Upsert {\r\n\tmodelName?: string;\r\n\taddData?: Record<string, any>;\r\n\tupdData?: Record<string, any>;\r\n\tsubsert?: SubUpsert[];\r\n\tlogModel?: string;\r\n\tlog?: TraceMessage;\r\n}\r\n\r\nexport interface SubUpsert {\r\n\tsubModelName?: string;\r\n\tfk?: string;\r\n\tsubData?: Record<string, any>[];\r\n\tmaptmp?: Map<number, any>;\r\n\tlogtmp?: Map<string, any>;\r\n}\r\nexport interface Deal {\r\n\tmodelName?: string;\r\n\tdata?: any;\r\n}\r\n// 更新特定字段\r\nexport interface Write {\r\n\tmodelName?: string;\r\n\tdata?: Record<string, any>;\r\n\tlogModel?: string;\r\n\tlog?: TraceMessage;\r\n\ttransaction?: boolean;\r\n}\r\n// 删除接口声明\r\nexport interface Remove {\r\n\tmodelName?: string;\r\n\tids?: number[];\r\n\tdata?: any;\r\n\tlogModel?: string;\r\n\tlog?: TraceMessage;\r\n\ttransaction?: boolean;\r\n}\r\n// 获取单条数据详情\r\nexport interface Get {\r\n\tmodelName?: string;\r\n\tuserCode?: string;\r\n\torgField?: string;\r\n\tid?: number;\r\n\tpreloads?: string[]; // 联表查询表名称,需对应后端struct\r\n\tfiterPreloads?: Preload[]; // 只能加一层 类似 'module =' module\r\n\tgetLog?: boolean; //获取日志\r\n\tdata?: any; //后端返回的response\r\n\tcolumnFilters?: ColumnFilter[]; //过滤的列\r\n\tforeignKey?: string; //直接插入子表需要传递外键字段以及外键值\r\n\t[propName: string]: any;\r\n}\r\nexport interface Preload {\r\n\tfeildName?: string;\r\n\tfiters?: ColumnFilter[];\r\n\tsorts?: Sort[];\r\n}\r\nexport interface ColumnFilter {\r\n\tcolumnField?: string;\r\n\ttype?: string;\r\n\tfiter?: any;\r\n\tfrom?: string | number;\r\n\tto?: string | number;\r\n}\r\n\r\nexport interface Sort {\r\n\tfield?: string;\r\n\tisAsc?: boolean;\r\n}\r\n\r\nexport interface Search {\r\n\tmodelName?: string;\r\n\tuserCode?: string;\r\n\torgField?: string;\r\n\tcount?: boolean; //是否返回totalNum\r\n\tpreloads?: string[];\r\n\tfiterPreloads?: Preload[];\r\n\tmodel?: any;\r\n\tdata?: any;\r\n\tcolumnFilters?: ColumnFilter[]; //过滤的列\r\n\tsorts?: Sort[];\r\n\tgroups?: string[];\r\n\tread?: string[]; //read 指定查询特定字段\r\n\tfuncs?: Record<string, string>; //透视表后期要用\r\n\toffset?: number;\r\n\tlimit?: number;\r\n\ttotalNum?: number;\r\n}\r\ninterface DealExport extends Search{\r\n\tfileName?:string\r\n}\r\nexport interface TokenInfo {\r\n\ttoken?: string;\r\n\texpired?: number;\r\n}\r\nexport interface amWeb {\r\n\tid?: number;\r\n\tcode?: string;\r\n\ttype?: string;\r\n\tname?: string;\r\n\tappId?: number;\r\n\tcontent?: string;\r\n\tcreatedAt?: string;\r\n\tupdatedAt?: string;\r\n}\r\nexport interface Rfd {\r\n\tmodelName?: string;\r\n\tlabelField?: string;\r\n\tvalueField?: string;\r\n\twhereField?: string;\r\n\ttype?: string;\r\n\tfiter?: any;\r\n\tdata?: any;\r\n}\r\nconst apiPath = '';\r\n@Component({\r\n\tselector: 'app-am',\r\n\tstandalone: true,\r\n\timports: [],\r\n\ttemplate: '',\r\n\tproviders: [MessageService, ConfirmationService],\r\n})\r\nexport class AmComponent {\r\n\t//是否提交日志\r\n\tisLog: boolean = false;\r\n\t//主数据id\r\n\tid: number = 0;\r\n\t//主表模型\r\n\tmodelName: string = '';\r\n\t//ID参数\r\n\tparam: Param = {};\r\n\tfid: string = '';\r\n\t//导入\r\n\timportPrm: ImportExcel = {};\r\n\t//搜素\r\n\tsearchOptions: SearchOptions = {};\r\n\t//form\r\n\tformOptions: FormOptions = {};\r\n\t//创建或者更新\r\n\tupsertPrm: Upsert = { updData: {}, addData: {}, subsert: [], log: {} };\r\n\t//处理\r\n\tdealPrm: Deal = {};\r\n\t//map更新\r\n\twritePrm: Write = {};\r\n\t//删除\r\n\tremovePrm: Remove = {};\r\n\t//获取一条数据\r\n\tgetPrm: Get = { data: {} };\r\n\t//查询条件\r\n\tfilter: ColumnFilter = {};\r\n\t//查询列表数据\r\n\tsearchPrm: Search = {};\r\n\texportPrm: Search = {};\r\n\ttamplate: Deal = {};\r\n\thttp: HttpClient = inject(HttpClient);\r\n\tmessageService: MessageService = inject(MessageService);\r\n\tconfirmationService = inject(ConfirmationService);\r\n\tloadingService = inject(LoadingService);\r\n\troute: ActivatedRoute = inject(ActivatedRoute);\r\n\trouter = inject(Router);\r\n\ti18n = inject(I18nService)\r\n\tconstructor() {}\r\n\r\n\trfd(prm: Rfd): Observable<any> {\r\n\t\treturn this.http.post(apiPath + 'RFD', prm).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n\t\t\t\tthis.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\twebget(param: amWeb): Observable<any> {\r\n\t\treturn this.http.post(apiPath + '/goam/api/webget', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n\t\t\t\t// this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\r\n\twebsave(param: amWeb): Observable<any> {\r\n\t\treturn this.http.post(apiPath + '/goam/api/websave', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\r\n\twebdel(param: amWeb): Observable<any> {\r\n\t\treturn this.http.post(apiPath + 'webdel', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\r\n\tupsert(prm?: any, cb?: Function) {\r\n\t\tif (prm) {\r\n\t\t\tthis.web_upsert(prm).subscribe((res) => {\r\n\t\t\t\tcb && cb(res);\r\n\t\t\t\tthis.resetPrm('upsert');\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\t// const pm: Upsert = this.upserts()\r\n\t\t\t// console.log('1====',pm)\r\n\t\t\tthis.web_upsert(this.upsertPrm).subscribe((res) => {\r\n\t\t\t\tcb && cb(res);\r\n\t\t\t\tthis.resetPrm('upsert');\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t//全部创建或更新,根据ID判断\r\n\tweb_upsert(param: Upsert): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\tif (!param.modelName) {\r\n\t\t\tparam = { modelName: this.modelName, ...param };\r\n\t\t}\r\n\t\tlet addData: any = param.addData;\r\n\t\tif (Object.keys(addData).length == 0) {\r\n\t\t\tdelete param.addData;\r\n\t\t}\r\n\t\tlet updData: any = param.updData;\r\n\t\tconsole.log('param----', param.updData);\r\n\t\tif (Object.keys(updData).length == 0) {\r\n\t\t\tdelete param.updData;\r\n\t\t} else {\r\n\t\t\tparam.updData!['id'] = this.id;\r\n\t\t\tparam.log!.pid = this.id;\r\n\t\t}\r\n\t\tif (!param?.addData && !param.updData) {\r\n\t\t\tparam = { updData: { id: this.id }, ...param };\r\n\t\t}\r\n\t\tconsole.log('this.isLog----', this.isLog);\r\n\t\tif (!this.isLog) {\r\n\t\t\tdelete param.log;\r\n\t\t} else {\r\n\t\t\tlet lg: string = '';\r\n\t\t\t// @ts-ignore\r\n\t\t\tconst isI18n = window.appIsI18n\r\n\t\t\tlet createStr = isI18n ? this.i18n.fanyi('app.create') :'新建'\r\n\t\t\tparam.subsert?.forEach((v) => {\r\n\t\t\t\tv.logtmp?.forEach((v, k) => {\r\n\t\t\t\t\tif (v.id === 0) {\r\n\t\t\t\t\t\tlg += `${createStr}: -> ${v.newValue};`\r\n\t\t\t\t\t\t// lg += '新建: -> ' + v.newValue + ';';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tlg += '[' + v.id + '-' + v.label + '] ' + (v.oldValue || '') + ' -> ' + (v.newValue || '') + ';';\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tparam = { ...param, log: { ...param.log, subContent: lg } };\r\n\t\t}\r\n\t\tconsole.log('param====', param);\r\n\t\treturn this.http.post(apiPath + 'upsert', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tif (param.log) {\r\n\t\t\t\t\tdelete param.log;\r\n\t\t\t\t}\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//自处理逻辑\r\n\tdeal(prm?: Deal) {\r\n\t\tif (prm) {\r\n\t\t\tthis.web_deal(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.web_deal(this.dealPrm).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_deal(param: Deal): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'deal', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tthis.dealPrm = { data: response, ...this.dealPrm };\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//传入map,根据ID,更新map数据\r\n\twrite(prm?: Write) {\r\n\t\tif (prm) {\r\n\t\t\tthis.web_write(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.web_write(this.writePrm).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_write(param: Write): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\tif (!param.modelName) {\r\n\t\t\tparam = { modelName: this.modelName, ...param };\r\n\t\t}\r\n\t\treturn this.http.post(apiPath + 'write', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tif (param.log) {\r\n\t\t\t\t\tdelete param.log;\r\n\t\t\t\t}\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//根据ID删除\r\n\tremove(prm?: Remove) {\r\n\t\tif (prm) {\r\n\t\t\tthis.web_remove(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.web_remove(this.removePrm).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_remove(param: Remove): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'remove', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tif (param.log) {\r\n\t\t\t\t\tdelete param.log;\r\n\t\t\t\t}\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//根据ID获取一条数据\r\n\tget(prm?: Get) {\r\n\t\tif (prm) {\r\n\t\t\tthis.web_get(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.web_get(this.getPrm).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_get(param: Get): Observable<any> {\r\n\t\tif (!param.hasOwnProperty('modelName')) {\r\n\t\t\tparam.modelName = this.modelName;\r\n\t\t}\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'get', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tthis.getPrm.data = response;\r\n\t\t\t\tif (response.id === 0 && param.hasOwnProperty('foreignKey')) {\r\n\t\t\t\t\tthis.upsertPrm.addData![param.foreignKey!] = param[param.foreignKey!];\r\n\t\t\t\t}\r\n\t\t\t\tthis.id = response?.id;\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//获取多条数据,根据传入的条件自动组织sql\r\n\tsearch(prm?: Search) {\r\n\t\tif (prm) {\r\n\t\t\tthis.web_search(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.web_search(this.searchPrm).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_search(param: Search): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'search', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tthis.searchPrm = { ...response };\r\n\t\t\t\tconsole.log('upsey-----', this.upsertPrm);\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\tsearchmap(prm?: Search) {\r\n\t\tif (prm) {\r\n\t\t\tthis.web_search(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.web_search(this.searchPrm).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_searchmap(param: Search): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'searchMap', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tthis.searchPrm = { ...response };\r\n\t\t\t\tconsole.log('upsey-----', this.upsertPrm);\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//获取多条数据,根据传入的条件自动组织sql\r\n\tsearchCount(prm?: Search) {\r\n\t\tif (prm) {\r\n\t\t\tthis.web_searchCount(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.web_searchCount(this.searchPrm).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_searchCount(param: Search): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'searchCount', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tthis.searchPrm = { ...response };\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//excel导入\r\n\t// import(param: ImportExcel):Observable<any> {\r\n\t// this.isLoading.set(true);\r\n\t// return this.http.post(\"am/remove\",param,httpOptions)\r\n\t// .pipe(\r\n\t// map((response: any) =>{\r\n\t// this.message.set(response);\r\n\t// this.isSuccess.set(true);\r\n\t// return response;\r\n\t// }),\r\n\t// catchError((error) => {\r\n\t// // 若请求出错,设置请求成功状态为 false,并将错误重新抛出\r\n\t// this.isSuccess.set(false);\r\n\t// this.message.set(error);\r\n\t// return throwError(() => error);\r\n\t// }),\r\n\t// finalize(() => {\r\n\t// // 无论请求成功与否,都将加载中状态设置为 false\r\n\t// this.isLoading.set(false);\r\n\t// })\r\n\t// );\r\n\t// }\r\n\t////excel 导出\r\n\texport(prm?: Search) {\r\n\t\tif (prm) {\r\n\t\t\tthis.web_export(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.web_export(this.exportPrm).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_export(param: Search): Observable<any> {\r\n\t\tif (!param.modelName) {\r\n\t\t\tparam = { modelName: this.modelName, ...param };\r\n\t\t}\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'export', param, { responseType: 'blob' }).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tconst data: Blob = new Blob([response], {\r\n\t\t\t\t\ttype: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=UTF-8',\r\n\t\t\t\t});\r\n\t\t\t\tconst fileName = param.modelName + '.xlsx';\r\n\t\t\t\tFileSaver.saveAs(data, fileName);\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//人工处理导入\r\n\tdealExport(prm?: DealExport) {\r\n\t\tif (prm) {\r\n\t\t\tthis.web_deal_export(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.web_deal_export(this.exportPrm).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_deal_export(param: DealExport): Observable<any> {\r\n\t\tif (!param.modelName) {\r\n\t\t\tparam = { modelName: this.modelName, ...param };\r\n\t\t}\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'dealExport', param, { responseType: 'blob' }).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tconst data: Blob = new Blob([response], {\r\n\t\t\t\t\ttype: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=UTF-8',\r\n\t\t\t\t});\r\n\t\t\t\t// const fileName = param.modelName + '.xlsx';\r\n\t\t\t\tconst fileName = `${param?.fileName ? param.fileName : param.modelName}.xlsx`\r\n\t\t\t\tFileSaver.saveAs(data, fileName);\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//下载导入的模板\r\n\tdownloadTemplate(prm?: Deal) {\r\n\t\tif (prm) {\r\n\t\t\tthis.web_downloadTemplate(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.web_downloadTemplate(this.tamplate).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_downloadTemplate(param: Deal): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'download', param, { responseType: 'blob' }).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tconst data: Blob = new Blob([response], {\r\n\t\t\t\t\ttype: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=UTF-8',\r\n\t\t\t\t});\r\n\t\t\t\tconst fileName = param.modelName + '模板.xlsx';\r\n\t\t\t\tFileSaver.saveAs(data, fileName);\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//删除图片\r\n\timageDelete(fid?: string) {\r\n\t\tif (fid) {\r\n\t\t\tthis.web_imageDelete(fid).subscribe();\r\n\t\t} else if (this.fid.length > 0) {\r\n\t\t\tthis.web_imageDelete(this.fid).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_imageDelete(fid: string): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'imageDelete', fid).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tthis.messageService.add({ severity: 'success', summary: 'Success', detail: response });\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//删除图片\r\n\tfilerDelete(fid?: string) {\r\n\t\tif (fid) {\r\n\t\t\tthis.web_filerDelete(fid).subscribe();\r\n\t\t} else if (this.fid.length > 0) {\r\n\t\t\tthis.web_filerDelete(this.fid).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_filerDelete(fid: string): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'imageDelete', fid).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tthis.messageService.add({ severity: 'success', summary: 'Success', detail: response });\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n\t\t\t\t// this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//刷新token\r\n\trefreshToken(param: TokenInfo): Observable<any> {\r\n\t\treturn this.http.post(apiPath + 'refreshToken', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tthis.dealPrm = { data: response, ...this.dealPrm };\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//创建表\r\n\tcreateTable(prm?: Param) {\r\n\t\tif (prm) {\r\n\t\t\tthis.web_createTable(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.web_createTable(this.param).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_createTable(param: Param): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'createTable', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\t// this.messageService.add({severity: 'success',summary: 'Success',detail: response})\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t// 暂无确定是否重置其他公共变量\r\n\tresetPrm(search?: string) {\r\n\t\tswitch (search) {\r\n\t\t\tcase 'upsert':\r\n\t\t\t\tthis.upsertPrm.addData = {};\r\n\t\t\t\tthis.upsertPrm.updData = {};\r\n\t\t\t\tthis.upsertPrm.log = {};\r\n\t\t\t\tthis.upsertPrm.subsert?.forEach((v) => {\r\n\t\t\t\t\tv.logtmp = new Map();\r\n\t\t\t\t\tv.maptmp = new Map();\r\n\t\t\t\t\tv.subData = [];\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\t'';\r\n\t\t}\r\n\t}\r\n\t//自处理逻辑\r\n\tdealQuery(prm?: Deal) {\r\n\t\tif (prm) {\r\n\t\t\tthis.webDealQuery(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.webDealQuery(this.dealPrm).subscribe();\r\n\t\t}\r\n\t}\r\n\twebDealQuery(param: Deal): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'dealQuery', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tthis.dealPrm = { data: response, ...this.dealPrm };\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\tdealCustom(prm?: Deal) {\r\n\t\tif (prm) {\r\n\t\t\tthis.webDealCustom(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.webDealCustom(this.dealPrm).subscribe();\r\n\t\t}\r\n\t}\r\n\twebDealCustom(param: Deal): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'dealCustom', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tthis.dealPrm = { data: response, ...this.dealPrm };\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\tdealSubmit(prm?: Deal) {\r\n\t\tif (prm) {\r\n\t\t\tthis.webDealCustom(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.webDealCustom(this.dealPrm).subscribe();\r\n\t\t}\r\n\t}\r\n\twebDealSubmit(param: Deal): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'dealSubmit', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tthis.dealPrm = { data: response, ...this.dealPrm };\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n}\r\n","import { FormControl } from '@angular/forms';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nexport class FieldControl extends FormControl {\r\n\tpublic hookChange = new BehaviorSubject<any>(null);\r\n\tpublic submitChange = new BehaviorSubject<Boolean>(false);\r\n\toverride setValue(\r\n\t\tvalue: any,\r\n\t\toptions: {\r\n\t\t\tonlySelf?: boolean;\r\n\t\t\temitEvent?: boolean;\r\n\t\t\temitModelToViewChange?: boolean;\r\n\t\t\temitViewToModelChange?: boolean;\r\n\t\t} = {},\r\n\t\temitHook: boolean = false,\r\n\t): void {\r\n\t\tsuper.setValue(value, options);\r\n\t\tif (emitHook) {\r\n\t\t\tthis.hookChange.next(value);\r\n\t\t}\r\n\t}\r\n\tafterSubmit() {\r\n\t\tthis.submitChange.next(true);\r\n\t}\r\n}\r\n","import { Injectable, signal, untracked } from '@angular/core';\r\nimport { SearchItem } from '../search/search/search.component';\r\nimport { Search } from '../am/am.component';\r\nimport { FormField } from '../form/form-field/form-field';\r\nimport { Router } from '@angular/router';\r\nimport { Page } from '../grid/pager/pager.component';\r\nimport { BehaviorSubject } from 'rxjs';\r\nexport interface Action {\r\n\ttype: string;\r\n}\r\n\r\nexport interface SearchRow {\r\n\tkey?: string;\r\n\tmodelName?: string;\r\n\tsearch?: Search;\r\n}\r\n\r\nexport interface SortItem {\r\n\tisAsc?: boolean;\r\n\tfields?: string[];\r\n\tlabels?: string[];\r\n}\r\n\r\nexport interface FieldLabelAction {\r\n\tkey?: string;\r\n\ttype?: 'mouseenter' | 'mouseleave' | 'click' | 'dblclick';\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class ActionService {\r\n\tpopMode: boolean = false;\r\n\tfieldLabelAction = signal<FieldLabelAction | undefined>(undefined);\r\n\tfieldAction = signal<FormField | undefined>(undefined);\r\n\taction = signal<Action | undefined>(undefined);\r\n\tsaveSignal = signal<boolean>(false);\r\n\tloading = signal<boolean>(false)\r\n\tgridAction$ = new BehaviorSubject<any>({})\r\n\r\n\tconstructor(\r\n\t\tprivate pageAction: PageActionService,\r\n\t\tprivate popAction: PopActionService,\r\n\t) {}\r\n\tsetPopMode(mode: boolean) {\r\n\t\tthis.popMode = mode;\r\n\t}\r\n\tclear() {\r\n\t\tif (this.popMode) {\r\n\t\t\tthis.popAction.setSearchItem(undefined);\r\n\t\t\tthis.popAction.setSearchClear(undefined);\r\n\t\t\tthis.popAction.setSortItem(undefined);\r\n\t\t\tthis.popAction.setModelName(undefined);\r\n\t\t\tthis.popAction.clearSearch(undefined);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.pageAction.setSearchItem(undefined);\r\n\t\tthis.pageAction.setSearchClear(undefined);\r\n\t\tthis.pageAction.setSortItem(undefined);\r\n\t\tthis.pageAction.setModelName(undefined);\r\n\t}\r\n\tsetModelName(modelNameForSearch: String | undefined) {\r\n\t\tif (this.popMode) {\r\n\t\t\tthis.popAction.setModelName(modelNameForSearch);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.pageAction.setModelName(modelNameForSearch);\r\n\t}\r\n\tgetModelName(): String | undefined {\r\n\t\tif (this.popMode) {\r\n\t\t\treturn this.popAction.getModelName();\r\n\t\t}\r\n\t\treturn this.pageAction.getModelName();\r\n\t}\r\n\tclearSearch(modelName: string | undefined) {\r\n\t\tif (this.popMode) {\r\n\t\t\tthis.popAction.clearSearch(modelName);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.pageAction.clearSearch(modelName);\r\n\t}\r\n\tsetSearch(search: Search, modelName: string | undefined) {\r\n\t\tif (this.popMode) {\r\n\t\t\tthis.popAction.setSearch(search, modelName);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.pageAction.setSearch(search, modelName);\r\n\t}\r\n\tgetSearch(modelName: string | undefined): Search | undefined {\r\n\t\tif (this.popMode) {\r\n\t\t\treturn this.popAction.getSearch(modelName);\r\n\t\t}\r\n\t\treturn this.pageAction.getSearch(modelName);\r\n\t}\r\n\tsearchMonitor(modelName: string | undefined): boolean {\r\n\t\tif (this.popMode) {\r\n\t\t\treturn this.popAction.searchMonitor(modelName);\r\n\t\t}\r\n\t\treturn this.pageAction.searchMonitor(modelName);\r\n\t}\r\n\tsetSearchItem(searchItem: SearchItem | undefined) {\r\n\t\tif (this.popMode) {\r\n\t\t\tthis.popAction.setSearchItem(searchItem);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.pageAction.setSearchItem(searchItem);\r\n\t}\r\n\tgetSearchItem(): SearchItem | undefined {\r\n\t\tif (this.popMode) {\r\n\t\t\treturn this.popAction.getSearchItem();\r\n\t\t}\r\n\t\treturn this.pageAction.getSearchItem();\r\n\t}\r\n\tsetSearchClear(searchClear: String | undefined) {\r\n\t\tif (this.popMode) {\r\n\t\t\tthis.popAction.setSearchClear(searchClear);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.pageAction.setSearchClear(searchClear);\r\n\t}\r\n\tgetSearchClear(): String | undefined {\r\n\t\tif (this.popMode) {\r\n\t\t\treturn this.popAction.getSearchClear();\r\n\t\t}\r\n\t\treturn this.pageAction.getSearchClear();\r\n\t}\r\n\tsetSortItem(sortItem: SortItem | undefined) {\r\n\t\tif (this.popMode) {\r\n\t\t\tthis.popAction.setSortItem(sortItem);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.pageAction.setSortItem(sortItem);\r\n\t}\r\n\tgetSortItem(): SortItem | undefined {\r\n\t\tif (this.popMode) {\r\n\t\t\treturn this.popAction.getSortItem();\r\n\t\t}\r\n\t\treturn this.pageAction.getSortItem();\r\n\t}\r\n\tsetPage(page: Page) {\r\n\t\tif (!this.popMode) {\r\n\t\t\tthis.pageAction.setPage(page);\r\n\t\t}\r\n\t}\r\n\tgetPage(): Page | undefined {\r\n\t\tif (!this.popMode) {\r\n\t\t\treturn this.pageAction.getPage();\r\n\t\t}\r\n\t\treturn undefined;\r\n\t}\r\n\tsetFieldLabelAction(key: string, type: 'mouseenter' | 'mouseleave' | 'click' | 'dblclick') {\r\n\t\tthis.fieldLabelAction.set({ key, type });\r\n\t}\r\n\tgetFieldLabelAction(): FieldLabelAction | undefined {\r\n\t\treturn this.fieldLabelAction();\r\n\t}\r\n\tsetFieldAction(field: FormField | undefined) {\r\n\t\tthis.fieldAction.set(field);\r\n\t}\r\n\tgetFieldAction(): FormField | undefined {\r\n\t\treturn this.fieldAction();\r\n\t}\r\n\tsetAction(action: Action | undefined) {\r\n\t\tthis.action.set(action);\r\n\t}\r\n\tgetAction(): Action | undefined {\r\n\t\treturn this.action();\r\n\t}\r\n\tupdateGridAction(data:any){\r\n\t\tthis.gridAction$.next(data)\r\n\t}\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class PageActionService {\r\n\tmodelNameForSearch = signal<String | undefined>(undefined);\r\n\tsearchList = signal<SearchRow[]>([]);\r\n\tsearchItem = signal<SearchItem | undefined>(undefined);\r\n\tsearchClear = signal<String | undefined>(undefined);\r\n\tsortItem = signal<SortItem | undefined>(undefined);\r\n\tpage = signal<Page | undefined>(undefined);\r\n\r\n\tconstructor(private router: Router) {}\r\n\r\n\tsetModelName(modelNameForSearch: String | undefined) {\r\n\t\tif (modelNameForSearch == undefined) {\r\n\t\t\tthis.modelNameForSearch.set(undefined);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.modelNameForSearch.set(new String(modelNameForSearch));\r\n\t}\r\n\tgetModelName(): String | undefined {\r\n\t\treturn this.modelNameForSearch();\r\n\t}\r\n\tclearSearch(modelName: string | undefined) {\r\n\t\tif (modelName == undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst key = this.router.url;\r\n\t\tlet searchList = untracked(() => this.searchList()).filter((item) => item.key != key || item.modelName != modelName);\r\n\t\tthis.searchList.set([...searchList]);\r\n\t}\r\n\tsetSearch(search: Search, modelName: string | undefined) {\r\n\t\tif (modelName == undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst searchRow = { key: this.router.url, modelName, search };\r\n\t\tlet searchList = untracked(() => this.searchList()).filter(\r\n\t\t\t(item) => item.key != searchRow.key || item.modelName != searchRow.modelName,\r\n\t\t);\r\n\t\tthis.searchList.set([...searchList, searchRow]);\r\n\t\tthis.setModelName(modelName);\r\n\t}\r\n\tgetSearch(modelName: string | undefined): Search | undefined {\r\n\t\tif (modelName == undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst key = this.router.url;\r\n\t\tconst result = untracked(() => this.searchList()).filter((item) => item.key == key && item.modelName == modelName);\r\n\t\treturn result.length ? result[0].search : undefined;\r\n\t}\r\n\tsearchMonitor(modelName: string | undefined): boolean {\r\n\t\tconst searchName = this.modelNameForSearch();\r\n\t\tif (searchName === undefined) return true;\r\n\t\tif (String(searchName) === modelName) return true;\r\n\t\treturn false;\r\n\t}\r\n\tsetSearchItem(searchItem: SearchItem | undefined) {\r\n\t\tif (searchItem == undefined) {\r\n\t\t\tthis.searchItem.set(undefined);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.searchItem.set({ ...searchItem });\r\n\t}\r\n\tgetSearchItem(): SearchItem | undefined {\r\n\t\treturn this.searchItem();\r\n\t}\r\n\tsetSearchClear(searchClear: String | undefined) {\r\n\t\tif (searchClear == undefined) {\r\n\t\t\tthis.searchClear.set(undefined);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.searchClear.set(new String(searchClear));\r\n\t}\r\n\tgetSearchClear(): String | undefined {\r\n\t\treturn this.searchClear();\r\n\t}\r\n\tsetSortItem(sortItem: SortItem | undefined) {\r\n\t\tthis.sortItem.set(sortItem);\r\n\t}\r\n\tgetSortItem(): SortItem | undefined {\r\n\t\treturn this.sortItem();\r\n\t}\r\n\tsetPage(page: Page) {\r\n\t\tthis.page.set(page);\r\n\t}\r\n\tgetPage(): Page | undefined {\r\n\t\treturn this.page();\r\n\t}\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class PopActionService {\r\n\tmodelNameForSearch = signal<String | undefined>(undefined);\r\n\tsearchList = signal<SearchRow[]>([]);\r\n\tsearchItem = signal<SearchItem | undefined>(undefined);\r\n\tsearchClear = signal<String | undefined>(undefined);\r\n\tsortItem = signal<SortItem | undefined>(undefined);\r\n\r\n\tconstructor() {}\r\n\r\n\tsetModelName(modelNameForSearch: String | undefined) {\r\n\t\tif (modelNameForSearch == undefined) {\r\n\t\t\tthis.modelNameForSearch.set(undefined);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.modelNameForSearch.set(new String(modelNameForSearch));\r\n\t}\r\n\tgetModelName(): String | undefined {\r\n\t\treturn this.modelNameForSearch();\r\n\t}\r\n\tclearSearch(modelName: string | undefined) {\r\n\t\tthis.searchList.set([]);\r\n\t}\r\n\tsetSearch(search: Search, modelName: string | undefined) {\r\n\t\tif (modelName == undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst searchRow = { modelName, search };\r\n\t\tlet searchList = untracked(() => this.searchList()).filter((item) => item.modelName != searchRow.modelName);\r\n\t\tthis.searchList.set([...searchList, searchRow]);\r\n\t\tthis.setModelName(modelName);\r\n\t}\r\n\tgetSearch(modelName: string | undefined): Search | undefined {\r\n\t\tif (modelName == undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst result = untracked(() => this.searchList()).filter((item) => item.modelName == modelName);\r\n\t\treturn result.length ? result[0].search : undefined;\r\n\t}\r\n\tsearchMonitor(modelName: string | undefined): boolean {\r\n\t\tconst searchName = this.modelNameForSearch();\r\n\t\tif (searchName === undefined) return false;\r\n\t\tif (String(searchName) === modelName) return true;\r\n\t\treturn false;\r\n\t}\r\n\tsetSearchItem(searchItem: SearchItem | undefined) {\r\n\t\tif (searchItem == undefined) {\r\n\t\t\tthis.searchItem.set(undefined);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.searchItem.set({ ...searchItem });\r\n\t}\r\n\tgetSearchItem(): SearchItem | undefined {\r\n\t\treturn this.searchItem();\r\n\t}\r\n\tsetSearchClear(searchClear: String | undefined) {\r\n\t\tif (searchClear == undefined) {\r\n\t\t\tthis.searchClear.set(undefined);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.searchClear.set(new String(searchClear));\r\n\t}\r\n\tgetSearchClear(): String | undefined {\r\n\t\treturn this.searchClear();\r\n\t}\r\n\tsetSortItem(sortItem: SortItem | undefined) {\r\n\t\tthis.sortItem.set(sortItem);\r\n\t}\r\n\tgetSortItem(): SortItem | undefined {\r\n\t\treturn this.sortItem();\r\n\t}\r\n}\r\n","import { Directive, HostListener, input, effect, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { ActionService } from '../../service/action.service';\r\nimport { FormField } from './form-field';\r\n\r\n@Directive({\r\n\tselector: '[fieldLabel], [fieldLabel][field], [fieldLabel][contextMenu]',\r\n\tstandalone: true,\r\n})\r\nexport class LabelDirective {\r\n\t@ViewChild('container', { read: ViewContainerRef }) container?: ViewContainerRef;\r\n\tfield = input<FormField>();\r\n\tcontextMenu = input<any>();\r\n\tconstructor(private action: ActionService) {}\r\n\r\n\t@HostListener('mouseenter') onMouseEnter() {\r\n\t\tif (!this.field()?.interactiveLabel) return;\r\n\t\tif (this.field()?.fieldControl?.disabled) return;\r\n\t\tthis.action.setFieldLabelAction(this.field()!.uuid!, 'mouseenter');\r\n\t}\r\n\r\n\t@HostListener('mouseleave') onMouseLeave() {\r\n\t\tif (!this.field()?.interactiveLabel) return;\r\n\t\tif (this.field()?.fieldControl?.disabled) return;\r\n\t\tthis.field()?.interactiveLabel && this.action.setFieldLabelAction(this.field()!.uuid!, 'mouseleave');\r\n\t}\r\n\r\n\t@HostListener('click') onClick() {\r\n\t\tif (this.field()?.interactiveLabel) {\r\n\t\t\tif (this.field()?.fieldControl?.disabled) return;\r\n\t\t\tthis.action.setFieldLabelAction(this.field()!.uuid!, 'click');\r\n\t\t} else {\r\n\t\t\tthis.action.setFieldAction(this.field()!);\r\n\t\t}\r\n\t}\r\n\r\n\t@HostListener('dblclick') onDoubleClick() {\r\n\t\tif (['inputtext', 'textarea', 'codemirror'].includes(this.field()?.type!)) {\r\n\t\t\tthis.action.setFieldLabelAction(this.field()!.uuid!, 'dblclick');\r\n\t\t}\r\n\t}\r\n\r\n\t@HostListener('contextmenu', ['$event'])\r\n\tonRightClick(event: MouseEvent): void {\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopPropagation();\r\n\t\tconst extra: any = this.field()?.form?.extra;\r\n\t\tif (extra.preContextMenu) {\r\n\t\t\textra.preContextMenu?.cm?.hide(event);\r\n\t\t}\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.contextMenu()?.cm?.show(event);\r\n\t\t\textra.preContextMenu = this.contextMenu();\r\n\t\t}, 100);\r\n\t}\r\n\r\n\t@HostListener('touchstart', ['$event'])\r\n\tonTouchStart(event: TouchEvent) {\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopPropagation();\r\n\t}\r\n\r\n\t@HostListener('touchend', ['$event'])\r\n\tonTouchend(event: TouchEvent): void {\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopPropagation();\r\n\t}\r\n}\r\n","import { FormField, FieldProps } from './form-field';\r\nimport { DatePipe } from '@angular/common';\r\nimport { I18nService } from '../../service/i18n.service';\r\nimport { isObservable, tap } from 'rxjs';\r\n\r\nconst _fieldUtils = {\r\n\tprops: (field: FormField): FieldProps => {\r\n\t\tlet props: FieldProps = {};\r\n\t\tswitch (field.type) {\r\n\t\t\tcase 'inputtext':\r\n\t\t\t\tprops = field.inputTextProps!;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'inputnumber':\r\n\t\t\t\tprops = field.inputNumberProps!;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'select':\r\n\t\t\t\tprops = field.selectProps!;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'treeselect':\r\n\t\t\t\tprops = field.treeSelectProps!;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'datepicker':\r\n\t\t\t\tprops = field.datePickerProps!;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'autocomplete':\r\n\t\t\t\tprops = field.autoCompleteProps!;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'multiselect':\r\n\t\t\t\tprops = field.multiSelectProps!;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'radio':\r\n\t\t\t\tprops = field.radioProps!;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'textarea':\r\n\t\t\t\tprops = field.textAreaProps!;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'upload':\r\n\t\t\t\tprops = field.uploadProps!;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'image':\r\n\t\t\t\tprops = field.imageProps!;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'codemirror':\r\n\t\t\t\tprops = field.codeMirrorProps!;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'rowselector':\r\n\t\t\t\tprops = field.rowSelectorProps!;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\treturn props;\r\n\t},\r\n\tlabel: (field: FormField, i18nService: I18nService): string | undefined => {\r\n\t\tconst i18nKey = _fieldUtils.props(field).i18nKey;\r\n\t\tif (i18nKey) {\r\n\t\t\treturn i18nService.fanyi(i18nKey);\r\n\t\t}\r\n\t\treturn _fieldUtils.props(field).label;\r\n\t},\r\n\tsetModel(model: any, key: string, value: any) {\r\n\t\tconst keys = key.split('.');\r\n\t\tif (keys.length == 1) {\r\n\t\t\tmodel[key] = value;\r\n\t\t\treturn;\r\n\t\t} else {\r\n\t\t\tconst k: any = keys.shift();\r\n\t\t\tif (model[k] == undefined) {\r\n\t\t\t\tmodel[k] = {};\r\n\t\t\t}\r\n\t\t\tthis.setModel(model[k], keys.join('.'), value);\r\n\t\t}\r\n\t},\r\n\tgetModel(model: any, key: string): any {\r\n\t\tconst keys = key.split('.');\r\n\t\tif (keys.length == 1) {\r\n\t\t\treturn model[key];\r\n\t\t} else {\r\n\t\t\tconst k: any = keys.shift();\r\n\t\t\tif (model[k] == undefined) {\r\n\t\t\t\tmodel[k] = {};\r\n\t\t\t}\r\n\t\t\treturn this.getModel(model[k], keys.join('.'));\r\n\t\t}\r\n\t},\r\n\tfieldHandler(field: FormField) {\r\n\t\tif (!['select', 'treeselect', 'multiselect', 'radio'].includes(field.type!)) return;\r\n\t\t(_fieldUtils.props(field) as any)!.options = Array.isArray((_fieldUtils.props(field) as any)!.options)\r\n\t\t\t? (_fieldUtils.props(field) as any)!.options\r\n\t\t\t: undefined;\r\n\t},\r\n\tdafaultValueHandler(field: FormField, defaultValue: any, datePipe: DatePipe) {\r\n\t\tif (field.type == 'datepicker' && defaultValue === 'today') {\r\n\t\t\treturn _fieldUtils.getCurrentDate();\r\n\t\t}\r\n\t\treturn defaultValue;\r\n\t},\r\n\tgetCurrentDate(separator: string = '-'): string {\r\n\t\tconst now = new Date();\r\n\t\tconst year = now.getFullYear();\r\n\t\tconst month = String(now.getMonth() + 1).padStart(2, '0');\r\n\t\tconst day = String(now.getDate()).padStart(2, '0');\r\n\t\treturn `${year}${separator}${month}${separator}${day}`;\r\n\t},\r\n\ttriggerHookAndSetValue: (\r\n\t\tfield: FormField,\r\n\t\tvalue: any,\r\n\t\temitEvent: boolean,\r\n\t\temitHook: boolean,\r\n\t\thookObservers: any[],\r\n\t\tcallback: any,\r\n\t\tdatePipe: DatePipe,\r\n\t) => {\r\n\t\tif (field.hook && isObservable(field.hook)) {\r\n\t\t\tconst sub = field.hook\r\n\t\t\t\t.pipe(\r\n\t\t\t\t\ttap((func) => {\r\n\t\t\t\t\t\tfunc(field);\r\n\t\t\t\t\t}),\r\n\t\t\t\t)\r\n\t\t\t\t.subscribe(() => {\r\n\t\t\t\t\tfield.fieldControl?.setValue(_fieldUtils.toFieldValue(field, value, datePipe), { emitEvent }, emitHook), callback && callback();\r\n\t\t\t\t});\r\n\t\t\thookObservers.push(() => sub.unsubscribe());\r\n\t\t} else {\r\n\t\t\tfield.fieldControl?.setValue(_fieldUtils.toFieldValue(field, value, datePipe), { emitEvent }, emitHook);\r\n\t\t\tcallback && callback();\r\n\t\t}\r\n\t},\r\n\tfromFieldValue: (field: FormField, target: any, datePipe: DatePipe): any => {\r\n\t\tif (field.type == 'treeselect') {\r\n\t\t\treturn _fieldUtils.fromTreeSelectValue(field, target);\r\n\t\t}\r\n\t\tif (field.type == 'multiselect') {\r\n\t\t\treturn _fieldUtils.fromMultiSelectValue(field, target);\r\n\t\t}\r\n\t\tif (field.type == 'image') {\r\n\t\t\treturn _fieldUtils.fromImageValue(field, target);\r\n\t\t}\r\n\t\tif (field.type == 'upload') {\r\n\t\t\treturn _fieldUtils.fromUploadValue(field, target);\r\n\t\t}\r\n\t\tif (field.type == 'datepicker') {\r\n\t\t\treturn _fieldUtils.fromDatePickerValue(field, target, datePipe);\r\n\t\t}\r\n\t\treturn target;\r\n\t},\r\n\tfromTreeSelectValue: (field: FormField, target: any): string => {\r\n\t\tif (field.treeSelectProps?.selectionMode == 'single') {\r\n\t\t\treturn target?.key;\r\n\t\t}\r\n\t\treturn target.map((item: any) => item.key).join(',');\r\n\t},\r\n\tfromMultiSelectValue: (field: FormField, target: any): string => {\r\n\t\tif (!field.multiSelectProps?.optionValue) {\r\n\t\t\treturn target;\r\n\t\t}\r\n\t\treturn target.join(',');\r\n\t},\r\n\tfromImageValue: (field: FormField, target: any): string => {\r\n\t\treturn target.join(';');\r\n\t},\r\n\tfromUploadValue: (field: FormField, target: any): string => {\r\n\t\treturn target.join(';');\r\n\t},\r\n\tfromDatePickerValue: (field: FormField, target: any, datePipe: any): string => {\r\n\t\tif (field?.datePickerProps?.selectionMode == 'range' && target.length == 2) {\r\n\t\t\tconsole.log(target.join('~'));\r\n\t\t\treturn target.join('~');\r\n\t\t}\r\n\t\treturn target;\r\n\t},\r\n\ttoFieldValue: (field: FormField, raw: any, datePipe: DatePipe): any => {\r\n\t\tif (field.type == 'treeselect') {\r\n\t\t\treturn _fieldUtils.toTreeSelectValue(field, raw);\r\n\t\t}\r\n\t\tif (field.type == 'datepicker') {\r\n\t\t\treturn _fieldUtils.toDatePickerValue(field, raw, datePipe);\r\n\t\t}\r\n\t\tif (field.type == 'multiselect') {\r\n\t\t\treturn _fieldUtils.toMultiSelectValue(field, raw);\r\n\t\t}\r\n\t\tif (field.type == 'image') {\r\n\t\t\treturn _fieldUtils.toImageValue(field, raw);\r\n\t\t}\r\n\t\tif (field.type == 'upload') {\r\n\t\t\treturn _fieldUtils.toUploadValue(field, raw);\r\n\t\t}\r\n\t\treturn raw || '';\r\n\t},\r\n\ttoTreeSelectValue: (field: FormField, raw: any): any => {\r\n\t\tif (field.treeSelectProps?.selectionMode == 'single') {\r\n\t\t\treturn _fieldUtils.findTreeNode(raw, field.treeSelectProps?.options);\r\n\t\t}\r\n\t\tconst nodes: any[] = [];\r\n\t\t_fieldUtils.findTreeNodes(raw?.split(',') || [], field.treeSelectProps?.options || [], nodes);\r\n\t\treturn nodes;\r\n\t},\r\n\ttoDatePickerValue: (field: FormField, raw: any, datePipe: DatePipe, stringMode: boolean = false): any => {\r\n\t\tif (!raw || raw == '0001-01-01T00:00:00Z') {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t\tif (_fieldUtils.isISO8601(raw)) {\r\n\t\t\tconst datePipeFormat = field.datePickerProps?.datePipeFormat ?? 'yyyy-MM-dd';\r\n\t\t\treturn datePipe.transform(raw, datePipeFormat, 'GMT') || raw;\r\n\t\t}\r\n\t\tif (!stringMode && field?.datePickerProps?.selectionMode == 'range' && raw.includes('~')) {\r\n\t\t\tconst [start, end] = raw.split('~');\r\n\t\t\treturn [new Date(start), new Date(end)];\r\n\t\t}\r\n\t\treturn raw;\r\n\t},\r\n\ttoMultiSelectValue: (field: FormField, raw: any): any => {\r\n\t\tif (!field.multiSelectProps?.optionValue) {\r\n\t\t\treturn raw || '';\r\n\t\t}\r\n\t\treturn (raw && raw.split(',')) || '';\r\n\t},\r\n\ttoImageValue: (field: FormField, raw: any): any => {\r\n\t\treturn (raw && raw.split(';')) || [];\r\n\t},\r\n\ttoUploadValue: (field: FormField, raw: any): any => {\r\n\t\treturn (raw && raw.split(';')) || [];\r\n\t},\r\n\tfindTreeNode(value: string, children?: any[]): any {\r\n\t\tif (!children || children.length == 0) return;\r\n\t\tconst n = children.find((o) => o.key == value);\r\n\t\tif (n) return n;\r\n\t\tfor (const ch of children) {\r\n\t\t\tconst cn = this.findTreeNode(value, ch.children);\r\n\t\t\tif (cn) return cn;\r\n\t\t}\r\n\t\treturn;\r\n\t},\r\n\tfindTreeNodes(values: string[], children?: any[], nodes?: any[]): void {\r\n\t\tif (!children || children.length == 0) return;\r\n\t\tconst tars = children.filter((o) => values.indexOf(o.key) != -1);\r\n\t\tnodes?.push(...tars);\r\n\t\tfor (const ch of children) {\r\n\t\t\tthis.findTreeNodes(values, ch.children, nodes);\r\n\t\t}\r\n\t},\r\n\tpreloadLog(rawModel: any, fieldList: FormField[], datePipe: DatePipe): any {\r\n\t\tconst target: any = {};\r\n\t\tObject.keys(rawModel).forEach((key) => {\r\n\t\t\tconst field = fieldList.find((field) => field.key === key);\r\n\t\t\tif (field?.type == 'datepicker') {\r\n\t\t\t\ttarget[key] = _fieldUtils.toDatePickerValue(field, rawModel[key], datePipe, true);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\ttarget[key] = rawModel[key];\r\n\t\t});\r\n\t\treturn target;\r\n\t},\r\n\ttransLog(rawModel: any, changedModel: any, mainValue: any, isNew: boolean,i18n:any): string {\r\n\t\tif (isNew) {\r\n\t\t\t// @ts-ignore\r\n\t\t\tconst isI18n = window.appIsI18n\r\n\t\t\tlet createStr = isI18n ? i18n.fanyi('app.create') :'新建';\r\n\t\t\treturn `${createStr}:${mainValue}`\r\n\t\t}\r\n\t\tconst detail: string[] = [];\r\n\t\tObject.keys(changedModel).forEach((key) => {\r\n\t\t\tif (changedModel[key].type == 'codemirror') {\r\n\t\t\t\tdetail.push(`[${changedModel[key].name}] 变更`);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tdetail.push(`[${changedModel[key].name}] ${rawModel[key] || ''} -> ${changedModel[key].value || ''}`);\r\n\t\t});\r\n\t\treturn detail.join(';');\r\n\t},\r\n\t// 经测试select组件有内部bug\r\n\t// 设置model时,fieldControl.setValue的emitEvent参数为false,仍会触发valueChanges事件\r\n\t// 触发valueChanges会影响日志保存的准确性,故此方法仅是为了防止组件内部意外触发的变动\r\n\tisFakedChange(newValue: any, oldValue: any, field: FormField): boolean {\r\n\t\tconst changeTypes = ['inputtext', 'inputnumber', 'select', 'treeselect', 'datepicker', 'autocomplete', 'multiselect', 'radio'];\r\n\t\tif (changeTypes.includes(field.type!)) {\r\n\t\t\treturn (oldValue || '') == (newValue || '');\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tisISO8601(timeStr: string): boolean {\r\n\t\treturn /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$/.test(timeStr);\r\n\t},\r\n};\r\n\r\nexport const fieldUtils = {\r\n\tprops: _fieldUtils.props,\r\n\tlabel: _fieldUtils.label,\r\n\tfieldHandler: _fieldUtils.fieldHandler,\r\n\tdafaultValueHandler: _fieldUtils.dafaultValueHandler,\r\n\ttriggerHookAndSetValue: _fieldUtils.triggerHookAndSetValue,\r\n\tfromFieldValue: _fieldUtils.fromFieldValue,\r\n\tpreloadLog: _fieldUtils.preloadLog,\r\n\ttransLog: _fieldUtils.transLog,\r\n\tisFakedChange: _fieldUtils.isFakedChange,\r\n};\r\n","import { Component, effect, HostListener, input, ViewChild } from '@angular/core';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { ContextMenu } from 'primeng/contextmenu';\r\nimport { Clipboard } from '@angular/cdk/clipboard';\r\nimport { FormField } from './form-field';\r\nimport { fieldUtils } from './field-utils';\r\n\r\n@Component({\r\n\tselector: 'app-context-menu',\r\n\tstandalone: true,\r\n\timports: [ContextMenu],\r\n\ttemplate: `\r\n\t\t@if (visible) {\r\n\t\t\t<p-contextMenu\r\n\t\t\t\t#cm\r\n\t\t\t\t[target]=\"target()\"\r\n\t\t\t\t[appendTo]=\"'body'\"\r\n\t\t\t\t[model]=\"items\">\r\n\t\t\t\t<ng-template\r\n\t\t\t\t\t#item\r\n\t\t\t\t\tlet-item>\r\n\t\t\t\t\t<div class=\"px-[0.5rem] py-[0.5rem]\">\r\n\t\t\t\t\t\t<i [class]=\"item.icon\"></i>\r\n\t\t\t\t\t\t<span class=\"ml-2 cursor-pointer\">{{ item.label }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-template>\r\n\t\t\t</p-contextMenu>\r\n\t\t}\r\n\t`,\r\n\tstyles: [``],\r\n})\r\nexport class ContextMenuComponent {\r\n\t@ViewChild('cm') cm?: ContextMenu;\r\n\tvisible = true;\r\n\ttarget = input<any>({});\r\n\tfield = input<FormField>();\r\n\titems?: MenuItem[];\r\n\tcommonItems: MenuItem[] = [\r\n\t\t{\r\n\t\t\tlabel: '复制标题【Label】',\r\n\t\t\ticon: 'pi pi-clone',\r\n\t\t\tcommand: () => {\r\n\t\t\t\tconst label = fieldUtils.props(this.field()!).label || '';\r\n\t\t\t\tthis.clipboard.copy(label);\r\n\t\t\t},\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: '复制键名【Key】',\r\n\t\t\ticon: 'pi pi-clone',\r\n\t\t\tcommand: () => {\r\n\t\t\t\tthis.clipboard.copy(this.field()?.key || '');\r\n\t\t\t},\r\n\t\t},\r\n\t];\r\n\t@HostListener('window:resize', ['$event'])\r\n\tonResize() {\r\n\t\tthis.updVisible();\r\n\t}\r\n\r\n\tconstructor(private clipboard: Clipboard) {\r\n\t\tthis.updVisible();\r\n\t\teffect(() => {\r\n\t\t\tif (this.field()) {\r\n\t\t\t\tif (this.field()?.type === 'select') {\r\n\t\t\t\t\tthis.items = [\r\n\t\t\t\t\t\t...this.commonItems,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: '复制项值【OptionValue】',\r\n\t\t\t\t\t\t\ticon: 'pi pi-clone',\r\n\t\t\t\t\t\t\tcommand: () => {\r\n\t\t\t\t\t\t\t\tconst value = this.field()?.form?.model()?.[this.field()?.key!];\r\n\t\t\t\t\t\t\t\tthis.clipboard.copy(value);\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: '复制项名称【OptionLabel】',\r\n\t\t\t\t\t\t\ticon: 'pi pi-clone',\r\n\t\t\t\t\t\t\tcommand: () => {\r\n\t\t\t\t\t\t\t\tconst value = this.field()?.form?.model()?.[this.field()?.key!];\r\n\t\t\t\t\t\t\t\tconst optionValue = this.field()?.selectProps?.optionValue || 'value';\r\n\t\t\t\t\t\t\t\tconst optionLabel = this.field()?.selectProps?.optionLabel || 'label';\r\n\t\t\t\t\t\t\t\tconst result = this.field()?.selectProps?.options?.find((item) => item[optionValue] === value)?.[optionLabel];\r\n\t\t\t\t\t\t\t\tthis.clipboard.copy(result);\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t];\r\n\t\t\t\t} else if (this.field()?.type === 'treeselect') {\r\n\t\t\t\t\tthis.items = [\r\n\t\t\t\t\t\t...this.commonItems,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: '复制项值【OptionValue】',\r\n\t\t\t\t\t\t\ticon: 'pi pi-clone',\r\n\t\t\t\t\t\t\tcommand: () => {\r\n\t\t\t\t\t\t\t\tconst value = this.field()?.form?.model()?.[this.field()?.key!];\r\n\t\t\t\t\t\t\t\tthis.clipboard.copy(value);\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: '复制项名称【OptionLabel】',\r\n\t\t\t\t\t\t\ticon: 'pi pi-clone',\r\n\t\t\t\t\t\t\tcommand: () => {\r\n\t\t\t\t\t\t\t\tconst value = this.field()?.form?.model()?.[this.field()?.key!];\r\n\t\t\t\t\t\t\t\tconst options: any[] = this.field()?.treeSelectProps?.options!;\r\n\t\t\t\t\t\t\t\tconst result = this.findLabelByTreeValue(options, value) || '';\r\n\t\t\t\t\t\t\t\tthis.clipboard.copy(result);\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.items = [\r\n\t\t\t\t\t\t...this.commonItems,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: '复制值【Value】',\r\n\t\t\t\t\t\t\ticon: 'pi pi-clone',\r\n\t\t\t\t\t\t\tcommand: () => {\r\n\t\t\t\t\t\t\t\tconst value = this.field()?.form?.model()?.[this.field()?.key!];\r\n\t\t\t\t\t\t\t\tthis.clipboard.copy(value);\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfindLabelByTreeValue(options: any[], value: any): string | undefined {\r\n\t\tfor (const option of options) {\r\n\t\t\tif (option.key === value) {\r\n\t\t\t\treturn option.label;\r\n\t\t\t}\r\n\t\t\tif (option.children) {\r\n\t\t\t\tconst foundInChildren = this.findLabelByTreeValue(option.children, value);\r\n\t\t\t\tif (foundInChildren) return foundInChildren;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\tupdVisible() {\r\n\t\tthis.visible = window.innerWidth > 1024;\r\n\t}\r\n}\r\n","import { Component, input, effect, ViewChild, ElementRef, Renderer2 } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { FormField, FieldProps } from '../form-field/form-field';\r\nimport { ActionService } from '../../service/action.service';\r\n\r\nexport interface InputTextProps extends FieldProps {\r\n\ttemplates?: string[];\r\n}\r\n\r\n@Component({\r\n\tselector: 'form-inputtext',\r\n\tstandalone: true,\r\n\timports: [InputTextModule, ReactiveFormsModule],\r\n\ttemplate: `<input\r\n\t\t#inputRef\r\n\t\ttype=\"text\"\r\n\t\tpInputText\r\n\t\t[id]=\"field()?.uuid\"\r\n\t\t[variant]=\"props.variant\"\r\n\t\t[fluid]=\"props.fluid ?? true\"\r\n\t\t[pSize]=\"props.size\"\r\n\t\t[class]=\"props.class\"\r\n\t\t[formControl]=\"field()!.fieldControl!\" />`,\r\n\tstyleUrl: '../../styles/styles.scss',\r\n})\r\nexport class InputTextComponent {\r\n\t@ViewChild('inputRef', { read: ElementRef, static: false }) inputRef!: ElementRef;\r\n\tfield = input<FormField>();\r\n\tprops: InputTextProps = {};\r\n\ttemplateIndex = 0;\r\n\r\n\tconstructor(\r\n\t\tprivate action: ActionService,\r\n\t\tprivate renderer: Renderer2,\r\n\t) {\r\n\t\teffect(() => {\r\n\t\t\tif (this.field()) {\r\n\t\t\t\tthis.props = this.field()!.inputTextProps!;\r\n\t\t\t\tthis.handleHookChange();\r\n\t\t\t\tthis.handleDisabled();\r\n\t\t\t}\r\n\t\t});\r\n\t\teffect(() => {\r\n\t\t\tconst labelAction = this.action.getFieldLabelAction();\r\n\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (labelAction.type == 'mouseenter') {\r\n\t\t\t\tthis.renderer.addClass(this.inputRef.nativeElement, 'ng-hovered');\r\n\t\t\t} else if (labelAction.type == 'mouseleave') {\r\n\t\t\t\tthis.renderer.removeClass(this.inputRef.nativeElement, 'ng-hovered');\r\n\t\t\t} else if (labelAction.type == 'click') {\r\n\t\t\t\tthis.inputRef.nativeElement.focus();\r\n\t\t\t} else if (labelAction.type == 'dblclick') {\r\n\t\t\t\tif (!this.props.templates || !this.props.templates.length) return;\r\n\t\t\t\tthis.field()?.fieldControl?.setValue(\r\n\t\t\t\t\tthis.props.templates[\r\n\t\t\t\t\t\t((this.templateIndex % this.props.templates.length) + this.props.templates.length) % this.props.templates.length\r\n\t\t\t\t\t],\r\n\t\t\t\t\t{ emitEvent: true },\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t);\r\n\t\t\t\tthis.templateIndex++;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\thandleHookChange() {\r\n\t\tthis.field()?.fieldControl?.hookChange.subscribe((value) => {\r\n\t\t\tif (!value) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\r\n\t\t});\r\n\t}\r\n\r\n\thandleDisabled() {\r\n\t\tif (this.props?.disabled) {\r\n\t\t\tthis.field()!.fieldControl!.disable({ emitEvent: false });\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component, input, effect, ViewChild, ElementRef, Renderer2 } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { InputNumber } from 'primeng/inputnumber';\r\nimport { FormField, FieldProps, AttributeEvent } from '../form-field/form-field';\r\nimport { ActionService } from '../../service/action.service';\r\n\r\nexport interface InputNumberProps extends FieldProps {\r\n\tfluid?: boolean;\r\n\tshowButtons?: boolean;\r\n\tformat?: boolean;\r\n\tbuttonLayout?: string;\r\n\tmaxlength?: number;\r\n\ttabindex?: number;\r\n\tariaRequired?: boolean;\r\n\tautocomplete?: string;\r\n\tincrementButtonClass?: string;\r\n\tdecrementButtonClass?: string;\r\n\tincrementButtonIcon?: string;\r\n\tdecrementButtonIcon?: string;\r\n\tstep?: number;\r\n\tallowEmpty?: boolean;\r\n\tlocale?: string;\r\n\tlocaleMatcher?: any;\r\n\tmode?: any;\r\n\tcurrency?: string;\r\n\tcurrencyDisplay?: any;\r\n\tuseGrouping?: boolean;\r\n\tminFractionDigits?: number;\r\n\tmaxFractionDigits?: number;\r\n\tprefix?: string;\r\n\tsuffix?: string;\r\n\tshowClear?: boolean;\r\n\r\n\tonInput?: AttributeEvent;\r\n\tonFocus?: AttributeEvent;\r\n\tonBlur?: AttributeEvent;\r\n\tonKeyDown?: AttributeEvent;\r\n\tonClear?: AttributeEvent;\r\n}\r\n\r\n@Component({\r\n\tselector: 'form-inputnumber',\r\n\tstandalone: true,\r\n\timports: [InputTextModule, InputNumber, ReactiveFormsModule],\r\n\tstyles: `\r\n\t\t.field-vvvv {\r\n\t\t\tbackground: red;\r\n\t\t}\r\n\t`,\r\n\ttemplate: `<p-inputnumber\r\n\t\t[id]=\"field()?.uuid\"\r\n\t\t[inputId]=\"field()?.uuid\"\r\n\t\t[variant]=\"props.variant ?? 'outlined'\"\r\n\t\t[fluid]=\"props.fluid\"\r\n\t\t[size]=\"props.size\"\r\n\t\t[showButtons]=\"props.showButtons\"\r\n\t\t[format]=\"props.format ?? true\"\r\n\t\t[buttonLayout]=\"props.buttonLayout ?? 'stacked'\"\r\n\t\t[styleClass]=\"props.styleClass\"\r\n\t\t[maxlength]=\"props.maxlength ?? null\"\r\n\t\t[ariaLabelledBy]=\"props.ariaLabelledBy\"\r\n\t\t[ariaLabel]=\"props.ariaLabel\"\r\n\t\t[ariaRequired]=\"props.ariaRequired\"\r\n\t\t[autocomplete]=\"props.autocomplete\"\r\n\t\t[min]=\"props.min\"\r\n\t\t[max]=\"props.max\"\r\n\t\t[incrementButtonClass]=\"props.incrementButtonClass\"\r\n\t\t[decrementButtonClass]=\"props.decrementButtonClass\"\r\n\t\t[incrementButtonIcon]=\"props.incrementButtonIcon\"\r\n\t\t[decrementButtonIcon]=\"props.decrementButtonIcon\"\r\n\t\t[step]=\"props.step\"\r\n\t\t[allowEmpty]=\"props.allowEmpty ?? true\"\r\n\t\t[locale]=\"props.locale\"\r\n\t\t[localeMatcher]=\"props.localeMatcher\"\r\n\t\t[mode]=\"props.mode\"\r\n\t\t[currency]=\"props.currency\"\r\n\t\t[currencyDisplay]=\"props.currencyDisplay\"\r\n\t\t[useGrouping]=\"props.useGrouping\"\r\n\t\t[variant]=\"props.variant\"\r\n\t\t[minFractionDigits]=\"props.minFractionDigits\"\r\n\t\t[maxFractionDigits]=\"props.maxFractionDigits\"\r\n\t\t[prefix]=\"props.prefix\"\r\n\t\t[suffix]=\"props.suffix\"\r\n\t\t[inputStyle]=\"props.inputStyle\"\r\n\t\t[inputStyleClass]=\"props.inputStyleClass\"\r\n\t\t[showClear]=\"props.showClear\"\r\n\t\t[autofocus]=\"props.autofocus\"\r\n\t\t[fluid]=\"props.fluid == undefined ? true : props.fluid\"\r\n\t\t(onInput)=\"props.onInput?.(field()!, $event)\"\r\n\t\t(onFocus)=\"props.onFocus?.(field()!, $event)\"\r\n\t\t(onBlur)=\"props.onBlur?.(field()!, $event)\"\r\n\t\t(onKeyDown)=\"props.onKeyDown?.(field()!, $event)\"\r\n\t\t(onClear)=\"props.onClear?.(field()!, $event)\"\r\n\t\t[class]=\"props.class ?? 'field-vvvv'\"\r\n\t\t[formControl]=\"field()!.fieldControl!\" />`,\r\n\tstyleUrl: '../../styles/styles.scss',\r\n})\r\nexport class InputNumberComponent {\r\n\t@ViewChild(InputNumber, { static: false }) inputNumber!: InputNumber;\r\n\t@ViewChild(InputNumber, { read: ElementRef, static: false }) inputNumberRef!: ElementRef;\r\n\tfield = input<FormField>();\r\n\tprops: InputNumberProps = {};\r\n\r\n\tconstructor(\r\n\t\tprivate action: ActionService,\r\n\t\tprivate renderer: Renderer2,\r\n\t) {\r\n\t\teffect(() => {\r\n\t\t\tif (this.field()) {\r\n\t\t\t\tthis.props = this.field()!.inputNumberProps!;\r\n\t\t\t\tthis.handleHookChange();\r\n\t\t\t\tthis.handleDisabled();\r\n\t\t\t}\r\n\t\t});\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst labelAction = this.action.getFieldLabelAction();\r\n\t\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (labelAction.type == 'mouseenter') {\r\n\t\t\t\t\tthis.renderer.addClass(this.inputNumberRef.nativeElement, 'ng-hovered');\r\n\t\t\t\t} else if (labelAction.type == 'mouseleave') {\r\n\t\t\t\t\tthis.renderer.removeClass(this.inputNumberRef.nativeElement, 'ng-hovered');\r\n\t\t\t\t} else if (labelAction.type == 'click') {\r\n\t\t\t\t\tthis.inputNumber.input.nativeElement.focus();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t}\r\n\r\n\thandleHookChange() {\r\n\t\tthis.field()?.fieldControl?.hookChange.subscribe((value) => {\r\n\t\t\tif (!value) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\r\n\t\t});\r\n\t}\r\n\r\n\thandleDisabled() {\r\n\t\tif (this.props?.disabled) {\r\n\t\t\tthis.field()!.fieldControl!.disable({ emitEvent: false });\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component, input, effect, ViewChild, ElementRef, Renderer2 } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FormField, FieldProps, AttributeEvent } from '../form-field/form-field';\r\nimport { Select } from 'primeng/select';\r\nimport { ScrollerOptions, OverlayOptions } from 'primeng/api';\r\nimport { ActionService } from '../../service/action.service';\r\n\r\nexport interface SelectProps extends FieldProps {\r\n\tscrollHeight?: string;\r\n\tfilter?: boolean;\r\n\tpanelStyle?: any;\r\n\tpanelStyleClass?: string;\r\n\treadonly?: boolean;\r\n\teditable?: boolean;\r\n\tappendTo?: any;\r\n\ttabindex?: number;\r\n\tloadingIcon?: string;\r\n\tfilterPlaceholder?: string;\r\n\tfilterLocale?: string;\r\n\tdataKey?: string;\r\n\tfilterBy?: string;\r\n\tfilterFields?: any[];\r\n\tresetFilterOnHide?: boolean;\r\n\tcheckmark?: boolean;\r\n\tdropdownIcon?: string;\r\n\tloading?: string;\r\n\toptionLabel?: string;\r\n\toptionValue?: string;\r\n\toptionDisabled?: string;\r\n\toptionGroupLabel?: string;\r\n\toptionGroupChildren?: string;\r\n\tgroup?: boolean;\r\n\tshowClear?: boolean;\r\n\temptyFilterMessage?: any;\r\n\temptyMessage?: any;\r\n\tlazy?: boolean;\r\n\tvirtualScroll?: boolean;\r\n\tvirtualScrollItemSize?: number;\r\n\tvirtualScrollOptions?: ScrollerOptions;\r\n\toverlayOptions?: OverlayOptions;\r\n\tariaFilterLabel?: string;\r\n\tfilterMatchMode?: any;\r\n\tmaxlength?: any;\r\n\ttooltip?: any;\r\n\ttooltipPosition?: 'right' | 'left' | 'top' | 'bottom';\r\n\ttooltipPositionStyle?: string;\r\n\ttooltipStyleClass?: string;\r\n\tfocusOnHover?: boolean;\r\n\tfilterValue?: string;\r\n\toptions?: any[];\r\n\r\n\tonChange?: AttributeEvent;\r\n\tonFilter?: AttributeEvent;\r\n\tonFocus?: AttributeEvent;\r\n\tonBlur?: AttributeEvent;\r\n\tonClick?: AttributeEvent;\r\n\tonShow?: AttributeEvent;\r\n\tonHide?: AttributeEvent;\r\n\tonClear?: AttributeEvent;\r\n\tonLazyLoad?: AttributeEvent;\r\n}\r\n\r\n@Component({\r\n\tselector: 'form-select',\r\n\tstandalone: true,\r\n\timports: [Select, ReactiveFormsModule],\r\n\ttemplate: `<p-select\r\n\t\t[id]=\"field()?.uuid\"\r\n\t\t[inputId]=\"field()?.uuid\"\r\n\t\t[scrollHeight]=\"props.scrollHeight ?? '200px'\"\r\n\t\t[filter]=\"props.filter\"\r\n\t\t[name]=\"props.name\"\r\n\t\t[options]=\"props.options\"\r\n\t\t[optionLabel]=\"props.optionLabel\"\r\n\t\t[optionValue]=\"props.optionValue\"\r\n\t\t[placeholder]=\"props.placeholder\"\r\n\t\t[class]=\"props.class\"\r\n\t\t[style]=\"props.style\"\r\n\t\t[panelStyle]=\"props.panelStyle\"\r\n\t\t[panelStyleClass]=\"props.panelStyleClass\"\r\n\t\t[readonly]=\"props.readonly\"\r\n\t\t[editable]=\"props.editable\"\r\n\t\t[appendTo]=\"props.appendTo ?? 'body'\"\r\n\t\t[tabindex]=\"props.tabindex\"\r\n\t\t[placeholder]=\"props.placeholder\"\r\n\t\t[loadingIcon]=\"props.loadingIcon\"\r\n\t\t[filterPlaceholder]=\"props.filterPlaceholder\"\r\n\t\t[filterLocale]=\"props.filterLocale\"\r\n\t\t[variant]=\"props.variant\"\r\n\t\t[dataKey]=\"props.dataKey\"\r\n\t\t[filterBy]=\"props.filterBy\"\r\n\t\t[filterFields]=\"props.filterFields\"\r\n\t\t[autofocus]=\"props.autofocus\"\r\n\t\t[resetFilterOnHide]=\"props.resetFilterOnHide\"\r\n\t\t[checkmark]=\"props.checkmark\"\r\n\t\t[dropdownIcon]=\"props.dropdownIcon\"\r\n\t\t[loading]=\"props.loading\"\r\n\t\t[optionDisabled]=\"props.optionDisabled\"\r\n\t\t[optionGroupLabel]=\"props.optionGroupLabel\"\r\n\t\t[optionGroupChildren]=\"props.optionGroupChildren ?? 'items'\"\r\n\t\t[group]=\"props.group\"\r\n\t\t[showClear]=\"props.showClear\"\r\n\t\t[emptyFilterMessage]=\"props.emptyFilterMessage\"\r\n\t\t[emptyMessage]=\"props.emptyMessage\"\r\n\t\t[lazy]=\"props.lazy\"\r\n\t\t[virtualScroll]=\"props.virtualScroll\"\r\n\t\t[virtualScrollItemSize]=\"props.virtualScrollItemSize\"\r\n\t\t[virtualScrollOptions]=\"props.virtualScrollOptions\"\r\n\t\t[overlayOptions]=\"props.overlayOptions\"\r\n\t\t[size]=\"props.size\"\r\n\t\t[ariaFilterLabel]=\"props.ariaFilterLabel\"\r\n\t\t[ariaLabel]=\"props.ariaLabel\"\r\n\t\t[ariaLabelledBy]=\"props.ariaLabelledBy\"\r\n\t\t[filterMatchMode]=\"props.filterMatchMode\"\r\n\t\t[maxlength]=\"props.maxlength\"\r\n\t\t[tooltip]=\"props.tooltip\"\r\n\t\t[tooltipPosition]=\"props.tooltipPosition ?? 'right'\"\r\n\t\t[tooltipPositionStyle]=\"props.tooltipPositionStyle ?? 'absolute'\"\r\n\t\t[tooltipStyleClass]=\"props.tooltipStyleClass\"\r\n\t\t[focusOnHover]=\"props.focusOnHover ?? true\"\r\n\t\t[fluid]=\"props.fluid ?? true\"\r\n\t\t[filterValue]=\"props.filterValue\"\r\n\t\t(onChange)=\"props.onChange?.(field()!, $event)\"\r\n\t\t(onFilter)=\"props.onFilter?.(field()!, $event)\"\r\n\t\t(onFocus)=\"props.onFocus?.(field()!, $event)\"\r\n\t\t(onBlur)=\"props.onBlur?.(field()!, $event)\"\r\n\t\t(onClick)=\"props.onClick?.(field()!, $event)\"\r\n\t\t(onShow)=\"props.onShow?.(field()!, $event)\"\r\n\t\t(onHide)=\"props.onHide?.(field()!, $event)\"\r\n\t\t(onClear)=\"props.onClear?.(field()!, $event)\"\r\n\t\t(onLazyLoad)=\"props.onLazyLoad?.(field()!, $event)\"\r\n\t\t[class]=\"props.class\"\r\n\t\t[formControl]=\"field()!.fieldControl!\" />`,\r\n\tstyleUrl: '../../styles/styles.scss',\r\n})\r\nexport class SelectComponent {\r\n\t@ViewChild(Select, { static: false }) select!: Select;\r\n\t@ViewChild(Select, { read: ElementRef, static: false }) selectRef!: ElementRef;\r\n\tfield = input<FormField>();\r\n\tprops: SelectProps = {};\r\n\r\n\tconstructor(\r\n\t\tprivate action: ActionService,\r\n\t\tprivate renderer: Renderer2,\r\n\t) {\r\n\t\teffect(() => {\r\n\t\t\tif (this.field()) {\r\n\t\t\t\tthis.props = this.field()!.selectProps!;\r\n\t\t\t\tthis.handleHookChange();\r\n\t\t\t\tthis.handleDisabled();\r\n\t\t\t}\r\n\t\t});\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst labelAction = this.action.getFieldLabelAction();\r\n\t\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (labelAction.type == 'mouseenter') {\r\n\t\t\t\t\tthis.renderer.addClass(this.selectRef.nativeElement, 'ng-hovered');\r\n\t\t\t\t} else if (labelAction.type == 'mouseleave') {\r\n\t\t\t\t\tthis.renderer.removeClass(this.selectRef.nativeElement, 'ng-hovered');\r\n\t\t\t\t} else if (labelAction.type == 'click') {\r\n\t\t\t\t\tif (!this.select.overlayVisible) {\r\n\t\t\t\t\t\tthis.select.show();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t}\r\n\r\n\thandleHookChange() {\r\n\t\tthis.field()?.fieldControl?.hookChange.subscribe((value) => {\r\n\t\t\tif (!value) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\r\n\t\t});\r\n\t}\r\n\r\n\thandleDisabled() {\r\n\t\tif (this.props?.disabled) {\r\n\t\t\tthis.field()!.fieldControl!.disable({ emitEvent: false });\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component, input, effect, ViewChild, ElementRef, Renderer2 } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FormField, FieldProps, AttributeEvent } from '../form-field/form-field';\r\nimport { TreeSelect } from 'primeng/treeselect';\r\nimport { ScrollerOptions, OverlayOptions } from 'primeng/api';\r\nimport { TreeNode } from 'primeng/api';\r\nimport { ActionService } from '../../service/action.service';\r\n\r\nexport interface TreeSelectProps extends FieldProps {\r\n\tscrollHeight?: string;\r\n\tmetaKeySelection?: boolean;\r\n\tdisplay?: 'chip' | 'comma';\r\n\tselectionMode?: 'single' | 'multiple' | 'checkbox';\r\n\ttabindex?: string;\r\n\tpanelClass?: any;\r\n\tcontainerStyle?: any;\r\n\tcontainerStyleClass?: string;\r\n\tlabelStyle?: any;\r\n\tlabelStyleClass?: string;\r\n\tfilterMode?: string;\r\n\tfilter?: boolean;\r\n\tpanelStyle?: any;\r\n\tpanelStyleClass?: string;\r\n\tappendTo?: any;\r\n\tfilterPlaceholder?: string;\r\n\tfilterLocale?: string;\r\n\tfilterBy?: string;\r\n\toverlayOptions?: OverlayOptions;\r\n\temptyMessage?: any;\r\n\tfilterInputAutoFocus?: boolean;\r\n\tpropagateSelectionDown?: boolean;\r\n\tpropagateSelectionUp?: boolean;\r\n\tshowClear?: boolean;\r\n\tresetFilterOnHide?: boolean;\r\n\tvirtualScroll?: boolean;\r\n\tvirtualScrollItemSize?: number;\r\n\tvirtualScrollOptions?: ScrollerOptions;\r\n\toptions?: TreeNode<any>[];\r\n\tloading?: string;\r\n\tmaxlength?: any;\r\n\r\n\tonHookChange?: AttributeEvent;\r\n\tonNodeExpand?: AttributeEvent;\r\n\tonNodeCollapse?: AttributeEvent;\r\n\tonShow?: AttributeEvent;\r\n\tonHide?: AttributeEvent;\r\n\tonClear?: AttributeEvent;\r\n\tonFilter?: AttributeEvent;\r\n\tonFocus?: AttributeEvent;\r\n\tonBlur?: AttributeEvent;\r\n\tonNodeSelect?: AttributeEvent;\r\n\tonNodeUnselect?: AttributeEvent;\r\n}\r\n\r\n@Component({\r\n\tselector: 'form-treeselect',\r\n\tstandalone: true,\r\n\timports: [TreeSelect, ReactiveFormsModule],\r\n\ttemplate: `<p-treeselect\r\n\t\t[id]=\"field()?.uuid\"\r\n\t\t[inputId]=\"field()?.uuid\"\r\n\t\t[scrollHeight]=\"props.scrollHeight ?? '400px'\"\r\n\t\t[metaKeySelection]=\"props.metaKeySelection\"\r\n\t\t[variant]=\"props.variant\"\r\n\t\t[display]=\"props.display ?? 'comma'\"\r\n\t\t[selectionMode]=\"props.selectionMode ?? 'single'\"\r\n\t\t[tabindex]=\"props.tabindex ?? '0'\"\r\n\t\t[ariaLabel]=\"props.ariaLabel\"\r\n\t\t[ariaLabelledBy]=\"props.ariaLabelledBy\"\r\n\t\t[placeholder]=\"props.placeholder\"\r\n\t\t[panelClass]=\"props.panelClass\"\r\n\t\t[fluid]=\"props.fluid ?? true\"\r\n\t\t[panelStyleClass]=\"props.panelStyleClass\"\r\n\t\t[containerStyle]=\"props.containerStyle\"\r\n\t\t[containerStyleClass]=\"props.containerStyleClass\"\r\n\t\t[labelStyle]=\"props.labelStyle\"\r\n\t\t[labelStyleClass]=\"props.labelStyleClass\"\r\n\t\t[overlayOptions]=\"props.overlayOptions\"\r\n\t\t[emptyMessage]=\"props.emptyMessage\"\r\n\t\t[appendTo]=\"props.appendTo ?? 'body'\"\r\n\t\t[filter]=\"props.filter\"\r\n\t\t[filterBy]=\"props.filterBy ?? 'label'\"\r\n\t\t[filterMode]=\"props.filterMode ?? 'lenient'\"\r\n\t\t[filterPlaceholder]=\"props.filterPlaceholder\"\r\n\t\t[filterLocale]=\"props.filterLocale\"\r\n\t\t[filterInputAutoFocus]=\"props.filterInputAutoFocus ?? true\"\r\n\t\t[propagateSelectionDown]=\"props.propagateSelectionDown ?? true\"\r\n\t\t[propagateSelectionUp]=\"props.propagateSelectionUp ?? true\"\r\n\t\t[showClear]=\"props.showClear\"\r\n\t\t[resetFilterOnHide]=\"props.resetFilterOnHide\"\r\n\t\t[virtualScroll]=\"props.virtualScroll\"\r\n\t\t[virtualScrollItemSize]=\"props.virtualScrollItemSize\"\r\n\t\t[virtualScrollOptions]=\"props.virtualScrollOptions\"\r\n\t\t[size]=\"props.size\"\r\n\t\t[autofocus]=\"props.autofocus\"\r\n\t\t[ariaLabel]=\"props.ariaLabel\"\r\n\t\t[ariaLabelledBy]=\"props.ariaLabelledBy\"\r\n\t\t[options]=\"props.options\"\r\n\t\t[class]=\"props.class\"\r\n\t\t[style]=\"props.style\"\r\n\t\t[panelStyle]=\"props.panelStyle\"\r\n\t\t[placeholder]=\"props.placeholder\"\r\n\t\t[loading]=\"props.loading\"\r\n\t\t(onNodeExpand)=\"props.onNodeExpand?.(field()!, $event)\"\r\n\t\t(onNodeCollapse)=\"props.onNodeCollapse?.(field()!, $event)\"\r\n\t\t(onShow)=\"props.onShow?.(field()!, $event)\"\r\n\t\t(onHide)=\"props.onHide?.(field()!, $event)\"\r\n\t\t(onClear)=\"props.onClear?.(field()!, $event)\"\r\n\t\t(onFilter)=\"props.onFilter?.(field()!, $event)\"\r\n\t\t(onFocus)=\"props.onFocus?.(field()!, $event)\"\r\n\t\t(onBlur)=\"props.onBlur?.(field()!, $event)\"\r\n\t\t(onNodeSelect)=\"props.onNodeSelect?.(field()!, $event)\"\r\n\t\t(onNodeUnselect)=\"props.onNodeUnselect?.(field()!, $event)\"\r\n\t\t[class]=\"props.class\"\r\n\t\t[disabled]=\"true\"\r\n\t\t[formControl]=\"field()!.fieldControl!\" />`,\r\n\tstyleUrl: '../../styles/styles.scss',\r\n})\r\nexport class TreeSelectComponent {\r\n\t@ViewChild(TreeSelect, { static: false }) treeselect!: TreeSelect;\r\n\t@ViewChild(TreeSelect, { read: ElementRef, static: false }) treeselectRef!: ElementRef;\r\n\tfield = input<FormField>();\r\n\tprops: TreeSelectProps = {};\r\n\r\n\tconstructor(\r\n\t\tprivate action: ActionService,\r\n\t\tprivate renderer: Renderer2,\r\n\t) {\r\n\t\teffect(() => {\r\n\t\t\tif (this.field()) {\r\n\t\t\t\tthis.props = this.field()!.treeSelectProps!;\r\n\t\t\t\tthis.handleHookChange();\r\n\t\t\t\tthis.handleDisabled();\r\n\t\t\t}\r\n\t\t});\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst labelAction = this.action.getFieldLabelAction();\r\n\t\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (labelAction.type == 'mouseenter') {\r\n\t\t\t\t\tthis.renderer.addClass(this.treeselectRef.nativeElement, 'ng-hovered');\r\n\t\t\t\t} else if (labelAction.type == 'mouseleave') {\r\n\t\t\t\t\tthis.renderer.removeClass(this.treeselectRef.nativeElement, 'ng-hovered');\r\n\t\t\t\t} else if (labelAction.type == 'click') {\r\n\t\t\t\t\tif (!this.treeselect.overlayVisible) {\r\n\t\t\t\t\t\tthis.treeselect.overlayVisible = true;\r\n\t\t\t\t\t\tthis.treeselect.resetFilter();\r\n\t\t\t\t\t\tthis.treeselect.onShow.emit(false);\r\n\t\t\t\t\t\tthis.treeselect.cd.markForCheck();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t}\r\n\r\n\thandleHookChange() {\r\n\t\tthis.field()?.fieldControl?.hookChange.subscribe((value) => {\r\n\t\t\tif (!value) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\r\n\t\t});\r\n\t}\r\n\r\n\thandleDisabled() {\r\n\t\tsetTimeout(() => {\r\n\t\t\tif (this.props?.disabled) {\r\n\t\t\t\tthis.field()!.fieldControl!.disable({ emitEvent: false });\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","import { Component, input, effect, ViewChild, ElementRef, Renderer2, TemplateRef } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { DatePicker } from 'primeng/datepicker';\r\nimport { FormField, FieldProps, AttributeEvent } from '../form-field/form-field';\r\nimport { ActionService } from '../../service/action.service';\r\nimport { DatePipe, NgTemplateOutlet } from '@angular/common';\r\n\r\nexport interface DatePickerProps extends FieldProps {\r\n\tfluid?: boolean;\r\n\ticonAriaLabel?: string;\r\n\tdateFormat?: string;\r\n\tdatePipeFormat?: string;\r\n\tmultipleSeparator?: string;\r\n\trangeSeparator?: string;\r\n\tinline?: boolean;\r\n\tshowOtherMonths?: boolean;\r\n\tselectOtherMonths?: boolean;\r\n\tshowIcon?: boolean;\r\n\ticon?: string;\r\n\tappendTo?: any;\r\n\treadonlyInput?: boolean;\r\n\tshortYearCutoff?: any;\r\n\thourFormat?: string;\r\n\ttimeOnly?: boolean;\r\n\tstepHour?: number;\r\n\tstepMinute?: number;\r\n\tstepSecond?: number;\r\n\tshowOnFocus?: boolean;\r\n\tshowWeek?: boolean;\r\n\tstartWeekFromFirstDayOfYear?: boolean;\r\n\tshowClear?: boolean;\r\n\tdataType?: string;\r\n\tselectionMode?: 'range' | 'single' | 'multiple';\r\n\tmaxDateCount?: number;\r\n\tshowButtonBar?: boolean;\r\n\ttodayButtonStyleClass?: string;\r\n\tclearButtonStyleClass?: string;\r\n\tbaseZIndex?: number;\r\n\tpanelStyleClass?: string;\r\n\tpanelStyle?: any;\r\n\tkeepInvalid?: boolean;\r\n\thideOnDateTimeSelect?: boolean;\r\n\ttouchUI?: boolean;\r\n\ttimeSeparator?: string;\r\n\tfocusTrap?: boolean;\r\n\tshowTransitionOptions?: string;\r\n\thideTransitionOptions?: string;\r\n\tminDate?: Date;\r\n\tmaxDate?: Date;\r\n\tdisabledDates?: Date[];\r\n\tdisabledDays?: number[];\r\n\tshowTime?: boolean;\r\n\tshowSeconds?: boolean;\r\n\tresponsiveOptions?: any[];\r\n\tnumberOfMonths?: number;\r\n\tfirstDayOfWeek?: number;\r\n\tview?: any;\r\n\tdefaultDate?: Date;\r\n\ttabindex?: number;\r\n\tautoZIndex?: boolean;\r\n\r\n\tonHookChange?: AttributeEvent;\r\n\tonInput?: AttributeEvent;\r\n\tonFocus?: AttributeEvent;\r\n\tonBlur?: AttributeEvent;\r\n\tonClose?: AttributeEvent;\r\n\tonSelect?: AttributeEvent;\r\n\tonClear?: AttributeEvent;\r\n\tonTodayClick?: AttributeEvent;\r\n\tonClearClick?: AttributeEvent;\r\n\tonMonthChange?: AttributeEvent;\r\n\tonYearChange?: AttributeEvent;\r\n\tonClickOutside?: AttributeEvent;\r\n\tonShow?: AttributeEvent;\r\n\tfooterTemplate?: TemplateRef<any>;\r\n}\r\n\r\n@Component({\r\n\tselector: 'form-datepicker',\r\n\tstandalone: true,\r\n\tproviders: [DatePipe],\r\n\timports: [DatePicker, ReactiveFormsModule, NgTemplateOutlet],\r\n\ttemplate: `<p-datepicker\r\n\t\t[id]=\"field()?.uuid\"\r\n\t\t[inputId]=\"field()?.uuid\"\r\n\t\t[variant]=\"props.variant ?? 'outlined'\"\r\n\t\t[fluid]=\"props.fluid\"\r\n\t\t[size]=\"props.size\"\r\n\t\t[styleClass]=\"props.styleClass\"\r\n\t\t[inputStyle]=\"props.inputStyle\"\r\n\t\t[inputStyleClass]=\"props.inputStyleClass\"\r\n\t\t[name]=\"props.name\"\r\n\t\t[placeholder]=\"props.placeholder\"\r\n\t\t[ariaLabelledBy]=\"props.ariaLabelledBy\"\r\n\t\t[ariaLabel]=\"props.ariaLabel\"\r\n\t\t[iconAriaLabel]=\"props.iconAriaLabel\"\r\n\t\t[dateFormat]=\"props.dateFormat ?? 'yy-mm-dd'\"\r\n\t\t[multipleSeparator]=\"props.multipleSeparator ?? ','\"\r\n\t\t[rangeSeparator]=\"props.rangeSeparator ?? '-'\"\r\n\t\t[inline]=\"props.inline\"\r\n\t\t[showOtherMonths]=\"props.showOtherMonths ?? true\"\r\n\t\t[selectOtherMonths]=\"props.selectOtherMonths\"\r\n\t\t[showIcon]=\"props.showIcon\"\r\n\t\t[fluid]=\"props.fluid ?? true\"\r\n\t\t[icon]=\"props.icon\"\r\n\t\t[appendTo]=\"props.appendTo ?? 'body'\"\r\n\t\t[readonlyInput]=\"props.readonlyInput\"\r\n\t\t[shortYearCutoff]=\"props.shortYearCutoff\"\r\n\t\t[hourFormat]=\"props.hourFormat ?? '24'\"\r\n\t\t[timeOnly]=\"props.timeOnly\"\r\n\t\t[stepHour]=\"props.stepHour ?? 1\"\r\n\t\t[stepMinute]=\"props.stepMinute ?? 1\"\r\n\t\t[stepSecond]=\"props.stepSecond ?? 1\"\r\n\t\t[showSeconds]=\"props.showSeconds ?? !!props.showTime\"\r\n\t\t[showOnFocus]=\"props.showOnFocus ?? true\"\r\n\t\t[showWeek]=\"props.showWeek\"\r\n\t\t[startWeekFromFirstDayOfYear]=\"!!props.startWeekFromFirstDayOfYear\"\r\n\t\t[showClear]=\"props.showClear\"\r\n\t\t[dataType]=\"props.dataType ?? 'string'\"\r\n\t\t[selectionMode]=\"props.selectionMode ?? 'single'\"\r\n\t\t[maxDateCount]=\"props.maxDateCount\"\r\n\t\t[showButtonBar]=\"props.showButtonBar\"\r\n\t\t[todayButtonStyleClass]=\"props.todayButtonStyleClass\"\r\n\t\t[clearButtonStyleClass]=\"props.clearButtonStyleClass\"\r\n\t\t[autofocus]=\"props.autofocus\"\r\n\t\t[autoZIndex]=\"props.autoZIndex ?? true\"\r\n\t\t[baseZIndex]=\"props.baseZIndex ?? 0\"\r\n\t\t[panelStyleClass]=\"props.panelStyleClass\"\r\n\t\t[panelStyle]=\"props.panelStyle\"\r\n\t\t[keepInvalid]=\"props.keepInvalid\"\r\n\t\t[hideOnDateTimeSelect]=\"props.hideOnDateTimeSelect ?? true\"\r\n\t\t[touchUI]=\"props.touchUI\"\r\n\t\t[timeSeparator]=\"props.timeSeparator ?? ':'\"\r\n\t\t[focusTrap]=\"props.focusTrap ?? true\"\r\n\t\t[showTransitionOptions]=\"props.showTransitionOptions ?? '.12s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\t\t[hideTransitionOptions]=\"props.hideTransitionOptions ?? '.1s linear'\"\r\n\t\t[tabindex]=\"props.tabindex\"\r\n\t\t[minDate]=\"props.minDate\"\r\n\t\t[maxDate]=\"props.maxDate\"\r\n\t\t[disabledDates]=\"props.disabledDates ?? []\"\r\n\t\t[disabledDays]=\"props.disabledDays ?? []\"\r\n\t\t[showTime]=\"!!props.showTime\"\r\n\t\t[responsiveOptions]=\"props.responsiveOptions ?? []\"\r\n\t\t[numberOfMonths]=\"props.numberOfMonths ?? 1\"\r\n\t\t[firstDayOfWeek]=\"props.firstDayOfWeek ?? 7\"\r\n\t\t[view]=\"props.view ?? 'date'\"\r\n\t\t[defaultDate]=\"props.defaultDate!\"\r\n\t\t(onInput)=\"props.onInput?.(field()!, $event)\"\r\n\t\t(onFocus)=\"props.onFocus?.(field()!, $event)\"\r\n\t\t(onBlur)=\"props.onBlur?.(field()!, $event)\"\r\n\t\t(onClose)=\"props.onClose?.(field()!, $event)\"\r\n\t\t(onSelect)=\"props.onSelect?.(field()!, $event)\"\r\n\t\t(onClear)=\"props.onClear?.(field()!, $event)\"\r\n\t\t(onTodayClick)=\"props.onTodayClick?.(field()!, $event)\"\r\n\t\t(onClearClick)=\"props.onClearClick?.(field()!, $event)\"\r\n\t\t(onMonthChange)=\"props.onMonthChange?.(field()!, $event)\"\r\n\t\t(onYearChange)=\"props.onYearChange?.(field()!, $event)\"\r\n\t\t(onClickOutside)=\"props.onClickOutside?.(field()!, $event)\"\r\n\t\t(onShow)=\"props.onShow?.(field()!, $event)\"\r\n\t\t[class]=\"props.class\"\r\n\t\t[formControl]=\"field()!.fieldControl!\">\r\n\t\t<ng-template #footer>\r\n\t\t\t@if (!!props.showTime && !props.timeOnly) {\r\n\t\t\t\t<div class=\"flex flex-row-reverse text-[12px] text-[var(--p-primary-color)] cursor-pointer\">\r\n\t\t\t\t\t<i\r\n\t\t\t\t\t\tclass=\"pi pi-replay\"\r\n\t\t\t\t\t\t(click)=\"resetTime($event)\"></i>\r\n\t\t\t\t</div>\r\n\t\t\t} @else if (!!props.footerTemplate) {\r\n\t\t\t\t<!--todo 未来加入自定义区间选项-->\r\n\t\t\t\t<ng-container *ngTemplateOutlet=\"props.footerTemplate\"></ng-container>\r\n\t\t\t}\r\n\t\t</ng-template>\r\n\t</p-datepicker>`,\r\n\tstyleUrl: '../../styles/styles.scss',\r\n})\r\nexport class DatePickerComponent {\r\n\t@ViewChild(DatePicker, { static: false }) datePicker!: DatePicker;\r\n\t@ViewChild(DatePicker, { read: ElementRef, static: false }) datePickerRef!: ElementRef;\r\n\tfield = input<FormField>();\r\n\tprops: DatePickerProps = {};\r\n\r\n\tconstructor(\r\n\t\tprivate action: ActionService,\r\n\t\tprivate renderer: Renderer2,\r\n\t\tprivate datePipe: DatePipe,\r\n\t) {\r\n\t\teffect(() => {\r\n\t\t\tif (this.field()) {\r\n\t\t\t\tthis.props = this.field()!.datePickerProps!;\r\n\t\t\t\tthis.handleHookChange();\r\n\t\t\t\tthis.handleDisabled();\r\n\t\t\t\tthis.handleDatePipeFormat();\r\n\t\t\t}\r\n\t\t});\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst labelAction = this.action.getFieldLabelAction();\r\n\t\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (labelAction.type == 'mouseenter') {\r\n\t\t\t\t\tthis.renderer.addClass(this.datePickerRef.nativeElement, 'ng-hovered');\r\n\t\t\t\t} else if (labelAction.type == 'mouseleave') {\r\n\t\t\t\t\tthis.renderer.removeClass(this.datePickerRef.nativeElement, 'ng-hovered');\r\n\t\t\t\t} else if (labelAction.type == 'click') {\r\n\t\t\t\t\tthis.datePicker.overlayVisible = true;\r\n\t\t\t\t\tthis.datePicker.onShow.emit(false);\r\n\t\t\t\t\tthis.datePicker.cd.markForCheck();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t}\r\n\r\n\tngOnInit(): void {}\r\n\r\n\thandleHookChange() {\r\n\t\tthis.field()?.fieldControl?.hookChange.subscribe((value) => {\r\n\t\t\tif (!value) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\r\n\t\t});\r\n\t}\r\n\r\n\thandleDisabled() {\r\n\t\tsetTimeout(() => {\r\n\t\t\tif (this.props?.disabled) {\r\n\t\t\t\tthis.field()!.fieldControl!.disable({ emitEvent: false });\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tresetTime(event: any) {\r\n\t\tif (!this.field()!.fieldControl!.value) return;\r\n\t\tconst currentDate = this.formatToMidnight(this.field()!.fieldControl!.value);\r\n\t\tthis.field()?.fieldControl?.setValue(currentDate, { emitEvent: true });\r\n\t}\r\n\r\n\tformatToMidnight(dateStr: string): string {\r\n\t\tif (this.props?.showSeconds === false) {\r\n\t\t\tif (/^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}$/.test(dateStr)) {\r\n\t\t\t\treturn dateStr.split(' ')[0] + ' 00:00';\r\n\t\t\t}\r\n\t\t\tthrow new Error('Invalid date format. Expected yyyy-MM-dd hh:mm');\r\n\t\t} else {\r\n\t\t\tif (/^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}$/.test(dateStr)) {\r\n\t\t\t\treturn dateStr.split(' ')[0] + ' 00:00:00';\r\n\t\t\t}\r\n\t\t\tthrow new Error('Invalid date format. Expected yyyy-MM-dd hh:mm:ss');\r\n\t\t}\r\n\t}\r\n\r\n\thandleDatePipeFormat() {\r\n\t\tthis.props.datePipeFormat = this.convertPrimeNgToDatePipeFormat(this.props.dateFormat);\r\n\t\tif (!this.props.showTime) return;\r\n\t\tconst timeSeparator = this.props.timeSeparator ?? ':';\r\n\t\tconst timeFormat = `HH${timeSeparator}mm${timeSeparator}ss`;\r\n\t\tthis.props.datePipeFormat += ` ${timeFormat}`;\r\n\t}\r\n\r\n\tconvertPrimeNgToDatePipeFormat(primeNgFormat: string | undefined): string {\r\n\t\tif (!primeNgFormat) return 'yyyy-MM-dd';\r\n\t\tconst formatMap: { [key: string]: string } = {\r\n\t\t\td: 'd',\r\n\t\t\tdd: 'dd',\r\n\t\t\tm: 'M',\r\n\t\t\tmm: 'MM',\r\n\t\t\tM: 'MMM',\r\n\t\t\tMM: 'MMMM',\r\n\t\t\ty: 'yy',\r\n\t\t\tyy: 'yyyy',\r\n\t\t};\r\n\t\tconst commonFormats: { [key: string]: string } = {\r\n\t\t\t'mm/dd/yy': 'MM/dd/yyyy',\r\n\t\t\t'dd/mm/yy': 'dd/MM/yyyy',\r\n\t\t\t'yy-mm-dd': 'yyyy-MM-dd',\r\n\t\t\t'dd-mm-yy': 'dd-MM-yyyy',\r\n\t\t\t'mm-dd-yy': 'MM-dd-yyyy',\r\n\t\t};\r\n\t\tif (commonFormats[primeNgFormat]) {\r\n\t\t\treturn commonFormats[primeNgFormat];\r\n\t\t}\r\n\t\t// 替换转义字符\r\n\t\tlet result = primeNgFormat.replace(/'([^']*)'/g, (match, p1) => {\r\n\t\t\treturn `'${p1}'`;\r\n\t\t});\r\n\t\t// 替换格式标记\r\n\t\tresult = result.replace(/[a-zA-Z]+/g, (match) => {\r\n\t\t\treturn formatMap[match] || match;\r\n\t\t});\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import { Component, input, effect, ViewChild, ElementRef, Renderer2 } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FormField, FieldProps, AttributeEvent } from '../form-field/form-field';\r\nimport { AutoComplete } from 'primeng/autocomplete';\r\nimport { ScrollerOptions, OverlayOptions } from 'primeng/api';\r\nimport { ActionService } from '../../service/action.service';\r\n\r\nexport interface AutoCompleteProps extends FieldProps {\r\n\tscrollHeight?: string;\r\n\tminLength?: number;\r\n\tdelay?: number;\r\n\tpanelStyle?: any;\r\n\tpanelStyleClass?: string;\r\n\tautoHighlight?: boolean;\r\n\tforceSelection?: boolean;\r\n\ttype?: string;\r\n\tautoZIndex?: boolean;\r\n\tbaseZIndex?: number;\r\n\tdropdownAriaLabel?: string;\r\n\tunique?: boolean;\r\n\tcompleteOnFocus?: boolean;\r\n\tdropdown?: boolean;\r\n\tshowEmptyMessage?: boolean;\r\n\tdropdownMode?: string;\r\n\tmultiple?: boolean;\r\n\tshowTransitionOptions?: string;\r\n\thideTransitionOptions?: string;\r\n\tautocomplete?: string;\r\n\toptionGroupChildren?: string;\r\n\toptionGroupLabel?: string;\r\n\tsuggestions?: any[];\r\n\toptionLabel?: string | ((item: any) => string);\r\n\toptionValue?: string | ((item: any) => string);\r\n\tsearchMessage?: string;\r\n\temptySelectionMessage?: string;\r\n\tselectionMessage?: string;\r\n\tautoOptionFocus?: boolean;\r\n\tselectOnFocus?: boolean;\r\n\tsearchLocale?: boolean;\r\n\toptionDisabled?: string;\r\n\tfocusOnHover?: boolean;\r\n\ttypeahead?: boolean;\r\n\treadonly?: boolean;\r\n\tappendTo?: any;\r\n\ttabindex?: number;\r\n\tdataKey?: string;\r\n\tdropdownIcon?: string;\r\n\tgroup?: boolean;\r\n\tshowClear?: boolean;\r\n\temptyMessage?: any;\r\n\tlazy?: boolean;\r\n\tvirtualScroll?: boolean;\r\n\tvirtualScrollItemSize?: number;\r\n\tvirtualScrollOptions?: ScrollerOptions;\r\n\toverlayOptions?: OverlayOptions;\r\n\tmaxlength?: any;\r\n\r\n\tcompleteMethod?: AttributeEvent;\r\n\tonSelect?: AttributeEvent;\r\n\tonUnselect?: AttributeEvent;\r\n\tonFocus?: AttributeEvent;\r\n\tonBlur?: AttributeEvent;\r\n\tonDropdownClick?: AttributeEvent;\r\n\tonClear?: AttributeEvent;\r\n\tonKeyUp?: AttributeEvent;\r\n\tonShow?: AttributeEvent;\r\n\tonHide?: AttributeEvent;\r\n\tonLazyLoad?: AttributeEvent;\r\n}\r\n\r\n@Component({\r\n\tselector: 'form-autocomplete',\r\n\tstandalone: true,\r\n\timports: [AutoComplete, ReactiveFormsModule],\r\n\ttemplate: `<p-autocomplete\r\n\t\t[id]=\"field()?.uuid\"\r\n\t\t[inputId]=\"field()?.uuid\"\r\n\t\t[minLength]=\"props.minLength ?? 1\"\r\n\t\t[delay]=\"props.delay ?? 300\"\r\n\t\t[panelStyle]=\"props.panelStyle\"\r\n\t\t[panelStyleClass]=\"props.panelStyleClass\"\r\n\t\t[styleClass]=\"props.styleClass\"\r\n\t\t[inputStyle]=\"props.inputStyle\"\r\n\t\t[inputStyleClass]=\"props.inputStyleClass\"\r\n\t\t[placeholder]=\"props.placeholder\"\r\n\t\t[readonly]=\"props.readonly\"\r\n\t\t[scrollHeight]=\"props.scrollHeight ?? '200px'\"\r\n\t\t[lazy]=\"props.lazy\"\r\n\t\t[virtualScroll]=\"props.virtualScroll\"\r\n\t\t[virtualScrollItemSize]=\"props.virtualScrollItemSize\"\r\n\t\t[virtualScrollOptions]=\"props.virtualScrollOptions\"\r\n\t\t[maxlength]=\"props.maxlength\"\r\n\t\t[name]=\"props.name\"\r\n\t\t[size]=\"props.size\"\r\n\t\t[appendTo]=\"props.appendTo ?? 'body'\"\r\n\t\t[autoHighlight]=\"props.autoHighlight\"\r\n\t\t[forceSelection]=\"props.forceSelection\"\r\n\t\t[type]=\"props.type ?? 'text'\"\r\n\t\t[autoZIndex]=\"props.autoZIndex ?? true\"\r\n\t\t[baseZIndex]=\"props.baseZIndex ?? 0\"\r\n\t\t[ariaLabel]=\"props.ariaLabel\"\r\n\t\t[ariaLabelledBy]=\"props.ariaLabelledBy\"\r\n\t\t[dropdownAriaLabel]=\"props.dropdownAriaLabel\"\r\n\t\t[dropdownIcon]=\"props.dropdownIcon\"\r\n\t\t[unique]=\"props.unique ?? true\"\r\n\t\t[group]=\"props.group\"\r\n\t\t[completeOnFocus]=\"props.completeOnFocus\"\r\n\t\t[showClear]=\"props.showClear\"\r\n\t\t[dropdown]=\"props.dropdown\"\r\n\t\t[showEmptyMessage]=\"props.showEmptyMessage ?? true\"\r\n\t\t[dropdownMode]=\"props.dropdownMode ?? 'blank'\"\r\n\t\t[multiple]=\"props.multiple\"\r\n\t\t[tabindex]=\"props.tabindex\"\r\n\t\t[dataKey]=\"props.dataKey\"\r\n\t\t[emptyMessage]=\"props.emptyMessage\"\r\n\t\t[showTransitionOptions]=\"props.showTransitionOptions ?? '.12s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\t\t[hideTransitionOptions]=\"props.hideTransitionOptions ?? '.1s linear'\"\r\n\t\t[autofocus]=\"props.autofocus\"\r\n\t\t[autocomplete]=\"props.autocomplete ?? 'off'\"\r\n\t\t[optionGroupChildren]=\"props.optionGroupChildren ?? 'items'\"\r\n\t\t[optionGroupLabel]=\"props.optionGroupLabel ?? 'label'\"\r\n\t\t[overlayOptions]=\"props.overlayOptions\"\r\n\t\t[suggestions]=\"props.suggestions ?? []\"\r\n\t\t[optionLabel]=\"props.optionLabel\"\r\n\t\t[optionValue]=\"props.optionValue\"\r\n\t\t[searchMessage]=\"props.searchMessage ?? '{0} results are available'\"\r\n\t\t[emptySelectionMessage]=\"props.emptySelectionMessage ?? 'No selected item'\"\r\n\t\t[selectionMessage]=\"props.selectionMessage ?? '{0} items selected'\"\r\n\t\t[autoOptionFocus]=\"props.autoOptionFocus\"\r\n\t\t[selectOnFocus]=\"props.selectOnFocus\"\r\n\t\t[searchLocale]=\"props.searchLocale\"\r\n\t\t[optionDisabled]=\"props.optionDisabled\"\r\n\t\t[focusOnHover]=\"props.focusOnHover ?? true\"\r\n\t\t[typeahead]=\"props.typeahead ?? true\"\r\n\t\t[variant]=\"props.variant\"\r\n\t\t[fluid]=\"props.fluid ?? true\"\r\n\t\t[class]=\"props.class\"\r\n\t\t[style]=\"props.style\"\r\n\t\t(completeMethod)=\"props.completeMethod?.(field()!, $event)\"\r\n\t\t(onSelect)=\"props.onSelect?.(field()!, $event)\"\r\n\t\t(onUnselect)=\"props.onUnselect?.(field()!, $event)\"\r\n\t\t(onFocus)=\"props.onFocus?.(field()!, $event)\"\r\n\t\t(onBlur)=\"props.onBlur?.(field()!, $event)\"\r\n\t\t(onDropdownClick)=\"props.onDropdownClick?.(field()!, $event)\"\r\n\t\t(onClear)=\"props.onClear?.(field()!, $event)\"\r\n\t\t(onKeyUp)=\"props.onKeyUp?.(field()!, $event)\"\r\n\t\t(onShow)=\"props.onShow?.(field()!, $event)\"\r\n\t\t(onHide)=\"props.onHide?.(field()!, $event)\"\r\n\t\t(onLazyLoad)=\"props.onLazyLoad?.(field()!, $event)\"\r\n\t\t[formControl]=\"field()!.fieldControl!\" />`,\r\n\tstyleUrl: '../../styles/styles.scss',\r\n})\r\nexport class AutoCompleteComponent {\r\n\t@ViewChild(AutoComplete, { read: ElementRef, static: false }) autoCompleteRef!: ElementRef;\r\n\tfield = input<FormField>();\r\n\tprops: AutoCompleteProps = {};\r\n\tconstructor(\r\n\t\tprivate action: ActionService,\r\n\t\tprivate renderer: Renderer2,\r\n\t) {\r\n\t\teffect(() => {\r\n\t\t\tif (this.field()) {\r\n\t\t\t\tthis.props = this.field()!.autoCompleteProps!;\r\n\t\t\t\tthis.handleHookChange();\r\n\t\t\t\tthis.handleDisabled();\r\n\t\t\t}\r\n\t\t});\r\n\t\teffect(() => {\r\n\t\t\tconst labelAction = this.action.getFieldLabelAction();\r\n\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (labelAction.type == 'mouseenter') {\r\n\t\t\t\tthis.renderer.addClass(this.autoCompleteRef.nativeElement, 'ng-hovered');\r\n\t\t\t} else if (labelAction.type == 'mouseleave') {\r\n\t\t\t\tthis.renderer.removeClass(this.autoCompleteRef.nativeElement, 'ng-hovered');\r\n\t\t\t} else if (labelAction.type == 'click') {\r\n\t\t\t\tthis.autoCompleteRef.nativeElement.querySelector('input')?.focus();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\thandleHookChange() {\r\n\t\tthis.field()?.fieldControl?.hookChange.subscribe((value) => {\r\n\t\t\tif (!value) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\r\n\t\t});\r\n\t}\r\n\r\n\thandleDisabled() {\r\n\t\tif (this.props?.disabled) {\r\n\t\t\tthis.field()!.fieldControl!.disable({ emitEvent: false });\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component, input, effect, ViewChild, ElementRef, Renderer2 } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FormField, FieldProps, AttributeEvent } from '../form-field/form-field';\r\nimport { MultiSelect } from 'primeng/multiselect';\r\nimport { ScrollerOptions, OverlayOptions } from 'primeng/api';\r\nimport { ActionService } from '../../service/action.service';\r\n\r\nexport interface MultiSelectProps extends FieldProps {\r\n\tfilterPlaceHolder?: string;\r\n\toverlayVisible?: boolean;\r\n\tdisplaySelectedLabel?: boolean;\r\n\tmaxSelectedLabels?: number;\r\n\tselectionLimit?: number;\r\n\tselectedItemsLabel?: string;\r\n\tshowToggleAll?: boolean;\r\n\tchipIcon?: string;\r\n\tshowHeader?: boolean;\r\n\tautofocusFilter?: boolean;\r\n\tdisplay?: string;\r\n\tautocomplete?: string;\r\n\tselectAll?: boolean;\r\n\tselectOnFocus?: boolean;\r\n\tautoOptionFocus?: boolean;\r\n\tscrollHeight?: string;\r\n\tfilter?: boolean;\r\n\tpanelStyle?: any;\r\n\tpanelStyleClass?: string;\r\n\treadonly?: boolean;\r\n\tappendTo?: any;\r\n\ttabindex?: number;\r\n\tloadingIcon?: string;\r\n\tfilterLocale?: string;\r\n\tdataKey?: string;\r\n\tfilterBy?: string;\r\n\tfilterFields?: any[];\r\n\tresetFilterOnHide?: boolean;\r\n\tdropdownIcon?: string;\r\n\tloading?: string;\r\n\toptionLabel?: string;\r\n\toptionValue?: string;\r\n\toptionDisabled?: string;\r\n\toptionGroupLabel?: string;\r\n\toptionGroupChildren?: string;\r\n\tgroup?: boolean;\r\n\tshowClear?: boolean;\r\n\temptyFilterMessage?: any;\r\n\temptyMessage?: any;\r\n\tlazy?: boolean;\r\n\tvirtualScroll?: boolean;\r\n\tvirtualScrollItemSize?: number;\r\n\tvirtualScrollOptions?: ScrollerOptions;\r\n\toverlayOptions?: OverlayOptions;\r\n\tariaFilterLabel?: string;\r\n\tfilterMatchMode?: any;\r\n\tmaxlength?: any;\r\n\ttooltip?: any;\r\n\ttooltipPosition?: 'right' | 'left' | 'top' | 'bottom';\r\n\ttooltipPositionStyle?: string;\r\n\ttooltipStyleClass?: string;\r\n\tfocusOnHover?: boolean;\r\n\tfilterValue?: string;\r\n\toptions?: any[];\r\n\r\n\tonChange?: AttributeEvent;\r\n\tonFilter?: AttributeEvent;\r\n\tonFocus?: AttributeEvent;\r\n\tonBlur?: AttributeEvent;\r\n\tonClick?: AttributeEvent;\r\n\tonClear?: AttributeEvent;\r\n\tonPanelShow?: AttributeEvent;\r\n\tonPanelHide?: AttributeEvent;\r\n\tonLazyLoad?: AttributeEvent;\r\n\tonRemove?: AttributeEvent;\r\n\tonSelectAllChange?: AttributeEvent;\r\n}\r\n\r\n@Component({\r\n\tselector: 'form-multiselect',\r\n\tstandalone: true,\r\n\timports: [MultiSelect, ReactiveFormsModule],\r\n\ttemplate: `<p-multiselect\r\n\t\t[id]=\"field()?.uuid\"\r\n\t\t[inputId]=\"field()?.uuid\"\r\n\t\t[optionLabel]=\"props.optionLabel\"\r\n\t\t[optionValue]=\"props.optionValue\"\r\n\t\t[ariaLabel]=\"props.ariaLabel\"\r\n\t\t[style]=\"props.style\"\r\n\t\t[styleClass]=\"props.styleClass\"\r\n\t\t[panelStyle]=\"props.panelStyle\"\r\n\t\t[panelStyleClass]=\"props.panelStyleClass\"\r\n\t\t[fluid]=\"props.fluid ?? true\"\r\n\t\t[readonly]=\"props.readonly\"\r\n\t\t[appendTo]=\"props.appendTo ?? 'body'\"\r\n\t\t[options]=\"props.options\"\r\n\t\t[dataKey]=\"props.dataKey\"\r\n\t\t[group]=\"props.group\"\r\n\t\t[filter]=\"props.filter\"\r\n\t\t[filterPlaceHolder]=\"props.filterPlaceHolder\"\r\n\t\t[filterLocale]=\"props.filterLocale\"\r\n\t\t[overlayVisible]=\"props.overlayVisible\"\r\n\t\t[variant]=\"props.variant\"\r\n\t\t[name]=\"props.name\"\r\n\t\t[tabindex]=\"props.tabindex\"\r\n\t\t[ariaLabelledBy]=\"props.ariaLabelledBy\"\r\n\t\t[displaySelectedLabel]=\"props.displaySelectedLabel ?? true\"\r\n\t\t[maxSelectedLabels]=\"props.maxSelectedLabels\"\r\n\t\t[selectionLimit]=\"props.selectionLimit\"\r\n\t\t[selectedItemsLabel]=\"props.selectedItemsLabel\"\r\n\t\t[showToggleAll]=\"props.showToggleAll ?? true\"\r\n\t\t[emptyFilterMessage]=\"props.emptyFilterMessage\"\r\n\t\t[emptyMessage]=\"props.emptyMessage\"\r\n\t\t[resetFilterOnHide]=\"props.resetFilterOnHide\"\r\n\t\t[dropdownIcon]=\"props.dropdownIcon\"\r\n\t\t[chipIcon]=\"props.chipIcon\"\r\n\t\t[optionDisabled]=\"props.optionDisabled\"\r\n\t\t[optionGroupLabel]=\"props.optionGroupLabel\"\r\n\t\t[optionGroupChildren]=\"props.optionGroupChildren ?? 'items'\"\r\n\t\t[showHeader]=\"props.showHeader ?? true\"\r\n\t\t[filterBy]=\"props.filterBy\"\r\n\t\t[scrollHeight]=\"props.scrollHeight ?? '200px'\"\r\n\t\t[lazy]=\"props.lazy\"\r\n\t\t[virtualScroll]=\"props.virtualScroll\"\r\n\t\t[loading]=\"props.loading\"\r\n\t\t[virtualScrollItemSize]=\"props.virtualScrollItemSize\"\r\n\t\t[loadingIcon]=\"props.loadingIcon\"\r\n\t\t[virtualScrollOptions]=\"props.virtualScrollOptions\"\r\n\t\t[overlayOptions]=\"props.overlayOptions\"\r\n\t\t[ariaFilterLabel]=\"props.ariaFilterLabel\"\r\n\t\t[filterMatchMode]=\"props.filterMatchMode\"\r\n\t\t[tooltip]=\"props.tooltip\"\r\n\t\t[tooltipPosition]=\"props.tooltipPosition ?? 'right'\"\r\n\t\t[tooltipPositionStyle]=\"props.tooltipPositionStyle ?? 'absolute'\"\r\n\t\t[tooltipStyleClass]=\"props.tooltipStyleClass\"\r\n\t\t[autofocusFilter]=\"props.autofocusFilter\"\r\n\t\t[display]=\"props.display ?? 'comma'\"\r\n\t\t[autocomplete]=\"props.autocomplete ?? 'off'\"\r\n\t\t[size]=\"props.size\"\r\n\t\t[showClear]=\"props.showClear\"\r\n\t\t[autofocus]=\"props.autofocus\"\r\n\t\t[placeholder]=\"props.placeholder\"\r\n\t\t[filterValue]=\"props.filterValue\"\r\n\t\t[selectAll]=\"props.selectAll ?? null\"\r\n\t\t[focusOnHover]=\"props.focusOnHover ?? true\"\r\n\t\t[filterFields]=\"props.filterFields\"\r\n\t\t[selectOnFocus]=\"props.selectOnFocus\"\r\n\t\t[autoOptionFocus]=\"props.autoOptionFocus\"\r\n\t\t[class]=\"props.class\"\r\n\t\t[placeholder]=\"props.placeholder\"\r\n\t\t[maxlength]=\"props.maxlength\"\r\n\t\t(onChange)=\"props.onChange?.(field()!, $event)\"\r\n\t\t(onFilter)=\"props.onFilter?.(field()!, $event)\"\r\n\t\t(onFocus)=\"props.onFocus?.(field()!, $event)\"\r\n\t\t(onBlur)=\"props.onBlur?.(field()!, $event)\"\r\n\t\t(onClick)=\"props.onClick?.(field()!, $event)\"\r\n\t\t(onClear)=\"props.onClear?.(field()!, $event)\"\r\n\t\t(onPanelShow)=\"props.onPanelShow?.(field()!, $event)\"\r\n\t\t(onPanelHide)=\"props.onPanelHide?.(field()!, $event)\"\r\n\t\t(onLazyLoad)=\"props.onLazyLoad?.(field()!, $event)\"\r\n\t\t(onRemove)=\"props.onRemove?.(field()!, $event)\"\r\n\t\t(onSelectAllChange)=\"props.onSelectAllChange?.(field()!, $event)\"\r\n\t\t[class]=\"props.class\"\r\n\t\t[formControl]=\"field()!.fieldControl!\" />`,\r\n\tstyleUrl: '../../styles/styles.scss',\r\n})\r\nexport class MultiSelectComponent {\r\n\t@ViewChild(MultiSelect, { static: false }) multiselect!: MultiSelect;\r\n\t@ViewChild(MultiSelect, { read: ElementRef, static: false }) multiselectRef!: ElementRef;\r\n\tfield = input<FormField>();\r\n\tprops: MultiSelectProps = {};\r\n\r\n\tconstructor(\r\n\t\tprivate action: ActionService,\r\n\t\tprivate renderer: Renderer2,\r\n\t) {\r\n\t\teffect(() => {\r\n\t\t\tif (this.field()) {\r\n\t\t\t\tthis.props = this.field()!.multiSelectProps!;\r\n\t\t\t\tthis.handleHookChange();\r\n\t\t\t\tthis.handleDisabled();\r\n\t\t\t}\r\n\t\t});\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst labelAction = this.action.getFieldLabelAction();\r\n\t\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (labelAction.type == 'mouseenter') {\r\n\t\t\t\t\tthis.renderer.addClass(this.multiselectRef.nativeElement, 'ng-hovered');\r\n\t\t\t\t} else if (labelAction.type == 'mouseleave') {\r\n\t\t\t\t\tthis.renderer.removeClass(this.multiselectRef.nativeElement, 'ng-hovered');\r\n\t\t\t\t} else if (labelAction.type == 'click') {\r\n\t\t\t\t\tif (!this.multiselect.overlayVisible) {\r\n\t\t\t\t\t\tthis.multiselect.show();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t}\r\n\r\n\thandleHookChange() {\r\n\t\tthis.field()?.fieldControl?.hookChange.subscribe((value) => {\r\n\t\t\tif (!value) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\r\n\t\t});\r\n\t}\r\n\r\n\thandleDisabled() {\r\n\t\tsetTimeout(() => {\r\n\t\t\tif (this.props?.disabled) {\r\n\t\t\t\tthis.field()!.fieldControl!.disable({ emitEvent: false });\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","import { Component, ViewChild, ElementRef, input, effect, NgZone } from '@angular/core';\r\nimport { fromEvent } from 'rxjs';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { RadioButton } from 'primeng/radiobutton';\r\nimport { FormField, FieldProps, AttributeEvent } from '../form-field/form-field';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { ActionService } from '../../service/action.service';\r\n\r\nexport interface RadioProps extends FieldProps {\r\n\tvalue?: any;\r\n\ttabindex?: number;\r\n\tbinary?: boolean;\r\n\tlabel?: string;\r\n\toptions?: RadioProps[];\r\n\tonClick?: AttributeEvent;\r\n\tonFocus?: AttributeEvent;\r\n\tonBlur?: AttributeEvent;\r\n\tonChange?: AttributeEvent;\r\n}\r\n\r\n@Component({\r\n\tselector: 'form-radio',\r\n\tstandalone: true,\r\n\tstyles: `\r\n\t\t.radio-label {\r\n\t\t\tcolor: #334155;\r\n\t\t}\r\n\t`,\r\n\timports: [RadioButton, ReactiveFormsModule],\r\n\ttemplate: ` <div\r\n\t\t#radioContainer\r\n\t\tstyle=\"width: 100%; height: 100%\"\r\n\t\tclass=\"radio-container\">\r\n\t\t@if (isEnter) {\r\n\t\t\t<div\r\n\t\t\t\t[id]=\"field()?.uuid\"\r\n\t\t\t\tclass=\"flex flex-wrap gap-4\">\r\n\t\t\t\t@for (op of props.options; track op) {\r\n\t\t\t\t\t<div class=\"flex items-center\">\r\n\t\t\t\t\t\t<p-radiobutton\r\n\t\t\t\t\t\t\t[value]=\"op.value\"\r\n\t\t\t\t\t\t\t[name]=\"op.name\"\r\n\t\t\t\t\t\t\t[tabindex]=\"op.tabindex\"\r\n\t\t\t\t\t\t\t[inputId]=\"field()?.uuid\"\r\n\t\t\t\t\t\t\t[ariaLabelledBy]=\"op.ariaLabelledBy\"\r\n\t\t\t\t\t\t\t[ariaLabel]=\"op.ariaLabel\"\r\n\t\t\t\t\t\t\t[style]=\"op.style\"\r\n\t\t\t\t\t\t\t[styleClass]=\"op.styleClass\"\r\n\t\t\t\t\t\t\t[autofocus]=\"op.autofocus\"\r\n\t\t\t\t\t\t\t[variant]=\"op.variant\"\r\n\t\t\t\t\t\t\t[class]=\"op.class ?? props.class\"\r\n\t\t\t\t\t\t\t[binary]=\"!!props.binary\"\r\n\t\t\t\t\t\t\t(onClick)=\"onClick(field()!, $event)\"\r\n\t\t\t\t\t\t\t(onFocus)=\"props.onFocus?.(field()!, $event)\"\r\n\t\t\t\t\t\t\t(onBlur)=\"props.onBlur?.(field()!, $event)\"\r\n\t\t\t\t\t\t\t[formControl]=\"field()!.fieldControl!\" />\r\n\t\t\t\t\t\t<label\r\n\t\t\t\t\t\t\t[for]=\"field()?.key\"\r\n\t\t\t\t\t\t\tclass=\"radio-label ml-2\"\r\n\t\t\t\t\t\t\t>{{ op.label }}</label\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"radio-label\">{{ currentLabel() }}</div>\r\n\t\t}\r\n\t</div>`,\r\n\tstyleUrl: '../../styles/styles.scss',\r\n})\r\nexport class RadioComponent {\r\n\t@ViewChild('radioContainer') radioContainer!: ElementRef;\r\n\tfield = input<FormField>();\r\n\tprops: RadioProps = {};\r\n\tisEnter: boolean = false;\r\n\tcurrent: any = {};\r\n\r\n\tconstructor(\r\n\t\tprivate action: ActionService,\r\n\t\tprivate ngZone: NgZone,\r\n\t) {\r\n\t\tthis.fixPopPanel();\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tif (this.field()) {\r\n\t\t\t\t\tthis.props = this.field()!.radioProps!;\r\n\t\t\t\t\tif (this.props.options !== undefined && !Array.isArray(this.props.options)) {\r\n\t\t\t\t\t\tthis.props.options = [];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.handleHookChange();\r\n\t\t\t\t\tthis.handleDisabled();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t\teffect(() => {\r\n\t\t\tconst labelAction = this.action.getFieldLabelAction();\r\n\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (labelAction.type == 'mouseenter') {\r\n\t\t\t\tthis.isEnter = true;\r\n\t\t\t} else if (labelAction.type == 'mouseleave') {\r\n\t\t\t\tthis.isEnter = false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tngAfterViewInit(): void {\r\n\t\tthis.ngZone.runOutsideAngular(() => {\r\n\t\t\tconst element = this.radioContainer.nativeElement;\r\n\t\t\tif (!element) {\r\n\t\t\t\tconsole.warn('radioContainer element not found');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tfromEvent(element, 'mouseenter')\r\n\t\t\t\t.pipe(debounceTime(100))\r\n\t\t\t\t.subscribe(() => {\r\n\t\t\t\t\tthis.ngZone.run(() => {\r\n\t\t\t\t\t\tif (this.field()?.fieldControl?.disabled) return;\r\n\t\t\t\t\t\tthis.isEnter = true;\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\tfromEvent(element, 'mouseleave')\r\n\t\t\t\t.pipe(debounceTime(100))\r\n\t\t\t\t.subscribe(() => {\r\n\t\t\t\t\tthis.ngZone.run(() => {\r\n\t\t\t\t\t\tthis.isEnter = false;\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\thandleDisabled() {\r\n\t\tif (this.props?.disabled) {\r\n\t\t\tthis.field()!.fieldControl!.disable({ emitEvent: false });\r\n\t\t}\r\n\t}\r\n\r\n\thandleHookChange() {\r\n\t\tthis.field()?.fieldControl?.hookChange.subscribe((value) => {\r\n\t\t\tif (value == null) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\r\n\t\t\tthis.props.onChange?.(this.field()!, { value });\r\n\t\t});\r\n\t}\r\n\r\n\tonClick(field: FormField, event?: any): void {\r\n\t\tthis.props.onClick?.(field, event);\r\n\t\tthis.props.onChange?.(field, event);\r\n\t}\r\n\r\n\tcurrentLabel() {\r\n\t\tconst result = this.props.options?.filter?.((option) => option.value == this.field()!.fieldControl!.value);\r\n\t\tif (result?.length) {\r\n\t\t\treturn result[0].label;\r\n\t\t}\r\n\t\treturn '';\r\n\t}\r\n\r\n\tfixPopPanel() {\r\n\t\tdocument.addEventListener('click', (event: any) => {\r\n\t\t\tlet container: any = document.querySelector('.radio-container');\r\n\t\t\tif (container && !container.contains(event.target)) {\r\n\t\t\t\tthis.isEnter = false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","import { Component, input, effect, ViewChild, ElementRef, Renderer2 } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { TextareaModule } from 'primeng/textarea';\r\nimport { FormField, FieldProps } from '../form-field/form-field';\r\nimport { ActionService } from '../../service/action.service';\r\n\r\nexport interface TextAreaProps extends FieldProps {\r\n\trows?: number;\r\n\tcols?: number;\r\n\ttemplates?: string[];\r\n}\r\n\r\n@Component({\r\n\tselector: 'form-textarea',\r\n\tstandalone: true,\r\n\timports: [TextareaModule, ReactiveFormsModule],\r\n\ttemplate: `\r\n\t\t<textarea\r\n\t\t\t#textAreaRef\r\n\t\t\tpTextarea\r\n\t\t\t[rows]=\"props.rows ?? 4\"\r\n\t\t\t[cols]=\"props.cols\"\r\n\t\t\t[id]=\"field()?.uuid\"\r\n\t\t\t[variant]=\"props.variant\"\r\n\t\t\t[fluid]=\"props.fluid ?? true\"\r\n\t\t\t[pSize]=\"props.size\"\r\n\t\t\t[class]=\"props.class\"\r\n\t\t\t[formControl]=\"field()!.fieldControl!\"></textarea>\r\n\t`,\r\n\tstyleUrl: '../../styles/styles.scss',\r\n})\r\nexport class TextAreaComponent {\r\n\t@ViewChild('textAreaRef', { read: ElementRef, static: false }) textAreaRef!: ElementRef;\r\n\tfield = input<FormField>();\r\n\tprops: TextAreaProps = {};\r\n\ttemplateIndex = 0;\r\n\r\n\tconstructor(\r\n\t\tprivate action: ActionService,\r\n\t\tprivate renderer: Renderer2,\r\n\t) {\r\n\t\teffect(() => {\r\n\t\t\tif (this.field()) {\r\n\t\t\t\tthis.props = this.field()!.textAreaProps!;\r\n\t\t\t\tthis.handleHookChange();\r\n\t\t\t\tthis.handleDisabled();\r\n\t\t\t}\r\n\t\t});\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst labelAction = this.action.getFieldLabelAction();\r\n\t\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (labelAction.type == 'mouseenter') {\r\n\t\t\t\t\tthis.renderer.addClass(this.textAreaRef.nativeElement, 'ng-hovered');\r\n\t\t\t\t} else if (labelAction.type == 'mouseleave') {\r\n\t\t\t\t\tthis.renderer.removeClass(this.textAreaRef.nativeElement, 'ng-hovered');\r\n\t\t\t\t} else if (labelAction.type == 'click') {\r\n\t\t\t\t\tthis.textAreaRef.nativeElement.focus();\r\n\t\t\t\t} else if (labelAction.type == 'dblclick') {\r\n\t\t\t\t\tif (!this.props.templates || !this.props.templates.length) return;\r\n\t\t\t\t\tthis.field()?.fieldControl?.setValue(\r\n\t\t\t\t\t\tthis.props.templates[\r\n\t\t\t\t\t\t\t((this.templateIndex % this.props.templates.length) + this.props.templates.length) % this.props.templates.length\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\t{ emitEvent: true },\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t);\r\n\t\t\t\t\tthis.templateIndex++;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t}\r\n\r\n\thandleHookChange() {\r\n\t\tthis.field()?.fieldControl?.hookChange.subscribe((value) => {\r\n\t\t\tif (!value) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\r\n\t\t});\r\n\t}\r\n\r\n\thandleDisabled() {\r\n\t\tif (this.props?.disabled) {\r\n\t\t\tthis.field()!.fieldControl!.disable({ emitEvent: false });\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component, input, effect, ViewChild, ElementRef, Renderer2 } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FileUpload } from 'primeng/fileupload';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { FormField, FieldProps, AttributeEvent } from '../form-field/form-field';\r\nimport { HttpClient, HttpEvent, HttpHeaders, HttpRequest, HttpEventType } from '@angular/common/http';\r\nimport { ActionService } from '../../service/action.service';\r\nimport { filter, forkJoin, Observable } from 'rxjs';\r\nimport { DatePipe } from '@angular/common';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\n\r\nexport interface UploadProps extends FieldProps {\r\n\turl?: string;\r\n\tmethod?: 'post' | 'put';\r\n\tmultiple?: boolean;\r\n\taccept?: string;\r\n\twithCredentials?: boolean;\r\n\tmaxFileSize?: number;\r\n\tpreviewWidth?: number;\r\n\tmode?: 'basic' | 'advanced';\r\n\theaders?: any;\r\n\tcustomUpload?: boolean;\r\n\tfileLimit?: number;\r\n\tuploadStyleClass?: string;\r\n\tcancelStyleClass?: string;\r\n\tremoveStyleClass?: string;\r\n\tchooseStyleClass?: string;\r\n\r\n\tonBeforeUpload?: AttributeEvent;\r\n\tonSend?: AttributeEvent;\r\n\tonUpload?: AttributeEvent;\r\n\tonError?: AttributeEvent;\r\n\tonClear?: AttributeEvent;\r\n\tonRemove?: AttributeEvent;\r\n\tonSelect?: AttributeEvent;\r\n\tonProgress?: AttributeEvent;\r\n}\r\n\r\n@Component({\r\n\tselector: 'form-upload',\r\n\tstandalone: true,\r\n\tstyles: `\r\n\t\t.file-item {\r\n\t\t\tborder-top: solid 1px #fff;\r\n\t\t}\r\n\t\t.upload-btn {\r\n\t\t\tborder: solid 1px transparent;\r\n\t\t}\r\n\t\t.upload-btn.upload-disable:hover {\r\n\t\t\tcursor: default;\r\n\t\t}\r\n\t\t.upload-btn:not(.upload-disable):hover {\r\n\t\t\tborder: solid 1px var(--p-primary-color);\r\n\t\t\tbackground: var(--p-primary-50);\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\t\t.upload-btn:not(.upload-disable).ng-hovered {\r\n\t\t\tborder: solid 1px var(--p-primary-color);\r\n\t\t\tbackground: var(--p-primary-50);\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\t\t.file-name {\r\n\t\t\tfont-size: 12px;\r\n\t\t}\r\n\t\t.file-name:hover {\r\n\t\t\tcursor: pointer;\r\n\t\t\tcolor: var(--p-primary-color);\r\n\t\t}\r\n\t\t:host ::ng-deep {\r\n\t\t\t.p-image-preview-mask {\r\n\t\t\t\tposition: inherit;\r\n\t\t\t\topacity: 1;\r\n\t\t\t\tjustify-content: left;\r\n\t\t\t\tcolor: #334155;\r\n\t\t\t}\r\n\t\t}\r\n\t`,\r\n\timports: [FileUpload, ButtonModule, ReactiveFormsModule, TranslatePipe],\r\n\ttemplate: `<p-fileUpload\r\n\t\t#fu\r\n\t\tauto\r\n\t\t[id]=\"field()?.uuid\"\r\n\t\t[name]=\"props.name\"\r\n\t\t[url]=\"props.url\"\r\n\t\t[method]=\"props.method ?? 'post'\"\r\n\t\t[multiple]=\"props.multiple ?? true\"\r\n\t\t[accept]=\"props.accept\"\r\n\t\t[withCredentials]=\"props.withCredentials\"\r\n\t\t[maxFileSize]=\"props.maxFileSize\"\r\n\t\t[styleClass]=\"props.styleClass\"\r\n\t\t[previewWidth]=\"props.previewWidth ?? 50\"\r\n\t\t[mode]=\"props.mode ?? 'advanced'\"\r\n\t\t[headers]=\"props.headers\"\r\n\t\t[fileLimit]=\"props.fileLimit\"\r\n\t\t[customUpload]=\"props.customUpload ?? true\"\r\n\t\t(onBeforeUpload)=\"props.onBeforeUpload?.(field()!, $event)\"\r\n\t\t(onSend)=\"props.onSend?.(field()!, $event)\"\r\n\t\t(onUpload)=\"props.onUpload?.(field()!, $event)\"\r\n\t\t(onError)=\"props.onError?.(field()!, $event)\"\r\n\t\t(onClear)=\"props.onClear?.(field()!, $event)\"\r\n\t\t(onRemove)=\"props.onRemove?.(field()!, $event)\"\r\n\t\t(onSelect)=\"props.onSelect?.(field()!, $event)\"\r\n\t\t(onProgress)=\"props.onProgress?.(field()!, $event)\"\r\n\t\t(uploadHandler)=\"uploadHandler(field()!, $event, fu)\">\r\n\t\t<ng-template\r\n\t\t\t#header\r\n\t\t\tlet-chooseCallback=\"chooseCallback\">\r\n\t\t\t<div\r\n\t\t\t\t#uploadComp\r\n\t\t\t\t[class]=\"'flex justify-center w-full upload-btn' + (field()?.fieldControl?.disabled ? ' upload-disable' : '')\"\r\n\t\t\t\t(click)=\"choose($event, chooseCallback)\">\r\n\t\t\t\t<span\r\n\t\t\t\t\t><span\r\n\t\t\t\t\t\tstyle=\"font-size: 12px; margin-right: 2.5px\"\r\n\t\t\t\t\t\t[class]=\"'pi' + (loading ? ' pi-spin pi-spinner' : ' pi-upload')\"></span\r\n\t\t\t\t\t>{{ (loading ? 'modal.uploading' : 'modal.selectFile') | translate }}</span\r\n\t\t\t\t>\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t\t<ng-template #content>\r\n\t\t\t@if (fileList.length > 0) {\r\n\t\t\t\t@for (file of fileList; track file; let index = $index) {\r\n\t\t\t\t\t<div class=\"flex justify-between items-center file-item\">\r\n\t\t\t\t\t\t<span class=\"file-name\"\r\n\t\t\t\t\t\t\t><a\r\n\t\t\t\t\t\t\t\t[href]=\"'https://hrimage.myfoodiepet.com//' + file\"\r\n\t\t\t\t\t\t\t\t[download]=\"file\"\r\n\t\t\t\t\t\t\t\t>{{ file }}</a\r\n\t\t\t\t\t\t\t></span\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t@if (!field()?.fieldControl?.disabled) {\r\n\t\t\t\t\t\t\t<p-button\r\n\t\t\t\t\t\t\t\ticon=\"pi pi-times\"\r\n\t\t\t\t\t\t\t\tseverity=\"danger\"\r\n\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t(onClick)=\"deleteHandler(file, index)\"\r\n\t\t\t\t\t\t\t\t[text]=\"true\" />\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t</ng-template>\r\n\t\t<ng-template #file> </ng-template>\r\n\t</p-fileUpload>`,\r\n\tstyleUrl: '../../styles/styles.scss',\r\n})\r\nexport class UploadComponent {\r\n\t@ViewChild('uploadComp', { read: ElementRef, static: false }) uploadCompRef!: ElementRef;\r\n\tfield = input<FormField>();\r\n\tprops: UploadProps = {};\r\n\tfileList: string[] = [];\r\n\tdeleteHooks: Observable<any>[] = [];\r\n\tloading = false;\r\n\tcounter = 0;\r\n\r\n\tconstructor(\r\n\t\tprivate http: HttpClient,\r\n\t\tprivate action: ActionService,\r\n\t\tprivate renderer: Renderer2,\r\n\t\tprivate datePipe: DatePipe,\r\n\t) {\r\n\t\teffect(() => {\r\n\t\t\tif (this.field()) {\r\n\t\t\t\tthis.props = this.field()!.uploadProps!;\r\n\t\t\t\tthis.handleHookChange();\r\n\t\t\t\tthis.handleDisabled();\r\n\t\t\t\tthis.afterSubmit();\r\n\t\t\t}\r\n\t\t});\r\n\t\teffect(() => {\r\n\t\t\tforkJoin(this.deleteHooks).subscribe();\r\n\t\t});\r\n\t\teffect(() => {\r\n\t\t\tconst labelAction = this.action.getFieldLabelAction();\r\n\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (labelAction.type == 'mouseenter') {\r\n\t\t\t\tthis.renderer.addClass(this.uploadCompRef.nativeElement, 'ng-hovered');\r\n\t\t\t} else if (labelAction.type == 'mouseleave') {\r\n\t\t\t\tthis.renderer.removeClass(this.uploadCompRef.nativeElement, 'ng-hovered');\r\n\t\t\t} else if (labelAction.type == 'click') {\r\n\t\t\t\tthis.uploadCompRef.nativeElement.click();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tchoose(event: any, callback: any) {\r\n\t\tif (this.field()?.fieldControl?.disabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tcallback();\r\n\t}\r\n\r\n\tuploadFile(file: File): Observable<any> {\r\n\t\tconst formData = new FormData();\r\n\t\tformData.append('file', file);\r\n\t\treturn this.http\r\n\t\t\t.request(\r\n\t\t\t\tnew HttpRequest('POST', 'filerUpload', formData, {\r\n\t\t\t\t\treportProgress: true,\r\n\t\t\t\t\twithCredentials: false,\r\n\t\t\t\t}),\r\n\t\t\t)\r\n\t\t\t.pipe(filter((response: HttpEvent<any>) => response.type == HttpEventType.Response));\r\n\t}\r\n\r\n\tdelFile(fileStr: string): Observable<any> {\r\n\t\treturn this.http.post('filerDelete', { fileName: fileStr });\r\n\t}\r\n\r\n\tuploadHandler(field: any, event: any, fu: any) {\r\n\t\tthis.initLoading(event.files.length);\r\n\t\tevent.files.forEach((v: any) => {\r\n\t\t\tthis.uploadFile(v).subscribe({\r\n\t\t\t\tnext: (response) => {\r\n\t\t\t\t\tthis.updateLoading(fu);\r\n\t\t\t\t\tthis.fileList?.push(response.body.fid);\r\n\t\t\t\t\tthis.field()?.fieldControl?.setValue(this.fileList);\r\n\t\t\t\t},\r\n\t\t\t\terror: (error) => {\r\n\t\t\t\t\tthis.initLoading(0);\r\n\t\t\t\t\tconsole.error(error);\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tdeleteHandler(fileStr: string, index: number) {\r\n\t\tthis.deleteHooks.push(this.delFile(fileStr));\r\n\t\tthis.fileList = this.fileList?.filter((value, i) => index != i);\r\n\t\tthis.field()?.fieldControl?.setValue(this.fileList);\r\n\t}\r\n\r\n\thandleHookChange() {\r\n\t\tthis.field()?.fieldControl?.hookChange.subscribe((value) => {\r\n\t\t\tif (value == null) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\r\n\t\t\tthis.fileList = [...value];\r\n\t\t});\r\n\t}\r\n\r\n\tafterSubmit() {\r\n\t\tthis.field()?.fieldControl?.submitChange.subscribe((value) => {\r\n\t\t\tif (Boolean(value)) {\r\n\t\t\t\tthis.deleteHooks.forEach((hook) => hook.subscribe());\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\thandleDisabled() {\r\n\t\tif (this.props?.disabled) {\r\n\t\t\tthis.field()!.fieldControl!.disable({ emitEvent: false });\r\n\t\t}\r\n\t}\r\n\r\n\tinitLoading(counter: number) {\r\n\t\tthis.counter = counter;\r\n\t\tif (counter == 0) {\r\n\t\t\tthis.loading = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.loading = true;\r\n\t}\r\n\r\n\tupdateLoading(fu: any) {\r\n\t\tthis.counter--;\r\n\t\tconsole.log('----counter', this.counter);\r\n\t\tif (this.counter === 0) {\r\n\t\t\tthis.loading = false;\r\n\t\t\tfu.clear();\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component, input, effect, ViewChild, ElementRef, Renderer2 } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FileUpload } from 'primeng/fileupload';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { Image } from 'primeng/image';\r\nimport { FormField, FieldProps, AttributeEvent } from '../form-field/form-field';\r\nimport { HttpClient, HttpEvent, HttpHeaders, HttpRequest, HttpEventType } from '@angular/common/http';\r\nimport { ActionService } from '../../service/action.service';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\n\r\nimport { filter, forkJoin, Observable } from 'rxjs';\r\nimport { DatePipe } from '@angular/common';\r\n\r\nexport interface ImageProps extends FieldProps {\r\n\turl?: string;\r\n\tmethod?: 'post' | 'put';\r\n\twithCredentials?: boolean;\r\n\tmaxFileSize?: number;\r\n\tpreviewWidth?: number;\r\n\tmode?: 'basic' | 'advanced';\r\n\theaders?: any;\r\n\tcustomUpload?: boolean;\r\n\tfileLimit?: number;\r\n\tuploadStyleClass?: string;\r\n\tcancelStyleClass?: string;\r\n\tremoveStyleClass?: string;\r\n\tchooseStyleClass?: string;\r\n\tadjustable?: boolean;\r\n\timageMode?: boolean;\r\n\tmultiple?: boolean;\r\n\twatermark?: boolean;\r\n\tsize?: 'small' | 'large' | undefined;\r\n\r\n\tonBeforeUpload?: AttributeEvent;\r\n\tonSend?: AttributeEvent;\r\n\tonUpload?: AttributeEvent;\r\n\tonError?: AttributeEvent;\r\n\tonClear?: AttributeEvent;\r\n\tonRemove?: AttributeEvent;\r\n\tonSelect?: AttributeEvent;\r\n\tonProgress?: AttributeEvent;\r\n}\r\n\r\n@Component({\r\n\tselector: 'form-image',\r\n\tstandalone: true,\r\n\tstyles: `\r\n\t\t.file-item {\r\n\t\t\tborder-top: solid 1px #fff;\r\n\t\t}\r\n\t\t.upload-btn {\r\n\t\t\tborder: solid 1px transparent;\r\n\t\t}\r\n\t\t.upload-btn.upload-disable:hover {\r\n\t\t\tcursor: default;\r\n\t\t}\r\n\t\t.upload-btn:not(.upload-disable):hover {\r\n\t\t\tborder: solid 1px var(--p-primary-color);\r\n\t\t\tbackground: var(--p-primary-50);\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\t\t.upload-btn:not(.upload-disable).ng-hovered {\r\n\t\t\tborder: solid 1px var(--p-primary-color);\r\n\t\t\tbackground: var(--p-primary-50);\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\t\t.file-name {\r\n\t\t\tfont-size: 12px;\r\n\t\t\tcursor: pointer;\r\n\t\t\tcolor: var(--p-primary-color) !important;\r\n\t\t}\r\n\t\t:host ::ng-deep {\r\n\t\t\t.p-image-preview-mask {\r\n\t\t\t\tposition: inherit;\r\n\t\t\t\topacity: 1;\r\n\t\t\t\tjustify-content: left;\r\n\t\t\t\tcolor: #334155;\r\n\t\t\t}\r\n\t\t\tp-image {\r\n\t\t\t\t.p-image {\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tcolor: var(--p-primary-color) !important;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t`,\r\n\timports: [FileUpload, ButtonModule, Image, ReactiveFormsModule, TranslatePipe],\r\n\ttemplate: `<p-fileUpload\r\n\t\t#fu\r\n\t\tauto\r\n\t\t[name]=\"props.name\"\r\n\t\t[url]=\"props.url\"\r\n\t\t[method]=\"props.method ?? 'post'\"\r\n\t\taccept=\"image/*\"\r\n\t\t[withCredentials]=\"props.withCredentials\"\r\n\t\t[maxFileSize]=\"props.maxFileSize\"\r\n\t\t[styleClass]=\"props.styleClass\"\r\n\t\t[previewWidth]=\"props.previewWidth ?? 50\"\r\n\t\t[mode]=\"props.mode ?? 'advanced'\"\r\n\t\t[headers]=\"props.headers\"\r\n\t\t[fileLimit]=\"props.fileLimit\"\r\n\t\t[customUpload]=\"props.customUpload ?? true\"\r\n\t\t[multiple]=\"props.multiple ?? false\"\r\n\t\t(onBeforeUpload)=\"props.onBeforeUpload?.(field()!, $event)\"\r\n\t\t(onSend)=\"props.onSend?.(field()!, $event)\"\r\n\t\t(onUpload)=\"props.onUpload?.(field()!, $event)\"\r\n\t\t(onError)=\"props.onError?.(field()!, $event)\"\r\n\t\t(onClear)=\"props.onClear?.(field()!, $event)\"\r\n\t\t(onRemove)=\"props.onRemove?.(field()!, $event)\"\r\n\t\t(onSelect)=\"props.onSelect?.(field()!, $event)\"\r\n\t\t(onProgress)=\"props.onProgress?.(field()!, $event)\"\r\n\t\t(uploadHandler)=\"uploadHandler(field()!, $event, fu)\">\r\n\t\t<ng-template\r\n\t\t\t#header\r\n\t\t\tlet-chooseCallback=\"chooseCallback\">\r\n\t\t\t<div\r\n\t\t\t\t#imageComp\r\n\t\t\t\t[class]=\"'flex justify-center w-full upload-btn' + (field()?.fieldControl?.disabled ? ' upload-disable' : '')\"\r\n\t\t\t\t(click)=\"choose($event, chooseCallback)\">\r\n\t\t\t\t<span\r\n\t\t\t\t\t><span\r\n\t\t\t\t\t\tstyle=\"font-size: 12px; margin-right: 2.5px\"\r\n\t\t\t\t\t\t[class]=\"'pi' + (loading ? ' pi-spin pi-spinner' : ' pi-upload')\"></span\r\n\t\t\t\t\t>{{ (loading ? 'modal.uploading' : 'modal.selectFile') | translate }}</span\r\n\t\t\t\t>\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t\t<ng-template #content>\r\n\t\t\t@if (imageList.length > 0) {\r\n\t\t\t\t@if (!props.imageMode) {\r\n\t\t\t\t\t@for (image of imageList; track image; let index = $index) {\r\n\t\t\t\t\t\t<div class=\"flex justify-between items-center file-item\">\r\n\t\t\t\t\t\t\t<p-image\r\n\t\t\t\t\t\t\t\t[src]=\"'https://hrimage.myfoodiepet.com//' + image\"\r\n\t\t\t\t\t\t\t\t[preview]=\"true\"\r\n\t\t\t\t\t\t\t\t(onShow)=\"ajustedImage($event)\"\r\n\t\t\t\t\t\t\t\talt=\"Image\">\r\n\t\t\t\t\t\t\t\t<ng-template #indicator>\r\n\t\t\t\t\t\t\t\t\t<span class=\"file-name\">{{ image }}</span>\r\n\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t\t<ng-template #image>\r\n\t\t\t\t\t\t\t\t\t<span class=\"file-name\">{{ image }}</span>\r\n\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t</p-image>\r\n\t\t\t\t\t\t\t@if (!field()?.fieldControl?.disabled) {\r\n\t\t\t\t\t\t\t\t<p-button\r\n\t\t\t\t\t\t\t\t\ticon=\"pi pi-times\"\r\n\t\t\t\t\t\t\t\t\tseverity=\"danger\"\r\n\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\t(onClick)=\"deleteHandler($event, image, index)\"\r\n\t\t\t\t\t\t\t\t\t[text]=\"true\" />\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t} @else {\r\n\t\t\t\t\t<div class=\"flex gap-2 mt-1 flex-wrap\">\r\n\t\t\t\t\t\t@for (image of imageList; track image; let index = $index) {\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclass=\"border\"\r\n\t\t\t\t\t\t\t\t[style]=\"{ height: imageHeight + 10 + 'px' }\">\r\n\t\t\t\t\t\t\t\t<p-image\r\n\t\t\t\t\t\t\t\t\t[src]=\"'https://hrimage.myfoodiepet.com//' + image\"\r\n\t\t\t\t\t\t\t\t\t[preview]=\"true\"\r\n\t\t\t\t\t\t\t\t\t[appendTo]=\"'body'\"\r\n\t\t\t\t\t\t\t\t\t(onShow)=\"ajustedImage($event)\"\r\n\t\t\t\t\t\t\t\t\talt=\"Image\">\r\n\t\t\t\t\t\t\t\t\t<ng-template #indicator>\r\n\t\t\t\t\t\t\t\t\t\t@if (!field()?.fieldControl?.disabled) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div [style]=\"{ position: 'relative', width: imageWidth + 10 + 'px', height: imageHeight + 10 + 'px' }\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"position: absolute; top: 0; right: 0; z-index: 999; background: red; padding: 1px;\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"deleteHandler($event, image, index)\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-times text-[12px]\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t\t\t<ng-template #image>\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"p-2\">\r\n\t\t\t\t\t\t\t\t\t\t\t<img\r\n\t\t\t\t\t\t\t\t\t\t\t\t[src]=\"'https://hrimage.myfoodiepet.com//' + image\"\r\n\t\t\t\t\t\t\t\t\t\t\t\talt=\"image\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[style]=\"{ width: imageWidth + 'px', height: imageHeight + 'px', objectFit: 'cover' }\" />\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t\t\t<ng-template #preview let-style=\"style\">\r\n\t\t\t\t\t\t\t\t\t\t<img [src]=\"'https://hrimage.myfoodiepet.com//' + image\" alt=\"image\" [style]=\"style\" style=\"max-height: 80vh!important;\" />\r\n\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t\t</p-image>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t</ng-template>\r\n\t\t<ng-template #file> </ng-template>\r\n\t</p-fileUpload>`,\r\n\tstyleUrl: '../../styles/styles.scss',\r\n})\r\nexport class ImageComponent {\r\n\t@ViewChild('imageComp', { read: ElementRef, static: false }) imageCompRef!: ElementRef;\r\n\tfield = input<FormField>();\r\n\tprops: ImageProps = {};\r\n\timageList: string[] = [];\r\n\tdeleteHooks: Observable<any>[] = [];\r\n\tloading = false;\r\n\tcounter = 0;\r\n\timageWidth = 0;\r\n\timageHeight = 0;\r\n\r\n\tconstructor(\r\n\t\tprivate http: HttpClient,\r\n\t\tprivate action: ActionService,\r\n\t\tprivate renderer: Renderer2,\r\n\t\tprivate datePipe: DatePipe,\r\n\t) {\r\n\t\teffect(() => {\r\n\t\t\tif (this.field()) {\r\n\t\t\t\tthis.props = this.field()!.imageProps!;\r\n\t\t\t\tthis.initImageSize();\r\n\t\t\t\tthis.handleDisabled();\r\n\t\t\t\tthis.handleHookChange();\r\n\t\t\t\tthis.afterSubmit();\r\n\t\t\t}\r\n\t\t});\r\n\t\teffect(() => {\r\n\t\t\tconst labelAction = this.action.getFieldLabelAction();\r\n\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (labelAction.type == 'mouseenter') {\r\n\t\t\t\tthis.renderer.addClass(this.imageCompRef.nativeElement, 'ng-hovered');\r\n\t\t\t} else if (labelAction.type == 'mouseleave') {\r\n\t\t\t\tthis.renderer.removeClass(this.imageCompRef.nativeElement, 'ng-hovered');\r\n\t\t\t} else if (labelAction.type == 'click') {\r\n\t\t\t\tthis.imageCompRef.nativeElement.click();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tchoose(event: any, callback: any) {\r\n\t\tif (this.field()?.fieldControl?.disabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tcallback();\r\n\t}\r\n\r\n\tinitImageSize() {\r\n\t\tif (this.props.size !== 'small') {\r\n\t\t\tthis.imageWidth = 75;\r\n\t\t\tthis.imageHeight = 100;\r\n\t\t} else {\r\n\t\t\tthis.imageWidth = 35;\r\n\t\t\tthis.imageHeight = 35;\r\n\t\t}\r\n\t}\r\n\r\n\tuploadImage(file: File): Observable<any> {\r\n\t\tconst formData = new FormData();\r\n\t\tformData.append('file', file);\r\n\t\treturn this.http\r\n\t\t\t.request(\r\n\t\t\t\tnew HttpRequest('POST', 'imageUpload', formData, {\r\n\t\t\t\t\treportProgress: true,\r\n\t\t\t\t\twithCredentials: false,\r\n\t\t\t\t}),\r\n\t\t\t)\r\n\t\t\t.pipe(filter((response: HttpEvent<any>) => response.type == HttpEventType.Response));\r\n\t}\r\n\r\n\tdelImage(image: string): Observable<any> {\r\n\t\treturn this.http.post('imageDelete', { fid: image });\r\n\t}\r\n\r\n\tuploadHandler(field: any, event: any, fu: any) {\r\n\t\tthis.initLoading(event.files.length);\r\n\t\tevent.files.forEach(async (v: any) => {\r\n\t\t\tif (this.props.watermark) {\r\n\t\t\t\tlet blob = await this.addWatermark(v);\r\n\t\t\t\tconst newFile = new File([blob], v.name, { type: v.type });\r\n\t\t\t\tthis.uploadImage(newFile).subscribe({\r\n\t\t\t\t\tnext: (response) => {\r\n\t\t\t\t\t\tthis.updateLoading(fu);\r\n\t\t\t\t\t\tthis.imageList?.push(response.body.fid);\r\n\t\t\t\t\t\tthis.field()?.fieldControl?.setValue(this.imageList);\r\n\t\t\t\t\t},\r\n\t\t\t\t\terror: (error) => {\r\n\t\t\t\t\t\tthis.initLoading(0);\r\n\t\t\t\t\t\tconsole.error(error);\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.uploadImage(v).subscribe({\r\n\t\t\t\t\tnext: (response) => {\r\n\t\t\t\t\t\tthis.updateLoading(fu);\r\n\t\t\t\t\t\tthis.imageList?.push(response.body.fid);\r\n\t\t\t\t\t\tthis.field()?.fieldControl?.setValue(this.imageList);\r\n\t\t\t\t\t},\r\n\t\t\t\t\terror: (error) => {\r\n\t\t\t\t\t\tthis.initLoading(0);\r\n\t\t\t\t\t\tconsole.error(error);\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\taddWatermark(imageFile: File): Promise<Blob> {\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tconst reader = new FileReader();\r\n\r\n\t\t\treader.onload = (event) => {\r\n\t\t\t\tconst img = document.createElement('img');\r\n\t\t\t\timg.onload = () => {\r\n\t\t\t\t\tconst canvas = document.createElement('canvas');\r\n\t\t\t\t\tconst ctx = canvas.getContext('2d')!;\r\n\r\n\t\t\t\t\t// 设置画布大小为图片大小\r\n\t\t\t\t\tcanvas.width = Number(img.width);\r\n\t\t\t\t\tcanvas.height = Number(img.height);\r\n\r\n\t\t\t\t\t// 绘制原始图片\r\n\t\t\t\t\tctx.drawImage(img, 0, 0);\r\n\r\n\t\t\t\t\t// 添加水印\r\n\t\t\t\t\tctx.font = `italic bold 30px Courier`;\r\n\t\t\t\t\tctx.fillStyle = 'red';\r\n\t\t\t\t\tctx.textAlign = 'center';\r\n\t\t\t\t\tctx.textBaseline = 'middle';\r\n\t\t\t\t\tconst currentTime = this.datePipe.transform(new Date(), 'yyyy-MM-dd HH:mm:ss') || '';\r\n\t\t\t\t\tctx.fillText(currentTime, canvas.width / 2, canvas.height - 50);\r\n\r\n\t\t\t\t\t// 转换为Blob\r\n\t\t\t\t\tcanvas.toBlob(\r\n\t\t\t\t\t\t(blob) => {\r\n\t\t\t\t\t\t\tif (blob) {\r\n\t\t\t\t\t\t\t\tresolve(blob);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\treject(new Error('Canvas to Blob conversion failed'));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t'image/jpeg',\r\n\t\t\t\t\t\t0.8,\r\n\t\t\t\t\t);\r\n\t\t\t\t};\r\n\r\n\t\t\t\timg.src = event.target?.result as string;\r\n\t\t\t};\r\n\r\n\t\t\treader.onerror = (error) => reject(error);\r\n\t\t\treader.readAsDataURL(imageFile);\r\n\t\t});\r\n\t}\r\n\r\n\tdeleteHandler(event: any, image: string, index: number) {\r\n\t\tevent.stopPropagation();\r\n\t\tthis.deleteHooks.push(this.delImage(image));\r\n\t\tthis.imageList = this.imageList?.filter((value, i) => index != i);\r\n\t\tthis.field()?.fieldControl?.setValue(this.imageList);\r\n\t}\r\n\r\n\tafterSubmit() {\r\n\t\tthis.field()?.fieldControl?.submitChange.subscribe((value) => {\r\n\t\t\tif (Boolean(value)) {\r\n\t\t\t\tthis.deleteHooks.forEach((hook) => hook.subscribe());\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\thandleHookChange() {\r\n\t\tthis.field()?.fieldControl?.hookChange.subscribe((value) => {\r\n\t\t\tif (value == null) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\r\n\t\t\tthis.imageList = [...value];\r\n\t\t});\r\n\t}\r\n\r\n\thandleDisabled() {\r\n\t\tif (this.props?.disabled) {\r\n\t\t\tthis.field()!.fieldControl!.disable({ emitEvent: false });\r\n\t\t}\r\n\t}\r\n\r\n\tajustedImage(event: any) {\r\n\t\tif (this.props?.adjustable) {\r\n\t\t\t// 解决图片查看时的操作按钮(旋转、放大、缩小、关闭)不在屏幕右上角显示的问题\r\n\t\t\t// let childDiv = document.getElementsByClassName('p-image-toolbar')[0];\r\n\t\t\t// let parentDiv = document.createElement('div');\r\n\t\t\t// parentDiv.style.width = '100vw';\r\n\t\t\t// parentDiv.style.height = '100vh';\r\n\t\t\t// parentDiv.style.position = 'fixed';\r\n\t\t\t// childDiv?.parentNode?.insertBefore(parentDiv, childDiv);\r\n\t\t\t// parentDiv.appendChild(childDiv);\r\n\t\t}\r\n\t}\r\n\r\n\tinitLoading(counter: number) {\r\n\t\tthis.counter = counter;\r\n\t\tif (counter == 0) {\r\n\t\t\tthis.loading = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.loading = true;\r\n\t}\r\n\r\n\tupdateLoading(fu: any) {\r\n\t\tthis.counter--;\r\n\t\tif (this.counter === 0) {\r\n\t\t\tthis.loading = false;\r\n\t\t\tfu.clear();\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component, ElementRef, ViewChild, input, effect, Renderer2, output } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FormField, FieldProps } from '../form-field/form-field';\r\nimport { javascript } from '@codemirror/lang-javascript';\r\nimport { html } from '@codemirror/lang-html';\r\nimport { json } from '@codemirror/lang-json';\r\nimport { EditorState, StateEffect } from '@codemirror/state';\r\nimport {\r\n\tEditorView,\r\n\tkeymap,\r\n\thighlightSpecialChars,\r\n\tdrawSelection,\r\n\tdropCursor,\r\n\trectangularSelection,\r\n\tcrosshairCursor,\r\n\tlineNumbers,\r\n\thighlightActiveLineGutter,\r\n\tplaceholder,\r\n} from '@codemirror/view';\r\nimport { defaultHighlightStyle, syntaxHighlighting, indentOnInput, bracketMatching, foldGutter, foldKeymap } from '@codemirror/language';\r\nimport { defaultKeymap, history, historyKeymap } from '@codemirror/commands';\r\nimport { searchKeymap, highlightSelectionMatches } from '@codemirror/search';\r\nimport { autocompletion, completionKeymap, closeBrackets, closeBracketsKeymap } from '@codemirror/autocomplete';\r\nimport { ActionService } from '../../service/action.service';\r\nimport { lintKeymap } from '@codemirror/lint';\r\nimport prettier from 'prettier';\r\nimport typescript from 'prettier/plugins/typescript';\r\nimport estree from 'prettier/plugins/estree';\r\n\r\nexport interface CodeMirrorProps extends FieldProps {\r\n\tlanguage?: 'html' | 'javascript' | 'json';\r\n\tmaxHeight?: string;\r\n\tminHeight?: string;\r\n\tplaceholder?: string;\r\n\ttemplates?: string[];\r\n}\r\n\r\n@Component({\r\n\tselector: 'form-codemirror',\r\n\tstandalone: true,\r\n\timports: [ReactiveFormsModule],\r\n\ttemplate: `<div #codeContainer></div>`,\r\n\tstyleUrl: '../../styles/styles.scss',\r\n})\r\nexport class CodeMirrorComponent {\r\n\t@ViewChild('codeContainer', { static: false }) codeContainer!: ElementRef;\r\n\tcmEditor!: ElementRef;\r\n\tfield = input<FormField>();\r\n\tprops: CodeMirrorProps = {};\r\n\teditorView!: EditorView;\r\n\ttemplateIndex = 0;\r\n\r\n\tchange = output<string>();\r\n\r\n\tconstructor(\r\n\t\tprivate action: ActionService,\r\n\t\tprivate renderer: Renderer2,\r\n\t) {\r\n\t\teffect(() => {\r\n\t\t\tif (this.field()) {\r\n\t\t\t\tthis.props = this.field()!.codeMirrorProps!;\r\n\t\t\t\tthis.handleHookChange();\r\n\t\t\t\tthis.handleExtensions();\r\n\t\t\t}\r\n\t\t});\r\n\t\teffect(() => {\r\n\t\t\tconst labelAction = this.action.getFieldLabelAction();\r\n\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (labelAction.type == 'mouseenter') {\r\n\t\t\t\tthis.renderer.addClass(this.cmEditor, 'ng-hovered');\r\n\t\t\t} else if (labelAction.type == 'mouseleave') {\r\n\t\t\t\tthis.renderer.removeClass(this.cmEditor, 'ng-hovered');\r\n\t\t\t} else if (labelAction.type == 'click') {\r\n\t\t\t\tthis.editorView.focus();\r\n\t\t\t} else if (labelAction.type == 'dblclick') {\r\n\t\t\t\tif (!this.props.templates || !this.props.templates.length) return;\r\n\t\t\t\tthis.field()?.fieldControl?.setValue(\r\n\t\t\t\t\tthis.props.templates[\r\n\t\t\t\t\t\t((this.templateIndex % this.props.templates.length) + this.props.templates.length) % this.props.templates.length\r\n\t\t\t\t\t],\r\n\t\t\t\t\t{ emitEvent: true },\r\n\t\t\t\t\ttrue,\r\n\t\t\t\t);\r\n\t\t\t\tthis.templateIndex++;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tngAfterViewInit() {\r\n\t\tthis.editorView = new EditorView({\r\n\t\t\tstate: EditorState.create({\r\n\t\t\t\tdoc: this.field()?.fieldControl?.value,\r\n\t\t\t}),\r\n\t\t\tparent: this.codeContainer.nativeElement,\r\n\t\t});\r\n\t\tthis.cmEditor = this.codeContainer.nativeElement.querySelector('.cm-editor');\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.editorView.destroy();\r\n\t}\r\n\r\n\thandleExtensions() {\r\n\t\tconst extendsions = [\r\n\t\t\tlineNumbers(),\r\n\t\t\tfoldGutter(),\r\n\t\t\thighlightSpecialChars(),\r\n\t\t\thistory(),\r\n\t\t\tdrawSelection(),\r\n\t\t\tdropCursor(),\r\n\t\t\tEditorState.allowMultipleSelections.of(true),\r\n\t\t\tindentOnInput(),\r\n\t\t\tsyntaxHighlighting(defaultHighlightStyle),\r\n\t\t\tbracketMatching(),\r\n\t\t\tcloseBrackets(),\r\n\t\t\tautocompletion(),\r\n\t\t\trectangularSelection(),\r\n\t\t\tcrosshairCursor(),\r\n\t\t\thighlightActiveLineGutter(),\r\n\t\t\thighlightSelectionMatches(),\r\n\t\t\tthis.formatting(),\r\n\t\t\tkeymap.of([\r\n\t\t\t\t...closeBracketsKeymap,\r\n\t\t\t\t...defaultKeymap,\r\n\t\t\t\t...searchKeymap,\r\n\t\t\t\t...historyKeymap,\r\n\t\t\t\t...foldKeymap,\r\n\t\t\t\t...completionKeymap,\r\n\t\t\t\t...lintKeymap,\r\n\t\t\t]),\r\n\t\t\tEditorView.theme({\r\n\t\t\t\t'.cm-gutters': {\r\n\t\t\t\t\tbackgroundColor: 'transparent',\r\n\t\t\t\t\tborder: 'none',\r\n\t\t\t\t},\r\n\t\t\t\t'.cm-activeLineGutter': {\r\n\t\t\t\t\tbackgroundColor: 'transparent',\r\n\t\t\t\t},\r\n\t\t\t\t'&': { minHeight: this.props.minHeight ?? '88px', maxHeight: this.props.maxHeight || '204px' },\r\n\t\t\t\t'.cm-scroller': { overflow: 'auto', minHeight: this.props.minHeight ?? '88px' },\r\n\t\t\t}),\r\n\t\t\tthis.getLanguageExtension(),\r\n\t\t\tEditorView.updateListener.of((update) => {\r\n\t\t\t\tif (update.transactions.some((tr) => tr.isUserEvent('input') || tr.isUserEvent('delete'))) {\r\n\t\t\t\t\tconst newValue = update.state.doc.toString();\r\n\t\t\t\t\tthis.field()?.fieldControl?.setValue(newValue);\r\n\t\t\t\t\tthis.change.emit(newValue);\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t];\r\n\t\tif (this.props.placeholder) {\r\n\t\t\textendsions.unshift(placeholder(this.props.placeholder));\r\n\t\t}\r\n\t\tif (this.props.disabled) {\r\n\t\t\textendsions.push(EditorView.editable.of(false));\r\n\t\t}\r\n\t\tthis.editorView.dispatch({\r\n\t\t\teffects: StateEffect.reconfigure.of(extendsions),\r\n\t\t});\r\n\t}\r\n\r\n\thandleHookChange() {\r\n\t\tthis.field()?.fieldControl?.hookChange?.subscribe((value) => {\r\n\t\t\t// 改进判断逻辑:只有在值为 null 且编辑器为空时才返回\r\n\t\t\tif (value == null && !this.editorView.state.doc.length) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\r\n\t\t\tconst transaction = this.editorView.state.update({\r\n\t\t\t\tchanges: { from: 0, to: this.editorView.state.doc.length, insert: value || '' },\r\n\t\t\t});\r\n\t\t\tthis.editorView.dispatch(transaction);\r\n\t\t});\r\n\t}\r\n\r\n\tgetLanguageExtension() {\r\n\t\tswitch (this.props.language) {\r\n\t\t\tcase 'html':\r\n\t\t\t\treturn html();\r\n\t\t\tcase 'javascript':\r\n\t\t\t\treturn javascript();\r\n\t\t\tcase 'json':\r\n\t\t\t\treturn json();\r\n\t\t\tdefault:\r\n\t\t\t\treturn javascript();\r\n\t\t}\r\n\t}\r\n\r\n\tminLines(min: number) {\r\n\t\treturn EditorView.updateListener.of((v) => {\r\n\t\t\tconst doc = v.state.doc;\r\n\t\t\tconst lineCount = doc.lines;\r\n\t\t\tif (lineCount < min) {\r\n\t\t\t\tconst newLines = Array(min + 1 - lineCount)\r\n\t\t\t\t\t.fill('')\r\n\t\t\t\t\t.join('\\n');\r\n\t\t\t\tconst transaction = v.state.update({\r\n\t\t\t\t\tchanges: { from: doc.length, insert: newLines },\r\n\t\t\t\t});\r\n\t\t\t\tv.view.dispatch(transaction);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tformatting() {\r\n\t\tconst formatCommand = (view: any) => {\r\n\t\t\ttry {\r\n\t\t\t\tprettier\r\n\t\t\t\t\t.format(view.state.doc.toString(), {\r\n\t\t\t\t\t\tparser: 'typescript',\r\n\t\t\t\t\t\tplugins: [typescript, estree],\r\n\t\t\t\t\t\tsemi: true,\r\n\t\t\t\t\t\tsingleQuote: true,\r\n\t\t\t\t\t\ttabWidth: 2,\r\n\t\t\t\t\t\tprintWidth: 80,\r\n\t\t\t\t\t\ttrailingComma: 'all',\r\n\t\t\t\t\t\tarrowParens: 'always',\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.then((formatted) => {\r\n\t\t\t\t\t\tconst transaction = this.editorView.state.update({\r\n\t\t\t\t\t\t\tchanges: { from: 0, to: this.editorView.state.doc.length, insert: formatted },\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.editorView.dispatch(transaction);\r\n\t\t\t\t\t\tconsole.log('格式化成功:', formatted);\r\n\t\t\t\t\t});\r\n\t\t\t\treturn true;\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.error('格式化错误:', error);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t};\r\n\t\treturn keymap.of([\r\n\t\t\t{\r\n\t\t\t\tkey: 'Shift-Alt-f',\r\n\t\t\t\tmac: 'Shift-Cmd-f',\r\n\t\t\t\trun: formatCommand,\r\n\t\t\t\tpreventDefault: true,\r\n\t\t\t},\r\n\t\t]);\r\n\t}\r\n}\r\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\r\nimport { computed, effect, inject, Injectable, PLATFORM_ID, signal } from '@angular/core';\r\n\r\nexport interface AppState {\r\n preset?: string;\r\n primary?: string;\r\n darkTheme?: boolean;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class ThemeConfigService {\r\n readonly STORAGE_KEY = 'themeConfigState';\r\n\r\n appState = signal<AppState | null>(null);\r\n\r\n document = inject(DOCUMENT);\r\n\r\n platformId = inject(PLATFORM_ID);\r\n\r\n theme = computed(() => (this.appState()?.darkTheme ? 'dark' : 'light'));\r\n \r\n initialized = false;\r\n\r\n transitionComplete = signal<boolean>(false);\r\n\r\n constructor(){\r\n this.appState.set({...this.loadAppState()})\r\n effect(() => {\r\n const state = this.appState()\r\n if(!this.initialized || !state){\r\n this.initialized = true \r\n return \r\n }\r\n this.saveAppState(state)\r\n this.handleDarkModeTransition(state)\r\n\r\n })\r\n }\r\n handleDarkModeTransition(state: AppState): void {\r\n if (isPlatformBrowser(this.platformId)) {\r\n if ((document as any).startViewTransition) {\r\n this.startViewTransition(state);\r\n } else {\r\n this.toggleDarkMode(state);\r\n this.onTransitionEnd();\r\n }\r\n }\r\n }\r\n\r\n startViewTransition(state: AppState): void {\r\n const transition = (document as any).startViewTransition(() => {\r\n this.toggleDarkMode(state);\r\n });\r\n\r\n transition.ready.then(() => this.onTransitionEnd());\r\n }\r\n onTransitionEnd() {\r\n this.transitionComplete.set(true);\r\n setTimeout(() => {\r\n this.transitionComplete.set(false);\r\n });\r\n }\r\n toggleDarkMode(state: AppState): void {\r\n if (state.darkTheme) {\r\n this.document.documentElement.classList.add('p-dark');\r\n } else {\r\n this.document.documentElement.classList.remove('p-dark');\r\n }\r\n }\r\n loadAppState(){\r\n if (isPlatformBrowser(this.platformId)) {\r\n const storedState = localStorage.getItem(this.STORAGE_KEY);\r\n if (storedState) {\r\n return JSON.parse(storedState);\r\n }\r\n }\r\n return {\r\n preset: 'Aura',\r\n primary: 'orange',\r\n darkTheme: false,\r\n };\r\n }\r\n\r\n saveAppState(state:any){\r\n if (isPlatformBrowser(this.platformId)) {\r\n localStorage.setItem(this.STORAGE_KEY, JSON.stringify(state));\r\n }\r\n }\r\n}","import { FormGroup } from '@angular/forms';\r\nimport { Observable, of, shareReplay, pipe } from 'rxjs';\r\nimport * as ts from 'typescript';\r\nimport { formTypeToProps } from '../../public-api';\r\nimport NP from 'number-precision'\r\nexport let toPascalCase = (str: string) =>\r\n\tstr\r\n\t\t.replace(/_/g, ' ') // 下划线替换为空格\r\n\t\t.replace(/([a-z])([A-Z])/g, '$1 $2') // 小驼峰分割为单词\r\n\t\t.toLowerCase() // 转为小写\r\n\t\t.split(/\\s+/) // 按空格分割\r\n\t\t.map((word) => (word ? word[0].toUpperCase() + word.slice(1) : ''))\r\n\t\t.join('');\r\n\r\nexport const generateUniqueId = () => {\r\n\tconst timestamp = Date.now().toString(36); // 时间戳转36进制缩短长度\r\n\tconst random = Math.random().toString(36).substring(2, 4); // 随机部分\r\n\treturn `${timestamp}${random}`;\r\n};\r\n\r\nexport const createCircularIterator = (array: any[]) => {\r\n\tlet index = -1;\r\n\treturn {\r\n\t\tnext: () => {\r\n\t\t\tindex++;\r\n\t\t\treturn array[index % array.length];\r\n\t\t},\r\n\t\tprev: () => {\r\n\t\t\tindex--;\r\n\t\t\treturn array[((index % array.length) + array.length) % array.length];\r\n\t\t},\r\n\t};\r\n};\r\n\r\nexport const parseFunctions = (obj: any, _this: any): any => {\r\n\tif (typeof obj === 'string') {\r\n\t\t// 尝试检测是否是函数字符串\r\n\t\tif ((obj.includes('=>') || obj.includes('Promise')) && !isJSONParsable(obj)) {\r\n\t\t\tconst o = compileTsToJs(obj);\r\n\t\t\t// console.log('解析函数:', obj);\r\n\t\t\ttry {\r\n\t\t\t\tconst sandbox = {\r\n\t\t\t\t\tObservable,\r\n\t\t\t\t\tof,\r\n\t\t\t\t\tshareReplay,\r\n\t\t\t\t\tpipe,\r\n\t\t\t\t\tPromise, // 添加 Promise 到 sandbox\r\n\t\t\t\t\tasync: true, // 标记支持异步\r\n\t\t\t\t\tresolve: Promise.resolve.bind(Promise),\r\n\t\t\t\t\treject: Promise.reject.bind(Promise),\r\n\t\t\t\t\tNP,\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// 处理 Promise 构造函数的情况\r\n\t\t\t\tif (obj.includes('new Promise')) {\r\n\t\t\t\t\treturn new Function(\r\n\t\t\t\t\t\t'sandbox',\r\n\t\t\t\t\t\t`\r\n\t\t\t\t\t\t\twith(sandbox) {\r\n\t\t\t\t\t\t\t\treturn ${o};\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t`,\r\n\t\t\t\t\t).bind(_this)(sandbox);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// 处理普通函数和箭头函数\r\n\t\t\t\treturn new Function(\r\n\t\t\t\t\t'sandbox',\r\n\t\t\t\t\t`\r\n\t\t\t\t\t\twith(sandbox) {\r\n\t\t\t\t\t\t\treturn (${o});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t`,\r\n\t\t\t\t).bind(_this)(sandbox);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tconsole.error('函数解析失败:', e, '\\n原始字符串:', obj);\r\n\t\t\t\treturn obj;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (isJSONParsable(obj)) {\r\n\t\t\tlet json = JSON.parse(obj);\r\n\t\t\treturn parseFunctions(json, _this);\r\n\t\t}\r\n\t\treturn obj;\r\n\t}\r\n\tif (Array.isArray(obj)) {\r\n\t\treturn obj.map((item: any) => parseFunctions(item, _this));\r\n\t}\r\n\tif (typeof obj === 'object' && obj !== null) {\r\n\t\tconst result: any = {};\r\n\t\tfor (const key in obj) {\r\n\t\t\tif (obj.hasOwnProperty(key)) {\r\n\t\t\t\tresult[key] = parseFunctions(obj[key], _this);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\treturn obj;\r\n};\r\n\r\n// 辅助函数:检查是否包含 Promise 构造函数\r\nconst containsPromiseConstructor = (str: string): boolean => {\r\n\treturn /new\\s+Promise/.test(str);\r\n};\r\n\r\n// 修改 compileTsToJs 函数以更好地处理 Promise\r\nexport const compileTsToJs = (tsCode: string): string => {\r\n\t// 如果是 Promise 构造函数,不需要额外处理\r\n\tif (containsPromiseConstructor(tsCode)) {\r\n\t\treturn tsCode;\r\n\t}\r\n\r\n\tconst result = ts.transpileModule(tsCode, {\r\n\t\tcompilerOptions: {\r\n\t\t\tmodule: ts.ModuleKind.CommonJS,\r\n\t\t\ttarget: ts.ScriptTarget.ES2015,\r\n\t\t\t// 启用异步函数支持\r\n\t\t\tlib: ['es2015', 'es2015.promise', 'dom'],\r\n\t\t},\r\n\t});\r\n\treturn removeTrailingSemicolon(result.outputText);\r\n};\r\n\r\nconst removeTrailingSemicolon = (funcStr: string): string => {\r\n\t// 先去除前后空白\r\n\tconst trimmed = funcStr.trim();\r\n\t// 只替换最后一个分号(如果它不在花括号内)\r\n\tif (trimmed.endsWith(';')) {\r\n\t\treturn trimmed.slice(0, -1);\r\n\t}\r\n\treturn trimmed;\r\n};\r\n\r\nexport const isJSONParsable = (str: any) => {\r\n\ttry {\r\n\t\tJSON.parse(str);\r\n\t\treturn true;\r\n\t} catch (e) {\r\n\t\t// let strIsObj = /\\{[^}]*\\}|\\[[^\\]]*\\]/.test(str)\r\n\t\t// if(strIsObj){\r\n\t\t// \tconsole.error('JSON 解析失败:', e, '\\n原始字符串:', str)\r\n\t\t// }\r\n\t\treturn false;\r\n\t}\r\n};\r\n\r\n/**\r\n * 根据指定的键数组过滤对象\r\n * @param {Object} obj - 要过滤的原始对象\r\n * @param {Array} keys - 需要保留的键数组\r\n * @returns {Object} 过滤后的新对象\r\n */\r\nexport const filterObjectByKeys = (obj: any, keys: string[]) => {\r\n\t// 参数校验\r\n\tif (typeof obj !== 'object' || obj === null || Array.isArray(obj)) {\r\n\t\tthrow new TypeError('第一个参数必须是普通对象');\r\n\t}\r\n\r\n\tif (!Array.isArray(keys)) {\r\n\t\tthrow new TypeError('第二个参数必须是数组');\r\n\t}\r\n\r\n\t// 使用reduce创建新对象\r\n\treturn keys.reduce((acc: any, key: string) => {\r\n\t\t// 只有当原对象有该属性时才添加到新对象\r\n\t\tif (key in obj) {\r\n\t\t\tacc[key] = obj[key];\r\n\t\t}\r\n\t\treturn acc;\r\n\t}, {});\r\n};\r\n/**\r\n * 自定义函数去除空字符串\r\n * @param act \r\n * @returns \r\n */\r\nexport const convertAct = (act:any) =>{\r\n\tact.forEach((v:any) => {\r\n\t\tif(v.hasOwnProperty('btnHidden') &&typeof v.btnHidden != 'function'){\r\n\t\t\tdelete v.btnHidden\r\n\t\t}\r\n\t\tif(v.hasOwnProperty('btnDisabled') &&typeof v.btnDisabled != 'function'){\r\n\t\t\tdelete v.btnDisabled\r\n\t\t}\r\n\t\tif(v.hasOwnProperty('onClick') &&typeof v.onClick != 'function'){\r\n\t\t\tdelete v.onClick\r\n\t\t}\r\n\t})\r\n\treturn act;\r\n}\r\n\r\n/**\r\n * formpage 通用content函数转移\r\n * @param content \r\n * @param thisArg\r\n */\r\nexport const changeContent = (content: any,thisArg:any) =>{\r\n\t// @ts-ignore\r\n\tconst isI18n = window.appIsI18n\r\n\tcontent = parseFunctions(content,thisArg);\r\n\tlet { gridList, hrefBtnList, getPrm, groups, statusKey, status, statusSteps,statusConf = null } = content;\r\n\tif (statusKey) {\r\n\t\tthisArg.statusKey = statusKey;\r\n\t\tstatusSteps.forEach((item:any) => {\r\n\t\t\tif(isI18n && (!item.hasOwnProperty('i18nKey') || item.i18nKey == '')){\r\n\t\t\t\titem.i18nKey = `tables.${getPrm.modelName}.${statusKey}${item.value}`\r\n\t\t\t}\r\n\t\t});\r\n\t\tthisArg.steps = statusSteps\r\n\t\tstatusConf && (thisArg.statusConf = statusConf)\r\n\t}\r\n\r\n\tthisArg.actions = convertAct(content.actions)\r\n\tcontent.formDisabled && (thisArg.formDisabled = content.formDisabled);\r\n\tthisArg.getPrm = getPrm;\r\n\tthisArg.getPrm.orgField = content.orgField || '';\r\n\tthisArg.grids = [];\r\n\tlet fiterPreloads:any[] = []\r\n\r\n\tconvertForm(thisArg,groups,content.sourceData)\r\n\tconvertGrid(thisArg,gridList,fiterPreloads)\r\n\t\r\n\tthisArg.formDetail = content.formDetail\r\n\tthisArg.saveFunc = content.saveFunc\r\n\tthisArg.isLog = content.sourceData.model.log;\r\n\tthisArg.getPrm['getLog'] = content.sourceData.model.log;\r\n\tthisArg.getPrm['fiterPreloads'] = fiterPreloads\r\n\tthisArg.hrefBtnList = hrefBtnList;\r\n}\r\n\r\nexport const calcRowSpan = (params: any, field?: string) => {\r\n\tfield = field || params.colDef.field;\r\n\tconst currentValue = params.data[field!];\r\n\tconst currentRowIndex = params.node.rowIndex;\r\n\r\n\tlet rowSpan = 1;\r\n\r\n\tfor (let i = currentRowIndex + 1; i < params.api.getDisplayedRowCount(); i++) {\r\n\t\tconst node = params.api.getDisplayedRowAtIndex(i);\r\n\t\tif (node.data[field!] === currentValue) {\r\n\t\t\trowSpan++;\r\n\t\t} else {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif (currentRowIndex > 0 && params.api.getDisplayedRowAtIndex(currentRowIndex - 1).data[field!] === currentValue) {\r\n\t\treturn 1;\r\n\t}\r\n\treturn rowSpan;\r\n}\r\n\r\nexport const convertCol = (options:any,col: any[], authLevel:number,dragSort?:string,) => {\r\n\t// @ts-ignore\r\n\tconst isI18n = window.appIsI18n\r\n\t// console.log('isI18n-----',isI18n)\r\n\tcol.forEach((item: any,index:number) => {\r\n\t\titem.hide = item.hideCol;\r\n\t\tif (authLevel < 3) {\r\n\t\t\titem.editable = false;\r\n\t\t}\r\n\t\tif(dragSort && index ===0){\r\n\t\t\titem.rowDrag = true\r\n\t\t}\r\n\t\tif(isI18n && (!item.hasOwnProperty('i18nKey') || item.i18nKey == '')){\r\n\t\t\titem.i18nKey = `tables.${options.modelName}.${item.field}`\r\n\t\t}\r\n\t\tif(item.hasOwnProperty('textWrap') && item.textWrap) {\r\n\t\t\titem.autoHeight = true\r\n\t\t\titem.cellClass = 'cell-wrap-text'\r\n\t\t}\r\n\t\tif(item.fieldType == 'VARCHAR'){\r\n\t\t\titem.cellDataType = false\r\n\t\t}\r\n\t\tif(item.rowSpanConf){\r\n\t\t\tlet rowSpan = {\r\n\t\t\t\trowSpan: (params: any) => calcRowSpan(params),\r\n\t\t\t\tcellRenderer: 'rowSpanRenderer',\r\n\t\t\t\tcellRendererParams: {\r\n\t\t\t\t\trowSpan: (params: any) => calcRowSpan(params),\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tObject.assign(item,rowSpan)\r\n\t\t\toptions.suppressRowTransform = true\r\n\t\t\toptions.rowClass = 'rowSpan'\r\n\t\t}\r\n\t\t// if(item.editable){\r\n\t\t// \titem.headerClass = item.hasOwnProperty('headerClass') \r\n\t\t// \t\t? `${item.headerClass} editable-column-header` \r\n\t\t// \t\t: 'editable-column-header'\r\n\t\t// }\r\n\t});\r\n}\r\n\r\nexport const gridOptionsHooker = (gridOptions: any) => {\r\n\tgridOptions?.columnDefs?.forEach((col: any) => {\r\n\t\tif (col.hideCol) {\r\n\t\t\tcol.hide = col.hideCol;\r\n\t\t\tdelete col.hideCol;\r\n\t\t}\r\n\t\t// @ts-ignore\r\n\t\tconst isI18n = window.appIsI18n\r\n\t\tif( isI18n && (!col.hasOwnProperty('i18nKey') || col.i18nKey == '')){\r\n\t\t\t\tcol.i18nKey = `tables.${gridOptions.modelName}.${col.field}`\r\n\t\t\t}\r\n\t\tif(col.hasOwnProperty('textWrap') && col.textWrap) {\r\n\t\t\tcol.autoHeight = true\r\n\t\t\tcol.cellClass = 'cell-wrap-text'\r\n\t\t}\r\n\t\tif(col.rowSpanConf){\r\n\t\t\tlet rowSpan = {\r\n\t\t\t\trowSpan: (params: any) => calcRowSpan(params),\r\n\t\t\t\tcellRenderer: 'rowSpanRenderer',\r\n\t\t\t\tcellRendererParams: {\r\n\t\t\t\t\trowSpan: (params: any) => calcRowSpan(params),\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tObject.assign(col,rowSpan)\r\n\t\t\tgridOptions.suppressRowTransform = true\r\n\t\t\tgridOptions.rowClass = 'rowSpan'\r\n\t\t}\r\n\t});\r\n}\r\n\r\nexport const convertGrid = (thisArg:any,gridList:any,fiterPreloads:any) => {\r\n\tgridList.forEach(async (item: any) => {\r\n\t\t!item.type && (item.type = 'grid')\r\n\t\tlet grid:any = {type:item.type}\r\n\t\tif(item.fiterPreloads instanceof Array){\r\n\t\t\tfiterPreloads = [...fiterPreloads, ...item.fiterPreloads]\r\n\t\t}\r\n\t\tif(item.type == 'grid'){\r\n\t\t\tlet {\r\n\t\t\t\tgridOptions: { columnDefs, ...restGridOptions },\r\n\t\t\t\tsubTableSource,\r\n\t\t\t\tsubDataKey,\r\n\t\t\t\ttitle,\r\n\t\t\t\tselectDataCb,\r\n\t\t\t\tfk,\r\n\t\t\t\tmainField,\r\n\t\t\t\tuniqueField,\r\n\t\t\t\taddDataCb,\r\n\t\t\t\tshowDelete = true,\r\n\t\t\t\tscrollHeight,\r\n\t\t\t\tdragSort,\r\n\t\t\t\tselectionMode,\r\n\t\t\t\tisRowSelectable,\r\n\t\t\t\taddSort\r\n\t\t\t} = item;\r\n\t\t\tgrid = { subTableSource, subDataKey, title,showDelete, ...grid};\r\n\t\t\tlet gridOptions = {\r\n\t\t\t\t...restGridOptions,\r\n\t\t\t\tfk,\r\n\t\t\t\tsubTableSource,\r\n\t\t\t\tsubDataKey,\r\n\t\t\t\tmainField,\r\n\t\t\t};\r\n\t\t\t// @ts-ignore\r\n\t\t\tif(window.appIsI18n && (!item.hasOwnProperty('i18nKey') || item.i18nKey == '')){\r\n\t\t\t\tgrid.i18nKey = `tables.${thisArg.getPrm.modelName}.${subDataKey}`\r\n\t\t\t}\r\n\t\t\tif(gridOptions.rowModelType == 'clientSide'){\r\n\t\t\t\tgridOptions.suppressRowVirtualisation = true\r\n\t\t\t}\r\n\t\t\tif(scrollHeight){\r\n\t\t\t\tgridOptions.scrollHeight = scrollHeight\r\n\t\t\t}\r\n\t\t\tif(dragSort){\r\n\t\t\t\tgridOptions.rowDragManaged = true\r\n\t\t\t\tgridOptions.dragSort = dragSort\r\n\t\t\t}\r\n\t\t\tif(selectionMode) {\r\n\t\t\t\tgridOptions.selectionMode = selectionMode\r\n\t\t\t\tif(selectionMode != 'none'){\r\n\t\t\t\t\tgridOptions.rowSelection = {\r\n\t\t\t\t\t\tmode: selectionMode == 'single' ? 'singleRow' : 'multiRow',\r\n\t\t\t\t\t\tisRowSelectable: isRowSelectable ? isRowSelectable:null\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t gridOptions.rowSelection = undefined\r\n\t\t\t \t}\r\n\t\t\t}\r\n\t\t\tconvertCol(gridOptions,columnDefs,thisArg.authLevel,dragSort);\r\n\t\t\tgridOptions.columnDefs = columnDefs;\r\n\t\t\tif (subTableSource === 'select') {\r\n\t\t\t\tthisArg.webget({ code: item.selectModelCode }).subscribe((res:any) => {\r\n\t\t\t\t\tlet selectContent = parseFunctions(JSON.parse(res.content), thisArg);\r\n\t\t\t\t\tgrid.selectOptions = selectContent?.gridOptions;\r\n\t\t\t\t\tgrid.selectOptions.rowModelType = grid.selectOptions.rowModelType || 'serverSide';\r\n\t\t\t\t\tif (grid.selectOptions.rowModelType == 'serverSide') {\r\n\t\t\t\t\t\tgrid.selectOptions.serverFunc = grid.selectOptions.serverFunc || thisArg.web_search.bind(thisArg);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tgrid.selectOptions.clientFunc = grid.selectOptions.clientFunc || thisArg.web_search.bind(thisArg);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgrid.uniqueField = uniqueField;\r\n\t\t\t\t\tgrid.selectDataCb = selectDataCb;\r\n\t\t\t\t\tgrid.selectOptions.scrollHeight = '300px';\r\n\t\t\t\t\tgrid.selectOptions.searchPrm = selectContent.searchPrm\r\n\t\t\t\t\tconvertCol(grid.selectOptions,grid.selectOptions.columnDefs!,1);\r\n\t\t\t\t});\r\n\t\t\t\tgrid.searchPrm = { ...thisArg.searchPrm };\r\n\t\t\t} else {\r\n\t\t\t\taddDataCb && (gridOptions.addDataCb = addDataCb);\r\n\t\t\t}\r\n\t\t\tgrid.gridOptions = gridOptions;\r\n\t\t\taddSort && (grid.addSort = addSort)\r\n\t\t} else {\r\n\t\t\titem.interactiveLabel = true\r\n\t\t\tgrid = {\r\n\t\t\t\t...item\r\n\t\t\t}\r\n\t\t\tgrid.form = new FormGroup({})\r\n\t\t}\r\n\t\tthisArg.grids.push(grid);\r\n\t});\r\n}\r\n\r\nexport const convertForm = (thisArg:any, groupArr:any,sourceData:any) => {\r\n\tgroupArr.forEach((item: any) => {\r\n\t\tif (thisArg.authLevel < 3) {\r\n\t\t\titem[formTypeToProps[item.type]].disabled = true;\r\n\t\t}\r\n\t});\r\n\tthisArg.formOptions = {\r\n\t\tfields: [\r\n\t\t\t{\r\n\t\t\t\tgroupClass: 'flex flex-row flex-wrap',\r\n\t\t\t\tgroup: groupArr,\r\n\t\t\t},\r\n\t\t],\r\n\t\tform: new FormGroup({}),\r\n\t\tmainField: sourceData.model.mainFields,\r\n\t\tmodelName: sourceData.model.modelName,\r\n\t\textra: {thisArg}\r\n\t};\r\n}\r\n\r\nexport const clearLocal = () => {\r\n\tlet themeConfigState = window.localStorage.getItem('themeConfigState')\r\n\twindow.localStorage.clear()\r\n\tif(themeConfigState){\r\n\t\twindow.localStorage.setItem('themeConfigState',themeConfigState)\r\n\t}\r\n\twindow.sessionStorage.clear()\r\n}\r\n\r\nexport const pageListGridOptions = (gridOptions: any,thisArg:any) => {\r\n\tgridOptions.scrollHeight = 'calc(100vh - 95px)';\r\n\tgridOptions.rowModelType = gridOptions.rowModelType || 'serverSide';\r\n\tif (gridOptions.rowModelType == 'serverSide') {\r\n\t\tgridOptions.serverFunc = gridOptions.serverFunc || thisArg.web_search.bind(thisArg);\r\n\t} else {\r\n\t\tgridOptions.clientFunc = gridOptions.clientFunc || thisArg.web_search.bind(thisArg);\r\n\t}\r\n\tif(gridOptions.selectionMode) {\r\n\t\t\t// gridOptions.selectionMode = selectionMode\r\n\t\tif(gridOptions.selectionMode != 'none'){\r\n\t\t\tgridOptions.rowSelection = {\r\n\t\t\t\tmode: gridOptions.selectionMode == 'single' ? 'singleRow' :'multiRow',\r\n\t\t\t\tisRowSelectable: gridOptions.isRowSelectable ? gridOptions.isRowSelectable : undefined\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tgridOptions.rowSelection = undefined\r\n\t\t}\r\n\t}\r\n\tconvertCol(gridOptions,gridOptions.columnDefs!,1)\r\n\treturn gridOptions\r\n}\r\n// 深度拷贝\r\nexport const deepClone = (source:any,that:any, cache?:any,) => {\r\n if(!cache){\r\n cache = new Map() \r\n }\r\n if(source instanceof Object) { // 不考虑跨 iframe\r\n if(cache.get(source)) { return cache.get(source) }\r\n let result:any\r\n if(source instanceof Function) {\r\n if(source.prototype) { // 有 prototype 就是普通函数\r\n result = function(){ return source.apply(that, arguments) }\r\n } else {\r\n result = (...args: any) => { return source.call(undefined, ...args) }\r\n }\r\n } else if(source instanceof Array) {\r\n result = []\r\n } else if(source instanceof Date) {\r\n result = new Date((source as any) - 0)\r\n } else if(source instanceof RegExp) {\r\n result = new RegExp(source.source, source.flags)\r\n } else {\r\n result = {}\r\n }\r\n cache.set(source, result)\r\n for(let key in source) { \r\n if(source.hasOwnProperty(key)){\r\n result[key] = deepClone(source[key], cache) \r\n }\r\n }\r\n return result\r\n } else {\r\n return source\r\n }\r\n}","import { $dt } from '@primeng/themes';\r\nimport { themeQuartz } from 'ag-grid-enterprise';\r\nimport { ThemeConfigService } from '../service/themeConfig.service';\r\nimport { AG_GRID_LOCALE_CN, AG_GRID_LOCALE_EN } from '@ag-grid-community/locale';\r\nimport { filterObjectByKeys } from '../share/utils';\r\nimport { I18nService } from '../service/i18n.service';\r\nimport { GridOptions } from './grid/grid.component';\r\nimport { ActionService } from '../service/action.service';\r\n\r\nconst _gridUtils = {\r\n\tcalcRowIds: (api: any, isServerSide: boolean): any[] => {\r\n\t\tconst result: any[] = [];\r\n\t\tapi.forEachNode((node: any) => {\r\n\t\t\tnode.isSelected() && result.push(node.data);\r\n\t\t});\r\n\t\treturn result;\r\n\t},\r\n\tselectionHandler: (api: any, selectionKeys: any[], startRow: number, dataKey?: string) => {\r\n\t\tconst field = dataKey || 'id';\r\n\t\tfor (let i = startRow; i < api.getDisplayedRowCount(); i++) {\r\n\t\t\tconst node = api.getDisplayedRowAtIndex(i);\r\n\t\t\tif (node.data && selectionKeys?.includes(node.data[field])) {\r\n\t\t\t\tnode.setSelected(true, false);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tcalcGridHeight(rowCount: number, margin: number) {\r\n\t\tconst headerHeight = 49;\r\n\t\tconst rowHeight = 42;\r\n\t\tconst totalHeight = headerHeight + rowCount * rowHeight + margin;\r\n\t\treturn Math.max(totalHeight, headerHeight + rowHeight + margin);\r\n\t},\r\n\tgetTheme(themeConfig: ThemeConfigService) {\r\n\t\tconst primary = themeConfig.appState()?.primary as string;\r\n\t\treturn themeQuartz.withParams({\r\n\t\t\taccentColor: primary,\r\n\t\t\tselectedRowBackgroundColor: $dt(`${primary}.50`).value,\r\n\t\t\tcheckboxCheckedBackgroundColor: $dt(`${primary}.500`).value,\r\n\t\t\trowHoverColor: $dt(`${primary}.50`).value,\r\n\t\t\trangeSelectionBackgroundColor: $dt(`${primary}.100`).value,\r\n\t\t\trangeSelectionBorderColor: $dt(`${primary}.100`).value,\r\n\t\t\twrapperBorderRadius: 0,\r\n\t\t});\r\n\t},\r\n\t// ag-grid 本地国际化 官方无泰文翻译包 目前暂用英文 后续需要再翻译\r\n\tgetLocalText(local: string) {\r\n\t\tlet localeText;\r\n\t\tswitch (local) {\r\n\t\t\tcase 'zh-CN':\r\n\t\t\t\tlocaleText = AG_GRID_LOCALE_CN;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'en-US':\r\n\t\t\t\tlocaleText = AG_GRID_LOCALE_EN;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'th-TH':\r\n\t\t\t\tlocaleText = AG_GRID_LOCALE_EN;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\t'';\r\n\t\t}\r\n\t\treturn localeText;\r\n\t},\r\n\thandleI18nKey(cols: any[], i18n: I18nService) {\r\n\t\t// const columnDefs: any[] = [];\r\n\t\tcols.forEach((item: any) => {\r\n\t\t\t// let cols: any;\r\n\t\t\tif (item.hasOwnProperty('i18nKey')) {\r\n\t\t\t\tlet headerName = i18n.fanyi(item.i18nKey);\r\n\t\t\t\tlet currentLang = i18n.currentLang\r\n\t\t\t\tconst textWidth = gridUtils.getLangWidth(headerName)\r\n\t\t\t\tconst totalWidth = textWidth + 16 + 48;\r\n\t\t\t\tlet minWidth = item.minWidth\r\n\t\t\t\titem.headerName = headerName\r\n\t\t\t\tif(currentLang != 'zh-CN'){\r\n\t\t\t\t\tminWidth = totalWidth > item.minWidth ? totalWidth : item.minWidth\r\n\t\t\t\t\titem.minWidth = minWidth\r\n\t\t\t\t}\r\n\t\t\t\t// delete cols.i18nKey;\r\n\t\t\t}\r\n\t\t\t// columnDefs.push(cols);\r\n\t\t});\r\n\t\treturn cols;\r\n\t},\r\n\tgetTreeOptions(columnDef: any): any {\r\n\t\tconst treeOptions = {\r\n\t\t\ttreeData: true,\r\n\t\t\ttreeDataChildrenField: 'children',\r\n\t\t\trowSelection: {\r\n\t\t\t\tmode: 'multiRow',\r\n\t\t\t},\r\n\t\t\tautoGroupColumnDef: {\r\n\t\t\t\tcellStyle: { color: 'var(--p-form-field-focus-border-color)' },\r\n\t\t\t\tcellRenderer: 'agGroupCellRenderer',\r\n\t\t\t\tcellRendererParams: {\r\n\t\t\t\t\t...columnDef.cellRendererParams,\r\n\t\t\t\t\tinnerRenderer: 'linkRenderer',\r\n\t\t\t\t\tsuppressCount: true,\r\n\t\t\t\t},\r\n\t\t\t\t...filterObjectByKeys(columnDef, ['headerName', 'field', 'minWidth']),\r\n\t\t\t},\r\n\t\t\tisServerSideGroup: (dataItem: any) => {\r\n\t\t\t\treturn !!dataItem.children;\r\n\t\t\t},\r\n\t\t\tgetServerSideGroupKey: (dataItem: any) => {\r\n\t\t\t\treturn dataItem.id;\r\n\t\t\t},\r\n\t\t\tonRowSelected: (event: any, x: any) => {\r\n\t\t\t\tconst node = event.node;\r\n\t\t\t\tif (!node.group) return;\r\n\t\t\t\tnode.childrenAfterGroup.forEach((child: any) => {\r\n\t\t\t\t\tchild.setSelected(node.isSelected(), false);\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t};\r\n\t\treturn treeOptions;\r\n\t},\r\n\tmergeOptions(gridOptions: GridOptions, cacheBlockSize: any, action: ActionService): any {\r\n\t\tgridOptions.cacheBlockSize = cacheBlockSize ?? 50;\r\n\t\tif (gridOptions.treeDataField) {\r\n\t\t\tlet columnDef: any = gridOptions.columnDefs?.find((col: any) => col.field == gridOptions.treeDataField);\r\n\t\t\tcolumnDef.hide = true;\r\n\t\t\treturn { ...gridOptions, ..._gridUtils.getTreeOptions(columnDef) };\r\n\t\t}\r\n\t\tif (gridOptions.showIndex) {\r\n\t\t\tgridOptions.columnDefs?.unshift({\r\n\t\t\t\theaderName: '#',\r\n\t\t\t\tvalueGetter: (params) => (params.node?.rowIndex || 0) + 1,\r\n\t\t\t\twidth: 80,\r\n\t\t\t\tminWidth: 80,\r\n\t\t\t\tmaxWidth: 80,\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn { ...gridOptions };\r\n\t},\r\n\tgetLangWidth(text:string,font?:any){\r\n\t\tconst canvas = document.createElement('canvas');\r\n \tconst context = canvas.getContext('2d');\r\n\t\tcontext!.font = font || getComputedStyle(document.body).font;\r\n\t\treturn context!.measureText(text).width;\r\n\t}\r\n};\r\nexport const gridUtils = {\r\n\tcalcRowIds: _gridUtils.calcRowIds,\r\n\tselectionHandler: _gridUtils.selectionHandler,\r\n\tcalcGridHeight: _gridUtils.calcGridHeight,\r\n\tgetTheme: _gridUtils.getTheme,\r\n\tgetLocalText: _gridUtils.getLocalText,\r\n\thandleI18nKey: _gridUtils.handleI18nKey,\r\n\tmergeOptions: _gridUtils.mergeOptions,\r\n\tgetLangWidth: _gridUtils.getLangWidth\r\n};\r\n","import type { AfterViewInit } from '@angular/core';\r\nimport { Component, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport type { ICellEditorAngularComp } from 'ag-grid-angular';\r\nimport type { ICellEditorParams } from 'ag-grid-community';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [FormsModule,ReactiveFormsModule,InputTextModule],\r\n template: `<input #input pInputText [(ngModel)]=\"value\" />`,\r\n styles: `\r\n\t\t:host ::ng-deep {\r\n\t\t\t.p-inputtext {\r\n\t\t\t\tborder-width: 0;\r\n\t\t\t\tborder-radius: 0;\r\n\t\t\t\tbox-shadow: none;\r\n\t\t\t\t// background: #f8f8f8;\r\n\t\t\t\tpadding: 0;\r\n\t\t\t}\r\n\t\t\t.p-inputtext:hover {\r\n\t\t\t\tborder-bottom: 1px solid var(--p-primary-color);\r\n\t\t\t}\r\n\t\t\t.p-inputtext:focus {\r\n\t\t\t\tborder-bottom: 1px solid var(--p-primary-color);\r\n\t\t\t}\r\n\t\t}\r\n\t`,\r\n})\r\nexport class CellEditInputTextCompoent implements ICellEditorAngularComp, AfterViewInit {\r\n private params!: ICellEditorParams;\r\n public value: any;\r\n\r\n @ViewChild('input', { read: ViewContainerRef }) public input!: ViewContainerRef;\r\n\r\n agInit(params: ICellEditorParams): void {\r\n this.params = params;\r\n this.value = this.getInitialValue(params);\r\n }\r\n\r\n getValue(): any {\r\n return this.value;\r\n }\r\n\r\n getInitialValue(params: ICellEditorParams): any {\r\n let startValue = params.value;\r\n\r\n const eventKey = params.eventKey;\r\n const isBackspace = eventKey === 'Backspace';\r\n\r\n if (isBackspace) {\r\n startValue = '';\r\n } else if (eventKey && eventKey.length === 1) {\r\n startValue = eventKey;\r\n }\r\n\r\n if (startValue !== null && startValue !== undefined) {\r\n return startValue;\r\n }\r\n\r\n return '';\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.input.element.nativeElement.focus();\r\n });\r\n }\r\n}\r\n","import { InputNumberModule } from 'primeng/inputnumber';\r\n\r\nimport type { AfterViewInit } from '@angular/core';\r\nimport { Component, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport type { ICellEditorAngularComp } from 'ag-grid-angular';\r\nimport type { ICellEditorParams } from 'ag-grid-community';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [FormsModule,ReactiveFormsModule,InputNumberModule],\r\n template: `<p-inputnumber \r\n [(ngModel)]=\"value\" \r\n [fluid]=\"params.fluid\"\r\n [size]=\"params.size\"\r\n [showButtons]=\"params.showButtons\"\r\n [format]=\"params.format\"\r\n [buttonLayout]=\"params.buttonLayout || 'stacked'\"\r\n [inputId]=\"params.inputId\"\r\n [styleClass]=\"params.styleClass\"\r\n [maxlength]=\"params.maxlength || null\"\r\n [ariaLabelledBy]=\"params.ariaLabelledBy\"\r\n [ariaLabel]=\"params.ariaLabel\"\r\n [ariaRequired]=\"params.ariaRequired\"\r\n [autocomplete]=\"params.autocomplete\"\r\n [min]=\"params.min\"\r\n [max]=\"params.max\"\r\n [incrementButtonClass]=\"params.incrementButtonClass\"\r\n [decrementButtonClass]=\"params.decrementButtonClass\"\r\n [incrementButtonIcon]=\"params.incrementButtonIcon\"\r\n [decrementButtonIcon]=\"params.decrementButtonIcon\"\r\n [step]=\"params.step\"\r\n [allowEmpty]=\"params.allowEmpty\"\r\n [locale]=\"params.locale\"\r\n [localeMatcher]=\"params.localeMatcher\"\r\n [mode]=\"params.mode\"\r\n [currency]=\"params.currency\"\r\n [currencyDisplay]=\"params.currencyDisplay\"\r\n [useGrouping]=\"params.useGrouping\"\r\n [variant]=\"params.variant\"\r\n [minFractionDigits]=\"params.minFractionDigits\"\r\n [maxFractionDigits]=\"params.maxFractionDigits\"\r\n [prefix]=\"params.prefix\"\r\n [suffix]=\"params.suffix\"\r\n [inputStyle]=\"params.inputStyle\"\r\n [inputStyleClass]=\"params.inputStyleClass\"\r\n [showClear]=\"params.showClear\"\r\n [autofocus]=\"params.autofocus\"\r\n />`,\r\n styles: ``,\r\n})\r\nexport class CellEditInputNumberCompoent implements ICellEditorAngularComp, AfterViewInit {\r\n public params!: any;\r\n public value: any;\r\n\r\n @ViewChild('input', { read: ViewContainerRef }) public input!: ViewContainerRef;\r\n\r\n agInit(params: ICellEditorParams): void {\r\n this.params = params;\r\n this.value = params.value;\r\n // console.log('params----', params)\r\n }\r\n\r\n getValue(): any {\r\n const value = this.value;\r\n return value === '' || value == null ? null : parseInt(value);\r\n }\r\n\r\n ngAfterViewInit() {\r\n // setTimeout(() => {\r\n // this.input.element.nativeElement.focus();\r\n // });\r\n }\r\n}\r\n","import { DatePickerModule } from 'primeng/datepicker';\r\nimport type { AfterViewInit } from '@angular/core';\r\nimport { Component, inject, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport type { ICellEditorAngularComp } from 'ag-grid-angular';\r\nimport type { ICellEditorParams } from 'ag-grid-community';\r\nimport { DatePipe } from '@angular/common';\r\n@Component({\r\n standalone:true,\r\n imports: [FormsModule,DatePickerModule],\r\n template:`<p-datepicker \r\n #date\r\n [(ngModel)]=\"value\" \r\n [variant]=\"params.variant || 'outlined'\"\r\n\t\t[fluid]=\"params.fluid\"\r\n\t\t[size]=\"params.size\"\r\n\t\t[styleClass]=\"params.styleClass\"\r\n\t\t[inputStyle]=\"params.inputStyle\"\r\n\t\t[inputStyleClass]=\"params.inputStyleClass\"\r\n\t\t[inputId]=\"'date'\"\r\n\t\t[name]=\"params.name\"\r\n\t\t[placeholder]=\"params.placeholder\"\r\n\t\t[ariaLabelledBy]=\"params.ariaLabelledBy\"\r\n\t\t[ariaLabel]=\"params.ariaLabel\"\r\n\t\t[iconAriaLabel]=\"params.iconAriaLabel\"\r\n\t\t[dateFormat]=\"params.dateFormat || 'yy-mm-dd'\"\r\n\t\t[multipleSeparator]=\"params.multipleSeparator || ','\"\r\n\t\t[rangeSeparator]=\"params.rangeSeparator || '-'\"\r\n\t\t[inline]=\"params.inline\"\r\n\t\t[showOtherMonths]=\"params.showOtherMonths == undefined ? true : false\"\r\n\t\t[selectOtherMonths]=\"params.selectOtherMonths\"\r\n\t\t[showIcon]=\"params.showIcon\"\r\n\t\t[fluid]=\"params.fluid == undefined ? true : params.fluid\"\r\n\t\t[icon]=\"params.icon\"\r\n\t\t[appendTo]=\"params.appendTo\"\r\n\t\t[readonlyInput]=\"params.readonlyInput\"\r\n\t\t[shortYearCutoff]=\"params.shortYearCutoff\"\r\n\t\t[hourFormat]=\"params.hourFormat || '24'\"\r\n\t\t[timeOnly]=\"params.timeOnly\"\r\n\t\t[stepHour]=\"params.stepHour || 1\"\r\n\t\t[stepMinute]=\"params.stepMinute || 1\"\r\n\t\t[stepSecond]=\"params.stepSecond || 1\"\r\n\t\t[showSeconds]=\"params.showSeconds\"\r\n\t\t[showOnFocus]=\"params.showOnFocus == undefined ? true : params.fluid\"\r\n\t\t[showWeek]=\"params.showWeek\"\r\n\t\t[startWeekFromFirstDayOfYear]=\"!!params.startWeekFromFirstDayOfYear\"\r\n\t\t[showClear]=\"params.showClear\"\r\n\t\t[dataType]=\"params.dataType || 'date'\"\r\n\t\t[selectionMode]=\"params.selectionMode || 'single'\"\r\n\t\t[maxDateCount]=\"params.maxDateCount\"\r\n\t\t[showButtonBar]=\"params.showButtonBar\"\r\n\t\t[todayButtonStyleClass]=\"params.todayButtonStyleClass\"\r\n\t\t[clearButtonStyleClass]=\"params.clearButtonStyleClass\"\r\n\t\t[autofocus]=\"params.autofocus\"\r\n\t\t[autoZIndex]=\"params.autoZIndex == undefined ? true : params.fluid\"\r\n\t\t[baseZIndex]=\"params.baseZIndex || 0\"\r\n\t\t[panelStyleClass]=\"params.panelStyleClass\"\r\n\t\t[panelStyle]=\"params.panelStyle\"\r\n\t\t[keepInvalid]=\"params.keepInvalid\"\r\n\t\t[hideOnDateTimeSelect]=\"params.hideOnDateTimeSelect == undefined ? true : params.fluid\"\r\n\t\t[touchUI]=\"params.touchUI\"\r\n\t\t[timeSeparator]=\"params.timeSeparator || ':'\"\r\n\t\t[focusTrap]=\"params.focusTrap == undefined ? true : params.fluid\"\r\n\t\t[showTransitionOptions]=\"params.showTransitionOptions || '.12s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\t\t[hideTransitionOptions]=\"params.hideTransitionOptions || '.1s linear'\"\r\n\t\t[tabindex]=\"params.tabindex\"\r\n\t\t[minDate]=\"params.minDate\"\r\n\t\t[maxDate]=\"params.maxDate\"\r\n\t\t[disabledDates]=\"params.disabledDates || []\"\r\n\t\t[disabledDays]=\"params.disabledDays || []\"\r\n\t\t[showTime]=\"!!params.showTime\"\r\n\t\t[responsiveOptions]=\"params.responsiveOptions || []\"\r\n\t\t[numberOfMonths]=\"params.numberOfMonths || 1\"\r\n\t\t[firstDayOfWeek]=\"params.firstDayOfWeek || 7\"\r\n\t\t[view]=\"params.view || 'date'\"\r\n\t\t[defaultDate]=\"params.defaultDate!\"\r\n\t\t[inputStyle]=\"inputStyle\"\r\n\t\t(onSelect)=\"select($event)\"\r\n />\r\n `,\r\n\tstyles: `\r\n\t\t:host {\r\n display: flex;\r\n align-items: center;\r\n height: 100%;\r\n\t\t\twidth:100%;\r\n }\r\n ::ng-deep .p-calendar {\r\n height: 100%;\r\n\t\t\t\r\n }\r\n ::ng-deep .p-calendar .p-inputtext {\r\n height: 100%;\r\n\t\t\twidth:100%;\r\n padding: 0 0.5rem;\r\n border: none;\r\n background: none;\r\n\t\t\tbox-shadow:none\r\n }\r\n\t`,\r\n providers:[DatePipe]\r\n})\r\n\r\nexport class CellEditDatePickerComponent implements ICellEditorAngularComp, AfterViewInit{\r\n public params!: any;\r\n public value: any;\r\n\tinputStyle = {}\r\n @ViewChild('date', { read: ViewContainerRef }) public date!: ViewContainerRef;\r\n datePipe = inject(DatePipe)\r\n agInit(params: ICellEditorParams<any, any, any>): void {\r\n this.value = params.value\r\n this.params = params\r\n\t\t// 获取单元格的宽度\r\n\t\tconst cellWidth = params.column.getActualWidth();\r\n\t\tlet height = params.api.getSizesForCurrentTheme().rowHeight\r\n\t\tthis.inputStyle = {\r\n\t\t\tborder:'none',\r\n\t\t\tboxShadow: 'none',\r\n\t\t\theight:`${height}px`,\r\n\t\t\twidth: `${cellWidth}px`,\r\n\t\t\tbackground:'var(--ag-background-color)',\r\n\t\t}\r\n\t\tconsole.log('inputStyle',this.inputStyle)\r\n }\r\n getValue(){\r\n return this.value \r\n }\r\n\r\n // getPopupPosition(){\r\n // return \"over\" as 'over'\r\n // }\r\n isPopup(){\r\n return true\r\n }\r\n\tselect(e:any){\r\n\t\tconsole.log('e0----',e)\r\n\t\t// this.params.api.\r\n\t}\r\n ngAfterViewInit(){\r\n setTimeout(() => {\r\n // this.date.focus();\r\n });\r\n }\r\n}\r\n","import type { AfterViewInit } from '@angular/core';\r\nimport { Component, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SelectModule } from 'primeng/select';\r\nimport type { ICellEditorAngularComp } from 'ag-grid-angular';\r\nimport type { ICellEditorParams } from 'ag-grid-community';\r\n// 废弃组件无法直接集成ag-grid\r\n@Component({\r\n standalone: true,\r\n imports: [SelectModule,FormsModule],\r\n template:`\r\n <p-select \r\n #select\r\n [(ngModel)]=\"value\"\r\n [scrollHeight]=\"params.scrollHeight || '200px'\"\r\n [filter]=\"params.filter\"\r\n [name]=\"params.name\"\r\n [options]=\"params.options\"\r\n [placeholder]=\"params.placeholder\"\r\n [class]=\"params.class\"\r\n [style]=\"params.style\"\r\n [panelStyle]=\"params.panelStyle\"\r\n [panelStyleClass]=\"params.panelStyleClass\"\r\n [readonly]=\"params.readonly\"\r\n [editable]=\"params.editable\"\r\n [appendTo]=\"params.appendTo || 'body'\"\r\n [tabindex]=\"params.tabindex\"\r\n [placeholder]=\"params.placeholder\"\r\n [loadingIcon]=\"params.loadingIcon\"\r\n [filterPlaceholder]=\"params.filterPlaceholder\"\r\n [filterLocale]=\"params.filterLocale\"\r\n [variant]=\"params.variant\"\r\n [inputId]=\"params.inputId\"\r\n [dataKey]=\"params.dataKey\"\r\n [filterBy]=\"params.filterBy\"\r\n [filterFields]=\"params.filterFields\"\r\n [autofocus]=\"params.autofocus\"\r\n [resetFilterOnHide]=\"params.resetFilterOnHide\"\r\n [checkmark]=\"params.checkmark\"\r\n [dropdownIcon]=\"params.dropdownIcon\"\r\n [loading]=\"params.loading\"\r\n [optionLabel]=\"params.optionLabel\"\r\n [optionValue]=\"params.optionValue\"\r\n [optionDisabled]=\"params.optionDisabled\"\r\n [optionGroupLabel]=\"params.optionGroupLabel\"\r\n [optionGroupChildren]=\"params.optionGroupChildren || 'items'\"\r\n [group]=\"params.group\"\r\n [showClear]=\"params.showClear\"\r\n [emptyFilterMessage]=\"params.emptyFilterMessage\"\r\n [emptyMessage]=\"params.emptyMessage\"\r\n [lazy]=\"params.lazy\"\r\n [virtualScroll]=\"params.virtualScroll\"\r\n [virtualScrollItemSize]=\"params.virtualScrollItemSize\"\r\n [virtualScrollOptions]=\"params.virtualScrollOptions\"\r\n [overlayOptions]=\"params.overlayOptions\"\r\n [size]=\"params.size\"\r\n [ariaFilterLabel]=\"params.ariaFilterLabel\"\r\n [ariaLabel]=\"params.ariaLabel\"\r\n [ariaLabelledBy]=\"params.ariaLabelledBy\"\r\n [filterMatchMode]=\"params.filterMatchMode\"\r\n [maxlength]=\"params.maxlength\"\r\n [tooltip]=\"params.tooltip\"\r\n [tooltipPosition]=\"params.tooltipPosition || 'right'\"\r\n [tooltipPositionStyle]=\"params.tooltipPositionStyle || 'absolute'\"\r\n [tooltipStyleClass]=\"params.tooltipStyleClass\"\r\n [focusOnHover]=\"params.focusOnHover == undefined ? true : params.focusOnHover\"\r\n [fluid]=\"params.fluid == undefined ? true : params.fluid\"\r\n [filterValue]=\"params.filterValue\"\r\n (onChange)=\"onChange($event)\"\r\n />\r\n `,\r\n styles:``\r\n})\r\n\r\nexport class CellEditSelectComponent {\r\n public params!: any;\r\n public value: any;\r\n options:any \r\n\r\n\r\n agInit(params: ICellEditorParams): void {\r\n this.params = params;\r\n this.value = params.value\r\n const cellWidth = params.column.getActualWidth();\r\n\t\tthis.params.style = {\r\n\t\t\tborder: 'none',\r\n\t\t\tboxShadow: 'none',\r\n\t\t\twidth: `${cellWidth}px`,\r\n\t\t\tbackground: 'var(--ag-background-color)',\r\n\t\t};\r\n\t\tthis.params.panelStyle = {\r\n\t\t\twidth: `${cellWidth}px`,\r\n\t\t};\r\n }\r\n getValue(){\r\n // console.log('this.value',this.value)\r\n return this.value\r\n }\r\n onChange(e:any){\r\n console.log(e)\r\n // e.stop\r\n }\r\n}","import { Component, HostListener } from '@angular/core';\r\nimport { ICellEditorParams } from 'ag-grid-community/dist/types/src/interfaces/iCellEditor';\r\nimport { AutoCompleteModule, AutoCompleteSelectEvent } from 'primeng/autocomplete';\r\nimport { FormsModule } from '@angular/forms';\r\n@Component({\r\n standalone: true,\r\n imports: [AutoCompleteModule,FormsModule],\r\n template:`\r\n <p-autocomplete \r\n [(ngModel)]=\"value\" \r\n [suggestions]=\"options\"\r\n [placeholder]=\"params.placeholder\"\r\n [size]=\"'large'\"\r\n appendTo=\"body\"\r\n [optionLabel]=\"params.optionLabel\"\r\n [optionValue]=\"params.optionValue\"\r\n [autofocus]=\"true\"\r\n (completeMethod)=\"search($event)\"\r\n (onSelect)=\"select($event)\" />\r\n `\r\n})\r\n\r\nexport class CellEditAutoCompleteComponent {\r\n public params!: any;\r\n public value: any;\r\n public values:any\r\n options:any \r\n\r\n agInit(params: ICellEditorParams): void {\r\n this.params = params;\r\n this.value = params.value\r\n const { dataMap, optionLabel,optionValue,options = [] } = params.colDef.cellEditorParams\r\n if(this.isKeyValue()){\r\n this.value = dataMap[this.value][optionLabel]\r\n }\r\n this.options = options\r\n }\r\n getValue(){\r\n console.log('this.value',this.value)\r\n return this.value\r\n }\r\n // refresh(param:any){\r\n // this.options = param.options\r\n // }\r\n onChange(e:any){\r\n console.log(e)\r\n // e.stop\r\n }\r\n isKeyValue(){\r\n const { dataMap, optionLabel,optionValue} = this.params.colDef.cellEditorParams\r\n return dataMap && optionLabel && optionValue && optionValue !== optionLabel\r\n }\r\n search(e:any){\r\n this.params.search(e).subscribe((res:any) => {\r\n this.options = res.data\r\n if(this.isKeyValue() && res.data.length > 0){\r\n this.params.colDef.cellEditorParams.dataMap = res.data.reduce((p:any,n:any) => {\r\n if(!p[n.id]){\r\n p[n.id] = n\r\n }\r\n return p\r\n },{})\r\n }\r\n if(res.data.length === 0){\r\n this.params.colDef.cellEditorParams.hasOwnProperty('dataMap') && delete this.params.colDef.cellEditorParams.dataMap\r\n }\r\n })\r\n // this.options = ['2',2,4]\r\n }\r\n focusIn(){\r\n\r\n }\r\n\r\n select(e:AutoCompleteSelectEvent){\r\n this.params.api.stopEditing(); \r\n }\r\n // @HostListener('keydown.enter', ['$event'])\r\n // onEnter(event: KeyboardEvent) {\r\n // this.params.api.stopEditing();\r\n // }\r\n}","import type { AfterViewInit } from '@angular/core';\r\nimport { Component, inject, Renderer2, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport type { ICellEditorAngularComp } from 'ag-grid-angular';\r\nimport type { ICellEditorParams } from 'ag-grid-community';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n@Component({\r\n standalone:true,\r\n imports: [FormsModule],\r\n template:`\r\n <div #container class=\"date-picker-container\">\r\n <input \r\n class=\"ag-input-field-input ag-date-field-input\" \r\n data-ref=\"eInput\"\r\n [(ngModel)]=\"value\" \r\n type=\"datetime-local\" \r\n id=\"ag-78-input\" \r\n tabindex=\"0\" \r\n [step]=\"params.step || '0'\" \r\n aria-label=\"Input Editor\">\r\n </div>\r\n \r\n `,\r\n providers:[DatePipe]\r\n})\r\n\r\nexport class CellEditInputDateComponent implements ICellEditorAngularComp, AfterViewInit{\r\n public params!: any;\r\n public value: any;\r\n @ViewChild('container', { read: ViewContainerRef }) public container!: ViewContainerRef;\r\n datePipe = inject(DatePipe)\r\n renderer = inject(Renderer2)\r\n agInit(params: ICellEditorParams<any, any, any>): void {\r\n this.value = params.value\r\n this.params = params\r\n }\r\n getValue(){\r\n let time = new Date(this.value)\r\n return ''+ this.datePipe.transform(time,this.params.formatter || 'yyyy-MM-dd HH:mm')\r\n }\r\n getPopupPosition(){\r\n return \"over\" as 'over'\r\n }\r\n // isPopup(){\r\n // return true\r\n // }\r\n ngAfterViewInit(){\r\n // setTimeout(() => {\r\n // this.date.focus();\r\n // });\r\n }\r\n}","import { Component, inject } from '@angular/core';\r\nimport type { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport type { ICellRendererParams } from 'ag-grid-community';\r\nimport { Router } from '@angular/router';\r\n@Component({\r\n\tstandalone: true,\r\n\tstyles: `\r\n\t\t.cell-link {\r\n\t\t\tcolor: var(--p-primary-color);\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\t`,\r\n\ttemplate: `\r\n\t\t<span\r\n\t\t\tclass=\"cell-link\"\r\n\t\t\t(click)=\"onLink()\"\r\n\t\t\t>{{ params.valueFormatted ? params.valueFormatted : params.value }}</span\r\n\t\t>\r\n\t`,\r\n})\r\nexport class LinkRenderer implements ICellRendererAngularComp {\r\n\tparams!: any;\r\n\trouter = inject(Router);\r\n\tconstructor() {}\r\n\r\n\tagInit(params: ICellRendererParams): void {\r\n\t\tthis.refresh(params);\r\n\t}\r\n\r\n\trefresh(params: ICellRendererParams): boolean {\r\n\t\tthis.params = params;\r\n\t\treturn true;\r\n\t}\r\n\r\n\tonLink() {\r\n\t\tconst { url, queryParam } = this.params;\r\n\t\tif (url) {\r\n\t\t\tlet urlStr = typeof url == 'function' ? url(this.params.data) : '';\r\n\t\t\tlet query = typeof queryParam === 'function' ? queryParam(this.params.data) : {};\r\n\t\t\turlStr !== '' && this.router.navigate([urlStr], { queryParams: query });\r\n\t\t}\r\n\t}\r\n}\r\n","import { AsyncPipe } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\timports: [CommonModule],\r\n\tproviders: [AsyncPipe],\r\n\ttemplate: `{{ label }}`,\r\n})\r\nexport class AsyncRenderer {\r\n\tlabel: any;\r\n\toptionsHook?: (value: any) => Observable<any[]>;\r\n\r\n\tagInit(params: any): void {\r\n\t\tthis.optionsHook = params.optionsHook;\r\n\t\tthis.triggerOptionsHook(params.value);\r\n\t}\r\n\r\n\ttriggerOptionsHook(value: any) {\r\n\t\tif (this.optionsHook) {\r\n\t\t\tthis.optionsHook(value).subscribe((res: any) => {\r\n\t\t\t\tthis.label = res?.find((item: any) => item.value === value)?.label || '';\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n","import { AsyncPipe } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nconst ColorMap: any = {\r\n\temerald: '#10B981',\r\n\tgreen: '#22c55e',\r\n\tlime: '#84CC16',\r\n\torange: '#f97316',\r\n\tamber: '#F59E0B',\r\n\tsky: '#0EA5E9',\r\n\tblue: '#0ea5e9',\r\n\tviolet: '#6B26C1',\r\n\tpink: '#EC4899',\r\n\tpurple: '#f97316',\r\n\tred: '#EF4444',\r\n\tyellow: '#F59E0B',\r\n\tgray: '#4B5563',\r\n\tteal: '#16A34A',\r\n\tcyan: '#25D366',\r\n\tindigo: '#6574CD',\r\n\tfushsia: '#E10098',\r\n};\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\timports: [CommonModule],\r\n\tproviders: [AsyncPipe],\r\n\tstyles: `\r\n\t\t.cell-chip {\r\n\t\t\tpadding: 2px 5px;\r\n\t\t\tcolor: #fff;\r\n\t\t\tborder-radius: 2px;\r\n\t\t\tfont-size: 12px;\r\n\t\t}\r\n\t`,\r\n\ttemplate: `\r\n\t\t@if (color) {\r\n\t\t\t<span\r\n\t\t\t\tclass=\"cell-chip\"\r\n\t\t\t\t[style]=\"{ background: color }\"\r\n\t\t\t\t>{{ label }}</span\r\n\t\t\t>\r\n\t\t} @else {\r\n\t\t\t<span>{{ label }}</span>\r\n\t\t}\r\n\t`,\r\n})\r\nexport class ChipRenderer {\r\n\tlabel: string = '';\r\n\tcolor: string = '';\r\n\r\n\tagInit(params: any): void {\r\n\t\tconst options: any[] = params.options;\r\n\t\tconst item = options?.find((item: any) => item.value === params.value);\r\n\t\tthis.label = item?.label || '';\r\n\t\tthis.color = item?.chip ? ColorMap[item.chip!] : '';\r\n\t}\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { ImageModule } from 'primeng/image';\r\n\r\n@Component({\r\n standalone: true,\r\n imports:[ImageModule],\r\n template:`\r\n @for(img of imgList;track img){\r\n <p-image\r\n [src]=\"img\"\r\n alt=\"Image\"\r\n height=\"40\"\r\n [imageStyle]=\"{height:'40px'}\"\r\n appendTo=\"body\"\r\n [preview]=\"true\"\r\n [style]=\"{marginRight:'5px'}\"\r\n />\r\n }\r\n `,\r\n styles:`\r\n :host::ng-deep{\r\n .p-image-preview {\r\n margin-right: 5px\r\n }\r\n }\r\n `\r\n})\r\n\r\nexport class ImgRenderer {\r\n imgList = []\r\n\r\n agInit(params: any): void {\r\n if(typeof params.value === 'string'){\r\n this.imgList = params.value.split(',')\r\n } else {\r\n this.imgList = params.value\r\n }\r\n }\r\n}\r\n","import { Component, Renderer2 } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-enterprise';\r\n\r\n@Component({\r\n selector: 'app-row-span-renderer',\r\n\tstandalone: true,\r\n\timports: [],\r\n\ttemplate: `\r\n <div>{{ params.value }}</div>\r\n `,\r\n\r\n})\r\n\r\nexport class RowSpanRenderer implements ICellRendererAngularComp {\r\n\tparams?: any;\r\n\trowSpan: number = 1;\r\n\trowElementObservers: ResizeObserver[] = [];\r\n\r\n\tconstructor(private renderer: Renderer2) {\r\n\t\tthis.resetRowSpanItemHeight = this._debounce(this.resetRowSpanItemHeight,100)\r\n\t}\r\n\r\n\tagInit(params: any): void {\r\n\t\tthis.params = params;\r\n\t\tthis.refresh(params);\r\n\t}\r\n\r\n\trefresh(params: ICellRendererParams): boolean {\r\n\t\tthis.rowSpan = this.params.rowSpan(this.params);\r\n\t\tthis.initRowElementObservers();\r\n\t\tthis.setRowSpanStyle();\r\n\t\treturn true;\r\n\t}\r\n\r\n\tinitRowElementObservers() {\r\n\t\tif (this.rowSpan <= 1) return;\r\n\t\tconst { visibleCols} = this.params.node.beans;\r\n\t\tconst hasWap = visibleCols.allCols.some((v:any) => v.colDef.autoHeight && v.colDef.cellClass == 'cell-wrap-text');\r\n\t\tif(!hasWap) return \r\n\t\tfor (let i = this.params.node.rowIndex; i < this.params.node.rowIndex + this.rowSpan; i++) {\r\n\t\t\tconst rowElement = document.querySelector(`.ag-row[row-index=\"${i}\"]`);\r\n\t\t\tif (!rowElement) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tconst rowElementObserver = new ResizeObserver((entries) => {\r\n\t\t\t\tentries.forEach((entry) => {\r\n\t\t\t\t\tthis.resetRowSpanItemHeight();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\trowElementObserver.observe(rowElement);\r\n\t\t}\r\n\t}\r\n\t\r\n\tresetRowSpanItemHeight() {\r\n\t\tlet totalHeight: number = 0;\r\n\t\tfor (let i = this.params.node.rowIndex; i < this.params.node.rowIndex + this.rowSpan; i++) {\r\n\t\t\tconst rowHeight = this.params.api.getDisplayedRowAtIndex(i)?.rowHeight;\r\n\t\t\ttotalHeight = totalHeight + (rowHeight || 0);\r\n\t\t}\r\n\t\tthis.renderer.setStyle(this.params.eGridCell, 'height', totalHeight + 'px');\r\n\t}\r\n\r\n\tsetRowSpanStyle() {\r\n\t\tconst gridCellElement = this.params.eGridCell;\r\n\t\tif (this.rowSpan > 1) {\r\n\t\t\tthis.renderer.setStyle(gridCellElement, 'z-index', '2');\r\n\t\t\tthis.renderer.setStyle(gridCellElement, 'display', 'flex');\r\n\t\t\tthis.renderer.setStyle(gridCellElement, 'align-items', 'center');\r\n\t\t\tthis.renderer.setStyle(gridCellElement, 'background', 'white');\r\n\t\t\tif (this.params.node.rowIndex + this.rowSpan !== this.params.api.getDisplayedRowCount()) {\r\n\t\t\t\tthis.renderer.setStyle(\r\n\t\t\t\t\tgridCellElement,\r\n\t\t\t\t\t'border-bottom',\r\n\t\t\t\t\t'1px solid color-mix(in srgb, transparent, var(--ag-foreground-color) 15%)',\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_debounce(\r\n func: (...args: any[]) => void,\r\n delay: number\r\n\t): (...args: any[]) => void {\r\n let timeout: any;\r\n // Calling debounce returns a new anonymous function\r\n return function (...args: any[]) {\r\n //@ts-expect-error no implicit this\r\n const context = this as any;\r\n window.clearTimeout(timeout);\r\n\r\n // Set the new timeout\r\n timeout = window.setTimeout(function () {\r\n // at the moment we just check if the bean is still alive, in the future the bean stub should\r\n // another option is to manage a list of active timers and clear them when the bean is destroyed.\r\n func.apply(context, args);\r\n }, delay);\r\n };\r\n\t}\r\n}","import {\r\n\tCellEditInputNumberCompoent,\r\n\tCellEditDatePickerComponent,\r\n\tCellEditSelectComponent,\r\n\tCellEditAutoCompleteComponent,\r\n\tCellEditInputDateComponent\r\n} from './cell-edit/index';\r\nimport { LinkRenderer } from './cell-render/link-render';\r\nimport { AsyncRenderer } from './cell-render/async-renderer';\r\nimport { ChipRenderer } from './cell-render/chip-render';\r\nimport { ImgRenderer } from './cell-render/img-renderer'\r\nimport { RowSpanRenderer } from './cell-render/row-span'\r\n// rowModelType 使用clientSide的最大值\r\nexport const CLIENTLIMIT = 9999;\r\n\r\nexport const components = {\r\n\tcellEditInputNumberCompoent: CellEditInputNumberCompoent,\r\n\tcellEditDatePickerComponent: CellEditDatePickerComponent,\r\n\tcellEditSelectComponent: CellEditSelectComponent,\r\n\tlinkRenderer: LinkRenderer,\r\n\tasyncRenderer: AsyncRenderer,\r\n\tchipRenderer: ChipRenderer,\r\n\tcellEditAutoCompleteComponent: CellEditAutoCompleteComponent,\r\n\timgRenderer: ImgRenderer,\r\n\tcellEditInputDateComponent: CellEditInputDateComponent,\r\n\trowSpanRenderer: RowSpanRenderer\r\n};\r\n","import {\r\n\tComponent,\r\n\tViewChild,\r\n\tElementRef,\r\n\tinput,\r\n\teffect,\r\n\tinject,\r\n\tcomputed,\r\n\tuntracked,\r\n\toutput,\r\n\tNgZone,\r\n\tRenderer2,\r\n\tChangeDetectorRef,\r\n\tHostListener,\r\n\tsignal,\r\n} from '@angular/core';\r\nimport { CellValueChangedEvent, ColDef, GridOptions as RawGridOptions, RowDragEndEvent } from 'ag-grid-community';\r\nimport { AgGridAngular } from 'ag-grid-angular';\r\nimport { ThemeConfigService } from '../../service/themeConfig.service';\r\nimport { ActionService } from '../../service/action.service';\r\nimport { I18nService } from '../../service/i18n.service';\r\nimport { Search,ColumnFilter } from '../../am/am.component';\r\nimport { gridUtils } from '../grid-utils';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { lastValueFrom, Observable, of } from 'rxjs';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { components, CLIENTLIMIT } from '../mock-data';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\n\r\nexport interface GridOptions extends RawGridOptions {\r\n\tserverFunc?: (search: Search) => Observable<any>;\r\n\tclientFunc?: (search: Search) => Observable<any>;\r\n\tshowSearch?: boolean;\r\n\tpreSearch?: Search;\r\n\ttreeDataField?: string;\r\n\ttreeLevel?: number;\r\n\theaderHeight?: number;\r\n\tscrollHeight?: string;\r\n\tshowIndex?: boolean;\r\n\tundoRedoCellEditing?: boolean;\r\n\tundoRedoCellEditingLimit?: number;\r\n\tmainField?: string;\r\n\tmodelName?: string;\r\n\tfk?: string;\r\n\tdragSort?: string;\r\n\tselectionMode?: 'none' | 'single' | 'multiple';\r\n\tdataKey?: string;\r\n}\r\n\r\nconst defaultOption: GridOptions = {\r\n\t// popupParent: document.body,\r\n\tdefaultColDef: {\r\n\t\tflex: 1,\r\n\t\tminWidth: 100,\r\n\t\tsortable: false,\r\n\t\tfilter: false,\r\n\t},\r\n\trowSelection: { mode: 'multiRow' },\r\n\trowModelType: 'serverSide',\r\n\tcellSelection: {\r\n\t\thandle: {\r\n\t\t\tmode: 'range',\r\n\t\t},\r\n\t},\r\n\tenableCharts: true,\r\n\tundoRedoCellEditing: true,\r\n\tundoRedoCellEditingLimit: 20,\r\n};\r\n\r\nconst defaultSorts = [{ field: 'createdAt', isAsc: false }];\r\nfunction findLastIndex(array: any[], predicate: any, thisArg: any) {\r\n\tfor (let i = array.length - 1; i >= 0; i--) {\r\n\t\tif (predicate.call(thisArg, array[i], i, array)) {\r\n\t\t\treturn i;\r\n\t\t}\r\n\t}\r\n\treturn -1;\r\n}\r\n\r\n@Component({\r\n\tselector: 'custom-grid',\r\n\tstandalone: true,\r\n\timports: [AgGridAngular, ButtonModule],\r\n\ttemplateUrl: './grid.component.html',\r\n\tstyleUrl: './grid.component.scss',\r\n})\r\nexport class GridComponent {\r\n\t@ViewChild(AgGridAngular) grid!: AgGridAngular;\r\n\t@ViewChild(AgGridAngular, { read: ElementRef }) gridRef!: ElementRef;\r\n\t@ViewChild('gridContainer') containerRef!: ElementRef;\r\n\tgridOptions = input<GridOptions>({});\r\n\tselectionKeys = input<any[]>([]);\r\n\ttoOptions = computed(() =>\r\n\t\tgridUtils.mergeOptions({ ...defaultOption, ...this.gridOptions() }, untracked(() => this.searchPrm()).limit, this.action),\r\n\t);\r\n\tthemeConfig = inject(ThemeConfigService);\r\n\tlocaleText: any;\r\n\ti18nService = inject(I18nService);\r\n\tmyTheme = computed(() => gridUtils.getTheme(this.themeConfig));\r\n\tcomponents = components;\r\n\tcolumnDefs: ColDef[] = [];\r\n\tinitGrid = true;\r\n\tcontentMap: Record<string, string> = {};\r\n\tmainField!: string;\r\n\tmodelName!: string;\r\n\tupsert = input<any>();\r\n\tsubIndex!: number;\r\n\trowData = input<any>(undefined);\r\n\tsearchPrm = input<Search>({});\r\n\trawPrm?: Search;\r\n\tdeleteEmit = output<number[]>();\r\n\taddEmit = output();\r\n\taddType = input<'handle' | 'select' | 'none'>();\r\n\tselectData = input<any[]>();\r\n\tshowAct = input<boolean>(true);\r\n\tactPos = input<'top' | 'bottom'>('bottom');\r\n\tauthLevel = input<number>(-1);\r\n\thttp = inject(HttpClient);\r\n\trenderer = inject(Renderer2);\r\n\tngZone = inject(NgZone);\r\n\tcdr = inject(ChangeDetectorRef);\r\n\tshowDelete = input<boolean>(true);\r\n\tgridDisable = input<boolean>(false);\r\n\taddSort = input<string>();\r\n\r\n\trichMultMap: Record<string, any> = {};\r\n\thorizontalScrollBarObserver: any;\r\n\thorizontalScrollBarHeight = 0;\r\n\tverticalScrollBarObserver: any;\r\n\tverticalScrollBarWidth = 0;\r\n\tgridHeight = 0;\r\n\tselectedRows = signal<any[]>([]);\r\n\tnoRows = true;\r\n\tshowHorizontal = false;\r\n\tdragBeforeIndex = -1;\r\n\r\n\t@HostListener('window:resize')\r\n\tonResize() {\r\n\t\tthis.setScrollHeight();\r\n\t}\r\n\r\n\tconstructor(private action: ActionService) {\r\n\t\tconst searchPrm$ = toObservable(this.searchPrm).subscribe((searchPrm) => {\r\n\t\t\tif (searchPrm.modelName !== undefined) {\r\n\t\t\t\tthis.rawPrm = searchPrm;\r\n\t\t\t\tsearchPrm$.unsubscribe();\r\n\t\t\t}\r\n\t\t});\r\n\t\teffect(\r\n\t\t\tasync () => {\r\n\t\t\t\tthis.columnDefs = await this.setRichValue();\r\n\t\t\t\tthis.columnDefs = gridUtils.handleI18nKey(this.toOptions().columnDefs! || [], this.i18nService);\r\n\t\t\t\tthis.mainField = this.toOptions().mainField!;\r\n\t\t\t\tthis.modelName = this.toOptions().modelName!;\r\n\t\t\t\tif (!this.upsert()?.subsert?.find((v: any) => v.subModelName === this.modelName)) {\r\n\t\t\t\t\tthis.upsert()?.subsert?.push({\r\n\t\t\t\t\t\tsubModelName: this.toOptions().modelName,\r\n\t\t\t\t\t\tfk: this.toOptions().fk,\r\n\t\t\t\t\t\tsubData: [],\r\n\t\t\t\t\t\tmaptmp: new Map(),\r\n\t\t\t\t\t\tlogtmp: new Map(),\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tthis.subIndex = this.upsert()?.subsert?.findIndex((v: any) => v.subModelName === this.modelName);\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tif (!this.action.searchMonitor(this.toOptions().modelName)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis.getData();\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t\teffect(() => {\r\n\t\t\tif (this.rowData() === undefined) return;\r\n\t\t\tuntracked(() => {\r\n\t\t\t\tthis.toOptions().clientFunc = () => of({ data: this.rowData(), totalNum: this.rowData()?.length });\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.getClientData(undefined);\r\n\t\t\t\t}, 100);\r\n\t\t\t});\r\n\t\t});\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tif (this.selectData() && this.selectData()!.length > 0 && this.grid) {\r\n\t\t\t\t\tthis.handleAddedRows(this.selectData()!);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tthis.toOptions().preSearch &&\r\n\t\t\t\t\tthis.action.setSearch({ columnFilters: this.toOptions().preSearch!.columnFilters }, this.toOptions().modelName);\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst action = this.action.getAction();\r\n\t\t\t\tif (action?.type === 'export') {\r\n\t\t\t\t\tthis.grid.api.exportDataAsExcel({ fileName: this.modelName });\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t\tthis.editingFix();\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.i18nService.change.subscribe((res) => {\r\n\t\t\tthis.grid && this.grid.api.destroy();\r\n\t\t\tthis.initGrid = false;\r\n\t\t\tthis.localeText = gridUtils.getLocalText(res);\r\n\t\t\tthis.columnDefs = gridUtils.handleI18nKey(this.toOptions().columnDefs!, this.i18nService);\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.initGrid = true;\r\n\t\t\t}, 100);\r\n\t\t});\r\n\t\tthis.localeText = gridUtils.getLocalText(this.i18nService.currentLang);\r\n\t}\r\n\r\n\tngAfterViewInit() {}\r\n\r\n\tngOnDestroy() {\r\n\t\tif (this.horizontalScrollBarObserver) {\r\n\t\t\tthis.horizontalScrollBarObserver.disconnect();\r\n\t\t}\r\n\t\tif (this.verticalScrollBarObserver) {\r\n\t\t\tthis.verticalScrollBarObserver.disconnect();\r\n\t\t}\r\n\t}\r\n\r\n\tgetGrid(): AgGridAngular {\r\n\t\treturn this.grid;\r\n\t}\r\n\r\n\tonGridReady(e: any) {\r\n\t\tthis.initGridHeight();\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.getData();\r\n\t\t}, 100);\r\n\t}\r\n\r\n\tonSelectionChanged(event: any): any {\r\n\t\tthis.selectedRows.set(gridUtils.calcRowIds(event.api, this.toOptions()?.rowModelType == 'serverSide'));\r\n\t}\r\n\r\n\tonRowGroupOpened() {\r\n\t\tthis.ngZone.runOutsideAngular(() => {\r\n\t\t\trequestAnimationFrame(() => {\r\n\t\t\t\tthis.ajustGridHeight();\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tasync setRichValue() {\r\n\t\tlet col = this.toOptions().columnDefs! || [];\r\n\t\ttry {\r\n\t\t\tconst processedCols = await Promise.all(\r\n\t\t\t\tcol.map(async (item: any) => {\r\n\t\t\t\t\tif (item.hasOwnProperty('fieldId') && (item.cellEditor == 'agRichSelectCellEditor' || item.cellEditor == 'agSelectCellEditor')) {\r\n\t\t\t\t\t\tlet values: any = [];\r\n\t\t\t\t\t\tif (!item.cellEditorParams || !item.cellEditorParams.hasOwnProperty('values')) {\r\n\t\t\t\t\t\t\tif (item.hasOwnProperty('selectData')) {\r\n\t\t\t\t\t\t\t\tvalues = await item.selectData();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\titem.cellEditorParams = {\r\n\t\t\t\t\t\t\t\t...item.cellEditorParams,\r\n\t\t\t\t\t\t\t\tvalueListMaxHeight: 200,\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t} else if (item.cellEditorParams && item.cellEditorParams.hasOwnProperty('values')) {\r\n\t\t\t\t\t\t\tvalues = item.cellEditorParams.values;\r\n\t\t\t\t\t\t\titem.cellEditorParams.valueListMaxHeight = 200;\r\n\t\t\t\t\t\t\titem.cellEditorParams.suppressMultiSelectPillRenderer = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlet isString = values.every((item: any) => typeof item === 'string');\r\n\t\t\t\t\t\tif (!isString) {\r\n\t\t\t\t\t\t\titem.cellEditorParams.rawOptions = values;\r\n\t\t\t\t\t\t\titem.cellEditorParams.values = values.map((item: any) => item.value);\r\n\t\t\t\t\t\t\titem.valueFormatter = (params: any) => {\r\n\t\t\t\t\t\t\t\tconst options = params.colDef.cellEditorParams.rawOptions as any[];\r\n\t\t\t\t\t\t\t\tif (typeof params.value === 'number') {\r\n\t\t\t\t\t\t\t\t\tconst options = params.colDef.cellEditorParams.rawOptions as any[];\r\n\t\t\t\t\t\t\t\t\tconst option = options.find((opt) => opt.value == params.value);\r\n\t\t\t\t\t\t\t\t\treturn option ? option.label : params.value;\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tlet values: any = [];\r\n\t\t\t\t\t\t\t\t\tif (typeof params.value === 'string') {\r\n\t\t\t\t\t\t\t\t\t\tif (params.value.length > 0) {\r\n\t\t\t\t\t\t\t\t\t\t\tvalues = params.value.split(',').map((v: any) => (!isNaN(v) ? Number(v) : v)) || [];\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tvalues = params.value || [];\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tconst option = options.filter((opt) => values.includes(opt.value)) || [];\r\n\t\t\t\t\t\t\t\t\treturn option.length > 0 ? option.map((v) => v.label) : params.value;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\titem.valueGetter = (params: any) => {\r\n\t\t\t\t\t\t\t\t// console.log('pamrams----',params,item.field)\r\n\t\t\t\t\t\t\t\tif (item.cellEditor == 'agRichSelectCellEditor' && params.data.hasOwnProperty(item.field)) {\r\n\t\t\t\t\t\t\t\t\treturn typeof params.data[item.field] == 'string' ? params.data[item.field].split(',') : params.data[item.field];\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn params.data[item.field];\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\titem.valueParser = (params: any) => {\r\n\t\t\t\t\t\t\t\t// console.log('params----',params)\r\n\t\t\t\t\t\t\t\tconst options = params.colDef.cellEditorParams.rawOptions as any[];\r\n\t\t\t\t\t\t\t\tconst option = options.find((opt) => opt.label === params.newValue);\r\n\t\t\t\t\t\t\t\treturn option ? option.value : params.newValue;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\titem.cellEditorParams.values = values;\r\n\t\t\t\t\t\t\titem.valueGetter = (params: any) => {\r\n\t\t\t\t\t\t\t\tif (item.cellEditor == 'agRichSelectCellEditor' && params.data.hasOwnProperty(item.field)) {\r\n\t\t\t\t\t\t\t\t\treturn typeof params.data[item.field] == 'string' ? params.data[item.field].split(',') : params.data[item.field];\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn params.data[item.field];\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn item;\r\n\t\t\t\t}),\r\n\t\t\t);\r\n\t\t\treturn processedCols;\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error('Error processing columns:', error);\r\n\t\t\tthrow error;\r\n\t\t}\r\n\t}\r\n\r\n\tgetEnums(id: number) {\r\n\t\treturn lastValueFrom(this.http.post('get', { id: Number(id), modelName: 'ModelField', preloads: ['Enum'] }));\r\n\t}\r\n\r\n\thandleSelections(startRow: number) {\r\n\t\tsetTimeout(() => {\r\n\t\t\tif (this.selectionKeys()?.length) {\r\n\t\t\t\tgridUtils.selectionHandler(this.grid.api, this.selectionKeys(), startRow, this.toOptions()?.dataKey);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tgetData() {\r\n\t\tuntracked(() => {\r\n\t\t\tconsole.log('this.toOptions()',this.toOptions())\r\n\t\t\tif (!this.searchPrm().modelName && !this.rowData()) return;\r\n\t\t\tthis.cancelSelect();\r\n\t\t\tconst search = this.action.getSearch(this.toOptions().modelName);\r\n\t\t\tthis.toOptions()?.rowModelType == 'serverSide' ? this.getServerData(search) : this.getClientData(search);\r\n\t\t});\r\n\t}\r\n\r\n\tgetServerData(search?: Search) {\r\n\t\tthis.grid?.api.setGridOption('serverSideDatasource', {\r\n\t\t\tgetRows: (params) => {\r\n\t\t\t\tconst searchPrm: Search = {\r\n\t\t\t\t\t...this.searchPrm(),\r\n\t\t\t\t\toffset: params.request.startRow,\r\n\t\t\t\t\tcolumnFilters: [...(this.rawPrm?.columnFilters || []), ...(search?.columnFilters || [])],\r\n\t\t\t\t\tsorts: search?.sorts?.length ? search.sorts : this.rawPrm?.sorts?.length ? this.rawPrm.sorts : defaultSorts,\r\n\t\t\t\t};\r\n\t\t\t\tsearchPrm.columnFilters = this.isRange(searchPrm.columnFilters!) as ColumnFilter[];\r\n\t\t\t\tthis.handleServerTree(params, searchPrm);\r\n\t\t\t\tthis.toOptions()\r\n\t\t\t\t\t.serverFunc?.(searchPrm)\r\n\t\t\t\t\t.subscribe((res: any) => {\r\n\t\t\t\t\t\tthis.action.setPage({\r\n\t\t\t\t\t\t\tstartRow: params.request.startRow,\r\n\t\t\t\t\t\t\tendRow: params.request.endRow! < res.totalNum ? params.request.endRow : res.totalNum,\r\n\t\t\t\t\t\t\ttotal: res.totalNum,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tparams.success({ rowData: res.data || [] });\r\n\t\t\t\t\t\tthis.ajustGridHeight();\r\n\t\t\t\t\t\tthis.handleSelections(params.request.startRow || 0);\r\n\t\t\t\t\t});\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\thandleServerTree(params: any, searchPrm: Search) {\r\n\t\tif (!this.toOptions().treeData) return;\r\n\t\tif (params.request.groupKeys.length > 0) {\r\n\t\t\tsearchPrm.columnFilters = searchPrm.columnFilters?.filter((columnFilter) => columnFilter.columnField !== 'pid');\r\n\t\t\tsearchPrm.columnFilters = [\r\n\t\t\t\t// ...(searchPrm.columnFilters || []),\r\n\t\t\t\t{ columnField: 'pid', type: 'eq', fiter: params.request.groupKeys[params.request.groupKeys.length - 1] },\r\n\t\t\t];\r\n\t\t} else {\r\n\t\t\tif (!searchPrm.columnFilters?.find((columnFilter) => columnFilter.columnField === 'pid')) {\r\n\t\t\t\tsearchPrm.columnFilters = [...(searchPrm.columnFilters || []), { columnField: 'pid', type: 'eq', fiter: 0 }];\r\n\t\t\t}\r\n\t\t}\r\n\t\tsearchPrm.preloads = ['children'];\r\n\t}\r\n\r\n\tgetClientData(search?: Search) {\r\n\t\tconst searchPrm: Search = {\r\n\t\t\t...this.searchPrm(),\r\n\t\t\tlimit: CLIENTLIMIT,\r\n\t\t\tcolumnFilters: [...(this.rawPrm?.columnFilters || []), ...(search?.columnFilters || [])],\r\n\t\t\tsorts: search?.sorts?.length ? search.sorts : defaultSorts,\r\n\t\t};\r\n\t\tsearchPrm.columnFilters = this.isRange(searchPrm.columnFilters!) as ColumnFilter[];\r\n\t\tthis.handleClientTree(searchPrm);\r\n\t\tthis.toOptions()\r\n\t\t\t.clientFunc?.(searchPrm)\r\n\t\t\t.subscribe((res: any) => {\r\n\t\t\t\tthis.action.setPage({\r\n\t\t\t\t\ttotal: res.totalNum,\r\n\t\t\t\t\tmode: 'client',\r\n\t\t\t\t});\r\n\t\t\t\tthis.grid?.api.setGridOption('rowData', res.data || []);\r\n\t\t\t\tthis.ajustGridHeight();\r\n\t\t\t\tthis.handleSelections(0);\r\n\t\t\t});\r\n\t}\r\n\r\n\thandleClientTree(searchPrm: Search) {\r\n\t\tif (!this.toOptions().treeData) return;\r\n\t\tconst preloads: any[] = [];\r\n\t\tfor (let i = 1; i < this.toOptions().treeLevel!; i++) {\r\n\t\t\tpreloads.push(Array(i).fill('children').join('.'));\r\n\t\t}\r\n\t\tsearchPrm.preloads = preloads;\r\n\t}\r\n\r\n\tcellValueChanged(e: CellValueChangedEvent) {\r\n\t\tlet {\r\n\t\t\tcolDef: { field, headerName, cellEditor, cellEditorParams },\r\n\t\t\tnewValue,\r\n\t\t\toldValue,\r\n\t\t\trowIndex,\r\n\t\t\tdata: { id },\r\n\t\t} = e;\r\n\t\tconsole.log('e------', e);\r\n\t\tif (cellEditor == 'agRichSelectCellEditor' && cellEditorParams && cellEditorParams.multiSelect) {\r\n\t\t\tnewValue = newValue && newValue.length > 0 ? newValue.join(',') : '';\r\n\t\t\tthis.richMultMap[field!] = newValue;\r\n\t\t}\r\n\t\tif (!id || id === 0) {\r\n\t\t\tid === 0 && delete e.data.id;\r\n\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].set(rowIndex!, Object.assign({ ...e.data }, this.richMultMap));\r\n\t\t\tif (field == this.mainField) {\r\n\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].set(rowIndex! + field!, { newValue: newValue, id: 0, label: headerName });\r\n\t\t\t}\r\n\t\t} else if (id) {\r\n\t\t\tconst fieldstr = `${field}`;\r\n\t\t\tlet o: any;\r\n\t\t\tif (this.upsert()?.subsert[this.subIndex]['maptmp'].has(rowIndex!)) {\r\n\t\t\t\to = this.upsert()?.subsert[this.subIndex]['maptmp'].get(rowIndex!);\r\n\t\t\t\tObject.assign(o, { [fieldstr]: newValue });\r\n\t\t\t} else {\r\n\t\t\t\to = { id: id, [fieldstr]: newValue };\r\n\t\t\t}\r\n\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].set(rowIndex!, o);\r\n\t\t\tlet old = this.upsert()?.subsert[this.subIndex]['logtmp'].get(rowIndex! + field!);\r\n\t\t\tif (old) {\r\n\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].set(rowIndex! + field!, {\r\n\t\t\t\t\tnewValue: newValue,\r\n\t\t\t\t\toldValue: old.oldValue,\r\n\t\t\t\t\tid: id,\r\n\t\t\t\t\tlabel: headerName,\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].set(rowIndex! + field!, {\r\n\t\t\t\t\tnewValue: newValue,\r\n\t\t\t\t\toldValue: oldValue,\r\n\t\t\t\t\tid: id,\r\n\t\t\t\t\tlabel: headerName,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tlet dt: any[] = [];\r\n\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].forEach((value: any, key: any) => {\r\n\t\t\tdt.push(value);\r\n\t\t});\r\n\t\tthis.upsert()['subsert'][this.subIndex]['subData'] = dt;\r\n\t\tthis.action.saveSignal.set(true);\r\n\t}\r\n\r\n\thandleAddedRows(addedRows: any[]) {\r\n\t\tlet headerName = '';\r\n\t\tthis.toOptions().columnDefs?.forEach((item: any) => {\r\n\t\t\tif (item.field == this.mainField) {\r\n\t\t\t\theaderName = item.headerName;\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (this.addSort()) {\r\n\t\t\t// console.log('add-----',this.addSort())\r\n\t\t\t// let log = new Map()\r\n\t\t\tthis.selectData()!.forEach((item: any) => {\r\n\t\t\t\tconst rowData = this.grid.api.getRenderedNodes().map((node) => node.data);\r\n\t\t\t\tlet lastIndex = findLastIndex(rowData, (v: any) => v[this.addSort()!] == item[this.addSort()!], this);\r\n\t\t\t\tlastIndex = lastIndex == -1 ? rowData.length - 1 : lastIndex;\r\n\t\t\t\tconst result = this.grid.api.applyTransaction({ addIndex: lastIndex + 1, add: [item] });\r\n\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].forEach((value: any, key: any) => {\r\n\t\t\t\t\tlet index = key.match(/^\\d+/)[0];\r\n\t\t\t\t\tconsole.log('index----', index);\r\n\t\t\t\t\tconst insertIndex = lastIndex + 1;\r\n\t\t\t\t\tif (index == insertIndex) {\r\n\t\t\t\t\t\tconst replaceIndex = insertIndex + 1;\r\n\t\t\t\t\t\tlet newKey = key.replace(/^\\d+/, replaceIndex);\r\n\t\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].set(newKey, value);\r\n\t\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].delete(key);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tlet mapData = this.upsert()?.subsert[this.subIndex]['maptmp'].get(lastIndex + 1);\r\n\t\t\t\tif (mapData) {\r\n\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].delete(lastIndex + 1);\r\n\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].set(lastIndex + 2, mapData);\r\n\t\t\t\t}\r\n\t\t\t\tresult!.add.forEach((node: any) => {\r\n\t\t\t\t\t// console.log('node----',node)\r\n\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].set(node.rowIndex, node.data);\r\n\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].set(node.rowIndex! + this.mainField!, {\r\n\t\t\t\t\t\tnewValue: node.data[this.mainField],\r\n\t\t\t\t\t\tid: 0,\r\n\t\t\t\t\t\tlabel: headerName,\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\t// console.log('lastIndex',lastIndex)\r\n\t\t\t});\r\n\t\t\tthis.grid.api.refreshCells({\r\n\t\t\t\tforce: true, // 强制刷新\r\n\t\t\t\tsuppressFlash: true, // 避免闪烁\r\n\t\t\t});\r\n\t\t\t// this.upsert()!.subsert[this.subIndex]['logtmp'] = log\r\n\t\t} else {\r\n\t\t\tconst result = this.grid.api.applyTransaction({ add: addedRows });\r\n\t\t\tresult!.add.forEach((node: any) => {\r\n\t\t\t\tconst rowIndex = this.grid.api.getRowNode(node.id)?.rowIndex;\r\n\t\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].set(rowIndex!, node.data);\r\n\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].set(rowIndex! + this.mainField!, {\r\n\t\t\t\t\tnewValue: node.data[this.mainField],\r\n\t\t\t\t\tid: 0,\r\n\t\t\t\t\tlabel: headerName,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t\tlet dt: any[] = [];\r\n\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].forEach((value: any, key: any) => {\r\n\t\t\tdt.push(value);\r\n\t\t});\r\n\t\t// console.log('upsert-----',this.upsert())\r\n\t\tthis.upsert()['subsert'][this.subIndex]['subData'] = dt;\r\n\t\tthis.ajustGridHeight();\r\n\t}\r\n\r\n\thandleDeletedRows(deletedRows: any[]) {\r\n\t\tconst removeIndexes = this.grid.api.getSelectedNodes().map((node) => node.rowIndex);\r\n\t\tremoveIndexes.forEach((rowIndex: any) => {\r\n\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].delete(rowIndex!);\r\n\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].delete(rowIndex! + this.mainField!);\r\n\t\t});\r\n\t\tlet dt: any[] = [];\r\n\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].forEach((value: any, key: any) => {\r\n\t\t\tdt.push(value);\r\n\t\t});\r\n\t\tthis.upsert()['subsert'][this.subIndex]['subData'] = dt;\r\n\t\tthis.grid.api.applyTransaction({ remove: deletedRows });\r\n\t\tthis.ajustGridHeight();\r\n\t}\r\n\r\n\tselectRowsDeleted(deletedRows: any[]) {\r\n\t\tlet headerName = '';\r\n\t\tthis.toOptions().columnDefs?.forEach((item: any) => {\r\n\t\t\tif (item.field == this.mainField) {\r\n\t\t\t\theaderName = item.headerName;\r\n\t\t\t}\r\n\t\t});\r\n\t\tconst result = this.grid.api.applyTransaction({ remove: deletedRows });\r\n\t\tresult?.remove.forEach((node) => {\r\n\t\t\t// console.log('node---',node.sourceRowIndex);\r\n\t\t\tlet key = node.sourceRowIndex + this.mainField!;\r\n\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].delete(key);\r\n\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].delete(node.sourceRowIndex);\r\n\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].forEach((value: any, key: any) => {\r\n\t\t\t\tif (!value.id && key > node.sourceRowIndex) {\r\n\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].delete(key);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].forEach((value: any, key: any) => {\r\n\t\t\t\tlet index = key.match(/^\\d+/)[0];\r\n\t\t\t\tif (!value.id && index > node.sourceRowIndex) {\r\n\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].delete(key);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t\tthis.grid.api.forEachNode((node: any) => {\r\n\t\t\tconst rowIndex = node.rowIndex;\r\n\t\t\tif (!node.data.id) {\r\n\t\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].set(rowIndex!, node.data);\r\n\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].set(rowIndex! + this.mainField!, {\r\n\t\t\t\t\tnewValue: node.data[this.mainField],\r\n\t\t\t\t\tid: 0,\r\n\t\t\t\t\tlabel: headerName,\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].forEach((value: any, key: any) => {\r\n\t\t\t\t\tif (value.id === node.data.id && key != rowIndex) {\r\n\t\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].delete(key);\r\n\t\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].set(rowIndex, value);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].forEach((value: any, key: any) => {\r\n\t\t\t\t\tif (value.id == node.data.id) {\r\n\t\t\t\t\t\tlet index = key.match(/^\\d+/)[0];\r\n\t\t\t\t\t\tif (index != rowIndex) {\r\n\t\t\t\t\t\t\tlet newKey = key.replace(/^\\d+/, rowIndex);\r\n\t\t\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].delete(key);\r\n\t\t\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].set(newKey, value);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t\tlet dt: any[] = [];\r\n\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].forEach((value: any, key: any) => {\r\n\t\t\tdt.push(value);\r\n\t\t});\r\n\t\tthis.upsert()['subsert'][this.subIndex]['subData'] = dt;\r\n\t\tthis.ajustGridHeight();\r\n\t\t// console.log('result-----', this.upsert())\r\n\t}\r\n\r\n\tclear() {\r\n\t\tthis.grid?.api.setGridOption('rowData', []);\r\n\t\tthis.upsert()!.subsert[this.subIndex] = {\r\n\t\t\tsubModelName: this.toOptions().modelName,\r\n\t\t\tfk: this.toOptions().fk,\r\n\t\t\tsubData: [],\r\n\t\t\tmaptmp: new Map(),\r\n\t\t\tlogtmp: new Map(),\r\n\t\t};\r\n\t}\r\n\r\n\taddRow() {\r\n\t\tif (this.addType() == 'handle') {\r\n\t\t\tlet item = typeof this.toOptions().addDataCb == 'function' ? this.toOptions().addDataCb() : {};\r\n\t\t\tif (this.gridOptions().dragSort) {\r\n\t\t\t\tlet totalCount = this.grid.api.getDisplayedRowCount();\r\n\t\t\t\titem[this.gridOptions().dragSort!] = totalCount + 1;\r\n\t\t\t}\r\n\t\t\tthis.action.updateGridAction({type:'add',data: [item]})\r\n\t\t\tthis.grid.api.applyTransaction({ add: [item] });\r\n\t\t} else {\r\n\t\t\tthis.addEmit.emit();\r\n\t\t}\r\n\t\tthis.ajustGridHeight();\r\n\t}\r\n\r\n\tdelRows() {\r\n\t\tconst selectedNodes = this.grid.api.getSelectedNodes();\r\n\t\tconst selectedData = selectedNodes.map((node) => node.data) || [];\r\n\t\tlet ids = selectedData.map((data) => data.id).filter((v) => v) || [];\r\n\t\tif (ids.length > 0) {\r\n\t\t\tthis.deleteEmit.emit(ids);\r\n\t\t} else if (selectedData.length > 0 && ids.length == 0) {\r\n\t\t\tthis.handleDeletedRows(selectedData);\r\n\t\t\tthis.action.updateGridAction({type:'delete',data: selectedData})\r\n\t\t}\r\n\t\tthis.ajustGridHeight();\r\n\t}\r\n\r\n\tsetScrollHeight(height?: string) {\r\n\t\tif (window.innerWidth < 1024 && this.toOptions().mainField) {\r\n\t\t\tthis.renderer.removeStyle(this.containerRef.nativeElement, 'max-height');\r\n\t\t\treturn;\r\n\t\t}\r\n\t\theight = height || this.toOptions().scrollHeight;\r\n\t\tif (height) {\r\n\t\t\tthis.renderer.setStyle(this.containerRef.nativeElement, 'max-height', height);\r\n\t\t}\r\n\t}\r\n\r\n\tinitGridHeight() {\r\n\t\tthis.horizontalScrollBarObserver = new ResizeObserver((entries) => {\r\n\t\t\tentries.forEach((entry) => {\r\n\t\t\t\tthis.horizontalScrollBarHeight = entry.target.clientHeight;\r\n\t\t\t\tthis.ajustGridHeight();\r\n\t\t\t});\r\n\t\t});\r\n\t\tthis.horizontalScrollBarObserver.observe(this.gridRef.nativeElement.querySelector('.ag-body-horizontal-scroll'));\r\n\t\tthis.verticalScrollBarObserver = new ResizeObserver((entries) => {\r\n\t\t\tentries.forEach((entry) => {\r\n\t\t\t\tthis.verticalScrollBarWidth = entry.target.clientWidth;\r\n\t\t\t\tthis.ajustGridHeight();\r\n\t\t\t});\r\n\t\t});\r\n\t\tthis.verticalScrollBarObserver.observe(this.gridRef.nativeElement.querySelector('.ag-body-vertical-scroll'));\r\n\t\tthis.renderer.setStyle(this.gridRef.nativeElement, 'width', '100%');\r\n\t\tthis.setScrollHeight();\r\n\t}\r\n\r\n\tcalcGridMargin() {\r\n\t\tconst margin = this.showAct() && this.authLevel() >= 3 && (this.addType() != 'none' || this.showDelete()) ? 2 : 1;\r\n\t\tconst borderBottom = parseFloat(\r\n\t\t\twindow.getComputedStyle(this.gridRef.nativeElement.querySelector('.ag-root-wrapper')).getPropertyValue('border-bottom-width'),\r\n\t\t);\r\n\t\treturn Math.min(2, margin + borderBottom);\r\n\t}\r\n\r\n\tgetContainerHeight() {\r\n\t\tlet container = parseFloat(\r\n\t\t\twindow.getComputedStyle(this.gridRef.nativeElement.querySelector('.ag-center-cols-container')).getPropertyValue('height'),\r\n\t\t);\r\n\t\treturn container;\r\n\t}\r\n\r\n\tajustGridHeight() {\r\n\t\tlet container = this.getContainerHeight();\r\n\t\tlet headerHeight = this.gridOptions().headerHeight ?? 49;\r\n\t\tlet margin = this.calcGridMargin();\r\n\t\tlet total = container + margin + headerHeight;\r\n\t\tconst height = Math.max(total, headerHeight + 42 + margin);\r\n\t\tthis.ngZone.run(() => {\r\n\t\t\tthis.renderer.setStyle(this.gridRef.nativeElement, 'height', `${height + this.horizontalScrollBarHeight}px`);\r\n\t\t\tthis.ajustGridState();\r\n\t\t});\r\n\t}\r\n\r\n\tajustGridState() {\r\n\t\tthis.noRows = this.grid.api.getDisplayedRowCount() === 0;\r\n\t\tthis.noRows ? this.grid.api.showNoRowsOverlay() : this.grid.api.hideOverlay();\r\n\t\tthis.showHorizontal = this.actPos() == 'bottom' && (this.noRows || !!this.verticalScrollBarWidth);\r\n\t}\r\n\r\n\tcancelSelect() {\r\n\t\tthis.getGrid().api.deselectAll();\r\n\t\tthis.selectedRows.set([]);\r\n\t}\r\n\r\n\teditingFix() {\r\n\t\tdocument.addEventListener('click', (event: any) => {\r\n\t\t\tif (!this.grid?.api?.getEditingCells()?.length) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst gridElement: any = this.gridRef.nativeElement.querySelector('.ag-root-wrapper');\r\n\t\t\tif (!gridElement.contains(event.target)) {\r\n\t\t\t\tthis.grid.api.stopEditing();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\trowDragEnter(event: any) {\r\n\t\tconsole.log('event---', event);\r\n\t\tthis.dragBeforeIndex = event.overIndex;\r\n\t}\r\n\r\n\tonRowDragEnd(event: RowDragEndEvent) {\r\n\t\t// console.log('event----', event.node,event.overNode)\r\n\t\t// console.log('原始索引----', this.dragBeforeIndex)\r\n\t\t// console.log('拖拽之后索引----',event.overIndex)\r\n\t\tif (!this.gridOptions().dragSort) return;\r\n\t\tif (this.dragBeforeIndex == event.overIndex) return;\r\n\t\tlet col = event.api.getColumnDefs();\r\n\t\tlet colItem: any = col?.find((v: any) => v.field === this.gridOptions().dragSort!) || {};\r\n\t\t// console.log(\"rowData---\",this.rowData())\r\n\t\tlet map = new Map();\r\n\t\tlet logMap = new Map();\r\n\t\tthis.grid?.api.forEachNode((node, index) => {\r\n\t\t\tlet id = node.data.id;\r\n\t\t\tlet isMovingDown = event.overIndex > this.dragBeforeIndex;\r\n\t\t\tif (\r\n\t\t\t\t(isMovingDown && index >= this.dragBeforeIndex && index <= event.overIndex) ||\r\n\t\t\t\t(!isMovingDown && index <= this.dragBeforeIndex && index >= event.overIndex)\r\n\t\t\t) {\r\n\t\t\t\t// console.log('node----',node.data,event.overIndex)\r\n\t\t\t\tlet oldValue;\r\n\t\t\t\tif (index == event.overIndex) {\r\n\t\t\t\t\toldValue = this.dragBeforeIndex;\r\n\t\t\t\t} else {\r\n\t\t\t\t\toldValue = isMovingDown ? index + 1 : index - 1;\r\n\t\t\t\t}\r\n\t\t\t\t// console.log('oldIndex----',oldValue)\r\n\t\t\t\tif (!id) {\r\n\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].set(\r\n\t\t\t\t\t\tindex!,\r\n\t\t\t\t\t\tObject.assign(node.data, {\r\n\t\t\t\t\t\t\t[this.gridOptions().dragSort!]: index + 1,\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet o: any;\r\n\t\t\t\t\tif (this.upsert()?.subsert[this.subIndex]['maptmp'].has(oldValue!)) {\r\n\t\t\t\t\t\to = this.upsert()?.subsert[this.subIndex]['maptmp'].get(oldValue!);\r\n\t\t\t\t\t\tObject.assign(o, { [this.gridOptions().dragSort!]: index + 1 });\r\n\t\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].delete(oldValue!);\r\n\t\t\t\t\t\tconsole.log('o----', JSON.parse(JSON.stringify(o)));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\to = { id: id, [this.gridOptions().dragSort!]: index + 1 };\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmap.set(index!, o);\r\n\t\t\t\t}\r\n\t\t\t\tlet old = this.upsert()?.subsert[this.subIndex]['logtmp'].get(oldValue! + this.gridOptions().dragSort!);\r\n\t\t\t\tif (old) {\r\n\t\t\t\t\tlogMap.set(index! + this.gridOptions().dragSort!, {\r\n\t\t\t\t\t\tnewValue: index + 1,\r\n\t\t\t\t\t\toldValue: old.oldValue,\r\n\t\t\t\t\t\tid: id,\r\n\t\t\t\t\t\tlabel: colItem['headerName'] || '排序',\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].delete(oldValue! + this.gridOptions().dragSort!);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlogMap.set(index! + this.gridOptions().dragSort!!, {\r\n\t\t\t\t\t\tnewValue: index + 1,\r\n\t\t\t\t\t\toldValue: oldValue + 1,\r\n\t\t\t\t\t\tid: id,\r\n\t\t\t\t\t\tlabel: colItem['headerName'] || '排序',\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tlet dt: any = [];\r\n\t\tif (this.upsert()) {\r\n\t\t\tthis.upsert()!.subsert[this.subIndex]['maptmp'] = new Map([...this.upsert()!.subsert[this.subIndex]['maptmp'!], ...map]);\r\n\t\t\tthis.upsert()!.subsert[this.subIndex]['logtmp'] = new Map([...this.upsert()!.subsert[this.subIndex]['logtmp'], ...logMap]);\r\n\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].forEach((value: any, key: any) => {\r\n\t\t\t\tdt.push(value);\r\n\t\t\t});\r\n\t\t\tthis.upsert()['subsert'][this.subIndex]['subData'] = dt;\r\n\t\t}\r\n\r\n\t\tconsole.log('dragUpsert----', this.upsert());\r\n\t}\r\n// 时间范围添加时分秒\r\n\tisRange(columnFilter:ColumnFilter[]){\r\n\t\tconst isEixst = columnFilter.some((v:any) => v.type == 'inRange')\r\n\t\tif(isEixst){\r\n\t\t\tlet cols = JSON.parse(JSON.stringify(columnFilter))\r\n\t\t\tcols.forEach((item:ColumnFilter) => {\r\n\t\t\t\tif(item.type == 'inRange'){\r\n\t\t\t\t\titem.from = `${item.from} 00:00:00`\r\n\t\t\t\t\titem.to = `${item.to} 23:59:59`\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\treturn cols\r\n\t\t}\r\n\t\treturn columnFilter\r\n\t}\r\n}\r\n","@if (initGrid) {\r\n\t<div\r\n\t\t#gridContainer\r\n\t\t[class]=\"\r\n\t\t\t(toOptions().treeDataField ? 'tree-grid ' : '') +\r\n\t\t\t'grid-container w-full flex justify-between ' +\r\n\t\t\t(actPos() == 'bottom' ? 'flex-col' : 'flex-col-reverse')\r\n\t\t\">\r\n\t\t<ag-grid-angular\r\n\t\t\t[theme]=\"myTheme()\"\r\n\t\t\t[columnDefs]=\"columnDefs\"\r\n\t\t\t[gridOptions]=\"toOptions()\"\r\n\t\t\t[localeText]=\"localeText\"\r\n\t\t\t[components]=\"components\"\r\n\t\t\t[suppressDragLeaveHidesColumns]=\"true\"\r\n\t\t\t[undoRedoCellEditing]=\"toOptions().undoRedoCellEditing\"\r\n\t\t\t[undoRedoCellEditingLimit]=\"toOptions().undoRedoCellEditingLimit\"\r\n\t\t\t(cellValueChanged)=\"cellValueChanged($event)\"\r\n\t\t\t(selectionChanged)=\"onSelectionChanged($event)\"\r\n\t\t\t(rowGroupOpened)=\"onRowGroupOpened()\"\r\n\t\t\t(gridReady)=\"onGridReady($event)\"\r\n\t\t\t(rowDragEnd)=\"onRowDragEnd($event)\"\r\n\t\t\t(rowDragEnter)=\"rowDragEnter($event)\" />\r\n\t\t@if (showAct() && authLevel() >= 3 && (addType() != 'none' || showDelete())) {\r\n\t\t\t@if (showHorizontal) {\r\n\t\t\t\t<div class=\"w-full border-t border-gray-300\"></div>\r\n\t\t\t}\r\n\t\t\t<div class=\"flex justify-end py-[5px] pr-[8px]\">\r\n\t\t\t\t@if (addType() != 'none') {\r\n\t\t\t\t\t<p-button\r\n\t\t\t\t\t\ticon=\"pi pi-plus\"\r\n\t\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t\tseverity=\"success\"\r\n\t\t\t\t\t\t[disabled]=\"gridDisable()\"\r\n\t\t\t\t\t\t(onClick)=\"addRow()\" />\r\n\t\t\t\t}\r\n\t\t\t\t@if (showDelete()) {\r\n\t\t\t\t\t<p-button\r\n\t\t\t\t\t\ticon=\"pi pi-trash\"\r\n\t\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t\tseverity=\"danger\"\r\n\t\t\t\t\t\t[disabled]=\"gridDisable()\"\r\n\t\t\t\t\t\t(onClick)=\"delRows()\" />\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n}\r\n","import { Component, input, effect, untracked } from '@angular/core';\r\nimport { SearchItem, SearchItemOption } from '../search/search.component';\r\nimport { ActionService } from '../../service/action.service';\r\n\r\n@Component({\r\n\tselector: 'pop-list',\r\n\tstandalone: true,\r\n\timports: [],\r\n\ttemplateUrl: './pop-list.component.html',\r\n\tstyleUrl: './pop-list.component.scss',\r\n})\r\nexport class PopListComponent {\r\n\titem = input<SearchItem>();\r\n\tmodelName = input<string>();\r\n\r\n\tconstructor(private action: ActionService) {\r\n\t\teffect(() => {\r\n\t\t\tif (!this.action.searchMonitor(untracked(() => this.modelName()))) return;\r\n\t\t\tconst fiter = this.action\r\n\t\t\t\t.getSearch(untracked(() => this.modelName()))\r\n\t\t\t\t?.columnFilters?.filter((column: any) => column.columnField == this.item()?.field)?.[0]?.fiter;\r\n\t\t\tthis.item()?.options?.forEach((option: any) => {\r\n\t\t\t\toption.checked = false;\r\n\t\t\t\tif (fiter?.includes(option.key)) {\r\n\t\t\t\t\toption.checked = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tonItemOptionClick(option: SearchItemOption, item: SearchItem, event: Event) {\r\n\t\toption.checked = !option.checked;\r\n\t\tthis.item()!.value = this.item()\r\n\t\t\t?.options?.filter((op) => op.checked)\r\n\t\t\t.map((node) => node.key);\r\n\t\tthis.item()!.operator = 'in';\r\n\t\tthis.action.setSearchItem(this.item()!);\r\n\t}\r\n}\r\n","<div class=\"s-pop-panel-item\">\r\n\t@for (option of item()!.options; track option) {\r\n\t<div\r\n\t\tclass=\"s-pop-panel-item-option\"\r\n\t\t(click)=\"onItemOptionClick(option, item()!, $event)\">\r\n\t\t<span [class]=\"'s-check iconfont ' + (option.checked ? 'icon-check s-pop-panel-item-selected-option' : '')\"></span>{{ option.label }}\r\n\t</div>\r\n\t}\r\n</div>\r\n","import { Component, effect, input, untracked } from '@angular/core';\r\nimport { ActionService } from '../../service/action.service';\r\nimport { SearchItem, SearchItemOption } from '../search/search.component';\r\nimport { Popover } from 'primeng/popover';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n\tselector: 'pop-select',\r\n\tstandalone: true,\r\n\timports: [CheckboxModule, FormsModule, Popover],\r\n\ttemplateUrl: './pop-select.component.html',\r\n\tstyleUrl: './pop-select.component.scss',\r\n})\r\nexport class PopSelectComponent {\r\n\titem = input<SearchItem>();\r\n\tmodelName = input<string>();\r\n\tisActive: boolean = false;\r\n\r\n\tconstructor(private action: ActionService) {\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tif (!this.action.searchMonitor(untracked(() => this.modelName()))) return;\r\n\t\t\t\tconst search = this.action.getSearch(untracked(() => this.modelName()));\r\n\t\t\t\tif (!search) return;\r\n\t\t\t\tif (!this.item()?.cascade) return;\r\n\t\t\t\tconst columnFilter = search?.columnFilters?.find((col) => col.columnField == this.item()?.cascadeKey);\r\n\t\t\t\tif (!columnFilter) return;\r\n\r\n\t\t\t\tthis.item()\r\n\t\t\t\t\t?.cascadeFunc?.(columnFilter.fiter)\r\n\t\t\t\t\t.subscribe((options: any[]) => {\r\n\t\t\t\t\t\tthis.item()!.options = options;\r\n\t\t\t\t\t});\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t\teffect(() => {\r\n\t\t\tconst searchClear = this.action.getSearchClear();\r\n\t\t\tif (searchClear != this.item()?.field) return;\r\n\t\t\tthis.item()?.options?.forEach((option) => {\r\n\t\t\t\toption.checked = false;\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tonOptionClick(option: SearchItemOption, item: SearchItem, selectOp: any) {\r\n\t\tif (this.item()?.multiple) {\r\n\t\t\tthis.onMultipleOptionClick(option);\r\n\t\t} else {\r\n\t\t\tthis.onSingleOptionClick(option, item, selectOp);\r\n\t\t}\r\n\t}\r\n\r\n\tonSingleOptionClick(option: SearchItemOption, item: SearchItem, selectOp: any) {\r\n\t\tthis.item()!.value = option.key;\r\n\t\tthis.item()!.operator = 'equals';\r\n\t\tthis.action.setSearchItem(this.item()!);\r\n\t\tselectOp.hide();\r\n\t}\r\n\r\n\tonMultipleOptionClick(option: SearchItemOption) {\r\n\t\toption.checked = !option.checked;\r\n\t\tthis.item()!.value = this.item()\r\n\t\t\t?.options?.filter((op) => op.checked)\r\n\t\t\t.map((node) => node.key);\r\n\t\tthis.item()!.operator = 'in';\r\n\t\tthis.action.setSearchItem(this.item()!);\r\n\t}\r\n}\r\n","<div class=\"s-pop-select-container\">\r\n\t<div\r\n\t\tclass=\"s-pop-select-label\"\r\n\t\t(click)=\"selectOp.toggle($event)\">\r\n\t\t<div>{{ item()?.label }}</div>\r\n\t\t<span class=\"s-pop-select-label-icon pi pi-chevron-down\"></span>\r\n\t</div>\r\n</div>\r\n<p-popover #selectOp styleClass=\"s-pop-select-popover\">\r\n\t<div class=\"w-[250px] s-pop-select-content\">\r\n\t\t@for (option of item()?.options; track option) {\r\n\t\t\t<div\r\n\t\t\t\tstyle=\"user-select: none\"\r\n\t\t\t\tclass=\"w-full s-pop-select-panel-item-option flex items-center\"\r\n\t\t\t\t(click)=\"onOptionClick(option, item()!, selectOp)\">\r\n\t\t\t\t@if (item()?.multiple) {\r\n\t\t\t\t\t<span class=\"pb-1 mr-2\">\r\n\t\t\t\t\t\t<p-checkbox\r\n\t\t\t\t\t\t\t[(ngModel)]=\"option.checked\"\r\n\t\t\t\t\t\t\t[binary]=\"true\" />\r\n\t\t\t\t\t</span>\r\n\t\t\t\t}\r\n\t\t\t\t<span style=\"user-select: none\">{{ option.label }}</span>\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n</p-popover>\r\n","import { Component, effect, input, untracked, Renderer2, ViewChild, ElementRef } from '@angular/core';\r\nimport { ActionService } from '../../service/action.service';\r\nimport { SearchItem, SearchItemOption } from '../search/search.component';\r\nimport { TreeModule } from 'primeng/tree';\r\nimport { Popover } from 'primeng/popover';\r\n\r\n@Component({\r\n\tselector: 'pop-tree',\r\n\tstandalone: true,\r\n\timports: [TreeModule, Popover],\r\n\ttemplateUrl: './pop-tree.component.html',\r\n\tstyleUrl: './pop-tree.component.scss',\r\n})\r\nexport class PopTreeComponent {\r\n\t@ViewChild(Popover) treeOp!: Popover;\r\n\t@ViewChild('treeLabel', { static: false }) treeLabelRef!: ElementRef;\r\n\titem = input<SearchItem>();\r\n\tmodelName = input<string>();\r\n\tisActive: boolean = false;\r\n\tnodes: any = {};\r\n\r\n\tdocumentClickListener!: () => void;\r\n\r\n\tconstructor(\r\n\t\tprivate action: ActionService,\r\n\t\tprivate renderer: Renderer2,\r\n\t) {}\r\n\r\n\tngAfterViewInit() {\r\n\t\tthis.documentClickListener = this.renderer.listen('document', 'click', (event) => {\r\n\t\t\tif (this.treeLabelRef.nativeElement.contains(event.target)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (!this.treeOp.el.nativeElement.contains(event.target)) {\r\n\t\t\t\tthis.treeOp.hide();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tif (this.documentClickListener) {\r\n\t\t\tthis.documentClickListener();\r\n\t\t}\r\n\t}\r\n\r\n\tonNodeSelect(event: any) {\r\n\t\tthis.item()!.value = event.node.key;\r\n\t\tthis.item()!.operator = 'equals';\r\n\t\tthis.action.setSearchItem(this.item()!);\r\n\t\tthis.treeOp.hide();\r\n\t}\r\n}\r\n","<div\r\n\t#treeLabel\r\n\tclass=\"s-pop-tree-container\">\r\n\t<div\r\n\t\tclass=\"s-pop-tree-label\"\r\n\t\t(click)=\"treeOp.toggle($event)\">\r\n\t\t<div>{{ item()?.label }}</div>\r\n\t\t<span class=\"s-pop-tree-label-icon pi pi-chevron-down\"></span>\r\n\t</div>\r\n</div>\r\n<p-popover styleClass=\"s-pop-tree-popover\">\r\n\t<div class=\"w-[215px] s-pop-tree-content\">\r\n\t\t<p-tree\r\n\t\t\t[scrollHeight]=\"'300px'\"\r\n\t\t\t[value]=\"item()?.options\"\r\n\t\t\tselectionMode=\"single\"\r\n\t\t\t[(selection)]=\"nodes\"\r\n\t\t\t(onNodeSelect)=\"onNodeSelect($event)\"></p-tree>\r\n\t</div>\r\n</p-popover>\r\n","export const operatorList = [\r\n\t{ operator: 'equals', short: 'eq', label: '=' },\r\n\t{ operator: 'notEqual', short: 'ne', label: '!=' },\r\n\t{ operator: 'lessThan', short: 'lt', label: '<' },\r\n\t{ operator: 'lessThanOrEqual', short: 'le', label: '<=' },\r\n\t{ operator: 'greaterThan', short: 'gt', label: '>' },\r\n\t{ operator: 'greaterThanOrEqual', short: 'ge', label: '>=' },\r\n\t{ operator: 'set', short: 'in', label: 'in', i18nKey: 'search.set' },\r\n\t{ operator: 'contains', short: 'ct', label: 'contains', i18nKey: 'search.contains' },\r\n\t{ operator: 'notContains', short: 'nc', label: 'not contains', i18nKey: 'search.notContains' },\r\n\t{ operator: 'startsWith', short: 'sw', label: 'starts with', i18nKey: 'search.startsWith' },\r\n\t{ operator: 'endsWith', short: 'ew', label: 'ends with', i18nKey: 'search.endsWith' },\r\n\t{ operator: 'inRange', short: 'ir', label: 'in range', i18nKey: 'search.inRange' },\r\n];\r\nexport const dateOperList = [\r\n\t{ operator: 'inRange', short: 'ir', label: 'in range', i18nKey: 'search.inRange' },\r\n\t{ operator: 'equals', short: 'eq', label: '=' },\r\n\t{ operator: 'notEqual', short: 'ne', label: '!=' },\r\n\t{ operator: 'lessThan', short: 'lt', label: '<' },\r\n\t{ operator: 'lessThanOrEqual', short: 'le', label: '<=' },\r\n\t{ operator: 'greaterThan', short: 'gt', label: '>' },\r\n\t{ operator: 'greaterThanOrEqual', short: 'ge', label: '>=' },\r\n];\r\nexport const textOperList = [\r\n\t{ operator: 'equals', short: 'eq', label: '=' },\r\n\t{ operator: 'contains', short: 'ct', label: 'contains', i18nKey: 'search.contains' },\r\n\t{ operator: 'notContains', short: 'nc', label: 'not contains', i18nKey: 'search.notContains' },\r\n\t{ operator: 'startsWith', short: 'sw', label: 'starts with', i18nKey: 'search.startsWith' },\r\n\t{ operator: 'endsWith', short: 'ew', label: 'ends with', i18nKey: 'search.endsWith' },\r\n];\r\nexport const numberOperListNoRange = [\r\n\t{ operator: 'equals', short: 'eq', label: '=' },\r\n\t{ operator: 'notEqual', short: 'ne', label: '!=' },\r\n\t{ operator: 'lessThan', short: 'lt', label: '<' },\r\n\t{ operator: 'lessThanOrEqual', short: 'le', label: '<=' },\r\n\t{ operator: 'greaterThan', short: 'gt', label: '>' },\r\n\t{ operator: 'greaterThanOrEqual', short: 'ge', label: '>=' },\r\n];\r\nexport const numberOperList = [\r\n\t{ operator: 'equals', short: 'eq', label: '=' },\r\n\t{ operator: 'notEqual', short: 'ne', label: '!=' },\r\n\t{ operator: 'lessThan', short: 'lt', label: '<' },\r\n\t{ operator: 'lessThanOrEqual', short: 'le', label: '<=' },\r\n\t{ operator: 'greaterThan', short: 'gt', label: '>' },\r\n\t{ operator: 'greaterThanOrEqual', short: 'ge', label: '>=' },\r\n\t{ operator: 'inRange', short: 'ir', label: 'in range', i18nKey: 'search.inRange' },\r\n];\r\n","import { SearchItem } from './search/search.component';\r\nimport { Search, ColumnFilter } from '../am/am.component';\r\nimport { I18nService } from '../service/i18n.service';\r\nconst _searchUitls = {\r\n\tflattenTree: (nodes: any[]): any[] => {\r\n\t\tlet result: any[] = [];\r\n\t\tnodes?.forEach((node) => {\r\n\t\t\tresult.push(node);\r\n\r\n\t\t\tif (node.children && node.children.length > 0) {\r\n\t\t\t\tresult = result.concat(_searchUitls.flattenTree(node.children));\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn result;\r\n\t},\r\n\ttransferFilter: (item: SearchItem): ColumnFilter | undefined => {\r\n\t\tif (item.filterType == 'date') {\r\n\t\t\treturn _searchUitls.transferDate(item);\r\n\t\t} else if (item.filterType == 'number') {\r\n\t\t\treturn _searchUitls.transferNumber(item);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tcolumnField: item.field,\r\n\t\t\ttype: item.operator || 'contains',\r\n\t\t\tfiter: item.value,\r\n\t\t};\r\n\t},\r\n\ttransferNumber: (item: SearchItem): ColumnFilter | undefined => {\r\n\t\tif (item.operator == 'inRange') {\r\n\t\t\treturn {\r\n\t\t\t\tcolumnField: item.field,\r\n\t\t\t\ttype: item.operator,\r\n\t\t\t\tfrom: item.from,\r\n\t\t\t\tto: item.to,\r\n\t\t\t};\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tcolumnField: item.field,\r\n\t\t\ttype: item.operator,\r\n\t\t\tfiter: item.value,\r\n\t\t};\r\n\t},\r\n\ttransferDate: (item: SearchItem): ColumnFilter | undefined => {\r\n\t\tif (item.operator == 'inRange') {\r\n\t\t\treturn {\r\n\t\t\t\tcolumnField: item.field,\r\n\t\t\t\ttype: item.operator,\r\n\t\t\t\tfrom: item.from,\r\n\t\t\t\tto: item.to,\r\n\t\t\t};\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tcolumnField: item.field,\r\n\t\t\ttype: item.operator,\r\n\t\t\tfiter: item.value,\r\n\t\t};\r\n\t},\r\n\tconcatFilter: (search: Search = { columnFilters: [], groups: [] }, filter: ColumnFilter): Search => {\r\n\t\tsearch.columnFilters = search.columnFilters?.filter((fil) => filter.columnField != fil.columnField);\r\n\t\tif (!filter) {\r\n\t\t\treturn search;\r\n\t\t}\r\n\t\tif (filter.type == 'in' && !filter.fiter.length) {\r\n\t\t\treturn search;\r\n\t\t}\r\n\t\tsearch.columnFilters?.push(filter);\r\n\t\treturn search;\r\n\t},\r\n\tcascadeColumnFilters(searchClear: string, columnFilters: ColumnFilter[], searchItems: SearchItem[]): ColumnFilter[] {\r\n\t\tconst cascadeClearList: string[] = [searchClear];\r\n\t\tfor (const columnFilter of columnFilters) {\r\n\t\t\tfor (const searchItem of searchItems) {\r\n\t\t\t\tif (searchItem.field == columnFilter.columnField && searchItem.cascade && searchItem.cascadeKey == searchClear) {\r\n\t\t\t\t\tcascadeClearList.push(columnFilter.columnField!);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn columnFilters?.filter((columnFilter) => !cascadeClearList.includes(columnFilter.columnField!));\r\n\t},\r\n\textractSearchItems(columnDefs: any, i18n: I18nService, searchItems: SearchItem[] = []): SearchItem[] {\r\n\t\tcolumnDefs?.forEach((col: any) => {\r\n\t\t\tif (col.children) {\r\n\t\t\t\tthis.extractSearchItems(col.children, i18n, searchItems);\r\n\t\t\t} else {\r\n\t\t\t\tif (!col.search) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tlet label;\r\n\t\t\t\tif (col.hasOwnProperty('i18nKey')) {\r\n\t\t\t\t\tlabel = i18n.fanyi(col.i18nKey);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlabel = col.headerName || col.field;\r\n\t\t\t\t}\r\n\t\t\t\tlet searchItem: SearchItem = { field: col.field, label, filterType: col.searchType, filter: true };\r\n\t\t\t\tif (col.searchType == 'date') {\r\n\t\t\t\t\tsearchItem.format = col.searchFormat ?? 'yy-mm-dd';\r\n\t\t\t\t} else if (col.searchType == 'select') {\r\n\t\t\t\t\tif (col.cascade) {\r\n\t\t\t\t\t\tsearchItem.cascade = col.cascade;\r\n\t\t\t\t\t\tsearchItem.cascadeKey = col.cascadeKey;\r\n\t\t\t\t\t\tsearchItem.cascadeFunc = col.cascadeFunc;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (col.searchOptions) {\r\n\t\t\t\t\tcol.searchOptions.subscribe((options: any) => {\r\n\t\t\t\t\t\tsearchItem.options = JSON.parse(JSON.stringify(options));\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tif (col.searchGroup) {\r\n\t\t\t\t\tsearchItem.group = col.searchGroup;\r\n\t\t\t\t}\r\n\t\t\t\tif (col.multiple) {\r\n\t\t\t\t\tsearchItem.multiple = col.multiple;\r\n\t\t\t\t}\r\n\t\t\t\tsearchItems.push(searchItem);\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn searchItems;\r\n\t},\r\n\ttranslate(operatorList: any[], i18n: I18nService) {\r\n\t\treturn operatorList.map((operator) => {\r\n\t\t\treturn {\r\n\t\t\t\t...operator,\r\n\t\t\t\tlabel: operator.i18nKey ? i18n.fanyi(operator.i18nKey) : operator.label,\r\n\t\t\t};\r\n\t\t});\r\n\t},\r\n};\r\nexport const searchUtils = {\r\n\tflattenTree: _searchUitls.flattenTree,\r\n\ttransferFilter: _searchUitls.transferFilter,\r\n\tconcatFilter: _searchUitls.concatFilter,\r\n\textractSearchItems: _searchUitls.extractSearchItems,\r\n\tcascadeColumnFilters: _searchUitls.cascadeColumnFilters,\r\n\ttranslate: _searchUitls.translate,\r\n};\r\n","import { Component, input, effect, untracked, computed } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SearchItem } from '../search/search.component';\r\nimport { dateOperList } from '../mock-data';\r\nimport { Select } from 'primeng/select';\r\nimport { DatePicker } from 'primeng/datepicker';\r\nimport { DatePipe } from '@angular/common';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\nimport { ActionService } from '../../service/action.service';\r\nimport { searchUtils } from '../search-utils';\r\nimport { I18nService } from '../../service/i18n.service';\r\n@Component({\r\n\tselector: 'pop-date',\r\n\tstandalone: true,\r\n\tproviders: [DatePipe],\r\n\timports: [FormsModule, Select, DatePicker, TranslatePipe],\r\n\ttemplateUrl: './pop-date.component.html',\r\n\tstyleUrls: ['./pop-date.component.scss'],\r\n})\r\nexport class PopDateComponent {\r\n\titem = input<SearchItem>({});\r\n\tview = computed(() => {\r\n\t\tconst format = this.item().format?.replace(/m/g, 'M').replace(/y/g, 'yy');\r\n\t\tif (!format?.includes('MM')) {\r\n\t\t\treturn 'year';\r\n\t\t}\r\n\t\tif (!format?.includes('dd')) {\r\n\t\t\treturn 'month';\r\n\t\t}\r\n\t\treturn 'date';\r\n\t});\r\n\tmodelName = input<string>();\r\n\tisActive: boolean = false;\r\n\tvalue: any;\r\n\tselectionMode: any = 'single';\r\n\tdateOperList = searchUtils.translate(dateOperList, this.i18n);\r\n\tconstructor(\r\n\t\tprivate datePipe: DatePipe,\r\n\t\tprivate action: ActionService,\r\n\t\tprivate i18n: I18nService,\r\n\t) {\r\n\t\teffect(() => {\r\n\t\t\tif (!this.action.searchMonitor(untracked(() => this.modelName()))) return;\r\n\t\t\tconst search = this.action\r\n\t\t\t\t.getSearch(untracked(() => this.modelName()))\r\n\t\t\t\t?.columnFilters?.filter((column) => column.columnField == this.item()?.field)?.[0];\r\n\t\t\tif (!search) {\r\n\t\t\t\tthis.item().from = undefined;\r\n\t\t\t\tthis.item().to = undefined;\r\n\t\t\t\tthis.item().value = undefined;\r\n\t\t\t\tthis.item()!.operator = undefined;\r\n\t\t\t\tthis.selectionMode = 'single';\r\n\t\t\t\tthis.value = undefined;\r\n\t\t\t} else {\r\n\t\t\t\tthis.isActive = true;\r\n\t\t\t\tif (search.type == 'inRange') {\r\n\t\t\t\t\tthis.item().from = search.from as any;\r\n\t\t\t\t\tthis.item().to = search.to as any;\r\n\t\t\t\t\tthis.selectionMode = 'range';\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tthis.item()!.operator = search.type;\r\n\t\t\t\t\t\tthis.value = [\r\n\t\t\t\t\t\t\tnew Date(this.dateFormat(search.from, this.item().format)),\r\n\t\t\t\t\t\t\tnew Date(this.dateFormat(search.to, this.item().format)),\r\n\t\t\t\t\t\t];\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.item().value = search.fiter;\r\n\t\t\t\t\tthis.selectionMode = 'single';\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tthis.item()!.operator = search.type;\r\n\t\t\t\t\t\tthis.value = new Date(this.dateFormat(search.fiter, this.item().format));\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tonLabelClick(event: MouseEvent) {\r\n\t\tthis.isActive = !this.isActive;\r\n\t\tif (window.getSelection) {\r\n\t\t\twindow.getSelection()!.removeAllRanges();\r\n\t\t} else if ((document as any).selection) {\r\n\t\t\t(document as any).selection.empty();\r\n\t\t}\r\n\t}\r\n\r\n\tonOperatorChange(event: any) {\r\n\t\tif (!event) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.item()!.value = undefined;\r\n\t\tthis.value = undefined;\r\n\t\tthis.selectionMode = event.value == 'inRange' ? 'range' : 'single';\r\n\t}\r\n\r\n\tonDateChange(event: any) {\r\n\t\tif (this.selectionMode == 'range' && event[1]) {\r\n\t\t\tthis.item()!.from = this.dateFormat(event[0], this.item().format);\r\n\t\t\tthis.item()!.to = this.dateFormat(event[1], this.item().format);\r\n\t\t\tthis.action.setSearchItem(this.item());\r\n\t\t} else if (this.selectionMode == 'single') {\r\n\t\t\tthis.item()!.value = this.dateFormat(event, this.item().format);\r\n\t\t\tthis.action.setSearchItem(this.item());\r\n\t\t}\r\n\t}\r\n\r\n\tdateFormat(time: any, format: string | undefined) {\r\n\t\treturn this.datePipe.transform(time, format?.replace(/m/g, 'M').replace(/y/g, 'yy')) || '';\r\n\t}\r\n}\r\n","<div class=\"s-pop-date-container\">\r\n\t<div\r\n\t\tclass=\"s-pop-date-label\"\r\n\t\t(click)=\"onLabelClick($event)\">\r\n\t\t<div>{{ item()!.label }}</div>\r\n\t\t<span [class]=\"'s-pop-date-label-icon pi pi-chevron-' + (isActive ? 'up' : 'down')\"></span>\r\n\t</div>\r\n\t<div [class]=\"'s-pop-date-panel s-pop-date-panel-' + (isActive ? 'show' : 'hide')\">\r\n\t\t<div class=\"s-pop-date-range flex flex-row flex-nowrap items-center\">\r\n\t\t\t<div class=\"flex-none w-10\">\r\n\t\t\t\t<label>{{ 'search.oper' | translate }}</label>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"grow\">\r\n\t\t\t\t<p-select\r\n\t\t\t\t\tpanelStyleClass=\"s-pop-date-select-panel\"\r\n\t\t\t\t\t[(ngModel)]=\"item().operator\"\r\n\t\t\t\t\t(onChange)=\"onOperatorChange($event)\"\r\n\t\t\t\t\tappendTo=\"body\"\r\n\t\t\t\t\t[options]=\"dateOperList\"\r\n\t\t\t\t\toptionLabel=\"label\"\r\n\t\t\t\t\toptionValue=\"operator\"\r\n\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\tfluid />\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"s-pop-date-picker flex flex-row flex-nowrap items-center\">\r\n\t\t\t<div class=\"flex-none w-10\">\r\n\t\t\t\t<label>{{ 'search.value' | translate }}</label>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"grow\">\r\n\t\t\t\t<p-datepicker\r\n\t\t\t\t\tpanelStyleClass=\"s-pop-date-datepicker-panel\"\r\n\t\t\t\t\t[(ngModel)]=\"value\"\r\n\t\t\t\t\t(ngModelChange)=\"onDateChange($event)\"\r\n\t\t\t\t\tappendTo=\"body\"\r\n\t\t\t\t\t[iconDisplay]=\"'input'\"\r\n\t\t\t\t\t[selectionMode]=\"selectionMode\"\r\n\t\t\t\t\t[showIcon]=\"true\"\r\n\t\t\t\t\t[disabled]=\"!item().operator\"\r\n\t\t\t\t\t[readonlyInput]=\"true\"\r\n\t\t\t\t\t[view]=\"view()\"\r\n\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t[dateFormat]=\"item().format\"\r\n\t\t\t\t\tfluid\r\n\t\t\t\t\tinputId=\"icondisplay\" />\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n","import { Component, input, effect } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { Select } from 'primeng/select';\r\nimport { SearchItem } from '../search/search.component';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { InputNumber } from 'primeng/inputnumber';\r\nimport { ActionService } from '../../service/action.service';\r\nimport { DatePicker } from 'primeng/datepicker';\r\nimport { DatePipe } from '@angular/common';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\nimport { operatorList, dateOperList, textOperList, numberOperList } from '../mock-data';\r\nimport { I18nService } from '../../service/i18n.service';\r\nimport { searchUtils } from '../search-utils'\r\n\r\n@Component({\r\n\tselector: 'pop-self',\r\n\tstandalone: true,\r\n\tproviders: [DatePipe],\r\n\timports: [FormsModule, Select, InputTextModule, InputNumber, DatePicker, TranslatePipe],\r\n\ttemplateUrl: './pop-self.component.html',\r\n\tstyleUrls: ['./pop-self.component.scss']\r\n})\r\nexport class PopSelfComponent {\r\n\tsearchItems = input<SearchItem[]>();\r\n\tsearchItem: SearchItem = {};\r\n\tfieldList: any[] = [];\r\n\toperatorList: any[] = [];\r\n\tself: any = {};\r\n\tisActive = false;\r\n\tview: any = 'date';\r\n\r\n\tconstructor(\r\n\t\tprivate datePipe: DatePipe,\r\n\t\tprivate action: ActionService,\r\n\t\tprivate i18n: I18nService,\r\n\t) {\r\n\t\teffect(() => {\r\n\t\t\tthis.fieldList =\r\n\t\t\t\tthis.searchItems()\r\n\t\t\t\t\t?.filter((searchItem) => searchItem.filterType == 'number' || searchItem.filterType == 'text' || searchItem.filterType == 'date')\r\n\t\t\t\t\t?.map((searchItem) => ({ code: searchItem.field, label: searchItem.label })) || [];\r\n\t\t\tthis.self.field = this.fieldList.length && this.fieldList[0].code;\r\n\t\t\tthis.onFieldChange(this.self.field);\r\n\t\t});\r\n\t}\r\n\r\n\tonLabelClick(event: MouseEvent) {\r\n\t\tthis.isActive = !this.isActive;\r\n\t\tif (window.getSelection) {\r\n\t\t\twindow.getSelection()!.removeAllRanges();\r\n\t\t} else if ((document as any).selection) {\r\n\t\t\t(document as any).selection.empty();\r\n\t\t}\r\n\t}\r\n\r\n\tonFieldChange(event: any) {\r\n\t\tthis.searchItem = this.searchItems()?.filter((searchItem) => searchItem.field == event)[0] || {};\r\n\t\tthis.searchItem.filterType == 'date' && this.handleView();\r\n\t\tthis.operatorList = this.getOperatorList();\r\n\t\tthis.handleDefaultOperator();\r\n\t}\r\n\r\n\tonOperatorChange(event: any) {\r\n\t\tif (this.searchItem.filterType == 'date') {\r\n\t\t\tthis.self.date = undefined;\r\n\t\t\tthis.self.selectionMode = event == 'inRange' ? 'range' : 'single';\r\n\t\t}\r\n\t}\r\n\r\n\tgetOperatorList() {\r\n\t\tlet result = operatorList;\r\n\t\tif (this.searchItem.filterType == 'date') {\r\n\t\t\tresult = dateOperList;\r\n\t\t} else if (this.searchItem.filterType == 'text') {\r\n\t\t\tresult = textOperList;\r\n\t\t}\r\n\t\tif (this.searchItem.filterType == 'number') {\r\n\t\t\tresult = numberOperList;\r\n\t\t}\r\n\t\treturn searchUtils.translate(result, this.i18n);\r\n\t}\r\n\r\n\thandleDefaultOperator() {\r\n\t\tif (this.searchItem.filterType == 'date') {\r\n\t\t\tthis.self.operator = 'inRange';\r\n\t\t} else if (this.searchItem.filterType == 'text') {\r\n\t\t\tthis.self.operator = 'contains';\r\n\t\t} else if (this.searchItem.filterType == 'number') {\r\n\t\t\tthis.self.operator = 'equals';\r\n\t\t}\r\n\t}\r\n\r\n\tonReset() {\r\n\t\tthis.self = {};\r\n\t\tthis.self.field = this.fieldList.length && this.fieldList[0].code;\r\n\t\tthis.onFieldChange(this.self.field);\r\n\t}\r\n\r\n\tonOk() {\r\n\t\tif (this.searchItem.filterType == 'text') {\r\n\t\t\tthis.searchItem.value = this.self.text;\r\n\t\t} else if (this.searchItem.filterType == 'number') {\r\n\t\t\tif (this.self.operator == 'inRange') {\r\n\t\t\t\tthis.searchItem.from = this.self.min;\r\n\t\t\t\tthis.searchItem.to = this.self.max;\r\n\t\t\t} else {\r\n\t\t\t\tthis.searchItem.value = this.self.num;\r\n\t\t\t}\r\n\t\t} else if (this.searchItem.filterType == 'date') {\r\n\t\t\tif (this.self.operator == 'inRange') {\r\n\t\t\t\tthis.searchItem.from = this.dateFormat(this.self.date[0], this.searchItem.format);\r\n\t\t\t\tthis.searchItem.to = this.dateFormat(this.self.date[1], this.searchItem.format);\r\n\t\t\t} else {\r\n\t\t\t\tthis.searchItem.value = this.dateFormat(this.self.date, this.searchItem.format);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(!this.searchItem.value && !this.searchItem.from && !this.searchItem.to){\r\n\t\t\treturn \r\n\t\t}\r\n\t\tthis.searchItem.operator = this.self.operator;\r\n\t\tthis.action.setSearchItem(this.searchItem);\r\n\t\tthis.onReset();\r\n\t}\r\n\r\n\tdateFormat(time: any, format: string | undefined) {\r\n\t\treturn this.datePipe.transform(time, format?.replace(/m/g, 'M').replace(/y/g, 'yy')) || '';\r\n\t}\r\n\r\n\thandleView() {\r\n\t\tconst format = this.searchItem.format?.replace(/m/g, 'M').replace(/y/g, 'yy');\r\n\t\tif (!format?.includes('MM')) {\r\n\t\t\tthis.view = 'year';\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!format?.includes('dd')) {\r\n\t\t\tthis.view = 'month';\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.view = 'date';\r\n\t}\r\n}\r\n\r\n","<div class=\"s-pop-self-container\">\r\n\t<div\r\n\t\tclass=\"s-pop-self-label\"\r\n\t\t(click)=\"onLabelClick($event)\">\r\n\t\t<div>{{ 'search.addCustomFilter' | translate }}</div>\r\n\t\t<span [class]=\"'s-pop-self-label-icon pi pi-chevron-' + (isActive ? 'up' : 'down')\"></span>\r\n\t</div>\r\n\t<div [class]=\"'s-pop-self-panel s-pop-self-panel-' + (isActive ? 'show' : 'hide')\">\r\n\t\t<div class=\"s-pop-self-item flex flex-row flex-nowrap items-center\">\r\n\t\t\t<div class=\"flex-none w-10\">\r\n\t\t\t\t<label>{{ 'search.field' | translate }}</label>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"grow\">\r\n\t\t\t\t<p-select\r\n\t\t\t\t\tpanelStyleClass=\"s-pop-self-select-panel\"\r\n\t\t\t\t\t[(ngModel)]=\"self.field\"\r\n\t\t\t\t\t(ngModelChange)=\"onFieldChange($event)\"\r\n\t\t\t\t\tappendTo=\"body\"\r\n\t\t\t\t\t[options]=\"fieldList\"\r\n\t\t\t\t\toptionLabel=\"label\"\r\n\t\t\t\t\toptionValue=\"code\"\r\n\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\tfluid />\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"s-pop-self-item flex flex-row flex-nowrap items-center\">\r\n\t\t\t<div class=\"flex-none w-10\">\r\n\t\t\t\t<label>{{ 'search.oper' | translate }}</label>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"grow\">\r\n\t\t\t\t<p-select\r\n\t\t\t\t\tpanelStyleClass=\"s-pop-self-select-panel\"\r\n\t\t\t\t\t[(ngModel)]=\"self.operator\"\r\n\t\t\t\t\t(ngModelChange)=\"onOperatorChange($event)\"\r\n\t\t\t\t\tappendTo=\"body\"\r\n\t\t\t\t\t[options]=\"operatorList\"\r\n\t\t\t\t\toptionLabel=\"label\"\r\n\t\t\t\t\toptionValue=\"operator\"\r\n\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\tfluid />\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"s-pop-self-item flex flex-row flex-nowrap items-center\">\r\n\t\t\t<div class=\"flex-none w-10\">\r\n\t\t\t\t<label>{{ 'search.value' | translate }}</label>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"grow\">\r\n\t\t\t\t@switch (searchItem.filterType) {\r\n\t\t\t\t\t@case ('text') {\r\n\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\tpInputText\r\n\t\t\t\t\t\t\t[(ngModel)]=\"self.text\"\r\n\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\tfluid />\r\n\t\t\t\t\t}\r\n\t\t\t\t\t@case ('number') {\r\n\t\t\t\t\t\t@if (self.operator != 'inRange') {\r\n\t\t\t\t\t\t\t<p-inputnumber\r\n\t\t\t\t\t\t\t\t[(ngModel)]=\"self.num\"\r\n\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\tfluid />\r\n\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t<div class=\"flex items-center\">\r\n\t\t\t\t\t\t\t\t<span class=\"date-span pr-2\"> min </span>\r\n\t\t\t\t\t\t\t\t<p-inputnumber\r\n\t\t\t\t\t\t\t\t\t[(ngModel)]=\"self.min\"\r\n\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\tfluid />\r\n\t\t\t\t\t\t\t\t<span class=\"ml-2 date-span pr-2\"> max </span>\r\n\t\t\t\t\t\t\t\t<p-inputnumber\r\n\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\t[(ngModel)]=\"self.max\"\r\n\t\t\t\t\t\t\t\t\tfluid />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t@case ('date') {\r\n\t\t\t\t\t\t<p-datepicker\r\n\t\t\t\t\t\t\tpanelStyleClass=\"s-pop-self-datepicker-panel\"\r\n\t\t\t\t\t\t\t[(ngModel)]=\"self.date\"\r\n\t\t\t\t\t\t\t[iconDisplay]=\"'input'\"\r\n\t\t\t\t\t\t\t[selectionMode]=\"self.selectionMode ?? 'single'\"\r\n\t\t\t\t\t\t\tappendTo=\"body\"\r\n\t\t\t\t\t\t\t[showIcon]=\"true\"\r\n\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t[dateFormat]=\"searchItem.format\"\r\n\t\t\t\t\t\t\t[view]=\"view\"\r\n\t\t\t\t\t\t\tfluid\r\n\t\t\t\t\t\t\tinputId=\"icondisplay\" />\r\n\t\t\t\t\t}\r\n\t\t\t\t\t@default {\r\n\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\tpInputText\r\n\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t[(ngModel)]=\"self.text\"\r\n\t\t\t\t\t\t\tfluid />\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"s-pop-self-item s-pop-self-item-btn-container\">\r\n\t\t\t<span\r\n\t\t\t\tclass=\"s-pop-self-item-btn\"\r\n\t\t\t\t(click)=\"onReset()\"\r\n\t\t\t\t>{{ 'app.reset' | translate }}</span\r\n\t\t\t>\r\n\t\t\t<span\r\n\t\t\t\tclass=\"s-pop-self-item-btn\"\r\n\t\t\t\t(click)=\"onOk()\"\r\n\t\t\t\t>{{ 'modal.confirm' | translate }}</span\r\n\t\t\t>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n","import { Component, effect, input, untracked } from '@angular/core';\r\nimport { SearchItemOption } from '../search/search.component';\r\nimport { ListboxModule } from 'primeng/listbox';\r\nimport { ActionService } from '../../service/action.service';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\n\r\n@Component({\r\n\tselector: 'pop-sort',\r\n\tstandalone: true,\r\n\timports: [ListboxModule, TranslatePipe],\r\n\ttemplateUrl: './pop-sort.component.html',\r\n\tstyleUrl: './pop-sort.component.scss',\r\n})\r\nexport class PopSortComponent {\r\n\tsortOptions = input<SearchItemOption[]>();\r\n\tmodelName = input<string>();\r\n\tisActive: boolean = false;\r\n\tfields: string[] = [];\r\n\r\n\tconstructor(private action: ActionService) {\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tif (!this.action.searchMonitor(untracked(() => this.modelName()))) return;\r\n\t\t\t\tconst sorts = this.action.getSearch(untracked(() => this.modelName()))?.sorts || [];\r\n\t\t\t\tthis.fields = sorts.map((sort) => sort.field!);\r\n\t\t\t\tthis.sortOptions()?.forEach((option) => {\r\n\t\t\t\t\toption.checked = this.fields.includes(option.key!);\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t}\r\n\r\n\tonLabelClick(event: MouseEvent) {\r\n\t\tthis.isActive = !this.isActive;\r\n\t\tif (window.getSelection) {\r\n\t\t\twindow.getSelection()!.removeAllRanges();\r\n\t\t} else if ((document as any).selection) {\r\n\t\t\t(document as any).selection.empty();\r\n\t\t}\r\n\t}\r\n\r\n\tonSortOptionClick(item: SearchItemOption, event: MouseEvent) {\r\n\t\titem.checked = !item.checked;\r\n\t\tif (item.checked) {\r\n\t\t\tthis.fields.push(item.key!);\r\n\t\t} else {\r\n\t\t\tthis.fields = this.fields.filter((field) => field !== item.key);\r\n\t\t}\r\n\t\tconst isAsc = untracked(() => this.action.getSortItem())?.isAsc ?? true;\r\n\r\n\t\tthis.action.setSortItem({\r\n\t\t\tfields: this.fields,\r\n\t\t\tlabels: this.fields.map((field) => this.sortOptions()?.find((option: any) => option.key === field)?.label!),\r\n\t\t\tisAsc,\r\n\t\t});\r\n\t}\r\n}\r\n","<div class=\"s-pop-sort-container\">\r\n\t<div\r\n\t\tclass=\"s-pop-sort-label\"\r\n\t\t(click)=\"onLabelClick($event)\">\r\n\t\t<div>{{ 'search.sort' | translate }}</div>\r\n\t\t<span [class]=\"'s-pop-sort-label-icon pi pi-chevron-' + (isActive ? 'up' : 'down')\"></span>\r\n\t</div>\r\n\t<div [class]=\"'s-pop-sort-panel s-pop-sort-panel-' + (isActive ? 'show' : 'hide')\">\r\n\t\t@for (sort of sortOptions(); track sort) {\r\n\t\t\t<div\r\n\t\t\t\tclass=\"s-pop-sort-item-option\"\r\n\t\t\t\t(click)=\"onSortOptionClick(sort, $event)\">\r\n\t\t\t\t<span [class]=\"'s-check iconfont ' + (sort.checked ? 'icon-check s-pop-sort-item-selected-option' : '')\"></span>{{ sort.label }}\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n</div>\r\n","import { Component, effect, input, untracked } from '@angular/core';\r\nimport { SearchItem, SearchItemOption } from '../search/search.component';\r\nimport { PopListComponent } from '../pop-list/pop-list.component';\r\nimport { PopSelectComponent } from '../pop-select/pop-select.component';\r\nimport { PopTreeComponent } from '../pop-tree/pop-tree.component';\r\nimport { PopDateComponent } from '../pop-date/pop-date.component';\r\nimport { ActionService } from '../../service/action.service';\r\nimport { PopSelfComponent } from '../pop-self/pop-self.component';\r\nimport { PopSortComponent } from '../pop-sort/pop-sort.component';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\n\r\n@Component({\r\n\tselector: 'pop-panel',\r\n\tstandalone: true,\r\n\timports: [PopListComponent, PopSelectComponent, PopTreeComponent, PopDateComponent, PopSelfComponent, PopSortComponent, TranslatePipe],\r\n\ttemplateUrl: './pop-panel.component.html',\r\n\tstyleUrls: ['./pop-panel.component.scss'],\r\n})\r\nexport class PopPanelComponent {\r\n\tsearchItems = input<SearchItem[]>();\r\n\tsortOptions = input<SearchItemOption[]>();\r\n\tmodelName = input<string>();\r\n\totherItems: SearchItem[] = [];\r\n\r\n\tconstructor(private action: ActionService) {\r\n\t\teffect(() => {\r\n\t\t\tthis.otherItems = this.searchItems()?.filter((searchItem) => searchItem.filter && searchItem.filterType != 'text') || [];\r\n\t\t});\r\n\t}\r\n}\r\n","<div class=\"flex flex-wrap md:w-[535px] w-[300px] md:max-w-full max-w-[360px]\">\r\n\t<div class=\"md:basis-1/2 basis-full md:pr-2.5 md:pl-0 pl-2.5 md:border-r md:border-r-solid md:border-r-[#d6d8db]\">\r\n\t\t<div class=\"s-pop-panel-title\"><span class=\"s-pop-panel-title-icon pi pi-filter-fill\"></span>{{ 'primeng.filter' | translate }}</div>\r\n\t\t@for (item of otherItems; track item) {\r\n\t\t\t@switch (item.filterType) {\r\n\t\t\t\t@case ('list') {\r\n\t\t\t\t\t<pop-list\r\n\t\t\t\t\t\t[item]=\"item\"\r\n\t\t\t\t\t\t[modelName]=\"modelName()\"></pop-list>\r\n\t\t\t\t}\r\n\t\t\t\t@case ('select') {\r\n\t\t\t\t\t<pop-select\r\n\t\t\t\t\t\t[item]=\"item\"\r\n\t\t\t\t\t\t[modelName]=\"modelName()\"></pop-select>\r\n\t\t\t\t}\r\n\t\t\t\t@case ('date') {\r\n\t\t\t\t\t<pop-date\r\n\t\t\t\t\t\t[item]=\"item\"\r\n\t\t\t\t\t\t[modelName]=\"modelName()\"></pop-date>\r\n\t\t\t\t}\r\n\t\t\t\t@case ('tree') {\r\n\t\t\t\t\t<pop-tree [item]=\"item\"></pop-tree>\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t<pop-self [searchItems]=\"searchItems()\"></pop-self>\r\n\t</div>\r\n\t<div class=\"md:basis-1/2 basis-full md:pl-2.5 s-pop-right\">\r\n\t\t<div class=\"s-pop-panel-title\"><span class=\"s-pop-panel-title-icon iconfont icon-group\"></span>{{ 'search.group' | translate }}</div>\r\n\t\t<pop-sort\r\n\t\t\t[sortOptions]=\"sortOptions()\"\r\n\t\t\t[modelName]=\"modelName()\"></pop-sort>\r\n\t</div>\r\n</div>\r\n","import { Component, Output, input, EventEmitter, effect } from '@angular/core';\r\nimport { SearchItem } from '../search/search.component';\r\nimport { ActionService } from '../../service/action.service';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { Select } from 'primeng/select';\r\nimport { numberOperListNoRange, textOperList } from '../mock-data';\r\nimport { searchUtils } from '../search-utils';\r\nimport { I18nService } from '../../service/i18n.service';\r\n\r\n@Component({\r\n\tselector: 'text-panel',\r\n\tstandalone: true,\r\n\timports: [FormsModule, Select],\r\n\ttemplateUrl: './text-panel.component.html',\r\n\tstyleUrl: './text-panel.component.scss',\r\n})\r\nexport class TextPanelComponent {\r\n\t@Output() strItemClick = new EventEmitter<void>();\r\n\tsearchItems = input<SearchItem[]>();\r\n\tsearchStr = input<string>();\r\n\ttextItems: SearchItem[] = [];\r\n\ttextOperList = searchUtils.translate(textOperList, this.i18n);\r\n\tnumberOperList = searchUtils.translate(numberOperListNoRange, this.i18n);\r\n\r\n\tconstructor(\r\n\t\tprivate action: ActionService,\r\n\t\tprivate i18n: I18nService,\r\n\t) {\r\n\t\teffect(() => {\r\n\t\t\tthis.textItems =\r\n\t\t\t\tthis.searchItems()\r\n\t\t\t\t\t?.filter((searchItem) => searchItem.filter && (searchItem.filterType == 'text' || searchItem.filterType == 'number'))\r\n\t\t\t\t\t.map((searchItem) => ({ operator: searchItem.filterType == 'number' ? 'equals' : 'contains', ...searchItem })) || [];\r\n\t\t});\r\n\t}\r\n\r\n\tonStrItemClick(item: SearchItem, event: Event) {\r\n\t\titem.selected = true;\r\n\t\titem.value = item.filterType == 'number' ? Number(this.searchStr()) : this.searchStr();\r\n\t\tthis.action.setSearchItem(item);\r\n\t\tthis.strItemClick.emit();\r\n\t}\r\n\r\n\tonTextOperatorClick(item: SearchItem, event: Event) {\r\n\t\tevent.stopPropagation();\r\n\t}\r\n}\r\n","@if (!textItems.length) {\r\n\t<div class=\"s-str-item flex items-center\">无搜索字段</div>\r\n}\r\n@for (item of textItems; track item) {\r\n\t<div\r\n\t\tclass=\"s-str-item flex items-center\"\r\n\t\t(click)=\"onStrItemClick(item!, $event)\">\r\n\t\t搜索 <span class=\"s-str-item-field px-1\">{{ item.label }}</span>\r\n\t\t<span\r\n\t\t\tclass=\"px-1 w-24\"\r\n\t\t\t(click)=\"onTextOperatorClick(item, $event)\">\r\n\t\t\t<p-select\r\n\t\t\t\tpanelStyleClass=\"s-text-panel-select-panel\"\r\n\t\t\t\t[(ngModel)]=\"item.operator\"\r\n\t\t\t\t[options]=\"textOperList\"\r\n\t\t\t\toptionLabel=\"label\"\r\n\t\t\t\toptionValue=\"operator\"\r\n\t\t\t\tappendTo=\"body\"\r\n\t\t\t\tsize=\"small\"\r\n\t\t\t\tfluid />\r\n\t\t</span>\r\n\t\t<span class=\"s-str-item-value px-1\">{{ searchStr() }}</span>\r\n\t</div>\r\n}\r\n","import { Component, effect, input, untracked } from '@angular/core';\r\nimport { SearchItem, SearchItemOption } from '../search/search.component';\r\nimport { ColumnFilter, Sort } from '../../am/am.component';\r\nimport { ActionService, SortItem } from '../../service/action.service';\r\nimport { operatorList } from '../mock-data';\r\nimport { searchUtils } from '../search-utils';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\nimport { I18nService } from '../../service/i18n.service';\r\n@Component({\r\n\tselector: 'search-tip',\r\n\tstandalone: true,\r\n\tproviders: [],\r\n\timports: [TranslatePipe],\r\n\ttemplateUrl: './search-tip.component.html',\r\n\tstyleUrl: './search-tip.component.scss',\r\n})\r\nexport class SearchTipComponent {\r\n\tcolumnFilter = input<ColumnFilter>();\r\n\tsearchItem = input<SearchItem>();\r\n\tsorts = input<Sort[]>();\r\n\tsortItem = input<SortItem>();\r\n\tflattenTreeOptions?: any[];\r\n\toperatorList = searchUtils.translate(operatorList, this.i18n);\r\n\tconstructor(\r\n\t\tprivate action: ActionService,\r\n\t\tprivate i18n: I18nService,\r\n\t) {\r\n\t\teffect(() => {\r\n\t\t\tif (this.searchItem()) {\r\n\t\t\t\tthis.flattenTreeOptions = searchUtils.flattenTree(this.searchItem()!.options!);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tonSortTipClick() {\r\n\t\tconst sortItem = untracked(() => this.action.getSortItem());\r\n\t\tthis.action.setSortItem({ fields: sortItem?.fields || [], isAsc: !sortItem?.isAsc });\r\n\t}\r\n\r\n\tonSortTipClose() {\r\n\t\tthis.action.setSortItem({ fields: [], isAsc: true });\r\n\t}\r\n\r\n\tonSearchTipClose() {\r\n\t\tthis.action.setSearchClear(this.columnFilter()!.columnField!);\r\n\t}\r\n\r\n\tisNotFirstCheckedOption(option: SearchItemOption, item: SearchItem) {\r\n\t\tif (!option.checked) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn item.options?.filter((option) => option.checked)[0].key != option.key;\r\n\t}\r\n\r\n\tformatSelectGroups(selects: SearchItem[]) {\r\n\t\treturn selects.map((select) => select.label || select.field!).join(' > ');\r\n\t}\r\n\r\n\toperatorLabel(opera: string) {\r\n\t\treturn this.operatorList.filter((operator) => operator.operator == opera)[0]?.label;\r\n\t}\r\n\r\n\tlabelForSorts() {\r\n\t\t// sortItem()?.labels?.join(' > ')\r\n\t\t// return this.sorts()?.map((sort) => sort.label).join(' > ');\r\n\t}\r\n\r\n\tlabelForList() {\r\n\t\treturn this.searchItem()\r\n\t\t\t?.options?.filter((option) => this.columnFilter()!.fiter?.includes(option.key))\r\n\t\t\t.map((option) => option.label);\r\n\t}\r\n\r\n\tlabelForSelect() {\r\n\t\tif (this.searchItem()!.multiple) {\r\n\t\t\treturn this.searchItem()\r\n\t\t\t\t?.options?.filter((option) => this.columnFilter()!.fiter?.includes(option.key))\r\n\t\t\t\t.map((option) => option.label);\r\n\t\t}\r\n\t\treturn this.searchItem()?.options?.find((option) => option.key == this.columnFilter()!.fiter)?.label || '';\r\n\t}\r\n\r\n\tlabelForTree() {\r\n\t\tif (this.searchItem()!.multiple) {\r\n\t\t\treturn this.flattenTreeOptions?.filter((option) => this.columnFilter()!.fiter?.includes(option.key)).map((option) => option.label);\r\n\t\t}\r\n\t\treturn this.flattenTreeOptions?.find((option) => option.key == this.columnFilter()!.fiter)?.label || '';\r\n\t}\r\n}\r\n","<span class=\"s-search-tip\">\r\n\t@if (sorts()) {\r\n\t\t<span\r\n\t\t\t[class]=\"'s-search-tip-sort s-search-tip-icon s-search-tip-icon-group pi ' + (sortItem()?.isAsc ? 'pi-arrow-up' : 'pi-arrow-down')\"\r\n\t\t\tstyle=\"padding: 6px 6px 0 6px\"\r\n\t\t\t(click)=\"onSortTipClick()\"></span>\r\n\t\t<span class=\"s-search-tip-title\">{{ sortItem()?.labels?.join(' > ') }}</span>\r\n\t\t<span\r\n\t\t\tclass=\"s-search-tip-close pi pi-times\"\r\n\t\t\t(click)=\"onSortTipClose()\"></span>\r\n\t}\r\n\t@if (searchItem()?.filterType == 'list') {\r\n\t\t<span class=\"s-search-tip-icon s-search-tip-icon-filter pi pi-filter-fill\"></span>\r\n\t\t<span class=\"s-search-tip-title\">{{ labelForList() }}</span>\r\n\t\t<span\r\n\t\t\tclass=\"s-search-tip-close pi pi-times\"\r\n\t\t\t(click)=\"onSearchTipClose()\"></span>\r\n\t} @else if (searchItem()?.filterType == 'select') {\r\n\t\t<span class=\"s-search-tip-icon s-search-tip-icon-filter pi pi-filter-fill\"></span>\r\n\t\t<span class=\"s-search-tip-title\">{{ labelForSelect() }}</span>\r\n\t\t<span\r\n\t\t\tclass=\"s-search-tip-close pi pi-times\"\r\n\t\t\t(click)=\"onSearchTipClose()\"></span>\r\n\t} @else if (searchItem()?.filterType == 'tree') {\r\n\t\t<span class=\"s-search-tip-icon s-search-tip-icon-filter pi pi-filter-fill\"></span>\r\n\t\t<span class=\"s-search-tip-title\">{{ labelForTree() }}</span>\r\n\t\t<span\r\n\t\t\tclass=\"s-search-tip-close pi pi-times\"\r\n\t\t\t(click)=\"onSearchTipClose()\"></span>\r\n\t} @else if (searchItem()?.filterType == 'date') {\r\n\t\t<span class=\"s-search-tip-field\">{{ searchItem()?.label }}</span>\r\n\t\t<span class=\"s-search-tip-title s-search-tip-opertor\">{{ operatorLabel(columnFilter()?.type!) }}</span>\r\n\t\t@if (columnFilter()?.type == 'inRange') {\r\n\t\t\t<span class=\"s-search-tip-title\">{{ columnFilter()?.from }}</span>\r\n\t\t\t<span class=\"s-search-tip-title s-search-tip-opertor\">{{ 'search.and' | translate }}</span>\r\n\t\t\t<span class=\"s-search-tip-title\">{{ columnFilter()?.to }}</span>\r\n\t\t} @else {\r\n\t\t\t<span class=\"s-search-tip-title\">{{ columnFilter()?.fiter }}</span>\r\n\t\t}\r\n\t\t<span\r\n\t\t\tclass=\"s-search-tip-close pi pi-times\"\r\n\t\t\t(click)=\"onSearchTipClose()\"></span>\r\n\t} @else if (searchItem()?.filterType == 'text') {\r\n\t\t<span class=\"s-search-tip-field\">{{ searchItem()?.label }}</span>\r\n\t\t<span class=\"s-search-tip-title s-search-tip-opertor\">{{ operatorLabel(columnFilter()?.type!) }}</span>\r\n\t\t<span class=\"s-search-tip-title\">{{ columnFilter()?.fiter }}</span>\r\n\t\t<span\r\n\t\t\tclass=\"s-search-tip-close pi pi-times\"\r\n\t\t\t(click)=\"onSearchTipClose()\"></span>\r\n\t} @else if (searchItem()?.filterType == 'number') {\r\n\t\t<span class=\"s-search-tip-field\">{{ searchItem()?.label }}</span>\r\n\t\t<span class=\"s-search-tip-title s-search-tip-opertor\">{{ operatorLabel(columnFilter()?.type!) }}</span>\r\n\t\t@if (columnFilter()?.type == 'inRange') {\r\n\t\t\t<span class=\"s-search-tip-title\">{{ columnFilter()?.from }}</span>\r\n\t\t\t<span class=\"s-search-tip-title s-search-tip-opertor\">and</span>\r\n\t\t\t<span class=\"s-search-tip-title\">{{ columnFilter()?.to }}</span>\r\n\t\t} @else {\r\n\t\t\t<span class=\"s-search-tip-title\">{{ columnFilter()?.fiter }}</span>\r\n\t\t}\r\n\t\t<span\r\n\t\t\tclass=\"s-search-tip-close pi pi-times\"\r\n\t\t\t(click)=\"onSearchTipClose()\"></span>\r\n\t}\r\n</span>\r\n","import { Component, input, effect, untracked, computed, ViewChild, ElementRef, signal } from '@angular/core';\r\nimport { GridOptions } from '../../grid/grid/grid.component';\r\nimport { PopPanelComponent } from '../pop-panel/pop-panel.component';\r\nimport { TextPanelComponent } from '../text-panel/text-panel.component';\r\nimport { SearchTipComponent } from '../search-tip/search-tip.component';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\nimport { ActionService, SortItem } from '../../service/action.service';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { searchUtils } from '../search-utils';\r\nimport { Search, Sort } from '../../am/am.component';\r\nimport { Popover } from 'primeng/popover';\r\nimport { Observable } from 'rxjs';\r\nimport { I18nService } from '../../service/i18n.service';\r\n\r\nexport type SearchType = 'text' | 'list' | 'select' | 'date' | 'number' | 'tree';\r\nexport interface SearchItemOption {\r\n\tkey?: string;\r\n\tlabel?: string;\r\n\tchecked?: boolean;\r\n}\r\nexport interface SearchItem {\r\n\tfield?: string;\r\n\tlabel?: string;\r\n\tselected?: boolean;\r\n\tfilter?: boolean;\r\n\tformat?: string;\r\n\tfilterType?: SearchType;\r\n\toptions?: SearchItemOption[];\r\n\tcascade?: boolean;\r\n\tcascadeKey?: string;\r\n\tmultiple?: boolean;\r\n\tgroup?: boolean;\r\n\tvalue?: any;\r\n\tfrom?: string;\r\n\tto?: string;\r\n\toperator?: string;\r\n\tcascadeFunc?: (value: any) => Observable<SearchItemOption[]>;\r\n\t[propsName: string]: any;\r\n}\r\n\r\nexport interface SearchOptions {\r\n\tsearchItems?: SearchItem[];\r\n\tmodelName?: string;\r\n}\r\n\r\n@Component({\r\n\tselector: 'custom-search',\r\n\tstandalone: true,\r\n\timports: [FormsModule, PopPanelComponent, TextPanelComponent, SearchTipComponent, TranslatePipe, Popover],\r\n\ttemplateUrl: './search.component.html',\r\n\tstyleUrl: './search.component.scss',\r\n})\r\nexport class SearchComponent {\r\n\t@ViewChild('searchRef', { static: false }) searchRef!: ElementRef;\r\n\t@ViewChild('popPanel') popPanel!: Popover;\r\n\t@ViewChild('textPanel') textPanel!: Popover;\r\n\tsearchPrm = input<Search>();\r\n\tgridOptions = input<GridOptions>();\r\n\tsearchModel = computed(() => {\r\n\t\tif (!this.action.searchMonitor(untracked(() => this.gridOptions()?.modelName))) return;\r\n\t\tconst search = this.action.getSearch(untracked(() => this.gridOptions()?.modelName));\r\n\t\treturn search;\r\n\t});\r\n\tsearchItems!: SearchItem[];\r\n\tsortOptions!: SearchItemOption[];\r\n\tmarginLeft: string = '0';\r\n\tsearchStr = '';\r\n\tisActive = false;\r\n\tvisible = true;\r\n\treload = true;\r\n\r\n\tconstructor(\r\n\t\tprivate action: ActionService,\r\n\t\tprivate i18n: I18nService,\r\n\t) {\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst columnDefs = this.gridOptions()?.columnDefs;\r\n\t\t\t\tthis.visible = this.gridOptions()?.showSearch ?? true;\r\n\t\t\t\tconsole.log('mount------')\r\n\t\t\t\tthis.searchItems = searchUtils.extractSearchItems(columnDefs, this.i18n);\r\n\t\t\t\tthis.sortOptions = columnDefs!.map((columnDef: any) => ({ key: columnDef.field, label: columnDef.headerName }));\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t\teffect(() => {\r\n\t\t\tconst searchPrm = this.searchPrm();\r\n\t\t\tif (searchPrm?.columnFilters?.length || searchPrm?.groups?.length) {\r\n\t\t\t\tthis.action.setSearch({ columnFilters: searchPrm?.columnFilters, groups: searchPrm?.groups }, searchPrm.modelName);\r\n\t\t\t}\r\n\t\t});\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst searchItem = this.action.getSearchItem();\r\n\t\t\t\tconst modelName = untracked(() => this.gridOptions()?.modelName);\r\n\t\t\t\tif (searchItem == undefined) return;\r\n\t\t\t\tthis.action.setSearch(\r\n\t\t\t\t\tsearchUtils.concatFilter(this.action.getSearch(modelName), searchUtils.transferFilter(searchItem)!),\r\n\t\t\t\t\tmodelName,\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst searchClear = this.action.getSearchClear();\r\n\t\t\t\tconst modelName = untracked(() => this.gridOptions()?.modelName);\r\n\t\t\t\tif (searchClear == undefined) return;\r\n\t\t\t\tlet search = this.action.getSearch(modelName);\r\n\t\t\t\tsearch = {\r\n\t\t\t\t\t...search,\r\n\t\t\t\t\tcolumnFilters: searchUtils.cascadeColumnFilters(searchClear + '', search?.columnFilters || [], this.searchItems),\r\n\t\t\t\t};\r\n\t\t\t\tthis.action.setSearch(search, modelName);\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst sortItem = this.action.getSortItem();\r\n\t\t\t\tif (sortItem === undefined) return;\r\n\t\t\t\tconst modelName = untracked(() => this.gridOptions()?.modelName);\r\n\t\t\t\tlet sorts: Sort[] = sortItem.fields!.map((field) => ({ field, isAsc: sortItem!.isAsc }));\r\n\t\t\t\tthis.action.setSearch({ columnFilters: this.action.getSearch(modelName)?.columnFilters || [], sorts }, modelName);\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.i18n.change.subscribe((res: any) => {\r\n\t\t\tconst columnDefs = this.gridOptions()?.columnDefs;\r\n\t\t\tthis.visible = this.gridOptions()?.showSearch ?? true;\r\n\t\t\tthis.searchItems = searchUtils.extractSearchItems(columnDefs, this.i18n);\r\n\t\t\tthis.sortOptions = columnDefs!.map((columnDef: any) => ({ key: columnDef.field, label: columnDef.headerName }));\r\n\t\t\tthis.reload = false;\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.reload = true;\r\n\t\t\t}, 200);\r\n\t\t});\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.action.clear();\r\n\t}\r\n\r\n\tonFocus(event: any, searchRef: any) {\r\n\t\tthis.isActive = true;\r\n\t\tif (!this.searchStr) {\r\n\t\t\tthis.popPanel.show(event, searchRef);\r\n\t\t} else {\r\n\t\t\tthis.textPanel.show(event, searchRef);\r\n\t\t}\r\n\t}\r\n\r\n\tonDropDownClick(event: any, searchRef: any) {\r\n\t\tthis.isActive = !this.isActive;\r\n\t\tif (!this.searchStr) {\r\n\t\t\tthis.popPanel.toggle(event, searchRef);\r\n\t\t} else {\r\n\t\t\tthis.textPanel.toggle(event, searchRef);\r\n\t\t}\r\n\t}\r\n\r\n\tonInput(event: any, searchRef: any) {\r\n\t\tif (!event.target?.value) {\r\n\t\t\tthis.popPanel.show(event, searchRef);\r\n\t\t\tthis.textPanel.hide();\r\n\t\t} else {\r\n\t\t\tthis.textPanel.show(event, searchRef);\r\n\t\t\tthis.popPanel.hide();\r\n\t\t}\r\n\t}\r\n\r\n\tonPopShow(event: any) {\r\n\t\tthis.calcMarginLeft();\r\n\t}\r\n\r\n\tonPopHide(event: any) {\r\n\t\tthis.isActive = this.popPanel.overlayVisible || this.popPanel.overlayVisible;\r\n\t}\r\n\r\n\tcalcMarginLeft() {\r\n\t\tif (!this.searchRef) return;\r\n\t\tconst searchRefRect = this.searchRef.nativeElement.getBoundingClientRect();\r\n\t\tconst panelWidth = window.innerWidth > 768 ? 535 : 305;\r\n\t\tconst offset = searchRefRect.width - panelWidth - 23.5;\r\n\t\tthis.marginLeft = offset + 'px';\r\n\t}\r\n\r\n\tgetSearchItemByField(field: string) {\r\n\t\treturn this.searchItems?.filter((searchItem) => searchItem.field == field)[0];\r\n\t}\r\n\r\n\tgetSortItemBySorts(sorts: Sort[]): SortItem | undefined {\r\n\t\tconst fields = sorts?.map((sort) => sort.field!);\r\n\t\tconst labels = sorts?.map((sort) => this.sortOptions?.find((sortOption) => sortOption.key == sort.field)?.label || '');\r\n\t\tconst isAsc = sorts[0].isAsc;\r\n\t\treturn { fields, labels, isAsc };\r\n\t}\r\n\r\n\tonStrItemClick(event: any) {\r\n\t\tthis.isActive = false;\r\n\t\tthis.searchStr = '';\r\n\t\tthis.textPanel.hide();\r\n\t}\r\n}\r\n","@if (visible && reload) {\r\n\t<div\r\n\t\t#searchRef\r\n\t\tclass=\"s-main\">\r\n\t\t<div [class]=\"'flex items-center s-container ' + (isActive ? 's-active' : 's-unactive')\">\r\n\t\t\t<span class=\"flex-none s-search pi pi-search\"></span>\r\n\t\t\t<div class=\"flex-1 flex items-center content-center flex-wrap\">\r\n\t\t\t\t@for (columnFilter of searchModel()?.columnFilters; track columnFilter) {\r\n\t\t\t\t\t<search-tip\r\n\t\t\t\t\t\t[columnFilter]=\"columnFilter\"\r\n\t\t\t\t\t\t[searchItem]=\"getSearchItemByField(columnFilter.columnField!)\"></search-tip>\r\n\t\t\t\t}\r\n\t\t\t\t@if (searchModel()?.sorts?.length) {\r\n\t\t\t\t\t<search-tip\r\n\t\t\t\t\t\t[sorts]=\"searchModel()?.sorts\"\r\n\t\t\t\t\t\t[sortItem]=\"getSortItemBySorts(searchModel()?.sorts!)\"></search-tip>\r\n\t\t\t\t}\r\n\t\t\t\t<div class=\"flex-1\">\r\n\t\t\t\t\t<input\r\n\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\tclass=\"s-input\"\r\n\t\t\t\t\t\t[placeholder]=\"'search.search' | translate\"\r\n\t\t\t\t\t\t[(ngModel)]=\"searchStr\"\r\n\t\t\t\t\t\t(focus)=\"onFocus($event, searchRef)\"\r\n\t\t\t\t\t\t(input)=\"onInput($event, searchRef)\" />\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div\r\n\t\t\t[class]=\"'s-dropdown ' + (isActive ? 's-active' : 's-unactive')\"\r\n\t\t\t(click)=\"onDropDownClick($event, searchRef)\">\r\n\t\t\t<span [class]=\"'s-dropdown-icon pi pi-chevron-' + (isActive ? 'up' : 'down')\"></span>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<p-popover\r\n\t\t[style]=\"{ marginLeft, maxHeight: '75vh', overflowY: 'scroll' }\"\r\n\t\t(onShow)=\"onPopShow($event)\"\r\n\t\t(onHide)=\"onPopHide($event)\"\r\n\t\t#popPanel>\r\n\t\t<pop-panel\r\n\t\t\t[searchItems]=\"searchItems\"\r\n\t\t\t[sortOptions]=\"sortOptions\"\r\n\t\t\t[modelName]=\"gridOptions()?.modelName\"></pop-panel>\r\n\t</p-popover>\r\n\r\n\t<p-popover\r\n\t\t[style]=\"{ maxHeight: '75vh', overflowY: 'scroll' }\"\r\n\t\t(onHide)=\"onPopHide($event)\"\r\n\t\t#textPanel>\r\n\t\t<text-panel\r\n\t\t\t[searchItems]=\"searchItems\"\r\n\t\t\t[searchStr]=\"searchStr\"\r\n\t\t\t(strItemClick)=\"onStrItemClick($event)\"></text-panel>\r\n\t</p-popover>\r\n}\r\n","import { Component, ViewChild, Output, EventEmitter, input, model, effect, inject } from '@angular/core';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { Search } from '../am/am.component';\r\nimport { GridComponent, GridOptions } from '../grid/grid/grid.component';\r\nimport { SearchComponent } from '../search/search/search.component';\r\nimport { ActionService } from '../service/action.service';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n@Component({\r\n\tselector: 'row-selector',\r\n\tstandalone: true,\r\n\timports: [ButtonModule, DialogModule, GridComponent, SearchComponent],\r\n\ttemplateUrl: './row-selector.component.html',\r\n\tstyleUrl: './row-selector.component.scss',\r\n})\r\nexport class RowSelectorComponent {\r\n\t@Output() onOk = new EventEmitter<any[]>();\r\n\t@ViewChild(GridComponent) grid!: GridComponent;\r\n\tdatePipe = inject(DatePipe)\r\n\ttitle = input<string>('选择');\r\n\tselectionKeys = input<any[]>([]);\r\n\tgridOptions = input<GridOptions>({});\r\n\tsearchPrm = input<Search>({});\r\n\tvisible = model<boolean>(false);\r\n\tinnerVisible: boolean = false;\r\n\tshowSearch = input<boolean>(true);\r\n\tselectCancel:any[] = []\r\n\t@Output() cancelSelect = new EventEmitter<any[]>();\r\n\tconstructor(private action: ActionService) {}\r\n\r\n\tapi() {\r\n\t\treturn this.grid.getGrid().api;\r\n\t}\r\n\r\n\tcancel() {\r\n\t\tthis.visible.set(false);\r\n\t}\r\n\r\n\tok() {\r\n\t\tconst result = this.getSelectedData().map((item) => {\r\n\t\t\tconst result: any = {};\r\n\t\t\tthis.gridOptions().columnDefs?.forEach((col: any) => {\r\n\t\t\t\tresult[col.field] = item[col.field];\r\n\t\t\t});\r\n\t\t\treturn result;\r\n\t\t});\r\n\t\tthis.onOk.emit(result);\r\n\t\tthis.selectCancel.length > 0 && this.cancelSelect.emit(this.selectCancel)\r\n\t\tthis.visible.set(false);\r\n\t}\r\n\r\n\tgetSelectedData(): any[] {\r\n\t\tconst result: any[] = [];\r\n\t\tconst selectionKeys = this.selectionKeys();\r\n\t\tconst dataKey = this.gridOptions().dataKey || 'id'\r\n\t\tthis.api().forEachNode((node: any) => {\r\n\t\t\tconst keyValue = node.data ? node.data[dataKey]: -1\r\n\t\t\tif(!node.isSelected() && selectionKeys.includes(keyValue)){\r\n\t\t\t\tthis.selectCancel.push(node.data)\r\n\t\t\t}\r\n\r\n\t\t\tnode.isSelected() && result.push({ ...node.data });\r\n\t\t});\r\n\t\treturn result;\r\n\t}\r\n\r\n\tonShow() {\r\n\t\tthis.innerVisible = true;\r\n\t\tthis.action.setPopMode(true);\r\n\t}\r\n\r\n\tonHide() {\r\n\t\tthis.innerVisible = false;\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.action.setPopMode(false);\r\n\t\t});\r\n\t}\r\n\r\n\tonMaximize(event: any) {\r\n\t\tif (event.maximized) {\r\n\t\t\tthis.grid.setScrollHeight('calc(100vh - 150px)');\r\n\t\t} else {\r\n\t\t\tthis.grid.setScrollHeight();\r\n\t\t}\r\n\t}\r\n}\r\n","<p-dialog\r\n\t[header]=\"title()\"\r\n\t[modal]=\"true\"\r\n\t[style]=\"{ width: '50vw' }\"\r\n\t(onHide)=\"cancel()\"\r\n\t[maximizable]=\"true\"\r\n\t[appendTo]=\"'body'\"\r\n\t[focusOnShow]=\"false\"\r\n\t(onShow)=\"onShow()\"\r\n\t(onHide)=\"onHide()\"\r\n\t(onMaximize)=\"onMaximize($event)\"\r\n\t[(visible)]=\"visible\">\r\n\t@if (innerVisible) {\r\n\t\t<div class=\"flex flex-col gap-2\">\r\n\t\t\t@if (showSearch()) {\r\n\t\t\t\t<custom-search [gridOptions]=\"gridOptions()\"></custom-search>\r\n\t\t\t}\r\n\t\t\t<custom-grid\r\n\t\t\t\t[showAct]=\"false\"\r\n\t\t\t\t[searchPrm]=\"searchPrm()\"\r\n\t\t\t\t[selectionKeys]=\"selectionKeys()\"\r\n\t\t\t\t[gridOptions]=\"gridOptions()\"></custom-grid>\r\n\t\t\t<div class=\"flex justify-end gap-2\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\tlabel=\"取消\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t(click)=\"cancel()\" />\r\n\t\t\t\t<p-button\r\n\t\t\t\t\tlabel=\"确定\"\r\n\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t(click)=\"ok()\" />\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t}\r\n</p-dialog>\r\n","import { Component, input, effect, ViewChild, ViewContainerRef, ElementRef, Renderer2 } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { RowSelectorComponent as rowselectorPop } from '../../row-selector/row-selector.component';\r\nimport { FormField, FieldProps } from '../form-field/form-field';\r\nimport { ActionService } from '../../service/action.service';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { Observable } from 'rxjs';\r\nimport { convertCol, parseFunctions } from '../../share/utils';\r\nimport { FormComponent } from '../form/form.component';\r\nimport { AmComponent } from '../../am/am.component';\r\n\r\nexport interface RowSelectorProps extends FieldProps {\r\n\tpageCode?: string;\r\n\tpreSearch?: any;\r\n\tsearchPrm?: any;\r\n\tcallback?: (data: any, form: FormComponent) => void;\r\n}\r\n\r\n@Component({\r\n\tselector: 'form-rowselector',\r\n\tstandalone: true,\r\n\tstyles: `\r\n\t\t.selector-text {\r\n\t\t\twidth: 100%;\r\n\t\t\theight: 20px;\r\n\t\t\tcolor: #334155;\r\n\r\n\t\t\t.selector-icon {\r\n\t\t\t\tfont-size: 12px;\r\n\t\t\t}\r\n\t\t\t.selector-icon:hover {\r\n\t\t\t\tcursor: pointer;\r\n\t\t\t\tcolor: var(--p-primary-color);\r\n\t\t\t}\r\n\t\t\t.selector-text-content {\r\n\t\t\t\tmin-width: 25px;\r\n\t\t\t\twhite-space: nowrap;\r\n\t\t\t\toverflow: hidden;\r\n\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t}\r\n\t\t}\r\n\t\t.selector-text:hover {\r\n\t\t\t.selector-icon {\r\n\t\t\t\tcolor: var(--p-primary-color);\r\n\t\t\t}\r\n\t\t}\r\n\t\t.selector-text.ng-hovered {\r\n\t\t\t.selector-icon {\r\n\t\t\t\tcolor: var(--p-primary-color);\r\n\t\t\t}\r\n\t\t}\r\n\t`,\r\n\timports: [ButtonModule, ReactiveFormsModule],\r\n\ttemplate: `\r\n\t\t<div #container></div>\r\n\t\t<div\r\n\t\t\t#selector\r\n\t\t\tclass=\"flex gap-2 items-center selector-text\">\r\n\t\t\t<span class=\"selector-text-content\">{{ text }}</span>\r\n\t\t\t@if (!field()?.fieldControl?.disabled) {\r\n\t\t\t\t<span\r\n\t\t\t\t\tclass=\"selector-icon pi pi-pen-to-square\"\r\n\t\t\t\t\t(click)=\"onSelectorShow()\"></span>\r\n\t\t\t}\r\n\t\t</div>\r\n\t`,\r\n})\r\nexport class RowSelectorComponent extends AmComponent {\r\n\t@ViewChild('container', { read: ViewContainerRef }) container!: ViewContainerRef;\r\n\t@ViewChild('selector', { read: ElementRef, static: false }) selectorRef!: ElementRef;\r\n\tfield = input<FormField>();\r\n\tprops: RowSelectorProps = {};\r\n\ttext?: string;\r\n\tuse: any = {};\r\n\r\n\tconstructor(\r\n\t\tprivate action: ActionService,\r\n\t\tprivate renderer: Renderer2,\r\n\t) {\r\n\t\tsuper();\r\n\t\teffect(() => {\r\n\t\t\tif (this.field()) {\r\n\t\t\t\tthis.props = this.field()!.rowSelectorProps!;\r\n\t\t\t\tthis.handleHookChange();\r\n\t\t\t\tthis.handleDisabled();\r\n\t\t\t}\r\n\t\t});\r\n\t\teffect(() => {\r\n\t\t\tconst labelAction = this.action.getFieldLabelAction();\r\n\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (labelAction.type == 'mouseenter') {\r\n\t\t\t\tthis.renderer.addClass(this.selectorRef.nativeElement, 'ng-hovered');\r\n\t\t\t} else if (labelAction.type == 'mouseleave') {\r\n\t\t\t\tthis.renderer.removeClass(this.selectorRef.nativeElement, 'ng-hovered');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\thandleDisabled() {\r\n\t\tif (this.props?.disabled) {\r\n\t\t\tthis.field()!.fieldControl!.disable({ emitEvent: false });\r\n\t\t}\r\n\t}\r\n\r\n\thandleHookChange() {\r\n\t\tthis.field()?.fieldControl?.hookChange.subscribe((value) => {\r\n\t\t\tif (value == null) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\r\n\t\t\tthis.text = value;\r\n\t\t});\r\n\t}\r\n\r\n\tonSelectorShow() {\r\n\t\tif (this.field()?.fieldControl?.disabled) return;\r\n\t\tthis.createRowSelector();\r\n\t}\r\n\r\n\tcreateRowSelector() {\r\n\t\tconst thisArg = this.field()!.form!.options()?.extra?.thisArg || this;\r\n\t\tconsole.log('-----Form Rowselector thisArg', thisArg);\r\n\t\tthis.webget({ code: this.props.pageCode }).subscribe((res: any) => {\r\n\t\t\tlet content = parseFunctions(JSON.parse(res.content), thisArg);\r\n\t\t\tif (content.hasOwnProperty('searchPrm')) {\r\n\t\t\tcontent.searchPrm?.columnFilters?.forEach((v: any) => {\r\n\t\t\t\tif (typeof v.fiter === 'function') {\r\n\t\t\t\t\tv.fiter = v.fiter(null, this.field()!.form);\r\n\t\t\t\t\tconsole.log('fiter------',v.fiter)\r\n\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\t\tthis.handlePopGridOptions(content.gridOptions, thisArg);\r\n\t\t\tthis.container.clear();\r\n\t\t\tconst componentRef = this.container.createComponent(rowselectorPop);\r\n\t\t\tcomponentRef.setInput('visible', true);\r\n\t\t\tif (this.props.preSearch) {\r\n\t\t\t\tcontent.gridOptions = { ...content.gridOptions, preSearch: this.props.preSearch };\r\n\t\t\t}\r\n\t\t\tconvertCol(content.gridOptions, content.gridOptions.columnDefs as any, 1);\r\n\t\t\tcomponentRef.setInput('gridOptions', content.gridOptions);\r\n\t\t\tlet searchPrm = { modelName: content.modelName, orgField:content?.orgField, ...content.searchPrm};\r\n\t\t\tif (this.props.searchPrm) {\r\n\t\t\t\tsearchPrm = { ...searchPrm, ...this.props.searchPrm};\r\n\t\t\t}\r\n\t\t\tconsole.log('searchPrm-----',searchPrm)\r\n\t\t\tcomponentRef.setInput('searchPrm', searchPrm);\r\n\t\t\tcomponentRef.instance.onOk.subscribe((data: any[]) => {\r\n\t\t\t\tif (data.length == 0) return;\r\n\t\t\t\tthis.props.callback && this.props.callback(data[0], this.field()!.form!);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\thandlePopGridOptions(gridOptions: any, thisArg: any) {\r\n\t\tconst search = (param: any): Observable<any> => this.http.post('search', param);\r\n\t\tgridOptions.scrollHeight = '300px';\r\n\t\tgridOptions.rowSelection = { mode: 'singleRow' };\r\n\t\tgridOptions.rowModelType = gridOptions.rowModelType || 'serverSide';\r\n\t\tif (gridOptions.rowModelType == 'serverSide') {\r\n\t\t\tgridOptions.serverFunc = gridOptions.serverFunc?.bind(thisArg) || search.bind(thisArg);\r\n\t\t} else {\r\n\t\t\tgridOptions.clientFunc = gridOptions.clientFunc?.bind(thisArg) || search.bind(thisArg);\r\n\t\t}\r\n\t\tif (gridOptions.hasOwnProperty('preSearch')) {\r\n\t\t\tgridOptions.preSearch?.columnFilters?.forEach((v: any) => {\r\n\t\t\t\tif (typeof v.fiter === 'function') {\r\n\t\t\t\t\tv.fiter = v.fiter(null, this.field()!.form);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (gridOptions.hasOwnProperty('searchPrm')) {\r\n\t\t\tgridOptions.searchPrm?.columnFilters?.forEach((v: any) => {\r\n\t\t\t\tif (typeof v.fiter === 'function') {\r\n\t\t\t\t\tv.fiter = v.fiter(null, this.field()!.form);\r\n\t\t\t\t\tconsole.log('fiter------',v.fiter)\r\n\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component, input } from '@angular/core';\r\nimport { FormField } from './form-field';\r\nimport { InputTextProps, InputTextComponent } from '../form-type/inputtext.type';\r\nimport { InputNumberProps, InputNumberComponent } from '../form-type/inputnumber.type';\r\nimport { SelectProps, SelectComponent } from '../form-type/select.type';\r\nimport { TreeSelectProps, TreeSelectComponent } from '../form-type/treeselect.type';\r\nimport { DatePickerProps, DatePickerComponent } from '../form-type/datepicker.type';\r\nimport { AutoCompleteProps, AutoCompleteComponent } from '../form-type/autocomplete.type';\r\nimport { MultiSelectProps, MultiSelectComponent } from '../form-type/multiselect.type';\r\nimport { RadioProps, RadioComponent } from '../form-type/radio.type';\r\nimport { TextAreaProps, TextAreaComponent } from '../form-type/textarea.type';\r\nimport { UploadProps, UploadComponent } from '../form-type/upload.type';\r\nimport { ImageProps, ImageComponent } from '../form-type/image.type';\r\nimport { CodeMirrorProps, CodeMirrorComponent } from '../form-type/codemirror.type';\r\nimport { RowSelectorProps, RowSelectorComponent } from '../form-type/rowselector.type';\r\nexport {\r\n\tInputTextProps,\r\n\tInputNumberProps,\r\n\tSelectProps,\r\n\tTreeSelectProps,\r\n\tDatePickerProps,\r\n\tAutoCompleteProps,\r\n\tMultiSelectProps,\r\n\tRadioProps,\r\n\tTextAreaProps,\r\n\tUploadProps,\r\n\tImageProps,\r\n\tCodeMirrorProps,\r\n\tRowSelectorProps,\r\n};\r\n\r\n@Component({\r\n\tselector: 'form-type',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tInputTextComponent,\r\n\t\tInputNumberComponent,\r\n\t\tSelectComponent,\r\n\t\tTreeSelectComponent,\r\n\t\tDatePickerComponent,\r\n\t\tAutoCompleteComponent,\r\n\t\tMultiSelectComponent,\r\n\t\tRadioComponent,\r\n\t\tTextAreaComponent,\r\n\t\tUploadComponent,\r\n\t\tImageComponent,\r\n\t\tCodeMirrorComponent,\r\n\t\tRowSelectorComponent,\r\n\t],\r\n\ttemplate: `\r\n\t\t@switch (field()?.type) {\r\n\t\t\t@case ('inputtext') {\r\n\t\t\t\t<form-inputtext [field]=\"field()!\"></form-inputtext>\r\n\t\t\t}\r\n\t\t\t@case ('inputnumber') {\r\n\t\t\t\t<form-inputnumber [field]=\"field()!\"></form-inputnumber>\r\n\t\t\t}\r\n\t\t\t@case ('select') {\r\n\t\t\t\t<form-select [field]=\"field()!\"></form-select>\r\n\t\t\t}\r\n\t\t\t@case ('treeselect') {\r\n\t\t\t\t<form-treeselect [field]=\"field()!\"></form-treeselect>\r\n\t\t\t}\r\n\t\t\t@case ('datepicker') {\r\n\t\t\t\t<form-datepicker [field]=\"field()!\"></form-datepicker>\r\n\t\t\t}\r\n\t\t\t@case ('autocomplete') {\r\n\t\t\t\t<form-autocomplete [field]=\"field()!\"></form-autocomplete>\r\n\t\t\t}\r\n\t\t\t@case ('multiselect') {\r\n\t\t\t\t<form-multiselect [field]=\"field()!\"></form-multiselect>\r\n\t\t\t}\r\n\t\t\t@case ('radio') {\r\n\t\t\t\t<form-radio [field]=\"field()!\"></form-radio>\r\n\t\t\t}\r\n\t\t\t@case ('textarea') {\r\n\t\t\t\t<form-textarea [field]=\"field()!\"></form-textarea>\r\n\t\t\t}\r\n\t\t\t@case ('upload') {\r\n\t\t\t\t<form-upload [field]=\"field()!\"></form-upload>\r\n\t\t\t}\r\n\t\t\t@case ('image') {\r\n\t\t\t\t<form-image [field]=\"field()!\"></form-image>\r\n\t\t\t}\r\n\t\t\t@case ('codemirror') {\r\n\t\t\t\t<form-codemirror [field]=\"field()!\"></form-codemirror>\r\n\t\t\t}\r\n\t\t\t@case ('rowselector') {\r\n\t\t\t\t<form-rowselector [field]=\"field()!\"></form-rowselector>\r\n\t\t\t}\r\n\t\t}\r\n\t`,\r\n})\r\nexport class FormTypeComponent {\r\n\tfield = input<FormField>();\r\n\tconstructor() {}\r\n\r\n\tngOnInit(): void {}\r\n}\r\n","import { Component, input, ViewChild, ElementRef, ViewChildren, QueryList, effect, WritableSignal } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { LabelDirective } from './label.directive';\r\nimport { ContextMenuComponent } from './context-menu';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\nimport { fieldUtils } from './field-utils';\r\nimport { Observable } from 'rxjs';\r\nimport {\r\n\tFormTypeComponent,\r\n\tInputTextProps,\r\n\tInputNumberProps,\r\n\tSelectProps,\r\n\tTreeSelectProps,\r\n\tDatePickerProps,\r\n\tAutoCompleteProps,\r\n\tMultiSelectProps,\r\n\tRadioProps,\r\n\tTextAreaProps,\r\n\tUploadProps,\r\n\tImageProps,\r\n\tCodeMirrorProps,\r\n} from './form-type';\r\nimport { FieldControl } from './field-control';\r\nimport { FormComponent } from '../form/form.component';\r\n\r\nexport interface FormField {\r\n\tkey?: string;\r\n\ttype?:\r\n\t\t| 'inputtext'\r\n\t\t| 'inputnumber'\r\n\t\t| 'select'\r\n\t\t| 'treeselect'\r\n\t\t| 'datepicker'\r\n\t\t| 'autocomplete'\r\n\t\t| 'multiselect'\r\n\t\t| 'radio'\r\n\t\t| 'textarea'\r\n\t\t| 'upload'\r\n\t\t| 'image'\r\n\t\t| 'codemirror'\r\n\t\t| 'rowselector';\r\n\tdefault?: any;\r\n\tid?: string;\r\n\tname?: string;\r\n\tgroup?: FormField[];\r\n\tgroupClass?: string;\r\n\tclass?: string;\r\n\tinnerClass?: string;\r\n\tfieldControl?: FieldControl;\r\n\tinputTextProps?: InputTextProps;\r\n\tinputNumberProps?: InputNumberProps;\r\n\tselectProps?: SelectProps;\r\n\ttreeSelectProps?: TreeSelectProps;\r\n\tdatePickerProps?: DatePickerProps;\r\n\tautoCompleteProps?: AutoCompleteProps;\r\n\tmultiSelectProps?: MultiSelectProps;\r\n\tradioProps?: RadioProps;\r\n\ttextAreaProps?: TextAreaProps;\r\n\tuploadProps?: UploadProps;\r\n\timageProps?: ImageProps;\r\n\tcodeMirrorProps?: CodeMirrorProps;\r\n\trowSelectorProps?: any;\r\n\thide?: boolean;\r\n\thideExpression?: (model: any, field?: FormField) => boolean;\r\n\thook?: Observable<(field?: FormField) => void>;\r\n\tvalidators?: any;\r\n\tinvalid?: boolean;\r\n\textra?: any;\r\n\tuuid?: string;\r\n\tlabelMinWidth?: WritableSignal<string | undefined>;\r\n\tinteractiveLabel?: boolean;\r\n\tform?: FormComponent;\r\n}\r\n\r\nexport interface FieldProps {\r\n\ttype?: string;\r\n\tlabel?: string;\r\n\ti18nKey?: string;\r\n\tlabelClass?: string;\r\n\tlabelVariant?: 'in' | 'over' | 'on';\r\n\tvariant?: any;\r\n\tclass?: string;\r\n\tname?: string;\r\n\tplaceholder?: string;\r\n\tdisabled?: boolean;\r\n\thidden?: boolean;\r\n\trequired?: boolean;\r\n\tsize?: any;\r\n\tstyleClass?: string;\r\n\tstyle?: any;\r\n\tautofocus?: boolean;\r\n\tmin?: number;\r\n\tmax?: number;\r\n\tinputStyle?: any;\r\n\tinputStyleClass?: string;\r\n\tfluid?: boolean;\r\n\tariaLabel?: string;\r\n\tariaLabelledBy?: string;\r\n\tfocus?: FocusEvent;\r\n\tblur?: FocusEvent;\r\n\tkeyup?: KeyboardEvent;\r\n\tkeydown?: KeyboardEvent;\r\n\tclick?: MouseEvent;\r\n\tinput?: Event;\r\n\tchange?: Event;\r\n\tkeypress?: KeyboardEvent;\r\n\tonModelChange?: AttributeEvent;\r\n\tonHookChange?: AttributeEvent;\r\n}\r\n\r\nexport declare type AttributeEvent = (field: FormField, event?: any) => void;\r\n\r\n@Component({\r\n\tselector: 'form-field',\r\n\tstandalone: true,\r\n\timports: [ReactiveFormsModule, FormTypeComponent, TranslatePipe, LabelDirective, ContextMenuComponent],\r\n\tstyles: `\r\n\t\t.untouched {\r\n\t\t\ttouch-action: none;\r\n\t\t}\r\n\t\t.p-field > label {\r\n\t\t\tmargin: 2px;\r\n\t\t\ttext-overflow: ellipsis;\r\n\t\t\tdisplay: block;\r\n\t\t\tcolor: #1e293b;\r\n\t\t}\r\n\t\t.p-field > label:not(.ng-valid).ng-dirty {\r\n\t\t\tcolor: var(--p-red-500) !important;\r\n\t\t}\r\n\t\t.p-field > label:not(.ng-valid).ng-dirty > .field-required {\r\n\t\t\tcolor: var(--p-red-500) !important;\r\n\t\t}\r\n\t\t.field-required {\r\n\t\t\tpadding-left: 2.5px;\r\n\t\t\tcolor: var(--p-primary-color);\r\n\t\t}\r\n\t\t.p-field > label:not(.ng-valid).ng-dirty > .field-editable {\r\n\t\t\tcolor: var(--p-red-500) !important;\r\n\t\t}\r\n\t\t.field-editable {\r\n\t\t\tpadding-left: 1px;\r\n\t\t\tfont-size: 6px;\r\n\t\t\tcolor: var(--p-primary-color);\r\n\t\t}\r\n\t\t.field-label {\r\n\t\t\tdisplay: inline-block;\r\n\t\t\toverflow-wrap: break-word;\r\n\t\t\tword-break: break-word;\r\n\t\t\twhite-space: normal;\r\n\t\t}\r\n\t`,\r\n\ttemplate: `\r\n\t\t@if (field()?.group) {\r\n\t\t\t<div [class]=\"field()?.groupClass\">\r\n\t\t\t\t@for (fchild of field()!.group; track fchild) {\r\n\t\t\t\t\t@if (!fchild.hide) {\r\n\t\t\t\t\t\t<div [class]=\"fchild.groupClass || fchild.class\">\r\n\t\t\t\t\t\t\t<form-field\r\n\t\t\t\t\t\t\t\tclass=\"w-full\"\r\n\t\t\t\t\t\t\t\t[field]=\"fchild\">\r\n\t\t\t\t\t\t\t</form-field>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t@if (props(field()!).label !== undefined) {\r\n\t\t\t\t<div [class]=\"field()?.innerClass || 'px-4 my-1'\">\r\n\t\t\t\t\t<div class=\"flex flex-row flex-nowrap items-start\">\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass=\"flex-none p-field field-label min-h-8 pt-[1.5px] flex items-center\"\r\n\t\t\t\t\t\t\t[style]=\"getStyle()\">\r\n\t\t\t\t\t\t\t<label\r\n\t\t\t\t\t\t\t\t#label\r\n\t\t\t\t\t\t\t\t[class]=\"labelClass()\"\r\n\t\t\t\t\t\t\t\tfieldLabel\r\n\t\t\t\t\t\t\t\t[field]=\"field()!\"\r\n\t\t\t\t\t\t\t\t[contextMenu]=\"contextMenu\">\r\n\t\t\t\t\t\t\t\t<span\r\n\t\t\t\t\t\t\t\t\tstyle=\"user-select: none\"\r\n\t\t\t\t\t\t\t\t\t#fieldLabelRef\r\n\t\t\t\t\t\t\t\t\t>{{ props(field()!).i18nKey ? (props(field()!).i18nKey! | translate) : props(field()!).label! }}</span\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t@if (props(field()!).required) {\r\n\t\t\t\t\t\t\t\t\t<span class=\"field-required\">*</span>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t@if (!field()?.fieldControl?.disabled) {\r\n\t\t\t\t\t\t\t\t\t<span class=\"iconfont icon-edit-flag field-editable\"></span>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"flex-1 min-h-8 pt-1 w-0 flex flex-row-reverse\">\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\t#fieldTypeRef\r\n\t\t\t\t\t\t\t\tclass=\"w-full\">\r\n\t\t\t\t\t\t\t\t<form-type [field]=\"field()!\"></form-type>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<app-context-menu\r\n\t\t\t\t\t#contextMenu\r\n\t\t\t\t\t[target]=\"label\"\r\n\t\t\t\t\t[field]=\"field()!\"></app-context-menu>\r\n\t\t\t} @else {\r\n\t\t\t\t<div [class]=\"field()?.innerClass || 'px-4 my-1'\">\r\n\t\t\t\t\t<div class=\"flex flex-row flex-nowrap items-start\">\r\n\t\t\t\t\t\t<div class=\"flex-1 min-h-8 pt-1 w-0 flex flex-row-reverse\">\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\t#fieldTypeRef\r\n\t\t\t\t\t\t\t\tclass=\"w-full\">\r\n\t\t\t\t\t\t\t\t<form-type [field]=\"field()!\"></form-type>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t}\r\n\t`,\r\n})\r\nexport class FormFieldComponent {\r\n\t@ViewChildren(FormFieldComponent) fieldComponents?: QueryList<FormFieldComponent>;\r\n\t@ViewChild('fieldLabelRef', { static: false }) fieldLabel?: ElementRef;\r\n\tfield = input<FormField>();\r\n\tprops = fieldUtils.props;\r\n\r\n\tconstructor() {}\r\n\r\n\tngOnInit(): void {}\r\n\r\n\tlabelClass() {\r\n\t\tconst lc = ['untouched '];\r\n\t\tif (this.field()?.fieldControl?.dirty) {\r\n\t\t\tlc.push('ng-dirty');\r\n\t\t}\r\n\t\tif (this.field()?.fieldControl?.valid !== undefined && this.field()?.fieldControl?.valid !== false) {\r\n\t\t\tlc.push('ng-valid');\r\n\t\t}\r\n\t\treturn lc.join(' ');\r\n\t}\r\n\tgetStyle() {\r\n\t\treturn { width: this.field()!.labelMinWidth!(), maxWidth: '40%' };\r\n\t}\r\n\tgetFieldComponents(): QueryList<FormFieldComponent> | undefined {\r\n\t\treturn this.fieldComponents;\r\n\t}\r\n\r\n\tgetFieldLabel() {\r\n\t\treturn this.fieldLabel;\r\n\t}\r\n}\r\n","import {\r\n\tComponent,\r\n\teffect,\r\n\tinput,\r\n\tcomputed,\r\n\tViewChildren,\r\n\tQueryList,\r\n\tElementRef,\r\n\tChangeDetectorRef,\r\n\tinject,\r\n\tHostListener,\r\n\tuntracked,\r\n\tsignal,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, Validators, ReactiveFormsModule, FormSubmittedEvent } from '@angular/forms';\r\nimport { FieldControl } from '../form-field/field-control';\r\nimport { FormField, FormFieldComponent } from '../form-field/form-field';\r\nimport { DatePipe } from '@angular/common';\r\nimport { I18nService } from '../../service/i18n.service';\r\nimport { fieldUtils } from '../form-field/field-utils';\r\nimport { Upsert } from '../../am/am.component';\r\nimport { generateUniqueId } from '../../share/utils';\r\nimport { Router } from '@angular/router';\r\nimport { isObservable, Observable, shareReplay } from 'rxjs';\r\nimport { ActionService } from '../../service/action.service';\r\nexport interface FormOptions {\r\n\tfields?: FormField[];\r\n\tform?: FormGroup;\r\n\tmainField?: string;\r\n\tlabelWidth?: string;\r\n\tinteractiveLabel?: boolean;\r\n\textra?: any;\r\n\tmodelName?: string;\r\n\ttype?: string;\r\n\tfk?: string;\r\n}\r\nexport interface ExternalData {\r\n\tkey?: string;\r\n\tvalue?: any;\r\n\tlabel?: string;\r\n}\r\n\r\n@Component({\r\n\tselector: 'custom-form',\r\n\tstandalone: true,\r\n\timports: [CommonModule, ReactiveFormsModule, FormFieldComponent],\r\n\tproviders: [DatePipe],\r\n\ttemplateUrl: './form.component.html',\r\n\tstyleUrl: './form.component.scss',\r\n})\r\nexport class FormComponent {\r\n\t@ViewChildren(FormFieldComponent) fieldComponents?: QueryList<FormFieldComponent>;\r\n\trouter: Router = inject(Router);\r\n\tisNew: boolean = false;\r\n\toptions = input<FormOptions>({});\r\n\tfields = computed(() => {\r\n\t\tuntracked(() => {\r\n\t\t\tthis.initForm();\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.reCalcLabelSize();\r\n\t\t\t});\r\n\t\t});\r\n\t\treturn this.options().fields;\r\n\t});\r\n\r\n\ti18nService = inject(I18nService);\r\n\tmodel = input<any>();\r\n\tupsert = input<Upsert>();\r\n\trawModel: any = {};\r\n\tchangedModel: any = {};\r\n\tfieldList!: FormField[];\r\n\thookObservers: Function[] = [];\r\n\tlabelMinWidth = signal<string | undefined>(undefined);\r\n\tisMain: boolean = true;\r\n\tsubsert: any;\r\n\textra: any = {};\r\n\r\n\tactions = inject(ActionService);\r\n\t@HostListener('window:resize')\r\n\tonResize() {\r\n\t\tthis.reCalcLabelSize();\r\n\t}\r\n\r\n\tconstructor(\r\n\t\tprivate cdr: ChangeDetectorRef,\r\n\t\tprivate datePipe: DatePipe,\r\n\t) {\r\n\t\tthis.router.url.split('/').pop() == 'new' && (this.isNew = true);\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tif (!this.model()) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (this.isNew) {\r\n\t\t\t\t\tthis.fieldList.forEach((field) => {\r\n\t\t\t\t\t\tif (!field.default) return;\r\n\t\t\t\t\t\tif (this.model()[field.key!] !== undefined) return;\r\n\t\t\t\t\t\tuntracked(() => {\r\n\t\t\t\t\t\t\tthis.handleValueChange(fieldUtils.dafaultValueHandler(field, field.default, this.datePipe), field);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tthis.rawModel = fieldUtils.preloadLog({ ...this.model() }, this.fieldList, this.datePipe);\r\n\t\t\t\tthis.changedModel = {};\r\n\t\t\t\tuntracked(() => this.triggerHook());\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tlet modelName = this.options().modelName || '';\r\n\t\t\t\tconsole.log('modelName', this.options());\r\n\t\t\t\tif (modelName != '') {\r\n\t\t\t\t\tthis.isMain = !this.upsert()?.subsert?.find((v: any) => v.subModelName === modelName);\r\n\t\t\t\t\tif (!this.isMain) {\r\n\t\t\t\t\t\tthis.subsert = {\r\n\t\t\t\t\t\t\tsubModelName: modelName,\r\n\t\t\t\t\t\t\tfk: this.options().fk,\r\n\t\t\t\t\t\t\tsubData: [],\r\n\t\t\t\t\t\t\tmaptmp: new Map(),\r\n\t\t\t\t\t\t\tlogtmp: new Map(),\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tthis.upsert()?.subsert?.push(this.subsert);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t}\r\n\r\n\tngAfterViewInit(): void {\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.reCalcLabelSize();\r\n\t\t});\r\n\t\tthis.i18nService.change.subscribe((res) => {\r\n\t\t\tthis.reCalcLabelSize();\r\n\t\t});\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.hookObservers.forEach((unsubscribe) => unsubscribe());\r\n\t}\r\n\r\n\tinitForm() {\r\n\t\tif (!this.options().extra) {\r\n\t\t\tthis.options().extra = {};\r\n\t\t}\r\n\t\tif (!this.options().form) {\r\n\t\t\tthis.options().form = new FormGroup({});\r\n\t\t}\r\n\t\tthis.fieldList = [];\r\n\t\t//@ts-ignore\r\n\t\tconst isI18n = window.appIsI18n;\r\n\t\tthis.parseFields(this.options().fields || []);\r\n\t\tthis.fieldList.forEach((field, index) => {\r\n\t\t\tfieldUtils.fieldHandler(field);\r\n\t\t\tfield.uuid = `${generateUniqueId()}${index}`;\r\n\t\t\tfield.labelMinWidth = this.labelMinWidth;\r\n\t\t\tfield.interactiveLabel = this.options().interactiveLabel ?? true;\r\n\t\t\tif (isI18n && (!fieldUtils.props(field).i18nKey || fieldUtils.props(field).i18nKey == '')) {\r\n\t\t\t\tfieldUtils.props(field).i18nKey = `tables.${this.options().modelName}.${field.key}`;\r\n\t\t\t}\r\n\t\t\tfield.form = this;\r\n\t\t\tif (isObservable(field.hook)) {\r\n\t\t\t\tthis.uniqueHook(field, field.hook);\r\n\t\t\t}\r\n\t\t\tthis.handleFieldControl(field);\r\n\t\t});\r\n\t}\r\n\r\n\tgetField(key: string) {\r\n\t\treturn this.fieldList.find((field) => field.key === key);\r\n\t}\r\n\r\n\tparseFields(fields: FormField[]) {\r\n\t\tfields.forEach((field) => {\r\n\t\t\tif (field.group) {\r\n\t\t\t\tthis.parseFields(field.group);\r\n\t\t\t} else {\r\n\t\t\t\tthis.fieldList.push(field);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\thandleFieldControl(field: FormField) {\r\n\t\tconst fieldControl = fieldUtils.props(field)?.required\r\n\t\t\t? new FieldControl(null, field.validators ? field.validators : Validators.required)\r\n\t\t\t: new FieldControl(null);\r\n\t\tthis.options().form?.addControl(field.key || '', fieldControl);\r\n\t\tfield.fieldControl = fieldControl;\r\n\t\tfield.fieldControl?.valueChanges.subscribe((value) => {\r\n\t\t\tconst targetValue = fieldUtils.fromFieldValue(field, value, this.datePipe);\r\n\t\t\tif (fieldUtils.isFakedChange(targetValue, this.model()[field.key!], field)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (fieldUtils.props(field)?.onModelChange && typeof fieldUtils.props(field)?.onModelChange === 'function') {\r\n\t\t\t\tfieldUtils.props(field)?.onModelChange!(field, { value });\r\n\t\t\t}\r\n\t\t\tthis.handleValueChange(targetValue, field);\r\n\t\t});\r\n\t}\r\n\r\n\thandleValueChange(value: any, field: FormField) {\r\n\t\tthis.model()[field.key!] = value;\r\n\t\tthis.changedModel[field.key!] = { name: fieldUtils.label(field, this.i18nService), value: value, type: field.type };\r\n\t\tif (this.isMain) {\r\n\t\t\tthis.handleUpsert(field.key!, value, true);\r\n\t\t} else {\r\n\t\t\tthis.handleSubsert(field.key!, value, field);\r\n\t\t}\r\n\t\tconsole.log('-----handleValueChange', this.upsert());\r\n\t\tthis.handleHideExpression();\r\n\t\tthis.actions.saveSignal.set(true);\r\n\t}\r\n\r\n\thandleUpsert(key: string, value: any, isLog?: boolean) {\r\n\t\tif (this.isNew) {\r\n\t\t\tthis.upsert()!.addData![key] = value;\r\n\t\t} else {\r\n\t\t\tthis.upsert()!.updData![key] = value;\r\n\t\t}\r\n\t\tif (!isLog) return;\r\n\t\tthis.upsert()!.log!.content = fieldUtils.transLog(\r\n\t\t\tthis.rawModel,\r\n\t\t\tthis.changedModel,\r\n\t\t\tthis.model()[this.options().mainField!],\r\n\t\t\tthis.isNew,\r\n\t\t\tthis.i18nService,\r\n\t\t);\r\n\t}\r\n\r\n\thandleSubsert(key: string, value: any, field: FormField) {\r\n\t\tconst changedModel = Object.fromEntries(Object.entries(this.changedModel).map(([key, value]) => [key, (value as any).value]));\r\n\t\tthis.subsert.logtmp.set(0, changedModel);\r\n\t\tthis.subsert.subData[0] = changedModel;\r\n\t\tthis.subsert.maptmp.set(key, {\r\n\t\t\tid: this.model()?.id ?? 0,\r\n\t\t\toldValue: this.rawModel[key],\r\n\t\t\tnewValue: value,\r\n\t\t\tlabel: fieldUtils.label(field, this.i18nService),\r\n\t\t});\r\n\t}\r\n\r\n\thandleHideExpression() {\r\n\t\tthis.fieldList.forEach((field) => {\r\n\t\t\tif (field.hideExpression) {\r\n\t\t\t\tfield.hide = field.hideExpression(this.model(), field);\r\n\t\t\t\tif (field.hide) {\r\n\t\t\t\t\tfield.fieldControl?.clearValidators();\r\n\t\t\t\t\tfield.fieldControl?.updateValueAndValidity({ emitEvent: false });\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfield.fieldControl?.setValidators(\r\n\t\t\t\t\t\tfieldUtils.props(field)?.required ? (field?.validators ? field?.validators : Validators.required) : null,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tvalidate() {\r\n\t\tfor (let key in this.options().form?.controls) {\r\n\t\t\t!this.options().form?.controls[key]['disabled'] && this.options().form?.controls[key].markAsDirty();\r\n\t\t}\r\n\t\treturn this.options().form?.disabled ? true : this.options().form?.valid;\r\n\t}\r\n\r\n\tuniqueHook(field: FormField, hook: Observable<(field?: FormField) => void>) {\r\n\t\tfield.hook = hook.pipe(shareReplay(1));\r\n\t}\r\n\r\n\ttriggerHook() {\r\n\t\tthis.fieldList.forEach((field) => {\r\n\t\t\tfieldUtils.triggerHookAndSetValue(\r\n\t\t\t\tfield,\r\n\t\t\t\tthis.model()?.[field.key!],\r\n\t\t\t\tfalse,\r\n\t\t\t\ttrue,\r\n\t\t\t\tthis.hookObservers,\r\n\t\t\t\t() => {\r\n\t\t\t\t\tthis.handleHideExpression();\r\n\t\t\t\t},\r\n\t\t\t\tthis.datePipe,\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\treCalcLabelSize() {\r\n\t\tif (this.options().labelWidth) {\r\n\t\t\tthis.labelMinWidth.set(this.options().labelWidth);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.labelMinWidth.set(undefined);\r\n\t\tthis.cdr.detectChanges();\r\n\t\tthis.handleFieldLabels();\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\thandleFieldLabels() {\r\n\t\tconst fieldLabels: ElementRef[] = [];\r\n\t\tthis.getFieldLabels(this.fieldComponents, fieldLabels);\r\n\t\tconst offsetWidths = fieldLabels.map((fieldLabel) => fieldLabel.nativeElement.offsetWidth);\r\n\t\tthis.labelMinWidth.set(Math.max(...offsetWidths) + 24 + 'px');\r\n\t}\r\n\r\n\tgetFieldLabels(fieldComponents: QueryList<FormFieldComponent> | undefined, fieldLabels: ElementRef[]) {\r\n\t\tif (!fieldComponents) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tfieldComponents?.forEach((component) => {\r\n\t\t\tconst fieldLabel = component.getFieldLabel();\r\n\t\t\tif (fieldLabel) {\r\n\t\t\t\tfieldLabels.push(fieldLabel);\r\n\t\t\t}\r\n\t\t\tthis.getFieldLabels(component.getFieldComponents(), fieldLabels);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * 触发模型变动,针对表单字段数据\r\n\t * @param model 需要变动的数据\r\n\t * @param emitEvent 是否触发事件\r\n\t * @param detectModelChange 是否触发detectModelChange\r\n\t */\r\n\ttriggerModelEffect(model: any, emitEvent?: boolean, emitHook?: boolean) {\r\n\t\tObject.keys(model).forEach((key) => {\r\n\t\t\tconst field = this.getField(key)!;\r\n\t\t\tif (!field) return;\r\n\t\t\tfieldUtils.triggerHookAndSetValue(\r\n\t\t\t\tfield,\r\n\t\t\t\tmodel[key],\r\n\t\t\t\temitEvent ?? true,\r\n\t\t\t\temitHook ?? true,\r\n\t\t\t\tthis.hookObservers,\r\n\t\t\t\t() => {\r\n\t\t\t\t\tthis.handleHideExpression();\r\n\t\t\t\t},\r\n\t\t\t\tthis.datePipe,\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * 触发数据变动,针对非表单字段数据\r\n\t * @param dataList 外部数据列表\r\n\t */\r\n\ttriggerDataEffect(dataList: ExternalData[]) {\r\n\t\tdataList.forEach((data) => {\r\n\t\t\tthis.model()[data.key!] = data.value;\r\n\t\t\tif (data.label) {\r\n\t\t\t\tthis.changedModel[data.key!] = { name: data.label, value: data.value, type: 'inputtext' };\r\n\t\t\t\tthis.handleUpsert(data.key!, data.value, true);\r\n\t\t\t} else {\r\n\t\t\t\tthis.handleUpsert(data.key!, data.value);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * 触发日志变动,针对非表单字段数据\r\n\t * @param dataList 外部数据列表\r\n\t */\r\n\ttriggerLogEffect(dataList: ExternalData[]) {\r\n\t\tdataList.forEach((data) => {\r\n\t\t\tif (data.label) {\r\n\t\t\t\tthis.changedModel[data.key!] = { name: data.label, value: data.value, type: 'inputtext' };\r\n\t\t\t\tthis.handleUpsert(data.key!, data.value, true);\r\n\t\t\t} else {\r\n\t\t\t\tthis.handleUpsert(data.key!, data.value);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * 触发字段禁用,针对表单字段\r\n\t * @param keys 字段key列表\r\n\t */\r\n\ttriggerDisabledEffect(keys: string[]) {\r\n\t\tkeys?.forEach((key) => {\r\n\t\t\tthis.setFieldDisabled(key);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * 动态设置字段禁用,禁用前清除字段dirty标记\r\n\t * @param key 字段key\r\n\t */\r\n\tsetFieldDisabled(key: string) {\r\n\t\tthis.getField(key)?.fieldControl?.markAsPristine({ emitEvent: false });\r\n\t\tthis.getField(key)?.fieldControl?.disable({ emitEvent: false });\r\n\t}\r\n\r\n\t/**\r\n\t * 表单提交后的收尾处理,一般在提交接口的回调函数执行\r\n\t */\r\n\tfinalize() {\r\n\t\tthis.fieldList.forEach((field) => {\r\n\t\t\tif (['image', 'upload'].includes(field.type!)) {\r\n\t\t\t\tfield.fieldControl?.afterSubmit();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","@for (field of fields(); track field) {\r\n\t<form-field\r\n\t\tclass=\"w-full\"\r\n\t\t[field]=\"field\">\r\n\t</form-field>\r\n}\r\n","import { GridOptions } from '../grid/grid/grid.component';\r\nimport { Search } from '../am/am.component';\r\nimport { Button } from 'primeng/button';\r\nexport interface HrefBtnList extends Partial<Button> {\r\n\turl?: string;\r\n\ti18nKey?: string;\r\n\tidKey?: string;\r\n}\r\n\r\nexport interface PermissionBtn extends Partial<Button> {\r\n\tauth: number;\r\n\tonClick?: any;\r\n\tbtnDisabled?: Function;\r\n\tbtnHidden?: Function;\r\n\ti18nKey?: string;\r\n}\r\n\r\nexport interface GridList {\r\n\tgridOptions: GridOptions;\r\n\tsubTable: string;\r\n\tsubTableSource?: 'handle' | 'select';\r\n\tselectOptions?: GridOptions;\r\n\tsubDataKey: string;\r\n\ttitle?: string;\r\n\ti18nKey?: string;\r\n\tselectDataCb?: Function;\r\n\tsearchPrm?: Search;\r\n\tdeleteFunc?: Function;\r\n\tselectData?: any[];\r\n\tuniqueField?: string;\r\n\t[propName:string]:any,\r\n\ttype?:string\r\n}\r\n\r\nexport const formTypeToProps: any = {\r\n\tinputtext: 'inputTextProps',\r\n\tinputnumber: 'inputNumberProps',\r\n\tselect: 'selectProps',\r\n\ttreeselect: 'treeSelectProps',\r\n\tdatepicker: 'datePickerProps',\r\n\tautocomplete: 'autoCompleteProps',\r\n\tmultiselect: 'multiSelectProps',\r\n\tradio: 'radioProps',\r\n\ttextarea: 'textAreaProps',\r\n\tupload: 'uploadProps',\r\n\timage: 'imageProps',\r\n\tcodemirror: 'codeMirrorProps',\r\n\trowselector: 'rowSelectorProps',\r\n};\r\n","import { AmComponent } from './../am/am.component';\r\nimport {\r\n\tComponent,\r\n\tcomputed,\r\n\tContentChild,\r\n\teffect,\r\n\tHostListener,\r\n\tinject,\r\n\tinput,\r\n\tOnInit,\r\n\toutput,\r\n\tOutput,\r\n\tsignal,\r\n\tTemplateRef,\r\n\tViewChild,\r\n} from '@angular/core';\r\nimport { UserHistoryService, HistoryItem, ActionService } from '../../public-api';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { Router } from '@angular/router';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\nimport { Popover } from 'primeng/popover';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TieredMenu } from 'primeng/tieredmenu';\r\n@Component({\r\n\tselector: 'app-crumb-action',\r\n\tstandalone: true,\r\n\timports: [ButtonModule, TranslatePipe, CommonModule, TieredMenu],\r\n\ttemplateUrl: './crumb-action.component.html',\r\n\tstyleUrl: './crumb-action.component.scss',\r\n})\r\nexport class CrumbActionComponent extends AmComponent implements OnInit {\r\n\tuserHistoryService = inject(UserHistoryService);\r\n\taction = inject(ActionService);\r\n\tcrumbList = computed(() => {\r\n\t\tlet crumb = JSON.parse(JSON.stringify(this.userHistoryService.historyList()));\r\n\t\t// console.log('crumb',crumb)\r\n\t\t// @ts-ignore\r\n\t\tconst isI18n = window.appIsI18n;\r\n\t\tif (!isI18n) {\r\n\t\t\tcrumb.forEach((item: any) => {\r\n\t\t\t\titem.i18nKey = '';\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn crumb.map((v: any) => v);\r\n\t});\r\n\tcrumbTitle = signal<any>({});\r\n\t// router = inject(Router);\r\n\tisNew = false;\r\n\tisShowCog = input<boolean>(false);\r\n\tcrumbFront: HistoryItem[] = [];\r\n\tcrumbEnd: HistoryItem[] = [];\r\n\t@ViewChild('op') op!: Popover;\r\n\t@ViewChild('listOp') listOp!: Popover;\r\n\t@ViewChild('actOp') actOp!: Popover;\r\n\tsaveEvent = output();\r\n\t// 新建按钮\r\n\taddVisible = input<boolean | undefined>();\r\n\timportVisible = input<boolean>(true);\r\n\texportVisible = input<boolean>(true);\r\n\tnewUrl = input<string>('');\r\n\tconfigNewPath = input<string>('');\r\n\tonExport = input<Function>();\r\n\t// 新建按钮outline\r\n\toutlined = input<boolean>(false);\r\n\t// 是否是列表页面\r\n\tisList = input<boolean>(false);\r\n\t// 权限等级\r\n\tauthLevel = input<number>(-1);\r\n\tcancelEvent = output();\r\n\tactionList = input<any>([]);\r\n\tactionEvent = output();\r\n\tdata = input<any>();\r\n\tshowAct = false;\r\n\tmenus = input<any[]>([]);\r\n\tdisplayOpItems = computed(() => {\r\n\t\tconst listOpItems = [...this.menus()];\r\n\t\tif (this.importVisible()) {\r\n\t\t\tlistOpItems.push({\r\n\t\t\t\tlabel: 'app.tableAcImport',\r\n\t\t\t\ttype: 'import',\r\n\t\t\t\ticon: 'pi pi-upload',\r\n\t\t\t\tauth: 3,\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (this.exportVisible()) {\r\n\t\t\tlistOpItems.push({\r\n\t\t\t\tlabel: 'app.tableAcExport',\r\n\t\t\t\ttype: 'export',\r\n\t\t\t\ticon: 'pi pi-download',\r\n\t\t\t\tauth: 2,\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn listOpItems.filter((v) => this.authLevel() >= v.auth);\r\n\t});\r\n\t@ContentChild('newBtn', { descendants: false }) newBtnTemplateRef: TemplateRef<any> | undefined;\r\n\tisSave = computed(() => {\r\n\t\treturn this.action.saveSignal();\r\n\t});\r\n\tloading = computed(() => {\r\n\t\treturn this.action.loading();\r\n\t});\r\n\tsaveBtnDisable = input<boolean>(false);\r\n\tcurrentPageUrl = '';\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tlet last = this.crumbList().pop();\r\n\t\t\t\tif (last?.url) {\r\n\t\t\t\t\tthis.isNew = last.url?.indexOf('new') > -1 ? true : false;\r\n\t\t\t\t\tthis.currentPageUrl = last.url;\r\n\t\t\t\t}\r\n\t\t\t\tif (last?.title) {\r\n\t\t\t\t\tthis.crumbTitle.set(last);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst length = this.crumbList().length;\r\n\t\t\t\tif (length > 2) {\r\n\t\t\t\t\tthis.crumbFront = this.crumbList()\r\n\t\t\t\t\t\t.map((v: any) => {\r\n\t\t\t\t\t\t\tv.label = v.title;\r\n\t\t\t\t\t\t\treturn v;\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.filter((v: HistoryItem, index: number) => index <= length - 1 - 2);\r\n\t\t\t\t\tthis.crumbEnd = [this.crumbList()[length - 2], this.crumbList()[length - 1]];\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t}\r\n\t@HostListener('window:resize', ['$event'])\r\n\tresize(event: any) {\r\n\t\tlet windowWidth = (event.target as Window).innerWidth;\r\n\t\tif (windowWidth < 768) {\r\n\t\t\tthis.showAct = true;\r\n\t\t} else {\r\n\t\t\tthis.showAct = false;\r\n\t\t}\r\n\t}\r\n\tngOnInit(): void {\r\n\t\tthis.showAct = window.innerWidth < 768 ? true : false;\r\n\t}\r\n\r\n\tgoNew() {\r\n\t\tif (!this.configNewPath()) {\r\n\t\t\tif (this.newUrl() == '') return;\r\n\t\t\tthis.router.navigate([this.newUrl()]).then((res) => {\r\n\t\t\t\tthis.userHistoryService.setLastTitle('New');\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.router.navigate([this.configNewPath()]).then((res) => {\r\n\t\t\t\tthis.userHistoryService.setLastTitle('New');\r\n\t\t\t\tthis.userHistoryService.filterUrl(this.currentPageUrl);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcloseNew() {\r\n\t\tlet length = this.crumbList().length;\r\n\t\tlet last = this.crumbList()[length - 1];\r\n\t\tif (last) {\r\n\t\t\tthis.router.navigate([last.url]);\r\n\t\t} else {\r\n\t\t\tthis.cancelEvent.emit();\r\n\t\t}\r\n\t}\r\n\r\n\thandleSave() {\r\n\t\tthis.saveEvent.emit();\r\n\t}\r\n\r\n\tback(item: any) {\r\n\t\tthis.router.navigate([item.url]);\r\n\t}\r\n\r\n\ttoggle(event: any) {\r\n\t\tthis.op.toggle(event);\r\n\t}\r\n\r\n\ttoggleListOp(event: any) {\r\n\t\tif (!this.isList()) return;\r\n\t\tthis.listOp && this.listOp.toggle(event);\r\n\t}\r\n\r\n\tlistAct(item: any) {\r\n\t\tif (item.type === 'export') {\r\n\t\t\tif(this.onExport() && typeof this.onExport() == 'function'){\r\n\t\t\t\tthis.onExport && this.onExport()!();\r\n\t\t\t} else {\r\n\t\t\t\tthis.action.setAction({ type: item.type });\r\n\t\t\t}\r\n\t\t} else if (item.type === 'import') {\r\n\t\t\tthis.action.setAction({ type: item.type });\r\n\t\t} else {\r\n\t\t\tif (item.hasOwnProperty('onClick') && typeof item.onClick === 'function') {\r\n\t\t\t\titem.onClick(item);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tactEvent(item: any) {\r\n\t\tthis.actionEvent.emit(item);\r\n\t}\r\n\r\n\ttoggleAct(event: any) {\r\n\t\tif (this.isList()) return;\r\n\t\tthis.actOp && this.actOp.toggle(event);\r\n\t}\r\n\tsetSaveClass() {\r\n\t\treturn this.isSave() ? 'danger' : 'secondary';\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.action.saveSignal.set(false);\r\n\t}\r\n}\r\n","<div class=\"flex items-center gap-1\">\r\n <div class=\"left-btn flex gap-1\">\r\n <!-- TODO 权限数据接入 -->\r\n @if(!newBtnTemplateRef){\r\n @if(this.authLevel() > 2 && addVisible()){\r\n <p-button (click)=\"goNew()\" [outlined]=\"outlined()\">{{'app.create' | translate}}</p-button>\r\n }\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"newBtnTemplateRef\"></ng-container>\r\n }\r\n </div>\r\n @if(crumbList().length > 0){\r\n <div class=\"flex flex-col leading-none\">\r\n <div class=\"hidden md:flex\">\r\n @if(crumbList().length <= 2){\r\n @for(fchild of crumbList(); track fchild.url){\r\n <div class=\"crumb-title cursor-pointer text-[12px] max-w-[120px] overflow-hidden whitespace-nowrap text-ellipsis\" (click)=\"back(fchild)\">\r\n @if(fchild.i18nKey!= ''){\r\n {{ fchild!.i18nKey | translate}}\r\n } @else {\r\n {{fchild.title}}\r\n }\r\n </div>\r\n }\r\n } @else {\r\n <div class=\"flex\">\r\n <div class=\"crumb-title cursor-pointer select-crumb\">\r\n <div class=\"w-[17px] h-[17px] flex items-center font-bold text-[13px]\" (click)=\"toggle($event)\">\r\n ...\r\n </div>\r\n <p-tieredmenu #op [model]=\"crumbFront\" [popup]=\"true\" [style]=\"{position:'absolute'}\">\r\n <ng-template #item let-item let-hasSubmenu=\"hasSubmenu\">\r\n <a pRipple class=\"flex items-center p-tieredmenu-item-link\">\r\n <span class=\"ml-2 w-full\" (click)=\"back(item)\">\r\n @if(item.i18nKey!= ''){\r\n {{ item!.i18nKey | translate}}\r\n } @else {\r\n {{item.title}}\r\n }\r\n </span>\r\n </a>\r\n </ng-template>\r\n </p-tieredmenu>\r\n </div>\r\n @for(item of crumbEnd;track item.url){\r\n <div class=\"crumb-title cursor-pointer text-[12px] max-w-[120px] overflow-hidden whitespace-nowrap text-ellipsis\" (click)=\"back(item)\">\r\n @if(item.i18nKey!= ''){\r\n {{ item!.i18nKey | translate}}\r\n } @else {\r\n {{item.title}}\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n \r\n </div>\r\n <div class=\"min-w-0 text-text-color text-[12px] title-action\">\r\n <span\r\n [title]=\"isNew? 'New':crumbTitle().title\" \r\n class=\"hidden md:inline-block max-w-[150px] overflow-hidden text-ellipsis whitespace-nowrap\">\r\n {{isNew? 'New':crumbTitle().title}}\r\n </span>\r\n @if(isShowCog()){\r\n @if(isList()){\r\n <p-button variant=\"text\" severity=\"secondary\" icon=\"pi pi-cog\" aria-label=\"操作\" (onClick)=\"toggleListOp($event)\"/>\r\n @if(displayOpItems().length > 0){\r\n <p-tieredmenu #listOp [model]=\"displayOpItems()\" [popup]=\"true\" [style]=\"{position:'absolute'}\">\r\n <ng-template #item let-item let-hasSubmenu=\"hasSubmenu\">\r\n <a pRipple class=\"flex items-center p-tieredmenu-item-link\" (click)=\"listAct(item)\">\r\n <span [class]=\"item.icon\" class=\"p-tieredmenu-item-icon\"></span>\r\n <span class=\"ml-2\">{{ item.label | translate }}</span>\r\n <span *ngIf=\"item.shortcut\" class=\"ml-auto border border-surface rounded bg-emphasis text-muted-color text-xs p-1\">\r\n {{ item.shortcut }}\r\n </span>\r\n <i *ngIf=\"hasSubmenu\" class=\"pi pi-angle-right ml-auto\"></i>\r\n </a>\r\n </ng-template>\r\n </p-tieredmenu>\r\n }\r\n } @else {\r\n <p-button variant=\"text\" severity=\"secondary\" icon=\"pi pi-cog\" aria-label=\"操作\" (onClick)=\"toggleAct($event)\"/>\r\n @if(actionList().length > 0 && showAct){\r\n <p-tieredmenu #actOp [model]=\"actionList()\" [popup]=\"true\" [style]=\"{position:'absolute'}\">\r\n <ng-template #item let-item let-hasSubmenu=\"hasSubmenu\">\r\n <a pRipple \r\n class=\"flex items-center p-tieredmenu-item-link\"\r\n [class]=\"(item.auth || 0) > (authLevel() || 0) || !!item.btnHidden?.(data()) ? 'hidden' : 'block'\" \r\n (click)=\"actEvent(item)\">\r\n <span class=\"ml-2\">{{item.i18nKey ? (item.i18nKey | translate) : item.label}}</span>\r\n <span *ngIf=\"item.shortcut\" class=\"ml-auto border border-surface rounded bg-emphasis text-muted-color text-xs p-1\">\r\n {{ item.shortcut }}\r\n </span>\r\n <i *ngIf=\"hasSubmenu\" class=\"pi pi-angle-right ml-auto\"></i>\r\n </a>\r\n </ng-template>\r\n </p-tieredmenu>\r\n }\r\n }\r\n }\r\n @if(this.authLevel() > 2 && !isList()){\r\n <p-button \r\n variant=\"text\" \r\n [severity]=\"setSaveClass()\" \r\n icon=\"pi pi-cloud-upload\" \r\n [loading]=\"loading()\"\r\n aria-label=\"手动保存\"\r\n [disabled]=\"saveBtnDisable()\" \r\n class=\"p-0\"\r\n (click)=\"handleSave()\">\r\n </p-button>\r\n }\r\n <!-- @if(crumbList().length >= 2){ -->\r\n <p-button \r\n variant=\"text\" \r\n severity=\"secondary\" \r\n icon=\"pi pi-times\" \r\n aria-label=\"关闭\" \r\n class=\"p-0\"\r\n (click)=\"closeNew()\">\r\n </p-button>\r\n <!-- } -->\r\n </div>\r\n </div>\r\n } @else {\r\n <!-- 初始节点 -->\r\n <div class=\"min-w-0 flex items-center text-[14px] text-text-color\">\r\n <span \r\n [title]=\"crumbTitle().i18nKey != '' ? (crumbTitle().i18nKey | translate) : crumbTitle().title\"\r\n class=\"hidden md:inline-block max-w-[120px] overflow-hidden whitespace-nowrap text-ellipsis\">\r\n @if(crumbTitle().i18nKey != ''){\r\n {{crumbTitle().i18nKey | translate}}\r\n } @else {\r\n {{crumbTitle().title}}\r\n }\r\n </span>\r\n @if(isShowCog()){\r\n <p-button \r\n variant=\"text\"\r\n severity=\"secondary\" \r\n icon=\"pi pi-cog\" \r\n aria-label=\"操作\" \r\n (onClick)=\"toggleListOp($event)\"/>\r\n @if(displayOpItems().length > 0){\r\n <p-tieredmenu #listOp [model]=\"displayOpItems()\" [popup]=\"true\" [style]=\"{position:'absolute'}\">\r\n <ng-template #item let-item let-hasSubmenu=\"hasSubmenu\">\r\n <a pRipple class=\"flex items-center p-tieredmenu-item-link\" (click)=\"listAct(item)\">\r\n <span [class]=\"item.icon\" class=\"p-tieredmenu-item-icon\"></span>\r\n <span class=\"ml-2\">{{ item.label | translate }}</span>\r\n <span *ngIf=\"item.shortcut\" class=\"ml-auto border border-surface rounded bg-emphasis text-muted-color text-xs p-1\">\r\n {{ item.shortcut }}\r\n </span>\r\n <i *ngIf=\"hasSubmenu\" class=\"pi pi-angle-right ml-auto\"></i>\r\n </a>\r\n </ng-template>\r\n </p-tieredmenu>\r\n }\r\n \r\n }\r\n @if(!isList()){\r\n <p-button \r\n variant=\"text\" \r\n severity=\"secondary\" \r\n icon=\"pi pi-cloud-upload\" \r\n aria-label=\"手动保存\"\r\n [disabled]=\"saveBtnDisable()\" \r\n class=\"p-0\"\r\n (click)=\"handleSave()\">\r\n </p-button>\r\n <p-button \r\n variant=\"text\" \r\n severity=\"secondary\" \r\n icon=\"pi pi-times\" \r\n aria-label=\"关闭\" \r\n class=\"p-0\"\r\n (click)=\"closeNew()\">\r\n </p-button>\r\n }\r\n </div>\r\n }\r\n \r\n</div>","import { Component, effect } from '@angular/core';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { ActionService } from '../../service/action.service';\r\n\r\nexport interface Page {\r\n\tstartRow?: number;\r\n\tendRow?: number;\r\n\ttotal?: number;\r\n\tmode?: 'server' | 'client';\r\n}\r\n\r\n@Component({\r\n\tselector: 'custom-pager',\r\n\tstandalone: true,\r\n\timports: [ButtonModule],\r\n\ttemplateUrl: './pager.component.html',\r\n\tstyleUrl: './pager.component.scss',\r\n})\r\nexport class PagerComponent {\r\n\tpage: Page | undefined;\r\n\r\n\tconstructor(private action: ActionService) {\r\n\t\teffect(() => {\r\n\t\t\tthis.page = this.action.getPage();\r\n\t\t});\r\n\t}\r\n}\r\n","@if (page?.total) {\r\n\t@if (page?.mode == 'client') {\r\n\t\t<div class=\"page-container flex p-2 items-center\">\r\n\t\t\t<span class=\"mr-2\">共 {{ page ? page.total : 0 }} 条</span>\r\n\t\t</div>\r\n\t} @else {\r\n\t\t<div class=\"page-container flex p-2 items-center\">\r\n\t\t\t<span>{{ page ? (page.startRow || 0) + 1 : 0 }}</span>\r\n\t\t\t<span> - </span>\r\n\t\t\t<span>{{ page ? page.endRow : 0 }}</span>\r\n\t\t\t<span class=\"px-1\"> / </span>\r\n\t\t\t<span class=\"mr-2\">{{ page ? page.total : 0 }}</span>\r\n\t\t</div>\r\n\t}\r\n}\r\n","import { Component, input, effect, inject } from '@angular/core';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\nimport { GridComponent } from '../grid/grid.component';\r\nimport { Toast } from 'primeng/toast';\r\nimport { I18nService } from '../../service/i18n.service';\r\n\r\n@Component({\r\n\tselector: 'custom-actions',\r\n\tstandalone: true,\r\n\timports: [ButtonModule, Toast, TranslatePipe],\r\n\ttemplateUrl: './actions.component.html',\r\n\tstyleUrl: './actions.component.scss',\r\n})\r\nexport class ActionsComponent {\r\n\tgrid = input<GridComponent>();\r\n\tactions = input<any[]>();\r\n\tisCancel = input<boolean>(true);\r\n\tauthLevel = input<number>();\r\n\tselectedRows: any[] = [];\r\n i18n = inject(I18nService)\r\n\tconstructor(private confirm: ConfirmationService) {\r\n\t\teffect(() => {\r\n\t\t\tthis.selectedRows = this.grid()?.selectedRows()!;\r\n\t\t});\r\n\t}\r\n\r\n\tgetClass(action: any) {\r\n\t\tif (action.label == '删除') {\r\n\t\t\treturn !!action.btnHidden?.({ action: action, rows: this.selectedRows, grid: this.grid() }) ? 'hidden' : 'block';\r\n\t\t}\r\n\t\treturn (action.auth || 0) > (this.authLevel() || 0) ||\r\n\t\t\t!!action.btnHidden?.({ action: action, rows: this.selectedRows, grid: this.grid() })\r\n\t\t\t? 'hidden'\r\n\t\t\t: 'block';\r\n\t}\r\n\r\n\tdoCancelAction() {\r\n\t\tthis.grid()?.cancelSelect();\r\n\t}\r\n\r\n\tdoAction(event: any, action: any) {\r\n\t\taction.onClick && action.onClick?.({ originalEvent: event, action: action, rows: this.selectedRows, grid: this.grid() });\r\n\t}\r\n\r\n\tonActionClick(event: any, action: any) {\r\n\t\tif (action.label == '删除') {\r\n\t\t\tthis.confirm.confirm({\r\n\t\t\t\tmessage: this.i18n.fanyi('modal.rowDelConfirm'),\r\n\t\t\t\theader: this.i18n.fanyi('modal.delTips'),\r\n\t\t\t\ticon: 'pi pi-info-circle',\r\n\t\t\t\trejectButtonProps: {\r\n\t\t\t\t\tlabel: this.i18n.fanyi('modal.cancel'),\r\n\t\t\t\t\tseverity: 'secondary',\r\n\t\t\t\t\ttext: true,\r\n\t\t\t\t},\r\n\t\t\t\tacceptButtonProps: {\r\n\t\t\t\t\tlabel: this.i18n.fanyi('modal.confirm'),\r\n\t\t\t\t\toutlined: true,\r\n\t\t\t\t},\r\n\t\t\t\taccept: () => this.doAction(event, action),\r\n\t\t\t});\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.doAction(event, action);\r\n\t}\r\n}\r\n","<p-toast />\r\n<div class=\"flex flex-wrap gap-4 justify-center\">\r\n\t@if (isCancel()) {\r\n\t\t<p-button\r\n\t\t\t[severity]=\"'secondary'\"\r\n\t\t\t[label]=\"('primeng.cancel' | translate) + ' ' + selectedRows.length\"\r\n\t\t\tsize=\"small\"\r\n\t\t\t(click)=\"doCancelAction()\">\r\n\t\t</p-button>\r\n\t}\r\n\r\n\t@for (action of actions(); track action) {\r\n\t\t<p-button\r\n\t\t\tsize=\"small\"\r\n\t\t\t[variant]=\"action.variant\"\r\n\t\t\t[icon]=\"action.icon\"\r\n\t\t\t[loading]=\"action.loading\"\r\n\t\t\t[severity]=\"action.severity\"\r\n\t\t\t[label]=\"action.label === '删除' ? ('app.tableAcDel' | translate) : action.i18nKey ? (action.i18nKey | translate) : action.label\"\r\n\t\t\t[styleClass]=\"getClass(action)\"\r\n\t\t\t[disabled]=\"action.btnDisabled?.({ action: action, rows: selectedRows, grid: grid() }) ?? false\"\r\n\t\t\t(onClick)=\"onActionClick($event, action)\"></p-button>\r\n\t}\r\n</div>\r\n","import { Component, input, output, effect, ViewChild, ElementRef } from '@angular/core';\r\nimport { ActionsComponent } from '../grid/actions/actions.component';\r\nimport { SearchComponent } from '../search/search/search.component';\r\nimport { GridOptions, GridComponent } from '../grid/grid/grid.component';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { ActionService } from '../service/action.service';\r\n\r\n@Component({\r\n\tselector: 'custom-head',\r\n\tstandalone: true,\r\n\timports: [SearchComponent, ActionsComponent, ButtonModule],\r\n\ttemplateUrl: './head.component.html',\r\n\tstyleUrl: './head.component.scss',\r\n})\r\nexport class HeadComponent {\r\n\t@ViewChild('actionsContainerRef', { static: false }) actionsContainerRef!: ElementRef;\r\n\t@ViewChild('searchContainerRef', { static: false }) searchContainerRef!: ElementRef;\r\n\tgridOptions = input<GridOptions>();\r\n\tgrid = input<GridComponent>();\r\n\tactions = input<any[]>();\r\n\tauthLevel = input<number>();\r\n\trowSelected = false;\r\n\r\n\tconstructor(private action: ActionService) {\r\n\t\teffect(() => {\r\n\t\t\tthis.rowSelected = !!this.grid()?.selectedRows().length;\r\n\t\t\tconsole.log('this.rowSelected---', this.rowSelected);\r\n\t\t\tthis.toggleChildren();\r\n\t\t});\r\n\t}\r\n\r\n\ttoggleChildren() {\r\n\t\tthis.actionsContainerRef.nativeElement.classList.add('child-hide');\r\n\t\tthis.searchContainerRef.nativeElement.classList.add('child-hide');\r\n\t\tif (this.rowSelected) {\r\n\t\t\tthis.actionsContainerRef.nativeElement.classList.remove('child-hide');\r\n\t\t}\r\n\t\tif (!this.rowSelected) {\r\n\t\t\tthis.searchContainerRef.nativeElement.classList.remove('child-hide');\r\n\t\t}\r\n\t}\r\n}\r\n","<div class=\"lg:min-w-[560px] h-[41.5px]\">\r\n\t<div\r\n\t\tclass=\"py-2\"\r\n\t\t#actionsContainerRef>\r\n\t\t<custom-actions\r\n\t\t\t[actions]=\"actions()\"\r\n\t\t\t[authLevel]=\"authLevel()\"\r\n\t\t\t[grid]=\"grid()\"></custom-actions>\r\n\t</div>\r\n\t<div\r\n\t\tclass=\"py-1\"\r\n\t\t#searchContainerRef>\r\n\t\t<custom-search [gridOptions]=\"gridOptions()\"></custom-search>\r\n\t</div>\r\n</div>\r\n","import { Component, ViewChild, model, input, output, inject, effect, isDevMode } from '@angular/core';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { FileUpload } from 'primeng/fileupload';\r\nimport { SelectModule } from 'primeng/select';\r\nimport { HttpClient, HttpEvent, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { ActionService } from '../service/action.service';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { GridComponent } from '../grid/grid/grid.component';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\nimport { PlatformLocation } from '@angular/common';\r\n\r\nexport interface ImportOptions {\r\n\ttitle?: string;\r\n\tfileName?: string;\r\n\tdata?: any;\r\n}\r\n\r\n@Component({\r\n\tselector: 'app-import',\r\n\tstandalone: true,\r\n\timports: [FormsModule, ButtonModule, DialogModule, FileUpload, SelectModule, TranslatePipe],\r\n\ttemplateUrl: './import.component.html',\r\n\tstyleUrl: './import.component.scss',\r\n})\r\nexport class ImportComponent {\r\n\t@ViewChild(FileUpload) fileUpload!: FileUpload;\r\n\tvisible = model<boolean>(false);\r\n\tfileName = input<string>();\r\n\tfuncName = input<string>();\r\n\torgVisible = input<boolean>(false);\r\n\torgField = input<string>();\r\n\tmodelName = input<string>('');\r\n\tgrid = input<GridComponent>();\r\n\tdisabled: boolean = false;\r\n\tplatformLocation = inject(PlatformLocation);\r\n\tdepts: any[] = [];\r\n\tdept: any;\r\n\r\n\tconstructor(\r\n\t\tprivate http: HttpClient,\r\n\t\tprivate action: ActionService,\r\n\t) {\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tconst action = this.action.getAction();\r\n\t\t\t\tif (action?.type === 'import') {\r\n\t\t\t\t\tthis.initDepts();\r\n\t\t\t\t\tthis.visible.set(true);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.action.setAction(undefined);\r\n\t}\r\n\r\n\tinitDepts() {\r\n\t\tconst userInfo = JSON.parse(localStorage.getItem('userInfo')!);\r\n\t\tthis.depts = userInfo.depts;\r\n\t}\r\n\r\n\tcancel() {\r\n\t\tthis.visible.set(false);\r\n\t}\r\n\r\n\tdownload() {\r\n\t\tlet baseHref = this.platformLocation.getBaseHrefFromDOM();\r\n\t\tconst link = document.createElement('a');\r\n\t\tlink.href = isDevMode()\r\n\t\t\t? '/importFiles/' + this.fileName() + '.xlsx'\r\n\t\t\t: `/${baseHref.replace(/\\/(.*?)\\//, '$1')}/importFiles/${this.fileName()}.xlsx`;\r\n\t\tlink.download = this.fileName() + '.xlsx';\r\n\t\tdocument.body.appendChild(link);\r\n\t\tlink.click();\r\n\t\tdocument.body.removeChild(link);\r\n\t}\r\n\r\n\tupload(item: any) {\r\n\t\tthis.disabled = true;\r\n\t\tlet userInfo = JSON.parse(window.localStorage.getItem('userInfo')!) || {};\r\n\t\tconst formData = new FormData();\r\n\t\tformData.append('file', item.files[0] as any);\r\n\t\tif (this.orgVisible()) {\r\n\t\t\tformData.append(this.orgField() ?? 'orgId', this.dept ?? '');\r\n\t\t}\r\n\t\tformData.append('modelName', this.modelName());\r\n\t\tformData.append('operator', userInfo.userName || '');\r\n\t\tconst req = new HttpRequest('POST', this.funcName() ?? 'import', formData, {\r\n\t\t\treportProgress: true,\r\n\t\t\twithCredentials: false,\r\n\t\t});\r\n\r\n\t\treturn this.http.request(req).subscribe({\r\n\t\t\tnext: (event: HttpEvent<any>) => {\r\n\t\t\t\tif (event instanceof HttpResponse) {\r\n\t\t\t\t\tthis.disabled = false;\r\n\t\t\t\t\tthis.grid()?.getData();\r\n\t\t\t\t\tthis.fileUpload.clear();\r\n\t\t\t\t\tthis.visible.set(false);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\terror: (err) => {\r\n\t\t\t\tthis.disabled = false;\r\n\t\t\t\tthis.grid()?.getData();\r\n\t\t\t\tthis.fileUpload.clear();\r\n\t\t\t\tthis.visible.set(false);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n}\r\n","<p-dialog\r\n\t[header]=\"'import.title' | translate\"\r\n\t[modal]=\"true\"\r\n\tappendTo=\"body\"\r\n\t[style]=\"{ width: '30rem' }\"\r\n\t(onHide)=\"cancel()\"\r\n\t[(visible)]=\"visible\">\r\n\t<div class=\"grid p-fluid\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<span style=\"font-size: 13px\">1.{{ 'import.templateDownload' | translate }}</span>\r\n\t\t</div>\r\n\t\t<div\r\n\t\t\tclass=\"col-12\"\r\n\t\t\tstyle=\"padding: 0.5rem\">\r\n\t\t\t<button\r\n\t\t\t\tpButton\r\n\t\t\t\tclass=\"p-element p-button-text p-button p-component\"\r\n\t\t\t\t(click)=\"download()\">\r\n\t\t\t\t<span class=\"p-button-label\">\r\n\t\t\t\t\t<i class=\"pi pi-download\"></i><span class=\"pl-2\">{{ 'import.downloadTemplate' | translate }}</span>\r\n\t\t\t\t</span>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<span style=\"font-size: 13px\">2.{{ 'import.fileUpload' | translate }}</span>\r\n\t\t</div>\r\n\t\t@if (orgVisible()) {\r\n\t\t\t<div\r\n\t\t\t\tclass=\"col-12\"\r\n\t\t\t\tstyle=\"padding: 1rem 0.5rem 0 0.5rem\">\r\n\t\t\t\t<p-select\r\n\t\t\t\t\t[style]=\"{ width: '275px' }\"\r\n\t\t\t\t\t[options]=\"depts\"\r\n\t\t\t\t\t[(ngModel)]=\"dept\"\r\n\t\t\t\t\tappendTo=\"body\"\r\n\t\t\t\t\toptionLabel=\"deptName\"\r\n\t\t\t\t\toptionValue=\"deptId\"\r\n\t\t\t\t\t[placeholder]=\"'import.deptPlaceholder' | translate\"\r\n\t\t\t\t\t[size]=\"'small'\"\r\n\t\t\t\t\tclass=\"w-full md:w-56\" />\r\n\t\t\t</div>\r\n\t\t}\r\n\t\t<div\r\n\t\t\tclass=\"p-file-import col-12\"\r\n\t\t\tstyle=\"padding: 0.5rem\">\r\n\t\t\t<p-fileUpload\r\n\t\t\t\t#primeFileUpload\r\n\t\t\t\tchooseStyleClass=\"p-element p-button-text p-button p-component\"\r\n\t\t\t\tmode=\"basic\"\r\n\t\t\t\tchooseIcon=\"pi pi-upload\"\r\n\t\t\t\t[chooseLabel]=\"'import.uploadFile' | translate\"\r\n\t\t\t\t[auto]=\"true\"\r\n\t\t\t\t[customUpload]=\"true\"\r\n\t\t\t\t(uploadHandler)=\"upload($event)\"></p-fileUpload>\r\n\t\t</div>\r\n\t</div>\r\n</p-dialog>\r\n","import { Component, effect, input } from '@angular/core';\r\nimport { AvatarModule } from 'primeng/avatar';\r\nimport { TraceMessage } from '../am/am.component';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n@Component({\r\n\tselector: 'custom-log',\r\n\tstandalone: true,\r\n\timports: [AvatarModule, DatePipe],\r\n\ttemplateUrl: './log.component.html',\r\n\tstyleUrl: './log.component.scss',\r\n\tproviders: [DatePipe],\r\n})\r\nexport class LogComponent {\r\n\tlogs = input<TraceMessage[]>([]);\r\n\tparsedLogs: any[] = [];\r\n\tid = input<any>();\r\n\ttargets: any[] = [];\r\n\r\n\tconstructor(private datePipe: DatePipe) {\r\n\t\teffect(() => {\r\n\t\t\tif (!this.logs()) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.parsedLogs = [];\r\n\t\t\tthis.logs().forEach((log) => {\r\n\t\t\t\tconst parsedLog: any = { ...log };\r\n\t\t\t\tparsedLog.content = log.content ? log.content.split(';') : [];\r\n\t\t\t\tparsedLog.subContent = log.subContent ? log.subContent.replace(/;+$/, '').split(';') : [];\r\n\t\t\t\tthis.parsedLogs.push(parsedLog);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tgetLastTwoCharacters(str: string) {\r\n\t\treturn str?.slice(-2);\r\n\t}\r\n}\r\n","<div class=\"log-panel\">\r\n\t<div class=\"log-content\">\r\n\t\t@for (log of parsedLogs; track log) {\r\n\t\t\t<div class=\"log-item p-2\">\r\n\t\t\t\t<div class=\"log-item-header flex flex-row\">\r\n\t\t\t\t\t<p-avatar\r\n\t\t\t\t\t\t[label]=\"getLastTwoCharacters(log.operator)\"\r\n\t\t\t\t\t\tstyleClass=\"mr-2 min-w-[40px]\"\r\n\t\t\t\t\t\tsize=\"large\" />\r\n\t\t\t\t\t<div>\r\n\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t<span class=\"px-2 font-semibold log-item-user\">{{ log.operator }}</span>\r\n\t\t\t\t\t\t\t<span class=\"log-item-time\">{{ log.createdAt | date: 'yyyy-MM-dd HH:mm:ss' : 'GMT' }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"px-2\">\r\n\t\t\t\t\t\t\t@for (item of log.content; track item) {\r\n\t\t\t\t\t\t\t\t<div class=\"flex items-start\">\r\n\t\t\t\t\t\t\t\t\t<span class=\"iconfont icon-main mr-1\"></span>\r\n\t\t\t\t\t\t\t\t\t<span class=\"log-item-content\">{{ item }}</span>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t@for (subItem of log.subContent; track subItem) {\r\n\t\t\t\t\t\t\t\t<div class=\"flex items-start\">\r\n\t\t\t\t\t\t\t\t\t<span class=\"ml-6 log-item-content\">{{ subItem }}</span>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n</div>\r\n","import { inject, Injectable, signal } from '@angular/core'\r\nimport { ActivatedRoute, ActivatedRouteSnapshot, NavigationEnd, Router } from '@angular/router';\r\nimport { filter, map, config } from 'rxjs';\r\nimport { I18nService } from './i18n.service';\r\n\r\nexport interface HistoryItem {\r\n // type: 'routerLink' | 'create',\r\n title: string,\r\n url: string,\r\n configPath: string,\r\n i18nKey:string\r\n}\r\n\r\n@Injectable({providedIn:'root'})\r\nexport class UserHistoryService {\r\n historyList = signal<HistoryItem[]>([])\r\n router$ = this.router.events\r\n .pipe(\r\n filter(event => event instanceof NavigationEnd),\r\n map((event) =>{\r\n // console.log('event----',event)\r\n return this.createBreadcrumbs(this.router.routerState.snapshot.root)\r\n })\r\n )\r\n detailName = ''\r\n i18n =inject(I18nService)\r\n constructor(public router: Router,public route: ActivatedRoute){\r\n\r\n // window.addEventListener('beforeunload',(event) => {\r\n // window.sessionStorage.setItem('crumbAction', JSON.stringify(this.historyList()))\r\n // })\r\n // window.addEventListener('load',() => {\r\n // let history = window.sessionStorage.getItem('crumbAction')\r\n // console.log('crumbAction-localstory',history)\r\n // if(history){\r\n // this.historyList.set(JSON.parse(history))\r\n // }\r\n // })\r\n }\r\n\r\n\r\n\r\n \r\n private createBreadcrumbs(route: ActivatedRouteSnapshot, url: string = '', breadcrumbs: any[] = []):any {\r\n const children: ActivatedRouteSnapshot[] = route.children;\r\n if(children.length == 0) return \r\n const child = children[0];\r\n const routeURL: string = child.url.map(segment => segment.path).join('/');\r\n const queryKeys = Object.keys(child.queryParams) || []\r\n if (routeURL !== '') {\r\n url += `/${routeURL}`;\r\n }\r\n if(queryKeys.length > 0){\r\n url+='?'\r\n queryKeys.forEach(v => {\r\n url+=`${v}=${child.queryParams[v]}`\r\n })\r\n }\r\n let title: string = '';\r\n if (child.data['title']) {\r\n if (typeof child.data['title'] === 'function') {\r\n title = child.data['title'](child);\r\n } else {\r\n title = child.data['title']\r\n }\r\n }\r\n let i18nKey = child.data['i18nKey'] ? child.data['i18nKey'] : ''\r\n // const configPath: string = child.routeConfig?.path as string\r\n const configPath = child.params.hasOwnProperty('id') || child.params.hasOwnProperty('code') ? url.replace(/([^\\/]*)$/, \"\") : url\r\n const code = url.split('/')[2] || ''\r\n // @ts-ignore\r\n if(window.appIsI18n){\r\n i18nKey = i18nKey == '' && code != '' ? `menus.${code}`: i18nKey\r\n }\r\n const paramsKeys = Object.keys(child.params)\r\n // console.log('title',child,configPath,url)\r\n if(title && configPath){\r\n let isExit = this.historyList().filter(v => v.configPath == configPath) \r\n // configPath.indexOf(':') > -1 && paramsKeys.length > 0 && ( title = this.detailName)\r\n if(isExit.length == 0){\r\n this.historyList.update((value) => [...value,{title,url,configPath,i18nKey}])\r\n } else {\r\n this.backUrl(url)\r\n }\r\n }\r\n // console.log('history----',this.historyList())\r\n return this.createBreadcrumbs(child, url, breadcrumbs);\r\n }\r\n addHistoryList(item: HistoryItem){\r\n this.historyList.update((value) => [...value,item])\r\n }\r\n\r\n backUrl(url:string){\r\n let index = this.historyList().findIndex(v => v.url == url)\r\n let length = this.historyList().length\r\n if(index + 1 !== length){\r\n let newHistory = this.historyList().slice(0,index)\r\n this.historyList.set(newHistory)\r\n }\r\n }\r\n\r\n lastPop(){\r\n this.historyList().pop()\r\n }\r\n // 清空history\r\n clear(path?:string){\r\n window.sessionStorage.removeItem('crumbAction')\r\n let newHistory :any= []\r\n if(path) {\r\n newHistory = this.historyList().filter(v => v.url === path)\r\n }\r\n this.historyList.set(newHistory)\r\n }\r\n\r\n // 新增编辑不是同一个路由 需过滤新建路由\r\n filterUrl(url:string){\r\n let newHistory = this.historyList().filter(v => v.url !== url)\r\n this.historyList.set(newHistory)\r\n }\r\n \r\n // 手动触发详情页面获取title \r\n setLastTitle(title:string){\r\n const last = this.historyList().pop() as HistoryItem\r\n this.historyList.update((value) => ([...value,{...last,title}]))\r\n console.log('set--title',this.historyList())\r\n // const last = this.historyList()[this.historyList().length - 1]\r\n\r\n }\r\n\r\n}","import { Component, computed, effect, ElementRef, HostListener, inject, input, output, Renderer2, signal, ViewChild } from '@angular/core';\r\nimport { I18nService } from '../service/i18n.service';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ListboxModule } from 'primeng/listbox';\r\nimport { Popover } from 'primeng/popover';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\nexport interface Step {\r\n\tlabel: string;\r\n\ti18nKey?: string;\r\n\tvalue: number | 'start' | 'end';\r\n}\r\n\r\n@Component({\r\n\tselector: 'custom-steps',\r\n\tstandalone: true,\r\n\timports: [FormsModule, ListboxModule, Popover],\r\n\ttemplateUrl: './steps.component.html',\r\n\tstyleUrl: './steps.component.scss',\r\n})\r\nexport class StepsComponent {\r\n\t@ViewChild('container', { static: false }) containerRef!: ElementRef;\r\n\tmodelLog = input<boolean>(false);\r\n\tneedSelfAdjusting = input<boolean>(true);\r\n\tsteps = input<Step[] | undefined>(undefined);\r\n\tdisplaySteps = computed(() => {\r\n\t\tif (this.steps() === undefined) return [];\r\n\t\tconst steps = [...this.steps()!];\r\n\t\tsteps.unshift({ value: 'start', label: '...' });\r\n\t\tsteps.push({ value: 'end', label: '...' });\r\n\t\treturn steps.filter((step) => !this.excludeValues().includes(step.value));\r\n\t});\r\n\texcludeValues = signal<(number | 'start' | 'end')[]>([]);\r\n\tcurrent = input<number>(2);\r\n\ti18n = inject(I18nService);\r\n\tchange = output<number>();\r\n\tauthLevel = input<number>(-1);\r\n\tisClick = input<boolean>(true);\r\n\r\n\twidthList: number[] = [];\r\n\tSTART_BUTTON_WIDTH = 32;\r\n\tEND_BUTTON_WIDTH = 47;\r\n\tSTEP_ITEM_MARGIN = 2;\r\n\r\n\tstartIndex = 0;\r\n\tendIndex = 0;\r\n\tstartSteps: Step[] = [];\r\n\tendSteps: Step[] = [];\r\n\tmaxWidth = 0;\r\n\r\n\t@HostListener('window:resize', ['$event'])\r\n\tonResize() {\r\n\t\tthis.calcMaxWidth();\r\n\t\tthis.refreshSteps();\r\n\t}\r\n\r\n\tconstructor(private renderer: Renderer2) {\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tlet current = this.current();\r\n\t\t\t\tif (current != 0 && this.steps()!.length > 0) {\r\n\t\t\t\t\tthis.refreshSteps();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tthis.calcMaxWidth();\r\n\t\t\t\tthis.refreshSteps();\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t\tconst steps$ = toObservable(this.steps).subscribe((steps) => {\r\n\t\t\tif (steps === undefined) return;\r\n\t\t\tthis.initSteps();\r\n\t\t\tsteps$.unsubscribe();\r\n\t\t});\r\n\t}\r\n\r\n\tinitSteps() {\r\n\t\tthis.calcMaxWidth();\r\n\t\tthis.initWidthList();\r\n\t\tthis.refreshSteps();\r\n\t}\r\n\r\n\trefreshSteps() {\r\n\t\tthis.alternateWidthList();\r\n\t\tthis.handleSteps();\r\n\t}\r\n\r\n\tinitWidthList() {\r\n\t\tthis.widthList = [];\r\n\t\tconst children = this.renderer.parentNode(this.containerRef.nativeElement).children[0].children;\r\n\t\tfor (let i = 0; i < children.length; i++) {\r\n\t\t\tif (!children[i].classList.contains('step-item')) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (children[i].classList.contains('start-item')) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (children[i].classList.contains('end-item')) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tthis.widthList.push((children[i].offsetWidth || 0) + this.STEP_ITEM_MARGIN);\r\n\t\t}\r\n\t}\r\n\r\n\tcalcMaxWidth() {\r\n\t\tif (window.innerWidth < 768) {\r\n\t\t\tthis.maxWidth = window.innerWidth * 0.96;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!this.modelLog()) {\r\n\t\t\tthis.maxWidth = window.innerWidth * 0.64;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst centerWidth = window.innerWidth < 1024 ? window.innerWidth - 300 : window.innerWidth - 400;\r\n\t\tthis.maxWidth = centerWidth * 0.64;\r\n\t}\r\n\r\n\tshowStartSteps(event: any, startOp: any) {\r\n\t\tif (this.authLevel() < 4) return;\r\n\t\tstartOp.toggle(event);\r\n\t}\r\n\r\n\tshowEndSteps(event: any, endOp: any) {\r\n\t\tif (this.authLevel() < 4) return;\r\n\t\tendOp.toggle(event);\r\n\t}\r\n\r\n\tgetClass(i: number, classes: string[]) {\r\n\t\tlet result = ['step-item', 'flex', 'items-center', 'justify-center'];\r\n\t\tresult = result.concat(classes);\r\n\t\tif (this.authLevel() < 4 || !this.isClick()) {\r\n\t\t\tresult.push('cursor-not-allowed');\r\n\t\t} else {\r\n\t\t\tresult.push('cursor-pointer allow-hover');\r\n\t\t}\r\n\t\tconst { value } = this.displaySteps()![i];\r\n\t\tif (i == 0) {\r\n\t\t\tresult.push('step-first');\r\n\t\t} else if (i + 1 == this.displaySteps()?.length) {\r\n\t\t\tresult.push('step-last');\r\n\t\t}\r\n\t\tif (value == this.current()) {\r\n\t\t\tresult.push('step-active');\r\n\t\t\t// result.push('md:flex-none flex-1');\r\n\t\t}\r\n\t\treturn result.join(' ');\r\n\t}\r\n\r\n\tchangeStatus(step: any) {\r\n\t\tthis.change.emit(step.value);\r\n\t}\r\n\r\n\tonStartStepsChange(event: any) {\r\n\t\tconst step = event.value;\r\n\t\tthis.change.emit(step.value);\r\n\t}\r\n\r\n\tonEndStepsChange(event: any) {\r\n\t\tconst step = event.value;\r\n\t\tthis.change.emit(step.value);\r\n\t}\r\n\r\n\talternateWidthList() {\r\n\t\tlet index = this.steps()!.findIndex((s) => s.value === this.current());\r\n\t\tindex = index === -1 ? 0 : index;\r\n\t\tthis.startIndex = index;\r\n\t\tthis.endIndex = index;\r\n\r\n\t\tlet leftIndex = index - 1;\r\n\t\tlet rightIndex = index + 1;\r\n\t\tlet turn = 'right';\r\n\t\tlet totalWidth = this.widthList[index];\r\n\t\t\r\n\t\twhile (leftIndex >= 0 || rightIndex < this.widthList.length) {\r\n\t\t\tif (turn === 'right' && rightIndex < this.widthList.length) {\r\n\t\t\t\ttotalWidth += this.widthList[rightIndex];\r\n\t\t\t\tif (this.isExceedMaxWidth(totalWidth)) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tthis.endIndex = rightIndex;\r\n\t\t\t\trightIndex++;\r\n\t\t\t\tturn = 'left';\r\n\t\t\t} else if (turn === 'left' && leftIndex >= 0) {\r\n\t\t\t\ttotalWidth += this.widthList[leftIndex];\r\n\t\t\t\tif (this.isExceedMaxWidth(totalWidth)) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tthis.startIndex = leftIndex;\r\n\t\t\t\tleftIndex--;\r\n\t\t\t\tturn = 'right';\r\n\t\t\t} else {\r\n\t\t\t\tturn = rightIndex < this.widthList.length ? 'right' : 'left';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisExceedMaxWidth(totalWidth: number) {\r\n\t\tif (!this.needSelfAdjusting()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\ttotalWidth += this.startIndex === 0 ? 0 : this.START_BUTTON_WIDTH;\r\n\t\ttotalWidth += this.endIndex === this.widthList.length - 1 ? 0 : this.END_BUTTON_WIDTH;\r\n\t\tconsole.log('----------------totalWidth', totalWidth, this.maxWidth);\r\n\t\treturn totalWidth >= this.maxWidth;\r\n\t}\r\n\r\n\thandleSteps() {\r\n\t\tconst steps = this.steps()!;\r\n\t\tconst excludeValues: any[] = [];\r\n\t\tfor (let i = 0; i < steps.length; i++) {\r\n\t\t\tif (i < this.startIndex) {\r\n\t\t\t\texcludeValues.push(steps[i].value);\r\n\t\t\t}\r\n\t\t\tif (i > this.endIndex) {\r\n\t\t\t\texcludeValues.push(steps[i].value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.startIndex > 0) {\r\n\t\t\tthis.startSteps = steps.slice(0, this.startIndex);\r\n\t\t} else {\r\n\t\t\texcludeValues.push('start');\r\n\t\t}\r\n\t\tif (this.endIndex < steps.length - 1) {\r\n\t\t\tthis.endSteps = steps.slice(this.endIndex + 1);\r\n\t\t} else {\r\n\t\t\texcludeValues.push('end');\r\n\t\t}\r\n\t\tthis.excludeValues.set(excludeValues);\r\n\t}\r\n}\r\n","<div\r\n\t#container\r\n\tclass=\"flex my-1 w-full justify-end\">\r\n\t@for (st of displaySteps(); track st; let i = $index) {\r\n\t\t@if (st.value === 'start') {\r\n\t\t\t<div\r\n\t\t\t\t#startItem\r\n\t\t\t\t[class]=\"getClass(i, ['start-item'])\"\r\n\t\t\t\t(click)=\"showStartSteps($event, startOp)\">\r\n\t\t\t\t<span>...</span>\r\n\t\t\t</div>\r\n\t\t\t<p-popover\r\n\t\t\t\t#startOp\r\n\t\t\t\t[styleClass]=\"'pop-steps start-steps'\"\r\n\t\t\t\t[appendTo]=\"startItem\">\r\n\t\t\t\t<p-listbox\r\n\t\t\t\t\t[options]=\"startSteps\"\r\n\t\t\t\t\t(onChange)=\"onStartStepsChange($event)\"\r\n\t\t\t\t\toptionLabel=\"label\"\r\n\t\t\t\t\tclass=\"w-full md:w-56\">\r\n\t\t\t\t\t<ng-template\r\n\t\t\t\t\t\tlet-country\r\n\t\t\t\t\t\tpTemplate=\"item\">\r\n\t\t\t\t\t\t<div class=\"flex items-center gap-2\">\r\n\t\t\t\t\t\t\t<div>{{ country.i18nKey ? i18n.fanyi(country.i18nKey) : country.label }}</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-listbox>\r\n\t\t\t</p-popover>\r\n\t\t} @else if (st.value === 'end') {\r\n\t\t\t<div\r\n\t\t\t\t#endItem\r\n\t\t\t\t[class]=\"getClass(i, ['end-item'])\"\r\n\t\t\t\t(click)=\"showEndSteps($event, endOp)\">\r\n\t\t\t\t<span>...</span>\r\n\t\t\t</div>\r\n\t\t\t<p-popover\r\n\t\t\t\t#endOp\r\n\t\t\t\t[styleClass]=\"'pop-steps end-steps'\"\r\n\t\t\t\t[appendTo]=\"endItem\">\r\n\t\t\t\t<p-listbox\r\n\t\t\t\t\t[options]=\"endSteps\"\r\n\t\t\t\t\t(onChange)=\"onEndStepsChange($event)\"\r\n\t\t\t\t\toptionLabel=\"label\"\r\n\t\t\t\t\tclass=\"w-full md:w-56\">\r\n\t\t\t\t\t<ng-template\r\n\t\t\t\t\t\tlet-country\r\n\t\t\t\t\t\tpTemplate=\"item\">\r\n\t\t\t\t\t\t<div class=\"flex items-center gap-2\">\r\n\t\t\t\t\t\t\t<div>{{ country.i18nKey ? i18n.fanyi(country.i18nKey) : country.label }}</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-listbox>\r\n\t\t\t</p-popover>\r\n\t\t} @else {\r\n\t\t\t<div\r\n\t\t\t\t[class]=\"getClass(i, [])\"\r\n\t\t\t\t(click)=\"changeStatus(st)\">\r\n\t\t\t\t<span>{{ st.i18nKey ? i18n.fanyi(st.i18nKey) : st.label }}</span>\r\n\t\t\t</div>\r\n\t\t}\r\n\t}\r\n</div>\r\n","import { Component, computed, ElementRef, ViewChild, signal, Renderer2, inject, ViewChildren, QueryList, HostListener, input, output, effect } from '@angular/core';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\nimport { AmComponent } from '../am/am.component';\r\nimport { Popover } from 'primeng/popover';\r\nimport { TieredMenu } from 'primeng/tieredmenu'\r\nimport {StyleClassModule} from 'primeng/styleclass'\r\n@Component({\r\n selector: 'href-btn-list',\r\n standalone: true,\r\n imports: [TranslatePipe,TieredMenu,StyleClassModule],\r\n templateUrl: './href-btn-list.component.html',\r\n styleUrl: './href-btn-list.component.scss'\r\n})\r\nexport class HrefBtnListComponent{\r\n @ViewChild('container', { static: false }) containerRef!: ElementRef;\r\n @ViewChildren('btnItem') btnItem!: QueryList<ElementRef<HTMLElement>>\r\n @ViewChild('moreOp') op!: Popover;\r\n hrefs = input<any[]>([])\r\n fillList :any = computed(() => {\r\n return this.hrefs().filter((v:any,index:any) => index < this.fillIndex())\r\n })\r\n moreIcon = signal(true)\r\n iconClass = computed(() => {\r\n return this.moreIcon() ? 'pi-sort-down-fill' : 'pi-sort-up-fill' \r\n })\r\n moreBtns:any = computed(() => {\r\n console.log('this.fillIndex,', this.fillIndex())\r\n return this.hrefs().filter((v:any,index:any) => index >= this.fillIndex())\r\n })\r\n showMore = false\r\n renderer = inject(Renderer2)\r\n fillIndex = signal<number>(99)\r\n allChildWd :any[]=[]\r\n hrefClick = output()\r\n constructor(){\r\n effect(() => {\r\n if(this.hrefs().length >0){\r\n this.initWidth()\r\n this.checkOverflow() \r\n }\r\n },{allowSignalWrites:true})\r\n }\r\n ngAfterViewInit() {\r\n this.initWidth()\r\n this.checkOverflow() \r\n }\r\n @HostListener('window:resize', ['$event'])\r\n onResize() {\r\n this.checkOverflow()\r\n }\r\n\r\n checkOverflow(){\r\n const containerWidth = this.containerRef.nativeElement.offsetWidth;\r\n let childTotalWd = 0;\r\n const maxWidth = containerWidth - 80\r\n for(let i =0;i< this.allChildWd.length;i++){ \r\n childTotalWd += this.allChildWd[i]\r\n console.log('childTotalWd',childTotalWd,maxWidth)\r\n if(childTotalWd > maxWidth){\r\n console.log('----i',i)\r\n this.fillIndex.set(i)\r\n this.showMore = true\r\n return \r\n } else {\r\n this.fillIndex.set(i+1)\r\n this.showMore = false\r\n }\r\n }\r\n }\r\n\r\n initWidth(){\r\n this.allChildWd = []\r\n const children = this.renderer.parentNode(this.containerRef.nativeElement).children[0].children;\r\n for(let i =0;i< children.length;i++){\r\n let el :any= children[i]\r\n if(el && el.getAttribute('data-type')=='href'){\r\n this.allChildWd.push(el.offsetWidth)\r\n }\r\n }\r\n console.log('this.allChildWd',this.allChildWd)\r\n }\r\n toggleMore(event:any){\r\n this.moreIcon.set(false)\r\n this.op.toggle(event);\r\n }\r\n\r\n hide(){\r\n this.moreIcon.set(true)\r\n }\r\n\r\n btnClick(btn:any){\r\n this.hrefClick.emit(btn)\r\n }\r\n // itemHidden(index:number){\r\n // return index >= this.fillIndex ? 'hidden':'block'\r\n // }\r\n}\r\n","<div class=\"hidden max-w-full md:flex\" #container style=\"max-width: 100%;\">\r\n @for(item of fillList();track item){\r\n <button \r\n #btnItem\r\n [attr.data-type]=\"'href'\"\r\n [class.first-btn]=\"$first\"\r\n [class.last-btn]=\"$last && !showMore\"\r\n class=\"flex px-[10px] h-[33px] btn items-center min-w-[85px] shrink-0 box-border not-first\"\r\n (click)=\"btnClick(item)\">\r\n <i class=\"pi text-[22px] mr-[4px] txt-color\" [class]=\"item.icon\"></i>\r\n <div class=\"flex flex-col text-[12px] \" style=\"line-height: 1;font-weight: 400;\">\r\n <div class=\"ml-[4px] text-left max-w-full\">\r\n <span class=\"block whitespace-nowrap overflow-hidden text-ellipsis m-0 p-0\">\r\n {{item.i18nKey ? (item.i18nKey | translate) : item.label}}\r\n </span>\r\n <span class=\"block whitespace-nowrap overflow-hidden text-ellipsis m-0 p-0 txt-color\">\r\n @if(item.hasOwnProperty('value')){\r\n <span>{{item.value || 0}}</span>\r\n }\r\n </span>\r\n </div>\r\n </div>\r\n </button>\r\n }\r\n @if(showMore){\r\n <button\r\n [attr.data-type]=\"'more'\" \r\n class=\"flex px-[10px] h-[33px] flex-grow-1 lg:flex-grow-0 btn items-center w-auto gap-[4px] last-btn ml-[-1px]\" \r\n (click)=\"toggleMore($event)\">\r\n <div class=\"text-[14px] whitespace-nowrap\">更多</div>\r\n <i class=\"pi text-[14px] mr-[4px]\" [class]=\"iconClass()\"></i>\r\n </button>\r\n <p-tieredmenu #moreOp [model]=\"moreBtns()\" [popup]=\"true\" [style]=\"{position:'absolute'}\" (onHide)=\"hide()\">\r\n <ng-template #item let-item let-hasSubmenu=\"hasSubmenu\">\r\n <button \r\n class=\"flex py-[8px] pl-[10px] h-[33px] items-center min-w-[85px] shrink-0\"\r\n (click)=\"btnClick(item)\">\r\n <i class=\"pi text-[22px] mr-[4px] txt-color\" [class]=\"item.icon\"></i>\r\n <div class=\"flex flex-col text-[12px] \" style=\"line-height: 1;font-weight: 400;\">\r\n <div class=\"ml-[4px] text-left max-w-full\">\r\n <span class=\"block whitespace-nowrap overflow-hidden text-ellipsis m-0 p-0 \">\r\n {{item.i18nKey ? (item.i18nKey | translate) : item.label}}\r\n </span>\r\n <span class=\"block whitespace-nowrap overflow-hidden text-ellipsis m-0 p-0\">\r\n @if(item.hasOwnProperty('value')){\r\n <span>{{item.value || 0}}</span>\r\n }\r\n </span>\r\n </div>\r\n </div>\r\n </button>\r\n </ng-template>\r\n </p-tieredmenu>\r\n }\r\n</div>\r\n@if(hrefs().length > 0){\r\n <button class=\"md:hidden flex h-[33px] items-center justify-center btn p-[10px]\"\r\n enterActiveClass=\"animate-scalein\" \r\n enterFromClass=\"hidden\" \r\n leaveActiveClass=\"animate-fadeout\" \r\n leaveToClass=\"hidden\"\r\n pStyleClass=\"@next\" \r\n [hideOnOutsideClick]=\"true\">\r\n <i class=\"pi pi-bolt text-14px\"></i>\r\n </button>\r\n}\r\n<div class=\"hidden md:hidden absolute z-[9999] panel-box\">\r\n <div class=\"flex flex-wrap\">\r\n @for(item of hrefs();track item){\r\n <button \r\n class=\"flex w-[50%] px-[10px] h-[33px] panel-btn items-center min-w-[85px] shrink-1 rounded-none icon-color\" \r\n (click)=\"btnClick(item)\">\r\n <i class=\"pi text-[22px] mr-[4px] txt-color\" [class]=\"item.icon\"></i>\r\n <div class=\"flex flex-col text-[12px] \" style=\"line-height: 1;font-weight: 400;\">\r\n <div class=\"ml-[4px] text-left max-w-full\">\r\n <span class=\"block whitespace-nowrap overflow-hidden text-ellipsis m-0 p-0 \">\r\n {{item.i18nKey ? (item.i18nKey | translate) : item.label}}\r\n </span>\r\n <span class=\"block whitespace-nowrap overflow-hidden text-ellipsis m-0 p-0 txt-color\">\r\n @if(item.hasOwnProperty('value')){\r\n <span>{{item.value || 0}}</span>\r\n }\r\n </span>\r\n </div>\r\n </div>\r\n </button>\r\n }\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n","import { UserHistoryService } from '../service/userHistory.service';\r\nimport {\r\n\tComponent,\r\n\tinject,\r\n\tOnInit,\r\n\tViewChild,\r\n\tinput,\r\n\teffect,\r\n\tcomputed,\r\n\tInput,\r\n\tsignal,\r\n\tViewChildren,\r\n\tQueryList,\r\n\tHostListener,\r\n} from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FormComponent, FormOptions } from '../form/form/form.component';\r\nimport { RowSelectorComponent } from '../row-selector/row-selector.component';\r\nimport { LogComponent } from '../log/log.component';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { CrumbActionComponent } from '../crumb-action/crumb-action.component';\r\nimport { StepsComponent, Step } from '../steps/steps.component';\r\nimport { GridComponent, GridOptions } from '../grid/grid/grid.component';\r\nimport { TabsModule } from 'primeng/tabs';\r\nimport { AmComponent, Get } from '../am/am.component';\r\nimport { Search } from '../am/am.component';\r\nimport { HrefBtnList, GridList } from './page-form.interface';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\nimport { I18nService } from '../service/i18n.service';\r\nimport { PermissionBtn } from './page-form.interface';\r\nimport { formTypeToProps } from './page-form.interface';\r\nimport { HrefBtnListComponent } from '../href-btn-list/href-btn-list.component';\r\nimport { ActionService } from '../service/action.service';\r\nimport { deepClone } from '../share/utils'\r\n@Component({\r\n\tselector: 'app-page-form',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tButtonModule,\r\n\t\tReactiveFormsModule,\r\n\t\tFormComponent,\r\n\t\tLogComponent,\r\n\t\tCrumbActionComponent,\r\n\t\tStepsComponent,\r\n\t\tGridComponent,\r\n\t\tTabsModule,\r\n\t\tRowSelectorComponent,\r\n\t\tTranslatePipe,\r\n\t\tHrefBtnListComponent,\r\n\t],\r\n\ttemplateUrl: './page-form.component.html',\r\n\tstyleUrl: './page-form.component.scss',\r\n\tproviders: [],\r\n})\r\nexport class PageFormComponent extends AmComponent implements OnInit {\r\n\t@ViewChild('cForm') cForm!: FormComponent;\r\n\t@ViewChildren('customGrid') customGrid!: QueryList<GridComponent>;\r\n\t@ViewChildren('tabForm') tabForm!: QueryList<FormComponent>;\r\n\tshowLog = computed(() => {\r\n\t\treturn this.modelLog() && this.sidebarMode() === 'right';\r\n\t});\r\n\taddVisible = input<boolean>();\r\n\tgridList = input<any[]>([]);\r\n\tform = input.required<FormOptions>({});\r\n\tgetPrmInput = input.required<Get>({});\r\n\tstatusSteps = input<Step[]>([]);\r\n\tstatusKey = input('status');\r\n\threfBtnList = input<HrefBtnList[]>([]);\r\n\tsetTitle = input<string>();\r\n\tactionList = input<PermissionBtn[]>([]);\r\n\tmodelLog = input<boolean>(false);\r\n\tsidebarMode = signal<'left' | 'right'>('right');\r\n\tformDisabled = input<Function>();\r\n\tstatusConf = input<any>();\r\n\tformDetail = input<any>();\r\n\tsaveFunc = input<any>();\r\n\tconfigNewPath = input<any>();\r\n\r\n\tuserHistoryService = inject(UserHistoryService);\r\n\tindexValue = 0;\r\n\tvisible = false;\r\n\tdialogSearchPrm!: Search;\r\n\tselectOptions!: GridOptions;\r\n\tselectData: any[] = [];\r\n\tpageUrl = '';\r\n\tnewUrl = '';\r\n\tauthLevel = input<number>(-1);\r\n\threfs: any[] = [];\r\n\taction = inject(ActionService);\r\n\tsubFormModel: any = {};\r\n\tsaveBtnDisable = false;\r\n\tgridDisable = false;\r\n\tselectionKeys: any[] = [];\r\n\tsubDeleteIds: any[] = [];\r\n\r\n\tstepsVisible = true;\r\n\r\n\t@HostListener('window:resize')\r\n\tonResize() {\r\n\t\tthis.sidebarMode.set(window.innerWidth < 1024 ? 'left' : 'right');\r\n\t}\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.id = Number(this.route.snapshot.paramMap.get('id'));\r\n\t\tthis.pageUrl = this.route.snapshot.url\r\n\t\t\t.map((segment) => segment.path)\r\n\t\t\t.join('/')\r\n\t\t\t.replace(/([^\\/]*)$/, '');\r\n\t\tthis.newUrl = `${this.pageUrl}new`;\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tthis.modelName = this.getPrmInput().modelName!;\r\n\t\t\t\tthis.getPrm = { ...this.getPrmInput() };\r\n\t\t\t\tthis.id && (this.getPrm.id = this.id);\r\n\t\t\t\tif (this.id) {\r\n\t\t\t\t\tconsole.log(typeof this.formDetail(), 'form----');\r\n\t\t\t\t\ttypeof this.formDetail() == 'function' ? this.formDetail()(this.id) : this.getDetail();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.getPrm.data = {};\r\n\t\t\t\t\tthis.gridList().forEach((v) => {\r\n\t\t\t\t\t\tif (v.type == 'grid') {\r\n\t\t\t\t\t\t\tthis.getPrm.data[v.subDataKey] = [];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\r\n\t\teffect(() => {\r\n\t\t\tthis.formOptions = { ...this.form() };\r\n\t\t});\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tthis.isLog = this.modelLog();\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tif (this.statusSteps().length > 0 && !this.id) {\r\n\t\t\t\t\tthis.upsertPrm.addData![this.statusKey()] = this.statusSteps()[0]['value'];\r\n\t\t\t\t\tthis.getPrm.data = Object.assign(this.getPrm.data || {}, {\r\n\t\t\t\t\t\t[this.statusKey()]: this.statusSteps()[0]['value'],\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tif (this.authLevel() < 3) {\r\n\t\t\t\t\tthis.setDisabled();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t}\r\n\tngOnInit(): void {\r\n\t\tthis.upCb = this.upCb.bind(this);\r\n\t\tthis.onResize()\r\n\t}\r\n\r\n\tngAfterViewInit(): void {\r\n\t\tthis.i18n.change.subscribe((res) => {\r\n\t\t\tthis.stepsVisible = false;\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.stepsVisible = true;\r\n\t\t\t}, 100)\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tsubmitForm(): any {\r\n\t\t// this.tabForm.validate()\r\n\t\tconsole.log('getPrm------', this.getPrm);\r\n\t\tlet subForm = true;\r\n\t\tif (this.tabForm.length > 0) {\r\n\t\t\tthis.tabForm.forEach((item) => {\r\n\t\t\t\tif (!item.validate()) {\r\n\t\t\t\t\tsubForm = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (this.cForm.validate() && subForm) {\r\n\t\t\tlet cb: any = this.id === 0 ? null : this.upCb;\r\n\t\t\tthis.action.loading.set(true);\r\n\t\t\ttypeof this.saveFunc() == 'function' ? this.saveFunc()(this.upsertPrm, this.id, cb) : this.upsert(null, cb);\r\n\t\t}\r\n\t}\r\n\r\n\tdelRows(e: any) {\r\n\t\tconst gridTab = this.gridList()[this.indexValue];\r\n\t\tconst deleteFunc = gridTab.deleteFunc;\r\n\t\tconst subTable = gridTab.gridOptions.modelName;\r\n\r\n\t\tlet prm = {\r\n\t\t\tmodelName: subTable,\r\n\t\t\tids: e,\r\n\t\t};\r\n\t\tif (!deleteFunc) {\r\n\t\t\tthis.web_remove(prm).subscribe((res) => {\r\n\t\t\t\ttypeof this.formDetail() == 'function' ? this.formDetail()(this.id) : this.getDetail();\r\n\t\t\t\tthis.action.updateGridAction({type:'delete',data:e})\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tdeleteFunc().subscribe(() => {\r\n\t\t\t\ttypeof this.formDetail() == 'function' ? this.formDetail()(this.id) : this.getDetail();\r\n\t\t\t\tthis.action.updateGridAction({type:'delete',data:e})\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\tupCb(res?: any) {\r\n\t\tif (res.id == 0) {\r\n\t\t\ttypeof this.formDetail() == 'function' ? this.formDetail()(this.id) : this.getDetail();\r\n\t\t} else {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tlet editUrl = `${this.pageUrl}${res.id}`;\r\n\t\t\t\tthis.router.navigate([editUrl]);\r\n\t\t\t}, 1500);\r\n\t\t}\r\n\t\tthis.action.saveSignal.set(false);\r\n\t\tthis.cForm.finalize();\r\n\t}\r\n\t// TODO 是否需要数据转换回调函数\r\n\tonOk(e: any) {\r\n\t\tconst grid = this.gridList()[this.indexValue];\r\n\t\tthis.gridList()[this.indexValue].selectData = [];\r\n\t\tif (e.length > 0) {\r\n\t\t\tlet uniqueKeys = [];\r\n\t\t\tif (grid.uniqueField) {\r\n\t\t\t\tconst rowData = this.customGrid\r\n\t\t\t\t\t.get(this.indexValue)!\r\n\t\t\t\t\t.getGrid()\r\n\t\t\t\t\t.api.getRenderedNodes()\r\n\t\t\t\t\t.map((node) => node.data);\r\n\t\t\t\t\tconsole.log('rowData-----',rowData)\r\n\t\t\t\tuniqueKeys = rowData.map((item: any) => item[grid.uniqueField!]);\r\n\t\t\t}\r\n\t\t\tconsole.log('uniqueKeys-----',uniqueKeys,)\r\n\t\t\te.forEach((item: any) => {\r\n\t\t\t\tlet obj = grid.selectDataCb ? grid.selectDataCb(item) : { ...item };\r\n\t\t\t\tif (grid.uniqueField && uniqueKeys.includes(obj[grid.uniqueField!] || '')) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tgrid.selectData!.push(obj);\r\n\t\t\t});\r\n\t\t\tthis.action.saveSignal.set(true);\r\n\t\t}\r\n\t\tthis.action.updateGridAction({type:'add',data:grid.selectData})\r\n\t}\r\n\r\n\tonCancelSelected(e: any) {\r\n\t\tconst grid = this.gridList()[this.indexValue];\r\n\t\tlet datas: any = [];\r\n\t\te.forEach((item: any) => {\r\n\t\t\tconst data = grid.selectDataCb ? { ...grid.selectDataCb(item) } : item;\r\n\t\t\tdatas.push(data);\r\n\t\t});\r\n\t\tif (grid.uniqueField) {\r\n\t\t\tconst keys = datas.map((item: any) => item[grid.uniqueField]);\r\n\t\t\tconst rowData = this.customGrid\r\n\t\t\t\t.get(this.indexValue)!\r\n\t\t\t\t.getGrid()\r\n\t\t\t\t.api.getRenderedNodes()\r\n\t\t\t\t.map((node) => node.data);\r\n\t\t\tlet deletedRows = rowData.filter((item: any) => keys.includes(item[grid.uniqueField]));\r\n\t\t\tthis.subDeleteIds = deletedRows.map((v: any) => v.id).filter((v: any) => v);\r\n\t\t\tconst idNotRows = deletedRows.filter((v: any) => !v.id);\r\n\t\t\t// console.log('idNotRows----',idNotRows)\r\n\t\t\tconst deleteNodes: any = [];\r\n\t\t\tthis.customGrid\r\n\t\t\t\t.get(this.indexValue)!\r\n\t\t\t\t.getGrid()\r\n\t\t\t\t.api.forEachNode((node: any) => {\r\n\t\t\t\t\tlet main = node.data[grid.uniqueField];\r\n\t\t\t\t\tlet isExit = idNotRows.findIndex((v: any) => v[grid.uniqueField] == main);\r\n\t\t\t\t\tif (isExit > -1) {\r\n\t\t\t\t\t\tdeleteNodes.push(node.data);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t// if(deletedIds.length > 0){\r\n\t\t\t// \tthis.delRows(deletedIds)\r\n\t\t\t// } else {\r\n\t\t\tthis.customGrid.get(this.indexValue)!.selectRowsDeleted(deleteNodes);\r\n\t\t\t// }\r\n\t\t}\r\n\t}\r\n\tgetDetail() {\r\n\t\tthis.web_get(this.getPrm).subscribe((res) => {\r\n\t\t\tthis.detailCb(res);\r\n\t\t});\r\n\t}\r\n\t// 获取详情回调\r\n\tdetailCb(res: any) {\r\n\t\tthis.updateTitle(res);\r\n\t\tif (typeof this.formDisabled() == 'function') {\r\n\t\t\tthis.formDisFunc();\r\n\t\t}\r\n\t\tif (this.hrefBtnList().length > 0) {\r\n\t\t\tthis.setHrefValue();\r\n\t\t}\r\n\t\tthis.gridList().forEach((v) => {\r\n\t\t\tif (v.type == 'form') {\r\n\t\t\t\tthis.subFormModel[v.subDataKey] = res[v.subDataKey][0];\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.gridList().forEach((value) => {\r\n\t\t\tif (value.type == 'grid' && !this.getPrm.data.hasOwnProperty(value.subDataKey)) {\r\n\t\t\t\tthis.getPrm.data[value.subDataKey] = [];\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\tsetHrefValue() {\r\n\t\tthis.hrefBtnList().map((item: any) => {\r\n\t\t\tif (item.hasOwnProperty('searchCount') && typeof item.searchCount == 'object') {\r\n\t\t\t\titem.searchCount.columnFilters.forEach((v: any) => {\r\n\t\t\t\t\tif (typeof v.fiter === 'function') {\r\n\t\t\t\t\t\tv.fiter = v.fiter(this.getPrm.data);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tthis.web_searchCount(item.searchCount).subscribe((res) => {\r\n\t\t\t\t\titem.value = res.totalNum || 0;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\tupdateTitle(res: any) {\r\n\t\tlet mainField = this.form().mainField;\r\n\t\tlet title = res[mainField!];\r\n\t\tthis.userHistoryService.setLastTitle(title);\r\n\t}\r\n\tdataSourceShow() {\r\n\t\tconst grid = this.gridList()[this.indexValue];\r\n\t\tthis.dialogSearchPrm = {};\r\n\t\tthis.selectOptions = this.gridList()[this.indexValue]['selectOptions']!;\r\n\t\tif ((this.selectOptions as any)?.searchPrm) {\r\n\t\t\tlet searchPrm = deepClone((this.selectOptions as any).searchPrm, this)\r\n\t\t\tsearchPrm.columnFilters?.forEach((v: any) => {\r\n\t\t\t\tif (typeof v.fiter == 'function') {\r\n\t\t\t\t\tv.fiter = v.fiter(null, this.getPrm.data || this.cForm.model());\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.dialogSearchPrm = searchPrm;\r\n\t\t}\r\n\t\tthis.dialogSearchPrm.modelName = this.selectOptions.modelName;\r\n\t\tif (this.selectOptions.selectionMode) {\r\n\t\t\tthis.selectOptions.suppressRowDeselection = true;\r\n\t\t\tthis.selectOptions.selectionMode = this.selectOptions.selectionMode;\r\n\t\t\tconst isRowSelectable = this.selectOptions.isRowSelectable;\r\n\t\t\tif (this.selectOptions.selectionMode != 'none') {\r\n\t\t\t\tthis.selectOptions.rowSelection = {\r\n\t\t\t\t\tmode: this.selectOptions.selectionMode == 'single' ? 'singleRow' : 'multiRow',\r\n\t\t\t\t\tisRowSelectable: isRowSelectable ? isRowSelectable : undefined,\r\n\t\t\t\t};\r\n\t\t\t} else {\r\n\t\t\t\tthis.selectOptions.rowSelection = undefined;\r\n\t\t\t}\r\n\t\t}\r\n\t\t// console.log('options-----',this.selectOptions)\r\n\t\tif (grid.uniqueField) {\r\n\t\t\tconst rowData = this.customGrid\r\n\t\t\t\t.get(this.indexValue)!\r\n\t\t\t\t.getGrid()\r\n\t\t\t\t.api.getRenderedNodes()\r\n\t\t\t\t.map((node) => node.data);\r\n\t\t\tthis.selectionKeys = rowData?.map((item: any) => item[grid.uniqueField!]) || [];\r\n\t\t\t// console.log('this.selectionKeys----',this.selectionKeys)\r\n\t\t\tif (typeof this.selectOptions.rowSelection == 'object') {\r\n\t\t\t\tthis.selectOptions.rowSelection.checkboxes = (params) => {\r\n\t\t\t\t\tlet item =\r\n\t\t\t\t\t\tthis.selectOptions.dataKey != ''\r\n\t\t\t\t\t\t\t? rowData.find((v: any) => v[grid.uniqueField] == params.data[this.selectOptions.dataKey!])\r\n\t\t\t\t\t\t\t: rowData.find((v: any) => v[grid.uniqueField] == params.data.id);\r\n\t\t\t\t\tif (item && item.id) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t};\r\n\t\t\t} else if (!this.selectOptions.rowSelection) {\r\n\t\t\t\tthis.selectOptions.rowSelection = {\r\n\t\t\t\t\tmode: 'multiRow',\r\n\t\t\t\t\tcheckboxes: (params) => {\r\n\t\t\t\t\t\tlet item =\r\n\t\t\t\t\t\t\tthis.selectOptions.dataKey != ''\r\n\t\t\t\t\t\t\t\t? rowData.find((v: any) => v[grid.uniqueField] == params.data[this.selectOptions.dataKey!])\r\n\t\t\t\t\t\t\t\t: rowData.find((v: any) => v[grid.uniqueField] == params.data.id);\r\n\t\t\t\t\t\tif (item && item.id) {\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.selectionKeys = [];\r\n\t\t}\r\n\t\tthis.visible = true;\r\n\t}\r\n\r\n\tgoRun(data: any) {\r\n\t\tif (typeof data.url === 'function') {\r\n\t\t\tlet url = data.url(this.getPrm.data);\r\n\t\t\tthis.router.navigate([url]);\r\n\t\t} else {\r\n\t\t\tthis.messageService.add({ severity: 'warn', summary: 'Warn', detail: '请配置跳转链接' });\r\n\t\t}\r\n\t}\r\n\r\n\tauthClick(btn: any) {\r\n\t\tif (btn.hasOwnProperty('onClick')) {\r\n\t\t\tbtn.onClick(this.getPrm.data);\r\n\t\t}\r\n\t}\r\n\tstatusChange(value: any, customSteps: StepsComponent) {\r\n\t\tif (this.authLevel() < 4 || !this.statusConf().isClick) return;\r\n\t\tif (this.id) {\r\n\t\t\tlet param: any = {\r\n\t\t\t\tmodelName: this.modelName,\r\n\t\t\t\tdata: { id: this.id, [this.statusKey()]: value },\r\n\t\t\t};\r\n\t\t\tif (this.isLog) {\r\n\t\t\t\tparam.logModel = `${this.modelName}Log`;\r\n\t\t\t\tparam.log = {\r\n\t\t\t\t\tpid: this.id,\r\n\t\t\t\t\tcontent: `[状态] ${this.getPrm.data![this.statusKey()]} -> ${value}`,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\tthis.web_write(param).subscribe((res) => {\r\n\t\t\t\tthis.getDetail();\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.getPrm.data = Object.assign(this.getPrm.data || {}, {\r\n\t\t\t\t[this.statusKey()]: value,\r\n\t\t\t});\r\n\t\t\tthis.upsertPrm.addData![this.statusKey()] = value;\r\n\t\t\tthis.cForm.triggerModelEffect({ [this.statusKey()]: value });\r\n\t\t\t// customSteps.refreshSteps()\r\n\t\t}\r\n\t}\r\n\r\n\tformDisFunc() {\r\n\t\tlet data = this.formDisabled()!(this.getPrm.data);\r\n\t\tif (typeof data === 'boolean') {\r\n\t\t\tthis.saveBtnDisable = data;\r\n\t\t\tthis.gridDisable = data;\r\n\t\t\tthis.disableForm(data);\r\n\t\t\tthis.disabeldChild(data);\r\n\t\t}\r\n\t\tif (typeof data === 'object') {\r\n\t\t\tconst disabeld = data.disabled;\r\n\t\t\tconst filters = data.filters || [];\r\n\t\t\tif (!filters.includes('form')) {\r\n\t\t\t\tthis.disableForm(disabeld);\r\n\t\t\t}\r\n\t\t\tif (!filters.includes('grid')) {\r\n\t\t\t\tthis.gridDisable = disabeld;\r\n\t\t\t\tthis.disabeldChild(disabeld);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tdisableForm(disable: boolean) {\r\n\t\tthis.formOptions.fields?.forEach((v) => {\r\n\t\t\tv.group?.forEach((g: any) => {\r\n\t\t\t\tlet fieldDisabled = g[formTypeToProps[g.type]].disabled || false;\r\n\t\t\t\tif (disable) {\r\n\t\t\t\t\tthis.cForm.getField(g.key)?.fieldControl!.markAsPristine({ emitEvent: false });\r\n\t\t\t\t\tthis.cForm.getField(g.key)?.fieldControl!.disable({ emitEvent: false });\r\n\t\t\t\t} else {\r\n\t\t\t\t\t!fieldDisabled && this.cForm.getField(g.key)?.fieldControl!.enable({ emitEvent: false });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\tdisabeldChild(disabeld: boolean) {\r\n\t\tthis.gridList().forEach((v, index: any) => {\r\n\t\t\tif (v.type == 'grid') {\r\n\t\t\t\tv.gridOptions.columnDefs.forEach((item: any) => {\r\n\t\t\t\t\tif (disabeld && item.hasOwnProperty('editable')) {\r\n\t\t\t\t\t\titem.editable = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// 同一个页面disabled false => true \r\n\t\t\t\t\tif(!disabeld && item.hasOwnProperty('editable') && !item.editable && typeof item.editable === 'boolean'){\r\n\t\t\t\t\t\titem.editable = true\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tthis.customGrid.get(index)!.getGrid().api.setGridOption('columnDefs', v.gridOptions.columnDefs);\r\n\t\t\t} else if (v.type == 'form') {\r\n\t\t\t\tv.fields?.forEach((item: any) => {\r\n\t\t\t\t\titem.group?.forEach((g: any) => {\r\n\t\t\t\t\t\tlet fieldDisabled = g[formTypeToProps[g.type]].disabled || false;\r\n\t\t\t\t\t\tif (disabeld) {\r\n\t\t\t\t\t\t\tthis.tabForm.get(index)!.getField(g.key)?.fieldControl!.markAsPristine({ emitEvent: false });\r\n\t\t\t\t\t\t\tthis.tabForm.get(index)!.getField(g.key)?.fieldControl!.disable({ emitEvent: false });\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t!fieldDisabled && this.cForm.getField(g.key)?.fieldControl!.enable({ emitEvent: false });\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\tsetDisabled() {\r\n\t\tthis.gridList().forEach((v, index: any) => {\r\n\t\t\tif (v.type == 'form') {\r\n\t\t\t\tv.fields?.forEach((item: any) => {\r\n\t\t\t\t\titem.group?.forEach((g: any) => {\r\n\t\t\t\t\t\tthis.tabForm.get(index)!.getField(g.key)?.fieldControl!.disable({ emitEvent: false });\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\ttabClick() {\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.tabForm.get(this.indexValue) && this.tabForm.get(this.indexValue)!.reCalcLabelSize();\r\n\t\t}, 0);\r\n\t}\r\n\ttoggleLog() {\r\n\t\tthis.sidebarMode.set(this.sidebarMode() === 'left' ? 'right' : 'left');\r\n\t}\r\n}\r\n","<div class=\"md:overflow-hidden\">\r\n\t<div class=\"flex md:flex-wrap lg:flex-nowrap items-center md:justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\r\n\t\t<div class=\"lg:basis-1/3 order-1\">\r\n\t\t\t<app-crumb-action\r\n\t\t\t\t[addVisible]=\"addVisible()\"\r\n\t\t\t\t[newUrl]=\"newUrl\"\r\n\t\t\t\t[isShowCog]=\"true\"\r\n\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t[authLevel]=\"authLevel()\"\r\n\t\t\t\t[actionList]=\"actionList()\"\r\n\t\t\t\t[configNewPath]=\"configNewPath()\"\r\n\t\t\t\t[data]=\"getPrm.data ?? {}\"\r\n\t\t\t\t[saveBtnDisable]=\"saveBtnDisable\"\r\n\t\t\t\t(actionEvent)=\"authClick($event)\"\r\n\t\t\t\t(saveEvent)=\"submitForm()\">\r\n\t\t\t</app-crumb-action>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"basis-1/5 lg:basis-2/3 order-2 lg:order-2 md:order-last md:basis-full md:mt-[6px]\">\r\n\t\t\t<href-btn-list\r\n\t\t\t\t[hrefs]=\"hrefBtnList()\"\r\n\t\t\t\t(hrefClick)=\"goRun($event)\"></href-btn-list>\r\n\t\t\t<!-- @if (id) {\r\n\t\t\t\t@for (btn of hrefBtnList(); track btn) {\r\n\t\t\t\t\t<p-button\r\n\t\t\t\t\t\t[variant]=\"btn?.variant\"\r\n\t\t\t\t\t\t[severity]=\"btn?.severity\"\r\n\t\t\t\t\t\tclass=\"mr-[6px]\"\r\n\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t[icon]=\"btn?.icon\"\r\n\t\t\t\t\t\tlabel=\"{{ btn.i18nKey ? i18n.fanyi(btn.i18nKey) : btn.label }}\"\r\n\t\t\t\t\t\t(click)=\"goRun(btn)\">\r\n\t\t\t\t\t</p-button>\r\n\t\t\t\t}\r\n\t\t\t} -->\r\n\t\t</div>\r\n\t\t<div class=\"basis-1/3 order-3 flex flex-row-reverse\">\r\n\t\t\t@if (modelLog()) {\r\n\t\t\t\t<div class=\"hidden md:block\">\r\n\t\t\t\t\t<span\r\n\t\t\t\t\t\t[class]=\"'iconfont icon-sidebar icon-sidebar-' + (sidebarMode())\"\r\n\t\t\t\t\t\t(click)=\"toggleLog()\"></span>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"flex\">\r\n\t\t<div class=\"px-2 flex flex-wrap items-center flex-1\">\r\n\t\t\t<div class=\"hidden md:basis-1/3 py-1 basis-full md:flex items-center flex-row order-1\">\r\n\t\t\t\t@for (action of actionList(); let i = $index; track action) {\r\n\t\t\t\t\t<p-button\r\n\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t[icon]=\"getPrm.data?.icon\"\r\n\t\t\t\t\t\t[loading]=\"action.loading\"\r\n\t\t\t\t\t\t[label]=\"action.i18nKey ? (action.i18nKey | translate) : action.label\"\r\n\t\t\t\t\t\t[disabled]=\"action.btnDisabled ? action.btnDisabled(getPrm.data) : false\"\r\n\t\t\t\t\t\t[styleClass]=\"\r\n\t\t\t\t\t\t\t(action.auth || 0) > (authLevel() || 0) || !!action.btnHidden?.(getPrm.data)\r\n\t\t\t\t\t\t\t\t? 'form-action hidden'\r\n\t\t\t\t\t\t\t\t: 'form-action block mr-[.5rem]'\r\n\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t(onClick)=\"action.onClick != '' && action.onClick?.(getPrm.data,action)\">\r\n\t\t\t\t\t</p-button>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t\t<div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first w-full\">\r\n\t\t\t\t@if(stepsVisible) {\r\n\t\t\t\t\t<custom-steps\r\n\t\t\t\t\t\t#customSteps\r\n\t\t\t\t\t\tclass=\"w-full\"\r\n\t\t\t\t\t\t[steps]=\"statusSteps()\"\r\n\t\t\t\t\t\t[modelLog]=\"showLog()\"\r\n\t\t\t\t\t\t[current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\r\n\t\t\t\t\t\t[authLevel]=\"authLevel()\"\r\n\t\t\t\t\t\t[isClick]=\"this.statusConf().isClick\"\r\n\t\t\t\t\t\t(change)=\"statusChange($event, customSteps)\">\r\n\t\t\t\t\t</custom-steps>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t@if (showLog()) {\r\n\t\t\t<div class=\"lg:w-[400px] md:w-[300px] hidden md:block\"></div>\r\n\t\t}\r\n\t</div>\r\n\t<div class=\"main flex flex-wrap\">\r\n\t\t<div class=\"w-full md:flex-1 md:h-full md:overflow-y-auto\">\r\n\t\t\t<div class=\"bg-white mx-2 form-panel\">\r\n\t\t\t\t<div class=\"p-2 flex-1\">\r\n\t\t\t\t\t<form [formGroup]=\"form().form!\">\r\n\t\t\t\t\t\t<custom-form\r\n\t\t\t\t\t\t\t#cForm\r\n\t\t\t\t\t\t\t[options]=\"formOptions\"\r\n\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t\t\t\t\t[model]=\"getPrm.data ?? {}\"></custom-form>\r\n\t\t\t\t\t</form>\r\n\t\t\t\t</div>\r\n\t\t\t\t@if (gridList() && gridList().length > 0) {\r\n\t\t\t\t\t<div class=\"relative mb-2\">\r\n\t\t\t\t\t\t<p-tabs [(value)]=\"indexValue\">\r\n\t\t\t\t\t\t\t<p-tablist>\r\n\t\t\t\t\t\t\t\t@for (fchild of gridList(); let i = $index; track fchild) {\r\n\t\t\t\t\t\t\t\t\t<p-tab\r\n\t\t\t\t\t\t\t\t\t\t[value]=\"i\"\r\n\t\t\t\t\t\t\t\t\t\t(click)=\"tabClick()\">\r\n\t\t\t\t\t\t\t\t\t\t{{ fchild.i18nKey ? i18n.fanyi(fchild.i18nKey) : fchild.title }}\r\n\t\t\t\t\t\t\t\t\t</p-tab>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</p-tablist>\r\n\t\t\t\t\t\t</p-tabs>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t\t@for (grid of gridList(); let i = $index; track grid) {\r\n\t\t\t\t\t@if (grid.type == 'grid') {\r\n\t\t\t\t\t\t<custom-grid\r\n\t\t\t\t\t\t\t#customGrid\r\n\t\t\t\t\t\t\t[hidden]=\"indexValue != i\"\r\n\t\t\t\t\t\t\t[rowData]=\"getPrm.data?.[grid.subDataKey!]\"\r\n\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t\t\t\t\t(deleteEmit)=\"delRows($event)\"\r\n\t\t\t\t\t\t\t[addType]=\"grid.subTableSource\"\r\n\t\t\t\t\t\t\t(addEmit)=\"dataSourceShow()\"\r\n\t\t\t\t\t\t\t[gridOptions]=\"grid.gridOptions\"\r\n\t\t\t\t\t\t\t[gridDisable]=\"gridDisable\"\r\n\t\t\t\t\t\t\t[authLevel]=\"authLevel()\"\r\n\t\t\t\t\t\t\t[showDelete]=\"grid.showDelete\"\r\n\t\t\t\t\t\t\t[selectData]=\"grid.selectData\"\r\n\t\t\t\t\t\t\t[addSort]=\"grid.addSort\">\r\n\t\t\t\t\t\t</custom-grid>\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t<!-- @if(indexValue == i){\r\n\t\t\t\t\t\t\t<form [formGroup]=\"grid.form!\">\r\n\t\t\t\t\t\t\t\t<custom-form\r\n\t\t\t\t\t\t\t\t[options]=\"grid\"\r\n\t\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t</custom-form>\r\n\t\t\t\t\t\t\t</form>\r\n\t\t\t\t\t\t} -->\r\n\t\t\t\t\t\t<custom-form\r\n\t\t\t\t\t\t\t#tabForm\r\n\t\t\t\t\t\t\t[hidden]=\"indexValue != i\"\r\n\t\t\t\t\t\t\t[options]=\"grid\"\r\n\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t\t\t\t\t[model]=\"subFormModel[grid.subDataKey!] || {}\">\r\n\t\t\t\t\t\t</custom-form>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t@if (showLog()) {\r\n\t\t\t<div class=\"w-full lg:w-[400px] md:w-[300px] md:h-full md:overflow-y-auto hidden md:block\">\r\n\t\t\t\t<custom-log [logs]=\"getPrm.data?.log ?? []\"></custom-log>\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n</div>\r\n<row-selector\r\n\t[(visible)]=\"visible\"\r\n\t[searchPrm]=\"dialogSearchPrm\"\r\n\t[gridOptions]=\"selectOptions\"\r\n\t[selectionKeys]=\"selectionKeys\"\r\n\t(onOk)=\"onOk($event)\"\r\n\t(cancelSelect)=\"onCancelSelected($event)\">\r\n</row-selector>\r\n","import { Component, OnInit, input, effect, ViewEncapsulation, ViewChild } from '@angular/core';\r\nimport { ImportOptions, ImportComponent } from '../import/import.component';\r\nimport { HeadComponent } from '../head/head.component';\r\nimport { GridComponent, GridOptions } from '../grid/grid/grid.component';\r\nimport { AmComponent, Search } from '../am/am.component';\r\nimport { PagerComponent } from '../grid/pager/pager.component';\r\nimport { CrumbActionComponent } from '../crumb-action/crumb-action.component';\r\n\r\n@Component({\r\n\tselector: 'app-page-grid-list',\r\n\tstandalone: true,\r\n\timports: [GridComponent, CrumbActionComponent, PagerComponent, HeadComponent, ImportComponent],\r\n\ttemplateUrl: './page-grid-list.component.html',\r\n\tstyleUrl: './page-grid-list.component.scss',\r\n\tencapsulation: ViewEncapsulation.None,\r\n})\r\nexport class PageGridListComponent extends AmComponent {\r\n\t@ViewChild('customGrid') customGrid!: GridComponent;\r\n\tparams = input<any>();\r\n\tactions = input<any[]>([]);\r\n\tmenus = input<any[]>([]);\r\n\tgridOptions = input<GridOptions>();\r\n\tauthLevel = input<number>(-1);\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.exportPrm = {};\r\n\t\tthis.importPrm = {};\r\n\r\n\t\teffect(() => {\r\n\t\t\tthis.modelName = this.gridOptions()!.modelName!;\r\n\t\t\tif (!this.gridOptions()!.cacheBlockSize) {\r\n\t\t\t\tthis.gridOptions()!.cacheBlockSize = 50;\r\n\t\t\t}\r\n\t\t\tthis.searchPrm = this.genSearchPrm();\r\n\t\t});\r\n\t}\r\n\r\n\tgenSearchPrm() {\r\n\t\tconst searchPrm: Search = {\r\n\t\t\tmodelName: this.modelName,\r\n\t\t\torgField: this.params().orgField,\r\n\t\t\toffset: 0,\r\n\t\t\tlimit: this.gridOptions()!.cacheBlockSize,\r\n\t\t\tsorts: [{ field: 'createdAt', isAsc: false }],\r\n\t\t\tcount: true,\r\n\t\t};\r\n\t\tif (this.params()?.searchPrm?.columnFilters) {\r\n\t\t\tsearchPrm.columnFilters = this.params().searchPrm.columnFilters;\r\n\t\t}\r\n\t\tif (this.params()?.searchPrm?.sorts) {\r\n\t\t\tsearchPrm.sorts = this.params().searchPrm.sorts;\r\n\t\t}\r\n\t\treturn searchPrm;\r\n\t}\r\n}\r\n","<div class=\"flex flex-col h-full\">\r\n\t<div class=\"flex flex-wrap items-center py-1 px-1 bg-white\">\r\n\t\t<div class=\"lg:basis-1/6 md:basis-1/4 basis-1/2 flex justify-start order-1\">\r\n\t\t\t<app-crumb-action\r\n\t\t\t\t[addVisible]=\"params().addVisible\"\r\n\t\t\t\t[exportVisible]=\"params().exportVisible ?? true\"\r\n\t\t\t\t[importVisible]=\"params().importVisible ?? true\"\r\n\t\t\t\t[newUrl]=\"params().newUrl\"\r\n\t\t\t\t[onExport]=\"params().onExport\"\r\n\t\t\t\t[isList]=\"true\"\r\n\t\t\t\t[isShowCog]=\"true\"\r\n\t\t\t\t[menus]=\"menus()\"\r\n\t\t\t\t[authLevel]=\"authLevel()\">\r\n\t\t\t</app-crumb-action>\r\n\t\t</div>\r\n\t\t<div class=\"lg:basis-4/6 md:basis-1/2 basis-full flex justify-center items-center md:order-2 order-last\">\r\n\t\t\t<custom-head\r\n\t\t\t\tclass=\"max-lg:min-w-full\"\r\n\t\t\t\t[actions]=\"actions()\"\r\n\t\t\t\t[grid]=\"customGrid\"\r\n\t\t\t\t[authLevel]=\"authLevel()\"\r\n\t\t\t\t[gridOptions]=\"gridOptions()\"></custom-head>\r\n\t\t</div>\r\n\t\t<div class=\"lg:basis-1/6 md:basis-1/4 basis-1/2 flex justify-end order-3\">\r\n\t\t\t<custom-pager></custom-pager>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"flex-1\">\r\n\t\t<custom-grid\r\n\t\t\t#customGrid\r\n\t\t\t[upsert]=\"upsertPrm\"\r\n\t\t\t[searchPrm]=\"searchPrm\"\r\n\t\t\t[showAct]=\"false\"\r\n\t\t\t[gridOptions]=\"gridOptions()!\">\r\n\t\t</custom-grid>\r\n\t</div>\r\n</div>\r\n<app-import\r\n\t[fileName]=\"params()?.importFileName\"\r\n\t[funcName]=\"params()?.importFuncName\"\r\n\t[orgVisible]=\"params()?.importOrgVisible\"\r\n\t[orgField]=\"params()?.importOrgField\"\r\n\t[grid]=\"customGrid\"\r\n\t[modelName]=\"gridOptions()!.modelName ?? ''\">\r\n</app-import>\r\n","import { Component, computed } from '@angular/core';\r\nimport { LoadingService } from '../service/loading.service';\r\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\r\n\r\n@Component({\r\n\tselector: 'custom-loading',\r\n\tstandalone: true,\r\n\timports: [ProgressSpinnerModule],\r\n\ttemplateUrl: './loading.component.html',\r\n\tstyleUrl: './loading.component.scss',\r\n})\r\nexport class LoadingComponent {\r\n\tvisible = computed(() => {\r\n\t\tconsole.log('---------------computed', this.loadingService.getLoading());\r\n\t\treturn this.loadingService.getLoading();\r\n\t});\r\n\tconstructor(private loadingService: LoadingService) {}\r\n}\r\n","@if (visible()) {\r\n\t<div class=\"mask\"></div>\r\n\t<div class=\"progress\">\r\n\t\t<p-progressSpinner\r\n\t\t\t[style]=\"{ width: '50px', height: '50px' }\"\r\n\t\t\tstyleClass=\"custom-spinner\"\r\n\t\t\tstrokeWidth=\"6\"\r\n\t\t\tanimationDuration=\"1s\"></p-progressSpinner>\r\n\t</div>\r\n}\r\n","import { CommonModule,isPlatformBrowser } from \"@angular/common\";\r\nimport { Component, computed, inject, PLATFORM_ID } from '@angular/core';\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { RadioButtonModule } from 'primeng/radiobutton'\r\nimport Aura from '@primeng/themes/aura';\r\nimport { PrimeNG } from \"primeng/config\";\r\nimport { $dt, $t, updatePreset, updateSurfacePalette } from '@primeng/themes';\r\nimport { ThemeConfigService } from \"../service/themeConfig.service\";\r\nimport { themeQuartz } from \"ag-grid-enterprise\";\r\n\r\nconst presets = {\r\n Aura\r\n}\r\ninterface PaletteType {\r\n name:string,\r\n palette:{\r\n 50?: string;\r\n 100?: string;\r\n 200?: string;\r\n 300?: string;\r\n 400?: string;\r\n 500?: string;\r\n 600?: string;\r\n 700?: string;\r\n 800?: string;\r\n 900?: string;\r\n 950?: string;\r\n }\r\n}\r\n@Component({\r\n selector: 'app-theme-config-panel',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, ButtonModule, RadioButtonModule],\r\n template: `\r\n <div class=\"config-panel-content\">\r\n <div class=\"config-panel-colors\">\r\n <span class=\"config-panel-label\">Primary</span>\r\n <div class=\"flex justify-start pt-2 flex-wrap gap-2\">\r\n @for (primaryColor of primaryColors(); track primaryColor.name) {\r\n <button\r\n type=\"button\"\r\n [title]=\"primaryColor.name\"\r\n (click)=\"updateColors($event, 'primary', primaryColor)\"\r\n [ngClass]=\"{ 'active-color': primaryColor.name === selectedPrimaryColor() }\"\r\n [style]=\"{\r\n 'background-color': primaryColor.name === 'noir' ? 'var(--text-color)' : primaryColor!.palette['500']\r\n }\"\r\n ></button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n host: {\r\n class: 'config-panel hidden'\r\n },\r\n styles:[\r\n `\r\n :host {\r\n position: absolute;\r\n z-index:9999;\r\n top: calc(100% + 2px);\r\n right: 0;\r\n inset-inline-end: 0;\r\n width: 18rem;\r\n padding: .75rem;\r\n background-color: var(--overlay-background);\r\n border-radius: 6px;\r\n border: 1px solid var(--border-color);\r\n transform-origin: top;\r\n box-shadow: 0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;\r\n background:#fff\r\n }\r\n :host > div button {\r\n border: none;\r\n width: 1.25rem;\r\n height: 1.25rem;\r\n border-radius: 50%;\r\n padding: 0;\r\n cursor: pointer;\r\n outline-color: transparent;\r\n outline-width: 2px;\r\n outline-style: solid;\r\n outline-offset: 1px;\r\n }\r\n :host > div button.active-color {\r\n outline-color: var(--p-primary-color);\r\n }\r\n `\r\n ]\r\n})\r\nexport class ThemeConfigPanelComponent {\r\n config: PrimeNG = inject(PrimeNG);\r\n configService: ThemeConfigService = inject(ThemeConfigService)\r\n platformId = inject(PLATFORM_ID);\r\n\r\n selectedPrimaryColor = computed(() => {\r\n return this.configService.appState()!.primary;\r\n });\r\n primaryColors = computed(() => {\r\n const preset = this.configService.appState()?.preset\r\n // @ts-ignore\r\n const presetPalette = presets[preset].primitive;\r\n const colors = ['emerald', 'green', 'lime', 'orange', 'amber', 'yellow', 'teal', 'cyan', 'sky', 'blue', 'indigo', 'violet', 'purple', 'fuchsia', 'pink', 'rose'];\r\n const palettes:Array<PaletteType> = [];\r\n\r\n colors.forEach((color) => {\r\n palettes.push({\r\n name: color,\r\n palette: presetPalette[color]\r\n });\r\n });\r\n return palettes;\r\n \r\n });\r\n\r\n getPresetExt() {\r\n const color = this.primaryColors().find((c) => c.name === this.selectedPrimaryColor());\r\n return {\r\n semantic: {\r\n primary: color!.palette,\r\n colorScheme: {\r\n light: {\r\n primary: {\r\n color: '{primary.500}',\r\n contrastColor: '#ffffff',\r\n hoverColor: '{primary.600}',\r\n activeColor: '{primary.700}'\r\n },\r\n highlight: {\r\n background: '{primary.50}',\r\n focusBackground: '{primary.100}',\r\n color: '{primary.700}',\r\n focusColor: '{primary.800}'\r\n }\r\n },\r\n dark: {\r\n primary: {\r\n color: '{primary.400}',\r\n contrastColor: '{surface.900}',\r\n hoverColor: '{primary.300}',\r\n activeColor: '{primary.200}'\r\n },\r\n highlight: {\r\n background: 'color-mix(in srgb, {primary.400}, transparent 84%)',\r\n focusBackground: 'color-mix(in srgb, {primary.400}, transparent 76%)',\r\n color: 'rgba(255,255,255,.87)',\r\n focusColor: 'rgba(255,255,255,.87)'\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }\r\n\r\n updateColors(event: any, type: string, color: any) {\r\n if (type === 'primary') {\r\n this.configService.appState.update((state) => ({ ...state, primary: color.name }));\r\n } else if (type === 'surface') {\r\n this.configService.appState.update((state) => ({ ...state, surface: color.name }));\r\n }\r\n this.applyTheme(type, color);\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n applyTheme(type: string, color: any) {\r\n if (type === 'primary') {\r\n updatePreset(this.getPresetExt());\r\n } else if (type === 'surface') {\r\n updateSurfacePalette(color.palette);\r\n }\r\n }\r\n\r\n}","import { Component } from \"@angular/core\";\r\nimport {ThemeConfigPanelComponent} from './theme-config-panel.compoent'\r\nimport {StyleClassModule} from 'primeng/styleclass'\r\n// import {}\r\n@Component({\r\n selector: 'app-theme-config',\r\n standalone: true,\r\n imports:[StyleClassModule,ThemeConfigPanelComponent],\r\n template:`\r\n <div class=\"relative\" style=\"margin-left:1rem\">\r\n <button type=\"button\" \r\n class=\"topbar-item config-item \" \r\n enterActiveClass=\"animate-scalein\" \r\n enterFromClass=\"hidden\" \r\n leaveActiveClass=\"animate-fadeout\" \r\n leaveToClass=\"hidden\"\r\n pStyleClass=\"@next\" \r\n [hideOnOutsideClick]=\"true\"> \r\n <i class=\"pi pi-palette\"></i>\r\n </button>\r\n <app-theme-config-panel />\r\n </div>\r\n `,\r\n styles:[\r\n `.topbar-item {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-shrink: 0;\r\n border: 1px solid var(--border-color);\r\n width: 2rem;\r\n height: 2rem;\r\n transition: outline-color .2s, border-color .2s;\r\n border-radius: 3.5px;\r\n margin: 0;\r\n padding: 0;\r\n outline-color: transparent;\r\n background-color: var(--card-background);\r\n cursor: pointer;\r\n }`,\r\n `.config-item {\r\n background-color:var(--p-primary-color)\r\n }\r\n .config-item i {\r\n color: var(--p-primary-contrast-color);\r\n }\r\n `\r\n \r\n ]\r\n})\r\n\r\nexport class ThemeConfigComponent {\r\n\r\n constructor(){\r\n }\r\n}","/*\r\n * Public API Surface of am-front-ui\r\n */\r\nexport * from './lib/am/am.component'\r\n\r\nexport * from './lib/form/form/form.component'\r\nexport * from './lib/form/form-field'\r\nexport * from './lib/form/form-type'\r\n\r\nexport * from './lib/page-form/page-form.interface'\r\nexport * from './lib/crumb-action/crumb-action.component'\r\n\r\nexport * from './lib/grid/pager/pager.component'\r\n\r\nexport * from './lib/grid/grid/grid.component'\r\n\r\nexport * from './lib/grid/cell-edit/index'\r\n\r\nexport * from './lib/grid/grid-utils'\r\n\r\nexport * from './lib/grid/cell-render/link-render'\r\n\r\nexport * from './lib/grid/cell-render/async-renderer'\r\n\r\nexport * from './lib/grid/actions/actions.component'\r\n\r\nexport * from './lib/head/head.component'\r\n\r\nexport * from './lib/import/import.component'\r\n\r\nexport * from './lib/log/log.component'\r\n\r\nexport * from './lib/row-selector/row-selector.component'\r\n\r\nexport * from './lib/share/utils'\r\n\r\nexport * from './lib/service/loading.service'\r\n\r\nexport * from './lib/service/action.service'\r\n\r\nexport * from './lib/service/i18n.service'\r\n\r\nexport * from './lib/service/themeConfig.service'\r\n\r\nexport * from './lib/page-form/page-form.component'\r\n\r\nexport * from './lib/page-grid-list/page-grid-list.component'\r\n\r\nexport * from './lib/loading/loading.component'\r\n\r\nexport * from './lib/steps/steps.component'\r\n\r\nexport * from './lib/row-selector/row-selector.component'\r\n\r\nexport * from './lib/search/search/search.component'\r\n\r\nexport * from './lib/page-form/page-form.interface'\r\n\r\nexport * from './lib/service/userHistory.service'\r\n\r\nexport * from './lib/theme-config/theme-config.compoent'\r\n\r\nexport * from './lib/log/log.component'\r\n\r\nexport * from './lib/import/import.component'\r\n\r\nexport * from './lib/steps/steps.component'\r\n\r\nexport * from './lib/row-selector/row-selector.component'\r\n\r\nexport * from './lib/href-btn-list/href-btn-list.component'\r\n\r\n\r\n// export * from './styles/styles.d.ts'\r\n\r\n// export * from './lib/styles/styles.scss'\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["filter","i1","i1.ActionService","i3","i2","debounceTime","i2.ActionService","i4","i3.I18nService","i5","i2.I18nService","RowSelectorComponent","rowselectorPop","map","i1.LoadingService"],"mappings":"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"}
1
+ {"version":3,"file":"imm-element-ui.mjs","sources":["../../../projects/imm-element-ui/src/lib/service/loading.service.ts","../../../projects/imm-element-ui/src/lib/service/i18n.service.ts","../../../projects/imm-element-ui/src/lib/am/am.component.ts","../../../projects/imm-element-ui/src/lib/form/form-field/field-control.ts","../../../projects/imm-element-ui/src/lib/service/action.service.ts","../../../projects/imm-element-ui/src/lib/form/form-field/label.directive.ts","../../../projects/imm-element-ui/src/lib/form/form-field/field-utils.ts","../../../projects/imm-element-ui/src/lib/form/form-field/context-menu.ts","../../../projects/imm-element-ui/src/lib/form/form-type/inputtext.type.ts","../../../projects/imm-element-ui/src/lib/form/form-type/inputnumber.type.ts","../../../projects/imm-element-ui/src/lib/share/utils.ts","../../../projects/imm-element-ui/src/lib/form/form-type/select.type.ts","../../../projects/imm-element-ui/src/lib/form/form-type/treeselect.type.ts","../../../projects/imm-element-ui/src/lib/form/form-type/datepicker.type.ts","../../../projects/imm-element-ui/src/lib/form/form-type/autocomplete.type.ts","../../../projects/imm-element-ui/src/lib/form/form-type/multiselect.type.ts","../../../projects/imm-element-ui/src/lib/form/form-type/radio.type.ts","../../../projects/imm-element-ui/src/lib/form/form-type/textarea.type.ts","../../../projects/imm-element-ui/src/lib/form/form-type/upload.type.ts","../../../projects/imm-element-ui/src/lib/form/form-type/image.type.ts","../../../projects/imm-element-ui/src/lib/form/form-type/codemirror.type.ts","../../../projects/imm-element-ui/src/lib/service/themeConfig.service.ts","../../../projects/imm-element-ui/src/lib/grid/grid-utils.ts","../../../projects/imm-element-ui/src/lib/grid/cell-edit/cell-edit-inputText.compoent.ts","../../../projects/imm-element-ui/src/lib/grid/cell-edit/cell-edit-inputNumber.component.ts","../../../projects/imm-element-ui/src/lib/grid/cell-edit/cell-edit-datePicker.compoent.ts","../../../projects/imm-element-ui/src/lib/grid/cell-edit/cell-edit-select.component.ts","../../../projects/imm-element-ui/src/lib/grid/cell-edit/cell-edit-autoComplete.component.ts","../../../projects/imm-element-ui/src/lib/grid/cell-edit/cell-edit-inputDate.component.ts","../../../projects/imm-element-ui/src/lib/grid/cell-render/link-render.ts","../../../projects/imm-element-ui/src/lib/grid/cell-render/async-renderer.ts","../../../projects/imm-element-ui/src/lib/grid/cell-render/chip-render.ts","../../../projects/imm-element-ui/src/lib/grid/cell-render/img-renderer.ts","../../../projects/imm-element-ui/src/lib/grid/cell-render/row-span.ts","../../../projects/imm-element-ui/src/lib/grid/mock-data.ts","../../../projects/imm-element-ui/src/lib/grid/grid/grid.component.ts","../../../projects/imm-element-ui/src/lib/grid/grid/grid.component.html","../../../projects/imm-element-ui/src/lib/search/pop-list/pop-list.component.ts","../../../projects/imm-element-ui/src/lib/search/pop-list/pop-list.component.html","../../../projects/imm-element-ui/src/lib/search/pop-select/pop-select.component.ts","../../../projects/imm-element-ui/src/lib/search/pop-select/pop-select.component.html","../../../projects/imm-element-ui/src/lib/search/pop-tree/pop-tree.component.ts","../../../projects/imm-element-ui/src/lib/search/pop-tree/pop-tree.component.html","../../../projects/imm-element-ui/src/lib/search/mock-data.ts","../../../projects/imm-element-ui/src/lib/search/search-utils.ts","../../../projects/imm-element-ui/src/lib/search/pop-date/pop-date.component.ts","../../../projects/imm-element-ui/src/lib/search/pop-date/pop-date.component.html","../../../projects/imm-element-ui/src/lib/search/pop-self/pop-self.component.ts","../../../projects/imm-element-ui/src/lib/search/pop-self/pop-self.component.html","../../../projects/imm-element-ui/src/lib/search/pop-sort/pop-sort.component.ts","../../../projects/imm-element-ui/src/lib/search/pop-sort/pop-sort.component.html","../../../projects/imm-element-ui/src/lib/search/pop-panel/pop-panel.component.ts","../../../projects/imm-element-ui/src/lib/search/pop-panel/pop-panel.component.html","../../../projects/imm-element-ui/src/lib/search/text-panel/text-panel.component.ts","../../../projects/imm-element-ui/src/lib/search/text-panel/text-panel.component.html","../../../projects/imm-element-ui/src/lib/search/search-tip/search-tip.component.ts","../../../projects/imm-element-ui/src/lib/search/search-tip/search-tip.component.html","../../../projects/imm-element-ui/src/lib/search/search/search.component.ts","../../../projects/imm-element-ui/src/lib/search/search/search.component.html","../../../projects/imm-element-ui/src/lib/row-selector/row-selector.component.ts","../../../projects/imm-element-ui/src/lib/row-selector/row-selector.component.html","../../../projects/imm-element-ui/src/lib/form/form-type/rowselector.type.ts","../../../projects/imm-element-ui/src/lib/form/form-field/form-type.ts","../../../projects/imm-element-ui/src/lib/form/form-field/form-field.ts","../../../projects/imm-element-ui/src/lib/form/form/form.component.ts","../../../projects/imm-element-ui/src/lib/form/form/form.component.html","../../../projects/imm-element-ui/src/lib/page-form/page-form.interface.ts","../../../projects/imm-element-ui/src/lib/crumb-action/crumb-action.component.ts","../../../projects/imm-element-ui/src/lib/crumb-action/crumb-action.component.html","../../../projects/imm-element-ui/src/lib/grid/pager/pager.component.ts","../../../projects/imm-element-ui/src/lib/grid/pager/pager.component.html","../../../projects/imm-element-ui/src/lib/grid/actions/actions.component.ts","../../../projects/imm-element-ui/src/lib/grid/actions/actions.component.html","../../../projects/imm-element-ui/src/lib/head/head.component.ts","../../../projects/imm-element-ui/src/lib/head/head.component.html","../../../projects/imm-element-ui/src/lib/import/import.component.ts","../../../projects/imm-element-ui/src/lib/import/import.component.html","../../../projects/imm-element-ui/src/lib/log/log.component.ts","../../../projects/imm-element-ui/src/lib/log/log.component.html","../../../projects/imm-element-ui/src/lib/service/userHistory.service.ts","../../../projects/imm-element-ui/src/lib/steps/steps.component.ts","../../../projects/imm-element-ui/src/lib/steps/steps.component.html","../../../projects/imm-element-ui/src/lib/href-btn-list/href-btn-list.component.ts","../../../projects/imm-element-ui/src/lib/href-btn-list/href-btn-list.component.html","../../../projects/imm-element-ui/src/lib/page-form/page-form.component.ts","../../../projects/imm-element-ui/src/lib/page-form/page-form.component.html","../../../projects/imm-element-ui/src/lib/page-grid-list/page-grid-list.component.ts","../../../projects/imm-element-ui/src/lib/page-grid-list/page-grid-list.component.html","../../../projects/imm-element-ui/src/lib/loading/loading.component.ts","../../../projects/imm-element-ui/src/lib/loading/loading.component.html","../../../projects/imm-element-ui/src/lib/theme-config/theme-config-panel.compoent.ts","../../../projects/imm-element-ui/src/lib/theme-config/theme-config.compoent.ts","../../../projects/imm-element-ui/src/public-api.ts","../../../projects/imm-element-ui/src/imm-element-ui.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\nimport { debounceTime, filter, pairwise, Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class LoadingService {\n\tloading = signal<boolean>(false);\n\tloading$ = new Subject<boolean>();\n\tconstructor() {\n\t\tthis.loading$\n\t\t\t.pipe(\n\t\t\t\tpairwise(),\n\t\t\t\tfilter(([prev, curr]) => prev === true && curr === false),\n\t\t\t\tdebounceTime(300),\n\t\t\t)\n\t\t\t.subscribe((loading) => {\n\t\t\t\tthis.loading.set(loading[1]);\n\t\t\t});\n\t\t\t\n\t\t\tthis.loading$\n\t\t\t.pipe(\n\t\t\t\tpairwise(),\n\t\t\t\tfilter(([prev, curr]) => prev === false && curr === true),\n\t\t\t)\n\t\t\t.subscribe((loading) => {\n\t\t\t\tthis.loading.set(loading[1]);\n\t\t\t});\n\t}\n\n\tsetLoading(loading: boolean): void {\n\t\tthis.loading$.next(loading);\n\t}\n\n\tgetLoading(): boolean {\n\t\treturn this.loading();\n\t}\n}\n","import { Injectable, InjectionToken } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { Platform } from '@angular/cdk/platform';\n// import { registerLocaleData } from '@angular/common';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PrimeNG } from 'primeng/config';\n\nexport interface LangData {\n abbr: string;\n text: string;\n langKey:string\n} \nexport const LANGS: { [key: string]: LangData } = {\n 'zh-CN': {\n text: '简体中文',\n langKey: 'zh-CN',\n abbr: '🇨🇳',\n },\n 'en-US': {\n text: 'English',\n langKey: 'en-US',\n abbr: '🇬🇧',\n },\n 'th-TH': {\n text: 'แบบไทย',\n langKey: 'th-TH',\n abbr: '🇹🇭',\n },\n}\nexport const I18N_Token = InjectionToken<I18NServiceInterface>\nexport interface I18NServiceInterface {\n [key: string]: any;\n /**\n * Call `use` to trigger change notification\n *\n * 调用 `use` 触发变更通知\n */\n readonly change: Observable<string>;\n /**\n * Get the default language\n *\n * 获取默认语言\n */\n readonly defaultLang: string;\n /**\n * Get current language\n *\n * 获取当前语言\n */\n readonly currentLang: string;\n /**\n * Change language\n *\n * 变更语言\n * @param lang 语言代码\n * @param emit 是否触发 `change`,默认:true\n */\n use(lang: string, emit?: boolean): void;\n /**\n * Return to the current language list\n *\n * 返回当前语言列表\n */\n getLangs(): any[];\n /**\n * 翻译\n * - `params` 模板所需要的参数对象\n * - `isSafe` 是否返回安全字符,自动调用 `bypassSecurityTrustHtml`\n */\n fanyi(key: string, params?: {\n [key: string]: any;\n }, isSafe?: boolean): string;\n}\n@Injectable({\n providedIn: 'root'\n})\nexport class I18nService {\n default :string = 'zh-CN'\n change$ = new BehaviorSubject<string | null>(null);\n _langs = Object.keys(LANGS).map((code) => {\n const item = LANGS[code];\n return { code, text: item.text, abbr: item.abbr };\n });\n\n constructor(\n public translate: TranslateService,\n public platform: Platform,\n public config: PrimeNG\n ){\n const lans = this._langs.map((item) => item.code);\n translate.addLangs(lans);\n }\n\n getDefaultLang(): string {\n if (!this.platform.isBrowser) {\n return 'zh-CN';\n }\n return (navigator.languages ? navigator.languages[0] : null) || navigator.language;\n }\n use(lang: string): void {\n lang = lang || this.translate.getDefaultLang();\n this.translate.use(lang).subscribe(() => this.change$.next(lang));\n this.translate.get('primeng').subscribe(res => this.config.setTranslation(res));\n }\n get change(): Observable<string> {\n return this.change$.asObservable().pipe(filter((w) => w != null)) as Observable<string>;\n }\n\n /** 获取语言列表 */\n getLangs(): Array<{ code: string; text: string; abbr: string }> {\n return this._langs;\n }\n /** 翻译 */\n fanyi(key: string, interpolateParams?: {}): any {\n return this.translate.instant(key, interpolateParams);\n }\n /** 默认语言 */\n get defaultLang(): string {\n return this.default;\n }\n /** 当前语言 */\n get currentLang(): string {\n return this.translate.currentLang || this.translate.getDefaultLang() || this.default;\n }\n}","import { Component, effect, inject, signal } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { distinctUntilChanged, finalize, map } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\nimport * as FileSaver from 'file-saver';\r\nimport { FormOptions } from '../form/form/form.component';\r\nimport { SearchOptions } from '../search/search/search.component';\r\nimport { ConfirmationService, MessageService } from 'primeng/api';\r\nimport { Toast } from 'primeng/toast';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { LoadingService } from '../service/loading.service';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\nimport { I18nService } from '../service/i18n.service';\r\nexport interface Param {\r\n\tid?: number;\r\n}\r\n\r\nexport interface TraceMessage {\r\n\tid?: number;\r\n\tpid?: number; // 表中id\r\n\tfunc?: string;\r\n\toperator?: string;\r\n\tcontent?: string; // 主表变更所有字段拼接一块\r\n\tsubContent?: string; // 子表变更拼接一起\r\n\tcreatedAt?: string;\r\n}\r\nexport interface ImportExcel {\r\n\tmodelName?: string;\r\n\torgId?: number;\r\n\torgName?: string;\r\n\torgIdFeild?: string;\r\n\torgNameFeild?: string;\r\n}\r\n\r\nexport interface Upsert {\r\n\tmodelName?: string;\r\n\taddData?: Record<string, any>;\r\n\tupdData?: Record<string, any>;\r\n\tsubsert?: SubUpsert[];\r\n\tlogModel?: string;\r\n\tlog?: TraceMessage;\r\n}\r\n\r\nexport interface SubUpsert {\r\n\tsubModelName?: string;\r\n\tfk?: string;\r\n\tsubData?: Record<string, any>[];\r\n\tmaptmp?: Map<number, any>;\r\n\tlogtmp?: Map<string, any>;\r\n}\r\nexport interface Deal {\r\n\tmodelName?: string;\r\n\tdata?: any;\r\n}\r\n// 更新特定字段\r\nexport interface Write {\r\n\tmodelName?: string;\r\n\tdata?: Record<string, any>;\r\n\tlogModel?: string;\r\n\tlog?: TraceMessage;\r\n\ttransaction?: boolean;\r\n}\r\n// 删除接口声明\r\nexport interface Remove {\r\n\tmodelName?: string;\r\n\tids?: number[];\r\n\tdata?: any;\r\n\tlogModel?: string;\r\n\tlog?: TraceMessage;\r\n\ttransaction?: boolean;\r\n}\r\n// 获取单条数据详情\r\nexport interface Get {\r\n\tmodelName?: string;\r\n\tuserCode?: string;\r\n\torgField?: string;\r\n\tid?: number;\r\n\tpreloads?: string[]; // 联表查询表名称,需对应后端struct\r\n\tfiterPreloads?: Preload[]; // 只能加一层 类似 'module =' module\r\n\tgetLog?: boolean; //获取日志\r\n\tdata?: any; //后端返回的response\r\n\tcolumnFilters?: ColumnFilter[]; //过滤的列\r\n\tforeignKey?: string; //直接插入子表需要传递外键字段以及外键值\r\n\t[propName: string]: any;\r\n}\r\nexport interface Preload {\r\n\tfeildName?: string;\r\n\tfiters?: ColumnFilter[];\r\n\tsorts?: Sort[];\r\n}\r\nexport interface ColumnFilter {\r\n\tcolumnField?: string;\r\n\ttype?: string;\r\n\tfiter?: any;\r\n\tfrom?: string | number;\r\n\tto?: string | number;\r\n}\r\n\r\nexport interface Sort {\r\n\tfield?: string;\r\n\tisAsc?: boolean;\r\n}\r\n\r\nexport interface Search {\r\n\tmodelName?: string;\r\n\tuserCode?: string;\r\n\torgField?: string;\r\n\tcount?: boolean; //是否返回totalNum\r\n\tpreloads?: string[];\r\n\tfiterPreloads?: Preload[];\r\n\tmodel?: any;\r\n\tdata?: any;\r\n\tcolumnFilters?: ColumnFilter[]; //过滤的列\r\n\tsorts?: Sort[];\r\n\tgroups?: string[];\r\n\tread?: string[]; //read 指定查询特定字段\r\n\tfuncs?: Record<string, string>; //透视表后期要用\r\n\toffset?: number;\r\n\tlimit?: number;\r\n\ttotalNum?: number;\r\n}\r\ninterface DealExport extends Search{\r\n\tfileName?:string\r\n}\r\nexport interface TokenInfo {\r\n\ttoken?: string;\r\n\texpired?: number;\r\n}\r\nexport interface amWeb {\r\n\tid?: number;\r\n\tcode?: string;\r\n\ttype?: string;\r\n\tname?: string;\r\n\tappId?: number;\r\n\tcontent?: string;\r\n\tcreatedAt?: string;\r\n\tupdatedAt?: string;\r\n}\r\nexport interface Rfd {\r\n\tmodelName?: string;\r\n\tlabelField?: string;\r\n\tvalueField?: string;\r\n\twhereField?: string;\r\n\ttype?: string;\r\n\tfiter?: any;\r\n\tdata?: any;\r\n}\r\nconst apiPath = '';\r\n@Component({\r\n\tselector: 'app-am',\r\n\tstandalone: true,\r\n\timports: [],\r\n\ttemplate: '',\r\n\tproviders: [MessageService, ConfirmationService],\r\n})\r\nexport class AmComponent {\r\n\t//是否提交日志\r\n\tisLog: boolean = false;\r\n\t//主数据id\r\n\tid: number = 0;\r\n\t//主表模型\r\n\tmodelName: string = '';\r\n\t//ID参数\r\n\tparam: Param = {};\r\n\tfid: string = '';\r\n\t//导入\r\n\timportPrm: ImportExcel = {};\r\n\t//搜素\r\n\tsearchOptions: SearchOptions = {};\r\n\t//form\r\n\tformOptions: FormOptions = {};\r\n\t//创建或者更新\r\n\tupsertPrm: Upsert = { updData: {}, addData: {}, subsert: [], log: {} };\r\n\t//处理\r\n\tdealPrm: Deal = {};\r\n\t//map更新\r\n\twritePrm: Write = {};\r\n\t//删除\r\n\tremovePrm: Remove = {};\r\n\t//获取一条数据\r\n\tgetPrm: Get = { data: {} };\r\n\t//查询条件\r\n\tfilter: ColumnFilter = {};\r\n\t//查询列表数据\r\n\tsearchPrm: Search = {};\r\n\texportPrm: Search = {};\r\n\ttamplate: Deal = {};\r\n\thttp: HttpClient = inject(HttpClient);\r\n\tmessageService: MessageService = inject(MessageService);\r\n\tconfirmationService = inject(ConfirmationService);\r\n\tloadingService = inject(LoadingService);\r\n\troute: ActivatedRoute = inject(ActivatedRoute);\r\n\trouter = inject(Router);\r\n\ti18n = inject(I18nService)\r\n\tconstructor() {}\r\n\r\n\trfd(prm: Rfd): Observable<any> {\r\n\t\treturn this.http.post(apiPath + 'RFD', prm).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n\t\t\t\tthis.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\twebget(param: amWeb): Observable<any> {\r\n\t\treturn this.http.post(apiPath + '/goam/api/webget', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n\t\t\t\t// this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\r\n\twebsave(param: amWeb): Observable<any> {\r\n\t\treturn this.http.post(apiPath + '/goam/api/websave', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\r\n\twebdel(param: amWeb): Observable<any> {\r\n\t\treturn this.http.post(apiPath + 'webdel', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\r\n\tupsert(prm?: any, cb?: Function) {\r\n\t\tif (prm) {\r\n\t\t\tthis.web_upsert(prm).subscribe((res) => {\r\n\t\t\t\tcb && cb(res);\r\n\t\t\t\tthis.resetPrm('upsert');\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\t// const pm: Upsert = this.upserts()\r\n\t\t\t// console.log('1====',pm)\r\n\t\t\tthis.web_upsert(this.upsertPrm).subscribe((res) => {\r\n\t\t\t\tcb && cb(res);\r\n\t\t\t\tthis.resetPrm('upsert');\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t//全部创建或更新,根据ID判断\r\n\tweb_upsert(param: Upsert): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\tif (!param.modelName) {\r\n\t\t\tparam = { modelName: this.modelName, ...param };\r\n\t\t}\r\n\t\tlet addData: any = param.addData;\r\n\t\tif (Object.keys(addData).length == 0) {\r\n\t\t\tdelete param.addData;\r\n\t\t}\r\n\t\tlet updData: any = param.updData;\r\n\t\tconsole.log('param----', param.updData);\r\n\t\tif (Object.keys(updData).length == 0) {\r\n\t\t\tdelete param.updData;\r\n\t\t} else {\r\n\t\t\tparam.updData!['id'] = this.id;\r\n\t\t\tparam.log!.pid = this.id;\r\n\t\t}\r\n\t\tif (!param?.addData && !param.updData) {\r\n\t\t\tparam = { updData: { id: this.id }, ...param };\r\n\t\t}\r\n\t\tconsole.log('this.isLog----', this.isLog);\r\n\t\tif (!this.isLog) {\r\n\t\t\tdelete param.log;\r\n\t\t} else {\r\n\t\t\tlet lg: string = '';\r\n\t\t\t// @ts-ignore\r\n\t\t\tconst isI18n = window.appIsI18n\r\n\t\t\tlet createStr = isI18n ? this.i18n.fanyi('app.create') :'新建'\r\n\t\t\tparam.subsert?.forEach((v) => {\r\n\t\t\t\tv.logtmp?.forEach((v, k) => {\r\n\t\t\t\t\tif (v.id === 0) {\r\n\t\t\t\t\t\tlg += `${createStr}: -> ${v.newValue};`\r\n\t\t\t\t\t\t// lg += '新建: -> ' + v.newValue + ';';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tlg += '[' + v.id + '-' + v.label + '] ' + (v.oldValue || '') + ' -> ' + (v.newValue || '') + ';';\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tparam = { ...param, log: { ...param.log, subContent: lg } };\r\n\t\t}\r\n\t\tconsole.log('param====', param);\r\n\t\treturn this.http.post(apiPath + 'upsert', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tif (param.log) {\r\n\t\t\t\t\tdelete param.log;\r\n\t\t\t\t}\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//自处理逻辑\r\n\tdeal(prm?: Deal) {\r\n\t\tif (prm) {\r\n\t\t\tthis.web_deal(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.web_deal(this.dealPrm).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_deal(param: Deal): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'deal', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tthis.dealPrm = { data: response, ...this.dealPrm };\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//传入map,根据ID,更新map数据\r\n\twrite(prm?: Write) {\r\n\t\tif (prm) {\r\n\t\t\tthis.web_write(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.web_write(this.writePrm).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_write(param: Write): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\tif (!param.modelName) {\r\n\t\t\tparam = { modelName: this.modelName, ...param };\r\n\t\t}\r\n\t\treturn this.http.post(apiPath + 'write', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tif (param.log) {\r\n\t\t\t\t\tdelete param.log;\r\n\t\t\t\t}\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//根据ID删除\r\n\tremove(prm?: Remove) {\r\n\t\tif (prm) {\r\n\t\t\tthis.web_remove(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.web_remove(this.removePrm).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_remove(param: Remove): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'remove', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tif (param.log) {\r\n\t\t\t\t\tdelete param.log;\r\n\t\t\t\t}\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//根据ID获取一条数据\r\n\tget(prm?: Get) {\r\n\t\tif (prm) {\r\n\t\t\tthis.web_get(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.web_get(this.getPrm).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_get(param: Get): Observable<any> {\r\n\t\tif (!param.hasOwnProperty('modelName')) {\r\n\t\t\tparam.modelName = this.modelName;\r\n\t\t}\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'get', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tthis.getPrm.data = response;\r\n\t\t\t\tif (response.id === 0 && param.hasOwnProperty('foreignKey')) {\r\n\t\t\t\t\tthis.upsertPrm.addData![param.foreignKey!] = param[param.foreignKey!];\r\n\t\t\t\t}\r\n\t\t\t\tthis.id = response?.id;\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//获取多条数据,根据传入的条件自动组织sql\r\n\tsearch(prm?: Search) {\r\n\t\tif (prm) {\r\n\t\t\tthis.web_search(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.web_search(this.searchPrm).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_search(param: Search): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'search', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tthis.searchPrm = { ...response };\r\n\t\t\t\tconsole.log('upsey-----', this.upsertPrm);\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\tsearchmap(prm?: Search) {\r\n\t\tif (prm) {\r\n\t\t\tthis.web_search(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.web_search(this.searchPrm).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_searchmap(param: Search): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'searchMap', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tthis.searchPrm = { ...response };\r\n\t\t\t\tconsole.log('upsey-----', this.upsertPrm);\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//获取多条数据,根据传入的条件自动组织sql\r\n\tsearchCount(prm?: Search) {\r\n\t\tif (prm) {\r\n\t\t\tthis.web_searchCount(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.web_searchCount(this.searchPrm).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_searchCount(param: Search): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'searchCount', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tthis.searchPrm = { ...response };\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//excel导入\r\n\t// import(param: ImportExcel):Observable<any> {\r\n\t// this.isLoading.set(true);\r\n\t// return this.http.post(\"am/remove\",param,httpOptions)\r\n\t// .pipe(\r\n\t// map((response: any) =>{\r\n\t// this.message.set(response);\r\n\t// this.isSuccess.set(true);\r\n\t// return response;\r\n\t// }),\r\n\t// catchError((error) => {\r\n\t// // 若请求出错,设置请求成功状态为 false,并将错误重新抛出\r\n\t// this.isSuccess.set(false);\r\n\t// this.message.set(error);\r\n\t// return throwError(() => error);\r\n\t// }),\r\n\t// finalize(() => {\r\n\t// // 无论请求成功与否,都将加载中状态设置为 false\r\n\t// this.isLoading.set(false);\r\n\t// })\r\n\t// );\r\n\t// }\r\n\t////excel 导出\r\n\texport(prm?: Search) {\r\n\t\tif (prm) {\r\n\t\t\tthis.web_export(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.web_export(this.exportPrm).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_export(param: Search): Observable<any> {\r\n\t\tif (!param.modelName) {\r\n\t\t\tparam = { modelName: this.modelName, ...param };\r\n\t\t}\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'export', param, { responseType: 'blob' }).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tconst data: Blob = new Blob([response], {\r\n\t\t\t\t\ttype: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=UTF-8',\r\n\t\t\t\t});\r\n\t\t\t\tconst fileName = param.modelName + '.xlsx';\r\n\t\t\t\tFileSaver.saveAs(data, fileName);\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//人工处理导入\r\n\tdealExport(prm?: DealExport) {\r\n\t\tif (prm) {\r\n\t\t\tthis.web_deal_export(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.web_deal_export(this.exportPrm).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_deal_export(param: DealExport): Observable<any> {\r\n\t\tif (!param.modelName) {\r\n\t\t\tparam = { modelName: this.modelName, ...param };\r\n\t\t}\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'dealExport', param, { responseType: 'blob' }).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tconst data: Blob = new Blob([response], {\r\n\t\t\t\t\ttype: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=UTF-8',\r\n\t\t\t\t});\r\n\t\t\t\t// const fileName = param.modelName + '.xlsx';\r\n\t\t\t\tconst fileName = `${param?.fileName ? param.fileName : param.modelName}.xlsx`\r\n\t\t\t\tFileSaver.saveAs(data, fileName);\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//下载导入的模板\r\n\tdownloadTemplate(prm?: Deal) {\r\n\t\tif (prm) {\r\n\t\t\tthis.web_downloadTemplate(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.web_downloadTemplate(this.tamplate).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_downloadTemplate(param: Deal): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'download', param, { responseType: 'blob' }).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tconst data: Blob = new Blob([response], {\r\n\t\t\t\t\ttype: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=UTF-8',\r\n\t\t\t\t});\r\n\t\t\t\tconst fileName = param.modelName + '模板.xlsx';\r\n\t\t\t\tFileSaver.saveAs(data, fileName);\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//删除图片\r\n\timageDelete(fid?: string) {\r\n\t\tif (fid) {\r\n\t\t\tthis.web_imageDelete(fid).subscribe();\r\n\t\t} else if (this.fid.length > 0) {\r\n\t\t\tthis.web_imageDelete(this.fid).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_imageDelete(fid: string): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'imageDelete', fid).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tthis.messageService.add({ severity: 'success', summary: 'Success', detail: response });\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//删除图片\r\n\tfilerDelete(fid?: string) {\r\n\t\tif (fid) {\r\n\t\t\tthis.web_filerDelete(fid).subscribe();\r\n\t\t} else if (this.fid.length > 0) {\r\n\t\t\tthis.web_filerDelete(this.fid).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_filerDelete(fid: string): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'imageDelete', fid).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tthis.messageService.add({ severity: 'success', summary: 'Success', detail: response });\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n\t\t\t\t// this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//刷新token\r\n\trefreshToken(param: TokenInfo): Observable<any> {\r\n\t\treturn this.http.post(apiPath + 'refreshToken', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tthis.dealPrm = { data: response, ...this.dealPrm };\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t//创建表\r\n\tcreateTable(prm?: Param) {\r\n\t\tif (prm) {\r\n\t\t\tthis.web_createTable(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.web_createTable(this.param).subscribe();\r\n\t\t}\r\n\t}\r\n\tweb_createTable(param: Param): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'createTable', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\t// this.messageService.add({severity: 'success',summary: 'Success',detail: response})\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\t// 暂无确定是否重置其他公共变量\r\n\tresetPrm(search?: string) {\r\n\t\tswitch (search) {\r\n\t\t\tcase 'upsert':\r\n\t\t\t\tthis.upsertPrm.addData = {};\r\n\t\t\t\tthis.upsertPrm.updData = {};\r\n\t\t\t\tthis.upsertPrm.log = {};\r\n\t\t\t\tthis.upsertPrm.subsert?.forEach((v) => {\r\n\t\t\t\t\tv.logtmp = new Map();\r\n\t\t\t\t\tv.maptmp = new Map();\r\n\t\t\t\t\tv.subData = [];\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\t'';\r\n\t\t}\r\n\t}\r\n\t//自处理逻辑\r\n\tdealQuery(prm?: Deal) {\r\n\t\tif (prm) {\r\n\t\t\tthis.webDealQuery(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.webDealQuery(this.dealPrm).subscribe();\r\n\t\t}\r\n\t}\r\n\twebDealQuery(param: Deal): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'dealQuery', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tthis.dealPrm = { data: response, ...this.dealPrm };\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\tdealCustom(prm?: Deal) {\r\n\t\tif (prm) {\r\n\t\t\tthis.webDealCustom(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.webDealCustom(this.dealPrm).subscribe();\r\n\t\t}\r\n\t}\r\n\twebDealCustom(param: Deal): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'dealCustom', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tthis.dealPrm = { data: response, ...this.dealPrm };\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\tdealSubmit(prm?: Deal) {\r\n\t\tif (prm) {\r\n\t\t\tthis.webDealCustom(prm).subscribe();\r\n\t\t} else {\r\n\t\t\tthis.webDealCustom(this.dealPrm).subscribe();\r\n\t\t}\r\n\t}\r\n\twebDealSubmit(param: Deal): Observable<any> {\r\n // this.loadingService.setLoading(true);\r\n\t\treturn this.http.post(apiPath + 'dealSubmit', param).pipe(\r\n\t\t\tmap((response: any) => {\r\n\t\t\t\tthis.dealPrm = { data: response, ...this.dealPrm };\r\n\t\t\t\treturn response;\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n // this.loadingService.setLoading(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n}\r\n","import { FormControl } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\n\nexport class FieldControl extends FormControl {\n\tpublic hookChange = new BehaviorSubject<any>(null);\n\tpublic submitChange = new BehaviorSubject<Boolean>(false);\n\toverride setValue(\n\t\tvalue: any,\n\t\toptions: {\n\t\t\tonlySelf?: boolean;\n\t\t\temitEvent?: boolean;\n\t\t\temitModelToViewChange?: boolean;\n\t\t\temitViewToModelChange?: boolean;\n\t\t} = {},\n\t\temitHook: boolean = false,\n\t): void {\n\t\tsuper.setValue(value, options);\n\t\tif (emitHook) {\n\t\t\tthis.hookChange.next(value);\n\t\t}\n\t}\n\tafterSubmit() {\n\t\tthis.submitChange.next(true);\n\t}\n}\n","import { Injectable, signal, untracked } from '@angular/core';\r\nimport { SearchItem } from '../search/search/search.component';\r\nimport { Search } from '../am/am.component';\r\nimport { FormField } from '../form/form-field/form-field';\r\nimport { Router } from '@angular/router';\r\nimport { Page } from '../grid/pager/pager.component';\r\nimport { BehaviorSubject } from 'rxjs';\r\nexport interface Action {\r\n\ttype: string;\r\n}\r\n\r\nexport interface SearchRow {\r\n\tkey?: string;\r\n\tmodelName?: string;\r\n\tsearch?: Search;\r\n}\r\n\r\nexport interface SortItem {\r\n\tisAsc?: boolean;\r\n\tfields?: string[];\r\n\tlabels?: string[];\r\n}\r\n\r\nexport interface FieldLabelAction {\r\n\tkey?: string;\r\n\ttype?: 'mouseenter' | 'mouseleave' | 'click' | 'dblclick';\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class ActionService {\r\n\tpopMode: boolean = false;\r\n\tfieldLabelAction = signal<FieldLabelAction | undefined>(undefined);\r\n\tfieldAction = signal<FormField | undefined>(undefined);\r\n\taction = signal<Action | undefined>(undefined);\r\n\tsaveSignal = signal<boolean>(false);\r\n\tloading = signal<boolean>(false)\r\n\tgridAction$ = new BehaviorSubject<any>({})\r\n\r\n\tconstructor(\r\n\t\tprivate pageAction: PageActionService,\r\n\t\tprivate popAction: PopActionService,\r\n\t) {}\r\n\tsetPopMode(mode: boolean) {\r\n\t\tthis.popMode = mode;\r\n\t}\r\n\tclear() {\r\n\t\tif (this.popMode) {\r\n\t\t\tthis.popAction.setSearchItem(undefined);\r\n\t\t\tthis.popAction.setSearchClear(undefined);\r\n\t\t\tthis.popAction.setSortItem(undefined);\r\n\t\t\tthis.popAction.setModelName(undefined);\r\n\t\t\tthis.popAction.clearSearch(undefined);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.pageAction.setSearchItem(undefined);\r\n\t\tthis.pageAction.setSearchClear(undefined);\r\n\t\tthis.pageAction.setSortItem(undefined);\r\n\t\tthis.pageAction.setModelName(undefined);\r\n\t}\r\n\tsetModelName(modelNameForSearch: String | undefined) {\r\n\t\tif (this.popMode) {\r\n\t\t\tthis.popAction.setModelName(modelNameForSearch);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.pageAction.setModelName(modelNameForSearch);\r\n\t}\r\n\tgetModelName(): String | undefined {\r\n\t\tif (this.popMode) {\r\n\t\t\treturn this.popAction.getModelName();\r\n\t\t}\r\n\t\treturn this.pageAction.getModelName();\r\n\t}\r\n\tclearSearch(modelName: string | undefined) {\r\n\t\tif (this.popMode) {\r\n\t\t\tthis.popAction.clearSearch(modelName);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.pageAction.clearSearch(modelName);\r\n\t}\r\n\tsetSearch(search: Search, modelName: string | undefined) {\r\n\t\tif (this.popMode) {\r\n\t\t\tthis.popAction.setSearch(search, modelName);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.pageAction.setSearch(search, modelName);\r\n\t}\r\n\tgetSearch(modelName: string | undefined): Search | undefined {\r\n\t\tif (this.popMode) {\r\n\t\t\treturn this.popAction.getSearch(modelName);\r\n\t\t}\r\n\t\treturn this.pageAction.getSearch(modelName);\r\n\t}\r\n\tsearchMonitor(modelName: string | undefined): boolean {\r\n\t\tif (this.popMode) {\r\n\t\t\treturn this.popAction.searchMonitor(modelName);\r\n\t\t}\r\n\t\treturn this.pageAction.searchMonitor(modelName);\r\n\t}\r\n\tsetSearchItem(searchItem: SearchItem | undefined) {\r\n\t\tif (this.popMode) {\r\n\t\t\tthis.popAction.setSearchItem(searchItem);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.pageAction.setSearchItem(searchItem);\r\n\t}\r\n\tgetSearchItem(): SearchItem | undefined {\r\n\t\tif (this.popMode) {\r\n\t\t\treturn this.popAction.getSearchItem();\r\n\t\t}\r\n\t\treturn this.pageAction.getSearchItem();\r\n\t}\r\n\tsetSearchClear(searchClear: String | undefined) {\r\n\t\tif (this.popMode) {\r\n\t\t\tthis.popAction.setSearchClear(searchClear);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.pageAction.setSearchClear(searchClear);\r\n\t}\r\n\tgetSearchClear(): String | undefined {\r\n\t\tif (this.popMode) {\r\n\t\t\treturn this.popAction.getSearchClear();\r\n\t\t}\r\n\t\treturn this.pageAction.getSearchClear();\r\n\t}\r\n\tsetSortItem(sortItem: SortItem | undefined) {\r\n\t\tif (this.popMode) {\r\n\t\t\tthis.popAction.setSortItem(sortItem);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.pageAction.setSortItem(sortItem);\r\n\t}\r\n\tgetSortItem(): SortItem | undefined {\r\n\t\tif (this.popMode) {\r\n\t\t\treturn this.popAction.getSortItem();\r\n\t\t}\r\n\t\treturn this.pageAction.getSortItem();\r\n\t}\r\n\tsetPage(page: Page) {\r\n\t\tif (!this.popMode) {\r\n\t\t\tthis.pageAction.setPage(page);\r\n\t\t}\r\n\t}\r\n\tgetPage(): Page | undefined {\r\n\t\tif (!this.popMode) {\r\n\t\t\treturn this.pageAction.getPage();\r\n\t\t}\r\n\t\treturn undefined;\r\n\t}\r\n\tsetFieldLabelAction(key: string, type: 'mouseenter' | 'mouseleave' | 'click' | 'dblclick') {\r\n\t\tthis.fieldLabelAction.set({ key, type });\r\n\t}\r\n\tgetFieldLabelAction(): FieldLabelAction | undefined {\r\n\t\treturn this.fieldLabelAction();\r\n\t}\r\n\tsetFieldAction(field: FormField | undefined) {\r\n\t\tthis.fieldAction.set(field);\r\n\t}\r\n\tgetFieldAction(): FormField | undefined {\r\n\t\treturn this.fieldAction();\r\n\t}\r\n\tsetAction(action: Action | undefined) {\r\n\t\tthis.action.set(action);\r\n\t}\r\n\tgetAction(): Action | undefined {\r\n\t\treturn this.action();\r\n\t}\r\n\tupdateGridAction(data:any){\r\n\t\tthis.gridAction$.next(data)\r\n\t}\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class PageActionService {\r\n\tmodelNameForSearch = signal<String | undefined>(undefined);\r\n\tsearchList = signal<SearchRow[]>([]);\r\n\tsearchItem = signal<SearchItem | undefined>(undefined);\r\n\tsearchClear = signal<String | undefined>(undefined);\r\n\tsortItem = signal<SortItem | undefined>(undefined);\r\n\tpage = signal<Page | undefined>(undefined);\r\n\r\n\tconstructor(private router: Router) {}\r\n\r\n\tsetModelName(modelNameForSearch: String | undefined) {\r\n\t\tif (modelNameForSearch == undefined) {\r\n\t\t\tthis.modelNameForSearch.set(undefined);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.modelNameForSearch.set(new String(modelNameForSearch));\r\n\t}\r\n\tgetModelName(): String | undefined {\r\n\t\treturn this.modelNameForSearch();\r\n\t}\r\n\tclearSearch(modelName: string | undefined) {\r\n\t\tif (modelName == undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst key = this.router.url;\r\n\t\tlet searchList = untracked(() => this.searchList()).filter((item) => item.key != key || item.modelName != modelName);\r\n\t\tthis.searchList.set([...searchList]);\r\n\t}\r\n\tsetSearch(search: Search, modelName: string | undefined) {\r\n\t\tif (modelName == undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst searchRow = { key: this.router.url, modelName, search };\r\n\t\tlet searchList = untracked(() => this.searchList()).filter(\r\n\t\t\t(item) => item.key != searchRow.key || item.modelName != searchRow.modelName,\r\n\t\t);\r\n\t\tthis.searchList.set([...searchList, searchRow]);\r\n\t\tthis.setModelName(modelName);\r\n\t}\r\n\tgetSearch(modelName: string | undefined): Search | undefined {\r\n\t\tif (modelName == undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst key = this.router.url;\r\n\t\tconst result = untracked(() => this.searchList()).filter((item) => item.key == key && item.modelName == modelName);\r\n\t\treturn result.length ? result[0].search : undefined;\r\n\t}\r\n\tsearchMonitor(modelName: string | undefined): boolean {\r\n\t\tconst searchName = this.modelNameForSearch();\r\n\t\tif (searchName === undefined) return true;\r\n\t\tif (String(searchName) === modelName) return true;\r\n\t\treturn false;\r\n\t}\r\n\tsetSearchItem(searchItem: SearchItem | undefined) {\r\n\t\tif (searchItem == undefined) {\r\n\t\t\tthis.searchItem.set(undefined);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.searchItem.set({ ...searchItem });\r\n\t}\r\n\tgetSearchItem(): SearchItem | undefined {\r\n\t\treturn this.searchItem();\r\n\t}\r\n\tsetSearchClear(searchClear: String | undefined) {\r\n\t\tif (searchClear == undefined) {\r\n\t\t\tthis.searchClear.set(undefined);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.searchClear.set(new String(searchClear));\r\n\t}\r\n\tgetSearchClear(): String | undefined {\r\n\t\treturn this.searchClear();\r\n\t}\r\n\tsetSortItem(sortItem: SortItem | undefined) {\r\n\t\tthis.sortItem.set(sortItem);\r\n\t}\r\n\tgetSortItem(): SortItem | undefined {\r\n\t\treturn this.sortItem();\r\n\t}\r\n\tsetPage(page: Page) {\r\n\t\tthis.page.set(page);\r\n\t}\r\n\tgetPage(): Page | undefined {\r\n\t\treturn this.page();\r\n\t}\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class PopActionService {\r\n\tmodelNameForSearch = signal<String | undefined>(undefined);\r\n\tsearchList = signal<SearchRow[]>([]);\r\n\tsearchItem = signal<SearchItem | undefined>(undefined);\r\n\tsearchClear = signal<String | undefined>(undefined);\r\n\tsortItem = signal<SortItem | undefined>(undefined);\r\n\r\n\tconstructor() {}\r\n\r\n\tsetModelName(modelNameForSearch: String | undefined) {\r\n\t\tif (modelNameForSearch == undefined) {\r\n\t\t\tthis.modelNameForSearch.set(undefined);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.modelNameForSearch.set(new String(modelNameForSearch));\r\n\t}\r\n\tgetModelName(): String | undefined {\r\n\t\treturn this.modelNameForSearch();\r\n\t}\r\n\tclearSearch(modelName: string | undefined) {\r\n\t\tthis.searchList.set([]);\r\n\t}\r\n\tsetSearch(search: Search, modelName: string | undefined) {\r\n\t\tif (modelName == undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst searchRow = { modelName, search };\r\n\t\tlet searchList = untracked(() => this.searchList()).filter((item) => item.modelName != searchRow.modelName);\r\n\t\tthis.searchList.set([...searchList, searchRow]);\r\n\t\tthis.setModelName(modelName);\r\n\t}\r\n\tgetSearch(modelName: string | undefined): Search | undefined {\r\n\t\tif (modelName == undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst result = untracked(() => this.searchList()).filter((item) => item.modelName == modelName);\r\n\t\treturn result.length ? result[0].search : undefined;\r\n\t}\r\n\tsearchMonitor(modelName: string | undefined): boolean {\r\n\t\tconst searchName = this.modelNameForSearch();\r\n\t\tif (searchName === undefined) return false;\r\n\t\tif (String(searchName) === modelName) return true;\r\n\t\treturn false;\r\n\t}\r\n\tsetSearchItem(searchItem: SearchItem | undefined) {\r\n\t\tif (searchItem == undefined) {\r\n\t\t\tthis.searchItem.set(undefined);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.searchItem.set({ ...searchItem });\r\n\t}\r\n\tgetSearchItem(): SearchItem | undefined {\r\n\t\treturn this.searchItem();\r\n\t}\r\n\tsetSearchClear(searchClear: String | undefined) {\r\n\t\tif (searchClear == undefined) {\r\n\t\t\tthis.searchClear.set(undefined);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.searchClear.set(new String(searchClear));\r\n\t}\r\n\tgetSearchClear(): String | undefined {\r\n\t\treturn this.searchClear();\r\n\t}\r\n\tsetSortItem(sortItem: SortItem | undefined) {\r\n\t\tthis.sortItem.set(sortItem);\r\n\t}\r\n\tgetSortItem(): SortItem | undefined {\r\n\t\treturn this.sortItem();\r\n\t}\r\n}\r\n","import { Directive, HostListener, input, effect, ViewChild, ViewContainerRef } from '@angular/core';\nimport { ActionService } from '../../service/action.service';\nimport { FormField } from './form-field';\n\n@Directive({\n\tselector: '[fieldLabel], [fieldLabel][field], [fieldLabel][contextMenu]',\n\tstandalone: true,\n})\nexport class LabelDirective {\n\t@ViewChild('container', { read: ViewContainerRef }) container?: ViewContainerRef;\n\tfield = input<FormField>();\n\tcontextMenu = input<any>();\n\tconstructor(private action: ActionService) {}\n\n\t@HostListener('mouseenter') onMouseEnter() {\n\t\tif (!this.field()?.interactiveLabel) return;\n\t\tif (this.field()?.fieldControl?.disabled) return;\n\t\tthis.action.setFieldLabelAction(this.field()!.uuid!, 'mouseenter');\n\t}\n\n\t@HostListener('mouseleave') onMouseLeave() {\n\t\tif (!this.field()?.interactiveLabel) return;\n\t\tif (this.field()?.fieldControl?.disabled) return;\n\t\tthis.field()?.interactiveLabel && this.action.setFieldLabelAction(this.field()!.uuid!, 'mouseleave');\n\t}\n\n\t@HostListener('click') onClick() {\n\t\tif (this.field()?.interactiveLabel) {\n\t\t\tif (this.field()?.fieldControl?.disabled) return;\n\t\t\tthis.action.setFieldLabelAction(this.field()!.uuid!, 'click');\n\t\t} else {\n\t\t\tthis.action.setFieldAction(this.field()!);\n\t\t}\n\t}\n\n\t@HostListener('dblclick') onDoubleClick() {\n\t\tif (['inputtext', 'textarea', 'codemirror'].includes(this.field()?.type!)) {\n\t\t\tthis.action.setFieldLabelAction(this.field()!.uuid!, 'dblclick');\n\t\t}\n\t}\n\n\t@HostListener('contextmenu', ['$event'])\n\tonRightClick(event: MouseEvent): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tconst extra: any = this.field()?.form?.extra;\n\t\tif (extra.preContextMenu) {\n\t\t\textra.preContextMenu?.cm?.hide(event);\n\t\t}\n\t\tsetTimeout(() => {\n\t\t\tthis.contextMenu()?.cm?.show(event);\n\t\t\textra.preContextMenu = this.contextMenu();\n\t\t}, 100);\n\t}\n\n\t@HostListener('touchstart', ['$event'])\n\tonTouchStart(event: TouchEvent) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t}\n\n\t@HostListener('touchend', ['$event'])\n\tonTouchend(event: TouchEvent): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t}\n}\n","import { FormField, FieldProps } from './form-field';\nimport { DatePipe } from '@angular/common';\nimport { I18nService } from '../../service/i18n.service';\nimport { isObservable, tap } from 'rxjs';\n\nconst _fieldUtils = {\n\tprops: (field: FormField): FieldProps => {\n\t\tlet props: FieldProps = {};\n\t\tswitch (field.type) {\n\t\t\tcase 'inputtext':\n\t\t\t\tprops = field.inputTextProps!;\n\t\t\t\tbreak;\n\t\t\tcase 'inputnumber':\n\t\t\t\tprops = field.inputNumberProps!;\n\t\t\t\tbreak;\n\t\t\tcase 'select':\n\t\t\t\tprops = field.selectProps!;\n\t\t\t\tbreak;\n\t\t\tcase 'treeselect':\n\t\t\t\tprops = field.treeSelectProps!;\n\t\t\t\tbreak;\n\t\t\tcase 'datepicker':\n\t\t\t\tprops = field.datePickerProps!;\n\t\t\t\tbreak;\n\t\t\tcase 'autocomplete':\n\t\t\t\tprops = field.autoCompleteProps!;\n\t\t\t\tbreak;\n\t\t\tcase 'multiselect':\n\t\t\t\tprops = field.multiSelectProps!;\n\t\t\t\tbreak;\n\t\t\tcase 'radio':\n\t\t\t\tprops = field.radioProps!;\n\t\t\t\tbreak;\n\t\t\tcase 'textarea':\n\t\t\t\tprops = field.textAreaProps!;\n\t\t\t\tbreak;\n\t\t\tcase 'upload':\n\t\t\t\tprops = field.uploadProps!;\n\t\t\t\tbreak;\n\t\t\tcase 'image':\n\t\t\t\tprops = field.imageProps!;\n\t\t\t\tbreak;\n\t\t\tcase 'codemirror':\n\t\t\t\tprops = field.codeMirrorProps!;\n\t\t\t\tbreak;\n\t\t\tcase 'rowselector':\n\t\t\t\tprops = field.rowSelectorProps!;\n\t\t\t\tbreak;\n\t\t}\n\t\treturn props;\n\t},\n\tlabel: (field: FormField, i18nService: I18nService): string | undefined => {\n\t\tconst i18nKey = _fieldUtils.props(field).i18nKey;\n\t\tif (i18nKey) {\n\t\t\treturn i18nService.fanyi(i18nKey);\n\t\t}\n\t\treturn _fieldUtils.props(field).label;\n\t},\n\tsetModel(model: any, key: string, value: any) {\n\t\tconst keys = key.split('.');\n\t\tif (keys.length == 1) {\n\t\t\tmodel[key] = value;\n\t\t\treturn;\n\t\t} else {\n\t\t\tconst k: any = keys.shift();\n\t\t\tif (model[k] == undefined) {\n\t\t\t\tmodel[k] = {};\n\t\t\t}\n\t\t\tthis.setModel(model[k], keys.join('.'), value);\n\t\t}\n\t},\n\tgetModel(model: any, key: string): any {\n\t\tconst keys = key.split('.');\n\t\tif (keys.length == 1) {\n\t\t\treturn model[key];\n\t\t} else {\n\t\t\tconst k: any = keys.shift();\n\t\t\tif (model[k] == undefined) {\n\t\t\t\tmodel[k] = {};\n\t\t\t}\n\t\t\treturn this.getModel(model[k], keys.join('.'));\n\t\t}\n\t},\n\tfieldHandler(field: FormField) {\n\t\tif (!['select', 'treeselect', 'multiselect', 'radio'].includes(field.type!)) return;\n\t\t(_fieldUtils.props(field) as any)!.options = Array.isArray((_fieldUtils.props(field) as any)!.options)\n\t\t\t? (_fieldUtils.props(field) as any)!.options\n\t\t\t: undefined;\n\t},\n\tdafaultValueHandler(field: FormField, defaultValue: any, datePipe: DatePipe) {\n\t\tif (field.type == 'datepicker' && defaultValue === 'today') {\n\t\t\treturn _fieldUtils.getCurrentDate();\n\t\t}\n\t\treturn defaultValue;\n\t},\n\tgetCurrentDate(separator: string = '-'): string {\n\t\tconst now = new Date();\n\t\tconst year = now.getFullYear();\n\t\tconst month = String(now.getMonth() + 1).padStart(2, '0');\n\t\tconst day = String(now.getDate()).padStart(2, '0');\n\t\treturn `${year}${separator}${month}${separator}${day}`;\n\t},\n\ttriggerHookAndSetValue: (\n\t\tfield: FormField,\n\t\tvalue: any,\n\t\temitEvent: boolean,\n\t\temitHook: boolean,\n\t\thookObservers: any[],\n\t\tcallback: any,\n\t\tdatePipe: DatePipe,\n\t) => {\n\t\tif (field.hook && isObservable(field.hook)) {\n\t\t\tconst sub = field.hook\n\t\t\t\t.pipe(\n\t\t\t\t\ttap((func) => {\n\t\t\t\t\t\tfunc(field);\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\tfield.fieldControl?.setValue(_fieldUtils.toFieldValue(field, value, datePipe), { emitEvent }, emitHook), callback && callback();\n\t\t\t\t});\n\t\t\thookObservers.push(() => sub.unsubscribe());\n\t\t} else {\n\t\t\tfield.fieldControl?.setValue(_fieldUtils.toFieldValue(field, value, datePipe), { emitEvent }, emitHook);\n\t\t\tcallback && callback();\n\t\t}\n\t},\n\tfromFieldValue: (field: FormField, target: any, datePipe: DatePipe): any => {\n\t\tif (field.type == 'treeselect') {\n\t\t\treturn _fieldUtils.fromTreeSelectValue(field, target);\n\t\t}\n\t\tif (field.type == 'multiselect') {\n\t\t\treturn _fieldUtils.fromMultiSelectValue(field, target);\n\t\t}\n\t\tif (field.type == 'image') {\n\t\t\treturn _fieldUtils.fromImageValue(field, target);\n\t\t}\n\t\tif (field.type == 'upload') {\n\t\t\treturn _fieldUtils.fromUploadValue(field, target);\n\t\t}\n\t\tif (field.type == 'datepicker') {\n\t\t\treturn _fieldUtils.fromDatePickerValue(field, target, datePipe);\n\t\t}\n\t\treturn target;\n\t},\n\tfromTreeSelectValue: (field: FormField, target: any): string => {\n\t\tif (field.treeSelectProps?.selectionMode == 'single') {\n\t\t\treturn target?.key;\n\t\t}\n\t\treturn target.map((item: any) => item.key).join(',');\n\t},\n\tfromMultiSelectValue: (field: FormField, target: any): string => {\n\t\tif (!field.multiSelectProps?.optionValue) {\n\t\t\treturn target;\n\t\t}\n\t\treturn target.join(',');\n\t},\n\tfromImageValue: (field: FormField, target: any): string => {\n\t\treturn target.join(';');\n\t},\n\tfromUploadValue: (field: FormField, target: any): string => {\n\t\treturn target.join(';');\n\t},\n\tfromDatePickerValue: (field: FormField, target: any, datePipe: any): string => {\n\t\tif (field?.datePickerProps?.selectionMode == 'range' && target.length == 2) {\n\t\t\tconsole.log(target.join('~'));\n\t\t\treturn target.join('~');\n\t\t}\n\t\treturn target;\n\t},\n\ttoFieldValue: (field: FormField, raw: any, datePipe: DatePipe): any => {\n\t\tif (field.type == 'treeselect') {\n\t\t\treturn _fieldUtils.toTreeSelectValue(field, raw);\n\t\t}\n\t\tif (field.type == 'datepicker') {\n\t\t\treturn _fieldUtils.toDatePickerValue(field, raw, datePipe);\n\t\t}\n\t\tif (field.type == 'multiselect') {\n\t\t\treturn _fieldUtils.toMultiSelectValue(field, raw);\n\t\t}\n\t\tif (field.type == 'image') {\n\t\t\treturn _fieldUtils.toImageValue(field, raw);\n\t\t}\n\t\tif (field.type == 'upload') {\n\t\t\treturn _fieldUtils.toUploadValue(field, raw);\n\t\t}\n\t\treturn raw || '';\n\t},\n\ttoTreeSelectValue: (field: FormField, raw: any): any => {\n\t\tif (field.treeSelectProps?.selectionMode == 'single') {\n\t\t\treturn _fieldUtils.findTreeNode(raw, field.treeSelectProps?.options);\n\t\t}\n\t\tconst nodes: any[] = [];\n\t\t_fieldUtils.findTreeNodes(raw?.split(',') || [], field.treeSelectProps?.options || [], nodes);\n\t\treturn nodes;\n\t},\n\ttoDatePickerValue: (field: FormField, raw: any, datePipe: DatePipe, stringMode: boolean = false): any => {\n\t\tif (!raw || raw == '0001-01-01T00:00:00Z') {\n\t\t\treturn '';\n\t\t}\n\t\tif (_fieldUtils.isISO8601(raw)) {\n\t\t\tconst datePipeFormat = field.datePickerProps?.datePipeFormat ?? 'yyyy-MM-dd';\n\t\t\treturn datePipe.transform(raw, datePipeFormat, 'GMT') || raw;\n\t\t}\n\t\tif (!stringMode && field?.datePickerProps?.selectionMode == 'range' && raw.includes('~')) {\n\t\t\tconst [start, end] = raw.split('~');\n\t\t\treturn [new Date(start), new Date(end)];\n\t\t}\n\t\treturn raw;\n\t},\n\ttoMultiSelectValue: (field: FormField, raw: any): any => {\n\t\tif (!field.multiSelectProps?.optionValue) {\n\t\t\treturn raw || '';\n\t\t}\n\t\treturn (raw && raw.split(',')) || '';\n\t},\n\ttoImageValue: (field: FormField, raw: any): any => {\n\t\treturn (raw && raw.split(';')) || [];\n\t},\n\ttoUploadValue: (field: FormField, raw: any): any => {\n\t\treturn (raw && raw.split(';')) || [];\n\t},\n\tfindTreeNode(value: string, children?: any[]): any {\n\t\tif (!children || children.length == 0) return;\n\t\tconst n = children.find((o) => o.key == value);\n\t\tif (n) return n;\n\t\tfor (const ch of children) {\n\t\t\tconst cn = this.findTreeNode(value, ch.children);\n\t\t\tif (cn) return cn;\n\t\t}\n\t\treturn;\n\t},\n\tfindTreeNodes(values: string[], children?: any[], nodes?: any[]): void {\n\t\tif (!children || children.length == 0) return;\n\t\tconst tars = children.filter((o) => values.indexOf(o.key) != -1);\n\t\tnodes?.push(...tars);\n\t\tfor (const ch of children) {\n\t\t\tthis.findTreeNodes(values, ch.children, nodes);\n\t\t}\n\t},\n\tpreloadLog(rawModel: any, fieldList: FormField[], datePipe: DatePipe): any {\n\t\tconst target: any = {};\n\t\tObject.keys(rawModel).forEach((key) => {\n\t\t\tconst field = fieldList.find((field) => field.key === key);\n\t\t\tif (field?.type == 'datepicker') {\n\t\t\t\ttarget[key] = _fieldUtils.toDatePickerValue(field, rawModel[key], datePipe, true);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttarget[key] = rawModel[key];\n\t\t});\n\t\treturn target;\n\t},\n\ttransLog(rawModel: any, changedModel: any, mainValue: any, isNew: boolean,i18n:any): string {\n\t\tif (isNew) {\n\t\t\t// @ts-ignore\n\t\t\tconst isI18n = window.appIsI18n\n\t\t\tlet createStr = isI18n ? i18n.fanyi('app.create') :'新建';\n\t\t\treturn `${createStr}:${mainValue}`\n\t\t}\n\t\tconst detail: string[] = [];\n\t\tObject.keys(changedModel).forEach((key) => {\n\t\t\tif (changedModel[key].type == 'codemirror') {\n\t\t\t\tdetail.push(`[${changedModel[key].name}] 变更`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdetail.push(`[${changedModel[key].name}] ${rawModel[key] || ''} -> ${changedModel[key].value || ''}`);\n\t\t});\n\t\treturn detail.join(';');\n\t},\n\t// 经测试select组件有内部bug\n\t// 设置model时,fieldControl.setValue的emitEvent参数为false,仍会触发valueChanges事件\n\t// 触发valueChanges会影响日志保存的准确性,故此方法仅是为了防止组件内部意外触发的变动\n\tisFakedChange(newValue: any, oldValue: any, field: FormField): boolean {\n\t\tconst changeTypes = ['inputtext', 'inputnumber', 'select', 'treeselect', 'datepicker', 'autocomplete', 'multiselect', 'radio'];\n\t\tif (changeTypes.includes(field.type!)) {\n\t\t\treturn (oldValue || '') == (newValue || '');\n\t\t}\n\t\treturn false;\n\t},\n\tisISO8601(timeStr: string): boolean {\n\t\treturn /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$/.test(timeStr);\n\t},\n};\n\nexport const fieldUtils = {\n\tprops: _fieldUtils.props,\n\tlabel: _fieldUtils.label,\n\tfieldHandler: _fieldUtils.fieldHandler,\n\tdafaultValueHandler: _fieldUtils.dafaultValueHandler,\n\ttriggerHookAndSetValue: _fieldUtils.triggerHookAndSetValue,\n\tfromFieldValue: _fieldUtils.fromFieldValue,\n\tpreloadLog: _fieldUtils.preloadLog,\n\ttransLog: _fieldUtils.transLog,\n\tisFakedChange: _fieldUtils.isFakedChange,\n};\n","import { Component, effect, HostListener, input, ViewChild } from '@angular/core';\nimport { MenuItem } from 'primeng/api';\nimport { ContextMenu } from 'primeng/contextmenu';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport { FormField } from './form-field';\nimport { fieldUtils } from './field-utils';\n\n@Component({\n\tselector: 'app-context-menu',\n\tstandalone: true,\n\timports: [ContextMenu],\n\ttemplate: `\n\t\t@if (visible) {\n\t\t\t<p-contextMenu\n\t\t\t\t#cm\n\t\t\t\t[target]=\"target()\"\n\t\t\t\t[appendTo]=\"'body'\"\n\t\t\t\t[model]=\"items\">\n\t\t\t\t<ng-template\n\t\t\t\t\t#item\n\t\t\t\t\tlet-item>\n\t\t\t\t\t<div class=\"px-[0.5rem] py-[0.5rem]\">\n\t\t\t\t\t\t<i [class]=\"item.icon\"></i>\n\t\t\t\t\t\t<span class=\"ml-2 cursor-pointer\">{{ item.label }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-template>\n\t\t\t</p-contextMenu>\n\t\t}\n\t`,\n\tstyles: [``],\n})\nexport class ContextMenuComponent {\n\t@ViewChild('cm') cm?: ContextMenu;\n\tvisible = true;\n\ttarget = input<any>({});\n\tfield = input<FormField>();\n\titems?: MenuItem[];\n\tcommonItems: MenuItem[] = [\n\t\t{\n\t\t\tlabel: '复制标题【Label】',\n\t\t\ticon: 'pi pi-clone',\n\t\t\tcommand: () => {\n\t\t\t\tconst label = fieldUtils.props(this.field()!).label || '';\n\t\t\t\tthis.clipboard.copy(label);\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlabel: '复制键名【Key】',\n\t\t\ticon: 'pi pi-clone',\n\t\t\tcommand: () => {\n\t\t\t\tthis.clipboard.copy(this.field()?.key || '');\n\t\t\t},\n\t\t},\n\t];\n\t@HostListener('window:resize', ['$event'])\n\tonResize() {\n\t\tthis.updVisible();\n\t}\n\n\tconstructor(private clipboard: Clipboard) {\n\t\tthis.updVisible();\n\t\teffect(() => {\n\t\t\tif (this.field()) {\n\t\t\t\tif (this.field()?.type === 'select') {\n\t\t\t\t\tthis.items = [\n\t\t\t\t\t\t...this.commonItems,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: '复制项值【OptionValue】',\n\t\t\t\t\t\t\ticon: 'pi pi-clone',\n\t\t\t\t\t\t\tcommand: () => {\n\t\t\t\t\t\t\t\tconst value = this.field()?.form?.model()?.[this.field()?.key!];\n\t\t\t\t\t\t\t\tthis.clipboard.copy(value);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: '复制项名称【OptionLabel】',\n\t\t\t\t\t\t\ticon: 'pi pi-clone',\n\t\t\t\t\t\t\tcommand: () => {\n\t\t\t\t\t\t\t\tconst value = this.field()?.form?.model()?.[this.field()?.key!];\n\t\t\t\t\t\t\t\tconst optionValue = this.field()?.selectProps?.optionValue || 'value';\n\t\t\t\t\t\t\t\tconst optionLabel = this.field()?.selectProps?.optionLabel || 'label';\n\t\t\t\t\t\t\t\tconst result = this.field()?.selectProps?.options?.find((item) => item[optionValue] === value)?.[optionLabel];\n\t\t\t\t\t\t\t\tthis.clipboard.copy(result);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t} else if (this.field()?.type === 'treeselect') {\n\t\t\t\t\tthis.items = [\n\t\t\t\t\t\t...this.commonItems,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: '复制项值【OptionValue】',\n\t\t\t\t\t\t\ticon: 'pi pi-clone',\n\t\t\t\t\t\t\tcommand: () => {\n\t\t\t\t\t\t\t\tconst value = this.field()?.form?.model()?.[this.field()?.key!];\n\t\t\t\t\t\t\t\tthis.clipboard.copy(value);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: '复制项名称【OptionLabel】',\n\t\t\t\t\t\t\ticon: 'pi pi-clone',\n\t\t\t\t\t\t\tcommand: () => {\n\t\t\t\t\t\t\t\tconst value = this.field()?.form?.model()?.[this.field()?.key!];\n\t\t\t\t\t\t\t\tconst options: any[] = this.field()?.treeSelectProps?.options!;\n\t\t\t\t\t\t\t\tconst result = this.findLabelByTreeValue(options, value) || '';\n\t\t\t\t\t\t\t\tthis.clipboard.copy(result);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t} else {\n\t\t\t\t\tthis.items = [\n\t\t\t\t\t\t...this.commonItems,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: '复制值【Value】',\n\t\t\t\t\t\t\ticon: 'pi pi-clone',\n\t\t\t\t\t\t\tcommand: () => {\n\t\t\t\t\t\t\t\tconst value = this.field()?.form?.model()?.[this.field()?.key!];\n\t\t\t\t\t\t\t\tthis.clipboard.copy(value);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tfindLabelByTreeValue(options: any[], value: any): string | undefined {\n\t\tfor (const option of options) {\n\t\t\tif (option.key === value) {\n\t\t\t\treturn option.label;\n\t\t\t}\n\t\t\tif (option.children) {\n\t\t\t\tconst foundInChildren = this.findLabelByTreeValue(option.children, value);\n\t\t\t\tif (foundInChildren) return foundInChildren;\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tupdVisible() {\n\t\tthis.visible = window.innerWidth > 1024;\n\t}\n}\n","import { Component, input, effect, ViewChild, ElementRef, Renderer2 } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { FormField, FieldProps } from '../form-field/form-field';\nimport { ActionService } from '../../service/action.service';\n\nexport interface InputTextProps extends FieldProps {\n\ttemplates?: string[];\n}\n\n@Component({\n\tselector: 'form-inputtext',\n\tstandalone: true,\n\timports: [InputTextModule, ReactiveFormsModule],\n\ttemplate: `<input\n\t\t#inputRef\n\t\ttype=\"text\"\n\t\tpInputText\n\t\t[id]=\"field()?.uuid\"\n\t\t[variant]=\"props.variant\"\n\t\t[fluid]=\"props.fluid ?? true\"\n\t\t[pSize]=\"props.size\"\n\t\t[class]=\"props.class\"\n\t\t[formControl]=\"field()!.fieldControl!\" />`,\n\tstyleUrl: '../../styles/styles.scss',\n})\nexport class InputTextComponent {\n\t@ViewChild('inputRef', { read: ElementRef, static: false }) inputRef!: ElementRef;\n\tfield = input<FormField>();\n\tprops: InputTextProps = {};\n\ttemplateIndex = 0;\n\n\tconstructor(\n\t\tprivate action: ActionService,\n\t\tprivate renderer: Renderer2,\n\t) {\n\t\teffect(() => {\n\t\t\tif (this.field()) {\n\t\t\t\tthis.props = this.field()!.inputTextProps!;\n\t\t\t\tthis.handleHookChange();\n\t\t\t\tthis.handleDisabled();\n\t\t\t}\n\t\t});\n\t\teffect(() => {\n\t\t\tconst labelAction = this.action.getFieldLabelAction();\n\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (labelAction.type == 'mouseenter') {\n\t\t\t\tthis.renderer.addClass(this.inputRef.nativeElement, 'ng-hovered');\n\t\t\t} else if (labelAction.type == 'mouseleave') {\n\t\t\t\tthis.renderer.removeClass(this.inputRef.nativeElement, 'ng-hovered');\n\t\t\t} else if (labelAction.type == 'click') {\n\t\t\t\tthis.inputRef.nativeElement.focus();\n\t\t\t} else if (labelAction.type == 'dblclick') {\n\t\t\t\tif (!this.props.templates || !this.props.templates.length) return;\n\t\t\t\tthis.field()?.fieldControl?.setValue(\n\t\t\t\t\tthis.props.templates[\n\t\t\t\t\t\t((this.templateIndex % this.props.templates.length) + this.props.templates.length) % this.props.templates.length\n\t\t\t\t\t],\n\t\t\t\t\t{ emitEvent: true },\n\t\t\t\t\tfalse,\n\t\t\t\t);\n\t\t\t\tthis.templateIndex++;\n\t\t\t}\n\t\t});\n\t}\n\n\thandleHookChange() {\n\t\tthis.field()?.fieldControl?.hookChange.subscribe((value) => {\n\t\t\tif (!value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\n\t\t});\n\t}\n\n\thandleDisabled() {\n\t\tif (this.props?.disabled) {\n\t\t\tthis.field()!.fieldControl!.disable({ emitEvent: false });\n\t\t}\n\t}\n}\n","import { Component, input, effect, ViewChild, ElementRef, Renderer2 } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { InputNumber } from 'primeng/inputnumber';\nimport { FormField, FieldProps, AttributeEvent } from '../form-field/form-field';\nimport { ActionService } from '../../service/action.service';\n\nexport interface InputNumberProps extends FieldProps {\n\tfluid?: boolean;\n\tshowButtons?: boolean;\n\tformat?: boolean;\n\tbuttonLayout?: string;\n\tmaxlength?: number;\n\ttabindex?: number;\n\tariaRequired?: boolean;\n\tautocomplete?: string;\n\tincrementButtonClass?: string;\n\tdecrementButtonClass?: string;\n\tincrementButtonIcon?: string;\n\tdecrementButtonIcon?: string;\n\tstep?: number;\n\tallowEmpty?: boolean;\n\tlocale?: string;\n\tlocaleMatcher?: any;\n\tmode?: any;\n\tcurrency?: string;\n\tcurrencyDisplay?: any;\n\tuseGrouping?: boolean;\n\tminFractionDigits?: number;\n\tmaxFractionDigits?: number;\n\tprefix?: string;\n\tsuffix?: string;\n\tshowClear?: boolean;\n\n\tonInput?: AttributeEvent;\n\tonFocus?: AttributeEvent;\n\tonBlur?: AttributeEvent;\n\tonKeyDown?: AttributeEvent;\n\tonClear?: AttributeEvent;\n}\n\n@Component({\n\tselector: 'form-inputnumber',\n\tstandalone: true,\n\timports: [InputTextModule, InputNumber, ReactiveFormsModule],\n\tstyles: `\n\t\t.field-vvvv {\n\t\t\tbackground: red;\n\t\t}\n\t`,\n\ttemplate: `<p-inputnumber\n\t\t[id]=\"field()?.uuid\"\n\t\t[inputId]=\"field()?.uuid\"\n\t\t[variant]=\"props.variant ?? 'outlined'\"\n\t\t[fluid]=\"props.fluid\"\n\t\t[size]=\"props.size\"\n\t\t[showButtons]=\"props.showButtons\"\n\t\t[format]=\"props.format ?? true\"\n\t\t[buttonLayout]=\"props.buttonLayout ?? 'stacked'\"\n\t\t[styleClass]=\"props.styleClass\"\n\t\t[maxlength]=\"props.maxlength ?? null\"\n\t\t[ariaLabelledBy]=\"props.ariaLabelledBy\"\n\t\t[ariaLabel]=\"props.ariaLabel\"\n\t\t[ariaRequired]=\"props.ariaRequired\"\n\t\t[autocomplete]=\"props.autocomplete\"\n\t\t[min]=\"props.min\"\n\t\t[max]=\"props.max\"\n\t\t[incrementButtonClass]=\"props.incrementButtonClass\"\n\t\t[decrementButtonClass]=\"props.decrementButtonClass\"\n\t\t[incrementButtonIcon]=\"props.incrementButtonIcon\"\n\t\t[decrementButtonIcon]=\"props.decrementButtonIcon\"\n\t\t[step]=\"props.step\"\n\t\t[allowEmpty]=\"props.allowEmpty ?? true\"\n\t\t[locale]=\"props.locale\"\n\t\t[localeMatcher]=\"props.localeMatcher\"\n\t\t[mode]=\"props.mode\"\n\t\t[currency]=\"props.currency\"\n\t\t[currencyDisplay]=\"props.currencyDisplay\"\n\t\t[useGrouping]=\"props.useGrouping\"\n\t\t[variant]=\"props.variant\"\n\t\t[minFractionDigits]=\"props.minFractionDigits\"\n\t\t[maxFractionDigits]=\"props.maxFractionDigits\"\n\t\t[prefix]=\"props.prefix\"\n\t\t[suffix]=\"props.suffix\"\n\t\t[inputStyle]=\"props.inputStyle\"\n\t\t[inputStyleClass]=\"props.inputStyleClass\"\n\t\t[showClear]=\"props.showClear\"\n\t\t[autofocus]=\"props.autofocus\"\n\t\t[fluid]=\"props.fluid == undefined ? true : props.fluid\"\n\t\t(onInput)=\"props.onInput?.(field()!, $event)\"\n\t\t(onFocus)=\"props.onFocus?.(field()!, $event)\"\n\t\t(onBlur)=\"props.onBlur?.(field()!, $event)\"\n\t\t(onKeyDown)=\"props.onKeyDown?.(field()!, $event)\"\n\t\t(onClear)=\"props.onClear?.(field()!, $event)\"\n\t\t[class]=\"props.class ?? 'field-vvvv'\"\n\t\t[formControl]=\"field()!.fieldControl!\" />`,\n\tstyleUrl: '../../styles/styles.scss',\n})\nexport class InputNumberComponent {\n\t@ViewChild(InputNumber, { static: false }) inputNumber!: InputNumber;\n\t@ViewChild(InputNumber, { read: ElementRef, static: false }) inputNumberRef!: ElementRef;\n\tfield = input<FormField>();\n\tprops: InputNumberProps = {};\n\n\tconstructor(\n\t\tprivate action: ActionService,\n\t\tprivate renderer: Renderer2,\n\t) {\n\t\teffect(() => {\n\t\t\tif (this.field()) {\n\t\t\t\tthis.props = this.field()!.inputNumberProps!;\n\t\t\t\tthis.handleHookChange();\n\t\t\t\tthis.handleDisabled();\n\t\t\t}\n\t\t});\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tconst labelAction = this.action.getFieldLabelAction();\n\t\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (labelAction.type == 'mouseenter') {\n\t\t\t\t\tthis.renderer.addClass(this.inputNumberRef.nativeElement, 'ng-hovered');\n\t\t\t\t} else if (labelAction.type == 'mouseleave') {\n\t\t\t\t\tthis.renderer.removeClass(this.inputNumberRef.nativeElement, 'ng-hovered');\n\t\t\t\t} else if (labelAction.type == 'click') {\n\t\t\t\t\tthis.inputNumber.input.nativeElement.focus();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t}\n\n\thandleHookChange() {\n\t\tthis.field()?.fieldControl?.hookChange.subscribe((value) => {\n\t\t\tif (!value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\n\t\t});\n\t}\n\n\thandleDisabled() {\n\t\tif (this.props?.disabled) {\n\t\t\tthis.field()!.fieldControl!.disable({ emitEvent: false });\n\t\t}\n\t}\n}\n","import { FormGroup } from '@angular/forms';\r\nimport { Observable, of, shareReplay, pipe } from 'rxjs';\r\nimport * as ts from 'typescript';\r\nimport { formTypeToProps } from '../../public-api';\r\nimport NP from 'number-precision'\r\n\r\nexport type FilterMatchMode =\r\n\t| 'endsWith'\r\n\t| 'startsWith'\r\n\t| 'contains'\r\n\t| 'equals'\r\n\t| 'notEquals'\r\n\t| 'in'\r\n\t| 'lt'\r\n\t| 'lte'\r\n\t| 'gt'\r\n\t| 'gte';\r\n\r\nexport const getFilterMatchMode = (mode: any): FilterMatchMode => {\r\n\t// 未配置时使用 PrimeNG 默认 contains\r\n\tif (!mode) {\r\n\t\treturn 'contains';\r\n\t}\r\n\treturn mode;\r\n};\r\nexport let toPascalCase = (str: string) =>\r\n\tstr\r\n\t\t.replace(/_/g, ' ') // 下划线替换为空格\r\n\t\t.replace(/([a-z])([A-Z])/g, '$1 $2') // 小驼峰分割为单词\r\n\t\t.toLowerCase() // 转为小写\r\n\t\t.split(/\\s+/) // 按空格分割\r\n\t\t.map((word) => (word ? word[0].toUpperCase() + word.slice(1) : ''))\r\n\t\t.join('');\r\n\r\nexport const generateUniqueId = () => {\r\n\tconst timestamp = Date.now().toString(36); // 时间戳转36进制缩短长度\r\n\tconst random = Math.random().toString(36).substring(2, 4); // 随机部分\r\n\treturn `${timestamp}${random}`;\r\n};\r\n\r\nexport const createCircularIterator = (array: any[]) => {\r\n\tlet index = -1;\r\n\treturn {\r\n\t\tnext: () => {\r\n\t\t\tindex++;\r\n\t\t\treturn array[index % array.length];\r\n\t\t},\r\n\t\tprev: () => {\r\n\t\t\tindex--;\r\n\t\t\treturn array[((index % array.length) + array.length) % array.length];\r\n\t\t},\r\n\t};\r\n};\r\n\r\nexport const parseFunctions = (obj: any, _this: any): any => {\r\n\tif (typeof obj === 'string') {\r\n\t\t// 尝试检测是否是函数字符串\r\n\t\tif ((obj.includes('=>') || obj.includes('Promise')) && !isJSONParsable(obj)) {\r\n\t\t\tconst o = compileTsToJs(obj);\r\n\t\t\t// console.log('解析函数:', obj);\r\n\t\t\ttry {\r\n\t\t\t\tconst sandbox = {\r\n\t\t\t\t\tObservable,\r\n\t\t\t\t\tof,\r\n\t\t\t\t\tshareReplay,\r\n\t\t\t\t\tpipe,\r\n\t\t\t\t\tPromise, // 添加 Promise 到 sandbox\r\n\t\t\t\t\tasync: true, // 标记支持异步\r\n\t\t\t\t\tresolve: Promise.resolve.bind(Promise),\r\n\t\t\t\t\treject: Promise.reject.bind(Promise),\r\n\t\t\t\t\tNP,\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// 处理 Promise 构造函数的情况\r\n\t\t\t\tif (obj.includes('new Promise')) {\r\n\t\t\t\t\treturn new Function(\r\n\t\t\t\t\t\t'sandbox',\r\n\t\t\t\t\t\t`\r\n\t\t\t\t\t\t\twith(sandbox) {\r\n\t\t\t\t\t\t\t\treturn ${o};\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t`,\r\n\t\t\t\t\t).bind(_this)(sandbox);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// 处理普通函数和箭头函数\r\n\t\t\t\treturn new Function(\r\n\t\t\t\t\t'sandbox',\r\n\t\t\t\t\t`\r\n\t\t\t\t\t\twith(sandbox) {\r\n\t\t\t\t\t\t\treturn (${o});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t`,\r\n\t\t\t\t).bind(_this)(sandbox);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tconsole.error('函数解析失败:', e, '\\n原始字符串:', obj);\r\n\t\t\t\treturn obj;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (isJSONParsable(obj)) {\r\n\t\t\tlet json = JSON.parse(obj);\r\n\t\t\treturn parseFunctions(json, _this);\r\n\t\t}\r\n\t\treturn obj;\r\n\t}\r\n\tif (Array.isArray(obj)) {\r\n\t\treturn obj.map((item: any) => parseFunctions(item, _this));\r\n\t}\r\n\tif (typeof obj === 'object' && obj !== null) {\r\n\t\tconst result: any = {};\r\n\t\tfor (const key in obj) {\r\n\t\t\tif (obj.hasOwnProperty(key)) {\r\n\t\t\t\tresult[key] = parseFunctions(obj[key], _this);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\treturn obj;\r\n};\r\n\r\n// 辅助函数:检查是否包含 Promise 构造函数\r\nconst containsPromiseConstructor = (str: string): boolean => {\r\n\treturn /new\\s+Promise/.test(str);\r\n};\r\n\r\n// 修改 compileTsToJs 函数以更好地处理 Promise\r\nexport const compileTsToJs = (tsCode: string): string => {\r\n\t// 如果是 Promise 构造函数,不需要额外处理\r\n\tif (containsPromiseConstructor(tsCode)) {\r\n\t\treturn tsCode;\r\n\t}\r\n\r\n\tconst result = ts.transpileModule(tsCode, {\r\n\t\tcompilerOptions: {\r\n\t\t\tmodule: ts.ModuleKind.CommonJS,\r\n\t\t\ttarget: ts.ScriptTarget.ES2015,\r\n\t\t\t// 启用异步函数支持\r\n\t\t\tlib: ['es2015', 'es2015.promise', 'dom'],\r\n\t\t},\r\n\t});\r\n\treturn removeTrailingSemicolon(result.outputText);\r\n};\r\n\r\nconst removeTrailingSemicolon = (funcStr: string): string => {\r\n\t// 先去除前后空白\r\n\tconst trimmed = funcStr.trim();\r\n\t// 只替换最后一个分号(如果它不在花括号内)\r\n\tif (trimmed.endsWith(';')) {\r\n\t\treturn trimmed.slice(0, -1);\r\n\t}\r\n\treturn trimmed;\r\n};\r\n\r\nexport const isJSONParsable = (str: any) => {\r\n\ttry {\r\n\t\tJSON.parse(str);\r\n\t\treturn true;\r\n\t} catch (e) {\r\n\t\t// let strIsObj = /\\{[^}]*\\}|\\[[^\\]]*\\]/.test(str)\r\n\t\t// if(strIsObj){\r\n\t\t// \tconsole.error('JSON 解析失败:', e, '\\n原始字符串:', str)\r\n\t\t// }\r\n\t\treturn false;\r\n\t}\r\n};\r\n\r\n/**\r\n * 根据指定的键数组过滤对象\r\n * @param {Object} obj - 要过滤的原始对象\r\n * @param {Array} keys - 需要保留的键数组\r\n * @returns {Object} 过滤后的新对象\r\n */\r\nexport const filterObjectByKeys = (obj: any, keys: string[]) => {\r\n\t// 参数校验\r\n\tif (typeof obj !== 'object' || obj === null || Array.isArray(obj)) {\r\n\t\tthrow new TypeError('第一个参数必须是普通对象');\r\n\t}\r\n\r\n\tif (!Array.isArray(keys)) {\r\n\t\tthrow new TypeError('第二个参数必须是数组');\r\n\t}\r\n\r\n\t// 使用reduce创建新对象\r\n\treturn keys.reduce((acc: any, key: string) => {\r\n\t\t// 只有当原对象有该属性时才添加到新对象\r\n\t\tif (key in obj) {\r\n\t\t\tacc[key] = obj[key];\r\n\t\t}\r\n\t\treturn acc;\r\n\t}, {});\r\n};\r\n/**\r\n * 自定义函数去除空字符串\r\n * @param act \r\n * @returns \r\n */\r\nexport const convertAct = (act:any) =>{\r\n\tact.forEach((v:any) => {\r\n\t\tif(v.hasOwnProperty('btnHidden') &&typeof v.btnHidden != 'function'){\r\n\t\t\tdelete v.btnHidden\r\n\t\t}\r\n\t\tif(v.hasOwnProperty('btnDisabled') &&typeof v.btnDisabled != 'function'){\r\n\t\t\tdelete v.btnDisabled\r\n\t\t}\r\n\t\tif(v.hasOwnProperty('onClick') &&typeof v.onClick != 'function'){\r\n\t\t\tdelete v.onClick\r\n\t\t}\r\n\t})\r\n\treturn act;\r\n}\r\n\r\n/**\r\n * formpage 通用content函数转移\r\n * @param content \r\n * @param thisArg\r\n */\r\nexport const changeContent = (content: any,thisArg:any) =>{\r\n\t// @ts-ignore\r\n\tconst isI18n = window.appIsI18n\r\n\tcontent = parseFunctions(content,thisArg);\r\n\tlet { gridList, hrefBtnList, getPrm, groups, statusKey, status, statusSteps,statusConf = null } = content;\r\n\tif (statusKey) {\r\n\t\tthisArg.statusKey = statusKey;\r\n\t\tstatusSteps.forEach((item:any) => {\r\n\t\t\tif(isI18n && (!item.hasOwnProperty('i18nKey') || item.i18nKey == '')){\r\n\t\t\t\titem.i18nKey = `tables.${getPrm.modelName}.${statusKey}${item.value}`\r\n\t\t\t}\r\n\t\t});\r\n\t\tthisArg.steps = statusSteps\r\n\t\tstatusConf && (thisArg.statusConf = statusConf)\r\n\t}\r\n\r\n\tthisArg.actions = convertAct(content.actions)\r\n\tcontent.formDisabled && (thisArg.formDisabled = content.formDisabled);\r\n\tthisArg.getPrm = getPrm;\r\n\tthisArg.getPrm.orgField = content.orgField || '';\r\n\tthisArg.grids = [];\r\n\tlet fiterPreloads:any[] = []\r\n\r\n\tconvertForm(thisArg,groups,content.sourceData)\r\n\tconvertGrid(thisArg,gridList,fiterPreloads)\r\n\t\r\n\tthisArg.formDetail = content.formDetail\r\n\tthisArg.saveFunc = content.saveFunc\r\n\tthisArg.isLog = content.sourceData.model.log;\r\n\tthisArg.getPrm['getLog'] = content.sourceData.model.log;\r\n\tthisArg.getPrm['fiterPreloads'] = fiterPreloads\r\n\tthisArg.hrefBtnList = hrefBtnList;\r\n}\r\n\r\nexport const calcRowSpan = (params: any, field?: string) => {\r\n\tfield = field || params.colDef.field;\r\n\tconst currentValue = params.data[field!];\r\n\tconst currentRowIndex = params.node.rowIndex;\r\n\r\n\tlet rowSpan = 1;\r\n\r\n\tfor (let i = currentRowIndex + 1; i < params.api.getDisplayedRowCount(); i++) {\r\n\t\tconst node = params.api.getDisplayedRowAtIndex(i);\r\n\t\tif (node.data[field!] === currentValue) {\r\n\t\t\trowSpan++;\r\n\t\t} else {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif (currentRowIndex > 0 && params.api.getDisplayedRowAtIndex(currentRowIndex - 1).data[field!] === currentValue) {\r\n\t\treturn 1;\r\n\t}\r\n\treturn rowSpan;\r\n}\r\n\r\nexport const convertCol = (options:any,col: any[], authLevel:number,dragSort?:string,) => {\r\n\t// @ts-ignore\r\n\tconst isI18n = window.appIsI18n\r\n\t// console.log('isI18n-----',isI18n)\r\n\tcol.forEach((item: any,index:number) => {\r\n\t\titem.hide = item.hideCol;\r\n\t\tif (authLevel < 3) {\r\n\t\t\titem.editable = false;\r\n\t\t}\r\n\t\tif(dragSort && index ===0){\r\n\t\t\titem.rowDrag = true\r\n\t\t}\r\n\t\tif(isI18n && (!item.hasOwnProperty('i18nKey') || item.i18nKey == '')){\r\n\t\t\titem.i18nKey = `tables.${options.modelName}.${item.field}`\r\n\t\t}\r\n\t\tif(item.hasOwnProperty('textWrap') && item.textWrap) {\r\n\t\t\titem.autoHeight = true\r\n\t\t\titem.cellClass = 'cell-wrap-text'\r\n\t\t}\r\n\t\tif(item.fieldType == 'VARCHAR'){\r\n\t\t\titem.cellDataType = false\r\n\t\t}\r\n\t\tif(item.rowSpanConf){\r\n\t\t\tlet rowSpan = {\r\n\t\t\t\trowSpan: (params: any) => calcRowSpan(params),\r\n\t\t\t\tcellRenderer: 'rowSpanRenderer',\r\n\t\t\t\tcellRendererParams: {\r\n\t\t\t\t\trowSpan: (params: any) => calcRowSpan(params),\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tObject.assign(item,rowSpan)\r\n\t\t\toptions.suppressRowTransform = true\r\n\t\t\toptions.rowClass = 'rowSpan'\r\n\t\t}\r\n\t\t// if(item.editable){\r\n\t\t// \titem.headerClass = item.hasOwnProperty('headerClass') \r\n\t\t// \t\t? `${item.headerClass} editable-column-header` \r\n\t\t// \t\t: 'editable-column-header'\r\n\t\t// }\r\n\t});\r\n}\r\n\r\nexport const gridOptionsHooker = (gridOptions: any) => {\r\n\tgridOptions?.columnDefs?.forEach((col: any) => {\r\n\t\tif (col.hideCol) {\r\n\t\t\tcol.hide = col.hideCol;\r\n\t\t\tdelete col.hideCol;\r\n\t\t}\r\n\t\t// @ts-ignore\r\n\t\tconst isI18n = window.appIsI18n\r\n\t\tif( isI18n && (!col.hasOwnProperty('i18nKey') || col.i18nKey == '')){\r\n\t\t\t\tcol.i18nKey = `tables.${gridOptions.modelName}.${col.field}`\r\n\t\t\t}\r\n\t\tif(col.hasOwnProperty('textWrap') && col.textWrap) {\r\n\t\t\tcol.autoHeight = true\r\n\t\t\tcol.cellClass = 'cell-wrap-text'\r\n\t\t}\r\n\t\tif(col.rowSpanConf){\r\n\t\t\tlet rowSpan = {\r\n\t\t\t\trowSpan: (params: any) => calcRowSpan(params),\r\n\t\t\t\tcellRenderer: 'rowSpanRenderer',\r\n\t\t\t\tcellRendererParams: {\r\n\t\t\t\t\trowSpan: (params: any) => calcRowSpan(params),\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tObject.assign(col,rowSpan)\r\n\t\t\tgridOptions.suppressRowTransform = true\r\n\t\t\tgridOptions.rowClass = 'rowSpan'\r\n\t\t}\r\n\t});\r\n}\r\n\r\nexport const convertGrid = (thisArg:any,gridList:any,fiterPreloads:any) => {\r\n\tgridList.forEach(async (item: any) => {\r\n\t\t!item.type && (item.type = 'grid')\r\n\t\tlet grid:any = {type:item.type}\r\n\t\tif(item.fiterPreloads instanceof Array){\r\n\t\t\tfiterPreloads = [...fiterPreloads, ...item.fiterPreloads]\r\n\t\t}\r\n\t\tif(item.type == 'grid'){\r\n\t\t\tlet {\r\n\t\t\t\tgridOptions: { columnDefs, ...restGridOptions },\r\n\t\t\t\tsubTableSource,\r\n\t\t\t\tsubDataKey,\r\n\t\t\t\ttitle,\r\n\t\t\t\tselectDataCb,\r\n\t\t\t\tfk,\r\n\t\t\t\tmainField,\r\n\t\t\t\tuniqueField,\r\n\t\t\t\taddDataCb,\r\n\t\t\t\tshowDelete = true,\r\n\t\t\t\tscrollHeight,\r\n\t\t\t\tdragSort,\r\n\t\t\t\tselectionMode,\r\n\t\t\t\tisRowSelectable,\r\n\t\t\t\taddSort\r\n\t\t\t} = item;\r\n\t\t\tgrid = { subTableSource, subDataKey, title,showDelete, ...grid};\r\n\t\t\tlet gridOptions = {\r\n\t\t\t\t...restGridOptions,\r\n\t\t\t\tfk,\r\n\t\t\t\tsubTableSource,\r\n\t\t\t\tsubDataKey,\r\n\t\t\t\tmainField,\r\n\t\t\t};\r\n\t\t\t// @ts-ignore\r\n\t\t\tif(window.appIsI18n && (!item.hasOwnProperty('i18nKey') || item.i18nKey == '')){\r\n\t\t\t\tgrid.i18nKey = `tables.${thisArg.getPrm.modelName}.${subDataKey}`\r\n\t\t\t}\r\n\t\t\tif(gridOptions.rowModelType == 'clientSide'){\r\n\t\t\t\tgridOptions.suppressRowVirtualisation = true\r\n\t\t\t}\r\n\t\t\tif(scrollHeight){\r\n\t\t\t\tgridOptions.scrollHeight = scrollHeight\r\n\t\t\t}\r\n\t\t\tif(dragSort){\r\n\t\t\t\tgridOptions.rowDragManaged = true\r\n\t\t\t\tgridOptions.dragSort = dragSort\r\n\t\t\t}\r\n\t\t\tif(selectionMode) {\r\n\t\t\t\tgridOptions.selectionMode = selectionMode\r\n\t\t\t\tif(selectionMode != 'none'){\r\n\t\t\t\t\tgridOptions.rowSelection = {\r\n\t\t\t\t\t\tmode: selectionMode == 'single' ? 'singleRow' : 'multiRow',\r\n\t\t\t\t\t\tisRowSelectable: isRowSelectable ? isRowSelectable:null\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t gridOptions.rowSelection = undefined\r\n\t\t\t \t}\r\n\t\t\t}\r\n\t\t\tconvertCol(gridOptions,columnDefs,thisArg.authLevel,dragSort);\r\n\t\t\tgridOptions.columnDefs = columnDefs;\r\n\t\t\tif (subTableSource === 'select') {\r\n\t\t\t\tthisArg.webget({ code: item.selectModelCode }).subscribe((res:any) => {\r\n\t\t\t\t\tlet selectContent = parseFunctions(JSON.parse(res.content), thisArg);\r\n\t\t\t\t\tgrid.selectOptions = selectContent?.gridOptions;\r\n\t\t\t\t\tgrid.selectOptions.rowModelType = grid.selectOptions.rowModelType || 'serverSide';\r\n\t\t\t\t\tif (grid.selectOptions.rowModelType == 'serverSide') {\r\n\t\t\t\t\t\tgrid.selectOptions.serverFunc = grid.selectOptions.serverFunc || thisArg.web_search.bind(thisArg);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tgrid.selectOptions.clientFunc = grid.selectOptions.clientFunc || thisArg.web_search.bind(thisArg);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgrid.uniqueField = uniqueField;\r\n\t\t\t\t\tgrid.selectDataCb = selectDataCb;\r\n\t\t\t\t\tgrid.selectOptions.scrollHeight = '300px';\r\n\t\t\t\t\tgrid.selectOptions.searchPrm = selectContent.searchPrm\r\n\t\t\t\t\tconvertCol(grid.selectOptions,grid.selectOptions.columnDefs!,1);\r\n\t\t\t\t});\r\n\t\t\t\tgrid.searchPrm = { ...thisArg.searchPrm };\r\n\t\t\t} else {\r\n\t\t\t\taddDataCb && (gridOptions.addDataCb = addDataCb);\r\n\t\t\t}\r\n\t\t\tgrid.gridOptions = gridOptions;\r\n\t\t\taddSort && (grid.addSort = addSort)\r\n\t\t} else {\r\n\t\t\titem.interactiveLabel = true\r\n\t\t\tgrid = {\r\n\t\t\t\t...item\r\n\t\t\t}\r\n\t\t\tgrid.form = new FormGroup({})\r\n\t\t}\r\n\t\tthisArg.grids.push(grid);\r\n\t});\r\n}\r\n\r\nexport const convertForm = (thisArg:any, groupArr:any,sourceData:any) => {\r\n\tgroupArr.forEach((item: any) => {\r\n\t\tif (thisArg.authLevel < 3) {\r\n\t\t\titem[formTypeToProps[item.type]].disabled = true;\r\n\t\t}\r\n\t});\r\n\tthisArg.formOptions = {\r\n\t\tfields: [\r\n\t\t\t{\r\n\t\t\t\tgroupClass: 'flex flex-row flex-wrap',\r\n\t\t\t\tgroup: groupArr,\r\n\t\t\t},\r\n\t\t],\r\n\t\tform: new FormGroup({}),\r\n\t\tmainField: sourceData.model.mainFields,\r\n\t\tmodelName: sourceData.model.modelName,\r\n\t\textra: {thisArg}\r\n\t};\r\n}\r\n\r\nexport const clearLocal = () => {\r\n\tlet themeConfigState = window.localStorage.getItem('themeConfigState')\r\n\twindow.localStorage.clear()\r\n\tif(themeConfigState){\r\n\t\twindow.localStorage.setItem('themeConfigState',themeConfigState)\r\n\t}\r\n\twindow.sessionStorage.clear()\r\n}\r\n\r\nexport const pageListGridOptions = (gridOptions: any,thisArg:any) => {\r\n\tgridOptions.scrollHeight = 'calc(100vh - 95px)';\r\n\tgridOptions.rowModelType = gridOptions.rowModelType || 'serverSide';\r\n\tif (gridOptions.rowModelType == 'serverSide') {\r\n\t\tgridOptions.serverFunc = gridOptions.serverFunc || thisArg.web_search.bind(thisArg);\r\n\t} else {\r\n\t\tgridOptions.clientFunc = gridOptions.clientFunc || thisArg.web_search.bind(thisArg);\r\n\t}\r\n\tif(gridOptions.selectionMode) {\r\n\t\t\t// gridOptions.selectionMode = selectionMode\r\n\t\tif(gridOptions.selectionMode != 'none'){\r\n\t\t\tgridOptions.rowSelection = {\r\n\t\t\t\tmode: gridOptions.selectionMode == 'single' ? 'singleRow' :'multiRow',\r\n\t\t\t\tisRowSelectable: gridOptions.isRowSelectable ? gridOptions.isRowSelectable : undefined\r\n\t\t\t}\r\n\t\t\tif(gridOptions.hasOwnProperty('headerCheckbox') && gridOptions.rowSelection.mode == 'multiRow'){\r\n\t\t\t\tgridOptions.rowSelection.headerCheckbox = gridOptions.headerCheckbox\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tgridOptions.rowSelection = undefined\r\n\t\t}\r\n\t}\r\n\tconvertCol(gridOptions,gridOptions.columnDefs!,1)\r\n\treturn gridOptions\r\n}\r\n// 深度拷贝\r\nexport const deepClone = (source:any,that:any, cache?:any,) => {\r\n if(!cache){\r\n cache = new Map() \r\n }\r\n if(source instanceof Object) { // 不考虑跨 iframe\r\n if(cache.get(source)) { return cache.get(source) }\r\n let result:any\r\n if(source instanceof Function) {\r\n if(source.prototype) { // 有 prototype 就是普通函数\r\n result = function(){ return source.apply(that, arguments) }\r\n } else {\r\n result = (...args: any) => { return source.call(undefined, ...args) }\r\n }\r\n } else if(source instanceof Array) {\r\n result = []\r\n } else if(source instanceof Date) {\r\n result = new Date((source as any) - 0)\r\n } else if(source instanceof RegExp) {\r\n result = new RegExp(source.source, source.flags)\r\n } else {\r\n result = {}\r\n }\r\n cache.set(source, result)\r\n for(let key in source) { \r\n if(source.hasOwnProperty(key)){\r\n result[key] = deepClone(source[key], cache) \r\n }\r\n }\r\n return result\r\n } else {\r\n return source\r\n }\r\n}\r\n","import { Component, input, effect, ViewChild, ElementRef, Renderer2 } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormField, FieldProps, AttributeEvent } from '../form-field/form-field';\nimport { Select } from 'primeng/select';\nimport { ScrollerOptions, OverlayOptions } from 'primeng/api';\nimport { ActionService } from '../../service/action.service';\nimport { getFilterMatchMode as _getFilterMatchMode } from '../../share/utils';\n\nexport interface SelectProps extends FieldProps {\n\tscrollHeight?: string;\n\tfilter?: boolean;\n\tpanelStyle?: any;\n\tpanelStyleClass?: string;\n\treadonly?: boolean;\n\teditable?: boolean;\n\tappendTo?: any;\n\ttabindex?: number;\n\tloadingIcon?: string;\n\tfilterPlaceholder?: string;\n\tfilterLocale?: string;\n\tdataKey?: string;\n\tfilterBy?: string;\n\tfilterFields?: any[];\n\tresetFilterOnHide?: boolean;\n\tcheckmark?: boolean;\n\tdropdownIcon?: string;\n\tloading?: string;\n\toptionLabel?: string;\n\toptionValue?: string;\n\toptionDisabled?: string;\n\toptionGroupLabel?: string;\n\toptionGroupChildren?: string;\n\tgroup?: boolean;\n\tshowClear?: boolean;\n\temptyFilterMessage?: any;\n\temptyMessage?: any;\n\tlazy?: boolean;\n\tvirtualScroll?: boolean;\n\tvirtualScrollItemSize?: number;\n\tvirtualScrollOptions?: ScrollerOptions;\n\toverlayOptions?: OverlayOptions;\n\tariaFilterLabel?: string;\n\tfilterMatchMode?: any;\n\tmaxlength?: any;\n\ttooltip?: any;\n\ttooltipPosition?: 'right' | 'left' | 'top' | 'bottom';\n\ttooltipPositionStyle?: string;\n\ttooltipStyleClass?: string;\n\tfocusOnHover?: boolean;\n\tfilterValue?: string;\n\toptions?: any[];\n\n\tonChange?: AttributeEvent;\n\tonFilter?: AttributeEvent;\n\tonFocus?: AttributeEvent;\n\tonBlur?: AttributeEvent;\n\tonClick?: AttributeEvent;\n\tonShow?: AttributeEvent;\n\tonHide?: AttributeEvent;\n\tonClear?: AttributeEvent;\n\tonLazyLoad?: AttributeEvent;\n}\n\n@Component({\n\tselector: 'form-select',\n\tstandalone: true,\n\timports: [Select, ReactiveFormsModule],\n\ttemplate: `<p-select\n\t\t[id]=\"field()?.uuid\"\n\t\t[inputId]=\"field()?.uuid\"\n\t\t[scrollHeight]=\"props.scrollHeight ?? '200px'\"\n\t\t[filter]=\"props.filter\"\n\t\t[name]=\"props.name\"\n\t\t[options]=\"props.options\"\n\t\t[optionLabel]=\"props.optionLabel\"\n\t\t[optionValue]=\"props.optionValue\"\n\t\t[placeholder]=\"props.placeholder\"\n\t\t[class]=\"props.class\"\n\t\t[style]=\"props.style\"\n\t\t[panelStyle]=\"props.panelStyle\"\n\t\t[panelStyleClass]=\"props.panelStyleClass\"\n\t\t[readonly]=\"props.readonly\"\n\t\t[editable]=\"props.editable\"\n\t\t[appendTo]=\"props.appendTo ?? 'body'\"\n\t\t[tabindex]=\"props.tabindex\"\n\t\t[placeholder]=\"props.placeholder\"\n\t\t[loadingIcon]=\"props.loadingIcon\"\n\t\t[filterPlaceholder]=\"props.filterPlaceholder\"\n\t\t[filterLocale]=\"props.filterLocale\"\n\t\t[variant]=\"props.variant\"\n\t\t[dataKey]=\"props.dataKey\"\n\t\t[filterBy]=\"props.filterBy\"\n\t\t[filterFields]=\"props.filterFields\"\n\t\t[autofocus]=\"props.autofocus\"\n\t\t[resetFilterOnHide]=\"props.resetFilterOnHide\"\n\t\t[checkmark]=\"props.checkmark\"\n\t\t[dropdownIcon]=\"props.dropdownIcon\"\n\t\t[loading]=\"props.loading\"\n\t\t[optionDisabled]=\"props.optionDisabled\"\n\t\t[optionGroupLabel]=\"props.optionGroupLabel\"\n\t\t[optionGroupChildren]=\"props.optionGroupChildren ?? 'items'\"\n\t\t[group]=\"props.group\"\n\t\t[showClear]=\"props.showClear\"\n\t\t[emptyFilterMessage]=\"props.emptyFilterMessage\"\n\t\t[emptyMessage]=\"props.emptyMessage\"\n\t\t[lazy]=\"props.lazy\"\n\t\t[virtualScroll]=\"props.virtualScroll\"\n\t\t[virtualScrollItemSize]=\"props.virtualScrollItemSize\"\n\t\t[virtualScrollOptions]=\"props.virtualScrollOptions\"\n\t\t[overlayOptions]=\"props.overlayOptions\"\n\t\t[size]=\"props.size\"\n\t\t[ariaFilterLabel]=\"props.ariaFilterLabel\"\n\t\t[ariaLabel]=\"props.ariaLabel\"\n\t\t[ariaLabelledBy]=\"props.ariaLabelledBy\"\n\t\t[filterMatchMode]=\"getFilterMatchMode(props.filterMatchMode)\"\n\t\t[maxlength]=\"props.maxlength\"\n\t\t[tooltip]=\"props.tooltip\"\n\t\t[tooltipPosition]=\"props.tooltipPosition ?? 'right'\"\n\t\t[tooltipPositionStyle]=\"props.tooltipPositionStyle ?? 'absolute'\"\n\t\t[tooltipStyleClass]=\"props.tooltipStyleClass\"\n\t\t[focusOnHover]=\"props.focusOnHover ?? true\"\n\t\t[fluid]=\"props.fluid ?? true\"\n\t\t[filterValue]=\"props.filterValue\"\n\t\t(onChange)=\"props.onChange?.(field()!, $event)\"\n\t\t(onFilter)=\"props.onFilter?.(field()!, $event)\"\n\t\t(onFocus)=\"props.onFocus?.(field()!, $event)\"\n\t\t(onBlur)=\"props.onBlur?.(field()!, $event)\"\n\t\t(onClick)=\"props.onClick?.(field()!, $event)\"\n\t\t(onShow)=\"props.onShow?.(field()!, $event)\"\n\t\t(onHide)=\"props.onHide?.(field()!, $event)\"\n\t\t(onClear)=\"props.onClear?.(field()!, $event)\"\n\t\t(onLazyLoad)=\"props.onLazyLoad?.(field()!, $event)\"\n\t\t[class]=\"props.class\"\n\t\t[formControl]=\"field()!.fieldControl!\" />`,\n\tstyleUrl: '../../styles/styles.scss',\n})\nexport class SelectComponent {\n\t@ViewChild(Select, { static: false }) select!: Select;\n\t@ViewChild(Select, { read: ElementRef, static: false }) selectRef!: ElementRef;\n\tfield = input<FormField>();\n\tprops: SelectProps = {};\n\n\tconstructor(\n\t\tprivate action: ActionService,\n\t\tprivate renderer: Renderer2,\n\t) {\n\t\teffect(() => {\n\t\t\tif (this.field()) {\n\t\t\t\tthis.props = this.field()!.selectProps!;\n\t\t\t\tthis.handleHookChange();\n\t\t\t\tthis.handleDisabled();\n\t\t\t}\n\t\t});\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tconst labelAction = this.action.getFieldLabelAction();\n\t\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (labelAction.type == 'mouseenter') {\n\t\t\t\t\tthis.renderer.addClass(this.selectRef.nativeElement, 'ng-hovered');\n\t\t\t\t} else if (labelAction.type == 'mouseleave') {\n\t\t\t\t\tthis.renderer.removeClass(this.selectRef.nativeElement, 'ng-hovered');\n\t\t\t\t} else if (labelAction.type == 'click') {\n\t\t\t\t\tif (!this.select.overlayVisible) {\n\t\t\t\t\t\tthis.select.show();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t}\n\n\thandleHookChange() {\n\t\tthis.field()?.fieldControl?.hookChange.subscribe((value) => {\n\t\t\tif (!value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\n\t\t});\n\t}\n\n\thandleDisabled() {\n\t\tif (this.props?.disabled) {\n\t\t\tthis.field()!.fieldControl!.disable({ emitEvent: false });\n\t\t}\n\t}\n\n\tgetFilterMatchMode = _getFilterMatchMode;\n}\n","import { Component, input, effect, ViewChild, ElementRef, Renderer2 } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormField, FieldProps, AttributeEvent } from '../form-field/form-field';\nimport { TreeSelect } from 'primeng/treeselect';\nimport { ScrollerOptions, OverlayOptions } from 'primeng/api';\nimport { TreeNode } from 'primeng/api';\nimport { ActionService } from '../../service/action.service';\n\nexport interface TreeSelectProps extends FieldProps {\n\tscrollHeight?: string;\n\tmetaKeySelection?: boolean;\n\tdisplay?: 'chip' | 'comma';\n\tselectionMode?: 'single' | 'multiple' | 'checkbox';\n\ttabindex?: string;\n\tpanelClass?: any;\n\tcontainerStyle?: any;\n\tcontainerStyleClass?: string;\n\tlabelStyle?: any;\n\tlabelStyleClass?: string;\n\tfilterMode?: string;\n\tfilter?: boolean;\n\tpanelStyle?: any;\n\tpanelStyleClass?: string;\n\tappendTo?: any;\n\tfilterPlaceholder?: string;\n\tfilterLocale?: string;\n\tfilterBy?: string;\n\toverlayOptions?: OverlayOptions;\n\temptyMessage?: any;\n\tfilterInputAutoFocus?: boolean;\n\tpropagateSelectionDown?: boolean;\n\tpropagateSelectionUp?: boolean;\n\tshowClear?: boolean;\n\tresetFilterOnHide?: boolean;\n\tvirtualScroll?: boolean;\n\tvirtualScrollItemSize?: number;\n\tvirtualScrollOptions?: ScrollerOptions;\n\toptions?: TreeNode<any>[];\n\tloading?: string;\n\tmaxlength?: any;\n\n\tonHookChange?: AttributeEvent;\n\tonNodeExpand?: AttributeEvent;\n\tonNodeCollapse?: AttributeEvent;\n\tonShow?: AttributeEvent;\n\tonHide?: AttributeEvent;\n\tonClear?: AttributeEvent;\n\tonFilter?: AttributeEvent;\n\tonFocus?: AttributeEvent;\n\tonBlur?: AttributeEvent;\n\tonNodeSelect?: AttributeEvent;\n\tonNodeUnselect?: AttributeEvent;\n}\n\n@Component({\n\tselector: 'form-treeselect',\n\tstandalone: true,\n\timports: [TreeSelect, ReactiveFormsModule],\n\ttemplate: `<p-treeselect\n\t\t[id]=\"field()?.uuid\"\n\t\t[inputId]=\"field()?.uuid\"\n\t\t[scrollHeight]=\"props.scrollHeight ?? '400px'\"\n\t\t[metaKeySelection]=\"props.metaKeySelection\"\n\t\t[variant]=\"props.variant\"\n\t\t[display]=\"props.display ?? 'comma'\"\n\t\t[selectionMode]=\"props.selectionMode ?? 'single'\"\n\t\t[tabindex]=\"props.tabindex ?? '0'\"\n\t\t[ariaLabel]=\"props.ariaLabel\"\n\t\t[ariaLabelledBy]=\"props.ariaLabelledBy\"\n\t\t[placeholder]=\"props.placeholder\"\n\t\t[panelClass]=\"props.panelClass\"\n\t\t[fluid]=\"props.fluid ?? true\"\n\t\t[panelStyleClass]=\"props.panelStyleClass\"\n\t\t[containerStyle]=\"props.containerStyle\"\n\t\t[containerStyleClass]=\"props.containerStyleClass\"\n\t\t[labelStyle]=\"props.labelStyle\"\n\t\t[labelStyleClass]=\"props.labelStyleClass\"\n\t\t[overlayOptions]=\"props.overlayOptions\"\n\t\t[emptyMessage]=\"props.emptyMessage\"\n\t\t[appendTo]=\"props.appendTo ?? 'body'\"\n\t\t[filter]=\"props.filter\"\n\t\t[filterBy]=\"props.filterBy ?? 'label'\"\n\t\t[filterMode]=\"props.filterMode ?? 'lenient'\"\n\t\t[filterPlaceholder]=\"props.filterPlaceholder\"\n\t\t[filterLocale]=\"props.filterLocale\"\n\t\t[filterInputAutoFocus]=\"props.filterInputAutoFocus ?? true\"\n\t\t[propagateSelectionDown]=\"props.propagateSelectionDown ?? true\"\n\t\t[propagateSelectionUp]=\"props.propagateSelectionUp ?? true\"\n\t\t[showClear]=\"props.showClear\"\n\t\t[resetFilterOnHide]=\"props.resetFilterOnHide\"\n\t\t[virtualScroll]=\"props.virtualScroll\"\n\t\t[virtualScrollItemSize]=\"props.virtualScrollItemSize\"\n\t\t[virtualScrollOptions]=\"props.virtualScrollOptions\"\n\t\t[size]=\"props.size\"\n\t\t[autofocus]=\"props.autofocus\"\n\t\t[ariaLabel]=\"props.ariaLabel\"\n\t\t[ariaLabelledBy]=\"props.ariaLabelledBy\"\n\t\t[options]=\"props.options\"\n\t\t[class]=\"props.class\"\n\t\t[style]=\"props.style\"\n\t\t[panelStyle]=\"props.panelStyle\"\n\t\t[placeholder]=\"props.placeholder\"\n\t\t[loading]=\"props.loading\"\n\t\t(onNodeExpand)=\"props.onNodeExpand?.(field()!, $event)\"\n\t\t(onNodeCollapse)=\"props.onNodeCollapse?.(field()!, $event)\"\n\t\t(onShow)=\"props.onShow?.(field()!, $event)\"\n\t\t(onHide)=\"props.onHide?.(field()!, $event)\"\n\t\t(onClear)=\"props.onClear?.(field()!, $event)\"\n\t\t(onFilter)=\"props.onFilter?.(field()!, $event)\"\n\t\t(onFocus)=\"props.onFocus?.(field()!, $event)\"\n\t\t(onBlur)=\"props.onBlur?.(field()!, $event)\"\n\t\t(onNodeSelect)=\"props.onNodeSelect?.(field()!, $event)\"\n\t\t(onNodeUnselect)=\"props.onNodeUnselect?.(field()!, $event)\"\n\t\t[class]=\"props.class\"\n\t\t[disabled]=\"true\"\n\t\t[formControl]=\"field()!.fieldControl!\" />`,\n\tstyleUrl: '../../styles/styles.scss',\n})\nexport class TreeSelectComponent {\n\t@ViewChild(TreeSelect, { static: false }) treeselect!: TreeSelect;\n\t@ViewChild(TreeSelect, { read: ElementRef, static: false }) treeselectRef!: ElementRef;\n\tfield = input<FormField>();\n\tprops: TreeSelectProps = {};\n\n\tconstructor(\n\t\tprivate action: ActionService,\n\t\tprivate renderer: Renderer2,\n\t) {\n\t\teffect(() => {\n\t\t\tif (this.field()) {\n\t\t\t\tthis.props = this.field()!.treeSelectProps!;\n\t\t\t\tthis.handleHookChange();\n\t\t\t\tthis.handleDisabled();\n\t\t\t}\n\t\t});\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tconst labelAction = this.action.getFieldLabelAction();\n\t\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (labelAction.type == 'mouseenter') {\n\t\t\t\t\tthis.renderer.addClass(this.treeselectRef.nativeElement, 'ng-hovered');\n\t\t\t\t} else if (labelAction.type == 'mouseleave') {\n\t\t\t\t\tthis.renderer.removeClass(this.treeselectRef.nativeElement, 'ng-hovered');\n\t\t\t\t} else if (labelAction.type == 'click') {\n\t\t\t\t\tif (!this.treeselect.overlayVisible) {\n\t\t\t\t\t\tthis.treeselect.overlayVisible = true;\n\t\t\t\t\t\tthis.treeselect.resetFilter();\n\t\t\t\t\t\tthis.treeselect.onShow.emit(false);\n\t\t\t\t\t\tthis.treeselect.cd.markForCheck();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t}\n\n\thandleHookChange() {\n\t\tthis.field()?.fieldControl?.hookChange.subscribe((value) => {\n\t\t\tif (!value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\n\t\t});\n\t}\n\n\thandleDisabled() {\n\t\tsetTimeout(() => {\n\t\t\tif (this.props?.disabled) {\n\t\t\t\tthis.field()!.fieldControl!.disable({ emitEvent: false });\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Component, input, effect, ViewChild, ElementRef, Renderer2, TemplateRef } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { DatePicker } from 'primeng/datepicker';\nimport { FormField, FieldProps, AttributeEvent } from '../form-field/form-field';\nimport { ActionService } from '../../service/action.service';\nimport { DatePipe, NgTemplateOutlet } from '@angular/common';\n\nexport interface DatePickerProps extends FieldProps {\n\tfluid?: boolean;\n\ticonAriaLabel?: string;\n\tdateFormat?: string;\n\tdatePipeFormat?: string;\n\tmultipleSeparator?: string;\n\trangeSeparator?: string;\n\tinline?: boolean;\n\tshowOtherMonths?: boolean;\n\tselectOtherMonths?: boolean;\n\tshowIcon?: boolean;\n\ticon?: string;\n\tappendTo?: any;\n\treadonlyInput?: boolean;\n\tshortYearCutoff?: any;\n\thourFormat?: string;\n\ttimeOnly?: boolean;\n\tstepHour?: number;\n\tstepMinute?: number;\n\tstepSecond?: number;\n\tshowOnFocus?: boolean;\n\tshowWeek?: boolean;\n\tstartWeekFromFirstDayOfYear?: boolean;\n\tshowClear?: boolean;\n\tdataType?: string;\n\tselectionMode?: 'range' | 'single' | 'multiple';\n\tmaxDateCount?: number;\n\tshowButtonBar?: boolean;\n\ttodayButtonStyleClass?: string;\n\tclearButtonStyleClass?: string;\n\tbaseZIndex?: number;\n\tpanelStyleClass?: string;\n\tpanelStyle?: any;\n\tkeepInvalid?: boolean;\n\thideOnDateTimeSelect?: boolean;\n\ttouchUI?: boolean;\n\ttimeSeparator?: string;\n\tfocusTrap?: boolean;\n\tshowTransitionOptions?: string;\n\thideTransitionOptions?: string;\n\tminDate?: Date;\n\tmaxDate?: Date;\n\tdisabledDates?: Date[];\n\tdisabledDays?: number[];\n\tshowTime?: boolean;\n\tshowSeconds?: boolean;\n\tresponsiveOptions?: any[];\n\tnumberOfMonths?: number;\n\tfirstDayOfWeek?: number;\n\tview?: any;\n\tdefaultDate?: Date;\n\ttabindex?: number;\n\tautoZIndex?: boolean;\n\n\tonHookChange?: AttributeEvent;\n\tonInput?: AttributeEvent;\n\tonFocus?: AttributeEvent;\n\tonBlur?: AttributeEvent;\n\tonClose?: AttributeEvent;\n\tonSelect?: AttributeEvent;\n\tonClear?: AttributeEvent;\n\tonTodayClick?: AttributeEvent;\n\tonClearClick?: AttributeEvent;\n\tonMonthChange?: AttributeEvent;\n\tonYearChange?: AttributeEvent;\n\tonClickOutside?: AttributeEvent;\n\tonShow?: AttributeEvent;\n\tfooterTemplate?: TemplateRef<any>;\n}\n\n@Component({\n\tselector: 'form-datepicker',\n\tstandalone: true,\n\tproviders: [DatePipe],\n\timports: [DatePicker, ReactiveFormsModule, NgTemplateOutlet],\n\ttemplate: `<p-datepicker\n\t\t[id]=\"field()?.uuid\"\n\t\t[inputId]=\"field()?.uuid\"\n\t\t[variant]=\"props.variant ?? 'outlined'\"\n\t\t[fluid]=\"props.fluid\"\n\t\t[size]=\"props.size\"\n\t\t[styleClass]=\"props.styleClass\"\n\t\t[inputStyle]=\"props.inputStyle\"\n\t\t[inputStyleClass]=\"props.inputStyleClass\"\n\t\t[name]=\"props.name\"\n\t\t[placeholder]=\"props.placeholder\"\n\t\t[ariaLabelledBy]=\"props.ariaLabelledBy\"\n\t\t[ariaLabel]=\"props.ariaLabel\"\n\t\t[iconAriaLabel]=\"props.iconAriaLabel\"\n\t\t[dateFormat]=\"props.dateFormat ?? 'yy-mm-dd'\"\n\t\t[multipleSeparator]=\"props.multipleSeparator ?? ','\"\n\t\t[rangeSeparator]=\"props.rangeSeparator ?? '-'\"\n\t\t[inline]=\"props.inline\"\n\t\t[showOtherMonths]=\"props.showOtherMonths ?? true\"\n\t\t[selectOtherMonths]=\"props.selectOtherMonths\"\n\t\t[showIcon]=\"props.showIcon\"\n\t\t[fluid]=\"props.fluid ?? true\"\n\t\t[icon]=\"props.icon\"\n\t\t[appendTo]=\"props.appendTo ?? 'body'\"\n\t\t[readonlyInput]=\"props.readonlyInput\"\n\t\t[shortYearCutoff]=\"props.shortYearCutoff\"\n\t\t[hourFormat]=\"props.hourFormat ?? '24'\"\n\t\t[timeOnly]=\"props.timeOnly\"\n\t\t[stepHour]=\"props.stepHour ?? 1\"\n\t\t[stepMinute]=\"props.stepMinute ?? 1\"\n\t\t[stepSecond]=\"props.stepSecond ?? 1\"\n\t\t[showSeconds]=\"props.showSeconds ?? !!props.showTime\"\n\t\t[showOnFocus]=\"props.showOnFocus ?? true\"\n\t\t[showWeek]=\"props.showWeek\"\n\t\t[startWeekFromFirstDayOfYear]=\"!!props.startWeekFromFirstDayOfYear\"\n\t\t[showClear]=\"props.showClear\"\n\t\t[dataType]=\"props.dataType ?? 'string'\"\n\t\t[selectionMode]=\"props.selectionMode ?? 'single'\"\n\t\t[maxDateCount]=\"props.maxDateCount\"\n\t\t[showButtonBar]=\"props.showButtonBar\"\n\t\t[todayButtonStyleClass]=\"props.todayButtonStyleClass\"\n\t\t[clearButtonStyleClass]=\"props.clearButtonStyleClass\"\n\t\t[autofocus]=\"props.autofocus\"\n\t\t[autoZIndex]=\"props.autoZIndex ?? true\"\n\t\t[baseZIndex]=\"props.baseZIndex ?? 0\"\n\t\t[panelStyleClass]=\"props.panelStyleClass\"\n\t\t[panelStyle]=\"props.panelStyle\"\n\t\t[keepInvalid]=\"props.keepInvalid\"\n\t\t[hideOnDateTimeSelect]=\"props.hideOnDateTimeSelect ?? true\"\n\t\t[touchUI]=\"props.touchUI\"\n\t\t[timeSeparator]=\"props.timeSeparator ?? ':'\"\n\t\t[focusTrap]=\"props.focusTrap ?? true\"\n\t\t[showTransitionOptions]=\"props.showTransitionOptions ?? '.12s cubic-bezier(0, 0, 0.2, 1)'\"\n\t\t[hideTransitionOptions]=\"props.hideTransitionOptions ?? '.1s linear'\"\n\t\t[tabindex]=\"props.tabindex\"\n\t\t[minDate]=\"props.minDate\"\n\t\t[maxDate]=\"props.maxDate\"\n\t\t[disabledDates]=\"props.disabledDates ?? []\"\n\t\t[disabledDays]=\"props.disabledDays ?? []\"\n\t\t[showTime]=\"!!props.showTime\"\n\t\t[responsiveOptions]=\"props.responsiveOptions ?? []\"\n\t\t[numberOfMonths]=\"props.numberOfMonths ?? 1\"\n\t\t[firstDayOfWeek]=\"props.firstDayOfWeek ?? 7\"\n\t\t[view]=\"props.view ?? 'date'\"\n\t\t[defaultDate]=\"props.defaultDate!\"\n\t\t(onInput)=\"props.onInput?.(field()!, $event)\"\n\t\t(onFocus)=\"props.onFocus?.(field()!, $event)\"\n\t\t(onBlur)=\"props.onBlur?.(field()!, $event)\"\n\t\t(onClose)=\"props.onClose?.(field()!, $event)\"\n\t\t(onSelect)=\"props.onSelect?.(field()!, $event)\"\n\t\t(onClear)=\"props.onClear?.(field()!, $event)\"\n\t\t(onTodayClick)=\"props.onTodayClick?.(field()!, $event)\"\n\t\t(onClearClick)=\"props.onClearClick?.(field()!, $event)\"\n\t\t(onMonthChange)=\"props.onMonthChange?.(field()!, $event)\"\n\t\t(onYearChange)=\"props.onYearChange?.(field()!, $event)\"\n\t\t(onClickOutside)=\"props.onClickOutside?.(field()!, $event)\"\n\t\t(onShow)=\"props.onShow?.(field()!, $event)\"\n\t\t[class]=\"props.class\"\n\t\t[formControl]=\"field()!.fieldControl!\">\n\t\t<ng-template #footer>\n\t\t\t@if (!!props.showTime && !props.timeOnly) {\n\t\t\t\t<div class=\"flex flex-row-reverse text-[12px] text-[var(--p-primary-color)] cursor-pointer\">\n\t\t\t\t\t<i\n\t\t\t\t\t\tclass=\"pi pi-replay\"\n\t\t\t\t\t\t(click)=\"resetTime($event)\"></i>\n\t\t\t\t</div>\n\t\t\t} @else if (!!props.footerTemplate) {\n\t\t\t\t<!--todo 未来加入自定义区间选项-->\n\t\t\t\t<ng-container *ngTemplateOutlet=\"props.footerTemplate\"></ng-container>\n\t\t\t}\n\t\t</ng-template>\n\t</p-datepicker>`,\n\tstyleUrl: '../../styles/styles.scss',\n})\nexport class DatePickerComponent {\n\t@ViewChild(DatePicker, { static: false }) datePicker!: DatePicker;\n\t@ViewChild(DatePicker, { read: ElementRef, static: false }) datePickerRef!: ElementRef;\n\tfield = input<FormField>();\n\tprops: DatePickerProps = {};\n\n\tconstructor(\n\t\tprivate action: ActionService,\n\t\tprivate renderer: Renderer2,\n\t\tprivate datePipe: DatePipe,\n\t) {\n\t\teffect(() => {\n\t\t\tif (this.field()) {\n\t\t\t\tthis.props = this.field()!.datePickerProps!;\n\t\t\t\tthis.handleHookChange();\n\t\t\t\tthis.handleDisabled();\n\t\t\t\tthis.handleDatePipeFormat();\n\t\t\t}\n\t\t});\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tconst labelAction = this.action.getFieldLabelAction();\n\t\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (labelAction.type == 'mouseenter') {\n\t\t\t\t\tthis.renderer.addClass(this.datePickerRef.nativeElement, 'ng-hovered');\n\t\t\t\t} else if (labelAction.type == 'mouseleave') {\n\t\t\t\t\tthis.renderer.removeClass(this.datePickerRef.nativeElement, 'ng-hovered');\n\t\t\t\t} else if (labelAction.type == 'click') {\n\t\t\t\t\tthis.datePicker.overlayVisible = true;\n\t\t\t\t\tthis.datePicker.onShow.emit(false);\n\t\t\t\t\tthis.datePicker.cd.markForCheck();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t}\n\n\tngOnInit(): void {}\n\n\thandleHookChange() {\n\t\tthis.field()?.fieldControl?.hookChange.subscribe((value) => {\n\t\t\tif (!value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\n\t\t});\n\t}\n\n\thandleDisabled() {\n\t\tsetTimeout(() => {\n\t\t\tif (this.props?.disabled) {\n\t\t\t\tthis.field()!.fieldControl!.disable({ emitEvent: false });\n\t\t\t}\n\t\t});\n\t}\n\n\tresetTime(event: any) {\n\t\tif (!this.field()!.fieldControl!.value) return;\n\t\tconst currentDate = this.formatToMidnight(this.field()!.fieldControl!.value);\n\t\tthis.field()?.fieldControl?.setValue(currentDate, { emitEvent: true });\n\t}\n\n\tformatToMidnight(dateStr: string): string {\n\t\tif (this.props?.showSeconds === false) {\n\t\t\tif (/^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}$/.test(dateStr)) {\n\t\t\t\treturn dateStr.split(' ')[0] + ' 00:00';\n\t\t\t}\n\t\t\tthrow new Error('Invalid date format. Expected yyyy-MM-dd hh:mm');\n\t\t} else {\n\t\t\tif (/^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}$/.test(dateStr)) {\n\t\t\t\treturn dateStr.split(' ')[0] + ' 00:00:00';\n\t\t\t}\n\t\t\tthrow new Error('Invalid date format. Expected yyyy-MM-dd hh:mm:ss');\n\t\t}\n\t}\n\n\thandleDatePipeFormat() {\n\t\tthis.props.datePipeFormat = this.convertPrimeNgToDatePipeFormat(this.props.dateFormat);\n\t\tif (!this.props.showTime) return;\n\t\tconst timeSeparator = this.props.timeSeparator ?? ':';\n\t\tconst timeFormat = `HH${timeSeparator}mm${timeSeparator}ss`;\n\t\tthis.props.datePipeFormat += ` ${timeFormat}`;\n\t}\n\n\tconvertPrimeNgToDatePipeFormat(primeNgFormat: string | undefined): string {\n\t\tif (!primeNgFormat) return 'yyyy-MM-dd';\n\t\tconst formatMap: { [key: string]: string } = {\n\t\t\td: 'd',\n\t\t\tdd: 'dd',\n\t\t\tm: 'M',\n\t\t\tmm: 'MM',\n\t\t\tM: 'MMM',\n\t\t\tMM: 'MMMM',\n\t\t\ty: 'yy',\n\t\t\tyy: 'yyyy',\n\t\t};\n\t\tconst commonFormats: { [key: string]: string } = {\n\t\t\t'mm/dd/yy': 'MM/dd/yyyy',\n\t\t\t'dd/mm/yy': 'dd/MM/yyyy',\n\t\t\t'yy-mm-dd': 'yyyy-MM-dd',\n\t\t\t'dd-mm-yy': 'dd-MM-yyyy',\n\t\t\t'mm-dd-yy': 'MM-dd-yyyy',\n\t\t};\n\t\tif (commonFormats[primeNgFormat]) {\n\t\t\treturn commonFormats[primeNgFormat];\n\t\t}\n\t\t// 替换转义字符\n\t\tlet result = primeNgFormat.replace(/'([^']*)'/g, (match, p1) => {\n\t\t\treturn `'${p1}'`;\n\t\t});\n\t\t// 替换格式标记\n\t\tresult = result.replace(/[a-zA-Z]+/g, (match) => {\n\t\t\treturn formatMap[match] || match;\n\t\t});\n\t\treturn result;\n\t}\n}\n","import { Component, input, effect, ViewChild, ElementRef, Renderer2 } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormField, FieldProps, AttributeEvent } from '../form-field/form-field';\nimport { AutoComplete } from 'primeng/autocomplete';\nimport { ScrollerOptions, OverlayOptions } from 'primeng/api';\nimport { ActionService } from '../../service/action.service';\n\nexport interface AutoCompleteProps extends FieldProps {\n\tscrollHeight?: string;\n\tminLength?: number;\n\tdelay?: number;\n\tpanelStyle?: any;\n\tpanelStyleClass?: string;\n\tautoHighlight?: boolean;\n\tforceSelection?: boolean;\n\ttype?: string;\n\tautoZIndex?: boolean;\n\tbaseZIndex?: number;\n\tdropdownAriaLabel?: string;\n\tunique?: boolean;\n\tcompleteOnFocus?: boolean;\n\tdropdown?: boolean;\n\tshowEmptyMessage?: boolean;\n\tdropdownMode?: string;\n\tmultiple?: boolean;\n\tshowTransitionOptions?: string;\n\thideTransitionOptions?: string;\n\tautocomplete?: string;\n\toptionGroupChildren?: string;\n\toptionGroupLabel?: string;\n\tsuggestions?: any[];\n\toptionLabel?: string | ((item: any) => string);\n\toptionValue?: string | ((item: any) => string);\n\tsearchMessage?: string;\n\temptySelectionMessage?: string;\n\tselectionMessage?: string;\n\tautoOptionFocus?: boolean;\n\tselectOnFocus?: boolean;\n\tsearchLocale?: boolean;\n\toptionDisabled?: string;\n\tfocusOnHover?: boolean;\n\ttypeahead?: boolean;\n\treadonly?: boolean;\n\tappendTo?: any;\n\ttabindex?: number;\n\tdataKey?: string;\n\tdropdownIcon?: string;\n\tgroup?: boolean;\n\tshowClear?: boolean;\n\temptyMessage?: any;\n\tlazy?: boolean;\n\tvirtualScroll?: boolean;\n\tvirtualScrollItemSize?: number;\n\tvirtualScrollOptions?: ScrollerOptions;\n\toverlayOptions?: OverlayOptions;\n\tmaxlength?: any;\n\n\tcompleteMethod?: AttributeEvent;\n\tonSelect?: AttributeEvent;\n\tonUnselect?: AttributeEvent;\n\tonFocus?: AttributeEvent;\n\tonBlur?: AttributeEvent;\n\tonDropdownClick?: AttributeEvent;\n\tonClear?: AttributeEvent;\n\tonKeyUp?: AttributeEvent;\n\tonShow?: AttributeEvent;\n\tonHide?: AttributeEvent;\n\tonLazyLoad?: AttributeEvent;\n}\n\n@Component({\n\tselector: 'form-autocomplete',\n\tstandalone: true,\n\timports: [AutoComplete, ReactiveFormsModule],\n\ttemplate: `<p-autocomplete\n\t\t[id]=\"field()?.uuid\"\n\t\t[inputId]=\"field()?.uuid\"\n\t\t[minLength]=\"props.minLength ?? 1\"\n\t\t[delay]=\"props.delay ?? 300\"\n\t\t[panelStyle]=\"props.panelStyle\"\n\t\t[panelStyleClass]=\"props.panelStyleClass\"\n\t\t[styleClass]=\"props.styleClass\"\n\t\t[inputStyle]=\"props.inputStyle\"\n\t\t[inputStyleClass]=\"props.inputStyleClass\"\n\t\t[placeholder]=\"props.placeholder\"\n\t\t[readonly]=\"props.readonly\"\n\t\t[scrollHeight]=\"props.scrollHeight ?? '200px'\"\n\t\t[lazy]=\"props.lazy\"\n\t\t[virtualScroll]=\"props.virtualScroll\"\n\t\t[virtualScrollItemSize]=\"props.virtualScrollItemSize\"\n\t\t[virtualScrollOptions]=\"props.virtualScrollOptions\"\n\t\t[maxlength]=\"props.maxlength\"\n\t\t[name]=\"props.name\"\n\t\t[size]=\"props.size\"\n\t\t[appendTo]=\"props.appendTo ?? 'body'\"\n\t\t[autoHighlight]=\"props.autoHighlight\"\n\t\t[forceSelection]=\"props.forceSelection\"\n\t\t[type]=\"props.type ?? 'text'\"\n\t\t[autoZIndex]=\"props.autoZIndex ?? true\"\n\t\t[baseZIndex]=\"props.baseZIndex ?? 0\"\n\t\t[ariaLabel]=\"props.ariaLabel\"\n\t\t[ariaLabelledBy]=\"props.ariaLabelledBy\"\n\t\t[dropdownAriaLabel]=\"props.dropdownAriaLabel\"\n\t\t[dropdownIcon]=\"props.dropdownIcon\"\n\t\t[unique]=\"props.unique ?? true\"\n\t\t[group]=\"props.group\"\n\t\t[completeOnFocus]=\"props.completeOnFocus\"\n\t\t[showClear]=\"props.showClear\"\n\t\t[dropdown]=\"props.dropdown\"\n\t\t[showEmptyMessage]=\"props.showEmptyMessage ?? true\"\n\t\t[dropdownMode]=\"props.dropdownMode ?? 'blank'\"\n\t\t[multiple]=\"props.multiple\"\n\t\t[tabindex]=\"props.tabindex\"\n\t\t[dataKey]=\"props.dataKey\"\n\t\t[emptyMessage]=\"props.emptyMessage\"\n\t\t[showTransitionOptions]=\"props.showTransitionOptions ?? '.12s cubic-bezier(0, 0, 0.2, 1)'\"\n\t\t[hideTransitionOptions]=\"props.hideTransitionOptions ?? '.1s linear'\"\n\t\t[autofocus]=\"props.autofocus\"\n\t\t[autocomplete]=\"props.autocomplete ?? 'off'\"\n\t\t[optionGroupChildren]=\"props.optionGroupChildren ?? 'items'\"\n\t\t[optionGroupLabel]=\"props.optionGroupLabel ?? 'label'\"\n\t\t[overlayOptions]=\"props.overlayOptions\"\n\t\t[suggestions]=\"props.suggestions ?? []\"\n\t\t[optionLabel]=\"props.optionLabel\"\n\t\t[optionValue]=\"props.optionValue\"\n\t\t[searchMessage]=\"props.searchMessage ?? '{0} results are available'\"\n\t\t[emptySelectionMessage]=\"props.emptySelectionMessage ?? 'No selected item'\"\n\t\t[selectionMessage]=\"props.selectionMessage ?? '{0} items selected'\"\n\t\t[autoOptionFocus]=\"props.autoOptionFocus\"\n\t\t[selectOnFocus]=\"props.selectOnFocus\"\n\t\t[searchLocale]=\"props.searchLocale\"\n\t\t[optionDisabled]=\"props.optionDisabled\"\n\t\t[focusOnHover]=\"props.focusOnHover ?? true\"\n\t\t[typeahead]=\"props.typeahead ?? true\"\n\t\t[variant]=\"props.variant\"\n\t\t[fluid]=\"props.fluid ?? true\"\n\t\t[class]=\"props.class\"\n\t\t[style]=\"props.style\"\n\t\t(completeMethod)=\"props.completeMethod?.(field()!, $event)\"\n\t\t(onSelect)=\"props.onSelect?.(field()!, $event)\"\n\t\t(onUnselect)=\"props.onUnselect?.(field()!, $event)\"\n\t\t(onFocus)=\"props.onFocus?.(field()!, $event)\"\n\t\t(onBlur)=\"props.onBlur?.(field()!, $event)\"\n\t\t(onDropdownClick)=\"props.onDropdownClick?.(field()!, $event)\"\n\t\t(onClear)=\"props.onClear?.(field()!, $event)\"\n\t\t(onKeyUp)=\"props.onKeyUp?.(field()!, $event)\"\n\t\t(onShow)=\"props.onShow?.(field()!, $event)\"\n\t\t(onHide)=\"props.onHide?.(field()!, $event)\"\n\t\t(onLazyLoad)=\"props.onLazyLoad?.(field()!, $event)\"\n\t\t[formControl]=\"field()!.fieldControl!\" />`,\n\tstyleUrl: '../../styles/styles.scss',\n})\nexport class AutoCompleteComponent {\n\t@ViewChild(AutoComplete, { read: ElementRef, static: false }) autoCompleteRef!: ElementRef;\n\tfield = input<FormField>();\n\tprops: AutoCompleteProps = {};\n\tconstructor(\n\t\tprivate action: ActionService,\n\t\tprivate renderer: Renderer2,\n\t) {\n\t\teffect(() => {\n\t\t\tif (this.field()) {\n\t\t\t\tthis.props = this.field()!.autoCompleteProps!;\n\t\t\t\tthis.handleHookChange();\n\t\t\t\tthis.handleDisabled();\n\t\t\t}\n\t\t});\n\t\teffect(() => {\n\t\t\tconst labelAction = this.action.getFieldLabelAction();\n\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (labelAction.type == 'mouseenter') {\n\t\t\t\tthis.renderer.addClass(this.autoCompleteRef.nativeElement, 'ng-hovered');\n\t\t\t} else if (labelAction.type == 'mouseleave') {\n\t\t\t\tthis.renderer.removeClass(this.autoCompleteRef.nativeElement, 'ng-hovered');\n\t\t\t} else if (labelAction.type == 'click') {\n\t\t\t\tthis.autoCompleteRef.nativeElement.querySelector('input')?.focus();\n\t\t\t}\n\t\t});\n\t}\n\n\thandleHookChange() {\n\t\tthis.field()?.fieldControl?.hookChange.subscribe((value) => {\n\t\t\tif (!value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\n\t\t});\n\t}\n\n\thandleDisabled() {\n\t\tif (this.props?.disabled) {\n\t\t\tthis.field()!.fieldControl!.disable({ emitEvent: false });\n\t\t}\n\t}\n}\n","import { Component, input, effect, ViewChild, ElementRef, Renderer2 } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormField, FieldProps, AttributeEvent } from '../form-field/form-field';\nimport { MultiSelect } from 'primeng/multiselect';\nimport { ScrollerOptions, OverlayOptions } from 'primeng/api';\nimport { ActionService } from '../../service/action.service';\nimport { getFilterMatchMode as _getFilterMatchMode } from '../../share/utils';\n\nexport interface MultiSelectProps extends FieldProps {\n\tfilterPlaceHolder?: string;\n\toverlayVisible?: boolean;\n\tdisplaySelectedLabel?: boolean;\n\tmaxSelectedLabels?: number;\n\tselectionLimit?: number;\n\tselectedItemsLabel?: string;\n\tshowToggleAll?: boolean;\n\tchipIcon?: string;\n\tshowHeader?: boolean;\n\tautofocusFilter?: boolean;\n\tdisplay?: string;\n\tautocomplete?: string;\n\tselectAll?: boolean;\n\tselectOnFocus?: boolean;\n\tautoOptionFocus?: boolean;\n\tscrollHeight?: string;\n\tfilter?: boolean;\n\tpanelStyle?: any;\n\tpanelStyleClass?: string;\n\treadonly?: boolean;\n\tappendTo?: any;\n\ttabindex?: number;\n\tloadingIcon?: string;\n\tfilterLocale?: string;\n\tdataKey?: string;\n\tfilterBy?: string;\n\tfilterFields?: any[];\n\tresetFilterOnHide?: boolean;\n\tdropdownIcon?: string;\n\tloading?: string;\n\toptionLabel?: string;\n\toptionValue?: string;\n\toptionDisabled?: string;\n\toptionGroupLabel?: string;\n\toptionGroupChildren?: string;\n\tgroup?: boolean;\n\tshowClear?: boolean;\n\temptyFilterMessage?: any;\n\temptyMessage?: any;\n\tlazy?: boolean;\n\tvirtualScroll?: boolean;\n\tvirtualScrollItemSize?: number;\n\tvirtualScrollOptions?: ScrollerOptions;\n\toverlayOptions?: OverlayOptions;\n\tariaFilterLabel?: string;\n\tfilterMatchMode?: any;\n\tmaxlength?: any;\n\ttooltip?: any;\n\ttooltipPosition?: 'right' | 'left' | 'top' | 'bottom';\n\ttooltipPositionStyle?: string;\n\ttooltipStyleClass?: string;\n\tfocusOnHover?: boolean;\n\tfilterValue?: string;\n\toptions?: any[];\n\n\tonChange?: AttributeEvent;\n\tonFilter?: AttributeEvent;\n\tonFocus?: AttributeEvent;\n\tonBlur?: AttributeEvent;\n\tonClick?: AttributeEvent;\n\tonClear?: AttributeEvent;\n\tonPanelShow?: AttributeEvent;\n\tonPanelHide?: AttributeEvent;\n\tonLazyLoad?: AttributeEvent;\n\tonRemove?: AttributeEvent;\n\tonSelectAllChange?: AttributeEvent;\n}\n\n@Component({\n\tselector: 'form-multiselect',\n\tstandalone: true,\n\timports: [MultiSelect, ReactiveFormsModule],\n\ttemplate: `<p-multiselect\n\t\t[id]=\"field()?.uuid\"\n\t\t[inputId]=\"field()?.uuid\"\n\t\t[optionLabel]=\"props.optionLabel\"\n\t\t[optionValue]=\"props.optionValue\"\n\t\t[ariaLabel]=\"props.ariaLabel\"\n\t\t[style]=\"props.style\"\n\t\t[styleClass]=\"props.styleClass\"\n\t\t[panelStyle]=\"props.panelStyle\"\n\t\t[panelStyleClass]=\"props.panelStyleClass\"\n\t\t[fluid]=\"props.fluid ?? true\"\n\t\t[readonly]=\"props.readonly\"\n\t\t[appendTo]=\"props.appendTo ?? 'body'\"\n\t\t[options]=\"props.options\"\n\t\t[dataKey]=\"props.dataKey\"\n\t\t[group]=\"props.group\"\n\t\t[filter]=\"props.filter\"\n\t\t[filterPlaceHolder]=\"props.filterPlaceHolder\"\n\t\t[filterLocale]=\"props.filterLocale\"\n\t\t[overlayVisible]=\"props.overlayVisible\"\n\t\t[variant]=\"props.variant\"\n\t\t[name]=\"props.name\"\n\t\t[tabindex]=\"props.tabindex\"\n\t\t[ariaLabelledBy]=\"props.ariaLabelledBy\"\n\t\t[displaySelectedLabel]=\"props.displaySelectedLabel ?? true\"\n\t\t[maxSelectedLabels]=\"props.maxSelectedLabels\"\n\t\t[selectionLimit]=\"props.selectionLimit\"\n\t\t[selectedItemsLabel]=\"props.selectedItemsLabel\"\n\t\t[showToggleAll]=\"props.showToggleAll ?? true\"\n\t\t[emptyFilterMessage]=\"props.emptyFilterMessage\"\n\t\t[emptyMessage]=\"props.emptyMessage\"\n\t\t[resetFilterOnHide]=\"props.resetFilterOnHide\"\n\t\t[dropdownIcon]=\"props.dropdownIcon\"\n\t\t[chipIcon]=\"props.chipIcon\"\n\t\t[optionDisabled]=\"props.optionDisabled\"\n\t\t[optionGroupLabel]=\"props.optionGroupLabel\"\n\t\t[optionGroupChildren]=\"props.optionGroupChildren ?? 'items'\"\n\t\t[showHeader]=\"props.showHeader ?? true\"\n\t\t[filterBy]=\"props.filterBy\"\n\t\t[scrollHeight]=\"props.scrollHeight ?? '200px'\"\n\t\t[lazy]=\"props.lazy\"\n\t\t[virtualScroll]=\"props.virtualScroll\"\n\t\t[loading]=\"props.loading\"\n\t\t[virtualScrollItemSize]=\"props.virtualScrollItemSize\"\n\t\t[loadingIcon]=\"props.loadingIcon\"\n\t\t[virtualScrollOptions]=\"props.virtualScrollOptions\"\n\t\t[overlayOptions]=\"props.overlayOptions\"\n\t\t[ariaFilterLabel]=\"props.ariaFilterLabel\"\n\t\t[filterMatchMode]=\"getFilterMatchMode(props.filterMatchMode)\"\n\t\t[tooltip]=\"props.tooltip\"\n\t\t[tooltipPosition]=\"props.tooltipPosition ?? 'right'\"\n\t\t[tooltipPositionStyle]=\"props.tooltipPositionStyle ?? 'absolute'\"\n\t\t[tooltipStyleClass]=\"props.tooltipStyleClass\"\n\t\t[autofocusFilter]=\"props.autofocusFilter\"\n\t\t[display]=\"props.display ?? 'comma'\"\n\t\t[autocomplete]=\"props.autocomplete ?? 'off'\"\n\t\t[size]=\"props.size\"\n\t\t[showClear]=\"props.showClear\"\n\t\t[autofocus]=\"props.autofocus\"\n\t\t[placeholder]=\"props.placeholder\"\n\t\t[filterValue]=\"props.filterValue\"\n\t\t[selectAll]=\"props.selectAll ?? null\"\n\t\t[focusOnHover]=\"props.focusOnHover ?? true\"\n\t\t[filterFields]=\"props.filterFields\"\n\t\t[selectOnFocus]=\"props.selectOnFocus\"\n\t\t[autoOptionFocus]=\"props.autoOptionFocus\"\n\t\t[class]=\"props.class\"\n\t\t[placeholder]=\"props.placeholder\"\n\t\t[maxlength]=\"props.maxlength\"\n\t\t(onChange)=\"props.onChange?.(field()!, $event)\"\n\t\t(onFilter)=\"props.onFilter?.(field()!, $event)\"\n\t\t(onFocus)=\"props.onFocus?.(field()!, $event)\"\n\t\t(onBlur)=\"props.onBlur?.(field()!, $event)\"\n\t\t(onClick)=\"props.onClick?.(field()!, $event)\"\n\t\t(onClear)=\"props.onClear?.(field()!, $event)\"\n\t\t(onPanelShow)=\"props.onPanelShow?.(field()!, $event)\"\n\t\t(onPanelHide)=\"props.onPanelHide?.(field()!, $event)\"\n\t\t(onLazyLoad)=\"props.onLazyLoad?.(field()!, $event)\"\n\t\t(onRemove)=\"props.onRemove?.(field()!, $event)\"\n\t\t(onSelectAllChange)=\"props.onSelectAllChange?.(field()!, $event)\"\n\t\t[class]=\"props.class\"\n\t\t[formControl]=\"field()!.fieldControl!\" />`,\n\tstyleUrl: '../../styles/styles.scss',\n})\nexport class MultiSelectComponent {\n\t@ViewChild(MultiSelect, { static: false }) multiselect!: MultiSelect;\n\t@ViewChild(MultiSelect, { read: ElementRef, static: false }) multiselectRef!: ElementRef;\n\tfield = input<FormField>();\n\tprops: MultiSelectProps = {};\n\n\tconstructor(\n\t\tprivate action: ActionService,\n\t\tprivate renderer: Renderer2,\n\t) {\n\t\teffect(() => {\n\t\t\tif (this.field()) {\n\t\t\t\tthis.props = this.field()!.multiSelectProps!;\n\t\t\t\tthis.handleHookChange();\n\t\t\t\tthis.handleDisabled();\n\t\t\t}\n\t\t});\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tconst labelAction = this.action.getFieldLabelAction();\n\t\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (labelAction.type == 'mouseenter') {\n\t\t\t\t\tthis.renderer.addClass(this.multiselectRef.nativeElement, 'ng-hovered');\n\t\t\t\t} else if (labelAction.type == 'mouseleave') {\n\t\t\t\t\tthis.renderer.removeClass(this.multiselectRef.nativeElement, 'ng-hovered');\n\t\t\t\t} else if (labelAction.type == 'click') {\n\t\t\t\t\tif (!this.multiselect.overlayVisible) {\n\t\t\t\t\t\tthis.multiselect.show();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t}\n\n\thandleHookChange() {\n\t\tthis.field()?.fieldControl?.hookChange.subscribe((value) => {\n\t\t\tif (!value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\n\t\t});\n\t}\n\n\thandleDisabled() {\n\t\tsetTimeout(() => {\n\t\t\tif (this.props?.disabled) {\n\t\t\t\tthis.field()!.fieldControl!.disable({ emitEvent: false });\n\t\t\t}\n\t\t});\n\t}\n\n\tgetFilterMatchMode = _getFilterMatchMode;\n}\n","import { Component, ViewChild, ElementRef, input, effect, NgZone } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { RadioButton } from 'primeng/radiobutton';\nimport { FormField, FieldProps, AttributeEvent } from '../form-field/form-field';\nimport { debounceTime } from 'rxjs/operators';\nimport { ActionService } from '../../service/action.service';\n\nexport interface RadioProps extends FieldProps {\n\tvalue?: any;\n\ttabindex?: number;\n\tbinary?: boolean;\n\tlabel?: string;\n\toptions?: RadioProps[];\n\tonClick?: AttributeEvent;\n\tonFocus?: AttributeEvent;\n\tonBlur?: AttributeEvent;\n\tonChange?: AttributeEvent;\n}\n\n@Component({\n\tselector: 'form-radio',\n\tstandalone: true,\n\tstyles: `\n\t\t.radio-label {\n\t\t\tcolor: #334155;\n\t\t}\n\t`,\n\timports: [RadioButton, ReactiveFormsModule],\n\ttemplate: ` <div\n\t\t#radioContainer\n\t\tstyle=\"width: 100%; height: 100%\"\n\t\tclass=\"radio-container\">\n\t\t@if (isEnter) {\n\t\t\t<div\n\t\t\t\t[id]=\"field()?.uuid\"\n\t\t\t\tclass=\"flex flex-wrap gap-4\">\n\t\t\t\t@for (op of props.options; track op) {\n\t\t\t\t\t<div class=\"flex items-center\">\n\t\t\t\t\t\t<p-radiobutton\n\t\t\t\t\t\t\t[value]=\"op.value\"\n\t\t\t\t\t\t\t[name]=\"op.name\"\n\t\t\t\t\t\t\t[tabindex]=\"op.tabindex\"\n\t\t\t\t\t\t\t[inputId]=\"field()?.uuid\"\n\t\t\t\t\t\t\t[ariaLabelledBy]=\"op.ariaLabelledBy\"\n\t\t\t\t\t\t\t[ariaLabel]=\"op.ariaLabel\"\n\t\t\t\t\t\t\t[style]=\"op.style\"\n\t\t\t\t\t\t\t[styleClass]=\"op.styleClass\"\n\t\t\t\t\t\t\t[autofocus]=\"op.autofocus\"\n\t\t\t\t\t\t\t[variant]=\"op.variant\"\n\t\t\t\t\t\t\t[class]=\"op.class ?? props.class\"\n\t\t\t\t\t\t\t[binary]=\"!!props.binary\"\n\t\t\t\t\t\t\t(onClick)=\"onClick(field()!, $event)\"\n\t\t\t\t\t\t\t(onFocus)=\"props.onFocus?.(field()!, $event)\"\n\t\t\t\t\t\t\t(onBlur)=\"props.onBlur?.(field()!, $event)\"\n\t\t\t\t\t\t\t[formControl]=\"field()!.fieldControl!\" />\n\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t[for]=\"field()?.key\"\n\t\t\t\t\t\t\tclass=\"radio-label ml-2\"\n\t\t\t\t\t\t\t>{{ op.label }}</label\n\t\t\t\t\t\t>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</div>\n\t\t} @else {\n\t\t\t<div class=\"radio-label\">{{ currentLabel() }}</div>\n\t\t}\n\t</div>`,\n\tstyleUrl: '../../styles/styles.scss',\n})\nexport class RadioComponent {\n\t@ViewChild('radioContainer') radioContainer!: ElementRef;\n\tfield = input<FormField>();\n\tprops: RadioProps = {};\n\tisEnter: boolean = false;\n\tcurrent: any = {};\n\n\tconstructor(\n\t\tprivate action: ActionService,\n\t\tprivate ngZone: NgZone,\n\t) {\n\t\tthis.fixPopPanel();\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tif (this.field()) {\n\t\t\t\t\tthis.props = this.field()!.radioProps!;\n\t\t\t\t\tif (this.props.options !== undefined && !Array.isArray(this.props.options)) {\n\t\t\t\t\t\tthis.props.options = [];\n\t\t\t\t\t}\n\t\t\t\t\tthis.handleHookChange();\n\t\t\t\t\tthis.handleDisabled();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t\teffect(() => {\n\t\t\tconst labelAction = this.action.getFieldLabelAction();\n\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (labelAction.type == 'mouseenter') {\n\t\t\t\tthis.isEnter = true;\n\t\t\t} else if (labelAction.type == 'mouseleave') {\n\t\t\t\tthis.isEnter = false;\n\t\t\t}\n\t\t});\n\t}\n\n\tngAfterViewInit(): void {\n\t\tthis.ngZone.runOutsideAngular(() => {\n\t\t\tconst element = this.radioContainer.nativeElement;\n\t\t\tif (!element) {\n\t\t\t\tconsole.warn('radioContainer element not found');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfromEvent(element, 'mouseenter')\n\t\t\t\t.pipe(debounceTime(100))\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\tthis.ngZone.run(() => {\n\t\t\t\t\t\tif (this.field()?.fieldControl?.disabled) return;\n\t\t\t\t\t\tthis.isEnter = true;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\tfromEvent(element, 'mouseleave')\n\t\t\t\t.pipe(debounceTime(100))\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\tthis.ngZone.run(() => {\n\t\t\t\t\t\tthis.isEnter = false;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t});\n\t}\n\n\thandleDisabled() {\n\t\tif (this.props?.disabled) {\n\t\t\tthis.field()!.fieldControl!.disable({ emitEvent: false });\n\t\t}\n\t}\n\n\thandleHookChange() {\n\t\tthis.field()?.fieldControl?.hookChange.subscribe((value) => {\n\t\t\tif (value == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\n\t\t\tthis.props.onChange?.(this.field()!, { value });\n\t\t});\n\t}\n\n\tonClick(field: FormField, event?: any): void {\n\t\tthis.props.onClick?.(field, event);\n\t\tthis.props.onChange?.(field, event);\n\t}\n\n\tcurrentLabel() {\n\t\tconst result = this.props.options?.filter?.((option) => option.value == this.field()!.fieldControl!.value);\n\t\tif (result?.length) {\n\t\t\treturn result[0].label;\n\t\t}\n\t\treturn '';\n\t}\n\n\tfixPopPanel() {\n\t\tdocument.addEventListener('click', (event: any) => {\n\t\t\tlet container: any = document.querySelector('.radio-container');\n\t\t\tif (container && !container.contains(event.target)) {\n\t\t\t\tthis.isEnter = false;\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Component, input, effect, ViewChild, ElementRef, Renderer2 } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TextareaModule } from 'primeng/textarea';\nimport { FormField, FieldProps } from '../form-field/form-field';\nimport { ActionService } from '../../service/action.service';\n\nexport interface TextAreaProps extends FieldProps {\n\trows?: number;\n\tcols?: number;\n\ttemplates?: string[];\n}\n\n@Component({\n\tselector: 'form-textarea',\n\tstandalone: true,\n\timports: [TextareaModule, ReactiveFormsModule],\n\ttemplate: `\n\t\t<textarea\n\t\t\t#textAreaRef\n\t\t\tpTextarea\n\t\t\t[rows]=\"props.rows ?? 4\"\n\t\t\t[cols]=\"props.cols\"\n\t\t\t[id]=\"field()?.uuid\"\n\t\t\t[variant]=\"props.variant\"\n\t\t\t[fluid]=\"props.fluid ?? true\"\n\t\t\t[pSize]=\"props.size\"\n\t\t\t[class]=\"props.class\"\n\t\t\t[formControl]=\"field()!.fieldControl!\"></textarea>\n\t`,\n\tstyleUrl: '../../styles/styles.scss',\n})\nexport class TextAreaComponent {\n\t@ViewChild('textAreaRef', { read: ElementRef, static: false }) textAreaRef!: ElementRef;\n\tfield = input<FormField>();\n\tprops: TextAreaProps = {};\n\ttemplateIndex = 0;\n\n\tconstructor(\n\t\tprivate action: ActionService,\n\t\tprivate renderer: Renderer2,\n\t) {\n\t\teffect(() => {\n\t\t\tif (this.field()) {\n\t\t\t\tthis.props = this.field()!.textAreaProps!;\n\t\t\t\tthis.handleHookChange();\n\t\t\t\tthis.handleDisabled();\n\t\t\t}\n\t\t});\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tconst labelAction = this.action.getFieldLabelAction();\n\t\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (labelAction.type == 'mouseenter') {\n\t\t\t\t\tthis.renderer.addClass(this.textAreaRef.nativeElement, 'ng-hovered');\n\t\t\t\t} else if (labelAction.type == 'mouseleave') {\n\t\t\t\t\tthis.renderer.removeClass(this.textAreaRef.nativeElement, 'ng-hovered');\n\t\t\t\t} else if (labelAction.type == 'click') {\n\t\t\t\t\tthis.textAreaRef.nativeElement.focus();\n\t\t\t\t} else if (labelAction.type == 'dblclick') {\n\t\t\t\t\tif (!this.props.templates || !this.props.templates.length) return;\n\t\t\t\t\tthis.field()?.fieldControl?.setValue(\n\t\t\t\t\t\tthis.props.templates[\n\t\t\t\t\t\t\t((this.templateIndex % this.props.templates.length) + this.props.templates.length) % this.props.templates.length\n\t\t\t\t\t\t],\n\t\t\t\t\t\t{ emitEvent: true },\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t);\n\t\t\t\t\tthis.templateIndex++;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t}\n\n\thandleHookChange() {\n\t\tthis.field()?.fieldControl?.hookChange.subscribe((value) => {\n\t\t\tif (!value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\n\t\t});\n\t}\n\n\thandleDisabled() {\n\t\tif (this.props?.disabled) {\n\t\t\tthis.field()!.fieldControl!.disable({ emitEvent: false });\n\t\t}\n\t}\n}\n","import { Component, input, effect, ViewChild, ElementRef, Renderer2 } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FileUpload } from 'primeng/fileupload';\nimport { ButtonModule } from 'primeng/button';\nimport { FormField, FieldProps, AttributeEvent } from '../form-field/form-field';\nimport { HttpClient, HttpEvent, HttpHeaders, HttpRequest, HttpEventType } from '@angular/common/http';\nimport { ActionService } from '../../service/action.service';\nimport { filter, forkJoin, Observable } from 'rxjs';\nimport { DatePipe } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nexport interface UploadProps extends FieldProps {\n\turl?: string;\n\tmethod?: 'post' | 'put';\n\tmultiple?: boolean;\n\taccept?: string;\n\twithCredentials?: boolean;\n\tmaxFileSize?: number;\n\tpreviewWidth?: number;\n\tmode?: 'basic' | 'advanced';\n\theaders?: any;\n\tcustomUpload?: boolean;\n\tfileLimit?: number;\n\tuploadStyleClass?: string;\n\tcancelStyleClass?: string;\n\tremoveStyleClass?: string;\n\tchooseStyleClass?: string;\n\n\tonBeforeUpload?: AttributeEvent;\n\tonSend?: AttributeEvent;\n\tonUpload?: AttributeEvent;\n\tonError?: AttributeEvent;\n\tonClear?: AttributeEvent;\n\tonRemove?: AttributeEvent;\n\tonSelect?: AttributeEvent;\n\tonProgress?: AttributeEvent;\n}\n\n@Component({\n\tselector: 'form-upload',\n\tstandalone: true,\n\tstyles: `\n\t\t.file-item {\n\t\t\tborder-top: solid 1px #fff;\n\t\t}\n\t\t.upload-btn {\n\t\t\tborder: solid 1px transparent;\n\t\t}\n\t\t.upload-btn.upload-disable:hover {\n\t\t\tcursor: default;\n\t\t}\n\t\t.upload-btn:not(.upload-disable):hover {\n\t\t\tborder: solid 1px var(--p-primary-color);\n\t\t\tbackground: var(--p-primary-50);\n\t\t\tcursor: pointer;\n\t\t}\n\t\t.upload-btn:not(.upload-disable).ng-hovered {\n\t\t\tborder: solid 1px var(--p-primary-color);\n\t\t\tbackground: var(--p-primary-50);\n\t\t\tcursor: pointer;\n\t\t}\n\t\t.file-name {\n\t\t\tfont-size: 12px;\n\t\t}\n\t\t.file-name:hover {\n\t\t\tcursor: pointer;\n\t\t\tcolor: var(--p-primary-color);\n\t\t}\n\t\t:host ::ng-deep {\n\t\t\t.p-image-preview-mask {\n\t\t\t\tposition: inherit;\n\t\t\t\topacity: 1;\n\t\t\t\tjustify-content: left;\n\t\t\t\tcolor: #334155;\n\t\t\t}\n\t\t}\n\t`,\n\timports: [FileUpload, ButtonModule, ReactiveFormsModule, TranslatePipe],\n\ttemplate: `<p-fileUpload\n\t\t#fu\n\t\tauto\n\t\t[id]=\"field()?.uuid\"\n\t\t[name]=\"props.name\"\n\t\t[url]=\"props.url\"\n\t\t[method]=\"props.method ?? 'post'\"\n\t\t[multiple]=\"props.multiple ?? true\"\n\t\t[accept]=\"props.accept\"\n\t\t[withCredentials]=\"props.withCredentials\"\n\t\t[maxFileSize]=\"props.maxFileSize\"\n\t\t[styleClass]=\"props.styleClass\"\n\t\t[previewWidth]=\"props.previewWidth ?? 50\"\n\t\t[mode]=\"props.mode ?? 'advanced'\"\n\t\t[headers]=\"props.headers\"\n\t\t[fileLimit]=\"props.fileLimit\"\n\t\t[customUpload]=\"props.customUpload ?? true\"\n\t\t(onBeforeUpload)=\"props.onBeforeUpload?.(field()!, $event)\"\n\t\t(onSend)=\"props.onSend?.(field()!, $event)\"\n\t\t(onUpload)=\"props.onUpload?.(field()!, $event)\"\n\t\t(onError)=\"props.onError?.(field()!, $event)\"\n\t\t(onClear)=\"props.onClear?.(field()!, $event)\"\n\t\t(onRemove)=\"props.onRemove?.(field()!, $event)\"\n\t\t(onSelect)=\"props.onSelect?.(field()!, $event)\"\n\t\t(onProgress)=\"props.onProgress?.(field()!, $event)\"\n\t\t(uploadHandler)=\"uploadHandler(field()!, $event, fu)\">\n\t\t<ng-template\n\t\t\t#header\n\t\t\tlet-chooseCallback=\"chooseCallback\">\n\t\t\t<div\n\t\t\t\t#uploadComp\n\t\t\t\t[class]=\"'flex justify-center w-full upload-btn' + (field()?.fieldControl?.disabled ? ' upload-disable' : '')\"\n\t\t\t\t(click)=\"choose($event, chooseCallback)\">\n\t\t\t\t<span\n\t\t\t\t\t><span\n\t\t\t\t\t\tstyle=\"font-size: 12px; margin-right: 2.5px\"\n\t\t\t\t\t\t[class]=\"'pi' + (loading ? ' pi-spin pi-spinner' : ' pi-upload')\"></span\n\t\t\t\t\t>{{ (loading ? 'modal.uploading' : 'modal.selectFile') | translate }}</span\n\t\t\t\t>\n\t\t\t</div>\n\t\t</ng-template>\n\t\t<ng-template #content>\n\t\t\t@if (fileList.length > 0) {\n\t\t\t\t@for (file of fileList; track file; let index = $index) {\n\t\t\t\t\t<div class=\"flex justify-between items-center file-item\">\n\t\t\t\t\t\t<span class=\"file-name\"\n\t\t\t\t\t\t\t><a\n\t\t\t\t\t\t\t\t[href]=\"'https://hrimage.myfoodiepet.com//' + file\"\n\t\t\t\t\t\t\t\t[download]=\"file\"\n\t\t\t\t\t\t\t\t>{{ file }}</a\n\t\t\t\t\t\t\t></span\n\t\t\t\t\t\t>\n\t\t\t\t\t\t@if (!field()?.fieldControl?.disabled) {\n\t\t\t\t\t\t\t<p-button\n\t\t\t\t\t\t\t\ticon=\"pi pi-times\"\n\t\t\t\t\t\t\t\tseverity=\"danger\"\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t(onClick)=\"deleteHandler(file, index)\"\n\t\t\t\t\t\t\t\t[text]=\"true\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t}\n\t\t</ng-template>\n\t\t<ng-template #file> </ng-template>\n\t</p-fileUpload>`,\n\tstyleUrl: '../../styles/styles.scss',\n})\nexport class UploadComponent {\n\t@ViewChild('uploadComp', { read: ElementRef, static: false }) uploadCompRef!: ElementRef;\n\tfield = input<FormField>();\n\tprops: UploadProps = {};\n\tfileList: string[] = [];\n\tdeleteHooks: Observable<any>[] = [];\n\tloading = false;\n\tcounter = 0;\n\n\tconstructor(\n\t\tprivate http: HttpClient,\n\t\tprivate action: ActionService,\n\t\tprivate renderer: Renderer2,\n\t\tprivate datePipe: DatePipe,\n\t) {\n\t\teffect(() => {\n\t\t\tif (this.field()) {\n\t\t\t\tthis.props = this.field()!.uploadProps!;\n\t\t\t\tthis.handleHookChange();\n\t\t\t\tthis.handleDisabled();\n\t\t\t\tthis.afterSubmit();\n\t\t\t}\n\t\t});\n\t\teffect(() => {\n\t\t\tforkJoin(this.deleteHooks).subscribe();\n\t\t});\n\t\teffect(() => {\n\t\t\tconst labelAction = this.action.getFieldLabelAction();\n\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (labelAction.type == 'mouseenter') {\n\t\t\t\tthis.renderer.addClass(this.uploadCompRef.nativeElement, 'ng-hovered');\n\t\t\t} else if (labelAction.type == 'mouseleave') {\n\t\t\t\tthis.renderer.removeClass(this.uploadCompRef.nativeElement, 'ng-hovered');\n\t\t\t} else if (labelAction.type == 'click') {\n\t\t\t\tthis.uploadCompRef.nativeElement.click();\n\t\t\t}\n\t\t});\n\t}\n\n\tchoose(event: any, callback: any) {\n\t\tif (this.field()?.fieldControl?.disabled) {\n\t\t\treturn;\n\t\t}\n\t\tcallback();\n\t}\n\n\tuploadFile(file: File): Observable<any> {\n\t\tconst formData = new FormData();\n\t\tformData.append('file', file);\n\t\treturn this.http\n\t\t\t.request(\n\t\t\t\tnew HttpRequest('POST', 'filerUpload', formData, {\n\t\t\t\t\treportProgress: true,\n\t\t\t\t\twithCredentials: false,\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.pipe(filter((response: HttpEvent<any>) => response.type == HttpEventType.Response));\n\t}\n\n\tdelFile(fileStr: string): Observable<any> {\n\t\treturn this.http.post('filerDelete', { fileName: fileStr });\n\t}\n\n\tuploadHandler(field: any, event: any, fu: any) {\n\t\tthis.initLoading(event.files.length);\n\t\tevent.files.forEach((v: any) => {\n\t\t\tthis.uploadFile(v).subscribe({\n\t\t\t\tnext: (response) => {\n\t\t\t\t\tthis.updateLoading(fu);\n\t\t\t\t\tthis.fileList?.push(response.body.fid);\n\t\t\t\t\tthis.field()?.fieldControl?.setValue(this.fileList);\n\t\t\t\t},\n\t\t\t\terror: (error) => {\n\t\t\t\t\tthis.initLoading(0);\n\t\t\t\t\tconsole.error(error);\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\tdeleteHandler(fileStr: string, index: number) {\n\t\tthis.deleteHooks.push(this.delFile(fileStr));\n\t\tthis.fileList = this.fileList?.filter((value, i) => index != i);\n\t\tthis.field()?.fieldControl?.setValue(this.fileList);\n\t}\n\n\thandleHookChange() {\n\t\tthis.field()?.fieldControl?.hookChange.subscribe((value) => {\n\t\t\tif (value == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\n\t\t\tthis.fileList = [...value];\n\t\t});\n\t}\n\n\tafterSubmit() {\n\t\tthis.field()?.fieldControl?.submitChange.subscribe((value) => {\n\t\t\tif (Boolean(value)) {\n\t\t\t\tthis.deleteHooks.forEach((hook) => hook.subscribe());\n\t\t\t}\n\t\t});\n\t}\n\n\thandleDisabled() {\n\t\tif (this.props?.disabled) {\n\t\t\tthis.field()!.fieldControl!.disable({ emitEvent: false });\n\t\t}\n\t}\n\n\tinitLoading(counter: number) {\n\t\tthis.counter = counter;\n\t\tif (counter == 0) {\n\t\t\tthis.loading = false;\n\t\t\treturn;\n\t\t}\n\t\tthis.loading = true;\n\t}\n\n\tupdateLoading(fu: any) {\n\t\tthis.counter--;\n\t\tconsole.log('----counter', this.counter);\n\t\tif (this.counter === 0) {\n\t\t\tthis.loading = false;\n\t\t\tfu.clear();\n\t\t}\n\t}\n}\n","import { Component, input, effect, ViewChild, ElementRef, Renderer2 } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FileUpload } from 'primeng/fileupload';\nimport { ButtonModule } from 'primeng/button';\nimport { Image } from 'primeng/image';\nimport { FormField, FieldProps, AttributeEvent } from '../form-field/form-field';\nimport { HttpClient, HttpEvent, HttpHeaders, HttpRequest, HttpEventType } from '@angular/common/http';\nimport { ActionService } from '../../service/action.service';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nimport { filter, forkJoin, Observable } from 'rxjs';\nimport { DatePipe } from '@angular/common';\n\nexport interface ImageProps extends FieldProps {\n\turl?: string;\n\tmethod?: 'post' | 'put';\n\twithCredentials?: boolean;\n\tmaxFileSize?: number;\n\tpreviewWidth?: number;\n\tmode?: 'basic' | 'advanced';\n\theaders?: any;\n\tcustomUpload?: boolean;\n\tfileLimit?: number;\n\tuploadStyleClass?: string;\n\tcancelStyleClass?: string;\n\tremoveStyleClass?: string;\n\tchooseStyleClass?: string;\n\tadjustable?: boolean;\n\timageMode?: boolean;\n\tmultiple?: boolean;\n\twatermark?: boolean;\n\tsize?: 'small' | 'large' | undefined;\n\n\tonBeforeUpload?: AttributeEvent;\n\tonSend?: AttributeEvent;\n\tonUpload?: AttributeEvent;\n\tonError?: AttributeEvent;\n\tonClear?: AttributeEvent;\n\tonRemove?: AttributeEvent;\n\tonSelect?: AttributeEvent;\n\tonProgress?: AttributeEvent;\n}\n\n@Component({\n\tselector: 'form-image',\n\tstandalone: true,\n\tstyles: `\n\t\t.file-item {\n\t\t\tborder-top: solid 1px #fff;\n\t\t}\n\t\t.upload-btn {\n\t\t\tborder: solid 1px transparent;\n\t\t}\n\t\t.upload-btn.upload-disable:hover {\n\t\t\tcursor: default;\n\t\t}\n\t\t.upload-btn:not(.upload-disable):hover {\n\t\t\tborder: solid 1px var(--p-primary-color);\n\t\t\tbackground: var(--p-primary-50);\n\t\t\tcursor: pointer;\n\t\t}\n\t\t.upload-btn:not(.upload-disable).ng-hovered {\n\t\t\tborder: solid 1px var(--p-primary-color);\n\t\t\tbackground: var(--p-primary-50);\n\t\t\tcursor: pointer;\n\t\t}\n\t\t.file-name {\n\t\t\tfont-size: 12px;\n\t\t\tcursor: pointer;\n\t\t\tcolor: var(--p-primary-color) !important;\n\t\t}\n\t\t:host ::ng-deep {\n\t\t\t.p-image-preview-mask {\n\t\t\t\tposition: inherit;\n\t\t\t\topacity: 1;\n\t\t\t\tjustify-content: left;\n\t\t\t\tcolor: #334155;\n\t\t\t}\n\t\t\tp-image {\n\t\t\t\t.p-image {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tcolor: var(--p-primary-color) !important;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t`,\n\timports: [FileUpload, ButtonModule, Image, ReactiveFormsModule, TranslatePipe],\n\ttemplate: `<p-fileUpload\n\t\t#fu\n\t\tauto\n\t\t[name]=\"props.name\"\n\t\t[url]=\"props.url\"\n\t\t[method]=\"props.method ?? 'post'\"\n\t\taccept=\"image/*\"\n\t\t[withCredentials]=\"props.withCredentials\"\n\t\t[maxFileSize]=\"props.maxFileSize\"\n\t\t[styleClass]=\"props.styleClass\"\n\t\t[previewWidth]=\"props.previewWidth ?? 50\"\n\t\t[mode]=\"props.mode ?? 'advanced'\"\n\t\t[headers]=\"props.headers\"\n\t\t[fileLimit]=\"props.fileLimit\"\n\t\t[customUpload]=\"props.customUpload ?? true\"\n\t\t[multiple]=\"props.multiple ?? false\"\n\t\t(onBeforeUpload)=\"props.onBeforeUpload?.(field()!, $event)\"\n\t\t(onSend)=\"props.onSend?.(field()!, $event)\"\n\t\t(onUpload)=\"props.onUpload?.(field()!, $event)\"\n\t\t(onError)=\"props.onError?.(field()!, $event)\"\n\t\t(onClear)=\"props.onClear?.(field()!, $event)\"\n\t\t(onRemove)=\"props.onRemove?.(field()!, $event)\"\n\t\t(onSelect)=\"props.onSelect?.(field()!, $event)\"\n\t\t(onProgress)=\"props.onProgress?.(field()!, $event)\"\n\t\t(uploadHandler)=\"uploadHandler(field()!, $event, fu)\">\n\t\t<ng-template\n\t\t\t#header\n\t\t\tlet-chooseCallback=\"chooseCallback\">\n\t\t\t<div\n\t\t\t\t#imageComp\n\t\t\t\t[class]=\"'flex justify-center w-full upload-btn' + (field()?.fieldControl?.disabled ? ' upload-disable' : '')\"\n\t\t\t\t(click)=\"choose($event, chooseCallback)\">\n\t\t\t\t<span\n\t\t\t\t\t><span\n\t\t\t\t\t\tstyle=\"font-size: 12px; margin-right: 2.5px\"\n\t\t\t\t\t\t[class]=\"'pi' + (loading ? ' pi-spin pi-spinner' : ' pi-upload')\"></span\n\t\t\t\t\t>{{ (loading ? 'modal.uploading' : 'modal.selectFile') | translate }}</span\n\t\t\t\t>\n\t\t\t</div>\n\t\t</ng-template>\n\t\t<ng-template #content>\n\t\t\t@if (imageList.length > 0) {\n\t\t\t\t@if (!props.imageMode) {\n\t\t\t\t\t@for (image of imageList; track image; let index = $index) {\n\t\t\t\t\t\t<div class=\"flex justify-between items-center file-item\">\n\t\t\t\t\t\t\t<p-image\n\t\t\t\t\t\t\t\t[src]=\"'https://hrimage.myfoodiepet.com//' + image\"\n\t\t\t\t\t\t\t\t[preview]=\"true\"\n\t\t\t\t\t\t\t\t(onShow)=\"ajustedImage($event)\"\n\t\t\t\t\t\t\t\talt=\"Image\">\n\t\t\t\t\t\t\t\t<ng-template #indicator>\n\t\t\t\t\t\t\t\t\t<span class=\"file-name\">{{ image }}</span>\n\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t<ng-template #image>\n\t\t\t\t\t\t\t\t\t<span class=\"file-name\">{{ image }}</span>\n\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t</p-image>\n\t\t\t\t\t\t\t@if (!field()?.fieldControl?.disabled) {\n\t\t\t\t\t\t\t\t<p-button\n\t\t\t\t\t\t\t\t\ticon=\"pi pi-times\"\n\t\t\t\t\t\t\t\t\tseverity=\"danger\"\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t(onClick)=\"deleteHandler($event, image, index)\"\n\t\t\t\t\t\t\t\t\t[text]=\"true\" />\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t} @else {\n\t\t\t\t\t<div class=\"flex gap-2 mt-1 flex-wrap\">\n\t\t\t\t\t\t@for (image of imageList; track image; let index = $index) {\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"border\"\n\t\t\t\t\t\t\t\t[style]=\"{ height: imageHeight + 10 + 'px' }\">\n\t\t\t\t\t\t\t\t<p-image\n\t\t\t\t\t\t\t\t\t[src]=\"'https://hrimage.myfoodiepet.com//' + image\"\n\t\t\t\t\t\t\t\t\t[preview]=\"true\"\n\t\t\t\t\t\t\t\t\t[appendTo]=\"'body'\"\n\t\t\t\t\t\t\t\t\t(onShow)=\"ajustedImage($event)\"\n\t\t\t\t\t\t\t\t\talt=\"Image\">\n\t\t\t\t\t\t\t\t\t<ng-template #indicator>\n\t\t\t\t\t\t\t\t\t\t@if (!field()?.fieldControl?.disabled) {\n\t\t\t\t\t\t\t\t\t\t\t<div [style]=\"{ position: 'relative', width: imageWidth + 10 + 'px', height: imageHeight + 10 + 'px' }\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"position: absolute; top: 0; right: 0; z-index: 999; background: red; padding: 1px;\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"deleteHandler($event, image, index)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-times text-[12px]\"></i>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t<ng-template #image>\n\t\t\t\t\t\t\t\t\t\t<div class=\"p-2\">\n\t\t\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\t\t\t[src]=\"'https://hrimage.myfoodiepet.com//' + image\"\n\t\t\t\t\t\t\t\t\t\t\t\talt=\"image\"\n\t\t\t\t\t\t\t\t\t\t\t\t[style]=\"{ width: imageWidth + 'px', height: imageHeight + 'px', objectFit: 'cover' }\" />\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t\t<ng-template #preview let-style=\"style\">\n\t\t\t\t\t\t\t\t\t\t<img [src]=\"'https://hrimage.myfoodiepet.com//' + image\" alt=\"image\" [style]=\"style\" style=\"max-height: 80vh!important;\" />\n\t\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t\t</p-image>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t}\n\t\t</ng-template>\n\t\t<ng-template #file> </ng-template>\n\t</p-fileUpload>`,\n\tstyleUrl: '../../styles/styles.scss',\n})\nexport class ImageComponent {\n\t@ViewChild('imageComp', { read: ElementRef, static: false }) imageCompRef!: ElementRef;\n\tfield = input<FormField>();\n\tprops: ImageProps = {};\n\timageList: string[] = [];\n\tdeleteHooks: Observable<any>[] = [];\n\tloading = false;\n\tcounter = 0;\n\timageWidth = 0;\n\timageHeight = 0;\n\n\tconstructor(\n\t\tprivate http: HttpClient,\n\t\tprivate action: ActionService,\n\t\tprivate renderer: Renderer2,\n\t\tprivate datePipe: DatePipe,\n\t) {\n\t\teffect(() => {\n\t\t\tif (this.field()) {\n\t\t\t\tthis.props = this.field()!.imageProps!;\n\t\t\t\tthis.initImageSize();\n\t\t\t\tthis.handleDisabled();\n\t\t\t\tthis.handleHookChange();\n\t\t\t\tthis.afterSubmit();\n\t\t\t}\n\t\t});\n\t\teffect(() => {\n\t\t\tconst labelAction = this.action.getFieldLabelAction();\n\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (labelAction.type == 'mouseenter') {\n\t\t\t\tthis.renderer.addClass(this.imageCompRef.nativeElement, 'ng-hovered');\n\t\t\t} else if (labelAction.type == 'mouseleave') {\n\t\t\t\tthis.renderer.removeClass(this.imageCompRef.nativeElement, 'ng-hovered');\n\t\t\t} else if (labelAction.type == 'click') {\n\t\t\t\tthis.imageCompRef.nativeElement.click();\n\t\t\t}\n\t\t});\n\t}\n\n\tchoose(event: any, callback: any) {\n\t\tif (this.field()?.fieldControl?.disabled) {\n\t\t\treturn;\n\t\t}\n\t\tcallback();\n\t}\n\n\tinitImageSize() {\n\t\tif (this.props.size !== 'small') {\n\t\t\tthis.imageWidth = 75;\n\t\t\tthis.imageHeight = 100;\n\t\t} else {\n\t\t\tthis.imageWidth = 35;\n\t\t\tthis.imageHeight = 35;\n\t\t}\n\t}\n\n\tuploadImage(file: File): Observable<any> {\n\t\tconst formData = new FormData();\n\t\tformData.append('file', file);\n\t\treturn this.http\n\t\t\t.request(\n\t\t\t\tnew HttpRequest('POST', 'imageUpload', formData, {\n\t\t\t\t\treportProgress: true,\n\t\t\t\t\twithCredentials: false,\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.pipe(filter((response: HttpEvent<any>) => response.type == HttpEventType.Response));\n\t}\n\n\tdelImage(image: string): Observable<any> {\n\t\treturn this.http.post('imageDelete', { fid: image });\n\t}\n\n\tuploadHandler(field: any, event: any, fu: any) {\n\t\tthis.initLoading(event.files.length);\n\t\tevent.files.forEach(async (v: any) => {\n\t\t\tif (this.props.watermark) {\n\t\t\t\tlet blob = await this.addWatermark(v);\n\t\t\t\tconst newFile = new File([blob], v.name, { type: v.type });\n\t\t\t\tthis.uploadImage(newFile).subscribe({\n\t\t\t\t\tnext: (response) => {\n\t\t\t\t\t\tthis.updateLoading(fu);\n\t\t\t\t\t\tthis.imageList?.push(response.body.fid);\n\t\t\t\t\t\tthis.field()?.fieldControl?.setValue(this.imageList);\n\t\t\t\t\t},\n\t\t\t\t\terror: (error) => {\n\t\t\t\t\t\tthis.initLoading(0);\n\t\t\t\t\t\tconsole.error(error);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.uploadImage(v).subscribe({\n\t\t\t\t\tnext: (response) => {\n\t\t\t\t\t\tthis.updateLoading(fu);\n\t\t\t\t\t\tthis.imageList?.push(response.body.fid);\n\t\t\t\t\t\tthis.field()?.fieldControl?.setValue(this.imageList);\n\t\t\t\t\t},\n\t\t\t\t\terror: (error) => {\n\t\t\t\t\t\tthis.initLoading(0);\n\t\t\t\t\t\tconsole.error(error);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\taddWatermark(imageFile: File): Promise<Blob> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst reader = new FileReader();\n\n\t\t\treader.onload = (event) => {\n\t\t\t\tconst img = document.createElement('img');\n\t\t\t\timg.onload = () => {\n\t\t\t\t\tconst canvas = document.createElement('canvas');\n\t\t\t\t\tconst ctx = canvas.getContext('2d')!;\n\n\t\t\t\t\t// 设置画布大小为图片大小\n\t\t\t\t\tcanvas.width = Number(img.width);\n\t\t\t\t\tcanvas.height = Number(img.height);\n\n\t\t\t\t\t// 绘制原始图片\n\t\t\t\t\tctx.drawImage(img, 0, 0);\n\n\t\t\t\t\t// 添加水印\n\t\t\t\t\tctx.font = `italic bold 30px Courier`;\n\t\t\t\t\tctx.fillStyle = 'red';\n\t\t\t\t\tctx.textAlign = 'center';\n\t\t\t\t\tctx.textBaseline = 'middle';\n\t\t\t\t\tconst currentTime = this.datePipe.transform(new Date(), 'yyyy-MM-dd HH:mm:ss') || '';\n\t\t\t\t\tctx.fillText(currentTime, canvas.width / 2, canvas.height - 50);\n\n\t\t\t\t\t// 转换为Blob\n\t\t\t\t\tcanvas.toBlob(\n\t\t\t\t\t\t(blob) => {\n\t\t\t\t\t\t\tif (blob) {\n\t\t\t\t\t\t\t\tresolve(blob);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treject(new Error('Canvas to Blob conversion failed'));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'image/jpeg',\n\t\t\t\t\t\t0.8,\n\t\t\t\t\t);\n\t\t\t\t};\n\n\t\t\t\timg.src = event.target?.result as string;\n\t\t\t};\n\n\t\t\treader.onerror = (error) => reject(error);\n\t\t\treader.readAsDataURL(imageFile);\n\t\t});\n\t}\n\n\tdeleteHandler(event: any, image: string, index: number) {\n\t\tevent.stopPropagation();\n\t\tthis.deleteHooks.push(this.delImage(image));\n\t\tthis.imageList = this.imageList?.filter((value, i) => index != i);\n\t\tthis.field()?.fieldControl?.setValue(this.imageList);\n\t}\n\n\tafterSubmit() {\n\t\tthis.field()?.fieldControl?.submitChange.subscribe((value) => {\n\t\t\tif (Boolean(value)) {\n\t\t\t\tthis.deleteHooks.forEach((hook) => hook.subscribe());\n\t\t\t}\n\t\t});\n\t}\n\n\thandleHookChange() {\n\t\tthis.field()?.fieldControl?.hookChange.subscribe((value) => {\n\t\t\tif (value == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\n\t\t\tthis.imageList = [...value];\n\t\t});\n\t}\n\n\thandleDisabled() {\n\t\tif (this.props?.disabled) {\n\t\t\tthis.field()!.fieldControl!.disable({ emitEvent: false });\n\t\t}\n\t}\n\n\tajustedImage(event: any) {\n\t\tif (this.props?.adjustable) {\n\t\t\t// 解决图片查看时的操作按钮(旋转、放大、缩小、关闭)不在屏幕右上角显示的问题\n\t\t\t// let childDiv = document.getElementsByClassName('p-image-toolbar')[0];\n\t\t\t// let parentDiv = document.createElement('div');\n\t\t\t// parentDiv.style.width = '100vw';\n\t\t\t// parentDiv.style.height = '100vh';\n\t\t\t// parentDiv.style.position = 'fixed';\n\t\t\t// childDiv?.parentNode?.insertBefore(parentDiv, childDiv);\n\t\t\t// parentDiv.appendChild(childDiv);\n\t\t}\n\t}\n\n\tinitLoading(counter: number) {\n\t\tthis.counter = counter;\n\t\tif (counter == 0) {\n\t\t\tthis.loading = false;\n\t\t\treturn;\n\t\t}\n\t\tthis.loading = true;\n\t}\n\n\tupdateLoading(fu: any) {\n\t\tthis.counter--;\n\t\tif (this.counter === 0) {\n\t\t\tthis.loading = false;\n\t\t\tfu.clear();\n\t\t}\n\t}\n}\n","import { Component, ElementRef, ViewChild, input, effect, Renderer2, output } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormField, FieldProps } from '../form-field/form-field';\nimport { javascript } from '@codemirror/lang-javascript';\nimport { html } from '@codemirror/lang-html';\nimport { json } from '@codemirror/lang-json';\nimport { EditorState, StateEffect } from '@codemirror/state';\nimport {\n\tEditorView,\n\tkeymap,\n\thighlightSpecialChars,\n\tdrawSelection,\n\tdropCursor,\n\trectangularSelection,\n\tcrosshairCursor,\n\tlineNumbers,\n\thighlightActiveLineGutter,\n\tplaceholder,\n} from '@codemirror/view';\nimport { defaultHighlightStyle, syntaxHighlighting, indentOnInput, bracketMatching, foldGutter, foldKeymap } from '@codemirror/language';\nimport { defaultKeymap, history, historyKeymap } from '@codemirror/commands';\nimport { searchKeymap, highlightSelectionMatches } from '@codemirror/search';\nimport { autocompletion, completionKeymap, closeBrackets, closeBracketsKeymap } from '@codemirror/autocomplete';\nimport { ActionService } from '../../service/action.service';\nimport { lintKeymap } from '@codemirror/lint';\nimport prettier from 'prettier';\nimport typescript from 'prettier/plugins/typescript';\nimport estree from 'prettier/plugins/estree';\nimport { sql } from '@codemirror/lang-sql';\nexport interface CodeMirrorProps extends FieldProps {\n\tlanguage?: 'html' | 'javascript' | 'json' | 'sql';\n\tmaxHeight?: string;\n\tminHeight?: string;\n\tplaceholder?: string;\n\ttemplates?: string[];\n}\n\n@Component({\n\tselector: 'form-codemirror',\n\tstandalone: true,\n\timports: [ReactiveFormsModule],\n\ttemplate: `<div #codeContainer></div>`,\n\tstyleUrl: '../../styles/styles.scss',\n})\nexport class CodeMirrorComponent {\n\t@ViewChild('codeContainer', { static: false }) codeContainer!: ElementRef;\n\tcmEditor!: ElementRef;\n\tfield = input<FormField>();\n\tprops: CodeMirrorProps = {};\n\teditorView!: EditorView;\n\ttemplateIndex = 0;\n\n\tchange = output<string>();\n\n\tconstructor(\n\t\tprivate action: ActionService,\n\t\tprivate renderer: Renderer2,\n\t) {\n\t\teffect(() => {\n\t\t\tif (this.field()) {\n\t\t\t\tthis.props = this.field()!.codeMirrorProps!;\n\t\t\t\tthis.handleHookChange();\n\t\t\t\tthis.handleExtensions();\n\t\t\t}\n\t\t});\n\t\teffect(() => {\n\t\t\tconst labelAction = this.action.getFieldLabelAction();\n\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (labelAction.type == 'mouseenter') {\n\t\t\t\tthis.renderer.addClass(this.cmEditor, 'ng-hovered');\n\t\t\t} else if (labelAction.type == 'mouseleave') {\n\t\t\t\tthis.renderer.removeClass(this.cmEditor, 'ng-hovered');\n\t\t\t} else if (labelAction.type == 'click') {\n\t\t\t\tthis.editorView.focus();\n\t\t\t} else if (labelAction.type == 'dblclick') {\n\t\t\t\tif (!this.props.templates || !this.props.templates.length) return;\n\t\t\t\tthis.field()?.fieldControl?.setValue(\n\t\t\t\t\tthis.props.templates[\n\t\t\t\t\t\t((this.templateIndex % this.props.templates.length) + this.props.templates.length) % this.props.templates.length\n\t\t\t\t\t],\n\t\t\t\t\t{ emitEvent: true },\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t\tthis.templateIndex++;\n\t\t\t}\n\t\t});\n\t}\n\n\tngAfterViewInit() {\n\t\tthis.editorView = new EditorView({\n\t\t\tstate: EditorState.create({\n\t\t\t\tdoc: this.field()?.fieldControl?.value,\n\t\t\t}),\n\t\t\tparent: this.codeContainer.nativeElement,\n\t\t});\n\t\tthis.cmEditor = this.codeContainer.nativeElement.querySelector('.cm-editor');\n\t}\n\n\tngOnDestroy() {\n\t\tthis.editorView.destroy();\n\t}\n\n\thandleExtensions() {\n\t\tconst extendsions = [\n\t\t\tlineNumbers(),\n\t\t\tfoldGutter(),\n\t\t\thighlightSpecialChars(),\n\t\t\thistory(),\n\t\t\tdrawSelection(),\n\t\t\tdropCursor(),\n\t\t\tEditorState.allowMultipleSelections.of(true),\n\t\t\tindentOnInput(),\n\t\t\tsyntaxHighlighting(defaultHighlightStyle),\n\t\t\tbracketMatching(),\n\t\t\tcloseBrackets(),\n\t\t\tautocompletion(),\n\t\t\trectangularSelection(),\n\t\t\tcrosshairCursor(),\n\t\t\thighlightActiveLineGutter(),\n\t\t\thighlightSelectionMatches(),\n\t\t\tthis.formatting(),\n\t\t\tkeymap.of([\n\t\t\t\t...closeBracketsKeymap,\n\t\t\t\t...defaultKeymap,\n\t\t\t\t...searchKeymap,\n\t\t\t\t...historyKeymap,\n\t\t\t\t...foldKeymap,\n\t\t\t\t...completionKeymap,\n\t\t\t\t...lintKeymap,\n\t\t\t]),\n\t\t\tEditorView.theme({\n\t\t\t\t'.cm-gutters': {\n\t\t\t\t\tbackgroundColor: 'transparent',\n\t\t\t\t\tborder: 'none',\n\t\t\t\t},\n\t\t\t\t'.cm-activeLineGutter': {\n\t\t\t\t\tbackgroundColor: 'transparent',\n\t\t\t\t},\n\t\t\t\t'&': { minHeight: this.props.minHeight ?? '88px', maxHeight: this.props.maxHeight || '204px' },\n\t\t\t\t'.cm-scroller': { overflow: 'auto', minHeight: this.props.minHeight ?? '88px' },\n\t\t\t}),\n\t\t\tthis.getLanguageExtension(),\n\t\t\tEditorView.updateListener.of((update) => {\n\t\t\t\tif (update.transactions.some((tr) => tr.isUserEvent('input') || tr.isUserEvent('delete'))) {\n\t\t\t\t\tconst newValue = update.state.doc.toString();\n\t\t\t\t\tthis.field()?.fieldControl?.setValue(newValue);\n\t\t\t\t\tthis.change.emit(newValue);\n\t\t\t\t}\n\t\t\t}),\n\t\t];\n\t\tif (this.props.placeholder) {\n\t\t\textendsions.unshift(placeholder(this.props.placeholder));\n\t\t}\n\t\tif (this.props.disabled) {\n\t\t\textendsions.push(EditorView.editable.of(false));\n\t\t}\n\t\tthis.editorView.dispatch({\n\t\t\teffects: StateEffect.reconfigure.of(extendsions),\n\t\t});\n\t}\n\n\thandleHookChange() {\n\t\tthis.field()?.fieldControl?.hookChange?.subscribe((value) => {\n\t\t\t// 改进判断逻辑:只有在值为 null 且编辑器为空时才返回\n\t\t\tif (value == null && !this.editorView.state.doc.length) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\n\t\t\tconst transaction = this.editorView.state.update({\n\t\t\t\tchanges: { from: 0, to: this.editorView.state.doc.length, insert: value || '' },\n\t\t\t});\n\t\t\tthis.editorView.dispatch(transaction);\n\t\t});\n\t}\n\n\tgetLanguageExtension() {\n\t\tswitch (this.props.language) {\n\t\t\tcase 'html':\n\t\t\t\treturn html();\n\t\t\tcase 'javascript':\n\t\t\t\treturn javascript();\n\t\t\tcase 'json':\n\t\t\t\treturn json();\n\t\t\tcase 'sql':\n\t\t\t\treturn sql()\n\t\t\tdefault:\n\t\t\t\treturn javascript();\n\t\t}\n\t}\n\n\tminLines(min: number) {\n\t\treturn EditorView.updateListener.of((v) => {\n\t\t\tconst doc = v.state.doc;\n\t\t\tconst lineCount = doc.lines;\n\t\t\tif (lineCount < min) {\n\t\t\t\tconst newLines = Array(min + 1 - lineCount)\n\t\t\t\t\t.fill('')\n\t\t\t\t\t.join('\\n');\n\t\t\t\tconst transaction = v.state.update({\n\t\t\t\t\tchanges: { from: doc.length, insert: newLines },\n\t\t\t\t});\n\t\t\t\tv.view.dispatch(transaction);\n\t\t\t}\n\t\t});\n\t}\n\n\tformatting() {\n\t\tconst formatCommand = (view: any) => {\n\t\t\ttry {\n\t\t\t\tprettier\n\t\t\t\t\t.format(view.state.doc.toString(), {\n\t\t\t\t\t\tparser: 'typescript',\n\t\t\t\t\t\tplugins: [typescript, estree],\n\t\t\t\t\t\tsemi: true,\n\t\t\t\t\t\tsingleQuote: true,\n\t\t\t\t\t\ttabWidth: 2,\n\t\t\t\t\t\tprintWidth: 80,\n\t\t\t\t\t\ttrailingComma: 'all',\n\t\t\t\t\t\tarrowParens: 'always',\n\t\t\t\t\t})\n\t\t\t\t\t.then((formatted) => {\n\t\t\t\t\t\tconst transaction = this.editorView.state.update({\n\t\t\t\t\t\t\tchanges: { from: 0, to: this.editorView.state.doc.length, insert: formatted },\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.editorView.dispatch(transaction);\n\t\t\t\t\t\tconsole.log('格式化成功:', formatted);\n\t\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('格式化错误:', error);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t};\n\t\treturn keymap.of([\n\t\t\t{\n\t\t\t\tkey: 'Shift-Alt-f',\n\t\t\t\tmac: 'Shift-Cmd-f',\n\t\t\t\trun: formatCommand,\n\t\t\t\tpreventDefault: true,\n\t\t\t},\n\t\t]);\n\t}\n}\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { computed, effect, inject, Injectable, PLATFORM_ID, signal } from '@angular/core';\n\nexport interface AppState {\n preset?: string;\n primary?: string;\n darkTheme?: boolean;\n}\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class ThemeConfigService {\n readonly STORAGE_KEY = 'themeConfigState';\n\n appState = signal<AppState | null>(null);\n\n document = inject(DOCUMENT);\n\n platformId = inject(PLATFORM_ID);\n\n theme = computed(() => (this.appState()?.darkTheme ? 'dark' : 'light'));\n \n initialized = false;\n\n transitionComplete = signal<boolean>(false);\n\n constructor(){\n this.appState.set({...this.loadAppState()})\n effect(() => {\n const state = this.appState()\n if(!this.initialized || !state){\n this.initialized = true \n return \n }\n this.saveAppState(state)\n this.handleDarkModeTransition(state)\n\n })\n }\n handleDarkModeTransition(state: AppState): void {\n if (isPlatformBrowser(this.platformId)) {\n if ((document as any).startViewTransition) {\n this.startViewTransition(state);\n } else {\n this.toggleDarkMode(state);\n this.onTransitionEnd();\n }\n }\n }\n\n startViewTransition(state: AppState): void {\n const transition = (document as any).startViewTransition(() => {\n this.toggleDarkMode(state);\n });\n\n transition.ready.then(() => this.onTransitionEnd());\n }\n onTransitionEnd() {\n this.transitionComplete.set(true);\n setTimeout(() => {\n this.transitionComplete.set(false);\n });\n }\n toggleDarkMode(state: AppState): void {\n if (state.darkTheme) {\n this.document.documentElement.classList.add('p-dark');\n } else {\n this.document.documentElement.classList.remove('p-dark');\n }\n }\n loadAppState(){\n if (isPlatformBrowser(this.platformId)) {\n const storedState = localStorage.getItem(this.STORAGE_KEY);\n if (storedState) {\n return JSON.parse(storedState);\n }\n }\n return {\n preset: 'Aura',\n primary: 'orange',\n darkTheme: false,\n };\n }\n\n saveAppState(state:any){\n if (isPlatformBrowser(this.platformId)) {\n localStorage.setItem(this.STORAGE_KEY, JSON.stringify(state));\n }\n }\n}","import { $dt } from '@primeng/themes';\nimport { themeQuartz } from 'ag-grid-enterprise';\nimport { ThemeConfigService } from '../service/themeConfig.service';\nimport { AG_GRID_LOCALE_CN, AG_GRID_LOCALE_EN } from '@ag-grid-community/locale';\nimport { filterObjectByKeys } from '../share/utils';\nimport { I18nService } from '../service/i18n.service';\nimport { GridOptions } from './grid/grid.component';\nimport { ActionService } from '../service/action.service';\n\nconst _gridUtils = {\n\tcalcRowIds: (api: any, isServerSide: boolean): any[] => {\n\t\tconst result: any[] = [];\n\t\tapi.forEachNode((node: any) => {\n\t\t\tnode.isSelected() && result.push(node.data);\n\t\t});\n\t\treturn result;\n\t},\n\tselectionHandler: (api: any, selectionKeys: any[], startRow: number, dataKey?: string) => {\n\t\tconst field = dataKey || 'id';\n\t\tfor (let i = startRow; i < api.getDisplayedRowCount(); i++) {\n\t\t\tconst node = api.getDisplayedRowAtIndex(i);\n\t\t\tif (node.data && selectionKeys?.includes(node.data[field])) {\n\t\t\t\tnode.setSelected(true, false);\n\t\t\t}\n\t\t}\n\t},\n\tcalcGridHeight(rowCount: number, margin: number) {\n\t\tconst headerHeight = 49;\n\t\tconst rowHeight = 42;\n\t\tconst totalHeight = headerHeight + rowCount * rowHeight + margin;\n\t\treturn Math.max(totalHeight, headerHeight + rowHeight + margin);\n\t},\n\tgetTheme(themeConfig: ThemeConfigService) {\n\t\tconst primary = themeConfig.appState()?.primary as string;\n\t\treturn themeQuartz.withParams({\n\t\t\taccentColor: primary,\n\t\t\tselectedRowBackgroundColor: $dt(`${primary}.50`).value,\n\t\t\tcheckboxCheckedBackgroundColor: $dt(`${primary}.500`).value,\n\t\t\trowHoverColor: $dt(`${primary}.50`).value,\n\t\t\trangeSelectionBackgroundColor: $dt(`${primary}.100`).value,\n\t\t\trangeSelectionBorderColor: $dt(`${primary}.100`).value,\n\t\t\twrapperBorderRadius: 0,\n\t\t});\n\t},\n\t// ag-grid 本地国际化 官方无泰文翻译包 目前暂用英文 后续需要再翻译\n\tgetLocalText(local: string) {\n\t\tlet localeText;\n\t\tswitch (local) {\n\t\t\tcase 'zh-CN':\n\t\t\t\tlocaleText = AG_GRID_LOCALE_CN;\n\t\t\t\tbreak;\n\t\t\tcase 'en-US':\n\t\t\t\tlocaleText = AG_GRID_LOCALE_EN;\n\t\t\t\tbreak;\n\t\t\tcase 'th-TH':\n\t\t\t\tlocaleText = AG_GRID_LOCALE_EN;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t'';\n\t\t}\n\t\treturn localeText;\n\t},\n\thandleI18nKey(cols: any[], i18n: I18nService) {\n\t\t// const columnDefs: any[] = [];\n\t\tcols.forEach((item: any) => {\n\t\t\t// let cols: any;\n\t\t\tif (item.hasOwnProperty('i18nKey')) {\n\t\t\t\tlet headerName = i18n.fanyi(item.i18nKey);\n\t\t\t\tlet currentLang = i18n.currentLang\n\t\t\t\tconst textWidth = gridUtils.getLangWidth(headerName)\n\t\t\t\tconst totalWidth = textWidth + 16 + 48;\n\t\t\t\tlet minWidth = item.minWidth\n\t\t\t\titem.headerName = headerName\n\t\t\t\tif(currentLang != 'zh-CN'){\n\t\t\t\t\tminWidth = totalWidth > item.minWidth ? totalWidth : item.minWidth\n\t\t\t\t\titem.minWidth = minWidth\n\t\t\t\t}\n\t\t\t\t// delete cols.i18nKey;\n\t\t\t}\n\t\t\t// columnDefs.push(cols);\n\t\t});\n\t\treturn cols;\n\t},\n\tgetTreeOptions(columnDef: any): any {\n\t\tconst treeOptions = {\n\t\t\ttreeData: true,\n\t\t\ttreeDataChildrenField: 'children',\n\t\t\trowSelection: {\n\t\t\t\tmode: 'multiRow',\n\t\t\t},\n\t\t\tautoGroupColumnDef: {\n\t\t\t\tcellStyle: { color: 'var(--p-form-field-focus-border-color)' },\n\t\t\t\tcellRenderer: 'agGroupCellRenderer',\n\t\t\t\tcellRendererParams: {\n\t\t\t\t\t...columnDef.cellRendererParams,\n\t\t\t\t\tinnerRenderer: 'linkRenderer',\n\t\t\t\t\tsuppressCount: true,\n\t\t\t\t},\n\t\t\t\t...filterObjectByKeys(columnDef, ['headerName', 'field', 'minWidth']),\n\t\t\t},\n\t\t\tisServerSideGroup: (dataItem: any) => {\n\t\t\t\treturn !!dataItem.children;\n\t\t\t},\n\t\t\tgetServerSideGroupKey: (dataItem: any) => {\n\t\t\t\treturn dataItem.id;\n\t\t\t},\n\t\t\tonRowSelected: (event: any, x: any) => {\n\t\t\t\tconst node = event.node;\n\t\t\t\tif (!node.group) return;\n\t\t\t\tnode.childrenAfterGroup.forEach((child: any) => {\n\t\t\t\t\tchild.setSelected(node.isSelected(), false);\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t\treturn treeOptions;\n\t},\n\tmergeOptions(gridOptions: GridOptions, cacheBlockSize: any, action: ActionService): any {\n\t\tgridOptions.cacheBlockSize = cacheBlockSize ?? 50;\n\t\tif (gridOptions.treeDataField) {\n\t\t\tlet columnDef: any = gridOptions.columnDefs?.find((col: any) => col.field == gridOptions.treeDataField);\n\t\t\tcolumnDef.hide = true;\n\t\t\treturn { ...gridOptions, ..._gridUtils.getTreeOptions(columnDef) };\n\t\t}\n\t\tif (gridOptions.showIndex) {\n\t\t\tgridOptions.columnDefs?.unshift({\n\t\t\t\theaderName: '#',\n\t\t\t\tvalueGetter: (params) => (params.node?.rowIndex || 0) + 1,\n\t\t\t\twidth: 80,\n\t\t\t\tminWidth: 80,\n\t\t\t\tmaxWidth: 80,\n\t\t\t});\n\t\t}\n\t\treturn { ...gridOptions };\n\t},\n\tgetLangWidth(text:string,font?:any){\n\t\tconst canvas = document.createElement('canvas');\n \tconst context = canvas.getContext('2d');\n\t\tcontext!.font = font || getComputedStyle(document.body).font;\n\t\treturn context!.measureText(text).width;\n\t}\n};\nexport const gridUtils = {\n\tcalcRowIds: _gridUtils.calcRowIds,\n\tselectionHandler: _gridUtils.selectionHandler,\n\tcalcGridHeight: _gridUtils.calcGridHeight,\n\tgetTheme: _gridUtils.getTheme,\n\tgetLocalText: _gridUtils.getLocalText,\n\thandleI18nKey: _gridUtils.handleI18nKey,\n\tmergeOptions: _gridUtils.mergeOptions,\n\tgetLangWidth: _gridUtils.getLangWidth\n};\n","import type { AfterViewInit } from '@angular/core';\nimport { Component, ViewChild, ViewContainerRef } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { InputTextModule } from 'primeng/inputtext';\nimport type { ICellEditorAngularComp } from 'ag-grid-angular';\nimport type { ICellEditorParams } from 'ag-grid-community';\n\n@Component({\n standalone: true,\n imports: [FormsModule,ReactiveFormsModule,InputTextModule],\n template: `<input #input pInputText [(ngModel)]=\"value\" />`,\n styles: `\n\t\t:host ::ng-deep {\n\t\t\t.p-inputtext {\n\t\t\t\tborder-width: 0;\n\t\t\t\tborder-radius: 0;\n\t\t\t\tbox-shadow: none;\n\t\t\t\t// background: #f8f8f8;\n\t\t\t\tpadding: 0;\n\t\t\t}\n\t\t\t.p-inputtext:hover {\n\t\t\t\tborder-bottom: 1px solid var(--p-primary-color);\n\t\t\t}\n\t\t\t.p-inputtext:focus {\n\t\t\t\tborder-bottom: 1px solid var(--p-primary-color);\n\t\t\t}\n\t\t}\n\t`,\n})\nexport class CellEditInputTextCompoent implements ICellEditorAngularComp, AfterViewInit {\n private params!: ICellEditorParams;\n public value: any;\n\n @ViewChild('input', { read: ViewContainerRef }) public input!: ViewContainerRef;\n\n agInit(params: ICellEditorParams): void {\n this.params = params;\n this.value = this.getInitialValue(params);\n }\n\n getValue(): any {\n return this.value;\n }\n\n getInitialValue(params: ICellEditorParams): any {\n let startValue = params.value;\n\n const eventKey = params.eventKey;\n const isBackspace = eventKey === 'Backspace';\n\n if (isBackspace) {\n startValue = '';\n } else if (eventKey && eventKey.length === 1) {\n startValue = eventKey;\n }\n\n if (startValue !== null && startValue !== undefined) {\n return startValue;\n }\n\n return '';\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.input.element.nativeElement.focus();\n });\n }\n}\n","import { InputNumberModule } from 'primeng/inputnumber';\n\nimport type { AfterViewInit } from '@angular/core';\nimport { Component, ViewChild, ViewContainerRef } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport type { ICellEditorAngularComp } from 'ag-grid-angular';\nimport type { ICellEditorParams } from 'ag-grid-community';\n\n@Component({\n standalone: true,\n imports: [FormsModule,ReactiveFormsModule,InputNumberModule],\n template: `<p-inputnumber \n [(ngModel)]=\"value\" \n [fluid]=\"params.fluid\"\n [size]=\"params.size\"\n [showButtons]=\"params.showButtons\"\n [format]=\"params.format\"\n [buttonLayout]=\"params.buttonLayout || 'stacked'\"\n [inputId]=\"params.inputId\"\n [styleClass]=\"params.styleClass\"\n [maxlength]=\"params.maxlength || null\"\n [ariaLabelledBy]=\"params.ariaLabelledBy\"\n [ariaLabel]=\"params.ariaLabel\"\n [ariaRequired]=\"params.ariaRequired\"\n [autocomplete]=\"params.autocomplete\"\n [min]=\"params.min\"\n [max]=\"params.max\"\n [incrementButtonClass]=\"params.incrementButtonClass\"\n [decrementButtonClass]=\"params.decrementButtonClass\"\n [incrementButtonIcon]=\"params.incrementButtonIcon\"\n [decrementButtonIcon]=\"params.decrementButtonIcon\"\n [step]=\"params.step\"\n [allowEmpty]=\"params.allowEmpty\"\n [locale]=\"params.locale\"\n [localeMatcher]=\"params.localeMatcher\"\n [mode]=\"params.mode\"\n [currency]=\"params.currency\"\n [currencyDisplay]=\"params.currencyDisplay\"\n [useGrouping]=\"params.useGrouping\"\n [variant]=\"params.variant\"\n [minFractionDigits]=\"params.minFractionDigits\"\n [maxFractionDigits]=\"params.maxFractionDigits\"\n [prefix]=\"params.prefix\"\n [suffix]=\"params.suffix\"\n [inputStyle]=\"params.inputStyle\"\n [inputStyleClass]=\"params.inputStyleClass\"\n [showClear]=\"params.showClear\"\n [autofocus]=\"params.autofocus\"\n />`,\n styles: ``,\n})\nexport class CellEditInputNumberCompoent implements ICellEditorAngularComp, AfterViewInit {\n public params!: any;\n public value: any;\n\n @ViewChild('input', { read: ViewContainerRef }) public input!: ViewContainerRef;\n\n agInit(params: ICellEditorParams): void {\n this.params = params;\n this.value = params.value;\n // console.log('params----', params)\n }\n\n getValue(): any {\n const value = this.value;\n return value === '' || value == null ? null : parseInt(value);\n }\n\n ngAfterViewInit() {\n // setTimeout(() => {\n // this.input.element.nativeElement.focus();\n // });\n }\n}\n","import { DatePickerModule } from 'primeng/datepicker';\nimport type { AfterViewInit } from '@angular/core';\nimport { Component, inject, ViewChild, ViewContainerRef } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport type { ICellEditorAngularComp } from 'ag-grid-angular';\nimport type { ICellEditorParams } from 'ag-grid-community';\nimport { DatePipe } from '@angular/common';\n@Component({\n standalone:true,\n imports: [FormsModule,DatePickerModule],\n template:`<p-datepicker \n #date\n [(ngModel)]=\"value\" \n [variant]=\"params.variant || 'outlined'\"\n\t\t[fluid]=\"params.fluid\"\n\t\t[size]=\"params.size\"\n\t\t[styleClass]=\"params.styleClass\"\n\t\t[inputStyle]=\"params.inputStyle\"\n\t\t[inputStyleClass]=\"params.inputStyleClass\"\n\t\t[inputId]=\"'date'\"\n\t\t[name]=\"params.name\"\n\t\t[placeholder]=\"params.placeholder\"\n\t\t[ariaLabelledBy]=\"params.ariaLabelledBy\"\n\t\t[ariaLabel]=\"params.ariaLabel\"\n\t\t[iconAriaLabel]=\"params.iconAriaLabel\"\n\t\t[dateFormat]=\"params.dateFormat || 'yy-mm-dd'\"\n\t\t[multipleSeparator]=\"params.multipleSeparator || ','\"\n\t\t[rangeSeparator]=\"params.rangeSeparator || '-'\"\n\t\t[inline]=\"params.inline\"\n\t\t[showOtherMonths]=\"params.showOtherMonths == undefined ? true : false\"\n\t\t[selectOtherMonths]=\"params.selectOtherMonths\"\n\t\t[showIcon]=\"params.showIcon\"\n\t\t[fluid]=\"params.fluid == undefined ? true : params.fluid\"\n\t\t[icon]=\"params.icon\"\n\t\t[appendTo]=\"params.appendTo\"\n\t\t[readonlyInput]=\"params.readonlyInput\"\n\t\t[shortYearCutoff]=\"params.shortYearCutoff\"\n\t\t[hourFormat]=\"params.hourFormat || '24'\"\n\t\t[timeOnly]=\"params.timeOnly\"\n\t\t[stepHour]=\"params.stepHour || 1\"\n\t\t[stepMinute]=\"params.stepMinute || 1\"\n\t\t[stepSecond]=\"params.stepSecond || 1\"\n\t\t[showSeconds]=\"params.showSeconds\"\n\t\t[showOnFocus]=\"params.showOnFocus == undefined ? true : params.fluid\"\n\t\t[showWeek]=\"params.showWeek\"\n\t\t[startWeekFromFirstDayOfYear]=\"!!params.startWeekFromFirstDayOfYear\"\n\t\t[showClear]=\"params.showClear\"\n\t\t[dataType]=\"params.dataType || 'date'\"\n\t\t[selectionMode]=\"params.selectionMode || 'single'\"\n\t\t[maxDateCount]=\"params.maxDateCount\"\n\t\t[showButtonBar]=\"params.showButtonBar\"\n\t\t[todayButtonStyleClass]=\"params.todayButtonStyleClass\"\n\t\t[clearButtonStyleClass]=\"params.clearButtonStyleClass\"\n\t\t[autofocus]=\"params.autofocus\"\n\t\t[autoZIndex]=\"params.autoZIndex == undefined ? true : params.fluid\"\n\t\t[baseZIndex]=\"params.baseZIndex || 0\"\n\t\t[panelStyleClass]=\"params.panelStyleClass\"\n\t\t[panelStyle]=\"params.panelStyle\"\n\t\t[keepInvalid]=\"params.keepInvalid\"\n\t\t[hideOnDateTimeSelect]=\"params.hideOnDateTimeSelect == undefined ? true : params.fluid\"\n\t\t[touchUI]=\"params.touchUI\"\n\t\t[timeSeparator]=\"params.timeSeparator || ':'\"\n\t\t[focusTrap]=\"params.focusTrap == undefined ? true : params.fluid\"\n\t\t[showTransitionOptions]=\"params.showTransitionOptions || '.12s cubic-bezier(0, 0, 0.2, 1)'\"\n\t\t[hideTransitionOptions]=\"params.hideTransitionOptions || '.1s linear'\"\n\t\t[tabindex]=\"params.tabindex\"\n\t\t[minDate]=\"params.minDate\"\n\t\t[maxDate]=\"params.maxDate\"\n\t\t[disabledDates]=\"params.disabledDates || []\"\n\t\t[disabledDays]=\"params.disabledDays || []\"\n\t\t[showTime]=\"!!params.showTime\"\n\t\t[responsiveOptions]=\"params.responsiveOptions || []\"\n\t\t[numberOfMonths]=\"params.numberOfMonths || 1\"\n\t\t[firstDayOfWeek]=\"params.firstDayOfWeek || 7\"\n\t\t[view]=\"params.view || 'date'\"\n\t\t[defaultDate]=\"params.defaultDate!\"\n\t\t[inputStyle]=\"inputStyle\"\n\t\t(onSelect)=\"select($event)\"\n />\n `,\n\tstyles: `\n\t\t:host {\n display: flex;\n align-items: center;\n height: 100%;\n\t\t\twidth:100%;\n }\n ::ng-deep .p-calendar {\n height: 100%;\n\t\t\t\n }\n ::ng-deep .p-calendar .p-inputtext {\n height: 100%;\n\t\t\twidth:100%;\n padding: 0 0.5rem;\n border: none;\n background: none;\n\t\t\tbox-shadow:none\n }\n\t`,\n providers:[DatePipe]\n})\n\nexport class CellEditDatePickerComponent implements ICellEditorAngularComp, AfterViewInit{\n public params!: any;\n public value: any;\n\tinputStyle = {}\n @ViewChild('date', { read: ViewContainerRef }) public date!: ViewContainerRef;\n datePipe = inject(DatePipe)\n agInit(params: ICellEditorParams<any, any, any>): void {\n this.value = params.value\n this.params = params\n\t\t// 获取单元格的宽度\n\t\tconst cellWidth = params.column.getActualWidth();\n\t\tlet height = params.api.getSizesForCurrentTheme().rowHeight\n\t\tthis.inputStyle = {\n\t\t\tborder:'none',\n\t\t\tboxShadow: 'none',\n\t\t\theight:`${height}px`,\n\t\t\twidth: `${cellWidth}px`,\n\t\t\tbackground:'var(--ag-background-color)',\n\t\t}\n\t\tconsole.log('inputStyle',this.inputStyle)\n }\n getValue(){\n return this.value \n }\n\n // getPopupPosition(){\n // return \"over\" as 'over'\n // }\n isPopup(){\n return true\n }\n\tselect(e:any){\n\t\tconsole.log('e0----',e)\n\t\t// this.params.api.\n\t}\n ngAfterViewInit(){\n setTimeout(() => {\n // this.date.focus();\n });\n }\n}\n","import type { AfterViewInit } from '@angular/core';\nimport { Component, ViewChild, ViewContainerRef } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SelectModule } from 'primeng/select';\nimport type { ICellEditorAngularComp } from 'ag-grid-angular';\nimport type { ICellEditorParams } from 'ag-grid-community';\nimport { getFilterMatchMode as _getFilterMatchMode } from '../../share/utils';\n// 废弃组件无法直接集成ag-grid\n@Component({\n standalone: true,\n imports: [SelectModule,FormsModule],\n template:`\n <p-select\n #select\n [(ngModel)]=\"value\"\n [scrollHeight]=\"params.scrollHeight || '200px'\"\n [filter]=\"params.filter\"\n [name]=\"params.name\"\n [options]=\"params.options\"\n [placeholder]=\"params.placeholder\"\n [class]=\"params.class\"\n [style]=\"params.style\"\n [panelStyle]=\"params.panelStyle\"\n [panelStyleClass]=\"params.panelStyleClass\"\n [readonly]=\"params.readonly\"\n [editable]=\"params.editable\"\n [appendTo]=\"params.appendTo || 'body'\"\n [tabindex]=\"params.tabindex\"\n [placeholder]=\"params.placeholder\"\n [loadingIcon]=\"params.loadingIcon\"\n [filterPlaceholder]=\"params.filterPlaceholder\"\n [filterLocale]=\"params.filterLocale\"\n [variant]=\"params.variant\"\n [inputId]=\"params.inputId\"\n [dataKey]=\"params.dataKey\"\n [filterBy]=\"params.filterBy\"\n [filterFields]=\"params.filterFields\"\n [autofocus]=\"params.autofocus\"\n [resetFilterOnHide]=\"params.resetFilterOnHide\"\n [checkmark]=\"params.checkmark\"\n [dropdownIcon]=\"params.dropdownIcon\"\n [loading]=\"params.loading\"\n [optionLabel]=\"params.optionLabel\"\n [optionValue]=\"params.optionValue\"\n [optionDisabled]=\"params.optionDisabled\"\n [optionGroupLabel]=\"params.optionGroupLabel\"\n [optionGroupChildren]=\"params.optionGroupChildren || 'items'\"\n [group]=\"params.group\"\n [showClear]=\"params.showClear\"\n [emptyFilterMessage]=\"params.emptyFilterMessage\"\n [emptyMessage]=\"params.emptyMessage\"\n [lazy]=\"params.lazy\"\n [virtualScroll]=\"params.virtualScroll\"\n [virtualScrollItemSize]=\"params.virtualScrollItemSize\"\n [virtualScrollOptions]=\"params.virtualScrollOptions\"\n [overlayOptions]=\"params.overlayOptions\"\n [size]=\"params.size\"\n [ariaFilterLabel]=\"params.ariaFilterLabel\"\n [ariaLabel]=\"params.ariaLabel\"\n [ariaLabelledBy]=\"params.ariaLabelledBy\"\n [filterMatchMode]=\"getFilterMatchMode(params.filterMatchMode)\"\n [maxlength]=\"params.maxlength\"\n [tooltip]=\"params.tooltip\"\n [tooltipPosition]=\"params.tooltipPosition || 'right'\"\n [tooltipPositionStyle]=\"params.tooltipPositionStyle || 'absolute'\"\n [tooltipStyleClass]=\"params.tooltipStyleClass\"\n [focusOnHover]=\"params.focusOnHover == undefined ? true : params.focusOnHover\"\n [fluid]=\"params.fluid == undefined ? true : params.fluid\"\n [filterValue]=\"params.filterValue\"\n (onChange)=\"onChange($event)\"\n />\n `,\n styles:``\n})\n\nexport class CellEditSelectComponent {\n public params!: any;\n public value: any;\n options:any\n\n\n agInit(params: ICellEditorParams): void {\n this.params = params;\n this.value = params.value\n const cellWidth = params.column.getActualWidth();\n\t\tthis.params.style = {\n\t\t\tborder: 'none',\n\t\t\tboxShadow: 'none',\n\t\t\twidth: `${cellWidth}px`,\n\t\t\tbackground: 'var(--ag-background-color)',\n\t\t};\n\t\tthis.params.panelStyle = {\n\t\t\twidth: `${cellWidth}px`,\n\t\t};\n }\n getValue(){\n // console.log('this.value',this.value)\n return this.value\n }\n onChange(e:any){\n console.log(e)\n // e.stop\n }\n\n getFilterMatchMode = _getFilterMatchMode;\n}\n","import { Component, HostListener } from '@angular/core';\nimport { ICellEditorParams } from 'ag-grid-community/dist/types/src/interfaces/iCellEditor';\nimport { AutoCompleteModule, AutoCompleteSelectEvent } from 'primeng/autocomplete';\nimport { FormsModule } from '@angular/forms';\n@Component({\n standalone: true,\n imports: [AutoCompleteModule,FormsModule],\n template:`\n <p-autocomplete \n [(ngModel)]=\"value\" \n [suggestions]=\"options\"\n [placeholder]=\"params.placeholder\"\n [size]=\"'large'\"\n appendTo=\"body\"\n [optionLabel]=\"params.optionLabel\"\n [optionValue]=\"params.optionValue\"\n [autofocus]=\"true\"\n (completeMethod)=\"search($event)\"\n (onSelect)=\"select($event)\" />\n `\n})\n\nexport class CellEditAutoCompleteComponent {\n public params!: any;\n public value: any;\n public values:any\n options:any \n\n agInit(params: ICellEditorParams): void {\n this.params = params;\n this.value = params.value\n const { dataMap, optionLabel,optionValue,options = [] } = params.colDef.cellEditorParams\n if(this.isKeyValue()){\n this.value = dataMap[this.value][optionLabel]\n }\n this.options = options\n }\n getValue(){\n console.log('this.value',this.value)\n return this.value\n }\n // refresh(param:any){\n // this.options = param.options\n // }\n onChange(e:any){\n console.log(e)\n // e.stop\n }\n isKeyValue(){\n const { dataMap, optionLabel,optionValue} = this.params.colDef.cellEditorParams\n return dataMap && optionLabel && optionValue && optionValue !== optionLabel\n }\n search(e:any){\n this.params.search(e).subscribe((res:any) => {\n this.options = res.data\n if(this.isKeyValue() && res.data.length > 0){\n this.params.colDef.cellEditorParams.dataMap = res.data.reduce((p:any,n:any) => {\n if(!p[n.id]){\n p[n.id] = n\n }\n return p\n },{})\n }\n if(res.data.length === 0){\n this.params.colDef.cellEditorParams.hasOwnProperty('dataMap') && delete this.params.colDef.cellEditorParams.dataMap\n }\n })\n // this.options = ['2',2,4]\n }\n focusIn(){\n\n }\n\n select(e:AutoCompleteSelectEvent){\n this.params.api.stopEditing(); \n }\n // @HostListener('keydown.enter', ['$event'])\n // onEnter(event: KeyboardEvent) {\n // this.params.api.stopEditing();\n // }\n}","import type { AfterViewInit } from '@angular/core';\nimport { Component, inject, Renderer2, ViewChild, ViewContainerRef } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport type { ICellEditorAngularComp } from 'ag-grid-angular';\nimport type { ICellEditorParams } from 'ag-grid-community';\nimport { DatePipe } from '@angular/common';\n\n@Component({\n standalone:true,\n imports: [FormsModule],\n template:`\n <div #container class=\"date-picker-container\">\n <input \n class=\"ag-input-field-input ag-date-field-input\" \n data-ref=\"eInput\"\n [(ngModel)]=\"value\" \n type=\"datetime-local\" \n id=\"ag-78-input\" \n tabindex=\"0\" \n [step]=\"params.step || '0'\" \n aria-label=\"Input Editor\">\n </div>\n \n `,\n providers:[DatePipe]\n})\n\nexport class CellEditInputDateComponent implements ICellEditorAngularComp, AfterViewInit{\n public params!: any;\n public value: any;\n @ViewChild('container', { read: ViewContainerRef }) public container!: ViewContainerRef;\n datePipe = inject(DatePipe)\n renderer = inject(Renderer2)\n agInit(params: ICellEditorParams<any, any, any>): void {\n this.value = params.value\n this.params = params\n }\n getValue(){\n let time = new Date(this.value)\n return ''+ this.datePipe.transform(time,this.params.formatter || 'yyyy-MM-dd HH:mm')\n }\n getPopupPosition(){\n return \"over\" as 'over'\n }\n // isPopup(){\n // return true\n // }\n ngAfterViewInit(){\n // setTimeout(() => {\n // this.date.focus();\n // });\n }\n}","import { Component, inject } from '@angular/core';\nimport type { ICellRendererAngularComp } from 'ag-grid-angular';\nimport type { ICellRendererParams } from 'ag-grid-community';\nimport { Router } from '@angular/router';\n@Component({\n\tstandalone: true,\n\tstyles: `\n\t\t.cell-link {\n\t\t\tcolor: var(--p-primary-color);\n\t\t\tcursor: pointer;\n\t\t}\n\t`,\n\ttemplate: `\n\t\t<span\n\t\t\tclass=\"cell-link\"\n\t\t\t(click)=\"onLink()\"\n\t\t\t>{{ params.valueFormatted ? params.valueFormatted : params.value }}</span\n\t\t>\n\t`,\n})\nexport class LinkRenderer implements ICellRendererAngularComp {\n\tparams!: any;\n\trouter = inject(Router);\n\tconstructor() {}\n\n\tagInit(params: ICellRendererParams): void {\n\t\tthis.refresh(params);\n\t}\n\n\trefresh(params: ICellRendererParams): boolean {\n\t\tthis.params = params;\n\t\treturn true;\n\t}\n\n\tonLink() {\n\t\tconst { url, queryParam } = this.params;\n\t\tif (url) {\n\t\t\tlet urlStr = typeof url == 'function' ? url(this.params.data) : '';\n\t\t\tlet query = typeof queryParam === 'function' ? queryParam(this.params.data) : {};\n\t\t\turlStr !== '' && this.router.navigate([urlStr], { queryParams: query });\n\t\t}\n\t}\n}\n","import { AsyncPipe } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Observable } from 'rxjs';\n\n@Component({\n\tstandalone: true,\n\timports: [CommonModule],\n\tproviders: [AsyncPipe],\n\ttemplate: `{{ label }}`,\n})\nexport class AsyncRenderer {\n\tlabel: any;\n\toptionsHook?: (value: any) => Observable<any[]>;\n\n\tagInit(params: any): void {\n\t\tthis.optionsHook = params.optionsHook;\n\t\tthis.triggerOptionsHook(params.value);\n\t}\n\n\ttriggerOptionsHook(value: any) {\n\t\tif (this.optionsHook) {\n\t\t\tthis.optionsHook(value).subscribe((res: any) => {\n\t\t\t\tthis.label = res?.find((item: any) => item.value === value)?.label || '';\n\t\t\t});\n\t\t}\n\t}\n}\n","import { AsyncPipe } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nconst ColorMap: any = {\n\temerald: '#10B981',\n\tgreen: '#22c55e',\n\tlime: '#84CC16',\n\torange: '#f97316',\n\tamber: '#F59E0B',\n\tsky: '#0EA5E9',\n\tblue: '#0ea5e9',\n\tviolet: '#6B26C1',\n\tpink: '#EC4899',\n\tpurple: '#f97316',\n\tred: '#EF4444',\n\tyellow: '#F59E0B',\n\tgray: '#4B5563',\n\tteal: '#16A34A',\n\tcyan: '#25D366',\n\tindigo: '#6574CD',\n\tfushsia: '#E10098',\n};\n\n@Component({\n\tstandalone: true,\n\timports: [CommonModule],\n\tproviders: [AsyncPipe],\n\tstyles: `\n\t\t.cell-chip {\n\t\t\tpadding: 2px 5px;\n\t\t\tcolor: #fff;\n\t\t\tborder-radius: 2px;\n\t\t\tfont-size: 12px;\n\t\t}\n\t`,\n\ttemplate: `\n\t\t@if (color) {\n\t\t\t<span\n\t\t\t\tclass=\"cell-chip\"\n\t\t\t\t[style]=\"{ background: color }\"\n\t\t\t\t>{{ label }}</span\n\t\t\t>\n\t\t} @else {\n\t\t\t<span>{{ label }}</span>\n\t\t}\n\t`,\n})\nexport class ChipRenderer {\n\tlabel: string = '';\n\tcolor: string = '';\n\n\tagInit(params: any): void {\n\t\tconst options: any[] = params.options;\n\t\tconst item = options?.find((item: any) => item.value === params.value);\n\t\tthis.label = item?.label || '';\n\t\tthis.color = item?.chip ? ColorMap[item.chip!] : '';\n\t}\n}\n","import { Component } from '@angular/core';\nimport { ImageModule } from 'primeng/image';\n\n@Component({\n standalone: true,\n imports:[ImageModule],\n template:`\n @for(img of imgList;track img){\n <p-image\n [src]=\"img\"\n alt=\"Image\"\n height=\"40\"\n [imageStyle]=\"{height:'40px'}\"\n appendTo=\"body\"\n [preview]=\"true\"\n [style]=\"{marginRight:'5px'}\"\n />\n }\n `,\n styles:`\n :host::ng-deep{\n .p-image-preview {\n margin-right: 5px\n }\n }\n `\n})\n\nexport class ImgRenderer {\n imgList = []\n\n agInit(params: any): void {\n if(typeof params.value === 'string'){\n this.imgList = params.value.split(',')\n } else {\n this.imgList = params.value\n }\n }\n}\n","import { Component, Renderer2 } from '@angular/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport { ICellRendererParams } from 'ag-grid-enterprise';\n\n@Component({\n selector: 'app-row-span-renderer',\n\tstandalone: true,\n\timports: [],\n\ttemplate: `\n <div>{{ params.value }}</div>\n `,\n\n})\n\nexport class RowSpanRenderer implements ICellRendererAngularComp {\n\tparams?: any;\n\trowSpan: number = 1;\n\trowElementObservers: ResizeObserver[] = [];\n\n\tconstructor(private renderer: Renderer2) {\n\t\tthis.resetRowSpanItemHeight = this._debounce(this.resetRowSpanItemHeight,100)\n\t}\n\n\tagInit(params: any): void {\n\t\tthis.params = params;\n\t\tthis.refresh(params);\n\t}\n\n\trefresh(params: ICellRendererParams): boolean {\n\t\tthis.rowSpan = this.params.rowSpan(this.params);\n\t\tthis.initRowElementObservers();\n\t\tthis.setRowSpanStyle();\n\t\treturn true;\n\t}\n\n\tinitRowElementObservers() {\n\t\tif (this.rowSpan <= 1) return;\n\t\tconst { visibleCols} = this.params.node.beans;\n\t\tconst hasWap = visibleCols.allCols.some((v:any) => v.colDef.autoHeight && v.colDef.cellClass == 'cell-wrap-text');\n\t\tif(!hasWap) return \n\t\tfor (let i = this.params.node.rowIndex; i < this.params.node.rowIndex + this.rowSpan; i++) {\n\t\t\tconst rowElement = document.querySelector(`.ag-row[row-index=\"${i}\"]`);\n\t\t\tif (!rowElement) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst rowElementObserver = new ResizeObserver((entries) => {\n\t\t\t\tentries.forEach((entry) => {\n\t\t\t\t\tthis.resetRowSpanItemHeight();\n\t\t\t\t});\n\t\t\t});\n\t\t\trowElementObserver.observe(rowElement);\n\t\t}\n\t}\n\t\n\tresetRowSpanItemHeight() {\n\t\tlet totalHeight: number = 0;\n\t\tfor (let i = this.params.node.rowIndex; i < this.params.node.rowIndex + this.rowSpan; i++) {\n\t\t\tconst rowHeight = this.params.api.getDisplayedRowAtIndex(i)?.rowHeight;\n\t\t\ttotalHeight = totalHeight + (rowHeight || 0);\n\t\t}\n\t\tthis.renderer.setStyle(this.params.eGridCell, 'height', totalHeight + 'px');\n\t}\n\n\tsetRowSpanStyle() {\n\t\tconst gridCellElement = this.params.eGridCell;\n\t\tif (this.rowSpan > 1) {\n\t\t\tthis.renderer.setStyle(gridCellElement, 'z-index', '2');\n\t\t\tthis.renderer.setStyle(gridCellElement, 'display', 'flex');\n\t\t\tthis.renderer.setStyle(gridCellElement, 'align-items', 'center');\n\t\t\tthis.renderer.setStyle(gridCellElement, 'background', 'white');\n\t\t\tif (this.params.node.rowIndex + this.rowSpan !== this.params.api.getDisplayedRowCount()) {\n\t\t\t\tthis.renderer.setStyle(\n\t\t\t\t\tgridCellElement,\n\t\t\t\t\t'border-bottom',\n\t\t\t\t\t'1px solid color-mix(in srgb, transparent, var(--ag-foreground-color) 15%)',\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t_debounce(\n func: (...args: any[]) => void,\n delay: number\n\t): (...args: any[]) => void {\n let timeout: any;\n // Calling debounce returns a new anonymous function\n return function (...args: any[]) {\n //@ts-expect-error no implicit this\n const context = this as any;\n window.clearTimeout(timeout);\n\n // Set the new timeout\n timeout = window.setTimeout(function () {\n // at the moment we just check if the bean is still alive, in the future the bean stub should\n // another option is to manage a list of active timers and clear them when the bean is destroyed.\n func.apply(context, args);\n }, delay);\n };\n\t}\n}","import {\n\tCellEditInputNumberCompoent,\n\tCellEditDatePickerComponent,\n\tCellEditSelectComponent,\n\tCellEditAutoCompleteComponent,\n\tCellEditInputDateComponent\n} from './cell-edit/index';\nimport { LinkRenderer } from './cell-render/link-render';\nimport { AsyncRenderer } from './cell-render/async-renderer';\nimport { ChipRenderer } from './cell-render/chip-render';\nimport { ImgRenderer } from './cell-render/img-renderer'\nimport { RowSpanRenderer } from './cell-render/row-span'\n// rowModelType 使用clientSide的最大值\nexport const CLIENTLIMIT = 9999;\n\nexport const components = {\n\tcellEditInputNumberCompoent: CellEditInputNumberCompoent,\n\tcellEditDatePickerComponent: CellEditDatePickerComponent,\n\tcellEditSelectComponent: CellEditSelectComponent,\n\tlinkRenderer: LinkRenderer,\n\tasyncRenderer: AsyncRenderer,\n\tchipRenderer: ChipRenderer,\n\tcellEditAutoCompleteComponent: CellEditAutoCompleteComponent,\n\timgRenderer: ImgRenderer,\n\tcellEditInputDateComponent: CellEditInputDateComponent,\n\trowSpanRenderer: RowSpanRenderer\n};\n","import {\n\tComponent,\n\tViewChild,\n\tElementRef,\n\tinput,\n\teffect,\n\tinject,\n\tcomputed,\n\tuntracked,\n\toutput,\n\tNgZone,\n\tRenderer2,\n\tChangeDetectorRef,\n\tHostListener,\n\tsignal,\n} from '@angular/core';\nimport { CellValueChangedEvent, ColDef, GridOptions as RawGridOptions, RowDragEndEvent } from 'ag-grid-community';\nimport { AgGridAngular } from 'ag-grid-angular';\nimport { ThemeConfigService } from '../../service/themeConfig.service';\nimport { ActionService } from '../../service/action.service';\nimport { I18nService } from '../../service/i18n.service';\nimport { Search,ColumnFilter } from '../../am/am.component';\nimport { gridUtils } from '../grid-utils';\nimport { ButtonModule } from 'primeng/button';\nimport { lastValueFrom, Observable, of } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { components, CLIENTLIMIT } from '../mock-data';\nimport { toObservable } from '@angular/core/rxjs-interop';\n\nexport interface GridOptions extends RawGridOptions {\n\tserverFunc?: (search: Search) => Observable<any>;\n\tclientFunc?: (search: Search) => Observable<any>;\n\tshowSearch?: boolean;\n\tpreSearch?: Search;\n\ttreeDataField?: string;\n\ttreeLevel?: number;\n\theaderHeight?: number;\n\tscrollHeight?: string;\n\tshowIndex?: boolean;\n\tundoRedoCellEditing?: boolean;\n\tundoRedoCellEditingLimit?: number;\n\tmainField?: string;\n\tmodelName?: string;\n\tfk?: string;\n\tdragSort?: string;\n\tselectionMode?: 'none' | 'single' | 'multiple';\n\tdataKey?: string;\n}\n\nconst defaultOption: GridOptions = {\n\t// popupParent: document.body,\n\tdefaultColDef: {\n\t\tflex: 1,\n\t\tminWidth: 100,\n\t\tsortable: false,\n\t\tfilter: false,\n\t},\n\trowSelection: { mode: 'multiRow' },\n\trowModelType: 'serverSide',\n\tcellSelection: {\n\t\thandle: {\n\t\t\tmode: 'range',\n\t\t},\n\t},\n\tenableCharts: true,\n\tundoRedoCellEditing: true,\n\tundoRedoCellEditingLimit: 20,\n};\n\nconst defaultSorts = [{ field: 'createdAt', isAsc: false }];\nfunction findLastIndex(array: any[], predicate: any, thisArg: any) {\n\tfor (let i = array.length - 1; i >= 0; i--) {\n\t\tif (predicate.call(thisArg, array[i], i, array)) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n@Component({\n\tselector: 'custom-grid',\n\tstandalone: true,\n\timports: [AgGridAngular, ButtonModule],\n\ttemplateUrl: './grid.component.html',\n\tstyleUrl: './grid.component.scss',\n})\nexport class GridComponent {\n\t@ViewChild(AgGridAngular) grid!: AgGridAngular;\n\t@ViewChild(AgGridAngular, { read: ElementRef }) gridRef!: ElementRef;\n\t@ViewChild('gridContainer') containerRef!: ElementRef;\n\tgridOptions = input<GridOptions>({});\n\tselectionKeys = input<any[]>([]);\n\ttoOptions = computed(() =>\n\t\tgridUtils.mergeOptions({ ...defaultOption, ...this.gridOptions() }, untracked(() => this.searchPrm()).limit, this.action),\n\t);\n\tthemeConfig = inject(ThemeConfigService);\n\tlocaleText: any;\n\ti18nService = inject(I18nService);\n\tmyTheme = computed(() => gridUtils.getTheme(this.themeConfig));\n\tcomponents = components;\n\tcolumnDefs: ColDef[] = [];\n\tinitGrid = true;\n\tcontentMap: Record<string, string> = {};\n\tmainField!: string;\n\tmodelName!: string;\n\tupsert = input<any>();\n\tsubIndex!: number;\n\trowData = input<any>(undefined);\n\tsearchPrm = input<Search>({});\n\trawPrm?: Search;\n\tdeleteEmit = output<number[]>();\n\taddEmit = output();\n\taddType = input<'handle' | 'select' | 'none'>();\n\tselectData = input<any[]>();\n\tshowAct = input<boolean>(true);\n\tactPos = input<'top' | 'bottom'>('bottom');\n\tauthLevel = input<number>(-1);\n\thttp = inject(HttpClient);\n\trenderer = inject(Renderer2);\n\tngZone = inject(NgZone);\n\tcdr = inject(ChangeDetectorRef);\n\tshowDelete = input<boolean>(true);\n\tgridDisable = input<boolean>(false);\n\taddSort = input<string>();\n\n\trichMultMap: Record<string, any> = {};\n\thorizontalScrollBarObserver: any;\n\thorizontalScrollBarHeight = 0;\n\tverticalScrollBarObserver: any;\n\tverticalScrollBarWidth = 0;\n\tgridHeight = 0;\n\tselectedRows = signal<any[]>([]);\n\tnoRows = true;\n\tshowHorizontal = false;\n\tdragBeforeIndex = -1;\n\n\t@HostListener('window:resize')\n\tonResize() {\n\t\tthis.setScrollHeight();\n\t}\n\n\tconstructor(private action: ActionService) {\n\t\tconst searchPrm$ = toObservable(this.searchPrm).subscribe((searchPrm) => {\n\t\t\tif (searchPrm.modelName !== undefined) {\n\t\t\t\tthis.rawPrm = searchPrm;\n\t\t\t\tsearchPrm$.unsubscribe();\n\t\t\t}\n\t\t});\n\t\teffect(\n\t\t\tasync () => {\n\t\t\t\tthis.columnDefs = await this.setRichValue();\n\t\t\t\tthis.columnDefs = gridUtils.handleI18nKey(this.toOptions().columnDefs! || [], this.i18nService);\n\t\t\t\tthis.mainField = this.toOptions().mainField!;\n\t\t\t\tthis.modelName = this.toOptions().modelName!;\n\t\t\t\tif (!this.upsert()?.subsert?.find((v: any) => v.subModelName === this.modelName)) {\n\t\t\t\t\tthis.upsert()?.subsert?.push({\n\t\t\t\t\t\tsubModelName: this.toOptions().modelName,\n\t\t\t\t\t\tfk: this.toOptions().fk,\n\t\t\t\t\t\tsubData: [],\n\t\t\t\t\t\tmaptmp: new Map(),\n\t\t\t\t\t\tlogtmp: new Map(),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthis.subIndex = this.upsert()?.subsert?.findIndex((v: any) => v.subModelName === this.modelName);\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tif (!this.action.searchMonitor(this.toOptions().modelName)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.getData();\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t\teffect(() => {\n\t\t\tif (this.rowData() === undefined) return;\n\t\t\tuntracked(() => {\n\t\t\t\tthis.toOptions().clientFunc = () => of({ data: this.rowData(), totalNum: this.rowData()?.length });\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.getClientData(undefined);\n\t\t\t\t}, 100);\n\t\t\t});\n\t\t});\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tif (this.selectData() && this.selectData()!.length > 0 && this.grid) {\n\t\t\t\t\tthis.handleAddedRows(this.selectData()!);\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tthis.toOptions().preSearch &&\n\t\t\t\t\tthis.action.setSearch({ columnFilters: this.toOptions().preSearch!.columnFilters }, this.toOptions().modelName);\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tconst action = this.action.getAction();\n\t\t\t\tif (action?.type === 'export') {\n\t\t\t\t\tthis.grid.api.exportDataAsExcel({ fileName: this.modelName });\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t\tthis.editingFix();\n\t}\n\n\tngOnInit(): void {\n\t\tthis.i18nService.change.subscribe((res) => {\n\t\t\tthis.grid && this.grid.api.destroy();\n\t\t\tthis.initGrid = false;\n\t\t\tthis.localeText = gridUtils.getLocalText(res);\n\t\t\tthis.columnDefs = gridUtils.handleI18nKey(this.toOptions().columnDefs!, this.i18nService);\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.initGrid = true;\n\t\t\t}, 100);\n\t\t});\n\t\tthis.localeText = gridUtils.getLocalText(this.i18nService.currentLang);\n\t}\n\n\tngAfterViewInit() {}\n\n\tngOnDestroy() {\n\t\tif (this.horizontalScrollBarObserver) {\n\t\t\tthis.horizontalScrollBarObserver.disconnect();\n\t\t}\n\t\tif (this.verticalScrollBarObserver) {\n\t\t\tthis.verticalScrollBarObserver.disconnect();\n\t\t}\n\t}\n\n\tgetGrid(): AgGridAngular {\n\t\treturn this.grid;\n\t}\n\n\tonGridReady(e: any) {\n\t\tthis.initGridHeight();\n\t\tsetTimeout(() => {\n\t\t\tthis.getData();\n\t\t}, 100);\n\t}\n\n\tonSelectionChanged(event: any): any {\n\t\tthis.selectedRows.set(gridUtils.calcRowIds(event.api, this.toOptions()?.rowModelType == 'serverSide'));\n\t}\n\n\tonRowGroupOpened() {\n\t\tthis.ngZone.runOutsideAngular(() => {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.ajustGridHeight();\n\t\t\t});\n\t\t});\n\t}\n\n\tasync setRichValue() {\n\t\tlet col = this.toOptions().columnDefs! || [];\n\t\ttry {\n\t\t\tconst processedCols = await Promise.all(\n\t\t\t\tcol.map(async (item: any) => {\n\t\t\t\t\tif (item.hasOwnProperty('fieldId') && (item.cellEditor == 'agRichSelectCellEditor' || item.cellEditor == 'agSelectCellEditor')) {\n\t\t\t\t\t\tlet values: any = [];\n\t\t\t\t\t\tif (!item.cellEditorParams || !item.cellEditorParams.hasOwnProperty('values')) {\n\t\t\t\t\t\t\tif (item.hasOwnProperty('selectData')) {\n\t\t\t\t\t\t\t\tvalues = await item.selectData();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\titem.cellEditorParams = {\n\t\t\t\t\t\t\t\t...item.cellEditorParams,\n\t\t\t\t\t\t\t\tvalueListMaxHeight: 200,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else if (item.cellEditorParams && item.cellEditorParams.hasOwnProperty('values')) {\n\t\t\t\t\t\t\tvalues = item.cellEditorParams.values;\n\t\t\t\t\t\t\titem.cellEditorParams.valueListMaxHeight = 200;\n\t\t\t\t\t\t\titem.cellEditorParams.suppressMultiSelectPillRenderer = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet isString = values.every((item: any) => typeof item === 'string');\n\t\t\t\t\t\tif (!isString) {\n\t\t\t\t\t\t\titem.cellEditorParams.rawOptions = values;\n\t\t\t\t\t\t\titem.cellEditorParams.values = values.map((item: any) => item.value);\n\t\t\t\t\t\t\titem.valueFormatter = (params: any) => {\n\t\t\t\t\t\t\t\tconst options = params.colDef.cellEditorParams.rawOptions as any[];\n\t\t\t\t\t\t\t\tif (typeof params.value === 'number') {\n\t\t\t\t\t\t\t\t\tconst options = params.colDef.cellEditorParams.rawOptions as any[];\n\t\t\t\t\t\t\t\t\tconst option = options.find((opt) => opt.value == params.value);\n\t\t\t\t\t\t\t\t\treturn option ? option.label : params.value;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tlet values: any = [];\n\t\t\t\t\t\t\t\t\tif (typeof params.value === 'string') {\n\t\t\t\t\t\t\t\t\t\tif (params.value.length > 0) {\n\t\t\t\t\t\t\t\t\t\t\tvalues = params.value.split(',').map((v: any) => (!isNaN(v) ? Number(v) : v)) || [];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tvalues = params.value || [];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tconst option = options.filter((opt) => values.includes(opt.value)) || [];\n\t\t\t\t\t\t\t\t\treturn option.length > 0 ? option.map((v) => v.label) : params.value;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\titem.valueGetter = (params: any) => {\n\t\t\t\t\t\t\t\t// console.log('pamrams----',params,item.field)\n\t\t\t\t\t\t\t\tif (item.cellEditor == 'agRichSelectCellEditor' && params.data.hasOwnProperty(item.field)) {\n\t\t\t\t\t\t\t\t\treturn typeof params.data[item.field] == 'string' ? params.data[item.field].split(',') : params.data[item.field];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn params.data[item.field];\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\titem.valueParser = (params: any) => {\n\t\t\t\t\t\t\t\t// console.log('params----',params)\n\t\t\t\t\t\t\t\tconst options = params.colDef.cellEditorParams.rawOptions as any[];\n\t\t\t\t\t\t\t\tconst option = options.find((opt) => opt.label === params.newValue);\n\t\t\t\t\t\t\t\treturn option ? option.value : params.newValue;\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.cellEditorParams.values = values;\n\t\t\t\t\t\t\titem.valueGetter = (params: any) => {\n\t\t\t\t\t\t\t\tif (item.cellEditor == 'agRichSelectCellEditor' && params.data.hasOwnProperty(item.field)) {\n\t\t\t\t\t\t\t\t\treturn typeof params.data[item.field] == 'string' ? params.data[item.field].split(',') : params.data[item.field];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn params.data[item.field];\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn item;\n\t\t\t\t}),\n\t\t\t);\n\t\t\treturn processedCols;\n\t\t} catch (error) {\n\t\t\tconsole.error('Error processing columns:', error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tgetEnums(id: number) {\n\t\treturn lastValueFrom(this.http.post('get', { id: Number(id), modelName: 'ModelField', preloads: ['Enum'] }));\n\t}\n\n\thandleSelections(startRow: number) {\n\t\tsetTimeout(() => {\n\t\t\tif (this.selectionKeys()?.length) {\n\t\t\t\tgridUtils.selectionHandler(this.grid.api, this.selectionKeys(), startRow, this.toOptions()?.dataKey);\n\t\t\t}\n\t\t});\n\t}\n\n\tgetData() {\n\t\tuntracked(() => {\n\t\t\tconsole.log('this.toOptions()',this.toOptions())\n\t\t\tif (!this.searchPrm().modelName && !this.rowData()) return;\n\t\t\tthis.cancelSelect();\n\t\t\tconst search = this.action.getSearch(this.toOptions().modelName);\n\t\t\tthis.toOptions()?.rowModelType == 'serverSide' ? this.getServerData(search) : this.getClientData(search);\n\t\t});\n\t}\n\n\tgetServerData(search?: Search) {\n\t\tthis.grid?.api.setGridOption('serverSideDatasource', {\n\t\t\tgetRows: (params) => {\n\t\t\t\tconst searchPrm: Search = {\n\t\t\t\t\t...this.searchPrm(),\n\t\t\t\t\toffset: params.request.startRow,\n\t\t\t\t\tcolumnFilters: [...(this.rawPrm?.columnFilters || []), ...(search?.columnFilters || [])],\n\t\t\t\t\tsorts: search?.sorts?.length ? search.sorts : this.rawPrm?.sorts?.length ? this.rawPrm.sorts : defaultSorts,\n\t\t\t\t};\n\t\t\t\tsearchPrm.columnFilters = this.isRange(searchPrm.columnFilters!) as ColumnFilter[];\n\t\t\t\tthis.handleServerTree(params, searchPrm);\n\t\t\t\tthis.toOptions()\n\t\t\t\t\t.serverFunc?.(searchPrm)\n\t\t\t\t\t.subscribe((res: any) => {\n\t\t\t\t\t\tthis.action.setPage({\n\t\t\t\t\t\t\tstartRow: params.request.startRow,\n\t\t\t\t\t\t\tendRow: params.request.endRow! < res.totalNum ? params.request.endRow : res.totalNum,\n\t\t\t\t\t\t\ttotal: res.totalNum,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tparams.success({ rowData: res.data || [] });\n\t\t\t\t\t\tthis.ajustGridHeight();\n\t\t\t\t\t\tthis.handleSelections(params.request.startRow || 0);\n\t\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\n\thandleServerTree(params: any, searchPrm: Search) {\n\t\tif (!this.toOptions().treeData) return;\n\t\tif (params.request.groupKeys.length > 0) {\n\t\t\tsearchPrm.columnFilters = searchPrm.columnFilters?.filter((columnFilter) => columnFilter.columnField !== 'pid');\n\t\t\tsearchPrm.columnFilters = [\n\t\t\t\t// ...(searchPrm.columnFilters || []),\n\t\t\t\t{ columnField: 'pid', type: 'eq', fiter: params.request.groupKeys[params.request.groupKeys.length - 1] },\n\t\t\t];\n\t\t} else {\n\t\t\tif (!searchPrm.columnFilters?.find((columnFilter) => columnFilter.columnField === 'pid')) {\n\t\t\t\tsearchPrm.columnFilters = [...(searchPrm.columnFilters || []), { columnField: 'pid', type: 'eq', fiter: 0 }];\n\t\t\t}\n\t\t}\n\t\tsearchPrm.preloads = ['children'];\n\t}\n\n\tgetClientData(search?: Search) {\n\t\tconst searchPrm: Search = {\n\t\t\t...this.searchPrm(),\n\t\t\tlimit: CLIENTLIMIT,\n\t\t\tcolumnFilters: [...(this.rawPrm?.columnFilters || []), ...(search?.columnFilters || [])],\n\t\t\tsorts: search?.sorts?.length ? search.sorts : defaultSorts,\n\t\t};\n\t\tsearchPrm.columnFilters = this.isRange(searchPrm.columnFilters!) as ColumnFilter[];\n\t\tthis.handleClientTree(searchPrm);\n\t\tthis.toOptions()\n\t\t\t.clientFunc?.(searchPrm)\n\t\t\t.subscribe((res: any) => {\n\t\t\t\tthis.action.setPage({\n\t\t\t\t\ttotal: res.totalNum,\n\t\t\t\t\tmode: 'client',\n\t\t\t\t});\n\t\t\t\tthis.grid?.api.setGridOption('rowData', res.data || []);\n\t\t\t\tthis.ajustGridHeight();\n\t\t\t\tthis.handleSelections(0);\n\t\t\t});\n\t}\n\n\thandleClientTree(searchPrm: Search) {\n\t\tif (!this.toOptions().treeData) return;\n\t\tconst preloads: any[] = [];\n\t\tfor (let i = 1; i < this.toOptions().treeLevel!; i++) {\n\t\t\tpreloads.push(Array(i).fill('children').join('.'));\n\t\t}\n\t\tsearchPrm.preloads = preloads;\n\t}\n\n\tcellValueChanged(e: CellValueChangedEvent) {\n\t\tlet {\n\t\t\tcolDef: { field, headerName, cellEditor, cellEditorParams },\n\t\t\tnewValue,\n\t\t\toldValue,\n\t\t\trowIndex,\n\t\t\tdata: { id },\n\t\t} = e;\n\t\tconsole.log('e------', e);\n\t\tif (cellEditor == 'agRichSelectCellEditor' && cellEditorParams && cellEditorParams.multiSelect) {\n\t\t\tnewValue = newValue && newValue.length > 0 ? newValue.join(',') : '';\n\t\t\tthis.richMultMap[field!] = newValue;\n\t\t}\n\t\tif (!id || id === 0) {\n\t\t\tid === 0 && delete e.data.id;\n\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].set(rowIndex!, Object.assign({ ...e.data }, this.richMultMap));\n\t\t\tif (field == this.mainField) {\n\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].set(rowIndex! + field!, { newValue: newValue, id: 0, label: headerName });\n\t\t\t}\n\t\t} else if (id) {\n\t\t\tconst fieldstr = `${field}`;\n\t\t\tlet o: any;\n\t\t\tif (this.upsert()?.subsert[this.subIndex]['maptmp'].has(rowIndex!)) {\n\t\t\t\to = this.upsert()?.subsert[this.subIndex]['maptmp'].get(rowIndex!);\n\t\t\t\tObject.assign(o, { [fieldstr]: newValue });\n\t\t\t} else {\n\t\t\t\to = { id: id, [fieldstr]: newValue };\n\t\t\t}\n\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].set(rowIndex!, o);\n\t\t\tlet old = this.upsert()?.subsert[this.subIndex]['logtmp'].get(rowIndex! + field!);\n\t\t\tif (old) {\n\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].set(rowIndex! + field!, {\n\t\t\t\t\tnewValue: newValue,\n\t\t\t\t\toldValue: old.oldValue,\n\t\t\t\t\tid: id,\n\t\t\t\t\tlabel: headerName,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].set(rowIndex! + field!, {\n\t\t\t\t\tnewValue: newValue,\n\t\t\t\t\toldValue: oldValue,\n\t\t\t\t\tid: id,\n\t\t\t\t\tlabel: headerName,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tlet dt: any[] = [];\n\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].forEach((value: any, key: any) => {\n\t\t\tdt.push(value);\n\t\t});\n\t\tthis.upsert()['subsert'][this.subIndex]['subData'] = dt;\n\t\tthis.action.saveSignal.set(true);\n\t}\n\n\thandleAddedRows(addedRows: any[]) {\n\t\tlet headerName = '';\n\t\tthis.toOptions().columnDefs?.forEach((item: any) => {\n\t\t\tif (item.field == this.mainField) {\n\t\t\t\theaderName = item.headerName;\n\t\t\t}\n\t\t});\n\t\tif (this.addSort()) {\n\t\t\t// console.log('add-----',this.addSort())\n\t\t\t// let log = new Map()\n\t\t\tthis.selectData()!.forEach((item: any) => {\n\t\t\t\tconst rowData = this.grid.api.getRenderedNodes().map((node) => node.data);\n\t\t\t\tlet lastIndex = findLastIndex(rowData, (v: any) => v[this.addSort()!] == item[this.addSort()!], this);\n\t\t\t\tlastIndex = lastIndex == -1 ? rowData.length - 1 : lastIndex;\n\t\t\t\tconst result = this.grid.api.applyTransaction({ addIndex: lastIndex + 1, add: [item] });\n\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].forEach((value: any, key: any) => {\n\t\t\t\t\tlet index = key.match(/^\\d+/)[0];\n\t\t\t\t\tconsole.log('index----', index);\n\t\t\t\t\tconst insertIndex = lastIndex + 1;\n\t\t\t\t\tif (index == insertIndex) {\n\t\t\t\t\t\tconst replaceIndex = insertIndex + 1;\n\t\t\t\t\t\tlet newKey = key.replace(/^\\d+/, replaceIndex);\n\t\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].set(newKey, value);\n\t\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].delete(key);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tlet mapData = this.upsert()?.subsert[this.subIndex]['maptmp'].get(lastIndex + 1);\n\t\t\t\tif (mapData) {\n\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].delete(lastIndex + 1);\n\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].set(lastIndex + 2, mapData);\n\t\t\t\t}\n\t\t\t\tresult!.add.forEach((node: any) => {\n\t\t\t\t\t// console.log('node----',node)\n\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].set(node.rowIndex, node.data);\n\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].set(node.rowIndex! + this.mainField!, {\n\t\t\t\t\t\tnewValue: node.data[this.mainField],\n\t\t\t\t\t\tid: 0,\n\t\t\t\t\t\tlabel: headerName,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\t// console.log('lastIndex',lastIndex)\n\t\t\t});\n\t\t\tthis.grid.api.refreshCells({\n\t\t\t\tforce: true, // 强制刷新\n\t\t\t\tsuppressFlash: true, // 避免闪烁\n\t\t\t});\n\t\t\t// this.upsert()!.subsert[this.subIndex]['logtmp'] = log\n\t\t} else {\n\t\t\tconst result = this.grid.api.applyTransaction({ add: addedRows });\n\t\t\tresult!.add.forEach((node: any) => {\n\t\t\t\tconst rowIndex = this.grid.api.getRowNode(node.id)?.rowIndex;\n\t\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].set(rowIndex!, node.data);\n\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].set(rowIndex! + this.mainField!, {\n\t\t\t\t\tnewValue: node.data[this.mainField],\n\t\t\t\t\tid: 0,\n\t\t\t\t\tlabel: headerName,\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\tlet dt: any[] = [];\n\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].forEach((value: any, key: any) => {\n\t\t\tdt.push(value);\n\t\t});\n\t\t// console.log('upsert-----',this.upsert())\n\t\tthis.upsert()['subsert'][this.subIndex]['subData'] = dt;\n\t\tthis.ajustGridHeight();\n\t}\n\n\thandleDeletedRows(deletedRows: any[]) {\n\t\tconst removeIndexes = this.grid.api.getSelectedNodes().map((node) => node.rowIndex);\n\t\tremoveIndexes.forEach((rowIndex: any) => {\n\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].delete(rowIndex!);\n\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].delete(rowIndex! + this.mainField!);\n\t\t});\n\t\tlet dt: any[] = [];\n\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].forEach((value: any, key: any) => {\n\t\t\tdt.push(value);\n\t\t});\n\t\tthis.upsert()['subsert'][this.subIndex]['subData'] = dt;\n\t\tthis.grid.api.applyTransaction({ remove: deletedRows });\n\t\tthis.ajustGridHeight();\n\t}\n\n\tselectRowsDeleted(deletedRows: any[]) {\n\t\tlet headerName = '';\n\t\tthis.toOptions().columnDefs?.forEach((item: any) => {\n\t\t\tif (item.field == this.mainField) {\n\t\t\t\theaderName = item.headerName;\n\t\t\t}\n\t\t});\n\t\tconst result = this.grid.api.applyTransaction({ remove: deletedRows });\n\t\tresult?.remove.forEach((node) => {\n\t\t\t// console.log('node---',node.sourceRowIndex);\n\t\t\tlet key = node.sourceRowIndex + this.mainField!;\n\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].delete(key);\n\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].delete(node.sourceRowIndex);\n\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].forEach((value: any, key: any) => {\n\t\t\t\tif (!value.id && key > node.sourceRowIndex) {\n\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].delete(key);\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].forEach((value: any, key: any) => {\n\t\t\t\tlet index = key.match(/^\\d+/)[0];\n\t\t\t\tif (!value.id && index > node.sourceRowIndex) {\n\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].delete(key);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tthis.grid.api.forEachNode((node: any) => {\n\t\t\tconst rowIndex = node.rowIndex;\n\t\t\tif (!node.data.id) {\n\t\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].set(rowIndex!, node.data);\n\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].set(rowIndex! + this.mainField!, {\n\t\t\t\t\tnewValue: node.data[this.mainField],\n\t\t\t\t\tid: 0,\n\t\t\t\t\tlabel: headerName,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].forEach((value: any, key: any) => {\n\t\t\t\t\tif (value.id === node.data.id && key != rowIndex) {\n\t\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].delete(key);\n\t\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].set(rowIndex, value);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].forEach((value: any, key: any) => {\n\t\t\t\t\tif (value.id == node.data.id) {\n\t\t\t\t\t\tlet index = key.match(/^\\d+/)[0];\n\t\t\t\t\t\tif (index != rowIndex) {\n\t\t\t\t\t\t\tlet newKey = key.replace(/^\\d+/, rowIndex);\n\t\t\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].delete(key);\n\t\t\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].set(newKey, value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tlet dt: any[] = [];\n\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].forEach((value: any, key: any) => {\n\t\t\tdt.push(value);\n\t\t});\n\t\tthis.upsert()['subsert'][this.subIndex]['subData'] = dt;\n\t\tthis.ajustGridHeight();\n\t\t// console.log('result-----', this.upsert())\n\t}\n\n\tclear() {\n\t\tthis.grid?.api.setGridOption('rowData', []);\n\t\tthis.upsert()!.subsert[this.subIndex] = {\n\t\t\tsubModelName: this.toOptions().modelName,\n\t\t\tfk: this.toOptions().fk,\n\t\t\tsubData: [],\n\t\t\tmaptmp: new Map(),\n\t\t\tlogtmp: new Map(),\n\t\t};\n\t}\n\n\taddRow() {\n\t\tif (this.addType() == 'handle') {\n\t\t\tlet item = typeof this.toOptions().addDataCb == 'function' ? this.toOptions().addDataCb() : {};\n\t\t\tif (this.gridOptions().dragSort) {\n\t\t\t\tlet totalCount = this.grid.api.getDisplayedRowCount();\n\t\t\t\titem[this.gridOptions().dragSort!] = totalCount + 1;\n\t\t\t}\n\t\t\tthis.action.updateGridAction({type:'add',data: [item]})\n\t\t\tthis.grid.api.applyTransaction({ add: [item] });\n\t\t} else {\n\t\t\tthis.addEmit.emit();\n\t\t}\n\t\tthis.ajustGridHeight();\n\t}\n\n\tdelRows() {\n\t\tconst selectedNodes = this.grid.api.getSelectedNodes();\n\t\tconst selectedData = selectedNodes.map((node) => node.data) || [];\n\t\tlet ids = selectedData.map((data) => data.id).filter((v) => v) || [];\n\t\tif (ids.length > 0) {\n\t\t\tthis.deleteEmit.emit(ids);\n\t\t} else if (selectedData.length > 0 && ids.length == 0) {\n\t\t\tthis.handleDeletedRows(selectedData);\n\t\t\tthis.action.updateGridAction({type:'delete',data: selectedData})\n\t\t}\n\t\tthis.ajustGridHeight();\n\t}\n\n\tsetScrollHeight(height?: string) {\n\t\tif (window.innerWidth < 1024 && this.toOptions().mainField) {\n\t\t\tthis.renderer.removeStyle(this.containerRef.nativeElement, 'max-height');\n\t\t\treturn;\n\t\t}\n\t\theight = height || this.toOptions().scrollHeight;\n\t\tif (height) {\n\t\t\tthis.renderer.setStyle(this.containerRef.nativeElement, 'max-height', height);\n\t\t}\n\t}\n\n\tinitGridHeight() {\n\t\tthis.horizontalScrollBarObserver = new ResizeObserver((entries) => {\n\t\t\tentries.forEach((entry) => {\n\t\t\t\tthis.horizontalScrollBarHeight = entry.target.clientHeight;\n\t\t\t\tthis.ajustGridHeight();\n\t\t\t});\n\t\t});\n\t\tthis.horizontalScrollBarObserver.observe(this.gridRef.nativeElement.querySelector('.ag-body-horizontal-scroll'));\n\t\tthis.verticalScrollBarObserver = new ResizeObserver((entries) => {\n\t\t\tentries.forEach((entry) => {\n\t\t\t\tthis.verticalScrollBarWidth = entry.target.clientWidth;\n\t\t\t\tthis.ajustGridHeight();\n\t\t\t});\n\t\t});\n\t\tthis.verticalScrollBarObserver.observe(this.gridRef.nativeElement.querySelector('.ag-body-vertical-scroll'));\n\t\tthis.renderer.setStyle(this.gridRef.nativeElement, 'width', '100%');\n\t\tthis.setScrollHeight();\n\t}\n\n\tcalcGridMargin() {\n\t\tconst margin = this.showAct() && this.authLevel() >= 3 && (this.addType() != 'none' || this.showDelete()) ? 2 : 1;\n\t\tconst borderBottom = parseFloat(\n\t\t\twindow.getComputedStyle(this.gridRef.nativeElement.querySelector('.ag-root-wrapper')).getPropertyValue('border-bottom-width'),\n\t\t);\n\t\treturn Math.min(2, margin + borderBottom);\n\t}\n\n\tgetContainerHeight() {\n\t\tlet container = parseFloat(\n\t\t\twindow.getComputedStyle(this.gridRef.nativeElement.querySelector('.ag-center-cols-container')).getPropertyValue('height'),\n\t\t);\n\t\treturn container;\n\t}\n\n\tajustGridHeight() {\n\t\tlet container = this.getContainerHeight();\n\t\tlet headerHeight = this.gridOptions().headerHeight ?? 49;\n\t\tlet margin = this.calcGridMargin();\n\t\tlet total = container + margin + headerHeight;\n\t\tconst height = Math.max(total, headerHeight + 42 + margin);\n\t\tthis.ngZone.run(() => {\n\t\t\tthis.renderer.setStyle(this.gridRef.nativeElement, 'height', `${height + this.horizontalScrollBarHeight}px`);\n\t\t\tthis.ajustGridState();\n\t\t});\n\t}\n\n\tajustGridState() {\n\t\tthis.noRows = this.grid.api.getDisplayedRowCount() === 0;\n\t\tthis.noRows ? this.grid.api.showNoRowsOverlay() : this.grid.api.hideOverlay();\n\t\tthis.showHorizontal = this.actPos() == 'bottom' && (this.noRows || !!this.verticalScrollBarWidth);\n\t}\n\n\tcancelSelect() {\n\t\tthis.getGrid().api.deselectAll();\n\t\tthis.selectedRows.set([]);\n\t}\n\n\teditingFix() {\n\t\tdocument.addEventListener('click', (event: any) => {\n\t\t\tif (!this.grid?.api?.getEditingCells()?.length) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst gridElement: any = this.gridRef.nativeElement.querySelector('.ag-root-wrapper');\n\t\t\tif (!gridElement.contains(event.target)) {\n\t\t\t\tthis.grid.api.stopEditing();\n\t\t\t}\n\t\t});\n\t}\n\trowDragEnter(event: any) {\n\t\tconsole.log('event---', event);\n\t\tthis.dragBeforeIndex = event.overIndex;\n\t}\n\n\tonRowDragEnd(event: RowDragEndEvent) {\n\t\t// console.log('event----', event.node,event.overNode)\n\t\t// console.log('原始索引----', this.dragBeforeIndex)\n\t\t// console.log('拖拽之后索引----',event.overIndex)\n\t\tif (!this.gridOptions().dragSort) return;\n\t\tif (this.dragBeforeIndex == event.overIndex) return;\n\t\tlet col = event.api.getColumnDefs();\n\t\tlet colItem: any = col?.find((v: any) => v.field === this.gridOptions().dragSort!) || {};\n\t\t// console.log(\"rowData---\",this.rowData())\n\t\tlet map = new Map();\n\t\tlet logMap = new Map();\n\t\tthis.grid?.api.forEachNode((node, index) => {\n\t\t\tlet id = node.data.id;\n\t\t\tlet isMovingDown = event.overIndex > this.dragBeforeIndex;\n\t\t\tif (\n\t\t\t\t(isMovingDown && index >= this.dragBeforeIndex && index <= event.overIndex) ||\n\t\t\t\t(!isMovingDown && index <= this.dragBeforeIndex && index >= event.overIndex)\n\t\t\t) {\n\t\t\t\t// console.log('node----',node.data,event.overIndex)\n\t\t\t\tlet oldValue;\n\t\t\t\tif (index == event.overIndex) {\n\t\t\t\t\toldValue = this.dragBeforeIndex;\n\t\t\t\t} else {\n\t\t\t\t\toldValue = isMovingDown ? index + 1 : index - 1;\n\t\t\t\t}\n\t\t\t\t// console.log('oldIndex----',oldValue)\n\t\t\t\tif (!id) {\n\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].set(\n\t\t\t\t\t\tindex!,\n\t\t\t\t\t\tObject.assign(node.data, {\n\t\t\t\t\t\t\t[this.gridOptions().dragSort!]: index + 1,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tlet o: any;\n\t\t\t\t\tif (this.upsert()?.subsert[this.subIndex]['maptmp'].has(oldValue!)) {\n\t\t\t\t\t\to = this.upsert()?.subsert[this.subIndex]['maptmp'].get(oldValue!);\n\t\t\t\t\t\tObject.assign(o, { [this.gridOptions().dragSort!]: index + 1 });\n\t\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].delete(oldValue!);\n\t\t\t\t\t\tconsole.log('o----', JSON.parse(JSON.stringify(o)));\n\t\t\t\t\t} else {\n\t\t\t\t\t\to = { id: id, [this.gridOptions().dragSort!]: index + 1 };\n\t\t\t\t\t}\n\t\t\t\t\tmap.set(index!, o);\n\t\t\t\t}\n\t\t\t\tlet old = this.upsert()?.subsert[this.subIndex]['logtmp'].get(oldValue! + this.gridOptions().dragSort!);\n\t\t\t\tif (old) {\n\t\t\t\t\tlogMap.set(index! + this.gridOptions().dragSort!, {\n\t\t\t\t\t\tnewValue: index + 1,\n\t\t\t\t\t\toldValue: old.oldValue,\n\t\t\t\t\t\tid: id,\n\t\t\t\t\t\tlabel: colItem['headerName'] || '排序',\n\t\t\t\t\t});\n\t\t\t\t\tthis.upsert()?.subsert[this.subIndex]['logtmp'].delete(oldValue! + this.gridOptions().dragSort!);\n\t\t\t\t} else {\n\t\t\t\t\tlogMap.set(index! + this.gridOptions().dragSort!!, {\n\t\t\t\t\t\tnewValue: index + 1,\n\t\t\t\t\t\toldValue: oldValue + 1,\n\t\t\t\t\t\tid: id,\n\t\t\t\t\t\tlabel: colItem['headerName'] || '排序',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tlet dt: any = [];\n\t\tif (this.upsert()) {\n\t\t\tthis.upsert()!.subsert[this.subIndex]['maptmp'] = new Map([...this.upsert()!.subsert[this.subIndex]['maptmp'!], ...map]);\n\t\t\tthis.upsert()!.subsert[this.subIndex]['logtmp'] = new Map([...this.upsert()!.subsert[this.subIndex]['logtmp'], ...logMap]);\n\t\t\tthis.upsert()?.subsert[this.subIndex]['maptmp'].forEach((value: any, key: any) => {\n\t\t\t\tdt.push(value);\n\t\t\t});\n\t\t\tthis.upsert()['subsert'][this.subIndex]['subData'] = dt;\n\t\t}\n\n\t\tconsole.log('dragUpsert----', this.upsert());\n\t}\n// 时间范围添加时分秒\n\tisRange(columnFilter:ColumnFilter[]){\n\t\tconst isEixst = columnFilter.some((v:any) => v.type == 'inRange')\n\t\tif(isEixst){\n\t\t\tlet cols = JSON.parse(JSON.stringify(columnFilter))\n\t\t\tcols.forEach((item:ColumnFilter) => {\n\t\t\t\tif(item.type == 'inRange'){\n\t\t\t\t\titem.from = `${item.from} 00:00:00`\n\t\t\t\t\titem.to = `${item.to} 23:59:59`\n\t\t\t\t}\n\t\t\t})\n\t\t\treturn cols\n\t\t}\n\t\treturn columnFilter\n\t}\n}\n","@if (initGrid) {\n\t<div\n\t\t#gridContainer\n\t\t[class]=\"\n\t\t\t(toOptions().treeDataField ? 'tree-grid ' : '') +\n\t\t\t'grid-container w-full flex justify-between ' +\n\t\t\t(actPos() == 'bottom' ? 'flex-col' : 'flex-col-reverse')\n\t\t\">\n\t\t<ag-grid-angular\n\t\t\t[theme]=\"myTheme()\"\n\t\t\t[columnDefs]=\"columnDefs\"\n\t\t\t[gridOptions]=\"toOptions()\"\n\t\t\t[localeText]=\"localeText\"\n\t\t\t[components]=\"components\"\n\t\t\t[suppressDragLeaveHidesColumns]=\"true\"\n\t\t\t[undoRedoCellEditing]=\"toOptions().undoRedoCellEditing\"\n\t\t\t[undoRedoCellEditingLimit]=\"toOptions().undoRedoCellEditingLimit\"\n\t\t\t(cellValueChanged)=\"cellValueChanged($event)\"\n\t\t\t(selectionChanged)=\"onSelectionChanged($event)\"\n\t\t\t(rowGroupOpened)=\"onRowGroupOpened()\"\n\t\t\t(gridReady)=\"onGridReady($event)\"\n\t\t\t(rowDragEnd)=\"onRowDragEnd($event)\"\n\t\t\t(rowDragEnter)=\"rowDragEnter($event)\" />\n\t\t@if (showAct() && authLevel() >= 3 && (addType() != 'none' || showDelete())) {\n\t\t\t@if (showHorizontal) {\n\t\t\t\t<div class=\"w-full border-t border-gray-300\"></div>\n\t\t\t}\n\t\t\t<div class=\"flex justify-end py-[5px] pr-[8px]\">\n\t\t\t\t@if (addType() != 'none') {\n\t\t\t\t\t<p-button\n\t\t\t\t\t\ticon=\"pi pi-plus\"\n\t\t\t\t\t\t[text]=\"true\"\n\t\t\t\t\t\tseverity=\"success\"\n\t\t\t\t\t\t[disabled]=\"gridDisable()\"\n\t\t\t\t\t\t(onClick)=\"addRow()\" />\n\t\t\t\t}\n\t\t\t\t@if (showDelete()) {\n\t\t\t\t\t<p-button\n\t\t\t\t\t\ticon=\"pi pi-trash\"\n\t\t\t\t\t\t[text]=\"true\"\n\t\t\t\t\t\tseverity=\"danger\"\n\t\t\t\t\t\t[disabled]=\"gridDisable()\"\n\t\t\t\t\t\t(onClick)=\"delRows()\" />\n\t\t\t\t}\n\t\t\t</div>\n\t\t}\n\t</div>\n}\n","import { Component, input, effect, untracked } from '@angular/core';\nimport { SearchItem, SearchItemOption } from '../search/search.component';\nimport { ActionService } from '../../service/action.service';\n\n@Component({\n\tselector: 'pop-list',\n\tstandalone: true,\n\timports: [],\n\ttemplateUrl: './pop-list.component.html',\n\tstyleUrl: './pop-list.component.scss',\n})\nexport class PopListComponent {\n\titem = input<SearchItem>();\n\tmodelName = input<string>();\n\n\tconstructor(private action: ActionService) {\n\t\teffect(() => {\n\t\t\tif (!this.action.searchMonitor(untracked(() => this.modelName()))) return;\n\t\t\tconst fiter = this.action\n\t\t\t\t.getSearch(untracked(() => this.modelName()))\n\t\t\t\t?.columnFilters?.filter((column: any) => column.columnField == this.item()?.field)?.[0]?.fiter;\n\t\t\tthis.item()?.options?.forEach((option: any) => {\n\t\t\t\toption.checked = false;\n\t\t\t\tif (fiter?.includes(option.key)) {\n\t\t\t\t\toption.checked = true;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tonItemOptionClick(option: SearchItemOption, item: SearchItem, event: Event) {\n\t\toption.checked = !option.checked;\n\t\tthis.item()!.value = this.item()\n\t\t\t?.options?.filter((op) => op.checked)\n\t\t\t.map((node) => node.key);\n\t\tthis.item()!.operator = 'in';\n\t\tthis.action.setSearchItem(this.item()!);\n\t}\n}\n","<div class=\"s-pop-panel-item\">\n\t@for (option of item()!.options; track option) {\n\t<div\n\t\tclass=\"s-pop-panel-item-option\"\n\t\t(click)=\"onItemOptionClick(option, item()!, $event)\">\n\t\t<span [class]=\"'s-check iconfont ' + (option.checked ? 'icon-check s-pop-panel-item-selected-option' : '')\"></span>{{ option.label }}\n\t</div>\n\t}\n</div>\n","import { Component, effect, input, untracked } from '@angular/core';\nimport { ActionService } from '../../service/action.service';\nimport { SearchItem, SearchItemOption } from '../search/search.component';\nimport { Popover } from 'primeng/popover';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n\tselector: 'pop-select',\n\tstandalone: true,\n\timports: [CheckboxModule, FormsModule, Popover],\n\ttemplateUrl: './pop-select.component.html',\n\tstyleUrl: './pop-select.component.scss',\n})\nexport class PopSelectComponent {\n\titem = input<SearchItem>();\n\tmodelName = input<string>();\n\tisActive: boolean = false;\n\n\tconstructor(private action: ActionService) {\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tif (!this.action.searchMonitor(untracked(() => this.modelName()))) return;\n\t\t\t\tconst search = this.action.getSearch(untracked(() => this.modelName()));\n\t\t\t\tif (!search) return;\n\t\t\t\tif (!this.item()?.cascade) return;\n\t\t\t\tconst columnFilter = search?.columnFilters?.find((col) => col.columnField == this.item()?.cascadeKey);\n\t\t\t\tif (!columnFilter) return;\n\n\t\t\t\tthis.item()\n\t\t\t\t\t?.cascadeFunc?.(columnFilter.fiter)\n\t\t\t\t\t.subscribe((options: any[]) => {\n\t\t\t\t\t\tthis.item()!.options = options;\n\t\t\t\t\t});\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t\teffect(() => {\n\t\t\tconst searchClear = this.action.getSearchClear();\n\t\t\tif (searchClear != this.item()?.field) return;\n\t\t\tthis.item()?.options?.forEach((option) => {\n\t\t\t\toption.checked = false;\n\t\t\t});\n\t\t});\n\t}\n\n\tonOptionClick(option: SearchItemOption, item: SearchItem, selectOp: any) {\n\t\tif (this.item()?.multiple) {\n\t\t\tthis.onMultipleOptionClick(option);\n\t\t} else {\n\t\t\tthis.onSingleOptionClick(option, item, selectOp);\n\t\t}\n\t}\n\n\tonSingleOptionClick(option: SearchItemOption, item: SearchItem, selectOp: any) {\n\t\tthis.item()!.value = option.key;\n\t\tthis.item()!.operator = 'equals';\n\t\tthis.action.setSearchItem(this.item()!);\n\t\tselectOp.hide();\n\t}\n\n\tonMultipleOptionClick(option: SearchItemOption) {\n\t\toption.checked = !option.checked;\n\t\tthis.item()!.value = this.item()\n\t\t\t?.options?.filter((op) => op.checked)\n\t\t\t.map((node) => node.key);\n\t\tthis.item()!.operator = 'in';\n\t\tthis.action.setSearchItem(this.item()!);\n\t}\n}\n","<div class=\"s-pop-select-container\">\n\t<div\n\t\tclass=\"s-pop-select-label\"\n\t\t(click)=\"selectOp.toggle($event)\">\n\t\t<div>{{ item()?.label }}</div>\n\t\t<span class=\"s-pop-select-label-icon pi pi-chevron-down\"></span>\n\t</div>\n</div>\n<p-popover #selectOp styleClass=\"s-pop-select-popover\">\n\t<div class=\"w-[250px] s-pop-select-content\">\n\t\t@for (option of item()?.options; track option) {\n\t\t\t<div\n\t\t\t\tstyle=\"user-select: none\"\n\t\t\t\tclass=\"w-full s-pop-select-panel-item-option flex items-center\"\n\t\t\t\t(click)=\"onOptionClick(option, item()!, selectOp)\">\n\t\t\t\t@if (item()?.multiple) {\n\t\t\t\t\t<span class=\"pb-1 mr-2\">\n\t\t\t\t\t\t<p-checkbox\n\t\t\t\t\t\t\t[(ngModel)]=\"option.checked\"\n\t\t\t\t\t\t\t[binary]=\"true\" />\n\t\t\t\t\t</span>\n\t\t\t\t}\n\t\t\t\t<span style=\"user-select: none\">{{ option.label }}</span>\n\t\t\t</div>\n\t\t}\n\t</div>\n</p-popover>\n","import { Component, effect, input, untracked, Renderer2, ViewChild, ElementRef } from '@angular/core';\nimport { ActionService } from '../../service/action.service';\nimport { SearchItem, SearchItemOption } from '../search/search.component';\nimport { TreeModule } from 'primeng/tree';\nimport { Popover } from 'primeng/popover';\n\n@Component({\n\tselector: 'pop-tree',\n\tstandalone: true,\n\timports: [TreeModule, Popover],\n\ttemplateUrl: './pop-tree.component.html',\n\tstyleUrl: './pop-tree.component.scss',\n})\nexport class PopTreeComponent {\n\t@ViewChild(Popover) treeOp!: Popover;\n\t@ViewChild('treeLabel', { static: false }) treeLabelRef!: ElementRef;\n\titem = input<SearchItem>();\n\tmodelName = input<string>();\n\tisActive: boolean = false;\n\tnodes: any = {};\n\n\tdocumentClickListener!: () => void;\n\n\tconstructor(\n\t\tprivate action: ActionService,\n\t\tprivate renderer: Renderer2,\n\t) {}\n\n\tngAfterViewInit() {\n\t\tthis.documentClickListener = this.renderer.listen('document', 'click', (event) => {\n\t\t\tif (this.treeLabelRef.nativeElement.contains(event.target)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!this.treeOp.el.nativeElement.contains(event.target)) {\n\t\t\t\tthis.treeOp.hide();\n\t\t\t}\n\t\t});\n\t}\n\n\tngOnDestroy() {\n\t\tif (this.documentClickListener) {\n\t\t\tthis.documentClickListener();\n\t\t}\n\t}\n\n\tonNodeSelect(event: any) {\n\t\tthis.item()!.value = event.node.key;\n\t\tthis.item()!.operator = 'equals';\n\t\tthis.action.setSearchItem(this.item()!);\n\t\tthis.treeOp.hide();\n\t}\n}\n","<div\n\t#treeLabel\n\tclass=\"s-pop-tree-container\">\n\t<div\n\t\tclass=\"s-pop-tree-label\"\n\t\t(click)=\"treeOp.toggle($event)\">\n\t\t<div>{{ item()?.label }}</div>\n\t\t<span class=\"s-pop-tree-label-icon pi pi-chevron-down\"></span>\n\t</div>\n</div>\n<p-popover styleClass=\"s-pop-tree-popover\">\n\t<div class=\"w-[215px] s-pop-tree-content\">\n\t\t<p-tree\n\t\t\t[scrollHeight]=\"'300px'\"\n\t\t\t[value]=\"item()?.options\"\n\t\t\tselectionMode=\"single\"\n\t\t\t[(selection)]=\"nodes\"\n\t\t\t(onNodeSelect)=\"onNodeSelect($event)\"></p-tree>\n\t</div>\n</p-popover>\n","export const operatorList = [\n\t{ operator: 'equals', short: 'eq', label: '=' },\n\t{ operator: 'notEqual', short: 'ne', label: '!=' },\n\t{ operator: 'lessThan', short: 'lt', label: '<' },\n\t{ operator: 'lessThanOrEqual', short: 'le', label: '<=' },\n\t{ operator: 'greaterThan', short: 'gt', label: '>' },\n\t{ operator: 'greaterThanOrEqual', short: 'ge', label: '>=' },\n\t{ operator: 'set', short: 'in', label: 'in', i18nKey: 'search.set' },\n\t{ operator: 'contains', short: 'ct', label: 'contains', i18nKey: 'search.contains' },\n\t{ operator: 'notContains', short: 'nc', label: 'not contains', i18nKey: 'search.notContains' },\n\t{ operator: 'startsWith', short: 'sw', label: 'starts with', i18nKey: 'search.startsWith' },\n\t{ operator: 'endsWith', short: 'ew', label: 'ends with', i18nKey: 'search.endsWith' },\n\t{ operator: 'inRange', short: 'ir', label: 'in range', i18nKey: 'search.inRange' },\n];\nexport const dateOperList = [\n\t{ operator: 'inRange', short: 'ir', label: 'in range', i18nKey: 'search.inRange' },\n\t{ operator: 'equals', short: 'eq', label: '=' },\n\t{ operator: 'notEqual', short: 'ne', label: '!=' },\n\t{ operator: 'lessThan', short: 'lt', label: '<' },\n\t{ operator: 'lessThanOrEqual', short: 'le', label: '<=' },\n\t{ operator: 'greaterThan', short: 'gt', label: '>' },\n\t{ operator: 'greaterThanOrEqual', short: 'ge', label: '>=' },\n];\nexport const textOperList = [\n\t{ operator: 'equals', short: 'eq', label: '=' },\n\t{ operator: 'contains', short: 'ct', label: 'contains', i18nKey: 'search.contains' },\n\t{ operator: 'notContains', short: 'nc', label: 'not contains', i18nKey: 'search.notContains' },\n\t{ operator: 'startsWith', short: 'sw', label: 'starts with', i18nKey: 'search.startsWith' },\n\t{ operator: 'endsWith', short: 'ew', label: 'ends with', i18nKey: 'search.endsWith' },\n];\nexport const numberOperListNoRange = [\n\t{ operator: 'equals', short: 'eq', label: '=' },\n\t{ operator: 'notEqual', short: 'ne', label: '!=' },\n\t{ operator: 'lessThan', short: 'lt', label: '<' },\n\t{ operator: 'lessThanOrEqual', short: 'le', label: '<=' },\n\t{ operator: 'greaterThan', short: 'gt', label: '>' },\n\t{ operator: 'greaterThanOrEqual', short: 'ge', label: '>=' },\n];\nexport const numberOperList = [\n\t{ operator: 'equals', short: 'eq', label: '=' },\n\t{ operator: 'notEqual', short: 'ne', label: '!=' },\n\t{ operator: 'lessThan', short: 'lt', label: '<' },\n\t{ operator: 'lessThanOrEqual', short: 'le', label: '<=' },\n\t{ operator: 'greaterThan', short: 'gt', label: '>' },\n\t{ operator: 'greaterThanOrEqual', short: 'ge', label: '>=' },\n\t{ operator: 'inRange', short: 'ir', label: 'in range', i18nKey: 'search.inRange' },\n];\n","import { SearchItem } from './search/search.component';\nimport { Search, ColumnFilter } from '../am/am.component';\nimport { I18nService } from '../service/i18n.service';\nconst _searchUitls = {\n\tflattenTree: (nodes: any[]): any[] => {\n\t\tlet result: any[] = [];\n\t\tnodes?.forEach((node) => {\n\t\t\tresult.push(node);\n\n\t\t\tif (node.children && node.children.length > 0) {\n\t\t\t\tresult = result.concat(_searchUitls.flattenTree(node.children));\n\t\t\t}\n\t\t});\n\t\treturn result;\n\t},\n\ttransferFilter: (item: SearchItem): ColumnFilter | undefined => {\n\t\tif (item.filterType == 'date') {\n\t\t\treturn _searchUitls.transferDate(item);\n\t\t} else if (item.filterType == 'number') {\n\t\t\treturn _searchUitls.transferNumber(item);\n\t\t}\n\t\treturn {\n\t\t\tcolumnField: item.field,\n\t\t\ttype: item.operator || 'contains',\n\t\t\tfiter: item.value,\n\t\t};\n\t},\n\ttransferNumber: (item: SearchItem): ColumnFilter | undefined => {\n\t\tif (item.operator == 'inRange') {\n\t\t\treturn {\n\t\t\t\tcolumnField: item.field,\n\t\t\t\ttype: item.operator,\n\t\t\t\tfrom: item.from,\n\t\t\t\tto: item.to,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tcolumnField: item.field,\n\t\t\ttype: item.operator,\n\t\t\tfiter: item.value,\n\t\t};\n\t},\n\ttransferDate: (item: SearchItem): ColumnFilter | undefined => {\n\t\tif (item.operator == 'inRange') {\n\t\t\treturn {\n\t\t\t\tcolumnField: item.field,\n\t\t\t\ttype: item.operator,\n\t\t\t\tfrom: item.from,\n\t\t\t\tto: item.to,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tcolumnField: item.field,\n\t\t\ttype: item.operator,\n\t\t\tfiter: item.value,\n\t\t};\n\t},\n\tconcatFilter: (search: Search = { columnFilters: [], groups: [] }, filter: ColumnFilter): Search => {\n\t\tsearch.columnFilters = search.columnFilters?.filter((fil) => filter.columnField != fil.columnField);\n\t\tif (!filter) {\n\t\t\treturn search;\n\t\t}\n\t\tif (filter.type == 'in' && !filter.fiter.length) {\n\t\t\treturn search;\n\t\t}\n\t\tsearch.columnFilters?.push(filter);\n\t\treturn search;\n\t},\n\tcascadeColumnFilters(searchClear: string, columnFilters: ColumnFilter[], searchItems: SearchItem[]): ColumnFilter[] {\n\t\tconst cascadeClearList: string[] = [searchClear];\n\t\tfor (const columnFilter of columnFilters) {\n\t\t\tfor (const searchItem of searchItems) {\n\t\t\t\tif (searchItem.field == columnFilter.columnField && searchItem.cascade && searchItem.cascadeKey == searchClear) {\n\t\t\t\t\tcascadeClearList.push(columnFilter.columnField!);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn columnFilters?.filter((columnFilter) => !cascadeClearList.includes(columnFilter.columnField!));\n\t},\n\textractSearchItems(columnDefs: any, i18n: I18nService, searchItems: SearchItem[] = []): SearchItem[] {\n\t\tcolumnDefs?.forEach((col: any) => {\n\t\t\tif (col.children) {\n\t\t\t\tthis.extractSearchItems(col.children, i18n, searchItems);\n\t\t\t} else {\n\t\t\t\tif (!col.search) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet label;\n\t\t\t\tif (col.hasOwnProperty('i18nKey')) {\n\t\t\t\t\tlabel = i18n.fanyi(col.i18nKey);\n\t\t\t\t} else {\n\t\t\t\t\tlabel = col.headerName || col.field;\n\t\t\t\t}\n\t\t\t\tlet searchItem: SearchItem = { field: col.field, label, filterType: col.searchType, filter: true };\n\t\t\t\tif (col.searchType == 'date') {\n\t\t\t\t\tsearchItem.format = col.searchFormat ?? 'yy-mm-dd';\n\t\t\t\t} else if (col.searchType == 'select') {\n\t\t\t\t\tif (col.cascade) {\n\t\t\t\t\t\tsearchItem.cascade = col.cascade;\n\t\t\t\t\t\tsearchItem.cascadeKey = col.cascadeKey;\n\t\t\t\t\t\tsearchItem.cascadeFunc = col.cascadeFunc;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (col.searchOptions) {\n\t\t\t\t\tcol.searchOptions.subscribe((options: any) => {\n\t\t\t\t\t\tsearchItem.options = JSON.parse(JSON.stringify(options));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (col.searchGroup) {\n\t\t\t\t\tsearchItem.group = col.searchGroup;\n\t\t\t\t}\n\t\t\t\tif (col.multiple) {\n\t\t\t\t\tsearchItem.multiple = col.multiple;\n\t\t\t\t}\n\t\t\t\tsearchItems.push(searchItem);\n\t\t\t}\n\t\t});\n\t\treturn searchItems;\n\t},\n\ttranslate(operatorList: any[], i18n: I18nService) {\n\t\treturn operatorList.map((operator) => {\n\t\t\treturn {\n\t\t\t\t...operator,\n\t\t\t\tlabel: operator.i18nKey ? i18n.fanyi(operator.i18nKey) : operator.label,\n\t\t\t};\n\t\t});\n\t},\n};\nexport const searchUtils = {\n\tflattenTree: _searchUitls.flattenTree,\n\ttransferFilter: _searchUitls.transferFilter,\n\tconcatFilter: _searchUitls.concatFilter,\n\textractSearchItems: _searchUitls.extractSearchItems,\n\tcascadeColumnFilters: _searchUitls.cascadeColumnFilters,\n\ttranslate: _searchUitls.translate,\n};\n","import { Component, input, effect, untracked, computed } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SearchItem } from '../search/search.component';\nimport { dateOperList } from '../mock-data';\nimport { Select } from 'primeng/select';\nimport { DatePicker } from 'primeng/datepicker';\nimport { DatePipe } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ActionService } from '../../service/action.service';\nimport { searchUtils } from '../search-utils';\nimport { I18nService } from '../../service/i18n.service';\n@Component({\n\tselector: 'pop-date',\n\tstandalone: true,\n\tproviders: [DatePipe],\n\timports: [FormsModule, Select, DatePicker, TranslatePipe],\n\ttemplateUrl: './pop-date.component.html',\n\tstyleUrls: ['./pop-date.component.scss'],\n})\nexport class PopDateComponent {\n\titem = input<SearchItem>({});\n\tview = computed(() => {\n\t\tconst format = this.item().format?.replace(/m/g, 'M').replace(/y/g, 'yy');\n\t\tif (!format?.includes('MM')) {\n\t\t\treturn 'year';\n\t\t}\n\t\tif (!format?.includes('dd')) {\n\t\t\treturn 'month';\n\t\t}\n\t\treturn 'date';\n\t});\n\tmodelName = input<string>();\n\tisActive: boolean = false;\n\tvalue: any;\n\tselectionMode: any = 'single';\n\tdateOperList = searchUtils.translate(dateOperList, this.i18n);\n\tconstructor(\n\t\tprivate datePipe: DatePipe,\n\t\tprivate action: ActionService,\n\t\tprivate i18n: I18nService,\n\t) {\n\t\teffect(() => {\n\t\t\tif (!this.action.searchMonitor(untracked(() => this.modelName()))) return;\n\t\t\tconst search = this.action\n\t\t\t\t.getSearch(untracked(() => this.modelName()))\n\t\t\t\t?.columnFilters?.filter((column) => column.columnField == this.item()?.field)?.[0];\n\t\t\tif (!search) {\n\t\t\t\tthis.item().from = undefined;\n\t\t\t\tthis.item().to = undefined;\n\t\t\t\tthis.item().value = undefined;\n\t\t\t\tthis.item()!.operator = undefined;\n\t\t\t\tthis.selectionMode = 'single';\n\t\t\t\tthis.value = undefined;\n\t\t\t} else {\n\t\t\t\tthis.isActive = true;\n\t\t\t\tif (search.type == 'inRange') {\n\t\t\t\t\tthis.item().from = search.from as any;\n\t\t\t\t\tthis.item().to = search.to as any;\n\t\t\t\t\tthis.selectionMode = 'range';\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis.item()!.operator = search.type;\n\t\t\t\t\t\tthis.value = [\n\t\t\t\t\t\t\tnew Date(this.dateFormat(search.from, this.item().format)),\n\t\t\t\t\t\t\tnew Date(this.dateFormat(search.to, this.item().format)),\n\t\t\t\t\t\t];\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthis.item().value = search.fiter;\n\t\t\t\t\tthis.selectionMode = 'single';\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis.item()!.operator = search.type;\n\t\t\t\t\t\tthis.value = new Date(this.dateFormat(search.fiter, this.item().format));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tonLabelClick(event: MouseEvent) {\n\t\tthis.isActive = !this.isActive;\n\t\tif (window.getSelection) {\n\t\t\twindow.getSelection()!.removeAllRanges();\n\t\t} else if ((document as any).selection) {\n\t\t\t(document as any).selection.empty();\n\t\t}\n\t}\n\n\tonOperatorChange(event: any) {\n\t\tif (!event) {\n\t\t\treturn;\n\t\t}\n\t\tthis.item()!.value = undefined;\n\t\tthis.value = undefined;\n\t\tthis.selectionMode = event.value == 'inRange' ? 'range' : 'single';\n\t}\n\n\tonDateChange(event: any) {\n\t\tif (this.selectionMode == 'range' && event[1]) {\n\t\t\tthis.item()!.from = this.dateFormat(event[0], this.item().format);\n\t\t\tthis.item()!.to = this.dateFormat(event[1], this.item().format);\n\t\t\tthis.action.setSearchItem(this.item());\n\t\t} else if (this.selectionMode == 'single') {\n\t\t\tthis.item()!.value = this.dateFormat(event, this.item().format);\n\t\t\tthis.action.setSearchItem(this.item());\n\t\t}\n\t}\n\n\tdateFormat(time: any, format: string | undefined) {\n\t\treturn this.datePipe.transform(time, format?.replace(/m/g, 'M').replace(/y/g, 'yy')) || '';\n\t}\n}\n","<div class=\"s-pop-date-container\">\n\t<div\n\t\tclass=\"s-pop-date-label\"\n\t\t(click)=\"onLabelClick($event)\">\n\t\t<div>{{ item()!.label }}</div>\n\t\t<span [class]=\"'s-pop-date-label-icon pi pi-chevron-' + (isActive ? 'up' : 'down')\"></span>\n\t</div>\n\t<div [class]=\"'s-pop-date-panel s-pop-date-panel-' + (isActive ? 'show' : 'hide')\">\n\t\t<div class=\"s-pop-date-range flex flex-row flex-nowrap items-center\">\n\t\t\t<div class=\"flex-none w-10\">\n\t\t\t\t<label>{{ 'search.oper' | translate }}</label>\n\t\t\t</div>\n\t\t\t<div class=\"grow\">\n\t\t\t\t<p-select\n\t\t\t\t\tpanelStyleClass=\"s-pop-date-select-panel\"\n\t\t\t\t\t[(ngModel)]=\"item().operator\"\n\t\t\t\t\t(onChange)=\"onOperatorChange($event)\"\n\t\t\t\t\tappendTo=\"body\"\n\t\t\t\t\t[options]=\"dateOperList\"\n\t\t\t\t\toptionLabel=\"label\"\n\t\t\t\t\toptionValue=\"operator\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tfluid />\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"s-pop-date-picker flex flex-row flex-nowrap items-center\">\n\t\t\t<div class=\"flex-none w-10\">\n\t\t\t\t<label>{{ 'search.value' | translate }}</label>\n\t\t\t</div>\n\t\t\t<div class=\"grow\">\n\t\t\t\t<p-datepicker\n\t\t\t\t\tpanelStyleClass=\"s-pop-date-datepicker-panel\"\n\t\t\t\t\t[(ngModel)]=\"value\"\n\t\t\t\t\t(ngModelChange)=\"onDateChange($event)\"\n\t\t\t\t\tappendTo=\"body\"\n\t\t\t\t\t[iconDisplay]=\"'input'\"\n\t\t\t\t\t[selectionMode]=\"selectionMode\"\n\t\t\t\t\t[showIcon]=\"true\"\n\t\t\t\t\t[disabled]=\"!item().operator\"\n\t\t\t\t\t[readonlyInput]=\"true\"\n\t\t\t\t\t[view]=\"view()\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t[dateFormat]=\"item().format\"\n\t\t\t\t\tfluid\n\t\t\t\t\tinputId=\"icondisplay\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n","import { Component, input, effect } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { Select } from 'primeng/select';\nimport { SearchItem } from '../search/search.component';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { InputNumber } from 'primeng/inputnumber';\nimport { ActionService } from '../../service/action.service';\nimport { DatePicker } from 'primeng/datepicker';\nimport { DatePipe } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { operatorList, dateOperList, textOperList, numberOperList } from '../mock-data';\nimport { I18nService } from '../../service/i18n.service';\nimport { searchUtils } from '../search-utils'\n\n@Component({\n\tselector: 'pop-self',\n\tstandalone: true,\n\tproviders: [DatePipe],\n\timports: [FormsModule, Select, InputTextModule, InputNumber, DatePicker, TranslatePipe],\n\ttemplateUrl: './pop-self.component.html',\n\tstyleUrls: ['./pop-self.component.scss']\n})\nexport class PopSelfComponent {\n\tsearchItems = input<SearchItem[]>();\n\tsearchItem: SearchItem = {};\n\tfieldList: any[] = [];\n\toperatorList: any[] = [];\n\tself: any = {};\n\tisActive = false;\n\tview: any = 'date';\n\n\tconstructor(\n\t\tprivate datePipe: DatePipe,\n\t\tprivate action: ActionService,\n\t\tprivate i18n: I18nService,\n\t) {\n\t\teffect(() => {\n\t\t\tthis.fieldList =\n\t\t\t\tthis.searchItems()\n\t\t\t\t\t?.filter((searchItem) => searchItem.filterType == 'number' || searchItem.filterType == 'text' || searchItem.filterType == 'date')\n\t\t\t\t\t?.map((searchItem) => ({ code: searchItem.field, label: searchItem.label })) || [];\n\t\t\tthis.self.field = this.fieldList.length && this.fieldList[0].code;\n\t\t\tthis.onFieldChange(this.self.field);\n\t\t});\n\t}\n\n\tonLabelClick(event: MouseEvent) {\n\t\tthis.isActive = !this.isActive;\n\t\tif (window.getSelection) {\n\t\t\twindow.getSelection()!.removeAllRanges();\n\t\t} else if ((document as any).selection) {\n\t\t\t(document as any).selection.empty();\n\t\t}\n\t}\n\n\tonFieldChange(event: any) {\n\t\tthis.searchItem = this.searchItems()?.filter((searchItem) => searchItem.field == event)[0] || {};\n\t\tthis.searchItem.filterType == 'date' && this.handleView();\n\t\tthis.operatorList = this.getOperatorList();\n\t\tthis.handleDefaultOperator();\n\t}\n\n\tonOperatorChange(event: any) {\n\t\tif (this.searchItem.filterType == 'date') {\n\t\t\tthis.self.date = undefined;\n\t\t\tthis.self.selectionMode = event == 'inRange' ? 'range' : 'single';\n\t\t}\n\t}\n\n\tgetOperatorList() {\n\t\tlet result = operatorList;\n\t\tif (this.searchItem.filterType == 'date') {\n\t\t\tresult = dateOperList;\n\t\t} else if (this.searchItem.filterType == 'text') {\n\t\t\tresult = textOperList;\n\t\t}\n\t\tif (this.searchItem.filterType == 'number') {\n\t\t\tresult = numberOperList;\n\t\t}\n\t\treturn searchUtils.translate(result, this.i18n);\n\t}\n\n\thandleDefaultOperator() {\n\t\tif (this.searchItem.filterType == 'date') {\n\t\t\tthis.self.operator = 'inRange';\n\t\t} else if (this.searchItem.filterType == 'text') {\n\t\t\tthis.self.operator = 'contains';\n\t\t} else if (this.searchItem.filterType == 'number') {\n\t\t\tthis.self.operator = 'equals';\n\t\t}\n\t}\n\n\tonReset() {\n\t\tthis.self = {};\n\t\tthis.self.field = this.fieldList.length && this.fieldList[0].code;\n\t\tthis.onFieldChange(this.self.field);\n\t}\n\n\tonOk() {\n\t\tif (this.searchItem.filterType == 'text') {\n\t\t\tthis.searchItem.value = this.self.text;\n\t\t} else if (this.searchItem.filterType == 'number') {\n\t\t\tif (this.self.operator == 'inRange') {\n\t\t\t\tthis.searchItem.from = this.self.min;\n\t\t\t\tthis.searchItem.to = this.self.max;\n\t\t\t} else {\n\t\t\t\tthis.searchItem.value = this.self.num;\n\t\t\t}\n\t\t} else if (this.searchItem.filterType == 'date') {\n\t\t\tif (this.self.operator == 'inRange') {\n\t\t\t\tthis.searchItem.from = this.dateFormat(this.self.date[0], this.searchItem.format);\n\t\t\t\tthis.searchItem.to = this.dateFormat(this.self.date[1], this.searchItem.format);\n\t\t\t} else {\n\t\t\t\tthis.searchItem.value = this.dateFormat(this.self.date, this.searchItem.format);\n\t\t\t}\n\t\t}\n\t\tif(!this.searchItem.value && !this.searchItem.from && !this.searchItem.to){\n\t\t\treturn \n\t\t}\n\t\tthis.searchItem.operator = this.self.operator;\n\t\tthis.action.setSearchItem(this.searchItem);\n\t\tthis.onReset();\n\t}\n\n\tdateFormat(time: any, format: string | undefined) {\n\t\treturn this.datePipe.transform(time, format?.replace(/m/g, 'M').replace(/y/g, 'yy')) || '';\n\t}\n\n\thandleView() {\n\t\tconst format = this.searchItem.format?.replace(/m/g, 'M').replace(/y/g, 'yy');\n\t\tif (!format?.includes('MM')) {\n\t\t\tthis.view = 'year';\n\t\t\treturn;\n\t\t}\n\t\tif (!format?.includes('dd')) {\n\t\t\tthis.view = 'month';\n\t\t\treturn;\n\t\t}\n\t\tthis.view = 'date';\n\t}\n}\n\n","<div class=\"s-pop-self-container\">\n\t<div\n\t\tclass=\"s-pop-self-label\"\n\t\t(click)=\"onLabelClick($event)\">\n\t\t<div>{{ 'search.addCustomFilter' | translate }}</div>\n\t\t<span [class]=\"'s-pop-self-label-icon pi pi-chevron-' + (isActive ? 'up' : 'down')\"></span>\n\t</div>\n\t<div [class]=\"'s-pop-self-panel s-pop-self-panel-' + (isActive ? 'show' : 'hide')\">\n\t\t<div class=\"s-pop-self-item flex flex-row flex-nowrap items-center\">\n\t\t\t<div class=\"flex-none w-10\">\n\t\t\t\t<label>{{ 'search.field' | translate }}</label>\n\t\t\t</div>\n\t\t\t<div class=\"grow\">\n\t\t\t\t<p-select\n\t\t\t\t\tpanelStyleClass=\"s-pop-self-select-panel\"\n\t\t\t\t\t[(ngModel)]=\"self.field\"\n\t\t\t\t\t(ngModelChange)=\"onFieldChange($event)\"\n\t\t\t\t\tappendTo=\"body\"\n\t\t\t\t\t[options]=\"fieldList\"\n\t\t\t\t\toptionLabel=\"label\"\n\t\t\t\t\toptionValue=\"code\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tfluid />\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"s-pop-self-item flex flex-row flex-nowrap items-center\">\n\t\t\t<div class=\"flex-none w-10\">\n\t\t\t\t<label>{{ 'search.oper' | translate }}</label>\n\t\t\t</div>\n\t\t\t<div class=\"grow\">\n\t\t\t\t<p-select\n\t\t\t\t\tpanelStyleClass=\"s-pop-self-select-panel\"\n\t\t\t\t\t[(ngModel)]=\"self.operator\"\n\t\t\t\t\t(ngModelChange)=\"onOperatorChange($event)\"\n\t\t\t\t\tappendTo=\"body\"\n\t\t\t\t\t[options]=\"operatorList\"\n\t\t\t\t\toptionLabel=\"label\"\n\t\t\t\t\toptionValue=\"operator\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tfluid />\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"s-pop-self-item flex flex-row flex-nowrap items-center\">\n\t\t\t<div class=\"flex-none w-10\">\n\t\t\t\t<label>{{ 'search.value' | translate }}</label>\n\t\t\t</div>\n\t\t\t<div class=\"grow\">\n\t\t\t\t@switch (searchItem.filterType) {\n\t\t\t\t\t@case ('text') {\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\tpInputText\n\t\t\t\t\t\t\t[(ngModel)]=\"self.text\"\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tfluid />\n\t\t\t\t\t}\n\t\t\t\t\t@case ('number') {\n\t\t\t\t\t\t@if (self.operator != 'inRange') {\n\t\t\t\t\t\t\t<p-inputnumber\n\t\t\t\t\t\t\t\t[(ngModel)]=\"self.num\"\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\tfluid />\n\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t<div class=\"flex items-center\">\n\t\t\t\t\t\t\t\t<span class=\"date-span pr-2\"> min </span>\n\t\t\t\t\t\t\t\t<p-inputnumber\n\t\t\t\t\t\t\t\t\t[(ngModel)]=\"self.min\"\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tfluid />\n\t\t\t\t\t\t\t\t<span class=\"ml-2 date-span pr-2\"> max </span>\n\t\t\t\t\t\t\t\t<p-inputnumber\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t[(ngModel)]=\"self.max\"\n\t\t\t\t\t\t\t\t\tfluid />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t@case ('date') {\n\t\t\t\t\t\t<p-datepicker\n\t\t\t\t\t\t\tpanelStyleClass=\"s-pop-self-datepicker-panel\"\n\t\t\t\t\t\t\t[(ngModel)]=\"self.date\"\n\t\t\t\t\t\t\t[iconDisplay]=\"'input'\"\n\t\t\t\t\t\t\t[selectionMode]=\"self.selectionMode ?? 'single'\"\n\t\t\t\t\t\t\tappendTo=\"body\"\n\t\t\t\t\t\t\t[showIcon]=\"true\"\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t[dateFormat]=\"searchItem.format\"\n\t\t\t\t\t\t\t[view]=\"view\"\n\t\t\t\t\t\t\tfluid\n\t\t\t\t\t\t\tinputId=\"icondisplay\" />\n\t\t\t\t\t}\n\t\t\t\t\t@default {\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\tpInputText\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t[(ngModel)]=\"self.text\"\n\t\t\t\t\t\t\tfluid />\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"s-pop-self-item s-pop-self-item-btn-container\">\n\t\t\t<span\n\t\t\t\tclass=\"s-pop-self-item-btn\"\n\t\t\t\t(click)=\"onReset()\"\n\t\t\t\t>{{ 'app.reset' | translate }}</span\n\t\t\t>\n\t\t\t<span\n\t\t\t\tclass=\"s-pop-self-item-btn\"\n\t\t\t\t(click)=\"onOk()\"\n\t\t\t\t>{{ 'modal.confirm' | translate }}</span\n\t\t\t>\n\t\t</div>\n\t</div>\n</div>\n","import { Component, effect, input, untracked } from '@angular/core';\nimport { SearchItemOption } from '../search/search.component';\nimport { ListboxModule } from 'primeng/listbox';\nimport { ActionService } from '../../service/action.service';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n\tselector: 'pop-sort',\n\tstandalone: true,\n\timports: [ListboxModule, TranslatePipe],\n\ttemplateUrl: './pop-sort.component.html',\n\tstyleUrl: './pop-sort.component.scss',\n})\nexport class PopSortComponent {\n\tsortOptions = input<SearchItemOption[]>();\n\tmodelName = input<string>();\n\tisActive: boolean = false;\n\tfields: string[] = [];\n\n\tconstructor(private action: ActionService) {\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tif (!this.action.searchMonitor(untracked(() => this.modelName()))) return;\n\t\t\t\tconst sorts = this.action.getSearch(untracked(() => this.modelName()))?.sorts || [];\n\t\t\t\tthis.fields = sorts.map((sort) => sort.field!);\n\t\t\t\tthis.sortOptions()?.forEach((option) => {\n\t\t\t\t\toption.checked = this.fields.includes(option.key!);\n\t\t\t\t});\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t}\n\n\tonLabelClick(event: MouseEvent) {\n\t\tthis.isActive = !this.isActive;\n\t\tif (window.getSelection) {\n\t\t\twindow.getSelection()!.removeAllRanges();\n\t\t} else if ((document as any).selection) {\n\t\t\t(document as any).selection.empty();\n\t\t}\n\t}\n\n\tonSortOptionClick(item: SearchItemOption, event: MouseEvent) {\n\t\titem.checked = !item.checked;\n\t\tif (item.checked) {\n\t\t\tthis.fields.push(item.key!);\n\t\t} else {\n\t\t\tthis.fields = this.fields.filter((field) => field !== item.key);\n\t\t}\n\t\tconst isAsc = untracked(() => this.action.getSortItem())?.isAsc ?? true;\n\n\t\tthis.action.setSortItem({\n\t\t\tfields: this.fields,\n\t\t\tlabels: this.fields.map((field) => this.sortOptions()?.find((option: any) => option.key === field)?.label!),\n\t\t\tisAsc,\n\t\t});\n\t}\n}\n","<div class=\"s-pop-sort-container\">\n\t<div\n\t\tclass=\"s-pop-sort-label\"\n\t\t(click)=\"onLabelClick($event)\">\n\t\t<div>{{ 'search.sort' | translate }}</div>\n\t\t<span [class]=\"'s-pop-sort-label-icon pi pi-chevron-' + (isActive ? 'up' : 'down')\"></span>\n\t</div>\n\t<div [class]=\"'s-pop-sort-panel s-pop-sort-panel-' + (isActive ? 'show' : 'hide')\">\n\t\t@for (sort of sortOptions(); track sort) {\n\t\t\t<div\n\t\t\t\tclass=\"s-pop-sort-item-option\"\n\t\t\t\t(click)=\"onSortOptionClick(sort, $event)\">\n\t\t\t\t<span [class]=\"'s-check iconfont ' + (sort.checked ? 'icon-check s-pop-sort-item-selected-option' : '')\"></span>{{ sort.label }}\n\t\t\t</div>\n\t\t}\n\t</div>\n</div>\n","import { Component, effect, input, untracked } from '@angular/core';\nimport { SearchItem, SearchItemOption } from '../search/search.component';\nimport { PopListComponent } from '../pop-list/pop-list.component';\nimport { PopSelectComponent } from '../pop-select/pop-select.component';\nimport { PopTreeComponent } from '../pop-tree/pop-tree.component';\nimport { PopDateComponent } from '../pop-date/pop-date.component';\nimport { ActionService } from '../../service/action.service';\nimport { PopSelfComponent } from '../pop-self/pop-self.component';\nimport { PopSortComponent } from '../pop-sort/pop-sort.component';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n\tselector: 'pop-panel',\n\tstandalone: true,\n\timports: [PopListComponent, PopSelectComponent, PopTreeComponent, PopDateComponent, PopSelfComponent, PopSortComponent, TranslatePipe],\n\ttemplateUrl: './pop-panel.component.html',\n\tstyleUrls: ['./pop-panel.component.scss'],\n})\nexport class PopPanelComponent {\n\tsearchItems = input<SearchItem[]>();\n\tsortOptions = input<SearchItemOption[]>();\n\tmodelName = input<string>();\n\totherItems: SearchItem[] = [];\n\n\tconstructor(private action: ActionService) {\n\t\teffect(() => {\n\t\t\tthis.otherItems = this.searchItems()?.filter((searchItem) => searchItem.filter && searchItem.filterType != 'text') || [];\n\t\t});\n\t}\n}\n","<div class=\"flex flex-wrap md:w-[535px] w-[300px] md:max-w-full max-w-[360px]\">\n\t<div class=\"md:basis-1/2 basis-full md:pr-2.5 md:pl-0 pl-2.5 md:border-r md:border-r-solid md:border-r-[#d6d8db]\">\n\t\t<div class=\"s-pop-panel-title\"><span class=\"s-pop-panel-title-icon pi pi-filter-fill\"></span>{{ 'primeng.filter' | translate }}</div>\n\t\t@for (item of otherItems; track item) {\n\t\t\t@switch (item.filterType) {\n\t\t\t\t@case ('list') {\n\t\t\t\t\t<pop-list\n\t\t\t\t\t\t[item]=\"item\"\n\t\t\t\t\t\t[modelName]=\"modelName()\"></pop-list>\n\t\t\t\t}\n\t\t\t\t@case ('select') {\n\t\t\t\t\t<pop-select\n\t\t\t\t\t\t[item]=\"item\"\n\t\t\t\t\t\t[modelName]=\"modelName()\"></pop-select>\n\t\t\t\t}\n\t\t\t\t@case ('date') {\n\t\t\t\t\t<pop-date\n\t\t\t\t\t\t[item]=\"item\"\n\t\t\t\t\t\t[modelName]=\"modelName()\"></pop-date>\n\t\t\t\t}\n\t\t\t\t@case ('tree') {\n\t\t\t\t\t<pop-tree [item]=\"item\"></pop-tree>\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t<pop-self [searchItems]=\"searchItems()\"></pop-self>\n\t</div>\n\t<div class=\"md:basis-1/2 basis-full md:pl-2.5 s-pop-right\">\n\t\t<div class=\"s-pop-panel-title\"><span class=\"s-pop-panel-title-icon iconfont icon-group\"></span>{{ 'search.group' | translate }}</div>\n\t\t<pop-sort\n\t\t\t[sortOptions]=\"sortOptions()\"\n\t\t\t[modelName]=\"modelName()\"></pop-sort>\n\t</div>\n</div>\n","import { Component, Output, input, EventEmitter, effect } from '@angular/core';\nimport { SearchItem } from '../search/search.component';\nimport { ActionService } from '../../service/action.service';\nimport { FormsModule } from '@angular/forms';\nimport { Select } from 'primeng/select';\nimport { numberOperListNoRange, textOperList } from '../mock-data';\nimport { searchUtils } from '../search-utils';\nimport { I18nService } from '../../service/i18n.service';\n\n@Component({\n\tselector: 'text-panel',\n\tstandalone: true,\n\timports: [FormsModule, Select],\n\ttemplateUrl: './text-panel.component.html',\n\tstyleUrl: './text-panel.component.scss',\n})\nexport class TextPanelComponent {\n\t@Output() strItemClick = new EventEmitter<void>();\n\tsearchItems = input<SearchItem[]>();\n\tsearchStr = input<string>();\n\ttextItems: SearchItem[] = [];\n\ttextOperList = searchUtils.translate(textOperList, this.i18n);\n\tnumberOperList = searchUtils.translate(numberOperListNoRange, this.i18n);\n\n\tconstructor(\n\t\tprivate action: ActionService,\n\t\tprivate i18n: I18nService,\n\t) {\n\t\teffect(() => {\n\t\t\tthis.textItems =\n\t\t\t\tthis.searchItems()\n\t\t\t\t\t?.filter((searchItem) => searchItem.filter && (searchItem.filterType == 'text' || searchItem.filterType == 'number'))\n\t\t\t\t\t.map((searchItem) => ({ operator: searchItem.filterType == 'number' ? 'equals' : 'contains', ...searchItem })) || [];\n\t\t});\n\t}\n\n\tonStrItemClick(item: SearchItem, event: Event) {\n\t\titem.selected = true;\n\t\titem.value = item.filterType == 'number' ? Number(this.searchStr()) : this.searchStr();\n\t\tthis.action.setSearchItem(item);\n\t\tthis.strItemClick.emit();\n\t}\n\n\tonTextOperatorClick(item: SearchItem, event: Event) {\n\t\tevent.stopPropagation();\n\t}\n}\n","@if (!textItems.length) {\n\t<div class=\"s-str-item flex items-center\">无搜索字段</div>\n}\n@for (item of textItems; track item) {\n\t<div\n\t\tclass=\"s-str-item flex items-center\"\n\t\t(click)=\"onStrItemClick(item!, $event)\">\n\t\t搜索 <span class=\"s-str-item-field px-1\">{{ item.label }}</span>\n\t\t<span\n\t\t\tclass=\"px-1 w-24\"\n\t\t\t(click)=\"onTextOperatorClick(item, $event)\">\n\t\t\t<p-select\n\t\t\t\tpanelStyleClass=\"s-text-panel-select-panel\"\n\t\t\t\t[(ngModel)]=\"item.operator\"\n\t\t\t\t[options]=\"textOperList\"\n\t\t\t\toptionLabel=\"label\"\n\t\t\t\toptionValue=\"operator\"\n\t\t\t\tappendTo=\"body\"\n\t\t\t\tsize=\"small\"\n\t\t\t\tfluid />\n\t\t</span>\n\t\t<span class=\"s-str-item-value px-1\">{{ searchStr() }}</span>\n\t</div>\n}\n","import { Component, effect, input, untracked } from '@angular/core';\nimport { SearchItem, SearchItemOption } from '../search/search.component';\nimport { ColumnFilter, Sort } from '../../am/am.component';\nimport { ActionService, SortItem } from '../../service/action.service';\nimport { operatorList } from '../mock-data';\nimport { searchUtils } from '../search-utils';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { I18nService } from '../../service/i18n.service';\n@Component({\n\tselector: 'search-tip',\n\tstandalone: true,\n\tproviders: [],\n\timports: [TranslatePipe],\n\ttemplateUrl: './search-tip.component.html',\n\tstyleUrl: './search-tip.component.scss',\n})\nexport class SearchTipComponent {\n\tcolumnFilter = input<ColumnFilter>();\n\tsearchItem = input<SearchItem>();\n\tsorts = input<Sort[]>();\n\tsortItem = input<SortItem>();\n\tflattenTreeOptions?: any[];\n\toperatorList = searchUtils.translate(operatorList, this.i18n);\n\tconstructor(\n\t\tprivate action: ActionService,\n\t\tprivate i18n: I18nService,\n\t) {\n\t\teffect(() => {\n\t\t\tif (this.searchItem()) {\n\t\t\t\tthis.flattenTreeOptions = searchUtils.flattenTree(this.searchItem()!.options!);\n\t\t\t}\n\t\t});\n\t}\n\n\tonSortTipClick() {\n\t\tconst sortItem = untracked(() => this.action.getSortItem());\n\t\tthis.action.setSortItem({ fields: sortItem?.fields || [], isAsc: !sortItem?.isAsc });\n\t}\n\n\tonSortTipClose() {\n\t\tthis.action.setSortItem({ fields: [], isAsc: true });\n\t}\n\n\tonSearchTipClose() {\n\t\tthis.action.setSearchClear(this.columnFilter()!.columnField!);\n\t}\n\n\tisNotFirstCheckedOption(option: SearchItemOption, item: SearchItem) {\n\t\tif (!option.checked) {\n\t\t\treturn false;\n\t\t}\n\t\treturn item.options?.filter((option) => option.checked)[0].key != option.key;\n\t}\n\n\tformatSelectGroups(selects: SearchItem[]) {\n\t\treturn selects.map((select) => select.label || select.field!).join(' > ');\n\t}\n\n\toperatorLabel(opera: string) {\n\t\treturn this.operatorList.filter((operator) => operator.operator == opera)[0]?.label;\n\t}\n\n\tlabelForSorts() {\n\t\t// sortItem()?.labels?.join(' > ')\n\t\t// return this.sorts()?.map((sort) => sort.label).join(' > ');\n\t}\n\n\tlabelForList() {\n\t\treturn this.searchItem()\n\t\t\t?.options?.filter((option) => this.columnFilter()!.fiter?.includes(option.key))\n\t\t\t.map((option) => option.label);\n\t}\n\n\tlabelForSelect() {\n\t\tif (this.searchItem()!.multiple) {\n\t\t\treturn this.searchItem()\n\t\t\t\t?.options?.filter((option) => this.columnFilter()!.fiter?.includes(option.key))\n\t\t\t\t.map((option) => option.label);\n\t\t}\n\t\treturn this.searchItem()?.options?.find((option) => option.key == this.columnFilter()!.fiter)?.label || '';\n\t}\n\n\tlabelForTree() {\n\t\tif (this.searchItem()!.multiple) {\n\t\t\treturn this.flattenTreeOptions?.filter((option) => this.columnFilter()!.fiter?.includes(option.key)).map((option) => option.label);\n\t\t}\n\t\treturn this.flattenTreeOptions?.find((option) => option.key == this.columnFilter()!.fiter)?.label || '';\n\t}\n}\n","<span class=\"s-search-tip\">\n\t@if (sorts()) {\n\t\t<span\n\t\t\t[class]=\"'s-search-tip-sort s-search-tip-icon s-search-tip-icon-group pi ' + (sortItem()?.isAsc ? 'pi-arrow-up' : 'pi-arrow-down')\"\n\t\t\tstyle=\"padding: 6px 6px 0 6px\"\n\t\t\t(click)=\"onSortTipClick()\"></span>\n\t\t<span class=\"s-search-tip-title\">{{ sortItem()?.labels?.join(' > ') }}</span>\n\t\t<span\n\t\t\tclass=\"s-search-tip-close pi pi-times\"\n\t\t\t(click)=\"onSortTipClose()\"></span>\n\t}\n\t@if (searchItem()?.filterType == 'list') {\n\t\t<span class=\"s-search-tip-icon s-search-tip-icon-filter pi pi-filter-fill\"></span>\n\t\t<span class=\"s-search-tip-title\">{{ labelForList() }}</span>\n\t\t<span\n\t\t\tclass=\"s-search-tip-close pi pi-times\"\n\t\t\t(click)=\"onSearchTipClose()\"></span>\n\t} @else if (searchItem()?.filterType == 'select') {\n\t\t<span class=\"s-search-tip-icon s-search-tip-icon-filter pi pi-filter-fill\"></span>\n\t\t<span class=\"s-search-tip-title\">{{ labelForSelect() }}</span>\n\t\t<span\n\t\t\tclass=\"s-search-tip-close pi pi-times\"\n\t\t\t(click)=\"onSearchTipClose()\"></span>\n\t} @else if (searchItem()?.filterType == 'tree') {\n\t\t<span class=\"s-search-tip-icon s-search-tip-icon-filter pi pi-filter-fill\"></span>\n\t\t<span class=\"s-search-tip-title\">{{ labelForTree() }}</span>\n\t\t<span\n\t\t\tclass=\"s-search-tip-close pi pi-times\"\n\t\t\t(click)=\"onSearchTipClose()\"></span>\n\t} @else if (searchItem()?.filterType == 'date') {\n\t\t<span class=\"s-search-tip-field\">{{ searchItem()?.label }}</span>\n\t\t<span class=\"s-search-tip-title s-search-tip-opertor\">{{ operatorLabel(columnFilter()?.type!) }}</span>\n\t\t@if (columnFilter()?.type == 'inRange') {\n\t\t\t<span class=\"s-search-tip-title\">{{ columnFilter()?.from }}</span>\n\t\t\t<span class=\"s-search-tip-title s-search-tip-opertor\">{{ 'search.and' | translate }}</span>\n\t\t\t<span class=\"s-search-tip-title\">{{ columnFilter()?.to }}</span>\n\t\t} @else {\n\t\t\t<span class=\"s-search-tip-title\">{{ columnFilter()?.fiter }}</span>\n\t\t}\n\t\t<span\n\t\t\tclass=\"s-search-tip-close pi pi-times\"\n\t\t\t(click)=\"onSearchTipClose()\"></span>\n\t} @else if (searchItem()?.filterType == 'text') {\n\t\t<span class=\"s-search-tip-field\">{{ searchItem()?.label }}</span>\n\t\t<span class=\"s-search-tip-title s-search-tip-opertor\">{{ operatorLabel(columnFilter()?.type!) }}</span>\n\t\t<span class=\"s-search-tip-title\">{{ columnFilter()?.fiter }}</span>\n\t\t<span\n\t\t\tclass=\"s-search-tip-close pi pi-times\"\n\t\t\t(click)=\"onSearchTipClose()\"></span>\n\t} @else if (searchItem()?.filterType == 'number') {\n\t\t<span class=\"s-search-tip-field\">{{ searchItem()?.label }}</span>\n\t\t<span class=\"s-search-tip-title s-search-tip-opertor\">{{ operatorLabel(columnFilter()?.type!) }}</span>\n\t\t@if (columnFilter()?.type == 'inRange') {\n\t\t\t<span class=\"s-search-tip-title\">{{ columnFilter()?.from }}</span>\n\t\t\t<span class=\"s-search-tip-title s-search-tip-opertor\">and</span>\n\t\t\t<span class=\"s-search-tip-title\">{{ columnFilter()?.to }}</span>\n\t\t} @else {\n\t\t\t<span class=\"s-search-tip-title\">{{ columnFilter()?.fiter }}</span>\n\t\t}\n\t\t<span\n\t\t\tclass=\"s-search-tip-close pi pi-times\"\n\t\t\t(click)=\"onSearchTipClose()\"></span>\n\t}\n</span>\n","import { Component, input, effect, untracked, computed, ViewChild, ElementRef, signal } from '@angular/core';\nimport { GridOptions } from '../../grid/grid/grid.component';\nimport { PopPanelComponent } from '../pop-panel/pop-panel.component';\nimport { TextPanelComponent } from '../text-panel/text-panel.component';\nimport { SearchTipComponent } from '../search-tip/search-tip.component';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ActionService, SortItem } from '../../service/action.service';\nimport { FormsModule } from '@angular/forms';\nimport { searchUtils } from '../search-utils';\nimport { Search, Sort } from '../../am/am.component';\nimport { Popover } from 'primeng/popover';\nimport { Observable } from 'rxjs';\nimport { I18nService } from '../../service/i18n.service';\n\nexport type SearchType = 'text' | 'list' | 'select' | 'date' | 'number' | 'tree';\nexport interface SearchItemOption {\n\tkey?: string;\n\tlabel?: string;\n\tchecked?: boolean;\n}\nexport interface SearchItem {\n\tfield?: string;\n\tlabel?: string;\n\tselected?: boolean;\n\tfilter?: boolean;\n\tformat?: string;\n\tfilterType?: SearchType;\n\toptions?: SearchItemOption[];\n\tcascade?: boolean;\n\tcascadeKey?: string;\n\tmultiple?: boolean;\n\tgroup?: boolean;\n\tvalue?: any;\n\tfrom?: string;\n\tto?: string;\n\toperator?: string;\n\tcascadeFunc?: (value: any) => Observable<SearchItemOption[]>;\n\t[propsName: string]: any;\n}\n\nexport interface SearchOptions {\n\tsearchItems?: SearchItem[];\n\tmodelName?: string;\n}\n\n@Component({\n\tselector: 'custom-search',\n\tstandalone: true,\n\timports: [FormsModule, PopPanelComponent, TextPanelComponent, SearchTipComponent, TranslatePipe, Popover],\n\ttemplateUrl: './search.component.html',\n\tstyleUrl: './search.component.scss',\n})\nexport class SearchComponent {\n\t@ViewChild('searchRef', { static: false }) searchRef!: ElementRef;\n\t@ViewChild('popPanel') popPanel!: Popover;\n\t@ViewChild('textPanel') textPanel!: Popover;\n\tsearchPrm = input<Search>();\n\tgridOptions = input<GridOptions>();\n\tsearchModel = computed(() => {\n\t\tif (!this.action.searchMonitor(untracked(() => this.gridOptions()?.modelName))) return;\n\t\tconst search = this.action.getSearch(untracked(() => this.gridOptions()?.modelName));\n\t\treturn search;\n\t});\n\tsearchItems!: SearchItem[];\n\tsortOptions!: SearchItemOption[];\n\tmarginLeft: string = '0';\n\tsearchStr = '';\n\tisActive = false;\n\tvisible = true;\n\treload = true;\n\n\tconstructor(\n\t\tprivate action: ActionService,\n\t\tprivate i18n: I18nService,\n\t) {\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tconst columnDefs = this.gridOptions()?.columnDefs;\n\t\t\t\tthis.visible = this.gridOptions()?.showSearch ?? true;\n\t\t\t\tconsole.log('mount------')\n\t\t\t\tthis.searchItems = searchUtils.extractSearchItems(columnDefs, this.i18n);\n\t\t\t\tthis.sortOptions = columnDefs!.map((columnDef: any) => ({ key: columnDef.field, label: columnDef.headerName }));\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t\teffect(() => {\n\t\t\tconst searchPrm = this.searchPrm();\n\t\t\tif (searchPrm?.columnFilters?.length || searchPrm?.groups?.length) {\n\t\t\t\tthis.action.setSearch({ columnFilters: searchPrm?.columnFilters, groups: searchPrm?.groups }, searchPrm.modelName);\n\t\t\t}\n\t\t});\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tconst searchItem = this.action.getSearchItem();\n\t\t\t\tconst modelName = untracked(() => this.gridOptions()?.modelName);\n\t\t\t\tif (searchItem == undefined) return;\n\t\t\t\tthis.action.setSearch(\n\t\t\t\t\tsearchUtils.concatFilter(this.action.getSearch(modelName), searchUtils.transferFilter(searchItem)!),\n\t\t\t\t\tmodelName,\n\t\t\t\t);\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tconst searchClear = this.action.getSearchClear();\n\t\t\t\tconst modelName = untracked(() => this.gridOptions()?.modelName);\n\t\t\t\tif (searchClear == undefined) return;\n\t\t\t\tlet search = this.action.getSearch(modelName);\n\t\t\t\tsearch = {\n\t\t\t\t\t...search,\n\t\t\t\t\tcolumnFilters: searchUtils.cascadeColumnFilters(searchClear + '', search?.columnFilters || [], this.searchItems),\n\t\t\t\t};\n\t\t\t\tthis.action.setSearch(search, modelName);\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tconst sortItem = this.action.getSortItem();\n\t\t\t\tif (sortItem === undefined) return;\n\t\t\t\tconst modelName = untracked(() => this.gridOptions()?.modelName);\n\t\t\t\tlet sorts: Sort[] = sortItem.fields!.map((field) => ({ field, isAsc: sortItem!.isAsc }));\n\t\t\t\tthis.action.setSearch({ columnFilters: this.action.getSearch(modelName)?.columnFilters || [], sorts }, modelName);\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t}\n\n\tngOnInit() {\n\t\tthis.i18n.change.subscribe((res: any) => {\n\t\t\tconst columnDefs = this.gridOptions()?.columnDefs;\n\t\t\tthis.visible = this.gridOptions()?.showSearch ?? true;\n\t\t\tthis.searchItems = searchUtils.extractSearchItems(columnDefs, this.i18n);\n\t\t\tthis.sortOptions = columnDefs!.map((columnDef: any) => ({ key: columnDef.field, label: columnDef.headerName }));\n\t\t\tthis.reload = false;\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.reload = true;\n\t\t\t}, 200);\n\t\t});\n\t}\n\n\tngOnDestroy() {\n\t\tthis.action.clear();\n\t}\n\n\tonFocus(event: any, searchRef: any) {\n\t\tthis.isActive = true;\n\t\tif (!this.searchStr) {\n\t\t\tthis.popPanel.show(event, searchRef);\n\t\t} else {\n\t\t\tthis.textPanel.show(event, searchRef);\n\t\t}\n\t}\n\n\tonDropDownClick(event: any, searchRef: any) {\n\t\tthis.isActive = !this.isActive;\n\t\tif (!this.searchStr) {\n\t\t\tthis.popPanel.toggle(event, searchRef);\n\t\t} else {\n\t\t\tthis.textPanel.toggle(event, searchRef);\n\t\t}\n\t}\n\n\tonInput(event: any, searchRef: any) {\n\t\tif (!event.target?.value) {\n\t\t\tthis.popPanel.show(event, searchRef);\n\t\t\tthis.textPanel.hide();\n\t\t} else {\n\t\t\tthis.textPanel.show(event, searchRef);\n\t\t\tthis.popPanel.hide();\n\t\t}\n\t}\n\n\tonPopShow(event: any) {\n\t\tthis.calcMarginLeft();\n\t}\n\n\tonPopHide(event: any) {\n\t\tthis.isActive = this.popPanel.overlayVisible || this.popPanel.overlayVisible;\n\t}\n\n\tcalcMarginLeft() {\n\t\tif (!this.searchRef) return;\n\t\tconst searchRefRect = this.searchRef.nativeElement.getBoundingClientRect();\n\t\tconst panelWidth = window.innerWidth > 768 ? 535 : 305;\n\t\tconst offset = searchRefRect.width - panelWidth - 23.5;\n\t\tthis.marginLeft = offset + 'px';\n\t}\n\n\tgetSearchItemByField(field: string) {\n\t\treturn this.searchItems?.filter((searchItem) => searchItem.field == field)[0];\n\t}\n\n\tgetSortItemBySorts(sorts: Sort[]): SortItem | undefined {\n\t\tconst fields = sorts?.map((sort) => sort.field!);\n\t\tconst labels = sorts?.map((sort) => this.sortOptions?.find((sortOption) => sortOption.key == sort.field)?.label || '');\n\t\tconst isAsc = sorts[0].isAsc;\n\t\treturn { fields, labels, isAsc };\n\t}\n\n\tonStrItemClick(event: any) {\n\t\tthis.isActive = false;\n\t\tthis.searchStr = '';\n\t\tthis.textPanel.hide();\n\t}\n}\n","@if (visible && reload) {\n\t<div\n\t\t#searchRef\n\t\tclass=\"s-main\">\n\t\t<div [class]=\"'flex items-center s-container ' + (isActive ? 's-active' : 's-unactive')\">\n\t\t\t<span class=\"flex-none s-search pi pi-search\"></span>\n\t\t\t<div class=\"flex-1 flex items-center content-center flex-wrap\">\n\t\t\t\t@for (columnFilter of searchModel()?.columnFilters; track columnFilter) {\n\t\t\t\t\t<search-tip\n\t\t\t\t\t\t[columnFilter]=\"columnFilter\"\n\t\t\t\t\t\t[searchItem]=\"getSearchItemByField(columnFilter.columnField!)\"></search-tip>\n\t\t\t\t}\n\t\t\t\t@if (searchModel()?.sorts?.length) {\n\t\t\t\t\t<search-tip\n\t\t\t\t\t\t[sorts]=\"searchModel()?.sorts\"\n\t\t\t\t\t\t[sortItem]=\"getSortItemBySorts(searchModel()?.sorts!)\"></search-tip>\n\t\t\t\t}\n\t\t\t\t<div class=\"flex-1\">\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tclass=\"s-input\"\n\t\t\t\t\t\t[placeholder]=\"'search.search' | translate\"\n\t\t\t\t\t\t[(ngModel)]=\"searchStr\"\n\t\t\t\t\t\t(focus)=\"onFocus($event, searchRef)\"\n\t\t\t\t\t\t(input)=\"onInput($event, searchRef)\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div\n\t\t\t[class]=\"'s-dropdown ' + (isActive ? 's-active' : 's-unactive')\"\n\t\t\t(click)=\"onDropDownClick($event, searchRef)\">\n\t\t\t<span [class]=\"'s-dropdown-icon pi pi-chevron-' + (isActive ? 'up' : 'down')\"></span>\n\t\t</div>\n\t</div>\n\n\t<p-popover\n\t\t[style]=\"{ marginLeft, maxHeight: '75vh', overflowY: 'scroll' }\"\n\t\t(onShow)=\"onPopShow($event)\"\n\t\t(onHide)=\"onPopHide($event)\"\n\t\t#popPanel>\n\t\t<pop-panel\n\t\t\t[searchItems]=\"searchItems\"\n\t\t\t[sortOptions]=\"sortOptions\"\n\t\t\t[modelName]=\"gridOptions()?.modelName\"></pop-panel>\n\t</p-popover>\n\n\t<p-popover\n\t\t[style]=\"{ maxHeight: '75vh', overflowY: 'scroll' }\"\n\t\t(onHide)=\"onPopHide($event)\"\n\t\t#textPanel>\n\t\t<text-panel\n\t\t\t[searchItems]=\"searchItems\"\n\t\t\t[searchStr]=\"searchStr\"\n\t\t\t(strItemClick)=\"onStrItemClick($event)\"></text-panel>\n\t</p-popover>\n}\n","import { Component, ViewChild, Output, EventEmitter, input, model, effect, inject } from '@angular/core';\nimport { ButtonModule } from 'primeng/button';\nimport { DialogModule } from 'primeng/dialog';\nimport { Search } from '../am/am.component';\nimport { GridComponent, GridOptions } from '../grid/grid/grid.component';\nimport { SearchComponent } from '../search/search/search.component';\nimport { ActionService } from '../service/action.service';\nimport { DatePipe } from '@angular/common';\n\n@Component({\n\tselector: 'row-selector',\n\tstandalone: true,\n\timports: [ButtonModule, DialogModule, GridComponent, SearchComponent],\n\ttemplateUrl: './row-selector.component.html',\n\tstyleUrl: './row-selector.component.scss',\n})\nexport class RowSelectorComponent {\n\t@Output() onOk = new EventEmitter<any[]>();\n\t@ViewChild(GridComponent) grid!: GridComponent;\n\tdatePipe = inject(DatePipe)\n\ttitle = input<string>('选择');\n\tselectionKeys = input<any[]>([]);\n\tgridOptions = input<GridOptions>({});\n\tsearchPrm = input<Search>({});\n\tvisible = model<boolean>(false);\n\tinnerVisible: boolean = false;\n\tshowSearch = input<boolean>(true);\n\tselectCancel:any[] = []\n\t@Output() cancelSelect = new EventEmitter<any[]>();\n\tconstructor(private action: ActionService) {}\n\n\tapi() {\n\t\treturn this.grid.getGrid().api;\n\t}\n\n\tcancel() {\n\t\tthis.visible.set(false);\n\t}\n\n\tok() {\n\t\tconst result = this.getSelectedData().map((item) => {\n\t\t\tconst result: any = {};\n\t\t\tthis.gridOptions().columnDefs?.forEach((col: any) => {\n\t\t\t\tresult[col.field] = item[col.field];\n\t\t\t});\n\t\t\treturn result;\n\t\t});\n\t\tthis.onOk.emit(result);\n\t\tthis.selectCancel.length > 0 && this.cancelSelect.emit(this.selectCancel)\n\t\tthis.visible.set(false);\n\t}\n\n\tgetSelectedData(): any[] {\n\t\tconst result: any[] = [];\n\t\tconst selectionKeys = this.selectionKeys();\n\t\tconst dataKey = this.gridOptions().dataKey || 'id'\n\t\tthis.api().forEachNode((node: any) => {\n\t\t\tconst keyValue = node.data ? node.data[dataKey]: -1\n\t\t\tif(!node.isSelected() && selectionKeys.includes(keyValue)){\n\t\t\t\tthis.selectCancel.push(node.data)\n\t\t\t}\n\n\t\t\tnode.isSelected() && result.push({ ...node.data });\n\t\t});\n\t\treturn result;\n\t}\n\n\tonShow() {\n\t\tthis.innerVisible = true;\n\t\tthis.action.setPopMode(true);\n\t}\n\n\tonHide() {\n\t\tthis.innerVisible = false;\n\t\tsetTimeout(() => {\n\t\t\tthis.action.setPopMode(false);\n\t\t});\n\t}\n\n\tonMaximize(event: any) {\n\t\tif (event.maximized) {\n\t\t\tthis.grid.setScrollHeight('calc(100vh - 150px)');\n\t\t} else {\n\t\t\tthis.grid.setScrollHeight();\n\t\t}\n\t}\n}\n","<p-dialog\n\t[header]=\"title()\"\n\t[modal]=\"true\"\n\t[style]=\"{ width: '50vw' }\"\n\t(onHide)=\"cancel()\"\n\t[maximizable]=\"true\"\n\t[appendTo]=\"'body'\"\n\t[focusOnShow]=\"false\"\n\t(onShow)=\"onShow()\"\n\t(onHide)=\"onHide()\"\n\t(onMaximize)=\"onMaximize($event)\"\n\t[(visible)]=\"visible\">\n\t@if (innerVisible) {\n\t\t<div class=\"flex flex-col gap-2\">\n\t\t\t@if (showSearch()) {\n\t\t\t\t<custom-search [gridOptions]=\"gridOptions()\"></custom-search>\n\t\t\t}\n\t\t\t<custom-grid\n\t\t\t\t[showAct]=\"false\"\n\t\t\t\t[searchPrm]=\"searchPrm()\"\n\t\t\t\t[selectionKeys]=\"selectionKeys()\"\n\t\t\t\t[gridOptions]=\"gridOptions()\"></custom-grid>\n\t\t\t<div class=\"flex justify-end gap-2\">\n\t\t\t\t<p-button\n\t\t\t\t\tlabel=\"取消\"\n\t\t\t\t\t[text]=\"true\"\n\t\t\t\t\tseverity=\"secondary\"\n\t\t\t\t\t(click)=\"cancel()\" />\n\t\t\t\t<p-button\n\t\t\t\t\tlabel=\"确定\"\n\t\t\t\t\t[outlined]=\"true\"\n\t\t\t\t\t(click)=\"ok()\" />\n\t\t\t</div>\n\t\t</div>\n\t}\n</p-dialog>\n","import { Component, input, effect, ViewChild, ViewContainerRef, ElementRef, Renderer2 } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { RowSelectorComponent as rowselectorPop } from '../../row-selector/row-selector.component';\nimport { FormField, FieldProps } from '../form-field/form-field';\nimport { ActionService } from '../../service/action.service';\nimport { ButtonModule } from 'primeng/button';\nimport { Observable } from 'rxjs';\nimport { convertCol, parseFunctions } from '../../share/utils';\nimport { FormComponent } from '../form/form.component';\nimport { AmComponent } from '../../am/am.component';\n\nexport interface RowSelectorProps extends FieldProps {\n\tpageCode?: string;\n\tpreSearch?: any;\n\tsearchPrm?: any;\n\tcallback?: (data: any, form: FormComponent) => void;\n}\n\n@Component({\n\tselector: 'form-rowselector',\n\tstandalone: true,\n\tstyles: `\n\t\t.selector-text {\n\t\t\twidth: 100%;\n\t\t\theight: 20px;\n\t\t\tcolor: #334155;\n\n\t\t\t.selector-icon {\n\t\t\t\tfont-size: 12px;\n\t\t\t}\n\t\t\t.selector-icon:hover {\n\t\t\t\tcursor: pointer;\n\t\t\t\tcolor: var(--p-primary-color);\n\t\t\t}\n\t\t\t.selector-text-content {\n\t\t\t\tmin-width: 25px;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\toverflow: hidden;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t}\n\t\t}\n\t\t.selector-text:hover {\n\t\t\t.selector-icon {\n\t\t\t\tcolor: var(--p-primary-color);\n\t\t\t}\n\t\t}\n\t\t.selector-text.ng-hovered {\n\t\t\t.selector-icon {\n\t\t\t\tcolor: var(--p-primary-color);\n\t\t\t}\n\t\t}\n\t`,\n\timports: [ButtonModule, ReactiveFormsModule],\n\ttemplate: `\n\t\t<div #container></div>\n\t\t<div\n\t\t\t#selector\n\t\t\tclass=\"flex gap-2 items-center selector-text\">\n\t\t\t<span class=\"selector-text-content\">{{ text }}</span>\n\t\t\t@if (!field()?.fieldControl?.disabled) {\n\t\t\t\t<span\n\t\t\t\t\tclass=\"selector-icon pi pi-pen-to-square\"\n\t\t\t\t\t(click)=\"onSelectorShow()\"></span>\n\t\t\t}\n\t\t</div>\n\t`,\n})\nexport class RowSelectorComponent extends AmComponent {\n\t@ViewChild('container', { read: ViewContainerRef }) container!: ViewContainerRef;\n\t@ViewChild('selector', { read: ElementRef, static: false }) selectorRef!: ElementRef;\n\tfield = input<FormField>();\n\tprops: RowSelectorProps = {};\n\ttext?: string;\n\tuse: any = {};\n\n\tconstructor(\n\t\tprivate action: ActionService,\n\t\tprivate renderer: Renderer2,\n\t) {\n\t\tsuper();\n\t\teffect(() => {\n\t\t\tif (this.field()) {\n\t\t\t\tthis.props = this.field()!.rowSelectorProps!;\n\t\t\t\tthis.handleHookChange();\n\t\t\t\tthis.handleDisabled();\n\t\t\t}\n\t\t});\n\t\teffect(() => {\n\t\t\tconst labelAction = this.action.getFieldLabelAction();\n\t\t\tif (!labelAction || labelAction?.key != this.field()?.uuid) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (labelAction.type == 'mouseenter') {\n\t\t\t\tthis.renderer.addClass(this.selectorRef.nativeElement, 'ng-hovered');\n\t\t\t} else if (labelAction.type == 'mouseleave') {\n\t\t\t\tthis.renderer.removeClass(this.selectorRef.nativeElement, 'ng-hovered');\n\t\t\t}\n\t\t});\n\t}\n\n\thandleDisabled() {\n\t\tif (this.props?.disabled) {\n\t\t\tthis.field()!.fieldControl!.disable({ emitEvent: false });\n\t\t}\n\t}\n\n\thandleHookChange() {\n\t\tthis.field()?.fieldControl?.hookChange.subscribe((value) => {\n\t\t\tif (value == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.props.onHookChange?.(this.field()!, { value });\n\t\t\tthis.text = value;\n\t\t});\n\t}\n\n\tonSelectorShow() {\n\t\tif (this.field()?.fieldControl?.disabled) return;\n\t\tthis.createRowSelector();\n\t}\n\n\tcreateRowSelector() {\n\t\tconst thisArg = this.field()!.form!.options()?.extra?.thisArg || this;\n\t\tconsole.log('-----Form Rowselector thisArg', thisArg);\n\t\tthis.webget({ code: this.props.pageCode }).subscribe((res: any) => {\n\t\t\tlet content = parseFunctions(JSON.parse(res.content), thisArg);\n\t\t\tif (content.hasOwnProperty('searchPrm')) {\n\t\t\tcontent.searchPrm?.columnFilters?.forEach((v: any) => {\n\t\t\t\tif (typeof v.fiter === 'function') {\n\t\t\t\t\tv.fiter = v.fiter(null, this.field()!.form);\n\t\t\t\t\tconsole.log('fiter------',v.fiter)\n\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\tthis.handlePopGridOptions(content.gridOptions, thisArg);\n\t\t\tthis.container.clear();\n\t\t\tconst componentRef = this.container.createComponent(rowselectorPop);\n\t\t\tcomponentRef.setInput('visible', true);\n\t\t\tif (this.props.preSearch) {\n\t\t\t\tcontent.gridOptions = { ...content.gridOptions, preSearch: this.props.preSearch };\n\t\t\t}\n\t\t\tconvertCol(content.gridOptions, content.gridOptions.columnDefs as any, 1);\n\t\t\tcomponentRef.setInput('gridOptions', content.gridOptions);\n\t\t\tlet searchPrm = { modelName: content.modelName, orgField:content?.orgField, ...content.searchPrm};\n\t\t\tif (this.props.searchPrm) {\n\t\t\t\tsearchPrm = { ...searchPrm, ...this.props.searchPrm};\n\t\t\t}\n\t\t\tconsole.log('searchPrm-----',searchPrm)\n\t\t\tcomponentRef.setInput('searchPrm', searchPrm);\n\t\t\tcomponentRef.instance.onOk.subscribe((data: any[]) => {\n\t\t\t\tif (data.length == 0) return;\n\t\t\t\tthis.props.callback && this.props.callback(data[0], this.field()!.form!);\n\t\t\t});\n\t\t});\n\t}\n\n\thandlePopGridOptions(gridOptions: any, thisArg: any) {\n\t\tconst search = (param: any): Observable<any> => this.http.post('search', param);\n\t\tgridOptions.scrollHeight = '300px';\n\t\tgridOptions.rowSelection = { mode: 'singleRow' };\n\t\tgridOptions.rowModelType = gridOptions.rowModelType || 'serverSide';\n\t\tif (gridOptions.rowModelType == 'serverSide') {\n\t\t\tgridOptions.serverFunc = gridOptions.serverFunc?.bind(thisArg) || search.bind(thisArg);\n\t\t} else {\n\t\t\tgridOptions.clientFunc = gridOptions.clientFunc?.bind(thisArg) || search.bind(thisArg);\n\t\t}\n\t\tif (gridOptions.hasOwnProperty('preSearch')) {\n\t\t\tgridOptions.preSearch?.columnFilters?.forEach((v: any) => {\n\t\t\t\tif (typeof v.fiter === 'function') {\n\t\t\t\t\tv.fiter = v.fiter(null, this.field()!.form);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tif (gridOptions.hasOwnProperty('searchPrm')) {\n\t\t\tgridOptions.searchPrm?.columnFilters?.forEach((v: any) => {\n\t\t\t\tif (typeof v.fiter === 'function') {\n\t\t\t\t\tv.fiter = v.fiter(null, this.field()!.form);\n\t\t\t\t\tconsole.log('fiter------',v.fiter)\n\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n}\n","import { Component, input } from '@angular/core';\nimport { FormField } from './form-field';\nimport { InputTextProps, InputTextComponent } from '../form-type/inputtext.type';\nimport { InputNumberProps, InputNumberComponent } from '../form-type/inputnumber.type';\nimport { SelectProps, SelectComponent } from '../form-type/select.type';\nimport { TreeSelectProps, TreeSelectComponent } from '../form-type/treeselect.type';\nimport { DatePickerProps, DatePickerComponent } from '../form-type/datepicker.type';\nimport { AutoCompleteProps, AutoCompleteComponent } from '../form-type/autocomplete.type';\nimport { MultiSelectProps, MultiSelectComponent } from '../form-type/multiselect.type';\nimport { RadioProps, RadioComponent } from '../form-type/radio.type';\nimport { TextAreaProps, TextAreaComponent } from '../form-type/textarea.type';\nimport { UploadProps, UploadComponent } from '../form-type/upload.type';\nimport { ImageProps, ImageComponent } from '../form-type/image.type';\nimport { CodeMirrorProps, CodeMirrorComponent } from '../form-type/codemirror.type';\nimport { RowSelectorProps, RowSelectorComponent } from '../form-type/rowselector.type';\nexport {\n\tInputTextProps,\n\tInputNumberProps,\n\tSelectProps,\n\tTreeSelectProps,\n\tDatePickerProps,\n\tAutoCompleteProps,\n\tMultiSelectProps,\n\tRadioProps,\n\tTextAreaProps,\n\tUploadProps,\n\tImageProps,\n\tCodeMirrorProps,\n\tRowSelectorProps,\n};\n\n@Component({\n\tselector: 'form-type',\n\tstandalone: true,\n\timports: [\n\t\tInputTextComponent,\n\t\tInputNumberComponent,\n\t\tSelectComponent,\n\t\tTreeSelectComponent,\n\t\tDatePickerComponent,\n\t\tAutoCompleteComponent,\n\t\tMultiSelectComponent,\n\t\tRadioComponent,\n\t\tTextAreaComponent,\n\t\tUploadComponent,\n\t\tImageComponent,\n\t\tCodeMirrorComponent,\n\t\tRowSelectorComponent,\n\t],\n\ttemplate: `\n\t\t@switch (field()?.type) {\n\t\t\t@case ('inputtext') {\n\t\t\t\t<form-inputtext [field]=\"field()!\"></form-inputtext>\n\t\t\t}\n\t\t\t@case ('inputnumber') {\n\t\t\t\t<form-inputnumber [field]=\"field()!\"></form-inputnumber>\n\t\t\t}\n\t\t\t@case ('select') {\n\t\t\t\t<form-select [field]=\"field()!\"></form-select>\n\t\t\t}\n\t\t\t@case ('treeselect') {\n\t\t\t\t<form-treeselect [field]=\"field()!\"></form-treeselect>\n\t\t\t}\n\t\t\t@case ('datepicker') {\n\t\t\t\t<form-datepicker [field]=\"field()!\"></form-datepicker>\n\t\t\t}\n\t\t\t@case ('autocomplete') {\n\t\t\t\t<form-autocomplete [field]=\"field()!\"></form-autocomplete>\n\t\t\t}\n\t\t\t@case ('multiselect') {\n\t\t\t\t<form-multiselect [field]=\"field()!\"></form-multiselect>\n\t\t\t}\n\t\t\t@case ('radio') {\n\t\t\t\t<form-radio [field]=\"field()!\"></form-radio>\n\t\t\t}\n\t\t\t@case ('textarea') {\n\t\t\t\t<form-textarea [field]=\"field()!\"></form-textarea>\n\t\t\t}\n\t\t\t@case ('upload') {\n\t\t\t\t<form-upload [field]=\"field()!\"></form-upload>\n\t\t\t}\n\t\t\t@case ('image') {\n\t\t\t\t<form-image [field]=\"field()!\"></form-image>\n\t\t\t}\n\t\t\t@case ('codemirror') {\n\t\t\t\t<form-codemirror [field]=\"field()!\"></form-codemirror>\n\t\t\t}\n\t\t\t@case ('rowselector') {\n\t\t\t\t<form-rowselector [field]=\"field()!\"></form-rowselector>\n\t\t\t}\n\t\t}\n\t`,\n})\nexport class FormTypeComponent {\n\tfield = input<FormField>();\n\tconstructor() {}\n\n\tngOnInit(): void {}\n}\n","import { Component, input, ViewChild, ElementRef, ViewChildren, QueryList, effect, WritableSignal } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { LabelDirective } from './label.directive';\nimport { ContextMenuComponent } from './context-menu';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { fieldUtils } from './field-utils';\nimport { Observable } from 'rxjs';\nimport {\n\tFormTypeComponent,\n\tInputTextProps,\n\tInputNumberProps,\n\tSelectProps,\n\tTreeSelectProps,\n\tDatePickerProps,\n\tAutoCompleteProps,\n\tMultiSelectProps,\n\tRadioProps,\n\tTextAreaProps,\n\tUploadProps,\n\tImageProps,\n\tCodeMirrorProps,\n} from './form-type';\nimport { FieldControl } from './field-control';\nimport { FormComponent } from '../form/form.component';\n\nexport interface FormField {\n\tkey?: string;\n\ttype?:\n\t\t| 'inputtext'\n\t\t| 'inputnumber'\n\t\t| 'select'\n\t\t| 'treeselect'\n\t\t| 'datepicker'\n\t\t| 'autocomplete'\n\t\t| 'multiselect'\n\t\t| 'radio'\n\t\t| 'textarea'\n\t\t| 'upload'\n\t\t| 'image'\n\t\t| 'codemirror'\n\t\t| 'rowselector';\n\tdefault?: any;\n\tid?: string;\n\tname?: string;\n\tgroup?: FormField[];\n\tgroupClass?: string;\n\tclass?: string;\n\tinnerClass?: string;\n\tfieldControl?: FieldControl;\n\tinputTextProps?: InputTextProps;\n\tinputNumberProps?: InputNumberProps;\n\tselectProps?: SelectProps;\n\ttreeSelectProps?: TreeSelectProps;\n\tdatePickerProps?: DatePickerProps;\n\tautoCompleteProps?: AutoCompleteProps;\n\tmultiSelectProps?: MultiSelectProps;\n\tradioProps?: RadioProps;\n\ttextAreaProps?: TextAreaProps;\n\tuploadProps?: UploadProps;\n\timageProps?: ImageProps;\n\tcodeMirrorProps?: CodeMirrorProps;\n\trowSelectorProps?: any;\n\thide?: boolean;\n\thideExpression?: (model: any, field?: FormField) => boolean;\n\thook?: Observable<(field?: FormField) => void>;\n\tvalidators?: any;\n\tinvalid?: boolean;\n\textra?: any;\n\tuuid?: string;\n\tlabelMinWidth?: WritableSignal<string | undefined>;\n\tinteractiveLabel?: boolean;\n\tform?: FormComponent;\n}\n\nexport interface FieldProps {\n\ttype?: string;\n\tlabel?: string;\n\ti18nKey?: string;\n\tlabelClass?: string;\n\tlabelVariant?: 'in' | 'over' | 'on';\n\tvariant?: any;\n\tclass?: string;\n\tname?: string;\n\tplaceholder?: string;\n\tdisabled?: boolean;\n\thidden?: boolean;\n\trequired?: boolean;\n\tsize?: any;\n\tstyleClass?: string;\n\tstyle?: any;\n\tautofocus?: boolean;\n\tmin?: number;\n\tmax?: number;\n\tinputStyle?: any;\n\tinputStyleClass?: string;\n\tfluid?: boolean;\n\tariaLabel?: string;\n\tariaLabelledBy?: string;\n\tfocus?: FocusEvent;\n\tblur?: FocusEvent;\n\tkeyup?: KeyboardEvent;\n\tkeydown?: KeyboardEvent;\n\tclick?: MouseEvent;\n\tinput?: Event;\n\tchange?: Event;\n\tkeypress?: KeyboardEvent;\n\tonModelChange?: AttributeEvent;\n\tonHookChange?: AttributeEvent;\n}\n\nexport declare type AttributeEvent = (field: FormField, event?: any) => void;\n\n@Component({\n\tselector: 'form-field',\n\tstandalone: true,\n\timports: [ReactiveFormsModule, FormTypeComponent, TranslatePipe, LabelDirective, ContextMenuComponent],\n\tstyles: `\n\t\t.untouched {\n\t\t\ttouch-action: none;\n\t\t}\n\t\t.p-field > label {\n\t\t\tmargin: 2px;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tdisplay: block;\n\t\t\tcolor: #1e293b;\n\t\t}\n\t\t.p-field > label:not(.ng-valid).ng-dirty {\n\t\t\tcolor: var(--p-red-500) !important;\n\t\t}\n\t\t.p-field > label:not(.ng-valid).ng-dirty > .field-required {\n\t\t\tcolor: var(--p-red-500) !important;\n\t\t}\n\t\t.field-required {\n\t\t\tpadding-left: 2.5px;\n\t\t\tcolor: var(--p-primary-color);\n\t\t}\n\t\t.p-field > label:not(.ng-valid).ng-dirty > .field-editable {\n\t\t\tcolor: var(--p-red-500) !important;\n\t\t}\n\t\t.field-editable {\n\t\t\tpadding-left: 1px;\n\t\t\tfont-size: 6px;\n\t\t\tcolor: var(--p-primary-color);\n\t\t}\n\t\t.field-label {\n\t\t\tdisplay: inline-block;\n\t\t\toverflow-wrap: break-word;\n\t\t\tword-break: break-word;\n\t\t\twhite-space: normal;\n\t\t}\n\t`,\n\ttemplate: `\n\t\t@if (field()?.group) {\n\t\t\t<div [class]=\"field()?.groupClass\">\n\t\t\t\t@for (fchild of field()!.group; track fchild) {\n\t\t\t\t\t@if (!fchild.hide) {\n\t\t\t\t\t\t<div [class]=\"fchild.groupClass || fchild.class\">\n\t\t\t\t\t\t\t<form-field\n\t\t\t\t\t\t\t\tclass=\"w-full\"\n\t\t\t\t\t\t\t\t[field]=\"fchild\">\n\t\t\t\t\t\t\t</form-field>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t</div>\n\t\t} @else {\n\t\t\t@if (props(field()!).label !== undefined) {\n\t\t\t\t<div [class]=\"field()?.innerClass || 'px-4 my-1'\">\n\t\t\t\t\t<div class=\"flex flex-row flex-nowrap items-start\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"flex-none p-field field-label min-h-8 pt-[1.5px] flex items-center\"\n\t\t\t\t\t\t\t[style]=\"getStyle()\">\n\t\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t\t#label\n\t\t\t\t\t\t\t\t[class]=\"labelClass()\"\n\t\t\t\t\t\t\t\tfieldLabel\n\t\t\t\t\t\t\t\t[field]=\"field()!\"\n\t\t\t\t\t\t\t\t[contextMenu]=\"contextMenu\">\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tstyle=\"user-select: none\"\n\t\t\t\t\t\t\t\t\t#fieldLabelRef\n\t\t\t\t\t\t\t\t\t>{{ props(field()!).i18nKey ? (props(field()!).i18nKey! | translate) : props(field()!).label! }}</span\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t@if (props(field()!).required) {\n\t\t\t\t\t\t\t\t\t<span class=\"field-required\">*</span>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t@if (!field()?.fieldControl?.disabled) {\n\t\t\t\t\t\t\t\t\t<span class=\"iconfont icon-edit-flag field-editable\"></span>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"flex-1 min-h-8 pt-1 w-0 flex flex-row-reverse\">\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t#fieldTypeRef\n\t\t\t\t\t\t\t\tclass=\"w-full\">\n\t\t\t\t\t\t\t\t<form-type [field]=\"field()!\"></form-type>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<app-context-menu\n\t\t\t\t\t#contextMenu\n\t\t\t\t\t[target]=\"label\"\n\t\t\t\t\t[field]=\"field()!\"></app-context-menu>\n\t\t\t} @else {\n\t\t\t\t<div [class]=\"field()?.innerClass || 'px-4 my-1'\">\n\t\t\t\t\t<div class=\"flex flex-row flex-nowrap items-start\">\n\t\t\t\t\t\t<div class=\"flex-1 min-h-8 pt-1 w-0 flex flex-row-reverse\">\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t#fieldTypeRef\n\t\t\t\t\t\t\t\tclass=\"w-full\">\n\t\t\t\t\t\t\t\t<form-type [field]=\"field()!\"></form-type>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t}\n\t\t}\n\t`,\n})\nexport class FormFieldComponent {\n\t@ViewChildren(FormFieldComponent) fieldComponents?: QueryList<FormFieldComponent>;\n\t@ViewChild('fieldLabelRef', { static: false }) fieldLabel?: ElementRef;\n\tfield = input<FormField>();\n\tprops = fieldUtils.props;\n\n\tconstructor() {}\n\n\tngOnInit(): void {}\n\n\tlabelClass() {\n\t\tconst lc = ['untouched '];\n\t\tif (this.field()?.fieldControl?.dirty) {\n\t\t\tlc.push('ng-dirty');\n\t\t}\n\t\tif (this.field()?.fieldControl?.valid !== undefined && this.field()?.fieldControl?.valid !== false) {\n\t\t\tlc.push('ng-valid');\n\t\t}\n\t\treturn lc.join(' ');\n\t}\n\tgetStyle() {\n\t\treturn { width: this.field()!.labelMinWidth!(), maxWidth: '40%' };\n\t}\n\tgetFieldComponents(): QueryList<FormFieldComponent> | undefined {\n\t\treturn this.fieldComponents;\n\t}\n\n\tgetFieldLabel() {\n\t\treturn this.fieldLabel;\n\t}\n}\n","import {\r\n\tComponent,\r\n\teffect,\r\n\tinput,\r\n\tcomputed,\r\n\tViewChildren,\r\n\tQueryList,\r\n\tElementRef,\r\n\tChangeDetectorRef,\r\n\tinject,\r\n\tHostListener,\r\n\tuntracked,\r\n\tsignal,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, Validators, ReactiveFormsModule, FormSubmittedEvent } from '@angular/forms';\r\nimport { FieldControl } from '../form-field/field-control';\r\nimport { FormField, FormFieldComponent } from '../form-field/form-field';\r\nimport { DatePipe } from '@angular/common';\r\nimport { I18nService } from '../../service/i18n.service';\r\nimport { fieldUtils } from '../form-field/field-utils';\r\nimport { Upsert } from '../../am/am.component';\r\nimport { generateUniqueId } from '../../share/utils';\r\nimport { Router } from '@angular/router';\r\nimport { isObservable, Observable, shareReplay } from 'rxjs';\r\nimport { ActionService } from '../../service/action.service';\r\nexport interface FormOptions {\r\n\tfields?: FormField[];\r\n\tform?: FormGroup;\r\n\tmainField?: string;\r\n\tlabelWidth?: string;\r\n\tinteractiveLabel?: boolean;\r\n\textra?: any;\r\n\tmodelName?: string;\r\n\ttype?: string;\r\n\tfk?: string;\r\n}\r\nexport interface ExternalData {\r\n\tkey?: string;\r\n\tvalue?: any;\r\n\tlabel?: string;\r\n}\r\n\r\n@Component({\r\n\tselector: 'custom-form',\r\n\tstandalone: true,\r\n\timports: [CommonModule, ReactiveFormsModule, FormFieldComponent],\r\n\tproviders: [DatePipe],\r\n\ttemplateUrl: './form.component.html',\r\n\tstyleUrl: './form.component.scss',\r\n})\r\nexport class FormComponent {\r\n\t@ViewChildren(FormFieldComponent) fieldComponents?: QueryList<FormFieldComponent>;\r\n\trouter: Router = inject(Router);\r\n\tisNew: boolean = false;\r\n\toptions = input<FormOptions>({});\r\n\tfields = computed(() => {\r\n\t\tuntracked(() => {\r\n\t\t\tthis.initForm();\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.reCalcLabelSize();\r\n\t\t\t});\r\n\t\t});\r\n\t\treturn this.options().fields;\r\n\t});\r\n\r\n\ti18nService = inject(I18nService);\r\n\tmodel = input<any>();\r\n\tupsert = input<Upsert>();\r\n\trawModel: any = {};\r\n\tchangedModel: any = {};\r\n\tfieldList!: FormField[];\r\n\thookObservers: Function[] = [];\r\n\tlabelMinWidth = signal<string | undefined>(undefined);\r\n\tisMain: boolean = true;\r\n\tsubsert: any;\r\n\textra: any = {};\r\n\r\n\tactions = inject(ActionService);\r\n\t@HostListener('window:resize')\r\n\tonResize() {\r\n\t\tthis.reCalcLabelSize();\r\n\t}\r\n\r\n\tconstructor(\r\n\t\tprivate cdr: ChangeDetectorRef,\r\n\t\tprivate datePipe: DatePipe,\r\n\t) {\r\n\t\tthis.router.url.split('/').pop() == 'new' && (this.isNew = true);\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tif (!this.model()) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (this.isNew) {\r\n\t\t\t\t\tthis.fieldList.forEach((field) => {\r\n\t\t\t\t\t\tif (!field.default) return;\r\n\t\t\t\t\t\tif (this.model()[field.key!] !== undefined) return;\r\n\t\t\t\t\t\tuntracked(() => {\r\n\t\t\t\t\t\t\tthis.handleValueChange(fieldUtils.dafaultValueHandler(field, field.default, this.datePipe), field);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tthis.rawModel = fieldUtils.preloadLog({ ...this.model() }, this.fieldList, this.datePipe);\r\n\t\t\t\tthis.changedModel = {};\r\n\t\t\t\tuntracked(() => this.triggerHook());\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tlet modelName = this.options().modelName || '';\r\n\t\t\t\tconsole.log('modelName', this.options());\r\n\t\t\t\tif (modelName != '') {\r\n\t\t\t\t\tthis.isMain = !this.upsert()?.subsert?.find((v: any) => v.subModelName === modelName);\r\n\t\t\t\t\tif (!this.isMain) {\r\n\t\t\t\t\t\tthis.subsert = {\r\n\t\t\t\t\t\t\tsubModelName: modelName,\r\n\t\t\t\t\t\t\tfk: this.options().fk,\r\n\t\t\t\t\t\t\tsubData: [],\r\n\t\t\t\t\t\t\tmaptmp: new Map(),\r\n\t\t\t\t\t\t\tlogtmp: new Map(),\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tthis.upsert()?.subsert?.push(this.subsert);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t}\r\n\r\n\tngAfterViewInit(): void {\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.reCalcLabelSize();\r\n\t\t});\r\n\t\tthis.i18nService.change.subscribe((res) => {\r\n\t\t\tthis.reCalcLabelSize();\r\n\t\t});\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.hookObservers.forEach((unsubscribe) => unsubscribe());\r\n\t}\r\n\r\n\tinitForm() {\r\n\t\tif (!this.options().extra) {\r\n\t\t\tthis.options().extra = {};\r\n\t\t}\r\n\t\tif (!this.options().form) {\r\n\t\t\tthis.options().form = new FormGroup({});\r\n\t\t}\r\n\t\tthis.fieldList = [];\r\n\t\t//@ts-ignore\r\n\t\tconst isI18n = window.appIsI18n;\r\n\t\tthis.parseFields(this.options().fields || []);\r\n\t\tthis.fieldList.forEach((field, index) => {\r\n\t\t\tfieldUtils.fieldHandler(field);\r\n\t\t\tfield.uuid = `${generateUniqueId()}${index}`;\r\n\t\t\tfield.labelMinWidth = this.labelMinWidth;\r\n\t\t\tfield.interactiveLabel = this.options().interactiveLabel ?? true;\r\n\t\t\tif (isI18n && (!fieldUtils.props(field).i18nKey || fieldUtils.props(field).i18nKey == '')) {\r\n\t\t\t\tfieldUtils.props(field).i18nKey = `tables.${this.options().modelName}.${field.key}`;\r\n\t\t\t}\r\n\t\t\tfield.form = this;\r\n\t\t\tif (isObservable(field.hook)) {\r\n\t\t\t\tthis.uniqueHook(field, field.hook);\r\n\t\t\t}\r\n\t\t\tthis.handleFieldControl(field);\r\n\t\t});\r\n\t}\r\n\r\n\tgetField(key: string) {\r\n\t\treturn this.fieldList.find((field) => field.key === key);\r\n\t}\r\n\r\n\tparseFields(fields: FormField[]) {\r\n\t\tfields.forEach((field) => {\r\n\t\t\tif (field.group) {\r\n\t\t\t\tthis.parseFields(field.group);\r\n\t\t\t} else {\r\n\t\t\t\tthis.fieldList.push(field);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\thandleFieldControl(field: FormField) {\r\n\t\tconst fieldControl = fieldUtils.props(field)?.required\r\n\t\t\t? new FieldControl(null, field.validators ? field.validators : Validators.required)\r\n\t\t\t: new FieldControl(null);\r\n\t\tthis.options().form?.addControl(field.key || '', fieldControl);\r\n\t\tfield.fieldControl = fieldControl;\r\n\t\tfield.fieldControl?.valueChanges.subscribe((value) => {\r\n\t\t\tconst targetValue = fieldUtils.fromFieldValue(field, value, this.datePipe);\r\n\t\t\tif (fieldUtils.isFakedChange(targetValue, this.model()[field.key!], field)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (fieldUtils.props(field)?.onModelChange && typeof fieldUtils.props(field)?.onModelChange === 'function') {\r\n\t\t\t\tfieldUtils.props(field)?.onModelChange!(field, { value });\r\n\t\t\t}\r\n\t\t\tthis.handleValueChange(targetValue, field);\r\n\t\t});\r\n\t}\r\n\r\n\thandleValueChange(value: any, field: FormField) {\r\n\t\tthis.model()[field.key!] = value;\r\n\t\tthis.changedModel[field.key!] = { name: fieldUtils.label(field, this.i18nService), value: value, type: field.type };\r\n\t\tif (this.isMain) {\r\n\t\t\tthis.handleUpsert(field.key!, value, true);\r\n\t\t} else {\r\n\t\t\tthis.handleSubsert(field.key!, value, field);\r\n\t\t}\r\n\t\tconsole.log('-----handleValueChange', this.upsert());\r\n\t\tthis.handleHideExpression();\r\n\t\tthis.actions.saveSignal.set(true);\r\n\t}\r\n\r\n\thandleUpsert(key: string, value: any, isLog?: boolean) {\r\n\t\tif (this.isNew) {\r\n\t\t\tthis.upsert()!.addData![key] = value;\r\n\t\t} else {\r\n\t\t\tthis.upsert()!.updData![key] = value;\r\n\t\t}\r\n\t\tif (!isLog) return;\r\n\t\tthis.upsert()!.log!.content = fieldUtils.transLog(\r\n\t\t\tthis.rawModel,\r\n\t\t\tthis.changedModel,\r\n\t\t\tthis.model()[this.options().mainField!],\r\n\t\t\tthis.isNew,\r\n\t\t\tthis.i18nService,\r\n\t\t);\r\n\t}\r\n\r\n\thandleSubsert(key: string, value: any, field: FormField) {\r\n\t\tconst changedModel = Object.fromEntries(Object.entries(this.changedModel).map(([key, value]) => [key, (value as any).value]));\r\n\t\tthis.subsert.logtmp.set(0, changedModel);\r\n\t\tthis.subsert.subData[0] = changedModel;\r\n\t\tthis.subsert.maptmp.set(key, {\r\n\t\t\tid: this.model()?.id ?? 0,\r\n\t\t\toldValue: this.rawModel[key],\r\n\t\t\tnewValue: value,\r\n\t\t\tlabel: fieldUtils.label(field, this.i18nService),\r\n\t\t});\r\n\t}\r\n\r\n\thandleHideExpression() {\r\n\t\tthis.fieldList.forEach((field) => {\r\n\t\t\tif (field.hideExpression) {\r\n\t\t\t\tfield.hide = field.hideExpression(this.model(), field);\r\n\t\t\t\tif (field.hide) {\r\n\t\t\t\t\tfield.fieldControl?.clearValidators();\r\n\t\t\t\t\tfield.fieldControl?.updateValueAndValidity({ emitEvent: false });\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfield.fieldControl?.setValidators(\r\n\t\t\t\t\t\tfieldUtils.props(field)?.required ? (field?.validators ? field?.validators : Validators.required) : null,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tvalidate() {\r\n\t\tfor (let key in this.options().form?.controls) {\r\n\t\t\t!this.options().form?.controls[key]['disabled'] && this.options().form?.controls[key].markAsDirty();\r\n\t\t}\r\n\t\treturn this.options().form?.disabled ? true : this.options().form?.valid;\r\n\t}\r\n\r\n\tuniqueHook(field: FormField, hook: Observable<(field?: FormField) => void>) {\r\n\t\tfield.hook = hook.pipe(shareReplay(1));\r\n\t}\r\n\r\n\ttriggerHook() {\r\n\t\tthis.fieldList.forEach((field) => {\r\n\t\t\tfieldUtils.triggerHookAndSetValue(\r\n\t\t\t\tfield,\r\n\t\t\t\tthis.model()?.[field.key!],\r\n\t\t\t\tfalse,\r\n\t\t\t\ttrue,\r\n\t\t\t\tthis.hookObservers,\r\n\t\t\t\t() => {\r\n\t\t\t\t\tthis.handleHideExpression();\r\n\t\t\t\t},\r\n\t\t\t\tthis.datePipe,\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\treCalcLabelSize() {\r\n\t\tif (this.options().labelWidth) {\r\n\t\t\tthis.labelMinWidth.set(this.options().labelWidth);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.labelMinWidth.set(undefined);\r\n\t\tthis.cdr.detectChanges();\r\n\t\tthis.handleFieldLabels();\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\thandleFieldLabels() {\r\n\t\tconst fieldLabels: ElementRef[] = [];\r\n\t\tthis.getFieldLabels(this.fieldComponents, fieldLabels);\r\n\t\tconst offsetWidths = fieldLabels.map((fieldLabel) => fieldLabel.nativeElement.offsetWidth);\r\n\t\tthis.labelMinWidth.set(Math.max(...offsetWidths) + 24 + 'px');\r\n\t}\r\n\r\n\tgetFieldLabels(fieldComponents: QueryList<FormFieldComponent> | undefined, fieldLabels: ElementRef[]) {\r\n\t\tif (!fieldComponents) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tfieldComponents?.forEach((component) => {\r\n\t\t\tconst fieldLabel = component.getFieldLabel();\r\n\t\t\tif (fieldLabel) {\r\n\t\t\t\tfieldLabels.push(fieldLabel);\r\n\t\t\t}\r\n\t\t\tthis.getFieldLabels(component.getFieldComponents(), fieldLabels);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * 触发模型变动,针对表单字段数据\r\n\t * @param model 需要变动的数据\r\n\t * @param emitEvent 是否触发事件\r\n\t * @param detectModelChange 是否触发detectModelChange\r\n\t */\r\n\ttriggerModelEffect(model: any, emitEvent?: boolean, emitHook?: boolean) {\r\n\t\tObject.keys(model).forEach((key) => {\r\n\t\t\tconst field = this.getField(key)!;\r\n\t\t\tif (!field) return;\r\n\t\t\tfieldUtils.triggerHookAndSetValue(\r\n\t\t\t\tfield,\r\n\t\t\t\tmodel[key],\r\n\t\t\t\temitEvent ?? true,\r\n\t\t\t\temitHook ?? true,\r\n\t\t\t\tthis.hookObservers,\r\n\t\t\t\t() => {\r\n\t\t\t\t\tthis.handleHideExpression();\r\n\t\t\t\t},\r\n\t\t\t\tthis.datePipe,\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * 触发数据变动,针对非表单字段数据\r\n\t * @param dataList 外部数据列表\r\n\t */\r\n\ttriggerDataEffect(dataList: ExternalData[]) {\r\n\t\tdataList.forEach((data) => {\r\n\t\t\tthis.model()[data.key!] = data.value;\r\n\t\t\tif (data.label) {\r\n\t\t\t\tthis.changedModel[data.key!] = { name: data.label, value: data.value, type: 'inputtext' };\r\n\t\t\t\tthis.handleUpsert(data.key!, data.value, true);\r\n\t\t\t} else {\r\n\t\t\t\tthis.handleUpsert(data.key!, data.value);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * 触发日志变动,针对非表单字段数据\r\n\t * @param dataList 外部数据列表\r\n\t */\r\n\ttriggerLogEffect(dataList: ExternalData[]) {\r\n\t\tdataList.forEach((data) => {\r\n\t\t\tif (data.label) {\r\n\t\t\t\tthis.changedModel[data.key!] = { name: data.label, value: data.value, type: 'inputtext' };\r\n\t\t\t\tthis.handleUpsert(data.key!, data.value, true);\r\n\t\t\t} else {\r\n\t\t\t\tthis.handleUpsert(data.key!, data.value);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * 触发字段禁用,针对表单字段\r\n\t * @param keys 字段key列表\r\n\t */\r\n\ttriggerDisabledEffect(keys: string[]) {\r\n\t\tkeys?.forEach((key) => {\r\n\t\t\tthis.setFieldDisabled(key);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * 动态设置字段禁用,禁用前清除字段dirty标记\r\n\t * @param key 字段key\r\n\t */\r\n\tsetFieldDisabled(key: string) {\r\n\t\tthis.getField(key)?.fieldControl?.markAsPristine({ emitEvent: false });\r\n\t\tthis.getField(key)?.fieldControl?.disable({ emitEvent: false });\r\n\t}\r\n\r\n\t/**\r\n\t * 表单提交后的收尾处理,一般在提交接口的回调函数执行\r\n\t */\r\n\tfinalize() {\r\n\t\tthis.fieldList.forEach((field) => {\r\n\t\t\tif (['image', 'upload'].includes(field.type!)) {\r\n\t\t\t\tfield.fieldControl?.afterSubmit();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","@for (field of fields(); track field) {\n\t<form-field\n\t\tclass=\"w-full\"\n\t\t[field]=\"field\">\n\t</form-field>\n}\n","import { GridOptions } from '../grid/grid/grid.component';\nimport { Search } from '../am/am.component';\nimport { Button } from 'primeng/button';\nexport interface HrefBtnList extends Partial<Button> {\n\turl?: string;\n\ti18nKey?: string;\n\tidKey?: string;\n}\n\nexport interface PermissionBtn extends Partial<Button> {\n\tauth: number;\n\tonClick?: any;\n\tbtnDisabled?: Function;\n\tbtnHidden?: Function;\n\ti18nKey?: string;\n}\n\nexport interface GridList {\n\tgridOptions: GridOptions;\n\tsubTable: string;\n\tsubTableSource?: 'handle' | 'select';\n\tselectOptions?: GridOptions;\n\tsubDataKey: string;\n\ttitle?: string;\n\ti18nKey?: string;\n\tselectDataCb?: Function;\n\tsearchPrm?: Search;\n\tdeleteFunc?: Function;\n\tselectData?: any[];\n\tuniqueField?: string;\n\t[propName:string]:any,\n\ttype?:string\n}\n\nexport const formTypeToProps: any = {\n\tinputtext: 'inputTextProps',\n\tinputnumber: 'inputNumberProps',\n\tselect: 'selectProps',\n\ttreeselect: 'treeSelectProps',\n\tdatepicker: 'datePickerProps',\n\tautocomplete: 'autoCompleteProps',\n\tmultiselect: 'multiSelectProps',\n\tradio: 'radioProps',\n\ttextarea: 'textAreaProps',\n\tupload: 'uploadProps',\n\timage: 'imageProps',\n\tcodemirror: 'codeMirrorProps',\n\trowselector: 'rowSelectorProps',\n};\n","import { AmComponent } from './../am/am.component';\r\nimport {\r\n\tComponent,\r\n\tcomputed,\r\n\tContentChild,\r\n\teffect,\r\n\tHostListener,\r\n\tinject,\r\n\tinput,\r\n\tOnInit,\r\n\toutput,\r\n\tOutput,\r\n\tsignal,\r\n\tTemplateRef,\r\n\tViewChild,\r\n} from '@angular/core';\r\nimport { UserHistoryService, HistoryItem, ActionService } from '../../public-api';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { Router } from '@angular/router';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\nimport { Popover } from 'primeng/popover';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TieredMenu } from 'primeng/tieredmenu';\r\n@Component({\r\n\tselector: 'app-crumb-action',\r\n\tstandalone: true,\r\n\timports: [ButtonModule, TranslatePipe, CommonModule, TieredMenu],\r\n\ttemplateUrl: './crumb-action.component.html',\r\n\tstyleUrl: './crumb-action.component.scss',\r\n})\r\nexport class CrumbActionComponent extends AmComponent implements OnInit {\r\n\tuserHistoryService = inject(UserHistoryService);\r\n\taction = inject(ActionService);\r\n\tcrumbList = computed(() => {\r\n\t\tlet crumb = JSON.parse(JSON.stringify(this.userHistoryService.historyList()));\r\n\t\t// console.log('crumb',crumb)\r\n\t\t// @ts-ignore\r\n\t\tconst isI18n = window.appIsI18n;\r\n\t\tif (!isI18n) {\r\n\t\t\tcrumb.forEach((item: any) => {\r\n\t\t\t\titem.i18nKey = '';\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn crumb.map((v: any) => v);\r\n\t});\r\n\tcrumbTitle = signal<any>({});\r\n\t// router = inject(Router);\r\n\tisNew = false;\r\n\tisShowCog = input<boolean>(false);\r\n\tcrumbFront: HistoryItem[] = [];\r\n\tcrumbEnd: HistoryItem[] = [];\r\n\t@ViewChild('op') op!: Popover;\r\n\t@ViewChild('listOp') listOp!: Popover;\r\n\t@ViewChild('actOp') actOp!: Popover;\r\n\tsaveEvent = output();\r\n\t// 新建按钮\r\n\taddVisible = input<boolean | undefined>();\r\n\timportVisible = input<boolean>(true);\r\n\texportVisible = input<boolean>(true);\r\n\tnewUrl = input<string>('');\r\n\tconfigNewPath = input<string>('');\r\n\tonExport = input<Function>();\r\n\t// 新建按钮outline\r\n\toutlined = input<boolean>(false);\r\n\t// 是否是列表页面\r\n\tisList = input<boolean>(false);\r\n\t// 权限等级\r\n\tauthLevel = input<number>(-1);\r\n\tcancelEvent = output();\r\n\tactionList = input<any>([]);\r\n\tactionEvent = output();\r\n\tdata = input<any>();\r\n\tshowAct = false;\r\n\tmenus = input<any[]>([]);\r\n\tdisplayOpItems = computed(() => {\r\n\t\tconst listOpItems = [...this.menus()];\r\n\t\tif (this.importVisible()) {\r\n\t\t\tlistOpItems.push({\r\n\t\t\t\tlabel: 'app.tableAcImport',\r\n\t\t\t\ttype: 'import',\r\n\t\t\t\ticon: 'pi pi-upload',\r\n\t\t\t\tauth: 3,\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (this.exportVisible()) {\r\n\t\t\tlistOpItems.push({\r\n\t\t\t\tlabel: 'app.tableAcExport',\r\n\t\t\t\ttype: 'export',\r\n\t\t\t\ticon: 'pi pi-download',\r\n\t\t\t\tauth: 2,\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn listOpItems.filter((v) => this.authLevel() >= v.auth);\r\n\t});\r\n\t@ContentChild('newBtn', { descendants: false }) newBtnTemplateRef: TemplateRef<any> | undefined;\r\n\tisSave = computed(() => {\r\n\t\treturn this.action.saveSignal();\r\n\t});\r\n\tloading = computed(() => {\r\n\t\treturn this.action.loading();\r\n\t});\r\n\tsaveBtnDisable = input<boolean>(false);\r\n\tcurrentPageUrl = '';\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tlet last = this.crumbList().pop();\r\n\t\t\t\tif (last?.url) {\r\n\t\t\t\t\tthis.isNew = last.url?.indexOf('new') > -1 ? true : false;\r\n\t\t\t\t\tthis.currentPageUrl = last.url;\r\n\t\t\t\t}\r\n\t\t\t\tif (last?.title) {\r\n\t\t\t\t\tthis.crumbTitle.set(last);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst length = this.crumbList().length;\r\n\t\t\t\tif (length > 2) {\r\n\t\t\t\t\tthis.crumbFront = this.crumbList()\r\n\t\t\t\t\t\t.map((v: any) => {\r\n\t\t\t\t\t\t\tv.label = v.title;\r\n\t\t\t\t\t\t\treturn v;\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.filter((v: HistoryItem, index: number) => index <= length - 1 - 2);\r\n\t\t\t\t\tthis.crumbEnd = [this.crumbList()[length - 2], this.crumbList()[length - 1]];\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true },\r\n\t\t);\r\n\t}\r\n\t@HostListener('window:resize', ['$event'])\r\n\tresize(event: any) {\r\n\t\tlet windowWidth = (event.target as Window).innerWidth;\r\n\t\tif (windowWidth < 768) {\r\n\t\t\tthis.showAct = true;\r\n\t\t} else {\r\n\t\t\tthis.showAct = false;\r\n\t\t}\r\n\t}\r\n\tngOnInit(): void {\r\n\t\tthis.showAct = window.innerWidth < 768 ? true : false;\r\n\t}\r\n\r\n\tgoNew() {\r\n\t\tif (!this.configNewPath()) {\r\n\t\t\tif (this.newUrl() == '') return;\r\n\t\t\tthis.router.navigate([this.newUrl()]).then((res) => {\r\n\t\t\t\tthis.userHistoryService.setLastTitle('New');\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.router.navigate([this.configNewPath()]).then((res) => {\r\n\t\t\t\tthis.userHistoryService.setLastTitle('New');\r\n\t\t\t\tthis.userHistoryService.filterUrl(this.currentPageUrl);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcloseNew() {\r\n\t\tlet length = this.crumbList().length;\r\n\t\tlet last = this.crumbList()[length - 1];\r\n\t\tif (last) {\r\n\t\t\tthis.router.navigate([last.url]);\r\n\t\t} else {\r\n\t\t\tthis.cancelEvent.emit();\r\n\t\t}\r\n\t}\r\n\r\n\thandleSave() {\r\n\t\tthis.saveEvent.emit();\r\n\t}\r\n\r\n\tback(item: any) {\r\n\t\tthis.router.navigate([item.url]);\r\n\t}\r\n\r\n\ttoggle(event: any) {\r\n\t\tthis.op.toggle(event);\r\n\t}\r\n\r\n\ttoggleListOp(event: any) {\r\n\t\tif (!this.isList()) return;\r\n\t\tthis.listOp && this.listOp.toggle(event);\r\n\t}\r\n\r\n\tlistAct(item: any) {\r\n\t\tif (item.type === 'export') {\r\n\t\t\tif(this.onExport() && typeof this.onExport() == 'function'){\r\n\t\t\t\tthis.onExport && this.onExport()!();\r\n\t\t\t} else {\r\n\t\t\t\tthis.action.setAction({ type: item.type });\r\n\t\t\t}\r\n\t\t} else if (item.type === 'import') {\r\n\t\t\tthis.action.setAction({ type: item.type });\r\n\t\t} else {\r\n\t\t\tif (item.hasOwnProperty('onClick') && typeof item.onClick === 'function') {\r\n\t\t\t\titem.onClick(item);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tactEvent(item: any) {\r\n\t\tthis.actionEvent.emit(item);\r\n\t}\r\n\r\n\ttoggleAct(event: any) {\r\n\t\tif (this.isList()) return;\r\n\t\tthis.actOp && this.actOp.toggle(event);\r\n\t}\r\n\tsetSaveClass() {\r\n\t\treturn this.isSave() ? 'danger' : 'secondary';\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.action.saveSignal.set(false);\r\n\t}\r\n}\r\n","<div class=\"flex items-center gap-1\">\n <div class=\"left-btn flex gap-1\">\n <!-- TODO 权限数据接入 -->\n @if(!newBtnTemplateRef){\n @if(this.authLevel() > 2 && addVisible()){\n <p-button (click)=\"goNew()\" [outlined]=\"outlined()\">{{'app.create' | translate}}</p-button>\n }\n } @else {\n <ng-container *ngTemplateOutlet=\"newBtnTemplateRef\"></ng-container>\n }\n </div>\n @if(crumbList().length > 0){\n <div class=\"flex flex-col leading-none\">\n <div class=\"hidden md:flex\">\n @if(crumbList().length <= 2){\n @for(fchild of crumbList(); track fchild.url){\n <div class=\"crumb-title cursor-pointer text-[12px] max-w-[120px] overflow-hidden whitespace-nowrap text-ellipsis\" (click)=\"back(fchild)\">\n @if(fchild.i18nKey!= ''){\n {{ fchild!.i18nKey | translate}}\n } @else {\n {{fchild.title}}\n }\n </div>\n }\n } @else {\n <div class=\"flex\">\n <div class=\"crumb-title cursor-pointer select-crumb\">\n <div class=\"w-[17px] h-[17px] flex items-center font-bold text-[13px]\" (click)=\"toggle($event)\">\n ...\n </div>\n <p-tieredmenu #op [model]=\"crumbFront\" [popup]=\"true\" [style]=\"{position:'absolute'}\">\n <ng-template #item let-item let-hasSubmenu=\"hasSubmenu\">\n <a pRipple class=\"flex items-center p-tieredmenu-item-link\">\n <span class=\"ml-2 w-full\" (click)=\"back(item)\">\n @if(item.i18nKey!= ''){\n {{ item!.i18nKey | translate}}\n } @else {\n {{item.title}}\n }\n </span>\n </a>\n </ng-template>\n </p-tieredmenu>\n </div>\n @for(item of crumbEnd;track item.url){\n <div class=\"crumb-title cursor-pointer text-[12px] max-w-[120px] overflow-hidden whitespace-nowrap text-ellipsis\" (click)=\"back(item)\">\n @if(item.i18nKey!= ''){\n {{ item!.i18nKey | translate}}\n } @else {\n {{item.title}}\n }\n </div>\n }\n </div>\n }\n \n </div>\n <div class=\"min-w-0 text-text-color text-[12px] title-action\">\n <span\n [title]=\"isNew? 'New':crumbTitle().title\" \n class=\"hidden md:inline-block max-w-[150px] overflow-hidden text-ellipsis whitespace-nowrap\">\n {{isNew? 'New':crumbTitle().title}}\n </span>\n @if(isShowCog()){\n @if(isList()){\n <p-button variant=\"text\" severity=\"secondary\" icon=\"pi pi-cog\" aria-label=\"操作\" (onClick)=\"toggleListOp($event)\"/>\n @if(displayOpItems().length > 0){\n <p-tieredmenu #listOp [model]=\"displayOpItems()\" [popup]=\"true\" [style]=\"{position:'absolute'}\">\n <ng-template #item let-item let-hasSubmenu=\"hasSubmenu\">\n <a pRipple class=\"flex items-center p-tieredmenu-item-link\" (click)=\"listAct(item)\">\n <span [class]=\"item.icon\" class=\"p-tieredmenu-item-icon\"></span>\n <span class=\"ml-2\">{{ item.label | translate }}</span>\n <span *ngIf=\"item.shortcut\" class=\"ml-auto border border-surface rounded bg-emphasis text-muted-color text-xs p-1\">\n {{ item.shortcut }}\n </span>\n <i *ngIf=\"hasSubmenu\" class=\"pi pi-angle-right ml-auto\"></i>\n </a>\n </ng-template>\n </p-tieredmenu>\n }\n } @else {\n <p-button variant=\"text\" severity=\"secondary\" icon=\"pi pi-cog\" aria-label=\"操作\" (onClick)=\"toggleAct($event)\"/>\n @if(actionList().length > 0 && showAct){\n <p-tieredmenu #actOp [model]=\"actionList()\" [popup]=\"true\" [style]=\"{position:'absolute'}\">\n <ng-template #item let-item let-hasSubmenu=\"hasSubmenu\">\n <a pRipple \n class=\"flex items-center p-tieredmenu-item-link\"\n [class]=\"(item.auth || 0) > (authLevel() || 0) || !!item.btnHidden?.(data()) ? 'hidden' : 'block'\" \n (click)=\"actEvent(item)\">\n <span class=\"ml-2\">{{item.i18nKey ? (item.i18nKey | translate) : item.label}}</span>\n <span *ngIf=\"item.shortcut\" class=\"ml-auto border border-surface rounded bg-emphasis text-muted-color text-xs p-1\">\n {{ item.shortcut }}\n </span>\n <i *ngIf=\"hasSubmenu\" class=\"pi pi-angle-right ml-auto\"></i>\n </a>\n </ng-template>\n </p-tieredmenu>\n }\n }\n }\n @if(this.authLevel() > 2 && !isList()){\n <p-button \n variant=\"text\" \n [severity]=\"setSaveClass()\" \n icon=\"pi pi-cloud-upload\" \n [loading]=\"loading()\"\n aria-label=\"手动保存\"\n [disabled]=\"saveBtnDisable()\" \n class=\"p-0\"\n (click)=\"handleSave()\">\n </p-button>\n }\n <!-- @if(crumbList().length >= 2){ -->\n <p-button \n variant=\"text\" \n severity=\"secondary\" \n icon=\"pi pi-times\" \n aria-label=\"关闭\" \n class=\"p-0\"\n (click)=\"closeNew()\">\n </p-button>\n <!-- } -->\n </div>\n </div>\n } @else {\n <!-- 初始节点 -->\n <div class=\"min-w-0 flex items-center text-[14px] text-text-color\">\n <span \n [title]=\"crumbTitle().i18nKey != '' ? (crumbTitle().i18nKey | translate) : crumbTitle().title\"\n class=\"hidden md:inline-block max-w-[120px] overflow-hidden whitespace-nowrap text-ellipsis\">\n @if(crumbTitle().i18nKey != ''){\n {{crumbTitle().i18nKey | translate}}\n } @else {\n {{crumbTitle().title}}\n }\n </span>\n @if(isShowCog()){\n <p-button \n variant=\"text\"\n severity=\"secondary\" \n icon=\"pi pi-cog\" \n aria-label=\"操作\" \n (onClick)=\"toggleListOp($event)\"/>\n @if(displayOpItems().length > 0){\n <p-tieredmenu #listOp [model]=\"displayOpItems()\" [popup]=\"true\" [style]=\"{position:'absolute'}\">\n <ng-template #item let-item let-hasSubmenu=\"hasSubmenu\">\n <a pRipple class=\"flex items-center p-tieredmenu-item-link\" (click)=\"listAct(item)\">\n <span [class]=\"item.icon\" class=\"p-tieredmenu-item-icon\"></span>\n <span class=\"ml-2\">{{ item.label | translate }}</span>\n <span *ngIf=\"item.shortcut\" class=\"ml-auto border border-surface rounded bg-emphasis text-muted-color text-xs p-1\">\n {{ item.shortcut }}\n </span>\n <i *ngIf=\"hasSubmenu\" class=\"pi pi-angle-right ml-auto\"></i>\n </a>\n </ng-template>\n </p-tieredmenu>\n }\n \n }\n @if(!isList()){\n <p-button \n variant=\"text\" \n severity=\"secondary\" \n icon=\"pi pi-cloud-upload\" \n aria-label=\"手动保存\"\n [disabled]=\"saveBtnDisable()\" \n class=\"p-0\"\n (click)=\"handleSave()\">\n </p-button>\n <p-button \n variant=\"text\" \n severity=\"secondary\" \n icon=\"pi pi-times\" \n aria-label=\"关闭\" \n class=\"p-0\"\n (click)=\"closeNew()\">\n </p-button>\n }\n </div>\n }\n \n</div>","import { Component, effect } from '@angular/core';\nimport { ButtonModule } from 'primeng/button';\nimport { ActionService } from '../../service/action.service';\n\nexport interface Page {\n\tstartRow?: number;\n\tendRow?: number;\n\ttotal?: number;\n\tmode?: 'server' | 'client';\n}\n\n@Component({\n\tselector: 'custom-pager',\n\tstandalone: true,\n\timports: [ButtonModule],\n\ttemplateUrl: './pager.component.html',\n\tstyleUrl: './pager.component.scss',\n})\nexport class PagerComponent {\n\tpage: Page | undefined;\n\n\tconstructor(private action: ActionService) {\n\t\teffect(() => {\n\t\t\tthis.page = this.action.getPage();\n\t\t});\n\t}\n}\n","@if (page?.total) {\n\t@if (page?.mode == 'client') {\n\t\t<div class=\"page-container flex p-2 items-center\">\n\t\t\t<span class=\"mr-2\">共 {{ page ? page.total : 0 }} 条</span>\n\t\t</div>\n\t} @else {\n\t\t<div class=\"page-container flex p-2 items-center\">\n\t\t\t<span>{{ page ? (page.startRow || 0) + 1 : 0 }}</span>\n\t\t\t<span> - </span>\n\t\t\t<span>{{ page ? page.endRow : 0 }}</span>\n\t\t\t<span class=\"px-1\"> / </span>\n\t\t\t<span class=\"mr-2\">{{ page ? page.total : 0 }}</span>\n\t\t</div>\n\t}\n}\n","import { Component, input, effect, inject } from '@angular/core';\nimport { ConfirmationService } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { GridComponent } from '../grid/grid.component';\nimport { Toast } from 'primeng/toast';\nimport { I18nService } from '../../service/i18n.service';\n\n@Component({\n\tselector: 'custom-actions',\n\tstandalone: true,\n\timports: [ButtonModule, Toast, TranslatePipe],\n\ttemplateUrl: './actions.component.html',\n\tstyleUrl: './actions.component.scss',\n})\nexport class ActionsComponent {\n\tgrid = input<GridComponent>();\n\tactions = input<any[]>();\n\tisCancel = input<boolean>(true);\n\tauthLevel = input<number>();\n\tselectedRows: any[] = [];\n i18n = inject(I18nService)\n\tconstructor(private confirm: ConfirmationService) {\n\t\teffect(() => {\n\t\t\tthis.selectedRows = this.grid()?.selectedRows()!;\n\t\t});\n\t}\n\n\tgetClass(action: any) {\n\t\tif (action.label == '删除') {\n\t\t\treturn !!action.btnHidden?.({ action: action, rows: this.selectedRows, grid: this.grid() }) ? 'hidden' : 'block';\n\t\t}\n\t\treturn (action.auth || 0) > (this.authLevel() || 0) ||\n\t\t\t!!action.btnHidden?.({ action: action, rows: this.selectedRows, grid: this.grid() })\n\t\t\t? 'hidden'\n\t\t\t: 'block';\n\t}\n\n\tdoCancelAction() {\n\t\tthis.grid()?.cancelSelect();\n\t}\n\n\tdoAction(event: any, action: any) {\n\t\taction.onClick && action.onClick?.({ originalEvent: event, action: action, rows: this.selectedRows, grid: this.grid() });\n\t}\n\n\tonActionClick(event: any, action: any) {\n\t\tif (action.label == '删除') {\n\t\t\tthis.confirm.confirm({\n\t\t\t\tmessage: this.i18n.fanyi('modal.rowDelConfirm'),\n\t\t\t\theader: this.i18n.fanyi('modal.delTips'),\n\t\t\t\ticon: 'pi pi-info-circle',\n\t\t\t\trejectButtonProps: {\n\t\t\t\t\tlabel: this.i18n.fanyi('modal.cancel'),\n\t\t\t\t\tseverity: 'secondary',\n\t\t\t\t\ttext: true,\n\t\t\t\t},\n\t\t\t\tacceptButtonProps: {\n\t\t\t\t\tlabel: this.i18n.fanyi('modal.confirm'),\n\t\t\t\t\toutlined: true,\n\t\t\t\t},\n\t\t\t\taccept: () => this.doAction(event, action),\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tthis.doAction(event, action);\n\t}\n}\n","<p-toast />\r\n<div class=\"flex flex-wrap gap-4 justify-center\">\r\n\t@if (isCancel()) {\r\n\t\t<p-button\r\n\t\t\t[severity]=\"'secondary'\"\r\n\t\t\t[label]=\"('primeng.cancel' | translate) + ' ' + selectedRows.length\"\r\n\t\t\tsize=\"small\"\r\n\t\t\t(click)=\"doCancelAction()\">\r\n\t\t</p-button>\r\n\t}\r\n\r\n\t@for (action of actions(); track action) {\r\n\t\t<p-button\r\n\t\t\tsize=\"small\"\r\n\t\t\t[variant]=\"action.variant\"\r\n\t\t\t[icon]=\"action.icon\"\r\n\t\t\t[loading]=\"action.loading\"\r\n\t\t\t[severity]=\"action.severity\"\r\n\t\t\t[label]=\"action.label === '删除' ? ('app.tableAcDel' | translate) : action.i18nKey ? (action.i18nKey | translate) : action.label\"\r\n\t\t\t[styleClass]=\"getClass(action)\"\r\n\t\t\t[disabled]=\"action.btnDisabled?.({ action: action, rows: selectedRows, grid: grid() }) ?? false\"\r\n\t\t\t(onClick)=\"onActionClick($event, action)\"></p-button>\r\n\t}\r\n</div>\r\n","import { Component, input, output, effect, ViewChild, ElementRef } from '@angular/core';\nimport { ActionsComponent } from '../grid/actions/actions.component';\nimport { SearchComponent } from '../search/search/search.component';\nimport { GridOptions, GridComponent } from '../grid/grid/grid.component';\nimport { ButtonModule } from 'primeng/button';\nimport { ActionService } from '../service/action.service';\n\n@Component({\n\tselector: 'custom-head',\n\tstandalone: true,\n\timports: [SearchComponent, ActionsComponent, ButtonModule],\n\ttemplateUrl: './head.component.html',\n\tstyleUrl: './head.component.scss',\n})\nexport class HeadComponent {\n\t@ViewChild('actionsContainerRef', { static: false }) actionsContainerRef!: ElementRef;\n\t@ViewChild('searchContainerRef', { static: false }) searchContainerRef!: ElementRef;\n\tgridOptions = input<GridOptions>();\n\tgrid = input<GridComponent>();\n\tactions = input<any[]>();\n\tauthLevel = input<number>();\n\trowSelected = false;\n\n\tconstructor(private action: ActionService) {\n\t\teffect(() => {\n\t\t\tthis.rowSelected = !!this.grid()?.selectedRows().length;\n\t\t\tconsole.log('this.rowSelected---', this.rowSelected);\n\t\t\tthis.toggleChildren();\n\t\t});\n\t}\n\n\ttoggleChildren() {\n\t\tthis.actionsContainerRef.nativeElement.classList.add('child-hide');\n\t\tthis.searchContainerRef.nativeElement.classList.add('child-hide');\n\t\tif (this.rowSelected) {\n\t\t\tthis.actionsContainerRef.nativeElement.classList.remove('child-hide');\n\t\t}\n\t\tif (!this.rowSelected) {\n\t\t\tthis.searchContainerRef.nativeElement.classList.remove('child-hide');\n\t\t}\n\t}\n}\n","<div class=\"lg:min-w-[560px] h-[41.5px]\">\n\t<div\n\t\tclass=\"py-2\"\n\t\t#actionsContainerRef>\n\t\t<custom-actions\n\t\t\t[actions]=\"actions()\"\n\t\t\t[authLevel]=\"authLevel()\"\n\t\t\t[grid]=\"grid()\"></custom-actions>\n\t</div>\n\t<div\n\t\tclass=\"py-1\"\n\t\t#searchContainerRef>\n\t\t<custom-search [gridOptions]=\"gridOptions()\"></custom-search>\n\t</div>\n</div>\n","import { Component, ViewChild, model, input, output, inject, effect, isDevMode } from '@angular/core';\nimport { ButtonModule } from 'primeng/button';\nimport { DialogModule } from 'primeng/dialog';\nimport { FileUpload } from 'primeng/fileupload';\nimport { SelectModule } from 'primeng/select';\nimport { HttpClient, HttpEvent, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { ActionService } from '../service/action.service';\nimport { FormsModule } from '@angular/forms';\nimport { GridComponent } from '../grid/grid/grid.component';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { PlatformLocation } from '@angular/common';\n\nexport interface ImportOptions {\n\ttitle?: string;\n\tfileName?: string;\n\tdata?: any;\n}\n\n@Component({\n\tselector: 'app-import',\n\tstandalone: true,\n\timports: [FormsModule, ButtonModule, DialogModule, FileUpload, SelectModule, TranslatePipe],\n\ttemplateUrl: './import.component.html',\n\tstyleUrl: './import.component.scss',\n})\nexport class ImportComponent {\n\t@ViewChild(FileUpload) fileUpload!: FileUpload;\n\tvisible = model<boolean>(false);\n\tfileName = input<string>();\n\tfuncName = input<string>();\n\torgVisible = input<boolean>(false);\n\torgField = input<string>();\n\tmodelName = input<string>('');\n\tgrid = input<GridComponent>();\n\tdisabled: boolean = false;\n\tplatformLocation = inject(PlatformLocation);\n\tdepts: any[] = [];\n\tdept: any;\n\n\tconstructor(\n\t\tprivate http: HttpClient,\n\t\tprivate action: ActionService,\n\t) {\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tconst action = this.action.getAction();\n\t\t\t\tif (action?.type === 'import') {\n\t\t\t\t\tthis.initDepts();\n\t\t\t\t\tthis.visible.set(true);\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t}\n\n\tngOnDestroy() {\n\t\tthis.action.setAction(undefined);\n\t}\n\n\tinitDepts() {\n\t\tconst userInfo = JSON.parse(localStorage.getItem('userInfo')!);\n\t\tthis.depts = userInfo.depts;\n\t}\n\n\tcancel() {\n\t\tthis.visible.set(false);\n\t}\n\n\tdownload() {\n\t\tlet baseHref = this.platformLocation.getBaseHrefFromDOM();\n\t\tconst link = document.createElement('a');\n\t\tlink.href = isDevMode()\n\t\t\t? '/importFiles/' + this.fileName() + '.xlsx'\n\t\t\t: `/${baseHref.replace(/\\/(.*?)\\//, '$1')}/importFiles/${this.fileName()}.xlsx`;\n\t\tlink.download = this.fileName() + '.xlsx';\n\t\tdocument.body.appendChild(link);\n\t\tlink.click();\n\t\tdocument.body.removeChild(link);\n\t}\n\n\tupload(item: any) {\n\t\tthis.disabled = true;\n\t\tlet userInfo = JSON.parse(window.localStorage.getItem('userInfo')!) || {};\n\t\tconst formData = new FormData();\n\t\tformData.append('file', item.files[0] as any);\n\t\tif (this.orgVisible()) {\n\t\t\tformData.append(this.orgField() ?? 'orgId', this.dept ?? '');\n\t\t}\n\t\tformData.append('modelName', this.modelName());\n\t\tformData.append('operator', userInfo.userName || '');\n\t\tconst req = new HttpRequest('POST', this.funcName() ?? 'import', formData, {\n\t\t\treportProgress: true,\n\t\t\twithCredentials: false,\n\t\t});\n\n\t\treturn this.http.request(req).subscribe({\n\t\t\tnext: (event: HttpEvent<any>) => {\n\t\t\t\tif (event instanceof HttpResponse) {\n\t\t\t\t\tthis.disabled = false;\n\t\t\t\t\tthis.grid()?.getData();\n\t\t\t\t\tthis.fileUpload.clear();\n\t\t\t\t\tthis.visible.set(false);\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: (err) => {\n\t\t\t\tthis.disabled = false;\n\t\t\t\tthis.grid()?.getData();\n\t\t\t\tthis.fileUpload.clear();\n\t\t\t\tthis.visible.set(false);\n\t\t\t},\n\t\t});\n\t}\n}\n","<p-dialog\n\t[header]=\"'import.title' | translate\"\n\t[modal]=\"true\"\n\tappendTo=\"body\"\n\t[style]=\"{ width: '30rem' }\"\n\t(onHide)=\"cancel()\"\n\t[(visible)]=\"visible\">\n\t<div class=\"grid p-fluid\">\n\t\t<div class=\"col-12\">\n\t\t\t<span style=\"font-size: 13px\">1.{{ 'import.templateDownload' | translate }}</span>\n\t\t</div>\n\t\t<div\n\t\t\tclass=\"col-12\"\n\t\t\tstyle=\"padding: 0.5rem\">\n\t\t\t<button\n\t\t\t\tpButton\n\t\t\t\tclass=\"p-element p-button-text p-button p-component\"\n\t\t\t\t(click)=\"download()\">\n\t\t\t\t<span class=\"p-button-label\">\n\t\t\t\t\t<i class=\"pi pi-download\"></i><span class=\"pl-2\">{{ 'import.downloadTemplate' | translate }}</span>\n\t\t\t\t</span>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class=\"col-12\">\n\t\t\t<span style=\"font-size: 13px\">2.{{ 'import.fileUpload' | translate }}</span>\n\t\t</div>\n\t\t@if (orgVisible()) {\n\t\t\t<div\n\t\t\t\tclass=\"col-12\"\n\t\t\t\tstyle=\"padding: 1rem 0.5rem 0 0.5rem\">\n\t\t\t\t<p-select\n\t\t\t\t\t[style]=\"{ width: '275px' }\"\n\t\t\t\t\t[options]=\"depts\"\n\t\t\t\t\t[(ngModel)]=\"dept\"\n\t\t\t\t\tappendTo=\"body\"\n\t\t\t\t\toptionLabel=\"deptName\"\n\t\t\t\t\toptionValue=\"deptId\"\n\t\t\t\t\t[placeholder]=\"'import.deptPlaceholder' | translate\"\n\t\t\t\t\t[size]=\"'small'\"\n\t\t\t\t\tclass=\"w-full md:w-56\" />\n\t\t\t</div>\n\t\t}\n\t\t<div\n\t\t\tclass=\"p-file-import col-12\"\n\t\t\tstyle=\"padding: 0.5rem\">\n\t\t\t<p-fileUpload\n\t\t\t\t#primeFileUpload\n\t\t\t\tchooseStyleClass=\"p-element p-button-text p-button p-component\"\n\t\t\t\tmode=\"basic\"\n\t\t\t\tchooseIcon=\"pi pi-upload\"\n\t\t\t\t[chooseLabel]=\"'import.uploadFile' | translate\"\n\t\t\t\t[auto]=\"true\"\n\t\t\t\t[customUpload]=\"true\"\n\t\t\t\t(uploadHandler)=\"upload($event)\"></p-fileUpload>\n\t\t</div>\n\t</div>\n</p-dialog>\n","import { Component, effect, input } from '@angular/core';\nimport { AvatarModule } from 'primeng/avatar';\nimport { TraceMessage } from '../am/am.component';\nimport { DatePipe } from '@angular/common';\n\n@Component({\n\tselector: 'custom-log',\n\tstandalone: true,\n\timports: [AvatarModule, DatePipe],\n\ttemplateUrl: './log.component.html',\n\tstyleUrl: './log.component.scss',\n\tproviders: [DatePipe],\n})\nexport class LogComponent {\n\tlogs = input<TraceMessage[]>([]);\n\tparsedLogs: any[] = [];\n\tid = input<any>();\n\ttargets: any[] = [];\n\n\tconstructor(private datePipe: DatePipe) {\n\t\teffect(() => {\n\t\t\tif (!this.logs()) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.parsedLogs = [];\n\t\t\tthis.logs().forEach((log) => {\n\t\t\t\tconst parsedLog: any = { ...log };\n\t\t\t\tparsedLog.content = log.content ? log.content.split(';') : [];\n\t\t\t\tparsedLog.subContent = log.subContent ? log.subContent.replace(/;+$/, '').split(';') : [];\n\t\t\t\tthis.parsedLogs.push(parsedLog);\n\t\t\t});\n\t\t});\n\t}\n\n\tgetLastTwoCharacters(str: string) {\n\t\treturn str?.slice(-2);\n\t}\n}\n","<div class=\"log-panel\">\n\t<div class=\"log-content\">\n\t\t@for (log of parsedLogs; track log) {\n\t\t\t<div class=\"log-item p-2\">\n\t\t\t\t<div class=\"log-item-header flex flex-row\">\n\t\t\t\t\t<p-avatar\n\t\t\t\t\t\t[label]=\"getLastTwoCharacters(log.operator)\"\n\t\t\t\t\t\tstyleClass=\"mr-2 min-w-[40px]\"\n\t\t\t\t\t\tsize=\"large\" />\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<span class=\"px-2 font-semibold log-item-user\">{{ log.operator }}</span>\n\t\t\t\t\t\t\t<span class=\"log-item-time\">{{ log.createdAt | date: 'yyyy-MM-dd HH:mm:ss' : 'GMT' }}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"px-2\">\n\t\t\t\t\t\t\t@for (item of log.content; track item) {\n\t\t\t\t\t\t\t\t<div class=\"flex items-start\">\n\t\t\t\t\t\t\t\t\t<span class=\"iconfont icon-main mr-1\"></span>\n\t\t\t\t\t\t\t\t\t<span class=\"log-item-content\">{{ item }}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t@for (subItem of log.subContent; track subItem) {\n\t\t\t\t\t\t\t\t<div class=\"flex items-start\">\n\t\t\t\t\t\t\t\t\t<span class=\"ml-6 log-item-content\">{{ subItem }}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t}\n\t</div>\n</div>\n","import { inject, Injectable, signal } from '@angular/core'\r\nimport { ActivatedRoute, ActivatedRouteSnapshot, NavigationEnd, Router } from '@angular/router';\r\nimport { filter, map, config } from 'rxjs';\r\nimport { I18nService } from './i18n.service';\r\n\r\nexport interface HistoryItem {\r\n // type: 'routerLink' | 'create',\r\n title: string,\r\n url: string,\r\n configPath: string,\r\n i18nKey:string\r\n}\r\n\r\n@Injectable({providedIn:'root'})\r\nexport class UserHistoryService {\r\n historyList = signal<HistoryItem[]>([])\r\n router$ = this.router.events\r\n .pipe(\r\n filter(event => event instanceof NavigationEnd),\r\n map((event) =>{\r\n // console.log('event----',event)\r\n return this.createBreadcrumbs(this.router.routerState.snapshot.root)\r\n })\r\n )\r\n detailName = ''\r\n i18n =inject(I18nService)\r\n constructor(public router: Router,public route: ActivatedRoute){\r\n\r\n // window.addEventListener('beforeunload',(event) => {\r\n // window.sessionStorage.setItem('crumbAction', JSON.stringify(this.historyList()))\r\n // })\r\n // window.addEventListener('load',() => {\r\n // let history = window.sessionStorage.getItem('crumbAction')\r\n // console.log('crumbAction-localstory',history)\r\n // if(history){\r\n // this.historyList.set(JSON.parse(history))\r\n // }\r\n // })\r\n }\r\n\r\n\r\n\r\n \r\n private createBreadcrumbs(route: ActivatedRouteSnapshot, url: string = '', breadcrumbs: any[] = []):any {\r\n const children: ActivatedRouteSnapshot[] = route.children;\r\n if(children.length == 0) return \r\n const child = children[0];\r\n const routeURL: string = child.url.map(segment => segment.path).join('/');\r\n const queryKeys = Object.keys(child.queryParams) || []\r\n if (routeURL !== '') {\r\n url += `/${routeURL}`;\r\n }\r\n if(queryKeys.length > 0){\r\n url+='?'\r\n queryKeys.forEach(v => {\r\n url+=`${v}=${child.queryParams[v]}`\r\n })\r\n }\r\n let title: string = '';\r\n if (child.data['title']) {\r\n if (typeof child.data['title'] === 'function') {\r\n title = child.data['title'](child);\r\n } else {\r\n title = child.data['title']\r\n }\r\n }\r\n let i18nKey = child.data['i18nKey'] ? child.data['i18nKey'] : ''\r\n // const configPath: string = child.routeConfig?.path as string\r\n const configPath = child.params.hasOwnProperty('id') || child.params.hasOwnProperty('code') ? url.replace(/([^\\/]*)$/, \"\") : url\r\n const code = url.split('/')[2] || ''\r\n // @ts-ignore\r\n if(window.appIsI18n){\r\n i18nKey = i18nKey == '' && code != '' ? `menus.${code}`: i18nKey\r\n }\r\n const paramsKeys = Object.keys(child.params)\r\n // console.log('title',child,configPath,url)\r\n if(title && configPath){\r\n let isExit = this.historyList().filter(v => v.configPath == configPath) \r\n // configPath.indexOf(':') > -1 && paramsKeys.length > 0 && ( title = this.detailName)\r\n if(isExit.length == 0){\r\n this.historyList.update((value) => [...value,{title,url,configPath,i18nKey}])\r\n } else {\r\n this.backUrl(url)\r\n }\r\n }\r\n // console.log('history----',this.historyList())\r\n return this.createBreadcrumbs(child, url, breadcrumbs);\r\n }\r\n addHistoryList(item: HistoryItem){\r\n this.historyList.update((value) => [...value,item])\r\n }\r\n\r\n backUrl(url:string){\r\n let index = this.historyList().findIndex(v => v.url == url)\r\n let length = this.historyList().length\r\n if(index + 1 !== length){\r\n let newHistory = this.historyList().slice(0,index)\r\n this.historyList.set(newHistory)\r\n }\r\n }\r\n\r\n lastPop(){\r\n this.historyList().pop()\r\n }\r\n // 清空history\r\n clear(path?:string){\r\n window.sessionStorage.removeItem('crumbAction')\r\n let newHistory :any= []\r\n if(path) {\r\n newHistory = this.historyList().filter(v => v.url === path)\r\n }\r\n this.historyList.set(newHistory)\r\n }\r\n\r\n // 新增编辑不是同一个路由 需过滤新建路由\r\n filterUrl(url:string){\r\n let newHistory = this.historyList().filter(v => v.url !== url)\r\n this.historyList.set(newHistory)\r\n }\r\n \r\n // 手动触发详情页面获取title \r\n setLastTitle(title:string){\r\n const last = this.historyList().pop() as HistoryItem\r\n this.historyList.update((value) => ([...value,{...last,title}]))\r\n console.log('set--title',this.historyList())\r\n // const last = this.historyList()[this.historyList().length - 1]\r\n\r\n }\r\n\r\n}","import { Component, computed, effect, ElementRef, HostListener, inject, input, output, Renderer2, signal, ViewChild } from '@angular/core';\nimport { I18nService } from '../service/i18n.service';\nimport { FormsModule } from '@angular/forms';\nimport { ListboxModule } from 'primeng/listbox';\nimport { Popover } from 'primeng/popover';\nimport { toObservable } from '@angular/core/rxjs-interop';\nexport interface Step {\n\tlabel: string;\n\ti18nKey?: string;\n\tvalue: number | 'start' | 'end';\n}\n\n@Component({\n\tselector: 'custom-steps',\n\tstandalone: true,\n\timports: [FormsModule, ListboxModule, Popover],\n\ttemplateUrl: './steps.component.html',\n\tstyleUrl: './steps.component.scss',\n})\nexport class StepsComponent {\n\t@ViewChild('container', { static: false }) containerRef!: ElementRef;\n\tmodelLog = input<boolean>(false);\n\tneedSelfAdjusting = input<boolean>(true);\n\tsteps = input<Step[] | undefined>(undefined);\n\tdisplaySteps = computed(() => {\n\t\tif (this.steps() === undefined) return [];\n\t\tconst steps = [...this.steps()!];\n\t\tsteps.unshift({ value: 'start', label: '...' });\n\t\tsteps.push({ value: 'end', label: '...' });\n\t\treturn steps.filter((step) => !this.excludeValues().includes(step.value));\n\t});\n\texcludeValues = signal<(number | 'start' | 'end')[]>([]);\n\tcurrent = input<number>(2);\n\ti18n = inject(I18nService);\n\tchange = output<number>();\n\tauthLevel = input<number>(-1);\n\tisClick = input<boolean>(true);\n\n\twidthList: number[] = [];\n\tSTART_BUTTON_WIDTH = 32;\n\tEND_BUTTON_WIDTH = 47;\n\tSTEP_ITEM_MARGIN = 2;\n\n\tstartIndex = 0;\n\tendIndex = 0;\n\tstartSteps: Step[] = [];\n\tendSteps: Step[] = [];\n\tmaxWidth = 0;\n\n\t@HostListener('window:resize', ['$event'])\n\tonResize() {\n\t\tthis.calcMaxWidth();\n\t\tthis.refreshSteps();\n\t}\n\n\tconstructor(private renderer: Renderer2) {\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tlet current = this.current();\n\t\t\t\tif (current != 0 && this.steps()!.length > 0) {\n\t\t\t\t\tthis.refreshSteps();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tthis.calcMaxWidth();\n\t\t\t\tthis.refreshSteps();\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t\tconst steps$ = toObservable(this.steps).subscribe((steps) => {\n\t\t\tif (steps === undefined) return;\n\t\t\tthis.initSteps();\n\t\t\tsteps$.unsubscribe();\n\t\t});\n\t}\n\n\tinitSteps() {\n\t\tthis.calcMaxWidth();\n\t\tthis.initWidthList();\n\t\tthis.refreshSteps();\n\t}\n\n\trefreshSteps() {\n\t\tthis.alternateWidthList();\n\t\tthis.handleSteps();\n\t}\n\n\tinitWidthList() {\n\t\tthis.widthList = [];\n\t\tconst children = this.renderer.parentNode(this.containerRef.nativeElement).children[0].children;\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\tif (!children[i].classList.contains('step-item')) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (children[i].classList.contains('start-item')) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (children[i].classList.contains('end-item')) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis.widthList.push((children[i].offsetWidth || 0) + this.STEP_ITEM_MARGIN);\n\t\t}\n\t}\n\n\tcalcMaxWidth() {\n\t\tif (window.innerWidth < 768) {\n\t\t\tthis.maxWidth = window.innerWidth * 0.96;\n\t\t\treturn;\n\t\t}\n\t\tif (!this.modelLog()) {\n\t\t\tthis.maxWidth = window.innerWidth * 0.64;\n\t\t\treturn;\n\t\t}\n\t\tconst centerWidth = window.innerWidth < 1024 ? window.innerWidth - 300 : window.innerWidth - 400;\n\t\tthis.maxWidth = centerWidth * 0.64;\n\t}\n\n\tshowStartSteps(event: any, startOp: any) {\n\t\tif (this.authLevel() < 4) return;\n\t\tstartOp.toggle(event);\n\t}\n\n\tshowEndSteps(event: any, endOp: any) {\n\t\tif (this.authLevel() < 4) return;\n\t\tendOp.toggle(event);\n\t}\n\n\tgetClass(i: number, classes: string[]) {\n\t\tlet result = ['step-item', 'flex', 'items-center', 'justify-center'];\n\t\tresult = result.concat(classes);\n\t\tif (this.authLevel() < 4 || !this.isClick()) {\n\t\t\tresult.push('cursor-not-allowed');\n\t\t} else {\n\t\t\tresult.push('cursor-pointer allow-hover');\n\t\t}\n\t\tconst { value } = this.displaySteps()![i];\n\t\tif (i == 0) {\n\t\t\tresult.push('step-first');\n\t\t} else if (i + 1 == this.displaySteps()?.length) {\n\t\t\tresult.push('step-last');\n\t\t}\n\t\tif (value == this.current()) {\n\t\t\tresult.push('step-active');\n\t\t\t// result.push('md:flex-none flex-1');\n\t\t}\n\t\treturn result.join(' ');\n\t}\n\n\tchangeStatus(step: any) {\n\t\tthis.change.emit(step.value);\n\t}\n\n\tonStartStepsChange(event: any) {\n\t\tconst step = event.value;\n\t\tthis.change.emit(step.value);\n\t}\n\n\tonEndStepsChange(event: any) {\n\t\tconst step = event.value;\n\t\tthis.change.emit(step.value);\n\t}\n\n\talternateWidthList() {\n\t\tlet index = this.steps()!.findIndex((s) => s.value === this.current());\n\t\tindex = index === -1 ? 0 : index;\n\t\tthis.startIndex = index;\n\t\tthis.endIndex = index;\n\n\t\tlet leftIndex = index - 1;\n\t\tlet rightIndex = index + 1;\n\t\tlet turn = 'right';\n\t\tlet totalWidth = this.widthList[index];\n\t\t\n\t\twhile (leftIndex >= 0 || rightIndex < this.widthList.length) {\n\t\t\tif (turn === 'right' && rightIndex < this.widthList.length) {\n\t\t\t\ttotalWidth += this.widthList[rightIndex];\n\t\t\t\tif (this.isExceedMaxWidth(totalWidth)) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tthis.endIndex = rightIndex;\n\t\t\t\trightIndex++;\n\t\t\t\tturn = 'left';\n\t\t\t} else if (turn === 'left' && leftIndex >= 0) {\n\t\t\t\ttotalWidth += this.widthList[leftIndex];\n\t\t\t\tif (this.isExceedMaxWidth(totalWidth)) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tthis.startIndex = leftIndex;\n\t\t\t\tleftIndex--;\n\t\t\t\tturn = 'right';\n\t\t\t} else {\n\t\t\t\tturn = rightIndex < this.widthList.length ? 'right' : 'left';\n\t\t\t}\n\t\t}\n\t}\n\n\tisExceedMaxWidth(totalWidth: number) {\n\t\tif (!this.needSelfAdjusting()) {\n\t\t\treturn false;\n\t\t}\n\t\ttotalWidth += this.startIndex === 0 ? 0 : this.START_BUTTON_WIDTH;\n\t\ttotalWidth += this.endIndex === this.widthList.length - 1 ? 0 : this.END_BUTTON_WIDTH;\n\t\tconsole.log('----------------totalWidth', totalWidth, this.maxWidth);\n\t\treturn totalWidth >= this.maxWidth;\n\t}\n\n\thandleSteps() {\n\t\tconst steps = this.steps()!;\n\t\tconst excludeValues: any[] = [];\n\t\tfor (let i = 0; i < steps.length; i++) {\n\t\t\tif (i < this.startIndex) {\n\t\t\t\texcludeValues.push(steps[i].value);\n\t\t\t}\n\t\t\tif (i > this.endIndex) {\n\t\t\t\texcludeValues.push(steps[i].value);\n\t\t\t}\n\t\t}\n\n\t\tif (this.startIndex > 0) {\n\t\t\tthis.startSteps = steps.slice(0, this.startIndex);\n\t\t} else {\n\t\t\texcludeValues.push('start');\n\t\t}\n\t\tif (this.endIndex < steps.length - 1) {\n\t\t\tthis.endSteps = steps.slice(this.endIndex + 1);\n\t\t} else {\n\t\t\texcludeValues.push('end');\n\t\t}\n\t\tthis.excludeValues.set(excludeValues);\n\t}\n}\n","<div\r\n\t#container\r\n\tclass=\"flex my-1 w-full justify-end\">\r\n\t@for (st of displaySteps(); track st; let i = $index) {\r\n\t\t@if (st.value === 'start') {\r\n\t\t\t<div\r\n\t\t\t\t#startItem\r\n\t\t\t\t[class]=\"getClass(i, ['start-item'])\"\r\n\t\t\t\t(click)=\"showStartSteps($event, startOp)\">\r\n\t\t\t\t<span>...</span>\r\n\t\t\t</div>\r\n\t\t\t<p-popover\r\n\t\t\t\t#startOp\r\n\t\t\t\t[styleClass]=\"'pop-steps start-steps'\"\r\n\t\t\t\t[appendTo]=\"startItem\">\r\n\t\t\t\t<p-listbox\r\n\t\t\t\t\t[options]=\"startSteps\"\r\n\t\t\t\t\t(onChange)=\"onStartStepsChange($event)\"\r\n\t\t\t\t\toptionLabel=\"label\"\r\n\t\t\t\t\tclass=\"w-full md:w-56\">\r\n\t\t\t\t\t<ng-template\r\n\t\t\t\t\t\tlet-country\r\n\t\t\t\t\t\tpTemplate=\"item\">\r\n\t\t\t\t\t\t<div class=\"flex items-center gap-2\">\r\n\t\t\t\t\t\t\t<div>{{ country.i18nKey ? i18n.fanyi(country.i18nKey) : country.label }}</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-listbox>\r\n\t\t\t</p-popover>\r\n\t\t} @else if (st.value === 'end') {\r\n\t\t\t<div\r\n\t\t\t\t#endItem\r\n\t\t\t\t[class]=\"getClass(i, ['end-item'])\"\r\n\t\t\t\t(click)=\"showEndSteps($event, endOp)\">\r\n\t\t\t\t<span>...</span>\r\n\t\t\t</div>\r\n\t\t\t<p-popover\r\n\t\t\t\t#endOp\r\n\t\t\t\t[styleClass]=\"'pop-steps end-steps'\"\r\n\t\t\t\t[appendTo]=\"endItem\">\r\n\t\t\t\t<p-listbox\r\n\t\t\t\t\t[options]=\"endSteps\"\r\n\t\t\t\t\t(onChange)=\"onEndStepsChange($event)\"\r\n\t\t\t\t\toptionLabel=\"label\"\r\n\t\t\t\t\tclass=\"w-full md:w-56\">\r\n\t\t\t\t\t<ng-template\r\n\t\t\t\t\t\tlet-country\r\n\t\t\t\t\t\tpTemplate=\"item\">\r\n\t\t\t\t\t\t<div class=\"flex items-center gap-2\">\r\n\t\t\t\t\t\t\t<div>{{ country.i18nKey ? i18n.fanyi(country.i18nKey) : country.label }}</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-listbox>\r\n\t\t\t</p-popover>\r\n\t\t} @else {\r\n\t\t\t<div\r\n\t\t\t\t[class]=\"getClass(i, [])\"\r\n\t\t\t\t(click)=\"changeStatus(st)\">\r\n\t\t\t\t<span>{{ st.i18nKey ? i18n.fanyi(st.i18nKey) : st.label }}</span>\r\n\t\t\t</div>\r\n\t\t}\r\n\t}\r\n</div>\r\n","import { Component, computed, ElementRef, ViewChild, signal, Renderer2, inject, ViewChildren, QueryList, HostListener, input, output, effect } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { AmComponent } from '../am/am.component';\nimport { Popover } from 'primeng/popover';\nimport { TieredMenu } from 'primeng/tieredmenu'\nimport {StyleClassModule} from 'primeng/styleclass'\n@Component({\n selector: 'href-btn-list',\n standalone: true,\n imports: [TranslatePipe,TieredMenu,StyleClassModule],\n templateUrl: './href-btn-list.component.html',\n styleUrl: './href-btn-list.component.scss'\n})\nexport class HrefBtnListComponent{\n @ViewChild('container', { static: false }) containerRef!: ElementRef;\n @ViewChildren('btnItem') btnItem!: QueryList<ElementRef<HTMLElement>>\n @ViewChild('moreOp') op!: Popover;\n hrefs = input<any[]>([])\n fillList :any = computed(() => {\n return this.hrefs().filter((v:any,index:any) => index < this.fillIndex())\n })\n moreIcon = signal(true)\n iconClass = computed(() => {\n return this.moreIcon() ? 'pi-sort-down-fill' : 'pi-sort-up-fill' \n })\n moreBtns:any = computed(() => {\n console.log('this.fillIndex,', this.fillIndex())\n return this.hrefs().filter((v:any,index:any) => index >= this.fillIndex())\n })\n showMore = false\n renderer = inject(Renderer2)\n fillIndex = signal<number>(99)\n allChildWd :any[]=[]\n hrefClick = output()\n constructor(){\n effect(() => {\n if(this.hrefs().length >0){\n this.initWidth()\n this.checkOverflow() \n }\n },{allowSignalWrites:true})\n }\n ngAfterViewInit() {\n this.initWidth()\n this.checkOverflow() \n }\n @HostListener('window:resize', ['$event'])\n onResize() {\n this.checkOverflow()\n }\n\n checkOverflow(){\n const containerWidth = this.containerRef.nativeElement.offsetWidth;\n let childTotalWd = 0;\n const maxWidth = containerWidth - 80\n for(let i =0;i< this.allChildWd.length;i++){ \n childTotalWd += this.allChildWd[i]\n console.log('childTotalWd',childTotalWd,maxWidth)\n if(childTotalWd > maxWidth){\n console.log('----i',i)\n this.fillIndex.set(i)\n this.showMore = true\n return \n } else {\n this.fillIndex.set(i+1)\n this.showMore = false\n }\n }\n }\n\n initWidth(){\n this.allChildWd = []\n const children = this.renderer.parentNode(this.containerRef.nativeElement).children[0].children;\n for(let i =0;i< children.length;i++){\n let el :any= children[i]\n if(el && el.getAttribute('data-type')=='href'){\n this.allChildWd.push(el.offsetWidth)\n }\n }\n console.log('this.allChildWd',this.allChildWd)\n }\n toggleMore(event:any){\n this.moreIcon.set(false)\n this.op.toggle(event);\n }\n\n hide(){\n this.moreIcon.set(true)\n }\n\n btnClick(btn:any){\n this.hrefClick.emit(btn)\n }\n // itemHidden(index:number){\n // return index >= this.fillIndex ? 'hidden':'block'\n // }\n}\n","<div class=\"hidden max-w-full md:flex\" #container style=\"max-width: 100%;\">\r\n @for(item of fillList();track item){\r\n <button \r\n #btnItem\r\n [attr.data-type]=\"'href'\"\r\n [class.first-btn]=\"$first\"\r\n [class.last-btn]=\"$last && !showMore\"\r\n class=\"flex px-[10px] h-[33px] btn items-center min-w-[85px] shrink-0 box-border not-first\"\r\n (click)=\"btnClick(item)\">\r\n <i class=\"pi text-[22px] mr-[4px] txt-color\" [class]=\"item.icon\"></i>\r\n <div class=\"flex flex-col text-[12px] \" style=\"line-height: 1;font-weight: 400;\">\r\n <div class=\"ml-[4px] text-left max-w-full\">\r\n <span class=\"block whitespace-nowrap overflow-hidden text-ellipsis m-0 p-0\">\r\n {{item.i18nKey ? (item.i18nKey | translate) : item.label}}\r\n </span>\r\n <span class=\"block whitespace-nowrap overflow-hidden text-ellipsis m-0 p-0 txt-color\">\r\n @if(item.hasOwnProperty('value')){\r\n <span>{{item.value || 0}}</span>\r\n }\r\n </span>\r\n </div>\r\n </div>\r\n </button>\r\n }\r\n @if(showMore){\r\n <button\r\n [attr.data-type]=\"'more'\" \r\n class=\"flex px-[10px] h-[33px] flex-grow-1 lg:flex-grow-0 btn items-center w-auto gap-[4px] last-btn ml-[-1px]\" \r\n (click)=\"toggleMore($event)\">\r\n <div class=\"text-[14px] whitespace-nowrap\">更多</div>\r\n <i class=\"pi text-[14px] mr-[4px]\" [class]=\"iconClass()\"></i>\r\n </button>\r\n <p-tieredmenu #moreOp [model]=\"moreBtns()\" [popup]=\"true\" [style]=\"{position:'absolute'}\" (onHide)=\"hide()\">\r\n <ng-template #item let-item let-hasSubmenu=\"hasSubmenu\">\r\n <button \r\n class=\"flex py-[8px] pl-[10px] h-[33px] items-center min-w-[85px] shrink-0\"\r\n (click)=\"btnClick(item)\">\r\n <i class=\"pi text-[22px] mr-[4px] txt-color\" [class]=\"item.icon\"></i>\r\n <div class=\"flex flex-col text-[12px] \" style=\"line-height: 1;font-weight: 400;\">\r\n <div class=\"ml-[4px] text-left max-w-full\">\r\n <span class=\"block whitespace-nowrap overflow-hidden text-ellipsis m-0 p-0 \">\r\n {{item.i18nKey ? (item.i18nKey | translate) : item.label}}\r\n </span>\r\n <span class=\"block whitespace-nowrap overflow-hidden text-ellipsis m-0 p-0\">\r\n @if(item.hasOwnProperty('value')){\r\n <span>{{item.value || 0}}</span>\r\n }\r\n </span>\r\n </div>\r\n </div>\r\n </button>\r\n </ng-template>\r\n </p-tieredmenu>\r\n }\r\n</div>\r\n@if(hrefs().length > 0){\r\n <button class=\"md:hidden flex h-[33px] items-center justify-center btn p-[10px]\"\r\n enterActiveClass=\"animate-scalein\" \r\n enterFromClass=\"hidden\" \r\n leaveActiveClass=\"animate-fadeout\" \r\n leaveToClass=\"hidden\"\r\n pStyleClass=\"@next\" \r\n [hideOnOutsideClick]=\"true\">\r\n <i class=\"pi pi-bolt text-14px\"></i>\r\n </button>\r\n}\r\n<div class=\"hidden md:hidden absolute z-[9999] panel-box\">\r\n <div class=\"flex flex-wrap\">\r\n @for(item of hrefs();track item){\r\n <button \r\n class=\"flex w-[50%] px-[10px] h-[33px] panel-btn items-center min-w-[85px] shrink-1 rounded-none icon-color\" \r\n (click)=\"btnClick(item)\">\r\n <i class=\"pi text-[22px] mr-[4px] txt-color\" [class]=\"item.icon\"></i>\r\n <div class=\"flex flex-col text-[12px] \" style=\"line-height: 1;font-weight: 400;\">\r\n <div class=\"ml-[4px] text-left max-w-full\">\r\n <span class=\"block whitespace-nowrap overflow-hidden text-ellipsis m-0 p-0 \">\r\n {{item.i18nKey ? (item.i18nKey | translate) : item.label}}\r\n </span>\r\n <span class=\"block whitespace-nowrap overflow-hidden text-ellipsis m-0 p-0 txt-color\">\r\n @if(item.hasOwnProperty('value')){\r\n <span>{{item.value || 0}}</span>\r\n }\r\n </span>\r\n </div>\r\n </div>\r\n </button>\r\n }\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n","import { UserHistoryService } from '../service/userHistory.service';\nimport {\n\tComponent,\n\tinject,\n\tOnInit,\n\tViewChild,\n\tinput,\n\teffect,\n\tcomputed,\n\tInput,\n\tsignal,\n\tViewChildren,\n\tQueryList,\n\tHostListener,\n} from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormComponent, FormOptions } from '../form/form/form.component';\nimport { RowSelectorComponent } from '../row-selector/row-selector.component';\nimport { LogComponent } from '../log/log.component';\nimport { ButtonModule } from 'primeng/button';\nimport { CrumbActionComponent } from '../crumb-action/crumb-action.component';\nimport { StepsComponent, Step } from '../steps/steps.component';\nimport { GridComponent, GridOptions } from '../grid/grid/grid.component';\nimport { TabsModule } from 'primeng/tabs';\nimport { AmComponent, Get } from '../am/am.component';\nimport { Search } from '../am/am.component';\nimport { HrefBtnList, GridList } from './page-form.interface';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { I18nService } from '../service/i18n.service';\nimport { PermissionBtn } from './page-form.interface';\nimport { formTypeToProps } from './page-form.interface';\nimport { HrefBtnListComponent } from '../href-btn-list/href-btn-list.component';\nimport { ActionService } from '../service/action.service';\nimport { deepClone } from '../share/utils'\n@Component({\n\tselector: 'app-page-form',\n\tstandalone: true,\n\timports: [\n\t\tButtonModule,\n\t\tReactiveFormsModule,\n\t\tFormComponent,\n\t\tLogComponent,\n\t\tCrumbActionComponent,\n\t\tStepsComponent,\n\t\tGridComponent,\n\t\tTabsModule,\n\t\tRowSelectorComponent,\n\t\tTranslatePipe,\n\t\tHrefBtnListComponent,\n\t],\n\ttemplateUrl: './page-form.component.html',\n\tstyleUrl: './page-form.component.scss',\n\tproviders: [],\n})\nexport class PageFormComponent extends AmComponent implements OnInit {\n\t@ViewChild('cForm') cForm!: FormComponent;\n\t@ViewChildren('customGrid') customGrid!: QueryList<GridComponent>;\n\t@ViewChildren('tabForm') tabForm!: QueryList<FormComponent>;\n\tshowLog = computed(() => {\n\t\treturn this.modelLog() && this.sidebarMode() === 'right';\n\t});\n\taddVisible = input<boolean>();\n\tgridList = input<any[]>([]);\n\tform = input.required<FormOptions>({});\n\tgetPrmInput = input.required<Get>({});\n\tstatusSteps = input<Step[]>([]);\n\tstatusKey = input('status');\n\threfBtnList = input<HrefBtnList[]>([]);\n\tsetTitle = input<string>();\n\tactionList = input<PermissionBtn[]>([]);\n\tmodelLog = input<boolean>(false);\n\tsidebarMode = signal<'left' | 'right'>('right');\n\tformDisabled = input<Function>();\n\tstatusConf = input<any>();\n\tformDetail = input<any>();\n\tsaveFunc = input<any>();\n\tconfigNewPath = input<any>();\n\n\tuserHistoryService = inject(UserHistoryService);\n\tindexValue = 0;\n\tvisible = false;\n\tdialogSearchPrm!: Search;\n\tselectOptions!: GridOptions;\n\tselectData: any[] = [];\n\tpageUrl = '';\n\tnewUrl = '';\n\tauthLevel = input<number>(-1);\n\threfs: any[] = [];\n\taction = inject(ActionService);\n\tsubFormModel: any = {};\n\tsaveBtnDisable = false;\n\tgridDisable = false;\n\tselectionKeys: any[] = [];\n\tsubDeleteIds: any[] = [];\n\n\tstepsVisible = true;\n\n\t@HostListener('window:resize')\n\tonResize() {\n\t\tthis.sidebarMode.set(window.innerWidth < 1024 ? 'left' : 'right');\n\t}\n\tconstructor() {\n\t\tsuper();\n\t\tthis.id = Number(this.route.snapshot.paramMap.get('id'));\n\t\tthis.pageUrl = this.route.snapshot.url\n\t\t\t.map((segment) => segment.path)\n\t\t\t.join('/')\n\t\t\t.replace(/([^\\/]*)$/, '');\n\t\tthis.newUrl = `${this.pageUrl}new`;\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tthis.modelName = this.getPrmInput().modelName!;\n\t\t\t\tthis.getPrm = { ...this.getPrmInput() };\n\t\t\t\tthis.id && (this.getPrm.id = this.id);\n\t\t\t\tif (this.id) {\n\t\t\t\t\tconsole.log(typeof this.formDetail(), 'form----');\n\t\t\t\t\ttypeof this.formDetail() == 'function' ? this.formDetail()(this.id) : this.getDetail();\n\t\t\t\t} else {\n\t\t\t\t\tthis.getPrm.data = {};\n\t\t\t\t\tthis.gridList().forEach((v) => {\n\t\t\t\t\t\tif (v.type == 'grid') {\n\t\t\t\t\t\t\tthis.getPrm.data[v.subDataKey] = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\n\t\teffect(() => {\n\t\t\tthis.formOptions = { ...this.form() };\n\t\t});\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tthis.isLog = this.modelLog();\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tif (this.statusSteps().length > 0 && !this.id) {\n\t\t\t\t\tthis.upsertPrm.addData![this.statusKey()] = this.statusSteps()[0]['value'];\n\t\t\t\t\tthis.getPrm.data = Object.assign(this.getPrm.data || {}, {\n\t\t\t\t\t\t[this.statusKey()]: this.statusSteps()[0]['value'],\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tif (this.authLevel() < 3) {\n\t\t\t\t\tthis.setDisabled();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t}\n\tngOnInit(): void {\n\t\tthis.upCb = this.upCb.bind(this);\n\t\tthis.onResize()\n\t}\n\n\tngAfterViewInit(): void {\n\t\tthis.i18n.change.subscribe((res) => {\n\t\t\tthis.stepsVisible = false;\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.stepsVisible = true;\n\t\t\t}, 100)\n\t\t});\n\t}\n\n\n\tsubmitForm(): any {\n\t\t// this.tabForm.validate()\n\t\tconsole.log('getPrm------', this.getPrm);\n\t\tlet subForm = true;\n\t\tif (this.tabForm.length > 0) {\n\t\t\tthis.tabForm.forEach((item) => {\n\t\t\t\tif (!item.validate()) {\n\t\t\t\t\tsubForm = false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tif (this.cForm.validate() && subForm) {\n\t\t\tlet cb: any = this.id === 0 ? null : this.upCb;\n\t\t\tthis.action.loading.set(true);\n\t\t\ttypeof this.saveFunc() == 'function' ? this.saveFunc()(this.upsertPrm, this.id, cb) : this.upsert(null, cb);\n\t\t}\n\t}\n\n\tdelRows(e: any) {\n\t\tconst gridTab = this.gridList()[this.indexValue];\n\t\tconst deleteFunc = gridTab.deleteFunc;\n\t\tconst subTable = gridTab.gridOptions.modelName;\n\n\t\tlet prm = {\n\t\t\tmodelName: subTable,\n\t\t\tids: e,\n\t\t};\n\t\tif (!deleteFunc) {\n\t\t\tthis.web_remove(prm).subscribe((res) => {\n\t\t\t\ttypeof this.formDetail() == 'function' ? this.formDetail()(this.id) : this.getDetail();\n\t\t\t\tthis.action.updateGridAction({type:'delete',data:e})\n\t\t\t});\n\t\t} else {\n\t\t\tdeleteFunc().subscribe(() => {\n\t\t\t\ttypeof this.formDetail() == 'function' ? this.formDetail()(this.id) : this.getDetail();\n\t\t\t\tthis.action.updateGridAction({type:'delete',data:e})\n\t\t\t});\n\t\t}\n\t}\n\tupCb(res?: any) {\n\t\tif (res.id == 0) {\n\t\t\ttypeof this.formDetail() == 'function' ? this.formDetail()(this.id) : this.getDetail();\n\t\t} else {\n\t\t\tsetTimeout(() => {\n\t\t\t\tlet editUrl = `${this.pageUrl}${res.id}`;\n\t\t\t\tthis.router.navigate([editUrl]);\n\t\t\t}, 1500);\n\t\t}\n\t\tthis.action.saveSignal.set(false);\n\t\tthis.cForm.finalize();\n\t}\n\t// TODO 是否需要数据转换回调函数\n\tonOk(e: any) {\n\t\tconst grid = this.gridList()[this.indexValue];\n\t\tthis.gridList()[this.indexValue].selectData = [];\n\t\tif (e.length > 0) {\n\t\t\tlet uniqueKeys = [];\n\t\t\tif (grid.uniqueField) {\n\t\t\t\tconst rowData = this.customGrid\n\t\t\t\t\t.get(this.indexValue)!\n\t\t\t\t\t.getGrid()\n\t\t\t\t\t.api.getRenderedNodes()\n\t\t\t\t\t.map((node) => node.data);\n\t\t\t\t\tconsole.log('rowData-----',rowData)\n\t\t\t\tuniqueKeys = rowData.map((item: any) => item[grid.uniqueField!]);\n\t\t\t}\n\t\t\tconsole.log('uniqueKeys-----',uniqueKeys,)\n\t\t\te.forEach((item: any) => {\n\t\t\t\tlet obj = grid.selectDataCb ? grid.selectDataCb(item) : { ...item };\n\t\t\t\tif (grid.uniqueField && uniqueKeys.includes(obj[grid.uniqueField!] || '')) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tgrid.selectData!.push(obj);\n\t\t\t});\n\t\t\tthis.action.saveSignal.set(true);\n\t\t}\n\t\tthis.action.updateGridAction({type:'add',data:grid.selectData})\n\t}\n\n\tonCancelSelected(e: any) {\n\t\tconst grid = this.gridList()[this.indexValue];\n\t\tlet datas: any = [];\n\t\te.forEach((item: any) => {\n\t\t\tconst data = grid.selectDataCb ? { ...grid.selectDataCb(item) } : item;\n\t\t\tdatas.push(data);\n\t\t});\n\t\tif (grid.uniqueField) {\n\t\t\tconst keys = datas.map((item: any) => item[grid.uniqueField]);\n\t\t\tconst rowData = this.customGrid\n\t\t\t\t.get(this.indexValue)!\n\t\t\t\t.getGrid()\n\t\t\t\t.api.getRenderedNodes()\n\t\t\t\t.map((node) => node.data);\n\t\t\tlet deletedRows = rowData.filter((item: any) => keys.includes(item[grid.uniqueField]));\n\t\t\tthis.subDeleteIds = deletedRows.map((v: any) => v.id).filter((v: any) => v);\n\t\t\tconst idNotRows = deletedRows.filter((v: any) => !v.id);\n\t\t\t// console.log('idNotRows----',idNotRows)\n\t\t\tconst deleteNodes: any = [];\n\t\t\tthis.customGrid\n\t\t\t\t.get(this.indexValue)!\n\t\t\t\t.getGrid()\n\t\t\t\t.api.forEachNode((node: any) => {\n\t\t\t\t\tlet main = node.data[grid.uniqueField];\n\t\t\t\t\tlet isExit = idNotRows.findIndex((v: any) => v[grid.uniqueField] == main);\n\t\t\t\t\tif (isExit > -1) {\n\t\t\t\t\t\tdeleteNodes.push(node.data);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t// if(deletedIds.length > 0){\n\t\t\t// \tthis.delRows(deletedIds)\n\t\t\t// } else {\n\t\t\tthis.customGrid.get(this.indexValue)!.selectRowsDeleted(deleteNodes);\n\t\t\t// }\n\t\t}\n\t}\n\tgetDetail() {\n\t\tthis.web_get(this.getPrm).subscribe((res) => {\n\t\t\tthis.detailCb(res);\n\t\t});\n\t}\n\t// 获取详情回调\n\tdetailCb(res: any) {\n\t\tthis.updateTitle(res);\n\t\tif (typeof this.formDisabled() == 'function') {\n\t\t\tthis.formDisFunc();\n\t\t}\n\t\tif (this.hrefBtnList().length > 0) {\n\t\t\tthis.setHrefValue();\n\t\t}\n\t\tthis.gridList().forEach((v) => {\n\t\t\tif (v.type == 'form') {\n\t\t\t\tthis.subFormModel[v.subDataKey] = res[v.subDataKey][0];\n\t\t\t}\n\t\t});\n\t\tthis.gridList().forEach((value) => {\n\t\t\tif (value.type == 'grid' && !this.getPrm.data.hasOwnProperty(value.subDataKey)) {\n\t\t\t\tthis.getPrm.data[value.subDataKey] = [];\n\t\t\t}\n\t\t});\n\t}\n\tsetHrefValue() {\n\t\tthis.hrefBtnList().map((item: any) => {\n\t\t\tif (item.hasOwnProperty('searchCount') && typeof item.searchCount == 'object') {\n\t\t\t\titem.searchCount.columnFilters.forEach((v: any) => {\n\t\t\t\t\tif (typeof v.fiter === 'function') {\n\t\t\t\t\t\tv.fiter = v.fiter(this.getPrm.data);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.web_searchCount(item.searchCount).subscribe((res) => {\n\t\t\t\t\titem.value = res.totalNum || 0;\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\tupdateTitle(res: any) {\n\t\tlet mainField = this.form().mainField;\n\t\tlet title = res[mainField!];\n\t\tthis.userHistoryService.setLastTitle(title);\n\t}\n\tdataSourceShow() {\n\t\tconst grid = this.gridList()[this.indexValue];\n\t\tthis.dialogSearchPrm = {};\n\t\tthis.selectOptions = this.gridList()[this.indexValue]['selectOptions']!;\n\t\tif ((this.selectOptions as any)?.searchPrm) {\n\t\t\tlet searchPrm = deepClone((this.selectOptions as any).searchPrm, this)\n\t\t\tsearchPrm.columnFilters?.forEach((v: any) => {\n\t\t\t\tif (typeof v.fiter == 'function') {\n\t\t\t\t\tv.fiter = v.fiter(null, this.getPrm.data || this.cForm.model());\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.dialogSearchPrm = searchPrm;\n\t\t}\n\t\tthis.dialogSearchPrm.modelName = this.selectOptions.modelName;\n\t\tif (this.selectOptions.selectionMode) {\n\t\t\tthis.selectOptions.suppressRowDeselection = true;\n\t\t\tthis.selectOptions.selectionMode = this.selectOptions.selectionMode;\n\t\t\tconst isRowSelectable = this.selectOptions.isRowSelectable;\n\t\t\tif (this.selectOptions.selectionMode != 'none') {\n\t\t\t\tthis.selectOptions.rowSelection = {\n\t\t\t\t\tmode: this.selectOptions.selectionMode == 'single' ? 'singleRow' : 'multiRow',\n\t\t\t\t\tisRowSelectable: isRowSelectable ? isRowSelectable : undefined,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tthis.selectOptions.rowSelection = undefined;\n\t\t\t}\n\t\t}\n\t\t// console.log('options-----',this.selectOptions)\n\t\tif (grid.uniqueField) {\n\t\t\tconst rowData = this.customGrid\n\t\t\t\t.get(this.indexValue)!\n\t\t\t\t.getGrid()\n\t\t\t\t.api.getRenderedNodes()\n\t\t\t\t.map((node) => node.data);\n\t\t\tthis.selectionKeys = rowData?.map((item: any) => item[grid.uniqueField!]) || [];\n\t\t\t// console.log('this.selectionKeys----',this.selectionKeys)\n\t\t\tif (typeof this.selectOptions.rowSelection == 'object') {\n\t\t\t\tthis.selectOptions.rowSelection.checkboxes = (params) => {\n\t\t\t\t\tlet item =\n\t\t\t\t\t\tthis.selectOptions.dataKey != ''\n\t\t\t\t\t\t\t? rowData.find((v: any) => v[grid.uniqueField] == params.data[this.selectOptions.dataKey!])\n\t\t\t\t\t\t\t: rowData.find((v: any) => v[grid.uniqueField] == params.data.id);\n\t\t\t\t\tif (item && item.id) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t};\n\t\t\t} else if (!this.selectOptions.rowSelection) {\n\t\t\t\tthis.selectOptions.rowSelection = {\n\t\t\t\t\tmode: 'multiRow',\n\t\t\t\t\tcheckboxes: (params) => {\n\t\t\t\t\t\tlet item =\n\t\t\t\t\t\t\tthis.selectOptions.dataKey != ''\n\t\t\t\t\t\t\t\t? rowData.find((v: any) => v[grid.uniqueField] == params.data[this.selectOptions.dataKey!])\n\t\t\t\t\t\t\t\t: rowData.find((v: any) => v[grid.uniqueField] == params.data.id);\n\t\t\t\t\t\tif (item && item.id) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t} else {\n\t\t\tthis.selectionKeys = [];\n\t\t}\n\t\tthis.visible = true;\n\t}\n\n\tgoRun(data: any) {\n\t\tif (typeof data.url === 'function') {\n\t\t\tlet url = data.url(this.getPrm.data);\n\t\t\tthis.router.navigate([url]);\n\t\t} else {\n\t\t\tthis.messageService.add({ severity: 'warn', summary: 'Warn', detail: '请配置跳转链接' });\n\t\t}\n\t}\n\n\tauthClick(btn: any) {\n\t\tif (btn.hasOwnProperty('onClick')) {\n\t\t\tbtn.onClick(this.getPrm.data);\n\t\t}\n\t}\n\tstatusChange(value: any, customSteps: StepsComponent) {\n\t\tif (this.authLevel() < 4 || !this.statusConf().isClick) return;\n\t\tif (this.id) {\n\t\t\tlet param: any = {\n\t\t\t\tmodelName: this.modelName,\n\t\t\t\tdata: { id: this.id, [this.statusKey()]: value },\n\t\t\t};\n\t\t\tif (this.isLog) {\n\t\t\t\tparam.logModel = `${this.modelName}Log`;\n\t\t\t\tparam.log = {\n\t\t\t\t\tpid: this.id,\n\t\t\t\t\tcontent: `[状态] ${this.getPrm.data![this.statusKey()]} -> ${value}`,\n\t\t\t\t};\n\t\t\t}\n\t\t\tthis.web_write(param).subscribe((res) => {\n\t\t\t\tthis.getDetail();\n\t\t\t});\n\t\t} else {\n\t\t\tthis.getPrm.data = Object.assign(this.getPrm.data || {}, {\n\t\t\t\t[this.statusKey()]: value,\n\t\t\t});\n\t\t\tthis.upsertPrm.addData![this.statusKey()] = value;\n\t\t\tthis.cForm.triggerModelEffect({ [this.statusKey()]: value });\n\t\t\t// customSteps.refreshSteps()\n\t\t}\n\t}\n\n\tformDisFunc() {\n\t\tlet data = this.formDisabled()!(this.getPrm.data);\n\t\tif (typeof data === 'boolean') {\n\t\t\tthis.saveBtnDisable = data;\n\t\t\tthis.gridDisable = data;\n\t\t\tthis.disableForm(data);\n\t\t\tthis.disabeldChild(data);\n\t\t}\n\t\tif (typeof data === 'object') {\n\t\t\tconst disabeld = data.disabled;\n\t\t\tconst filters = data.filters || [];\n\t\t\tif (!filters.includes('form')) {\n\t\t\t\tthis.disableForm(disabeld);\n\t\t\t}\n\t\t\tif (!filters.includes('grid')) {\n\t\t\t\tthis.gridDisable = disabeld;\n\t\t\t\tthis.disabeldChild(disabeld);\n\t\t\t}\n\t\t}\n\t}\n\tdisableForm(disable: boolean) {\n\t\tthis.formOptions.fields?.forEach((v) => {\n\t\t\tv.group?.forEach((g: any) => {\n\t\t\t\tlet fieldDisabled = g[formTypeToProps[g.type]].disabled || false;\n\t\t\t\tif (disable) {\n\t\t\t\t\tthis.cForm.getField(g.key)?.fieldControl!.markAsPristine({ emitEvent: false });\n\t\t\t\t\tthis.cForm.getField(g.key)?.fieldControl!.disable({ emitEvent: false });\n\t\t\t\t} else {\n\t\t\t\t\t!fieldDisabled && this.cForm.getField(g.key)?.fieldControl!.enable({ emitEvent: false });\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\tdisabeldChild(disabeld: boolean) {\n\t\tthis.gridList().forEach((v, index: any) => {\n\t\t\tif (v.type == 'grid') {\n\t\t\t\tv.gridOptions.columnDefs.forEach((item: any) => {\n\t\t\t\t\tif (disabeld && item.hasOwnProperty('editable')) {\n\t\t\t\t\t\titem.editable = false;\n\t\t\t\t\t}\n\t\t\t\t\t// 同一个页面disabled false => true \n\t\t\t\t\tif(!disabeld && item.hasOwnProperty('editable') && !item.editable && typeof item.editable === 'boolean'){\n\t\t\t\t\t\titem.editable = true\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.customGrid.get(index)!.getGrid().api.setGridOption('columnDefs', v.gridOptions.columnDefs);\n\t\t\t} else if (v.type == 'form') {\n\t\t\t\tv.fields?.forEach((item: any) => {\n\t\t\t\t\titem.group?.forEach((g: any) => {\n\t\t\t\t\t\tlet fieldDisabled = g[formTypeToProps[g.type]].disabled || false;\n\t\t\t\t\t\tif (disabeld) {\n\t\t\t\t\t\t\tthis.tabForm.get(index)!.getField(g.key)?.fieldControl!.markAsPristine({ emitEvent: false });\n\t\t\t\t\t\t\tthis.tabForm.get(index)!.getField(g.key)?.fieldControl!.disable({ emitEvent: false });\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t!fieldDisabled && this.cForm.getField(g.key)?.fieldControl!.enable({ emitEvent: false });\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\tsetDisabled() {\n\t\tthis.gridList().forEach((v, index: any) => {\n\t\t\tif (v.type == 'form') {\n\t\t\t\tv.fields?.forEach((item: any) => {\n\t\t\t\t\titem.group?.forEach((g: any) => {\n\t\t\t\t\t\tthis.tabForm.get(index)!.getField(g.key)?.fieldControl!.disable({ emitEvent: false });\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\ttabClick() {\n\t\tsetTimeout(() => {\n\t\t\tthis.tabForm.get(this.indexValue) && this.tabForm.get(this.indexValue)!.reCalcLabelSize();\n\t\t}, 0);\n\t}\n\ttoggleLog() {\n\t\tthis.sidebarMode.set(this.sidebarMode() === 'left' ? 'right' : 'left');\n\t}\n}\n","<div class=\"md:overflow-hidden\">\n\t<div class=\"flex md:flex-wrap lg:flex-nowrap items-center md:justify-between py-1 px-1 border-b-[1px] border-[#dbdbdb] bg-white\">\n\t\t<div class=\"lg:basis-1/3 order-1\">\n\t\t\t<app-crumb-action\n\t\t\t\t[addVisible]=\"addVisible()\"\n\t\t\t\t[newUrl]=\"newUrl\"\n\t\t\t\t[isShowCog]=\"true\"\n\t\t\t\t[outlined]=\"true\"\n\t\t\t\t[authLevel]=\"authLevel()\"\n\t\t\t\t[actionList]=\"actionList()\"\n\t\t\t\t[configNewPath]=\"configNewPath()\"\n\t\t\t\t[data]=\"getPrm.data ?? {}\"\n\t\t\t\t[saveBtnDisable]=\"saveBtnDisable\"\n\t\t\t\t(actionEvent)=\"authClick($event)\"\n\t\t\t\t(saveEvent)=\"submitForm()\">\n\t\t\t</app-crumb-action>\n\t\t</div>\n\n\t\t<div class=\"basis-1/5 lg:basis-2/3 order-2 lg:order-2 md:order-last md:basis-full md:mt-[6px]\">\n\t\t\t<href-btn-list\n\t\t\t\t[hrefs]=\"hrefBtnList()\"\n\t\t\t\t(hrefClick)=\"goRun($event)\"></href-btn-list>\n\t\t\t<!-- @if (id) {\n\t\t\t\t@for (btn of hrefBtnList(); track btn) {\n\t\t\t\t\t<p-button\n\t\t\t\t\t\t[variant]=\"btn?.variant\"\n\t\t\t\t\t\t[severity]=\"btn?.severity\"\n\t\t\t\t\t\tclass=\"mr-[6px]\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t[icon]=\"btn?.icon\"\n\t\t\t\t\t\tlabel=\"{{ btn.i18nKey ? i18n.fanyi(btn.i18nKey) : btn.label }}\"\n\t\t\t\t\t\t(click)=\"goRun(btn)\">\n\t\t\t\t\t</p-button>\n\t\t\t\t}\n\t\t\t} -->\n\t\t</div>\n\t\t<div class=\"basis-1/3 order-3 flex flex-row-reverse\">\n\t\t\t@if (modelLog()) {\n\t\t\t\t<div class=\"hidden md:block\">\n\t\t\t\t\t<span\n\t\t\t\t\t\t[class]=\"'iconfont icon-sidebar icon-sidebar-' + (sidebarMode())\"\n\t\t\t\t\t\t(click)=\"toggleLog()\"></span>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t</div>\n\t<div class=\"flex\">\n\t\t<div class=\"px-2 flex flex-wrap items-center flex-1\">\n\t\t\t<div class=\"hidden md:basis-1/3 py-1 basis-full md:flex items-center flex-row order-1\">\n\t\t\t\t@for (action of actionList(); let i = $index; track action) {\n\t\t\t\t\t<p-button\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t[icon]=\"getPrm.data?.icon\"\n\t\t\t\t\t\t[loading]=\"action.loading\"\n\t\t\t\t\t\t[label]=\"action.i18nKey ? (action.i18nKey | translate) : action.label\"\n\t\t\t\t\t\t[disabled]=\"action.btnDisabled ? action.btnDisabled(getPrm.data) : false\"\n\t\t\t\t\t\t[styleClass]=\"\n\t\t\t\t\t\t\t(action.auth || 0) > (authLevel() || 0) || !!action.btnHidden?.(getPrm.data)\n\t\t\t\t\t\t\t\t? 'form-action hidden'\n\t\t\t\t\t\t\t\t: 'form-action block mr-[.5rem]'\n\t\t\t\t\t\t\"\n\t\t\t\t\t\t(onClick)=\"action.onClick != '' && action.onClick?.(getPrm.data,action)\">\n\t\t\t\t\t</p-button>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div class=\"md:basis-2/3 basis-full flex md:flex-row-reverse flex-row md:order-2 order-first w-full\">\n\t\t\t\t@if(stepsVisible) {\n\t\t\t\t\t<custom-steps\n\t\t\t\t\t\t#customSteps\n\t\t\t\t\t\tclass=\"w-full\"\n\t\t\t\t\t\t[steps]=\"statusSteps()\"\n\t\t\t\t\t\t[modelLog]=\"showLog()\"\n\t\t\t\t\t\t[current]=\"getPrm.data && getPrm.data[statusKey()] !== undefined ? getPrm.data[statusKey()] : 0\"\n\t\t\t\t\t\t[authLevel]=\"authLevel()\"\n\t\t\t\t\t\t[isClick]=\"this.statusConf().isClick\"\n\t\t\t\t\t\t(change)=\"statusChange($event, customSteps)\">\n\t\t\t\t\t</custom-steps>\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t\t@if (showLog()) {\n\t\t\t<div class=\"lg:w-[400px] md:w-[300px] hidden md:block\"></div>\n\t\t}\n\t</div>\n\t<div class=\"main flex flex-wrap\">\n\t\t<div class=\"w-full md:flex-1 md:h-full md:overflow-y-auto\">\n\t\t\t<div class=\"bg-white mx-2 form-panel\">\n\t\t\t\t<div class=\"p-2 flex-1\">\n\t\t\t\t\t<form [formGroup]=\"form().form!\">\n\t\t\t\t\t\t<custom-form\n\t\t\t\t\t\t\t#cForm\n\t\t\t\t\t\t\t[options]=\"formOptions\"\n\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\n\t\t\t\t\t\t\t[model]=\"getPrm.data ?? {}\"></custom-form>\n\t\t\t\t\t</form>\n\t\t\t\t</div>\n\t\t\t\t@if (gridList() && gridList().length > 0) {\n\t\t\t\t\t<div class=\"relative mb-2\">\n\t\t\t\t\t\t<p-tabs [(value)]=\"indexValue\">\n\t\t\t\t\t\t\t<p-tablist>\n\t\t\t\t\t\t\t\t@for (fchild of gridList(); let i = $index; track fchild) {\n\t\t\t\t\t\t\t\t\t<p-tab\n\t\t\t\t\t\t\t\t\t\t[value]=\"i\"\n\t\t\t\t\t\t\t\t\t\t(click)=\"tabClick()\">\n\t\t\t\t\t\t\t\t\t\t{{ fchild.i18nKey ? i18n.fanyi(fchild.i18nKey) : fchild.title }}\n\t\t\t\t\t\t\t\t\t</p-tab>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</p-tablist>\n\t\t\t\t\t\t</p-tabs>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t@for (grid of gridList(); let i = $index; track grid) {\n\t\t\t\t\t@if (grid.type == 'grid') {\n\t\t\t\t\t\t<custom-grid\n\t\t\t\t\t\t\t#customGrid\n\t\t\t\t\t\t\t[hidden]=\"indexValue != i\"\n\t\t\t\t\t\t\t[rowData]=\"getPrm.data?.[grid.subDataKey!]\"\n\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\n\t\t\t\t\t\t\t(deleteEmit)=\"delRows($event)\"\n\t\t\t\t\t\t\t[addType]=\"grid.subTableSource\"\n\t\t\t\t\t\t\t(addEmit)=\"dataSourceShow()\"\n\t\t\t\t\t\t\t[gridOptions]=\"grid.gridOptions\"\n\t\t\t\t\t\t\t[gridDisable]=\"gridDisable\"\n\t\t\t\t\t\t\t[authLevel]=\"authLevel()\"\n\t\t\t\t\t\t\t[showDelete]=\"grid.showDelete\"\n\t\t\t\t\t\t\t[selectData]=\"grid.selectData\"\n\t\t\t\t\t\t\t[addSort]=\"grid.addSort\">\n\t\t\t\t\t\t</custom-grid>\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t<!-- @if(indexValue == i){\n\t\t\t\t\t\t\t<form [formGroup]=\"grid.form!\">\n\t\t\t\t\t\t\t\t<custom-form\n\t\t\t\t\t\t\t\t[options]=\"grid\"\n\t\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t</custom-form>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t} -->\n\t\t\t\t\t\t<custom-form\n\t\t\t\t\t\t\t#tabForm\n\t\t\t\t\t\t\t[hidden]=\"indexValue != i\"\n\t\t\t\t\t\t\t[options]=\"grid\"\n\t\t\t\t\t\t\t[upsert]=\"upsertPrm\"\n\t\t\t\t\t\t\t[model]=\"subFormModel[grid.subDataKey!] || {}\">\n\t\t\t\t\t\t</custom-form>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t\t@if (showLog()) {\n\t\t\t<div class=\"w-full lg:w-[400px] md:w-[300px] md:h-full md:overflow-y-auto hidden md:block\">\n\t\t\t\t<custom-log [logs]=\"getPrm.data?.log ?? []\"></custom-log>\n\t\t\t</div>\n\t\t}\n\t</div>\n</div>\n<row-selector\n\t[(visible)]=\"visible\"\n\t[searchPrm]=\"dialogSearchPrm\"\n\t[gridOptions]=\"selectOptions\"\n\t[selectionKeys]=\"selectionKeys\"\n\t(onOk)=\"onOk($event)\"\n\t(cancelSelect)=\"onCancelSelected($event)\">\n</row-selector>\n","import { Component, OnInit, input, effect, ViewEncapsulation, ViewChild } from '@angular/core';\nimport { ImportOptions, ImportComponent } from '../import/import.component';\nimport { HeadComponent } from '../head/head.component';\nimport { GridComponent, GridOptions } from '../grid/grid/grid.component';\nimport { AmComponent, Search } from '../am/am.component';\nimport { PagerComponent } from '../grid/pager/pager.component';\nimport { CrumbActionComponent } from '../crumb-action/crumb-action.component';\n\n@Component({\n\tselector: 'app-page-grid-list',\n\tstandalone: true,\n\timports: [GridComponent, CrumbActionComponent, PagerComponent, HeadComponent, ImportComponent],\n\ttemplateUrl: './page-grid-list.component.html',\n\tstyleUrl: './page-grid-list.component.scss',\n\tencapsulation: ViewEncapsulation.None,\n})\nexport class PageGridListComponent extends AmComponent {\n\t@ViewChild('customGrid') customGrid!: GridComponent;\n\tparams = input<any>();\n\tactions = input<any[]>([]);\n\tmenus = input<any[]>([]);\n\tgridOptions = input<GridOptions>();\n\tauthLevel = input<number>(-1);\n\tconstructor() {\n\t\tsuper();\n\t\tthis.exportPrm = {};\n\t\tthis.importPrm = {};\n\n\t\teffect(() => {\n\t\t\tthis.modelName = this.gridOptions()!.modelName!;\n\t\t\tif (!this.gridOptions()!.cacheBlockSize) {\n\t\t\t\tthis.gridOptions()!.cacheBlockSize = 50;\n\t\t\t}\n\t\t\tthis.searchPrm = this.genSearchPrm();\n\t\t});\n\t}\n\n\tgenSearchPrm() {\n\t\tconst searchPrm: Search = {\n\t\t\tmodelName: this.modelName,\n\t\t\torgField: this.params().orgField,\n\t\t\toffset: 0,\n\t\t\tlimit: this.gridOptions()!.cacheBlockSize,\n\t\t\tsorts: [{ field: 'createdAt', isAsc: false }],\n\t\t\tcount: true,\n\t\t};\n\t\tif (this.params()?.searchPrm?.columnFilters) {\n\t\t\tsearchPrm.columnFilters = this.params().searchPrm.columnFilters;\n\t\t}\n\t\tif (this.params()?.searchPrm?.sorts) {\n\t\t\tsearchPrm.sorts = this.params().searchPrm.sorts;\n\t\t}\n\t\treturn searchPrm;\n\t}\n}\n","<div class=\"flex flex-col h-full\">\n\t<div class=\"flex flex-wrap items-center py-1 px-1 bg-white\">\n\t\t<div class=\"lg:basis-1/6 md:basis-1/4 basis-1/2 flex justify-start order-1\">\n\t\t\t<app-crumb-action\n\t\t\t\t[addVisible]=\"params().addVisible\"\n\t\t\t\t[exportVisible]=\"params().exportVisible ?? true\"\n\t\t\t\t[importVisible]=\"params().importVisible ?? true\"\n\t\t\t\t[newUrl]=\"params().newUrl\"\n\t\t\t\t[onExport]=\"params().onExport\"\n\t\t\t\t[isList]=\"true\"\n\t\t\t\t[isShowCog]=\"true\"\n\t\t\t\t[menus]=\"menus()\"\n\t\t\t\t[authLevel]=\"authLevel()\">\n\t\t\t</app-crumb-action>\n\t\t</div>\n\t\t<div class=\"lg:basis-4/6 md:basis-1/2 basis-full flex justify-center items-center md:order-2 order-last\">\n\t\t\t<custom-head\n\t\t\t\tclass=\"max-lg:min-w-full\"\n\t\t\t\t[actions]=\"actions()\"\n\t\t\t\t[grid]=\"customGrid\"\n\t\t\t\t[authLevel]=\"authLevel()\"\n\t\t\t\t[gridOptions]=\"gridOptions()\"></custom-head>\n\t\t</div>\n\t\t<div class=\"lg:basis-1/6 md:basis-1/4 basis-1/2 flex justify-end order-3\">\n\t\t\t<custom-pager></custom-pager>\n\t\t</div>\n\t</div>\n\t<div class=\"flex-1\">\n\t\t<custom-grid\n\t\t\t#customGrid\n\t\t\t[upsert]=\"upsertPrm\"\n\t\t\t[searchPrm]=\"searchPrm\"\n\t\t\t[showAct]=\"false\"\n\t\t\t[gridOptions]=\"gridOptions()!\">\n\t\t</custom-grid>\n\t</div>\n</div>\n<app-import\n\t[fileName]=\"params()?.importFileName\"\n\t[funcName]=\"params()?.importFuncName\"\n\t[orgVisible]=\"params()?.importOrgVisible\"\n\t[orgField]=\"params()?.importOrgField\"\n\t[grid]=\"customGrid\"\n\t[modelName]=\"gridOptions()!.modelName ?? ''\">\n</app-import>\n","import { Component, computed } from '@angular/core';\nimport { LoadingService } from '../service/loading.service';\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\n\n@Component({\n\tselector: 'custom-loading',\n\tstandalone: true,\n\timports: [ProgressSpinnerModule],\n\ttemplateUrl: './loading.component.html',\n\tstyleUrl: './loading.component.scss',\n})\nexport class LoadingComponent {\n\tvisible = computed(() => {\n\t\tconsole.log('---------------computed', this.loadingService.getLoading());\n\t\treturn this.loadingService.getLoading();\n\t});\n\tconstructor(private loadingService: LoadingService) {}\n}\n","@if (visible()) {\n\t<div class=\"mask\"></div>\n\t<div class=\"progress\">\n\t\t<p-progressSpinner\n\t\t\t[style]=\"{ width: '50px', height: '50px' }\"\n\t\t\tstyleClass=\"custom-spinner\"\n\t\t\tstrokeWidth=\"6\"\n\t\t\tanimationDuration=\"1s\"></p-progressSpinner>\n\t</div>\n}\n","import { CommonModule,isPlatformBrowser } from \"@angular/common\";\nimport { Component, computed, inject, PLATFORM_ID } from '@angular/core';\nimport { FormsModule } from \"@angular/forms\";\nimport { ButtonModule } from \"primeng/button\";\nimport { RadioButtonModule } from 'primeng/radiobutton'\nimport Aura from '@primeng/themes/aura';\nimport { PrimeNG } from \"primeng/config\";\nimport { $dt, $t, updatePreset, updateSurfacePalette } from '@primeng/themes';\nimport { ThemeConfigService } from \"../service/themeConfig.service\";\nimport { themeQuartz } from \"ag-grid-enterprise\";\n\nconst presets = {\n Aura\n}\ninterface PaletteType {\n name:string,\n palette:{\n 50?: string;\n 100?: string;\n 200?: string;\n 300?: string;\n 400?: string;\n 500?: string;\n 600?: string;\n 700?: string;\n 800?: string;\n 900?: string;\n 950?: string;\n }\n}\n@Component({\n selector: 'app-theme-config-panel',\n standalone: true,\n imports: [CommonModule, FormsModule, ButtonModule, RadioButtonModule],\n template: `\n <div class=\"config-panel-content\">\n <div class=\"config-panel-colors\">\n <span class=\"config-panel-label\">Primary</span>\n <div class=\"flex justify-start pt-2 flex-wrap gap-2\">\n @for (primaryColor of primaryColors(); track primaryColor.name) {\n <button\n type=\"button\"\n [title]=\"primaryColor.name\"\n (click)=\"updateColors($event, 'primary', primaryColor)\"\n [ngClass]=\"{ 'active-color': primaryColor.name === selectedPrimaryColor() }\"\n [style]=\"{\n 'background-color': primaryColor.name === 'noir' ? 'var(--text-color)' : primaryColor!.palette['500']\n }\"\n ></button>\n }\n </div>\n </div>\n </div>\n `,\n host: {\n class: 'config-panel hidden'\n },\n styles:[\n `\n :host {\n position: absolute;\n z-index:9999;\n top: calc(100% + 2px);\n right: 0;\n inset-inline-end: 0;\n width: 18rem;\n padding: .75rem;\n background-color: var(--overlay-background);\n border-radius: 6px;\n border: 1px solid var(--border-color);\n transform-origin: top;\n box-shadow: 0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;\n background:#fff\n }\n :host > div button {\n border: none;\n width: 1.25rem;\n height: 1.25rem;\n border-radius: 50%;\n padding: 0;\n cursor: pointer;\n outline-color: transparent;\n outline-width: 2px;\n outline-style: solid;\n outline-offset: 1px;\n }\n :host > div button.active-color {\n outline-color: var(--p-primary-color);\n }\n `\n ]\n})\nexport class ThemeConfigPanelComponent {\n config: PrimeNG = inject(PrimeNG);\n configService: ThemeConfigService = inject(ThemeConfigService)\n platformId = inject(PLATFORM_ID);\n\n selectedPrimaryColor = computed(() => {\n return this.configService.appState()!.primary;\n });\n primaryColors = computed(() => {\n const preset = this.configService.appState()?.preset\n // @ts-ignore\n const presetPalette = presets[preset].primitive;\n const colors = ['emerald', 'green', 'lime', 'orange', 'amber', 'yellow', 'teal', 'cyan', 'sky', 'blue', 'indigo', 'violet', 'purple', 'fuchsia', 'pink', 'rose'];\n const palettes:Array<PaletteType> = [];\n\n colors.forEach((color) => {\n palettes.push({\n name: color,\n palette: presetPalette[color]\n });\n });\n return palettes;\n \n });\n\n getPresetExt() {\n const color = this.primaryColors().find((c) => c.name === this.selectedPrimaryColor());\n return {\n semantic: {\n primary: color!.palette,\n colorScheme: {\n light: {\n primary: {\n color: '{primary.500}',\n contrastColor: '#ffffff',\n hoverColor: '{primary.600}',\n activeColor: '{primary.700}'\n },\n highlight: {\n background: '{primary.50}',\n focusBackground: '{primary.100}',\n color: '{primary.700}',\n focusColor: '{primary.800}'\n }\n },\n dark: {\n primary: {\n color: '{primary.400}',\n contrastColor: '{surface.900}',\n hoverColor: '{primary.300}',\n activeColor: '{primary.200}'\n },\n highlight: {\n background: 'color-mix(in srgb, {primary.400}, transparent 84%)',\n focusBackground: 'color-mix(in srgb, {primary.400}, transparent 76%)',\n color: 'rgba(255,255,255,.87)',\n focusColor: 'rgba(255,255,255,.87)'\n }\n }\n }\n }\n };\n }\n\n updateColors(event: any, type: string, color: any) {\n if (type === 'primary') {\n this.configService.appState.update((state) => ({ ...state, primary: color.name }));\n } else if (type === 'surface') {\n this.configService.appState.update((state) => ({ ...state, surface: color.name }));\n }\n this.applyTheme(type, color);\n\n event.stopPropagation();\n }\n\n applyTheme(type: string, color: any) {\n if (type === 'primary') {\n updatePreset(this.getPresetExt());\n } else if (type === 'surface') {\n updateSurfacePalette(color.palette);\n }\n }\n\n}","import { Component } from \"@angular/core\";\nimport {ThemeConfigPanelComponent} from './theme-config-panel.compoent'\nimport {StyleClassModule} from 'primeng/styleclass'\n// import {}\n@Component({\n selector: 'app-theme-config',\n standalone: true,\n imports:[StyleClassModule,ThemeConfigPanelComponent],\n template:`\n <div class=\"relative\" style=\"margin-left:1rem\">\n <button type=\"button\" \n class=\"topbar-item config-item \" \n enterActiveClass=\"animate-scalein\" \n enterFromClass=\"hidden\" \n leaveActiveClass=\"animate-fadeout\" \n leaveToClass=\"hidden\"\n pStyleClass=\"@next\" \n [hideOnOutsideClick]=\"true\"> \n <i class=\"pi pi-palette\"></i>\n </button>\n <app-theme-config-panel />\n </div>\n `,\n styles:[\n `.topbar-item {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n border: 1px solid var(--border-color);\n width: 2rem;\n height: 2rem;\n transition: outline-color .2s, border-color .2s;\n border-radius: 3.5px;\n margin: 0;\n padding: 0;\n outline-color: transparent;\n background-color: var(--card-background);\n cursor: pointer;\n }`,\n `.config-item {\n background-color:var(--p-primary-color)\n }\n .config-item i {\n color: var(--p-primary-contrast-color);\n }\n `\n \n ]\n})\n\nexport class ThemeConfigComponent {\n\n constructor(){\n }\n}","/*\n * Public API Surface of am-front-ui\n */\nexport * from './lib/am/am.component'\n\nexport * from './lib/form/form/form.component'\nexport * from './lib/form/form-field'\nexport * from './lib/form/form-type'\n\nexport * from './lib/page-form/page-form.interface'\nexport * from './lib/crumb-action/crumb-action.component'\n\nexport * from './lib/grid/pager/pager.component'\n\nexport * from './lib/grid/grid/grid.component'\n\nexport * from './lib/grid/cell-edit/index'\n\nexport * from './lib/grid/grid-utils'\n\nexport * from './lib/grid/cell-render/link-render'\n\nexport * from './lib/grid/cell-render/async-renderer'\n\nexport * from './lib/grid/actions/actions.component'\n\nexport * from './lib/head/head.component'\n\nexport * from './lib/import/import.component'\n\nexport * from './lib/log/log.component'\n\nexport * from './lib/row-selector/row-selector.component'\n\nexport * from './lib/share/utils'\n\nexport * from './lib/service/loading.service'\n\nexport * from './lib/service/action.service'\n\nexport * from './lib/service/i18n.service'\n\nexport * from './lib/service/themeConfig.service'\n\nexport * from './lib/page-form/page-form.component'\n\nexport * from './lib/page-grid-list/page-grid-list.component'\n\nexport * from './lib/loading/loading.component'\n\nexport * from './lib/steps/steps.component'\n\nexport * from './lib/row-selector/row-selector.component'\n\nexport * from './lib/search/search/search.component'\n\nexport * from './lib/page-form/page-form.interface'\n\nexport * from './lib/service/userHistory.service'\n\nexport * from './lib/theme-config/theme-config.compoent'\n\nexport * from './lib/log/log.component'\n\nexport * from './lib/import/import.component'\n\nexport * from './lib/steps/steps.component'\n\nexport * from './lib/row-selector/row-selector.component'\n\nexport * from './lib/href-btn-list/href-btn-list.component'\n\n\n// export * from './styles/styles.d.ts'\n\n// export * from './lib/styles/styles.scss'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["filter","i1","i1.ActionService","i3","i2","_getFilterMatchMode","debounceTime","i2.ActionService","i4","i3.I18nService","i5","i2.I18nService","RowSelectorComponent","rowselectorPop","map","i1.LoadingService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAIa,cAAc,CAAA;AAG1B,IAAA,WAAA,GAAA;AAFA,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAW,CAAC;AAEjC,QAAA,IAAI,CAAC,QAAQ;AACX,aAAA,IAAI,CACJ,QAAQ,EAAE,EACV,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,EACzD,YAAY,CAAC,GAAG,CAAC,CACjB;AACA,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;YACtB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,QAAQ;aACZ,IAAI,CACJ,QAAQ,EAAE,EACV,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,CAAC,CACzD;AACA,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;YACtB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,UAAU,CAAC,OAAgB,EAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC5B;IAED,UAAU,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;KACtB;+GA9BW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADD,MAAM,EAAA,CAAA,CAAA,EAAA;;4FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;ACUrB,MAAA,KAAK,GAAgC;AAChD,IAAA,OAAO,EAAE;AACP,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,IAAI,EAAE,MAAM;AACb,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,IAAI,EAAE,MAAM;AACb,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,IAAI,EAAE,MAAM;AACb,KAAA;EACF;AACY,MAAA,UAAU,IAAG,cAAoC,EAAA;MA+CjD,WAAW,CAAA;AAQtB,IAAA,WAAA,CACS,SAA2B,EAC3B,QAAkB,EAClB,MAAe,EAAA;QAFf,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAC3B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAS;QAVxB,IAAO,CAAA,OAAA,GAAW,OAAO,CAAA;AACzB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AACvC,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACzB,YAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AACpD,SAAC,CAAC,CAAC;AAOD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;AAClD,QAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KAC1B;IAED,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;AAC5B,YAAA,OAAO,OAAO,CAAC;SAChB;QACD,OAAO,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,SAAS,CAAC,QAAQ,CAAC;KACpF;AACD,IAAA,GAAG,CAAC,IAAY,EAAA;QACd,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;QAC/C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;KACjF;AACD,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAACA,QAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAuB,CAAC;KACzF;;IAGA,QAAQ,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;;IAED,KAAK,CAAC,GAAW,EAAE,iBAAsB,EAAA;QACvC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;KACvD;;AAED,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;;AAED,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC;KACtF;+GA/CU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAX,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACuED,MAAM,OAAO,GAAG,EAAE,CAAC;MAQN,WAAW,CAAA;AAuCvB,IAAA,WAAA,GAAA;;QArCA,IAAK,CAAA,KAAA,GAAY,KAAK,CAAC;;QAEvB,IAAE,CAAA,EAAA,GAAW,CAAC,CAAC;;QAEf,IAAS,CAAA,SAAA,GAAW,EAAE,CAAC;;QAEvB,IAAK,CAAA,KAAA,GAAU,EAAE,CAAC;QAClB,IAAG,CAAA,GAAA,GAAW,EAAE,CAAC;;QAEjB,IAAS,CAAA,SAAA,GAAgB,EAAE,CAAC;;QAE5B,IAAa,CAAA,aAAA,GAAkB,EAAE,CAAC;;QAElC,IAAW,CAAA,WAAA,GAAgB,EAAE,CAAC;;AAE9B,QAAA,IAAA,CAAA,SAAS,GAAW,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;;QAEvE,IAAO,CAAA,OAAA,GAAS,EAAE,CAAC;;QAEnB,IAAQ,CAAA,QAAA,GAAU,EAAE,CAAC;;QAErB,IAAS,CAAA,SAAA,GAAW,EAAE,CAAC;;AAEvB,QAAA,IAAA,CAAA,MAAM,GAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;;QAE3B,IAAM,CAAA,MAAA,GAAiB,EAAE,CAAC;;QAE1B,IAAS,CAAA,SAAA,GAAW,EAAE,CAAC;QACvB,IAAS,CAAA,SAAA,GAAW,EAAE,CAAC;QACvB,IAAQ,CAAA,QAAA,GAAS,EAAE,CAAC;AACpB,QAAA,IAAA,CAAA,IAAI,GAAe,MAAM,CAAC,UAAU,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,cAAc,GAAmB,MAAM,CAAC,cAAc,CAAC,CAAC;AACxD,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAClD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,KAAK,GAAmB,MAAM,CAAC,cAAc,CAAC,CAAC;AAC/C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;KACV;AAEhB,IAAA,GAAG,CAAC,GAAQ,EAAA;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAC/C,GAAG,CAAC,CAAC,QAAa,KAAI;AACrB,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;AACb,YAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SACtC,CAAC,CACF,CAAC;KACF;AACD,IAAA,MAAM,CAAC,KAAY,EAAA;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,kBAAkB,EAAE,KAAK,CAAC,CAAC,IAAI,CAC9D,GAAG,CAAC,CAAC,QAAa,KAAI;AACrB,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;;SAEb,CAAC,CACF,CAAC;KACF;AAED,IAAA,OAAO,CAAC,KAAY,EAAA;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,mBAAmB,EAAE,KAAK,CAAC,CAAC,IAAI,CAC/D,GAAG,CAAC,CAAC,QAAa,KAAI;AACrB,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;;SAEb,CAAC,CACF,CAAC;KACF;AAED,IAAA,MAAM,CAAC,KAAY,EAAA;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,CACpD,GAAG,CAAC,CAAC,QAAa,KAAI;AACrB,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;;SAEb,CAAC,CACF,CAAC;KACF;IAED,MAAM,CAAC,GAAS,EAAE,EAAa,EAAA;QAC9B,IAAI,GAAG,EAAE;YACR,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AACtC,gBAAA,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;AACd,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACzB,aAAC,CAAC,CAAC;SACH;aAAM;;;AAGN,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AACjD,gBAAA,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;AACd,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACzB,aAAC,CAAC,CAAC;SACH;KACD;;AAED,IAAA,UAAU,CAAC,KAAa,EAAA;;AAEvB,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YACrB,KAAK,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,KAAK,EAAE,CAAC;SAChD;AACD,QAAA,IAAI,OAAO,GAAQ,KAAK,CAAC,OAAO,CAAC;QACjC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;YACrC,OAAO,KAAK,CAAC,OAAO,CAAC;SACrB;AACD,QAAA,IAAI,OAAO,GAAQ,KAAK,CAAC,OAAO,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;YACrC,OAAO,KAAK,CAAC,OAAO,CAAC;SACrB;aAAM;YACN,KAAK,CAAC,OAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,GAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;SACzB;QACD,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACtC,YAAA,KAAK,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC;SAC/C;QACD,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAChB,OAAO,KAAK,CAAC,GAAG,CAAC;SACjB;aAAM;YACN,IAAI,EAAE,GAAW,EAAE,CAAC;;AAEpB,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAA;AAC/B,YAAA,IAAI,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAE,IAAI,CAAA;YAC5D,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAI;gBAC5B,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAC1B,oBAAA,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE;wBACf,EAAE,IAAI,GAAG,SAAS,CAAA,KAAA,EAAQ,CAAC,CAAC,QAAQ,GAAG,CAAA;;qBAEvC;yBAAM;AACN,wBAAA,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;qBACjG;AACF,iBAAC,CAAC,CAAC;AACJ,aAAC,CAAC,CAAC;AACH,YAAA,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC;SAC5D;AACD,QAAA,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,CACpD,GAAG,CAAC,CAAC,QAAa,KAAI;AACrB,YAAA,IAAI,KAAK,CAAC,GAAG,EAAE;gBACd,OAAO,KAAK,CAAC,GAAG,CAAC;aACjB;AACD,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;;SAEb,CAAC,CACF,CAAC;KACF;;AAED,IAAA,IAAI,CAAC,GAAU,EAAA;QACd,IAAI,GAAG,EAAE;YACR,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;SAC/B;aAAM;YACN,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;SACxC;KACD;AACD,IAAA,QAAQ,CAAC,KAAW,EAAA;;QAEnB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC,IAAI,CAClD,GAAG,CAAC,CAAC,QAAa,KAAI;AACrB,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACnD,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;;SAEb,CAAC,CACF,CAAC;KACF;;AAED,IAAA,KAAK,CAAC,GAAW,EAAA;QAChB,IAAI,GAAG,EAAE;YACR,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;SAChC;aAAM;YACN,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC;SAC1C;KACD;AACD,IAAA,SAAS,CAAC,KAAY,EAAA;;AAErB,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YACrB,KAAK,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,KAAK,EAAE,CAAC;SAChD;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,CACnD,GAAG,CAAC,CAAC,QAAa,KAAI;AACrB,YAAA,IAAI,KAAK,CAAC,GAAG,EAAE;gBACd,OAAO,KAAK,CAAC,GAAG,CAAC;aACjB;AACD,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;;SAEb,CAAC,CACF,CAAC;KACF;;AAED,IAAA,MAAM,CAAC,GAAY,EAAA;QAClB,IAAI,GAAG,EAAE;YACR,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;SACjC;aAAM;YACN,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC;SAC5C;KACD;AACD,IAAA,UAAU,CAAC,KAAa,EAAA;;QAEvB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,CACpD,GAAG,CAAC,CAAC,QAAa,KAAI;AACrB,YAAA,IAAI,KAAK,CAAC,GAAG,EAAE;gBACd,OAAO,KAAK,CAAC,GAAG,CAAC;aACjB;AACD,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;;SAEb,CAAC,CACF,CAAC;KACF;;AAED,IAAA,GAAG,CAAC,GAAS,EAAA;QACZ,IAAI,GAAG,EAAE;YACR,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;SAC9B;aAAM;YACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;SACtC;KACD;AACD,IAAA,OAAO,CAAC,KAAU,EAAA;QACjB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE;AACvC,YAAA,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;SACjC;;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CACjD,GAAG,CAAC,CAAC,QAAa,KAAI;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;AAC5B,YAAA,IAAI,QAAQ,CAAC,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;AAC5D,gBAAA,IAAI,CAAC,SAAS,CAAC,OAAQ,CAAC,KAAK,CAAC,UAAW,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,UAAW,CAAC,CAAC;aACtE;AACD,YAAA,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,EAAE,CAAC;AACvB,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;;SAEb,CAAC,CACF,CAAC;KACF;;AAED,IAAA,MAAM,CAAC,GAAY,EAAA;QAClB,IAAI,GAAG,EAAE;YACR,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;SACjC;aAAM;YACN,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC;SAC5C;KACD;AACD,IAAA,UAAU,CAAC,KAAa,EAAA;;QAEvB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,CACpD,GAAG,CAAC,CAAC,QAAa,KAAI;AACrB,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1C,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;;SAEb,CAAC,CACF,CAAC;KACF;AACD,IAAA,SAAS,CAAC,GAAY,EAAA;QACrB,IAAI,GAAG,EAAE;YACR,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;SACjC;aAAM;YACN,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC;SAC5C;KACD;AACD,IAAA,aAAa,CAAC,KAAa,EAAA;;QAE1B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,WAAW,EAAE,KAAK,CAAC,CAAC,IAAI,CACvD,GAAG,CAAC,CAAC,QAAa,KAAI;AACrB,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1C,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;;SAEb,CAAC,CACF,CAAC;KACF;;AAED,IAAA,WAAW,CAAC,GAAY,EAAA;QACvB,IAAI,GAAG,EAAE;YACR,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;SACtC;aAAM;YACN,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC;SACjD;KACD;AACD,IAAA,eAAe,CAAC,KAAa,EAAA;;QAE5B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,aAAa,EAAE,KAAK,CAAC,CAAC,IAAI,CACzD,GAAG,CAAC,CAAC,QAAa,KAAI;AACrB,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;AACjC,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;;SAEb,CAAC,CACF,CAAC;KACF;;;;;;;;;;;;;;;;;;;;;;;;AAwBD,IAAA,MAAM,CAAC,GAAY,EAAA;QAClB,IAAI,GAAG,EAAE;YACR,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;SACjC;aAAM;YACN,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC;SAC5C;KACD;AACD,IAAA,UAAU,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YACrB,KAAK,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,KAAK,EAAE,CAAC;SAChD;;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,QAAQ,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAC9E,GAAG,CAAC,CAAC,QAAa,KAAI;YACrB,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE;AACvC,gBAAA,IAAI,EAAE,kFAAkF;AACxF,aAAA,CAAC,CAAC;AACH,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC;AAC3C,YAAA,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjC,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;;SAEb,CAAC,CACF,CAAC;KACF;;AAED,IAAA,UAAU,CAAC,GAAgB,EAAA;QAC1B,IAAI,GAAG,EAAE;YACR,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;SACtC;aAAM;YACN,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC;SACjD;KACD;AACD,IAAA,eAAe,CAAC,KAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YACrB,KAAK,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,KAAK,EAAE,CAAC;SAChD;;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,YAAY,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAClF,GAAG,CAAC,CAAC,QAAa,KAAI;YACrB,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE;AACvC,gBAAA,IAAI,EAAE,kFAAkF;AACxF,aAAA,CAAC,CAAC;;AAEH,YAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,KAAK,EAAE,QAAQ,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,OAAO,CAAA;AAC7E,YAAA,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjC,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;;SAEb,CAAC,CACF,CAAC;KACF;;AAED,IAAA,gBAAgB,CAAC,GAAU,EAAA;QAC1B,IAAI,GAAG,EAAE;YACR,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;SAC3C;aAAM;YACN,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC;SACrD;KACD;AACD,IAAA,oBAAoB,CAAC,KAAW,EAAA;;QAE/B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,UAAU,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAChF,GAAG,CAAC,CAAC,QAAa,KAAI;YACrB,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE;AACvC,gBAAA,IAAI,EAAE,kFAAkF;AACxF,aAAA,CAAC,CAAC;AACH,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;AAC7C,YAAA,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjC,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;;SAEb,CAAC,CACF,CAAC;KACF;;AAED,IAAA,WAAW,CAAC,GAAY,EAAA;QACvB,IAAI,GAAG,EAAE;YACR,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;SACtC;aAAM,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;SAC3C;KACD;AACD,IAAA,eAAe,CAAC,GAAW,EAAA;;QAE1B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,aAAa,EAAE,GAAG,CAAC,CAAC,IAAI,CACvD,GAAG,CAAC,CAAC,QAAa,KAAI;AACrB,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;AACvF,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;;SAEb,CAAC,CACF,CAAC;KACF;;AAED,IAAA,WAAW,CAAC,GAAY,EAAA;QACvB,IAAI,GAAG,EAAE;YACR,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;SACtC;aAAM,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;SAC3C;KACD;AACD,IAAA,eAAe,CAAC,GAAW,EAAA;;QAE1B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,aAAa,EAAE,GAAG,CAAC,CAAC,IAAI,CACvD,GAAG,CAAC,CAAC,QAAa,KAAI;AACrB,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;AACvF,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;;SAEb,CAAC,CACF,CAAC;KACF;;AAED,IAAA,YAAY,CAAC,KAAgB,EAAA;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,cAAc,EAAE,KAAK,CAAC,CAAC,IAAI,CAC1D,GAAG,CAAC,CAAC,QAAa,KAAI;AACrB,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACnD,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;;SAEb,CAAC,CACF,CAAC;KACF;;AAED,IAAA,WAAW,CAAC,GAAW,EAAA;QACtB,IAAI,GAAG,EAAE;YACR,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;SACtC;aAAM;YACN,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;SAC7C;KACD;AACD,IAAA,eAAe,CAAC,KAAY,EAAA;;QAE3B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,aAAa,EAAE,KAAK,CAAC,CAAC,IAAI,CACzD,GAAG,CAAC,CAAC,QAAa,KAAI;;AAErB,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;;SAEb,CAAC,CACF,CAAC;KACF;;AAED,IAAA,QAAQ,CAAC,MAAe,EAAA;QACvB,QAAQ,MAAM;AACb,YAAA,KAAK,QAAQ;AACZ,gBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC;AAC5B,gBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC;AAC5B,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,EAAE,CAAC;gBACxB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAI;AACrC,oBAAA,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;AACrB,oBAAA,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;AACrB,oBAAA,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC;AAChB,iBAAC,CAAC,CAAC;gBACH,MAAM;AACP,YAAA;AACC,gBAAA,EAAE,CAAC;SACJ;KACD;;AAED,IAAA,SAAS,CAAC,GAAU,EAAA;QACnB,IAAI,GAAG,EAAE;YACR,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;SACnC;aAAM;YACN,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;SAC5C;KACD;AACD,IAAA,YAAY,CAAC,KAAW,EAAA;;QAEvB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,WAAW,EAAE,KAAK,CAAC,CAAC,IAAI,CACvD,GAAG,CAAC,CAAC,QAAa,KAAI;AACrB,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACnD,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;;SAEb,CAAC,CACF,CAAC;KACF;AACD,IAAA,UAAU,CAAC,GAAU,EAAA;QACpB,IAAI,GAAG,EAAE;YACR,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;SACpC;aAAM;YACN,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;SAC7C;KACD;AACD,IAAA,aAAa,CAAC,KAAW,EAAA;;QAExB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,YAAY,EAAE,KAAK,CAAC,CAAC,IAAI,CACxD,GAAG,CAAC,CAAC,QAAa,KAAI;AACrB,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACnD,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;;SAEb,CAAC,CACF,CAAC;KACF;AACD,IAAA,UAAU,CAAC,GAAU,EAAA;QACpB,IAAI,GAAG,EAAE;YACR,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;SACpC;aAAM;YACN,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;SAC7C;KACD;AACD,IAAA,aAAa,CAAC,KAAW,EAAA;;QAExB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,YAAY,EAAE,KAAK,CAAC,CAAC,IAAI,CACxD,GAAG,CAAC,CAAC,QAAa,KAAI;AACrB,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACnD,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;;SAEb,CAAC,CACF,CAAC;KACF;+GA3iBW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,WAAW,qDAFZ,CAAC,cAAc,EAAE,mBAAmB,CAAC,0BADtC,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FAGA,WAAW,EAAA,UAAA,EAAA,CAAA;kBAPvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,SAAS,EAAE,CAAC,cAAc,EAAE,mBAAmB,CAAC;AAChD,iBAAA,CAAA;;;ACvJK,MAAO,YAAa,SAAQ,WAAW,CAAA;AAA7C,IAAA,WAAA,GAAA;;AACQ,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAM,IAAI,CAAC,CAAC;AAC5C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;KAmB1D;AAlBS,IAAA,QAAQ,CAChB,KAAU,EACV,UAKI,EAAE,EACN,WAAoB,KAAK,EAAA;AAEzB,QAAA,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC/B,IAAI,QAAQ,EAAE;AACb,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5B;KACD;IACD,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7B;AACD;;MCOY,aAAa,CAAA;IASzB,WACS,CAAA,UAA6B,EAC7B,SAA2B,EAAA;QAD3B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;QAC7B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAVpC,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;AACzB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAA+B,SAAS,CAAC,CAAC;AACnE,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAwB,SAAS,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAqB,SAAS,CAAC,CAAC;AAC/C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AACpC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAU,KAAK,CAAC,CAAA;AAChC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAM,EAAE,CAAC,CAAA;KAKtC;AACJ,IAAA,UAAU,CAAC,IAAa,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACpB;IACD,KAAK,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AACxC,YAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AACzC,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACtC,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACtC,OAAO;SACP;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;KACxC;AACD,IAAA,YAAY,CAAC,kBAAsC,EAAA;AAClD,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;YAChD,OAAO;SACP;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;KACjD;IACD,YAAY,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;SACrC;AACD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;KACtC;AACD,IAAA,WAAW,CAAC,SAA6B,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACtC,OAAO;SACP;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;KACvC;IACD,SAAS,CAAC,MAAc,EAAE,SAA6B,EAAA;AACtD,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAC5C,OAAO;SACP;QACD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;KAC7C;AACD,IAAA,SAAS,CAAC,SAA6B,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;SAC3C;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;KAC5C;AACD,IAAA,aAAa,CAAC,SAA6B,EAAA;AAC1C,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;SAC/C;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;KAChD;AACD,IAAA,aAAa,CAAC,UAAkC,EAAA;AAC/C,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACzC,OAAO;SACP;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;KAC1C;IACD,aAAa,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;SACtC;AACD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;KACvC;AACD,IAAA,cAAc,CAAC,WAA+B,EAAA;AAC7C,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YAC3C,OAAO;SACP;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;KAC5C;IACD,cAAc,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;SACvC;AACD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;KACxC;AACD,IAAA,WAAW,CAAC,QAA8B,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACrC,OAAO;SACP;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;KACtC;IACD,WAAW,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;SACpC;AACD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KACrC;AACD,IAAA,OAAO,CAAC,IAAU,EAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAClB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC9B;KACD;IACD,OAAO,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAClB,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;SACjC;AACD,QAAA,OAAO,SAAS,CAAC;KACjB;IACD,mBAAmB,CAAC,GAAW,EAAE,IAAwD,EAAA;QACxF,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;KACzC;IACD,mBAAmB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC/B;AACD,IAAA,cAAc,CAAC,KAA4B,EAAA;AAC1C,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAC5B;IACD,cAAc,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;KAC1B;AACD,IAAA,SAAS,CAAC,MAA0B,EAAA;AACnC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KACxB;IACD,SAAS,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;KACrB;AACD,IAAA,gBAAgB,CAAC,IAAQ,EAAA;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KAC3B;+GA3IW,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFb,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEN,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACX,oBAAA,UAAU,EAAE,MAAM;AAClB,iBAAA,CAAA;;MAkJY,iBAAiB,CAAA;AAQ7B,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAPlC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAqB,SAAS,CAAC,CAAC;AAC3D,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAc,EAAE,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAyB,SAAS,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAqB,SAAS,CAAC,CAAC;AACpD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAuB,SAAS,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAmB,SAAS,CAAC,CAAC;KAEL;AAEtC,IAAA,YAAY,CAAC,kBAAsC,EAAA;AAClD,QAAA,IAAI,kBAAkB,IAAI,SAAS,EAAE;AACpC,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvC,OAAO;SACP;QACD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;KAC5D;IACD,YAAY,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;KACjC;AACD,IAAA,WAAW,CAAC,SAA6B,EAAA;AACxC,QAAA,IAAI,SAAS,IAAI,SAAS,EAAE;YAC3B,OAAO;SACP;AACD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAC5B,QAAA,IAAI,UAAU,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC;QACrH,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;KACrC;IACD,SAAS,CAAC,MAAc,EAAE,SAA6B,EAAA;AACtD,QAAA,IAAI,SAAS,IAAI,SAAS,EAAE;YAC3B,OAAO;SACP;AACD,QAAA,MAAM,SAAS,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AAC9D,QAAA,IAAI,UAAU,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CACzD,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,CAC5E,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;KAC7B;AACD,IAAA,SAAS,CAAC,SAA6B,EAAA;AACtC,QAAA,IAAI,SAAS,IAAI,SAAS,EAAE;YAC3B,OAAO;SACP;AACD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAC5B,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC;AACnH,QAAA,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC;KACpD;AACD,IAAA,aAAa,CAAC,SAA6B,EAAA;AAC1C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC7C,IAAI,UAAU,KAAK,SAAS;AAAE,YAAA,OAAO,IAAI,CAAC;AAC1C,QAAA,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,SAAS;AAAE,YAAA,OAAO,IAAI,CAAC;AAClD,QAAA,OAAO,KAAK,CAAC;KACb;AACD,IAAA,aAAa,CAAC,UAAkC,EAAA;AAC/C,QAAA,IAAI,UAAU,IAAI,SAAS,EAAE;AAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC/B,OAAO;SACP;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;KACvC;IACD,aAAa,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;KACzB;AACD,IAAA,cAAc,CAAC,WAA+B,EAAA;AAC7C,QAAA,IAAI,WAAW,IAAI,SAAS,EAAE;AAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAChC,OAAO;SACP;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;KAC9C;IACD,cAAc,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;KAC1B;AACD,IAAA,WAAW,CAAC,QAA8B,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC5B;IACD,WAAW,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;KACvB;AACD,IAAA,OAAO,CAAC,IAAU,EAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACpB;IACD,OAAO,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;KACnB;+GApFW,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFjB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEN,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACX,oBAAA,UAAU,EAAE,MAAM;AAClB,iBAAA,CAAA;;MA2FY,gBAAgB,CAAA;AAO5B,IAAA,WAAA,GAAA;AANA,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAqB,SAAS,CAAC,CAAC;AAC3D,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAc,EAAE,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAyB,SAAS,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAqB,SAAS,CAAC,CAAC;AACpD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAuB,SAAS,CAAC,CAAC;KAEnC;AAEhB,IAAA,YAAY,CAAC,kBAAsC,EAAA;AAClD,QAAA,IAAI,kBAAkB,IAAI,SAAS,EAAE;AACpC,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvC,OAAO;SACP;QACD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;KAC5D;IACD,YAAY,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;KACjC;AACD,IAAA,WAAW,CAAC,SAA6B,EAAA;AACxC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KACxB;IACD,SAAS,CAAC,MAAc,EAAE,SAA6B,EAAA;AACtD,QAAA,IAAI,SAAS,IAAI,SAAS,EAAE;YAC3B,OAAO;SACP;AACD,QAAA,MAAM,SAAS,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AACxC,QAAA,IAAI,UAAU,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;AAC5G,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;KAC7B;AACD,IAAA,SAAS,CAAC,SAA6B,EAAA;AACtC,QAAA,IAAI,SAAS,IAAI,SAAS,EAAE;YAC3B,OAAO;SACP;QACD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC;AAChG,QAAA,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC;KACpD;AACD,IAAA,aAAa,CAAC,SAA6B,EAAA;AAC1C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC7C,IAAI,UAAU,KAAK,SAAS;AAAE,YAAA,OAAO,KAAK,CAAC;AAC3C,QAAA,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,SAAS;AAAE,YAAA,OAAO,IAAI,CAAC;AAClD,QAAA,OAAO,KAAK,CAAC;KACb;AACD,IAAA,aAAa,CAAC,UAAkC,EAAA;AAC/C,QAAA,IAAI,UAAU,IAAI,SAAS,EAAE;AAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC/B,OAAO;SACP;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;KACvC;IACD,aAAa,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;KACzB;AACD,IAAA,cAAc,CAAC,WAA+B,EAAA;AAC7C,QAAA,IAAI,WAAW,IAAI,SAAS,EAAE;AAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAChC,OAAO;SACP;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;KAC9C;IACD,cAAc,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;KAC1B;AACD,IAAA,WAAW,CAAC,QAA8B,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC5B;IACD,WAAW,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;KACvB;+GArEW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFhB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEN,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACX,oBAAA,UAAU,EAAE,MAAM;AAClB,iBAAA,CAAA;;;MCjQY,cAAc,CAAA;AAI1B,IAAA,WAAA,CAAoB,MAAqB,EAAA;QAArB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QAFzC,IAAK,CAAA,KAAA,GAAG,KAAK,EAAa,CAAC;QAC3B,IAAW,CAAA,WAAA,GAAG,KAAK,EAAO,CAAC;KACkB;IAEjB,YAAY,GAAA;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,gBAAgB;YAAE,OAAO;AAC5C,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,QAAQ;YAAE,OAAO;AACjD,QAAA,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAG,CAAC,IAAK,EAAE,YAAY,CAAC,CAAC;KACnE;IAE2B,YAAY,GAAA;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,gBAAgB;YAAE,OAAO;AAC5C,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,QAAQ;YAAE,OAAO;QACjD,IAAI,CAAC,KAAK,EAAE,EAAE,gBAAgB,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAG,CAAC,IAAK,EAAE,YAAY,CAAC,CAAC;KACrG;IAEsB,OAAO,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,gBAAgB,EAAE;AACnC,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,QAAQ;gBAAE,OAAO;AACjD,YAAA,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAG,CAAC,IAAK,EAAE,OAAO,CAAC,CAAC;SAC9D;aAAM;YACN,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAG,CAAC,CAAC;SAC1C;KACD;IAEyB,aAAa,GAAA;AACtC,QAAA,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAK,CAAC,EAAE;AAC1E,YAAA,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAG,CAAC,IAAK,EAAE,UAAU,CAAC,CAAC;SACjE;KACD;AAGD,IAAA,YAAY,CAAC,KAAiB,EAAA;QAC7B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,MAAM,KAAK,GAAQ,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC;AAC7C,QAAA,IAAI,KAAK,CAAC,cAAc,EAAE;YACzB,KAAK,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SACtC;QACD,UAAU,CAAC,MAAK;YACf,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,YAAA,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC;KACR;AAGD,IAAA,YAAY,CAAC,KAAiB,EAAA;QAC7B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;KACxB;AAGD,IAAA,UAAU,CAAC,KAAiB,EAAA;QAC3B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;KACxB;+GAzDW,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,stBACM,gBAAgB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FADpC,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,8DAA8D;AACxE,oBAAA,UAAU,EAAE,IAAI;AAChB,iBAAA,CAAA;+EAEoD,SAAS,EAAA,CAAA;sBAA5D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;gBAKtB,YAAY,EAAA,CAAA;sBAAvC,YAAY;uBAAC,YAAY,CAAA;gBAME,YAAY,EAAA,CAAA;sBAAvC,YAAY;uBAAC,YAAY,CAAA;gBAMH,OAAO,EAAA,CAAA;sBAA7B,YAAY;uBAAC,OAAO,CAAA;gBASK,aAAa,EAAA,CAAA;sBAAtC,YAAY;uBAAC,UAAU,CAAA;gBAOxB,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAevC,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAOtC,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ACxDrC,MAAM,WAAW,GAAG;AACnB,IAAA,KAAK,EAAE,CAAC,KAAgB,KAAgB;QACvC,IAAI,KAAK,GAAe,EAAE,CAAC;AAC3B,QAAA,QAAQ,KAAK,CAAC,IAAI;AACjB,YAAA,KAAK,WAAW;AACf,gBAAA,KAAK,GAAG,KAAK,CAAC,cAAe,CAAC;gBAC9B,MAAM;AACP,YAAA,KAAK,aAAa;AACjB,gBAAA,KAAK,GAAG,KAAK,CAAC,gBAAiB,CAAC;gBAChC,MAAM;AACP,YAAA,KAAK,QAAQ;AACZ,gBAAA,KAAK,GAAG,KAAK,CAAC,WAAY,CAAC;gBAC3B,MAAM;AACP,YAAA,KAAK,YAAY;AAChB,gBAAA,KAAK,GAAG,KAAK,CAAC,eAAgB,CAAC;gBAC/B,MAAM;AACP,YAAA,KAAK,YAAY;AAChB,gBAAA,KAAK,GAAG,KAAK,CAAC,eAAgB,CAAC;gBAC/B,MAAM;AACP,YAAA,KAAK,cAAc;AAClB,gBAAA,KAAK,GAAG,KAAK,CAAC,iBAAkB,CAAC;gBACjC,MAAM;AACP,YAAA,KAAK,aAAa;AACjB,gBAAA,KAAK,GAAG,KAAK,CAAC,gBAAiB,CAAC;gBAChC,MAAM;AACP,YAAA,KAAK,OAAO;AACX,gBAAA,KAAK,GAAG,KAAK,CAAC,UAAW,CAAC;gBAC1B,MAAM;AACP,YAAA,KAAK,UAAU;AACd,gBAAA,KAAK,GAAG,KAAK,CAAC,aAAc,CAAC;gBAC7B,MAAM;AACP,YAAA,KAAK,QAAQ;AACZ,gBAAA,KAAK,GAAG,KAAK,CAAC,WAAY,CAAC;gBAC3B,MAAM;AACP,YAAA,KAAK,OAAO;AACX,gBAAA,KAAK,GAAG,KAAK,CAAC,UAAW,CAAC;gBAC1B,MAAM;AACP,YAAA,KAAK,YAAY;AAChB,gBAAA,KAAK,GAAG,KAAK,CAAC,eAAgB,CAAC;gBAC/B,MAAM;AACP,YAAA,KAAK,aAAa;AACjB,gBAAA,KAAK,GAAG,KAAK,CAAC,gBAAiB,CAAC;gBAChC,MAAM;SACP;AACD,QAAA,OAAO,KAAK,CAAC;KACb;AACD,IAAA,KAAK,EAAE,CAAC,KAAgB,EAAE,WAAwB,KAAwB;QACzE,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;QACjD,IAAI,OAAO,EAAE;AACZ,YAAA,OAAO,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAClC;QACD,OAAO,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;KACtC;AACD,IAAA,QAAQ,CAAC,KAAU,EAAE,GAAW,EAAE,KAAU,EAAA;QAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5B,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;AACrB,YAAA,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACnB,OAAO;SACP;aAAM;AACN,YAAA,MAAM,CAAC,GAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;AAC5B,YAAA,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE;AAC1B,gBAAA,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;aACd;AACD,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;SAC/C;KACD;IACD,QAAQ,CAAC,KAAU,EAAE,GAAW,EAAA;QAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5B,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;AACrB,YAAA,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;SAClB;aAAM;AACN,YAAA,MAAM,CAAC,GAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;AAC5B,YAAA,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE;AAC1B,gBAAA,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;aACd;AACD,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;SAC/C;KACD;AACD,IAAA,YAAY,CAAC,KAAgB,EAAA;AAC5B,QAAA,IAAI,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAK,CAAC;YAAE,OAAO;QACnF,WAAW,CAAC,KAAK,CAAC,KAAK,CAAU,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAE,WAAW,CAAC,KAAK,CAAC,KAAK,CAAU,CAAC,OAAO,CAAC;cAClG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAU,CAAC,OAAO;cAC1C,SAAS,CAAC;KACb;AACD,IAAA,mBAAmB,CAAC,KAAgB,EAAE,YAAiB,EAAE,QAAkB,EAAA;QAC1E,IAAI,KAAK,CAAC,IAAI,IAAI,YAAY,IAAI,YAAY,KAAK,OAAO,EAAE;AAC3D,YAAA,OAAO,WAAW,CAAC,cAAc,EAAE,CAAC;SACpC;AACD,QAAA,OAAO,YAAY,CAAC;KACpB;IACD,cAAc,CAAC,YAAoB,GAAG,EAAA;AACrC,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;AACvB,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;AAC/B,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1D,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACnD,OAAO,CAAA,EAAG,IAAI,CAAA,EAAG,SAAS,CAAA,EAAG,KAAK,CAAA,EAAG,SAAS,CAAA,EAAG,GAAG,CAAA,CAAE,CAAC;KACvD;AACD,IAAA,sBAAsB,EAAE,CACvB,KAAgB,EAChB,KAAU,EACV,SAAkB,EAClB,QAAiB,EACjB,aAAoB,EACpB,QAAa,EACb,QAAkB,KACf;QACH,IAAI,KAAK,CAAC,IAAI,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AAC3C,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI;AACpB,iBAAA,IAAI,CACJ,GAAG,CAAC,CAAC,IAAI,KAAI;gBACZ,IAAI,CAAC,KAAK,CAAC,CAAC;AACb,aAAC,CAAC,CACF;iBACA,SAAS,CAAC,MAAK;gBACf,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,QAAQ,CAAC,EAAE,QAAQ,IAAI,QAAQ,EAAE,CAAC;AACjI,aAAC,CAAC,CAAC;YACJ,aAAa,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;SAC5C;aAAM;YACN,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,QAAQ,CAAC,CAAC;YACxG,QAAQ,IAAI,QAAQ,EAAE,CAAC;SACvB;KACD;IACD,cAAc,EAAE,CAAC,KAAgB,EAAE,MAAW,EAAE,QAAkB,KAAS;AAC1E,QAAA,IAAI,KAAK,CAAC,IAAI,IAAI,YAAY,EAAE;YAC/B,OAAO,WAAW,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SACtD;AACD,QAAA,IAAI,KAAK,CAAC,IAAI,IAAI,aAAa,EAAE;YAChC,OAAO,WAAW,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SACvD;AACD,QAAA,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,EAAE;YAC1B,OAAO,WAAW,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SACjD;AACD,QAAA,IAAI,KAAK,CAAC,IAAI,IAAI,QAAQ,EAAE;YAC3B,OAAO,WAAW,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SAClD;AACD,QAAA,IAAI,KAAK,CAAC,IAAI,IAAI,YAAY,EAAE;YAC/B,OAAO,WAAW,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;SAChE;AACD,QAAA,OAAO,MAAM,CAAC;KACd;AACD,IAAA,mBAAmB,EAAE,CAAC,KAAgB,EAAE,MAAW,KAAY;QAC9D,IAAI,KAAK,CAAC,eAAe,EAAE,aAAa,IAAI,QAAQ,EAAE;YACrD,OAAO,MAAM,EAAE,GAAG,CAAC;SACnB;AACD,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACrD;AACD,IAAA,oBAAoB,EAAE,CAAC,KAAgB,EAAE,MAAW,KAAY;AAC/D,QAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,WAAW,EAAE;AACzC,YAAA,OAAO,MAAM,CAAC;SACd;AACD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACxB;AACD,IAAA,cAAc,EAAE,CAAC,KAAgB,EAAE,MAAW,KAAY;AACzD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACxB;AACD,IAAA,eAAe,EAAE,CAAC,KAAgB,EAAE,MAAW,KAAY;AAC1D,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACxB;IACD,mBAAmB,EAAE,CAAC,KAAgB,EAAE,MAAW,EAAE,QAAa,KAAY;AAC7E,QAAA,IAAI,KAAK,EAAE,eAAe,EAAE,aAAa,IAAI,OAAO,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;YAC3E,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9B,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACxB;AACD,QAAA,OAAO,MAAM,CAAC;KACd;IACD,YAAY,EAAE,CAAC,KAAgB,EAAE,GAAQ,EAAE,QAAkB,KAAS;AACrE,QAAA,IAAI,KAAK,CAAC,IAAI,IAAI,YAAY,EAAE;YAC/B,OAAO,WAAW,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;SACjD;AACD,QAAA,IAAI,KAAK,CAAC,IAAI,IAAI,YAAY,EAAE;YAC/B,OAAO,WAAW,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;SAC3D;AACD,QAAA,IAAI,KAAK,CAAC,IAAI,IAAI,aAAa,EAAE;YAChC,OAAO,WAAW,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;SAClD;AACD,QAAA,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,EAAE;YAC1B,OAAO,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;SAC5C;AACD,QAAA,IAAI,KAAK,CAAC,IAAI,IAAI,QAAQ,EAAE;YAC3B,OAAO,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;SAC7C;QACD,OAAO,GAAG,IAAI,EAAE,CAAC;KACjB;AACD,IAAA,iBAAiB,EAAE,CAAC,KAAgB,EAAE,GAAQ,KAAS;QACtD,IAAI,KAAK,CAAC,eAAe,EAAE,aAAa,IAAI,QAAQ,EAAE;AACrD,YAAA,OAAO,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;SACrE;QACD,MAAM,KAAK,GAAU,EAAE,CAAC;QACxB,WAAW,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,eAAe,EAAE,OAAO,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;AAC9F,QAAA,OAAO,KAAK,CAAC;KACb;IACD,iBAAiB,EAAE,CAAC,KAAgB,EAAE,GAAQ,EAAE,QAAkB,EAAE,UAAA,GAAsB,KAAK,KAAS;AACvG,QAAA,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,sBAAsB,EAAE;AAC1C,YAAA,OAAO,EAAE,CAAC;SACV;AACD,QAAA,IAAI,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAC/B,MAAM,cAAc,GAAG,KAAK,CAAC,eAAe,EAAE,cAAc,IAAI,YAAY,CAAC;AAC7E,YAAA,OAAO,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC;SAC7D;AACD,QAAA,IAAI,CAAC,UAAU,IAAI,KAAK,EAAE,eAAe,EAAE,aAAa,IAAI,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACzF,YAAA,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACpC,YAAA,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;SACxC;AACD,QAAA,OAAO,GAAG,CAAC;KACX;AACD,IAAA,kBAAkB,EAAE,CAAC,KAAgB,EAAE,GAAQ,KAAS;AACvD,QAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,WAAW,EAAE;YACzC,OAAO,GAAG,IAAI,EAAE,CAAC;SACjB;AACD,QAAA,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;KACrC;AACD,IAAA,YAAY,EAAE,CAAC,KAAgB,EAAE,GAAQ,KAAS;AACjD,QAAA,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;KACrC;AACD,IAAA,aAAa,EAAE,CAAC,KAAgB,EAAE,GAAQ,KAAS;AAClD,QAAA,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;KACrC;IACD,YAAY,CAAC,KAAa,EAAE,QAAgB,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO;AAC9C,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC;AAAE,YAAA,OAAO,CAAC,CAAC;AAChB,QAAA,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE;AAC1B,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;AACjD,YAAA,IAAI,EAAE;AAAE,gBAAA,OAAO,EAAE,CAAC;SAClB;QACD,OAAO;KACP;AACD,IAAA,aAAa,CAAC,MAAgB,EAAE,QAAgB,EAAE,KAAa,EAAA;AAC9D,QAAA,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO;QAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjE,QAAA,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AACrB,QAAA,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE;YAC1B,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;SAC/C;KACD;AACD,IAAA,UAAU,CAAC,QAAa,EAAE,SAAsB,EAAE,QAAkB,EAAA;QACnE,MAAM,MAAM,GAAQ,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACrC,YAAA,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AAC3D,YAAA,IAAI,KAAK,EAAE,IAAI,IAAI,YAAY,EAAE;AAChC,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAClF,OAAO;aACP;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC7B,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,MAAM,CAAC;KACd;IACD,QAAQ,CAAC,QAAa,EAAE,YAAiB,EAAE,SAAc,EAAE,KAAc,EAAC,IAAQ,EAAA;QACjF,IAAI,KAAK,EAAE;;AAEV,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAA;AAC/B,YAAA,IAAI,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAE,IAAI,CAAC;AACxD,YAAA,OAAO,CAAG,EAAA,SAAS,CAAI,CAAA,EAAA,SAAS,EAAE,CAAA;SAClC;QACD,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YACzC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,YAAY,EAAE;AAC3C,gBAAA,MAAM,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAM,IAAA,CAAA,CAAC,CAAC;gBAC9C,OAAO;aACP;AACD,YAAA,MAAM,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAK,EAAA,EAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA,IAAA,EAAO,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAE,CAAA,CAAC,CAAC;AACvG,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACxB;;;;AAID,IAAA,aAAa,CAAC,QAAa,EAAE,QAAa,EAAE,KAAgB,EAAA;AAC3D,QAAA,MAAM,WAAW,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QAC/H,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAK,CAAC,EAAE;YACtC,OAAO,CAAC,QAAQ,IAAI,EAAE,MAAM,QAAQ,IAAI,EAAE,CAAC,CAAC;SAC5C;AACD,QAAA,OAAO,KAAK,CAAC;KACb;AACD,IAAA,SAAS,CAAC,OAAe,EAAA;AACxB,QAAA,OAAO,kEAAkE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACxF;CACD,CAAC;AAEK,MAAM,UAAU,GAAG;IACzB,KAAK,EAAE,WAAW,CAAC,KAAK;IACxB,KAAK,EAAE,WAAW,CAAC,KAAK;IACxB,YAAY,EAAE,WAAW,CAAC,YAAY;IACtC,mBAAmB,EAAE,WAAW,CAAC,mBAAmB;IACpD,sBAAsB,EAAE,WAAW,CAAC,sBAAsB;IAC1D,cAAc,EAAE,WAAW,CAAC,cAAc;IAC1C,UAAU,EAAE,WAAW,CAAC,UAAU;IAClC,QAAQ,EAAE,WAAW,CAAC,QAAQ;IAC9B,aAAa,EAAE,WAAW,CAAC,aAAa;CACxC;;MCvQY,oBAAoB,CAAA;IAwBhC,QAAQ,GAAA;QACP,IAAI,CAAC,UAAU,EAAE,CAAC;KAClB;AAED,IAAA,WAAA,CAAoB,SAAoB,EAAA;QAApB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QA1BxC,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;AACf,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAM,EAAE,CAAC,CAAC;QACxB,IAAK,CAAA,KAAA,GAAG,KAAK,EAAa,CAAC;AAE3B,QAAA,IAAA,CAAA,WAAW,GAAe;AACzB,YAAA;AACC,gBAAA,KAAK,EAAE,aAAa;AACpB,gBAAA,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,MAAK;AACb,oBAAA,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;AAC1D,oBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC3B;AACD,aAAA;AACD,YAAA;AACC,gBAAA,KAAK,EAAE,WAAW;AAClB,gBAAA,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,MAAK;AACb,oBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;iBAC7C;AACD,aAAA;SACD,CAAC;QAOD,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;gBACjB,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,KAAK,QAAQ,EAAE;oBACpC,IAAI,CAAC,KAAK,GAAG;wBACZ,GAAG,IAAI,CAAC,WAAW;AACnB,wBAAA;AACC,4BAAA,KAAK,EAAE,mBAAmB;AAC1B,4BAAA,IAAI,EAAE,aAAa;4BACnB,OAAO,EAAE,MAAK;gCACb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,GAAI,CAAC,CAAC;AAChE,gCAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;6BAC3B;AACD,yBAAA;AACD,wBAAA;AACC,4BAAA,KAAK,EAAE,oBAAoB;AAC3B,4BAAA,IAAI,EAAE,aAAa;4BACnB,OAAO,EAAE,MAAK;gCACb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,GAAI,CAAC,CAAC;AAChE,gCAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,IAAI,OAAO,CAAC;AACtE,gCAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,IAAI,OAAO,CAAC;AACtE,gCAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC;AAC9G,gCAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;6BAC5B;AACD,yBAAA;qBACD,CAAC;iBACF;qBAAM,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,KAAK,YAAY,EAAE;oBAC/C,IAAI,CAAC,KAAK,GAAG;wBACZ,GAAG,IAAI,CAAC,WAAW;AACnB,wBAAA;AACC,4BAAA,KAAK,EAAE,mBAAmB;AAC1B,4BAAA,IAAI,EAAE,aAAa;4BACnB,OAAO,EAAE,MAAK;gCACb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,GAAI,CAAC,CAAC;AAChE,gCAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;6BAC3B;AACD,yBAAA;AACD,wBAAA;AACC,4BAAA,KAAK,EAAE,oBAAoB;AAC3B,4BAAA,IAAI,EAAE,aAAa;4BACnB,OAAO,EAAE,MAAK;gCACb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,GAAI,CAAC,CAAC;gCAChE,MAAM,OAAO,GAAU,IAAI,CAAC,KAAK,EAAE,EAAE,eAAe,EAAE,OAAQ,CAAC;AAC/D,gCAAA,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;AAC/D,gCAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;6BAC5B;AACD,yBAAA;qBACD,CAAC;iBACF;qBAAM;oBACN,IAAI,CAAC,KAAK,GAAG;wBACZ,GAAG,IAAI,CAAC,WAAW;AACnB,wBAAA;AACC,4BAAA,KAAK,EAAE,YAAY;AACnB,4BAAA,IAAI,EAAE,aAAa;4BACnB,OAAO,EAAE,MAAK;gCACb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,GAAI,CAAC,CAAC;AAChE,gCAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;6BAC3B;AACD,yBAAA;qBACD,CAAC;iBACF;aACD;AACF,SAAC,CAAC,CAAC;KACH;IAED,oBAAoB,CAAC,OAAc,EAAE,KAAU,EAAA;AAC9C,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC7B,YAAA,IAAI,MAAM,CAAC,GAAG,KAAK,KAAK,EAAE;gBACzB,OAAO,MAAM,CAAC,KAAK,CAAC;aACpB;AACD,YAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACpB,gBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC1E,gBAAA,IAAI,eAAe;AAAE,oBAAA,OAAO,eAAe,CAAC;aAC5C;SACD;AACD,QAAA,OAAO,SAAS,CAAC;KACjB;IAED,UAAU,GAAA;QACT,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;KACxC;+GA7GW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EApBtB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,IAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,IAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;AAiBT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAlBS,WAAW,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,IAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAqBT,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAxBhC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAChB,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,CAAC,EACZ,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;AAiBT,CAAA,CAAA,EAAA,CAAA;gFAIgB,EAAE,EAAA,CAAA;sBAAlB,SAAS;uBAAC,IAAI,CAAA;gBAuBf,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MC5B7B,kBAAkB,CAAA;IAM9B,WACS,CAAA,MAAqB,EACrB,QAAmB,EAAA;QADnB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAN5B,IAAK,CAAA,KAAA,GAAG,KAAK,EAAa,CAAC;QAC3B,IAAK,CAAA,KAAA,GAAmB,EAAE,CAAC;QAC3B,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC;QAMjB,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;gBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAG,CAAC,cAAe,CAAC;gBAC3C,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,cAAc,EAAE,CAAC;aACtB;AACF,SAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAK;YACX,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACtD,YAAA,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE;gBAC3D,OAAO;aACP;AACD,YAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;AACrC,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;aAClE;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;AAC5C,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;aACrE;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,OAAO,EAAE;AACvC,gBAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aACpC;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,UAAU,EAAE;AAC1C,gBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM;oBAAE,OAAO;gBAClE,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,QAAQ,CACnC,IAAI,CAAC,KAAK,CAAC,SAAS,CACnB,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAChH,EACD,EAAE,SAAS,EAAE,IAAI,EAAE,EACnB,KAAK,CACL,CAAC;gBACF,IAAI,CAAC,aAAa,EAAE,CAAC;aACrB;AACF,SAAC,CAAC,CAAC;KACH;IAED,gBAAgB,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YAC1D,IAAI,CAAC,KAAK,EAAE;gBACX,OAAO;aACP;AACD,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,EAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACrD,SAAC,CAAC,CAAC;KACH;IAED,cAAc,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,EAAG,CAAC,YAAa,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;SAC1D;KACD;+GAvDW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACC,UAAU,EAb/B,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;4CASiC,EAVjC,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,4IAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAalC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAhB9B,SAAS;+BACC,gBAAgB,EAAA,UAAA,EACd,IAAI,EACP,OAAA,EAAA,CAAC,eAAe,EAAE,mBAAmB,CAAC,EACrC,QAAA,EAAA,CAAA;;;;;;;;;AASiC,2CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,CAAA,EAAA,CAAA;uGAIiB,QAAQ,EAAA,CAAA;sBAAnE,SAAS;uBAAC,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;MCuE9C,oBAAoB,CAAA;IAMhC,WACS,CAAA,MAAqB,EACrB,QAAmB,EAAA;QADnB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAL5B,IAAK,CAAA,KAAA,GAAG,KAAK,EAAa,CAAC;QAC3B,IAAK,CAAA,KAAA,GAAqB,EAAE,CAAC;QAM5B,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;gBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAG,CAAC,gBAAiB,CAAC;gBAC7C,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,cAAc,EAAE,CAAC;aACtB;AACF,SAAC,CAAC,CAAC;QACH,MAAM,CACL,MAAK;YACJ,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACtD,YAAA,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE;gBAC3D,OAAO;aACP;AACD,YAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;AACrC,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;aACxE;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;AAC5C,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;aAC3E;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,OAAO,EAAE;gBACvC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aAC7C;AACF,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;KACF;IAED,gBAAgB,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YAC1D,IAAI,CAAC,KAAK,EAAE;gBACX,OAAO;aACP;AACD,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,EAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACrD,SAAC,CAAC,CAAC;KACH;IAED,cAAc,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,EAAG,CAAC,YAAa,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;SAC1D;KACD;+GAhDW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,6PACrB,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACX,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,UAAU,EAlDhC,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CiC,2CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,EAAA,+BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAnDjC,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,WAAW,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,KAAA,EAAA,KAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAsD/C,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAzDhC,SAAS;+BACC,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP,CAAC,eAAe,EAAE,WAAW,EAAE,mBAAmB,CAAC,EAMlD,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CiC,2CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,EAAA,+BAAA,CAAA,EAAA,CAAA;uGAIA,WAAW,EAAA,CAAA;sBAArD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBACoB,cAAc,EAAA,CAAA;sBAA1E,SAAS;uBAAC,WAAW,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;AClF/C,MAAA,kBAAkB,GAAG,CAAC,IAAS,KAAqB;;IAEhE,IAAI,CAAC,IAAI,EAAE;AACV,QAAA,OAAO,UAAU,CAAC;KAClB;AACD,IAAA,OAAO,IAAI,CAAC;AACb,EAAE;IACS,YAAY,GAAG,CAAC,GAAW,KACrC,GAAG;AACD,KAAA,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AAClB,KAAA,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;KACnC,WAAW,EAAE;AACb,KAAA,KAAK,CAAC,KAAK,CAAC;AACZ,KAAA,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;KAClE,IAAI,CAAC,EAAE,EAAE;AAEL,MAAM,gBAAgB,GAAG,MAAK;AACpC,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D,IAAA,OAAO,CAAG,EAAA,SAAS,CAAG,EAAA,MAAM,EAAE,CAAC;AAChC,EAAE;AAEW,MAAA,sBAAsB,GAAG,CAAC,KAAY,KAAI;AACtD,IAAA,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,OAAO;QACN,IAAI,EAAE,MAAK;AACV,YAAA,KAAK,EAAE,CAAC;YACR,OAAO,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;SACnC;QACD,IAAI,EAAE,MAAK;AACV,YAAA,KAAK,EAAE,CAAC;YACR,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;SACrE;KACD,CAAC;AACH,EAAE;MAEW,cAAc,GAAG,CAAC,GAAQ,EAAE,KAAU,KAAS;AAC3D,IAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;;QAE5B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC5E,YAAA,MAAM,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;;AAE7B,YAAA,IAAI;AACH,gBAAA,MAAM,OAAO,GAAG;oBACf,UAAU;oBACV,EAAE;oBACF,WAAW;oBACX,IAAI;AACJ,oBAAA,OAAO;oBACP,KAAK,EAAE,IAAI;oBACX,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;oBACtC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;oBACpC,EAAE;iBACF,CAAC;;AAGF,gBAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AAChC,oBAAA,OAAO,IAAI,QAAQ,CAClB,SAAS,EACT,CAAA;;iBAEW,CAAC,CAAA;;OAEX,CACD,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;iBACvB;;AAGD,gBAAA,OAAO,IAAI,QAAQ,CAClB,SAAS,EACT,CAAA;;iBAEY,CAAC,CAAA;;MAEZ,CACD,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;aACvB;YAAC,OAAO,CAAC,EAAE;gBACX,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;AAC7C,gBAAA,OAAO,GAAG,CAAC;aACX;SACD;AACD,QAAA,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE;YACxB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3B,YAAA,OAAO,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACnC;AACD,QAAA,OAAO,GAAG,CAAC;KACX;AACD,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACvB,QAAA,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAS,KAAK,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;KAC3D;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;QAC5C,MAAM,MAAM,GAAQ,EAAE,CAAC;AACvB,QAAA,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;AACtB,YAAA,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC5B,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;aAC9C;SACD;AACD,QAAA,OAAO,MAAM,CAAC;KACd;AAED,IAAA,OAAO,GAAG,CAAC;AACZ,EAAE;AAEF;AACA,MAAM,0BAA0B,GAAG,CAAC,GAAW,KAAa;AAC3D,IAAA,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF;AACa,MAAA,aAAa,GAAG,CAAC,MAAc,KAAY;;AAEvD,IAAA,IAAI,0BAA0B,CAAC,MAAM,CAAC,EAAE;AACvC,QAAA,OAAO,MAAM,CAAC;KACd;AAED,IAAA,MAAM,MAAM,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE;AACzC,QAAA,eAAe,EAAE;AAChB,YAAA,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ;AAC9B,YAAA,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM;;AAE9B,YAAA,GAAG,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,CAAC;AACxC,SAAA;AACD,KAAA,CAAC,CAAC;AACH,IAAA,OAAO,uBAAuB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACnD,EAAE;AAEF,MAAM,uBAAuB,GAAG,CAAC,OAAe,KAAY;;AAE3D,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;;AAE/B,IAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC1B,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAC5B;AACD,IAAA,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC;AAEW,MAAA,cAAc,GAAG,CAAC,GAAQ,KAAI;AAC1C,IAAA,IAAI;AACH,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAChB,QAAA,OAAO,IAAI,CAAC;KACZ;IAAC,OAAO,CAAC,EAAE;;;;;AAKX,QAAA,OAAO,KAAK,CAAC;KACb;AACF,EAAE;AAEF;;;;;AAKG;MACU,kBAAkB,GAAG,CAAC,GAAQ,EAAE,IAAc,KAAI;;AAE9D,IAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AAClE,QAAA,MAAM,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC;KACpC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACzB,QAAA,MAAM,IAAI,SAAS,CAAC,YAAY,CAAC,CAAC;KAClC;;IAGD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,GAAW,KAAI;;AAE5C,QAAA,IAAI,GAAG,IAAI,GAAG,EAAE;YACf,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;SACpB;AACD,QAAA,OAAO,GAAG,CAAC;KACX,EAAE,EAAE,CAAC,CAAC;AACR,EAAE;AACF;;;;AAIG;AACU,MAAA,UAAU,GAAG,CAAC,GAAO,KAAI;AACrC,IAAA,GAAG,CAAC,OAAO,CAAC,CAAC,CAAK,KAAI;AACrB,QAAA,IAAG,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,IAAG,OAAO,CAAC,CAAC,SAAS,IAAI,UAAU,EAAC;YACnE,OAAO,CAAC,CAAC,SAAS,CAAA;SAClB;AACD,QAAA,IAAG,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,IAAG,OAAO,CAAC,CAAC,WAAW,IAAI,UAAU,EAAC;YACvE,OAAO,CAAC,CAAC,WAAW,CAAA;SACpB;AACD,QAAA,IAAG,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,IAAG,OAAO,CAAC,CAAC,OAAO,IAAI,UAAU,EAAC;YAC/D,OAAO,CAAC,CAAC,OAAO,CAAA;SAChB;AACF,KAAC,CAAC,CAAA;AACF,IAAA,OAAO,GAAG,CAAC;AACZ,EAAC;AAED;;;;AAIG;MACU,aAAa,GAAG,CAAC,OAAY,EAAC,OAAW,KAAK;;AAE1D,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAA;AAC/B,IAAA,OAAO,GAAG,cAAc,CAAC,OAAO,EAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAC,UAAU,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAC1G,IAAI,SAAS,EAAE;AACd,QAAA,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;AAC9B,QAAA,WAAW,CAAC,OAAO,CAAC,CAAC,IAAQ,KAAI;AAChC,YAAA,IAAG,MAAM,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAC;AACpE,gBAAA,IAAI,CAAC,OAAO,GAAG,CAAA,OAAA,EAAU,MAAM,CAAC,SAAS,CAAI,CAAA,EAAA,SAAS,CAAG,EAAA,IAAI,CAAC,KAAK,EAAE,CAAA;aACrE;AACF,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,CAAC,KAAK,GAAG,WAAW,CAAA;QAC3B,UAAU,KAAK,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC,CAAA;KAC/C;IAED,OAAO,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AAC7C,IAAA,OAAO,CAAC,YAAY,KAAK,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AACtE,IAAA,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;AACjD,IAAA,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;IACnB,IAAI,aAAa,GAAS,EAAE,CAAA;IAE5B,WAAW,CAAC,OAAO,EAAC,MAAM,EAAC,OAAO,CAAC,UAAU,CAAC,CAAA;AAC9C,IAAA,WAAW,CAAC,OAAO,EAAC,QAAQ,EAAC,aAAa,CAAC,CAAA;AAE3C,IAAA,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;AACvC,IAAA,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;IACnC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AAC7C,IAAA,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AACxD,IAAA,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,aAAa,CAAA;AAC/C,IAAA,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;AACnC,EAAC;MAEY,WAAW,GAAG,CAAC,MAAW,EAAE,KAAc,KAAI;IAC1D,KAAK,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;IACrC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,KAAM,CAAC,CAAC;AACzC,IAAA,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;IAE7C,IAAI,OAAO,GAAG,CAAC,CAAC;AAEhB,IAAA,KAAK,IAAI,CAAC,GAAG,eAAe,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,CAAC,EAAE,EAAE;QAC7E,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAM,CAAC,KAAK,YAAY,EAAE;AACvC,YAAA,OAAO,EAAE,CAAC;SACV;aAAM;YACN,MAAM;SACN;KACD;IAED,IAAI,eAAe,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAM,CAAC,KAAK,YAAY,EAAE;AAChH,QAAA,OAAO,CAAC,CAAC;KACT;AACD,IAAA,OAAO,OAAO,CAAC;AAChB,EAAC;AAEM,MAAM,UAAU,GAAG,CAAC,OAAW,EAAC,GAAU,EAAE,SAAgB,EAAC,QAAgB,KAAK;;AAExF,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAA;;IAE/B,GAAG,CAAC,OAAO,CAAC,CAAC,IAAS,EAAC,KAAY,KAAI;AACtC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;AACzB,QAAA,IAAI,SAAS,GAAG,CAAC,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACtB;AACD,QAAA,IAAG,QAAQ,IAAI,KAAK,KAAI,CAAC,EAAC;AACzB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;SACnB;AACD,QAAA,IAAG,MAAM,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAC;AACpE,YAAA,IAAI,CAAC,OAAO,GAAG,CAAA,OAAA,EAAU,OAAO,CAAC,SAAS,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,CAAA,CAAE,CAAA;SAC1D;QACD,IAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;AACpD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;AACtB,YAAA,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAA;SACjC;AACD,QAAA,IAAG,IAAI,CAAC,SAAS,IAAI,SAAS,EAAC;AAC9B,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;SACzB;AACD,QAAA,IAAG,IAAI,CAAC,WAAW,EAAC;AACnB,YAAA,IAAI,OAAO,GAAG;gBACb,OAAO,EAAE,CAAC,MAAW,KAAK,WAAW,CAAC,MAAM,CAAC;AAC7C,gBAAA,YAAY,EAAE,iBAAiB;AAC/B,gBAAA,kBAAkB,EAAE;oBACnB,OAAO,EAAE,CAAC,MAAW,KAAK,WAAW,CAAC,MAAM,CAAC;AAC7C,iBAAA;aACD,CAAA;AACD,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAC,OAAO,CAAC,CAAA;AAC3B,YAAA,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAA;AACnC,YAAA,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAA;SAC5B;;;;;;AAMF,KAAC,CAAC,CAAC;AACJ,EAAC;AAEY,MAAA,iBAAiB,GAAG,CAAC,WAAgB,KAAI;IACrD,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,GAAQ,KAAI;AAC7C,QAAA,IAAI,GAAG,CAAC,OAAO,EAAE;AAChB,YAAA,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC;YACvB,OAAO,GAAG,CAAC,OAAO,CAAC;SACnB;;AAED,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAA;AAC/B,QAAA,IAAI,MAAM,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAC;AAClE,YAAA,GAAG,CAAC,OAAO,GAAG,CAAA,OAAA,EAAU,WAAW,CAAC,SAAS,CAAA,CAAA,EAAI,GAAG,CAAC,KAAK,CAAA,CAAE,CAAA;SAC5D;QACF,IAAG,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE;AAClD,YAAA,GAAG,CAAC,UAAU,GAAG,IAAI,CAAA;AACrB,YAAA,GAAG,CAAC,SAAS,GAAG,gBAAgB,CAAA;SAChC;AACD,QAAA,IAAG,GAAG,CAAC,WAAW,EAAC;AAClB,YAAA,IAAI,OAAO,GAAG;gBACb,OAAO,EAAE,CAAC,MAAW,KAAK,WAAW,CAAC,MAAM,CAAC;AAC7C,gBAAA,YAAY,EAAE,iBAAiB;AAC/B,gBAAA,kBAAkB,EAAE;oBACnB,OAAO,EAAE,CAAC,MAAW,KAAK,WAAW,CAAC,MAAM,CAAC;AAC7C,iBAAA;aACD,CAAA;AACD,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAC,OAAO,CAAC,CAAA;AAC1B,YAAA,WAAW,CAAC,oBAAoB,GAAG,IAAI,CAAA;AACvC,YAAA,WAAW,CAAC,QAAQ,GAAG,SAAS,CAAA;SAChC;AACF,KAAC,CAAC,CAAC;AACJ,EAAC;AAEY,MAAA,WAAW,GAAG,CAAC,OAAW,EAAC,QAAY,EAAC,aAAiB,KAAI;AACzE,IAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAS,KAAI;QACpC,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,CAAA;QAClC,IAAI,IAAI,GAAO,EAAC,IAAI,EAAC,IAAI,CAAC,IAAI,EAAC,CAAA;AAC/B,QAAA,IAAG,IAAI,CAAC,aAAa,YAAY,KAAK,EAAC;YACtC,aAAa,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,CAAA;SACzD;AACD,QAAA,IAAG,IAAI,CAAC,IAAI,IAAI,MAAM,EAAC;AACtB,YAAA,IAAI,EACH,WAAW,EAAE,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,EAC/C,cAAc,EACd,UAAU,EACV,KAAK,EACL,YAAY,EACZ,EAAE,EACF,SAAS,EACT,WAAW,EACX,SAAS,EACT,UAAU,GAAG,IAAI,EACjB,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,eAAe,EACf,OAAO,EACP,GAAG,IAAI,CAAC;AACT,YAAA,IAAI,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,KAAK,EAAC,UAAU,EAAE,GAAG,IAAI,EAAC,CAAC;AAChE,YAAA,IAAI,WAAW,GAAG;AACjB,gBAAA,GAAG,eAAe;gBAClB,EAAE;gBACF,cAAc;gBACd,UAAU;gBACV,SAAS;aACT,CAAC;;YAEF,IAAG,MAAM,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAC;AAC9E,gBAAA,IAAI,CAAC,OAAO,GAAG,CAAA,OAAA,EAAU,OAAO,CAAC,MAAM,CAAC,SAAS,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE,CAAA;aACjE;AACD,YAAA,IAAG,WAAW,CAAC,YAAY,IAAI,YAAY,EAAC;AAC3C,gBAAA,WAAW,CAAC,yBAAyB,GAAG,IAAI,CAAA;aAC5C;YACD,IAAG,YAAY,EAAC;AACf,gBAAA,WAAW,CAAC,YAAY,GAAG,YAAY,CAAA;aACvC;YACD,IAAG,QAAQ,EAAC;AACX,gBAAA,WAAW,CAAC,cAAc,GAAG,IAAI,CAAA;AACjC,gBAAA,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAA;aAC/B;YACD,IAAG,aAAa,EAAE;AACjB,gBAAA,WAAW,CAAC,aAAa,GAAG,aAAa,CAAA;AACzC,gBAAA,IAAG,aAAa,IAAI,MAAM,EAAC;oBAC1B,WAAW,CAAC,YAAY,GAAG;wBAC1B,IAAI,EAAE,aAAa,IAAI,QAAQ,GAAG,WAAW,GAAG,UAAU;wBAC1D,eAAe,EAAE,eAAe,GAAG,eAAe,GAAC,IAAI;qBACvD,CAAA;iBACD;qBAAM;AACL,oBAAA,WAAW,CAAC,YAAY,GAAG,SAAS,CAAA;iBACpC;aACF;YACD,UAAU,CAAC,WAAW,EAAC,UAAU,EAAC,OAAO,CAAC,SAAS,EAAC,QAAQ,CAAC,CAAC;AAC9D,YAAA,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;AACpC,YAAA,IAAI,cAAc,KAAK,QAAQ,EAAE;AAChC,gBAAA,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,GAAO,KAAI;AACpE,oBAAA,IAAI,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AACrE,oBAAA,IAAI,CAAC,aAAa,GAAG,aAAa,EAAE,WAAW,CAAC;AAChD,oBAAA,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,IAAI,YAAY,CAAC;oBAClF,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,IAAI,YAAY,EAAE;AACpD,wBAAA,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;qBAClG;yBAAM;AACN,wBAAA,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;qBAClG;AACD,oBAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/B,oBAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACjC,oBAAA,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,OAAO,CAAC;oBAC1C,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,aAAa,CAAC,SAAS,CAAA;AACtD,oBAAA,UAAU,CAAC,IAAI,CAAC,aAAa,EAAC,IAAI,CAAC,aAAa,CAAC,UAAW,EAAC,CAAC,CAAC,CAAC;AACjE,iBAAC,CAAC,CAAC;gBACH,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;aAC1C;iBAAM;gBACN,SAAS,KAAK,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;aACjD;AACD,YAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;YAC/B,OAAO,KAAK,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAA;SACnC;aAAM;AACN,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;AAC5B,YAAA,IAAI,GAAG;AACN,gBAAA,GAAG,IAAI;aACP,CAAA;YACD,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAA;SAC7B;AACD,QAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,KAAC,CAAC,CAAC;AACJ,EAAC;AAEY,MAAA,WAAW,GAAG,CAAC,OAAW,EAAE,QAAY,EAAC,UAAc,KAAI;AACvE,IAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAS,KAAI;AAC9B,QAAA,IAAI,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;SACjD;AACF,KAAC,CAAC,CAAC;IACH,OAAO,CAAC,WAAW,GAAG;AACrB,QAAA,MAAM,EAAE;AACP,YAAA;AACC,gBAAA,UAAU,EAAE,yBAAyB;AACrC,gBAAA,KAAK,EAAE,QAAQ;AACf,aAAA;AACD,SAAA;AACD,QAAA,IAAI,EAAE,IAAI,SAAS,CAAC,EAAE,CAAC;AACvB,QAAA,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU;AACtC,QAAA,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,SAAS;QACrC,KAAK,EAAE,EAAC,OAAO,EAAC;KAChB,CAAC;AACH,EAAC;AAEM,MAAM,UAAU,GAAG,MAAK;IAC9B,IAAI,gBAAgB,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAA;AACtE,IAAA,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;IAC3B,IAAG,gBAAgB,EAAC;QACnB,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,kBAAkB,EAAC,gBAAgB,CAAC,CAAA;KAChE;AACD,IAAA,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;AAC9B,EAAC;MAEY,mBAAmB,GAAG,CAAC,WAAgB,EAAC,OAAW,KAAI;AACnE,IAAA,WAAW,CAAC,YAAY,GAAG,oBAAoB,CAAC;IAChD,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,IAAI,YAAY,CAAC;AACpE,IAAA,IAAI,WAAW,CAAC,YAAY,IAAI,YAAY,EAAE;AAC7C,QAAA,WAAW,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACpF;SAAM;AACN,QAAA,WAAW,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACpF;AACD,IAAA,IAAG,WAAW,CAAC,aAAa,EAAE;;AAE7B,QAAA,IAAG,WAAW,CAAC,aAAa,IAAI,MAAM,EAAC;YACtC,WAAW,CAAC,YAAY,GAAG;AAC1B,gBAAA,IAAI,EAAE,WAAW,CAAC,aAAa,IAAI,QAAQ,GAAG,WAAW,GAAE,UAAU;AACrE,gBAAA,eAAe,EAAE,WAAW,CAAC,eAAe,GAAG,WAAW,CAAC,eAAe,GAAG,SAAS;aACtF,CAAA;AACD,YAAA,IAAG,WAAW,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,WAAW,CAAC,YAAY,CAAC,IAAI,IAAI,UAAU,EAAC;gBAC9F,WAAW,CAAC,YAAY,CAAC,cAAc,GAAG,WAAW,CAAC,cAAc,CAAA;aACpE;SACD;aAAM;AACN,YAAA,WAAW,CAAC,YAAY,GAAG,SAAS,CAAA;SACpC;KACD;IACD,UAAU,CAAC,WAAW,EAAC,WAAW,CAAC,UAAW,EAAC,CAAC,CAAC,CAAA;AACjD,IAAA,OAAO,WAAW,CAAA;AACnB,EAAC;AACD;AACa,MAAA,SAAS,GAAG,CAAC,MAAU,EAAC,IAAQ,EAAE,KAAU,KAAK;IAC5D,IAAG,CAAC,KAAK,EAAC;AACR,QAAA,KAAK,GAAG,IAAI,GAAG,EAAE,CAAA;KAClB;AACD,IAAA,IAAG,MAAM,YAAY,MAAM,EAAE;AAC3B,QAAA,IAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAAE,YAAA,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;SAAE;AAClD,QAAA,IAAI,MAAU,CAAA;AACd,QAAA,IAAG,MAAM,YAAY,QAAQ,EAAE;AAC7B,YAAA,IAAG,MAAM,CAAC,SAAS,EAAE;AACnB,gBAAA,MAAM,GAAG,YAAA,EAAY,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA,EAAE,CAAA;aAC5D;iBAAM;gBACL,MAAM,GAAG,CAAC,GAAG,IAAS,KAAI,EAAG,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAA,EAAE,CAAA;aACtE;SACF;AAAM,aAAA,IAAG,MAAM,YAAY,KAAK,EAAE;YACjC,MAAM,GAAG,EAAE,CAAA;SACZ;AAAM,aAAA,IAAG,MAAM,YAAY,IAAI,EAAE;YAChC,MAAM,GAAG,IAAI,IAAI,CAAE,MAAc,GAAG,CAAC,CAAC,CAAA;SACvC;AAAM,aAAA,IAAG,MAAM,YAAY,MAAM,EAAE;AAClC,YAAA,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;SACjD;aAAM;YACL,MAAM,GAAG,EAAE,CAAA;SACZ;AACD,QAAA,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AACzB,QAAA,KAAI,IAAI,GAAG,IAAI,MAAM,EAAE;AACrB,YAAA,IAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAC;AAC5B,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAA;aAC5C;SACF;AACD,QAAA,OAAO,MAAM,CAAA;KACd;SAAM;AACL,QAAA,OAAO,MAAM,CAAA;KACd;AACH;;MCrYa,eAAe,CAAA;IAM3B,WACS,CAAA,MAAqB,EACrB,QAAmB,EAAA;QADnB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAL5B,IAAK,CAAA,KAAA,GAAG,KAAK,EAAa,CAAC;QAC3B,IAAK,CAAA,KAAA,GAAgB,EAAE,CAAC;QAgDxB,IAAkB,CAAA,kBAAA,GAAGC,kBAAmB,CAAC;QA1CxC,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;gBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAG,CAAC,WAAY,CAAC;gBACxC,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,cAAc,EAAE,CAAC;aACtB;AACF,SAAC,CAAC,CAAC;QACH,MAAM,CACL,MAAK;YACJ,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACtD,YAAA,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE;gBAC3D,OAAO;aACP;AACD,YAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;AACrC,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;aACnE;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;AAC5C,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;aACtE;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,OAAO,EAAE;AACvC,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AAChC,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;iBACnB;aACD;AACF,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;KACF;IAED,gBAAgB,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YAC1D,IAAI,CAAC,KAAK,EAAE;gBACX,OAAO;aACP;AACD,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,EAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACrD,SAAC,CAAC,CAAC;KACH;IAED,cAAc,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,EAAG,CAAC,YAAa,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;SAC1D;KACD;+GAlDW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,mPAChB,MAAM,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACN,MAAM,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,UAAU,EAvE3B,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4CAkEiC,EAnEjC,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAM,gpCAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAsEzB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAzE3B,SAAS;+BACC,aAAa,EAAA,UAAA,EACX,IAAI,EACP,OAAA,EAAA,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAC5B,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkEiC,2CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,CAAA,EAAA,CAAA;uGAIL,MAAM,EAAA,CAAA;sBAA3C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBACoB,SAAS,EAAA,CAAA;sBAAhE,SAAS;uBAAC,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;MCpB1C,mBAAmB,CAAA;IAM/B,WACS,CAAA,MAAqB,EACrB,QAAmB,EAAA;QADnB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAL5B,IAAK,CAAA,KAAA,GAAG,KAAK,EAAa,CAAC;QAC3B,IAAK,CAAA,KAAA,GAAoB,EAAE,CAAC;QAM3B,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;gBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAG,CAAC,eAAgB,CAAC;gBAC5C,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,cAAc,EAAE,CAAC;aACtB;AACF,SAAC,CAAC,CAAC;QACH,MAAM,CACL,MAAK;YACJ,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACtD,YAAA,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE;gBAC3D,OAAO;aACP;AACD,YAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;AACrC,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;aACvE;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;AAC5C,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;aAC1E;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,OAAO,EAAE;AACvC,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE;AACpC,oBAAA,IAAI,CAAC,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC;AACtC,oBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;oBAC9B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,oBAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;iBAClC;aACD;AACF,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;KACF;IAED,gBAAgB,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YAC1D,IAAI,CAAC,KAAK,EAAE;gBACX,OAAO;aACP;AACD,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,EAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACrD,SAAC,CAAC,CAAC;KACH;IAED,cAAc,GAAA;QACb,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;AACzB,gBAAA,IAAI,CAAC,KAAK,EAAG,CAAC,YAAa,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;aAC1D;AACF,SAAC,CAAC,CAAC;KACH;+GAvDW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,2PACpB,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACV,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,UAAU,EA9D/B,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4CAyDiC,EA1DjC,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAU,84BAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FA6D7B,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAhE/B,SAAS;+BACC,iBAAiB,EAAA,UAAA,EACf,IAAI,EACP,OAAA,EAAA,CAAC,UAAU,EAAE,mBAAmB,CAAC,EAChC,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyDiC,2CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,CAAA,EAAA,CAAA;uGAID,UAAU,EAAA,CAAA;sBAAnD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBACoB,aAAa,EAAA,CAAA;sBAAxE,SAAS;uBAAC,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;MCwD9C,mBAAmB,CAAA;AAM/B,IAAA,WAAA,CACS,MAAqB,EACrB,QAAmB,EACnB,QAAkB,EAAA;QAFlB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAN3B,IAAK,CAAA,KAAA,GAAG,KAAK,EAAa,CAAC;QAC3B,IAAK,CAAA,KAAA,GAAoB,EAAE,CAAC;QAO3B,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;gBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAG,CAAC,eAAgB,CAAC;gBAC5C,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAC5B;AACF,SAAC,CAAC,CAAC;QACH,MAAM,CACL,MAAK;YACJ,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACtD,YAAA,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE;gBAC3D,OAAO;aACP;AACD,YAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;AACrC,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;aACvE;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;AAC5C,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;aAC1E;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,OAAO,EAAE;AACvC,gBAAA,IAAI,CAAC,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC;gBACtC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,gBAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;aAClC;AACF,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;KACF;AAED,IAAA,QAAQ,MAAW;IAEnB,gBAAgB,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YAC1D,IAAI,CAAC,KAAK,EAAE;gBACX,OAAO;aACP;AACD,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,EAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACrD,SAAC,CAAC,CAAC;KACH;IAED,cAAc,GAAA;QACb,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;AACzB,gBAAA,IAAI,CAAC,KAAK,EAAG,CAAC,YAAa,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;aAC1D;AACF,SAAC,CAAC,CAAC;KACH;AAED,IAAA,SAAS,CAAC,KAAU,EAAA;QACnB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAG,CAAC,YAAa,CAAC,KAAK;YAAE,OAAO;AAC/C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAG,CAAC,YAAa,CAAC,KAAK,CAAC,CAAC;AAC7E,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;KACvE;AAED,IAAA,gBAAgB,CAAC,OAAe,EAAA;QAC/B,IAAI,IAAI,CAAC,KAAK,EAAE,WAAW,KAAK,KAAK,EAAE;AACtC,YAAA,IAAI,iCAAiC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBACpD,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;aACxC;AACD,YAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;SAClE;aAAM;AACN,YAAA,IAAI,uCAAuC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBAC1D,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;aAC3C;AACD,YAAA,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;SACrE;KACD;IAED,oBAAoB,GAAA;AACnB,QAAA,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AACvF,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO;QACjC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,GAAG,CAAC;AACtD,QAAA,MAAM,UAAU,GAAG,CAAA,EAAA,EAAK,aAAa,CAAK,EAAA,EAAA,aAAa,IAAI,CAAC;QAC5D,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,CAAI,CAAA,EAAA,UAAU,EAAE,CAAC;KAC9C;AAED,IAAA,8BAA8B,CAAC,aAAiC,EAAA;AAC/D,QAAA,IAAI,CAAC,aAAa;AAAE,YAAA,OAAO,YAAY,CAAC;AACxC,QAAA,MAAM,SAAS,GAA8B;AAC5C,YAAA,CAAC,EAAE,GAAG;AACN,YAAA,EAAE,EAAE,IAAI;AACR,YAAA,CAAC,EAAE,GAAG;AACN,YAAA,EAAE,EAAE,IAAI;AACR,YAAA,CAAC,EAAE,KAAK;AACR,YAAA,EAAE,EAAE,MAAM;AACV,YAAA,CAAC,EAAE,IAAI;AACP,YAAA,EAAE,EAAE,MAAM;SACV,CAAC;AACF,QAAA,MAAM,aAAa,GAA8B;AAChD,YAAA,UAAU,EAAE,YAAY;AACxB,YAAA,UAAU,EAAE,YAAY;AACxB,YAAA,UAAU,EAAE,YAAY;AACxB,YAAA,UAAU,EAAE,YAAY;AACxB,YAAA,UAAU,EAAE,YAAY;SACxB,CAAC;AACF,QAAA,IAAI,aAAa,CAAC,aAAa,CAAC,EAAE;AACjC,YAAA,OAAO,aAAa,CAAC,aAAa,CAAC,CAAC;SACpC;;AAED,QAAA,IAAI,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,KAAI;YAC9D,OAAO,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,CAAG,CAAC;AAClB,SAAC,CAAC,CAAC;;QAEH,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,KAAK,KAAI;AAC/C,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;AAClC,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,MAAM,CAAC;KACd;+GArHW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAhGpB,CAAC,QAAQ,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAiGV,UAAU,EACV,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,UAAU,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,EAhG/B,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2FM,gBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA5FN,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,WAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FA+F/C,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAnG/B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EACf,UAAA,EAAA,IAAI,EACL,SAAA,EAAA,CAAC,QAAQ,CAAC,EAAA,OAAA,EACZ,CAAC,UAAU,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,EAClD,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2FM,gBAAA,CAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,CAAA,EAAA,CAAA;gIAI0B,UAAU,EAAA,CAAA;sBAAnD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBACoB,aAAa,EAAA,CAAA;sBAAxE,SAAS;uBAAC,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;MC1B9C,qBAAqB,CAAA;IAIjC,WACS,CAAA,MAAqB,EACrB,QAAmB,EAAA;QADnB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAJ5B,IAAK,CAAA,KAAA,GAAG,KAAK,EAAa,CAAC;QAC3B,IAAK,CAAA,KAAA,GAAsB,EAAE,CAAC;QAK7B,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;gBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAG,CAAC,iBAAkB,CAAC;gBAC9C,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,cAAc,EAAE,CAAC;aACtB;AACF,SAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAK;YACX,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACtD,YAAA,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE;gBAC3D,OAAO;aACP;AACD,YAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;AACrC,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;aACzE;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;AAC5C,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;aAC5E;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,OAAO,EAAE;AACvC,gBAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;aACnE;AACF,SAAC,CAAC,CAAC;KACH;IAED,gBAAgB,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YAC1D,IAAI,CAAC,KAAK,EAAE;gBACX,OAAO;aACP;AACD,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,EAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACrD,SAAC,CAAC,CAAC;KACH;IAED,cAAc,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,EAAG,CAAC,YAAa,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;SAC1D;KACD;+GA3CW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EACtB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,YAAY,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,EA/EjC,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4CA2EiC,EA5EjC,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,YAAY,stCAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FA+E/B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAlFjC,SAAS;+BACC,mBAAmB,EAAA,UAAA,EACjB,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,mBAAmB,CAAC,EAClC,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2EiC,2CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,CAAA,EAAA,CAAA;uGAImB,eAAe,EAAA,CAAA;sBAA5E,SAAS;uBAAC,YAAY,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;MCYhD,oBAAoB,CAAA;IAMhC,WACS,CAAA,MAAqB,EACrB,QAAmB,EAAA;QADnB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAL5B,IAAK,CAAA,KAAA,GAAG,KAAK,EAAa,CAAC;QAC3B,IAAK,CAAA,KAAA,GAAqB,EAAE,CAAC;QAkD7B,IAAkB,CAAA,kBAAA,GAAGC,kBAAmB,CAAC;QA5CxC,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;gBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAG,CAAC,gBAAiB,CAAC;gBAC7C,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,cAAc,EAAE,CAAC;aACtB;AACF,SAAC,CAAC,CAAC;QACH,MAAM,CACL,MAAK;YACJ,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACtD,YAAA,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE;gBAC3D,OAAO;aACP;AACD,YAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;AACrC,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;aACxE;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;AAC5C,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;aAC3E;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,OAAO,EAAE;AACvC,gBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;AACrC,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;iBACxB;aACD;AACF,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;KACF;IAED,gBAAgB,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YAC1D,IAAI,CAAC,KAAK,EAAE;gBACX,OAAO;aACP;AACD,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,EAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACrD,SAAC,CAAC,CAAC;KACH;IAED,cAAc,GAAA;QACb,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;AACzB,gBAAA,IAAI,CAAC,KAAK,EAAG,CAAC,YAAa,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;aAC1D;AACF,SAAC,CAAC,CAAC;KACH;+GApDW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,6PACrB,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACX,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,UAAU,EAtFhC,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4CAiFiC,EAlFjC,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,WAAW,m2CAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAqF9B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAxFhC,SAAS;+BACC,kBAAkB,EAAA,UAAA,EAChB,IAAI,EACP,OAAA,EAAA,CAAC,WAAW,EAAE,mBAAmB,CAAC,EACjC,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiFiC,2CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,CAAA,EAAA,CAAA;uGAIA,WAAW,EAAA,CAAA;sBAArD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBACoB,cAAc,EAAA,CAAA;sBAA1E,SAAS;uBAAC,WAAW,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;MCjG/C,cAAc,CAAA;IAO1B,WACS,CAAA,MAAqB,EACrB,MAAc,EAAA;QADd,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAPvB,IAAK,CAAA,KAAA,GAAG,KAAK,EAAa,CAAC;QAC3B,IAAK,CAAA,KAAA,GAAe,EAAE,CAAC;QACvB,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;QACzB,IAAO,CAAA,OAAA,GAAQ,EAAE,CAAC;QAMjB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,CACL,MAAK;AACJ,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;gBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAG,CAAC,UAAW,CAAC;gBACvC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AAC3E,oBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;iBACxB;gBACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,cAAc,EAAE,CAAC;aACtB;AACF,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;QACF,MAAM,CAAC,MAAK;YACX,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACtD,YAAA,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE;gBAC3D,OAAO;aACP;AACD,YAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;AACrC,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;aACpB;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;AAC5C,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACrB;AACF,SAAC,CAAC,CAAC;KACH;IAED,eAAe,GAAA;AACd,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;AAClC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;YAClD,IAAI,CAAC,OAAO,EAAE;AACb,gBAAA,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;gBACjD,OAAO;aACP;AAED,YAAA,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC;AAC9B,iBAAA,IAAI,CAACE,cAAY,CAAC,GAAG,CAAC,CAAC;iBACvB,SAAS,CAAC,MAAK;AACf,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACpB,oBAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,QAAQ;wBAAE,OAAO;AACjD,oBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACrB,iBAAC,CAAC,CAAC;AACJ,aAAC,CAAC,CAAC;AACJ,YAAA,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC;AAC9B,iBAAA,IAAI,CAACA,cAAY,CAAC,GAAG,CAAC,CAAC;iBACvB,SAAS,CAAC,MAAK;AACf,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACpB,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACtB,iBAAC,CAAC,CAAC;AACJ,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACH;IAED,cAAc,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,EAAG,CAAC,YAAa,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;SAC1D;KACD;IAED,gBAAgB,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC1D,YAAA,IAAI,KAAK,IAAI,IAAI,EAAE;gBAClB,OAAO;aACP;AACD,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,EAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACjD,SAAC,CAAC,CAAC;KACH;IAED,OAAO,CAAC,KAAgB,EAAE,KAAW,EAAA;QACpC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC;KACpC;IAED,YAAY,GAAA;AACX,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAG,CAAC,YAAa,CAAC,KAAK,CAAC,CAAC;AAC3G,QAAA,IAAI,MAAM,EAAE,MAAM,EAAE;AACnB,YAAA,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;SACvB;AACD,QAAA,OAAO,EAAE,CAAC;KACV;IAED,WAAW,GAAA;QACV,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAU,KAAI;YACjD,IAAI,SAAS,GAAQ,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;AAChE,YAAA,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACnD,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACrB;AACF,SAAC,CAAC,CAAC;KACH;+GApGW,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAzChB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAsCH,EAvCG,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,EAAA,+BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,WAAW,oTAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FA0C9B,cAAc,EAAA,UAAA,EAAA,CAAA;kBAlD1B,SAAS;+BACC,YAAY,EAAA,UAAA,EACV,IAAI,EAMP,OAAA,EAAA,CAAC,WAAW,EAAE,mBAAmB,CAAC,EACjC,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCH,OAAA,CAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,EAAA,+BAAA,CAAA,EAAA,CAAA;oGAIsB,cAAc,EAAA,CAAA;sBAA1C,SAAS;uBAAC,gBAAgB,CAAA;;;MCxCf,iBAAiB,CAAA;IAM7B,WACS,CAAA,MAAqB,EACrB,QAAmB,EAAA;QADnB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAN5B,IAAK,CAAA,KAAA,GAAG,KAAK,EAAa,CAAC;QAC3B,IAAK,CAAA,KAAA,GAAkB,EAAE,CAAC;QAC1B,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC;QAMjB,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;gBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAG,CAAC,aAAc,CAAC;gBAC1C,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,cAAc,EAAE,CAAC;aACtB;AACF,SAAC,CAAC,CAAC;QACH,MAAM,CACL,MAAK;YACJ,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACtD,YAAA,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE;gBAC3D,OAAO;aACP;AACD,YAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;AACrC,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;aACrE;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;AAC5C,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;aACxE;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,OAAO,EAAE;AACvC,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aACvC;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,UAAU,EAAE;AAC1C,gBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM;oBAAE,OAAO;gBAClE,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,QAAQ,CACnC,IAAI,CAAC,KAAK,CAAC,SAAS,CACnB,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAChH,EACD,EAAE,SAAS,EAAE,IAAI,EAAE,EACnB,KAAK,CACL,CAAC;gBACF,IAAI,CAAC,aAAa,EAAE,CAAC;aACrB;AACF,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;KACF;IAED,gBAAgB,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YAC1D,IAAI,CAAC,KAAK,EAAE;gBACX,OAAO;aACP;AACD,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,EAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACrD,SAAC,CAAC,CAAC;KACH;IAED,cAAc,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,EAAG,CAAC,YAAa,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;SAC1D;KACD;+GA1DW,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACK,UAAU,EAhBlC,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;EAYT,EAbS,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,+KAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAgBjC,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAnB7B,SAAS;+BACC,eAAe,EAAA,UAAA,EACb,IAAI,EACP,OAAA,EAAA,CAAC,cAAc,EAAE,mBAAmB,CAAC,EACpC,QAAA,EAAA,CAAA;;;;;;;;;;;;AAYT,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,CAAA,EAAA,CAAA;uGAI8D,WAAW,EAAA,CAAA;sBAAzE,SAAS;uBAAC,aAAa,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;MCkHjD,eAAe,CAAA;AAS3B,IAAA,WAAA,CACS,IAAgB,EAChB,MAAqB,EACrB,QAAmB,EACnB,QAAkB,EAAA;QAHlB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAChB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAX3B,IAAK,CAAA,KAAA,GAAG,KAAK,EAAa,CAAC;QAC3B,IAAK,CAAA,KAAA,GAAgB,EAAE,CAAC;QACxB,IAAQ,CAAA,QAAA,GAAa,EAAE,CAAC;QACxB,IAAW,CAAA,WAAA,GAAsB,EAAE,CAAC;QACpC,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QAChB,IAAO,CAAA,OAAA,GAAG,CAAC,CAAC;QAQX,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;gBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAG,CAAC,WAAY,CAAC;gBACxC,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,CAAC,WAAW,EAAE,CAAC;aACnB;AACF,SAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAK;YACX,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,EAAE,CAAC;AACxC,SAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAK;YACX,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACtD,YAAA,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE;gBAC3D,OAAO;aACP;AACD,YAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;AACrC,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;aACvE;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;AAC5C,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;aAC1E;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,OAAO,EAAE;AACvC,gBAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aACzC;AACF,SAAC,CAAC,CAAC;KACH;IAED,MAAM,CAAC,KAAU,EAAE,QAAa,EAAA;QAC/B,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE;YACzC,OAAO;SACP;AACD,QAAA,QAAQ,EAAE,CAAC;KACX;AAED,IAAA,UAAU,CAAC,IAAU,EAAA;AACpB,QAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;AAChC,QAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC,IAAI;aACd,OAAO,CACP,IAAI,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE;AAChD,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,eAAe,EAAE,KAAK;AACtB,SAAA,CAAC,CACF;AACA,aAAA,IAAI,CAAC,MAAM,CAAC,CAAC,QAAwB,KAAK,QAAQ,CAAC,IAAI,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;KACtF;AAED,IAAA,OAAO,CAAC,OAAe,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;KAC5D;AAED,IAAA,aAAa,CAAC,KAAU,EAAE,KAAU,EAAE,EAAO,EAAA;QAC5C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAM,KAAI;AAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5B,gBAAA,IAAI,EAAE,CAAC,QAAQ,KAAI;AAClB,oBAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;oBACvB,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvC,oBAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBACpD;AACD,gBAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AAChB,oBAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACpB,oBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;iBACrB;AACD,aAAA,CAAC,CAAC;AACJ,SAAC,CAAC,CAAC;KACH;IAED,aAAa,CAAC,OAAe,EAAE,KAAa,EAAA;AAC3C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACpD;IAED,gBAAgB,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC1D,YAAA,IAAI,KAAK,IAAI,IAAI,EAAE;gBAClB,OAAO;aACP;AACD,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,EAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;AAC5B,SAAC,CAAC,CAAC;KACH;IAED,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC5D,YAAA,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;AACnB,gBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;aACrD;AACF,SAAC,CAAC,CAAC;KACH;IAED,cAAc,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,EAAG,CAAC,YAAa,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;SAC1D;KACD;AAED,IAAA,WAAW,CAAC,OAAe,EAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,OAAO,IAAI,CAAC,EAAE;AACjB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,OAAO;SACP;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACpB;AAED,IAAA,aAAa,CAAC,EAAO,EAAA;QACpB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,EAAE,CAAC,KAAK,EAAE,CAAC;SACX;KACD;+GAhIW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACM,UAAU,EArEjC,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiEM,gBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,EAAA,kjBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAlEN,UAAU,EAAE,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,+BAAA,EAAA,8BAAA,EAAA,+BAAA,EAAA,8BAAA,EAAA,+BAAA,EAAA,gCAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,cAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,0BAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAqE1D,eAAe,EAAA,UAAA,EAAA,CAAA;kBA5G3B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EACX,UAAA,EAAA,IAAI,EAqCP,OAAA,EAAA,CAAC,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,CAAC,EAC7D,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiEM,gBAAA,CAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,EAAA,kjBAAA,CAAA,EAAA,CAAA;2JAI8C,aAAa,EAAA,CAAA;sBAA1E,SAAS;uBAAC,YAAY,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;MCoDhD,cAAc,CAAA;AAW1B,IAAA,WAAA,CACS,IAAgB,EAChB,MAAqB,EACrB,QAAmB,EACnB,QAAkB,EAAA;QAHlB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAChB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAb3B,IAAK,CAAA,KAAA,GAAG,KAAK,EAAa,CAAC;QAC3B,IAAK,CAAA,KAAA,GAAe,EAAE,CAAC;QACvB,IAAS,CAAA,SAAA,GAAa,EAAE,CAAC;QACzB,IAAW,CAAA,WAAA,GAAsB,EAAE,CAAC;QACpC,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QAChB,IAAO,CAAA,OAAA,GAAG,CAAC,CAAC;QACZ,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;QACf,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC;QAQf,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;gBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAG,CAAC,UAAW,CAAC;gBACvC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,WAAW,EAAE,CAAC;aACnB;AACF,SAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAK;YACX,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACtD,YAAA,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE;gBAC3D,OAAO;aACP;AACD,YAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;AACrC,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;aACtE;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;AAC5C,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;aACzE;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,OAAO,EAAE;AACvC,gBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aACxC;AACF,SAAC,CAAC,CAAC;KACH;IAED,MAAM,CAAC,KAAU,EAAE,QAAa,EAAA;QAC/B,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE;YACzC,OAAO;SACP;AACD,QAAA,QAAQ,EAAE,CAAC;KACX;IAED,aAAa,GAAA;QACZ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;SACvB;aAAM;AACN,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;SACtB;KACD;AAED,IAAA,WAAW,CAAC,IAAU,EAAA;AACrB,QAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;AAChC,QAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC,IAAI;aACd,OAAO,CACP,IAAI,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE;AAChD,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,eAAe,EAAE,KAAK;AACtB,SAAA,CAAC,CACF;AACA,aAAA,IAAI,CAAC,MAAM,CAAC,CAAC,QAAwB,KAAK,QAAQ,CAAC,IAAI,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;KACtF;AAED,IAAA,QAAQ,CAAC,KAAa,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;KACrD;AAED,IAAA,aAAa,CAAC,KAAU,EAAE,KAAU,EAAE,EAAO,EAAA;QAC5C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAM,KAAI;AACpC,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBACzB,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3D,gBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;AACnC,oBAAA,IAAI,EAAE,CAAC,QAAQ,KAAI;AAClB,wBAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;wBACvB,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC,wBAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;qBACrD;AACD,oBAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AAChB,wBAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACpB,wBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;qBACrB;AACD,iBAAA,CAAC,CAAC;aACH;iBAAM;AACN,gBAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7B,oBAAA,IAAI,EAAE,CAAC,QAAQ,KAAI;AAClB,wBAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;wBACvB,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC,wBAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;qBACrD;AACD,oBAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AAChB,wBAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACpB,wBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;qBACrB;AACD,iBAAA,CAAC,CAAC;aACH;AACF,SAAC,CAAC,CAAC;KACH;AAED,IAAA,YAAY,CAAC,SAAe,EAAA;QAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACtC,YAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;AAEhC,YAAA,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,KAAI;gBACzB,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC1C,gBAAA,GAAG,CAAC,MAAM,GAAG,MAAK;oBACjB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAChD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC;;oBAGrC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACjC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;;oBAGnC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;;AAGzB,oBAAA,GAAG,CAAC,IAAI,GAAG,CAAA,wBAAA,CAA0B,CAAC;AACtC,oBAAA,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;AACtB,oBAAA,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC;AACzB,oBAAA,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC;AAC5B,oBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,EAAE,qBAAqB,CAAC,IAAI,EAAE,CAAC;AACrF,oBAAA,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;;AAGhE,oBAAA,MAAM,CAAC,MAAM,CACZ,CAAC,IAAI,KAAI;wBACR,IAAI,IAAI,EAAE;4BACT,OAAO,CAAC,IAAI,CAAC,CAAC;yBACd;6BAAM;AACN,4BAAA,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;yBACtD;AACF,qBAAC,EACD,YAAY,EACZ,GAAG,CACH,CAAC;AACH,iBAAC,CAAC;gBAEF,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,MAAgB,CAAC;AAC1C,aAAC,CAAC;AAEF,YAAA,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1C,YAAA,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AACjC,SAAC,CAAC,CAAC;KACH;AAED,IAAA,aAAa,CAAC,KAAU,EAAE,KAAa,EAAE,KAAa,EAAA;QACrD,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACrD;IAED,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC5D,YAAA,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;AACnB,gBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;aACrD;AACF,SAAC,CAAC,CAAC;KACH;IAED,gBAAgB,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC1D,YAAA,IAAI,KAAK,IAAI,IAAI,EAAE;gBAClB,OAAO;aACP;AACD,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,EAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;AAC7B,SAAC,CAAC,CAAC;KACH;IAED,cAAc,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,EAAG,CAAC,YAAa,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;SAC1D;KACD;AAED,IAAA,YAAY,CAAC,KAAU,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE;;;;;;;;;SAS3B;KACD;AAED,IAAA,WAAW,CAAC,OAAe,EAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,OAAO,IAAI,CAAC,EAAE;AACjB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,OAAO;SACP;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACpB;AAED,IAAA,aAAa,CAAC,EAAO,EAAA;QACpB,IAAI,CAAC,OAAO,EAAE,CAAC;AACf,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,EAAE,CAAC,KAAK,EAAE,CAAC;SACX;KACD;+GAtNW,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAP,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACM,UAAU,EAjHhC,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6GM,EA9GN,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,EAAA,8nBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAU,g5BAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,KAAK,EAAE,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,QAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,0BAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAiHjE,cAAc,EAAA,UAAA,EAAA,CAAA;kBA5J1B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EACV,UAAA,EAAA,IAAI,EAyCP,OAAA,EAAA,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,mBAAmB,EAAE,aAAa,CAAC,EACpE,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6GM,gBAAA,CAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,EAAA,8nBAAA,CAAA,EAAA,CAAA;2JAI6C,YAAY,EAAA,CAAA;sBAAxE,SAAS;uBAAC,WAAW,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;MC5J/C,mBAAmB,CAAA;IAU/B,WACS,CAAA,MAAqB,EACrB,QAAmB,EAAA;QADnB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAT5B,IAAK,CAAA,KAAA,GAAG,KAAK,EAAa,CAAC;QAC3B,IAAK,CAAA,KAAA,GAAoB,EAAE,CAAC;QAE5B,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC;QAElB,IAAM,CAAA,MAAA,GAAG,MAAM,EAAU,CAAC;QAMzB,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;gBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAG,CAAC,eAAgB,CAAC;gBAC5C,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,gBAAgB,EAAE,CAAC;aACxB;AACF,SAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAK;YACX,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACtD,YAAA,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE;gBAC3D,OAAO;aACP;AACD,YAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;gBACrC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;aACpD;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;gBAC5C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;aACvD;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,OAAO,EAAE;AACvC,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;aACxB;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,UAAU,EAAE;AAC1C,gBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM;oBAAE,OAAO;gBAClE,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,QAAQ,CACnC,IAAI,CAAC,KAAK,CAAC,SAAS,CACnB,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAChH,EACD,EAAE,SAAS,EAAE,IAAI,EAAE,EACnB,IAAI,CACJ,CAAC;gBACF,IAAI,CAAC,aAAa,EAAE,CAAC;aACrB;AACF,SAAC,CAAC,CAAC;KACH;IAED,eAAe,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC;AAChC,YAAA,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC;gBACzB,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK;aACtC,CAAC;AACF,YAAA,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa;AACxC,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;KAC7E;IAED,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;KAC1B;IAED,gBAAgB,GAAA;AACf,QAAA,MAAM,WAAW,GAAG;AACnB,YAAA,WAAW,EAAE;AACb,YAAA,UAAU,EAAE;AACZ,YAAA,qBAAqB,EAAE;AACvB,YAAA,OAAO,EAAE;AACT,YAAA,aAAa,EAAE;AACf,YAAA,UAAU,EAAE;AACZ,YAAA,WAAW,CAAC,uBAAuB,CAAC,EAAE,CAAC,IAAI,CAAC;AAC5C,YAAA,aAAa,EAAE;YACf,kBAAkB,CAAC,qBAAqB,CAAC;AACzC,YAAA,eAAe,EAAE;AACjB,YAAA,aAAa,EAAE;AACf,YAAA,cAAc,EAAE;AAChB,YAAA,oBAAoB,EAAE;AACtB,YAAA,eAAe,EAAE;AACjB,YAAA,yBAAyB,EAAE;AAC3B,YAAA,yBAAyB,EAAE;YAC3B,IAAI,CAAC,UAAU,EAAE;YACjB,MAAM,CAAC,EAAE,CAAC;AACT,gBAAA,GAAG,mBAAmB;AACtB,gBAAA,GAAG,aAAa;AAChB,gBAAA,GAAG,YAAY;AACf,gBAAA,GAAG,aAAa;AAChB,gBAAA,GAAG,UAAU;AACb,gBAAA,GAAG,gBAAgB;AACnB,gBAAA,GAAG,UAAU;aACb,CAAC;YACF,UAAU,CAAC,KAAK,CAAC;AAChB,gBAAA,aAAa,EAAE;AACd,oBAAA,eAAe,EAAE,aAAa;AAC9B,oBAAA,MAAM,EAAE,MAAM;AACd,iBAAA;AACD,gBAAA,sBAAsB,EAAE;AACvB,oBAAA,eAAe,EAAE,aAAa;AAC9B,iBAAA;gBACD,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,OAAO,EAAE;AAC9F,gBAAA,cAAc,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,MAAM,EAAE;aAC/E,CAAC;YACF,IAAI,CAAC,oBAAoB,EAAE;YAC3B,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,MAAM,KAAI;gBACvC,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE;oBAC1F,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;oBAC7C,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC/C,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC3B;AACF,aAAC,CAAC;SACF,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;AAC3B,YAAA,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;SACzD;AACD,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACxB,YAAA,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;SAChD;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YACxB,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC;AAChD,SAAA,CAAC,CAAC;KACH;IAED,gBAAgB,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,KAAK,KAAI;;AAE3D,YAAA,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE;gBACvD,OAAO;aACP;AACD,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,EAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACpD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;gBAChD,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE;AAC/E,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC;KACH;IAED,oBAAoB,GAAA;AACnB,QAAA,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ;AAC1B,YAAA,KAAK,MAAM;gBACV,OAAO,IAAI,EAAE,CAAC;AACf,YAAA,KAAK,YAAY;gBAChB,OAAO,UAAU,EAAE,CAAC;AACrB,YAAA,KAAK,MAAM;gBACV,OAAO,IAAI,EAAE,CAAC;AACf,YAAA,KAAK,KAAK;gBACT,OAAO,GAAG,EAAE,CAAA;AACb,YAAA;gBACC,OAAO,UAAU,EAAE,CAAC;SACrB;KACD;AAED,IAAA,QAAQ,CAAC,GAAW,EAAA;QACnB,OAAO,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,KAAI;AACzC,YAAA,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AACxB,YAAA,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,SAAS,GAAG,GAAG,EAAE;gBACpB,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,SAAS,CAAC;qBACzC,IAAI,CAAC,EAAE,CAAC;qBACR,IAAI,CAAC,IAAI,CAAC,CAAC;AACb,gBAAA,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;oBAClC,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC/C,iBAAA,CAAC,CAAC;AACH,gBAAA,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;aAC7B;AACF,SAAC,CAAC,CAAC;KACH;IAED,UAAU,GAAA;AACT,QAAA,MAAM,aAAa,GAAG,CAAC,IAAS,KAAI;AACnC,YAAA,IAAI;gBACH,QAAQ;qBACN,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;AAClC,oBAAA,MAAM,EAAE,YAAY;AACpB,oBAAA,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC;AAC7B,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,WAAW,EAAE,IAAI;AACjB,oBAAA,QAAQ,EAAE,CAAC;AACX,oBAAA,UAAU,EAAE,EAAE;AACd,oBAAA,aAAa,EAAE,KAAK;AACpB,oBAAA,WAAW,EAAE,QAAQ;iBACrB,CAAC;AACD,qBAAA,IAAI,CAAC,CAAC,SAAS,KAAI;oBACnB,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;wBAChD,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;AAC7E,qBAAA,CAAC,CAAC;AACH,oBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACtC,oBAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAClC,iBAAC,CAAC,CAAC;AACJ,gBAAA,OAAO,IAAI,CAAC;aACZ;YAAC,OAAO,KAAK,EAAE;AACf,gBAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC/B,gBAAA,OAAO,KAAK,CAAC;aACb;AACF,SAAC,CAAC;QACF,OAAO,MAAM,CAAC,EAAE,CAAC;AAChB,YAAA;AACC,gBAAA,GAAG,EAAE,aAAa;AAClB,gBAAA,GAAG,EAAE,aAAa;AAClB,gBAAA,GAAG,EAAE,aAAa;AAClB,gBAAA,cAAc,EAAE,IAAI;AACpB,aAAA;AACD,SAAA,CAAC,CAAC;KACH;+GAvMW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAHrB,CAA4B,0BAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAD5B,mBAAmB,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIjB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cACf,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,CAAC,YACpB,CAA4B,0BAAA,CAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,CAAA,EAAA,CAAA;uGAIS,aAAa,EAAA,CAAA;sBAA3D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;MChCjC,kBAAkB,CAAA;AAe7B,IAAA,WAAA,GAAA;QAdS,IAAW,CAAA,WAAA,GAAG,kBAAkB,CAAC;AAE1C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAkB,IAAI,CAAC,CAAC;AAEzC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAE5B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAEjC,IAAK,CAAA,KAAA,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;QAExE,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAEpB,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AAG1C,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAC,GAAG,IAAI,CAAC,YAAY,EAAE,EAAC,CAAC,CAAA;QAC3C,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;YAC7B,IAAG,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,EAAC;AAC7B,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;gBACvB,OAAM;aACP;AACD,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;AACxB,YAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAA;AAEtC,SAAC,CAAC,CAAA;KACH;AACD,IAAA,wBAAwB,CAAC,KAAe,EAAA;AACtC,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACpC,YAAA,IAAK,QAAgB,CAAC,mBAAmB,EAAE;AACvC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;aACnC;iBAAM;AACH,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;SACJ;KACF;AAED,IAAA,mBAAmB,CAAC,KAAe,EAAA;AACjC,QAAA,MAAM,UAAU,GAAI,QAAgB,CAAC,mBAAmB,CAAC,MAAK;AAC1D,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/B,SAAC,CAAC,CAAC;AAEH,QAAA,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;KACrD;IACD,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC;KACJ;AACD,IAAA,cAAc,CAAC,KAAe,EAAA;AAC5B,QAAA,IAAI,KAAK,CAAC,SAAS,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SACzD;aAAM;YACH,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SAC5D;KACF;IACD,YAAY,GAAA;AACV,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC3D,IAAI,WAAW,EAAE;AACb,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;aAClC;SACF;QACD,OAAO;AACL,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,SAAS,EAAE,KAAK;SACjB,CAAC;KACH;AAED,IAAA,YAAY,CAAC,KAAS,EAAA;AACpB,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;SAC/D;KACF;+GA7EU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAHjB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAGP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACFD,MAAM,UAAU,GAAG;AAClB,IAAA,UAAU,EAAE,CAAC,GAAQ,EAAE,YAAqB,KAAW;QACtD,MAAM,MAAM,GAAU,EAAE,CAAC;AACzB,QAAA,GAAG,CAAC,WAAW,CAAC,CAAC,IAAS,KAAI;AAC7B,YAAA,IAAI,CAAC,UAAU,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,MAAM,CAAC;KACd;IACD,gBAAgB,EAAE,CAAC,GAAQ,EAAE,aAAoB,EAAE,QAAgB,EAAE,OAAgB,KAAI;AACxF,QAAA,MAAM,KAAK,GAAG,OAAO,IAAI,IAAI,CAAC;AAC9B,QAAA,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,GAAG,CAAC,oBAAoB,EAAE,EAAE,CAAC,EAAE,EAAE;YAC3D,MAAM,IAAI,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAA,IAAI,IAAI,CAAC,IAAI,IAAI,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AAC3D,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;aAC9B;SACD;KACD;IACD,cAAc,CAAC,QAAgB,EAAE,MAAc,EAAA;QAC9C,MAAM,YAAY,GAAG,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,MAAM,WAAW,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AACjE,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC,CAAC;KAChE;AACD,IAAA,QAAQ,CAAC,WAA+B,EAAA;QACvC,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,EAAE,EAAE,OAAiB,CAAC;QAC1D,OAAO,WAAW,CAAC,UAAU,CAAC;AAC7B,YAAA,WAAW,EAAE,OAAO;YACpB,0BAA0B,EAAE,GAAG,CAAC,CAAA,EAAG,OAAO,CAAK,GAAA,CAAA,CAAC,CAAC,KAAK;YACtD,8BAA8B,EAAE,GAAG,CAAC,CAAA,EAAG,OAAO,CAAM,IAAA,CAAA,CAAC,CAAC,KAAK;YAC3D,aAAa,EAAE,GAAG,CAAC,CAAA,EAAG,OAAO,CAAK,GAAA,CAAA,CAAC,CAAC,KAAK;YACzC,6BAA6B,EAAE,GAAG,CAAC,CAAA,EAAG,OAAO,CAAM,IAAA,CAAA,CAAC,CAAC,KAAK;YAC1D,yBAAyB,EAAE,GAAG,CAAC,CAAA,EAAG,OAAO,CAAM,IAAA,CAAA,CAAC,CAAC,KAAK;AACtD,YAAA,mBAAmB,EAAE,CAAC;AACtB,SAAA,CAAC,CAAC;KACH;;AAED,IAAA,YAAY,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,UAAU,CAAC;QACf,QAAQ,KAAK;AACZ,YAAA,KAAK,OAAO;gBACX,UAAU,GAAG,iBAAiB,CAAC;gBAC/B,MAAM;AACP,YAAA,KAAK,OAAO;gBACX,UAAU,GAAG,iBAAiB,CAAC;gBAC/B,MAAM;AACP,YAAA,KAAK,OAAO;gBACX,UAAU,GAAG,iBAAiB,CAAC;gBAC/B,MAAM;AACP,YAAA;AACC,gBAAA,EAAE,CAAC;SACJ;AACD,QAAA,OAAO,UAAU,CAAC;KAClB;IACD,aAAa,CAAC,IAAW,EAAE,IAAiB,EAAA;;AAE3C,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,IAAS,KAAI;;AAE1B,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;gBACnC,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,gBAAA,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;gBAClC,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;AACpD,gBAAA,MAAM,UAAU,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,CAAC;AACvC,gBAAA,IAAK,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;AAC7B,gBAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;AAC5B,gBAAA,IAAG,WAAW,IAAI,OAAO,EAAC;AACzB,oBAAA,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAA;AAClE,oBAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;iBACxB;;aAED;;AAEF,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,CAAC;KACZ;AACD,IAAA,cAAc,CAAC,SAAc,EAAA;AAC5B,QAAA,MAAM,WAAW,GAAG;AACnB,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,qBAAqB,EAAE,UAAU;AACjC,YAAA,YAAY,EAAE;AACb,gBAAA,IAAI,EAAE,UAAU;AAChB,aAAA;AACD,YAAA,kBAAkB,EAAE;AACnB,gBAAA,SAAS,EAAE,EAAE,KAAK,EAAE,wCAAwC,EAAE;AAC9D,gBAAA,YAAY,EAAE,qBAAqB;AACnC,gBAAA,kBAAkB,EAAE;oBACnB,GAAG,SAAS,CAAC,kBAAkB;AAC/B,oBAAA,aAAa,EAAE,cAAc;AAC7B,oBAAA,aAAa,EAAE,IAAI;AACnB,iBAAA;gBACD,GAAG,kBAAkB,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AACrE,aAAA;AACD,YAAA,iBAAiB,EAAE,CAAC,QAAa,KAAI;AACpC,gBAAA,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;aAC3B;AACD,YAAA,qBAAqB,EAAE,CAAC,QAAa,KAAI;gBACxC,OAAO,QAAQ,CAAC,EAAE,CAAC;aACnB;AACD,YAAA,aAAa,EAAE,CAAC,KAAU,EAAE,CAAM,KAAI;AACrC,gBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,KAAK;oBAAE,OAAO;gBACxB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,KAAU,KAAI;oBAC9C,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC;AAC7C,iBAAC,CAAC,CAAC;aACH;SACD,CAAC;AACF,QAAA,OAAO,WAAW,CAAC;KACnB;AACD,IAAA,YAAY,CAAC,WAAwB,EAAE,cAAmB,EAAE,MAAqB,EAAA;AAChF,QAAA,WAAW,CAAC,cAAc,GAAG,cAAc,IAAI,EAAE,CAAC;AAClD,QAAA,IAAI,WAAW,CAAC,aAAa,EAAE;YAC9B,IAAI,SAAS,GAAQ,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,KAAK,IAAI,WAAW,CAAC,aAAa,CAAC,CAAC;AACxG,YAAA,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;AACtB,YAAA,OAAO,EAAE,GAAG,WAAW,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;SACnE;AACD,QAAA,IAAI,WAAW,CAAC,SAAS,EAAE;AAC1B,YAAA,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC;AAC/B,gBAAA,UAAU,EAAE,GAAG;AACf,gBAAA,WAAW,EAAE,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,IAAI,CAAC,IAAI,CAAC;AACzD,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,QAAQ,EAAE,EAAE;AACZ,aAAA,CAAC,CAAC;SACH;AACD,QAAA,OAAO,EAAE,GAAG,WAAW,EAAE,CAAC;KAC1B;IACD,YAAY,CAAC,IAAW,EAAC,IAAS,EAAA;QACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzC,QAAA,OAAQ,CAAC,IAAI,GAAG,IAAI,IAAI,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QAC7D,OAAO,OAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;KACxC;CACD,CAAC;AACW,MAAA,SAAS,GAAG;IACxB,UAAU,EAAE,UAAU,CAAC,UAAU;IACjC,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;IAC7C,cAAc,EAAE,UAAU,CAAC,cAAc;IACzC,QAAQ,EAAE,UAAU,CAAC,QAAQ;IAC7B,YAAY,EAAE,UAAU,CAAC,YAAY;IACrC,aAAa,EAAE,UAAU,CAAC,aAAa;IACvC,YAAY,EAAE,UAAU,CAAC,YAAY;IACrC,YAAY,EAAE,UAAU,CAAC,YAAY;;;MCvHzB,yBAAyB,CAAA;AAMpC,IAAA,MAAM,CAAC,MAAyB,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;KAC7C;IAED,QAAQ,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAED,IAAA,eAAe,CAAC,MAAyB,EAAA;AACrC,QAAA,IAAI,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;AAE9B,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,QAAA,MAAM,WAAW,GAAG,QAAQ,KAAK,WAAW,CAAC;QAE7C,IAAI,WAAW,EAAE;YACb,UAAU,GAAG,EAAE,CAAC;SACnB;aAAM,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1C,UAAU,GAAG,QAAQ,CAAC;SACzB;QAED,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE;AACjD,YAAA,OAAO,UAAU,CAAC;SACrB;AAED,QAAA,OAAO,EAAE,CAAC;KACb;IAED,eAAe,GAAA;QACX,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC7C,SAAC,CAAC,CAAC;KACN;+GAtCU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAIR,gBAAgB,EAvBhC,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,+CAAA,CAAiD,8TADjD,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAC,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAC,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAoBhD,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAtBrC,SAAS;iCACM,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,EAAC,mBAAmB,EAAC,eAAe,CAAC,EAAA,QAAA,EAChD,CAAiD,+CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,uPAAA,CAAA,EAAA,CAAA;8BAuBN,KAAK,EAAA,CAAA;sBAA3D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;;;MCkBnC,2BAA2B,CAAA;AAMtC,IAAA,MAAM,CAAC,MAAyB,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;;KAE7B;IAED,QAAQ,GAAA;AACN,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC/D;IAED,eAAe,GAAA;;;;KAId;+GArBU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAIV,gBAAgB,EA5ChC,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCL,QAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAtCK,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAC,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAC,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,KAAA,EAAA,KAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAyClD,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBA3CvC,SAAS;iCACM,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,EAAC,mBAAmB,EAAC,iBAAiB,CAAC,EAClD,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCL,QAAA,CAAA,EAAA,CAAA;8BAOgD,KAAK,EAAA,CAAA;sBAA3D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;;;MC+CnC,2BAA2B,CAAA;AAhGxC,IAAA,WAAA,GAAA;QAmGC,IAAU,CAAA,UAAA,GAAG,EAAE,CAAA;AAEd,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;AAmC5B,KAAA;AAlCC,IAAA,MAAM,CAAC,MAAwC,EAAA;AAC7C,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;AACzB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;;QAEtB,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACjD,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC,SAAS,CAAA;QAC3D,IAAI,CAAC,UAAU,GAAG;AACjB,YAAA,MAAM,EAAC,MAAM;AACb,YAAA,SAAS,EAAE,MAAM;YACjB,MAAM,EAAC,CAAG,EAAA,MAAM,CAAI,EAAA,CAAA;YACpB,KAAK,EAAE,CAAG,EAAA,SAAS,CAAI,EAAA,CAAA;AACvB,YAAA,UAAU,EAAC,4BAA4B;SACvC,CAAA;QACD,OAAO,CAAC,GAAG,CAAC,YAAY,EAAC,IAAI,CAAC,UAAU,CAAC,CAAA;KACxC;IACD,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAA;KAClB;;;;IAKD,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAA;KACZ;AACF,IAAA,MAAM,CAAC,CAAK,EAAA;AACX,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAC,CAAC,CAAC,CAAA;;KAEvB;IACA,eAAe,GAAA;QACb,UAAU,CAAC,MAAK;;AAEhB,SAAC,CAAC,CAAC;KACJ;+GAvCU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,2DAH5B,CAAC,QAAQ,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAOO,gBAAgB,EAjGlC,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqER,EAtES,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,yNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,kWAAC,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,WAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FA8F3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAhGvC,SAAS;AACG,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,WACN,CAAC,WAAW,EAAC,gBAAgB,CAAC,EAC9B,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqER,EAqBS,SAAA,EAAA,CAAC,QAAQ,CAAC,EAAA,MAAA,EAAA,CAAA,yNAAA,CAAA,EAAA,CAAA;8BAOkC,IAAI,EAAA,CAAA;sBAAzD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,MAAM,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;;;ACpG/C;MAoEa,uBAAuB,CAAA;AAnEpC,IAAA,WAAA,GAAA;QAgGE,IAAkB,CAAA,kBAAA,GAAGC,kBAAmB,CAAC;AAC1C,KAAA;AAxBC,IAAA,MAAM,CAAC,MAAyB,EAAA;AAC9B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;QACzB,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;AACnD,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG;AACnB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,SAAS,EAAE,MAAM;YACjB,KAAK,EAAE,CAAG,EAAA,SAAS,CAAI,EAAA,CAAA;AACvB,YAAA,UAAU,EAAE,4BAA4B;SACxC,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG;YACxB,KAAK,EAAE,CAAG,EAAA,SAAS,CAAI,EAAA,CAAA;SACvB,CAAC;KACD;IACD,QAAQ,GAAA;;QAEN,OAAO,IAAI,CAAC,KAAK,CAAA;KAClB;AACD,IAAA,QAAQ,CAAC,CAAK,EAAA;AACZ,QAAA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;;KAEf;+GA3BU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAhEzB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DR,EA7DS,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,0rCAAC,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAiEvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAnEnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,WACP,CAAC,YAAY,EAAC,WAAW,CAAC,EAC1B,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DR,EAAA,CAAA,EAAA,CAAA;;;MCjDU,6BAA6B,CAAA;AAMvC,IAAA,MAAM,CAAC,MAAyB,EAAA;AAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;AACzB,QAAA,MAAM,EAAE,OAAO,EAAE,WAAW,EAAC,WAAW,EAAC,OAAO,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAA;AACxF,QAAA,IAAG,IAAI,CAAC,UAAU,EAAE,EAAC;AACnB,YAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAA;SAC9C;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;KACvB;IACD,QAAQ,GAAA;QACN,OAAO,CAAC,GAAG,CAAC,YAAY,EAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpC,OAAO,IAAI,CAAC,KAAK,CAAA;KAClB;;;;AAID,IAAA,QAAQ,CAAC,CAAK,EAAA;AACZ,QAAA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;;KAEf;IACD,UAAU,GAAA;AACR,QAAA,MAAM,EAAE,OAAO,EAAE,WAAW,EAAC,WAAW,EAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAA;QAC/E,OAAO,OAAO,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,KAAK,WAAW,CAAA;KAC5E;AACD,IAAA,MAAM,CAAC,CAAK,EAAA;AACV,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAO,KAAI;AAC1C,YAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAA;AACvB,YAAA,IAAG,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAC;gBAC1C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAK,EAAC,CAAK,KAAI;oBAC5E,IAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC;AACV,wBAAA,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;qBACZ;AACD,oBAAA,OAAO,CAAC,CAAA;iBACT,EAAC,EAAE,CAAC,CAAA;aACN;YACD,IAAG,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAA;aACpH;AACH,SAAC,CAAC,CAAA;;KAEH;IACD,OAAO,GAAA;KAEN;AAED,IAAA,MAAM,CAAC,CAAyB,EAAA;AAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KAC/B;+GArDQ,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EAf/B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;GAYR,EAbS,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,kBAAkB,swCAAC,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAgB7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAlBzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,CAAC,kBAAkB,EAAC,WAAW,CAAC;AACzC,oBAAA,QAAQ,EAAC,CAAA;;;;;;;;;;;;AAYR,EAAA,CAAA;AACF,iBAAA,CAAA;;;MCOY,0BAA0B,CAAA;AApBvC,IAAA,WAAA,GAAA;AAwBE,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;AAC3B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;AAoB7B,KAAA;AAnBC,IAAA,MAAM,CAAC,MAAwC,EAAA;AAC7C,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;AACzB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;KACrB;IACD,QAAQ,GAAA;QACN,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC/B,QAAA,OAAO,EAAE,GAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,kBAAkB,CAAC,CAAA;KACrF;IACD,gBAAgB,GAAA;AACd,QAAA,OAAO,MAAgB,CAAA;KACxB;;;;IAID,eAAe,GAAA;;;;KAId;+GAxBU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,2DAH3B,CAAC,QAAQ,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAMY,gBAAgB,EApBvC,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;AAaR,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAdS,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAkBV,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBApBtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAC,IAAI;oBACf,OAAO,EAAE,CAAC,WAAW,CAAC;AACtB,oBAAA,QAAQ,EAAC,CAAA;;;;;;;;;;;;;AAaR,EAAA,CAAA;oBACD,SAAS,EAAC,CAAC,QAAQ,CAAC;AACrB,iBAAA,CAAA;8BAK4D,SAAS,EAAA,CAAA;sBAAnE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;;;MCVvC,YAAY,CAAA;AAGxB,IAAA,WAAA,GAAA;AADA,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;KACR;AAEhB,IAAA,MAAM,CAAC,MAA2B,EAAA;AACjC,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;KACrB;AAED,IAAA,OAAO,CAAC,MAA2B,EAAA;AAClC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,OAAO,IAAI,CAAC;KACZ;IAED,MAAM,GAAA;QACL,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACxC,IAAI,GAAG,EAAE;YACR,IAAI,MAAM,GAAG,OAAO,GAAG,IAAI,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACnE,IAAI,KAAK,GAAG,OAAO,UAAU,KAAK,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACjF,YAAA,MAAM,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;SACxE;KACD;+GArBW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAY,EARd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;AAMT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2DAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAEW,YAAY,EAAA,UAAA,EAAA,CAAA;kBAhBxB,SAAS;AACG,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EAON,QAAA,EAAA,CAAA;;;;;;AAMT,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2DAAA,CAAA,EAAA,CAAA;;;MCPW,aAAa,CAAA;AAIzB,IAAA,MAAM,CAAC,MAAW,EAAA;AACjB,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACtC,QAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACtC;AAED,IAAA,kBAAkB,CAAC,KAAU,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,GAAQ,KAAI;gBAC9C,IAAI,CAAC,KAAK,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;AAC1E,aAAC,CAAC,CAAC;SACH;KACD;+GAfW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,2DAHd,CAAC,SAAS,CAAC,EACZ,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAa,2DAFb,YAAY,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIV,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,SAAS,EAAE,CAAC,SAAS,CAAC;AACtB,oBAAA,QAAQ,EAAE,CAAa,WAAA,CAAA;AACvB,iBAAA,CAAA;;;ACND,MAAM,QAAQ,GAAQ;AACrB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,OAAO,EAAE,SAAS;CAClB,CAAC;MA0BW,YAAY,CAAA;AAxBzB,IAAA,WAAA,GAAA;QAyBC,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QACnB,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;AAQnB,KAAA;AANA,IAAA,MAAM,CAAC,MAAW,EAAA;AACjB,QAAA,MAAM,OAAO,GAAU,MAAM,CAAC,OAAO,CAAC;AACtC,QAAA,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAK,CAAC,GAAG,EAAE,CAAC;KACpD;+GATW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAY,EArBb,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAAA,CAAC,SAAS,CAAC,EASZ,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;AAUT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EApBS,YAAY,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAsBV,YAAY,EAAA,UAAA,EAAA,CAAA;kBAxBxB,SAAS;iCACG,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,aACZ,CAAC,SAAS,CAAC,EASZ,QAAA,EAAA,CAAA;;;;;;;;;;AAUT,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2EAAA,CAAA,EAAA,CAAA;;;MClBW,WAAW,CAAA;AAzBxB,IAAA,WAAA,GAAA;QA0BE,IAAO,CAAA,OAAA,GAAG,EAAE,CAAA;AASb,KAAA;AAPC,IAAA,MAAM,CAAC,MAAW,EAAA;AAChB,QAAA,IAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAC;YAClC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;SACvC;aAAM;AACL,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAA;SAC5B;KACF;+GATU,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,WAAW,EAtBb,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;AAYR,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAbS,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,QAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAuBV,WAAW,EAAA,UAAA,EAAA,CAAA;kBAzBvB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,WAAW,CAAC,EACb,QAAA,EAAA,CAAA;;;;;;;;;;;;AAYR,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,4CAAA,CAAA,EAAA,CAAA;;;MCJU,eAAe,CAAA;AAK3B,IAAA,WAAA,CAAoB,QAAmB,EAAA;QAAnB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAHvC,IAAO,CAAA,OAAA,GAAW,CAAC,CAAC;QACpB,IAAmB,CAAA,mBAAA,GAAqB,EAAE,CAAC;AAG1C,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,EAAC,GAAG,CAAC,CAAA;KAC7E;AAED,IAAA,MAAM,CAAC,MAAW,EAAA;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;KACrB;AAED,IAAA,OAAO,CAAC,MAA2B,EAAA;AAClC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,OAAO,IAAI,CAAC;KACZ;IAED,uBAAuB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC;YAAE,OAAO;QAC9B,MAAM,EAAE,WAAW,EAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9C,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAK,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,gBAAgB,CAAC,CAAC;AAClH,QAAA,IAAG,CAAC,MAAM;YAAE,OAAM;AAClB,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;YAC1F,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAsB,mBAAA,EAAA,CAAC,CAAI,EAAA,CAAA,CAAC,CAAC;YACvE,IAAI,CAAC,UAAU,EAAE;gBAChB,SAAS;aACT;YACD,MAAM,kBAAkB,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,KAAI;AACzD,gBAAA,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;oBACzB,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC/B,iBAAC,CAAC,CAAC;AACJ,aAAC,CAAC,CAAC;AACH,YAAA,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;SACvC;KACD;IAED,sBAAsB,GAAA;QACrB,IAAI,WAAW,GAAW,CAAC,CAAC;AAC5B,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;AAC1F,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;YACvE,WAAW,GAAG,WAAW,IAAI,SAAS,IAAI,CAAC,CAAC,CAAC;SAC7C;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC;KAC5E;IAED,eAAe,GAAA;AACd,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AAC9C,QAAA,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE;YACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;YACxD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YAC3D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;YACjE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YAC/D,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE;gBACxF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACrB,eAAe,EACf,eAAe,EACf,2EAA2E,CAC3E,CAAC;aACF;SACD;KACD;IAED,SAAS,CACN,IAA8B,EAC9B,KAAa,EAAA;AAEb,QAAA,IAAI,OAAY,CAAC;;QAEjB,OAAO,UAAU,GAAG,IAAW,EAAA;;YAE3B,MAAM,OAAO,GAAG,IAAW,CAAC;AAC5B,YAAA,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;;AAG7B,YAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,YAAA;;;AAGpB,gBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;aACjC,EAAE,KAAK,CAAC,CAAC;AACd,SAAC,CAAC;KACJ;+GApFW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EANhB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FAIU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAV3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AAClC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAG,CAAA;;AAET,EAAA,CAAA;AAEF,iBAAA,CAAA;;;ACAD;AACO,MAAM,WAAW,GAAG,IAAI,CAAC;AAEzB,MAAM,UAAU,GAAG;AACzB,IAAA,2BAA2B,EAAE,2BAA2B;AACxD,IAAA,2BAA2B,EAAE,2BAA2B;AACxD,IAAA,uBAAuB,EAAE,uBAAuB;AAChD,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA,aAAa,EAAE,aAAa;AAC5B,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA,6BAA6B,EAAE,6BAA6B;AAC5D,IAAA,WAAW,EAAE,WAAW;AACxB,IAAA,0BAA0B,EAAE,0BAA0B;AACtD,IAAA,eAAe,EAAE,eAAe;CAChC;;ACuBD,MAAM,aAAa,GAAgB;;AAElC,IAAA,aAAa,EAAE;AACd,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,QAAQ,EAAE,GAAG;AACb,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,MAAM,EAAE,KAAK;AACb,KAAA;AACD,IAAA,YAAY,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;AAClC,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA,aAAa,EAAE;AACd,QAAA,MAAM,EAAE;AACP,YAAA,IAAI,EAAE,OAAO;AACb,SAAA;AACD,KAAA;AACD,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,mBAAmB,EAAE,IAAI;AACzB,IAAA,wBAAwB,EAAE,EAAE;CAC5B,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5D,SAAS,aAAa,CAAC,KAAY,EAAE,SAAc,EAAE,OAAY,EAAA;AAChE,IAAA,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC3C,QAAA,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE;AAChD,YAAA,OAAO,CAAC,CAAC;SACT;KACD;IACD,OAAO,CAAC,CAAC,CAAC;AACX,CAAC;MASY,aAAa,CAAA;IAmDzB,QAAQ,GAAA;QACP,IAAI,CAAC,eAAe,EAAE,CAAC;KACvB;AAED,IAAA,WAAA,CAAoB,MAAqB,EAAA;QAArB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;AAnDzC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAc,EAAE,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAQ,EAAE,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MACpB,SAAS,CAAC,YAAY,CAAC,EAAE,GAAG,aAAa,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CACzH,CAAC;AACF,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAEzC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC/D,IAAU,CAAA,UAAA,GAAG,UAAU,CAAC;QACxB,IAAU,CAAA,UAAA,GAAa,EAAE,CAAC;QAC1B,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;QAChB,IAAU,CAAA,UAAA,GAA2B,EAAE,CAAC;QAGxC,IAAM,CAAA,MAAA,GAAG,KAAK,EAAO,CAAC;AAEtB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAM,SAAS,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;QAE9B,IAAU,CAAA,UAAA,GAAG,MAAM,EAAY,CAAC;QAChC,IAAO,CAAA,OAAA,GAAG,MAAM,EAAE,CAAC;QACnB,IAAO,CAAA,OAAA,GAAG,KAAK,EAAgC,CAAC;QAChD,IAAU,CAAA,UAAA,GAAG,KAAK,EAAS,CAAC;AAC5B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAU,IAAI,CAAC,CAAC;AAC/B,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAmB,QAAQ,CAAC,CAAC;AAC3C,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAC1B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAC7B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAU,IAAI,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;QACpC,IAAO,CAAA,OAAA,GAAG,KAAK,EAAU,CAAC;QAE1B,IAAW,CAAA,WAAA,GAAwB,EAAE,CAAC;QAEtC,IAAyB,CAAA,yBAAA,GAAG,CAAC,CAAC;QAE9B,IAAsB,CAAA,sBAAA,GAAG,CAAC,CAAC;QAC3B,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;AACf,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAQ,EAAE,CAAC,CAAC;QACjC,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC;QACd,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;QACvB,IAAe,CAAA,eAAA,GAAG,CAAC,CAAC,CAAC;AAQpB,QAAA,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,KAAI;AACvE,YAAA,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE;AACtC,gBAAA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;gBACxB,UAAU,CAAC,WAAW,EAAE,CAAC;aACzB;AACF,SAAC,CAAC,CAAC;QACH,MAAM,CACL,YAAW;YACV,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,UAAW,IAAI,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAChG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,SAAU,CAAC;YAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,SAAU,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE;AACjF,gBAAA,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC;AAC5B,oBAAA,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS;AACxC,oBAAA,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;AACvB,oBAAA,OAAO,EAAE,EAAE;oBACX,MAAM,EAAE,IAAI,GAAG,EAAE;oBACjB,MAAM,EAAE,IAAI,GAAG,EAAE;AACjB,iBAAA,CAAC,CAAC;aACH;YACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC;AAClG,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;QACF,MAAM,CACL,MAAK;AACJ,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE;gBAC3D,OAAO;aACP;YACD,IAAI,CAAC,OAAO,EAAE,CAAC;AAChB,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;QACF,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,SAAS;gBAAE,OAAO;YACzC,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,GAAG,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;gBACnG,UAAU,CAAC,MAAK;AACf,oBAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;iBAC9B,EAAE,GAAG,CAAC,CAAC;AACT,aAAC,CAAC,CAAC;AACJ,SAAC,CAAC,CAAC;QACH,MAAM,CACL,MAAK;AACJ,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,UAAU,EAAG,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;gBACpE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAG,CAAC,CAAC;aACzC;AACF,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;QACF,MAAM,CACL,MAAK;AACJ,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS;gBACzB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,SAAU,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC;AAClH,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;QACF,MAAM,CACL,MAAK;YACJ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;AACvC,YAAA,IAAI,MAAM,EAAE,IAAI,KAAK,QAAQ,EAAE;AAC9B,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;aAC9D;AACF,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;QACF,IAAI,CAAC,UAAU,EAAE,CAAC;KAClB;IAED,QAAQ,GAAA;QACP,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;YACzC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;AACrC,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AAC9C,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,UAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAC1F,UAAU,CAAC,MAAK;AACf,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;aACrB,EAAE,GAAG,CAAC,CAAC;AACT,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;KACvE;AAED,IAAA,eAAe,MAAK;IAEpB,WAAW,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,2BAA2B,EAAE;AACrC,YAAA,IAAI,CAAC,2BAA2B,CAAC,UAAU,EAAE,CAAC;SAC9C;AACD,QAAA,IAAI,IAAI,CAAC,yBAAyB,EAAE;AACnC,YAAA,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,CAAC;SAC5C;KACD;IAED,OAAO,GAAA;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;KACjB;AAED,IAAA,WAAW,CAAC,CAAM,EAAA;QACjB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,UAAU,CAAC,MAAK;YACf,IAAI,CAAC,OAAO,EAAE,CAAC;SACf,EAAE,GAAG,CAAC,CAAC;KACR;AAED,IAAA,kBAAkB,CAAC,KAAU,EAAA;QAC5B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC;KACvG;IAED,gBAAgB,GAAA;AACf,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;YAClC,qBAAqB,CAAC,MAAK;gBAC1B,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,aAAC,CAAC,CAAC;AACJ,SAAC,CAAC,CAAC;KACH;AAED,IAAA,MAAM,YAAY,GAAA;QACjB,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,UAAW,IAAI,EAAE,CAAC;AAC7C,QAAA,IAAI;AACH,YAAA,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CACtC,GAAG,CAAC,GAAG,CAAC,OAAO,IAAS,KAAI;gBAC3B,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,UAAU,IAAI,wBAAwB,IAAI,IAAI,CAAC,UAAU,IAAI,oBAAoB,CAAC,EAAE;oBAC/H,IAAI,MAAM,GAAQ,EAAE,CAAC;AACrB,oBAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AAC9E,wBAAA,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;AACtC,4BAAA,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;yBACjC;wBACD,IAAI,CAAC,gBAAgB,GAAG;4BACvB,GAAG,IAAI,CAAC,gBAAgB;AACxB,4BAAA,kBAAkB,EAAE,GAAG;yBACvB,CAAC;qBACF;AAAM,yBAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AACnF,wBAAA,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACtC,wBAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,GAAG,GAAG,CAAC;AAC/C,wBAAA,IAAI,CAAC,gBAAgB,CAAC,+BAA+B,GAAG,IAAI,CAAC;qBAC7D;AACD,oBAAA,IAAI,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAS,KAAK,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC;oBACrE,IAAI,CAAC,QAAQ,EAAE;AACd,wBAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,GAAG,MAAM,CAAC;AAC1C,wBAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;AACrE,wBAAA,IAAI,CAAC,cAAc,GAAG,CAAC,MAAW,KAAI;4BACrC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAmB,CAAC;AACnE,4BAAA,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE;gCACrC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAmB,CAAC;AACnE,gCAAA,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,gCAAA,OAAO,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;6BAC5C;iCAAM;gCACN,IAAI,MAAM,GAAQ,EAAE,CAAC;AACrB,gCAAA,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE;oCACrC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,wCAAA,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;qCACpF;iCACD;qCAAM;AACN,oCAAA,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;iCAC5B;gCACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;gCACzE,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;6BACrE;AACF,yBAAC,CAAC;AACF,wBAAA,IAAI,CAAC,WAAW,GAAG,CAAC,MAAW,KAAI;;AAElC,4BAAA,IAAI,IAAI,CAAC,UAAU,IAAI,wBAAwB,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC1F,gCAAA,OAAO,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;6BACjH;4BACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,yBAAC,CAAC;AACF,wBAAA,IAAI,CAAC,WAAW,GAAG,CAAC,MAAW,KAAI;;4BAElC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAmB,CAAC;AACnE,4BAAA,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC;AACpE,4BAAA,OAAO,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;AAChD,yBAAC,CAAC;qBACF;yBAAM;AACN,wBAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,MAAM,CAAC;AACtC,wBAAA,IAAI,CAAC,WAAW,GAAG,CAAC,MAAW,KAAI;AAClC,4BAAA,IAAI,IAAI,CAAC,UAAU,IAAI,wBAAwB,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC1F,gCAAA,OAAO,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;6BACjH;4BACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,yBAAC,CAAC;qBACF;iBACD;AACD,gBAAA,OAAO,IAAI,CAAC;aACZ,CAAC,CACF,CAAC;AACF,YAAA,OAAO,aAAa,CAAC;SACrB;QAAC,OAAO,KAAK,EAAE;AACf,YAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;AAClD,YAAA,MAAM,KAAK,CAAC;SACZ;KACD;AAED,IAAA,QAAQ,CAAC,EAAU,EAAA;AAClB,QAAA,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;KAC7G;AAED,IAAA,gBAAgB,CAAC,QAAgB,EAAA;QAChC,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE;gBACjC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC;aACrG;AACF,SAAC,CAAC,CAAC;KACH;IAED,OAAO,GAAA;QACN,SAAS,CAAC,MAAK;YACd,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;AAChD,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBAAE,OAAO;YAC3D,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC;YACjE,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,IAAI,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC1G,SAAC,CAAC,CAAC;KACH;AAED,IAAA,aAAa,CAAC,MAAe,EAAA;QAC5B,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,sBAAsB,EAAE;AACpD,YAAA,OAAO,EAAE,CAAC,MAAM,KAAI;AACnB,gBAAA,MAAM,SAAS,GAAW;oBACzB,GAAG,IAAI,CAAC,SAAS,EAAE;AACnB,oBAAA,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ;oBAC/B,aAAa,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,EAAE,CAAC,EAAE,IAAI,MAAM,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC;AACxF,oBAAA,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,YAAY;iBAC3G,CAAC;gBACF,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,aAAc,CAAmB,CAAC;AACnF,gBAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBACzC,IAAI,CAAC,SAAS,EAAE;qBACd,UAAU,GAAG,SAAS,CAAC;AACvB,qBAAA,SAAS,CAAC,CAAC,GAAQ,KAAI;AACvB,oBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACnB,wBAAA,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ;wBACjC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAO,GAAG,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ;wBACpF,KAAK,EAAE,GAAG,CAAC,QAAQ;AACnB,qBAAA,CAAC,CAAC;AACH,oBAAA,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;oBAC5C,IAAI,CAAC,eAAe,EAAE,CAAC;oBACvB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;AACrD,iBAAC,CAAC,CAAC;aACJ;AACD,SAAA,CAAC,CAAC;KACH;IAED,gBAAgB,CAAC,MAAW,EAAE,SAAiB,EAAA;AAC9C,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ;YAAE,OAAO;QACvC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACxC,SAAS,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC;YAChH,SAAS,CAAC,aAAa,GAAG;;gBAEzB,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;aACxG,CAAC;SACF;aAAM;AACN,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,WAAW,KAAK,KAAK,CAAC,EAAE;gBACzF,SAAS,CAAC,aAAa,GAAG,CAAC,IAAI,SAAS,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;aAC7G;SACD;AACD,QAAA,SAAS,CAAC,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC;KAClC;AAED,IAAA,aAAa,CAAC,MAAe,EAAA;AAC5B,QAAA,MAAM,SAAS,GAAW;YACzB,GAAG,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,KAAK,EAAE,WAAW;YAClB,aAAa,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,EAAE,CAAC,EAAE,IAAI,MAAM,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC;AACxF,YAAA,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG,YAAY;SAC1D,CAAC;QACF,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,aAAc,CAAmB,CAAC;AACnF,QAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,SAAS,EAAE;aACd,UAAU,GAAG,SAAS,CAAC;AACvB,aAAA,SAAS,CAAC,CAAC,GAAQ,KAAI;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBACnB,KAAK,EAAE,GAAG,CAAC,QAAQ;AACnB,gBAAA,IAAI,EAAE,QAAQ;AACd,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC1B,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,gBAAgB,CAAC,SAAiB,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ;YAAE,OAAO;QACvC,MAAM,QAAQ,GAAU,EAAE,CAAC;AAC3B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,SAAU,EAAE,CAAC,EAAE,EAAE;AACrD,YAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;SACnD;AACD,QAAA,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC9B;AAED,IAAA,gBAAgB,CAAC,CAAwB,EAAA;QACxC,IAAI,EACH,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,EAC3D,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,IAAI,EAAE,EAAE,EAAE,EAAE,GACZ,GAAG,CAAC,CAAC;AACN,QAAA,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC1B,IAAI,UAAU,IAAI,wBAAwB,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,WAAW,EAAE;YAC/F,QAAQ,GAAG,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACrE,YAAA,IAAI,CAAC,WAAW,CAAC,KAAM,CAAC,GAAG,QAAQ,CAAC;SACpC;AACD,QAAA,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE;YACpB,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7B,YAAA,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAC/G,YAAA,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE;AAC5B,gBAAA,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAS,GAAG,KAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;aAC1H;SACD;aAAM,IAAI,EAAE,EAAE;AACd,YAAA,MAAM,QAAQ,GAAG,CAAG,EAAA,KAAK,EAAE,CAAC;AAC5B,YAAA,IAAI,CAAM,CAAC;YACX,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAS,CAAC,EAAE;gBACnE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAS,CAAC,CAAC;AACnE,gBAAA,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,CAAC;aAC3C;iBAAM;AACN,gBAAA,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC;aACrC;YACD,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAS,EAAE,CAAC,CAAC,CAAC;YAClE,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAS,GAAG,KAAM,CAAC,CAAC;YAClF,IAAI,GAAG,EAAE;AACR,gBAAA,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAS,GAAG,KAAM,EAAE;AACvE,oBAAA,QAAQ,EAAE,QAAQ;oBAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;AACtB,oBAAA,EAAE,EAAE,EAAE;AACN,oBAAA,KAAK,EAAE,UAAU;AACjB,iBAAA,CAAC,CAAC;aACH;iBAAM;AACN,gBAAA,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAS,GAAG,KAAM,EAAE;AACvE,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,EAAE,EAAE,EAAE;AACN,oBAAA,KAAK,EAAE,UAAU;AACjB,iBAAA,CAAC,CAAC;aACH;SACD;QACD,IAAI,EAAE,GAAU,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,GAAQ,KAAI;AAChF,YAAA,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChB,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACjC;AAED,IAAA,eAAe,CAAC,SAAgB,EAAA;QAC/B,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,IAAS,KAAI;YAClD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE;AACjC,gBAAA,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;aAC7B;AACF,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;;;YAGnB,IAAI,CAAC,UAAU,EAAG,CAAC,OAAO,CAAC,CAAC,IAAS,KAAI;gBACxC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1E,gBAAA,IAAI,SAAS,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC,CAAM,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,EAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AACtG,gBAAA,SAAS,GAAG,SAAS,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;gBAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACxF,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,GAAQ,KAAI;oBAChF,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,oBAAA,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAChC,oBAAA,MAAM,WAAW,GAAG,SAAS,GAAG,CAAC,CAAC;AAClC,oBAAA,IAAI,KAAK,IAAI,WAAW,EAAE;AACzB,wBAAA,MAAM,YAAY,GAAG,WAAW,GAAG,CAAC,CAAC;wBACrC,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;wBAC/C,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACnE,wBAAA,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;qBAC5D;AACF,iBAAC,CAAC,CAAC;gBACH,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;gBACjF,IAAI,OAAO,EAAE;oBACZ,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;oBACtE,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;iBAC5E;gBACD,MAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAS,KAAI;;oBAEjC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC9E,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAS,GAAG,IAAI,CAAC,SAAU,EAAE;wBACrF,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACnC,wBAAA,EAAE,EAAE,CAAC;AACL,wBAAA,KAAK,EAAE,UAAU;AACjB,qBAAA,CAAC,CAAC;AACJ,iBAAC,CAAC,CAAC;;AAEJ,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;gBAC1B,KAAK,EAAE,IAAI;gBACX,aAAa,EAAE,IAAI;AACnB,aAAA,CAAC,CAAC;;SAEH;aAAM;AACN,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;YAClE,MAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAS,KAAI;AACjC,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC;gBAC7D,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1E,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAS,GAAG,IAAI,CAAC,SAAU,EAAE;oBAChF,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACnC,oBAAA,EAAE,EAAE,CAAC;AACL,oBAAA,KAAK,EAAE,UAAU;AACjB,iBAAA,CAAC,CAAC;AACJ,aAAC,CAAC,CAAC;SACH;QACD,IAAI,EAAE,GAAU,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,GAAQ,KAAI;AAChF,YAAA,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChB,SAAC,CAAC,CAAC;;AAEH,QAAA,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QACxD,IAAI,CAAC,eAAe,EAAE,CAAC;KACvB;AAED,IAAA,iBAAiB,CAAC,WAAkB,EAAA;QACnC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpF,QAAA,aAAa,CAAC,OAAO,CAAC,CAAC,QAAa,KAAI;AACvC,YAAA,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAS,CAAC,CAAC;YAClE,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAS,GAAG,IAAI,CAAC,SAAU,CAAC,CAAC;AACrF,SAAC,CAAC,CAAC;QACH,IAAI,EAAE,GAAU,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,GAAQ,KAAI;AAChF,YAAA,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChB,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;AACxD,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,eAAe,EAAE,CAAC;KACvB;AAED,IAAA,iBAAiB,CAAC,WAAkB,EAAA;QACnC,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,IAAS,KAAI;YAClD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE;AACjC,gBAAA,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;aAC7B;AACF,SAAC,CAAC,CAAC;AACH,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QACvE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;;YAE/B,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAU,CAAC;AAChD,YAAA,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC5E,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,GAAQ,KAAI;gBAChF,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE;AAC3C,oBAAA,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;iBAC5D;AACF,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,GAAQ,KAAI;gBAChF,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE;AAC7C,oBAAA,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;iBAC5D;AACF,aAAC,CAAC,CAAC;AACJ,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAS,KAAI;AACvC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/B,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;gBAClB,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1E,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAS,GAAG,IAAI,CAAC,SAAU,EAAE;oBAChF,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACnC,oBAAA,EAAE,EAAE,CAAC;AACL,oBAAA,KAAK,EAAE,UAAU;AACjB,iBAAA,CAAC,CAAC;aACH;iBAAM;gBACN,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,GAAQ,KAAI;AAChF,oBAAA,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,QAAQ,EAAE;AACjD,wBAAA,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAC5D,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;qBACrE;AACF,iBAAC,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,GAAQ,KAAI;oBAChF,IAAI,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;wBAC7B,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,wBAAA,IAAI,KAAK,IAAI,QAAQ,EAAE;4BACtB,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC3C,4BAAA,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;4BAC5D,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;yBACnE;qBACD;AACF,iBAAC,CAAC,CAAC;aACH;AACF,SAAC,CAAC,CAAC;QACH,IAAI,EAAE,GAAU,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,GAAQ,KAAI;AAChF,YAAA,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChB,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QACxD,IAAI,CAAC,eAAe,EAAE,CAAC;;KAEvB;IAED,KAAK,GAAA;QACJ,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,EAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG;AACvC,YAAA,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS;AACxC,YAAA,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;AACvB,YAAA,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,IAAI,GAAG,EAAE;YACjB,MAAM,EAAE,IAAI,GAAG,EAAE;SACjB,CAAC;KACF;IAED,MAAM,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,QAAQ,EAAE;YAC/B,IAAI,IAAI,GAAG,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC;AAC/F,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;gBAChC,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;AACtD,gBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAS,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC;aACpD;AACD,YAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAA;AACvD,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAChD;aAAM;AACN,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SACpB;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;KACvB;IAED,OAAO,GAAA;QACN,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;AACvD,QAAA,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAClE,IAAI,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AACrE,QAAA,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC1B;AAAM,aAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE;AACtD,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAC,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAE,YAAY,EAAC,CAAC,CAAA;SAChE;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;KACvB;AAED,IAAA,eAAe,CAAC,MAAe,EAAA;AAC9B,QAAA,IAAI,MAAM,CAAC,UAAU,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE;AAC3D,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;YACzE,OAAO;SACP;QACD,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC;QACjD,IAAI,MAAM,EAAE;AACX,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;SAC9E;KACD;IAED,cAAc,GAAA;QACb,IAAI,CAAC,2BAA2B,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,KAAI;AACjE,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;gBACzB,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;gBAC3D,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,aAAC,CAAC,CAAC;AACJ,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACjH,IAAI,CAAC,yBAAyB,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,KAAI;AAC/D,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;gBACzB,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC;gBACvD,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,aAAC,CAAC,CAAC;AACJ,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC,CAAC;AAC7G,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACpE,IAAI,CAAC,eAAe,EAAE,CAAC;KACvB;IAED,cAAc,GAAA;AACb,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,IAAI,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClH,MAAM,YAAY,GAAG,UAAU,CAC9B,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAC7H,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC;KAC1C;IAED,kBAAkB,GAAA;QACjB,IAAI,SAAS,GAAG,UAAU,CACzB,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,2BAA2B,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CACzH,CAAC;AACF,QAAA,OAAO,SAAS,CAAC;KACjB;IAED,eAAe,GAAA;AACd,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1C,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC;AACzD,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACnC,QAAA,IAAI,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,YAAY,CAAC;AAC9C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;YACpB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,yBAAyB,CAAI,EAAA,CAAA,CAAC,CAAC;YAC7G,IAAI,CAAC,cAAc,EAAE,CAAC;AACvB,SAAC,CAAC,CAAC;KACH;IAED,cAAc,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QAC9E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,QAAQ,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;KAClG;IAED,YAAY,GAAA;QACX,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KAC1B;IAED,UAAU,GAAA;QACT,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAU,KAAI;AACjD,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE;gBAC/C,OAAO;aACP;AACD,YAAA,MAAM,WAAW,GAAQ,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;YACtF,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxC,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;aAC5B;AACF,SAAC,CAAC,CAAC;KACH;AACD,IAAA,YAAY,CAAC,KAAU,EAAA;AACtB,QAAA,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC;KACvC;AAED,IAAA,YAAY,CAAC,KAAsB,EAAA;;;;AAIlC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ;YAAE,OAAO;AACzC,QAAA,IAAI,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,SAAS;YAAE,OAAO;QACpD,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACpC,IAAI,OAAO,GAAQ,GAAG,EAAE,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,QAAS,CAAC,IAAI,EAAE,CAAC;;AAEzF,QAAA,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;AACpB,QAAA,IAAI,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAC1C,YAAA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,IAAI,YAAY,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC;AAC1D,YAAA,IACC,CAAC,YAAY,IAAI,KAAK,IAAI,IAAI,CAAC,eAAe,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS;AAC1E,iBAAC,CAAC,YAAY,IAAI,KAAK,IAAI,IAAI,CAAC,eAAe,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,EAC3E;;AAED,gBAAA,IAAI,QAAQ,CAAC;AACb,gBAAA,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,EAAE;AAC7B,oBAAA,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;iBAChC;qBAAM;AACN,oBAAA,QAAQ,GAAG,YAAY,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;iBAChD;;gBAED,IAAI,CAAC,EAAE,EAAE;oBACR,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAClD,KAAM,EACN,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;wBACxB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAS,GAAG,KAAK,GAAG,CAAC;AACzC,qBAAA,CAAC,CACF,CAAC;iBACF;qBAAM;AACN,oBAAA,IAAI,CAAM,CAAC;oBACX,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAS,CAAC,EAAE;wBACnE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAS,CAAC,CAAC;wBACnE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAS,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;AAChE,wBAAA,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAS,CAAC,CAAC;AAClE,wBAAA,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qBACpD;yBAAM;AACN,wBAAA,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAS,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;qBAC1D;AACD,oBAAA,GAAG,CAAC,GAAG,CAAC,KAAM,EAAE,CAAC,CAAC,CAAC;iBACnB;AACD,gBAAA,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,QAAS,CAAC,CAAC;gBACxG,IAAI,GAAG,EAAE;oBACR,MAAM,CAAC,GAAG,CAAC,KAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,QAAS,EAAE;wBACjD,QAAQ,EAAE,KAAK,GAAG,CAAC;wBACnB,QAAQ,EAAE,GAAG,CAAC,QAAQ;AACtB,wBAAA,EAAE,EAAE,EAAE;AACN,wBAAA,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,IAAI;AACpC,qBAAA,CAAC,CAAC;oBACH,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,QAAS,CAAC,CAAC;iBACjG;qBAAM;oBACN,MAAM,CAAC,GAAG,CAAC,KAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,QAAU,EAAE;wBAClD,QAAQ,EAAE,KAAK,GAAG,CAAC;wBACnB,QAAQ,EAAE,QAAQ,GAAG,CAAC;AACtB,wBAAA,EAAE,EAAE,EAAE;AACN,wBAAA,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,IAAI;AACpC,qBAAA,CAAC,CAAC;iBACH;aACD;AACF,SAAC,CAAC,CAAC;QACH,IAAI,EAAE,GAAQ,EAAE,CAAC;AACjB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,MAAM,EAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAS,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;AACzH,YAAA,IAAI,CAAC,MAAM,EAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;YAC3H,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,GAAQ,KAAI;AAChF,gBAAA,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChB,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;SACxD;QAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;KAC7C;;AAED,IAAA,OAAO,CAAC,YAA2B,EAAA;AAClC,QAAA,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAK,KAAK,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,CAAA;QACjE,IAAG,OAAO,EAAC;AACV,YAAA,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAA;AACnD,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,IAAiB,KAAI;AAClC,gBAAA,IAAG,IAAI,CAAC,IAAI,IAAI,SAAS,EAAC;oBACzB,IAAI,CAAC,IAAI,GAAG,CAAA,EAAG,IAAI,CAAC,IAAI,WAAW,CAAA;oBACnC,IAAI,CAAC,EAAE,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,WAAW,CAAA;iBAC/B;AACF,aAAC,CAAC,CAAA;AACF,YAAA,OAAO,IAAI,CAAA;SACX;AACD,QAAA,OAAO,YAAY,CAAA;KACnB;+GArvBW,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,YAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACd,aAAa,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACb,aAAa,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxF7C,2pDAgDA,EAAA,MAAA,EAAA,CAAA,4wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDkCW,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,6BAAA,EAAA,gCAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,8BAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,8BAAA,EAAA,0BAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,wBAAA,EAAA,+BAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,gCAAA,EAAA,+BAAA,EAAA,sCAAA,EAAA,uCAAA,EAAA,8BAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,0BAAA,EAAA,mCAAA,EAAA,8BAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,mCAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,kCAAA,EAAA,sCAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,sCAAA,EAAA,sBAAA,EAAA,6BAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,cAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,iCAAA,EAAA,cAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,+BAAA,EAAA,4BAAA,EAAA,yBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,8BAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,6BAAA,EAAA,yBAAA,EAAA,2CAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,4BAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,mCAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,2BAAA,EAAA,iCAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,yBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,4BAAA,EAAA,2CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,uCAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iCAAA,EAAA,yBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,gCAAA,EAAA,qCAAA,EAAA,qCAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,wBAAA,EAAA,4BAAA,EAAA,oCAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,2BAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,8BAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,OAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,gCAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,aAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,6BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,aAAA,EAAA,eAAA,EAAA,+BAAA,EAAA,gCAAA,EAAA,8BAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,0BAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,cAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,qCAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIzB,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,cACX,IAAI,EAAA,OAAA,EACP,CAAC,aAAa,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,2pDAAA,EAAA,MAAA,EAAA,CAAA,4wBAAA,CAAA,EAAA,CAAA;+EAKZ,IAAI,EAAA,CAAA;sBAA7B,SAAS;uBAAC,aAAa,CAAA;gBACwB,OAAO,EAAA,CAAA;sBAAtD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBAClB,YAAY,EAAA,CAAA;sBAAvC,SAAS;uBAAC,eAAe,CAAA;gBAgD1B,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,eAAe,CAAA;;;ME7HjB,gBAAgB,CAAA;AAI5B,IAAA,WAAA,CAAoB,MAAqB,EAAA;QAArB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QAHzC,IAAI,CAAA,IAAA,GAAG,KAAK,EAAc,CAAC;QAC3B,IAAS,CAAA,SAAA,GAAG,KAAK,EAAU,CAAC;QAG3B,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;gBAAE,OAAO;AAC1E,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM;iBACvB,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;kBAC3C,aAAa,EAAE,MAAM,CAAC,CAAC,MAAW,KAAK,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;YAChG,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,MAAW,KAAI;AAC7C,gBAAA,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;gBACvB,IAAI,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AAChC,oBAAA,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;iBACtB;AACF,aAAC,CAAC,CAAC;AACJ,SAAC,CAAC,CAAC;KACH;AAED,IAAA,iBAAiB,CAAC,MAAwB,EAAE,IAAgB,EAAE,KAAY,EAAA;AACzE,QAAA,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,IAAI,EAAG,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE;AAC/B,cAAE,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC;aACpC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,EAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAG,CAAC,CAAC;KACxC;+GA1BW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,yUCX7B,wWASA,EAAA,MAAA,EAAA,CAAA,m/LAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDEa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;+BACC,UAAU,EAAA,UAAA,EACR,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,QAAA,EAAA,wWAAA,EAAA,MAAA,EAAA,CAAA,m/LAAA,CAAA,EAAA,CAAA;;;MEOC,kBAAkB,CAAA;AAK9B,IAAA,WAAA,CAAoB,MAAqB,EAAA;QAArB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QAJzC,IAAI,CAAA,IAAA,GAAG,KAAK,EAAc,CAAC;QAC3B,IAAS,CAAA,SAAA,GAAG,KAAK,EAAU,CAAC;QAC5B,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAGzB,MAAM,CACL,MAAK;AACJ,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;gBAAE,OAAO;AAC1E,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AACxE,YAAA,IAAI,CAAC,MAAM;gBAAE,OAAO;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO;gBAAE,OAAO;YAClC,MAAM,YAAY,GAAG,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;AACtG,YAAA,IAAI,CAAC,YAAY;gBAAE,OAAO;YAE1B,IAAI,CAAC,IAAI,EAAE;AACV,kBAAE,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC;AAClC,iBAAA,SAAS,CAAC,CAAC,OAAc,KAAI;AAC7B,gBAAA,IAAI,CAAC,IAAI,EAAG,CAAC,OAAO,GAAG,OAAO,CAAC;AAChC,aAAC,CAAC,CAAC;AACL,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;QACF,MAAM,CAAC,MAAK;YACX,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;AACjD,YAAA,IAAI,WAAW,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK;gBAAE,OAAO;YAC9C,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,KAAI;AACxC,gBAAA,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;AACxB,aAAC,CAAC,CAAC;AACJ,SAAC,CAAC,CAAC;KACH;AAED,IAAA,aAAa,CAAC,MAAwB,EAAE,IAAgB,EAAE,QAAa,EAAA;AACtE,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE;AAC1B,YAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;SACnC;aAAM;YACN,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;SACjD;KACD;AAED,IAAA,mBAAmB,CAAC,MAAwB,EAAE,IAAgB,EAAE,QAAa,EAAA;QAC5E,IAAI,CAAC,IAAI,EAAG,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;AAChC,QAAA,IAAI,CAAC,IAAI,EAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAG,CAAC,CAAC;QACxC,QAAQ,CAAC,IAAI,EAAE,CAAC;KAChB;AAED,IAAA,qBAAqB,CAAC,MAAwB,EAAA;AAC7C,QAAA,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,IAAI,EAAG,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE;AAC/B,cAAE,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC;aACpC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,EAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAG,CAAC,CAAC;KACxC;+GAtDW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,2UCd/B,65BA2BA,EAAA,MAAA,EAAA,CAAA,krBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDjBW,cAAc,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,mWAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIlC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;+BACC,YAAY,EAAA,UAAA,EACV,IAAI,EACP,OAAA,EAAA,CAAC,cAAc,EAAE,WAAW,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,65BAAA,EAAA,MAAA,EAAA,CAAA,krBAAA,CAAA,EAAA,CAAA;;;MEGnC,gBAAgB,CAAA;IAU5B,WACS,CAAA,MAAqB,EACrB,QAAmB,EAAA;QADnB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAT5B,IAAI,CAAA,IAAA,GAAG,KAAK,EAAc,CAAC;QAC3B,IAAS,CAAA,SAAA,GAAG,KAAK,EAAU,CAAC;QAC5B,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAC1B,IAAK,CAAA,KAAA,GAAQ,EAAE,CAAC;KAOZ;IAEJ,eAAe,GAAA;AACd,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,KAAK,KAAI;AAChF,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;gBAC3D,OAAO;aACP;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACzD,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;aACnB;AACF,SAAC,CAAC,CAAC;KACH;IAED,WAAW,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC/B,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC7B;KACD;AAED,IAAA,YAAY,CAAC,KAAU,EAAA;QACtB,IAAI,CAAC,IAAI,EAAG,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AACpC,QAAA,IAAI,CAAC,IAAI,EAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAG,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;KACnB;+GArCW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,iXACjB,OAAO,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdnB,skBAoBA,EDXW,MAAA,EAAA,CAAA,4yMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAU,65BAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIjB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cACR,IAAI,EAAA,OAAA,EACP,CAAC,UAAU,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,skBAAA,EAAA,MAAA,EAAA,CAAA,4yMAAA,CAAA,EAAA,CAAA;uGAKV,MAAM,EAAA,CAAA;sBAAzB,SAAS;uBAAC,OAAO,CAAA;gBACyB,YAAY,EAAA,CAAA;sBAAtD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;AEfnC,MAAM,YAAY,GAAG;IAC3B,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;IAC/C,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;IAClD,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;IACjD,EAAE,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;IACzD,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;IACpD,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;AAC5D,IAAA,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE;AACpE,IAAA,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,EAAE;AACpF,IAAA,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,oBAAoB,EAAE;AAC9F,IAAA,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,mBAAmB,EAAE;AAC3F,IAAA,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE;AACrF,IAAA,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,EAAE;CAClF,CAAC;AACK,MAAM,YAAY,GAAG;AAC3B,IAAA,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,EAAE;IAClF,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;IAC/C,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;IAClD,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;IACjD,EAAE,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;IACzD,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;IACpD,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;CAC5D,CAAC;AACK,MAAM,YAAY,GAAG;IAC3B,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;AAC/C,IAAA,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,EAAE;AACpF,IAAA,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,oBAAoB,EAAE;AAC9F,IAAA,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,mBAAmB,EAAE;AAC3F,IAAA,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE;CACrF,CAAC;AACK,MAAM,qBAAqB,GAAG;IACpC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;IAC/C,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;IAClD,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;IACjD,EAAE,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;IACzD,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;IACpD,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;CAC5D,CAAC;AACK,MAAM,cAAc,GAAG;IAC7B,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;IAC/C,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;IAClD,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;IACjD,EAAE,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;IACzD,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;IACpD,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;AAC5D,IAAA,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,EAAE;CAClF;;AC3CD,MAAM,YAAY,GAAG;AACpB,IAAA,WAAW,EAAE,CAAC,KAAY,KAAW;QACpC,IAAI,MAAM,GAAU,EAAE,CAAC;AACvB,QAAA,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,KAAI;AACvB,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAElB,YAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9C,gBAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;aAChE;AACF,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,MAAM,CAAC;KACd;AACD,IAAA,cAAc,EAAE,CAAC,IAAgB,KAA8B;AAC9D,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,MAAM,EAAE;AAC9B,YAAA,OAAO,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SACvC;AAAM,aAAA,IAAI,IAAI,CAAC,UAAU,IAAI,QAAQ,EAAE;AACvC,YAAA,OAAO,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SACzC;QACD,OAAO;YACN,WAAW,EAAE,IAAI,CAAC,KAAK;AACvB,YAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,UAAU;YACjC,KAAK,EAAE,IAAI,CAAC,KAAK;SACjB,CAAC;KACF;AACD,IAAA,cAAc,EAAE,CAAC,IAAgB,KAA8B;AAC9D,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,SAAS,EAAE;YAC/B,OAAO;gBACN,WAAW,EAAE,IAAI,CAAC,KAAK;gBACvB,IAAI,EAAE,IAAI,CAAC,QAAQ;gBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,EAAE,EAAE,IAAI,CAAC,EAAE;aACX,CAAC;SACF;QACD,OAAO;YACN,WAAW,EAAE,IAAI,CAAC,KAAK;YACvB,IAAI,EAAE,IAAI,CAAC,QAAQ;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;SACjB,CAAC;KACF;AACD,IAAA,YAAY,EAAE,CAAC,IAAgB,KAA8B;AAC5D,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,SAAS,EAAE;YAC/B,OAAO;gBACN,WAAW,EAAE,IAAI,CAAC,KAAK;gBACvB,IAAI,EAAE,IAAI,CAAC,QAAQ;gBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,EAAE,EAAE,IAAI,CAAC,EAAE;aACX,CAAC;SACF;QACD,OAAO;YACN,WAAW,EAAE,IAAI,CAAC,KAAK;YACvB,IAAI,EAAE,IAAI,CAAC,QAAQ;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;SACjB,CAAC;KACF;AACD,IAAA,YAAY,EAAE,CAAC,MAAiB,GAAA,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAoB,KAAY;QAClG,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;QACpG,IAAI,CAAC,MAAM,EAAE;AACZ,YAAA,OAAO,MAAM,CAAC;SACd;AACD,QAAA,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;AAChD,YAAA,OAAO,MAAM,CAAC;SACd;AACD,QAAA,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACnC,QAAA,OAAO,MAAM,CAAC;KACd;AACD,IAAA,oBAAoB,CAAC,WAAmB,EAAE,aAA6B,EAAE,WAAyB,EAAA;AACjG,QAAA,MAAM,gBAAgB,GAAa,CAAC,WAAW,CAAC,CAAC;AACjD,QAAA,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE;AACzC,YAAA,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;AACrC,gBAAA,IAAI,UAAU,CAAC,KAAK,IAAI,YAAY,CAAC,WAAW,IAAI,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,UAAU,IAAI,WAAW,EAAE;AAC/G,oBAAA,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAY,CAAC,CAAC;oBACjD,MAAM;iBACN;aACD;SACD;AACD,QAAA,OAAO,aAAa,EAAE,MAAM,CAAC,CAAC,YAAY,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAY,CAAC,CAAC,CAAC;KACtG;AACD,IAAA,kBAAkB,CAAC,UAAe,EAAE,IAAiB,EAAE,cAA4B,EAAE,EAAA;AACpF,QAAA,UAAU,EAAE,OAAO,CAAC,CAAC,GAAQ,KAAI;AAChC,YAAA,IAAI,GAAG,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;aACzD;iBAAM;AACN,gBAAA,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;oBAChB,OAAO;iBACP;AACD,gBAAA,IAAI,KAAK,CAAC;AACV,gBAAA,IAAI,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;oBAClC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;iBAChC;qBAAM;oBACN,KAAK,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,KAAK,CAAC;iBACpC;gBACD,IAAI,UAAU,GAAe,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACnG,gBAAA,IAAI,GAAG,CAAC,UAAU,IAAI,MAAM,EAAE;oBAC7B,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,YAAY,IAAI,UAAU,CAAC;iBACnD;AAAM,qBAAA,IAAI,GAAG,CAAC,UAAU,IAAI,QAAQ,EAAE;AACtC,oBAAA,IAAI,GAAG,CAAC,OAAO,EAAE;AAChB,wBAAA,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AACjC,wBAAA,UAAU,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;AACvC,wBAAA,UAAU,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;qBACzC;iBACD;AACD,gBAAA,IAAI,GAAG,CAAC,aAAa,EAAE;oBACtB,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,OAAY,KAAI;AAC5C,wBAAA,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1D,qBAAC,CAAC,CAAC;iBACH;AACD,gBAAA,IAAI,GAAG,CAAC,WAAW,EAAE;AACpB,oBAAA,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC;iBACnC;AACD,gBAAA,IAAI,GAAG,CAAC,QAAQ,EAAE;AACjB,oBAAA,UAAU,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;iBACnC;AACD,gBAAA,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC7B;AACF,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,WAAW,CAAC;KACnB;IACD,SAAS,CAAC,YAAmB,EAAE,IAAiB,EAAA;AAC/C,QAAA,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAI;YACpC,OAAO;AACN,gBAAA,GAAG,QAAQ;gBACX,KAAK,EAAE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK;aACvE,CAAC;AACH,SAAC,CAAC,CAAC;KACH;CACD,CAAC;AACK,MAAM,WAAW,GAAG;IAC1B,WAAW,EAAE,YAAY,CAAC,WAAW;IACrC,cAAc,EAAE,YAAY,CAAC,cAAc;IAC3C,YAAY,EAAE,YAAY,CAAC,YAAY;IACvC,kBAAkB,EAAE,YAAY,CAAC,kBAAkB;IACnD,oBAAoB,EAAE,YAAY,CAAC,oBAAoB;IACvD,SAAS,EAAE,YAAY,CAAC,SAAS;CACjC;;MCrHY,gBAAgB,CAAA;AAiB5B,IAAA,WAAA,CACS,QAAkB,EAClB,MAAqB,EACrB,IAAiB,EAAA;QAFjB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;AAnB1B,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAa,EAAE,CAAC,CAAC;AAC7B,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;YACpB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC1E,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC5B,gBAAA,OAAO,MAAM,CAAC;aACd;YACD,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC5B,gBAAA,OAAO,OAAO,CAAC;aACf;AACD,YAAA,OAAO,MAAM,CAAC;AACf,SAAC,CAAC,CAAC;QACH,IAAS,CAAA,SAAA,GAAG,KAAK,EAAU,CAAC;QAC5B,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAE1B,IAAa,CAAA,aAAA,GAAQ,QAAQ,CAAC;QAC9B,IAAY,CAAA,YAAA,GAAG,WAAW,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAM7D,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;gBAAE,OAAO;AAC1E,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;iBACxB,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;kBAC3C,aAAa,EAAE,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACpF,IAAI,CAAC,MAAM,EAAE;AACZ,gBAAA,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,SAAS,CAAC;AAC7B,gBAAA,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC;AAC3B,gBAAA,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC;AAC9B,gBAAA,IAAI,CAAC,IAAI,EAAG,CAAC,QAAQ,GAAG,SAAS,CAAC;AAClC,gBAAA,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;AAC9B,gBAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;aACvB;iBAAM;AACN,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,gBAAA,IAAI,MAAM,CAAC,IAAI,IAAI,SAAS,EAAE;oBAC7B,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,IAAW,CAAC;oBACtC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,EAAS,CAAC;AAClC,oBAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;oBAC7B,UAAU,CAAC,MAAK;wBACf,IAAI,CAAC,IAAI,EAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;wBACpC,IAAI,CAAC,KAAK,GAAG;AACZ,4BAAA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;AAC1D,4BAAA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;yBACxD,CAAC;AACH,qBAAC,CAAC,CAAC;iBACH;qBAAM;oBACN,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACjC,oBAAA,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;oBAC9B,UAAU,CAAC,MAAK;wBACf,IAAI,CAAC,IAAI,EAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;wBACpC,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1E,qBAAC,CAAC,CAAC;iBACH;aACD;AACF,SAAC,CAAC,CAAC;KACH;AAED,IAAA,YAAY,CAAC,KAAiB,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC/B,QAAA,IAAI,MAAM,CAAC,YAAY,EAAE;AACxB,YAAA,MAAM,CAAC,YAAY,EAAG,CAAC,eAAe,EAAE,CAAC;SACzC;AAAM,aAAA,IAAK,QAAgB,CAAC,SAAS,EAAE;AACtC,YAAA,QAAgB,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;SACpC;KACD;AAED,IAAA,gBAAgB,CAAC,KAAU,EAAA;QAC1B,IAAI,CAAC,KAAK,EAAE;YACX,OAAO;SACP;AACD,QAAA,IAAI,CAAC,IAAI,EAAG,CAAC,KAAK,GAAG,SAAS,CAAC;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AACvB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,KAAK,IAAI,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;KACnE;AAED,IAAA,YAAY,CAAC,KAAU,EAAA;QACtB,IAAI,IAAI,CAAC,aAAa,IAAI,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;YAC9C,IAAI,CAAC,IAAI,EAAG,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;YAClE,IAAI,CAAC,IAAI,EAAG,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;YAChE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SACvC;AAAM,aAAA,IAAI,IAAI,CAAC,aAAa,IAAI,QAAQ,EAAE;AAC1C,YAAA,IAAI,CAAC,IAAI,EAAG,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;YAChE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SACvC;KACD;IAED,UAAU,CAAC,IAAS,EAAE,MAA0B,EAAA;QAC/C,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;KAC3F;+GA1FW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EALjB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,QAAQ,CAAC,ECdtB,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,6sDAiDA,EDlCW,MAAA,EAAA,CAAA,kqNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAM,EAAE,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAU,0yCAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAI5C,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAR5B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EACR,UAAA,EAAA,IAAI,EACL,SAAA,EAAA,CAAC,QAAQ,CAAC,EAAA,OAAA,EACZ,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,6sDAAA,EAAA,MAAA,EAAA,CAAA,kqNAAA,CAAA,EAAA,CAAA;;;MEO7C,gBAAgB,CAAA;AAS5B,IAAA,WAAA,CACS,QAAkB,EAClB,MAAqB,EACrB,IAAiB,EAAA;QAFjB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;QAX1B,IAAW,CAAA,WAAA,GAAG,KAAK,EAAgB,CAAC;QACpC,IAAU,CAAA,UAAA,GAAe,EAAE,CAAC;QAC5B,IAAS,CAAA,SAAA,GAAU,EAAE,CAAC;QACtB,IAAY,CAAA,YAAA,GAAU,EAAE,CAAC;QACzB,IAAI,CAAA,IAAA,GAAQ,EAAE,CAAC;QACf,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QACjB,IAAI,CAAA,IAAA,GAAQ,MAAM,CAAC;QAOlB,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,CAAC,SAAS;gBACb,IAAI,CAAC,WAAW,EAAE;sBACf,MAAM,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,UAAU,IAAI,QAAQ,IAAI,UAAU,CAAC,UAAU,IAAI,MAAM,IAAI,UAAU,CAAC,UAAU,IAAI,MAAM,CAAC;sBAC/H,GAAG,CAAC,CAAC,UAAU,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACrF,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAClE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,SAAC,CAAC,CAAC;KACH;AAED,IAAA,YAAY,CAAC,KAAiB,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC/B,QAAA,IAAI,MAAM,CAAC,YAAY,EAAE;AACxB,YAAA,MAAM,CAAC,YAAY,EAAG,CAAC,eAAe,EAAE,CAAC;SACzC;AAAM,aAAA,IAAK,QAAgB,CAAC,SAAS,EAAE;AACtC,YAAA,QAAgB,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;SACpC;KACD;AAED,IAAA,aAAa,CAAC,KAAU,EAAA;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACjG,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;AAC1D,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC7B;AAED,IAAA,gBAAgB,CAAC,KAAU,EAAA;QAC1B,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,MAAM,EAAE;AACzC,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,KAAK,IAAI,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;SAClE;KACD;IAED,eAAe,GAAA;QACd,IAAI,MAAM,GAAG,YAAY,CAAC;QAC1B,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,MAAM,EAAE;YACzC,MAAM,GAAG,YAAY,CAAC;SACtB;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,MAAM,EAAE;YAChD,MAAM,GAAG,YAAY,CAAC;SACtB;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,QAAQ,EAAE;YAC3C,MAAM,GAAG,cAAc,CAAC;SACxB;QACD,OAAO,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KAChD;IAED,qBAAqB,GAAA;QACpB,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,MAAM,EAAE;AACzC,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;SAC/B;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,MAAM,EAAE;AAChD,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;SAChC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,QAAQ,EAAE;AAClD,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC9B;KACD;IAED,OAAO,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAClE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpC;IAED,IAAI,GAAA;QACH,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,MAAM,EAAE;YACzC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;SACvC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,QAAQ,EAAE;YAClD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,SAAS,EAAE;gBACpC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBACrC,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;aACnC;iBAAM;gBACN,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;aACtC;SACD;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,MAAM,EAAE;YAChD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,SAAS,EAAE;gBACpC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAClF,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aAChF;iBAAM;gBACN,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aAChF;SACD;QACD,IAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAC;YAC1E,OAAM;SACN;QACD,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;KACf;IAED,UAAU,CAAC,IAAS,EAAE,MAA0B,EAAA;QAC/C,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;KAC3F;IAED,UAAU,GAAA;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9E,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;YACnB,OAAO;SACP;QACD,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;YACpB,OAAO;SACP;AACD,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;KACnB;+GArHW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAP,IAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,6MALjB,CAAC,QAAQ,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBtB,2yHAoHA,EDlGW,MAAA,EAAA,CAAA,k5NAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAM,gpCAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,WAAW,EAAE,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,KAAA,EAAA,KAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAU,0yCAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAI1E,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAR5B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cACR,IAAI,EAAA,SAAA,EACL,CAAC,QAAQ,CAAC,WACZ,CAAC,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,2yHAAA,EAAA,MAAA,EAAA,CAAA,k5NAAA,CAAA,EAAA,CAAA;;;MEL3E,gBAAgB,CAAA;AAM5B,IAAA,WAAA,CAAoB,MAAqB,EAAA;QAArB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QALzC,IAAW,CAAA,WAAA,GAAG,KAAK,EAAsB,CAAC;QAC1C,IAAS,CAAA,SAAA,GAAG,KAAK,EAAU,CAAC;QAC5B,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAC1B,IAAM,CAAA,MAAA,GAAa,EAAE,CAAC;QAGrB,MAAM,CACL,MAAK;AACJ,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;gBAAE,OAAO;YAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;AACpF,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC,MAAM,KAAI;AACtC,gBAAA,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAI,CAAC,CAAC;AACpD,aAAC,CAAC,CAAC;AACJ,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;KACF;AAED,IAAA,YAAY,CAAC,KAAiB,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC/B,QAAA,IAAI,MAAM,CAAC,YAAY,EAAE;AACxB,YAAA,MAAM,CAAC,YAAY,EAAG,CAAC,eAAe,EAAE,CAAC;SACzC;AAAM,aAAA,IAAK,QAAgB,CAAC,SAAS,EAAE;AACtC,YAAA,QAAgB,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;SACpC;KACD;IAED,iBAAiB,CAAC,IAAsB,EAAE,KAAiB,EAAA;AAC1D,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAI,CAAC,CAAC;SAC5B;aAAM;YACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC;SAChE;AACD,QAAA,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC;AAExE,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC,MAAW,KAAK,MAAM,CAAC,GAAG,KAAK,KAAK,CAAC,EAAE,KAAM,CAAC;YAC3G,KAAK;AACL,SAAA,CAAC,CAAC;KACH;+GA3CW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,ECb7B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,4rBAiBA,EDRW,MAAA,EAAA,CAAA,84MAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,0BAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAI1B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cACR,IAAI,EAAA,OAAA,EACP,CAAC,aAAa,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,4rBAAA,EAAA,MAAA,EAAA,CAAA,84MAAA,CAAA,EAAA,CAAA;;;MES3B,iBAAiB,CAAA;AAM7B,IAAA,WAAA,CAAoB,MAAqB,EAAA;QAArB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QALzC,IAAW,CAAA,WAAA,GAAG,KAAK,EAAgB,CAAC;QACpC,IAAW,CAAA,WAAA,GAAG,KAAK,EAAsB,CAAC;QAC1C,IAAS,CAAA,SAAA,GAAG,KAAK,EAAU,CAAC;QAC5B,IAAU,CAAA,UAAA,GAAiB,EAAE,CAAC;QAG7B,MAAM,CAAC,MAAK;YACX,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;AAC1H,SAAC,CAAC,CAAC;KACH;+GAVW,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EClB9B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,w0CAkCA,EDpBW,MAAA,EAAA,CAAA,k6LAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,oFAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAE,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,EAAE,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,sFAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIzH,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cACT,IAAI,EAAA,OAAA,EACP,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,w0CAAA,EAAA,MAAA,EAAA,CAAA,k6LAAA,CAAA,EAAA,CAAA;;;MEE1H,kBAAkB,CAAA;IAQ9B,WACS,CAAA,MAAqB,EACrB,IAAiB,EAAA;QADjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;AAThB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAQ,CAAC;QAClD,IAAW,CAAA,WAAA,GAAG,KAAK,EAAgB,CAAC;QACpC,IAAS,CAAA,SAAA,GAAG,KAAK,EAAU,CAAC;QAC5B,IAAS,CAAA,SAAA,GAAiB,EAAE,CAAC;QAC7B,IAAY,CAAA,YAAA,GAAG,WAAW,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAc,CAAA,cAAA,GAAG,WAAW,CAAC,SAAS,CAAC,qBAAqB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAMxE,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,CAAC,SAAS;gBACb,IAAI,CAAC,WAAW,EAAE;sBACf,MAAM,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,MAAM,KAAK,UAAU,CAAC,UAAU,IAAI,MAAM,IAAI,UAAU,CAAC,UAAU,IAAI,QAAQ,CAAC,CAAC;AACpH,qBAAA,GAAG,CAAC,CAAC,UAAU,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,UAAU,IAAI,QAAQ,GAAG,QAAQ,GAAG,UAAU,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACxH,SAAC,CAAC,CAAC;KACH;IAED,cAAc,CAAC,IAAgB,EAAE,KAAY,EAAA;AAC5C,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AACvF,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KACzB;IAED,mBAAmB,CAAC,IAAgB,EAAE,KAAY,EAAA;QACjD,KAAK,CAAC,eAAe,EAAE,CAAC;KACxB;+GA7BW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAS,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EChB/B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,myBAwBA,EDZW,MAAA,EAAA,CAAA,27LAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,mWAAE,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIjB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,cACV,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,EAAE,MAAM,CAAC,EAAA,QAAA,EAAA,myBAAA,EAAA,MAAA,EAAA,CAAA,27LAAA,CAAA,EAAA,CAAA;sGAKpB,YAAY,EAAA,CAAA;sBAArB,MAAM;;;MEDK,kBAAkB,CAAA;IAO9B,WACS,CAAA,MAAqB,EACrB,IAAiB,EAAA;QADjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;QAR1B,IAAY,CAAA,YAAA,GAAG,KAAK,EAAgB,CAAC;QACrC,IAAU,CAAA,UAAA,GAAG,KAAK,EAAc,CAAC;QACjC,IAAK,CAAA,KAAA,GAAG,KAAK,EAAU,CAAC;QACxB,IAAQ,CAAA,QAAA,GAAG,KAAK,EAAY,CAAC;QAE7B,IAAY,CAAA,YAAA,GAAG,WAAW,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAK7D,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACtB,gBAAA,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAG,CAAC,OAAQ,CAAC,CAAC;aAC/E;AACF,SAAC,CAAC,CAAC;KACH;IAED,cAAc,GAAA;AACb,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;KACrF;IAED,cAAc,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;KACrD;IAED,gBAAgB,GAAA;AACf,QAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAG,CAAC,WAAY,CAAC,CAAC;KAC9D;IAED,uBAAuB,CAAC,MAAwB,EAAE,IAAgB,EAAA;AACjE,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACpB,YAAA,OAAO,KAAK,CAAC;SACb;QACD,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC;KAC7E;AAED,IAAA,kBAAkB,CAAC,OAAqB,EAAA;QACvC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1E;AAED,IAAA,aAAa,CAAC,KAAa,EAAA;QAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;KACpF;IAED,aAAa,GAAA;;;KAGZ;IAED,YAAY,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,EAAE;cACrB,OAAO,EAAE,MAAM,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,EAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aAC9E,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;KAChC;IAED,cAAc,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,UAAU,EAAG,CAAC,QAAQ,EAAE;YAChC,OAAO,IAAI,CAAC,UAAU,EAAE;kBACrB,OAAO,EAAE,MAAM,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,EAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;iBAC9E,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;SAChC;AACD,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,YAAY,EAAG,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;KAC3G;IAED,YAAY,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,UAAU,EAAG,CAAC,QAAQ,EAAE;AAChC,YAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,EAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;SACnI;QACD,OAAO,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,YAAY,EAAG,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;KACxG;+GAvEW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAT,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAS,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EALnB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAE,ECXd,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,8uGAgEA,+7MDpDW,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,cACV,IAAI,EAAA,SAAA,EACL,EAAE,EACJ,OAAA,EAAA,CAAC,aAAa,CAAC,EAAA,QAAA,EAAA,8uGAAA,EAAA,MAAA,EAAA,CAAA,44MAAA,CAAA,EAAA,CAAA;;;MEwCZ,eAAe,CAAA;IAmB3B,WACS,CAAA,MAAqB,EACrB,IAAiB,EAAA;QADjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;QAjB1B,IAAS,CAAA,SAAA,GAAG,KAAK,EAAU,CAAC;QAC5B,IAAW,CAAA,WAAA,GAAG,KAAK,EAAe,CAAC;AACnC,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC;gBAAE,OAAO;YACvF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;AACrF,YAAA,OAAO,MAAM,CAAC;AACf,SAAC,CAAC,CAAC;QAGH,IAAU,CAAA,UAAA,GAAW,GAAG,CAAC;QACzB,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;QACf,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QACjB,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;QACf,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC;QAMb,MAAM,CACL,MAAK;YACJ,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC;YAClD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,UAAU,IAAI,IAAI,CAAC;AACtD,YAAA,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;AAC1B,YAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACzE,YAAA,IAAI,CAAC,WAAW,GAAG,UAAW,CAAC,GAAG,CAAC,CAAC,SAAc,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AACjH,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;QACF,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AACnC,YAAA,IAAI,SAAS,EAAE,aAAa,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE;gBAClE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;aACnH;AACF,SAAC,CAAC,CAAC;QACH,MAAM,CACL,MAAK;YACJ,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;AAC/C,YAAA,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC;YACjE,IAAI,UAAU,IAAI,SAAS;gBAAE,OAAO;AACpC,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CACpB,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,cAAc,CAAC,UAAU,CAAE,CAAC,EACnG,SAAS,CACT,CAAC;AACH,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;QACF,MAAM,CACL,MAAK;YACJ,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;AACjD,YAAA,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC;YACjE,IAAI,WAAW,IAAI,SAAS;gBAAE,OAAO;YACrC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAC9C,YAAA,MAAM,GAAG;AACR,gBAAA,GAAG,MAAM;AACT,gBAAA,aAAa,EAAE,WAAW,CAAC,oBAAoB,CAAC,WAAW,GAAG,EAAE,EAAE,MAAM,EAAE,aAAa,IAAI,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC;aAChH,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC1C,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;QACF,MAAM,CACL,MAAK;YACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC3C,IAAI,QAAQ,KAAK,SAAS;gBAAE,OAAO;AACnC,YAAA,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC;YACjE,IAAI,KAAK,GAAW,QAAQ,CAAC,MAAO,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACzF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,aAAa,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;AACnH,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;KACF;IAED,QAAQ,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAQ,KAAI;YACvC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC;YAClD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,UAAU,IAAI,IAAI,CAAC;AACtD,YAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACzE,YAAA,IAAI,CAAC,WAAW,GAAG,UAAW,CAAC,GAAG,CAAC,CAAC,SAAc,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAChH,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,UAAU,CAAC,MAAK;AACf,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;aACnB,EAAE,GAAG,CAAC,CAAC;AACT,SAAC,CAAC,CAAC;KACH;IAED,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;KACpB;IAED,OAAO,CAAC,KAAU,EAAE,SAAc,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;SACrC;aAAM;YACN,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;SACtC;KACD;IAED,eAAe,CAAC,KAAU,EAAE,SAAc,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACpB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;SACvC;aAAM;YACN,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;SACxC;KACD;IAED,OAAO,CAAC,KAAU,EAAE,SAAc,EAAA;AACjC,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE;YACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACrC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;SACtB;aAAM;YACN,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACtC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACrB;KACD;AAED,IAAA,SAAS,CAAC,KAAU,EAAA;QACnB,IAAI,CAAC,cAAc,EAAE,CAAC;KACtB;AAED,IAAA,SAAS,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;KAC7E;IAED,cAAc,GAAA;QACb,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAC5B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;AAC3E,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QACvD,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC;AACvD,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;KAChC;AAED,IAAA,oBAAoB,CAAC,KAAa,EAAA;QACjC,OAAO,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAC9E;AAED,IAAA,kBAAkB,CAAC,KAAa,EAAA;AAC/B,QAAA,MAAM,MAAM,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAM,CAAC,CAAC;AACjD,QAAA,MAAM,MAAM,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QACvH,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7B,QAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;KACjC;AAED,IAAA,cAAc,CAAC,KAAU,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KACtB;+GAzJW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAT,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAS,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,ECpD5B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,y+DAwDA,EDRW,MAAA,EAAA,CAAA,ylNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,iBAAiB,EAAE,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,EAAE,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,EAAE,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,YAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,aAAa,kDAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAI5F,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EACb,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,WAAW,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,y+DAAA,EAAA,MAAA,EAAA,CAAA,ylNAAA,CAAA,EAAA,CAAA;sGAK9D,SAAS,EAAA,CAAA;sBAAnD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAClB,QAAQ,EAAA,CAAA;sBAA9B,SAAS;uBAAC,UAAU,CAAA;gBACG,SAAS,EAAA,CAAA;sBAAhC,SAAS;uBAAC,WAAW,CAAA;;;mCEvCV,oBAAoB,CAAA;AAahC,IAAA,WAAA,CAAoB,MAAqB,EAAA;QAArB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;AAZ/B,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAS,CAAC;AAE3C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;AAC3B,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,IAAI,CAAC,CAAC;AAC5B,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAQ,EAAE,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAc,EAAE,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AAC9B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;QAChC,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;AAC9B,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAU,IAAI,CAAC,CAAC;QAClC,IAAY,CAAA,YAAA,GAAS,EAAE,CAAA;AACb,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAS,CAAC;KACN;IAE7C,GAAG,GAAA;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC;KAC/B;IAED,MAAM,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACxB;IAED,EAAE,GAAA;AACD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;YAClD,MAAM,MAAM,GAAQ,EAAE,CAAC;YACvB,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,GAAQ,KAAI;AACnD,gBAAA,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACrC,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,MAAM,CAAC;AACf,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;AACzE,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACxB;IAED,eAAe,GAAA;QACd,MAAM,MAAM,GAAU,EAAE,CAAC;AACzB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,IAAI,IAAI,CAAA;QAClD,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,IAAS,KAAI;AACpC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAE,CAAC,CAAC,CAAA;AACnD,YAAA,IAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAC;gBACzD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;aACjC;AAED,YAAA,IAAI,CAAC,UAAU,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACpD,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,MAAM,CAAC;KACd;IAED,MAAM,GAAA;AACL,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KAC7B;IAED,MAAM,GAAA;AACL,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC/B,SAAC,CAAC,CAAC;KACH;AAED,IAAA,UAAU,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,KAAK,CAAC,SAAS,EAAE;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC;SACjD;aAAM;AACN,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;SAC5B;KACD;+GArEW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAErB,aAAa,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBzB,kgCAoCA,EAAA,MAAA,EAAA,CAAA,goLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDxBW,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,aAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIxDS,sBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;+BACC,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,kgCAAA,EAAA,MAAA,EAAA,CAAA,goLAAA,CAAA,EAAA,CAAA;+EAK3D,IAAI,EAAA,CAAA;sBAAb,MAAM;gBACmB,IAAI,EAAA,CAAA;sBAA7B,SAAS;uBAAC,aAAa,CAAA;gBAUd,YAAY,EAAA,CAAA;sBAArB,MAAM;;;AEuCF,MAAO,oBAAqB,SAAQ,WAAW,CAAA;IAQpD,WACS,CAAA,MAAqB,EACrB,QAAmB,EAAA;AAE3B,QAAA,KAAK,EAAE,CAAC;QAHA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAP5B,IAAK,CAAA,KAAA,GAAG,KAAK,EAAa,CAAC;QAC3B,IAAK,CAAA,KAAA,GAAqB,EAAE,CAAC;QAE7B,IAAG,CAAA,GAAA,GAAQ,EAAE,CAAC;QAOb,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;gBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAG,CAAC,gBAAiB,CAAC;gBAC7C,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,cAAc,EAAE,CAAC;aACtB;AACF,SAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAK;YACX,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACtD,YAAA,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE;gBAC3D,OAAO;aACP;AACD,YAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;AACrC,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;aACrE;AAAM,iBAAA,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,EAAE;AAC5C,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;aACxE;AACF,SAAC,CAAC,CAAC;KACH;IAED,cAAc,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,EAAG,CAAC,YAAa,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;SAC1D;KACD;IAED,gBAAgB,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC1D,YAAA,IAAI,KAAK,IAAI,IAAI,EAAE;gBAClB,OAAO;aACP;AACD,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,EAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AACnB,SAAC,CAAC,CAAC;KACH;IAED,cAAc,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,QAAQ;YAAE,OAAO;QACjD,IAAI,CAAC,iBAAiB,EAAE,CAAC;KACzB;IAED,iBAAiB,GAAA;AAChB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAG,CAAC,IAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC;AACtE,QAAA,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,GAAQ,KAAI;AACjE,YAAA,IAAI,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAC/D,YAAA,IAAI,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE;gBACzC,OAAO,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,CAAM,KAAI;AACpD,oBAAA,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,UAAU,EAAE;AAClC,wBAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAG,CAAC,IAAI,CAAC,CAAC;wBAC5C,OAAO,CAAC,GAAG,CAAC,aAAa,EAAC,CAAC,CAAC,KAAK,CAAC,CAAA;qBAElC;AACF,iBAAC,CAAC,CAAC;aACH;YACA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACxD,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACvB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAACC,sBAAc,CAAC,CAAC;AACpE,YAAA,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACvC,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACzB,gBAAA,OAAO,CAAC,WAAW,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;aAClF;AACD,YAAA,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,UAAiB,EAAE,CAAC,CAAC,CAAC;YAC1E,YAAY,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;YAC1D,IAAI,SAAS,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,SAAS,EAAC,CAAC;AAClG,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACzB,gBAAA,SAAS,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAC,CAAC;aACrD;AACD,YAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAC,SAAS,CAAC,CAAA;AACvC,YAAA,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YAC9C,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAW,KAAI;AACpD,gBAAA,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;oBAAE,OAAO;gBAC7B,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAG,CAAC,IAAK,CAAC,CAAC;AAC1E,aAAC,CAAC,CAAC;AACJ,SAAC,CAAC,CAAC;KACH;IAED,oBAAoB,CAAC,WAAgB,EAAE,OAAY,EAAA;AAClD,QAAA,MAAM,MAAM,GAAG,CAAC,KAAU,KAAsB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAChF,QAAA,WAAW,CAAC,YAAY,GAAG,OAAO,CAAC;QACnC,WAAW,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QACjD,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,IAAI,YAAY,CAAC;AACpE,QAAA,IAAI,WAAW,CAAC,YAAY,IAAI,YAAY,EAAE;AAC7C,YAAA,WAAW,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACvF;aAAM;AACN,YAAA,WAAW,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACvF;AACD,QAAA,IAAI,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE;YAC5C,WAAW,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,CAAM,KAAI;AACxD,gBAAA,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,UAAU,EAAE;AAClC,oBAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAG,CAAC,IAAI,CAAC,CAAC;iBAC5C;AACF,aAAC,CAAC,CAAC;SACH;AACD,QAAA,IAAI,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE;YAC5C,WAAW,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,CAAM,KAAI;AACxD,gBAAA,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,UAAU,EAAE;AAClC,oBAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAG,CAAC,IAAI,CAAC,CAAC;oBAC5C,OAAO,CAAC,GAAG,CAAC,aAAa,EAAC,CAAC,CAAC,KAAK,CAAC,CAAA;iBAElC;AACF,aAAC,CAAC,CAAC;SACH;KACD;+GApHW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAX,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EACA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAgB,EACjB,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,EAhB/B,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;EAYT,EAbS,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8YAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BAAE,mBAAmB,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAe/B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAjDhC,SAAS;+BACC,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAgCP,OAAA,EAAA,CAAC,YAAY,EAAE,mBAAmB,CAAC,EAClC,QAAA,EAAA,CAAA;;;;;;;;;;;;AAYT,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,8YAAA,CAAA,EAAA,CAAA;uGAGmD,SAAS,EAAA,CAAA;sBAA5D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;gBACU,WAAW,EAAA,CAAA;sBAAtE,SAAS;uBAAC,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;MCwB9C,iBAAiB,CAAA;AAE7B,IAAA,WAAA,GAAA;QADA,IAAK,CAAA,KAAA,GAAG,KAAK,EAAa,CAAC;KACX;AAEhB,IAAA,QAAQ,MAAW;+GAJP,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EA5CnB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0CT,EAxDA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,EAClB,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,EACpB,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,2EACf,mBAAmB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,mBAAmB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,qBAAqB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,oBAAoB,EACpB,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAc,EACd,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,iBAAiB,EACjB,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,2EACf,cAAc,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,mBAAmB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FA8CT,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA9D7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE;wBACR,kBAAkB;wBAClB,oBAAoB;wBACpB,eAAe;wBACf,mBAAmB;wBACnB,mBAAmB;wBACnB,qBAAqB;wBACrB,oBAAoB;wBACpB,cAAc;wBACd,iBAAiB;wBACjB,eAAe;wBACf,cAAc;wBACd,mBAAmB;wBACnB,oBAAoB;AACpB,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CT,CAAA,CAAA;AACD,iBAAA,CAAA;;;MCgIY,kBAAkB,CAAA;AAM9B,IAAA,WAAA,GAAA;QAHA,IAAK,CAAA,KAAA,GAAG,KAAK,EAAa,CAAC;AAC3B,QAAA,IAAA,CAAA,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;KAET;AAEhB,IAAA,QAAQ,MAAW;IAEnB,UAAU,GAAA;AACT,QAAA,MAAM,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE;AACtC,YAAA,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACpB;QACD,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,KAAK,KAAK,EAAE;AACnG,YAAA,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACpB;AACD,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACpB;IACD,QAAQ,GAAA;AACP,QAAA,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAG,CAAC,aAAc,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;KAClE;IACD,kBAAkB,GAAA;QACjB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC5B;IAED,aAAa,GAAA;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;KACvB;+GA7BW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAChB,kBAAkB,EAtEtB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmET,EAEW,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,slBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,EAzGpB,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,iBAAiB,oEAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAyGzF,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBA5G9B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EACV,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,oBAAoB,CAAC,EAoC5F,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmET,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,slBAAA,CAAA,EAAA,CAAA;wDAGiC,eAAe,EAAA,CAAA;sBAAhD,YAAY;uBAAC,kBAAkB,CAAA;gBACe,UAAU,EAAA,CAAA;sBAAxD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;MC3KjC,aAAa,CAAA;IA6BzB,QAAQ,GAAA;QACP,IAAI,CAAC,eAAe,EAAE,CAAC;KACvB;IAED,WACS,CAAA,GAAsB,EACtB,QAAkB,EAAA;QADlB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QACtB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAjC3B,QAAA,IAAA,CAAA,MAAM,GAAW,MAAM,CAAC,MAAM,CAAC,CAAC;QAChC,IAAK,CAAA,KAAA,GAAY,KAAK,CAAC;AACvB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAc,EAAE,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;YACtB,SAAS,CAAC,MAAK;gBACd,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,UAAU,CAAC,MAAK;oBACf,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,iBAAC,CAAC,CAAC;AACJ,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC;AAC9B,SAAC,CAAC,CAAC;AAEH,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAClC,IAAK,CAAA,KAAA,GAAG,KAAK,EAAO,CAAC;QACrB,IAAM,CAAA,MAAA,GAAG,KAAK,EAAU,CAAC;QACzB,IAAQ,CAAA,QAAA,GAAQ,EAAE,CAAC;QACnB,IAAY,CAAA,YAAA,GAAQ,EAAE,CAAC;QAEvB,IAAa,CAAA,aAAA,GAAe,EAAE,CAAC;AAC/B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAqB,SAAS,CAAC,CAAC;QACtD,IAAM,CAAA,MAAA,GAAY,IAAI,CAAC;QAEvB,IAAK,CAAA,KAAA,GAAQ,EAAE,CAAC;AAEhB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;QAU/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QACjE,MAAM,CACL,MAAK;AACJ,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;gBAClB,OAAO;aACP;AACD,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;gBACf,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;oBAChC,IAAI,CAAC,KAAK,CAAC,OAAO;wBAAE,OAAO;oBAC3B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAI,CAAC,KAAK,SAAS;wBAAE,OAAO;oBACnD,SAAS,CAAC,MAAK;wBACd,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;AACpG,qBAAC,CAAC,CAAC;AACJ,iBAAC,CAAC,CAAC;aACH;YACD,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1F,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACrC,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;QACF,MAAM,CACL,MAAK;YACJ,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACzC,YAAA,IAAI,SAAS,IAAI,EAAE,EAAE;gBACpB,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC;AACtF,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;oBACjB,IAAI,CAAC,OAAO,GAAG;AACd,wBAAA,YAAY,EAAE,SAAS;AACvB,wBAAA,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;AACrB,wBAAA,OAAO,EAAE,EAAE;wBACX,MAAM,EAAE,IAAI,GAAG,EAAE;wBACjB,MAAM,EAAE,IAAI,GAAG,EAAE;qBACjB,CAAC;AACF,oBAAA,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAC3C;aACD;AACF,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;KACF;IAED,eAAe,GAAA;QACd,UAAU,CAAC,MAAK;YACf,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;YACzC,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,SAAC,CAAC,CAAC;KACH;IAED,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC,CAAC;KAC3D;IAED,QAAQ,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE;AAC1B,YAAA,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC;SAC1B;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE;YACzB,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;SACxC;AACD,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;;AAEpB,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;AAChC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AACvC,YAAA,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC/B,KAAK,CAAC,IAAI,GAAG,CAAA,EAAG,gBAAgB,EAAE,CAAA,EAAG,KAAK,CAAA,CAAE,CAAC;AAC7C,YAAA,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YACzC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,gBAAgB,IAAI,IAAI,CAAC;YACjE,IAAI,MAAM,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE;gBAC1F,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAU,OAAA,EAAA,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAA,CAAA,EAAI,KAAK,CAAC,GAAG,EAAE,CAAC;aACpF;AACD,YAAA,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;AAClB,YAAA,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBAC7B,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;aACnC;AACD,YAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAChC,SAAC,CAAC,CAAC;KACH;AAED,IAAA,QAAQ,CAAC,GAAW,EAAA;AACnB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;KACzD;AAED,IAAA,WAAW,CAAC,MAAmB,EAAA;AAC9B,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACxB,YAAA,IAAI,KAAK,CAAC,KAAK,EAAE;AAChB,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aAC9B;iBAAM;AACN,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC3B;AACF,SAAC,CAAC,CAAC;KACH;AAED,IAAA,kBAAkB,CAAC,KAAgB,EAAA;QAClC,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ;cACnD,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC;AACnF,cAAE,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,EAAE,YAAY,CAAC,CAAC;AAC/D,QAAA,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;QAClC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACpD,YAAA,MAAM,WAAW,GAAG,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3E,YAAA,IAAI,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAI,CAAC,EAAE,KAAK,CAAC,EAAE;gBAC3E,OAAO;aACP;YACD,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,aAAa,IAAI,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,aAAa,KAAK,UAAU,EAAE;AAC3G,gBAAA,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,aAAc,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;aAC1D;AACD,YAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAC5C,SAAC,CAAC,CAAC;KACH;IAED,iBAAiB,CAAC,KAAU,EAAE,KAAgB,EAAA;QAC7C,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAI,CAAC,GAAG,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAI,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;AACpH,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YAChB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;SAC3C;aAAM;YACN,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;SAC7C;QACD,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAClC;AAED,IAAA,YAAY,CAAC,GAAW,EAAE,KAAU,EAAE,KAAe,EAAA;AACpD,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACf,IAAI,CAAC,MAAM,EAAG,CAAC,OAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SACrC;aAAM;YACN,IAAI,CAAC,MAAM,EAAG,CAAC,OAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SACrC;AACD,QAAA,IAAI,CAAC,KAAK;YAAE,OAAO;AACnB,QAAA,IAAI,CAAC,MAAM,EAAG,CAAC,GAAI,CAAC,OAAO,GAAG,UAAU,CAAC,QAAQ,CAChD,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,SAAU,CAAC,EACvC,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,WAAW,CAChB,CAAC;KACF;AAED,IAAA,aAAa,CAAC,GAAW,EAAE,KAAU,EAAE,KAAgB,EAAA;AACtD,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAG,KAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9H,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;YAC5B,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC;AACzB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC5B,YAAA,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC;AAChD,SAAA,CAAC,CAAC;KACH;IAED,oBAAoB,GAAA;QACnB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAChC,YAAA,IAAI,KAAK,CAAC,cAAc,EAAE;AACzB,gBAAA,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;AACvD,gBAAA,IAAI,KAAK,CAAC,IAAI,EAAE;AACf,oBAAA,KAAK,CAAC,YAAY,EAAE,eAAe,EAAE,CAAC;oBACtC,KAAK,CAAC,YAAY,EAAE,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;iBACjE;qBAAM;AACN,oBAAA,KAAK,CAAC,YAAY,EAAE,aAAa,CAChC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,IAAI,KAAK,EAAE,UAAU,GAAG,KAAK,EAAE,UAAU,GAAG,UAAU,CAAC,QAAQ,IAAI,IAAI,CACxG,CAAC;iBACF;aACD;AACF,SAAC,CAAC,CAAC;KACH;IAED,QAAQ,GAAA;AACP,QAAA,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC9C,YAAA,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;SACpG;QACD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;KACzE;IAED,UAAU,CAAC,KAAgB,EAAE,IAA6C,EAAA;AACzE,QAAA,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;KACvC;IAED,WAAW,GAAA;QACV,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;YAChC,UAAU,CAAC,sBAAsB,CAChC,KAAK,EACL,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,GAAI,CAAC,EAC1B,KAAK,EACL,IAAI,EACJ,IAAI,CAAC,aAAa,EAClB,MAAK;gBACJ,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC7B,aAAC,EACD,IAAI,CAAC,QAAQ,CACb,CAAC;AACH,SAAC,CAAC,CAAC;KACH;IAED,eAAe,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;AAC9B,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC;YAClD,OAAO;SACP;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACzB,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KACzB;IAED,iBAAiB,GAAA;QAChB,MAAM,WAAW,GAAiB,EAAE,CAAC;QACrC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;AACvD,QAAA,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AAC3F,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;KAC9D;IAED,cAAc,CAAC,eAA0D,EAAE,WAAyB,EAAA;QACnG,IAAI,CAAC,eAAe,EAAE;YACrB,OAAO;SACP;AACD,QAAA,eAAe,EAAE,OAAO,CAAC,CAAC,SAAS,KAAI;AACtC,YAAA,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;YAC7C,IAAI,UAAU,EAAE;AACf,gBAAA,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC7B;YACD,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,kBAAkB,EAAE,EAAE,WAAW,CAAC,CAAC;AAClE,SAAC,CAAC,CAAC;KACH;AAED;;;;;AAKG;AACH,IAAA,kBAAkB,CAAC,KAAU,EAAE,SAAmB,EAAE,QAAkB,EAAA;QACrE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAE,CAAC;AAClC,YAAA,IAAI,CAAC,KAAK;gBAAE,OAAO;YACnB,UAAU,CAAC,sBAAsB,CAChC,KAAK,EACL,KAAK,CAAC,GAAG,CAAC,EACV,SAAS,IAAI,IAAI,EACjB,QAAQ,IAAI,IAAI,EAChB,IAAI,CAAC,aAAa,EAClB,MAAK;gBACJ,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC7B,aAAC,EACD,IAAI,CAAC,QAAQ,CACb,CAAC;AACH,SAAC,CAAC,CAAC;KACH;AAED;;;AAGG;AACH,IAAA,iBAAiB,CAAC,QAAwB,EAAA;AACzC,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACzB,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AACrC,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;gBACf,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AAC1F,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;aAC/C;iBAAM;gBACN,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;aACzC;AACF,SAAC,CAAC,CAAC;KACH;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,QAAwB,EAAA;AACxC,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACzB,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;gBACf,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AAC1F,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;aAC/C;iBAAM;gBACN,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;aACzC;AACF,SAAC,CAAC,CAAC;KACH;AAED;;;AAGG;AACH,IAAA,qBAAqB,CAAC,IAAc,EAAA;AACnC,QAAA,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,KAAI;AACrB,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAC5B,SAAC,CAAC,CAAC;KACH;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,GAAW,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,cAAc,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;KAChE;AAED;;AAEG;IACH,QAAQ,GAAA;QACP,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAChC,YAAA,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAK,CAAC,EAAE;AAC9C,gBAAA,KAAK,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;aAClC;AACF,SAAC,CAAC,CAAC;KACH;+GA9VW,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EAJd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,QAAQ,CAAC,EAKP,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,kBAAkB,ECpDjC,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,4HAMA,EDwCW,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,+BAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAKnD,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EACX,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,EACrD,SAAA,EAAA,CAAC,QAAQ,CAAC,EAAA,QAAA,EAAA,4HAAA,EAAA,CAAA;+GAKa,eAAe,EAAA,CAAA;sBAAhD,YAAY;uBAAC,kBAAkB,CAAA;gBA4BhC,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,eAAe,CAAA;;;AE7CjB,MAAA,eAAe,GAAQ;AACnC,IAAA,SAAS,EAAE,gBAAgB;AAC3B,IAAA,WAAW,EAAE,kBAAkB;AAC/B,IAAA,MAAM,EAAE,aAAa;AACrB,IAAA,UAAU,EAAE,iBAAiB;AAC7B,IAAA,UAAU,EAAE,iBAAiB;AAC7B,IAAA,YAAY,EAAE,mBAAmB;AACjC,IAAA,WAAW,EAAE,kBAAkB;AAC/B,IAAA,KAAK,EAAE,YAAY;AACnB,IAAA,QAAQ,EAAE,eAAe;AACzB,IAAA,MAAM,EAAE,aAAa;AACrB,IAAA,KAAK,EAAE,YAAY;AACnB,IAAA,UAAU,EAAE,iBAAiB;AAC7B,IAAA,WAAW,EAAE,kBAAkB;;;ACjB1B,MAAO,oBAAqB,SAAQ,WAAW,CAAA;AAyEpD,IAAA,WAAA,GAAA;AACC,QAAA,KAAK,EAAE,CAAC;AAzET,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAChD,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAC/B,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACzB,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;;;AAG9E,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;YAChC,IAAI,CAAC,MAAM,EAAE;AACZ,gBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,KAAI;AAC3B,oBAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACnB,iBAAC,CAAC,CAAC;aACH;YACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,CAAC;AACjC,SAAC,CAAC,CAAC;AACH,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAM,EAAE,CAAC,CAAC;;QAE7B,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;AACd,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;QAClC,IAAU,CAAA,UAAA,GAAkB,EAAE,CAAC;QAC/B,IAAQ,CAAA,QAAA,GAAkB,EAAE,CAAC;QAI7B,IAAS,CAAA,SAAA,GAAG,MAAM,EAAE,CAAC;;QAErB,IAAU,CAAA,UAAA,GAAG,KAAK,EAAuB,CAAC;AAC1C,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAU,IAAI,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAU,IAAI,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AAC3B,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;QAClC,IAAQ,CAAA,QAAA,GAAG,KAAK,EAAY,CAAC;;AAE7B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;;AAEjC,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;;AAE/B,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAW,CAAA,WAAA,GAAG,MAAM,EAAE,CAAC;AACvB,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAM,EAAE,CAAC,CAAC;QAC5B,IAAW,CAAA,WAAA,GAAG,MAAM,EAAE,CAAC;QACvB,IAAI,CAAA,IAAA,GAAG,KAAK,EAAO,CAAC;QACpB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAChB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAQ,EAAE,CAAC,CAAC;AACzB,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;YAC9B,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACtC,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;gBACzB,WAAW,CAAC,IAAI,CAAC;AAChB,oBAAA,KAAK,EAAE,mBAAmB;AAC1B,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,IAAI,EAAE,CAAC;AACP,iBAAA,CAAC,CAAC;aACH;AACD,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;gBACzB,WAAW,CAAC,IAAI,CAAC;AAChB,oBAAA,KAAK,EAAE,mBAAmB;AAC1B,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,IAAI,EAAE,CAAC;AACP,iBAAA,CAAC,CAAC;aACH;AACD,YAAA,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9D,SAAC,CAAC,CAAC;AAEH,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AACtB,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AACjC,SAAC,CAAC,CAAC;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AACvB,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;AAC9B,SAAC,CAAC,CAAC;AACH,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;QACvC,IAAc,CAAA,cAAA,GAAG,EAAE,CAAC;QAGnB,MAAM,CACL,MAAK;YACJ,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC;AAClC,YAAA,IAAI,IAAI,EAAE,GAAG,EAAE;gBACd,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAC1D,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC;aAC/B;AACD,YAAA,IAAI,IAAI,EAAE,KAAK,EAAE;AAChB,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aAC1B;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;AACvC,YAAA,IAAI,MAAM,GAAG,CAAC,EAAE;AACf,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE;AAChC,qBAAA,GAAG,CAAC,CAAC,CAAM,KAAI;AACf,oBAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AAClB,oBAAA,OAAO,CAAC,CAAC;AACV,iBAAC,CAAC;AACD,qBAAA,MAAM,CAAC,CAAC,CAAc,EAAE,KAAa,KAAK,KAAK,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBACrE,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;aAC7E;AACF,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;KACF;AAED,IAAA,MAAM,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,WAAW,GAAI,KAAK,CAAC,MAAiB,CAAC,UAAU,CAAC;AACtD,QAAA,IAAI,WAAW,GAAG,GAAG,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACpB;aAAM;AACN,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACrB;KACD;IACD,QAAQ,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC;KACtD;IAED,KAAK,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;AAC1B,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE;gBAAE,OAAO;AAChC,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAI;AAClD,gBAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC7C,aAAC,CAAC,CAAC;SACH;aAAM;AACN,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAI;AACzD,gBAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC5C,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACxD,aAAC,CAAC,CAAC;SACH;KACD;IAED,QAAQ,GAAA;QACP,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;QACrC,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACxC,IAAI,IAAI,EAAE;YACT,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;SACjC;aAAM;AACN,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACxB;KACD;IAED,UAAU,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KACtB;AAED,IAAA,IAAI,CAAC,IAAS,EAAA;QACb,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;KACjC;AAED,IAAA,MAAM,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACtB;AAED,IAAA,YAAY,CAAC,KAAU,EAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,OAAO;QAC3B,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACzC;AAED,IAAA,OAAO,CAAC,IAAS,EAAA;AAChB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC3B,YAAA,IAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,UAAU,EAAC;gBAC1D,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAG,EAAE,CAAC;aACpC;iBAAM;AACN,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;aAC3C;SACD;AAAM,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SAC3C;aAAM;AACN,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE;AACzE,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aACnB;SACD;KACD;AAED,IAAA,QAAQ,CAAC,IAAS,EAAA;AACjB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5B;AAED,IAAA,SAAS,CAAC,KAAU,EAAA;QACnB,IAAI,IAAI,CAAC,MAAM,EAAE;YAAE,OAAO;QAC1B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACvC;IACD,YAAY,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,GAAG,WAAW,CAAC;KAC9C;IAED,WAAW,GAAA;QACV,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAClC;+GAxLW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,IAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,IAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BjC,48PAqLM,ED3JK,MAAA,EAAA,CAAA,80MAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,+aAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAInD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;+BACC,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,CAAC,EAAA,QAAA,EAAA,48PAAA,EAAA,MAAA,EAAA,CAAA,80MAAA,CAAA,EAAA,CAAA;wDAyB/C,EAAE,EAAA,CAAA;sBAAlB,SAAS;uBAAC,IAAI,CAAA;gBACM,MAAM,EAAA,CAAA;sBAA1B,SAAS;uBAAC,QAAQ,CAAA;gBACC,KAAK,EAAA,CAAA;sBAAxB,SAAS;uBAAC,OAAO,CAAA;gBAyC8B,iBAAiB,EAAA,CAAA;sBAAhE,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;gBAqC9C,MAAM,EAAA,CAAA;sBADL,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MEhH7B,cAAc,CAAA;AAG1B,IAAA,WAAA,CAAoB,MAAqB,EAAA;QAArB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACxC,MAAM,CAAC,MAAK;YACX,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;AACnC,SAAC,CAAC,CAAC;KACH;+GAPW,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClB3B,ohBAeA,EAAA,MAAA,EAAA,CAAA,kCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDDW,YAAY,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIV,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EACZ,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,ohBAAA,EAAA,MAAA,EAAA,CAAA,kCAAA,CAAA,EAAA,CAAA;;;MECX,gBAAgB,CAAA;AAO5B,IAAA,WAAA,CAAoB,OAA4B,EAAA;QAA5B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAqB;QANhD,IAAI,CAAA,IAAA,GAAG,KAAK,EAAiB,CAAC;QAC9B,IAAO,CAAA,OAAA,GAAG,KAAK,EAAS,CAAC;AACzB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,IAAI,CAAC,CAAC;QAChC,IAAS,CAAA,SAAA,GAAG,KAAK,EAAU,CAAC;QAC5B,IAAY,CAAA,YAAA,GAAU,EAAE,CAAC;AACxB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;QAE1B,MAAM,CAAC,MAAK;YACX,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,EAAG,CAAC;AAClD,SAAC,CAAC,CAAC;KACH;AAED,IAAA,QAAQ,CAAC,MAAW,EAAA;AACnB,QAAA,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE;AACzB,YAAA,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC;SACjH;AACD,QAAA,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAClD,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;AACpF,cAAE,QAAQ;cACR,OAAO,CAAC;KACX;IAED,cAAc,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,CAAC;KAC5B;IAED,QAAQ,CAAC,KAAU,EAAE,MAAW,EAAA;AAC/B,QAAA,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;KACzH;IAED,aAAa,CAAC,KAAU,EAAE,MAAW,EAAA;AACpC,QAAA,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE;AACzB,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;gBACpB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC;gBAC/C,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;AACxC,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,iBAAiB,EAAE;oBAClB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;AACtC,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,IAAI,EAAE,IAAI;AACV,iBAAA;AACD,gBAAA,iBAAiB,EAAE;oBAClB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;AACvC,oBAAA,QAAQ,EAAE,IAAI;AACd,iBAAA;gBACD,MAAM,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;AAC1C,aAAA,CAAC,CAAC;YACH,OAAO;SACP;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;KAC7B;+GAnDW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,8kBCf7B,66BAwBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDbW,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,KAAK,4TAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIhC,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;+BACC,gBAAgB,EAAA,UAAA,EACd,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,KAAK,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,66BAAA,EAAA,CAAA;;;MEGjC,aAAa,CAAA;AASzB,IAAA,WAAA,CAAoB,MAAqB,EAAA;QAArB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QANzC,IAAW,CAAA,WAAA,GAAG,KAAK,EAAe,CAAC;QACnC,IAAI,CAAA,IAAA,GAAG,KAAK,EAAiB,CAAC;QAC9B,IAAO,CAAA,OAAA,GAAG,KAAK,EAAS,CAAC;QACzB,IAAS,CAAA,SAAA,GAAG,KAAK,EAAU,CAAC;QAC5B,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QAGnB,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,CAAC,MAAM,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACrD,IAAI,CAAC,cAAc,EAAE,CAAC;AACvB,SAAC,CAAC,CAAC;KACH;IAED,cAAc,GAAA;QACb,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACnE,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAClE,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SACtE;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACtB,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SACrE;KACD;+GA1BW,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,2zBCd1B,+XAeA,EAAA,MAAA,EAAA,CAAA,6BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDLW,eAAe,EAAE,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,gHAAE,YAAY,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAI7C,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,SAAS;+BACC,aAAa,EAAA,UAAA,EACX,IAAI,EACP,OAAA,EAAA,CAAC,eAAe,EAAE,gBAAgB,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,+XAAA,EAAA,MAAA,EAAA,CAAA,6BAAA,CAAA,EAAA,CAAA;+EAKL,mBAAmB,EAAA,CAAA;sBAAvE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBACC,kBAAkB,EAAA,CAAA;sBAArE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,oBAAoB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;MEStC,eAAe,CAAA;IAc3B,WACS,CAAA,IAAgB,EAChB,MAAqB,EAAA;QADrB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAChB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;AAd9B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;QAChC,IAAQ,CAAA,QAAA,GAAG,KAAK,EAAU,CAAC;QAC3B,IAAQ,CAAA,QAAA,GAAG,KAAK,EAAU,CAAC;AAC3B,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;QACnC,IAAQ,CAAA,QAAA,GAAG,KAAK,EAAU,CAAC;AAC3B,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAA,IAAA,GAAG,KAAK,EAAiB,CAAC;QAC9B,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAC1B,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC5C,IAAK,CAAA,KAAA,GAAU,EAAE,CAAC;QAOjB,MAAM,CACL,MAAK;YACJ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;AACvC,YAAA,IAAI,MAAM,EAAE,IAAI,KAAK,QAAQ,EAAE;gBAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACvB;AACF,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;KACF;IAED,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;KACjC;IAED,SAAS,GAAA;AACR,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAE,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;KAC5B;IAED,MAAM,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACxB;IAED,QAAQ,GAAA;QACP,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,IAAI,GAAG,SAAS,EAAE;cACpB,eAAe,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,OAAO;AAC7C,cAAE,CAAI,CAAA,EAAA,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;QACjF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC;AAC1C,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KAChC;AAED,IAAA,MAAM,CAAC,IAAS,EAAA;AACf,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAE,CAAC,IAAI,EAAE,CAAC;AAC1E,QAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;AAChC,QAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAQ,CAAC,CAAC;AAC9C,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACtB,YAAA,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;SAC7D;QACD,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAC/C,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AACrD,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,QAAQ,EAAE,QAAQ,EAAE;AAC1E,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,eAAe,EAAE,KAAK;AACtB,SAAA,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AACvC,YAAA,IAAI,EAAE,CAAC,KAAqB,KAAI;AAC/B,gBAAA,IAAI,KAAK,YAAY,YAAY,EAAE;AAClC,oBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,oBAAA,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC;AACvB,oBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AACxB,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;iBACxB;aACD;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACd,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,gBAAA,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC;AACvB,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AACxB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aACxB;AACD,SAAA,CAAC,CAAC;KACH;+GAtFW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAChB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,UAAU,EC1BtB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,mzDAyDA,mLDpCW,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,aAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAU,EAAE,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,+BAAA,EAAA,8BAAA,EAAA,+BAAA,EAAA,8BAAA,EAAA,+BAAA,EAAA,gCAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,cAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,srCAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAI9E,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EACV,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,mzDAAA,EAAA,MAAA,EAAA,CAAA,4HAAA,CAAA,EAAA,CAAA;0GAKpE,UAAU,EAAA,CAAA;sBAAhC,SAAS;uBAAC,UAAU,CAAA;;;MEbT,YAAY,CAAA;AAMxB,IAAA,WAAA,CAAoB,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AALtC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAiB,EAAE,CAAC,CAAC;QACjC,IAAU,CAAA,UAAA,GAAU,EAAE,CAAC;QACvB,IAAE,CAAA,EAAA,GAAG,KAAK,EAAO,CAAC;QAClB,IAAO,CAAA,OAAA,GAAU,EAAE,CAAC;QAGnB,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;gBACjB,OAAO;aACP;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAC3B,gBAAA,MAAM,SAAS,GAAQ,EAAE,GAAG,GAAG,EAAE,CAAC;gBAClC,SAAS,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAC9D,gBAAA,SAAS,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAC1F,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACjC,aAAC,CAAC,CAAC;AACJ,SAAC,CAAC,CAAC;KACH;AAED,IAAA,oBAAoB,CAAC,GAAW,EAAA;AAC/B,QAAA,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KACtB;+GAvBW,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAFb,CAAC,QAAQ,CAAC,0BCXtB,quCAiCA,EAAA,MAAA,EAAA,CAAA,4TAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDzBW,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAKpB,YAAY,EAAA,UAAA,EAAA,CAAA;kBARxB,SAAS;+BACC,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAA,SAAA,EAGtB,CAAC,QAAQ,CAAC,EAAA,QAAA,EAAA,quCAAA,EAAA,MAAA,EAAA,CAAA,4TAAA,CAAA,EAAA,CAAA;;;MEGT,kBAAkB,CAAA;IAY7B,WAAmB,CAAA,MAAc,EAAQ,KAAqB,EAAA;QAA3C,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAAQ,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAX9D,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAgB,EAAE,CAAC,CAAA;AACvC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;AACzB,aAAA,IAAI,CACH,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,EAC/CU,KAAG,CAAC,CAAC,KAAK,KAAI;;AAEZ,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;SACrE,CAAC,CACH,CAAA;QACH,IAAU,CAAA,UAAA,GAAG,EAAE,CAAA;AACf,QAAA,IAAA,CAAA,IAAI,GAAE,MAAM,CAAC,WAAW,CAAC,CAAA;;;;;;;;;;;KAaxB;AAKO,IAAA,iBAAiB,CAAC,KAA6B,EAAE,MAAc,EAAE,EAAE,cAAqB,EAAE,EAAA;AAChG,QAAA,MAAM,QAAQ,GAA6B,KAAK,CAAC,QAAQ,CAAC;AAC1D,QAAA,IAAG,QAAQ,CAAC,MAAM,IAAI,CAAC;YAAE,OAAM;AAC/B,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,QAAQ,GAAW,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1E,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAK,EAAE,CAAA;AACvD,QAAA,IAAI,QAAQ,KAAK,EAAE,EAAE;AACnB,YAAA,GAAG,IAAI,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE,CAAC;SACvB;AACD,QAAA,IAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAC;YACtB,GAAG,IAAE,GAAG,CAAA;AACR,YAAA,SAAS,CAAC,OAAO,CAAC,CAAC,IAAG;gBACpB,GAAG,IAAE,CAAG,EAAA,CAAC,CAAI,CAAA,EAAA,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA,CAAE,CAAA;AACrC,aAAC,CAAC,CAAA;SACH;QACD,IAAI,KAAK,GAAW,EAAE,CAAC;AACvB,QAAA,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACvB,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,UAAU,EAAE;gBAC7C,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC;aACpC;iBAAM;AACL,gBAAA,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;aAC5B;SACF;QACD,IAAI,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAA;;AAEhE,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,GAAG,GAAG,CAAA;AAChI,QAAA,MAAM,IAAI,GAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;;AAErC,QAAA,IAAG,MAAM,CAAC,SAAS,EAAC;AAClB,YAAA,OAAO,GAAG,OAAO,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,GAAG,SAAS,IAAI,CAAA,CAAE,GAAE,OAAO,CAAA;SACjE;QACD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;;AAE5C,QAAA,IAAG,KAAK,IAAI,UAAU,EAAC;AACrB,YAAA,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,CAAA;;AAEvE,YAAA,IAAG,MAAM,CAAC,MAAM,IAAI,CAAC,EAAC;gBACpB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,KAAK,EAAC,EAAC,KAAK,EAAC,GAAG,EAAC,UAAU,EAAC,OAAO,EAAC,CAAC,CAAC,CAAA;aAC9E;iBAAM;AACL,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;aAClB;SACF;;QAED,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;KACxD;AACD,IAAA,cAAc,CAAC,IAAiB,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,KAAK,EAAC,IAAI,CAAC,CAAC,CAAA;KACpD;AAED,IAAA,OAAO,CAAC,GAAU,EAAA;AAChB,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAA;QAC3D,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAA;AACtC,QAAA,IAAG,KAAK,GAAG,CAAC,KAAK,MAAM,EAAC;AACtB,YAAA,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAC,KAAK,CAAC,CAAA;AAClD,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;SACjC;KACF;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAA;KACzB;;AAED,IAAA,KAAK,CAAC,IAAY,EAAA;AAChB,QAAA,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;QAC/C,IAAI,UAAU,GAAO,EAAE,CAAA;QACvB,IAAG,IAAI,EAAE;AACP,YAAA,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAA;SAC5D;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;KACjC;;AAGD,IAAA,SAAS,CAAC,GAAU,EAAA;AAClB,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAA;AAC9D,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;KACjC;;AAGD,IAAA,YAAY,CAAC,KAAY,EAAA;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,EAAiB,CAAA;QACpD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,KAAK,EAAC,EAAC,GAAG,IAAI,EAAC,KAAK,EAAC,CAAC,CAAC,CAAC,CAAA;QAChE,OAAO,CAAC,GAAG,CAAC,YAAY,EAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;;KAG7C;+GAjHU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAb,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cADP,MAAM,EAAA,CAAA,CAAA,EAAA;;4FACjB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAC,UAAU,EAAC,MAAM,EAAC,CAAA;;;MCMlB,cAAc,CAAA;IA+B1B,QAAQ,GAAA;QACP,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,YAAY,EAAE,CAAC;KACpB;AAED,IAAA,WAAA,CAAoB,QAAmB,EAAA;QAAnB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AAlCvC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAU,IAAI,CAAC,CAAC;AACzC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAqB,SAAS,CAAC,CAAC;AAC7C,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC5B,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,SAAS;AAAE,gBAAA,OAAO,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAG,CAAC,CAAC;AACjC,YAAA,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAChD,YAAA,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YAC3C,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3E,SAAC,CAAC,CAAC;AACH,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAA+B,EAAE,CAAC,CAAC;AACzD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAS,CAAC,CAAC,CAAC;AAC3B,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3B,IAAM,CAAA,MAAA,GAAG,MAAM,EAAU,CAAC;AAC1B,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAU,IAAI,CAAC,CAAC;QAE/B,IAAS,CAAA,SAAA,GAAa,EAAE,CAAC;QACzB,IAAkB,CAAA,kBAAA,GAAG,EAAE,CAAC;QACxB,IAAgB,CAAA,gBAAA,GAAG,EAAE,CAAC;QACtB,IAAgB,CAAA,gBAAA,GAAG,CAAC,CAAC;QAErB,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;QACf,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC;QACb,IAAU,CAAA,UAAA,GAAW,EAAE,CAAC;QACxB,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;QACtB,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC;QASZ,MAAM,CACL,MAAK;AACJ,YAAA,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAC7B,YAAA,IAAI,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAG,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7C,IAAI,CAAC,YAAY,EAAE,CAAC;aACpB;AACF,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;QACF,MAAM,CACL,MAAK;YACJ,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,YAAY,EAAE,CAAC;AACrB,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;AACF,QAAA,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YAC3D,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO;YAChC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,CAAC,WAAW,EAAE,CAAC;AACtB,SAAC,CAAC,CAAC;KACH;IAED,SAAS,GAAA;QACR,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,YAAY,EAAE,CAAC;KACpB;IAED,YAAY,GAAA;QACX,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;KACnB;IAED,aAAa,GAAA;AACZ,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAChG,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;gBACjD,SAAS;aACT;AACD,YAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;gBACjD,SAAS;aACT;AACD,YAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;gBAC/C,SAAS;aACT;YACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC;SAC5E;KACD;IAED,YAAY,GAAA;AACX,QAAA,IAAI,MAAM,CAAC,UAAU,GAAG,GAAG,EAAE;YAC5B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;YACzC,OAAO;SACP;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YACrB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;YACzC,OAAO;SACP;QACD,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,GAAG,MAAM,CAAC,UAAU,GAAG,GAAG,GAAG,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC;AACjG,QAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,GAAG,IAAI,CAAC;KACnC;IAED,cAAc,CAAC,KAAU,EAAE,OAAY,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC;YAAE,OAAO;AACjC,QAAA,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACtB;IAED,YAAY,CAAC,KAAU,EAAE,KAAU,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC;YAAE,OAAO;AACjC,QAAA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACpB;IAED,QAAQ,CAAC,CAAS,EAAE,OAAiB,EAAA;QACpC,IAAI,MAAM,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;AACrE,QAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AAC5C,YAAA,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;SAClC;aAAM;AACN,YAAA,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;SAC1C;QACD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,YAAY,EAAG,CAAC,CAAC,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE;AACX,YAAA,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC1B;aAAM,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE;AAChD,YAAA,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACzB;AACD,QAAA,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAC5B,YAAA,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;;SAE3B;AACD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACxB;AAED,IAAA,YAAY,CAAC,IAAS,EAAA;QACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;AAED,IAAA,kBAAkB,CAAC,KAAU,EAAA;AAC5B,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;AAED,IAAA,gBAAgB,CAAC,KAAU,EAAA;AAC1B,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;IAED,kBAAkB,GAAA;QACjB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAG,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACvE,QAAA,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AAEtB,QAAA,IAAI,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AAC1B,QAAA,IAAI,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC;QAC3B,IAAI,IAAI,GAAG,OAAO,CAAC;QACnB,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAEvC,QAAA,OAAO,SAAS,IAAI,CAAC,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AAC5D,YAAA,IAAI,IAAI,KAAK,OAAO,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AAC3D,gBAAA,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACzC,gBAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE;oBACtC,MAAM;iBACN;AACD,gBAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC3B,gBAAA,UAAU,EAAE,CAAC;gBACb,IAAI,GAAG,MAAM,CAAC;aACd;iBAAM,IAAI,IAAI,KAAK,MAAM,IAAI,SAAS,IAAI,CAAC,EAAE;AAC7C,gBAAA,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACxC,gBAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE;oBACtC,MAAM;iBACN;AACD,gBAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,gBAAA,SAAS,EAAE,CAAC;gBACZ,IAAI,GAAG,OAAO,CAAC;aACf;iBAAM;AACN,gBAAA,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;aAC7D;SACD;KACD;AAED,IAAA,gBAAgB,CAAC,UAAkB,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC9B,YAAA,OAAO,KAAK,CAAC;SACb;AACD,QAAA,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAClE,UAAU,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACtF,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AACrE,QAAA,OAAO,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC;KACnC;IAED,WAAW,GAAA;AACV,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAG,CAAC;QAC5B,MAAM,aAAa,GAAU,EAAE,CAAC;AAChC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE;gBACxB,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;aACnC;AACD,YAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;gBACtB,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;aACnC;SACD;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE;AACxB,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SAClD;aAAM;AACN,YAAA,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC5B;QACD,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;SAC/C;aAAM;AACN,YAAA,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC1B;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;KACtC;+GArNW,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,ijCCnB3B,qjEA+DA,EAAA,MAAA,EAAA,CAAA,4gDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDhDW,WAAW,EAAE,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,glCAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIjC,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;+BACC,cAAc,EAAA,UAAA,EACZ,IAAI,EACP,OAAA,EAAA,CAAC,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,qjEAAA,EAAA,MAAA,EAAA,CAAA,4gDAAA,CAAA,EAAA,CAAA;8EAKH,YAAY,EAAA,CAAA;sBAAtD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBA8BzC,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MEpC7B,oBAAoB,CAAA;AAqB/B,IAAA,WAAA,GAAA;AAjBA,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAQ,EAAE,CAAC,CAAA;AACxB,QAAA,IAAA,CAAA,QAAQ,GAAQ,QAAQ,CAAC,MAAK;YAC5B,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAK,EAAC,KAAS,KAAK,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;AAC3E,SAAC,CAAC,CAAA;AACF,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;AACvB,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACxB,YAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,mBAAmB,GAAG,iBAAiB,CAAA;AAClE,SAAC,CAAC,CAAA;AACF,QAAA,IAAA,CAAA,QAAQ,GAAO,QAAQ,CAAC,MAAK;YAC3B,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;YAChD,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAK,EAAC,KAAS,KAAK,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;AAC5E,SAAC,CAAC,CAAA;QACF,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAA;AAChB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;AAC5B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAS,EAAE,CAAC,CAAA;QAC9B,IAAU,CAAA,UAAA,GAAQ,EAAE,CAAA;QACpB,IAAS,CAAA,SAAA,GAAG,MAAM,EAAE,CAAA;QAElB,MAAM,CAAC,MAAK;YACV,IAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAE,CAAC,EAAC;gBACxB,IAAI,CAAC,SAAS,EAAE,CAAA;gBAChB,IAAI,CAAC,aAAa,EAAE,CAAA;aACrB;AACH,SAAC,EAAC,EAAC,iBAAiB,EAAC,IAAI,EAAC,CAAC,CAAA;KAC5B;IACD,eAAe,GAAA;QACb,IAAI,CAAC,SAAS,EAAE,CAAA;QAChB,IAAI,CAAC,aAAa,EAAE,CAAA;KACrB;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,EAAE,CAAA;KACrB;IAED,aAAa,GAAA;QACX,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,WAAW,CAAC;QACnE,IAAI,YAAY,GAAG,CAAC,CAAC;AACrB,QAAA,MAAM,QAAQ,GAAG,cAAc,GAAG,EAAE,CAAA;AACpC,QAAA,KAAI,IAAI,CAAC,GAAE,CAAC,EAAC,CAAC,GAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAC,CAAC,EAAE,EAAC;AACzC,YAAA,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;YAClC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAC,YAAY,EAAC,QAAQ,CAAC,CAAA;AACjD,YAAA,IAAG,YAAY,GAAG,QAAQ,EAAC;AACzB,gBAAA,OAAO,CAAC,GAAG,CAAC,OAAO,EAAC,CAAC,CAAC,CAAA;AACtB,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACrB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;gBACpB,OAAM;aACP;iBAAM;gBACL,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA;AACvB,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;aACtB;SACF;KACF;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAChG,QAAA,KAAI,IAAI,CAAC,GAAE,CAAC,EAAC,CAAC,GAAE,QAAQ,CAAC,MAAM,EAAC,CAAC,EAAE,EAAC;AAClC,YAAA,IAAI,EAAE,GAAO,QAAQ,CAAC,CAAC,CAAC,CAAA;YACxB,IAAG,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,IAAE,MAAM,EAAC;gBAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAA;aACrC;SACF;QACD,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAC,IAAI,CAAC,UAAU,CAAC,CAAA;KAC/C;AACD,IAAA,UAAU,CAAC,KAAS,EAAA;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AACxB,QAAA,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACvB;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;KACxB;AAED,IAAA,QAAQ,CAAC,GAAO,EAAA;AACd,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;KACzB;+GA/EU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,kjBCbjC,ioIA4FA,EAAA,MAAA,EAAA,CAAA,u0BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDnFY,aAAa,EAAC,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAU,2VAAC,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIxC,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EACP,OAAA,EAAA,CAAC,aAAa,EAAC,UAAU,EAAC,gBAAgB,CAAC,EAAA,QAAA,EAAA,ioIAAA,EAAA,MAAA,EAAA,CAAA,u0BAAA,CAAA,EAAA,CAAA;wDAKT,YAAY,EAAA,CAAA;sBAAtD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAChB,OAAO,EAAA,CAAA;sBAA/B,YAAY;uBAAC,SAAS,CAAA;gBACF,EAAE,EAAA,CAAA;sBAAtB,SAAS;uBAAC,QAAQ,CAAA;gBA+BnB,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AEQrC,MAAO,iBAAkB,SAAQ,WAAW,CAAA;IA4CjD,QAAQ,GAAA;AACP,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;KAClE;AACD,IAAA,WAAA,GAAA;AACC,QAAA,KAAK,EAAE,CAAC;AA5CT,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;YACvB,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC;AAC1D,SAAC,CAAC,CAAC;QACH,IAAU,CAAA,UAAA,GAAG,KAAK,EAAW,CAAC;AAC9B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAQ,EAAE,CAAC,CAAC;AAC5B,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAc,EAAE,CAAC,CAAC;AACvC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAM,EAAE,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC5B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAgB,EAAE,CAAC,CAAC;QACvC,IAAQ,CAAA,QAAA,GAAG,KAAK,EAAU,CAAC;AAC3B,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAkB,EAAE,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAmB,OAAO,CAAC,CAAC;QAChD,IAAY,CAAA,YAAA,GAAG,KAAK,EAAY,CAAC;QACjC,IAAU,CAAA,UAAA,GAAG,KAAK,EAAO,CAAC;QAC1B,IAAU,CAAA,UAAA,GAAG,KAAK,EAAO,CAAC;QAC1B,IAAQ,CAAA,QAAA,GAAG,KAAK,EAAO,CAAC;QACxB,IAAa,CAAA,aAAA,GAAG,KAAK,EAAO,CAAC;AAE7B,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAChD,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;QACf,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QAGhB,IAAU,CAAA,UAAA,GAAU,EAAE,CAAC;QACvB,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;QACb,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;AACZ,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAK,CAAA,KAAA,GAAU,EAAE,CAAC;AAClB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;QAC/B,IAAY,CAAA,YAAA,GAAQ,EAAE,CAAC;QACvB,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;QACvB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAa,CAAA,aAAA,GAAU,EAAE,CAAC;QAC1B,IAAY,CAAA,YAAA,GAAU,EAAE,CAAC;QAEzB,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC;AAQnB,QAAA,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG;aACpC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC;aAC9B,IAAI,CAAC,GAAG,CAAC;AACT,aAAA,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,KAAK,CAAC;QACnC,MAAM,CACL,MAAK;YACJ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,SAAU,CAAC;YAC/C,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;AACxC,YAAA,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;AACtC,YAAA,IAAI,IAAI,CAAC,EAAE,EAAE;gBACZ,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,UAAU,EAAE,EAAE,UAAU,CAAC,CAAC;gBAClD,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;aACvF;iBAAM;AACN,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;gBACtB,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAC7B,oBAAA,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,EAAE;wBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;qBACpC;AACF,iBAAC,CAAC,CAAC;aACH;AACF,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;QAEF,MAAM,CAAC,MAAK;YACX,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;AACvC,SAAC,CAAC,CAAC;QACH,MAAM,CACL,MAAK;AACJ,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC9B,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;QACF,MAAM,CACL,MAAK;AACJ,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;gBAC9C,IAAI,CAAC,SAAS,CAAC,OAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC3E,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE;AACxD,oBAAA,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAClD,iBAAA,CAAC,CAAC;aACH;AACF,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;QACF,MAAM,CACL,MAAK;AACJ,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE;gBACzB,IAAI,CAAC,WAAW,EAAE,CAAC;aACnB;AACF,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC3B,CAAC;KACF;IACD,QAAQ,GAAA;QACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,EAAE,CAAA;KACf;IAED,eAAe,GAAA;QACd,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AAClC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,UAAU,CAAC,MAAK;AACf,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;aACzB,EAAE,GAAG,CAAC,CAAA;AACR,SAAC,CAAC,CAAC;KACH;IAGD,UAAU,GAAA;;QAET,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC7B,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;oBACrB,OAAO,GAAG,KAAK,CAAC;iBAChB;AACF,aAAC,CAAC,CAAC;SACH;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,OAAO,EAAE;AACrC,YAAA,IAAI,EAAE,GAAQ,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,YAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SAC5G;KACD;AAED,IAAA,OAAO,CAAC,CAAM,EAAA;QACb,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACjD,QAAA,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AACtC,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC;AAE/C,QAAA,IAAI,GAAG,GAAG;AACT,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,GAAG,EAAE,CAAC;SACN,CAAC;QACF,IAAI,CAAC,UAAU,EAAE;YAChB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;gBACtC,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AACvF,gBAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAC,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,CAAA;AACrD,aAAC,CAAC,CAAC;SACH;aAAM;AACN,YAAA,UAAU,EAAE,CAAC,SAAS,CAAC,MAAK;gBAC3B,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AACvF,gBAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAC,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,CAAA;AACrD,aAAC,CAAC,CAAC;SACH;KACD;AACD,IAAA,IAAI,CAAC,GAAS,EAAA;AACb,QAAA,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE;YAChB,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;SACvF;aAAM;YACN,UAAU,CAAC,MAAK;gBACf,IAAI,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,EAAG,GAAG,CAAC,EAAE,CAAA,CAAE,CAAC;gBACzC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;aAChC,EAAE,IAAI,CAAC,CAAC;SACT;QACD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;KACtB;;AAED,IAAA,IAAI,CAAC,CAAM,EAAA;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC;AACjD,QAAA,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YACjB,IAAI,UAAU,GAAG,EAAE,CAAC;AACpB,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACrB,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU;AAC7B,qBAAA,GAAG,CAAC,IAAI,CAAC,UAAU,CAAE;AACrB,qBAAA,OAAO,EAAE;qBACT,GAAG,CAAC,gBAAgB,EAAE;qBACtB,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,gBAAA,OAAO,CAAC,GAAG,CAAC,cAAc,EAAC,OAAO,CAAC,CAAA;AACpC,gBAAA,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,IAAI,CAAC,WAAY,CAAC,CAAC,CAAC;aACjE;AACD,YAAA,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAC,UAAU,CAAE,CAAA;AAC1C,YAAA,CAAC,CAAC,OAAO,CAAC,CAAC,IAAS,KAAI;gBACvB,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;AACpE,gBAAA,IAAI,IAAI,CAAC,WAAW,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,WAAY,CAAC,IAAI,EAAE,CAAC,EAAE;oBAC1E,OAAO;iBACP;AACD,gBAAA,IAAI,CAAC,UAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACjC;AACD,QAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,CAAC,UAAU,EAAC,CAAC,CAAA;KAC/D;AAED,IAAA,gBAAgB,CAAC,CAAM,EAAA;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,KAAK,GAAQ,EAAE,CAAC;AACpB,QAAA,CAAC,CAAC,OAAO,CAAC,CAAC,IAAS,KAAI;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;AACvE,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClB,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAC9D,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU;AAC7B,iBAAA,GAAG,CAAC,IAAI,CAAC,UAAU,CAAE;AACrB,iBAAA,OAAO,EAAE;iBACT,GAAG,CAAC,gBAAgB,EAAE;iBACtB,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACvF,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,CAAC;AAC5E,YAAA,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;YAExD,MAAM,WAAW,GAAQ,EAAE,CAAC;AAC5B,YAAA,IAAI,CAAC,UAAU;AACb,iBAAA,GAAG,CAAC,IAAI,CAAC,UAAU,CAAE;AACrB,iBAAA,OAAO,EAAE;AACT,iBAAA,GAAG,CAAC,WAAW,CAAC,CAAC,IAAS,KAAI;gBAC9B,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACvC,IAAI,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC;AAC1E,gBAAA,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE;AAChB,oBAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC5B;AACF,aAAC,CAAC,CAAC;;;;AAIJ,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAE,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;;SAErE;KACD;IACD,SAAS,GAAA;AACR,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AAC3C,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACpB,SAAC,CAAC,CAAC;KACH;;AAED,IAAA,QAAQ,CAAC,GAAQ,EAAA;AAChB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,OAAO,IAAI,CAAC,YAAY,EAAE,IAAI,UAAU,EAAE;YAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;SACnB;QACD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;YAClC,IAAI,CAAC,YAAY,EAAE,CAAC;SACpB;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAC7B,YAAA,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,EAAE;AACrB,gBAAA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;aACvD;AACF,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;YACjC,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;gBAC/E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;aACxC;AACF,SAAC,CAAC,CAAC;KACH;IACD,YAAY,GAAA;QACX,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,IAAS,KAAI;AACpC,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,OAAO,IAAI,CAAC,WAAW,IAAI,QAAQ,EAAE;gBAC9E,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAM,KAAI;AACjD,oBAAA,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,UAAU,EAAE;AAClC,wBAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;qBACpC;AACF,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;oBACxD,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC;AAChC,iBAAC,CAAC,CAAC;aACH;AACF,SAAC,CAAC,CAAC;KACH;AACD,IAAA,WAAW,CAAC,GAAQ,EAAA;QACnB,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC;AACtC,QAAA,IAAI,KAAK,GAAG,GAAG,CAAC,SAAU,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;KAC5C;IACD,cAAc,GAAA;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,eAAe,CAAE,CAAC;AACxE,QAAA,IAAK,IAAI,CAAC,aAAqB,EAAE,SAAS,EAAE;AAC3C,YAAA,IAAI,SAAS,GAAG,SAAS,CAAE,IAAI,CAAC,aAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;YACtE,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAM,KAAI;AAC3C,gBAAA,IAAI,OAAO,CAAC,CAAC,KAAK,IAAI,UAAU,EAAE;oBACjC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;iBAChE;AACF,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;SACjC;QACD,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;AAC9D,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE;AACrC,YAAA,IAAI,CAAC,aAAa,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACjD,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;AACpE,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC;YAC3D,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,MAAM,EAAE;AAC/C,gBAAA,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG;AACjC,oBAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,QAAQ,GAAG,WAAW,GAAG,UAAU;oBAC7E,eAAe,EAAE,eAAe,GAAG,eAAe,GAAG,SAAS;iBAC9D,CAAC;aACF;iBAAM;AACN,gBAAA,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,SAAS,CAAC;aAC5C;SACD;;AAED,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU;AAC7B,iBAAA,GAAG,CAAC,IAAI,CAAC,UAAU,CAAE;AACrB,iBAAA,OAAO,EAAE;iBACT,GAAG,CAAC,gBAAgB,EAAE;iBACtB,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,CAAC,aAAa,GAAG,OAAO,EAAE,GAAG,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,IAAI,CAAC,WAAY,CAAC,CAAC,IAAI,EAAE,CAAC;;YAEhF,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,IAAI,QAAQ,EAAE;gBACvD,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,GAAG,CAAC,MAAM,KAAI;oBACvD,IAAI,IAAI,GACP,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,EAAE;0BAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAQ,CAAC,CAAC;0BACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpE,oBAAA,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE;AACpB,wBAAA,OAAO,KAAK,CAAC;qBACb;AACD,oBAAA,OAAO,IAAI,CAAC;AACb,iBAAC,CAAC;aACF;AAAM,iBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;AAC5C,gBAAA,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG;AACjC,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,UAAU,EAAE,CAAC,MAAM,KAAI;wBACtB,IAAI,IAAI,GACP,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,EAAE;8BAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAQ,CAAC,CAAC;8BACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpE,wBAAA,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE;AACpB,4BAAA,OAAO,KAAK,CAAC;yBACb;AACD,wBAAA,OAAO,IAAI,CAAC;qBACZ;iBACD,CAAC;aACF;SACD;aAAM;AACN,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;SACxB;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACpB;AAED,IAAA,KAAK,CAAC,IAAS,EAAA;AACd,QAAA,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,UAAU,EAAE;AACnC,YAAA,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SAC5B;aAAM;AACN,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;SAClF;KACD;AAED,IAAA,SAAS,CAAC,GAAQ,EAAA;AACjB,QAAA,IAAI,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;YAClC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC9B;KACD;IACD,YAAY,CAAC,KAAU,EAAE,WAA2B,EAAA;AACnD,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO;YAAE,OAAO;AAC/D,QAAA,IAAI,IAAI,CAAC,EAAE,EAAE;AACZ,YAAA,IAAI,KAAK,GAAQ;gBAChB,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,gBAAA,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,KAAK,EAAE;aAChD,CAAC;AACF,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;gBACf,KAAK,CAAC,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC,SAAS,KAAK,CAAC;gBACxC,KAAK,CAAC,GAAG,GAAG;oBACX,GAAG,EAAE,IAAI,CAAC,EAAE;AACZ,oBAAA,OAAO,EAAE,CAAA,KAAA,EAAQ,IAAI,CAAC,MAAM,CAAC,IAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA,IAAA,EAAO,KAAK,CAAE,CAAA;iBAClE,CAAC;aACF;YACD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;gBACvC,IAAI,CAAC,SAAS,EAAE,CAAC;AAClB,aAAC,CAAC,CAAC;SACH;aAAM;AACN,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE;AACxD,gBAAA,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,KAAK;AACzB,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,SAAS,CAAC,OAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,KAAK,CAAC;AAClD,YAAA,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;;SAE7D;KACD;IAED,WAAW,GAAA;AACV,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,EAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClD,QAAA,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE;AAC9B,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACvB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SACzB;AACD,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC7B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC9B,gBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;aAC3B;YACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC9B,gBAAA,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;AAC5B,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;aAC7B;SACD;KACD;AACD,IAAA,WAAW,CAAC,OAAgB,EAAA;QAC3B,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KAAI;YACtC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAM,KAAI;AAC3B,gBAAA,IAAI,aAAa,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC;gBACjE,IAAI,OAAO,EAAE;oBACZ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,YAAa,CAAC,cAAc,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;oBAC/E,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,YAAa,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;iBACxE;qBAAM;oBACN,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,YAAa,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;iBACzF;AACF,aAAC,CAAC,CAAC;AACJ,SAAC,CAAC,CAAC;KACH;AACD,IAAA,aAAa,CAAC,QAAiB,EAAA;QAC9B,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAU,KAAI;AACzC,YAAA,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,EAAE;gBACrB,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAS,KAAI;oBAC9C,IAAI,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;AAChD,wBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;qBACtB;;oBAED,IAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAC;AACvG,wBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;qBACpB;AACF,iBAAC,CAAC,CAAC;gBACH,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;aAChG;AAAM,iBAAA,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,EAAE;gBAC5B,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAS,KAAI;oBAC/B,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAM,KAAI;AAC9B,wBAAA,IAAI,aAAa,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC;wBACjE,IAAI,QAAQ,EAAE;4BACb,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,YAAa,CAAC,cAAc,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;4BAC7F,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,YAAa,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;yBACtF;6BAAM;4BACN,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,YAAa,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;yBACzF;AACF,qBAAC,CAAC,CAAC;AACJ,iBAAC,CAAC,CAAC;aACH;AACF,SAAC,CAAC,CAAC;KACH;IACD,WAAW,GAAA;QACV,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAU,KAAI;AACzC,YAAA,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,EAAE;gBACrB,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAS,KAAI;oBAC/B,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAM,KAAI;wBAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,YAAa,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACvF,qBAAC,CAAC,CAAC;AACJ,iBAAC,CAAC,CAAC;aACH;AACF,SAAC,CAAC,CAAC;KACH;IACD,QAAQ,GAAA;QACP,UAAU,CAAC,MAAK;YACf,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAE,CAAC,eAAe,EAAE,CAAC;SAC1F,EAAE,CAAC,CAAC,CAAC;KACN;IACD,SAAS,GAAA;QACR,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC;KACvE;+GAldW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAFlB,EAAE,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpDd,wjMAoKA,EAAA,MAAA,EAAA,CAAA,0iBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED9HE,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,EACb,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,YAAY,+EACZ,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,QAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,WAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,cAAc,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,aAAa,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACVS,sBAAoB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,aAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,eAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACpB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAMT,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBApB7B,SAAS;+BACC,eAAe,EAAA,UAAA,EACb,IAAI,EACP,OAAA,EAAA;wBACR,YAAY;wBACZ,mBAAmB;wBACnB,aAAa;wBACb,YAAY;wBACZ,oBAAoB;wBACpB,cAAc;wBACd,aAAa;wBACb,UAAU;wBACVA,sBAAoB;wBACpB,aAAa;wBACb,oBAAoB;AACpB,qBAAA,EAAA,SAAA,EAGU,EAAE,EAAA,QAAA,EAAA,wjMAAA,EAAA,MAAA,EAAA,CAAA,0iBAAA,CAAA,EAAA,CAAA;wDAGO,KAAK,EAAA,CAAA;sBAAxB,SAAS;uBAAC,OAAO,CAAA;gBACU,UAAU,EAAA,CAAA;sBAArC,YAAY;uBAAC,YAAY,CAAA;gBACD,OAAO,EAAA,CAAA;sBAA/B,YAAY;uBAAC,SAAS,CAAA;gBAyCvB,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,eAAe,CAAA;;;AEjFxB,MAAO,qBAAsB,SAAQ,WAAW,CAAA;AAOrD,IAAA,WAAA,GAAA;AACC,QAAA,KAAK,EAAE,CAAC;QANT,IAAM,CAAA,MAAA,GAAG,KAAK,EAAO,CAAC;AACtB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAQ,EAAE,CAAC,CAAC;AAC3B,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAQ,EAAE,CAAC,CAAC;QACzB,IAAW,CAAA,WAAA,GAAG,KAAK,EAAe,CAAC;AACnC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,CAAC,CAAC,CAAC,CAAC;AAG7B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QAEpB,MAAM,CAAC,MAAK;YACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,EAAG,CAAC,SAAU,CAAC;YAChD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAG,CAAC,cAAc,EAAE;AACxC,gBAAA,IAAI,CAAC,WAAW,EAAG,CAAC,cAAc,GAAG,EAAE,CAAC;aACxC;AACD,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACtC,SAAC,CAAC,CAAC;KACH;IAED,YAAY,GAAA;AACX,QAAA,MAAM,SAAS,GAAW;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,YAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ;AAChC,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,KAAK,EAAE,IAAI,CAAC,WAAW,EAAG,CAAC,cAAc;YACzC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC7C,YAAA,KAAK,EAAE,IAAI;SACX,CAAC;QACF,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE;YAC5C,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC;SAChE;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;YACpC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;SAChD;AACD,QAAA,OAAO,SAAS,CAAC;KACjB;+GArCW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBlC,glDA6CA,EAAA,MAAA,EAAA,CAAA,gIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDlCW,aAAa,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,QAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,WAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FAKjF,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAClB,IAAI,EAAA,OAAA,EACP,CAAC,aAAa,EAAE,oBAAoB,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,CAAC,EAG/E,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,glDAAA,EAAA,MAAA,EAAA,CAAA,gIAAA,CAAA,EAAA,CAAA;wDAGZ,UAAU,EAAA,CAAA;sBAAlC,SAAS;uBAAC,YAAY,CAAA;;;MENX,gBAAgB,CAAA;AAK5B,IAAA,WAAA,CAAoB,cAA8B,EAAA;QAA9B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAJlD,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AACvB,YAAA,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC;AACzE,YAAA,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;AACzC,SAAC,CAAC,CAAC;KACmD;+GAL1C,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX7B,4RAUA,EAAA,MAAA,EAAA,CAAA,odAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDHW,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAInB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EACd,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,qBAAqB,CAAC,EAAA,QAAA,EAAA,4RAAA,EAAA,MAAA,EAAA,CAAA,odAAA,CAAA,EAAA,CAAA;;;AEIjC,MAAM,OAAO,GAAG;IACd,IAAI;CACL,CAAA;MA+EY,yBAAyB,CAAA;AA9DtC,IAAA,WAAA,GAAA;AA+DE,QAAA,IAAA,CAAA,MAAM,GAAY,MAAM,CAAC,OAAO,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,aAAa,GAAuB,MAAM,CAAC,kBAAkB,CAAC,CAAA;AAC9D,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAEjC,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;YACjC,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAG,CAAC,OAAO,CAAC;AAClD,SAAC,CAAC,CAAC;AACH,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAA;;YAEpD,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;AAChD,YAAA,MAAM,MAAM,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YACjK,MAAM,QAAQ,GAAsB,EAAE,CAAC;AAEvC,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;gBACrB,QAAQ,CAAC,IAAI,CAAC;AACV,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC;AAChC,iBAAA,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,QAAQ,CAAC;AAElB,SAAC,CAAC,CAAC;AA4DJ,KAAA;IA1DC,YAAY,GAAA;QACV,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QACvF,OAAO;AACL,YAAA,QAAQ,EAAE;gBACR,OAAO,EAAE,KAAM,CAAC,OAAO;AACvB,gBAAA,WAAW,EAAE;AACX,oBAAA,KAAK,EAAE;AACH,wBAAA,OAAO,EAAE;AACL,4BAAA,KAAK,EAAE,eAAe;AACtB,4BAAA,aAAa,EAAE,SAAS;AACxB,4BAAA,UAAU,EAAE,eAAe;AAC3B,4BAAA,WAAW,EAAE,eAAe;AAC/B,yBAAA;AACD,wBAAA,SAAS,EAAE;AACP,4BAAA,UAAU,EAAE,cAAc;AAC1B,4BAAA,eAAe,EAAE,eAAe;AAChC,4BAAA,KAAK,EAAE,eAAe;AACtB,4BAAA,UAAU,EAAE,eAAe;AAC9B,yBAAA;AACJ,qBAAA;AACD,oBAAA,IAAI,EAAE;AACF,wBAAA,OAAO,EAAE;AACL,4BAAA,KAAK,EAAE,eAAe;AACtB,4BAAA,aAAa,EAAE,eAAe;AAC9B,4BAAA,UAAU,EAAE,eAAe;AAC3B,4BAAA,WAAW,EAAE,eAAe;AAC/B,yBAAA;AACD,wBAAA,SAAS,EAAE;AACP,4BAAA,UAAU,EAAE,oDAAoD;AAChE,4BAAA,eAAe,EAAE,oDAAoD;AACrE,4BAAA,KAAK,EAAE,uBAAuB;AAC9B,4BAAA,UAAU,EAAE,uBAAuB;AACtC,yBAAA;AACJ,qBAAA;AACF,iBAAA;AACF,aAAA;SACF,CAAC;KACH;AAED,IAAA,YAAY,CAAC,KAAU,EAAE,IAAY,EAAE,KAAU,EAAA;AAC/C,QAAA,IAAI,IAAI,KAAK,SAAS,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;SACtF;AAAM,aAAA,IAAI,IAAI,KAAK,SAAS,EAAE;YAC3B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;SACtF;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAE7B,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;IAED,UAAU,CAAC,IAAY,EAAE,KAAU,EAAA;AACjC,QAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACpB,YAAA,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;SACrC;AAAM,aAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AAC3B,YAAA,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SACvC;KACF;+GAjFU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EA1D1B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;AAmBP,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,mjBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EApBO,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,EAAG,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BAAE,iBAAiB,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FA2D1D,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBA9DrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EACtB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,WAAW,EAAG,YAAY,EAAE,iBAAiB,CAAC,EAC5D,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;KAmBP,EACG,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE,qBAAqB;AAC7B,qBAAA,EAAA,MAAA,EAAA,CAAA,mjBAAA,CAAA,EAAA,CAAA;;;ACrDH;MAgDa,oBAAoB,CAAA;AAE/B,IAAA,WAAA,GAAA;KACC;+GAHU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EA3CtB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;KAcN,EAfM,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+TAAA,EAAA,8GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,8TAAC,yBAAyB,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FA4CxC,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBA/ChC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EACR,OAAA,EAAA,CAAC,gBAAgB,EAAC,yBAAyB,CAAC,EAC3C,QAAA,EAAA,CAAA;;;;;;;;;;;;;;AAcN,IAAA,CAAA,EAAA,MAAA,EAAA,CAAA,+TAAA,EAAA,8GAAA,CAAA,EAAA,CAAA;;;ACtBL;;AAEG;AAuEH;AAEA;;AC3EA;;AAEG;;;;"}