@c8y/ngx-components 1022.28.2 → 1022.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/asset-properties/asset-properties.model.d.ts +12 -3
- package/asset-properties/asset-properties.model.d.ts.map +1 -1
- package/asset-properties/asset-properties.service.d.ts +20 -2
- package/asset-properties/asset-properties.service.d.ts.map +1 -1
- package/asset-properties/asset-property-list/asset-property-icon-tooltip.pipe.d.ts +14 -0
- package/asset-properties/asset-property-list/asset-property-icon-tooltip.pipe.d.ts.map +1 -0
- package/asset-properties/asset-property-list/asset-property-icon.pipe.d.ts.map +1 -1
- package/asset-properties/asset-property-list/asset-property-list.component.d.ts +28 -18
- package/asset-properties/asset-property-list/asset-property-list.component.d.ts.map +1 -1
- package/asset-properties/asset-property-selector-drawer/asset-property-selector-drawer.component.d.ts +2 -2
- package/asset-properties/asset-property-selector-drawer/asset-property-selector-drawer.component.d.ts.map +1 -1
- package/asset-properties/custom-properties-drawer/custom-properties-drawer.component.d.ts +97 -0
- package/asset-properties/custom-properties-drawer/custom-properties-drawer.component.d.ts.map +1 -0
- package/asset-properties/custom-properties-drawer.service.d.ts +12 -0
- package/asset-properties/custom-properties-drawer.service.d.ts.map +1 -0
- package/asset-properties/index.d.ts +1 -0
- package/asset-properties/index.d.ts.map +1 -1
- package/context-dashboard/dashboard-detail.service.d.ts +2 -2
- package/context-dashboard/widget-config-hook/widget-config-hook.model.d.ts +2 -1
- package/context-dashboard/widget-config-hook/widget-config-hook.model.d.ts.map +1 -1
- package/context-dashboard/widget-config.component.d.ts +3 -1
- package/context-dashboard/widget-config.component.d.ts.map +1 -1
- package/context-dashboard/widget-config.service.d.ts +14 -8
- package/context-dashboard/widget-config.service.d.ts.map +1 -1
- package/core/dynamic-component/dynamic-component.model.d.ts +26 -0
- package/core/dynamic-component/dynamic-component.model.d.ts.map +1 -1
- package/core/i18n/pattern-messages.data.d.ts +7 -0
- package/core/i18n/pattern-messages.data.d.ts.map +1 -1
- package/core/index.d.ts +1 -0
- package/core/index.d.ts.map +1 -1
- package/core/query-param-handler/query-param-handler.service.d.ts +1 -1
- package/core/query-param-handler/query-param-handler.service.d.ts.map +1 -1
- package/core/query-param-handler/query-param-modal-handler.service.d.ts +16 -5
- package/core/query-param-handler/query-param-modal-handler.service.d.ts.map +1 -1
- package/core/resizable-grid/index.d.ts +2 -0
- package/core/resizable-grid/index.d.ts.map +1 -0
- package/core/resizable-grid/resizable-grid.component.d.ts +114 -0
- package/core/resizable-grid/resizable-grid.component.d.ts.map +1 -0
- package/dashboard-manager/devicemanagement/c8y-ngx-components-dashboard-manager-devicemanagement.d.ts.map +1 -0
- package/dashboard-manager/devicemanagement/index.d.ts +2 -0
- package/dashboard-manager/devicemanagement/index.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -1
- package/fesm2022/c8y-ngx-components-actility-device-registration.mjs +16 -16
- package/fesm2022/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-advanced-software-management.mjs +7 -7
- package/fesm2022/c8y-ngx-components-advanced-software-management.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +34 -34
- package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +4 -4
- package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarms.mjs +73 -73
- package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-api.mjs +7 -7
- package/fesm2022/c8y-ngx-components-api.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-app-logs.mjs +10 -10
- package/fesm2022/c8y-ngx-components-app-logs.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-asset-properties.mjs +427 -66
- package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -1
- package/fesm2022/{c8y-ngx-components-asset-property-grid.component-WUN1r4fC.mjs → c8y-ngx-components-asset-property-grid.component-CRnyUbyz.mjs} +13 -13
- package/fesm2022/{c8y-ngx-components-asset-property-grid.component-WUN1r4fC.mjs.map → c8y-ngx-components-asset-property-grid.component-CRnyUbyz.mjs.map} +1 -1
- package/fesm2022/c8y-ngx-components-assets-navigator.mjs +32 -32
- package/fesm2022/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs +114 -114
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-binary-file-download.mjs +7 -7
- package/fesm2022/c8y-ngx-components-binary-file-download.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-bookmarks.mjs +13 -13
- package/fesm2022/c8y-ngx-components-bookmarks.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-base-branding.mjs +4 -4
- package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs +7 -7
- package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs +7 -7
- package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs +3 -3
- package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs +7 -7
- package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +15 -15
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs +6 -6
- package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +33 -33
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared.mjs +10 -10
- package/fesm2022/c8y-ngx-components-branding-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-child-devices.mjs +13 -13
- package/fesm2022/c8y-ngx-components-child-devices.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-cockpit-config.mjs +40 -40
- package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-connectivity.mjs +53 -53
- package/fesm2022/c8y-ngx-components-connectivity.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs +10 -10
- package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs +7 -7
- package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs +11 -11
- package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs.map +1 -1
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C-JLbcn5.mjs → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BWyhab0H.mjs} +4 -4
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C-JLbcn5.mjs.map → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BWyhab0H.mjs.map} +1 -1
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RXvOcs04.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DjlpSztw.mjs} +10 -10
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RXvOcs04.mjs.map → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DjlpSztw.mjs.map} +1 -1
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-DmPIJGXO.mjs → c8y-ngx-components-context-dashboard-dashboard-version-history.component-B2zLhv0X.mjs} +4 -4
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-DmPIJGXO.mjs.map → c8y-ngx-components-context-dashboard-dashboard-version-history.component-B2zLhv0X.mjs.map} +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs +10 -10
- package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs +7 -7
- package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs +133 -116
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-DtLAOoFx.mjs → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-CwfVxTSx.mjs} +16 -16
- package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-DtLAOoFx.mjs.map → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-CwfVxTSx.mjs.map} +1 -1
- package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs +12 -12
- package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs +19 -0
- package/fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +22 -22
- package/fesm2022/c8y-ngx-components-dashboard-manager.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-data-broker.mjs +7 -7
- package/fesm2022/c8y-ngx-components-data-broker.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs +3 -3
- package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-data-grid-columns.mjs +3 -3
- package/fesm2022/c8y-ngx-components-data-grid-columns.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +24 -24
- package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +7 -7
- package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +3 -3
- package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +3 -3
- package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs +3 -3
- package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-library.mjs +4 -4
- package/fesm2022/c8y-ngx-components-datapoint-library.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +40 -40
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +41 -40
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +16 -16
- package/fesm2022/c8y-ngx-components-default-subscriptions.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-grid.mjs +43 -43
- package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-list.mjs +22 -22
- package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-map.mjs +12 -12
- package/fesm2022/c8y-ngx-components-device-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-profile.mjs +34 -34
- package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs +3 -3
- package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-protocols.mjs +16 -16
- package/fesm2022/c8y-ngx-components-device-protocols.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +13 -13
- package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-shell.mjs +31 -31
- package/fesm2022/c8y-ngx-components-device-shell.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-diagnostics.mjs +13 -13
- package/fesm2022/c8y-ngx-components-diagnostics.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-echart-models.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-echart.mjs +27 -27
- package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +43 -43
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +7 -7
- package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +10 -10
- package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs +7 -7
- package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +46 -46
- package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem.mjs +82 -82
- package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-editor.mjs +6 -6
- package/fesm2022/c8y-ngx-components-editor.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-events-events-timeline.mjs +3 -3
- package/fesm2022/c8y-ngx-components-events-events-timeline.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-events.mjs +3 -3
- package/fesm2022/c8y-ngx-components-events.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-exports-list.mjs +6 -6
- package/fesm2022/c8y-ngx-components-exports-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-exports.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-file-preview.mjs +7 -7
- package/fesm2022/c8y-ngx-components-file-preview.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-files-repository.mjs +19 -19
- package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons-arrows.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons-city.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons-data.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons-dateAndTime.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons-devicesAndSensors.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons-ecommerce.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons-editing.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons-filesAndFolders.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons-finance.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons-hands.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons-location.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons-messaging.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons-multimedia.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons-network.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons-office.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons-people.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons-platform.mjs +1 -0
- package/fesm2022/c8y-ngx-components-icon-selector-icons-platform.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons-programming.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons-security.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons-transport.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons-userInterface.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons-weather.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-model.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector.mjs +19 -19
- package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-interval-picker.mjs +3 -3
- package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-location.mjs +28 -28
- package/fesm2022/c8y-ngx-components-location.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +16 -16
- package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-map.mjs +19 -19
- package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-messaging-management.mjs +55 -55
- package/fesm2022/c8y-ngx-components-messaging-management.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +19 -19
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +10 -10
- package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-device-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs +12 -12
- package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-operation-details.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-operation-details.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +10 -10
- package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +12 -12
- package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-product-experience.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-shared.mjs +10 -10
- package/fesm2022/c8y-ngx-components-operations-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-status-filter.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-status-filter.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-pending-mo-request.mjs +7 -7
- package/fesm2022/c8y-ngx-components-pending-mo-request.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-platform-configuration.mjs +10 -10
- package/fesm2022/c8y-ngx-components-platform-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +38 -38
- package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-protocol-opcua-mappings.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +58 -58
- package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-register-device.mjs +58 -58
- package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +9 -9
- package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-data.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-data.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +6 -6
- package/fesm2022/c8y-ngx-components-remote-access-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +6 -6
- package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs +6 -6
- package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-replace-device.mjs +13 -29
- package/fesm2022/c8y-ngx-components-replace-device.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-report-dashboard.mjs +16 -16
- package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-reports.mjs +19 -19
- package/fesm2022/c8y-ngx-components-reports.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-configuration.mjs +48 -48
- package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-firmware.mjs +33 -33
- package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-shared.mjs +34 -34
- package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-software.mjs +42 -42
- package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository.mjs +4 -4
- package/fesm2022/c8y-ngx-components-repository.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-search.mjs +19 -19
- package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs +33 -27
- package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sensor-phone.mjs +17 -320
- package/fesm2022/c8y-ngx-components-sensor-phone.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs +3 -3
- package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-services-shared.mjs +3 -3
- package/fesm2022/c8y-ngx-components-services-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-services.mjs +29 -29
- package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +16 -16
- package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sms-gateway.mjs +7 -7
- package/fesm2022/c8y-ngx-components-sms-gateway.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-static-assets-data.mjs +3 -3
- package/fesm2022/c8y-ngx-components-static-assets-data.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-static-assets-modal.mjs +3 -3
- package/fesm2022/c8y-ngx-components-static-assets-modal.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-static-assets.mjs +6 -6
- package/fesm2022/c8y-ngx-components-static-assets.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sub-assets.mjs +60 -60
- package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-tenants.mjs +40 -40
- package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-time-context.mjs +6 -6
- package/fesm2022/c8y-ngx-components-time-context.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-tracking.mjs +12 -12
- package/fesm2022/c8y-ngx-components-tracking.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +3 -3
- package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +12 -12
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-translation-editor.mjs +6 -6
- package/fesm2022/c8y-ngx-components-translation-editor.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +33 -33
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs +4 -4
- package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-upgrade.mjs +41 -41
- package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-user-roles.mjs +10 -10
- package/fesm2022/c8y-ngx-components-user-roles.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs +4 -4
- package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-applications.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-legacy-welcome.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-welcome.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-help-and-service.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +18 -14
- package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs +4 -2
- package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs +4 -2
- package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-quick-links.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-device-management.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +22 -22
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +6 -6
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +50 -36
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +7 -7
- package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +22 -22
- package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +9 -9
- package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +18 -18
- package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs +6 -6
- package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +6 -6
- package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +9 -9
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs +9 -9
- package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs +18 -18
- package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs +9 -9
- package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-import-export-config.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets.mjs +4 -4
- package/fesm2022/c8y-ngx-components-widgets.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +1658 -1315
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/icon-selector/icons/index.d.ts +1 -1
- package/icon-selector/icons/platform/index.d.ts +2 -2
- package/icon-selector/icons/platform/index.d.ts.map +1 -1
- package/locales/de.po +26 -3
- package/locales/es.po +26 -3
- package/locales/fr.po +26 -3
- package/locales/ja_JP.po +25 -3
- package/locales/ko.po +26 -3
- package/locales/locales.pot +25 -2
- package/locales/nl.po +26 -3
- package/locales/pl.po +26 -3
- package/locales/pt_BR.po +26 -3
- package/locales/zh_CN.po +26 -3
- package/locales/zh_TW.po +26 -3
- package/package.json +1 -1
- package/replace-device/replace-device.module.d.ts.map +1 -1
- package/sensor-phone/sensor-phone-modal/sensor-phone-modal.component.d.ts +6 -6
- package/sensor-phone/sensor-phone-modal/sensor-phone-modal.component.d.ts.map +1 -1
- package/sensor-phone/sensor-phone-modal/sensor-phone.model.d.ts +0 -1
- package/sensor-phone/sensor-phone-modal/sensor-phone.model.d.ts.map +1 -1
- package/sensor-phone/sensor-phone.module.d.ts +2 -3
- package/sensor-phone/sensor-phone.module.d.ts.map +1 -1
- package/widgets/definitions/datapoints-table/index.d.ts +1 -2
- package/widgets/definitions/datapoints-table/index.d.ts.map +1 -1
- package/widgets/definitions/html-widget/html-widget-config.factory.d.ts +1 -1
- package/widgets/definitions/html-widget/html-widget-config.factory.d.ts.map +1 -1
- package/widgets/definitions/image/index.d.ts +1 -1
- package/widgets/definitions/image/index.d.ts.map +1 -1
- package/widgets/definitions/markdown/index.d.ts +1 -1
- package/widgets/definitions/markdown/index.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -1
- package/widgets/implementations/three-d-rotation/three-d-rotation-widget-view/three-d-rotation-widget-view.component.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-repository-shared.mjs","sources":["../../repository/shared/columns/description.grid-column.ts","../../repository/shared/columns/device-type.cell-renderer.component.ts","../../repository/shared/columns/device-type.cell-renderer.component.html","../../repository/shared/columns/device-type.grid-column.ts","../../repository/shared/repository.model.ts","../../repository/shared/repository.service.ts","../../repository/shared/columns/file.cell-renderer.component.ts","../../repository/shared/columns/file.cell-renderer.component.html","../../repository/shared/columns/file.grid-column.ts","../../repository/shared/columns/name.cell-renderer.component.ts","../../repository/shared/columns/name.grid-column.ts","../../repository/shared/columns/type.cell-renderer.component.ts","../../repository/shared/columns/type.cell-renderer.component.html","../../repository/shared/columns/type.filtering-form-renderer.component.ts","../../repository/shared/columns/type.filtering-form-renderer.component.html","../../repository/shared/columns/type.grid-column.ts","../../repository/shared/columns/versions.cell-renderer.component.ts","../../repository/shared/columns/versions.cell-renderer.component.html","../../repository/shared/columns/versions.grid-column.ts","../../repository/shared/file-download/link-render-type.enum.ts","../../repository/shared/file-download/file-download.component.ts","../../repository/shared/file-download/file-download.component.html","../../repository/shared/select-modal/repository-select-modal.component.ts","../../repository/shared/select-modal/repository-select-modal.component.html","../../repository/shared/software-type/software-type.component.ts","../../repository/shared/software-type/software-type.component.html","../../repository/shared/shared-repository.module.ts","../../repository/shared/c8y-ngx-components-repository-shared.ts"],"sourcesContent":["import {\n BaseColumn,\n ColumnConfig,\n getBasicInputArrayFormFieldConfig,\n gettext\n} from '@c8y/ngx-components';\n\nexport class DescriptionGridColumn extends BaseColumn {\n constructor(initialColumnConfig?: ColumnConfig & { filterLabel?: string; placeholder?: string }) {\n super(initialColumnConfig);\n this.name = 'description';\n this.path = 'description';\n this.header = gettext('Description');\n\n this.filterable = true;\n this.filteringConfig = {\n fields: getBasicInputArrayFormFieldConfig({\n key: 'descriptions',\n label: initialColumnConfig?.filterLabel ?? gettext('Filter items by description'),\n addText: gettext('Add next`description`'),\n tooltip: gettext('Use * as a wildcard character'),\n placeholder: initialColumnConfig?.placeholder ?? gettext('Description…')\n }),\n getFilter(model: any): any {\n const filter: any = {};\n if (model.descriptions.length) {\n filter.description = { __in: model.descriptions };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: this.path }]\n };\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { CellRendererContext, CommonModule } from '@c8y/ngx-components';\nimport { DeviceGridModule } from '@c8y/ngx-components/device-grid';\nimport { get } from 'lodash-es';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\n\n@Component({\n templateUrl: './device-type.cell-renderer.component.html',\n selector: 'c8y-device-type-cell-renderer',\n standalone: true,\n imports: [CommonModule, DeviceGridModule, TooltipModule, RouterModule]\n})\nexport class DeviceTypeCellRendererComponent implements OnInit {\n deviceType: string;\n\n constructor(public context: CellRendererContext) {}\n\n ngOnInit(): void {\n this.deviceType = get(this.context?.item, this.context?.property?.path);\n }\n}\n","<span *ngIf=\"deviceType; else emptyText\">\n {{ deviceType }}\n</span>\n<ng-template #emptyText>\n <small class=\"text-muted\">\n <em translate>Undefined`device type`</em>\n </small>\n</ng-template>\n","import {\n BaseColumn,\n ColumnConfig,\n getBasicInputArrayFormFieldConfig,\n gettext\n} from '@c8y/ngx-components';\nimport { DeviceTypeCellRendererComponent } from './device-type.cell-renderer.component';\n\nexport class DeviceTypeGridColumn extends BaseColumn {\n constructor(\n initialColumnConfig?: ColumnConfig & {\n filterLabel?: string;\n placeholder?: string;\n path?: string;\n }\n ) {\n super(initialColumnConfig);\n this.name = 'deviceType';\n this.path = initialColumnConfig?.path ?? 'c8y_Filter.type';\n this.header = gettext('Device type');\n this.cellRendererComponent = DeviceTypeCellRendererComponent;\n\n this.filterable = true;\n\n this.filteringConfig = {\n fields: [\n ...getBasicInputArrayFormFieldConfig({\n key: 'types',\n label: initialColumnConfig?.filterLabel ?? gettext('Filter items by device type'),\n addText: gettext('Add next`type`'),\n tooltip: gettext('Use * as a wildcard character'),\n placeholder: initialColumnConfig?.placeholder ?? 'c8y_Linux',\n optional: true\n }),\n {\n key: 'noDeviceType',\n type: 'switch',\n templateOptions: {\n label: gettext('No device type')\n }\n }\n ],\n getFilter(model: any): any {\n const filter: any = { __or: {} };\n if (model.types?.length) {\n filter.__or = {\n 'c8y_Filter.type': { __in: model.types }\n };\n }\n if (model.noDeviceType) {\n filter.__or = {\n ...filter.__or,\n __or: {\n __not: { __has: 'c8y_Filter.type' },\n 'c8y_Filter.type': ''\n }\n };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: this.path }]\n };\n }\n}\n","import { IManagedObject } from '@c8y/client';\nimport { SupportedIconsSuggestions } from '@c8y/ngx-components/icon-selector/icons';\n\nexport enum RepositoryType {\n FIRMWARE = 'c8y_Firmware',\n SOFTWARE = 'c8y_Software',\n CONFIGURATION = 'c8y_ConfigurationDump',\n PROFILE = 'c8y_Profile'\n}\n\nexport const REPOSITORY_BINARY_TYPES = {\n [RepositoryType.SOFTWARE]: 'c8y_SoftwareBinary',\n [RepositoryType.FIRMWARE]: 'c8y_FirmwareBinary',\n [RepositoryType.CONFIGURATION]: 'c8y_ConfigurationDumpBinary'\n};\n\nexport interface ModalModel {\n selected?: { id?: string; name?: string; [key: string]: any };\n version?: string;\n dependency?: { c8y_Firmware: { version: string } };\n patchVersion?: string;\n description?: string;\n deviceType?: string;\n softwareType?;\n configurationType?: string;\n binary?: {\n file?: File;\n url?: string;\n };\n c8y_Global?;\n}\n\nexport interface RepositoryCategory extends Partial<IManagedObject> {\n type: string;\n description?: string;\n c8y_Filter?: {\n type: string;\n };\n softwareType?: string;\n}\n\nexport interface FirmwareBinary extends Partial<IManagedObject> {\n type: 'c8y_FirmwareBinary';\n c8y_Firmware: {\n version: string;\n url: string;\n };\n}\n\nexport interface FirmwarePatchBinary extends FirmwareBinary {\n c8y_Patch: {\n dependency: string;\n };\n}\n\nexport interface SoftwareBinary extends Partial<IManagedObject> {\n type: string;\n c8y_Software: {\n version: string;\n url: string;\n };\n}\n\nexport type RepositoryBinary = FirmwareBinary | SoftwareBinary | FirmwarePatchBinary;\n\nexport interface SelectedRepositoryBinary {\n id?: string;\n name: string;\n version: string;\n url: string;\n dependency?: string;\n c8y_Patch?: boolean;\n isPatch?: boolean;\n patchDependency?: string;\n softwareType?: string;\n}\n\nexport interface DeviceFirmware {\n version: string;\n url: string;\n name: string;\n}\n\nexport interface DeviceSoftware {\n name: string;\n version?: string;\n url: string;\n softwareType?: string;\n}\n\nexport interface DeviceSoftwareChange extends DeviceSoftware {\n action: 'install' | 'delete';\n}\n\nexport interface ConfigurationSnapshot {\n id?: string;\n time: string;\n name: string;\n binaryUrl?: string;\n binary?: any;\n binaryType?: any;\n deviceType?: string;\n configurationType?: string;\n description?: string;\n}\n\nexport interface SupportedConfigurationItem {\n name: string;\n deviceType?: string;\n configurationType?: string;\n isLegacy?: boolean;\n}\n\nexport interface DeviceConfigurationListEmptyState {\n icon?: SupportedIconsSuggestions;\n title?: string;\n text?: string;\n}\n\nexport enum DeviceConfigurationOperation {\n UPLOAD_CONFIG = 'c8y_UploadConfigFile',\n DOWNLOAD_CONFIG = 'c8y_DownloadConfigFile',\n CONFIG = 'c8y_Configuration',\n SEND_CONFIG = 'c8y_SendConfiguration'\n}\nexport interface FilterCriteria {\n name?: string;\n [key: string]: any;\n}\n\nexport const PRODUCT_EXPERIENCE_REPOSITORY_SHARED = {\n SOFTWARE: {\n EVENTS: {\n REPOSITORY: 'softwareRepository',\n DEVICE_TAB: 'deviceSoftware'\n },\n COMPONENTS: {\n ADD_SOFTWARE_MODAL: 'add-software-modal',\n DEVICE_SOFTWARE_CHANGES: 'device-software-changes',\n DEVICE_SOFTWARE_LIST: 'device-software-list'\n },\n ACTIONS: {\n APPLY_SOFTWARE_CHANGES: 'applySoftwareChanges',\n CLEAR_SOFTWARE_CHANGES: 'clearSoftwareChanges',\n OPEN_INSTALL_SOFTWARE: 'openInstallSoftwareModal',\n OPEN_UPDATE_SOFTWARE: 'openUpdateSoftwareModal',\n DELETE_SOFTWARE: 'deleteSoftware'\n },\n RESULTS: {\n ADD_SOFTWARE: 'addSoftware',\n ADD_SOFTWARE_VERSION: 'addSoftwareVersion',\n EDIT_SOFTWARE: 'editSoftware'\n }\n },\n FIRMWARE: {\n EVENTS: {\n REPOSITORY: 'firmwareRepository',\n DEVICE_TAB: 'deviceFirmware'\n },\n COMPONENTS: {\n ADD_FIRMWARE_MODAL: 'add-firmware-modal',\n ADD_FIRMWAR_PATCH_MODAL: 'add-firmware-patch-modal',\n FIRMWARE_DEVICE_TAB: 'firmware-device-tab',\n DEVICE_FIRMWARE_LIST: 'device-firmware-list'\n },\n ACTIONS: {\n OPEN_INSTALL_FIRMWARE_DIALOG: 'openInstallFirmwareDialog',\n OPEN_REPLACE_FIRMWARE_DIALOG: 'openReplaceFirmwareDialog',\n OPEN_INSTALL_FIRMWARE_PATCH_DIALOG: 'openInstallFirmwarePatchDialog'\n },\n RESULTS: {\n ADD_FIRMWARE: 'addFirmware',\n ADD_FIRMWARE_VERSION: 'addFirmwareVersion',\n ADD_FIRMWARE_PATCH: 'addFirmwarePatch',\n EDIT_FIRMWARE: 'editFirmware',\n CREATE_FIRMWARE_UPDATE_OPERATION: 'createFirmwareUpdateOperation'\n }\n },\n SHARED: {\n COMPONENTS: {\n REPOSITORY_SELECT_MODAL: 'repository-select-modal',\n SELECT_CONFIGURATION_MODAL: 'select-configuration-modal'\n }\n }\n} as const;\n","import { Injectable } from '@angular/core';\nimport {\n EventBinaryService,\n EventService,\n IdReference,\n IEvent,\n IFetchResponse,\n IIdentified,\n IManagedObject,\n IManagedObjectBinary,\n InventoryBinaryService,\n InventoryService,\n IOperation,\n IResult,\n IResultList,\n OperationService,\n OperationStatus,\n QueriesUtil\n} from '@c8y/client';\nimport {\n AlertService,\n gettext,\n GlobalConfigService,\n OperationRealtimeService,\n ServiceRegistry\n} from '@c8y/ngx-components';\nimport {\n map as _map,\n assign,\n cloneDeep,\n find,\n forEach,\n get,\n head,\n isNil,\n isString,\n isUndefined,\n omitBy,\n pick,\n remove,\n set\n} from 'lodash-es';\nimport { defer, from, merge, Observable, of, throwError } from 'rxjs';\nimport { filter, map, switchMap, take, takeWhile, withLatestFrom } from 'rxjs/operators';\nimport { IAdvancedSoftwareService } from './advanced-software-management.model';\nimport {\n ConfigurationSnapshot,\n DeviceFirmware,\n DeviceSoftware,\n DeviceSoftwareChange,\n FirmwareBinary,\n FirmwarePatchBinary,\n ModalModel,\n REPOSITORY_BINARY_TYPES,\n RepositoryBinary,\n RepositoryCategory,\n RepositoryType,\n SelectedRepositoryBinary,\n SoftwareBinary\n} from './repository.model';\n\n@Injectable()\nexport class RepositoryService {\n readonly dateFrom = new Date(0);\n readonly dateTo = new Date(Date.now() + 86400000); // 1 day in the future\n private queriesUtil: QueriesUtil;\n private advancedSoftwareService: IAdvancedSoftwareService | undefined;\n\n constructor(\n private inventory: InventoryService,\n private inventoryBinary: InventoryBinaryService,\n private operation: OperationService,\n private alert: AlertService,\n private event: EventService,\n private operationRealtime: OperationRealtimeService,\n private eventBinary: EventBinaryService,\n private serviceRegistry: ServiceRegistry,\n private globalConfigService: GlobalConfigService\n ) {\n this.queriesUtil = new QueriesUtil();\n this.advancedSoftwareService = head(this.serviceRegistry.get('asm'));\n }\n\n /**\n * Lists repository entries of given type.\n * @param type The type of repository entries to list.\n * @param options Extra listing options.\n */\n listRepositoryEntries(\n type: RepositoryType,\n options?: {\n /** Additional query. */\n query?: any;\n /** (deprecated - to be removed) Only include entries with matching partial names. */\n partialName?: string;\n /** Include entries with matching partial text in the specified properties. */\n partialTextFilter?: { partialText: string; properties: string[] };\n /** Exclude legacy entries. */\n skipLegacy?: boolean;\n /** Exclude default ordering. */\n skipDefaultOrder?: boolean;\n /** Other request params. */\n params?: any;\n }\n ) {\n const defaultOrder = [{ name: 1 }];\n const defaultFilters = { type };\n const legacyFilters = { __has: `url` };\n let filters = {};\n\n let fullQuery = (options && options.query) || {};\n if (!options || (options && !options.skipDefaultOrder)) {\n fullQuery = this.queriesUtil.addOrderbys(fullQuery, defaultOrder, 'prepend');\n }\n\n fullQuery = this.queriesUtil.addAndFilter(fullQuery, defaultFilters);\n\n if (options && options.partialTextFilter) {\n const { partialText, properties } = options.partialTextFilter;\n const orFilter = { __or: properties.map(property => ({ [property]: `*${partialText}*` })) };\n fullQuery = this.queriesUtil.addAndFilter(fullQuery, orFilter);\n }\n\n if (options && options.partialName) {\n // backwards compatibility if\n fullQuery = this.queriesUtil.addAndFilter(fullQuery, { name: `*${options.partialName}*` });\n }\n\n if (options && options.skipLegacy) {\n fullQuery = this.queriesUtil.addAndFilter(fullQuery, { __not: legacyFilters });\n }\n\n filters = {\n query: this.queriesUtil.buildQuery(fullQuery),\n pageSize: 50,\n withTotalPages: true,\n ...((options && options.params) || {})\n };\n return this.inventory.list(filters);\n }\n\n async create(modal: ModalModel, type: RepositoryType, mo: Partial<IManagedObject> = {}) {\n switch (type) {\n case RepositoryType.FIRMWARE:\n case RepositoryType.SOFTWARE:\n return this.createRepositoryObject(modal, type);\n\n case RepositoryType.CONFIGURATION:\n Object.assign(modal, {\n selected: {\n id: mo.id,\n name: modal.version\n },\n configurationType: modal.configurationType,\n name: modal.version\n });\n\n if (!modal.deviceType && mo.id) {\n modal.deviceType = null;\n }\n if (!modal.selected && mo.id) {\n modal.configurationType = null;\n }\n\n const repositoryObject = this.createRepositoryObject(modal, type);\n\n if (mo.url) {\n const newBinaryUrl = (await repositoryObject).url;\n this.removeOutdatedBinary(newBinaryUrl, mo.url);\n }\n\n return repositoryObject;\n }\n }\n\n async createRepositoryObject(\n modal: ModalModel,\n type: RepositoryType\n ): Promise<RepositoryCategory> {\n let binary: IManagedObjectBinary;\n let binaryURL: string;\n let repositoryEntry: RepositoryCategory;\n let repositoryBinary: FirmwareBinary | SoftwareBinary;\n const mos = [];\n const {\n selected: { id: selectedId },\n binary: { file, url }\n } = modal;\n try {\n const globalParam = await this.getGlobalFragment(type);\n\n if (file) {\n ({ data: binary } = await this.saveBinary(file, globalParam));\n ({ self: binaryURL } = binary);\n if (type === RepositoryType.CONFIGURATION) {\n modal.binary.url = binaryURL;\n }\n mos.push(binary);\n } else {\n binaryURL = url;\n }\n\n ({ data: repositoryEntry } = await this.createOrUpdateRepositoryEntry(\n { ...modal, ...globalParam },\n type\n ));\n if (isNil(selectedId)) {\n mos.push(repositoryEntry);\n }\n\n if (type !== RepositoryType.CONFIGURATION) {\n ({ data: repositoryBinary } = await this.createRepositoryBinary(\n { ...modal, ...globalParam },\n binaryURL,\n type,\n repositoryEntry\n ));\n mos.push(repositoryBinary);\n }\n\n if (file) {\n await this.linkBinary(repositoryBinary, binary, repositoryEntry);\n }\n\n return repositoryEntry;\n } catch (error) {\n this.cleanUp(mos);\n this.errorMsg();\n\n // Propagate error\n throw error;\n }\n }\n\n saveBinary(file: File, global: Partial<IManagedObject>): Promise<IResult<IManagedObjectBinary>> {\n return this.inventoryBinary.create(file, global);\n }\n\n async createOrUpdateRepositoryEntry(\n modal: ModalModel,\n type: RepositoryType\n ): Promise<IResult<RepositoryCategory>> {\n const {\n selected: { id, name },\n description,\n deviceType,\n c8y_Global,\n binary\n } = modal;\n\n const mo = {\n id,\n name,\n description,\n type,\n c8y_Global\n };\n\n if (deviceType && type !== RepositoryType.CONFIGURATION) {\n set(mo, 'c8y_Filter.type', deviceType);\n }\n\n if ((deviceType || id) && type === RepositoryType.CONFIGURATION) {\n set(mo, 'deviceType', deviceType);\n }\n\n if (modal.softwareType) {\n set(mo, 'softwareType', modal.softwareType.softwareType);\n }\n\n if ((modal.configurationType || id) && type === RepositoryType.CONFIGURATION) {\n set(mo, 'configurationType', modal.configurationType);\n }\n\n if (type === RepositoryType.CONFIGURATION) {\n set(mo, 'url', binary?.url);\n }\n\n return id\n ? (this.inventory.update(mo) as Promise<IResult<RepositoryCategory>>)\n : (this.inventory.create(mo) as Promise<IResult<RepositoryCategory>>);\n }\n\n createRepositoryBinary(\n modal: ModalModel,\n binaryURL: string,\n type: RepositoryType,\n parent: RepositoryCategory\n ): Promise<IResult<FirmwareBinary | SoftwareBinary | FirmwarePatchBinary>> {\n const mo = this.prepareRepositoryBinaryMO(modal, binaryURL, type);\n\n return this.inventory.childAdditionsCreate(mo, parent) as Promise<\n IResult<FirmwareBinary | SoftwareBinary | FirmwarePatchBinary>\n >;\n }\n\n prepareRepositoryBinaryMO(modal: ModalModel, binaryURL: string, type: RepositoryType) {\n const { version, patchVersion, dependency, c8y_Global } = modal;\n const result = {\n type: REPOSITORY_BINARY_TYPES[type],\n [type]: {\n url: binaryURL\n },\n c8y_Global\n };\n\n if (dependency) {\n set(result, [type, 'version'], patchVersion);\n assign(result, {\n c8y_Patch: {\n dependency: dependency.c8y_Firmware.version\n }\n });\n } else {\n set(result, [type, 'version'], version);\n }\n return result;\n }\n\n async linkBinary(\n repositoryBinary,\n binary: IManagedObjectBinary,\n repositoryEntry?: RepositoryCategory\n ) {\n if (repositoryBinary) {\n const { id: repositoryBinaryId } = repositoryBinary;\n if (binary) {\n const { id: binaryId } = binary;\n return this.inventory.childAdditionsAdd(binaryId, repositoryBinaryId);\n }\n } else return this.inventory.childAdditionsAdd(binary, repositoryEntry);\n }\n\n cleanUp(mosToDelete: IIdentified[]) {\n mosToDelete.forEach(mo => {\n const { c8y_IsBinary } = mo;\n isUndefined(c8y_IsBinary) ? this.delete(mo) : this.inventoryBinary.delete(mo);\n });\n }\n\n delete(entity: IIdentified): Promise<IResult<null>> {\n return this.inventory.delete(entity, { forceCascade: true });\n }\n\n errorMsg() {\n const msg = gettext('Failed to save');\n this.alert.danger(msg);\n }\n\n getBaseVersionsCount$(entry: IManagedObject): Observable<number> {\n if (this.isLegacyEntry(entry)) {\n return of(1);\n }\n return from(this.listBaseVersions(entry, { withTotalElements: true })).pipe(\n map(({ paging }) => paging.totalElements)\n );\n }\n\n getBaseVersionFromMO(mo: RepositoryBinary): string {\n return this.isPatch(mo) ? get(mo, 'c8y_Patch.dependency') : get(mo, 'c8y_Firmware.version');\n }\n\n isPatch(mo: RepositoryBinary): boolean {\n return !!get(mo, 'c8y_Patch.dependency');\n }\n\n getPatchVersionsCount$(entry: IManagedObject, baseVersion: FirmwareBinary): Observable<number> {\n if (this.isLegacyEntry(baseVersion)) {\n return of(0);\n }\n return from(this.listPatchVersions(entry, baseVersion, { withTotalElements: true })).pipe(\n map(({ paging }) => paging.totalElements)\n );\n }\n\n isLegacyEntry(entry: Partial<IManagedObject>): boolean {\n return Boolean(entry.url);\n }\n\n /**\n * Lists all versions (base and patch ones) of given top level entry.\n * Versions are ordered by creation time (assuming the earlier created, the older the version).\n * @param entry Top level repository entry.\n * @param params Additional query params.\n */\n listAllVersions(entry: Partial<IManagedObject>, params = {}) {\n if (this.isLegacyEntry(entry)) {\n return this.getBaseVersionResultListForLegacyEntry(entry);\n }\n\n const VERSION_FILTER_ORDER = {\n __filter: {},\n __orderby: [{ 'creationTime.date': -1 }]\n };\n return this.listChildren(entry, VERSION_FILTER_ORDER, params);\n }\n\n /**\n * Lists base versions of given top level entry.\n * Versions are ordered by creation time (assuming the earlier created, the older the version).\n * @param entry Top level repository entry.\n * @param params Additional query params.\n */\n listBaseVersions(entry: Partial<IManagedObject>, params = {}) {\n if (this.isLegacyEntry(entry)) {\n return this.getBaseVersionResultListForLegacyEntry(entry);\n }\n\n const NO_PATCH_FILTER_ORDER = {\n __filter: {\n __not: { __has: 'c8y_Patch' }\n },\n __orderby: [{ 'creationTime.date': -1 }]\n };\n return this.listChildren(entry, NO_PATCH_FILTER_ORDER, params);\n }\n\n /**\n * Lists patch versions of given base version under the entry.\n * Versions are ordered by creation time (assuming the earlier created, the older the version).\n * @param entry Top level repository entry.\n * @param baseVersion Base version.\n * @param params Additional query params.\n */\n listPatchVersions(entry: IManagedObject, baseVersion: FirmwareBinary | string, params = {}) {\n const version = isString(baseVersion) ? baseVersion : get(baseVersion, 'c8y_Firmware.version');\n const PATCH_FILTER_ORDER = {\n __filter: {\n 'c8y_Patch.dependency': version\n },\n __orderby: [{ 'creationTime.date': -1 }]\n };\n return this.listChildren(entry, PATCH_FILTER_ORDER, params);\n }\n\n /**\n * Lists patch versions of given base version under the entry including the base version.\n * Versions are ordered by creation time (assuming the earlier created, the older the version).\n * In terms of legacy base version the entry gets transformed to fit the needed data model.\n * @param entry Top level repository entry.\n * @param baseVersion Base version.\n * @param params Additional query params.\n */\n listBaseVersionAndPatches(entry: IManagedObject, baseVersion: IManagedObject, params = {}) {\n if (this.isLegacyEntry(entry)) {\n return Promise.resolve({\n data: [\n Object.assign(\n {\n c8y_Firmware: {\n version: entry.version,\n url: entry.url\n }\n },\n entry\n )\n ]\n });\n }\n\n const PATCH_FILTER_ORDER = {\n __filter: {\n __or: {\n 'c8y_Patch.dependency': baseVersion.c8y_Firmware.version,\n 'c8y_Firmware.version': baseVersion.c8y_Firmware.version\n }\n },\n __orderby: [{ 'c8y_Patch.dependency': 1 }, { 'c8y_Firmware.version': 1 }]\n };\n return this.listChildren(entry, PATCH_FILTER_ORDER, params);\n }\n\n listChildren(entry: Partial<IManagedObject>, filters = {}, params: any = {}) {\n const childrenFilters = { __bygroupid: entry.id };\n const query = this.queriesUtil.addAndFilter(filters, childrenFilters);\n // FIXME: needed because of issue in forOf directive (...)\n params.withTotalPages = true;\n return this.inventory.listQuery(query, params);\n }\n\n /**\n * Fetches all items from the list starting with the provided page.\n * @param firstPage The first page of the list to fetch all items for.\n */\n async fetchAllItemsFromList(firstPage) {\n let allItems;\n\n if (!firstPage.then) {\n allItems = [...firstPage];\n } else {\n let { paging, data: items } = await firstPage;\n allItems = [...items];\n\n while (paging && paging.nextPage) {\n ({ paging, data: items } = await paging.next());\n allItems = [...allItems, ...items];\n }\n }\n\n return allItems;\n }\n\n /**\n * Gets top level repository entry managed object for base or patch version.\n * @param mo Base or patch version managed object with parents.\n */\n getRepositoryEntryMO$(mo: IManagedObject): Observable<IManagedObject | undefined> {\n if (!mo) {\n return of(undefined);\n }\n const [reference] = get(mo, 'additionParents.references');\n const id = get(reference, 'managedObject.id');\n return id\n ? from(this.inventory.detail(id, { withChildren: false })).pipe(map(({ data }) => data))\n : of(undefined);\n }\n /**\n * Gets base or patch version managed object.\n * @param deviceRepositoryFragment Device repository fragment.\n * @param type Top level repository entry type.\n * @param configuration Configuration object with options:\n * - **skipLegacy** - `boolean` - Exclude legacy entries.\n * - **filters** - `object` - Filter object.\n *\n * @deprecated as it doesn't support 'missing url' case\n */\n getRepositoryBinaryMoByVersion(\n deviceRepositoryFragment: DeviceFirmware | DeviceSoftware,\n type: RepositoryType,\n { skipLegacy = false, filters = {} }: { skipLegacy?: boolean; filters?: object } = {}\n ): Promise<IManagedObject> {\n const { version, url, name } = deviceRepositoryFragment;\n const repositoryBinaryType = REPOSITORY_BINARY_TYPES[type];\n let query;\n const newModelBaseVersionQuery = {\n [`${type}.version`]: version,\n [`${type}.url`]: url,\n type: repositoryBinaryType\n };\n const legacyVersionQuery = { url, type, name };\n filters = { withChildren: false, withParents: true, ...filters };\n\n if (skipLegacy) {\n query = {\n __and: {\n ...newModelBaseVersionQuery\n }\n };\n } else {\n query = {\n __or: [{ __and: { ...newModelBaseVersionQuery } }, { __and: { ...legacyVersionQuery } }]\n };\n }\n\n return this.inventory.listQuery(query, filters).then(({ data }) => head(data));\n }\n\n getBinaryName$(binaryUrl: string): Observable<string> {\n if (!binaryUrl) {\n return of('---');\n }\n\n const binaryId = this.inventoryBinary.getIdFromUrl(binaryUrl);\n if (!binaryId) {\n return of(binaryUrl);\n }\n return defer(() => this.inventory.detail(binaryId).then(result => result.data)).pipe(\n map(mo => mo.name)\n );\n }\n\n /**\n * Generates an inventory query object which can be used to find\n * repository entries of specified type matching the type of provided device.\n * @param repositoryType The type of repository entries which will be queried with the generated query.\n * @param device The device for which matching repository entries will be queried with the generated query.\n */\n\n getDeviceTypeQuery(repositoryType: RepositoryType, device: IManagedObject): object {\n let result = { type: repositoryType };\n if (repositoryType === RepositoryType.CONFIGURATION) {\n if (device.type) {\n result = this.queriesUtil.addAndFilter(result, {\n __or: [{ deviceType: device.type }, { __not: { __has: `deviceType` } }]\n });\n }\n } else {\n result = this.queriesUtil.addAndFilter(result, {\n __or: [\n { 'c8y_Filter.type': device.type },\n { 'c8y_Filter.type': '' },\n { __not: { __has: `c8y_Filter.type` } }\n ]\n });\n }\n\n return result;\n }\n\n /**\n * Generates an inventory query object which can be used to find\n * repository entries matching the predefined software types provided in the device.\n * @param device The device for which matching repository entries will be queried with the generated query.\n * @param query The query to which the software types filters will be attached. Default value is an object containg repository type software.\n */\n getSoftwareTypeQuery(device: IManagedObject, query?: object): object {\n let result = { ...(query || {}), type: RepositoryType.SOFTWARE };\n\n if (device.c8y_SupportedSoftwareTypes) {\n result = this.queriesUtil.addAndFilter(result, {\n __or: [device.c8y_SupportedSoftwareTypes.map(type => ({ softwareType: type }))]\n });\n }\n\n return result;\n }\n\n /**\n * Generates an inventory query object which can be used to find configuration repository entries\n * matching the type of provided device and specified configuration type.\n * @param device The device for which matching repository entries will be queried with the generated query.\n * @param configurationType Configuration type for which matching repository entries will be queried with the generated query.\n */\n getConfigurationTypeQuery(device: IManagedObject, configurationType: string): object {\n const query = this.getDeviceTypeQuery(RepositoryType.CONFIGURATION, device);\n return this.queriesUtil.addAndFilter(query, {\n __or: [\n { configurationType },\n { configurationType: '' },\n { __not: { __has: `configurationType` } }\n ]\n });\n }\n\n /**\n * Gets the list of software installed in the device in the uniform format.\n * Supports c8y_SoftwareList and c8y_Software fragments.\n * @param device The device whose software list should be returned.\n */\n getDeviceSoftwareList(device: IManagedObject): DeviceSoftware[] {\n if (device.c8y_SoftwareList) {\n return cloneDeep(device.c8y_SoftwareList);\n }\n if (device.c8y_Software) {\n return _map(device.c8y_Software, (version, name) => ({ name, version }));\n }\n return [];\n }\n\n /**\n * Prepares a software update operation for given device and the list of changes, and sends it to the device.\n * @param device The device which the operation should be prepared for and sent to.\n * @param changes The list of software changes which should be applied.\n */\n async createSoftwareUpdateOperation(\n device: IManagedObject,\n changes: DeviceSoftwareChange[]\n ): Promise<IOperation> {\n const operation = await this.getSoftwareUpdateOperation(device, changes);\n return (await this.operation.create(operation)).data;\n }\n\n /**\n * Prepares a software update operation for given device and changes.\n * Returned operation type depends on device's supported operations.\n * Supports c8y_SoftwareUpdate, c8y_SoftwareList, and c8y_Software operations.\n * @param device The device for which operation should be prepared.\n * @param changes The list of software changes which should be applied.\n */\n async getSoftwareUpdateOperation(\n device: IManagedObject,\n changes: DeviceSoftwareChange[]\n ): Promise<IOperation> {\n const operation: IOperation = {\n deviceId: device.id,\n description: `Apply software changes: ${changes\n .map(\n change =>\n `${change.action} \"${change.name}\"${\n change.version ? ` (version: ${change.version})` : ''\n }`\n )\n .join(', ')}`\n };\n if (device.c8y_SupportedOperations.includes('c8y_SoftwareUpdate')) {\n operation.c8y_SoftwareUpdate = (cloneDeep(changes) || []).map(change =>\n omitBy(change, isNil)\n );\n } else if (device.c8y_SupportedOperations.includes('c8y_SoftwareList')) {\n operation.c8y_SoftwareList = cloneDeep(\n await this.getCurrentSoftware(device, 'c8y_SoftwareList', [])\n );\n changes.forEach(change => {\n const deviceSoftware: DeviceSoftware = pick(omitBy(change, isNil), [\n 'name',\n 'version',\n 'url',\n 'softwareType'\n ]);\n if (change.action === 'delete') {\n remove(operation.c8y_SoftwareList, deviceSoftware);\n }\n if (change.action === 'install') {\n const softwareItemToUpdateIdx = operation.c8y_SoftwareList.findIndex(\n item => item.name === change.name\n );\n if (softwareItemToUpdateIdx > -1) {\n // update software\n operation.c8y_SoftwareList.splice(softwareItemToUpdateIdx, 1, deviceSoftware);\n } else {\n // install software\n operation.c8y_SoftwareList.push(deviceSoftware);\n }\n }\n });\n } else if (device.c8y_SupportedOperations.includes('c8y_Software')) {\n operation.c8y_Software = cloneDeep(await this.getCurrentSoftware(device, 'c8y_Software', {}));\n changes.forEach(change => {\n if (change.action === 'delete') {\n delete operation.c8y_Software[change.name];\n }\n if (change.action === 'install') {\n operation.c8y_Software[change.name] = change.version;\n }\n });\n }\n return operation;\n }\n\n /**\n * Extracts the list of device software changes from given operation in the context of given device.\n * @param operation The operation from which the list should be extracted.\n * @param device The target device of the operation.\n */\n async getDeviceSoftwareChangesFromOperation(\n operation: IOperation,\n device: IManagedObject\n ): Promise<DeviceSoftwareChange[]> {\n if (operation.c8y_SoftwareUpdate) {\n return cloneDeep(operation.c8y_SoftwareUpdate);\n }\n if (operation.c8y_SoftwareList) {\n return await this.getDeviceSoftwareChangesFromSoftwareListOperation(operation, device);\n }\n if (operation.c8y_Software) {\n return await this.getDeviceSoftwareChangesFromSoftwareOperation(operation, device);\n }\n return [];\n }\n\n /**\n * Prepares a firmware update operation for given device and the selected repository binary, and sends it to the device.\n * @param device The device which the operation should be prepared for and sent to.\n * @param selectedOption The selected repository binary option.\n */\n async createFirmwareUpdateOperation(\n device: IManagedObject,\n selectedOption: SelectedRepositoryBinary\n ): Promise<IOperation> {\n const operation = this.getFirmwareUpdateOperation(device, selectedOption);\n return (await this.operation.create(operation)).data;\n }\n\n /**\n * Prepares a firmware update operation for given device and selected version.\n * Supports c8y_Firmware operation.\n * @param device The device for which operation should be prepared.\n * @param selectedOption Selected firmware version.\n */\n getFirmwareUpdateOperation(\n device: IManagedObject,\n selectedOption: SelectedRepositoryBinary\n ): IOperation {\n delete selectedOption.id;\n\n const operation: IOperation = {\n deviceId: device.id,\n description: `Update firmware to: \"${selectedOption.name}\"${\n selectedOption.version ? ` (version: ${selectedOption.version})` : ''\n }`,\n c8y_Firmware: { ...selectedOption }\n };\n\n return operation;\n }\n\n /**\n * Prepares a configuration file upload operation for given device and configuration type.\n * @param device The device for which operation should be prepared.\n * @param configurationType Selected configuration type.\n * @param isLegacy A legacy operation is created without a configurationType.\n */\n getUploadConfigurationFileOperation(\n device: IManagedObject,\n configurationType: string,\n isLegacy = false\n ): IOperation {\n if (isLegacy) {\n return {\n deviceId: device.id,\n description: `Retrieve configuration snapshot from device ${device.name}`,\n c8y_UploadConfigFile: {}\n };\n }\n return {\n deviceId: device.id,\n description: `Retrieve ${configurationType} configuration snapshot from device ${device.name}`,\n c8y_UploadConfigFile: {\n type: configurationType\n }\n };\n }\n\n /**\n * Prepares a configuration file download operation for given device and configuration type.\n * @param device The device for which operation should be prepared.\n * @param configurationType Selected configuration type.\n * @param binaryUrl The url of a binary to be downloaded.\n * @param isLegacy A legacy operation is created without a configurationType.\n */\n getDownloadConfigurationFileOperation(\n device: IManagedObject,\n configurationType: string,\n configSnapshot: ConfigurationSnapshot,\n isLegacy = false\n ): IOperation {\n if (isLegacy) {\n return {\n deviceId: device.id,\n description: `Send configuration snapshot ${configSnapshot.name} to device ${device.name}`,\n c8y_DownloadConfigFile: {\n url: configSnapshot.binaryUrl,\n c8y_ConfigurationDump: {\n id: configSnapshot.id\n }\n }\n };\n }\n return {\n deviceId: device.id,\n description: `Send configuration snapshot ${configSnapshot.name} of configuration type ${configurationType} to device ${device.name}`,\n c8y_DownloadConfigFile: {\n url: configSnapshot.binaryUrl,\n type: configurationType\n }\n };\n }\n\n /**\n * Gets the last firmware update operation for given device.\n * Looks for c8y_Firmware operations.\n * @param deviceId The ID of the device to find an operation for.\n */\n async getLastFirmwareUpdateOperation(deviceId: string | number): Promise<IOperation> {\n const filters = {\n deviceId,\n dateFrom: new Date(0).toISOString(),\n dateTo: new Date(Date.now()).toISOString(),\n revert: true,\n pageSize: 1\n };\n return this.getFirstMatchingOperation([{ ...filters, fragmentType: 'c8y_Firmware' }]);\n }\n\n /**\n * Gets the last software update operation for given device.\n * Looks for c8y_SoftwareUpdate, c8y_SoftwareList, or c8y_Software operations.\n * @param deviceId The ID of the device to find an operation for.\n */\n async getLastSoftwareUpdateOperation(deviceId: string | number): Promise<IOperation> {\n const filters = {\n deviceId,\n dateFrom: new Date(0).toISOString(),\n dateTo: new Date(Date.now()).toISOString(),\n revert: true,\n pageSize: 1\n };\n return this.getLatestMatchingOperation([\n { ...filters, fragmentType: 'c8y_SoftwareUpdate' },\n { ...filters, fragmentType: 'c8y_SoftwareList' },\n { ...filters, fragmentType: 'c8y_Software' }\n ]);\n }\n\n /**\n * Iterates over the list of filters and queries the operations.\n * If a query returns at least one operation, the first one will be returned.\n * Otherwise the next query will be performed.\n * If none of the queries returns any operation, null will be returned.\n * @param filtersList The list of filters for the queries.\n */\n async getFirstMatchingOperation(filtersList: any[]): Promise<IOperation> {\n let matchingOperation = null;\n\n for (const filters of filtersList) {\n const operations = (await this.operation.list(filters)).data;\n if (operations.length) {\n matchingOperation = operations[0];\n break;\n }\n }\n\n return matchingOperation;\n }\n\n /**\n * Iterates over the list of filters and queries the operations.\n * It compares the operations retrieved by the queries by 'creationTime'\n * and return the latest one.\n * If none of the queries returns any operation, null will be returned.\n * @param filtersList The list of filters for the queries.\n */\n async getLatestMatchingOperation(filtersList: any[]): Promise<IOperation> {\n let matchingOperation: IOperation = null;\n\n for (const filters of filtersList) {\n const operations: IOperation[] = (await this.operation.list(filters)).data;\n if (operations.length) {\n if (matchingOperation) {\n matchingOperation =\n new Date(matchingOperation.creationTime).getTime() <\n new Date(operations[0].creationTime).getTime()\n ? operations[0]\n : matchingOperation;\n } else {\n matchingOperation = operations[0];\n }\n }\n }\n\n return matchingOperation;\n }\n\n /**\n * Creates the operation and returns an observable to track its progress.\n * Fails the observable when the operation returns FAILED status.\n * Completes the observable when the operation returns SUCCESSFUL status.\n * @param operation The operation to create and track.\n */\n createObservedOperation(operation: IOperation): Observable<IOperation> {\n return from(this.operation.create(operation)).pipe(\n map(({ data }) => data),\n take(1),\n switchMap(createdOperation => this.observeOperation(createdOperation))\n );\n }\n\n /**\n * Returns an observable to track progress of given operation.\n * Fails the observable when the operation returns FAILED status.\n * Completes the observable when the operation returns SUCCESSFUL status.\n * @param operation The operation to be observed.\n */\n observeOperation(operation: IOperation): Observable<IOperation> {\n const observedOperation$ = of(operation);\n const operationUpdates$ = observedOperation$.pipe(\n switchMap(observedOperation => this.operationRealtime.onAll$(observedOperation.deviceId)),\n map(({ data }) => data as IOperation),\n withLatestFrom(observedOperation$),\n filter(([operationUpdate, observedOperation]) => operationUpdate.id === observedOperation.id),\n switchMap(([operationUpdate]) => {\n if (operationUpdate.status === OperationStatus.FAILED) {\n return throwError(operationUpdate);\n }\n return of(operationUpdate);\n }),\n takeWhile(operationUpdate => operationUpdate.status !== OperationStatus.SUCCESSFUL, true)\n );\n return merge(observedOperation$, operationUpdates$);\n }\n\n /**\n * Gets a single event with latest creationTime for the given device Id and event type.\n * @param deviceId The device Id for which the events should be queried.\n * @param type Event type.\n */\n async getLatestConfigurationEvent(\n deviceId: string | number,\n type: string\n ): Promise<IEvent | undefined> {\n const eventFilter: object = {\n source: deviceId,\n type,\n dateFrom: this.dateFrom.toISOString(),\n dateTo: this.dateTo.toISOString(),\n pageSize: 1\n };\n\n const { data } = await this.event.list(eventFilter);\n return data[0];\n }\n\n /**\n * Gets a list of operations for the given device Id, and operation type.\n * @param deviceId The device Id for which the operation should be queried.\n * @param operationType Operation type fragment.\n */\n async getConfigFileOperationList(\n deviceId: string | number,\n operationType: string\n ): Promise<IOperation[]> {\n const operationFilter: object = {\n deviceId,\n fragmentType: operationType,\n dateFrom: this.dateFrom.toISOString(),\n dateTo: this.dateTo.toISOString(),\n revert: true,\n pageSize: 2000\n };\n\n return (await this.operation.list(operationFilter)).data;\n }\n\n /**\n * Gets latest uploaded configuration snapshot for the given device, and configuration type.\n * @param device The device for which the configuration snapshot was uploaded.\n * @param configurationType Selected configuration type.\n */\n async getConfigSnapshot(\n device: IManagedObject,\n configurationType: string\n ): Promise<ConfigurationSnapshot | undefined> {\n const event: IEvent = await this.getLatestConfigurationEvent(device.id, configurationType);\n let configSnapshot: ConfigurationSnapshot;\n if (event) {\n configSnapshot = {\n time: event.time,\n name: event.text,\n deviceType: device.type,\n configurationType\n };\n try {\n configSnapshot.binary = await (await this.eventBinary.download(event)).text();\n if (event.c8y_IsBinary) {\n configSnapshot.binaryType = event.c8y_IsBinary.type;\n }\n } catch (ex) {\n const msg = gettext('Could not get the binary.');\n this.alert.danger(msg);\n }\n }\n return configSnapshot;\n }\n\n async getLegacyConfigSnapshot(deviceId) {\n let configSnapshot: ConfigurationSnapshot;\n let mo;\n const device = (await this.inventory.detail(deviceId, { withChildren: false })).data;\n const snapshotId = device.c8y_ConfigurationDump && device.c8y_ConfigurationDump.id;\n if (!snapshotId) {\n return;\n }\n\n try {\n mo = (await this.inventory.detail(snapshotId)).data;\n } catch (ex) {\n // do nothing\n }\n if (mo) {\n configSnapshot = {\n time: mo.creationTime,\n name: mo.name\n };\n configSnapshot.binary = await this.getBinaryText(mo.url, { allowExternal: false });\n }\n return configSnapshot;\n }\n\n /**\n * Returns a binary object as text.\n * @param binaryUrl The URL to find binary\n * @param options The object with additional options:\n * - **allowExternal** - `boolean` - allows downloading external binary file\n * - **noAlerts** - `boolean` - do not display an alert message; defaults to `false`\n */\n async getBinaryText(\n binaryUrl: string,\n options: { allowExternal: boolean; noAlerts?: boolean }\n ): Promise<string> {\n const binaryId = this.inventoryBinary.getIdFromUrl(binaryUrl);\n let res;\n if (!binaryId) {\n if (options.allowExternal) {\n res = await this.getExternalBinaryResponse(binaryUrl, options);\n }\n } else {\n res = await this.getInternalBinaryResponse(binaryId, options);\n }\n if (!res) {\n return null;\n }\n return res.text();\n }\n\n /**\n * Returns a binary object as File.\n * @param binaryUrl The URL to find binary\n * @param options The object with additional options:\n * - **allowExternal** - `boolean` - allows downloading external binary file\n */\n async getBinaryFile(binaryUrl: string, options: { allowExternal: boolean }): Promise<File> {\n const binaryId = this.inventoryBinary.getIdFromUrl(binaryUrl);\n if (!binaryId && !options.allowExternal) {\n return null;\n }\n // @TODO: note that it doesn't solve issue with external binary here, such url won't have binaryId, so we won't know the name or contentType to use in File constructor, let's add a @FIXME comment for now?\n const { name, contentType } = (await this.inventory.detail(binaryId)).data;\n const res = !!binaryId\n ? await this.getInternalBinaryResponse(binaryId)\n : await this.getExternalBinaryResponse(binaryUrl);\n const arrayBuffer = await res.arrayBuffer();\n return new File([arrayBuffer], name, { type: contentType });\n }\n\n /**\n * Gets the last configuration update operation for given device.\n * Looks for c8y_Configuration and c8y_SendConfiguration operations.\n * @param deviceId The ID of the device to find an operation for.\n */\n async getLastConfigUpdateOperation(deviceId: string | number): Promise<IOperation> {\n const filters = {\n deviceId,\n dateFrom: new Date(0).toISOString(),\n dateTo: new Date(Date.now()).toISOString(),\n revert: true,\n pageSize: 1\n };\n return this.getLatestMatchingOperation([\n { ...filters, fragmentType: 'c8y_Configuration' },\n { ...filters, fragmentType: 'c8y_SendConfiguration' }\n ]);\n }\n\n /**\n * Prepares a configuration download operation for given device and its current configuration.\n * Supports c8y_SendConfiguration operation.\n * @param device The device for which operation should be prepared.\n */\n createTextBasedConfigurationReloadOperation(device: IManagedObject): IOperation {\n return {\n deviceId: device.id,\n description: gettext('Requested current configuration'),\n c8y_SendConfiguration: {}\n };\n }\n\n /**\n * Prepares a configuration update operation for the given device.\n * Supports c8y_Configuration operation.\n * @param device The device for which operation should be prepared.\n * @param config The configuration which will update the existing one.\n */\n createTextBasedConfigurationUpdateOperation(device: IManagedObject, config: string): IOperation {\n return {\n deviceId: device.id,\n description: gettext('Configuration update'),\n c8y_Configuration: {\n config\n }\n };\n }\n\n async getBinary(binaryId: IdReference): Promise<IFetchResponse> {\n try {\n return await this.inventoryBinary.download(binaryId);\n } catch (ex) {\n const msg = gettext('Could not get the binary.');\n this.alert.danger(msg);\n }\n }\n\n /**\n * Gets all available snapshots from the repository for the given device.\n * @param device The device for which the snapshots should be prepared.\n * @param configurationType Selected configuration type.\n */\n async getSnapshotsFromRepository(device, configurationType) {\n const searchQuery = this.getConfigurationTypeQuery(device, configurationType);\n const res = await this.listRepositoryEntries(RepositoryType.CONFIGURATION, {\n query: searchQuery,\n params: { pageSize: 100 }\n });\n return res.data;\n }\n\n /**\n * Checks if a device already have a given software installed\n * @param deviceId Id of the device to be checked\n * @param software The software to be checked\n */\n async isSoftwareInstalledOnDevice(\n deviceId: string | number,\n software: DeviceSoftware\n ): Promise<boolean> {\n const isASMAvailable = await this.advancedSoftwareService?.isASMAvailable();\n if (!isASMAvailable) {\n return false;\n }\n\n const queryFilter = { deviceId };\n if (software?.name) {\n set(queryFilter, 'name', software.name);\n }\n if (software?.version) {\n set(queryFilter, 'version', software.version);\n }\n return this.advancedSoftwareService.list(queryFilter).then(result => !!result.data?.length);\n }\n\n /**\n * Returns a binary object.\n * @param binaryId binary ID\n * @param options The object with additional options:\n * - **noAlerts** - `boolean` - do not display an alert message; defaults to `false`\n */\n private async getInternalBinaryResponse(\n binaryId: IdReference,\n options: { noAlerts?: boolean } = {}\n ): Promise<IFetchResponse> {\n let res;\n try {\n res = await this.inventoryBinary.download(binaryId);\n } catch (ex) {\n if (!options.noAlerts) {\n const msg = gettext('Could not get the binary.');\n this.alert.danger(msg);\n }\n }\n return res;\n }\n\n /**\n * Returns a binary object.\n * @param binaryUrl The URL to find binary\n * @param options The object with additional options:\n * - **noAlerts** - `boolean` - do not display an alert message; defaults to `false`\n */\n private async getExternalBinaryResponse(\n binaryUrl: string,\n options: { noAlerts?: boolean } = {}\n ): Promise<IFetchResponse> {\n let res;\n try {\n const fetchRes = await fetch(binaryUrl);\n if (fetchRes.status >= 400) {\n throw res;\n }\n res = fetchRes;\n } catch {\n if (!options.noAlerts) {\n const msg = gettext('Could not get the external binary');\n this.alert.danger(msg);\n }\n }\n return res;\n }\n\n private getBaseVersionResultListForLegacyEntry(entry) {\n return Promise.resolve({\n res: {} as IFetchResponse,\n data: [\n {\n ...entry,\n [entry.type]: {\n version: entry.version,\n url: entry.url\n }\n }\n ]\n } as IResultList<IManagedObject>);\n }\n\n private async getDeviceSoftwareChangesFromSoftwareListOperation(\n operation: IOperation,\n device: IManagedObject\n ): Promise<DeviceSoftwareChange[]> {\n const changes: DeviceSoftwareChange[] = [];\n const deviceSoftwareList = await this.getCurrentSoftware(device, 'c8y_SoftwareList', []);\n forEach(operation.c8y_SoftwareList, operationSoftware => {\n const deviceSoftware = find(deviceSoftwareList, { name: operationSoftware.name });\n if (\n (operationSoftware && operationSoftware.version) !==\n (deviceSoftware && deviceSoftware.version)\n ) {\n changes.push({\n ...operationSoftware,\n action: 'install'\n } as DeviceSoftwareChange);\n }\n });\n forEach(deviceSoftwareList, deviceSoftware => {\n const operationSoftware = find(operation.c8y_SoftwareList, { name: deviceSoftware.name });\n if (\n (operationSoftware && operationSoftware.version) !==\n (deviceSoftware && deviceSoftware.version)\n ) {\n const installChange = changes.find(\n change => deviceSoftware.name === change.name && change.action === 'install'\n );\n // check that this software is not an installation software change, otherwise it's an update and not a removal\n if (!installChange) {\n changes.push({\n ...deviceSoftware,\n action: 'delete'\n } as DeviceSoftwareChange);\n }\n }\n });\n return changes;\n }\n\n private async getDeviceSoftwareChangesFromSoftwareOperation(\n operation: IOperation,\n device: IManagedObject\n ): Promise<DeviceSoftwareChange[]> {\n const changes: DeviceSoftwareChange[] = [];\n const deviceSoftware = await this.getCurrentSoftware(device, 'c8y_Software', {});\n forEach(deviceSoftware, (deviceSoftwareVersion, deviceSoftwareName) => {\n if (operation.c8y_Software[deviceSoftwareName] !== deviceSoftwareVersion) {\n changes.push({\n name: deviceSoftwareName,\n version: deviceSoftwareVersion,\n action: 'delete'\n } as DeviceSoftwareChange);\n }\n });\n forEach(operation.c8y_Software, (operationSoftwareVersion, operationSoftwareName) => {\n const deviceSoftwareVersion = deviceSoftware && deviceSoftware[operationSoftwareName];\n if (deviceSoftwareVersion !== operationSoftwareVersion) {\n changes.push({\n name: operationSoftwareName,\n version: operationSoftwareVersion,\n action: 'install'\n } as DeviceSoftwareChange);\n }\n });\n return changes;\n }\n\n private async getCurrentSoftware(\n device: IManagedObject,\n swFragment: string,\n defaultValue: object\n ): Promise<object> {\n const isASMAvailable = await this.advancedSoftwareService?.isASMAvailable();\n if (isASMAvailable) {\n let softwareResultList: IResultList<IManagedObject> = await this.advancedSoftwareService.list(\n { deviceId: device.id, pageSize: 100 }\n );\n let list = (softwareResultList?.data || []).map(sw =>\n pick(omitBy(sw, isNil), ['name', 'version', 'url', 'softwareType'])\n );\n\n while (softwareResultList.paging?.nextPage) {\n softwareResultList = await softwareResultList.paging.next();\n list = [\n ...list,\n ...(softwareResultList?.data || []).map(sw =>\n pick(omitBy(sw, isNil), ['name', 'version', 'url', 'softwareType'])\n )\n ];\n }\n\n if (!list?.length) {\n return defaultValue;\n }\n\n return Array.isArray(defaultValue) ? list : this.softwareListToLegacy(list);\n } else {\n return device[swFragment] || defaultValue;\n }\n }\n\n private softwareListToLegacy(list: IManagedObject[]): object {\n return (list || []).reduce((prev, curr) => ({ ...prev, [curr.name]: curr.version }), {});\n }\n\n private async getGlobalFragment(type: RepositoryType) {\n return (await this.globalConfigService.getGlobalParam(type)) ? { c8y_Global: {} } : undefined;\n }\n\n private async removeOutdatedBinary(newBinaryURL, oldBinaryURL) {\n const existingBinaryId = await this.inventoryBinary.getIdFromUrl(oldBinaryURL);\n const newBinaryId = await this.inventoryBinary.getIdFromUrl(newBinaryURL);\n if (existingBinaryId && existingBinaryId !== newBinaryId) {\n await this.inventoryBinary.delete(existingBinaryId);\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { IManagedObject, InventoryBinaryService } from '@c8y/client';\nimport { CellRendererContext, CommonModule, memoize } from '@c8y/ngx-components';\nimport { property } from 'lodash-es';\nimport { RepositoryService } from '../repository.service';\n\n@Component({\n templateUrl: './file.cell-renderer.component.html',\n selector: 'c8y-file-cell-renderer',\n standalone: true,\n imports: [CommonModule],\n providers: [RepositoryService]\n})\nexport class FileCellRendererComponent {\n constructor(\n public context: CellRendererContext,\n private inventoryBinaryService: InventoryBinaryService,\n private repositoryService: RepositoryService\n ) {}\n\n isBinaryFile() {\n return this.context.item?.url\n ? !!this.inventoryBinaryService.getIdFromUrl(this.context.item.url)\n : false;\n }\n\n @memoize(property('id'))\n getBinaryName(configuration: IManagedObject) {\n return this.repositoryService.getBinaryName$(configuration.url);\n }\n}\n","<small\n title=\"{{ getBinaryName(context.item) | async }}\"\n *ngIf=\"isBinaryFile(); else noFile\"\n>\n {{ getBinaryName(context.item) | async }}\n</small>\n<ng-template #noFile>\n <small title=\"{{ context.item?.url }}\">\n {{ context.item?.url }}\n </small>\n</ng-template>\n","import { BaseColumn, ColumnConfig, gettext } from '@c8y/ngx-components';\nimport { FileCellRendererComponent } from './file.cell-renderer.component';\n\nexport class FileGridColumn extends BaseColumn {\n constructor(initialColumnConfig?: ColumnConfig & { filterLabel?: string; placeholder?: string }) {\n super(initialColumnConfig);\n this.name = 'file';\n this.header = gettext('File');\n this.cellRendererComponent = FileCellRendererComponent;\n\n this.filterable = false;\n this.sortable = false;\n }\n}\n","import { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { CellRendererContext, CommonModule } from '@c8y/ngx-components';\nimport { DeviceGridModule } from '@c8y/ngx-components/device-grid';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\n\n@Component({\n template: `\n <a\n class=\"interact\"\n [title]=\"context.item.name\"\n *ngIf=\"context?.property?.callback; else router\"\n (click)=\"context.property.callback(context.item)\"\n >\n {{ context.item.name }}\n </a>\n <ng-template #router>\n <a class=\"interact\" [title]=\"context.item.name\" [routerLink]=\"[context.item.id]\">\n {{ context.item.name }}\n </a>\n </ng-template>\n `,\n selector: 'c8y-repository-item-name-cell-renderer',\n standalone: true,\n imports: [CommonModule, DeviceGridModule, TooltipModule, RouterModule]\n})\nexport class RepositoryItemNameCellRendererComponent {\n constructor(public context: CellRendererContext) {}\n}\n","import {\n BaseColumn,\n ColumnConfig,\n getBasicInputArrayFormFieldConfig,\n gettext,\n Row\n} from '@c8y/ngx-components';\nimport { RepositoryItemNameCellRendererComponent } from './name.cell-renderer.component';\n\nexport class RepositoryItemNameGridColumn extends BaseColumn {\n callback: (row: Row) => void;\n\n constructor(\n initialColumnConfig?: ColumnConfig & {\n filterLabel?: string;\n placeholder?: string;\n callback?: (row: Row) => void;\n }\n ) {\n super(initialColumnConfig);\n this.name = 'name';\n this.path = 'name';\n this.header = gettext('Name');\n this.cellRendererComponent = RepositoryItemNameCellRendererComponent;\n\n this.filterable = true;\n this.filteringConfig = {\n fields: getBasicInputArrayFormFieldConfig({\n key: 'names',\n label: initialColumnConfig?.filterLabel ?? gettext('Filter items by name'),\n addText: gettext('Add next`name`'),\n tooltip: gettext('Use * as a wildcard character'),\n placeholder: initialColumnConfig?.placeholder ?? gettext('Cloud connectivity')\n }),\n getFilter(model: any): any {\n const filter: any = {};\n if (model.names.length) {\n filter.name = { __in: model.names };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: this.path }]\n };\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\n\n@Component({\n standalone: true,\n templateUrl: './type.cell-renderer.component.html',\n selector: 'c8y-type-cell-renderer',\n imports: [CommonModule]\n})\nexport class TypeCellRendererComponent {\n constructor(public context: CellRendererContext) {}\n}\n","<span\n class=\"label label-info\"\n *ngIf=\"!!context?.item?.[context?.property?.path]; else emptyText\"\n>\n {{ context.item[context.property.path] }}\n</span>\n<ng-template #emptyText>\n <small class=\"text-muted\">\n <em translate>Undefined`type`</em>\n </small>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { IManagedObject, IResultList, QueriesUtil } from '@c8y/client';\nimport {\n CommonModule as C8yCommonModule,\n C8yTranslatePipe,\n Column,\n CoreModule,\n FilteringFormRendererContext,\n ForOfFilterPipe,\n gettext,\n TypeaheadComponent\n} from '@c8y/ngx-components';\nimport { cloneDeep, uniqBy } from 'lodash-es';\nimport { BehaviorSubject, NEVER, Observable, pipe } from 'rxjs';\nimport { debounceTime, map, switchMap, tap } from 'rxjs/operators';\nimport { RepositoryService } from '../repository.service';\nimport { TypeGridColumn } from './type.grid-column';\n\n@Component({\n standalone: true,\n templateUrl: './type.filtering-form-renderer.component.html',\n changeDetection: ChangeDetectionStrategy.Default,\n selector: 'c8y-type-filtering-form-renderer',\n imports: [CommonModule, C8yTranslatePipe, C8yCommonModule, FormsModule, CoreModule]\n})\nexport class TypeFilteringFormRendererComponent implements OnInit, AfterViewInit {\n path: string;\n selectedType: IManagedObject;\n types$: Observable<IResultList<IManagedObject>> = NEVER;\n search$: BehaviorSubject<string> = new BehaviorSubject(null);\n filterPipe: ForOfFilterPipe<IManagedObject> = pipe(tap());\n typeaheadPlaceholder = gettext('Start typing to search, for example, {{ example }}');\n @ViewChild(TypeaheadComponent, { static: false }) typeahead: TypeaheadComponent;\n private queriesUtil: QueriesUtil = new QueriesUtil();\n private types: Set<string> = new Set();\n\n constructor(\n public context: FilteringFormRendererContext,\n public changeDetectorRef: ChangeDetectorRef,\n private repositoryService: RepositoryService,\n private elementRef: ElementRef\n ) {\n this.path = context.property.path;\n this.types$ = this.search$.pipe(\n debounceTime(300),\n tap(() => this.types.clear()),\n switchMap((searchString: string) => {\n let query = this.queriesUtil.prependOrderbys({}, [{ [this.path]: 1 }]);\n const filter = !!searchString\n ? {\n [this.path]: {\n __eq: `*${searchString}*`\n }\n }\n : {\n __has: this.path\n };\n query = this.queriesUtil.addAndFilter(query, filter);\n\n return this.repositoryService.listRepositoryEntries(\n (this.context.property as TypeGridColumn).repositoryType,\n {\n skipDefaultOrder: true,\n query,\n params: {\n pageSize: 200\n }\n }\n );\n })\n );\n\n this.filterPipe = pipe(\n map(\n this.removeDuplicatesType.bind(\n this\n ) as TypeFilteringFormRendererComponent['removeDuplicatesType']\n ),\n tap(() => setTimeout(() => this.changeDetectorRef.detectChanges(), 0))\n );\n }\n\n @HostListener('keyup.enter', ['$event']) onEnterKeyUp(event: KeyboardEvent) {\n event.stopPropagation();\n this.applyFilter();\n }\n @HostListener('keydown.escape', ['$event']) onEscapeKeyDown(event: KeyboardEvent) {\n event.stopPropagation();\n this.context.resetFilter();\n }\n\n ngOnInit(): void {\n const column: Column = this.context.property;\n this.selectedType = cloneDeep(column.externalFilterQuery || {});\n }\n\n ngAfterViewInit(): void {\n this.typeahead?.searchControl?.nativeElement?.focus();\n try {\n this.elementRef.nativeElement.parentElement.parentElement.style.overflow = 'visible';\n } catch (ex) {\n // intentionally empty\n }\n }\n\n applyFilter() {\n this.context.applyFilter({\n externalFilterQuery: {\n model: this.selectedType,\n chips: [\n {\n value: this.selectedType,\n displayValue: this.selectedType?.[this.path],\n path: [this.path],\n columnName: this.context.property.name,\n remove: () => {\n return {\n columnName: this.context.property.name,\n externalFilterQuery: {\n model: null,\n chips: []\n }\n };\n }\n }\n ]\n }\n });\n }\n\n private removeDuplicatesType(list: IManagedObject[]): IManagedObject[] {\n const uniqueByType: IManagedObject[] = uniqBy(list, this.path).filter(\n (mo: IManagedObject) => !this.types.has(mo[this.path])\n );\n uniqueByType.forEach((mo: IManagedObject) => this.types.add(mo[this.path]));\n return uniqueByType;\n }\n}\n","<c8y-form-group>\n <label>\n {{ context?.property?.filterLabel | translate }}\n </label>\n <c8y-typeahead\n placeholder=\"{{ typeaheadPlaceholder | translate: { example: context?.property?.example } }}\"\n [name]=\"path\"\n [(ngModel)]=\"selectedType\"\n [displayProperty]=\"path\"\n (onSearch)=\"search$.next($event)\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n *c8yFor=\"let type of types$; pipe: filterPipe; loadMore: 'auto'\"\n (click)=\"$event.stopPropagation(); selectedType = type; typeahead.dropdown.hide()\"\n [active]=\"selectedType?.[path] === type?.[path]\"\n >\n <c8y-highlight\n [text]=\"type?.[path] || '--'\"\n [pattern]=\"search$.value\"\n ></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n</c8y-form-group>\n\n<div class=\"data-grid__dropdown__footer d-flex separator-top\">\n <button\n class=\"btn btn-default btn-sm m-r-8 flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n (click)=\"context.resetFilter()\"\n translate\n >\n Reset\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n (click)=\"applyFilter()\"\n translate\n >\n Apply\n </button>\n</div>\n","import { BaseColumn, ColumnConfig, gettext } from '@c8y/ngx-components';\nimport { RepositoryType } from '../repository.model';\nimport { TypeCellRendererComponent } from './type.cell-renderer.component';\nimport { TypeFilteringFormRendererComponent } from './type.filtering-form-renderer.component';\n\nexport class TypeGridColumn extends BaseColumn {\n repositoryType: RepositoryType;\n\n constructor(\n initialColumnConfig?: ColumnConfig & {\n /** Column header */\n header?: string;\n /** Search field label */\n filterLabel?: string;\n /** Search field placeholder */\n placeholder?: string;\n /** MO property path to be used for quering */\n path?: string;\n /** Repository type */\n repositoryType?: RepositoryType;\n /** Typeahead input placeholder example value */\n example?: string;\n }\n ) {\n super(initialColumnConfig);\n this.name = 'type';\n this.path = initialColumnConfig?.path ?? 'type';\n this.header = initialColumnConfig?.header ?? gettext('Type');\n this.repositoryType = initialColumnConfig?.repositoryType;\n this.cellRendererComponent = TypeCellRendererComponent;\n\n this.filterable = true;\n this.filteringFormRendererComponent = TypeFilteringFormRendererComponent;\n this.filteringConfig = {\n getFilter: query => {\n const filter: any = {};\n if (query.model[this.path]) {\n filter[this.path] = { __eq: query.model[this.path] };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: this.path }]\n };\n }\n}\n","import { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { IManagedObject } from '@c8y/client';\nimport { CellRendererContext, CommonModule, memoize } from '@c8y/ngx-components';\nimport { DeviceGridModule } from '@c8y/ngx-components/device-grid';\nimport { property } from 'lodash-es';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { Observable } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\nimport { RepositoryService } from '../repository.service';\n\n@Component({\n templateUrl: './versions.cell-renderer.component.html',\n selector: 'c8y-versions-cell-renderer',\n standalone: true,\n imports: [CommonModule, DeviceGridModule, TooltipModule, RouterModule]\n})\nexport class VersionsCellRendererComponent {\n isLegacy = this.repositoryService.isLegacyEntry.bind(this.repositoryService);\n item;\n constructor(\n public context: CellRendererContext,\n private repositoryService: RepositoryService\n ) {\n this.item = context.item;\n }\n\n @memoize(property('id'))\n getBaseVersionsCount$(item: IManagedObject): Observable<number | string> {\n return this.repositoryService.getBaseVersionsCount$(item).pipe(shareReplay(1));\n }\n}\n","@if (isLegacy(item)) {\n <span\n class=\"label label-warning m-l-auto-sm\"\n translate\n >\n Legacy\n </span>\n} @else {\n @if (getBaseVersionsCount$(item) | async; as baseVersionsCount) {\n <span class=\"badge badge-info m-l-auto-sm\">\n {{ baseVersionsCount }}\n </span>\n } @else {\n <span class=\"badge badge-info m-l-auto-sm\">\n <i\n class=\"icon-spin\"\n c8yIcon=\"circle-o-notch\"\n ></i>\n </span>\n }\n}\n","import { BaseColumn, ColumnConfig, gettext } from '@c8y/ngx-components';\nimport { VersionsCellRendererComponent } from './versions.cell-renderer.component';\n\nexport class VersionsGridColumn extends BaseColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n this.name = 'versions';\n this.header = gettext('Versions');\n this.cellRendererComponent = VersionsCellRendererComponent;\n this.sortable = false;\n }\n}\n","export enum LinkRenderType {\n DOWNLOAD,\n LINK,\n TEXTONLY\n}\n","import { AlertService, memoize, IconDirective, C8yTranslatePipe } from '@c8y/ngx-components';\nimport { Component, Input } from '@angular/core';\nimport { RepositoryService } from '../repository.service';\nimport { saveAs } from 'file-saver';\nimport { InventoryBinaryService } from '@c8y/client';\nimport { LinkRenderType } from './link-render-type.enum';\nimport { NgIf, AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-file-download',\n templateUrl: './file-download.component.html',\n imports: [NgIf, IconDirective, AsyncPipe, C8yTranslatePipe]\n})\nexport class FileDownloadComponent {\n @Input() url: string;\n linkRenderType = LinkRenderType;\n isDownloading = false;\n constructor(\n private repositoryService: RepositoryService,\n private inventoryBinaryService: InventoryBinaryService,\n private alertService: AlertService\n ) {}\n\n @memoize()\n getBinaryName$(binaryUrl) {\n return this.repositoryService.getBinaryName$(binaryUrl);\n }\n\n @memoize()\n determineBehavior(): LinkRenderType {\n let result: LinkRenderType;\n if (this.inventoryBinaryService.getIdFromUrl(this.url)) {\n result = LinkRenderType.DOWNLOAD;\n } else if (this.url.match(/\\/\\//g)) {\n result = LinkRenderType.LINK;\n } else {\n result = LinkRenderType.TEXTONLY;\n }\n return result;\n }\n\n async downloadFile() {\n try {\n this.isDownloading = true;\n const binary: File = await this.repositoryService.getBinaryFile(this.url, {\n allowExternal: false\n });\n this.isDownloading = false;\n saveAs(binary);\n } catch (ex) {\n this.isDownloading = false;\n if (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n }\n}\n","<a\n *ngIf=\"determineBehavior() === linkRenderType.LINK\"\n href=\"{{ url }}\"\n class=\"pointer\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n>\n {{ getBinaryName$(url) | async }}\n</a>\n\n<span *ngIf=\"determineBehavior() === linkRenderType.TEXTONLY\">{{\n getBinaryName$(url) | async\n}}</span>\n\n<span *ngIf=\"determineBehavior() === linkRenderType.DOWNLOAD\">\n <a *ngIf=\"!isDownloading\" class=\"pointer\" (click)=\"downloadFile()\">\n {{ getBinaryName$(url) | async }}\n </a>\n\n <span *ngIf=\"isDownloading\">\n <i c8yIcon=\"spinner\" class=\"icon-spin\"></i> {{ 'Downloading…' | translate }}\n </span>\n</span>\n","import { Component, EventEmitter, forwardRef, TemplateRef } from '@angular/core';\nimport { IManagedObject, QueriesUtil } from '@c8y/client';\nimport {\n gettext,\n ISelectModalObject,\n ISelectModalOption,\n IUpdateItemEvent,\n ModalLabels,\n ModalSelectionMode,\n ProductExperienceEvent,\n ProductExperienceEventSource,\n PRODUCT_EXPERIENCE_EVENT_SOURCE,\n SelectModalComponent,\n ProductExperienceDirective\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { get, has, isEmpty, isEqual, omitBy } from 'lodash-es';\nimport { BehaviorSubject, merge, Observable, of, Subject } from 'rxjs';\nimport { map, mergeMap, switchMap, tap } from 'rxjs/operators';\nimport {\n FilterCriteria,\n PRODUCT_EXPERIENCE_REPOSITORY_SHARED,\n RepositoryBinary,\n RepositoryCategory,\n RepositoryType,\n SelectedRepositoryBinary\n} from '../repository.model';\nimport { RepositoryService } from '../repository.service';\nimport { AsyncPipe } from '@angular/common';\n\n// MODAL STRUCTURE\n// - selectModalObject (repository entry (repositoryCategory) -> type c8y_Firmware/c8y_Software)\n// -- ISelectModalOption (repository binary entry (repositoryBinary) => type c8y_FirmwareBinary/c8y_SoftwareBinary)\n// -- ISelectModalOption...\n// - selectModalObject...\n\n/**\n * RepositorySelectModalComponent displays repository entries options and allows to select them.\n *\n * ```typescript\n * import { take } from 'rxjs/operators';\n * import { RepositorySelectModalComponent, ModalSelectionMode, RepositoryType } from '@c8y/ngx-components/repository/shared';\n *\n * const initialState = {\n * repositoryType: RepositoryType.FIRMWARE,\n * title: gettext('Install firmware'),\n * subTitle: gettext('Available firmwares matching the device type'),\n * icon: 'c8y-firmware',\n * mode: ModalSelectionMode.SINGLE,\n * labels: { ok: gettext('Install') },\n * disableSelected: false\n * };\n *\n * const modal = this.bsModal.show(RepositorySelectModalComponent, {\n * ignoreBackdropClick: true,\n * initialState\n * });\n *\n * modal.content.load.next();\n * modal.content.resultEmitter.pipe(take(1)).subscribe((firmware) => {\n * })\n * ```\n */\n\n@Component({\n selector: 'c8y-repository-select-modal',\n templateUrl: './repository-select-modal.component.html',\n providers: [\n {\n provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,\n useExisting: forwardRef(() => RepositorySelectModalComponent)\n }\n ],\n imports: [SelectModalComponent, ProductExperienceDirective, AsyncPipe]\n})\nexport class RepositorySelectModalComponent implements ProductExperienceEventSource {\n PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE_REPOSITORY_SHARED;\n /**\n * Optional\n * Allows to provide custom data.\n * ```typescript\n * import { from } from 'rxjs';\n *\n * const repositoryEntry = { name: 'ExampleEntry', type: 'c8y_Firmware' };\n * const versions = [{ c8y_Firmware: { version: '1.0.0', url: 'http://example.com' } }];\n *\n * const initialState = {repositoryEntriesWithVersions$: from({ ...repositoryEntry, versions })};\n * ```\n */\n repositoryEntriesWithVersions$: Observable<IManagedObject[]> = undefined;\n /**\n * Repository entry type.\n */\n repositoryType: RepositoryType.FIRMWARE | RepositoryType.SOFTWARE;\n /**\n * Optional\n * Allows to use custom badges templates.\n * ```typescript\n * import { gettext } from '@c8y/ngx-components';\n *\n * const badgeTemplates = { '=1': gettext('{{count}} version'), other: gettext('{{count}} versions') };\n * const initialState = { badgeTemplates };\n * ```\n */\n badgeTemplates = { '=1': gettext('{{count}} version'), other: gettext('{{count}} versions') };\n /**\n * Optional\n * Allows to provide custom modal title.\n */\n title: string = gettext('Select repository entry');\n /**\n * Optional\n * Allows to provide custom modal subtitle.\n */\n subTitle: string;\n /**\n * Loads the content of the modal.\n * Must be invoked by the modal's caller.\n */\n load: Subject<void> = new Subject();\n /**\n * Triggers an update of the item list emitted.\n */\n updateInstallableList$: Subject<IUpdateItemEvent<any>> = new Subject();\n /**\n * Optional\n * Emits a filter criteria object currently entered in the filter input.\n * Use it to filter the items if you use custom repositoryEntriesWithVersions$.\n */\n searchTerm: BehaviorSubject<FilterCriteria> = new BehaviorSubject({});\n /**\n * Optional\n * Allows to provide device type query to restrict search criteria.\n * Only takes effect when repositoryEntriesWithVersions$ is not provided,\n * otherwise modal's caller have to provide already filtered data in the repositoryEntriesWithVersions$.\n */\n deviceTypeQuery: any = {};\n /**\n * Optional\n * Allows to provide query to restrict search criteria.\n * Only takes effect when repositoryEntriesWithVersions$ is not provided,\n * otherwise modal's caller have to provide already filtered data in the repositoryEntriesWithVersions$.\n */\n searchQuery: any = {};\n /**\n * Optional\n * Allows to provide custom labels for the buttons responsible for confirm/dismiss modal actions.\n */\n labels: ModalLabels = { ok: gettext('Save') };\n /**\n * Optional\n * Allows to hide the name filter input field.\n * By default, the filter input field is displayed.\n */\n showFilter = true;\n /**\n * Optional\n * Allows to show a warning that the search criteria should be narrowed down.\n * By default, this warning is hidden.\n */\n areMoreEntries = false;\n /**\n * Optional\n * Allows to display a more specific than the default message in case there are no items to display.\n */\n noItemsMessage: string;\n /**\n * Optional\n * Allows to pass the array of items. Each item from this array will be marked as selected in the modal.\n */\n selected: SelectedRepositoryBinary[];\n /**\n * Emits whenever a new repository binary have been selected in the modal.\n */\n onChoiceUpdated: EventEmitter<ISelectModalObject> = new EventEmitter<ISelectModalObject>();\n /**\n * Emits the list of selected options.\n */\n resultEmitter: EventEmitter<SelectedRepositoryBinary[]> = new EventEmitter<\n SelectedRepositoryBinary[]\n >();\n /**\n * Optional\n * Allows to change selection mode.\n * Supported options:\n * * single: only single option can be selected.\n * * multiple: multiple options can be selected.\n */\n mode: ModalSelectionMode = ModalSelectionMode.SINGLE;\n /**\n * Optional\n * Allows to use custom icon in the modal header.\n */\n icon: string;\n /**\n * Allows to block selection of the other versions from the same repository entry.\n */\n disableSelected = true;\n /**\n * Allows to hide items that have no options available.\n */\n hideEmptyItems: boolean;\n\n filterCriteria: FilterCriteria = {};\n\n repositoryEntries$: Observable<ISelectModalObject[]> = this.load.pipe(\n switchMap(() => this.repositoryEntriesWithVersions$),\n mergeMap(mos => this.aggregate(mos)),\n tap(items => {\n this.areMoreEntries = items.length >= this.PAGE_SIZE ? true : false;\n }),\n tap(items => (this.repositoryEntries = items))\n );\n\n modalEntries: Observable<ISelectModalObject[]> = merge(\n this.repositoryEntries$,\n this.updateInstallableList$.pipe(\n map((updateItemEvent: IUpdateItemEvent<any>) => {\n const itemToUpdate: ISelectModalObject = (this.repositoryEntries || []).find(\n item => item.groupId === updateItemEvent.object.groupId\n );\n if (itemToUpdate) {\n const optionToUpdate: ISelectModalOption = (itemToUpdate.options || []).find(\n option => option.obj.id === (updateItemEvent.object as any).selectedId\n );\n if (optionToUpdate) {\n optionToUpdate.template = updateItemEvent.template;\n if (updateItemEvent.mapper) {\n optionToUpdate.obj = updateItemEvent.mapper(optionToUpdate.obj);\n }\n }\n }\n return this.repositoryEntries;\n })\n )\n );\n\n /**\n * Optional\n * Allows to provide additional template that will be rendered in the\n * filters block on top of the results list in the select modal.\n */\n additionalFilterTemplate: TemplateRef<any>;\n\n productExperienceEvent: ProductExperienceEvent;\n\n private PAGE_SIZE = 100;\n private queriesUtil: QueriesUtil;\n private repositoryEntries: ISelectModalObject[];\n\n constructor(\n private repositoryService: RepositoryService,\n private translateService: TranslateService\n ) {\n this.queriesUtil = new QueriesUtil();\n }\n\n ngOnInit() {\n if (!this.repositoryType) {\n throw new Error('Repository type must be defined');\n }\n\n if (!this.repositoryEntriesWithVersions$) {\n this.repositoryEntriesWithVersions$ = of(1).pipe(\n mergeMap(() =>\n this.repositoryService.listRepositoryEntries(this.repositoryType, {\n query: this.queriesUtil.addAndFilter(\n this.deviceTypeQuery,\n has(this.searchQuery, 'name')\n ? { ...this.searchQuery, name: `*${this.searchQuery.name}*` }\n : this.searchQuery\n ),\n params: { pageSize: this.PAGE_SIZE }\n })\n ),\n map(({ data }) => data),\n map(mos => this.getAndAssignRepositoryBinaries(mos))\n );\n }\n }\n\n getAndAssignRepositoryBinaries(mos: IManagedObject[]) {\n mos.forEach(mo => {\n mo.versions = this.repositoryService.listAllVersions(mo);\n });\n return mos;\n }\n\n search(filterCriteria: FilterCriteria) {\n this.filterCriteria = omitBy(\n {\n ...this.filterCriteria,\n ...filterCriteria\n },\n isEmpty\n );\n\n if (!isEqual(this.filterCriteria, this.searchQuery)) {\n this.searchTerm.next(this.filterCriteria);\n this.searchQuery = this.filterCriteria;\n this.load.next();\n }\n }\n\n result(selectedItems: SelectedRepositoryBinary[]) {\n this.resultEmitter.emit(selectedItems);\n }\n\n async aggregate(mos: IManagedObject[]): Promise<ISelectModalObject[]> {\n const repositoryType = this.repositoryType;\n const selectedItems: SelectedRepositoryBinary[] = this.selected;\n\n return Promise.all(\n mos.map(async repositoryEntry => {\n const options: ISelectModalOption[] = this.getSelectModalOptions(\n await this.repositoryService.fetchAllItemsFromList(repositoryEntry.versions),\n selectedItems,\n repositoryEntry as RepositoryCategory,\n repositoryType\n );\n const selectModalObject = this.getSelectModalObject(\n repositoryEntry as RepositoryCategory,\n options\n );\n\n return selectModalObject;\n })\n );\n }\n\n getSelectModalOptions(\n versions: RepositoryBinary[],\n selectedItems: SelectedRepositoryBinary[],\n repositoryEntry: RepositoryCategory,\n repositoryType: RepositoryType\n ): ISelectModalOption[] {\n const selectModalOptions: ISelectModalOption[] = [];\n versions.forEach(repositoryBinary => {\n const isSelected: boolean = this.isBinaryRepositorySelected(\n selectedItems,\n repositoryEntry,\n repositoryBinary,\n repositoryType\n );\n\n const { version } = repositoryBinary[`${repositoryType}`];\n const bodyValue =\n version || `(${this.translateService.instant(gettext('not specified`version`'))})`;\n const bodyClass = version ? '' : 'text-muted';\n selectModalOptions.push({\n body: [\n {\n value: bodyValue,\n class: bodyClass\n }\n ],\n obj: {\n id: repositoryBinary.id,\n name: repositoryEntry.name,\n version,\n ...(get(repositoryBinary, 'c8y_Patch.dependency') && {\n dependency: get(repositoryBinary, 'c8y_Patch.dependency')\n }),\n ...(get(repositoryBinary, 'c8y_Patch') && { isPatch: true }),\n url: repositoryBinary[`${repositoryType}`].url,\n softwareType: repositoryEntry.softwareType\n },\n selected: isSelected\n });\n });\n return selectModalOptions;\n }\n\n isBinaryRepositorySelected(\n selectedItems: SelectedRepositoryBinary[],\n repositoryEntry: RepositoryCategory,\n repositoryBinary: RepositoryBinary,\n repositoryType: RepositoryType\n ): boolean {\n const isSelected = selectedItems\n ? selectedItems.filter(\n repositoryFragment =>\n repositoryFragment.name === repositoryEntry.name &&\n repositoryFragment.version === repositoryBinary[`${repositoryType}`].version\n ).length > 0\n : false;\n\n return isSelected;\n }\n\n getSelectModalObject(\n repositoryEntry: RepositoryCategory,\n options: ISelectModalOption[]\n ): ISelectModalObject {\n const label =\n options.length === 1\n ? this.translateService.instant(this.badgeTemplates['=1'], { count: options.length })\n : this.translateService.instant(this.badgeTemplates.other, { count: options.length });\n\n const selectModalObject: ISelectModalObject = {\n groupId: repositoryEntry.id,\n body: [\n { value: repositoryEntry.name, class: 'text-truncate' },\n { value: repositoryEntry.description, class: 'text-truncate text-muted' }\n ],\n additionalInformation: { value: label, class: 'label label-info' },\n options\n };\n\n return selectModalObject;\n }\n}\n","<c8y-select-modal\n [icon]=\"icon\"\n [title]=\"title\"\n [subTitle]=\"subTitle\"\n [items]=\"modalEntries | async\"\n [mode]=\"mode\"\n [disableSelected]=\"disableSelected\"\n [labels]=\"labels\"\n [showFilter]=\"showFilter\"\n [additionalFilterTemplate]=\"additionalFilterTemplate\"\n [areMoreEntries]=\"areMoreEntries\"\n [noItemsMessage]=\"noItemsMessage\"\n [hideEmptyItems]=\"hideEmptyItems\"\n (search)=\"search({ name: $event })\"\n (onChoiceUpdated)=\"onChoiceUpdated.emit($event)\"\n (result)=\"result($event)\"\n c8yProductExperience\n inherit\n suppressDataOverriding\n [actionData]=\"{ component: PRODUCT_EXPERIENCE.SHARED.COMPONENTS.REPOSITORY_SELECT_MODAL }\"\n></c8y-select-modal>\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n FormsModule\n} from '@angular/forms';\nimport { IManagedObject, IResultList, QueriesUtil } from '@c8y/client';\nimport {\n ForOfFilterPipe,\n gettext,\n toObservable,\n TypeaheadComponent,\n ListItemComponent,\n ForOfDirective,\n HighlightComponent,\n C8yTranslateDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { isEmpty, uniqBy } from 'lodash-es';\nimport { BehaviorSubject, interval, Observable, pipe } from 'rxjs';\nimport { debounce, map, shareReplay, switchMap, tap } from 'rxjs/operators';\nimport { RepositoryType } from '../repository.model';\nimport { RepositoryService } from '../repository.service';\nimport { NgStyle, NgIf, AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-software-type',\n templateUrl: 'software-type.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => SoftwareTypeComponent)\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SoftwareTypeComponent),\n multi: true\n }\n ],\n imports: [\n TypeaheadComponent,\n FormsModule,\n NgStyle,\n NgIf,\n ListItemComponent,\n ForOfDirective,\n HighlightComponent,\n C8yTranslateDirective,\n AsyncPipe,\n C8yTranslatePipe\n ]\n})\nexport class SoftwareTypeComponent implements OnInit, ControlValueAccessor, Validator {\n @Input() softwareTypeMO: IManagedObject;\n\n @Input() disabled: boolean;\n\n @Input() style;\n\n @Input()\n required = true;\n\n @Input()\n placeholder: string = this.translateService.instant(gettext('e.g. {{ example }}'), {\n example: 'yum'\n });\n\n @Input()\n emitResultsOnly = false;\n\n @Input()\n showBtnInNotFoundMessage = true;\n\n @Input()\n allowFreeEntries = true;\n\n @Input()\n showClearSelectionOption = false;\n\n @Input()\n clearSelectionOptionLabel: string = gettext('All software types');\n\n @Input()\n set presetSoftwareTypes(\n types: string[] | IManagedObject[] | Observable<string[] | IManagedObject[]>\n ) {\n if (!isEmpty(types)) {\n this.presetSoftwareTypes$ = toObservable(types).pipe(\n map(types =>\n types.map(softwareType =>\n typeof softwareType === 'string'\n ? ({ softwareType } as unknown as IManagedObject)\n : softwareType\n )\n )\n );\n }\n }\n\n @ViewChild('deviceSoftwareTypeModel') deviceSoftwareTypeModel: TypeaheadComponent;\n\n @ViewChild('notFoundTypeAddNewTemplate', { static: true })\n notFoundTypeAddNewTemplate: TemplateRef<unknown>;\n\n @ViewChild('notFoundTypeTemplate', { static: true })\n notFoundTypeTemplate: TemplateRef<unknown>;\n\n @Output() onSelectSoftware: EventEmitter<IManagedObject> = new EventEmitter<IManagedObject>();\n\n notFoundTemplateToUse: TemplateRef<unknown>;\n\n filterPipe: ForOfFilterPipe<IManagedObject> = pipe(tap());\n softwaresResult$: Observable<IResultList<IManagedObject>>;\n search$: BehaviorSubject<string> = new BehaviorSubject(null);\n softwaresResult: IResultList<IManagedObject>;\n\n private queriesUtil: QueriesUtil = new QueriesUtil();\n private softwareTypes: Set<string> = new Set();\n private presetSoftwareTypes$: Observable<IManagedObject[]>;\n\n constructor(\n private repositoryService: RepositoryService,\n public changeDetectorRef: ChangeDetectorRef,\n private translateService: TranslateService\n ) {\n this.filterPipe = pipe(map(this.removeDuplicatesBySoftwareType.bind(this)));\n }\n\n ngOnInit(): void {\n this.softwaresResult$ = this.search$.pipe(\n debounce(() => interval(300)),\n tap(() => this.softwareTypes.clear()),\n switchMap((searchString: string) => {\n if (!this.emitResultsOnly || !searchString) {\n this.onSelectSoftware.emit(this.softwareTypeMO);\n }\n return this.getSoftwareByTypeResult(searchString);\n }),\n shareReplay(1)\n );\n\n this.notFoundTemplateToUse = this.showBtnInNotFoundMessage\n ? this.notFoundTypeAddNewTemplate\n : this.notFoundTypeTemplate;\n }\n\n getSoftwareByTypeResult(searchString: string) {\n return this.presetSoftwareTypes$\n ? this.searchInPreset(searchString)\n : this.searchInRepository(searchString);\n }\n\n selectSoftware(software) {\n this.softwareTypeMO = software;\n this.onSelectSoftware.emit(software);\n this.deviceSoftwareTypeModel.searchControlModel.control.markAsDirty();\n (this.deviceSoftwareTypeModel as any).onChange(software);\n }\n\n clearSoftware() {\n this.softwareTypeMO = undefined;\n this.search$.next('');\n this.onSelectSoftware.emit();\n }\n\n resetInput() {\n this.deviceSoftwareTypeModel.reset();\n }\n\n writeValue(value: any): void {\n this.deviceSoftwareTypeModel.writeValue(value);\n }\n\n registerOnChange(fn: any): void {\n this.deviceSoftwareTypeModel.registerOnChange(fn);\n }\n\n registerOnTouched(fn: any): void {\n this.deviceSoftwareTypeModel.registerOnTouched(fn);\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.deviceSoftwareTypeModel.setDisabledState(isDisabled);\n }\n\n validate(control: AbstractControl<any, any>): ValidationErrors {\n return this.deviceSoftwareTypeModel.validate(control);\n }\n\n private searchInPreset(searchString: string): Observable<IResultList<IManagedObject>> {\n return this.presetSoftwareTypes$.pipe(\n map(types => ({\n data: types.filter(type => !searchString || type.softwareType.indexOf(searchString) > -1),\n res: undefined,\n statistics: { currentPage: 1, pageSize: types?.length, totalPages: 1 }\n }))\n );\n }\n\n private searchInRepository(searchString: string) {\n let query = this.queriesUtil.prependOrderbys({}, [{ softwareType: 1 }]);\n const filter = !!searchString\n ? {\n softwareType: {\n __eq: `*${searchString}*`\n }\n }\n : {\n __has: 'softwareType'\n };\n query = this.queriesUtil.addAndFilter(query, filter);\n\n return this.repositoryService.listRepositoryEntries(RepositoryType.SOFTWARE, {\n query,\n params: {\n pageSize: 200\n }\n });\n }\n\n private removeDuplicatesBySoftwareType(list: IManagedObject[]): IManagedObject[] {\n const uniqueBySoftwareType: IManagedObject[] = uniqBy(list, 'softwareType').filter(\n (sw: IManagedObject) => !this.softwareTypes.has(sw.softwareType)\n );\n uniqueBySoftwareType.forEach((sw: IManagedObject) => this.softwareTypes.add(sw.softwareType));\n return uniqueBySoftwareType;\n }\n}\n","<c8y-typeahead\n [(ngModel)]=\"softwareTypeMO\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n name=\"softwareType\"\n [placeholder]=\"placeholder\"\n [allowFreeEntries]=\"allowFreeEntries\"\n #deviceSoftwareTypeModel\n (onSearch)=\"search$.next($event)\"\n displayProperty=\"softwareType\"\n [ngStyle]=\"style\"\n>\n <c8y-li\n *ngIf=\"showClearSelectionOption\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"clearSoftware()\"\n [active]=\"!softwareTypeMO?.softwareType\"\n >\n <span>{{ clearSelectionOptionLabel | translate }}</span>\n </c8y-li>\n <c8y-li\n *c8yFor=\"\n let software of softwaresResult$;\n pipe: filterPipe;\n loadMore: 'auto';\n notFound: notFoundTemplateToUse\n \"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"selectSoftware(software)\"\n [active]=\"softwareTypeMO?.softwareType === software.softwareType\"\n >\n <c8y-highlight\n [text]=\"software.softwareType || '--'\"\n [pattern]=\"search$ | async\"\n ></c8y-highlight>\n </c8y-li>\n <ng-template #notFoundTypeAddNewTemplate>\n <c8y-li class=\"bg-level-2 p-8\" *ngIf=\"(search$ | async)?.length > 0\">\n <span translate>No match found.</span>\n <button\n title=\"{{ 'Add new`software type`' | translate }}\"\n type=\"button\"\n class=\"btn btn-primary btn-xs m-l-8\"\n translate\n >\n Add new`software type`\n </button>\n </c8y-li>\n </ng-template>\n <ng-template #notFoundTypeTemplate>\n <c8y-li\n class=\"bg-level-2 p-8\"\n *ngIf=\"(search$ | async)?.length > 0 && (softwaresResult$ | async)?.data?.length === 0\"\n >\n <span translate>No match found. Refine your search terms or check your spelling.</span>\n </c8y-li>\n </ng-template>\n</c8y-typeahead>\n","import { NgModule } from '@angular/core';\nimport { OperationRealtimeService } from '@c8y/ngx-components';\nimport { FileDownloadComponent } from './file-download/file-download.component';\nimport { RepositoryService } from './repository.service';\nimport { RepositorySelectModalComponent } from './select-modal/repository-select-modal.component';\nimport { SoftwareTypeComponent } from './software-type/software-type.component';\n\n@NgModule({\n imports: [RepositorySelectModalComponent, FileDownloadComponent, SoftwareTypeComponent],\n providers: [RepositoryService, OperationRealtimeService],\n exports: [RepositorySelectModalComponent, FileDownloadComponent, SoftwareTypeComponent]\n})\nexport class SharedRepositoryModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_map","i1","i2","i3.RepositoryService","i4","CommonModule","i2.RepositoryService","C8yCommonModule","i1.RepositoryService","i3"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAOM,MAAO,qBAAsB,SAAQ,UAAU,CAAA;AACnD,IAAA,WAAA,CAAY,mBAAmF,EAAA;QAC7F,KAAK,CAAC,mBAAmB,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,aAAa;AACzB,QAAA,IAAI,CAAC,IAAI,GAAG,aAAa;AACzB,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;AAEpC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACtB,IAAI,CAAC,eAAe,GAAG;YACrB,MAAM,EAAE,iCAAiC,CAAC;AACxC,gBAAA,GAAG,EAAE,cAAc;gBACnB,KAAK,EAAE,mBAAmB,EAAE,WAAW,IAAI,OAAO,CAAC,6BAA6B,CAAC;AACjF,gBAAA,OAAO,EAAE,OAAO,CAAC,uBAAuB,CAAC;AACzC,gBAAA,OAAO,EAAE,OAAO,CAAC,+BAA+B,CAAC;gBACjD,WAAW,EAAE,mBAAmB,EAAE,WAAW,IAAI,OAAO,CAAC,cAAc;aACxE,CAAC;AACF,YAAA,SAAS,CAAC,KAAU,EAAA;gBAClB,MAAM,MAAM,GAAQ,EAAE;AACtB,gBAAA,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE;oBAC7B,MAAM,CAAC,WAAW,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE;;AAEnD,gBAAA,OAAO,MAAM;;SAEhB;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACpB,IAAI,CAAC,aAAa,GAAG;YACnB,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;SACzC;;AAEJ;;MCxBY,+BAA+B,CAAA;AAG1C,IAAA,WAAA,CAAmB,OAA4B,EAAA;QAA5B,IAAO,CAAA,OAAA,GAAP,OAAO;;IAE1B,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC;;+GAN9D,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb5C,iNAQA,EDGY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,kOAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAE1D,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;+BAEE,+BAA+B,EAAA,UAAA,EAC7B,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,iNAAA,EAAA;;;AEHlE,MAAO,oBAAqB,SAAQ,UAAU,CAAA;AAClD,IAAA,WAAA,CACE,mBAIC,EAAA;QAED,KAAK,CAAC,mBAAmB,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,YAAY;QACxB,IAAI,CAAC,IAAI,GAAG,mBAAmB,EAAE,IAAI,IAAI,iBAAiB;AAC1D,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;AACpC,QAAA,IAAI,CAAC,qBAAqB,GAAG,+BAA+B;AAE5D,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QAEtB,IAAI,CAAC,eAAe,GAAG;AACrB,YAAA,MAAM,EAAE;AACN,gBAAA,GAAG,iCAAiC,CAAC;AACnC,oBAAA,GAAG,EAAE,OAAO;oBACZ,KAAK,EAAE,mBAAmB,EAAE,WAAW,IAAI,OAAO,CAAC,6BAA6B,CAAC;AACjF,oBAAA,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC;AAClC,oBAAA,OAAO,EAAE,OAAO,CAAC,+BAA+B,CAAC;AACjD,oBAAA,WAAW,EAAE,mBAAmB,EAAE,WAAW,IAAI,WAAW;AAC5D,oBAAA,QAAQ,EAAE;iBACX,CAAC;AACF,gBAAA;AACE,oBAAA,GAAG,EAAE,cAAc;AACnB,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,eAAe,EAAE;AACf,wBAAA,KAAK,EAAE,OAAO,CAAC,gBAAgB;AAChC;AACF;AACF,aAAA;AACD,YAAA,SAAS,CAAC,KAAU,EAAA;AAClB,gBAAA,MAAM,MAAM,GAAQ,EAAE,IAAI,EAAE,EAAE,EAAE;AAChC,gBAAA,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE;oBACvB,MAAM,CAAC,IAAI,GAAG;AACZ,wBAAA,iBAAiB,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK;qBACvC;;AAEH,gBAAA,IAAI,KAAK,CAAC,YAAY,EAAE;oBACtB,MAAM,CAAC,IAAI,GAAG;wBACZ,GAAG,MAAM,CAAC,IAAI;AACd,wBAAA,IAAI,EAAE;AACJ,4BAAA,KAAK,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACnC,4BAAA,iBAAiB,EAAE;AACpB;qBACF;;AAEH,gBAAA,OAAO,MAAM;;SAEhB;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACpB,IAAI,CAAC,aAAa,GAAG;YACnB,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;SACzC;;AAEJ;;IChEW;AAAZ,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,UAAA,CAAA,GAAA,cAAyB;AACzB,IAAA,cAAA,CAAA,UAAA,CAAA,GAAA,cAAyB;AACzB,IAAA,cAAA,CAAA,eAAA,CAAA,GAAA,uBAAuC;AACvC,IAAA,cAAA,CAAA,SAAA,CAAA,GAAA,aAAuB;AACzB,CAAC,EALW,cAAc,KAAd,cAAc,GAKzB,EAAA,CAAA,CAAA;AAEY,MAAA,uBAAuB,GAAG;AACrC,IAAA,CAAC,cAAc,CAAC,QAAQ,GAAG,oBAAoB;AAC/C,IAAA,CAAC,cAAc,CAAC,QAAQ,GAAG,oBAAoB;AAC/C,IAAA,CAAC,cAAc,CAAC,aAAa,GAAG;;IA0GtB;AAAZ,CAAA,UAAY,4BAA4B,EAAA;AACtC,IAAA,4BAAA,CAAA,eAAA,CAAA,GAAA,sBAAsC;AACtC,IAAA,4BAAA,CAAA,iBAAA,CAAA,GAAA,wBAA0C;AAC1C,IAAA,4BAAA,CAAA,QAAA,CAAA,GAAA,mBAA4B;AAC5B,IAAA,4BAAA,CAAA,aAAA,CAAA,GAAA,uBAAqC;AACvC,CAAC,EALW,4BAA4B,KAA5B,4BAA4B,GAKvC,EAAA,CAAA,CAAA;AAMY,MAAA,oCAAoC,GAAG;AAClD,IAAA,QAAQ,EAAE;AACR,QAAA,MAAM,EAAE;AACN,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE;AACb,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,kBAAkB,EAAE,oBAAoB;AACxC,YAAA,uBAAuB,EAAE,yBAAyB;AAClD,YAAA,oBAAoB,EAAE;AACvB,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,sBAAsB,EAAE,sBAAsB;AAC9C,YAAA,sBAAsB,EAAE,sBAAsB;AAC9C,YAAA,qBAAqB,EAAE,0BAA0B;AACjD,YAAA,oBAAoB,EAAE,yBAAyB;AAC/C,YAAA,eAAe,EAAE;AAClB,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,YAAY,EAAE,aAAa;AAC3B,YAAA,oBAAoB,EAAE,oBAAoB;AAC1C,YAAA,aAAa,EAAE;AAChB;AACF,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,MAAM,EAAE;AACN,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE;AACb,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,kBAAkB,EAAE,oBAAoB;AACxC,YAAA,uBAAuB,EAAE,0BAA0B;AACnD,YAAA,mBAAmB,EAAE,qBAAqB;AAC1C,YAAA,oBAAoB,EAAE;AACvB,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,4BAA4B,EAAE,2BAA2B;AACzD,YAAA,4BAA4B,EAAE,2BAA2B;AACzD,YAAA,kCAAkC,EAAE;AACrC,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,YAAY,EAAE,aAAa;AAC3B,YAAA,oBAAoB,EAAE,oBAAoB;AAC1C,YAAA,kBAAkB,EAAE,kBAAkB;AACtC,YAAA,aAAa,EAAE,cAAc;AAC7B,YAAA,gCAAgC,EAAE;AACnC;AACF,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,UAAU,EAAE;AACV,YAAA,uBAAuB,EAAE,yBAAyB;AAClD,YAAA,0BAA0B,EAAE;AAC7B;AACF;;;MCzHU,iBAAiB,CAAA;AAM5B,IAAA,WAAA,CACU,SAA2B,EAC3B,eAAuC,EACvC,SAA2B,EAC3B,KAAmB,EACnB,KAAmB,EACnB,iBAA2C,EAC3C,WAA+B,EAC/B,eAAgC,EAChC,mBAAwC,EAAA;QARxC,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;AAdpB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;AACtB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;AAehD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,EAAE;AACpC,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;AAGtE;;;;AAIG;IACH,qBAAqB,CACnB,IAAoB,EACpB,OAaC,EAAA;QAED,MAAM,YAAY,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAClC,QAAA,MAAM,cAAc,GAAG,EAAE,IAAI,EAAE;AAC/B,QAAA,MAAM,aAAa,GAAG,EAAE,KAAK,EAAE,CAAA,GAAA,CAAK,EAAE;QACtC,IAAI,OAAO,GAAG,EAAE;QAEhB,IAAI,SAAS,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,EAAE;AAChD,QAAA,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;AACtD,YAAA,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC;;QAG9E,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,EAAE,cAAc,CAAC;AAEpE,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,iBAAiB,EAAE;YACxC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,iBAAiB;YAC7D,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,KAAK,EAAE,CAAC,QAAQ,GAAG,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,CAAG,EAAE,CAAC,CAAC,EAAE;YAC3F,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC;;AAGhE,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE;;AAElC,YAAA,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,WAAW,CAAG,CAAA,CAAA,EAAE,CAAC;;AAG5F,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE;AACjC,YAAA,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;;AAGhF,QAAA,OAAO,GAAG;YACR,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC;AAC7C,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,cAAc,EAAE,IAAI;YACpB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE;SACtC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;;IAGrC,MAAM,MAAM,CAAC,KAAiB,EAAE,IAAoB,EAAE,KAA8B,EAAE,EAAA;QACpF,QAAQ,IAAI;YACV,KAAK,cAAc,CAAC,QAAQ;YAC5B,KAAK,cAAc,CAAC,QAAQ;gBAC1B,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC;YAEjD,KAAK,cAAc,CAAC,aAAa;AAC/B,gBAAA,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;AACnB,oBAAA,QAAQ,EAAE;wBACR,EAAE,EAAE,EAAE,CAAC,EAAE;wBACT,IAAI,EAAE,KAAK,CAAC;AACb,qBAAA;oBACD,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;oBAC1C,IAAI,EAAE,KAAK,CAAC;AACb,iBAAA,CAAC;gBAEF,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,EAAE;AAC9B,oBAAA,KAAK,CAAC,UAAU,GAAG,IAAI;;gBAEzB,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,EAAE;AAC5B,oBAAA,KAAK,CAAC,iBAAiB,GAAG,IAAI;;gBAGhC,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC;AAEjE,gBAAA,IAAI,EAAE,CAAC,GAAG,EAAE;oBACV,MAAM,YAAY,GAAG,CAAC,MAAM,gBAAgB,EAAE,GAAG;oBACjD,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,EAAE,CAAC,GAAG,CAAC;;AAGjD,gBAAA,OAAO,gBAAgB;;;AAI7B,IAAA,MAAM,sBAAsB,CAC1B,KAAiB,EACjB,IAAoB,EAAA;AAEpB,QAAA,IAAI,MAA4B;AAChC,QAAA,IAAI,SAAiB;AACrB,QAAA,IAAI,eAAmC;AACvC,QAAA,IAAI,gBAAiD;QACrD,MAAM,GAAG,GAAG,EAAE;AACd,QAAA,MAAM,EACJ,QAAQ,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EACtB,GAAG,KAAK;AACT,QAAA,IAAI;YACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;YAEtD,IAAI,IAAI,EAAE;AACR,gBAAA,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC;gBAC5D,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM;AAC7B,gBAAA,IAAI,IAAI,KAAK,cAAc,CAAC,aAAa,EAAE;AACzC,oBAAA,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS;;AAE9B,gBAAA,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;;iBACX;gBACL,SAAS,GAAG,GAAG;;YAGjB,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,MAAM,IAAI,CAAC,6BAA6B,CACnE,EAAE,GAAG,KAAK,EAAE,GAAG,WAAW,EAAE,EAC5B,IAAI,CACL;AACD,YAAA,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE;AACrB,gBAAA,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;;AAG3B,YAAA,IAAI,IAAI,KAAK,cAAc,CAAC,aAAa,EAAE;gBACzC,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAC7D,EAAE,GAAG,KAAK,EAAE,GAAG,WAAW,EAAE,EAC5B,SAAS,EACT,IAAI,EACJ,eAAe,CAChB;AACD,gBAAA,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;;YAG5B,IAAI,IAAI,EAAE;gBACR,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,MAAM,EAAE,eAAe,CAAC;;AAGlE,YAAA,OAAO,eAAe;;QACtB,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;YACjB,IAAI,CAAC,QAAQ,EAAE;;AAGf,YAAA,MAAM,KAAK;;;IAIf,UAAU,CAAC,IAAU,EAAE,MAA+B,EAAA;QACpD,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;;AAGlD,IAAA,MAAM,6BAA6B,CACjC,KAAiB,EACjB,IAAoB,EAAA;AAEpB,QAAA,MAAM,EACJ,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EACtB,WAAW,EACX,UAAU,EACV,UAAU,EACV,MAAM,EACP,GAAG,KAAK;AAET,QAAA,MAAM,EAAE,GAAG;YACT,EAAE;YACF,IAAI;YACJ,WAAW;YACX,IAAI;YACJ;SACD;QAED,IAAI,UAAU,IAAI,IAAI,KAAK,cAAc,CAAC,aAAa,EAAE;AACvD,YAAA,GAAG,CAAC,EAAE,EAAE,iBAAiB,EAAE,UAAU,CAAC;;AAGxC,QAAA,IAAI,CAAC,UAAU,IAAI,EAAE,KAAK,IAAI,KAAK,cAAc,CAAC,aAAa,EAAE;AAC/D,YAAA,GAAG,CAAC,EAAE,EAAE,YAAY,EAAE,UAAU,CAAC;;AAGnC,QAAA,IAAI,KAAK,CAAC,YAAY,EAAE;YACtB,GAAG,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC;;AAG1D,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,EAAE,KAAK,IAAI,KAAK,cAAc,CAAC,aAAa,EAAE;YAC5E,GAAG,CAAC,EAAE,EAAE,mBAAmB,EAAE,KAAK,CAAC,iBAAiB,CAAC;;AAGvD,QAAA,IAAI,IAAI,KAAK,cAAc,CAAC,aAAa,EAAE;YACzC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC;;AAG7B,QAAA,OAAO;cACF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;cACxB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAA0C;;AAGzE,IAAA,sBAAsB,CACpB,KAAiB,EACjB,SAAiB,EACjB,IAAoB,EACpB,MAA0B,EAAA;AAE1B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC;QAEjE,OAAO,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,EAAE,MAAM,CAEpD;;AAGH,IAAA,yBAAyB,CAAC,KAAiB,EAAE,SAAiB,EAAE,IAAoB,EAAA;QAClF,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,KAAK;AAC/D,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,IAAI,EAAE,uBAAuB,CAAC,IAAI,CAAC;YACnC,CAAC,IAAI,GAAG;AACN,gBAAA,GAAG,EAAE;AACN,aAAA;YACD;SACD;QAED,IAAI,UAAU,EAAE;YACd,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC;YAC5C,MAAM,CAAC,MAAM,EAAE;AACb,gBAAA,SAAS,EAAE;AACT,oBAAA,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC;AACrC;AACF,aAAA,CAAC;;aACG;YACL,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC;;AAEzC,QAAA,OAAO,MAAM;;AAGf,IAAA,MAAM,UAAU,CACd,gBAAgB,EAChB,MAA4B,EAC5B,eAAoC,EAAA;QAEpC,IAAI,gBAAgB,EAAE;AACpB,YAAA,MAAM,EAAE,EAAE,EAAE,kBAAkB,EAAE,GAAG,gBAAgB;YACnD,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,MAAM;gBAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,CAAC;;;;YAElE,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,eAAe,CAAC;;AAGzE,IAAA,OAAO,CAAC,WAA0B,EAAA;AAChC,QAAA,WAAW,CAAC,OAAO,CAAC,EAAE,IAAG;AACvB,YAAA,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE;YAC3B,WAAW,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;AAC/E,SAAC,CAAC;;AAGJ,IAAA,MAAM,CAAC,MAAmB,EAAA;AACxB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;;IAG9D,QAAQ,GAAA;AACN,QAAA,MAAM,GAAG,GAAG,OAAO,CAAC,gBAAgB,CAAC;AACrC,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;;AAGxB,IAAA,qBAAqB,CAAC,KAAqB,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;AAC7B,YAAA,OAAO,EAAE,CAAC,CAAC,CAAC;;AAEd,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CACzE,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC,aAAa,CAAC,CAC1C;;AAGH,IAAA,oBAAoB,CAAC,EAAoB,EAAA;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE,sBAAsB,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE,sBAAsB,CAAC;;AAG7F,IAAA,OAAO,CAAC,EAAoB,EAAA;QAC1B,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,sBAAsB,CAAC;;IAG1C,sBAAsB,CAAC,KAAqB,EAAE,WAA2B,EAAA;AACvE,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE;AACnC,YAAA,OAAO,EAAE,CAAC,CAAC,CAAC;;AAEd,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CACvF,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC,aAAa,CAAC,CAC1C;;AAGH,IAAA,aAAa,CAAC,KAA8B,EAAA;AAC1C,QAAA,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;;AAG3B;;;;;AAKG;AACH,IAAA,eAAe,CAAC,KAA8B,EAAE,MAAM,GAAG,EAAE,EAAA;AACzD,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;AAC7B,YAAA,OAAO,IAAI,CAAC,sCAAsC,CAAC,KAAK,CAAC;;AAG3D,QAAA,MAAM,oBAAoB,GAAG;AAC3B,YAAA,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,CAAC,EAAE,mBAAmB,EAAE,CAAC,CAAC,EAAE;SACxC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,oBAAoB,EAAE,MAAM,CAAC;;AAG/D;;;;;AAKG;AACH,IAAA,gBAAgB,CAAC,KAA8B,EAAE,MAAM,GAAG,EAAE,EAAA;AAC1D,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;AAC7B,YAAA,OAAO,IAAI,CAAC,sCAAsC,CAAC,KAAK,CAAC;;AAG3D,QAAA,MAAM,qBAAqB,GAAG;AAC5B,YAAA,QAAQ,EAAE;AACR,gBAAA,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW;AAC5B,aAAA;YACD,SAAS,EAAE,CAAC,EAAE,mBAAmB,EAAE,CAAC,CAAC,EAAE;SACxC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,qBAAqB,EAAE,MAAM,CAAC;;AAGhE;;;;;;AAMG;AACH,IAAA,iBAAiB,CAAC,KAAqB,EAAE,WAAoC,EAAE,MAAM,GAAG,EAAE,EAAA;AACxF,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,GAAG,CAAC,WAAW,EAAE,sBAAsB,CAAC;AAC9F,QAAA,MAAM,kBAAkB,GAAG;AACzB,YAAA,QAAQ,EAAE;AACR,gBAAA,sBAAsB,EAAE;AACzB,aAAA;YACD,SAAS,EAAE,CAAC,EAAE,mBAAmB,EAAE,CAAC,CAAC,EAAE;SACxC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,kBAAkB,EAAE,MAAM,CAAC;;AAG7D;;;;;;;AAOG;AACH,IAAA,yBAAyB,CAAC,KAAqB,EAAE,WAA2B,EAAE,MAAM,GAAG,EAAE,EAAA;AACvF,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;YAC7B,OAAO,OAAO,CAAC,OAAO,CAAC;AACrB,gBAAA,IAAI,EAAE;oBACJ,MAAM,CAAC,MAAM,CACX;AACE,wBAAA,YAAY,EAAE;4BACZ,OAAO,EAAE,KAAK,CAAC,OAAO;4BACtB,GAAG,EAAE,KAAK,CAAC;AACZ;AACF,qBAAA,EACD,KAAK;AAER;AACF,aAAA,CAAC;;AAGJ,QAAA,MAAM,kBAAkB,GAAG;AACzB,YAAA,QAAQ,EAAE;AACR,gBAAA,IAAI,EAAE;AACJ,oBAAA,sBAAsB,EAAE,WAAW,CAAC,YAAY,CAAC,OAAO;AACxD,oBAAA,sBAAsB,EAAE,WAAW,CAAC,YAAY,CAAC;AAClD;AACF,aAAA;AACD,YAAA,SAAS,EAAE,CAAC,EAAE,sBAAsB,EAAE,CAAC,EAAE,EAAE,EAAE,sBAAsB,EAAE,CAAC,EAAE;SACzE;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,kBAAkB,EAAE,MAAM,CAAC;;IAG7D,YAAY,CAAC,KAA8B,EAAE,OAAO,GAAG,EAAE,EAAE,SAAc,EAAE,EAAA;QACzE,MAAM,eAAe,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE;AACjD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,eAAe,CAAC;;AAErE,QAAA,MAAM,CAAC,cAAc,GAAG,IAAI;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;;AAGhD;;;AAGG;IACH,MAAM,qBAAqB,CAAC,SAAS,EAAA;AACnC,QAAA,IAAI,QAAQ;AAEZ,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACnB,YAAA,QAAQ,GAAG,CAAC,GAAG,SAAS,CAAC;;aACpB;YACL,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,SAAS;AAC7C,YAAA,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC;AAErB,YAAA,OAAO,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE;AAChC,gBAAA,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE;gBAC9C,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC;;;AAItC,QAAA,OAAO,QAAQ;;AAGjB;;;AAGG;AACH,IAAA,qBAAqB,CAAC,EAAkB,EAAA;QACtC,IAAI,CAAC,EAAE,EAAE;AACP,YAAA,OAAO,EAAE,CAAC,SAAS,CAAC;;QAEtB,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE,4BAA4B,CAAC;QACzD,MAAM,EAAE,GAAG,GAAG,CAAC,SAAS,EAAE,kBAAkB,CAAC;AAC7C,QAAA,OAAO;AACL,cAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;AACvF,cAAE,EAAE,CAAC,SAAS,CAAC;;AAEnB;;;;;;;;;AASG;AACH,IAAA,8BAA8B,CAC5B,wBAAyD,EACzD,IAAoB,EACpB,EAAE,UAAU,GAAG,KAAK,EAAE,OAAO,GAAG,EAAE,KAAiD,EAAE,EAAA;QAErF,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,wBAAwB;AACvD,QAAA,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,IAAI,CAAC;AAC1D,QAAA,IAAI,KAAK;AACT,QAAA,MAAM,wBAAwB,GAAG;AAC/B,YAAA,CAAC,CAAG,EAAA,IAAI,CAAU,QAAA,CAAA,GAAG,OAAO;AAC5B,YAAA,CAAC,CAAG,EAAA,IAAI,CAAM,IAAA,CAAA,GAAG,GAAG;AACpB,YAAA,IAAI,EAAE;SACP;QACD,MAAM,kBAAkB,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;AAC9C,QAAA,OAAO,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE;QAEhE,IAAI,UAAU,EAAE;AACd,YAAA,KAAK,GAAG;AACN,gBAAA,KAAK,EAAE;AACL,oBAAA,GAAG;AACJ;aACF;;aACI;AACL,YAAA,KAAK,GAAG;AACN,gBAAA,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,wBAAwB,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,kBAAkB,EAAE,EAAE;aACxF;;QAGH,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;;AAGhF,IAAA,cAAc,CAAC,SAAiB,EAAA;QAC9B,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC;;QAGlB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,SAAS,CAAC;QAC7D,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,EAAE,CAAC,SAAS,CAAC;;AAEtB,QAAA,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAClF,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,CACnB;;AAGH;;;;;AAKG;IAEH,kBAAkB,CAAC,cAA8B,EAAE,MAAsB,EAAA;AACvE,QAAA,IAAI,MAAM,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE;AACrC,QAAA,IAAI,cAAc,KAAK,cAAc,CAAC,aAAa,EAAE;AACnD,YAAA,IAAI,MAAM,CAAC,IAAI,EAAE;gBACf,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE;AAC7C,oBAAA,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAY,UAAA,CAAA,EAAE,EAAE;AACvE,iBAAA,CAAC;;;aAEC;YACL,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE;AAC7C,gBAAA,IAAI,EAAE;AACJ,oBAAA,EAAE,iBAAiB,EAAE,MAAM,CAAC,IAAI,EAAE;oBAClC,EAAE,iBAAiB,EAAE,EAAE,EAAE;AACzB,oBAAA,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAA,eAAA,CAAiB,EAAE;AACtC;AACF,aAAA,CAAC;;AAGJ,QAAA,OAAO,MAAM;;AAGf;;;;;AAKG;IACH,oBAAoB,CAAC,MAAsB,EAAE,KAAc,EAAA;AACzD,QAAA,IAAI,MAAM,GAAG,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,QAAQ,EAAE;AAEhE,QAAA,IAAI,MAAM,CAAC,0BAA0B,EAAE;YACrC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE;gBAC7C,IAAI,EAAE,CAAC,MAAM,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/E,aAAA,CAAC;;AAGJ,QAAA,OAAO,MAAM;;AAGf;;;;;AAKG;IACH,yBAAyB,CAAC,MAAsB,EAAE,iBAAyB,EAAA;AACzE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,aAAa,EAAE,MAAM,CAAC;AAC3E,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE;AAC1C,YAAA,IAAI,EAAE;AACJ,gBAAA,EAAE,iBAAiB,EAAE;gBACrB,EAAE,iBAAiB,EAAE,EAAE,EAAE;AACzB,gBAAA,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAA,iBAAA,CAAmB,EAAE;AACxC;AACF,SAAA,CAAC;;AAGJ;;;;AAIG;AACH,IAAA,qBAAqB,CAAC,MAAsB,EAAA;AAC1C,QAAA,IAAI,MAAM,CAAC,gBAAgB,EAAE;AAC3B,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC;;AAE3C,QAAA,IAAI,MAAM,CAAC,YAAY,EAAE;YACvB,OAAOA,KAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,IAAI,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;;AAE1E,QAAA,OAAO,EAAE;;AAGX;;;;AAIG;AACH,IAAA,MAAM,6BAA6B,CACjC,MAAsB,EACtB,OAA+B,EAAA;QAE/B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,OAAO,CAAC;AACxE,QAAA,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI;;AAGtD;;;;;;AAMG;AACH,IAAA,MAAM,0BAA0B,CAC9B,MAAsB,EACtB,OAA+B,EAAA;AAE/B,QAAA,MAAM,SAAS,GAAe;YAC5B,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,WAAW,EAAE,2BAA2B;AACrC,iBAAA,GAAG,CACF,MAAM,IACJ,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,EAAA,EAAK,MAAM,CAAC,IAAI,CAC9B,CAAA,EAAA,MAAM,CAAC,OAAO,GAAG,CAAA,WAAA,EAAc,MAAM,CAAC,OAAO,CAAA,CAAA,CAAG,GAAG,EACrD,EAAE;iBAEL,IAAI,CAAC,IAAI,CAAC,CAAE;SAChB;QACD,IAAI,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE;YACjE,SAAS,CAAC,kBAAkB,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,MAAM,IAClE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CACtB;;aACI,IAAI,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;AACtE,YAAA,SAAS,CAAC,gBAAgB,GAAG,SAAS,CACpC,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAC9D;AACD,YAAA,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;gBACvB,MAAM,cAAc,GAAmB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;oBACjE,MAAM;oBACN,SAAS;oBACT,KAAK;oBACL;AACD,iBAAA,CAAC;AACF,gBAAA,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC9B,oBAAA,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC;;AAEpD,gBAAA,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;oBAC/B,MAAM,uBAAuB,GAAG,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAClE,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAClC;AACD,oBAAA,IAAI,uBAAuB,GAAG,CAAC,CAAC,EAAE;;wBAEhC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC,EAAE,cAAc,CAAC;;yBACxE;;AAEL,wBAAA,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC;;;AAGrD,aAAC,CAAC;;aACG,IAAI,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;AAClE,YAAA,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;AAC7F,YAAA,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;AACvB,gBAAA,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE;oBAC9B,OAAO,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;;AAE5C,gBAAA,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;oBAC/B,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO;;AAExD,aAAC,CAAC;;AAEJ,QAAA,OAAO,SAAS;;AAGlB;;;;AAIG;AACH,IAAA,MAAM,qCAAqC,CACzC,SAAqB,EACrB,MAAsB,EAAA;AAEtB,QAAA,IAAI,SAAS,CAAC,kBAAkB,EAAE;AAChC,YAAA,OAAO,SAAS,CAAC,SAAS,CAAC,kBAAkB,CAAC;;AAEhD,QAAA,IAAI,SAAS,CAAC,gBAAgB,EAAE;YAC9B,OAAO,MAAM,IAAI,CAAC,iDAAiD,CAAC,SAAS,EAAE,MAAM,CAAC;;AAExF,QAAA,IAAI,SAAS,CAAC,YAAY,EAAE;YAC1B,OAAO,MAAM,IAAI,CAAC,6CAA6C,CAAC,SAAS,EAAE,MAAM,CAAC;;AAEpF,QAAA,OAAO,EAAE;;AAGX;;;;AAIG;AACH,IAAA,MAAM,6BAA6B,CACjC,MAAsB,EACtB,cAAwC,EAAA;QAExC,MAAM,SAAS,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,cAAc,CAAC;AACzE,QAAA,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI;;AAGtD;;;;;AAKG;IACH,0BAA0B,CACxB,MAAsB,EACtB,cAAwC,EAAA;QAExC,OAAO,cAAc,CAAC,EAAE;AAExB,QAAA,MAAM,SAAS,GAAe;YAC5B,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,WAAW,EAAE,wBAAwB,cAAc,CAAC,IAAI,CACtD,CAAA,EAAA,cAAc,CAAC,OAAO,GAAG,CAAA,WAAA,EAAc,cAAc,CAAC,OAAO,GAAG,GAAG,EACrE,CAAE,CAAA;AACF,YAAA,YAAY,EAAE,EAAE,GAAG,cAAc;SAClC;AAED,QAAA,OAAO,SAAS;;AAGlB;;;;;AAKG;AACH,IAAA,mCAAmC,CACjC,MAAsB,EACtB,iBAAyB,EACzB,QAAQ,GAAG,KAAK,EAAA;QAEhB,IAAI,QAAQ,EAAE;YACZ,OAAO;gBACL,QAAQ,EAAE,MAAM,CAAC,EAAE;AACnB,gBAAA,WAAW,EAAE,CAAA,4CAAA,EAA+C,MAAM,CAAC,IAAI,CAAE,CAAA;AACzE,gBAAA,oBAAoB,EAAE;aACvB;;QAEH,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,EAAE;AACnB,YAAA,WAAW,EAAE,CAAY,SAAA,EAAA,iBAAiB,uCAAuC,MAAM,CAAC,IAAI,CAAE,CAAA;AAC9F,YAAA,oBAAoB,EAAE;AACpB,gBAAA,IAAI,EAAE;AACP;SACF;;AAGH;;;;;;AAMG;IACH,qCAAqC,CACnC,MAAsB,EACtB,iBAAyB,EACzB,cAAqC,EACrC,QAAQ,GAAG,KAAK,EAAA;QAEhB,IAAI,QAAQ,EAAE;YACZ,OAAO;gBACL,QAAQ,EAAE,MAAM,CAAC,EAAE;gBACnB,WAAW,EAAE,+BAA+B,cAAc,CAAC,IAAI,CAAc,WAAA,EAAA,MAAM,CAAC,IAAI,CAAE,CAAA;AAC1F,gBAAA,sBAAsB,EAAE;oBACtB,GAAG,EAAE,cAAc,CAAC,SAAS;AAC7B,oBAAA,qBAAqB,EAAE;wBACrB,EAAE,EAAE,cAAc,CAAC;AACpB;AACF;aACF;;QAEH,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,WAAW,EAAE,CAA+B,4BAAA,EAAA,cAAc,CAAC,IAAI,CAA0B,uBAAA,EAAA,iBAAiB,CAAc,WAAA,EAAA,MAAM,CAAC,IAAI,CAAE,CAAA;AACrI,YAAA,sBAAsB,EAAE;gBACtB,GAAG,EAAE,cAAc,CAAC,SAAS;AAC7B,gBAAA,IAAI,EAAE;AACP;SACF;;AAGH;;;;AAIG;IACH,MAAM,8BAA8B,CAAC,QAAyB,EAAA;AAC5D,QAAA,MAAM,OAAO,GAAG;YACd,QAAQ;YACR,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;AAC1C,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,QAAQ,EAAE;SACX;AACD,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC;;AAGvF;;;;AAIG;IACH,MAAM,8BAA8B,CAAC,QAAyB,EAAA;AAC5D,QAAA,MAAM,OAAO,GAAG;YACd,QAAQ;YACR,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;AAC1C,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,QAAQ,EAAE;SACX;QACD,OAAO,IAAI,CAAC,0BAA0B,CAAC;AACrC,YAAA,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE;AAClD,YAAA,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE;AAChD,YAAA,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,cAAc;AAC3C,SAAA,CAAC;;AAGJ;;;;;;AAMG;IACH,MAAM,yBAAyB,CAAC,WAAkB,EAAA;QAChD,IAAI,iBAAiB,GAAG,IAAI;AAE5B,QAAA,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE;AACjC,YAAA,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI;AAC5D,YAAA,IAAI,UAAU,CAAC,MAAM,EAAE;AACrB,gBAAA,iBAAiB,GAAG,UAAU,CAAC,CAAC,CAAC;gBACjC;;;AAIJ,QAAA,OAAO,iBAAiB;;AAG1B;;;;;;AAMG;IACH,MAAM,0BAA0B,CAAC,WAAkB,EAAA;QACjD,IAAI,iBAAiB,GAAe,IAAI;AAExC,QAAA,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE;AACjC,YAAA,MAAM,UAAU,GAAiB,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI;AAC1E,YAAA,IAAI,UAAU,CAAC,MAAM,EAAE;gBACrB,IAAI,iBAAiB,EAAE;oBACrB,iBAAiB;wBACf,IAAI,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;4BAClD,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO;AAC1C,8BAAE,UAAU,CAAC,CAAC;8BACZ,iBAAiB;;qBAClB;AACL,oBAAA,iBAAiB,GAAG,UAAU,CAAC,CAAC,CAAC;;;;AAKvC,QAAA,OAAO,iBAAiB;;AAG1B;;;;;AAKG;AACH,IAAA,uBAAuB,CAAC,SAAqB,EAAA;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAChD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,EACvB,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CACvE;;AAGH;;;;;AAKG;AACH,IAAA,gBAAgB,CAAC,SAAqB,EAAA;AACpC,QAAA,MAAM,kBAAkB,GAAG,EAAE,CAAC,SAAS,CAAC;AACxC,QAAA,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,IAAI,CAC/C,SAAS,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,EACzF,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAkB,CAAC,EACrC,cAAc,CAAC,kBAAkB,CAAC,EAClC,MAAM,CAAC,CAAC,CAAC,eAAe,EAAE,iBAAiB,CAAC,KAAK,eAAe,CAAC,EAAE,KAAK,iBAAiB,CAAC,EAAE,CAAC,EAC7F,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,KAAI;YAC9B,IAAI,eAAe,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM,EAAE;AACrD,gBAAA,OAAO,UAAU,CAAC,eAAe,CAAC;;AAEpC,YAAA,OAAO,EAAE,CAAC,eAAe,CAAC;AAC5B,SAAC,CAAC,EACF,SAAS,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAC1F;AACD,QAAA,OAAO,KAAK,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;;AAGrD;;;;AAIG;AACH,IAAA,MAAM,2BAA2B,CAC/B,QAAyB,EACzB,IAAY,EAAA;AAEZ,QAAA,MAAM,WAAW,GAAW;AAC1B,YAAA,MAAM,EAAE,QAAQ;YAChB,IAAI;AACJ,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;AACrC,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AACjC,YAAA,QAAQ,EAAE;SACX;AAED,QAAA,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;AACnD,QAAA,OAAO,IAAI,CAAC,CAAC,CAAC;;AAGhB;;;;AAIG;AACH,IAAA,MAAM,0BAA0B,CAC9B,QAAyB,EACzB,aAAqB,EAAA;AAErB,QAAA,MAAM,eAAe,GAAW;YAC9B,QAAQ;AACR,YAAA,YAAY,EAAE,aAAa;AAC3B,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;AACrC,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AACjC,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,QAAQ,EAAE;SACX;AAED,QAAA,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,IAAI;;AAG1D;;;;AAIG;AACH,IAAA,MAAM,iBAAiB,CACrB,MAAsB,EACtB,iBAAyB,EAAA;AAEzB,QAAA,MAAM,KAAK,GAAW,MAAM,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,EAAE,EAAE,iBAAiB,CAAC;AAC1F,QAAA,IAAI,cAAqC;QACzC,IAAI,KAAK,EAAE;AACT,YAAA,cAAc,GAAG;gBACf,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,UAAU,EAAE,MAAM,CAAC,IAAI;gBACvB;aACD;AACD,YAAA,IAAI;AACF,gBAAA,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE;AAC7E,gBAAA,IAAI,KAAK,CAAC,YAAY,EAAE;oBACtB,cAAc,CAAC,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI;;;YAErD,OAAO,EAAE,EAAE;AACX,gBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,2BAA2B,CAAC;AAChD,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;;;AAG1B,QAAA,OAAO,cAAc;;IAGvB,MAAM,uBAAuB,CAAC,QAAQ,EAAA;AACpC,QAAA,IAAI,cAAqC;AACzC,QAAA,IAAI,EAAE;QACN,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI;QACpF,MAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB,IAAI,MAAM,CAAC,qBAAqB,CAAC,EAAE;QAClF,IAAI,CAAC,UAAU,EAAE;YACf;;AAGF,QAAA,IAAI;AACF,YAAA,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI;;QACnD,OAAO,EAAE,EAAE;;;QAGb,IAAI,EAAE,EAAE;AACN,YAAA,cAAc,GAAG;gBACf,IAAI,EAAE,EAAE,CAAC,YAAY;gBACrB,IAAI,EAAE,EAAE,CAAC;aACV;AACD,YAAA,cAAc,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;;AAEpF,QAAA,OAAO,cAAc;;AAGvB;;;;;;AAMG;AACH,IAAA,MAAM,aAAa,CACjB,SAAiB,EACjB,OAAuD,EAAA;QAEvD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,SAAS,CAAC;AAC7D,QAAA,IAAI,GAAG;QACP,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,IAAI,OAAO,CAAC,aAAa,EAAE;gBACzB,GAAG,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,OAAO,CAAC;;;aAE3D;YACL,GAAG,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,OAAO,CAAC;;QAE/D,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,OAAO,IAAI;;AAEb,QAAA,OAAO,GAAG,CAAC,IAAI,EAAE;;AAGnB;;;;;AAKG;AACH,IAAA,MAAM,aAAa,CAAC,SAAiB,EAAE,OAAmC,EAAA;QACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,SAAS,CAAC;QAC7D,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AACvC,YAAA,OAAO,IAAI;;;AAGb,QAAA,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI;AAC1E,QAAA,MAAM,GAAG,GAAG,CAAC,CAAC;AACZ,cAAE,MAAM,IAAI,CAAC,yBAAyB,CAAC,QAAQ;cAC7C,MAAM,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC;AACnD,QAAA,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE;AAC3C,QAAA,OAAO,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;;AAG7D;;;;AAIG;IACH,MAAM,4BAA4B,CAAC,QAAyB,EAAA;AAC1D,QAAA,MAAM,OAAO,GAAG;YACd,QAAQ;YACR,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;AAC1C,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,QAAQ,EAAE;SACX;QACD,OAAO,IAAI,CAAC,0BAA0B,CAAC;AACrC,YAAA,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE;AACjD,YAAA,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,uBAAuB;AACpD,SAAA,CAAC;;AAGJ;;;;AAIG;AACH,IAAA,2CAA2C,CAAC,MAAsB,EAAA;QAChE,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,EAAE;AACnB,YAAA,WAAW,EAAE,OAAO,CAAC,iCAAiC,CAAC;AACvD,YAAA,qBAAqB,EAAE;SACxB;;AAGH;;;;;AAKG;IACH,2CAA2C,CAAC,MAAsB,EAAE,MAAc,EAAA;QAChF,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,EAAE;AACnB,YAAA,WAAW,EAAE,OAAO,CAAC,sBAAsB,CAAC;AAC5C,YAAA,iBAAiB,EAAE;gBACjB;AACD;SACF;;IAGH,MAAM,SAAS,CAAC,QAAqB,EAAA;AACnC,QAAA,IAAI;YACF,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC;;QACpD,OAAO,EAAE,EAAE;AACX,YAAA,MAAM,GAAG,GAAG,OAAO,CAAC,2BAA2B,CAAC;AAChD,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;;;AAI1B;;;;AAIG;AACH,IAAA,MAAM,0BAA0B,CAAC,MAAM,EAAE,iBAAiB,EAAA;QACxD,MAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,iBAAiB,CAAC;QAC7E,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,aAAa,EAAE;AACzE,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG;AACxB,SAAA,CAAC;QACF,OAAO,GAAG,CAAC,IAAI;;AAGjB;;;;AAIG;AACH,IAAA,MAAM,2BAA2B,CAC/B,QAAyB,EACzB,QAAwB,EAAA;QAExB,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,uBAAuB,EAAE,cAAc,EAAE;QAC3E,IAAI,CAAC,cAAc,EAAE;AACnB,YAAA,OAAO,KAAK;;AAGd,QAAA,MAAM,WAAW,GAAG,EAAE,QAAQ,EAAE;AAChC,QAAA,IAAI,QAAQ,EAAE,IAAI,EAAE;YAClB,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC;;AAEzC,QAAA,IAAI,QAAQ,EAAE,OAAO,EAAE;YACrB,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC;;QAE/C,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;;AAG7F;;;;;AAKG;AACK,IAAA,MAAM,yBAAyB,CACrC,QAAqB,EACrB,UAAkC,EAAE,EAAA;AAEpC,QAAA,IAAI,GAAG;AACP,QAAA,IAAI;YACF,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC;;QACnD,OAAO,EAAE,EAAE;AACX,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACrB,gBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,2BAA2B,CAAC;AAChD,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;;;AAG1B,QAAA,OAAO,GAAG;;AAGZ;;;;;AAKG;AACK,IAAA,MAAM,yBAAyB,CACrC,SAAiB,EACjB,UAAkC,EAAE,EAAA;AAEpC,QAAA,IAAI,GAAG;AACP,QAAA,IAAI;AACF,YAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC;AACvC,YAAA,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE;AAC1B,gBAAA,MAAM,GAAG;;YAEX,GAAG,GAAG,QAAQ;;AACd,QAAA,MAAM;AACN,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACrB,gBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,mCAAmC,CAAC;AACxD,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;;;AAG1B,QAAA,OAAO,GAAG;;AAGJ,IAAA,sCAAsC,CAAC,KAAK,EAAA;QAClD,OAAO,OAAO,CAAC,OAAO,CAAC;AACrB,YAAA,GAAG,EAAE,EAAoB;AACzB,YAAA,IAAI,EAAE;AACJ,gBAAA;AACE,oBAAA,GAAG,KAAK;AACR,oBAAA,CAAC,KAAK,CAAC,IAAI,GAAG;wBACZ,OAAO,EAAE,KAAK,CAAC,OAAO;wBACtB,GAAG,EAAE,KAAK,CAAC;AACZ;AACF;AACF;AAC6B,SAAA,CAAC;;AAG3B,IAAA,MAAM,iDAAiD,CAC7D,SAAqB,EACrB,MAAsB,EAAA;QAEtB,MAAM,OAAO,GAA2B,EAAE;AAC1C,QAAA,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC;AACxF,QAAA,OAAO,CAAC,SAAS,CAAC,gBAAgB,EAAE,iBAAiB,IAAG;AACtD,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,iBAAiB,CAAC,IAAI,EAAE,CAAC;AACjF,YAAA,IACE,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,OAAO;AAC/C,iBAAC,cAAc,IAAI,cAAc,CAAC,OAAO,CAAC,EAC1C;gBACA,OAAO,CAAC,IAAI,CAAC;AACX,oBAAA,GAAG,iBAAiB;AACpB,oBAAA,MAAM,EAAE;AACe,iBAAA,CAAC;;AAE9B,SAAC,CAAC;AACF,QAAA,OAAO,CAAC,kBAAkB,EAAE,cAAc,IAAG;AAC3C,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,CAAC;AACzF,YAAA,IACE,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,OAAO;AAC/C,iBAAC,cAAc,IAAI,cAAc,CAAC,OAAO,CAAC,EAC1C;gBACA,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAChC,MAAM,IAAI,cAAc,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,CAC7E;;gBAED,IAAI,CAAC,aAAa,EAAE;oBAClB,OAAO,CAAC,IAAI,CAAC;AACX,wBAAA,GAAG,cAAc;AACjB,wBAAA,MAAM,EAAE;AACe,qBAAA,CAAC;;;AAGhC,SAAC,CAAC;AACF,QAAA,OAAO,OAAO;;AAGR,IAAA,MAAM,6CAA6C,CACzD,SAAqB,EACrB,MAAsB,EAAA;QAEtB,MAAM,OAAO,GAA2B,EAAE;AAC1C,QAAA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC;QAChF,OAAO,CAAC,cAAc,EAAE,CAAC,qBAAqB,EAAE,kBAAkB,KAAI;YACpE,IAAI,SAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,KAAK,qBAAqB,EAAE;gBACxE,OAAO,CAAC,IAAI,CAAC;AACX,oBAAA,IAAI,EAAE,kBAAkB;AACxB,oBAAA,OAAO,EAAE,qBAAqB;AAC9B,oBAAA,MAAM,EAAE;AACe,iBAAA,CAAC;;AAE9B,SAAC,CAAC;QACF,OAAO,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,wBAAwB,EAAE,qBAAqB,KAAI;YAClF,MAAM,qBAAqB,GAAG,cAAc,IAAI,cAAc,CAAC,qBAAqB,CAAC;AACrF,YAAA,IAAI,qBAAqB,KAAK,wBAAwB,EAAE;gBACtD,OAAO,CAAC,IAAI,CAAC;AACX,oBAAA,IAAI,EAAE,qBAAqB;AAC3B,oBAAA,OAAO,EAAE,wBAAwB;AACjC,oBAAA,MAAM,EAAE;AACe,iBAAA,CAAC;;AAE9B,SAAC,CAAC;AACF,QAAA,OAAO,OAAO;;AAGR,IAAA,MAAM,kBAAkB,CAC9B,MAAsB,EACtB,UAAkB,EAClB,YAAoB,EAAA;QAEpB,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,uBAAuB,EAAE,cAAc,EAAE;QAC3E,IAAI,cAAc,EAAE;YAClB,IAAI,kBAAkB,GAAgC,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAC3F,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CACvC;AACD,YAAA,IAAI,IAAI,GAAG,CAAC,kBAAkB,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAChD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CACpE;AAED,YAAA,OAAO,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE;gBAC1C,kBAAkB,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,IAAI,EAAE;AAC3D,gBAAA,IAAI,GAAG;AACL,oBAAA,GAAG,IAAI;AACP,oBAAA,GAAG,CAAC,kBAAkB,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IACxC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;iBAEtE;;AAGH,YAAA,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;AACjB,gBAAA,OAAO,YAAY;;AAGrB,YAAA,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;;aACtE;AACL,YAAA,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,YAAY;;;AAIrC,IAAA,oBAAoB,CAAC,IAAsB,EAAA;AACjD,QAAA,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;;IAGlF,MAAM,iBAAiB,CAAC,IAAoB,EAAA;QAClD,OAAO,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,SAAS;;AAGvF,IAAA,MAAM,oBAAoB,CAAC,YAAY,EAAE,YAAY,EAAA;QAC3D,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,CAAC;QAC9E,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,CAAC;AACzE,QAAA,IAAI,gBAAgB,IAAI,gBAAgB,KAAK,WAAW,EAAE;YACxD,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,gBAAgB,CAAC;;;+GA3yC5C,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAjB,iBAAiB,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;;MChDY,yBAAyB,CAAA;AACpC,IAAA,WAAA,CACS,OAA4B,EAC3B,sBAA8C,EAC9C,iBAAoC,EAAA;QAFrC,IAAO,CAAA,OAAA,GAAP,OAAO;QACN,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;QACtB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;;IAG3B,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACxB,cAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG;cAChE,KAAK;;AAIX,IAAA,aAAa,CAAC,aAA6B,EAAA;QACzC,OAAO,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC;;+GAftD,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,qEAFzB,CAAC,iBAAiB,CAAC,ECXhC,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,iSAWA,2CDDY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAiBtB,UAAA,CAAA;AADC,IAAA,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;;;AAGvB,CAAA,EAAA,yBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA;4FAhBU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;+BAEE,wBAAwB,EAAA,UAAA,EACtB,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,SAAA,EACZ,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,iSAAA,EAAA;4JAgB9B,aAAa,EAAA,EAAA,EAAA,EAAA,CAAA;;AExBT,MAAO,cAAe,SAAQ,UAAU,CAAA;AAC5C,IAAA,WAAA,CAAY,mBAAmF,EAAA;QAC7F,KAAK,CAAC,mBAAmB,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC7B,QAAA,IAAI,CAAC,qBAAqB,GAAG,yBAAyB;AAEtD,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;;AAExB;;MCaY,uCAAuC,CAAA;AAClD,IAAA,WAAA,CAAmB,OAA4B,EAAA;QAA5B,IAAO,CAAA,OAAA,GAAP,OAAO;;+GADf,uCAAuC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uCAAuC,EAnBxC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAGS,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,EAAE,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,8BAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAE1D,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBApBnD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;AAcT,EAAA,CAAA;AACD,oBAAA,QAAQ,EAAE,wCAAwC;AAClD,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY;AACtE,iBAAA;;;AChBK,MAAO,4BAA6B,SAAQ,UAAU,CAAA;AAG1D,IAAA,WAAA,CACE,mBAIC,EAAA;QAED,KAAK,CAAC,mBAAmB,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM;AAClB,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC7B,QAAA,IAAI,CAAC,qBAAqB,GAAG,uCAAuC;AAEpE,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACtB,IAAI,CAAC,eAAe,GAAG;YACrB,MAAM,EAAE,iCAAiC,CAAC;AACxC,gBAAA,GAAG,EAAE,OAAO;gBACZ,KAAK,EAAE,mBAAmB,EAAE,WAAW,IAAI,OAAO,CAAC,sBAAsB,CAAC;AAC1E,gBAAA,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC;AAClC,gBAAA,OAAO,EAAE,OAAO,CAAC,+BAA+B,CAAC;gBACjD,WAAW,EAAE,mBAAmB,EAAE,WAAW,IAAI,OAAO,CAAC,oBAAoB;aAC9E,CAAC;AACF,YAAA,SAAS,CAAC,KAAU,EAAA;gBAClB,MAAM,MAAM,GAAQ,EAAE;AACtB,gBAAA,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;oBACtB,MAAM,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE;;AAErC,gBAAA,OAAO,MAAM;;SAEhB;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACpB,IAAI,CAAC,aAAa,GAAG;YACnB,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;SACzC;;AAEJ;;MCtCY,yBAAyB,CAAA;AACpC,IAAA,WAAA,CAAmB,OAA4B,EAAA;QAA5B,IAAO,CAAA,OAAA,GAAP,OAAO;;+GADf,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVtC,sSAWA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDHYC,cAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAEX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EAEN,QAAA,EAAA,wBAAwB,EACzB,OAAA,EAAA,CAACA,cAAY,CAAC,EAAA,QAAA,EAAA,sSAAA,EAAA;;;ME4BZ,kCAAkC,CAAA;AAW7C,IAAA,WAAA,CACS,OAAqC,EACrC,iBAAoC,EACnC,iBAAoC,EACpC,UAAsB,EAAA;QAHvB,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QAChB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAU,CAAA,UAAA,GAAV,UAAU;QAZpB,IAAM,CAAA,MAAA,GAA4C,KAAK;AACvD,QAAA,IAAA,CAAA,OAAO,GAA4B,IAAI,eAAe,CAAC,IAAI,CAAC;AAC5D,QAAA,IAAA,CAAA,UAAU,GAAoC,IAAI,CAAC,GAAG,EAAE,CAAC;AACzD,QAAA,IAAA,CAAA,oBAAoB,GAAG,OAAO,CAAC,oDAAoD,CAAC;AAE5E,QAAA,IAAA,CAAA,WAAW,GAAgB,IAAI,WAAW,EAAE;AAC5C,QAAA,IAAA,CAAA,KAAK,GAAgB,IAAI,GAAG,EAAE;QAQpC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI;AACjC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAC7B,YAAY,CAAC,GAAG,CAAC,EACjB,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAC7B,SAAS,CAAC,CAAC,YAAoB,KAAI;YACjC,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;AACtE,YAAA,MAAM,MAAM,GAAG,CAAC,CAAC;AACf,kBAAE;AACE,oBAAA,CAAC,IAAI,CAAC,IAAI,GAAG;wBACX,IAAI,EAAE,CAAI,CAAA,EAAA,YAAY,CAAG,CAAA;AAC1B;AACF;AACH,kBAAE;oBACE,KAAK,EAAE,IAAI,CAAC;iBACb;YACL,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC;AAEpD,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAChD,IAAI,CAAC,OAAO,CAAC,QAA2B,CAAC,cAAc,EACxD;AACE,gBAAA,gBAAgB,EAAE,IAAI;gBACtB,KAAK;AACL,gBAAA,MAAM,EAAE;AACN,oBAAA,QAAQ,EAAE;AACX;AACF,aAAA,CACF;SACF,CAAC,CACH;AAED,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CACpB,GAAG,CACD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC5B,IAAI,CACyD,CAChE,EACD,GAAG,CAAC,MAAM,UAAU,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,CACvE;;AAGsC,IAAA,YAAY,CAAC,KAAoB,EAAA;QACxE,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,WAAW,EAAE;;AAEwB,IAAA,eAAe,CAAC,KAAoB,EAAA;QAC9E,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;;IAG5B,QAAQ,GAAA;AACN,QAAA,MAAM,MAAM,GAAW,IAAI,CAAC,OAAO,CAAC,QAAQ;QAC5C,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC;;IAGjE,eAAe,GAAA;QACb,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE;AACrD,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS;;QACpF,OAAO,EAAE,EAAE;;;;IAKf,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AACvB,YAAA,mBAAmB,EAAE;gBACnB,KAAK,EAAE,IAAI,CAAC,YAAY;AACxB,gBAAA,KAAK,EAAE;AACL,oBAAA;wBACE,KAAK,EAAE,IAAI,CAAC,YAAY;wBACxB,YAAY,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;AAC5C,wBAAA,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AACjB,wBAAA,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI;wBACtC,MAAM,EAAE,MAAK;4BACX,OAAO;AACL,gCAAA,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI;AACtC,gCAAA,mBAAmB,EAAE;AACnB,oCAAA,KAAK,EAAE,IAAI;AACX,oCAAA,KAAK,EAAE;AACR;6BACF;;AAEJ;AACF;AACF;AACF,SAAA,CAAC;;AAGI,IAAA,oBAAoB,CAAC,IAAsB,EAAA;AACjD,QAAA,MAAM,YAAY,GAAqB,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CACnE,CAAC,EAAkB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CACvD;QACD,YAAY,CAAC,OAAO,CAAC,CAAC,EAAkB,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E,QAAA,OAAO,YAAY;;+GA9GV,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kCAAkC,EAOlC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,kBAAkB,EC3C/B,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,gvCA4CA,EDVY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAAD,cAAY,EAAE,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,gBAAgB,EAAE,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAAE,YAAe,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,gCAAA,EAAA,6BAAA,EAAA,oCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,kWAAE,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,CAAA,CAAA;;4FAEvE,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAP9C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,mBAEC,uBAAuB,CAAC,OAAO,EAAA,QAAA,EACtC,kCAAkC,EACnC,OAAA,EAAA,CAACF,cAAY,EAAE,gBAAgB,EAAEE,YAAe,EAAE,WAAW,EAAE,UAAU,CAAC,EAAA,QAAA,EAAA,gvCAAA,EAAA;uLASjC,SAAS,EAAA,CAAA;sBAA1D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAkDP,YAAY,EAAA,CAAA;sBAApD,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC;gBAIK,eAAe,EAAA,CAAA;sBAA1D,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;AE5FtC,MAAO,cAAe,SAAQ,UAAU,CAAA;AAG5C,IAAA,WAAA,CACE,mBAaC,EAAA;QAED,KAAK,CAAC,mBAAmB,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM;QAClB,IAAI,CAAC,IAAI,GAAG,mBAAmB,EAAE,IAAI,IAAI,MAAM;QAC/C,IAAI,CAAC,MAAM,GAAG,mBAAmB,EAAE,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;AAC5D,QAAA,IAAI,CAAC,cAAc,GAAG,mBAAmB,EAAE,cAAc;AACzD,QAAA,IAAI,CAAC,qBAAqB,GAAG,yBAAyB;AAEtD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,8BAA8B,GAAG,kCAAkC;QACxE,IAAI,CAAC,eAAe,GAAG;YACrB,SAAS,EAAE,KAAK,IAAG;gBACjB,MAAM,MAAM,GAAQ,EAAE;gBACtB,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC1B,oBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;;AAEtD,gBAAA,OAAO,MAAM;;SAEhB;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACpB,IAAI,CAAC,aAAa,GAAG;YACnB,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;SACzC;;AAEJ;;MC/BY,6BAA6B,CAAA;IAGxC,WACS,CAAA,OAA4B,EAC3B,iBAAoC,EAAA;QADrC,IAAO,CAAA,OAAA,GAAP,OAAO;QACN,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;AAJ3B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAM1E,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;;AAI1B,IAAA,qBAAqB,CAAC,IAAoB,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;;+GAZrE,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjB1C,ydAqBA,EDNY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8QAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,CAAA,EAAA,CAAA,CAAA;;AAarE,UAAA,CAAA;AADC,IAAA,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;;oCACqB,UAAU;AAEtD,CAAA,EAAA,6BAAA,CAAA,SAAA,EAAA,uBAAA,EAAA,IAAA,CAAA;4FAbU,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;+BAEE,4BAA4B,EAAA,UAAA,EAC1B,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,ydAAA,EAAA;qHAatE,qBAAqB,EAAA,EAAA,EAAA,EAAA,CAAA;;AEzBjB,MAAO,kBAAmB,SAAQ,UAAU,CAAA;AAChD,IAAA,WAAA,CAAY,mBAAkC,EAAA;QAC5C,KAAK,CAAC,mBAAmB,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,UAAU;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;AACjC,QAAA,IAAI,CAAC,qBAAqB,GAAG,6BAA6B;AAC1D,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;;AAExB;;ICXW;AAAZ,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ;AACR,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ;AACV,CAAC,EAJW,cAAc,KAAd,cAAc,GAIzB,EAAA,CAAA,CAAA;;MCSY,qBAAqB,CAAA;AAIhC,IAAA,WAAA,CACU,iBAAoC,EACpC,sBAA8C,EAC9C,YAA0B,EAAA;QAF1B,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;QACtB,IAAY,CAAA,YAAA,GAAZ,YAAY;QALtB,IAAc,CAAA,cAAA,GAAG,cAAc;QAC/B,IAAa,CAAA,aAAA,GAAG,KAAK;;AAQrB,IAAA,cAAc,CAAC,SAAS,EAAA;QACtB,OAAO,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,SAAS,CAAC;;IAIzD,iBAAiB,GAAA;AACf,QAAA,IAAI,MAAsB;QAC1B,IAAI,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACtD,YAAA,MAAM,GAAG,cAAc,CAAC,QAAQ;;aAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AAClC,YAAA,MAAM,GAAG,cAAc,CAAC,IAAI;;aACvB;AACL,YAAA,MAAM,GAAG,cAAc,CAAC,QAAQ;;AAElC,QAAA,OAAO,MAAM;;AAGf,IAAA,MAAM,YAAY,GAAA;AAChB,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,YAAA,MAAM,MAAM,GAAS,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE;AACxE,gBAAA,aAAa,EAAE;AAChB,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;YAC1B,MAAM,CAAC,MAAM,CAAC;;QACd,OAAO,EAAE,EAAE;AACX,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;YAC1B,IAAI,EAAE,EAAE;AACN,gBAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC;;;;+GAvCjC,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAO,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECblC,+oBAuBA,EDZY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAI,6FAAE,aAAa,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAa1D,UAAA,CAAA;AADC,IAAA,OAAO,EAAE;;;;AAGT,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;AADC,IAAA,OAAO,EAAE;;;;AAWT,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA;4FA1BU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,mBAAmB,EAAA,OAAA,EAEpB,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,+oBAAA,EAAA;qJAGlD,GAAG,EAAA,CAAA;sBAAX;AAUD,aAAA,CAAA,EAAA,cAAc,MAKd,iBAAiB,EAAA,EAAA,EAAA,EAAA,CAAA;;AECnB;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;MAaU,8BAA8B,CAAA;IA+KzC,WACU,CAAA,iBAAoC,EACpC,gBAAkC,EAAA;QADlC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAhL1B,IAAkB,CAAA,kBAAA,GAAG,oCAAoC;AACzD;;;;;;;;;;;AAWG;QACH,IAA8B,CAAA,8BAAA,GAAiC,SAAS;AAKxE;;;;;;;;;AASG;AACH,QAAA,IAAA,CAAA,cAAc,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAAE;AAC7F;;;AAGG;AACH,QAAA,IAAA,CAAA,KAAK,GAAW,OAAO,CAAC,yBAAyB,CAAC;AAMlD;;;AAGG;AACH,QAAA,IAAA,CAAA,IAAI,GAAkB,IAAI,OAAO,EAAE;AACnC;;AAEG;AACH,QAAA,IAAA,CAAA,sBAAsB,GAAmC,IAAI,OAAO,EAAE;AACtE;;;;AAIG;AACH,QAAA,IAAA,CAAA,UAAU,GAAoC,IAAI,eAAe,CAAC,EAAE,CAAC;AACrE;;;;;AAKG;QACH,IAAe,CAAA,eAAA,GAAQ,EAAE;AACzB;;;;;AAKG;QACH,IAAW,CAAA,WAAA,GAAQ,EAAE;AACrB;;;AAGG;QACH,IAAM,CAAA,MAAA,GAAgB,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;AAC7C;;;;AAIG;QACH,IAAU,CAAA,UAAA,GAAG,IAAI;AACjB;;;;AAIG;QACH,IAAc,CAAA,cAAA,GAAG,KAAK;AAWtB;;AAEG;AACH,QAAA,IAAA,CAAA,eAAe,GAAqC,IAAI,YAAY,EAAsB;AAC1F;;AAEG;AACH,QAAA,IAAA,CAAA,aAAa,GAA6C,IAAI,YAAY,EAEvE;AACH;;;;;;AAMG;AACH,QAAA,IAAA,CAAA,IAAI,GAAuB,kBAAkB,CAAC,MAAM;AAMpD;;AAEG;QACH,IAAe,CAAA,eAAA,GAAG,IAAI;QAMtB,IAAc,CAAA,cAAA,GAAmB,EAAE;AAEnC,QAAA,IAAA,CAAA,kBAAkB,GAAqC,IAAI,CAAC,IAAI,CAAC,IAAI,CACnE,SAAS,CAAC,MAAM,IAAI,CAAC,8BAA8B,CAAC,EACpD,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EACpC,GAAG,CAAC,KAAK,IAAG;AACV,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,KAAK;AACrE,SAAC,CAAC,EACF,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAC/C;AAED,QAAA,IAAA,CAAA,YAAY,GAAqC,KAAK,CACpD,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAC9B,GAAG,CAAC,CAAC,eAAsC,KAAI;YAC7C,MAAM,YAAY,GAAuB,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,EAAE,IAAI,CAC1E,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,eAAe,CAAC,MAAM,CAAC,OAAO,CACxD;YACD,IAAI,YAAY,EAAE;AAChB,gBAAA,MAAM,cAAc,GAAuB,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,EAAE,IAAI,CAC1E,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,KAAM,eAAe,CAAC,MAAc,CAAC,UAAU,CACvE;gBACD,IAAI,cAAc,EAAE;AAClB,oBAAA,cAAc,CAAC,QAAQ,GAAG,eAAe,CAAC,QAAQ;AAClD,oBAAA,IAAI,eAAe,CAAC,MAAM,EAAE;wBAC1B,cAAc,CAAC,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC;;;;YAIrE,OAAO,IAAI,CAAC,iBAAiB;SAC9B,CAAC,CACH,CACF;QAWO,IAAS,CAAA,SAAA,GAAG,GAAG;AAQrB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,EAAE;;IAGtC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC;;AAGpD,QAAA,IAAI,CAAC,IAAI,CAAC,8BAA8B,EAAE;YACxC,IAAI,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAC9C,QAAQ,CAAC,MACP,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,EAAE;AAChE,gBAAA,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,CAClC,IAAI,CAAC,eAAe,EACpB,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM;AAC1B,sBAAE,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG;AAC3D,sBAAE,IAAI,CAAC,WAAW,CACrB;AACD,gBAAA,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS;AACnC,aAAA,CAAC,CACH,EACD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,EACvB,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC,CACrD;;;AAIL,IAAA,8BAA8B,CAAC,GAAqB,EAAA;AAClD,QAAA,GAAG,CAAC,OAAO,CAAC,EAAE,IAAG;YACf,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,CAAC;AAC1D,SAAC,CAAC;AACF,QAAA,OAAO,GAAG;;AAGZ,IAAA,MAAM,CAAC,cAA8B,EAAA;AACnC,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAC1B;YACE,GAAG,IAAI,CAAC,cAAc;AACtB,YAAA,GAAG;SACJ,EACD,OAAO,CACR;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE;YACnD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;AACzC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc;AACtC,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;;;AAIpB,IAAA,MAAM,CAAC,aAAyC,EAAA;AAC9C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;;IAGxC,MAAM,SAAS,CAAC,GAAqB,EAAA;AACnC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc;AAC1C,QAAA,MAAM,aAAa,GAA+B,IAAI,CAAC,QAAQ;AAE/D,QAAA,OAAO,OAAO,CAAC,GAAG,CAChB,GAAG,CAAC,GAAG,CAAC,OAAM,eAAe,KAAG;YAC9B,MAAM,OAAO,GAAyB,IAAI,CAAC,qBAAqB,CAC9D,MAAM,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,eAAe,CAAC,QAAQ,CAAC,EAC5E,aAAa,EACb,eAAqC,EACrC,cAAc,CACf;YACD,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CACjD,eAAqC,EACrC,OAAO,CACR;AAED,YAAA,OAAO,iBAAiB;SACzB,CAAC,CACH;;AAGH,IAAA,qBAAqB,CACnB,QAA4B,EAC5B,aAAyC,EACzC,eAAmC,EACnC,cAA8B,EAAA;QAE9B,MAAM,kBAAkB,GAAyB,EAAE;AACnD,QAAA,QAAQ,CAAC,OAAO,CAAC,gBAAgB,IAAG;AAClC,YAAA,MAAM,UAAU,GAAY,IAAI,CAAC,0BAA0B,CACzD,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,cAAc,CACf;YAED,MAAM,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC,CAAG,EAAA,cAAc,CAAE,CAAA,CAAC;AACzD,YAAA,MAAM,SAAS,GACb,OAAO,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,GAAG;YACpF,MAAM,SAAS,GAAG,OAAO,GAAG,EAAE,GAAG,YAAY;YAC7C,kBAAkB,CAAC,IAAI,CAAC;AACtB,gBAAA,IAAI,EAAE;AACJ,oBAAA;AACE,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,KAAK,EAAE;AACR;AACF,iBAAA;AACD,gBAAA,GAAG,EAAE;oBACH,EAAE,EAAE,gBAAgB,CAAC,EAAE;oBACvB,IAAI,EAAE,eAAe,CAAC,IAAI;oBAC1B,OAAO;AACP,oBAAA,IAAI,GAAG,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,IAAI;AACnD,wBAAA,UAAU,EAAE,GAAG,CAAC,gBAAgB,EAAE,sBAAsB;qBACzD,CAAC;AACF,oBAAA,IAAI,GAAG,CAAC,gBAAgB,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;oBAC5D,GAAG,EAAE,gBAAgB,CAAC,CAAA,EAAG,cAAc,CAAE,CAAA,CAAC,CAAC,GAAG;oBAC9C,YAAY,EAAE,eAAe,CAAC;AAC/B,iBAAA;AACD,gBAAA,QAAQ,EAAE;AACX,aAAA,CAAC;AACJ,SAAC,CAAC;AACF,QAAA,OAAO,kBAAkB;;AAG3B,IAAA,0BAA0B,CACxB,aAAyC,EACzC,eAAmC,EACnC,gBAAkC,EAClC,cAA8B,EAAA;QAE9B,MAAM,UAAU,GAAG;AACjB,cAAE,aAAa,CAAC,MAAM,CAClB,kBAAkB,IAChB,kBAAkB,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI;AAChD,gBAAA,kBAAkB,CAAC,OAAO,KAAK,gBAAgB,CAAC,CAAG,EAAA,cAAc,CAAE,CAAA,CAAC,CAAC,OAAO,CAC/E,CAAC,MAAM,GAAG;cACX,KAAK;AAET,QAAA,OAAO,UAAU;;IAGnB,oBAAoB,CAClB,eAAmC,EACnC,OAA6B,EAAA;AAE7B,QAAA,MAAM,KAAK,GACT,OAAO,CAAC,MAAM,KAAK;cACf,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE;cAClF,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AAEzF,QAAA,MAAM,iBAAiB,GAAuB;YAC5C,OAAO,EAAE,eAAe,CAAC,EAAE;AAC3B,YAAA,IAAI,EAAE;gBACJ,EAAE,KAAK,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE;gBACvD,EAAE,KAAK,EAAE,eAAe,CAAC,WAAW,EAAE,KAAK,EAAE,0BAA0B;AACxE,aAAA;YACD,qBAAqB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE;YAClE;SACD;AAED,QAAA,OAAO,iBAAiB;;+GA9Uf,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,EAR9B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,+BAA+B;AACxC,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,8BAA8B;AAC7D;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxEH,+sBAqBA,EDoDY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,EAAE,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,0BAA0B,yIAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAE1D,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAX1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAE5B,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,+BAA+B;AACxC,4BAAA,WAAW,EAAE,UAAU,CAAC,oCAAoC;AAC7D;AACF,qBAAA,EAAA,OAAA,EACQ,CAAC,oBAAoB,EAAE,0BAA0B,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,+sBAAA,EAAA;;;MEL3D,qBAAqB,CAAA;IA8BhC,IACI,mBAAmB,CACrB,KAA4E,EAAA;AAE5E,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACnB,IAAI,CAAC,oBAAoB,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAClD,GAAG,CAAC,KAAK,IACP,KAAK,CAAC,GAAG,CAAC,YAAY,IACpB,OAAO,YAAY,KAAK;kBACnB,EAAE,YAAY;AACjB,kBAAE,YAAY,CACjB,CACF,CACF;;;AAyBL,IAAA,WAAA,CACU,iBAAoC,EACrC,iBAAoC,EACnC,gBAAkC,EAAA;QAFlC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QAClB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QAChB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QA/D1B,IAAQ,CAAA,QAAA,GAAG,IAAI;QAGf,IAAW,CAAA,WAAA,GAAW,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE;AACjF,YAAA,OAAO,EAAE;AACV,SAAA,CAAC;QAGF,IAAe,CAAA,eAAA,GAAG,KAAK;QAGvB,IAAwB,CAAA,wBAAA,GAAG,IAAI;QAG/B,IAAgB,CAAA,gBAAA,GAAG,IAAI;QAGvB,IAAwB,CAAA,wBAAA,GAAG,KAAK;AAGhC,QAAA,IAAA,CAAA,yBAAyB,GAAW,OAAO,CAAC,oBAAoB,CAAC;AA2BvD,QAAA,IAAA,CAAA,gBAAgB,GAAiC,IAAI,YAAY,EAAkB;AAI7F,QAAA,IAAA,CAAA,UAAU,GAAoC,IAAI,CAAC,GAAG,EAAE,CAAC;AAEzD,QAAA,IAAA,CAAA,OAAO,GAA4B,IAAI,eAAe,CAAC,IAAI,CAAC;AAGpD,QAAA,IAAA,CAAA,WAAW,GAAgB,IAAI,WAAW,EAAE;AAC5C,QAAA,IAAA,CAAA,aAAa,GAAgB,IAAI,GAAG,EAAE;AAQ5C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;;IAG7E,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CACvC,QAAQ,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC7B,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,EACrC,SAAS,CAAC,CAAC,YAAoB,KAAI;YACjC,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,YAAY,EAAE;gBAC1C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;;AAEjD,YAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC;AACnD,SAAC,CAAC,EACF,WAAW,CAAC,CAAC,CAAC,CACf;AAED,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;cAC9B,IAAI,CAAC;AACP,cAAE,IAAI,CAAC,oBAAoB;;AAG/B,IAAA,uBAAuB,CAAC,YAAoB,EAAA;QAC1C,OAAO,IAAI,CAAC;AACV,cAAE,IAAI,CAAC,cAAc,CAAC,YAAY;AAClC,cAAE,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;;AAG3C,IAAA,cAAc,CAAC,QAAQ,EAAA;AACrB,QAAA,IAAI,CAAC,cAAc,GAAG,QAAQ;AAC9B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,EAAE;AACpE,QAAA,IAAI,CAAC,uBAA+B,CAAC,QAAQ,CAAC,QAAQ,CAAC;;IAG1D,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS;AAC/B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;;IAG9B,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE;;AAGtC,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,KAAK,CAAC;;AAGhD,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,EAAE,CAAC;;AAGnD,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,EAAE,CAAC;;AAGpD,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,UAAU,CAAC;;AAG3D,IAAA,QAAQ,CAAC,OAAkC,EAAA;QACzC,OAAO,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC;;AAG/C,IAAA,cAAc,CAAC,YAAoB,EAAA;AACzC,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CACnC,GAAG,CAAC,KAAK,KAAK;YACZ,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;AACzF,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;SACrE,CAAC,CAAC,CACJ;;AAGK,IAAA,kBAAkB,CAAC,YAAoB,EAAA;AAC7C,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;AACvE,QAAA,MAAM,MAAM,GAAG,CAAC,CAAC;AACf,cAAE;AACE,gBAAA,YAAY,EAAE;oBACZ,IAAI,EAAE,CAAI,CAAA,EAAA,YAAY,CAAG,CAAA;AAC1B;AACF;AACH,cAAE;AACE,gBAAA,KAAK,EAAE;aACR;QACL,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC;QAEpD,OAAO,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,cAAc,CAAC,QAAQ,EAAE;YAC3E,KAAK;AACL,YAAA,MAAM,EAAE;AACN,gBAAA,QAAQ,EAAE;AACX;AACF,SAAA,CAAC;;AAGI,IAAA,8BAA8B,CAAC,IAAsB,EAAA;AAC3D,QAAA,MAAM,oBAAoB,GAAqB,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,MAAM,CAChF,CAAC,EAAkB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,CACjE;AACD,QAAA,oBAAoB,CAAC,OAAO,CAAC,CAAC,EAAkB,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;AAC7F,QAAA,OAAO,oBAAoB;;+GA7KlB,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAM,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAzBrB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB;AACpD,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,gBAAA,KAAK,EAAE;AACR;SACF,ECtDH,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,4BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,4BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0yDA0DA,4CDFI,kBAAkB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,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,WAAA,EAAA,IAAA,EAAA,OAAO,2EACP,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,iBAAiB,EACjB,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAc,keACd,kBAAkB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,qBAAqB,EACrB,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,yCACT,gBAAgB,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA5BjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAElB,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B;AACpD,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;AACpD,4BAAA,KAAK,EAAE;AACR;qBACF,EACQ,OAAA,EAAA;wBACP,kBAAkB;wBAClB,WAAW;wBACX,OAAO;wBACP,IAAI;wBACJ,iBAAiB;wBACjB,cAAc;wBACd,kBAAkB;wBAClB,qBAAqB;wBACrB,SAAS;wBACT;AACD,qBAAA,EAAA,QAAA,EAAA,0yDAAA,EAAA;oJAGQ,cAAc,EAAA,CAAA;sBAAtB;gBAEQ,QAAQ,EAAA,CAAA;sBAAhB;gBAEQ,KAAK,EAAA,CAAA;sBAAb;gBAGD,QAAQ,EAAA,CAAA;sBADP;gBAID,WAAW,EAAA,CAAA;sBADV;gBAMD,eAAe,EAAA,CAAA;sBADd;gBAID,wBAAwB,EAAA,CAAA;sBADvB;gBAID,gBAAgB,EAAA,CAAA;sBADf;gBAID,wBAAwB,EAAA,CAAA;sBADvB;gBAID,yBAAyB,EAAA,CAAA;sBADxB;gBAIG,mBAAmB,EAAA,CAAA;sBADtB;gBAiBqC,uBAAuB,EAAA,CAAA;sBAA5D,SAAS;uBAAC,yBAAyB;gBAGpC,0BAA0B,EAAA,CAAA;sBADzB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,4BAA4B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAIzD,oBAAoB,EAAA,CAAA;sBADnB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAGzC,gBAAgB,EAAA,CAAA;sBAAzB;;;ME/GU,sBAAsB,CAAA;+GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAtB,sBAAsB,EAAA,OAAA,EAAA,CAJvB,8BAA8B,EAAE,qBAAqB,EAAE,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAE5E,8BAA8B,EAAE,qBAAqB,EAAE,qBAAqB,CAAA,EAAA,CAAA,CAAA;gHAE3E,sBAAsB,EAAA,SAAA,EAHtB,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,EAAA,OAAA,EAAA,CAD9C,8BAA8B,EAAyB,qBAAqB,CAAA,EAAA,CAAA,CAAA;;4FAI3E,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,8BAA8B,EAAE,qBAAqB,EAAE,qBAAqB,CAAC;AACvF,oBAAA,SAAS,EAAE,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;AACxD,oBAAA,OAAO,EAAE,CAAC,8BAA8B,EAAE,qBAAqB,EAAE,qBAAqB;AACvF,iBAAA;;;ACXD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"c8y-ngx-components-repository-shared.mjs","sources":["../../repository/shared/columns/description.grid-column.ts","../../repository/shared/columns/device-type.cell-renderer.component.ts","../../repository/shared/columns/device-type.cell-renderer.component.html","../../repository/shared/columns/device-type.grid-column.ts","../../repository/shared/repository.model.ts","../../repository/shared/repository.service.ts","../../repository/shared/columns/file.cell-renderer.component.ts","../../repository/shared/columns/file.cell-renderer.component.html","../../repository/shared/columns/file.grid-column.ts","../../repository/shared/columns/name.cell-renderer.component.ts","../../repository/shared/columns/name.grid-column.ts","../../repository/shared/columns/type.cell-renderer.component.ts","../../repository/shared/columns/type.cell-renderer.component.html","../../repository/shared/columns/type.filtering-form-renderer.component.ts","../../repository/shared/columns/type.filtering-form-renderer.component.html","../../repository/shared/columns/type.grid-column.ts","../../repository/shared/columns/versions.cell-renderer.component.ts","../../repository/shared/columns/versions.cell-renderer.component.html","../../repository/shared/columns/versions.grid-column.ts","../../repository/shared/file-download/link-render-type.enum.ts","../../repository/shared/file-download/file-download.component.ts","../../repository/shared/file-download/file-download.component.html","../../repository/shared/select-modal/repository-select-modal.component.ts","../../repository/shared/select-modal/repository-select-modal.component.html","../../repository/shared/software-type/software-type.component.ts","../../repository/shared/software-type/software-type.component.html","../../repository/shared/shared-repository.module.ts","../../repository/shared/c8y-ngx-components-repository-shared.ts"],"sourcesContent":["import {\n BaseColumn,\n ColumnConfig,\n getBasicInputArrayFormFieldConfig,\n gettext\n} from '@c8y/ngx-components';\n\nexport class DescriptionGridColumn extends BaseColumn {\n constructor(initialColumnConfig?: ColumnConfig & { filterLabel?: string; placeholder?: string }) {\n super(initialColumnConfig);\n this.name = 'description';\n this.path = 'description';\n this.header = gettext('Description');\n\n this.filterable = true;\n this.filteringConfig = {\n fields: getBasicInputArrayFormFieldConfig({\n key: 'descriptions',\n label: initialColumnConfig?.filterLabel ?? gettext('Filter items by description'),\n addText: gettext('Add next`description`'),\n tooltip: gettext('Use * as a wildcard character'),\n placeholder: initialColumnConfig?.placeholder ?? gettext('Description…')\n }),\n getFilter(model: any): any {\n const filter: any = {};\n if (model.descriptions.length) {\n filter.description = { __in: model.descriptions };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: this.path }]\n };\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { CellRendererContext, CommonModule } from '@c8y/ngx-components';\nimport { DeviceGridModule } from '@c8y/ngx-components/device-grid';\nimport { get } from 'lodash-es';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\n\n@Component({\n templateUrl: './device-type.cell-renderer.component.html',\n selector: 'c8y-device-type-cell-renderer',\n standalone: true,\n imports: [CommonModule, DeviceGridModule, TooltipModule, RouterModule]\n})\nexport class DeviceTypeCellRendererComponent implements OnInit {\n deviceType: string;\n\n constructor(public context: CellRendererContext) {}\n\n ngOnInit(): void {\n this.deviceType = get(this.context?.item, this.context?.property?.path);\n }\n}\n","<span *ngIf=\"deviceType; else emptyText\">\n {{ deviceType }}\n</span>\n<ng-template #emptyText>\n <small class=\"text-muted\">\n <em translate>Undefined`device type`</em>\n </small>\n</ng-template>\n","import {\n BaseColumn,\n ColumnConfig,\n getBasicInputArrayFormFieldConfig,\n gettext\n} from '@c8y/ngx-components';\nimport { DeviceTypeCellRendererComponent } from './device-type.cell-renderer.component';\n\nexport class DeviceTypeGridColumn extends BaseColumn {\n constructor(\n initialColumnConfig?: ColumnConfig & {\n filterLabel?: string;\n placeholder?: string;\n path?: string;\n }\n ) {\n super(initialColumnConfig);\n this.name = 'deviceType';\n this.path = initialColumnConfig?.path ?? 'c8y_Filter.type';\n this.header = gettext('Device type');\n this.cellRendererComponent = DeviceTypeCellRendererComponent;\n\n this.filterable = true;\n\n this.filteringConfig = {\n fields: [\n ...getBasicInputArrayFormFieldConfig({\n key: 'types',\n label: initialColumnConfig?.filterLabel ?? gettext('Filter items by device type'),\n addText: gettext('Add next`type`'),\n tooltip: gettext('Use * as a wildcard character'),\n placeholder: initialColumnConfig?.placeholder ?? 'c8y_Linux',\n optional: true\n }),\n {\n key: 'noDeviceType',\n type: 'switch',\n templateOptions: {\n label: gettext('No device type')\n }\n }\n ],\n getFilter(model: any): any {\n const filter: any = { __or: {} };\n if (model.types?.length) {\n filter.__or = {\n 'c8y_Filter.type': { __in: model.types }\n };\n }\n if (model.noDeviceType) {\n filter.__or = {\n ...filter.__or,\n __or: {\n __not: { __has: 'c8y_Filter.type' },\n 'c8y_Filter.type': ''\n }\n };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: this.path }]\n };\n }\n}\n","import { IManagedObject } from '@c8y/client';\nimport { SupportedIconsSuggestions } from '@c8y/ngx-components/icon-selector/icons';\n\nexport enum RepositoryType {\n FIRMWARE = 'c8y_Firmware',\n SOFTWARE = 'c8y_Software',\n CONFIGURATION = 'c8y_ConfigurationDump',\n PROFILE = 'c8y_Profile'\n}\n\nexport const REPOSITORY_BINARY_TYPES = {\n [RepositoryType.SOFTWARE]: 'c8y_SoftwareBinary',\n [RepositoryType.FIRMWARE]: 'c8y_FirmwareBinary',\n [RepositoryType.CONFIGURATION]: 'c8y_ConfigurationDumpBinary'\n};\n\nexport interface ModalModel {\n selected?: { id?: string; name?: string; [key: string]: any };\n version?: string;\n dependency?: { c8y_Firmware: { version: string } };\n patchVersion?: string;\n description?: string;\n deviceType?: string;\n softwareType?;\n configurationType?: string;\n binary?: {\n file?: File;\n url?: string;\n };\n c8y_Global?;\n}\n\nexport interface RepositoryCategory extends Partial<IManagedObject> {\n type: string;\n description?: string;\n c8y_Filter?: {\n type: string;\n };\n softwareType?: string;\n}\n\nexport interface FirmwareBinary extends Partial<IManagedObject> {\n type: 'c8y_FirmwareBinary';\n c8y_Firmware: {\n version: string;\n url: string;\n };\n}\n\nexport interface FirmwarePatchBinary extends FirmwareBinary {\n c8y_Patch: {\n dependency: string;\n };\n}\n\nexport interface SoftwareBinary extends Partial<IManagedObject> {\n type: string;\n c8y_Software: {\n version: string;\n url: string;\n };\n}\n\nexport type RepositoryBinary = FirmwareBinary | SoftwareBinary | FirmwarePatchBinary;\n\nexport interface SelectedRepositoryBinary {\n id?: string;\n name: string;\n version: string;\n url: string;\n dependency?: string;\n c8y_Patch?: boolean;\n isPatch?: boolean;\n patchDependency?: string;\n softwareType?: string;\n}\n\nexport interface DeviceFirmware {\n version: string;\n url: string;\n name: string;\n}\n\nexport interface DeviceSoftware {\n name: string;\n version?: string;\n url: string;\n softwareType?: string;\n}\n\nexport interface DeviceSoftwareChange extends DeviceSoftware {\n action: 'install' | 'delete';\n}\n\nexport interface ConfigurationSnapshot {\n id?: string;\n time: string;\n name: string;\n binaryUrl?: string;\n binary?: any;\n binaryType?: any;\n deviceType?: string;\n configurationType?: string;\n description?: string;\n}\n\nexport interface SupportedConfigurationItem {\n name: string;\n deviceType?: string;\n configurationType?: string;\n isLegacy?: boolean;\n}\n\nexport interface DeviceConfigurationListEmptyState {\n icon?: SupportedIconsSuggestions;\n title?: string;\n text?: string;\n}\n\nexport enum DeviceConfigurationOperation {\n UPLOAD_CONFIG = 'c8y_UploadConfigFile',\n DOWNLOAD_CONFIG = 'c8y_DownloadConfigFile',\n CONFIG = 'c8y_Configuration',\n SEND_CONFIG = 'c8y_SendConfiguration'\n}\nexport interface FilterCriteria {\n name?: string;\n [key: string]: any;\n}\n\nexport const PRODUCT_EXPERIENCE_REPOSITORY_SHARED = {\n SOFTWARE: {\n EVENTS: {\n REPOSITORY: 'softwareRepository',\n DEVICE_TAB: 'deviceSoftware'\n },\n COMPONENTS: {\n ADD_SOFTWARE_MODAL: 'add-software-modal',\n DEVICE_SOFTWARE_CHANGES: 'device-software-changes',\n DEVICE_SOFTWARE_LIST: 'device-software-list'\n },\n ACTIONS: {\n APPLY_SOFTWARE_CHANGES: 'applySoftwareChanges',\n CLEAR_SOFTWARE_CHANGES: 'clearSoftwareChanges',\n OPEN_INSTALL_SOFTWARE: 'openInstallSoftwareModal',\n OPEN_UPDATE_SOFTWARE: 'openUpdateSoftwareModal',\n DELETE_SOFTWARE: 'deleteSoftware'\n },\n RESULTS: {\n ADD_SOFTWARE: 'addSoftware',\n ADD_SOFTWARE_VERSION: 'addSoftwareVersion',\n EDIT_SOFTWARE: 'editSoftware'\n }\n },\n FIRMWARE: {\n EVENTS: {\n REPOSITORY: 'firmwareRepository',\n DEVICE_TAB: 'deviceFirmware'\n },\n COMPONENTS: {\n ADD_FIRMWARE_MODAL: 'add-firmware-modal',\n ADD_FIRMWAR_PATCH_MODAL: 'add-firmware-patch-modal',\n FIRMWARE_DEVICE_TAB: 'firmware-device-tab',\n DEVICE_FIRMWARE_LIST: 'device-firmware-list'\n },\n ACTIONS: {\n OPEN_INSTALL_FIRMWARE_DIALOG: 'openInstallFirmwareDialog',\n OPEN_REPLACE_FIRMWARE_DIALOG: 'openReplaceFirmwareDialog',\n OPEN_INSTALL_FIRMWARE_PATCH_DIALOG: 'openInstallFirmwarePatchDialog'\n },\n RESULTS: {\n ADD_FIRMWARE: 'addFirmware',\n ADD_FIRMWARE_VERSION: 'addFirmwareVersion',\n ADD_FIRMWARE_PATCH: 'addFirmwarePatch',\n EDIT_FIRMWARE: 'editFirmware',\n CREATE_FIRMWARE_UPDATE_OPERATION: 'createFirmwareUpdateOperation'\n }\n },\n SHARED: {\n COMPONENTS: {\n REPOSITORY_SELECT_MODAL: 'repository-select-modal',\n SELECT_CONFIGURATION_MODAL: 'select-configuration-modal'\n }\n }\n} as const;\n","import { Injectable } from '@angular/core';\nimport {\n EventBinaryService,\n EventService,\n IdReference,\n IEvent,\n IFetchResponse,\n IIdentified,\n IManagedObject,\n IManagedObjectBinary,\n InventoryBinaryService,\n InventoryService,\n IOperation,\n IResult,\n IResultList,\n OperationService,\n OperationStatus,\n QueriesUtil\n} from '@c8y/client';\nimport {\n AlertService,\n gettext,\n GlobalConfigService,\n OperationRealtimeService,\n ServiceRegistry\n} from '@c8y/ngx-components';\nimport {\n map as _map,\n assign,\n cloneDeep,\n find,\n forEach,\n get,\n head,\n isNil,\n isString,\n isUndefined,\n omitBy,\n pick,\n remove,\n set\n} from 'lodash-es';\nimport { defer, from, merge, Observable, of, throwError } from 'rxjs';\nimport { filter, map, switchMap, take, takeWhile, withLatestFrom } from 'rxjs/operators';\nimport { IAdvancedSoftwareService } from './advanced-software-management.model';\nimport {\n ConfigurationSnapshot,\n DeviceFirmware,\n DeviceSoftware,\n DeviceSoftwareChange,\n FirmwareBinary,\n FirmwarePatchBinary,\n ModalModel,\n REPOSITORY_BINARY_TYPES,\n RepositoryBinary,\n RepositoryCategory,\n RepositoryType,\n SelectedRepositoryBinary,\n SoftwareBinary\n} from './repository.model';\n\n@Injectable()\nexport class RepositoryService {\n readonly dateFrom = new Date(0);\n readonly dateTo = new Date(Date.now() + 86400000); // 1 day in the future\n private queriesUtil: QueriesUtil;\n private advancedSoftwareService: IAdvancedSoftwareService | undefined;\n\n constructor(\n private inventory: InventoryService,\n private inventoryBinary: InventoryBinaryService,\n private operation: OperationService,\n private alert: AlertService,\n private event: EventService,\n private operationRealtime: OperationRealtimeService,\n private eventBinary: EventBinaryService,\n private serviceRegistry: ServiceRegistry,\n private globalConfigService: GlobalConfigService\n ) {\n this.queriesUtil = new QueriesUtil();\n this.advancedSoftwareService = head(this.serviceRegistry.get('asm'));\n }\n\n /**\n * Lists repository entries of given type.\n * @param type The type of repository entries to list.\n * @param options Extra listing options.\n */\n listRepositoryEntries(\n type: RepositoryType,\n options?: {\n /** Additional query. */\n query?: any;\n /** (deprecated - to be removed) Only include entries with matching partial names. */\n partialName?: string;\n /** Include entries with matching partial text in the specified properties. */\n partialTextFilter?: { partialText: string; properties: string[] };\n /** Exclude legacy entries. */\n skipLegacy?: boolean;\n /** Exclude default ordering. */\n skipDefaultOrder?: boolean;\n /** Other request params. */\n params?: any;\n }\n ) {\n const defaultOrder = [{ name: 1 }];\n const defaultFilters = { type };\n const legacyFilters = { __has: `url` };\n let filters = {};\n\n let fullQuery = (options && options.query) || {};\n if (!options || (options && !options.skipDefaultOrder)) {\n fullQuery = this.queriesUtil.addOrderbys(fullQuery, defaultOrder, 'prepend');\n }\n\n fullQuery = this.queriesUtil.addAndFilter(fullQuery, defaultFilters);\n\n if (options && options.partialTextFilter) {\n const { partialText, properties } = options.partialTextFilter;\n const orFilter = { __or: properties.map(property => ({ [property]: `*${partialText}*` })) };\n fullQuery = this.queriesUtil.addAndFilter(fullQuery, orFilter);\n }\n\n if (options && options.partialName) {\n // backwards compatibility if\n fullQuery = this.queriesUtil.addAndFilter(fullQuery, { name: `*${options.partialName}*` });\n }\n\n if (options && options.skipLegacy) {\n fullQuery = this.queriesUtil.addAndFilter(fullQuery, { __not: legacyFilters });\n }\n\n filters = {\n query: this.queriesUtil.buildQuery(fullQuery),\n pageSize: 50,\n withTotalPages: true,\n ...((options && options.params) || {})\n };\n return this.inventory.list(filters);\n }\n\n async create(modal: ModalModel, type: RepositoryType, mo: Partial<IManagedObject> = {}) {\n switch (type) {\n case RepositoryType.FIRMWARE:\n case RepositoryType.SOFTWARE:\n return this.createRepositoryObject(modal, type);\n\n case RepositoryType.CONFIGURATION:\n Object.assign(modal, {\n selected: {\n id: mo.id,\n name: modal.version\n },\n configurationType: modal.configurationType,\n name: modal.version\n });\n\n if (!modal.deviceType && mo.id) {\n modal.deviceType = null;\n }\n if (!modal.selected && mo.id) {\n modal.configurationType = null;\n }\n\n const repositoryObject = this.createRepositoryObject(modal, type);\n\n if (mo.url) {\n const newBinaryUrl = (await repositoryObject).url;\n this.removeOutdatedBinary(newBinaryUrl, mo.url);\n }\n\n return repositoryObject;\n }\n }\n\n async createRepositoryObject(\n modal: ModalModel,\n type: RepositoryType\n ): Promise<RepositoryCategory> {\n let binary: IManagedObjectBinary;\n let binaryURL: string;\n let repositoryEntry: RepositoryCategory;\n let repositoryBinary: FirmwareBinary | SoftwareBinary;\n const mos = [];\n const {\n selected: { id: selectedId },\n binary: { file, url }\n } = modal;\n try {\n const globalParam = await this.getGlobalFragment(type);\n\n if (file) {\n ({ data: binary } = await this.saveBinary(file, globalParam));\n ({ self: binaryURL } = binary);\n if (type === RepositoryType.CONFIGURATION) {\n modal.binary.url = binaryURL;\n }\n mos.push(binary);\n } else {\n binaryURL = url;\n }\n\n ({ data: repositoryEntry } = await this.createOrUpdateRepositoryEntry(\n { ...modal, ...globalParam },\n type\n ));\n if (isNil(selectedId)) {\n mos.push(repositoryEntry);\n }\n\n if (type !== RepositoryType.CONFIGURATION) {\n ({ data: repositoryBinary } = await this.createRepositoryBinary(\n { ...modal, ...globalParam },\n binaryURL,\n type,\n repositoryEntry\n ));\n mos.push(repositoryBinary);\n }\n\n if (file) {\n await this.linkBinary(repositoryBinary, binary, repositoryEntry);\n }\n\n return repositoryEntry;\n } catch (error) {\n this.cleanUp(mos);\n this.errorMsg();\n\n // Propagate error\n throw error;\n }\n }\n\n saveBinary(file: File, global: Partial<IManagedObject>): Promise<IResult<IManagedObjectBinary>> {\n return this.inventoryBinary.create(file, global);\n }\n\n async createOrUpdateRepositoryEntry(\n modal: ModalModel,\n type: RepositoryType\n ): Promise<IResult<RepositoryCategory>> {\n const {\n selected: { id, name },\n description,\n deviceType,\n c8y_Global,\n binary\n } = modal;\n\n const mo = {\n id,\n name,\n description,\n type,\n c8y_Global\n };\n\n if (deviceType && type !== RepositoryType.CONFIGURATION) {\n set(mo, 'c8y_Filter.type', deviceType);\n }\n\n if ((deviceType || id) && type === RepositoryType.CONFIGURATION) {\n set(mo, 'deviceType', deviceType);\n }\n\n if (modal.softwareType) {\n set(mo, 'softwareType', modal.softwareType.softwareType);\n }\n\n if ((modal.configurationType || id) && type === RepositoryType.CONFIGURATION) {\n set(mo, 'configurationType', modal.configurationType);\n }\n\n if (type === RepositoryType.CONFIGURATION) {\n set(mo, 'url', binary?.url);\n }\n\n return id\n ? (this.inventory.update(mo) as Promise<IResult<RepositoryCategory>>)\n : (this.inventory.create(mo) as Promise<IResult<RepositoryCategory>>);\n }\n\n createRepositoryBinary(\n modal: ModalModel,\n binaryURL: string,\n type: RepositoryType,\n parent: RepositoryCategory\n ): Promise<IResult<FirmwareBinary | SoftwareBinary | FirmwarePatchBinary>> {\n const mo = this.prepareRepositoryBinaryMO(modal, binaryURL, type);\n\n return this.inventory.childAdditionsCreate(mo, parent) as Promise<\n IResult<FirmwareBinary | SoftwareBinary | FirmwarePatchBinary>\n >;\n }\n\n prepareRepositoryBinaryMO(modal: ModalModel, binaryURL: string, type: RepositoryType) {\n const { version, patchVersion, dependency, c8y_Global } = modal;\n const result = {\n type: REPOSITORY_BINARY_TYPES[type],\n [type]: {\n url: binaryURL\n },\n c8y_Global\n };\n\n if (dependency) {\n set(result, [type, 'version'], patchVersion);\n assign(result, {\n c8y_Patch: {\n dependency: dependency.c8y_Firmware.version\n }\n });\n } else {\n set(result, [type, 'version'], version);\n }\n return result;\n }\n\n async linkBinary(\n repositoryBinary,\n binary: IManagedObjectBinary,\n repositoryEntry?: RepositoryCategory\n ) {\n if (repositoryBinary) {\n const { id: repositoryBinaryId } = repositoryBinary;\n if (binary) {\n const { id: binaryId } = binary;\n return this.inventory.childAdditionsAdd(binaryId, repositoryBinaryId);\n }\n } else return this.inventory.childAdditionsAdd(binary, repositoryEntry);\n }\n\n cleanUp(mosToDelete: IIdentified[]) {\n mosToDelete.forEach(mo => {\n const { c8y_IsBinary } = mo;\n isUndefined(c8y_IsBinary) ? this.delete(mo) : this.inventoryBinary.delete(mo);\n });\n }\n\n delete(entity: IIdentified): Promise<IResult<null>> {\n return this.inventory.delete(entity, { forceCascade: true });\n }\n\n errorMsg() {\n const msg = gettext('Failed to save');\n this.alert.danger(msg);\n }\n\n getBaseVersionsCount$(entry: IManagedObject): Observable<number> {\n if (this.isLegacyEntry(entry)) {\n return of(1);\n }\n return from(this.listBaseVersions(entry, { withTotalElements: true })).pipe(\n map(({ paging }) => paging.totalElements)\n );\n }\n\n getBaseVersionFromMO(mo: RepositoryBinary): string {\n return this.isPatch(mo) ? get(mo, 'c8y_Patch.dependency') : get(mo, 'c8y_Firmware.version');\n }\n\n isPatch(mo: RepositoryBinary): boolean {\n return !!get(mo, 'c8y_Patch.dependency');\n }\n\n getPatchVersionsCount$(entry: IManagedObject, baseVersion: FirmwareBinary): Observable<number> {\n if (this.isLegacyEntry(baseVersion)) {\n return of(0);\n }\n return from(this.listPatchVersions(entry, baseVersion, { withTotalElements: true })).pipe(\n map(({ paging }) => paging.totalElements)\n );\n }\n\n isLegacyEntry(entry: Partial<IManagedObject>): boolean {\n return Boolean(entry.url);\n }\n\n /**\n * Lists all versions (base and patch ones) of given top level entry.\n * Versions are ordered by creation time (assuming the earlier created, the older the version).\n * @param entry Top level repository entry.\n * @param params Additional query params.\n */\n listAllVersions(entry: Partial<IManagedObject>, params = {}) {\n if (this.isLegacyEntry(entry)) {\n return this.getBaseVersionResultListForLegacyEntry(entry);\n }\n\n const VERSION_FILTER_ORDER = {\n __filter: {},\n __orderby: [{ 'creationTime.date': -1 }]\n };\n return this.listChildren(entry, VERSION_FILTER_ORDER, params);\n }\n\n /**\n * Lists base versions of given top level entry.\n * Versions are ordered by creation time (assuming the earlier created, the older the version).\n * @param entry Top level repository entry.\n * @param params Additional query params.\n */\n listBaseVersions(entry: Partial<IManagedObject>, params = {}) {\n if (this.isLegacyEntry(entry)) {\n return this.getBaseVersionResultListForLegacyEntry(entry);\n }\n\n const NO_PATCH_FILTER_ORDER = {\n __filter: {\n __not: { __has: 'c8y_Patch' }\n },\n __orderby: [{ 'creationTime.date': -1 }]\n };\n return this.listChildren(entry, NO_PATCH_FILTER_ORDER, params);\n }\n\n /**\n * Lists patch versions of given base version under the entry.\n * Versions are ordered by creation time (assuming the earlier created, the older the version).\n * @param entry Top level repository entry.\n * @param baseVersion Base version.\n * @param params Additional query params.\n */\n listPatchVersions(entry: IManagedObject, baseVersion: FirmwareBinary | string, params = {}) {\n const version = isString(baseVersion) ? baseVersion : get(baseVersion, 'c8y_Firmware.version');\n const PATCH_FILTER_ORDER = {\n __filter: {\n 'c8y_Patch.dependency': version\n },\n __orderby: [{ 'creationTime.date': -1 }]\n };\n return this.listChildren(entry, PATCH_FILTER_ORDER, params);\n }\n\n /**\n * Lists patch versions of given base version under the entry including the base version.\n * Versions are ordered by creation time (assuming the earlier created, the older the version).\n * In terms of legacy base version the entry gets transformed to fit the needed data model.\n * @param entry Top level repository entry.\n * @param baseVersion Base version.\n * @param params Additional query params.\n */\n listBaseVersionAndPatches(entry: IManagedObject, baseVersion: IManagedObject, params = {}) {\n if (this.isLegacyEntry(entry)) {\n return Promise.resolve({\n data: [\n Object.assign(\n {\n c8y_Firmware: {\n version: entry.version,\n url: entry.url\n }\n },\n entry\n )\n ]\n });\n }\n\n const PATCH_FILTER_ORDER = {\n __filter: {\n __or: {\n 'c8y_Patch.dependency': baseVersion.c8y_Firmware.version,\n 'c8y_Firmware.version': baseVersion.c8y_Firmware.version\n }\n },\n __orderby: [{ 'c8y_Patch.dependency': 1 }, { 'c8y_Firmware.version': 1 }]\n };\n return this.listChildren(entry, PATCH_FILTER_ORDER, params);\n }\n\n listChildren(entry: Partial<IManagedObject>, filters = {}, params: any = {}) {\n const childrenFilters = { __bygroupid: entry.id };\n const query = this.queriesUtil.addAndFilter(filters, childrenFilters);\n // FIXME: needed because of issue in forOf directive (...)\n params.withTotalPages = true;\n return this.inventory.listQuery(query, params);\n }\n\n /**\n * Fetches all items from the list starting with the provided page.\n * @param firstPage The first page of the list to fetch all items for.\n */\n async fetchAllItemsFromList(firstPage) {\n let allItems;\n\n if (!firstPage.then) {\n allItems = [...firstPage];\n } else {\n let { paging, data: items } = await firstPage;\n allItems = [...items];\n\n while (paging && paging.nextPage) {\n ({ paging, data: items } = await paging.next());\n allItems = [...allItems, ...items];\n }\n }\n\n return allItems;\n }\n\n /**\n * Gets top level repository entry managed object for base or patch version.\n * @param mo Base or patch version managed object with parents.\n */\n getRepositoryEntryMO$(mo: IManagedObject): Observable<IManagedObject | undefined> {\n if (!mo) {\n return of(undefined);\n }\n const [reference] = get(mo, 'additionParents.references');\n const id = get(reference, 'managedObject.id');\n return id\n ? from(this.inventory.detail(id, { withChildren: false })).pipe(map(({ data }) => data))\n : of(undefined);\n }\n /**\n * Gets base or patch version managed object.\n * @param deviceRepositoryFragment Device repository fragment.\n * @param type Top level repository entry type.\n * @param configuration Configuration object with options:\n * - **skipLegacy** - `boolean` - Exclude legacy entries.\n * - **filters** - `object` - Filter object.\n *\n * @deprecated as it doesn't support 'missing url' case\n */\n getRepositoryBinaryMoByVersion(\n deviceRepositoryFragment: DeviceFirmware | DeviceSoftware,\n type: RepositoryType,\n { skipLegacy = false, filters = {} }: { skipLegacy?: boolean; filters?: object } = {}\n ): Promise<IManagedObject> {\n const { version, url, name } = deviceRepositoryFragment;\n const repositoryBinaryType = REPOSITORY_BINARY_TYPES[type];\n let query;\n const newModelBaseVersionQuery = {\n [`${type}.version`]: version,\n [`${type}.url`]: url,\n type: repositoryBinaryType\n };\n const legacyVersionQuery = { url, type, name };\n filters = { withChildren: false, withParents: true, ...filters };\n\n if (skipLegacy) {\n query = {\n __and: {\n ...newModelBaseVersionQuery\n }\n };\n } else {\n query = {\n __or: [{ __and: { ...newModelBaseVersionQuery } }, { __and: { ...legacyVersionQuery } }]\n };\n }\n\n return this.inventory.listQuery(query, filters).then(({ data }) => head(data));\n }\n\n getBinaryName$(binaryUrl: string): Observable<string> {\n if (!binaryUrl) {\n return of('---');\n }\n\n const binaryId = this.inventoryBinary.getIdFromUrl(binaryUrl);\n if (!binaryId) {\n return of(binaryUrl);\n }\n return defer(() => this.inventory.detail(binaryId).then(result => result.data)).pipe(\n map(mo => mo.name)\n );\n }\n\n /**\n * Generates an inventory query object which can be used to find\n * repository entries of specified type matching the type of provided device.\n * @param repositoryType The type of repository entries which will be queried with the generated query.\n * @param device The device for which matching repository entries will be queried with the generated query.\n */\n\n getDeviceTypeQuery(repositoryType: RepositoryType, device: IManagedObject): object {\n let result = { type: repositoryType };\n if (repositoryType === RepositoryType.CONFIGURATION) {\n if (device.type) {\n result = this.queriesUtil.addAndFilter(result, {\n __or: [{ deviceType: device.type }, { __not: { __has: `deviceType` } }]\n });\n }\n } else {\n result = this.queriesUtil.addAndFilter(result, {\n __or: [\n { 'c8y_Filter.type': device.type },\n { 'c8y_Filter.type': '' },\n { __not: { __has: `c8y_Filter.type` } }\n ]\n });\n }\n\n return result;\n }\n\n /**\n * Generates an inventory query object which can be used to find\n * repository entries matching the predefined software types provided in the device.\n * @param device The device for which matching repository entries will be queried with the generated query.\n * @param query The query to which the software types filters will be attached. Default value is an object containg repository type software.\n */\n getSoftwareTypeQuery(device: IManagedObject, query?: object): object {\n let result = { ...(query || {}), type: RepositoryType.SOFTWARE };\n\n if (device.c8y_SupportedSoftwareTypes) {\n result = this.queriesUtil.addAndFilter(result, {\n __or: [device.c8y_SupportedSoftwareTypes.map(type => ({ softwareType: type }))]\n });\n }\n\n return result;\n }\n\n /**\n * Generates an inventory query object which can be used to find configuration repository entries\n * matching the type of provided device and specified configuration type.\n * @param device The device for which matching repository entries will be queried with the generated query.\n * @param configurationType Configuration type for which matching repository entries will be queried with the generated query.\n */\n getConfigurationTypeQuery(device: IManagedObject, configurationType: string): object {\n const query = this.getDeviceTypeQuery(RepositoryType.CONFIGURATION, device);\n return this.queriesUtil.addAndFilter(query, {\n __or: [\n { configurationType },\n { configurationType: '' },\n { __not: { __has: `configurationType` } }\n ]\n });\n }\n\n /**\n * Gets the list of software installed in the device in the uniform format.\n * Supports c8y_SoftwareList and c8y_Software fragments.\n * @param device The device whose software list should be returned.\n */\n getDeviceSoftwareList(device: IManagedObject): DeviceSoftware[] {\n if (device.c8y_SoftwareList) {\n return cloneDeep(device.c8y_SoftwareList);\n }\n if (device.c8y_Software) {\n return _map(device.c8y_Software, (version, name) => ({ name, version }));\n }\n return [];\n }\n\n /**\n * Prepares a software update operation for given device and the list of changes, and sends it to the device.\n * @param device The device which the operation should be prepared for and sent to.\n * @param changes The list of software changes which should be applied.\n */\n async createSoftwareUpdateOperation(\n device: IManagedObject,\n changes: DeviceSoftwareChange[]\n ): Promise<IOperation> {\n const operation = await this.getSoftwareUpdateOperation(device, changes);\n return (await this.operation.create(operation)).data;\n }\n\n /**\n * Prepares a software update operation for given device and changes.\n * Returned operation type depends on device's supported operations.\n * Supports c8y_SoftwareUpdate, c8y_SoftwareList, and c8y_Software operations.\n * @param device The device for which operation should be prepared.\n * @param changes The list of software changes which should be applied.\n */\n async getSoftwareUpdateOperation(\n device: IManagedObject,\n changes: DeviceSoftwareChange[]\n ): Promise<IOperation> {\n const operation: IOperation = {\n deviceId: device.id,\n description: `Apply software changes: ${changes\n .map(\n change =>\n `${change.action} \"${change.name}\"${\n change.version ? ` (version: ${change.version})` : ''\n }`\n )\n .join(', ')}`\n };\n if (device.c8y_SupportedOperations.includes('c8y_SoftwareUpdate')) {\n operation.c8y_SoftwareUpdate = (cloneDeep(changes) || []).map(change =>\n omitBy(change, isNil)\n );\n } else if (device.c8y_SupportedOperations.includes('c8y_SoftwareList')) {\n operation.c8y_SoftwareList = cloneDeep(\n await this.getCurrentSoftware(device, 'c8y_SoftwareList', [])\n );\n changes.forEach(change => {\n const deviceSoftware: DeviceSoftware = pick(omitBy(change, isNil), [\n 'name',\n 'version',\n 'url',\n 'softwareType'\n ]);\n if (change.action === 'delete') {\n remove(operation.c8y_SoftwareList, deviceSoftware);\n }\n if (change.action === 'install') {\n const softwareItemToUpdateIdx = operation.c8y_SoftwareList.findIndex(\n item => item.name === change.name\n );\n if (softwareItemToUpdateIdx > -1) {\n // update software\n operation.c8y_SoftwareList.splice(softwareItemToUpdateIdx, 1, deviceSoftware);\n } else {\n // install software\n operation.c8y_SoftwareList.push(deviceSoftware);\n }\n }\n });\n } else if (device.c8y_SupportedOperations.includes('c8y_Software')) {\n operation.c8y_Software = cloneDeep(await this.getCurrentSoftware(device, 'c8y_Software', {}));\n changes.forEach(change => {\n if (change.action === 'delete') {\n delete operation.c8y_Software[change.name];\n }\n if (change.action === 'install') {\n operation.c8y_Software[change.name] = change.version;\n }\n });\n }\n return operation;\n }\n\n /**\n * Extracts the list of device software changes from given operation in the context of given device.\n * @param operation The operation from which the list should be extracted.\n * @param device The target device of the operation.\n */\n async getDeviceSoftwareChangesFromOperation(\n operation: IOperation,\n device: IManagedObject\n ): Promise<DeviceSoftwareChange[]> {\n if (operation.c8y_SoftwareUpdate) {\n return cloneDeep(operation.c8y_SoftwareUpdate);\n }\n if (operation.c8y_SoftwareList) {\n return await this.getDeviceSoftwareChangesFromSoftwareListOperation(operation, device);\n }\n if (operation.c8y_Software) {\n return await this.getDeviceSoftwareChangesFromSoftwareOperation(operation, device);\n }\n return [];\n }\n\n /**\n * Prepares a firmware update operation for given device and the selected repository binary, and sends it to the device.\n * @param device The device which the operation should be prepared for and sent to.\n * @param selectedOption The selected repository binary option.\n */\n async createFirmwareUpdateOperation(\n device: IManagedObject,\n selectedOption: SelectedRepositoryBinary\n ): Promise<IOperation> {\n const operation = this.getFirmwareUpdateOperation(device, selectedOption);\n return (await this.operation.create(operation)).data;\n }\n\n /**\n * Prepares a firmware update operation for given device and selected version.\n * Supports c8y_Firmware operation.\n * @param device The device for which operation should be prepared.\n * @param selectedOption Selected firmware version.\n */\n getFirmwareUpdateOperation(\n device: IManagedObject,\n selectedOption: SelectedRepositoryBinary\n ): IOperation {\n delete selectedOption.id;\n\n const operation: IOperation = {\n deviceId: device.id,\n description: `Update firmware to: \"${selectedOption.name}\"${\n selectedOption.version ? ` (version: ${selectedOption.version})` : ''\n }`,\n c8y_Firmware: { ...selectedOption }\n };\n\n return operation;\n }\n\n /**\n * Prepares a configuration file upload operation for given device and configuration type.\n * @param device The device for which operation should be prepared.\n * @param configurationType Selected configuration type.\n * @param isLegacy A legacy operation is created without a configurationType.\n */\n getUploadConfigurationFileOperation(\n device: IManagedObject,\n configurationType: string,\n isLegacy = false\n ): IOperation {\n if (isLegacy) {\n return {\n deviceId: device.id,\n description: `Retrieve configuration snapshot from device ${device.name}`,\n c8y_UploadConfigFile: {}\n };\n }\n return {\n deviceId: device.id,\n description: `Retrieve ${configurationType} configuration snapshot from device ${device.name}`,\n c8y_UploadConfigFile: {\n type: configurationType\n }\n };\n }\n\n /**\n * Prepares a configuration file download operation for given device and configuration type.\n * @param device The device for which operation should be prepared.\n * @param configurationType Selected configuration type.\n * @param binaryUrl The url of a binary to be downloaded.\n * @param isLegacy A legacy operation is created without a configurationType.\n */\n getDownloadConfigurationFileOperation(\n device: IManagedObject,\n configurationType: string,\n configSnapshot: ConfigurationSnapshot,\n isLegacy = false\n ): IOperation {\n if (isLegacy) {\n return {\n deviceId: device.id,\n description: `Send configuration snapshot ${configSnapshot.name} to device ${device.name}`,\n c8y_DownloadConfigFile: {\n url: configSnapshot.binaryUrl,\n c8y_ConfigurationDump: {\n id: configSnapshot.id\n }\n }\n };\n }\n return {\n deviceId: device.id,\n description: `Send configuration snapshot ${configSnapshot.name} of configuration type ${configurationType} to device ${device.name}`,\n c8y_DownloadConfigFile: {\n url: configSnapshot.binaryUrl,\n type: configurationType\n }\n };\n }\n\n /**\n * Gets the last firmware update operation for given device.\n * Looks for c8y_Firmware operations.\n * @param deviceId The ID of the device to find an operation for.\n */\n async getLastFirmwareUpdateOperation(deviceId: string | number): Promise<IOperation> {\n const filters = {\n deviceId,\n dateFrom: new Date(0).toISOString(),\n dateTo: new Date(Date.now()).toISOString(),\n revert: true,\n pageSize: 1\n };\n return this.getFirstMatchingOperation([{ ...filters, fragmentType: 'c8y_Firmware' }]);\n }\n\n /**\n * Gets the last software update operation for given device.\n * Looks for c8y_SoftwareUpdate, c8y_SoftwareList, or c8y_Software operations.\n * @param deviceId The ID of the device to find an operation for.\n */\n async getLastSoftwareUpdateOperation(deviceId: string | number): Promise<IOperation> {\n const filters = {\n deviceId,\n dateFrom: new Date(0).toISOString(),\n dateTo: new Date(Date.now()).toISOString(),\n revert: true,\n pageSize: 1\n };\n return this.getLatestMatchingOperation([\n { ...filters, fragmentType: 'c8y_SoftwareUpdate' },\n { ...filters, fragmentType: 'c8y_SoftwareList' },\n { ...filters, fragmentType: 'c8y_Software' }\n ]);\n }\n\n /**\n * Iterates over the list of filters and queries the operations.\n * If a query returns at least one operation, the first one will be returned.\n * Otherwise the next query will be performed.\n * If none of the queries returns any operation, null will be returned.\n * @param filtersList The list of filters for the queries.\n */\n async getFirstMatchingOperation(filtersList: any[]): Promise<IOperation> {\n let matchingOperation = null;\n\n for (const filters of filtersList) {\n const operations = (await this.operation.list(filters)).data;\n if (operations.length) {\n matchingOperation = operations[0];\n break;\n }\n }\n\n return matchingOperation;\n }\n\n /**\n * Iterates over the list of filters and queries the operations.\n * It compares the operations retrieved by the queries by 'creationTime'\n * and return the latest one.\n * If none of the queries returns any operation, null will be returned.\n * @param filtersList The list of filters for the queries.\n */\n async getLatestMatchingOperation(filtersList: any[]): Promise<IOperation> {\n let matchingOperation: IOperation = null;\n\n for (const filters of filtersList) {\n const operations: IOperation[] = (await this.operation.list(filters)).data;\n if (operations.length) {\n if (matchingOperation) {\n matchingOperation =\n new Date(matchingOperation.creationTime).getTime() <\n new Date(operations[0].creationTime).getTime()\n ? operations[0]\n : matchingOperation;\n } else {\n matchingOperation = operations[0];\n }\n }\n }\n\n return matchingOperation;\n }\n\n /**\n * Creates the operation and returns an observable to track its progress.\n * Fails the observable when the operation returns FAILED status.\n * Completes the observable when the operation returns SUCCESSFUL status.\n * @param operation The operation to create and track.\n */\n createObservedOperation(operation: IOperation): Observable<IOperation> {\n return from(this.operation.create(operation)).pipe(\n map(({ data }) => data),\n take(1),\n switchMap(createdOperation => this.observeOperation(createdOperation))\n );\n }\n\n /**\n * Returns an observable to track progress of given operation.\n * Fails the observable when the operation returns FAILED status.\n * Completes the observable when the operation returns SUCCESSFUL status.\n * @param operation The operation to be observed.\n */\n observeOperation(operation: IOperation): Observable<IOperation> {\n const observedOperation$ = of(operation);\n const operationUpdates$ = observedOperation$.pipe(\n switchMap(observedOperation => this.operationRealtime.onAll$(observedOperation.deviceId)),\n map(({ data }) => data as IOperation),\n withLatestFrom(observedOperation$),\n filter(([operationUpdate, observedOperation]) => operationUpdate.id === observedOperation.id),\n switchMap(([operationUpdate]) => {\n if (operationUpdate.status === OperationStatus.FAILED) {\n return throwError(operationUpdate);\n }\n return of(operationUpdate);\n }),\n takeWhile(operationUpdate => operationUpdate.status !== OperationStatus.SUCCESSFUL, true)\n );\n return merge(observedOperation$, operationUpdates$);\n }\n\n /**\n * Gets a single event with latest creationTime for the given device Id and event type.\n * @param deviceId The device Id for which the events should be queried.\n * @param type Event type.\n */\n async getLatestConfigurationEvent(\n deviceId: string | number,\n type: string\n ): Promise<IEvent | undefined> {\n const eventFilter: object = {\n source: deviceId,\n type,\n dateFrom: this.dateFrom.toISOString(),\n dateTo: this.dateTo.toISOString(),\n pageSize: 1\n };\n\n const { data } = await this.event.list(eventFilter);\n return data[0];\n }\n\n /**\n * Gets a list of operations for the given device Id, and operation type.\n * @param deviceId The device Id for which the operation should be queried.\n * @param operationType Operation type fragment.\n */\n async getConfigFileOperationList(\n deviceId: string | number,\n operationType: string\n ): Promise<IOperation[]> {\n const operationFilter: object = {\n deviceId,\n fragmentType: operationType,\n dateFrom: this.dateFrom.toISOString(),\n dateTo: this.dateTo.toISOString(),\n revert: true,\n pageSize: 2000\n };\n\n return (await this.operation.list(operationFilter)).data;\n }\n\n /**\n * Gets latest uploaded configuration snapshot for the given device, and configuration type.\n * @param device The device for which the configuration snapshot was uploaded.\n * @param configurationType Selected configuration type.\n */\n async getConfigSnapshot(\n device: IManagedObject,\n configurationType: string\n ): Promise<ConfigurationSnapshot | undefined> {\n const event: IEvent = await this.getLatestConfigurationEvent(device.id, configurationType);\n let configSnapshot: ConfigurationSnapshot;\n if (event) {\n configSnapshot = {\n time: event.time,\n name: event.text,\n deviceType: device.type,\n configurationType\n };\n try {\n configSnapshot.binary = await (await this.eventBinary.download(event)).text();\n if (event.c8y_IsBinary) {\n configSnapshot.binaryType = event.c8y_IsBinary.type;\n }\n } catch (ex) {\n const msg = gettext('Could not get the binary.');\n this.alert.danger(msg);\n }\n }\n return configSnapshot;\n }\n\n async getLegacyConfigSnapshot(deviceId) {\n let configSnapshot: ConfigurationSnapshot;\n let mo;\n const device = (await this.inventory.detail(deviceId, { withChildren: false })).data;\n const snapshotId = device.c8y_ConfigurationDump && device.c8y_ConfigurationDump.id;\n if (!snapshotId) {\n return;\n }\n\n try {\n mo = (await this.inventory.detail(snapshotId)).data;\n } catch (ex) {\n // do nothing\n }\n if (mo) {\n configSnapshot = {\n time: mo.creationTime,\n name: mo.name\n };\n configSnapshot.binary = await this.getBinaryText(mo.url, { allowExternal: false });\n }\n return configSnapshot;\n }\n\n /**\n * Returns a binary object as text.\n * @param binaryUrl The URL to find binary\n * @param options The object with additional options:\n * - **allowExternal** - `boolean` - allows downloading external binary file\n * - **noAlerts** - `boolean` - do not display an alert message; defaults to `false`\n */\n async getBinaryText(\n binaryUrl: string,\n options: { allowExternal: boolean; noAlerts?: boolean }\n ): Promise<string> {\n const binaryId = this.inventoryBinary.getIdFromUrl(binaryUrl);\n let res;\n if (!binaryId) {\n if (options.allowExternal) {\n res = await this.getExternalBinaryResponse(binaryUrl, options);\n }\n } else {\n res = await this.getInternalBinaryResponse(binaryId, options);\n }\n if (!res) {\n return null;\n }\n return res.text();\n }\n\n /**\n * Returns a binary object as File.\n * @param binaryUrl The URL to find binary\n * @param options The object with additional options:\n * - **allowExternal** - `boolean` - allows downloading external binary file\n */\n async getBinaryFile(binaryUrl: string, options: { allowExternal: boolean }): Promise<File> {\n const binaryId = this.inventoryBinary.getIdFromUrl(binaryUrl);\n if (!binaryId && !options.allowExternal) {\n return null;\n }\n // @TODO: note that it doesn't solve issue with external binary here, such url won't have binaryId, so we won't know the name or contentType to use in File constructor, let's add a @FIXME comment for now?\n const { name, contentType } = (await this.inventory.detail(binaryId)).data;\n const res = !!binaryId\n ? await this.getInternalBinaryResponse(binaryId)\n : await this.getExternalBinaryResponse(binaryUrl);\n const arrayBuffer = await res.arrayBuffer();\n return new File([arrayBuffer], name, { type: contentType });\n }\n\n /**\n * Gets the last configuration update operation for given device.\n * Looks for c8y_Configuration and c8y_SendConfiguration operations.\n * @param deviceId The ID of the device to find an operation for.\n */\n async getLastConfigUpdateOperation(deviceId: string | number): Promise<IOperation> {\n const filters = {\n deviceId,\n dateFrom: new Date(0).toISOString(),\n dateTo: new Date(Date.now()).toISOString(),\n revert: true,\n pageSize: 1\n };\n return this.getLatestMatchingOperation([\n { ...filters, fragmentType: 'c8y_Configuration' },\n { ...filters, fragmentType: 'c8y_SendConfiguration' }\n ]);\n }\n\n /**\n * Prepares a configuration download operation for given device and its current configuration.\n * Supports c8y_SendConfiguration operation.\n * @param device The device for which operation should be prepared.\n */\n createTextBasedConfigurationReloadOperation(device: IManagedObject): IOperation {\n return {\n deviceId: device.id,\n description: gettext('Requested current configuration'),\n c8y_SendConfiguration: {}\n };\n }\n\n /**\n * Prepares a configuration update operation for the given device.\n * Supports c8y_Configuration operation.\n * @param device The device for which operation should be prepared.\n * @param config The configuration which will update the existing one.\n */\n createTextBasedConfigurationUpdateOperation(device: IManagedObject, config: string): IOperation {\n return {\n deviceId: device.id,\n description: gettext('Configuration update'),\n c8y_Configuration: {\n config\n }\n };\n }\n\n async getBinary(binaryId: IdReference): Promise<IFetchResponse> {\n try {\n return await this.inventoryBinary.download(binaryId);\n } catch (ex) {\n const msg = gettext('Could not get the binary.');\n this.alert.danger(msg);\n }\n }\n\n /**\n * Gets all available snapshots from the repository for the given device.\n * @param device The device for which the snapshots should be prepared.\n * @param configurationType Selected configuration type.\n */\n async getSnapshotsFromRepository(device, configurationType) {\n const searchQuery = this.getConfigurationTypeQuery(device, configurationType);\n const res = await this.listRepositoryEntries(RepositoryType.CONFIGURATION, {\n query: searchQuery,\n params: { pageSize: 100 }\n });\n return res.data;\n }\n\n /**\n * Checks if a device already have a given software installed\n * @param deviceId Id of the device to be checked\n * @param software The software to be checked\n */\n async isSoftwareInstalledOnDevice(\n deviceId: string | number,\n software: DeviceSoftware\n ): Promise<boolean> {\n const isASMAvailable = await this.advancedSoftwareService?.isASMAvailable();\n if (!isASMAvailable) {\n return false;\n }\n\n const queryFilter = { deviceId };\n if (software?.name) {\n set(queryFilter, 'name', software.name);\n }\n if (software?.version) {\n set(queryFilter, 'version', software.version);\n }\n return this.advancedSoftwareService.list(queryFilter).then(result => !!result.data?.length);\n }\n\n /**\n * Returns a binary object.\n * @param binaryId binary ID\n * @param options The object with additional options:\n * - **noAlerts** - `boolean` - do not display an alert message; defaults to `false`\n */\n private async getInternalBinaryResponse(\n binaryId: IdReference,\n options: { noAlerts?: boolean } = {}\n ): Promise<IFetchResponse> {\n let res;\n try {\n res = await this.inventoryBinary.download(binaryId);\n } catch (ex) {\n if (!options.noAlerts) {\n const msg = gettext('Could not get the binary.');\n this.alert.danger(msg);\n }\n }\n return res;\n }\n\n /**\n * Returns a binary object.\n * @param binaryUrl The URL to find binary\n * @param options The object with additional options:\n * - **noAlerts** - `boolean` - do not display an alert message; defaults to `false`\n */\n private async getExternalBinaryResponse(\n binaryUrl: string,\n options: { noAlerts?: boolean } = {}\n ): Promise<IFetchResponse> {\n let res;\n try {\n const fetchRes = await fetch(binaryUrl);\n if (fetchRes.status >= 400) {\n throw res;\n }\n res = fetchRes;\n } catch {\n if (!options.noAlerts) {\n const msg = gettext('Could not get the external binary');\n this.alert.danger(msg);\n }\n }\n return res;\n }\n\n private getBaseVersionResultListForLegacyEntry(entry) {\n return Promise.resolve({\n res: {} as IFetchResponse,\n data: [\n {\n ...entry,\n [entry.type]: {\n version: entry.version,\n url: entry.url\n }\n }\n ]\n } as IResultList<IManagedObject>);\n }\n\n private async getDeviceSoftwareChangesFromSoftwareListOperation(\n operation: IOperation,\n device: IManagedObject\n ): Promise<DeviceSoftwareChange[]> {\n const changes: DeviceSoftwareChange[] = [];\n const deviceSoftwareList = await this.getCurrentSoftware(device, 'c8y_SoftwareList', []);\n forEach(operation.c8y_SoftwareList, operationSoftware => {\n const deviceSoftware = find(deviceSoftwareList, { name: operationSoftware.name });\n if (\n (operationSoftware && operationSoftware.version) !==\n (deviceSoftware && deviceSoftware.version)\n ) {\n changes.push({\n ...operationSoftware,\n action: 'install'\n } as DeviceSoftwareChange);\n }\n });\n forEach(deviceSoftwareList, deviceSoftware => {\n const operationSoftware = find(operation.c8y_SoftwareList, { name: deviceSoftware.name });\n if (\n (operationSoftware && operationSoftware.version) !==\n (deviceSoftware && deviceSoftware.version)\n ) {\n const installChange = changes.find(\n change => deviceSoftware.name === change.name && change.action === 'install'\n );\n // check that this software is not an installation software change, otherwise it's an update and not a removal\n if (!installChange) {\n changes.push({\n ...deviceSoftware,\n action: 'delete'\n } as DeviceSoftwareChange);\n }\n }\n });\n return changes;\n }\n\n private async getDeviceSoftwareChangesFromSoftwareOperation(\n operation: IOperation,\n device: IManagedObject\n ): Promise<DeviceSoftwareChange[]> {\n const changes: DeviceSoftwareChange[] = [];\n const deviceSoftware = await this.getCurrentSoftware(device, 'c8y_Software', {});\n forEach(deviceSoftware, (deviceSoftwareVersion, deviceSoftwareName) => {\n if (operation.c8y_Software[deviceSoftwareName] !== deviceSoftwareVersion) {\n changes.push({\n name: deviceSoftwareName,\n version: deviceSoftwareVersion,\n action: 'delete'\n } as DeviceSoftwareChange);\n }\n });\n forEach(operation.c8y_Software, (operationSoftwareVersion, operationSoftwareName) => {\n const deviceSoftwareVersion = deviceSoftware && deviceSoftware[operationSoftwareName];\n if (deviceSoftwareVersion !== operationSoftwareVersion) {\n changes.push({\n name: operationSoftwareName,\n version: operationSoftwareVersion,\n action: 'install'\n } as DeviceSoftwareChange);\n }\n });\n return changes;\n }\n\n private async getCurrentSoftware(\n device: IManagedObject,\n swFragment: string,\n defaultValue: object\n ): Promise<object> {\n const isASMAvailable = await this.advancedSoftwareService?.isASMAvailable();\n if (isASMAvailable) {\n let softwareResultList: IResultList<IManagedObject> = await this.advancedSoftwareService.list(\n { deviceId: device.id, pageSize: 100 }\n );\n let list = (softwareResultList?.data || []).map(sw =>\n pick(omitBy(sw, isNil), ['name', 'version', 'url', 'softwareType'])\n );\n\n while (softwareResultList.paging?.nextPage) {\n softwareResultList = await softwareResultList.paging.next();\n list = [\n ...list,\n ...(softwareResultList?.data || []).map(sw =>\n pick(omitBy(sw, isNil), ['name', 'version', 'url', 'softwareType'])\n )\n ];\n }\n\n if (!list?.length) {\n return defaultValue;\n }\n\n return Array.isArray(defaultValue) ? list : this.softwareListToLegacy(list);\n } else {\n return device[swFragment] || defaultValue;\n }\n }\n\n private softwareListToLegacy(list: IManagedObject[]): object {\n return (list || []).reduce((prev, curr) => ({ ...prev, [curr.name]: curr.version }), {});\n }\n\n private async getGlobalFragment(type: RepositoryType) {\n return (await this.globalConfigService.getGlobalParam(type)) ? { c8y_Global: {} } : undefined;\n }\n\n private async removeOutdatedBinary(newBinaryURL, oldBinaryURL) {\n const existingBinaryId = await this.inventoryBinary.getIdFromUrl(oldBinaryURL);\n const newBinaryId = await this.inventoryBinary.getIdFromUrl(newBinaryURL);\n if (existingBinaryId && existingBinaryId !== newBinaryId) {\n await this.inventoryBinary.delete(existingBinaryId);\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { IManagedObject, InventoryBinaryService } from '@c8y/client';\nimport { CellRendererContext, CommonModule, memoize } from '@c8y/ngx-components';\nimport { property } from 'lodash-es';\nimport { RepositoryService } from '../repository.service';\n\n@Component({\n templateUrl: './file.cell-renderer.component.html',\n selector: 'c8y-file-cell-renderer',\n standalone: true,\n imports: [CommonModule],\n providers: [RepositoryService]\n})\nexport class FileCellRendererComponent {\n constructor(\n public context: CellRendererContext,\n private inventoryBinaryService: InventoryBinaryService,\n private repositoryService: RepositoryService\n ) {}\n\n isBinaryFile() {\n return this.context.item?.url\n ? !!this.inventoryBinaryService.getIdFromUrl(this.context.item.url)\n : false;\n }\n\n @memoize(property('id'))\n getBinaryName(configuration: IManagedObject) {\n return this.repositoryService.getBinaryName$(configuration.url);\n }\n}\n","<small\n title=\"{{ getBinaryName(context.item) | async }}\"\n *ngIf=\"isBinaryFile(); else noFile\"\n>\n {{ getBinaryName(context.item) | async }}\n</small>\n<ng-template #noFile>\n <small title=\"{{ context.item?.url }}\">\n {{ context.item?.url }}\n </small>\n</ng-template>\n","import { BaseColumn, ColumnConfig, gettext } from '@c8y/ngx-components';\nimport { FileCellRendererComponent } from './file.cell-renderer.component';\n\nexport class FileGridColumn extends BaseColumn {\n constructor(initialColumnConfig?: ColumnConfig & { filterLabel?: string; placeholder?: string }) {\n super(initialColumnConfig);\n this.name = 'file';\n this.header = gettext('File');\n this.cellRendererComponent = FileCellRendererComponent;\n\n this.filterable = false;\n this.sortable = false;\n }\n}\n","import { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { CellRendererContext, CommonModule } from '@c8y/ngx-components';\nimport { DeviceGridModule } from '@c8y/ngx-components/device-grid';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\n\n@Component({\n template: `\n <a\n class=\"interact\"\n [title]=\"context.item.name\"\n *ngIf=\"context?.property?.callback; else router\"\n (click)=\"context.property.callback(context.item)\"\n >\n {{ context.item.name }}\n </a>\n <ng-template #router>\n <a class=\"interact\" [title]=\"context.item.name\" [routerLink]=\"[context.item.id]\">\n {{ context.item.name }}\n </a>\n </ng-template>\n `,\n selector: 'c8y-repository-item-name-cell-renderer',\n standalone: true,\n imports: [CommonModule, DeviceGridModule, TooltipModule, RouterModule]\n})\nexport class RepositoryItemNameCellRendererComponent {\n constructor(public context: CellRendererContext) {}\n}\n","import {\n BaseColumn,\n ColumnConfig,\n getBasicInputArrayFormFieldConfig,\n gettext,\n Row\n} from '@c8y/ngx-components';\nimport { RepositoryItemNameCellRendererComponent } from './name.cell-renderer.component';\n\nexport class RepositoryItemNameGridColumn extends BaseColumn {\n callback: (row: Row) => void;\n\n constructor(\n initialColumnConfig?: ColumnConfig & {\n filterLabel?: string;\n placeholder?: string;\n callback?: (row: Row) => void;\n }\n ) {\n super(initialColumnConfig);\n this.name = 'name';\n this.path = 'name';\n this.header = gettext('Name');\n this.cellRendererComponent = RepositoryItemNameCellRendererComponent;\n\n this.filterable = true;\n this.filteringConfig = {\n fields: getBasicInputArrayFormFieldConfig({\n key: 'names',\n label: initialColumnConfig?.filterLabel ?? gettext('Filter items by name'),\n addText: gettext('Add next`name`'),\n tooltip: gettext('Use * as a wildcard character'),\n placeholder: initialColumnConfig?.placeholder ?? gettext('Cloud connectivity')\n }),\n getFilter(model: any): any {\n const filter: any = {};\n if (model.names.length) {\n filter.name = { __in: model.names };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: this.path }]\n };\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\n\n@Component({\n standalone: true,\n templateUrl: './type.cell-renderer.component.html',\n selector: 'c8y-type-cell-renderer',\n imports: [CommonModule]\n})\nexport class TypeCellRendererComponent {\n constructor(public context: CellRendererContext) {}\n}\n","<span\n class=\"label label-info\"\n *ngIf=\"!!context?.item?.[context?.property?.path]; else emptyText\"\n>\n {{ context.item[context.property.path] }}\n</span>\n<ng-template #emptyText>\n <small class=\"text-muted\">\n <em translate>Undefined`type`</em>\n </small>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { IManagedObject, IResultList, QueriesUtil } from '@c8y/client';\nimport {\n CommonModule as C8yCommonModule,\n C8yTranslatePipe,\n Column,\n CoreModule,\n FilteringFormRendererContext,\n ForOfFilterPipe,\n gettext,\n TypeaheadComponent\n} from '@c8y/ngx-components';\nimport { cloneDeep, uniqBy } from 'lodash-es';\nimport { BehaviorSubject, NEVER, Observable, pipe } from 'rxjs';\nimport { debounceTime, map, switchMap, tap } from 'rxjs/operators';\nimport { RepositoryService } from '../repository.service';\nimport { TypeGridColumn } from './type.grid-column';\n\n@Component({\n standalone: true,\n templateUrl: './type.filtering-form-renderer.component.html',\n changeDetection: ChangeDetectionStrategy.Default,\n selector: 'c8y-type-filtering-form-renderer',\n imports: [CommonModule, C8yTranslatePipe, C8yCommonModule, FormsModule, CoreModule]\n})\nexport class TypeFilteringFormRendererComponent implements OnInit, AfterViewInit {\n path: string;\n selectedType: IManagedObject;\n types$: Observable<IResultList<IManagedObject>> = NEVER;\n search$: BehaviorSubject<string> = new BehaviorSubject(null);\n filterPipe: ForOfFilterPipe<IManagedObject> = pipe(tap());\n typeaheadPlaceholder = gettext('Start typing to search, for example, {{ example }}');\n @ViewChild(TypeaheadComponent, { static: false }) typeahead: TypeaheadComponent;\n private queriesUtil: QueriesUtil = new QueriesUtil();\n private types: Set<string> = new Set();\n\n constructor(\n public context: FilteringFormRendererContext,\n public changeDetectorRef: ChangeDetectorRef,\n private repositoryService: RepositoryService,\n private elementRef: ElementRef\n ) {\n this.path = context.property.path;\n this.types$ = this.search$.pipe(\n debounceTime(300),\n tap(() => this.types.clear()),\n switchMap((searchString: string) => {\n let query = this.queriesUtil.prependOrderbys({}, [{ [this.path]: 1 }]);\n const filter = !!searchString\n ? {\n [this.path]: {\n __eq: `*${searchString}*`\n }\n }\n : {\n __has: this.path\n };\n query = this.queriesUtil.addAndFilter(query, filter);\n\n return this.repositoryService.listRepositoryEntries(\n (this.context.property as TypeGridColumn).repositoryType,\n {\n skipDefaultOrder: true,\n query,\n params: {\n pageSize: 200\n }\n }\n );\n })\n );\n\n this.filterPipe = pipe(\n map(\n this.removeDuplicatesType.bind(\n this\n ) as TypeFilteringFormRendererComponent['removeDuplicatesType']\n ),\n tap(() => setTimeout(() => this.changeDetectorRef.detectChanges(), 0))\n );\n }\n\n @HostListener('keyup.enter', ['$event']) onEnterKeyUp(event: KeyboardEvent) {\n event.stopPropagation();\n this.applyFilter();\n }\n @HostListener('keydown.escape', ['$event']) onEscapeKeyDown(event: KeyboardEvent) {\n event.stopPropagation();\n this.context.resetFilter();\n }\n\n ngOnInit(): void {\n const column: Column = this.context.property;\n this.selectedType = cloneDeep(column.externalFilterQuery || {});\n }\n\n ngAfterViewInit(): void {\n this.typeahead?.searchControl?.nativeElement?.focus();\n try {\n this.elementRef.nativeElement.parentElement.parentElement.style.overflow = 'visible';\n } catch (ex) {\n // intentionally empty\n }\n }\n\n applyFilter() {\n this.context.applyFilter({\n externalFilterQuery: {\n model: this.selectedType,\n chips: [\n {\n value: this.selectedType,\n displayValue: this.selectedType?.[this.path],\n path: [this.path],\n columnName: this.context.property.name,\n remove: () => {\n return {\n columnName: this.context.property.name,\n externalFilterQuery: {\n model: null,\n chips: []\n }\n };\n }\n }\n ]\n }\n });\n }\n\n private removeDuplicatesType(list: IManagedObject[]): IManagedObject[] {\n const uniqueByType: IManagedObject[] = uniqBy(list, this.path).filter(\n (mo: IManagedObject) => !this.types.has(mo[this.path])\n );\n uniqueByType.forEach((mo: IManagedObject) => this.types.add(mo[this.path]));\n return uniqueByType;\n }\n}\n","<c8y-form-group>\n <label>\n {{ context?.property?.filterLabel | translate }}\n </label>\n <c8y-typeahead\n placeholder=\"{{ typeaheadPlaceholder | translate: { example: context?.property?.example } }}\"\n [name]=\"path\"\n [(ngModel)]=\"selectedType\"\n [displayProperty]=\"path\"\n (onSearch)=\"search$.next($event)\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n *c8yFor=\"let type of types$; pipe: filterPipe; loadMore: 'auto'\"\n (click)=\"$event.stopPropagation(); selectedType = type; typeahead.dropdown.hide()\"\n [active]=\"selectedType?.[path] === type?.[path]\"\n >\n <c8y-highlight\n [text]=\"type?.[path] || '--'\"\n [pattern]=\"search$.value\"\n ></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n</c8y-form-group>\n\n<div class=\"data-grid__dropdown__footer d-flex separator-top\">\n <button\n class=\"btn btn-default btn-sm m-r-8 flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n (click)=\"context.resetFilter()\"\n translate\n >\n Reset\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n (click)=\"applyFilter()\"\n translate\n >\n Apply\n </button>\n</div>\n","import { BaseColumn, ColumnConfig, gettext } from '@c8y/ngx-components';\nimport { RepositoryType } from '../repository.model';\nimport { TypeCellRendererComponent } from './type.cell-renderer.component';\nimport { TypeFilteringFormRendererComponent } from './type.filtering-form-renderer.component';\n\nexport class TypeGridColumn extends BaseColumn {\n repositoryType: RepositoryType;\n\n constructor(\n initialColumnConfig?: ColumnConfig & {\n /** Column header */\n header?: string;\n /** Search field label */\n filterLabel?: string;\n /** Search field placeholder */\n placeholder?: string;\n /** MO property path to be used for quering */\n path?: string;\n /** Repository type */\n repositoryType?: RepositoryType;\n /** Typeahead input placeholder example value */\n example?: string;\n }\n ) {\n super(initialColumnConfig);\n this.name = 'type';\n this.path = initialColumnConfig?.path ?? 'type';\n this.header = initialColumnConfig?.header ?? gettext('Type');\n this.repositoryType = initialColumnConfig?.repositoryType;\n this.cellRendererComponent = TypeCellRendererComponent;\n\n this.filterable = true;\n this.filteringFormRendererComponent = TypeFilteringFormRendererComponent;\n this.filteringConfig = {\n getFilter: query => {\n const filter: any = {};\n if (query.model[this.path]) {\n filter[this.path] = { __eq: query.model[this.path] };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: this.path }]\n };\n }\n}\n","import { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { IManagedObject } from '@c8y/client';\nimport { CellRendererContext, CommonModule, memoize } from '@c8y/ngx-components';\nimport { DeviceGridModule } from '@c8y/ngx-components/device-grid';\nimport { property } from 'lodash-es';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { Observable } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\nimport { RepositoryService } from '../repository.service';\n\n@Component({\n templateUrl: './versions.cell-renderer.component.html',\n selector: 'c8y-versions-cell-renderer',\n standalone: true,\n imports: [CommonModule, DeviceGridModule, TooltipModule, RouterModule]\n})\nexport class VersionsCellRendererComponent {\n isLegacy = this.repositoryService.isLegacyEntry.bind(this.repositoryService);\n item;\n constructor(\n public context: CellRendererContext,\n private repositoryService: RepositoryService\n ) {\n this.item = context.item;\n }\n\n @memoize(property('id'))\n getBaseVersionsCount$(item: IManagedObject): Observable<number | string> {\n return this.repositoryService.getBaseVersionsCount$(item).pipe(shareReplay(1));\n }\n}\n","@if (isLegacy(item)) {\n <span\n class=\"label label-warning m-l-auto-sm\"\n translate\n >\n Legacy\n </span>\n} @else {\n @if (getBaseVersionsCount$(item) | async; as baseVersionsCount) {\n <span class=\"badge badge-info m-l-auto-sm\">\n {{ baseVersionsCount }}\n </span>\n } @else {\n <span class=\"badge badge-info m-l-auto-sm\">\n <i\n class=\"icon-spin\"\n c8yIcon=\"circle-o-notch\"\n ></i>\n </span>\n }\n}\n","import { BaseColumn, ColumnConfig, gettext } from '@c8y/ngx-components';\nimport { VersionsCellRendererComponent } from './versions.cell-renderer.component';\n\nexport class VersionsGridColumn extends BaseColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n this.name = 'versions';\n this.header = gettext('Versions');\n this.cellRendererComponent = VersionsCellRendererComponent;\n this.sortable = false;\n }\n}\n","export enum LinkRenderType {\n DOWNLOAD,\n LINK,\n TEXTONLY\n}\n","import { AlertService, memoize, IconDirective, C8yTranslatePipe } from '@c8y/ngx-components';\nimport { Component, Input } from '@angular/core';\nimport { RepositoryService } from '../repository.service';\nimport { saveAs } from 'file-saver';\nimport { InventoryBinaryService } from '@c8y/client';\nimport { LinkRenderType } from './link-render-type.enum';\nimport { NgIf, AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-file-download',\n templateUrl: './file-download.component.html',\n imports: [NgIf, IconDirective, AsyncPipe, C8yTranslatePipe]\n})\nexport class FileDownloadComponent {\n @Input() url: string;\n linkRenderType = LinkRenderType;\n isDownloading = false;\n constructor(\n private repositoryService: RepositoryService,\n private inventoryBinaryService: InventoryBinaryService,\n private alertService: AlertService\n ) {}\n\n @memoize()\n getBinaryName$(binaryUrl) {\n return this.repositoryService.getBinaryName$(binaryUrl);\n }\n\n @memoize()\n determineBehavior(): LinkRenderType {\n let result: LinkRenderType;\n if (this.inventoryBinaryService.getIdFromUrl(this.url)) {\n result = LinkRenderType.DOWNLOAD;\n } else if (this.url.match(/\\/\\//g)) {\n result = LinkRenderType.LINK;\n } else {\n result = LinkRenderType.TEXTONLY;\n }\n return result;\n }\n\n async downloadFile() {\n try {\n this.isDownloading = true;\n const binary: File = await this.repositoryService.getBinaryFile(this.url, {\n allowExternal: false\n });\n this.isDownloading = false;\n saveAs(binary);\n } catch (ex) {\n this.isDownloading = false;\n if (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n }\n}\n","<a\n *ngIf=\"determineBehavior() === linkRenderType.LINK\"\n href=\"{{ url }}\"\n class=\"pointer\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n>\n {{ getBinaryName$(url) | async }}\n</a>\n\n<span *ngIf=\"determineBehavior() === linkRenderType.TEXTONLY\">{{\n getBinaryName$(url) | async\n}}</span>\n\n<span *ngIf=\"determineBehavior() === linkRenderType.DOWNLOAD\">\n <a *ngIf=\"!isDownloading\" class=\"pointer\" (click)=\"downloadFile()\">\n {{ getBinaryName$(url) | async }}\n </a>\n\n <span *ngIf=\"isDownloading\">\n <i c8yIcon=\"spinner\" class=\"icon-spin\"></i> {{ 'Downloading…' | translate }}\n </span>\n</span>\n","import { Component, EventEmitter, forwardRef, TemplateRef } from '@angular/core';\nimport { IManagedObject, QueriesUtil } from '@c8y/client';\nimport {\n gettext,\n ISelectModalObject,\n ISelectModalOption,\n IUpdateItemEvent,\n ModalLabels,\n ModalSelectionMode,\n ProductExperienceEvent,\n ProductExperienceEventSource,\n PRODUCT_EXPERIENCE_EVENT_SOURCE,\n SelectModalComponent,\n ProductExperienceDirective\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { get, has, isEmpty, isEqual, omitBy } from 'lodash-es';\nimport { BehaviorSubject, merge, Observable, of, Subject } from 'rxjs';\nimport { map, mergeMap, switchMap, tap } from 'rxjs/operators';\nimport {\n FilterCriteria,\n PRODUCT_EXPERIENCE_REPOSITORY_SHARED,\n RepositoryBinary,\n RepositoryCategory,\n RepositoryType,\n SelectedRepositoryBinary\n} from '../repository.model';\nimport { RepositoryService } from '../repository.service';\nimport { AsyncPipe } from '@angular/common';\n\n// MODAL STRUCTURE\n// - selectModalObject (repository entry (repositoryCategory) -> type c8y_Firmware/c8y_Software)\n// -- ISelectModalOption (repository binary entry (repositoryBinary) => type c8y_FirmwareBinary/c8y_SoftwareBinary)\n// -- ISelectModalOption...\n// - selectModalObject...\n\n/**\n * RepositorySelectModalComponent displays repository entries options and allows to select them.\n *\n * ```typescript\n * import { take } from 'rxjs/operators';\n * import { RepositorySelectModalComponent, ModalSelectionMode, RepositoryType } from '@c8y/ngx-components/repository/shared';\n *\n * const initialState = {\n * repositoryType: RepositoryType.FIRMWARE,\n * title: gettext('Install firmware'),\n * subTitle: gettext('Available firmwares matching the device type'),\n * icon: 'c8y-firmware',\n * mode: ModalSelectionMode.SINGLE,\n * labels: { ok: gettext('Install') },\n * disableSelected: false\n * };\n *\n * const modal = this.bsModal.show(RepositorySelectModalComponent, {\n * ignoreBackdropClick: true,\n * initialState\n * });\n *\n * modal.content.load.next();\n * modal.content.resultEmitter.pipe(take(1)).subscribe((firmware) => {\n * })\n * ```\n */\n\n@Component({\n selector: 'c8y-repository-select-modal',\n templateUrl: './repository-select-modal.component.html',\n providers: [\n {\n provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,\n useExisting: forwardRef(() => RepositorySelectModalComponent)\n }\n ],\n imports: [SelectModalComponent, ProductExperienceDirective, AsyncPipe]\n})\nexport class RepositorySelectModalComponent implements ProductExperienceEventSource {\n PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE_REPOSITORY_SHARED;\n /**\n * Optional\n * Allows to provide custom data.\n * ```typescript\n * import { from } from 'rxjs';\n *\n * const repositoryEntry = { name: 'ExampleEntry', type: 'c8y_Firmware' };\n * const versions = [{ c8y_Firmware: { version: '1.0.0', url: 'http://example.com' } }];\n *\n * const initialState = {repositoryEntriesWithVersions$: from({ ...repositoryEntry, versions })};\n * ```\n */\n repositoryEntriesWithVersions$: Observable<IManagedObject[]> = undefined;\n /**\n * Repository entry type.\n */\n repositoryType: RepositoryType.FIRMWARE | RepositoryType.SOFTWARE;\n /**\n * Optional\n * Allows to use custom badges templates.\n * ```typescript\n * import { gettext } from '@c8y/ngx-components';\n *\n * const badgeTemplates = { '=1': gettext('{{count}} version'), other: gettext('{{count}} versions') };\n * const initialState = { badgeTemplates };\n * ```\n */\n badgeTemplates = { '=1': gettext('{{count}} version'), other: gettext('{{count}} versions') };\n /**\n * Optional\n * Allows to provide custom modal title.\n */\n title: string = gettext('Select repository entry');\n /**\n * Optional\n * Allows to provide custom modal subtitle.\n */\n subTitle: string;\n /**\n * Loads the content of the modal.\n * Must be invoked by the modal's caller.\n */\n load: Subject<void> = new Subject();\n /**\n * Triggers an update of the item list emitted.\n */\n updateInstallableList$: Subject<IUpdateItemEvent<any>> = new Subject();\n /**\n * Optional\n * Emits a filter criteria object currently entered in the filter input.\n * Use it to filter the items if you use custom repositoryEntriesWithVersions$.\n */\n searchTerm: BehaviorSubject<FilterCriteria> = new BehaviorSubject({});\n /**\n * Optional\n * Allows to provide device type query to restrict search criteria.\n * Only takes effect when repositoryEntriesWithVersions$ is not provided,\n * otherwise modal's caller have to provide already filtered data in the repositoryEntriesWithVersions$.\n */\n deviceTypeQuery: any = {};\n /**\n * Optional\n * Allows to provide query to restrict search criteria.\n * Only takes effect when repositoryEntriesWithVersions$ is not provided,\n * otherwise modal's caller have to provide already filtered data in the repositoryEntriesWithVersions$.\n */\n searchQuery: any = {};\n /**\n * Optional\n * Allows to provide custom labels for the buttons responsible for confirm/dismiss modal actions.\n */\n labels: ModalLabels = { ok: gettext('Save') };\n /**\n * Optional\n * Allows to hide the name filter input field.\n * By default, the filter input field is displayed.\n */\n showFilter = true;\n /**\n * Optional\n * Allows to show a warning that the search criteria should be narrowed down.\n * By default, this warning is hidden.\n */\n areMoreEntries = false;\n /**\n * Optional\n * Allows to display a more specific than the default message in case there are no items to display.\n */\n noItemsMessage: string;\n /**\n * Optional\n * Allows to pass the array of items. Each item from this array will be marked as selected in the modal.\n */\n selected: SelectedRepositoryBinary[];\n /**\n * Emits whenever a new repository binary have been selected in the modal.\n */\n onChoiceUpdated: EventEmitter<ISelectModalObject> = new EventEmitter<ISelectModalObject>();\n /**\n * Emits the list of selected options.\n */\n resultEmitter: EventEmitter<SelectedRepositoryBinary[]> = new EventEmitter<\n SelectedRepositoryBinary[]\n >();\n /**\n * Optional\n * Allows to change selection mode.\n * Supported options:\n * * single: only single option can be selected.\n * * multiple: multiple options can be selected.\n */\n mode: ModalSelectionMode = ModalSelectionMode.SINGLE;\n /**\n * Optional\n * Allows to use custom icon in the modal header.\n */\n icon: string;\n /**\n * Allows to block selection of the other versions from the same repository entry.\n */\n disableSelected = true;\n /**\n * Allows to hide items that have no options available.\n */\n hideEmptyItems: boolean;\n\n filterCriteria: FilterCriteria = {};\n\n repositoryEntries$: Observable<ISelectModalObject[]> = this.load.pipe(\n switchMap(() => this.repositoryEntriesWithVersions$),\n mergeMap(mos => this.aggregate(mos)),\n tap(items => {\n this.areMoreEntries = items.length >= this.PAGE_SIZE ? true : false;\n }),\n tap(items => (this.repositoryEntries = items))\n );\n\n modalEntries: Observable<ISelectModalObject[]> = merge(\n this.repositoryEntries$,\n this.updateInstallableList$.pipe(\n map((updateItemEvent: IUpdateItemEvent<any>) => {\n const itemToUpdate: ISelectModalObject = (this.repositoryEntries || []).find(\n item => item.groupId === updateItemEvent.object.groupId\n );\n if (itemToUpdate) {\n const optionToUpdate: ISelectModalOption = (itemToUpdate.options || []).find(\n option => option.obj.id === (updateItemEvent.object as any).selectedId\n );\n if (optionToUpdate) {\n optionToUpdate.template = updateItemEvent.template;\n if (updateItemEvent.mapper) {\n optionToUpdate.obj = updateItemEvent.mapper(optionToUpdate.obj);\n }\n }\n }\n return this.repositoryEntries;\n })\n )\n );\n\n /**\n * Optional\n * Allows to provide additional template that will be rendered in the\n * filters block on top of the results list in the select modal.\n */\n additionalFilterTemplate: TemplateRef<any>;\n\n productExperienceEvent: ProductExperienceEvent;\n\n private PAGE_SIZE = 100;\n private queriesUtil: QueriesUtil;\n private repositoryEntries: ISelectModalObject[];\n\n constructor(\n private repositoryService: RepositoryService,\n private translateService: TranslateService\n ) {\n this.queriesUtil = new QueriesUtil();\n }\n\n ngOnInit() {\n if (!this.repositoryType) {\n throw new Error('Repository type must be defined');\n }\n\n if (!this.repositoryEntriesWithVersions$) {\n this.repositoryEntriesWithVersions$ = of(1).pipe(\n mergeMap(() =>\n this.repositoryService.listRepositoryEntries(this.repositoryType, {\n query: this.queriesUtil.addAndFilter(\n this.deviceTypeQuery,\n has(this.searchQuery, 'name')\n ? { ...this.searchQuery, name: `*${this.searchQuery.name}*` }\n : this.searchQuery\n ),\n params: { pageSize: this.PAGE_SIZE }\n })\n ),\n map(({ data }) => data),\n map(mos => this.getAndAssignRepositoryBinaries(mos))\n );\n }\n }\n\n getAndAssignRepositoryBinaries(mos: IManagedObject[]) {\n mos.forEach(mo => {\n mo.versions = this.repositoryService.listAllVersions(mo);\n });\n return mos;\n }\n\n search(filterCriteria: FilterCriteria) {\n this.filterCriteria = omitBy(\n {\n ...this.filterCriteria,\n ...filterCriteria\n },\n isEmpty\n );\n\n if (!isEqual(this.filterCriteria, this.searchQuery)) {\n this.searchTerm.next(this.filterCriteria);\n this.searchQuery = this.filterCriteria;\n this.load.next();\n }\n }\n\n result(selectedItems: SelectedRepositoryBinary[]) {\n this.resultEmitter.emit(selectedItems);\n }\n\n async aggregate(mos: IManagedObject[]): Promise<ISelectModalObject[]> {\n const repositoryType = this.repositoryType;\n const selectedItems: SelectedRepositoryBinary[] = this.selected;\n\n return Promise.all(\n mos.map(async repositoryEntry => {\n const options: ISelectModalOption[] = this.getSelectModalOptions(\n await this.repositoryService.fetchAllItemsFromList(repositoryEntry.versions),\n selectedItems,\n repositoryEntry as RepositoryCategory,\n repositoryType\n );\n const selectModalObject = this.getSelectModalObject(\n repositoryEntry as RepositoryCategory,\n options\n );\n\n return selectModalObject;\n })\n );\n }\n\n getSelectModalOptions(\n versions: RepositoryBinary[],\n selectedItems: SelectedRepositoryBinary[],\n repositoryEntry: RepositoryCategory,\n repositoryType: RepositoryType\n ): ISelectModalOption[] {\n const selectModalOptions: ISelectModalOption[] = [];\n versions.forEach(repositoryBinary => {\n const isSelected: boolean = this.isBinaryRepositorySelected(\n selectedItems,\n repositoryEntry,\n repositoryBinary,\n repositoryType\n );\n\n const { version } = repositoryBinary[`${repositoryType}`];\n const bodyValue =\n version || `(${this.translateService.instant(gettext('not specified`version`'))})`;\n const bodyClass = version ? '' : 'text-muted';\n selectModalOptions.push({\n body: [\n {\n value: bodyValue,\n class: bodyClass\n }\n ],\n obj: {\n id: repositoryBinary.id,\n name: repositoryEntry.name,\n version,\n ...(get(repositoryBinary, 'c8y_Patch.dependency') && {\n dependency: get(repositoryBinary, 'c8y_Patch.dependency')\n }),\n ...(get(repositoryBinary, 'c8y_Patch') && { isPatch: true }),\n url: repositoryBinary[`${repositoryType}`].url,\n softwareType: repositoryEntry.softwareType\n },\n selected: isSelected\n });\n });\n return selectModalOptions;\n }\n\n isBinaryRepositorySelected(\n selectedItems: SelectedRepositoryBinary[],\n repositoryEntry: RepositoryCategory,\n repositoryBinary: RepositoryBinary,\n repositoryType: RepositoryType\n ): boolean {\n const isSelected = selectedItems\n ? selectedItems.filter(\n repositoryFragment =>\n repositoryFragment.name === repositoryEntry.name &&\n repositoryFragment.version === repositoryBinary[`${repositoryType}`].version\n ).length > 0\n : false;\n\n return isSelected;\n }\n\n getSelectModalObject(\n repositoryEntry: RepositoryCategory,\n options: ISelectModalOption[]\n ): ISelectModalObject {\n const label =\n options.length === 1\n ? this.translateService.instant(this.badgeTemplates['=1'], { count: options.length })\n : this.translateService.instant(this.badgeTemplates.other, { count: options.length });\n\n const selectModalObject: ISelectModalObject = {\n groupId: repositoryEntry.id,\n body: [\n { value: repositoryEntry.name, class: 'text-truncate' },\n { value: repositoryEntry.description, class: 'text-truncate text-muted' }\n ],\n additionalInformation: { value: label, class: 'label label-info' },\n options\n };\n\n return selectModalObject;\n }\n}\n","<c8y-select-modal\n [icon]=\"icon\"\n [title]=\"title\"\n [subTitle]=\"subTitle\"\n [items]=\"modalEntries | async\"\n [mode]=\"mode\"\n [disableSelected]=\"disableSelected\"\n [labels]=\"labels\"\n [showFilter]=\"showFilter\"\n [additionalFilterTemplate]=\"additionalFilterTemplate\"\n [areMoreEntries]=\"areMoreEntries\"\n [noItemsMessage]=\"noItemsMessage\"\n [hideEmptyItems]=\"hideEmptyItems\"\n (search)=\"search({ name: $event })\"\n (onChoiceUpdated)=\"onChoiceUpdated.emit($event)\"\n (result)=\"result($event)\"\n c8yProductExperience\n inherit\n suppressDataOverriding\n [actionData]=\"{ component: PRODUCT_EXPERIENCE.SHARED.COMPONENTS.REPOSITORY_SELECT_MODAL }\"\n></c8y-select-modal>\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n FormsModule\n} from '@angular/forms';\nimport { IManagedObject, IResultList, QueriesUtil } from '@c8y/client';\nimport {\n ForOfFilterPipe,\n gettext,\n toObservable,\n TypeaheadComponent,\n ListItemComponent,\n ForOfDirective,\n HighlightComponent,\n C8yTranslateDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { isEmpty, uniqBy } from 'lodash-es';\nimport { BehaviorSubject, interval, Observable, pipe } from 'rxjs';\nimport { debounce, map, shareReplay, switchMap, tap } from 'rxjs/operators';\nimport { RepositoryType } from '../repository.model';\nimport { RepositoryService } from '../repository.service';\nimport { NgStyle, NgIf, AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-software-type',\n templateUrl: 'software-type.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => SoftwareTypeComponent)\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SoftwareTypeComponent),\n multi: true\n }\n ],\n imports: [\n TypeaheadComponent,\n FormsModule,\n NgStyle,\n NgIf,\n ListItemComponent,\n ForOfDirective,\n HighlightComponent,\n C8yTranslateDirective,\n AsyncPipe,\n C8yTranslatePipe\n ]\n})\nexport class SoftwareTypeComponent implements OnInit, ControlValueAccessor, Validator {\n @Input() softwareTypeMO: IManagedObject;\n\n @Input() disabled: boolean;\n\n @Input() style;\n\n @Input()\n required = true;\n\n @Input()\n placeholder: string = this.translateService.instant(gettext('e.g. {{ example }}'), {\n example: 'yum'\n });\n\n @Input()\n emitResultsOnly = false;\n\n @Input()\n showBtnInNotFoundMessage = true;\n\n @Input()\n allowFreeEntries = true;\n\n @Input()\n showClearSelectionOption = false;\n\n @Input()\n clearSelectionOptionLabel: string = gettext('All software types');\n\n @Input()\n set presetSoftwareTypes(\n types: string[] | IManagedObject[] | Observable<string[] | IManagedObject[]>\n ) {\n if (!isEmpty(types)) {\n this.presetSoftwareTypes$ = toObservable(types).pipe(\n map(types =>\n types.map(softwareType =>\n typeof softwareType === 'string'\n ? ({ softwareType } as unknown as IManagedObject)\n : softwareType\n )\n )\n );\n }\n }\n\n @ViewChild('deviceSoftwareTypeModel') deviceSoftwareTypeModel: TypeaheadComponent;\n\n @ViewChild('notFoundTypeAddNewTemplate', { static: true })\n notFoundTypeAddNewTemplate: TemplateRef<unknown>;\n\n @ViewChild('notFoundTypeTemplate', { static: true })\n notFoundTypeTemplate: TemplateRef<unknown>;\n\n @Output() onSelectSoftware: EventEmitter<IManagedObject> = new EventEmitter<IManagedObject>();\n\n notFoundTemplateToUse: TemplateRef<unknown>;\n\n filterPipe: ForOfFilterPipe<IManagedObject> = pipe(tap());\n softwaresResult$: Observable<IResultList<IManagedObject>>;\n search$: BehaviorSubject<string> = new BehaviorSubject(null);\n softwaresResult: IResultList<IManagedObject>;\n\n private queriesUtil: QueriesUtil = new QueriesUtil();\n private softwareTypes: Set<string> = new Set();\n private presetSoftwareTypes$: Observable<IManagedObject[]>;\n\n constructor(\n private repositoryService: RepositoryService,\n public changeDetectorRef: ChangeDetectorRef,\n private translateService: TranslateService\n ) {\n this.filterPipe = pipe(map(this.removeDuplicatesBySoftwareType.bind(this)));\n }\n\n ngOnInit(): void {\n this.softwaresResult$ = this.search$.pipe(\n debounce(() => interval(300)),\n tap(() => this.softwareTypes.clear()),\n switchMap((searchString: string) => {\n if (!this.emitResultsOnly || !searchString) {\n this.onSelectSoftware.emit(this.softwareTypeMO);\n }\n return this.getSoftwareByTypeResult(searchString);\n }),\n shareReplay(1)\n );\n\n this.notFoundTemplateToUse = this.showBtnInNotFoundMessage\n ? this.notFoundTypeAddNewTemplate\n : this.notFoundTypeTemplate;\n }\n\n getSoftwareByTypeResult(searchString: string) {\n return this.presetSoftwareTypes$\n ? this.searchInPreset(searchString)\n : this.searchInRepository(searchString);\n }\n\n selectSoftware(software) {\n this.softwareTypeMO = software;\n this.onSelectSoftware.emit(software);\n this.deviceSoftwareTypeModel.searchControlModel.control.markAsDirty();\n (this.deviceSoftwareTypeModel as any).onChange(software);\n }\n\n clearSoftware() {\n this.softwareTypeMO = undefined;\n this.search$.next('');\n this.onSelectSoftware.emit();\n }\n\n resetInput() {\n this.deviceSoftwareTypeModel.reset();\n }\n\n writeValue(value: any): void {\n this.deviceSoftwareTypeModel.writeValue(value);\n }\n\n registerOnChange(fn: any): void {\n this.deviceSoftwareTypeModel.registerOnChange(fn);\n }\n\n registerOnTouched(fn: any): void {\n this.deviceSoftwareTypeModel.registerOnTouched(fn);\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.deviceSoftwareTypeModel.setDisabledState(isDisabled);\n }\n\n validate(control: AbstractControl<any, any>): ValidationErrors {\n return this.deviceSoftwareTypeModel.validate(control);\n }\n\n private searchInPreset(searchString: string): Observable<IResultList<IManagedObject>> {\n return this.presetSoftwareTypes$.pipe(\n map(types => ({\n data: types.filter(type => !searchString || type.softwareType.indexOf(searchString) > -1),\n res: undefined,\n statistics: { currentPage: 1, pageSize: types?.length, totalPages: 1 }\n }))\n );\n }\n\n private searchInRepository(searchString: string) {\n let query = this.queriesUtil.prependOrderbys({}, [{ softwareType: 1 }]);\n const filter = !!searchString\n ? {\n softwareType: {\n __eq: `*${searchString}*`\n }\n }\n : {\n __has: 'softwareType'\n };\n query = this.queriesUtil.addAndFilter(query, filter);\n\n return this.repositoryService.listRepositoryEntries(RepositoryType.SOFTWARE, {\n query,\n params: {\n pageSize: 200\n }\n });\n }\n\n private removeDuplicatesBySoftwareType(list: IManagedObject[]): IManagedObject[] {\n const uniqueBySoftwareType: IManagedObject[] = uniqBy(list, 'softwareType').filter(\n (sw: IManagedObject) => !this.softwareTypes.has(sw.softwareType)\n );\n uniqueBySoftwareType.forEach((sw: IManagedObject) => this.softwareTypes.add(sw.softwareType));\n return uniqueBySoftwareType;\n }\n}\n","<c8y-typeahead\n [(ngModel)]=\"softwareTypeMO\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n name=\"softwareType\"\n [placeholder]=\"placeholder\"\n [allowFreeEntries]=\"allowFreeEntries\"\n #deviceSoftwareTypeModel\n (onSearch)=\"search$.next($event)\"\n displayProperty=\"softwareType\"\n [ngStyle]=\"style\"\n>\n <c8y-li\n *ngIf=\"showClearSelectionOption\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"clearSoftware()\"\n [active]=\"!softwareTypeMO?.softwareType\"\n >\n <span>{{ clearSelectionOptionLabel | translate }}</span>\n </c8y-li>\n <c8y-li\n *c8yFor=\"\n let software of softwaresResult$;\n pipe: filterPipe;\n loadMore: 'auto';\n notFound: notFoundTemplateToUse\n \"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"selectSoftware(software)\"\n [active]=\"softwareTypeMO?.softwareType === software.softwareType\"\n >\n <c8y-highlight\n [text]=\"software.softwareType || '--'\"\n [pattern]=\"search$ | async\"\n ></c8y-highlight>\n </c8y-li>\n <ng-template #notFoundTypeAddNewTemplate>\n <c8y-li class=\"bg-level-2 p-8\" *ngIf=\"(search$ | async)?.length > 0\">\n <span translate>No match found.</span>\n <button\n title=\"{{ 'Add new`software type`' | translate }}\"\n type=\"button\"\n class=\"btn btn-primary btn-xs m-l-8\"\n translate\n >\n Add new`software type`\n </button>\n </c8y-li>\n </ng-template>\n <ng-template #notFoundTypeTemplate>\n <c8y-li\n class=\"bg-level-2 p-8\"\n *ngIf=\"(search$ | async)?.length > 0 && (softwaresResult$ | async)?.data?.length === 0\"\n >\n <span translate>No match found. Refine your search terms or check your spelling.</span>\n </c8y-li>\n </ng-template>\n</c8y-typeahead>\n","import { NgModule } from '@angular/core';\nimport { OperationRealtimeService } from '@c8y/ngx-components';\nimport { FileDownloadComponent } from './file-download/file-download.component';\nimport { RepositoryService } from './repository.service';\nimport { RepositorySelectModalComponent } from './select-modal/repository-select-modal.component';\nimport { SoftwareTypeComponent } from './software-type/software-type.component';\n\n@NgModule({\n imports: [RepositorySelectModalComponent, FileDownloadComponent, SoftwareTypeComponent],\n providers: [RepositoryService, OperationRealtimeService],\n exports: [RepositorySelectModalComponent, FileDownloadComponent, SoftwareTypeComponent]\n})\nexport class SharedRepositoryModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_map","i1","i2","i3.RepositoryService","i4","CommonModule","i2.RepositoryService","C8yCommonModule","i1.RepositoryService","i3"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAOM,MAAO,qBAAsB,SAAQ,UAAU,CAAA;AACnD,IAAA,WAAA,CAAY,mBAAmF,EAAA;QAC7F,KAAK,CAAC,mBAAmB,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,aAAa;AACzB,QAAA,IAAI,CAAC,IAAI,GAAG,aAAa;AACzB,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;AAEpC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACtB,IAAI,CAAC,eAAe,GAAG;YACrB,MAAM,EAAE,iCAAiC,CAAC;AACxC,gBAAA,GAAG,EAAE,cAAc;gBACnB,KAAK,EAAE,mBAAmB,EAAE,WAAW,IAAI,OAAO,CAAC,6BAA6B,CAAC;AACjF,gBAAA,OAAO,EAAE,OAAO,CAAC,uBAAuB,CAAC;AACzC,gBAAA,OAAO,EAAE,OAAO,CAAC,+BAA+B,CAAC;gBACjD,WAAW,EAAE,mBAAmB,EAAE,WAAW,IAAI,OAAO,CAAC,cAAc;aACxE,CAAC;AACF,YAAA,SAAS,CAAC,KAAU,EAAA;gBAClB,MAAM,MAAM,GAAQ,EAAE;AACtB,gBAAA,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE;oBAC7B,MAAM,CAAC,WAAW,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE;gBACnD;AACA,gBAAA,OAAO,MAAM;YACf;SACD;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACpB,IAAI,CAAC,aAAa,GAAG;YACnB,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;SACzC;IACH;AACD;;MCxBY,+BAA+B,CAAA;AAG1C,IAAA,WAAA,CAAmB,OAA4B,EAAA;QAA5B,IAAA,CAAA,OAAO,GAAP,OAAO;IAAwB;IAElD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC;IACzE;+GAPW,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb5C,iNAQA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDGY,YAAY,kOAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAE1D,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;+BAEE,+BAA+B,EAAA,UAAA,EAC7B,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,iNAAA,EAAA;;;AEHlE,MAAO,oBAAqB,SAAQ,UAAU,CAAA;AAClD,IAAA,WAAA,CACE,mBAIC,EAAA;QAED,KAAK,CAAC,mBAAmB,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,YAAY;QACxB,IAAI,CAAC,IAAI,GAAG,mBAAmB,EAAE,IAAI,IAAI,iBAAiB;AAC1D,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;AACpC,QAAA,IAAI,CAAC,qBAAqB,GAAG,+BAA+B;AAE5D,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QAEtB,IAAI,CAAC,eAAe,GAAG;AACrB,YAAA,MAAM,EAAE;AACN,gBAAA,GAAG,iCAAiC,CAAC;AACnC,oBAAA,GAAG,EAAE,OAAO;oBACZ,KAAK,EAAE,mBAAmB,EAAE,WAAW,IAAI,OAAO,CAAC,6BAA6B,CAAC;AACjF,oBAAA,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC;AAClC,oBAAA,OAAO,EAAE,OAAO,CAAC,+BAA+B,CAAC;AACjD,oBAAA,WAAW,EAAE,mBAAmB,EAAE,WAAW,IAAI,WAAW;AAC5D,oBAAA,QAAQ,EAAE;iBACX,CAAC;AACF,gBAAA;AACE,oBAAA,GAAG,EAAE,cAAc;AACnB,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,eAAe,EAAE;AACf,wBAAA,KAAK,EAAE,OAAO,CAAC,gBAAgB;AAChC;AACF;AACF,aAAA;AACD,YAAA,SAAS,CAAC,KAAU,EAAA;AAClB,gBAAA,MAAM,MAAM,GAAQ,EAAE,IAAI,EAAE,EAAE,EAAE;AAChC,gBAAA,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE;oBACvB,MAAM,CAAC,IAAI,GAAG;AACZ,wBAAA,iBAAiB,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK;qBACvC;gBACH;AACA,gBAAA,IAAI,KAAK,CAAC,YAAY,EAAE;oBACtB,MAAM,CAAC,IAAI,GAAG;wBACZ,GAAG,MAAM,CAAC,IAAI;AACd,wBAAA,IAAI,EAAE;AACJ,4BAAA,KAAK,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACnC,4BAAA,iBAAiB,EAAE;AACpB;qBACF;gBACH;AACA,gBAAA,OAAO,MAAM;YACf;SACD;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACpB,IAAI,CAAC,aAAa,GAAG;YACnB,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;SACzC;IACH;AACD;;IChEW;AAAZ,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,UAAA,CAAA,GAAA,cAAyB;AACzB,IAAA,cAAA,CAAA,UAAA,CAAA,GAAA,cAAyB;AACzB,IAAA,cAAA,CAAA,eAAA,CAAA,GAAA,uBAAuC;AACvC,IAAA,cAAA,CAAA,SAAA,CAAA,GAAA,aAAuB;AACzB,CAAC,EALW,cAAc,KAAd,cAAc,GAAA,EAAA,CAAA,CAAA;AAOnB,MAAM,uBAAuB,GAAG;AACrC,IAAA,CAAC,cAAc,CAAC,QAAQ,GAAG,oBAAoB;AAC/C,IAAA,CAAC,cAAc,CAAC,QAAQ,GAAG,oBAAoB;AAC/C,IAAA,CAAC,cAAc,CAAC,aAAa,GAAG;;IA0GtB;AAAZ,CAAA,UAAY,4BAA4B,EAAA;AACtC,IAAA,4BAAA,CAAA,eAAA,CAAA,GAAA,sBAAsC;AACtC,IAAA,4BAAA,CAAA,iBAAA,CAAA,GAAA,wBAA0C;AAC1C,IAAA,4BAAA,CAAA,QAAA,CAAA,GAAA,mBAA4B;AAC5B,IAAA,4BAAA,CAAA,aAAA,CAAA,GAAA,uBAAqC;AACvC,CAAC,EALW,4BAA4B,KAA5B,4BAA4B,GAAA,EAAA,CAAA,CAAA;AAWjC,MAAM,oCAAoC,GAAG;AAClD,IAAA,QAAQ,EAAE;AACR,QAAA,MAAM,EAAE;AACN,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE;AACb,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,kBAAkB,EAAE,oBAAoB;AACxC,YAAA,uBAAuB,EAAE,yBAAyB;AAClD,YAAA,oBAAoB,EAAE;AACvB,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,sBAAsB,EAAE,sBAAsB;AAC9C,YAAA,sBAAsB,EAAE,sBAAsB;AAC9C,YAAA,qBAAqB,EAAE,0BAA0B;AACjD,YAAA,oBAAoB,EAAE,yBAAyB;AAC/C,YAAA,eAAe,EAAE;AAClB,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,YAAY,EAAE,aAAa;AAC3B,YAAA,oBAAoB,EAAE,oBAAoB;AAC1C,YAAA,aAAa,EAAE;AAChB;AACF,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,MAAM,EAAE;AACN,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE;AACb,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,kBAAkB,EAAE,oBAAoB;AACxC,YAAA,uBAAuB,EAAE,0BAA0B;AACnD,YAAA,mBAAmB,EAAE,qBAAqB;AAC1C,YAAA,oBAAoB,EAAE;AACvB,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,4BAA4B,EAAE,2BAA2B;AACzD,YAAA,4BAA4B,EAAE,2BAA2B;AACzD,YAAA,kCAAkC,EAAE;AACrC,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,YAAY,EAAE,aAAa;AAC3B,YAAA,oBAAoB,EAAE,oBAAoB;AAC1C,YAAA,kBAAkB,EAAE,kBAAkB;AACtC,YAAA,aAAa,EAAE,cAAc;AAC7B,YAAA,gCAAgC,EAAE;AACnC;AACF,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,UAAU,EAAE;AACV,YAAA,uBAAuB,EAAE,yBAAyB;AAClD,YAAA,0BAA0B,EAAE;AAC7B;AACF;;;MCzHU,iBAAiB,CAAA;AAM5B,IAAA,WAAA,CACU,SAA2B,EAC3B,eAAuC,EACvC,SAA2B,EAC3B,KAAmB,EACnB,KAAmB,EACnB,iBAA2C,EAC3C,WAA+B,EAC/B,eAAgC,EAChC,mBAAwC,EAAA;QARxC,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;AAdpB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;AACtB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;AAehD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,EAAE;AACpC,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtE;AAEA;;;;AAIG;IACH,qBAAqB,CACnB,IAAoB,EACpB,OAaC,EAAA;QAED,MAAM,YAAY,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAClC,QAAA,MAAM,cAAc,GAAG,EAAE,IAAI,EAAE;AAC/B,QAAA,MAAM,aAAa,GAAG,EAAE,KAAK,EAAE,CAAA,GAAA,CAAK,EAAE;QACtC,IAAI,OAAO,GAAG,EAAE;QAEhB,IAAI,SAAS,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,EAAE;AAChD,QAAA,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;AACtD,YAAA,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC;QAC9E;QAEA,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,EAAE,cAAc,CAAC;AAEpE,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,iBAAiB,EAAE;YACxC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,iBAAiB;YAC7D,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,KAAK,EAAE,CAAC,QAAQ,GAAG,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,CAAG,EAAE,CAAC,CAAC,EAAE;YAC3F,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC;QAChE;AAEA,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE;;AAElC,YAAA,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,WAAW,CAAA,CAAA,CAAG,EAAE,CAAC;QAC5F;AAEA,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE;AACjC,YAAA,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;QAChF;AAEA,QAAA,OAAO,GAAG;YACR,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC;AAC7C,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,cAAc,EAAE,IAAI;YACpB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE;SACtC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;IACrC;IAEA,MAAM,MAAM,CAAC,KAAiB,EAAE,IAAoB,EAAE,KAA8B,EAAE,EAAA;QACpF,QAAQ,IAAI;YACV,KAAK,cAAc,CAAC,QAAQ;YAC5B,KAAK,cAAc,CAAC,QAAQ;gBAC1B,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC;YAEjD,KAAK,cAAc,CAAC,aAAa;AAC/B,gBAAA,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;AACnB,oBAAA,QAAQ,EAAE;wBACR,EAAE,EAAE,EAAE,CAAC,EAAE;wBACT,IAAI,EAAE,KAAK,CAAC;AACb,qBAAA;oBACD,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;oBAC1C,IAAI,EAAE,KAAK,CAAC;AACb,iBAAA,CAAC;gBAEF,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,EAAE;AAC9B,oBAAA,KAAK,CAAC,UAAU,GAAG,IAAI;gBACzB;gBACA,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,EAAE;AAC5B,oBAAA,KAAK,CAAC,iBAAiB,GAAG,IAAI;gBAChC;gBAEA,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC;AAEjE,gBAAA,IAAI,EAAE,CAAC,GAAG,EAAE;oBACV,MAAM,YAAY,GAAG,CAAC,MAAM,gBAAgB,EAAE,GAAG;oBACjD,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,EAAE,CAAC,GAAG,CAAC;gBACjD;AAEA,gBAAA,OAAO,gBAAgB;;IAE7B;AAEA,IAAA,MAAM,sBAAsB,CAC1B,KAAiB,EACjB,IAAoB,EAAA;AAEpB,QAAA,IAAI,MAA4B;AAChC,QAAA,IAAI,SAAiB;AACrB,QAAA,IAAI,eAAmC;AACvC,QAAA,IAAI,gBAAiD;QACrD,MAAM,GAAG,GAAG,EAAE;AACd,QAAA,MAAM,EACJ,QAAQ,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EACtB,GAAG,KAAK;AACT,QAAA,IAAI;YACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;YAEtD,IAAI,IAAI,EAAE;AACR,gBAAA,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC;gBAC5D,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM;AAC7B,gBAAA,IAAI,IAAI,KAAK,cAAc,CAAC,aAAa,EAAE;AACzC,oBAAA,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS;gBAC9B;AACA,gBAAA,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;YAClB;iBAAO;gBACL,SAAS,GAAG,GAAG;YACjB;YAEA,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,MAAM,IAAI,CAAC,6BAA6B,CACnE,EAAE,GAAG,KAAK,EAAE,GAAG,WAAW,EAAE,EAC5B,IAAI,CACL;AACD,YAAA,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE;AACrB,gBAAA,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;YAC3B;AAEA,YAAA,IAAI,IAAI,KAAK,cAAc,CAAC,aAAa,EAAE;gBACzC,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAC7D,EAAE,GAAG,KAAK,EAAE,GAAG,WAAW,EAAE,EAC5B,SAAS,EACT,IAAI,EACJ,eAAe,CAChB;AACD,gBAAA,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAC5B;YAEA,IAAI,IAAI,EAAE;gBACR,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,MAAM,EAAE,eAAe,CAAC;YAClE;AAEA,YAAA,OAAO,eAAe;QACxB;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;YACjB,IAAI,CAAC,QAAQ,EAAE;;AAGf,YAAA,MAAM,KAAK;QACb;IACF;IAEA,UAAU,CAAC,IAAU,EAAE,MAA+B,EAAA;QACpD,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;IAClD;AAEA,IAAA,MAAM,6BAA6B,CACjC,KAAiB,EACjB,IAAoB,EAAA;AAEpB,QAAA,MAAM,EACJ,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EACtB,WAAW,EACX,UAAU,EACV,UAAU,EACV,MAAM,EACP,GAAG,KAAK;AAET,QAAA,MAAM,EAAE,GAAG;YACT,EAAE;YACF,IAAI;YACJ,WAAW;YACX,IAAI;YACJ;SACD;QAED,IAAI,UAAU,IAAI,IAAI,KAAK,cAAc,CAAC,aAAa,EAAE;AACvD,YAAA,GAAG,CAAC,EAAE,EAAE,iBAAiB,EAAE,UAAU,CAAC;QACxC;AAEA,QAAA,IAAI,CAAC,UAAU,IAAI,EAAE,KAAK,IAAI,KAAK,cAAc,CAAC,aAAa,EAAE;AAC/D,YAAA,GAAG,CAAC,EAAE,EAAE,YAAY,EAAE,UAAU,CAAC;QACnC;AAEA,QAAA,IAAI,KAAK,CAAC,YAAY,EAAE;YACtB,GAAG,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC;QAC1D;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,EAAE,KAAK,IAAI,KAAK,cAAc,CAAC,aAAa,EAAE;YAC5E,GAAG,CAAC,EAAE,EAAE,mBAAmB,EAAE,KAAK,CAAC,iBAAiB,CAAC;QACvD;AAEA,QAAA,IAAI,IAAI,KAAK,cAAc,CAAC,aAAa,EAAE;YACzC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC;QAC7B;AAEA,QAAA,OAAO;cACF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;cACxB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAA0C;IACzE;AAEA,IAAA,sBAAsB,CACpB,KAAiB,EACjB,SAAiB,EACjB,IAAoB,EACpB,MAA0B,EAAA;AAE1B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC;QAEjE,OAAO,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,EAAE,MAAM,CAEpD;IACH;AAEA,IAAA,yBAAyB,CAAC,KAAiB,EAAE,SAAiB,EAAE,IAAoB,EAAA;QAClF,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,KAAK;AAC/D,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,IAAI,EAAE,uBAAuB,CAAC,IAAI,CAAC;YACnC,CAAC,IAAI,GAAG;AACN,gBAAA,GAAG,EAAE;AACN,aAAA;YACD;SACD;QAED,IAAI,UAAU,EAAE;YACd,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC;YAC5C,MAAM,CAAC,MAAM,EAAE;AACb,gBAAA,SAAS,EAAE;AACT,oBAAA,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC;AACrC;AACF,aAAA,CAAC;QACJ;aAAO;YACL,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QACzC;AACA,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,MAAM,UAAU,CACd,gBAAgB,EAChB,MAA4B,EAC5B,eAAoC,EAAA;QAEpC,IAAI,gBAAgB,EAAE;AACpB,YAAA,MAAM,EAAE,EAAE,EAAE,kBAAkB,EAAE,GAAG,gBAAgB;YACnD,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,MAAM;gBAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,CAAC;YACvE;QACF;;YAAO,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,eAAe,CAAC;IACzE;AAEA,IAAA,OAAO,CAAC,WAA0B,EAAA;AAChC,QAAA,WAAW,CAAC,OAAO,CAAC,EAAE,IAAG;AACvB,YAAA,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE;YAC3B,WAAW,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;AAC/E,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,MAAM,CAAC,MAAmB,EAAA;AACxB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAC9D;IAEA,QAAQ,GAAA;AACN,QAAA,MAAM,GAAG,GAAG,OAAO,CAAC,gBAAgB,CAAC;AACrC,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;IACxB;AAEA,IAAA,qBAAqB,CAAC,KAAqB,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;AAC7B,YAAA,OAAO,EAAE,CAAC,CAAC,CAAC;QACd;AACA,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CACzE,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC,aAAa,CAAC,CAC1C;IACH;AAEA,IAAA,oBAAoB,CAAC,EAAoB,EAAA;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE,sBAAsB,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE,sBAAsB,CAAC;IAC7F;AAEA,IAAA,OAAO,CAAC,EAAoB,EAAA;QAC1B,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,sBAAsB,CAAC;IAC1C;IAEA,sBAAsB,CAAC,KAAqB,EAAE,WAA2B,EAAA;AACvE,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE;AACnC,YAAA,OAAO,EAAE,CAAC,CAAC,CAAC;QACd;AACA,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CACvF,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC,aAAa,CAAC,CAC1C;IACH;AAEA,IAAA,aAAa,CAAC,KAA8B,EAAA;AAC1C,QAAA,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;IAC3B;AAEA;;;;;AAKG;AACH,IAAA,eAAe,CAAC,KAA8B,EAAE,MAAM,GAAG,EAAE,EAAA;AACzD,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;AAC7B,YAAA,OAAO,IAAI,CAAC,sCAAsC,CAAC,KAAK,CAAC;QAC3D;AAEA,QAAA,MAAM,oBAAoB,GAAG;AAC3B,YAAA,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,CAAC,EAAE,mBAAmB,EAAE,CAAC,CAAC,EAAE;SACxC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,oBAAoB,EAAE,MAAM,CAAC;IAC/D;AAEA;;;;;AAKG;AACH,IAAA,gBAAgB,CAAC,KAA8B,EAAE,MAAM,GAAG,EAAE,EAAA;AAC1D,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;AAC7B,YAAA,OAAO,IAAI,CAAC,sCAAsC,CAAC,KAAK,CAAC;QAC3D;AAEA,QAAA,MAAM,qBAAqB,GAAG;AAC5B,YAAA,QAAQ,EAAE;AACR,gBAAA,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW;AAC5B,aAAA;YACD,SAAS,EAAE,CAAC,EAAE,mBAAmB,EAAE,CAAC,CAAC,EAAE;SACxC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,qBAAqB,EAAE,MAAM,CAAC;IAChE;AAEA;;;;;;AAMG;AACH,IAAA,iBAAiB,CAAC,KAAqB,EAAE,WAAoC,EAAE,MAAM,GAAG,EAAE,EAAA;AACxF,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,GAAG,CAAC,WAAW,EAAE,sBAAsB,CAAC;AAC9F,QAAA,MAAM,kBAAkB,GAAG;AACzB,YAAA,QAAQ,EAAE;AACR,gBAAA,sBAAsB,EAAE;AACzB,aAAA;YACD,SAAS,EAAE,CAAC,EAAE,mBAAmB,EAAE,CAAC,CAAC,EAAE;SACxC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,kBAAkB,EAAE,MAAM,CAAC;IAC7D;AAEA;;;;;;;AAOG;AACH,IAAA,yBAAyB,CAAC,KAAqB,EAAE,WAA2B,EAAE,MAAM,GAAG,EAAE,EAAA;AACvF,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;YAC7B,OAAO,OAAO,CAAC,OAAO,CAAC;AACrB,gBAAA,IAAI,EAAE;oBACJ,MAAM,CAAC,MAAM,CACX;AACE,wBAAA,YAAY,EAAE;4BACZ,OAAO,EAAE,KAAK,CAAC,OAAO;4BACtB,GAAG,EAAE,KAAK,CAAC;AACZ;AACF,qBAAA,EACD,KAAK;AAER;AACF,aAAA,CAAC;QACJ;AAEA,QAAA,MAAM,kBAAkB,GAAG;AACzB,YAAA,QAAQ,EAAE;AACR,gBAAA,IAAI,EAAE;AACJ,oBAAA,sBAAsB,EAAE,WAAW,CAAC,YAAY,CAAC,OAAO;AACxD,oBAAA,sBAAsB,EAAE,WAAW,CAAC,YAAY,CAAC;AAClD;AACF,aAAA;AACD,YAAA,SAAS,EAAE,CAAC,EAAE,sBAAsB,EAAE,CAAC,EAAE,EAAE,EAAE,sBAAsB,EAAE,CAAC,EAAE;SACzE;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,kBAAkB,EAAE,MAAM,CAAC;IAC7D;IAEA,YAAY,CAAC,KAA8B,EAAE,OAAO,GAAG,EAAE,EAAE,SAAc,EAAE,EAAA;QACzE,MAAM,eAAe,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE;AACjD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,eAAe,CAAC;;AAErE,QAAA,MAAM,CAAC,cAAc,GAAG,IAAI;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IAChD;AAEA;;;AAGG;IACH,MAAM,qBAAqB,CAAC,SAAS,EAAA;AACnC,QAAA,IAAI,QAAQ;AAEZ,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACnB,YAAA,QAAQ,GAAG,CAAC,GAAG,SAAS,CAAC;QAC3B;aAAO;YACL,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,SAAS;AAC7C,YAAA,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC;AAErB,YAAA,OAAO,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE;AAChC,gBAAA,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE;gBAC9C,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC;YACpC;QACF;AAEA,QAAA,OAAO,QAAQ;IACjB;AAEA;;;AAGG;AACH,IAAA,qBAAqB,CAAC,EAAkB,EAAA;QACtC,IAAI,CAAC,EAAE,EAAE;AACP,YAAA,OAAO,EAAE,CAAC,SAAS,CAAC;QACtB;QACA,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE,4BAA4B,CAAC;QACzD,MAAM,EAAE,GAAG,GAAG,CAAC,SAAS,EAAE,kBAAkB,CAAC;AAC7C,QAAA,OAAO;AACL,cAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;AACvF,cAAE,EAAE,CAAC,SAAS,CAAC;IACnB;AACA;;;;;;;;;AASG;AACH,IAAA,8BAA8B,CAC5B,wBAAyD,EACzD,IAAoB,EACpB,EAAE,UAAU,GAAG,KAAK,EAAE,OAAO,GAAG,EAAE,KAAiD,EAAE,EAAA;QAErF,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,wBAAwB;AACvD,QAAA,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,IAAI,CAAC;AAC1D,QAAA,IAAI,KAAK;AACT,QAAA,MAAM,wBAAwB,GAAG;AAC/B,YAAA,CAAC,CAAA,EAAG,IAAI,CAAA,QAAA,CAAU,GAAG,OAAO;AAC5B,YAAA,CAAC,CAAA,EAAG,IAAI,CAAA,IAAA,CAAM,GAAG,GAAG;AACpB,YAAA,IAAI,EAAE;SACP;QACD,MAAM,kBAAkB,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;AAC9C,QAAA,OAAO,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE;QAEhE,IAAI,UAAU,EAAE;AACd,YAAA,KAAK,GAAG;AACN,gBAAA,KAAK,EAAE;AACL,oBAAA,GAAG;AACJ;aACF;QACH;aAAO;AACL,YAAA,KAAK,GAAG;AACN,gBAAA,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,wBAAwB,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,kBAAkB,EAAE,EAAE;aACxF;QACH;QAEA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;IAChF;AAEA,IAAA,cAAc,CAAC,SAAiB,EAAA;QAC9B,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC;QAClB;QAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,SAAS,CAAC;QAC7D,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,EAAE,CAAC,SAAS,CAAC;QACtB;AACA,QAAA,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAClF,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,CACnB;IACH;AAEA;;;;;AAKG;IAEH,kBAAkB,CAAC,cAA8B,EAAE,MAAsB,EAAA;AACvE,QAAA,IAAI,MAAM,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE;AACrC,QAAA,IAAI,cAAc,KAAK,cAAc,CAAC,aAAa,EAAE;AACnD,YAAA,IAAI,MAAM,CAAC,IAAI,EAAE;gBACf,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE;AAC7C,oBAAA,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAA,UAAA,CAAY,EAAE,EAAE;AACvE,iBAAA,CAAC;YACJ;QACF;aAAO;YACL,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE;AAC7C,gBAAA,IAAI,EAAE;AACJ,oBAAA,EAAE,iBAAiB,EAAE,MAAM,CAAC,IAAI,EAAE;oBAClC,EAAE,iBAAiB,EAAE,EAAE,EAAE;AACzB,oBAAA,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAA,eAAA,CAAiB,EAAE;AACtC;AACF,aAAA,CAAC;QACJ;AAEA,QAAA,OAAO,MAAM;IACf;AAEA;;;;;AAKG;IACH,oBAAoB,CAAC,MAAsB,EAAE,KAAc,EAAA;AACzD,QAAA,IAAI,MAAM,GAAG,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,QAAQ,EAAE;AAEhE,QAAA,IAAI,MAAM,CAAC,0BAA0B,EAAE;YACrC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE;gBAC7C,IAAI,EAAE,CAAC,MAAM,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/E,aAAA,CAAC;QACJ;AAEA,QAAA,OAAO,MAAM;IACf;AAEA;;;;;AAKG;IACH,yBAAyB,CAAC,MAAsB,EAAE,iBAAyB,EAAA;AACzE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,aAAa,EAAE,MAAM,CAAC;AAC3E,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE;AAC1C,YAAA,IAAI,EAAE;AACJ,gBAAA,EAAE,iBAAiB,EAAE;gBACrB,EAAE,iBAAiB,EAAE,EAAE,EAAE;AACzB,gBAAA,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAA,iBAAA,CAAmB,EAAE;AACxC;AACF,SAAA,CAAC;IACJ;AAEA;;;;AAIG;AACH,IAAA,qBAAqB,CAAC,MAAsB,EAAA;AAC1C,QAAA,IAAI,MAAM,CAAC,gBAAgB,EAAE;AAC3B,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC;QAC3C;AACA,QAAA,IAAI,MAAM,CAAC,YAAY,EAAE;YACvB,OAAOA,KAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,IAAI,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1E;AACA,QAAA,OAAO,EAAE;IACX;AAEA;;;;AAIG;AACH,IAAA,MAAM,6BAA6B,CACjC,MAAsB,EACtB,OAA+B,EAAA;QAE/B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,OAAO,CAAC;AACxE,QAAA,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI;IACtD;AAEA;;;;;;AAMG;AACH,IAAA,MAAM,0BAA0B,CAC9B,MAAsB,EACtB,OAA+B,EAAA;AAE/B,QAAA,MAAM,SAAS,GAAe;YAC5B,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,WAAW,EAAE,2BAA2B;AACrC,iBAAA,GAAG,CACF,MAAM,IACJ,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,EAAA,EAAK,MAAM,CAAC,IAAI,CAAA,CAAA,EAC9B,MAAM,CAAC,OAAO,GAAG,CAAA,WAAA,EAAc,MAAM,CAAC,OAAO,CAAA,CAAA,CAAG,GAAG,EACrD,EAAE;iBAEL,IAAI,CAAC,IAAI,CAAC,CAAA;SACd;QACD,IAAI,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE;YACjE,SAAS,CAAC,kBAAkB,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,MAAM,IAClE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CACtB;QACH;aAAO,IAAI,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;AACtE,YAAA,SAAS,CAAC,gBAAgB,GAAG,SAAS,CACpC,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAC9D;AACD,YAAA,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;gBACvB,MAAM,cAAc,GAAmB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;oBACjE,MAAM;oBACN,SAAS;oBACT,KAAK;oBACL;AACD,iBAAA,CAAC;AACF,gBAAA,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC9B,oBAAA,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC;gBACpD;AACA,gBAAA,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;oBAC/B,MAAM,uBAAuB,GAAG,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAClE,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAClC;AACD,oBAAA,IAAI,uBAAuB,GAAG,CAAC,CAAC,EAAE;;wBAEhC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC,EAAE,cAAc,CAAC;oBAC/E;yBAAO;;AAEL,wBAAA,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC;oBACjD;gBACF;AACF,YAAA,CAAC,CAAC;QACJ;aAAO,IAAI,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;AAClE,YAAA,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;AAC7F,YAAA,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;AACvB,gBAAA,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE;oBAC9B,OAAO,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC5C;AACA,gBAAA,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;oBAC/B,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO;gBACtD;AACF,YAAA,CAAC,CAAC;QACJ;AACA,QAAA,OAAO,SAAS;IAClB;AAEA;;;;AAIG;AACH,IAAA,MAAM,qCAAqC,CACzC,SAAqB,EACrB,MAAsB,EAAA;AAEtB,QAAA,IAAI,SAAS,CAAC,kBAAkB,EAAE;AAChC,YAAA,OAAO,SAAS,CAAC,SAAS,CAAC,kBAAkB,CAAC;QAChD;AACA,QAAA,IAAI,SAAS,CAAC,gBAAgB,EAAE;YAC9B,OAAO,MAAM,IAAI,CAAC,iDAAiD,CAAC,SAAS,EAAE,MAAM,CAAC;QACxF;AACA,QAAA,IAAI,SAAS,CAAC,YAAY,EAAE;YAC1B,OAAO,MAAM,IAAI,CAAC,6CAA6C,CAAC,SAAS,EAAE,MAAM,CAAC;QACpF;AACA,QAAA,OAAO,EAAE;IACX;AAEA;;;;AAIG;AACH,IAAA,MAAM,6BAA6B,CACjC,MAAsB,EACtB,cAAwC,EAAA;QAExC,MAAM,SAAS,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,cAAc,CAAC;AACzE,QAAA,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI;IACtD;AAEA;;;;;AAKG;IACH,0BAA0B,CACxB,MAAsB,EACtB,cAAwC,EAAA;QAExC,OAAO,cAAc,CAAC,EAAE;AAExB,QAAA,MAAM,SAAS,GAAe;YAC5B,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,WAAW,EAAE,wBAAwB,cAAc,CAAC,IAAI,CAAA,CAAA,EACtD,cAAc,CAAC,OAAO,GAAG,CAAA,WAAA,EAAc,cAAc,CAAC,OAAO,GAAG,GAAG,EACrE,CAAA,CAAE;AACF,YAAA,YAAY,EAAE,EAAE,GAAG,cAAc;SAClC;AAED,QAAA,OAAO,SAAS;IAClB;AAEA;;;;;AAKG;AACH,IAAA,mCAAmC,CACjC,MAAsB,EACtB,iBAAyB,EACzB,QAAQ,GAAG,KAAK,EAAA;QAEhB,IAAI,QAAQ,EAAE;YACZ,OAAO;gBACL,QAAQ,EAAE,MAAM,CAAC,EAAE;AACnB,gBAAA,WAAW,EAAE,CAAA,4CAAA,EAA+C,MAAM,CAAC,IAAI,CAAA,CAAE;AACzE,gBAAA,oBAAoB,EAAE;aACvB;QACH;QACA,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,EAAE;AACnB,YAAA,WAAW,EAAE,CAAA,SAAA,EAAY,iBAAiB,uCAAuC,MAAM,CAAC,IAAI,CAAA,CAAE;AAC9F,YAAA,oBAAoB,EAAE;AACpB,gBAAA,IAAI,EAAE;AACP;SACF;IACH;AAEA;;;;;;AAMG;IACH,qCAAqC,CACnC,MAAsB,EACtB,iBAAyB,EACzB,cAAqC,EACrC,QAAQ,GAAG,KAAK,EAAA;QAEhB,IAAI,QAAQ,EAAE;YACZ,OAAO;gBACL,QAAQ,EAAE,MAAM,CAAC,EAAE;gBACnB,WAAW,EAAE,+BAA+B,cAAc,CAAC,IAAI,CAAA,WAAA,EAAc,MAAM,CAAC,IAAI,CAAA,CAAE;AAC1F,gBAAA,sBAAsB,EAAE;oBACtB,GAAG,EAAE,cAAc,CAAC,SAAS;AAC7B,oBAAA,qBAAqB,EAAE;wBACrB,EAAE,EAAE,cAAc,CAAC;AACpB;AACF;aACF;QACH;QACA,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,WAAW,EAAE,CAAA,4BAAA,EAA+B,cAAc,CAAC,IAAI,CAAA,uBAAA,EAA0B,iBAAiB,CAAA,WAAA,EAAc,MAAM,CAAC,IAAI,CAAA,CAAE;AACrI,YAAA,sBAAsB,EAAE;gBACtB,GAAG,EAAE,cAAc,CAAC,SAAS;AAC7B,gBAAA,IAAI,EAAE;AACP;SACF;IACH;AAEA;;;;AAIG;IACH,MAAM,8BAA8B,CAAC,QAAyB,EAAA;AAC5D,QAAA,MAAM,OAAO,GAAG;YACd,QAAQ;YACR,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;AAC1C,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,QAAQ,EAAE;SACX;AACD,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC;IACvF;AAEA;;;;AAIG;IACH,MAAM,8BAA8B,CAAC,QAAyB,EAAA;AAC5D,QAAA,MAAM,OAAO,GAAG;YACd,QAAQ;YACR,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;AAC1C,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,QAAQ,EAAE;SACX;QACD,OAAO,IAAI,CAAC,0BAA0B,CAAC;AACrC,YAAA,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE;AAClD,YAAA,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE;AAChD,YAAA,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,cAAc;AAC3C,SAAA,CAAC;IACJ;AAEA;;;;;;AAMG;IACH,MAAM,yBAAyB,CAAC,WAAkB,EAAA;QAChD,IAAI,iBAAiB,GAAG,IAAI;AAE5B,QAAA,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE;AACjC,YAAA,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI;AAC5D,YAAA,IAAI,UAAU,CAAC,MAAM,EAAE;AACrB,gBAAA,iBAAiB,GAAG,UAAU,CAAC,CAAC,CAAC;gBACjC;YACF;QACF;AAEA,QAAA,OAAO,iBAAiB;IAC1B;AAEA;;;;;;AAMG;IACH,MAAM,0BAA0B,CAAC,WAAkB,EAAA;QACjD,IAAI,iBAAiB,GAAe,IAAI;AAExC,QAAA,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE;AACjC,YAAA,MAAM,UAAU,GAAiB,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI;AAC1E,YAAA,IAAI,UAAU,CAAC,MAAM,EAAE;gBACrB,IAAI,iBAAiB,EAAE;oBACrB,iBAAiB;wBACf,IAAI,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;4BAClD,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO;AAC1C,8BAAE,UAAU,CAAC,CAAC;8BACZ,iBAAiB;gBACzB;qBAAO;AACL,oBAAA,iBAAiB,GAAG,UAAU,CAAC,CAAC,CAAC;gBACnC;YACF;QACF;AAEA,QAAA,OAAO,iBAAiB;IAC1B;AAEA;;;;;AAKG;AACH,IAAA,uBAAuB,CAAC,SAAqB,EAAA;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAChD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,EACvB,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CACvE;IACH;AAEA;;;;;AAKG;AACH,IAAA,gBAAgB,CAAC,SAAqB,EAAA;AACpC,QAAA,MAAM,kBAAkB,GAAG,EAAE,CAAC,SAAS,CAAC;AACxC,QAAA,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,IAAI,CAC/C,SAAS,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,EACzF,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAkB,CAAC,EACrC,cAAc,CAAC,kBAAkB,CAAC,EAClC,MAAM,CAAC,CAAC,CAAC,eAAe,EAAE,iBAAiB,CAAC,KAAK,eAAe,CAAC,EAAE,KAAK,iBAAiB,CAAC,EAAE,CAAC,EAC7F,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,KAAI;YAC9B,IAAI,eAAe,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM,EAAE;AACrD,gBAAA,OAAO,UAAU,CAAC,eAAe,CAAC;YACpC;AACA,YAAA,OAAO,EAAE,CAAC,eAAe,CAAC;AAC5B,QAAA,CAAC,CAAC,EACF,SAAS,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAC1F;AACD,QAAA,OAAO,KAAK,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;IACrD;AAEA;;;;AAIG;AACH,IAAA,MAAM,2BAA2B,CAC/B,QAAyB,EACzB,IAAY,EAAA;AAEZ,QAAA,MAAM,WAAW,GAAW;AAC1B,YAAA,MAAM,EAAE,QAAQ;YAChB,IAAI;AACJ,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;AACrC,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AACjC,YAAA,QAAQ,EAAE;SACX;AAED,QAAA,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;AACnD,QAAA,OAAO,IAAI,CAAC,CAAC,CAAC;IAChB;AAEA;;;;AAIG;AACH,IAAA,MAAM,0BAA0B,CAC9B,QAAyB,EACzB,aAAqB,EAAA;AAErB,QAAA,MAAM,eAAe,GAAW;YAC9B,QAAQ;AACR,YAAA,YAAY,EAAE,aAAa;AAC3B,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;AACrC,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AACjC,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,QAAQ,EAAE;SACX;AAED,QAAA,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,IAAI;IAC1D;AAEA;;;;AAIG;AACH,IAAA,MAAM,iBAAiB,CACrB,MAAsB,EACtB,iBAAyB,EAAA;AAEzB,QAAA,MAAM,KAAK,GAAW,MAAM,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,EAAE,EAAE,iBAAiB,CAAC;AAC1F,QAAA,IAAI,cAAqC;QACzC,IAAI,KAAK,EAAE;AACT,YAAA,cAAc,GAAG;gBACf,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,UAAU,EAAE,MAAM,CAAC,IAAI;gBACvB;aACD;AACD,YAAA,IAAI;AACF,gBAAA,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE;AAC7E,gBAAA,IAAI,KAAK,CAAC,YAAY,EAAE;oBACtB,cAAc,CAAC,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI;gBACrD;YACF;YAAE,OAAO,EAAE,EAAE;AACX,gBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,2BAA2B,CAAC;AAChD,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;YACxB;QACF;AACA,QAAA,OAAO,cAAc;IACvB;IAEA,MAAM,uBAAuB,CAAC,QAAQ,EAAA;AACpC,QAAA,IAAI,cAAqC;AACzC,QAAA,IAAI,EAAE;QACN,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI;QACpF,MAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB,IAAI,MAAM,CAAC,qBAAqB,CAAC,EAAE;QAClF,IAAI,CAAC,UAAU,EAAE;YACf;QACF;AAEA,QAAA,IAAI;AACF,YAAA,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI;QACrD;QAAE,OAAO,EAAE,EAAE;;QAEb;QACA,IAAI,EAAE,EAAE;AACN,YAAA,cAAc,GAAG;gBACf,IAAI,EAAE,EAAE,CAAC,YAAY;gBACrB,IAAI,EAAE,EAAE,CAAC;aACV;AACD,YAAA,cAAc,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;QACpF;AACA,QAAA,OAAO,cAAc;IACvB;AAEA;;;;;;AAMG;AACH,IAAA,MAAM,aAAa,CACjB,SAAiB,EACjB,OAAuD,EAAA;QAEvD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,SAAS,CAAC;AAC7D,QAAA,IAAI,GAAG;QACP,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,IAAI,OAAO,CAAC,aAAa,EAAE;gBACzB,GAAG,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,OAAO,CAAC;YAChE;QACF;aAAO;YACL,GAAG,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,OAAO,CAAC;QAC/D;QACA,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,GAAG,CAAC,IAAI,EAAE;IACnB;AAEA;;;;;AAKG;AACH,IAAA,MAAM,aAAa,CAAC,SAAiB,EAAE,OAAmC,EAAA;QACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,SAAS,CAAC;QAC7D,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AACvC,YAAA,OAAO,IAAI;QACb;;AAEA,QAAA,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI;AAC1E,QAAA,MAAM,GAAG,GAAG,CAAC,CAAC;AACZ,cAAE,MAAM,IAAI,CAAC,yBAAyB,CAAC,QAAQ;cAC7C,MAAM,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC;AACnD,QAAA,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE;AAC3C,QAAA,OAAO,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC7D;AAEA;;;;AAIG;IACH,MAAM,4BAA4B,CAAC,QAAyB,EAAA;AAC1D,QAAA,MAAM,OAAO,GAAG;YACd,QAAQ;YACR,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;AAC1C,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,QAAQ,EAAE;SACX;QACD,OAAO,IAAI,CAAC,0BAA0B,CAAC;AACrC,YAAA,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE;AACjD,YAAA,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,uBAAuB;AACpD,SAAA,CAAC;IACJ;AAEA;;;;AAIG;AACH,IAAA,2CAA2C,CAAC,MAAsB,EAAA;QAChE,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,EAAE;AACnB,YAAA,WAAW,EAAE,OAAO,CAAC,iCAAiC,CAAC;AACvD,YAAA,qBAAqB,EAAE;SACxB;IACH;AAEA;;;;;AAKG;IACH,2CAA2C,CAAC,MAAsB,EAAE,MAAc,EAAA;QAChF,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,EAAE;AACnB,YAAA,WAAW,EAAE,OAAO,CAAC,sBAAsB,CAAC;AAC5C,YAAA,iBAAiB,EAAE;gBACjB;AACD;SACF;IACH;IAEA,MAAM,SAAS,CAAC,QAAqB,EAAA;AACnC,QAAA,IAAI;YACF,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACtD;QAAE,OAAO,EAAE,EAAE;AACX,YAAA,MAAM,GAAG,GAAG,OAAO,CAAC,2BAA2B,CAAC;AAChD,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;QACxB;IACF;AAEA;;;;AAIG;AACH,IAAA,MAAM,0BAA0B,CAAC,MAAM,EAAE,iBAAiB,EAAA;QACxD,MAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,iBAAiB,CAAC;QAC7E,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,aAAa,EAAE;AACzE,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG;AACxB,SAAA,CAAC;QACF,OAAO,GAAG,CAAC,IAAI;IACjB;AAEA;;;;AAIG;AACH,IAAA,MAAM,2BAA2B,CAC/B,QAAyB,EACzB,QAAwB,EAAA;QAExB,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,uBAAuB,EAAE,cAAc,EAAE;QAC3E,IAAI,CAAC,cAAc,EAAE;AACnB,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,MAAM,WAAW,GAAG,EAAE,QAAQ,EAAE;AAChC,QAAA,IAAI,QAAQ,EAAE,IAAI,EAAE;YAClB,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC;QACzC;AACA,QAAA,IAAI,QAAQ,EAAE,OAAO,EAAE;YACrB,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC;QAC/C;QACA,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;IAC7F;AAEA;;;;;AAKG;AACK,IAAA,MAAM,yBAAyB,CACrC,QAAqB,EACrB,UAAkC,EAAE,EAAA;AAEpC,QAAA,IAAI,GAAG;AACP,QAAA,IAAI;YACF,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACrD;QAAE,OAAO,EAAE,EAAE;AACX,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACrB,gBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,2BAA2B,CAAC;AAChD,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;YACxB;QACF;AACA,QAAA,OAAO,GAAG;IACZ;AAEA;;;;;AAKG;AACK,IAAA,MAAM,yBAAyB,CACrC,SAAiB,EACjB,UAAkC,EAAE,EAAA;AAEpC,QAAA,IAAI,GAAG;AACP,QAAA,IAAI;AACF,YAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC;AACvC,YAAA,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE;AAC1B,gBAAA,MAAM,GAAG;YACX;YACA,GAAG,GAAG,QAAQ;QAChB;AAAE,QAAA,MAAM;AACN,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACrB,gBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,mCAAmC,CAAC;AACxD,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;YACxB;QACF;AACA,QAAA,OAAO,GAAG;IACZ;AAEQ,IAAA,sCAAsC,CAAC,KAAK,EAAA;QAClD,OAAO,OAAO,CAAC,OAAO,CAAC;AACrB,YAAA,GAAG,EAAE,EAAoB;AACzB,YAAA,IAAI,EAAE;AACJ,gBAAA;AACE,oBAAA,GAAG,KAAK;AACR,oBAAA,CAAC,KAAK,CAAC,IAAI,GAAG;wBACZ,OAAO,EAAE,KAAK,CAAC,OAAO;wBACtB,GAAG,EAAE,KAAK,CAAC;AACZ;AACF;AACF;AAC6B,SAAA,CAAC;IACnC;AAEQ,IAAA,MAAM,iDAAiD,CAC7D,SAAqB,EACrB,MAAsB,EAAA;QAEtB,MAAM,OAAO,GAA2B,EAAE;AAC1C,QAAA,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC;AACxF,QAAA,OAAO,CAAC,SAAS,CAAC,gBAAgB,EAAE,iBAAiB,IAAG;AACtD,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,iBAAiB,CAAC,IAAI,EAAE,CAAC;AACjF,YAAA,IACE,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,OAAO;AAC/C,iBAAC,cAAc,IAAI,cAAc,CAAC,OAAO,CAAC,EAC1C;gBACA,OAAO,CAAC,IAAI,CAAC;AACX,oBAAA,GAAG,iBAAiB;AACpB,oBAAA,MAAM,EAAE;AACe,iBAAA,CAAC;YAC5B;AACF,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,CAAC,kBAAkB,EAAE,cAAc,IAAG;AAC3C,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,CAAC;AACzF,YAAA,IACE,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,OAAO;AAC/C,iBAAC,cAAc,IAAI,cAAc,CAAC,OAAO,CAAC,EAC1C;gBACA,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAChC,MAAM,IAAI,cAAc,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,CAC7E;;gBAED,IAAI,CAAC,aAAa,EAAE;oBAClB,OAAO,CAAC,IAAI,CAAC;AACX,wBAAA,GAAG,cAAc;AACjB,wBAAA,MAAM,EAAE;AACe,qBAAA,CAAC;gBAC5B;YACF;AACF,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,OAAO;IAChB;AAEQ,IAAA,MAAM,6CAA6C,CACzD,SAAqB,EACrB,MAAsB,EAAA;QAEtB,MAAM,OAAO,GAA2B,EAAE;AAC1C,QAAA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC;QAChF,OAAO,CAAC,cAAc,EAAE,CAAC,qBAAqB,EAAE,kBAAkB,KAAI;YACpE,IAAI,SAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,KAAK,qBAAqB,EAAE;gBACxE,OAAO,CAAC,IAAI,CAAC;AACX,oBAAA,IAAI,EAAE,kBAAkB;AACxB,oBAAA,OAAO,EAAE,qBAAqB;AAC9B,oBAAA,MAAM,EAAE;AACe,iBAAA,CAAC;YAC5B;AACF,QAAA,CAAC,CAAC;QACF,OAAO,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,wBAAwB,EAAE,qBAAqB,KAAI;YAClF,MAAM,qBAAqB,GAAG,cAAc,IAAI,cAAc,CAAC,qBAAqB,CAAC;AACrF,YAAA,IAAI,qBAAqB,KAAK,wBAAwB,EAAE;gBACtD,OAAO,CAAC,IAAI,CAAC;AACX,oBAAA,IAAI,EAAE,qBAAqB;AAC3B,oBAAA,OAAO,EAAE,wBAAwB;AACjC,oBAAA,MAAM,EAAE;AACe,iBAAA,CAAC;YAC5B;AACF,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,OAAO;IAChB;AAEQ,IAAA,MAAM,kBAAkB,CAC9B,MAAsB,EACtB,UAAkB,EAClB,YAAoB,EAAA;QAEpB,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,uBAAuB,EAAE,cAAc,EAAE;QAC3E,IAAI,cAAc,EAAE;YAClB,IAAI,kBAAkB,GAAgC,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAC3F,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CACvC;AACD,YAAA,IAAI,IAAI,GAAG,CAAC,kBAAkB,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAChD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CACpE;AAED,YAAA,OAAO,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE;gBAC1C,kBAAkB,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,IAAI,EAAE;AAC3D,gBAAA,IAAI,GAAG;AACL,oBAAA,GAAG,IAAI;AACP,oBAAA,GAAG,CAAC,kBAAkB,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IACxC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;iBAEtE;YACH;AAEA,YAAA,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;AACjB,gBAAA,OAAO,YAAY;YACrB;AAEA,YAAA,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAC7E;aAAO;AACL,YAAA,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,YAAY;QAC3C;IACF;AAEQ,IAAA,oBAAoB,CAAC,IAAsB,EAAA;AACjD,QAAA,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;IAC1F;IAEQ,MAAM,iBAAiB,CAAC,IAAoB,EAAA;QAClD,OAAO,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,SAAS;IAC/F;AAEQ,IAAA,MAAM,oBAAoB,CAAC,YAAY,EAAE,YAAY,EAAA;QAC3D,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,CAAC;QAC9E,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,CAAC;AACzE,QAAA,IAAI,gBAAgB,IAAI,gBAAgB,KAAK,WAAW,EAAE;YACxD,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,gBAAgB,CAAC;QACrD;IACF;+GA7yCW,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAjB,iBAAiB,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;;MChDY,yBAAyB,CAAA;AACpC,IAAA,WAAA,CACS,OAA4B,EAC3B,sBAA8C,EAC9C,iBAAoC,EAAA;QAFrC,IAAA,CAAA,OAAO,GAAP,OAAO;QACN,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;QACtB,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IACxB;IAEH,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACxB,cAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG;cAChE,KAAK;IACX;AAGA,IAAA,aAAa,CAAC,aAA6B,EAAA;QACzC,OAAO,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC;IACjE;+GAhBW,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,qEAFzB,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXhC,iSAWA,2CDDY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAiBtB,UAAA,CAAA;AADC,IAAA,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;;;AAGvB,CAAA,EAAA,yBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA;4FAhBU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;+BAEE,wBAAwB,EAAA,UAAA,EACtB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,SAAA,EACZ,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,iSAAA,EAAA;4JAgB9B,aAAa,EAAA,EAAA,EAAA,EAAA,CAAA;;AExBT,MAAO,cAAe,SAAQ,UAAU,CAAA;AAC5C,IAAA,WAAA,CAAY,mBAAmF,EAAA;QAC7F,KAAK,CAAC,mBAAmB,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC7B,QAAA,IAAI,CAAC,qBAAqB,GAAG,yBAAyB;AAEtD,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACvB;AACD;;MCaY,uCAAuC,CAAA;AAClD,IAAA,WAAA,CAAmB,OAA4B,EAAA;QAA5B,IAAA,CAAA,OAAO,GAAP,OAAO;IAAwB;+GADvC,uCAAuC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uCAAuC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnBxC;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAGS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,8BAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAE1D,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBApBnD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;AAcT,EAAA,CAAA;AACD,oBAAA,QAAQ,EAAE,wCAAwC;AAClD,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY;AACtE,iBAAA;;;AChBK,MAAO,4BAA6B,SAAQ,UAAU,CAAA;AAG1D,IAAA,WAAA,CACE,mBAIC,EAAA;QAED,KAAK,CAAC,mBAAmB,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM;AAClB,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC7B,QAAA,IAAI,CAAC,qBAAqB,GAAG,uCAAuC;AAEpE,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACtB,IAAI,CAAC,eAAe,GAAG;YACrB,MAAM,EAAE,iCAAiC,CAAC;AACxC,gBAAA,GAAG,EAAE,OAAO;gBACZ,KAAK,EAAE,mBAAmB,EAAE,WAAW,IAAI,OAAO,CAAC,sBAAsB,CAAC;AAC1E,gBAAA,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC;AAClC,gBAAA,OAAO,EAAE,OAAO,CAAC,+BAA+B,CAAC;gBACjD,WAAW,EAAE,mBAAmB,EAAE,WAAW,IAAI,OAAO,CAAC,oBAAoB;aAC9E,CAAC;AACF,YAAA,SAAS,CAAC,KAAU,EAAA;gBAClB,MAAM,MAAM,GAAQ,EAAE;AACtB,gBAAA,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;oBACtB,MAAM,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE;gBACrC;AACA,gBAAA,OAAO,MAAM;YACf;SACD;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACpB,IAAI,CAAC,aAAa,GAAG;YACnB,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;SACzC;IACH;AACD;;MCtCY,yBAAyB,CAAA;AACpC,IAAA,WAAA,CAAmB,OAA4B,EAAA;QAA5B,IAAA,CAAA,OAAO,GAAP,OAAO;IAAwB;+GADvC,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVtC,sSAWA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDHYC,cAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAEX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EAAA,QAAA,EAEN,wBAAwB,EAAA,OAAA,EACzB,CAACA,cAAY,CAAC,EAAA,QAAA,EAAA,sSAAA,EAAA;;;ME4BZ,kCAAkC,CAAA;AAW7C,IAAA,WAAA,CACS,OAAqC,EACrC,iBAAoC,EACnC,iBAAoC,EACpC,UAAsB,EAAA;QAHvB,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QAChB,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,UAAU,GAAV,UAAU;QAZpB,IAAA,CAAA,MAAM,GAA4C,KAAK;AACvD,QAAA,IAAA,CAAA,OAAO,GAA4B,IAAI,eAAe,CAAC,IAAI,CAAC;AAC5D,QAAA,IAAA,CAAA,UAAU,GAAoC,IAAI,CAAC,GAAG,EAAE,CAAC;AACzD,QAAA,IAAA,CAAA,oBAAoB,GAAG,OAAO,CAAC,oDAAoD,CAAC;AAE5E,QAAA,IAAA,CAAA,WAAW,GAAgB,IAAI,WAAW,EAAE;AAC5C,QAAA,IAAA,CAAA,KAAK,GAAgB,IAAI,GAAG,EAAE;QAQpC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI;AACjC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAC7B,YAAY,CAAC,GAAG,CAAC,EACjB,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAC7B,SAAS,CAAC,CAAC,YAAoB,KAAI;YACjC,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;AACtE,YAAA,MAAM,MAAM,GAAG,CAAC,CAAC;AACf,kBAAE;AACE,oBAAA,CAAC,IAAI,CAAC,IAAI,GAAG;wBACX,IAAI,EAAE,CAAA,CAAA,EAAI,YAAY,CAAA,CAAA;AACvB;AACF;AACH,kBAAE;oBACE,KAAK,EAAE,IAAI,CAAC;iBACb;YACL,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC;AAEpD,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAChD,IAAI,CAAC,OAAO,CAAC,QAA2B,CAAC,cAAc,EACxD;AACE,gBAAA,gBAAgB,EAAE,IAAI;gBACtB,KAAK;AACL,gBAAA,MAAM,EAAE;AACN,oBAAA,QAAQ,EAAE;AACX;AACF,aAAA,CACF;QACH,CAAC,CAAC,CACH;AAED,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CACpB,GAAG,CACD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC5B,IAAI,CACyD,CAChE,EACD,GAAG,CAAC,MAAM,UAAU,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,CACvE;IACH;AAEyC,IAAA,YAAY,CAAC,KAAoB,EAAA;QACxE,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,WAAW,EAAE;IACpB;AAC4C,IAAA,eAAe,CAAC,KAAoB,EAAA;QAC9E,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;IAC5B;IAEA,QAAQ,GAAA;AACN,QAAA,MAAM,MAAM,GAAW,IAAI,CAAC,OAAO,CAAC,QAAQ;QAC5C,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC;IACjE;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE;AACrD,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS;QACtF;QAAE,OAAO,EAAE,EAAE;;QAEb;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AACvB,YAAA,mBAAmB,EAAE;gBACnB,KAAK,EAAE,IAAI,CAAC,YAAY;AACxB,gBAAA,KAAK,EAAE;AACL,oBAAA;wBACE,KAAK,EAAE,IAAI,CAAC,YAAY;wBACxB,YAAY,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;AAC5C,wBAAA,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AACjB,wBAAA,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI;wBACtC,MAAM,EAAE,MAAK;4BACX,OAAO;AACL,gCAAA,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI;AACtC,gCAAA,mBAAmB,EAAE;AACnB,oCAAA,KAAK,EAAE,IAAI;AACX,oCAAA,KAAK,EAAE;AACR;6BACF;wBACH;AACD;AACF;AACF;AACF,SAAA,CAAC;IACJ;AAEQ,IAAA,oBAAoB,CAAC,IAAsB,EAAA;AACjD,QAAA,MAAM,YAAY,GAAqB,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CACnE,CAAC,EAAkB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CACvD;QACD,YAAY,CAAC,OAAO,CAAC,CAAC,EAAkB,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E,QAAA,OAAO,YAAY;IACrB;+GA/GW,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAOlC,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3C/B,gvCA4CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDVYD,cAAY,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAEE,YAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,gCAAA,EAAA,6BAAA,EAAA,oCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,kWAAE,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,CAAA,CAAA;;4FAEvE,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAP9C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,mBAEC,uBAAuB,CAAC,OAAO,EAAA,QAAA,EACtC,kCAAkC,EAAA,OAAA,EACnC,CAACF,cAAY,EAAE,gBAAgB,EAAEE,YAAe,EAAE,WAAW,EAAE,UAAU,CAAC,EAAA,QAAA,EAAA,gvCAAA,EAAA;uLASjC,SAAS,EAAA,CAAA;sBAA1D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAkDP,YAAY,EAAA,CAAA;sBAApD,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC;gBAIK,eAAe,EAAA,CAAA;sBAA1D,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;AE5FtC,MAAO,cAAe,SAAQ,UAAU,CAAA;AAG5C,IAAA,WAAA,CACE,mBAaC,EAAA;QAED,KAAK,CAAC,mBAAmB,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM;QAClB,IAAI,CAAC,IAAI,GAAG,mBAAmB,EAAE,IAAI,IAAI,MAAM;QAC/C,IAAI,CAAC,MAAM,GAAG,mBAAmB,EAAE,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;AAC5D,QAAA,IAAI,CAAC,cAAc,GAAG,mBAAmB,EAAE,cAAc;AACzD,QAAA,IAAI,CAAC,qBAAqB,GAAG,yBAAyB;AAEtD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,8BAA8B,GAAG,kCAAkC;QACxE,IAAI,CAAC,eAAe,GAAG;YACrB,SAAS,EAAE,KAAK,IAAG;gBACjB,MAAM,MAAM,GAAQ,EAAE;gBACtB,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC1B,oBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACtD;AACA,gBAAA,OAAO,MAAM;YACf;SACD;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACpB,IAAI,CAAC,aAAa,GAAG;YACnB,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;SACzC;IACH;AACD;;MC/BY,6BAA6B,CAAA;IAGxC,WAAA,CACS,OAA4B,EAC3B,iBAAoC,EAAA;QADrC,IAAA,CAAA,OAAO,GAAP,OAAO;QACN,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;AAJ3B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAM1E,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;IAC1B;AAGA,IAAA,qBAAqB,CAAC,IAAoB,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAChF;+GAbW,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjB1C,ydAqBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDNY,YAAY,8QAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,CAAA,EAAA,CAAA,CAAA;;AAarE,UAAA,CAAA;AADC,IAAA,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;;oCACqB,UAAU;AAEtD,CAAA,EAAA,6BAAA,CAAA,SAAA,EAAA,uBAAA,EAAA,IAAA,CAAA;4FAbU,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;+BAEE,4BAA4B,EAAA,UAAA,EAC1B,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,ydAAA,EAAA;qHAatE,qBAAqB,EAAA,EAAA,EAAA,EAAA,CAAA;;AEzBjB,MAAO,kBAAmB,SAAQ,UAAU,CAAA;AAChD,IAAA,WAAA,CAAY,mBAAkC,EAAA;QAC5C,KAAK,CAAC,mBAAmB,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,UAAU;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;AACjC,QAAA,IAAI,CAAC,qBAAqB,GAAG,6BAA6B;AAC1D,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACvB;AACD;;ICXW;AAAZ,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ;AACR,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ;AACV,CAAC,EAJW,cAAc,KAAd,cAAc,GAAA,EAAA,CAAA,CAAA;;MCab,qBAAqB,CAAA;AAIhC,IAAA,WAAA,CACU,iBAAoC,EACpC,sBAA8C,EAC9C,YAA0B,EAAA;QAF1B,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;QACtB,IAAA,CAAA,YAAY,GAAZ,YAAY;QALtB,IAAA,CAAA,cAAc,GAAG,cAAc;QAC/B,IAAA,CAAA,aAAa,GAAG,KAAK;IAKlB;AAGH,IAAA,cAAc,CAAC,SAAS,EAAA;QACtB,OAAO,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,SAAS,CAAC;IACzD;IAGA,iBAAiB,GAAA;AACf,QAAA,IAAI,MAAsB;QAC1B,IAAI,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACtD,YAAA,MAAM,GAAG,cAAc,CAAC,QAAQ;QAClC;aAAO,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AAClC,YAAA,MAAM,GAAG,cAAc,CAAC,IAAI;QAC9B;aAAO;AACL,YAAA,MAAM,GAAG,cAAc,CAAC,QAAQ;QAClC;AACA,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,MAAM,YAAY,GAAA;AAChB,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,YAAA,MAAM,MAAM,GAAS,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE;AACxE,gBAAA,aAAa,EAAE;AAChB,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;YAC1B,MAAM,CAAC,MAAM,CAAC;QAChB;QAAE,OAAO,EAAE,EAAE;AACX,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;YAC1B,IAAI,EAAE,EAAE;AACN,gBAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACxC;QACF;IACF;+GA1CW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAO,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECblC,+oBAuBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDZY,IAAI,6FAAE,aAAa,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAa1D,UAAA,CAAA;AADC,IAAA,OAAO,EAAE;;;;AAGT,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;AADC,IAAA,OAAO,EAAE;;;;AAWT,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA;4FA1BU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,mBAAmB,EAAA,OAAA,EAEpB,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,+oBAAA,EAAA;qJAGlD,GAAG,EAAA,CAAA;sBAAX;AAUD,aAAA,CAAA,EAAA,cAAc,MAKd,iBAAiB,EAAA,EAAA,EAAA,EAAA,CAAA;;AECnB;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;MAaU,8BAA8B,CAAA;IA+KzC,WAAA,CACU,iBAAoC,EACpC,gBAAkC,EAAA;QADlC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAhL1B,IAAA,CAAA,kBAAkB,GAAG,oCAAoC;AACzD;;;;;;;;;;;AAWG;QACH,IAAA,CAAA,8BAA8B,GAAiC,SAAS;AAKxE;;;;;;;;;AASG;AACH,QAAA,IAAA,CAAA,cAAc,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAAE;AAC7F;;;AAGG;AACH,QAAA,IAAA,CAAA,KAAK,GAAW,OAAO,CAAC,yBAAyB,CAAC;AAMlD;;;AAGG;AACH,QAAA,IAAA,CAAA,IAAI,GAAkB,IAAI,OAAO,EAAE;AACnC;;AAEG;AACH,QAAA,IAAA,CAAA,sBAAsB,GAAmC,IAAI,OAAO,EAAE;AACtE;;;;AAIG;AACH,QAAA,IAAA,CAAA,UAAU,GAAoC,IAAI,eAAe,CAAC,EAAE,CAAC;AACrE;;;;;AAKG;QACH,IAAA,CAAA,eAAe,GAAQ,EAAE;AACzB;;;;;AAKG;QACH,IAAA,CAAA,WAAW,GAAQ,EAAE;AACrB;;;AAGG;QACH,IAAA,CAAA,MAAM,GAAgB,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;AAC7C;;;;AAIG;QACH,IAAA,CAAA,UAAU,GAAG,IAAI;AACjB;;;;AAIG;QACH,IAAA,CAAA,cAAc,GAAG,KAAK;AAWtB;;AAEG;AACH,QAAA,IAAA,CAAA,eAAe,GAAqC,IAAI,YAAY,EAAsB;AAC1F;;AAEG;AACH,QAAA,IAAA,CAAA,aAAa,GAA6C,IAAI,YAAY,EAEvE;AACH;;;;;;AAMG;AACH,QAAA,IAAA,CAAA,IAAI,GAAuB,kBAAkB,CAAC,MAAM;AAMpD;;AAEG;QACH,IAAA,CAAA,eAAe,GAAG,IAAI;QAMtB,IAAA,CAAA,cAAc,GAAmB,EAAE;AAEnC,QAAA,IAAA,CAAA,kBAAkB,GAAqC,IAAI,CAAC,IAAI,CAAC,IAAI,CACnE,SAAS,CAAC,MAAM,IAAI,CAAC,8BAA8B,CAAC,EACpD,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EACpC,GAAG,CAAC,KAAK,IAAG;AACV,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,KAAK;AACrE,QAAA,CAAC,CAAC,EACF,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAC/C;AAED,QAAA,IAAA,CAAA,YAAY,GAAqC,KAAK,CACpD,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAC9B,GAAG,CAAC,CAAC,eAAsC,KAAI;YAC7C,MAAM,YAAY,GAAuB,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,EAAE,IAAI,CAC1E,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,eAAe,CAAC,MAAM,CAAC,OAAO,CACxD;YACD,IAAI,YAAY,EAAE;AAChB,gBAAA,MAAM,cAAc,GAAuB,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,EAAE,IAAI,CAC1E,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,KAAM,eAAe,CAAC,MAAc,CAAC,UAAU,CACvE;gBACD,IAAI,cAAc,EAAE;AAClB,oBAAA,cAAc,CAAC,QAAQ,GAAG,eAAe,CAAC,QAAQ;AAClD,oBAAA,IAAI,eAAe,CAAC,MAAM,EAAE;wBAC1B,cAAc,CAAC,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC;oBACjE;gBACF;YACF;YACA,OAAO,IAAI,CAAC,iBAAiB;QAC/B,CAAC,CAAC,CACH,CACF;QAWO,IAAA,CAAA,SAAS,GAAG,GAAG;AAQrB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,EAAE;IACtC;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC;QACpD;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,8BAA8B,EAAE;YACxC,IAAI,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAC9C,QAAQ,CAAC,MACP,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,EAAE;AAChE,gBAAA,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,CAClC,IAAI,CAAC,eAAe,EACpB,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM;AAC1B,sBAAE,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG;AAC3D,sBAAE,IAAI,CAAC,WAAW,CACrB;AACD,gBAAA,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS;AACnC,aAAA,CAAC,CACH,EACD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,EACvB,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC,CACrD;QACH;IACF;AAEA,IAAA,8BAA8B,CAAC,GAAqB,EAAA;AAClD,QAAA,GAAG,CAAC,OAAO,CAAC,EAAE,IAAG;YACf,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,CAAC;AAC1D,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,MAAM,CAAC,cAA8B,EAAA;AACnC,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAC1B;YACE,GAAG,IAAI,CAAC,cAAc;AACtB,YAAA,GAAG;SACJ,EACD,OAAO,CACR;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE;YACnD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;AACzC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc;AACtC,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAClB;IACF;AAEA,IAAA,MAAM,CAAC,aAAyC,EAAA;AAC9C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;IACxC;IAEA,MAAM,SAAS,CAAC,GAAqB,EAAA;AACnC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc;AAC1C,QAAA,MAAM,aAAa,GAA+B,IAAI,CAAC,QAAQ;AAE/D,QAAA,OAAO,OAAO,CAAC,GAAG,CAChB,GAAG,CAAC,GAAG,CAAC,OAAM,eAAe,KAAG;YAC9B,MAAM,OAAO,GAAyB,IAAI,CAAC,qBAAqB,CAC9D,MAAM,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,eAAe,CAAC,QAAQ,CAAC,EAC5E,aAAa,EACb,eAAqC,EACrC,cAAc,CACf;YACD,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CACjD,eAAqC,EACrC,OAAO,CACR;AAED,YAAA,OAAO,iBAAiB;QAC1B,CAAC,CAAC,CACH;IACH;AAEA,IAAA,qBAAqB,CACnB,QAA4B,EAC5B,aAAyC,EACzC,eAAmC,EACnC,cAA8B,EAAA;QAE9B,MAAM,kBAAkB,GAAyB,EAAE;AACnD,QAAA,QAAQ,CAAC,OAAO,CAAC,gBAAgB,IAAG;AAClC,YAAA,MAAM,UAAU,GAAY,IAAI,CAAC,0BAA0B,CACzD,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,cAAc,CACf;YAED,MAAM,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC,CAAA,EAAG,cAAc,CAAA,CAAE,CAAC;AACzD,YAAA,MAAM,SAAS,GACb,OAAO,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,GAAG;YACpF,MAAM,SAAS,GAAG,OAAO,GAAG,EAAE,GAAG,YAAY;YAC7C,kBAAkB,CAAC,IAAI,CAAC;AACtB,gBAAA,IAAI,EAAE;AACJ,oBAAA;AACE,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,KAAK,EAAE;AACR;AACF,iBAAA;AACD,gBAAA,GAAG,EAAE;oBACH,EAAE,EAAE,gBAAgB,CAAC,EAAE;oBACvB,IAAI,EAAE,eAAe,CAAC,IAAI;oBAC1B,OAAO;AACP,oBAAA,IAAI,GAAG,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,IAAI;AACnD,wBAAA,UAAU,EAAE,GAAG,CAAC,gBAAgB,EAAE,sBAAsB;qBACzD,CAAC;AACF,oBAAA,IAAI,GAAG,CAAC,gBAAgB,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;oBAC5D,GAAG,EAAE,gBAAgB,CAAC,CAAA,EAAG,cAAc,CAAA,CAAE,CAAC,CAAC,GAAG;oBAC9C,YAAY,EAAE,eAAe,CAAC;AAC/B,iBAAA;AACD,gBAAA,QAAQ,EAAE;AACX,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,kBAAkB;IAC3B;AAEA,IAAA,0BAA0B,CACxB,aAAyC,EACzC,eAAmC,EACnC,gBAAkC,EAClC,cAA8B,EAAA;QAE9B,MAAM,UAAU,GAAG;AACjB,cAAE,aAAa,CAAC,MAAM,CAClB,kBAAkB,IAChB,kBAAkB,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI;AAChD,gBAAA,kBAAkB,CAAC,OAAO,KAAK,gBAAgB,CAAC,CAAA,EAAG,cAAc,CAAA,CAAE,CAAC,CAAC,OAAO,CAC/E,CAAC,MAAM,GAAG;cACX,KAAK;AAET,QAAA,OAAO,UAAU;IACnB;IAEA,oBAAoB,CAClB,eAAmC,EACnC,OAA6B,EAAA;AAE7B,QAAA,MAAM,KAAK,GACT,OAAO,CAAC,MAAM,KAAK;cACf,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE;cAClF,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AAEzF,QAAA,MAAM,iBAAiB,GAAuB;YAC5C,OAAO,EAAE,eAAe,CAAC,EAAE;AAC3B,YAAA,IAAI,EAAE;gBACJ,EAAE,KAAK,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE;gBACvD,EAAE,KAAK,EAAE,eAAe,CAAC,WAAW,EAAE,KAAK,EAAE,0BAA0B;AACxE,aAAA;YACD,qBAAqB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE;YAClE;SACD;AAED,QAAA,OAAO,iBAAiB;IAC1B;+GA/UW,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,SAAA,EAR9B;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,+BAA+B;AACxC,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,8BAA8B;AAC7D;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxEH,+sBAqBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDoDY,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,0BAA0B,yIAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAE1D,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAX1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAAA,SAAA,EAE5B;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,+BAA+B;AACxC,4BAAA,WAAW,EAAE,UAAU,CAAC,oCAAoC;AAC7D;AACF,qBAAA,EAAA,OAAA,EACQ,CAAC,oBAAoB,EAAE,0BAA0B,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,+sBAAA,EAAA;;;MEL3D,qBAAqB,CAAA;IA8BhC,IACI,mBAAmB,CACrB,KAA4E,EAAA;AAE5E,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACnB,IAAI,CAAC,oBAAoB,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAClD,GAAG,CAAC,KAAK,IACP,KAAK,CAAC,GAAG,CAAC,YAAY,IACpB,OAAO,YAAY,KAAK;kBACnB,EAAE,YAAY;AACjB,kBAAE,YAAY,CACjB,CACF,CACF;QACH;IACF;AAuBA,IAAA,WAAA,CACU,iBAAoC,EACrC,iBAAoC,EACnC,gBAAkC,EAAA;QAFlC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QAClB,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QAChB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QA/D1B,IAAA,CAAA,QAAQ,GAAG,IAAI;QAGf,IAAA,CAAA,WAAW,GAAW,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE;AACjF,YAAA,OAAO,EAAE;AACV,SAAA,CAAC;QAGF,IAAA,CAAA,eAAe,GAAG,KAAK;QAGvB,IAAA,CAAA,wBAAwB,GAAG,IAAI;QAG/B,IAAA,CAAA,gBAAgB,GAAG,IAAI;QAGvB,IAAA,CAAA,wBAAwB,GAAG,KAAK;AAGhC,QAAA,IAAA,CAAA,yBAAyB,GAAW,OAAO,CAAC,oBAAoB,CAAC;AA2BvD,QAAA,IAAA,CAAA,gBAAgB,GAAiC,IAAI,YAAY,EAAkB;AAI7F,QAAA,IAAA,CAAA,UAAU,GAAoC,IAAI,CAAC,GAAG,EAAE,CAAC;AAEzD,QAAA,IAAA,CAAA,OAAO,GAA4B,IAAI,eAAe,CAAC,IAAI,CAAC;AAGpD,QAAA,IAAA,CAAA,WAAW,GAAgB,IAAI,WAAW,EAAE;AAC5C,QAAA,IAAA,CAAA,aAAa,GAAgB,IAAI,GAAG,EAAE;AAQ5C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7E;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CACvC,QAAQ,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC7B,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,EACrC,SAAS,CAAC,CAAC,YAAoB,KAAI;YACjC,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,YAAY,EAAE;gBAC1C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;YACjD;AACA,YAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC;AACnD,QAAA,CAAC,CAAC,EACF,WAAW,CAAC,CAAC,CAAC,CACf;AAED,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;cAC9B,IAAI,CAAC;AACP,cAAE,IAAI,CAAC,oBAAoB;IAC/B;AAEA,IAAA,uBAAuB,CAAC,YAAoB,EAAA;QAC1C,OAAO,IAAI,CAAC;AACV,cAAE,IAAI,CAAC,cAAc,CAAC,YAAY;AAClC,cAAE,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;IAC3C;AAEA,IAAA,cAAc,CAAC,QAAQ,EAAA;AACrB,QAAA,IAAI,CAAC,cAAc,GAAG,QAAQ;AAC9B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,EAAE;AACpE,QAAA,IAAI,CAAC,uBAA+B,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC1D;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS;AAC/B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;IAC9B;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE;IACtC;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,KAAK,CAAC;IAChD;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,EAAE,CAAC;IACnD;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,EAAE,CAAC;IACpD;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,UAAU,CAAC;IAC3D;AAEA,IAAA,QAAQ,CAAC,OAAkC,EAAA;QACzC,OAAO,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC;IACvD;AAEQ,IAAA,cAAc,CAAC,YAAoB,EAAA;AACzC,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CACnC,GAAG,CAAC,KAAK,KAAK;YACZ,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;AACzF,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;SACrE,CAAC,CAAC,CACJ;IACH;AAEQ,IAAA,kBAAkB,CAAC,YAAoB,EAAA;AAC7C,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;AACvE,QAAA,MAAM,MAAM,GAAG,CAAC,CAAC;AACf,cAAE;AACE,gBAAA,YAAY,EAAE;oBACZ,IAAI,EAAE,CAAA,CAAA,EAAI,YAAY,CAAA,CAAA;AACvB;AACF;AACH,cAAE;AACE,gBAAA,KAAK,EAAE;aACR;QACL,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC;QAEpD,OAAO,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,cAAc,CAAC,QAAQ,EAAE;YAC3E,KAAK;AACL,YAAA,MAAM,EAAE;AACN,gBAAA,QAAQ,EAAE;AACX;AACF,SAAA,CAAC;IACJ;AAEQ,IAAA,8BAA8B,CAAC,IAAsB,EAAA;AAC3D,QAAA,MAAM,oBAAoB,GAAqB,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,MAAM,CAChF,CAAC,EAAkB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,CACjE;AACD,QAAA,oBAAoB,CAAC,OAAO,CAAC,CAAC,EAAkB,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;AAC7F,QAAA,OAAO,oBAAoB;IAC7B;+GA9KW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAM,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,SAAA,EAzBrB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB;AACpD,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,4BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,4BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtDH,0yDA0DA,4CDFI,kBAAkB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,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,WAAA,EAAA,IAAA,EACX,OAAO,2EACP,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,iBAAiB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,cAAc,keACd,kBAAkB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,cAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,qBAAqB,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACrB,SAAS,yCACT,gBAAgB,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA5BjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,SAAA,EAElB;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B;AACpD,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;AACpD,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,OAAA,EACQ;wBACP,kBAAkB;wBAClB,WAAW;wBACX,OAAO;wBACP,IAAI;wBACJ,iBAAiB;wBACjB,cAAc;wBACd,kBAAkB;wBAClB,qBAAqB;wBACrB,SAAS;wBACT;AACD,qBAAA,EAAA,QAAA,EAAA,0yDAAA,EAAA;oJAGQ,cAAc,EAAA,CAAA;sBAAtB;gBAEQ,QAAQ,EAAA,CAAA;sBAAhB;gBAEQ,KAAK,EAAA,CAAA;sBAAb;gBAGD,QAAQ,EAAA,CAAA;sBADP;gBAID,WAAW,EAAA,CAAA;sBADV;gBAMD,eAAe,EAAA,CAAA;sBADd;gBAID,wBAAwB,EAAA,CAAA;sBADvB;gBAID,gBAAgB,EAAA,CAAA;sBADf;gBAID,wBAAwB,EAAA,CAAA;sBADvB;gBAID,yBAAyB,EAAA,CAAA;sBADxB;gBAIG,mBAAmB,EAAA,CAAA;sBADtB;gBAiBqC,uBAAuB,EAAA,CAAA;sBAA5D,SAAS;uBAAC,yBAAyB;gBAGpC,0BAA0B,EAAA,CAAA;sBADzB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,4BAA4B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAIzD,oBAAoB,EAAA,CAAA;sBADnB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAGzC,gBAAgB,EAAA,CAAA;sBAAzB;;;ME/GU,sBAAsB,CAAA;+GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAtB,sBAAsB,EAAA,OAAA,EAAA,CAJvB,8BAA8B,EAAE,qBAAqB,EAAE,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAE5E,8BAA8B,EAAE,qBAAqB,EAAE,qBAAqB,CAAA,EAAA,CAAA,CAAA;gHAE3E,sBAAsB,EAAA,SAAA,EAHtB,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,EAAA,OAAA,EAAA,CAD9C,8BAA8B,EAAyB,qBAAqB,CAAA,EAAA,CAAA,CAAA;;4FAI3E,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,8BAA8B,EAAE,qBAAqB,EAAE,qBAAqB,CAAC;AACvF,oBAAA,SAAS,EAAE,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;AACxD,oBAAA,OAAO,EAAE,CAAC,8BAA8B,EAAE,qBAAqB,EAAE,qBAAqB;AACvF,iBAAA;;;ACXD;;AAEG;;;;"}
|