@acorex/modules 20.6.0-next.17 → 20.6.0-next.19
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/fesm2022/acorex-modules-common.mjs +45 -43
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/{acorex-modules-content-management-acorex-modules-content-management-CnDslMqw.mjs → acorex-modules-content-management-acorex-modules-content-management--Pn1KLlN.mjs} +7 -7
- package/fesm2022/acorex-modules-content-management-acorex-modules-content-management--Pn1KLlN.mjs.map +1 -0
- package/fesm2022/{acorex-modules-content-management-permission-definition.provider-DoP21BXF.mjs → acorex-modules-content-management-permission-definition.provider-yUaeVc5p.mjs} +2 -2
- package/fesm2022/{acorex-modules-content-management-permission-definition.provider-DoP21BXF.mjs.map → acorex-modules-content-management-permission-definition.provider-yUaeVc5p.mjs.map} +1 -1
- package/fesm2022/acorex-modules-content-management.mjs +1 -1
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-B3AbD1tJ.mjs → acorex-modules-document-management-acorex-modules-document-management-rrUIN74I.mjs} +45 -30
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-rrUIN74I.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-CzDOiRIY.mjs → acorex-modules-document-management-attachment-widget.component-2Y5zJBJh.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-CzDOiRIY.mjs.map → acorex-modules-document-management-attachment-widget.component-2Y5zJBJh.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-details-view.component-DKTHo8ne.mjs → acorex-modules-document-management-details-view.component-C7zknKa3.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-details-view.component-DKTHo8ne.mjs.map → acorex-modules-document-management-details-view.component-C7zknKa3.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-DGzzdmDb.mjs → acorex-modules-document-management-document-signature-popup.component-b5DKAAec.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-DGzzdmDb.mjs.map → acorex-modules-document-management-document-signature-popup.component-b5DKAAec.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-D5aiNVzj.mjs → acorex-modules-document-management-drive-choose.component-Czct3RIU.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-D5aiNVzj.mjs.map → acorex-modules-document-management-drive-choose.component-Czct3RIU.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive.component-CeBlGsLR.mjs → acorex-modules-document-management-drive.component-ixWQTGk_.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-drive.component-CeBlGsLR.mjs.map → acorex-modules-document-management-drive.component-ixWQTGk_.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-CAHXm46u.mjs → acorex-modules-document-management-large-icons-view.component-urlBOoAQ.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-CAHXm46u.mjs.map → acorex-modules-document-management-large-icons-view.component-urlBOoAQ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-or2Wyl76.mjs → acorex-modules-document-management-large-tiles-view.component-7z2Y_FrQ.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-or2Wyl76.mjs.map → acorex-modules-document-management-large-tiles-view.component-7z2Y_FrQ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-list-view.component-gmOyQGvk.mjs → acorex-modules-document-management-list-view.component-DElB-v57.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-list-view.component-gmOyQGvk.mjs.map → acorex-modules-document-management-list-view.component-DElB-v57.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-CcZ1NTWk.mjs → acorex-modules-document-management-permission-definition.provider-Beu0lmdq.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-CcZ1NTWk.mjs.map → acorex-modules-document-management-permission-definition.provider-Beu0lmdq.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-VD2PaT-1.mjs → acorex-modules-document-management-small-icons-view.component-DiH7q3-O.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-VD2PaT-1.mjs.map → acorex-modules-document-management-small-icons-view.component-DiH7q3-O.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-fGLTqZyQ.mjs → acorex-modules-document-management-small-tiles-view.component-BJRR3JpH.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-fGLTqZyQ.mjs.map → acorex-modules-document-management-small-tiles-view.component-BJRR3JpH.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +1 -1
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-B99sSLFQ.mjs → acorex-modules-platform-management-acorex-modules-platform-management-D3eLYk5B.mjs} +5 -5
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-B99sSLFQ.mjs.map → acorex-modules-platform-management-acorex-modules-platform-management-D3eLYk5B.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-platform-management-list-version.component-um9dTYaN.mjs → acorex-modules-platform-management-list-version.component-DR6JzLzV.mjs} +2 -2
- package/fesm2022/{acorex-modules-platform-management-list-version.component-um9dTYaN.mjs.map → acorex-modules-platform-management-list-version.component-DR6JzLzV.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-platform-management-menu-list.component-DeS8hSoB.mjs → acorex-modules-platform-management-menu-list.component-zjY38r5l.mjs} +14 -14
- package/fesm2022/acorex-modules-platform-management-menu-list.component-zjY38r5l.mjs.map +1 -0
- package/fesm2022/{acorex-modules-platform-management-permission-definition.provider-DHfWGH0p.mjs → acorex-modules-platform-management-permission-definition.provider-BRZXzDNj.mjs} +2 -2
- package/fesm2022/{acorex-modules-platform-management-permission-definition.provider-DHfWGH0p.mjs.map → acorex-modules-platform-management-permission-definition.provider-BRZXzDNj.mjs.map} +1 -1
- package/fesm2022/acorex-modules-platform-management.mjs +1 -1
- package/fesm2022/acorex-modules-report-management.mjs +2 -2
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-task-management-task-board.page-Bceu03Yj.mjs → acorex-modules-task-management-task-board.page-DdDfDHhk.mjs} +1 -2
- package/fesm2022/{acorex-modules-task-management-task-board.page-Bceu03Yj.mjs.map → acorex-modules-task-management-task-board.page-DdDfDHhk.mjs.map} +1 -1
- package/fesm2022/acorex-modules-task-management.mjs +1 -1
- package/package.json +26 -26
- package/fesm2022/acorex-modules-content-management-acorex-modules-content-management-CnDslMqw.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-B3AbD1tJ.mjs.map +0 -1
- package/fesm2022/acorex-modules-platform-management-menu-list.component-DeS8hSoB.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-modules-platform-management-menu-list.component-zjY38r5l.mjs","sources":["../tmp-esm2022/platform-management/lib/features/menu-management/menu-management.service.js","../tmp-esm2022/platform-management/lib/features/menu-management/pages/menu-list/menu-list.component.js"],"sourcesContent":["import { AXPMenuProviderService, AXPSettingService } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport { cloneDeep } from 'lodash-es';\nimport { AXP_MENU_CUSTOMIZATION_DEFAULT, AXP_MENU_CUSTOMIZATION_KEY } from './menu-customization.const';\nimport * as i0 from \"@angular/core\";\n//#region ---- Menu Management Service ----\n/**\n * Constants for priority calculation\n */\nconst PRIORITY_BASE_ROOT = 0;\nconst PRIORITY_BASE_NESTED = 1000;\nconst PRIORITY_STEP = 10;\nexport class AXPMenuManagementService {\n constructor() {\n //#region ---- Dependencies ----\n this.settingService = inject(AXPSettingService);\n this.menuProviderService = inject(AXPMenuProviderService);\n }\n //#endregion\n //#region ---- Public Methods ----\n /**\n * Get menu tree as AXTreeViewNode[] for ax-tree-view component\n */\n async getMenuTree(scope) {\n // Get RAW menu items WITHOUT middleware (for management purposes)\n const baseItems = await this.menuProviderService.rawItems();\n // Load customizations for the given scope\n const customization = await this.loadCustomization(scope);\n // Merge custom items with base items\n const allItems = [...baseItems, ...customization.customItems];\n // Apply parent overrides to restructure items BEFORE building tree\n const restructuredItems = this.applyParentOverrides(allItems, customization);\n // Convert to tree nodes with metadata\n return this.convertToTreeNodes(restructuredItems, customization);\n }\n /**\n * Sync tree changes back to customization\n * Called automatically when tree structure changes via drag-drop\n */\n async syncTreeChanges(scope, treeNodes) {\n const customization = await this.loadCustomization(scope);\n // Extract and update priorities and parent relationships from tree structure\n this.updateCustomizationFromTree(treeNodes, customization);\n await this.saveCustomization(scope, customization);\n }\n /**\n * Load menu customization for a specific scope\n */\n async loadCustomization(scope) {\n try {\n const scopedSettings = this.settingService.scope(scope);\n const saved = await scopedSettings.get(AXP_MENU_CUSTOMIZATION_KEY);\n if (saved && saved.version) {\n return saved;\n }\n return cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT);\n }\n catch (error) {\n console.warn('Failed to load menu customization, using defaults', error);\n return cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT);\n }\n }\n /**\n * Save menu customization for a specific scope\n */\n async saveCustomization(scope, customization) {\n const scopedSettings = this.settingService.scope(scope);\n await scopedSettings.set(AXP_MENU_CUSTOMIZATION_KEY, customization);\n // Clear menu cache to force reload\n this.menuProviderService.clearCache();\n }\n /**\n * Hide a menu item\n */\n async hideMenuItem(scope, menuName) {\n this.validateMenuName(menuName, 'hide');\n const customization = await this.loadCustomization(scope);\n this.ensureOverrideExists(customization, menuName);\n customization.overrides[menuName].hidden = true;\n await this.saveCustomization(scope, customization);\n }\n /**\n * Show a menu item\n */\n async showMenuItem(scope, menuName) {\n this.validateMenuName(menuName, 'show');\n const customization = await this.loadCustomization(scope);\n if (customization.overrides[menuName]) {\n delete customization.overrides[menuName].hidden;\n this.cleanupEmptyOverride(customization, menuName);\n }\n await this.saveCustomization(scope, customization);\n }\n /**\n * Update menu item priority\n */\n async updateMenuPriority(scope, menuName, priority) {\n this.validateMenuName(menuName, 'update priority for');\n const customization = await this.loadCustomization(scope);\n this.ensureOverrideExists(customization, menuName);\n customization.overrides[menuName].priority = priority;\n await this.saveCustomization(scope, customization);\n }\n /**\n * Update menu item properties\n */\n async updateMenuProperties(scope, menuName, properties) {\n this.validateMenuName(menuName, 'update properties for');\n const customization = await this.loadCustomization(scope);\n this.ensureOverrideExists(customization, menuName);\n customization.overrides[menuName].properties = {\n ...customization.overrides[menuName].properties,\n ...properties,\n };\n await this.saveCustomization(scope, customization);\n }\n /**\n * Add custom menu item\n */\n async addCustomMenuItem(scope, menuItem, parent) {\n const customization = await this.loadCustomization(scope);\n // Generate unique name if not provided\n if (!menuItem.name) {\n menuItem.name = `custom-menu-${Date.now()}`;\n }\n customization.customItems.push(menuItem);\n await this.saveCustomization(scope, customization);\n }\n /**\n * Update custom menu item\n */\n async updateCustomMenuItem(scope, menuName, menuItem) {\n this.validateMenuName(menuName, 'update');\n const customization = await this.loadCustomization(scope);\n const index = customization.customItems.findIndex((item) => item.name === menuName);\n if (index === -1) {\n throw new Error(`Custom menu item '${menuName}' not found`);\n }\n customization.customItems[index] = menuItem;\n await this.saveCustomization(scope, customization);\n }\n /**\n * Delete custom menu item\n */\n async deleteCustomMenuItem(scope, menuName) {\n this.validateMenuName(menuName, 'delete');\n const customization = await this.loadCustomization(scope);\n const initialLength = customization.customItems.length;\n customization.customItems = customization.customItems.filter((item) => item.name !== menuName);\n if (customization.customItems.length === initialLength) {\n throw new Error(`Custom menu item '${menuName}' not found`);\n }\n await this.saveCustomization(scope, customization);\n }\n /**\n * Reset all customizations for a scope\n */\n async resetCustomizations(scope) {\n await this.saveCustomization(scope, cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT));\n }\n //#endregion\n //#region ---- Private Methods ----\n /**\n * Apply parent overrides from customization to restructure menu items\n * This ensures the tree reflects saved parent changes (moves)\n */\n applyParentOverrides(items, customization) {\n // First, flatten all items into a map for easy lookup\n const itemMap = this.flattenMenuItems(items);\n // Build new structure based on effective parent relationships\n const rootItems = [];\n const childrenMap = new Map();\n for (const [itemName, item] of itemMap.entries()) {\n const override = customization.overrides[itemName];\n // Determine effective parent (override takes precedence)\n let effectiveParent;\n if (override?.parentName !== undefined) {\n // parentName is explicitly set (could be null for root, or a parent name)\n effectiveParent = override.parentName;\n }\n else {\n // No override - find original parent by searching original structure\n effectiveParent = this.findOriginalParent(items, itemName);\n }\n if (effectiveParent === null || effectiveParent === undefined) {\n // Root level item\n rootItems.push(item);\n }\n else {\n // Child item - add to parent's children\n if (!childrenMap.has(effectiveParent)) {\n childrenMap.set(effectiveParent, []);\n }\n childrenMap.get(effectiveParent).push(item);\n }\n }\n // Attach children to their parents recursively\n const attachChildren = (item) => {\n if (item.name && childrenMap.has(item.name)) {\n item.children = childrenMap.get(item.name);\n item.children?.forEach(attachChildren);\n }\n };\n rootItems.forEach(attachChildren);\n return rootItems;\n }\n /**\n * Find the original parent name of an item in the original structure\n * Returns undefined for root items, string for items with parents, null for not found\n */\n findOriginalParent(items, targetName, currentParent) {\n for (const item of items) {\n if (item.name === targetName) {\n return currentParent; // undefined if root, string if has parent\n }\n if (item.children) {\n const found = this.findOriginalParent(item.children, targetName, item.name);\n if (found !== null) {\n // Found in children (could be undefined for root of subtree, or string for nested item)\n return found;\n }\n // found === null means not found in this subtree, continue searching\n }\n }\n return null; // Not found in this level or any children\n }\n /**\n * Convert menu items to AXTreeNode[] with metadata\n */\n convertToTreeNodes(items, customization, parentName) {\n const nodes = items.map((item) => {\n const itemName = item.name;\n const override = itemName ? customization.overrides[itemName] : undefined;\n const isCustom = itemName ? customization.customItems.some((ci) => ci.name === itemName) : false;\n // Create metadata\n const metadata = {\n isBuiltIn: !isCustom,\n isCustom,\n isHidden: override?.hidden || false,\n originalPriority: item.priority,\n originalParentName: parentName,\n };\n // Apply priority override\n const effectivePriority = override?.priority !== undefined ? override.priority : item.priority;\n const itemWithPriority = { ...item, priority: effectivePriority };\n // Create tree node data\n const nodeData = {\n menuItem: itemWithPriority,\n metadata,\n };\n // Create tree node\n const treeNode = {\n id: itemName || item.path || this.generateNodeId(),\n title: item.text || item.path || 'Unnamed',\n icon: item.icon,\n expanded: false,\n selected: false,\n ['children']: item.children ? this.convertToTreeNodes(item.children, customization, itemName) : undefined,\n childrenCount: item.children?.length,\n data: nodeData,\n };\n return treeNode;\n });\n // Sort by priority\n nodes.sort((a, b) => {\n const aPriority = a['data']?.menuItem.priority ?? 0;\n const bPriority = b['data']?.menuItem.priority ?? 0;\n return aPriority - bPriority;\n });\n return nodes;\n }\n /**\n * Update customization from tree structure\n * Extracts priorities and parent relationships from tree nodes\n */\n updateCustomizationFromTree(treeNodes, customization, parentName) {\n // Calculate base priority for this level to maintain relative ordering\n const basePriority = parentName ? PRIORITY_BASE_NESTED : PRIORITY_BASE_ROOT;\n const priorityStep = PRIORITY_STEP;\n treeNodes.forEach((node, index) => {\n const nodeData = node['data'] || null;\n const menuItem = nodeData?.menuItem;\n if (menuItem?.name) {\n this.ensureOverrideExists(customization, menuItem.name);\n // Calculate new priority based on current position\n const newPriority = basePriority + index * priorityStep;\n // Get current effective priority (considering existing overrides)\n const currentEffectivePriority = customization.overrides[menuItem.name]?.priority ?? nodeData.metadata.originalPriority ?? 0;\n // Always update priority to reflect current position in tree\n // This ensures reordering works correctly even after multiple moves\n if (newPriority !== currentEffectivePriority) {\n customization.overrides[menuItem.name].priority = newPriority;\n }\n // Determine current effective parent (considering existing overrides)\n const currentEffectiveParent = customization.overrides[menuItem.name]?.parentName ?? nodeData.metadata.originalParentName;\n // Update parent relationship if it changed from current effective parent\n if (parentName !== currentEffectiveParent) {\n if (parentName) {\n customization.overrides[menuItem.name].parentName = parentName;\n }\n else {\n // Moving to root - set to null (not undefined) so middleware will process it\n // moveTo(null) moves the item to root level\n customization.overrides[menuItem.name].parentName = null;\n }\n }\n // Clean up empty overrides\n this.cleanupEmptyOverride(customization, menuItem.name);\n // Recursively process children\n const nodeChildren = node['children'];\n if (nodeChildren && nodeChildren.length > 0) {\n this.updateCustomizationFromTree(nodeChildren, customization, menuItem.name);\n }\n }\n });\n }\n /**\n * Validate menu name before operations\n */\n validateMenuName(menuName, operation) {\n if (!menuName) {\n throw new Error(`Menu item must have a name to be ${operation}`);\n }\n }\n /**\n * Ensure override object exists for a menu item\n */\n ensureOverrideExists(customization, menuName) {\n if (!customization.overrides[menuName]) {\n customization.overrides[menuName] = {};\n }\n }\n /**\n * Clean up empty override objects\n */\n cleanupEmptyOverride(customization, menuName) {\n if (Object.keys(customization.overrides[menuName] || {}).length === 0) {\n delete customization.overrides[menuName];\n }\n }\n /**\n * Flatten menu items recursively into a map\n */\n flattenMenuItems(items) {\n const itemMap = new Map();\n const flatten = (itemList) => {\n for (const item of itemList) {\n if (item.name) {\n // Clone item without children to rebuild structure\n itemMap.set(item.name, { ...item, children: undefined });\n }\n if (item.children) {\n flatten(item.children);\n }\n }\n };\n flatten(items);\n return itemMap;\n }\n /**\n * Generate unique ID for tree nodes\n */\n generateNodeId() {\n return `node-${Date.now()}-${Math.floor(Math.random() * 10000)}`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPMenuManagementService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPMenuManagementService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPMenuManagementService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1tYW5hZ2VtZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcGxhdGZvcm0tbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL21lbnUtbWFuYWdlbWVudC9tZW51LW1hbmFnZW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWUsc0JBQXNCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVqRyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQWlCeEcsK0NBQStDO0FBRS9DOztHQUVHO0FBQ0gsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUM7QUFDN0IsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUM7QUFDbEMsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBR3pCLE1BQU0sT0FBTyx3QkFBd0I7SUFEckM7UUFFRSxvQ0FBb0M7UUFFNUIsbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyx3QkFBbUIsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztLQTRiOUQ7SUExYkMsWUFBWTtJQUVaLHNDQUFzQztJQUV0Qzs7T0FFRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBdUI7UUFDdkMsa0VBQWtFO1FBQ2xFLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTVELDBDQUEwQztRQUMxQyxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUxRCxxQ0FBcUM7UUFDckMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLFNBQVMsRUFBRSxHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU5RCxtRUFBbUU7UUFDbkUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRTdFLHNDQUFzQztRQUN0QyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLGVBQWUsQ0FBQyxLQUF1QixFQUFFLFNBQTJCO1FBQ3hFLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFELDZFQUE2RTtRQUM3RSxJQUFJLENBQUMsMkJBQTJCLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRTNELE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsaUJBQWlCLENBQUMsS0FBdUI7UUFDN0MsSUFBSSxDQUFDO1lBQ0gsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUMsR0FBRyxDQUF1QiwwQkFBMEIsQ0FBQyxDQUFDO1lBRXpGLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDM0IsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBRUQsT0FBTyxTQUFTLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsbURBQW1ELEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDekUsT0FBTyxTQUFTLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEtBQXVCLEVBQUUsYUFBbUM7UUFDbEYsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEQsTUFBTSxjQUFjLENBQUMsR0FBRyxDQUFDLDBCQUEwQixFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRXBFLG1DQUFtQztRQUNuQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUF1QixFQUFFLFFBQWdCO1FBQzFELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFeEMsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNuRCxhQUFhLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFFaEQsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBdUIsRUFBRSxRQUFnQjtRQUMxRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXhDLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFELElBQUksYUFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sYUFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDaEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBRUQsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxLQUF1QixFQUFFLFFBQWdCLEVBQUUsUUFBZ0I7UUFDbEYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBRXZELE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbkQsYUFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBRXRELE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsb0JBQW9CLENBQ3hCLEtBQXVCLEVBQ3ZCLFFBQWdCLEVBQ2hCLFVBQWdDO1FBRWhDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztRQUV6RCxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRW5ELGFBQWEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxHQUFHO1lBQzdDLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVO1lBQy9DLEdBQUcsVUFBVTtTQUNkLENBQUM7UUFFRixNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEtBQXVCLEVBQUUsUUFBcUIsRUFBRSxNQUFXO1FBQ2pGLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFELHVDQUF1QztRQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25CLFFBQVEsQ0FBQyxJQUFJLEdBQUcsZUFBZSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUM5QyxDQUFDO1FBRUQsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFekMsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxLQUF1QixFQUFFLFFBQWdCLEVBQUUsUUFBcUI7UUFDekYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUUxQyxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUxRCxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQztRQUVwRixJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLFFBQVEsYUFBYSxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUVELGFBQWEsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQzVDLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsb0JBQW9CLENBQUMsS0FBdUIsRUFBRSxRQUFnQjtRQUNsRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRTFDLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFELE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO1FBQ3ZELGFBQWEsQ0FBQyxXQUFXLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUM7UUFFL0YsSUFBSSxhQUFhLENBQUMsV0FBVyxDQUFDLE1BQU0sS0FBSyxhQUFhLEVBQUUsQ0FBQztZQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixRQUFRLGFBQWEsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEtBQXVCO1FBQy9DLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxZQUFZO0lBRVosdUNBQXVDO0lBRXZDOzs7T0FHRztJQUNLLG9CQUFvQixDQUFDLEtBQW9CLEVBQUUsYUFBbUM7UUFDcEYsc0RBQXNEO1FBQ3RELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU3Qyw4REFBOEQ7UUFDOUQsTUFBTSxTQUFTLEdBQWtCLEVBQUUsQ0FBQztRQUNwQyxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztRQUVyRCxLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDakQsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVuRCx5REFBeUQ7WUFDekQsSUFBSSxlQUEwQyxDQUFDO1lBQy9DLElBQUksUUFBUSxFQUFFLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDdkMsMEVBQTBFO2dCQUMxRSxlQUFlLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUN4QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04scUVBQXFFO2dCQUNyRSxlQUFlLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztZQUM3RCxDQUFDO1lBRUQsSUFBSSxlQUFlLEtBQUssSUFBSSxJQUFJLGVBQWUsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDOUQsa0JBQWtCO2dCQUNsQixTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7aUJBQU0sQ0FBQztnQkFDTix3Q0FBd0M7Z0JBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7b0JBQ3RDLFdBQVcsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN2QyxDQUFDO2dCQUNELFdBQVcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9DLENBQUM7UUFDSCxDQUFDO1FBRUQsK0NBQStDO1FBQy9DLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBaUIsRUFBRSxFQUFFO1lBQzNDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM1QyxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN6QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsU0FBUyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVsQyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssa0JBQWtCLENBQ3hCLEtBQW9CLEVBQ3BCLFVBQWtCLEVBQ2xCLGFBQXNCO1FBRXRCLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUM3QixPQUFPLGFBQWEsQ0FBQyxDQUFDLDBDQUEwQztZQUNsRSxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzVFLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO29CQUNuQix3RkFBd0Y7b0JBQ3hGLE9BQU8sS0FBSyxDQUFDO2dCQUNmLENBQUM7Z0JBQ0QscUVBQXFFO1lBQ3ZFLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsQ0FBQywwQ0FBMEM7SUFDekQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssa0JBQWtCLENBQ3hCLEtBQW9CLEVBQ3BCLGFBQW1DLEVBQ25DLFVBQW1CO1FBRW5CLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMvQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzNCLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzFFLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUVqRyxrQkFBa0I7WUFDbEIsTUFBTSxRQUFRLEdBQUc7Z0JBQ2YsU0FBUyxFQUFFLENBQUMsUUFBUTtnQkFDcEIsUUFBUTtnQkFDUixRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sSUFBSSxLQUFLO2dCQUNuQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDL0Isa0JBQWtCLEVBQUUsVUFBVTthQUMvQixDQUFDO1lBRUYsMEJBQTBCO1lBQzFCLE1BQU0saUJBQWlCLEdBQUcsUUFBUSxFQUFFLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDL0YsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO1lBRWxFLHdCQUF3QjtZQUN4QixNQUFNLFFBQVEsR0FBd0I7Z0JBQ3BDLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFFBQVE7YUFDVCxDQUFDO1lBRUYsbUJBQW1CO1lBQ25CLE1BQU0sUUFBUSxHQUFtQjtnQkFDL0IsRUFBRSxFQUFFLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ2xELEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksU0FBUztnQkFDMUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFFBQVEsRUFBRSxLQUFLO2dCQUNmLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUN6RyxhQUFhLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNO2dCQUNwQyxJQUFJLEVBQUUsUUFBUTthQUNmLENBQUM7WUFFRixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztRQUVILG1CQUFtQjtRQUNuQixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2xCLE1BQU0sU0FBUyxHQUFJLENBQUMsQ0FBQyxNQUFNLENBQXlCLEVBQUUsUUFBUSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUM7WUFDN0UsTUFBTSxTQUFTLEdBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBeUIsRUFBRSxRQUFRLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQztZQUM3RSxPQUFPLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7O09BR0c7SUFDSywyQkFBMkIsQ0FDakMsU0FBMkIsRUFDM0IsYUFBbUMsRUFDbkMsVUFBbUI7UUFFbkIsdUVBQXVFO1FBQ3ZFLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDO1FBQzVFLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQztRQUVuQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2hDLE1BQU0sUUFBUSxHQUFJLElBQUksQ0FBQyxNQUFNLENBQXlCLElBQUksSUFBSSxDQUFDO1lBQy9ELE1BQU0sUUFBUSxHQUFHLFFBQVEsRUFBRSxRQUFRLENBQUM7WUFFcEMsSUFBSSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUV4RCxtREFBbUQ7Z0JBQ25ELE1BQU0sV0FBVyxHQUFHLFlBQVksR0FBRyxLQUFLLEdBQUcsWUFBWSxDQUFDO2dCQUV4RCxrRUFBa0U7Z0JBQ2xFLE1BQU0sd0JBQXdCLEdBQzVCLGFBQWEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQztnQkFFOUYsNkRBQTZEO2dCQUM3RCxvRUFBb0U7Z0JBQ3BFLElBQUksV0FBVyxLQUFLLHdCQUF3QixFQUFFLENBQUM7b0JBQzdDLGFBQWEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUM7Z0JBQ2hFLENBQUM7Z0JBRUQsc0VBQXNFO2dCQUN0RSxNQUFNLHNCQUFzQixHQUMxQixhQUFhLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxVQUFVLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQztnQkFFN0YseUVBQXlFO2dCQUN6RSxJQUFJLFVBQVUsS0FBSyxzQkFBc0IsRUFBRSxDQUFDO29CQUMxQyxJQUFJLFVBQVUsRUFBRSxDQUFDO3dCQUNmLGFBQWEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7b0JBQ2pFLENBQUM7eUJBQU0sQ0FBQzt3QkFDTiw2RUFBNkU7d0JBQzdFLDRDQUE0Qzt3QkFDNUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztvQkFDM0QsQ0FBQztnQkFDSCxDQUFDO2dCQUVELDJCQUEyQjtnQkFDM0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRXhELCtCQUErQjtnQkFDL0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBaUMsQ0FBQztnQkFDdEUsSUFBSSxZQUFZLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDNUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMvRSxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0JBQWdCLENBQUMsUUFBZ0IsRUFBRSxTQUFpQjtRQUMxRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxvQkFBb0IsQ0FBQyxhQUFtQyxFQUFFLFFBQWdCO1FBQ2hGLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDdkMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLG9CQUFvQixDQUFDLGFBQW1DLEVBQUUsUUFBZ0I7UUFDaEYsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RFLE9BQU8sYUFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0JBQWdCLENBQUMsS0FBb0I7UUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUM7UUFFL0MsTUFBTSxPQUFPLEdBQUcsQ0FBQyxRQUF1QixFQUFFLEVBQUU7WUFDMUMsS0FBSyxNQUFNLElBQUksSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ2QsbURBQW1EO29CQUNuRCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFDM0QsQ0FBQztnQkFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDekIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUM7UUFFRixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDZixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7SUFDSyxjQUFjO1FBQ3BCLE9BQU8sUUFBUSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUNuRSxDQUFDOytHQTdiVSx3QkFBd0I7bUhBQXhCLHdCQUF3QixjQURYLE1BQU07OzRGQUNuQix3QkFBd0I7a0JBRHBDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhUcmVlVmlld05vZGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdHJlZS12aWV3JztcbmltcG9ydCB7IEFYUE1lbnVJdGVtLCBBWFBNZW51UHJvdmlkZXJTZXJ2aWNlLCBBWFBTZXR0aW5nU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUFBsYXRmb3JtU2NvcGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQVhQX01FTlVfQ1VTVE9NSVpBVElPTl9ERUZBVUxULCBBWFBfTUVOVV9DVVNUT01JWkFUSU9OX0tFWSB9IGZyb20gJy4vbWVudS1jdXN0b21pemF0aW9uLmNvbnN0JztcbmltcG9ydCB7IEFYUE1lbnVDdXN0b21pemF0aW9uIH0gZnJvbSAnLi9tZW51LWN1c3RvbWl6YXRpb24udHlwZXMnO1xuXG4vKipcbiAqIERhdGEgc3RydWN0dXJlIGZvciB0cmVlIG5vZGUgY29tYmluaW5nIG1lbnUgaXRlbSB3aXRoIG1ldGFkYXRhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQTWVudVRyZWVOb2RlRGF0YSB7XG4gIG1lbnVJdGVtOiBBWFBNZW51SXRlbTtcbiAgbWV0YWRhdGE6IHtcbiAgICBpc0J1aWx0SW46IGJvb2xlYW47XG4gICAgaXNDdXN0b206IGJvb2xlYW47XG4gICAgaXNIaWRkZW46IGJvb2xlYW47XG4gICAgb3JpZ2luYWxQcmlvcml0eT86IG51bWJlcjtcbiAgICBvcmlnaW5hbFBhcmVudE5hbWU/OiBzdHJpbmc7XG4gIH07XG59XG5cbi8vI3JlZ2lvbiAtLS0tICAgTWVudSBNYW5hZ2VtZW50IFNlcnZpY2UgICAtLS0tXG5cbi8qKlxuICogQ29uc3RhbnRzIGZvciBwcmlvcml0eSBjYWxjdWxhdGlvblxuICovXG5jb25zdCBQUklPUklUWV9CQVNFX1JPT1QgPSAwO1xuY29uc3QgUFJJT1JJVFlfQkFTRV9ORVNURUQgPSAxMDAwO1xuY29uc3QgUFJJT1JJVFlfU1RFUCA9IDEwO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFYUE1lbnVNYW5hZ2VtZW50U2VydmljZSB7XG4gIC8vI3JlZ2lvbiAtLS0tICAgRGVwZW5kZW5jaWVzICAgLS0tLVxuXG4gIHByaXZhdGUgc2V0dGluZ1NlcnZpY2UgPSBpbmplY3QoQVhQU2V0dGluZ1NlcnZpY2UpO1xuICBwcml2YXRlIG1lbnVQcm92aWRlclNlcnZpY2UgPSBpbmplY3QoQVhQTWVudVByb3ZpZGVyU2VydmljZSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBQdWJsaWMgTWV0aG9kcyAgIC0tLS1cblxuICAvKipcbiAgICogR2V0IG1lbnUgdHJlZSBhcyBBWFRyZWVWaWV3Tm9kZVtdIGZvciBheC10cmVlLXZpZXcgY29tcG9uZW50XG4gICAqL1xuICBhc3luYyBnZXRNZW51VHJlZShzY29wZTogQVhQUGxhdGZvcm1TY29wZSk6IFByb21pc2U8QVhUcmVlVmlld05vZGVbXT4ge1xuICAgIC8vIEdldCBSQVcgbWVudSBpdGVtcyBXSVRIT1VUIG1pZGRsZXdhcmUgKGZvciBtYW5hZ2VtZW50IHB1cnBvc2VzKVxuICAgIGNvbnN0IGJhc2VJdGVtcyA9IGF3YWl0IHRoaXMubWVudVByb3ZpZGVyU2VydmljZS5yYXdJdGVtcygpO1xuXG4gICAgLy8gTG9hZCBjdXN0b21pemF0aW9ucyBmb3IgdGhlIGdpdmVuIHNjb3BlXG4gICAgY29uc3QgY3VzdG9taXphdGlvbiA9IGF3YWl0IHRoaXMubG9hZEN1c3RvbWl6YXRpb24oc2NvcGUpO1xuXG4gICAgLy8gTWVyZ2UgY3VzdG9tIGl0ZW1zIHdpdGggYmFzZSBpdGVtc1xuICAgIGNvbnN0IGFsbEl0ZW1zID0gWy4uLmJhc2VJdGVtcywgLi4uY3VzdG9taXphdGlvbi5jdXN0b21JdGVtc107XG5cbiAgICAvLyBBcHBseSBwYXJlbnQgb3ZlcnJpZGVzIHRvIHJlc3RydWN0dXJlIGl0ZW1zIEJFRk9SRSBidWlsZGluZyB0cmVlXG4gICAgY29uc3QgcmVzdHJ1Y3R1cmVkSXRlbXMgPSB0aGlzLmFwcGx5UGFyZW50T3ZlcnJpZGVzKGFsbEl0ZW1zLCBjdXN0b21pemF0aW9uKTtcblxuICAgIC8vIENvbnZlcnQgdG8gdHJlZSBub2RlcyB3aXRoIG1ldGFkYXRhXG4gICAgcmV0dXJuIHRoaXMuY29udmVydFRvVHJlZU5vZGVzKHJlc3RydWN0dXJlZEl0ZW1zLCBjdXN0b21pemF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTeW5jIHRyZWUgY2hhbmdlcyBiYWNrIHRvIGN1c3RvbWl6YXRpb25cbiAgICogQ2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0cmVlIHN0cnVjdHVyZSBjaGFuZ2VzIHZpYSBkcmFnLWRyb3BcbiAgICovXG4gIGFzeW5jIHN5bmNUcmVlQ2hhbmdlcyhzY29wZTogQVhQUGxhdGZvcm1TY29wZSwgdHJlZU5vZGVzOiBBWFRyZWVWaWV3Tm9kZVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY3VzdG9taXphdGlvbiA9IGF3YWl0IHRoaXMubG9hZEN1c3RvbWl6YXRpb24oc2NvcGUpO1xuXG4gICAgLy8gRXh0cmFjdCBhbmQgdXBkYXRlIHByaW9yaXRpZXMgYW5kIHBhcmVudCByZWxhdGlvbnNoaXBzIGZyb20gdHJlZSBzdHJ1Y3R1cmVcbiAgICB0aGlzLnVwZGF0ZUN1c3RvbWl6YXRpb25Gcm9tVHJlZSh0cmVlTm9kZXMsIGN1c3RvbWl6YXRpb24pO1xuXG4gICAgYXdhaXQgdGhpcy5zYXZlQ3VzdG9taXphdGlvbihzY29wZSwgY3VzdG9taXphdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBtZW51IGN1c3RvbWl6YXRpb24gZm9yIGEgc3BlY2lmaWMgc2NvcGVcbiAgICovXG4gIGFzeW5jIGxvYWRDdXN0b21pemF0aW9uKHNjb3BlOiBBWFBQbGF0Zm9ybVNjb3BlKTogUHJvbWlzZTxBWFBNZW51Q3VzdG9taXphdGlvbj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzY29wZWRTZXR0aW5ncyA9IHRoaXMuc2V0dGluZ1NlcnZpY2Uuc2NvcGUoc2NvcGUpO1xuICAgICAgY29uc3Qgc2F2ZWQgPSBhd2FpdCBzY29wZWRTZXR0aW5ncy5nZXQ8QVhQTWVudUN1c3RvbWl6YXRpb24+KEFYUF9NRU5VX0NVU1RPTUlaQVRJT05fS0VZKTtcblxuICAgICAgaWYgKHNhdmVkICYmIHNhdmVkLnZlcnNpb24pIHtcbiAgICAgICAgcmV0dXJuIHNhdmVkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2xvbmVEZWVwKEFYUF9NRU5VX0NVU1RPTUlaQVRJT05fREVGQVVMVCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIGxvYWQgbWVudSBjdXN0b21pemF0aW9uLCB1c2luZyBkZWZhdWx0cycsIGVycm9yKTtcbiAgICAgIHJldHVybiBjbG9uZURlZXAoQVhQX01FTlVfQ1VTVE9NSVpBVElPTl9ERUZBVUxUKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBtZW51IGN1c3RvbWl6YXRpb24gZm9yIGEgc3BlY2lmaWMgc2NvcGVcbiAgICovXG4gIGFzeW5jIHNhdmVDdXN0b21pemF0aW9uKHNjb3BlOiBBWFBQbGF0Zm9ybVNjb3BlLCBjdXN0b21pemF0aW9uOiBBWFBNZW51Q3VzdG9taXphdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHNjb3BlZFNldHRpbmdzID0gdGhpcy5zZXR0aW5nU2VydmljZS5zY29wZShzY29wZSk7XG4gICAgYXdhaXQgc2NvcGVkU2V0dGluZ3Muc2V0KEFYUF9NRU5VX0NVU1RPTUlaQVRJT05fS0VZLCBjdXN0b21pemF0aW9uKTtcblxuICAgIC8vIENsZWFyIG1lbnUgY2FjaGUgdG8gZm9yY2UgcmVsb2FkXG4gICAgdGhpcy5tZW51UHJvdmlkZXJTZXJ2aWNlLmNsZWFyQ2FjaGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlIGEgbWVudSBpdGVtXG4gICAqL1xuICBhc3luYyBoaWRlTWVudUl0ZW0oc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGUsIG1lbnVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnZhbGlkYXRlTWVudU5hbWUobWVudU5hbWUsICdoaWRlJyk7XG5cbiAgICBjb25zdCBjdXN0b21pemF0aW9uID0gYXdhaXQgdGhpcy5sb2FkQ3VzdG9taXphdGlvbihzY29wZSk7XG4gICAgdGhpcy5lbnN1cmVPdmVycmlkZUV4aXN0cyhjdXN0b21pemF0aW9uLCBtZW51TmFtZSk7XG4gICAgY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudU5hbWVdLmhpZGRlbiA9IHRydWU7XG5cbiAgICBhd2FpdCB0aGlzLnNhdmVDdXN0b21pemF0aW9uKHNjb3BlLCBjdXN0b21pemF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93IGEgbWVudSBpdGVtXG4gICAqL1xuICBhc3luYyBzaG93TWVudUl0ZW0oc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGUsIG1lbnVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnZhbGlkYXRlTWVudU5hbWUobWVudU5hbWUsICdzaG93Jyk7XG5cbiAgICBjb25zdCBjdXN0b21pemF0aW9uID0gYXdhaXQgdGhpcy5sb2FkQ3VzdG9taXphdGlvbihzY29wZSk7XG5cbiAgICBpZiAoY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudU5hbWVdKSB7XG4gICAgICBkZWxldGUgY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudU5hbWVdLmhpZGRlbjtcbiAgICAgIHRoaXMuY2xlYW51cEVtcHR5T3ZlcnJpZGUoY3VzdG9taXphdGlvbiwgbWVudU5hbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb24oc2NvcGUsIGN1c3RvbWl6YXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBtZW51IGl0ZW0gcHJpb3JpdHlcbiAgICovXG4gIGFzeW5jIHVwZGF0ZU1lbnVQcmlvcml0eShzY29wZTogQVhQUGxhdGZvcm1TY29wZSwgbWVudU5hbWU6IHN0cmluZywgcHJpb3JpdHk6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMudmFsaWRhdGVNZW51TmFtZShtZW51TmFtZSwgJ3VwZGF0ZSBwcmlvcml0eSBmb3InKTtcblxuICAgIGNvbnN0IGN1c3RvbWl6YXRpb24gPSBhd2FpdCB0aGlzLmxvYWRDdXN0b21pemF0aW9uKHNjb3BlKTtcbiAgICB0aGlzLmVuc3VyZU92ZXJyaWRlRXhpc3RzKGN1c3RvbWl6YXRpb24sIG1lbnVOYW1lKTtcbiAgICBjdXN0b21pemF0aW9uLm92ZXJyaWRlc1ttZW51TmFtZV0ucHJpb3JpdHkgPSBwcmlvcml0eTtcblxuICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb24oc2NvcGUsIGN1c3RvbWl6YXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBtZW51IGl0ZW0gcHJvcGVydGllc1xuICAgKi9cbiAgYXN5bmMgdXBkYXRlTWVudVByb3BlcnRpZXMoXG4gICAgc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGUsXG4gICAgbWVudU5hbWU6IHN0cmluZyxcbiAgICBwcm9wZXJ0aWVzOiBQYXJ0aWFsPEFYUE1lbnVJdGVtPixcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy52YWxpZGF0ZU1lbnVOYW1lKG1lbnVOYW1lLCAndXBkYXRlIHByb3BlcnRpZXMgZm9yJyk7XG5cbiAgICBjb25zdCBjdXN0b21pemF0aW9uID0gYXdhaXQgdGhpcy5sb2FkQ3VzdG9taXphdGlvbihzY29wZSk7XG4gICAgdGhpcy5lbnN1cmVPdmVycmlkZUV4aXN0cyhjdXN0b21pemF0aW9uLCBtZW51TmFtZSk7XG5cbiAgICBjdXN0b21pemF0aW9uLm92ZXJyaWRlc1ttZW51TmFtZV0ucHJvcGVydGllcyA9IHtcbiAgICAgIC4uLmN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW21lbnVOYW1lXS5wcm9wZXJ0aWVzLFxuICAgICAgLi4ucHJvcGVydGllcyxcbiAgICB9O1xuXG4gICAgYXdhaXQgdGhpcy5zYXZlQ3VzdG9taXphdGlvbihzY29wZSwgY3VzdG9taXphdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGN1c3RvbSBtZW51IGl0ZW1cbiAgICovXG4gIGFzeW5jIGFkZEN1c3RvbU1lbnVJdGVtKHNjb3BlOiBBWFBQbGF0Zm9ybVNjb3BlLCBtZW51SXRlbTogQVhQTWVudUl0ZW0sIHBhcmVudDogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY3VzdG9taXphdGlvbiA9IGF3YWl0IHRoaXMubG9hZEN1c3RvbWl6YXRpb24oc2NvcGUpO1xuXG4gICAgLy8gR2VuZXJhdGUgdW5pcXVlIG5hbWUgaWYgbm90IHByb3ZpZGVkXG4gICAgaWYgKCFtZW51SXRlbS5uYW1lKSB7XG4gICAgICBtZW51SXRlbS5uYW1lID0gYGN1c3RvbS1tZW51LSR7RGF0ZS5ub3coKX1gO1xuICAgIH1cblxuICAgIGN1c3RvbWl6YXRpb24uY3VzdG9tSXRlbXMucHVzaChtZW51SXRlbSk7XG5cbiAgICBhd2FpdCB0aGlzLnNhdmVDdXN0b21pemF0aW9uKHNjb3BlLCBjdXN0b21pemF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgY3VzdG9tIG1lbnUgaXRlbVxuICAgKi9cbiAgYXN5bmMgdXBkYXRlQ3VzdG9tTWVudUl0ZW0oc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGUsIG1lbnVOYW1lOiBzdHJpbmcsIG1lbnVJdGVtOiBBWFBNZW51SXRlbSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMudmFsaWRhdGVNZW51TmFtZShtZW51TmFtZSwgJ3VwZGF0ZScpO1xuXG4gICAgY29uc3QgY3VzdG9taXphdGlvbiA9IGF3YWl0IHRoaXMubG9hZEN1c3RvbWl6YXRpb24oc2NvcGUpO1xuXG4gICAgY29uc3QgaW5kZXggPSBjdXN0b21pemF0aW9uLmN1c3RvbUl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5uYW1lID09PSBtZW51TmFtZSk7XG5cbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1c3RvbSBtZW51IGl0ZW0gJyR7bWVudU5hbWV9JyBub3QgZm91bmRgKTtcbiAgICB9XG5cbiAgICBjdXN0b21pemF0aW9uLmN1c3RvbUl0ZW1zW2luZGV4XSA9IG1lbnVJdGVtO1xuICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb24oc2NvcGUsIGN1c3RvbWl6YXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBjdXN0b20gbWVudSBpdGVtXG4gICAqL1xuICBhc3luYyBkZWxldGVDdXN0b21NZW51SXRlbShzY29wZTogQVhQUGxhdGZvcm1TY29wZSwgbWVudU5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMudmFsaWRhdGVNZW51TmFtZShtZW51TmFtZSwgJ2RlbGV0ZScpO1xuXG4gICAgY29uc3QgY3VzdG9taXphdGlvbiA9IGF3YWl0IHRoaXMubG9hZEN1c3RvbWl6YXRpb24oc2NvcGUpO1xuXG4gICAgY29uc3QgaW5pdGlhbExlbmd0aCA9IGN1c3RvbWl6YXRpb24uY3VzdG9tSXRlbXMubGVuZ3RoO1xuICAgIGN1c3RvbWl6YXRpb24uY3VzdG9tSXRlbXMgPSBjdXN0b21pemF0aW9uLmN1c3RvbUl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5uYW1lICE9PSBtZW51TmFtZSk7XG5cbiAgICBpZiAoY3VzdG9taXphdGlvbi5jdXN0b21JdGVtcy5sZW5ndGggPT09IGluaXRpYWxMZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VzdG9tIG1lbnUgaXRlbSAnJHttZW51TmFtZX0nIG5vdCBmb3VuZGApO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb24oc2NvcGUsIGN1c3RvbWl6YXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IGFsbCBjdXN0b21pemF0aW9ucyBmb3IgYSBzY29wZVxuICAgKi9cbiAgYXN5bmMgcmVzZXRDdXN0b21pemF0aW9ucyhzY29wZTogQVhQUGxhdGZvcm1TY29wZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb24oc2NvcGUsIGNsb25lRGVlcChBWFBfTUVOVV9DVVNUT01JWkFUSU9OX0RFRkFVTFQpKTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgUHJpdmF0ZSBNZXRob2RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBBcHBseSBwYXJlbnQgb3ZlcnJpZGVzIGZyb20gY3VzdG9taXphdGlvbiB0byByZXN0cnVjdHVyZSBtZW51IGl0ZW1zXG4gICAqIFRoaXMgZW5zdXJlcyB0aGUgdHJlZSByZWZsZWN0cyBzYXZlZCBwYXJlbnQgY2hhbmdlcyAobW92ZXMpXG4gICAqL1xuICBwcml2YXRlIGFwcGx5UGFyZW50T3ZlcnJpZGVzKGl0ZW1zOiBBWFBNZW51SXRlbVtdLCBjdXN0b21pemF0aW9uOiBBWFBNZW51Q3VzdG9taXphdGlvbik6IEFYUE1lbnVJdGVtW10ge1xuICAgIC8vIEZpcnN0LCBmbGF0dGVuIGFsbCBpdGVtcyBpbnRvIGEgbWFwIGZvciBlYXN5IGxvb2t1cFxuICAgIGNvbnN0IGl0ZW1NYXAgPSB0aGlzLmZsYXR0ZW5NZW51SXRlbXMoaXRlbXMpO1xuXG4gICAgLy8gQnVpbGQgbmV3IHN0cnVjdHVyZSBiYXNlZCBvbiBlZmZlY3RpdmUgcGFyZW50IHJlbGF0aW9uc2hpcHNcbiAgICBjb25zdCByb290SXRlbXM6IEFYUE1lbnVJdGVtW10gPSBbXTtcbiAgICBjb25zdCBjaGlsZHJlbk1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBWFBNZW51SXRlbVtdPigpO1xuXG4gICAgZm9yIChjb25zdCBbaXRlbU5hbWUsIGl0ZW1dIG9mIGl0ZW1NYXAuZW50cmllcygpKSB7XG4gICAgICBjb25zdCBvdmVycmlkZSA9IGN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW2l0ZW1OYW1lXTtcblxuICAgICAgLy8gRGV0ZXJtaW5lIGVmZmVjdGl2ZSBwYXJlbnQgKG92ZXJyaWRlIHRha2VzIHByZWNlZGVuY2UpXG4gICAgICBsZXQgZWZmZWN0aXZlUGFyZW50OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKG92ZXJyaWRlPy5wYXJlbnROYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gcGFyZW50TmFtZSBpcyBleHBsaWNpdGx5IHNldCAoY291bGQgYmUgbnVsbCBmb3Igcm9vdCwgb3IgYSBwYXJlbnQgbmFtZSlcbiAgICAgICAgZWZmZWN0aXZlUGFyZW50ID0gb3ZlcnJpZGUucGFyZW50TmFtZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vIG92ZXJyaWRlIC0gZmluZCBvcmlnaW5hbCBwYXJlbnQgYnkgc2VhcmNoaW5nIG9yaWdpbmFsIHN0cnVjdHVyZVxuICAgICAgICBlZmZlY3RpdmVQYXJlbnQgPSB0aGlzLmZpbmRPcmlnaW5hbFBhcmVudChpdGVtcywgaXRlbU5hbWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWZmZWN0aXZlUGFyZW50ID09PSBudWxsIHx8IGVmZmVjdGl2ZVBhcmVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIFJvb3QgbGV2ZWwgaXRlbVxuICAgICAgICByb290SXRlbXMucHVzaChpdGVtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIENoaWxkIGl0ZW0gLSBhZGQgdG8gcGFyZW50J3MgY2hpbGRyZW5cbiAgICAgICAgaWYgKCFjaGlsZHJlbk1hcC5oYXMoZWZmZWN0aXZlUGFyZW50KSkge1xuICAgICAgICAgIGNoaWxkcmVuTWFwLnNldChlZmZlY3RpdmVQYXJlbnQsIFtdKTtcbiAgICAgICAgfVxuICAgICAgICBjaGlsZHJlbk1hcC5nZXQoZWZmZWN0aXZlUGFyZW50KSEucHVzaChpdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBdHRhY2ggY2hpbGRyZW4gdG8gdGhlaXIgcGFyZW50cyByZWN1cnNpdmVseVxuICAgIGNvbnN0IGF0dGFjaENoaWxkcmVuID0gKGl0ZW06IEFYUE1lbnVJdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbS5uYW1lICYmIGNoaWxkcmVuTWFwLmhhcyhpdGVtLm5hbWUpKSB7XG4gICAgICAgIGl0ZW0uY2hpbGRyZW4gPSBjaGlsZHJlbk1hcC5nZXQoaXRlbS5uYW1lKTtcbiAgICAgICAgaXRlbS5jaGlsZHJlbj8uZm9yRWFjaChhdHRhY2hDaGlsZHJlbik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJvb3RJdGVtcy5mb3JFYWNoKGF0dGFjaENoaWxkcmVuKTtcblxuICAgIHJldHVybiByb290SXRlbXM7XG4gIH1cblxuICAvKipcbiAgICogRmluZCB0aGUgb3JpZ2luYWwgcGFyZW50IG5hbWUgb2YgYW4gaXRlbSBpbiB0aGUgb3JpZ2luYWwgc3RydWN0dXJlXG4gICAqIFJldHVybnMgdW5kZWZpbmVkIGZvciByb290IGl0ZW1zLCBzdHJpbmcgZm9yIGl0ZW1zIHdpdGggcGFyZW50cywgbnVsbCBmb3Igbm90IGZvdW5kXG4gICAqL1xuICBwcml2YXRlIGZpbmRPcmlnaW5hbFBhcmVudChcbiAgICBpdGVtczogQVhQTWVudUl0ZW1bXSxcbiAgICB0YXJnZXROYW1lOiBzdHJpbmcsXG4gICAgY3VycmVudFBhcmVudD86IHN0cmluZyxcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpZiAoaXRlbS5uYW1lID09PSB0YXJnZXROYW1lKSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50UGFyZW50OyAvLyB1bmRlZmluZWQgaWYgcm9vdCwgc3RyaW5nIGlmIGhhcyBwYXJlbnRcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5maW5kT3JpZ2luYWxQYXJlbnQoaXRlbS5jaGlsZHJlbiwgdGFyZ2V0TmFtZSwgaXRlbS5uYW1lKTtcbiAgICAgICAgaWYgKGZvdW5kICE9PSBudWxsKSB7XG4gICAgICAgICAgLy8gRm91bmQgaW4gY2hpbGRyZW4gKGNvdWxkIGJlIHVuZGVmaW5lZCBmb3Igcm9vdCBvZiBzdWJ0cmVlLCBvciBzdHJpbmcgZm9yIG5lc3RlZCBpdGVtKVxuICAgICAgICAgIHJldHVybiBmb3VuZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBmb3VuZCA9PT0gbnVsbCBtZWFucyBub3QgZm91bmQgaW4gdGhpcyBzdWJ0cmVlLCBjb250aW51ZSBzZWFyY2hpbmdcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7IC8vIE5vdCBmb3VuZCBpbiB0aGlzIGxldmVsIG9yIGFueSBjaGlsZHJlblxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgbWVudSBpdGVtcyB0byBBWFRyZWVOb2RlW10gd2l0aCBtZXRhZGF0YVxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0VG9UcmVlTm9kZXMoXG4gICAgaXRlbXM6IEFYUE1lbnVJdGVtW10sXG4gICAgY3VzdG9taXphdGlvbjogQVhQTWVudUN1c3RvbWl6YXRpb24sXG4gICAgcGFyZW50TmFtZT86IHN0cmluZyxcbiAgKTogQVhUcmVlVmlld05vZGVbXSB7XG4gICAgY29uc3Qgbm9kZXMgPSBpdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IGl0ZW1OYW1lID0gaXRlbS5uYW1lO1xuICAgICAgY29uc3Qgb3ZlcnJpZGUgPSBpdGVtTmFtZSA/IGN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW2l0ZW1OYW1lXSA6IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGlzQ3VzdG9tID0gaXRlbU5hbWUgPyBjdXN0b21pemF0aW9uLmN1c3RvbUl0ZW1zLnNvbWUoKGNpKSA9PiBjaS5uYW1lID09PSBpdGVtTmFtZSkgOiBmYWxzZTtcblxuICAgICAgLy8gQ3JlYXRlIG1ldGFkYXRhXG4gICAgICBjb25zdCBtZXRhZGF0YSA9IHtcbiAgICAgICAgaXNCdWlsdEluOiAhaXNDdXN0b20sXG4gICAgICAgIGlzQ3VzdG9tLFxuICAgICAgICBpc0hpZGRlbjogb3ZlcnJpZGU/LmhpZGRlbiB8fCBmYWxzZSxcbiAgICAgICAgb3JpZ2luYWxQcmlvcml0eTogaXRlbS5wcmlvcml0eSxcbiAgICAgICAgb3JpZ2luYWxQYXJlbnROYW1lOiBwYXJlbnROYW1lLFxuICAgICAgfTtcblxuICAgICAgLy8gQXBwbHkgcHJpb3JpdHkgb3ZlcnJpZGVcbiAgICAgIGNvbnN0IGVmZmVjdGl2ZVByaW9yaXR5ID0gb3ZlcnJpZGU/LnByaW9yaXR5ICE9PSB1bmRlZmluZWQgPyBvdmVycmlkZS5wcmlvcml0eSA6IGl0ZW0ucHJpb3JpdHk7XG4gICAgICBjb25zdCBpdGVtV2l0aFByaW9yaXR5ID0geyAuLi5pdGVtLCBwcmlvcml0eTogZWZmZWN0aXZlUHJpb3JpdHkgfTtcblxuICAgICAgLy8gQ3JlYXRlIHRyZWUgbm9kZSBkYXRhXG4gICAgICBjb25zdCBub2RlRGF0YTogQVhQTWVudVRyZWVOb2RlRGF0YSA9IHtcbiAgICAgICAgbWVudUl0ZW06IGl0ZW1XaXRoUHJpb3JpdHksXG4gICAgICAgIG1ldGFkYXRhLFxuICAgICAgfTtcblxuICAgICAgLy8gQ3JlYXRlIHRyZWUgbm9kZVxuICAgICAgY29uc3QgdHJlZU5vZGU6IEFYVHJlZVZpZXdOb2RlID0ge1xuICAgICAgICBpZDogaXRlbU5hbWUgfHwgaXRlbS5wYXRoIHx8IHRoaXMuZ2VuZXJhdGVOb2RlSWQoKSxcbiAgICAgICAgdGl0bGU6IGl0ZW0udGV4dCB8fCBpdGVtLnBhdGggfHwgJ1VubmFtZWQnLFxuICAgICAgICBpY29uOiBpdGVtLmljb24sXG4gICAgICAgIGV4cGFuZGVkOiBmYWxzZSxcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICBbJ2NoaWxkcmVuJ106IGl0ZW0uY2hpbGRyZW4gPyB0aGlzLmNvbnZlcnRUb1RyZWVOb2RlcyhpdGVtLmNoaWxkcmVuLCBjdXN0b21pemF0aW9uLCBpdGVtTmFtZSkgOiB1bmRlZmluZWQsXG4gICAgICAgIGNoaWxkcmVuQ291bnQ6IGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCxcbiAgICAgICAgZGF0YTogbm9kZURhdGEsXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gdHJlZU5vZGU7XG4gICAgfSk7XG5cbiAgICAvLyBTb3J0IGJ5IHByaW9yaXR5XG4gICAgbm9kZXMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgY29uc3QgYVByaW9yaXR5ID0gKGFbJ2RhdGEnXSBhcyBBWFBNZW51VHJlZU5vZGVEYXRhKT8ubWVudUl0ZW0ucHJpb3JpdHkgPz8gMDtcbiAgICAgIGNvbnN0IGJQcmlvcml0eSA9IChiWydkYXRhJ10gYXMgQVhQTWVudVRyZWVOb2RlRGF0YSk/Lm1lbnVJdGVtLnByaW9yaXR5ID8/IDA7XG4gICAgICByZXR1cm4gYVByaW9yaXR5IC0gYlByaW9yaXR5O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5vZGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBjdXN0b21pemF0aW9uIGZyb20gdHJlZSBzdHJ1Y3R1cmVcbiAgICogRXh0cmFjdHMgcHJpb3JpdGllcyBhbmQgcGFyZW50IHJlbGF0aW9uc2hpcHMgZnJvbSB0cmVlIG5vZGVzXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUN1c3RvbWl6YXRpb25Gcm9tVHJlZShcbiAgICB0cmVlTm9kZXM6IEFYVHJlZVZpZXdOb2RlW10sXG4gICAgY3VzdG9taXphdGlvbjogQVhQTWVudUN1c3RvbWl6YXRpb24sXG4gICAgcGFyZW50TmFtZT86IHN0cmluZyxcbiAgKTogdm9pZCB7XG4gICAgLy8gQ2FsY3VsYXRlIGJhc2UgcHJpb3JpdHkgZm9yIHRoaXMgbGV2ZWwgdG8gbWFpbnRhaW4gcmVsYXRpdmUgb3JkZXJpbmdcbiAgICBjb25zdCBiYXNlUHJpb3JpdHkgPSBwYXJlbnROYW1lID8gUFJJT1JJVFlfQkFTRV9ORVNURUQgOiBQUklPUklUWV9CQVNFX1JPT1Q7XG4gICAgY29uc3QgcHJpb3JpdHlTdGVwID0gUFJJT1JJVFlfU1RFUDtcblxuICAgIHRyZWVOb2Rlcy5mb3JFYWNoKChub2RlLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3Qgbm9kZURhdGEgPSAobm9kZVsnZGF0YSddIGFzIEFYUE1lbnVUcmVlTm9kZURhdGEpIHx8IG51bGw7XG4gICAgICBjb25zdCBtZW51SXRlbSA9IG5vZGVEYXRhPy5tZW51SXRlbTtcblxuICAgICAgaWYgKG1lbnVJdGVtPy5uYW1lKSB7XG4gICAgICAgIHRoaXMuZW5zdXJlT3ZlcnJpZGVFeGlzdHMoY3VzdG9taXphdGlvbiwgbWVudUl0ZW0ubmFtZSk7XG5cbiAgICAgICAgLy8gQ2FsY3VsYXRlIG5ldyBwcmlvcml0eSBiYXNlZCBvbiBjdXJyZW50IHBvc2l0aW9uXG4gICAgICAgIGNvbnN0IG5ld1ByaW9yaXR5ID0gYmFzZVByaW9yaXR5ICsgaW5kZXggKiBwcmlvcml0eVN0ZXA7XG5cbiAgICAgICAgLy8gR2V0IGN1cnJlbnQgZWZmZWN0aXZlIHByaW9yaXR5IChjb25zaWRlcmluZyBleGlzdGluZyBvdmVycmlkZXMpXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFZmZlY3RpdmVQcmlvcml0eSA9XG4gICAgICAgICAgY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudUl0ZW0ubmFtZV0/LnByaW9yaXR5ID8/IG5vZGVEYXRhLm1ldGFkYXRhLm9yaWdpbmFsUHJpb3JpdHkgPz8gMDtcblxuICAgICAgICAvLyBBbHdheXMgdXBkYXRlIHByaW9yaXR5IHRvIHJlZmxlY3QgY3VycmVudCBwb3NpdGlvbiBpbiB0cmVlXG4gICAgICAgIC8vIFRoaXMgZW5zdXJlcyByZW9yZGVyaW5nIHdvcmtzIGNvcnJlY3RseSBldmVuIGFmdGVyIG11bHRpcGxlIG1vdmVzXG4gICAgICAgIGlmIChuZXdQcmlvcml0eSAhPT0gY3VycmVudEVmZmVjdGl2ZVByaW9yaXR5KSB7XG4gICAgICAgICAgY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudUl0ZW0ubmFtZV0ucHJpb3JpdHkgPSBuZXdQcmlvcml0eTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERldGVybWluZSBjdXJyZW50IGVmZmVjdGl2ZSBwYXJlbnQgKGNvbnNpZGVyaW5nIGV4aXN0aW5nIG92ZXJyaWRlcylcbiAgICAgICAgY29uc3QgY3VycmVudEVmZmVjdGl2ZVBhcmVudCA9XG4gICAgICAgICAgY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudUl0ZW0ubmFtZV0/LnBhcmVudE5hbWUgPz8gbm9kZURhdGEubWV0YWRhdGEub3JpZ2luYWxQYXJlbnROYW1lO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBwYXJlbnQgcmVsYXRpb25zaGlwIGlmIGl0IGNoYW5nZWQgZnJvbSBjdXJyZW50IGVmZmVjdGl2ZSBwYXJlbnRcbiAgICAgICAgaWYgKHBhcmVudE5hbWUgIT09IGN1cnJlbnRFZmZlY3RpdmVQYXJlbnQpIHtcbiAgICAgICAgICBpZiAocGFyZW50TmFtZSkge1xuICAgICAgICAgICAgY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudUl0ZW0ubmFtZV0ucGFyZW50TmFtZSA9IHBhcmVudE5hbWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE1vdmluZyB0byByb290IC0gc2V0IHRvIG51bGwgKG5vdCB1bmRlZmluZWQpIHNvIG1pZGRsZXdhcmUgd2lsbCBwcm9jZXNzIGl0XG4gICAgICAgICAgICAvLyBtb3ZlVG8obnVsbCkgbW92ZXMgdGhlIGl0ZW0gdG8gcm9vdCBsZXZlbFxuICAgICAgICAgICAgY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudUl0ZW0ubmFtZV0ucGFyZW50TmFtZSA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2xlYW4gdXAgZW1wdHkgb3ZlcnJpZGVzXG4gICAgICAgIHRoaXMuY2xlYW51cEVtcHR5T3ZlcnJpZGUoY3VzdG9taXphdGlvbiwgbWVudUl0ZW0ubmFtZSk7XG5cbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgcHJvY2VzcyBjaGlsZHJlblxuICAgICAgICBjb25zdCBub2RlQ2hpbGRyZW4gPSBub2RlWydjaGlsZHJlbiddIGFzIEFYVHJlZVZpZXdOb2RlW10gfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChub2RlQ2hpbGRyZW4gJiYgbm9kZUNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUN1c3RvbWl6YXRpb25Gcm9tVHJlZShub2RlQ2hpbGRyZW4sIGN1c3RvbWl6YXRpb24sIG1lbnVJdGVtLm5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgbWVudSBuYW1lIGJlZm9yZSBvcGVyYXRpb25zXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlTWVudU5hbWUobWVudU5hbWU6IHN0cmluZywgb3BlcmF0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIW1lbnVOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1lbnUgaXRlbSBtdXN0IGhhdmUgYSBuYW1lIHRvIGJlICR7b3BlcmF0aW9ufWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbnN1cmUgb3ZlcnJpZGUgb2JqZWN0IGV4aXN0cyBmb3IgYSBtZW51IGl0ZW1cbiAgICovXG4gIHByaXZhdGUgZW5zdXJlT3ZlcnJpZGVFeGlzdHMoY3VzdG9taXphdGlvbjogQVhQTWVudUN1c3RvbWl6YXRpb24sIG1lbnVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW21lbnVOYW1lXSkge1xuICAgICAgY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudU5hbWVdID0ge307XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsZWFuIHVwIGVtcHR5IG92ZXJyaWRlIG9iamVjdHNcbiAgICovXG4gIHByaXZhdGUgY2xlYW51cEVtcHR5T3ZlcnJpZGUoY3VzdG9taXphdGlvbjogQVhQTWVudUN1c3RvbWl6YXRpb24sIG1lbnVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoT2JqZWN0LmtleXMoY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudU5hbWVdIHx8IHt9KS5sZW5ndGggPT09IDApIHtcbiAgICAgIGRlbGV0ZSBjdXN0b21pemF0aW9uLm92ZXJyaWRlc1ttZW51TmFtZV07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZsYXR0ZW4gbWVudSBpdGVtcyByZWN1cnNpdmVseSBpbnRvIGEgbWFwXG4gICAqL1xuICBwcml2YXRlIGZsYXR0ZW5NZW51SXRlbXMoaXRlbXM6IEFYUE1lbnVJdGVtW10pOiBNYXA8c3RyaW5nLCBBWFBNZW51SXRlbT4ge1xuICAgIGNvbnN0IGl0ZW1NYXAgPSBuZXcgTWFwPHN0cmluZywgQVhQTWVudUl0ZW0+KCk7XG5cbiAgICBjb25zdCBmbGF0dGVuID0gKGl0ZW1MaXN0OiBBWFBNZW51SXRlbVtdKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbUxpc3QpIHtcbiAgICAgICAgaWYgKGl0ZW0ubmFtZSkge1xuICAgICAgICAgIC8vIENsb25lIGl0ZW0gd2l0aG91dCBjaGlsZHJlbiB0byByZWJ1aWxkIHN0cnVjdHVyZVxuICAgICAgICAgIGl0ZW1NYXAuc2V0KGl0ZW0ubmFtZSwgeyAuLi5pdGVtLCBjaGlsZHJlbjogdW5kZWZpbmVkIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgICAgZmxhdHRlbihpdGVtLmNoaWxkcmVuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBmbGF0dGVuKGl0ZW1zKTtcbiAgICByZXR1cm4gaXRlbU1hcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSB1bmlxdWUgSUQgZm9yIHRyZWUgbm9kZXNcbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVOb2RlSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYG5vZGUtJHtEYXRlLm5vdygpfS0ke01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMDAwKX1gO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG5cbi8vI2VuZHJlZ2lvblxuIl19","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTreeViewComponent } from '@acorex/components/tree-view';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { AXPLayoutBuilderService } from '@acorex/platform/layout/builder';\nimport { AXPStateMessageComponent, AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, signal, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subject, takeUntil } from 'rxjs';\nimport { AXPMenuManagementService } from '../../menu-management.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/button\";\nimport * as i2 from \"@acorex/components/decorators\";\nimport * as i3 from \"@acorex/components/dropdown\";\nimport * as i4 from \"@acorex/components/badge\";\nimport * as i5 from \"@angular/common\";\nimport * as i6 from \"@acorex/core/translation\";\n//#region ---- Menu List Component ----\nexport class AXMMenuListComponent extends AXPPageLayoutBaseComponent {\n constructor() {\n super(...arguments);\n //#region ---- Dependencies ----\n this.menuManagementService = inject(AXPMenuManagementService);\n this.layoutBuilder = inject(AXPLayoutBuilderService);\n this.dialogService = inject(AXDialogService);\n this.toastService = inject(AXToastService);\n this.translationService = inject(AXTranslationService);\n this.route = inject(ActivatedRoute);\n //#endregion\n //#region ---- Component State ----\n this.tree = viewChild(AXTreeViewComponent, ...(ngDevMode ? [{ debugName: \"tree\" }] : []));\n this.treeNodes = signal([], ...(ngDevMode ? [{ debugName: \"treeNodes\" }] : []));\n this.isLoading = signal(false, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n this.error = signal('', ...(ngDevMode ? [{ debugName: \"error\" }] : []));\n this.currentScope = signal(AXPPlatformScope.User, ...(ngDevMode ? [{ debugName: \"currentScope\" }] : []));\n this.isSyncing = false; // Prevent concurrent sync operations\n this.destroy$ = new Subject(); // For subscription cleanup\n }\n //#endregion\n //#region ---- Lifecycle ----\n async ngOnInit() {\n await super.ngOnInit();\n // Get scope from route (with memory leak prevention)\n this.route.params.pipe(takeUntil(this.destroy$)).subscribe(async (params) => {\n const scope = params['scope'];\n if (scope) {\n this.currentScope.set(scope);\n await this.loadMenuItems();\n this.recompute(); // Update page header after loading\n }\n });\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n //#endregion\n //#region ---- Event Handlers ----\n /**\n * Handle before drop validation\n */\n async handleBeforeDrop(e) {\n const targetParent = e.currentParent?.['data'] || null;\n // Prevent dropping into items with paths (leaf nodes)\n if (targetParent?.menuItem?.path) {\n e.canceled = true;\n const message = await this.translationService.translateAsync('@platform-management:menu-management.messages.error.move');\n this.toastService.warning(message);\n return;\n }\n // Note: Circular reference validation is handled by the tree component itself\n // Additional validation can be added here if needed based on business rules\n }\n /**\n * Handle after drop event to sync changes\n */\n async handleAfterDrop() {\n await this.syncTreeChanges();\n }\n //#endregion\n //#region ---- Data Loading ----\n /**\n * Load menu tree for current scope\n */\n async loadMenuItems() {\n try {\n this.isLoading.set(true);\n this.error.set('');\n const treeNodes = await this.menuManagementService.getMenuTree(this.currentScope());\n this.treeNodes.set(treeNodes);\n this.recompute();\n }\n catch (error) {\n this.error.set(error instanceof Error ? error.message : 'Failed to load menu items');\n const message = await this.translationService.translateAsync('@platform-management:menu-management.messages.error.load');\n this.toastService.danger(message);\n }\n finally {\n this.isLoading.set(false);\n }\n }\n /**\n * Sync tree changes to backend\n */\n async syncTreeChanges() {\n // Prevent concurrent sync operations\n if (this.isSyncing) {\n return;\n }\n try {\n this.isSyncing = true;\n const nodes = this.treeNodes();\n const scope = this.currentScope();\n if (nodes.length === 0) {\n return;\n }\n await this.menuManagementService.syncTreeChanges(scope, nodes);\n const message = await this.translationService.translateAsync('@platform-management:menu-management.messages.success.reorder');\n this.toastService.success(message);\n }\n catch (error) {\n console.error('Failed to sync tree changes:', error);\n const message = await this.translationService.translateAsync('@platform-management:menu-management.messages.error.sync');\n this.toastService.danger(message);\n }\n finally {\n this.isSyncing = false;\n }\n }\n //#endregion\n //#region ---- Page Layout Interface ----\n /**\n * Get page title\n */\n async getPageTitle() {\n const scopeName = this.currentScope();\n const scopeKey = scopeName === AXPPlatformScope.User ? 'user' : 'tenant';\n return this.translationService.translateAsync(`@platform-management:menu-management.menus.${scopeKey}.title`);\n }\n /**\n * Get page description\n */\n async getPageDescription() {\n return this.translationService.translateAsync('@platform-management:menu-management.components.menu-list.description');\n }\n /**\n * Get primary menu items (actions)\n */\n async getPrimaryMenuItems() {\n return [\n {\n title: await this.translationService.translateAsync('@platform-management:menu-management.actions.add-root.title'),\n icon: 'fa-light fa-plus',\n color: 'primary',\n command: { name: 'add-root' },\n },\n ];\n }\n /**\n * Get secondary menu items\n */\n async getSecondaryMenuItems() {\n return [\n {\n title: await this.translationService.translateAsync('@platform-management:menu-management.actions.collapse.title'),\n icon: 'fa-light fa-minus-square',\n command: { name: 'collapse' },\n },\n {\n title: await this.translationService.translateAsync('@platform-management:menu-management.actions.expand.title'),\n icon: 'fa-light fa-plus-square',\n command: { name: 'expand' },\n break: true,\n },\n {\n title: await this.translationService.translateAsync('@platform-management:menu-management.actions.reset.title'),\n icon: 'fa-light fa-rotate-left',\n color: 'danger',\n command: { name: 'reset' },\n },\n ];\n }\n /**\n * Execute commands from page actions\n */\n async execute(command) {\n switch (command.name) {\n case 'add-root':\n await this.addRootMenuItem();\n break;\n case 'collapse':\n this.tree()?.collapseAll();\n break;\n case 'expand':\n this.tree()?.expandAll();\n break;\n case 'reset':\n await this.resetCustomizations();\n break;\n }\n }\n //#endregion\n //#region ---- Action Handlers ----\n /**\n * Handle menu item action\n */\n async onAction(action, nodeData) {\n switch (action) {\n case 'show':\n await this.showMenuItem(nodeData);\n break;\n case 'hide':\n await this.hideMenuItem(nodeData);\n break;\n case 'edit':\n await this.editMenuItem(nodeData);\n break;\n case 'delete':\n await this.deleteMenuItem(nodeData);\n break;\n case 'add-child':\n await this.addChildMenuItem(nodeData);\n break;\n }\n }\n /**\n * Add new root menu item\n */\n async addRootMenuItem() {\n await this.showMenuItemDialog(null, null);\n }\n /**\n * Add new child menu item\n */\n async addChildMenuItem(parentNodeData) {\n await this.showMenuItemDialog(null, parentNodeData.menuItem.name);\n }\n /**\n * Reset customizations\n */\n async resetCustomizations() {\n const title = await this.translationService.translateAsync('@platform-management:menu-management.actions.reset.confirm.title');\n const message = await this.translationService.translateAsync('@platform-management:menu-management.actions.reset.confirm.message');\n const confirmed = await this.dialogService.confirm(title, message);\n if (!confirmed)\n return;\n try {\n // Reset customizations for current scope\n await this.menuManagementService.resetCustomizations(this.currentScope());\n const message = await this.translationService.translateAsync('@platform-management:menu-management.messages.success.reset');\n this.toastService.success(message);\n }\n catch (error) {\n console.error('Failed to reset customizations:', error);\n const message = await this.translationService.translateAsync('@platform-management:menu-management.messages.error.reset');\n this.toastService.danger(message);\n }\n finally {\n // Reload anyway to show current state\n await this.loadMenuItems();\n }\n }\n //#endregion\n //#region ---- Menu Item Actions ----\n /**\n * Show menu item\n */\n async showMenuItem(nodeData) {\n await this.executeMenuAction(() => this.menuManagementService.showMenuItem(this.currentScope(), nodeData.menuItem.name), '@platform-management:menu-management.messages.success.show', '@platform-management:menu-management.messages.error.show');\n }\n /**\n * Hide menu item\n */\n async hideMenuItem(nodeData) {\n await this.executeMenuAction(() => this.menuManagementService.hideMenuItem(this.currentScope(), nodeData.menuItem.name), '@platform-management:menu-management.messages.success.hide', '@platform-management:menu-management.messages.error.hide');\n }\n /**\n * Edit menu item\n */\n async editMenuItem(nodeData) {\n await this.showMenuItemDialog(nodeData);\n }\n /**\n * Delete custom menu item\n */\n async deleteMenuItem(nodeData) {\n const title = await this.translationService.translateAsync('@general:actions.delete.title');\n const message = await this.translationService.translateAsync('@platform-management:menu-management.actions.delete.confirm.message');\n const confirmed = await this.dialogService.confirm(title, message);\n if (!confirmed)\n return;\n try {\n const item = nodeData.menuItem;\n if (!item.name)\n return;\n await this.menuManagementService.deleteCustomMenuItem(this.currentScope(), item.name);\n const message = await this.translationService.translateAsync('@platform-management:menu-management.messages.success.delete');\n this.toastService.success(message);\n await this.loadMenuItems();\n }\n catch (error) {\n const message = await this.translationService.translateAsync('@platform-management:menu-management.messages.error.delete');\n this.toastService.danger(message);\n }\n }\n //#endregion\n //#region ---- Dialog Helpers ----\n /**\n * Show menu item dialog (add/edit)\n */\n async showMenuItemDialog(nodeData, parentName = null) {\n const item = nodeData?.menuItem;\n const isEdit = !!item;\n const title = isEdit\n ? '@platform-management:menu-management.components.edit-dialog.title'\n : '@platform-management:menu-management.components.add-dialog.title';\n const context = {\n name: item?.name || '',\n text: item?.text || '',\n type: item?.type || 'menu',\n icon: item?.icon || '',\n path: item?.path || '',\n priority: item?.priority || 0,\n description: item?.description || '',\n };\n const dialogRef = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(title)\n .setContext(context)\n .content((flex) => {\n flex\n .setDirection('column')\n .formField('@platform-management:menu-management.fields.name', (field) => {\n field.path('name');\n field.textBox({\n placeholder: '@platform-management:menu-management.fields.name',\n validations: [{ rule: 'required' }],\n disabled: isEdit && nodeData?.metadata?.isBuiltIn,\n });\n })\n .formField('@platform-management:menu-management.fields.text', (field) => {\n field.path('text');\n field.textBox({\n placeholder: '@platform-management:menu-management.fields.text',\n validations: [{ rule: 'required' }],\n });\n })\n .formField('@platform-management:menu-management.fields.icon', (field) => {\n field.path('icon');\n field.customWidget('icon-chooser', {});\n })\n .formField('@platform-management:menu-management.fields.path', (field) => {\n field.path('path');\n field.textBox({\n placeholder: '@platform-management:menu-management.fields.path',\n disabled: isEdit && nodeData?.metadata?.isBuiltIn,\n });\n })\n .formField('@platform-management:menu-management.fields.priority', (field) => {\n field.path('priority');\n field.numberBox({\n placeholder: '@platform-management:menu-management.fields.priority',\n step: 10,\n });\n })\n .formField('@platform-management:menu-management.fields.description', (field) => {\n field.path('description');\n field.largeTextBox({\n placeholder: '@platform-management:menu-management.fields.description',\n rows: 3,\n });\n });\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title').submit('@general:actions.save.title');\n });\n })\n .show();\n const action = dialogRef.action();\n if (action === 'cancel') {\n dialogRef.close();\n return;\n }\n const formData = dialogRef.context();\n try {\n if (isEdit && item?.name) {\n // Update existing item\n if (nodeData?.metadata?.isCustom) {\n await this.menuManagementService.updateCustomMenuItem(this.currentScope(), item.name, formData);\n }\n else {\n await this.menuManagementService.updateMenuProperties(this.currentScope(), item.name, formData);\n }\n }\n else {\n // Add new custom item\n const newItem = {\n name: formData.name,\n text: formData.text,\n icon: formData.icon,\n path: formData.path,\n priority: formData.priority,\n description: formData.description,\n };\n // If parent is specified, add as child\n if (parentName) {\n // Add custom item as child of parent\n await this.menuManagementService.addCustomMenuItem(this.currentScope(), newItem, parentName);\n }\n else {\n // Add as root level item\n await this.menuManagementService.addCustomMenuItem(this.currentScope(), newItem, null);\n }\n }\n const message = await this.translationService.translateAsync('@platform-management:menu-management.messages.success.save');\n this.toastService.success(message);\n await this.loadMenuItems();\n dialogRef.close();\n }\n catch (error) {\n const message = await this.translationService.translateAsync('@platform-management:menu-management.messages.error.save');\n this.toastService.danger(message);\n }\n }\n /**\n * Execute a menu action with common error handling\n */\n async executeMenuAction(action, successMessageKey, errorMessageKey) {\n try {\n await action();\n const message = await this.translationService.translateAsync(successMessageKey);\n this.toastService.success(message);\n await this.loadMenuItems();\n }\n catch (error) {\n console.error('Menu action failed:', error);\n const message = await this.translationService.translateAsync(errorMessageKey);\n this.toastService.danger(message);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMMenuListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXMMenuListComponent, isStandalone: true, selector: \"axm-menu-list\", host: { classAttribute: \"axm-menu-list-page\" }, providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMMenuListComponent,\n },\n ], viewQueries: [{ propertyName: \"tree\", first: true, predicate: AXTreeViewComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<axp-page-layout>\\n <axp-page-content>\\n @if (isLoading()) {\\n <!-- Loading State -->\\n <axp-state-message\\n mode=\\\"loading\\\"\\n icon=\\\"fa-light fa-spinner-third fa-spin\\\"\\n [title]=\\\"\\n ('@platform-management:menu-management.components.menu-list.empty-states.loading.title' | translate | async)!\\n \\\"\\n [description]=\\\"\\n ('@platform-management:menu-management.components.menu-list.empty-states.loading.description'\\n | translate\\n | async)!\\n \\\"\\n />\\n } @else if (error()) {\\n <!-- Error State -->\\n <axp-state-message\\n mode=\\\"error\\\"\\n icon=\\\"fa-light fa-circle-exclamation\\\"\\n [title]=\\\"\\n ('@platform-management:menu-management.components.menu-list.empty-states.error.title' | translate | async)!\\n \\\"\\n [description]=\\\"\\n ('@platform-management:menu-management.components.menu-list.empty-states.error.description'\\n | translate\\n | async)!\\n \\\"\\n >\\n <ax-button\\n slot=\\\"actions\\\"\\n [text]=\\\"'@general:actions.retry.title' | translate | async\\\"\\n [look]=\\\"'outline'\\\"\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"loadMenuItems()\\\"\\n >\\n <i class=\\\"fa-light fa-rotate-left\\\"></i>\\n </ax-button>\\n </axp-state-message>\\n } @else if (treeNodes().length === 0) {\\n <!-- Empty State -->\\n <axp-state-message\\n mode=\\\"empty\\\"\\n icon=\\\"fa-light fa-bars\\\"\\n [title]=\\\"\\n ('@platform-management:menu-management.components.menu-list.empty-states.no-data.title' | translate | async)!\\n \\\"\\n [description]=\\\"\\n ('@platform-management:menu-management.components.menu-list.empty-states.no-data.description'\\n | translate\\n | async)!\\n \\\"\\n >\\n <ax-button\\n slot=\\\"actions\\\"\\n [text]=\\\"'@platform-management:menu-management.actions.add-root.title' | translate | async\\\"\\n [look]=\\\"'solid'\\\"\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"addRootMenuItem()\\\"\\n >\\n <i class=\\\"fa-light fa-plus\\\"></i>\\n </ax-button>\\n </axp-state-message>\\n } @else {\\n <!-- Menu Tree Content -->\\n <div class=\\\"axm-menu-list__container\\\">\\n <!-- Menu Tree -->\\n <div class=\\\"axm-menu-list__tree\\\">\\n <ax-tree-view\\n [(datasource)]=\\\"treeNodes\\\"\\n [look]=\\\"'default'\\\"\\n [nodeTemplate]=\\\"itemTemplate\\\"\\n [selectMode]=\\\"'none'\\\"\\n [showIcons]=\\\"false\\\"\\n [showChildrenBadge]=\\\"false\\\"\\n [dragArea]=\\\"'handler'\\\"\\n (onBeforeDrop)=\\\"handleBeforeDrop($event)\\\"\\n (onItemsChange)=\\\"handleAfterDrop()\\\"\\n ></ax-tree-view>\\n </div>\\n </div>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\\n<!-- Custom Item Template -->\\n<ng-template #itemTemplate let-node=\\\"node\\\" let-level=\\\"level\\\">\\n @let nodeData = node['data'];\\n @let item = nodeData.menuItem;\\n @let metadata = nodeData.metadata;\\n <div\\n class=\\\"axm-menu-tree-item__wrapper\\\"\\n [class.axm-menu-tree-item__wrapper--hidden]=\\\"metadata.isHidden\\\"\\n [class.axm-menu-tree-item__wrapper--custom]=\\\"metadata.isCustom\\\"\\n [class.axm-menu-tree-item__wrapper--group]=\\\"item.type === 'group'\\\"\\n >\\n <!-- Icon (hidden for groups) -->\\n @if (item.icon && item.type !== 'group') {\\n <i class=\\\"axm-menu-tree-item__icon\\\" [class]=\\\"item.icon\\\"></i>\\n }\\n\\n <!-- Text or Info -->\\n @if (item.type === 'group') {\\n <!-- Group Heading -->\\n <span class=\\\"axm-menu-tree-item__group\\\">\\n <i class=\\\"fa-light fa-layer-group\\\"></i>\\n {{ item.text | translate | async }}\\n </span>\\n } @else if (item.type === 'break') {\\n <!-- Divider -->\\n <span class=\\\"axm-menu-tree-item__divider\\\">\\n <i class=\\\"fa-light fa-minus\\\"></i>\\n {{ '@platform-management:menu-management.states.divider' | translate | async }}\\n </span>\\n } @else if (item.text) {\\n <!-- Regular Menu Item -->\\n <span class=\\\"axm-menu-tree-item__text\\\">\\n {{ item.text | translate | async }}\\n </span>\\n } @else if (item.path) {\\n <!-- Path-only Item -->\\n <span class=\\\"axm-menu-tree-item__path\\\">\\n <i class=\\\"fa-light fa-link\\\"></i>\\n {{ item.path }}\\n </span>\\n }\\n\\n <!-- Menu Name/Key -->\\n @if (item.name) {\\n <code class=\\\"axm-menu-tree-item__name\\\">{{ item.name }}</code>\\n }\\n\\n <!-- Status Badges -->\\n @if (metadata.isHidden) {\\n <ax-badge\\n [text]=\\\"('@platform-management:menu-management.states.hidden' | translate | async)!\\\"\\n color=\\\"danger\\\"\\n ></ax-badge>\\n } @else if (metadata.isCustom) {\\n <ax-badge\\n [text]=\\\"('@platform-management:menu-management.states.custom' | translate | async)!\\\"\\n color=\\\"success\\\"\\n ></ax-badge>\\n } @else if (metadata.isBuiltIn) {\\n <ax-badge\\n [text]=\\\"('@platform-management:menu-management.states.built-in' | translate | async)!\\\"\\n color=\\\"primary\\\"\\n ></ax-badge>\\n }\\n\\n <!-- Actions Dropdown -->\\n <ax-button class=\\\"axm-menu-tree-item__actions\\\" [look]=\\\"'blank'\\\" [size]=\\\"'sm'\\\" [iconOnly]=\\\"true\\\">\\n <ax-prefix>\\n <i class=\\\"fa-light fa-ellipsis-vertical\\\"></i>\\n </ax-prefix>\\n\\n <ax-dropdown-panel #panel>\\n <ax-button-item-list>\\n <!-- Edit (only for items with names) -->\\n @if (item.name) {\\n <ax-button-item\\n [text]=\\\"('@general:actions.edit.title' | translate | async)!\\\"\\n (onClick)=\\\"onAction('edit', nodeData); panel.close()\\\"\\n >\\n <ax-prefix>\\n <i class=\\\"fa-light fa-edit\\\"></i>\\n </ax-prefix>\\n </ax-button-item>\\n }\\n\\n <!-- Show/Hide (only for items with names) -->\\n @if (item.name && metadata.isBuiltIn) {\\n @if (metadata.isHidden) {\\n <ax-button-item\\n [text]=\\\"('@platform-management:menu-management.actions.show.title' | translate | async)!\\\"\\n (onClick)=\\\"onAction('show', nodeData); panel.close()\\\"\\n >\\n <ax-prefix>\\n <i class=\\\"fa-light fa-eye\\\"></i>\\n </ax-prefix>\\n </ax-button-item>\\n } @else {\\n <ax-button-item\\n [text]=\\\"('@platform-management:menu-management.actions.hide.title' | translate | async)!\\\"\\n (onClick)=\\\"onAction('hide', nodeData); panel.close()\\\"\\n >\\n <ax-prefix>\\n <i class=\\\"fa-light fa-eye-slash\\\"></i>\\n </ax-prefix>\\n </ax-button-item>\\n }\\n }\\n\\n @if (!item.path && (item.type === 'menu' || !item.type)) {\\n <!-- Add Child -->\\n <ax-button-item\\n [text]=\\\"('@platform-management:menu-management.actions.add-child.title' | translate | async)!\\\"\\n (onClick)=\\\"onAction('add-child', nodeData); panel.close()\\\"\\n >\\n <ax-prefix>\\n <i class=\\\"fa-light fa-plus\\\"></i>\\n </ax-prefix>\\n </ax-button-item>\\n }\\n\\n <!-- Delete (only for custom items with names) -->\\n @if (item.name && metadata.isCustom) {\\n <ax-divider></ax-divider>\\n <ax-button-item\\n [color]=\\\"'danger'\\\"\\n [text]=\\\"('@general:actions.delete.title' | translate | async)!\\\"\\n (onClick)=\\\"onAction('delete', nodeData); panel.close()\\\"\\n >\\n <ax-prefix>\\n <i class=\\\"fa-light fa-trash\\\"></i>\\n </ax-prefix>\\n </ax-button-item>\\n }\\n\\n <!-- Info message for items without names -->\\n @if (!item.name) {\\n <ax-divider></ax-divider>\\n <div class=\\\"ax-p-2 ax-text-xs ax-text-neutral-500 ax-italic\\\">\\n {{ '@platform-management:menu-management.messages.info.no-name' | translate | async }}\\n </div>\\n }\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-button>\\n </div>\\n</ng-template>\\n\", styles: [\".axm-menu-list-page .axm-menu-list__container{display:flex;flex-direction:column;gap:1rem;padding:1.5rem}.axm-menu-list-page .axm-menu-list__tree{display:flex;flex-direction:column;gap:.5rem}.axm-menu-list-page .axm-menu-tree-item__wrapper{display:flex;flex:1 1 0%;align-items:center;gap:1rem;border-radius:.375rem;padding:.5rem;border-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.axm-menu-list-page .axm-menu-tree-item__wrapper:hover{background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.axm-menu-list-page .axm-menu-tree-item__wrapper--hidden{opacity:.5}.axm-menu-list-page .axm-menu-tree-item__wrapper--custom{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1))}.axm-menu-list-page .axm-menu-tree-item__wrapper--group{padding-top:.75rem;padding-bottom:.75rem}.axm-menu-list-page .axm-menu-tree-item__icon{display:flex;align-items:center;justify-content:center;height:1.5rem;width:1.5rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1))}.axm-menu-list-page .axm-menu-tree-item__text{flex:1 1 0%;font-size:.875rem;line-height:1.25rem;font-weight:500}.axm-menu-list-page .axm-menu-tree-item__group,.axm-menu-list-page .axm-menu-tree-item__divider,.axm-menu-list-page .axm-menu-tree-item__path{display:flex;flex:1 1 0%;align-items:center;gap:.5rem;font-size:.75rem;line-height:1rem;font-style:italic;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-menu-list-page .axm-menu-tree-item__divider i,.axm-menu-list-page .axm-menu-tree-item__path i{--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.axm-menu-list-page .axm-menu-tree-item__name{display:flex;align-items:center;border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1));font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-weight:400;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));white-space:nowrap;-webkit-user-select:all;user-select:all}.axm-menu-list-page .axm-menu-tree-item__actions{margin-left:.5rem}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i1.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: i1.AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"component\", type: i1.AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\", \"closeParentOnClick\", \"lockOnLoading\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i2.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"component\", type: i3.AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"component\", type: AXTreeViewComponent, selector: \"ax-tree-view\", inputs: [\"datasource\", \"selectMode\", \"showCheckbox\", \"selectionBehavior\", \"dragArea\", \"dragBehavior\", \"showIcons\", \"showChildrenBadge\", \"expandedIcon\", \"collapsedIcon\", \"indentSize\", \"look\", \"nodeTemplate\", \"idField\", \"titleField\", \"tooltipField\", \"iconField\", \"expandedField\", \"selectedField\", \"indeterminateField\", \"disabledField\", \"hiddenField\", \"childrenField\", \"childrenCountField\", \"dataField\"], outputs: [\"datasourceChange\", \"onBeforeDrop\", \"onNodeToggle\", \"onNodeSelect\", \"onSelectionChange\", \"onOrderChange\", \"onMoveChange\", \"onItemsChange\"] }, { kind: \"component\", type: AXPPageLayoutComponent, selector: \"axp-page-layout\" }, { kind: \"component\", type: AXPThemeLayoutBlockComponent, selector: \" axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, \" }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"component\", type: i4.AXBadgeComponent, selector: \"ax-badge\", inputs: [\"color\", \"look\", \"text\"] }, { kind: \"pipe\", type: i5.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i6.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMMenuListComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-menu-list', imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXTranslationModule,\n AXTreeViewComponent,\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXPStateMessageComponent,\n AXBadgeModule,\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMMenuListComponent,\n },\n ], host: { class: 'axm-menu-list-page' }, template: \"<axp-page-layout>\\n <axp-page-content>\\n @if (isLoading()) {\\n <!-- Loading State -->\\n <axp-state-message\\n mode=\\\"loading\\\"\\n icon=\\\"fa-light fa-spinner-third fa-spin\\\"\\n [title]=\\\"\\n ('@platform-management:menu-management.components.menu-list.empty-states.loading.title' | translate | async)!\\n \\\"\\n [description]=\\\"\\n ('@platform-management:menu-management.components.menu-list.empty-states.loading.description'\\n | translate\\n | async)!\\n \\\"\\n />\\n } @else if (error()) {\\n <!-- Error State -->\\n <axp-state-message\\n mode=\\\"error\\\"\\n icon=\\\"fa-light fa-circle-exclamation\\\"\\n [title]=\\\"\\n ('@platform-management:menu-management.components.menu-list.empty-states.error.title' | translate | async)!\\n \\\"\\n [description]=\\\"\\n ('@platform-management:menu-management.components.menu-list.empty-states.error.description'\\n | translate\\n | async)!\\n \\\"\\n >\\n <ax-button\\n slot=\\\"actions\\\"\\n [text]=\\\"'@general:actions.retry.title' | translate | async\\\"\\n [look]=\\\"'outline'\\\"\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"loadMenuItems()\\\"\\n >\\n <i class=\\\"fa-light fa-rotate-left\\\"></i>\\n </ax-button>\\n </axp-state-message>\\n } @else if (treeNodes().length === 0) {\\n <!-- Empty State -->\\n <axp-state-message\\n mode=\\\"empty\\\"\\n icon=\\\"fa-light fa-bars\\\"\\n [title]=\\\"\\n ('@platform-management:menu-management.components.menu-list.empty-states.no-data.title' | translate | async)!\\n \\\"\\n [description]=\\\"\\n ('@platform-management:menu-management.components.menu-list.empty-states.no-data.description'\\n | translate\\n | async)!\\n \\\"\\n >\\n <ax-button\\n slot=\\\"actions\\\"\\n [text]=\\\"'@platform-management:menu-management.actions.add-root.title' | translate | async\\\"\\n [look]=\\\"'solid'\\\"\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"addRootMenuItem()\\\"\\n >\\n <i class=\\\"fa-light fa-plus\\\"></i>\\n </ax-button>\\n </axp-state-message>\\n } @else {\\n <!-- Menu Tree Content -->\\n <div class=\\\"axm-menu-list__container\\\">\\n <!-- Menu Tree -->\\n <div class=\\\"axm-menu-list__tree\\\">\\n <ax-tree-view\\n [(datasource)]=\\\"treeNodes\\\"\\n [look]=\\\"'default'\\\"\\n [nodeTemplate]=\\\"itemTemplate\\\"\\n [selectMode]=\\\"'none'\\\"\\n [showIcons]=\\\"false\\\"\\n [showChildrenBadge]=\\\"false\\\"\\n [dragArea]=\\\"'handler'\\\"\\n (onBeforeDrop)=\\\"handleBeforeDrop($event)\\\"\\n (onItemsChange)=\\\"handleAfterDrop()\\\"\\n ></ax-tree-view>\\n </div>\\n </div>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\\n<!-- Custom Item Template -->\\n<ng-template #itemTemplate let-node=\\\"node\\\" let-level=\\\"level\\\">\\n @let nodeData = node['data'];\\n @let item = nodeData.menuItem;\\n @let metadata = nodeData.metadata;\\n <div\\n class=\\\"axm-menu-tree-item__wrapper\\\"\\n [class.axm-menu-tree-item__wrapper--hidden]=\\\"metadata.isHidden\\\"\\n [class.axm-menu-tree-item__wrapper--custom]=\\\"metadata.isCustom\\\"\\n [class.axm-menu-tree-item__wrapper--group]=\\\"item.type === 'group'\\\"\\n >\\n <!-- Icon (hidden for groups) -->\\n @if (item.icon && item.type !== 'group') {\\n <i class=\\\"axm-menu-tree-item__icon\\\" [class]=\\\"item.icon\\\"></i>\\n }\\n\\n <!-- Text or Info -->\\n @if (item.type === 'group') {\\n <!-- Group Heading -->\\n <span class=\\\"axm-menu-tree-item__group\\\">\\n <i class=\\\"fa-light fa-layer-group\\\"></i>\\n {{ item.text | translate | async }}\\n </span>\\n } @else if (item.type === 'break') {\\n <!-- Divider -->\\n <span class=\\\"axm-menu-tree-item__divider\\\">\\n <i class=\\\"fa-light fa-minus\\\"></i>\\n {{ '@platform-management:menu-management.states.divider' | translate | async }}\\n </span>\\n } @else if (item.text) {\\n <!-- Regular Menu Item -->\\n <span class=\\\"axm-menu-tree-item__text\\\">\\n {{ item.text | translate | async }}\\n </span>\\n } @else if (item.path) {\\n <!-- Path-only Item -->\\n <span class=\\\"axm-menu-tree-item__path\\\">\\n <i class=\\\"fa-light fa-link\\\"></i>\\n {{ item.path }}\\n </span>\\n }\\n\\n <!-- Menu Name/Key -->\\n @if (item.name) {\\n <code class=\\\"axm-menu-tree-item__name\\\">{{ item.name }}</code>\\n }\\n\\n <!-- Status Badges -->\\n @if (metadata.isHidden) {\\n <ax-badge\\n [text]=\\\"('@platform-management:menu-management.states.hidden' | translate | async)!\\\"\\n color=\\\"danger\\\"\\n ></ax-badge>\\n } @else if (metadata.isCustom) {\\n <ax-badge\\n [text]=\\\"('@platform-management:menu-management.states.custom' | translate | async)!\\\"\\n color=\\\"success\\\"\\n ></ax-badge>\\n } @else if (metadata.isBuiltIn) {\\n <ax-badge\\n [text]=\\\"('@platform-management:menu-management.states.built-in' | translate | async)!\\\"\\n color=\\\"primary\\\"\\n ></ax-badge>\\n }\\n\\n <!-- Actions Dropdown -->\\n <ax-button class=\\\"axm-menu-tree-item__actions\\\" [look]=\\\"'blank'\\\" [size]=\\\"'sm'\\\" [iconOnly]=\\\"true\\\">\\n <ax-prefix>\\n <i class=\\\"fa-light fa-ellipsis-vertical\\\"></i>\\n </ax-prefix>\\n\\n <ax-dropdown-panel #panel>\\n <ax-button-item-list>\\n <!-- Edit (only for items with names) -->\\n @if (item.name) {\\n <ax-button-item\\n [text]=\\\"('@general:actions.edit.title' | translate | async)!\\\"\\n (onClick)=\\\"onAction('edit', nodeData); panel.close()\\\"\\n >\\n <ax-prefix>\\n <i class=\\\"fa-light fa-edit\\\"></i>\\n </ax-prefix>\\n </ax-button-item>\\n }\\n\\n <!-- Show/Hide (only for items with names) -->\\n @if (item.name && metadata.isBuiltIn) {\\n @if (metadata.isHidden) {\\n <ax-button-item\\n [text]=\\\"('@platform-management:menu-management.actions.show.title' | translate | async)!\\\"\\n (onClick)=\\\"onAction('show', nodeData); panel.close()\\\"\\n >\\n <ax-prefix>\\n <i class=\\\"fa-light fa-eye\\\"></i>\\n </ax-prefix>\\n </ax-button-item>\\n } @else {\\n <ax-button-item\\n [text]=\\\"('@platform-management:menu-management.actions.hide.title' | translate | async)!\\\"\\n (onClick)=\\\"onAction('hide', nodeData); panel.close()\\\"\\n >\\n <ax-prefix>\\n <i class=\\\"fa-light fa-eye-slash\\\"></i>\\n </ax-prefix>\\n </ax-button-item>\\n }\\n }\\n\\n @if (!item.path && (item.type === 'menu' || !item.type)) {\\n <!-- Add Child -->\\n <ax-button-item\\n [text]=\\\"('@platform-management:menu-management.actions.add-child.title' | translate | async)!\\\"\\n (onClick)=\\\"onAction('add-child', nodeData); panel.close()\\\"\\n >\\n <ax-prefix>\\n <i class=\\\"fa-light fa-plus\\\"></i>\\n </ax-prefix>\\n </ax-button-item>\\n }\\n\\n <!-- Delete (only for custom items with names) -->\\n @if (item.name && metadata.isCustom) {\\n <ax-divider></ax-divider>\\n <ax-button-item\\n [color]=\\\"'danger'\\\"\\n [text]=\\\"('@general:actions.delete.title' | translate | async)!\\\"\\n (onClick)=\\\"onAction('delete', nodeData); panel.close()\\\"\\n >\\n <ax-prefix>\\n <i class=\\\"fa-light fa-trash\\\"></i>\\n </ax-prefix>\\n </ax-button-item>\\n }\\n\\n <!-- Info message for items without names -->\\n @if (!item.name) {\\n <ax-divider></ax-divider>\\n <div class=\\\"ax-p-2 ax-text-xs ax-text-neutral-500 ax-italic\\\">\\n {{ '@platform-management:menu-management.messages.info.no-name' | translate | async }}\\n </div>\\n }\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-button>\\n </div>\\n</ng-template>\\n\", styles: [\".axm-menu-list-page .axm-menu-list__container{display:flex;flex-direction:column;gap:1rem;padding:1.5rem}.axm-menu-list-page .axm-menu-list__tree{display:flex;flex-direction:column;gap:.5rem}.axm-menu-list-page .axm-menu-tree-item__wrapper{display:flex;flex:1 1 0%;align-items:center;gap:1rem;border-radius:.375rem;padding:.5rem;border-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.axm-menu-list-page .axm-menu-tree-item__wrapper:hover{background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.axm-menu-list-page .axm-menu-tree-item__wrapper--hidden{opacity:.5}.axm-menu-list-page .axm-menu-tree-item__wrapper--custom{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1))}.axm-menu-list-page .axm-menu-tree-item__wrapper--group{padding-top:.75rem;padding-bottom:.75rem}.axm-menu-list-page .axm-menu-tree-item__icon{display:flex;align-items:center;justify-content:center;height:1.5rem;width:1.5rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1))}.axm-menu-list-page .axm-menu-tree-item__text{flex:1 1 0%;font-size:.875rem;line-height:1.25rem;font-weight:500}.axm-menu-list-page .axm-menu-tree-item__group,.axm-menu-list-page .axm-menu-tree-item__divider,.axm-menu-list-page .axm-menu-tree-item__path{display:flex;flex:1 1 0%;align-items:center;gap:.5rem;font-size:.75rem;line-height:1rem;font-style:italic;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-menu-list-page .axm-menu-tree-item__divider i,.axm-menu-list-page .axm-menu-tree-item__path i{--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.axm-menu-list-page .axm-menu-tree-item__name{display:flex;align-items:center;border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1));font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-weight:400;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));white-space:nowrap;-webkit-user-select:all;user-select:all}.axm-menu-list-page .axm-menu-tree-item__actions{margin-left:.5rem}\\n\"] }]\n }], propDecorators: { tree: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXTreeViewComponent), { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9wbGF0Zm9ybS1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvbWVudS1tYW5hZ2VtZW50L3BhZ2VzL21lbnUtbGlzdC9tZW51LWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3BsYXRmb3JtLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9tZW51LW1hbmFnZW1lbnQvcGFnZXMvbWVudS1saXN0L21lbnUtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUE2QixtQkFBbUIsRUFBa0IsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVyRixPQUFPLEVBQXdDLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHdCQUF3QixFQUFF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Qiw0QkFBNEIsZ2lCQUM1Qix3QkFBd0IsMEhBQ3hCLGFBQWE7OzRGQWNKLG9CQUFvQjtrQkEzQmhDLFNBQVM7K0JBQ0UsZUFBZSxXQUNoQjt3QkFDUCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsaUJBQWlCO3dCQUNqQixzQkFBc0I7d0JBQ3RCLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLHNCQUFzQjt3QkFDdEIsNEJBQTRCO3dCQUM1Qix3QkFBd0I7d0JBQ3hCLGFBQWE7cUJBQ2QsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksYUFDMUI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxzQkFBc0I7eUJBQ2xDO3FCQUNGLFFBQ0ssRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUU7c0ZBZ0JWLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQmFkZ2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYmFkZ2UnO1xuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RpYWxvZyc7XG5pbXBvcnQgeyBBWERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFYRHJvcGRvd25CdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24tYnV0dG9uJztcbmltcG9ydCB7IEFYVG9hc3RTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RvYXN0JztcbmltcG9ydCB7IEFYVHJlZVZpZXdCZWZvcmVEcm9wRXZlbnQsIEFYVHJlZVZpZXdDb21wb25lbnQsIEFYVHJlZVZpZXdOb2RlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RyZWUtdmlldyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlLCBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBNZW51SXRlbSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUEFjdGlvbk1lbnVJdGVtLCBBWFBFeGVjdXRlQ29tbWFuZCwgQVhQUGxhdGZvcm1TY29wZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50LCBBWFBUaGVtZUxheW91dEJsb2NrQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBWFBQYWdlTGF5b3V0QmFzZSwgQVhQUGFnZUxheW91dEJhc2VDb21wb25lbnQsIEFYUFBhZ2VMYXlvdXRDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC92aWV3cyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgaW5qZWN0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhQTWVudUl0ZW1BY3Rpb24gfSBmcm9tICcuLi8uLi9tZW51LWN1c3RvbWl6YXRpb24udHlwZXMnO1xuaW1wb3J0IHsgQVhQTWVudU1hbmFnZW1lbnRTZXJ2aWNlLCBBWFBNZW51VHJlZU5vZGVEYXRhIH0gZnJvbSAnLi4vLi4vbWVudS1tYW5hZ2VtZW50LnNlcnZpY2UnO1xuXG4vLyNyZWdpb24gLS0tLSAgIE1lbnUgTGlzdCBDb21wb25lbnQgICAtLS0tXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4bS1tZW51LWxpc3QnLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYRHJvcGRvd25CdXR0b25Nb2R1bGUsXG4gICAgQVhEcm9wZG93bk1vZHVsZSxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICAgIEFYVHJlZVZpZXdDb21wb25lbnQsXG4gICAgQVhQUGFnZUxheW91dENvbXBvbmVudCxcbiAgICBBWFBUaGVtZUxheW91dEJsb2NrQ29tcG9uZW50LFxuICAgIEFYUFN0YXRlTWVzc2FnZUNvbXBvbmVudCxcbiAgICBBWEJhZGdlTW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVudS1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVudS1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBQYWdlTGF5b3V0QmFzZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWE1NZW51TGlzdENvbXBvbmVudCxcbiAgICB9LFxuICBdLFxuICBob3N0OiB7IGNsYXNzOiAnYXhtLW1lbnUtbGlzdC1wYWdlJyB9LFxufSlcbmV4cG9ydCBjbGFzcyBBWE1NZW51TGlzdENvbXBvbmVudCBleHRlbmRzIEFYUFBhZ2VMYXlvdXRCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvLyNyZWdpb24gLS0tLSAgIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICBwcml2YXRlIG1lbnVNYW5hZ2VtZW50U2VydmljZSA9IGluamVjdChBWFBNZW51TWFuYWdlbWVudFNlcnZpY2UpO1xuICBwcml2YXRlIGxheW91dEJ1aWxkZXIgPSBpbmplY3QoQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgZGlhbG9nU2VydmljZSA9IGluamVjdChBWERpYWxvZ1NlcnZpY2UpO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdG9hc3RTZXJ2aWNlID0gaW5qZWN0KEFYVG9hc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0cmFuc2xhdGlvblNlcnZpY2UgPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIENvbXBvbmVudCBTdGF0ZSAgIC0tLS1cblxuICBwcm90ZWN0ZWQgdHJlZSA9IHZpZXdDaGlsZChBWFRyZWVWaWV3Q29tcG9uZW50KTtcbiAgcHJvdGVjdGVkIHRyZWVOb2RlcyA9IHNpZ25hbDxBWFRyZWVWaWV3Tm9kZVtdPihbXSk7XG4gIHByb3RlY3RlZCBpc0xvYWRpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcm90ZWN0ZWQgZXJyb3IgPSBzaWduYWw8c3RyaW5nPignJyk7XG4gIHByb3RlY3RlZCBjdXJyZW50U2NvcGUgPSBzaWduYWw8QVhQUGxhdGZvcm1TY29wZT4oQVhQUGxhdGZvcm1TY29wZS5Vc2VyKTtcbiAgcHJpdmF0ZSBpc1N5bmNpbmcgPSBmYWxzZTsgLy8gUHJldmVudCBjb25jdXJyZW50IHN5bmMgb3BlcmF0aW9uc1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTsgLy8gRm9yIHN1YnNjcmlwdGlvbiBjbGVhbnVwXG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBMaWZlY3ljbGUgICAtLS0tXG5cbiAgb3ZlcnJpZGUgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIC8vIEdldCBzY29wZSBmcm9tIHJvdXRlICh3aXRoIG1lbW9yeSBsZWFrIHByZXZlbnRpb24pXG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZShhc3luYyAocGFyYW1zKSA9PiB7XG4gICAgICBjb25zdCBzY29wZSA9IHBhcmFtc1snc2NvcGUnXSBhcyBBWFBQbGF0Zm9ybVNjb3BlO1xuICAgICAgaWYgKHNjb3BlKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFNjb3BlLnNldChzY29wZSk7XG4gICAgICAgIGF3YWl0IHRoaXMubG9hZE1lbnVJdGVtcygpO1xuICAgICAgICB0aGlzLnJlY29tcHV0ZSgpOyAvLyBVcGRhdGUgcGFnZSBoZWFkZXIgYWZ0ZXIgbG9hZGluZ1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBFdmVudCBIYW5kbGVycyAgIC0tLS1cblxuICAvKipcbiAgICogSGFuZGxlIGJlZm9yZSBkcm9wIHZhbGlkYXRpb25cbiAgICovXG4gIGFzeW5jIGhhbmRsZUJlZm9yZURyb3AoZTogQVhUcmVlVmlld0JlZm9yZURyb3BFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHRhcmdldFBhcmVudCA9IChlLmN1cnJlbnRQYXJlbnQ/LlsnZGF0YSddIGFzIEFYUE1lbnVUcmVlTm9kZURhdGEpIHx8IG51bGw7XG5cbiAgICAvLyBQcmV2ZW50IGRyb3BwaW5nIGludG8gaXRlbXMgd2l0aCBwYXRocyAobGVhZiBub2RlcylcbiAgICBpZiAodGFyZ2V0UGFyZW50Py5tZW51SXRlbT8ucGF0aCkge1xuICAgICAgZS5jYW5jZWxlZCA9IHRydWU7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQubWVzc2FnZXMuZXJyb3IubW92ZScsXG4gICAgICApO1xuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uud2FybmluZyhtZXNzYWdlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBOb3RlOiBDaXJjdWxhciByZWZlcmVuY2UgdmFsaWRhdGlvbiBpcyBoYW5kbGVkIGJ5IHRoZSB0cmVlIGNvbXBvbmVudCBpdHNlbGZcbiAgICAvLyBBZGRpdGlvbmFsIHZhbGlkYXRpb24gY2FuIGJlIGFkZGVkIGhlcmUgaWYgbmVlZGVkIGJhc2VkIG9uIGJ1c2luZXNzIHJ1bGVzXG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGFmdGVyIGRyb3AgZXZlbnQgdG8gc3luYyBjaGFuZ2VzXG4gICAqL1xuICBhc3luYyBoYW5kbGVBZnRlckRyb3AoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zeW5jVHJlZUNoYW5nZXMoKTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgRGF0YSBMb2FkaW5nICAgLS0tLVxuXG4gIC8qKlxuICAgKiBMb2FkIG1lbnUgdHJlZSBmb3IgY3VycmVudCBzY29wZVxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGxvYWRNZW51SXRlbXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgIHRoaXMuZXJyb3Iuc2V0KCcnKTtcblxuICAgICAgY29uc3QgdHJlZU5vZGVzID0gYXdhaXQgdGhpcy5tZW51TWFuYWdlbWVudFNlcnZpY2UuZ2V0TWVudVRyZWUodGhpcy5jdXJyZW50U2NvcGUoKSk7XG4gICAgICB0aGlzLnRyZWVOb2Rlcy5zZXQodHJlZU5vZGVzKTtcbiAgICAgIHRoaXMucmVjb21wdXRlKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3Iuc2V0KGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ0ZhaWxlZCB0byBsb2FkIG1lbnUgaXRlbXMnKTtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5tZXNzYWdlcy5lcnJvci5sb2FkJyxcbiAgICAgICk7XG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5kYW5nZXIobWVzc2FnZSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN5bmMgdHJlZSBjaGFuZ2VzIHRvIGJhY2tlbmRcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgc3luY1RyZWVDaGFuZ2VzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIFByZXZlbnQgY29uY3VycmVudCBzeW5jIG9wZXJhdGlvbnNcbiAgICBpZiAodGhpcy5pc1N5bmNpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5pc1N5bmNpbmcgPSB0cnVlO1xuICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLnRyZWVOb2RlcygpO1xuICAgICAgY29uc3Qgc2NvcGUgPSB0aGlzLmN1cnJlbnRTY29wZSgpO1xuXG4gICAgICBpZiAobm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgdGhpcy5tZW51TWFuYWdlbWVudFNlcnZpY2Uuc3luY1RyZWVDaGFuZ2VzKHNjb3BlLCBub2Rlcyk7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQubWVzc2FnZXMuc3VjY2Vzcy5yZW9yZGVyJyxcbiAgICAgICk7XG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zdWNjZXNzKG1lc3NhZ2UpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gc3luYyB0cmVlIGNoYW5nZXM6JywgZXJyb3IpO1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50Lm1lc3NhZ2VzLmVycm9yLnN5bmMnLFxuICAgICAgKTtcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmRhbmdlcihtZXNzYWdlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc1N5bmNpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFBhZ2UgTGF5b3V0IEludGVyZmFjZSAgIC0tLS1cblxuICAvKipcbiAgICogR2V0IHBhZ2UgdGl0bGVcbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIGdldFBhZ2VUaXRsZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHNjb3BlTmFtZSA9IHRoaXMuY3VycmVudFNjb3BlKCk7XG4gICAgY29uc3Qgc2NvcGVLZXkgPSBzY29wZU5hbWUgPT09IEFYUFBsYXRmb3JtU2NvcGUuVXNlciA/ICd1c2VyJyA6ICd0ZW5hbnQnO1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhgQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50Lm1lbnVzLiR7c2NvcGVLZXl9LnRpdGxlYCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHBhZ2UgZGVzY3JpcHRpb25cbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIGdldFBhZ2VEZXNjcmlwdGlvbigpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuY29tcG9uZW50cy5tZW51LWxpc3QuZGVzY3JpcHRpb24nLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHByaW1hcnkgbWVudSBpdGVtcyAoYWN0aW9ucylcbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIGdldFByaW1hcnlNZW51SXRlbXMoKTogUHJvbWlzZTxBWFBBY3Rpb25NZW51SXRlbVtdPiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5hZGQtcm9vdC50aXRsZScsXG4gICAgICAgICksXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1wbHVzJyxcbiAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgY29tbWFuZDogeyBuYW1lOiAnYWRkLXJvb3QnIH0sXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICAvKipcbiAgICogR2V0IHNlY29uZGFyeSBtZW51IGl0ZW1zXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyBnZXRTZWNvbmRhcnlNZW51SXRlbXMoKTogUHJvbWlzZTxBWFBBY3Rpb25NZW51SXRlbVtdPiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5jb2xsYXBzZS50aXRsZScsXG4gICAgICAgICksXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1taW51cy1zcXVhcmUnLFxuICAgICAgICBjb21tYW5kOiB7IG5hbWU6ICdjb2xsYXBzZScgfSxcbiAgICAgIH0sXG5cbiAgICAgIHtcbiAgICAgICAgdGl0bGU6IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5leHBhbmQudGl0bGUnLFxuICAgICAgICApLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtcGx1cy1zcXVhcmUnLFxuICAgICAgICBjb21tYW5kOiB7IG5hbWU6ICdleHBhbmQnIH0sXG4gICAgICAgIGJyZWFrOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5yZXNldC50aXRsZScpLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtcm90YXRlLWxlZnQnLFxuICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgIGNvbW1hbmQ6IHsgbmFtZTogJ3Jlc2V0JyB9LFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgY29tbWFuZHMgZnJvbSBwYWdlIGFjdGlvbnNcbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIGV4ZWN1dGUoY29tbWFuZDogQVhQRXhlY3V0ZUNvbW1hbmQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBzd2l0Y2ggKGNvbW1hbmQubmFtZSkge1xuICAgICAgY2FzZSAnYWRkLXJvb3QnOlxuICAgICAgICBhd2FpdCB0aGlzLmFkZFJvb3RNZW51SXRlbSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NvbGxhcHNlJzpcbiAgICAgICAgdGhpcy50cmVlKCk/LmNvbGxhcHNlQWxsKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXhwYW5kJzpcbiAgICAgICAgdGhpcy50cmVlKCk/LmV4cGFuZEFsbCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Jlc2V0JzpcbiAgICAgICAgYXdhaXQgdGhpcy5yZXNldEN1c3RvbWl6YXRpb25zKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQWN0aW9uIEhhbmRsZXJzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgbWVudSBpdGVtIGFjdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIG9uQWN0aW9uKGFjdGlvbjogQVhQTWVudUl0ZW1BY3Rpb24sIG5vZGVEYXRhOiBBWFBNZW51VHJlZU5vZGVEYXRhKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgIGNhc2UgJ3Nob3cnOlxuICAgICAgICBhd2FpdCB0aGlzLnNob3dNZW51SXRlbShub2RlRGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaGlkZSc6XG4gICAgICAgIGF3YWl0IHRoaXMuaGlkZU1lbnVJdGVtKG5vZGVEYXRhKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdlZGl0JzpcbiAgICAgICAgYXdhaXQgdGhpcy5lZGl0TWVudUl0ZW0obm9kZURhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2RlbGV0ZSc6XG4gICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlTWVudUl0ZW0obm9kZURhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FkZC1jaGlsZCc6XG4gICAgICAgIGF3YWl0IHRoaXMuYWRkQ2hpbGRNZW51SXRlbShub2RlRGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgbmV3IHJvb3QgbWVudSBpdGVtXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYWRkUm9vdE1lbnVJdGVtKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc2hvd01lbnVJdGVtRGlhbG9nKG51bGwsIG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBuZXcgY2hpbGQgbWVudSBpdGVtXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYWRkQ2hpbGRNZW51SXRlbShwYXJlbnROb2RlRGF0YTogQVhQTWVudVRyZWVOb2RlRGF0YSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc2hvd01lbnVJdGVtRGlhbG9nKG51bGwsIHBhcmVudE5vZGVEYXRhLm1lbnVJdGVtLm5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IGN1c3RvbWl6YXRpb25zXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgcmVzZXRDdXN0b21pemF0aW9ucygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB0aXRsZSA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5hY3Rpb25zLnJlc2V0LmNvbmZpcm0udGl0bGUnLFxuICAgICk7XG4gICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5hY3Rpb25zLnJlc2V0LmNvbmZpcm0ubWVzc2FnZScsXG4gICAgKTtcbiAgICBjb25zdCBjb25maXJtZWQgPSBhd2FpdCB0aGlzLmRpYWxvZ1NlcnZpY2UuY29uZmlybSh0aXRsZSwgbWVzc2FnZSk7XG5cbiAgICBpZiAoIWNvbmZpcm1lZCkgcmV0dXJuO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFJlc2V0IGN1c3RvbWl6YXRpb25zIGZvciBjdXJyZW50IHNjb3BlXG4gICAgICBhd2FpdCB0aGlzLm1lbnVNYW5hZ2VtZW50U2VydmljZS5yZXNldEN1c3RvbWl6YXRpb25zKHRoaXMuY3VycmVudFNjb3BlKCkpO1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50Lm1lc3NhZ2VzLnN1Y2Nlc3MucmVzZXQnLFxuICAgICAgKTtcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnN1Y2Nlc3MobWVzc2FnZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byByZXNldCBjdXN0b21pemF0aW9uczonLCBlcnJvcik7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQubWVzc2FnZXMuZXJyb3IucmVzZXQnLFxuICAgICAgKTtcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmRhbmdlcihtZXNzYWdlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gUmVsb2FkIGFueXdheSB0byBzaG93IGN1cnJlbnQgc3RhdGVcbiAgICAgIGF3YWl0IHRoaXMubG9hZE1lbnVJdGVtcygpO1xuICAgIH1cbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgTWVudSBJdGVtIEFjdGlvbnMgICAtLS0tXG5cbiAgLyoqXG4gICAqIFNob3cgbWVudSBpdGVtXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHNob3dNZW51SXRlbShub2RlRGF0YTogQVhQTWVudVRyZWVOb2RlRGF0YSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuZXhlY3V0ZU1lbnVBY3Rpb24oXG4gICAgICAoKSA9PiB0aGlzLm1lbnVNYW5hZ2VtZW50U2VydmljZS5zaG93TWVudUl0ZW0odGhpcy5jdXJyZW50U2NvcGUoKSwgbm9kZURhdGEubWVudUl0ZW0ubmFtZSEpLFxuICAgICAgJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5tZXNzYWdlcy5zdWNjZXNzLnNob3cnLFxuICAgICAgJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5tZXNzYWdlcy5lcnJvci5zaG93JyxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEhpZGUgbWVudSBpdGVtXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGhpZGVNZW51SXRlbShub2RlRGF0YTogQVhQTWVudVRyZWVOb2RlRGF0YSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuZXhlY3V0ZU1lbnVBY3Rpb24oXG4gICAgICAoKSA9PiB0aGlzLm1lbnVNYW5hZ2VtZW50U2VydmljZS5oaWRlTWVudUl0ZW0odGhpcy5jdXJyZW50U2NvcGUoKSwgbm9kZURhdGEubWVudUl0ZW0ubmFtZSEpLFxuICAgICAgJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5tZXNzYWdlcy5zdWNjZXNzLmhpZGUnLFxuICAgICAgJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5tZXNzYWdlcy5lcnJvci5oaWRlJyxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEVkaXQgbWVudSBpdGVtXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGVkaXRNZW51SXRlbShub2RlRGF0YTogQVhQTWVudVRyZWVOb2RlRGF0YSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc2hvd01lbnVJdGVtRGlhbG9nKG5vZGVEYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgY3VzdG9tIG1lbnUgaXRlbVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBkZWxldGVNZW51SXRlbShub2RlRGF0YTogQVhQTWVudVRyZWVOb2RlRGF0YSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHRpdGxlID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BnZW5lcmFsOmFjdGlvbnMuZGVsZXRlLnRpdGxlJyk7XG4gICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5hY3Rpb25zLmRlbGV0ZS5jb25maXJtLm1lc3NhZ2UnLFxuICAgICk7XG4gICAgY29uc3QgY29uZmlybWVkID0gYXdhaXQgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm0odGl0bGUsIG1lc3NhZ2UpO1xuXG4gICAgaWYgKCFjb25maXJtZWQpIHJldHVybjtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBpdGVtID0gbm9kZURhdGEubWVudUl0ZW07XG4gICAgICBpZiAoIWl0ZW0ubmFtZSkgcmV0dXJuO1xuXG4gICAgICBhd2FpdCB0aGlzLm1lbnVNYW5hZ2VtZW50U2VydmljZS5kZWxldGVDdXN0b21NZW51SXRlbSh0aGlzLmN1cnJlbnRTY29wZSgpLCBpdGVtLm5hbWUpO1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50Lm1lc3NhZ2VzLnN1Y2Nlc3MuZGVsZXRlJyxcbiAgICAgICk7XG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zdWNjZXNzKG1lc3NhZ2UpO1xuICAgICAgYXdhaXQgdGhpcy5sb2FkTWVudUl0ZW1zKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5tZXNzYWdlcy5lcnJvci5kZWxldGUnLFxuICAgICAgKTtcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmRhbmdlcihtZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIERpYWxvZyBIZWxwZXJzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBTaG93IG1lbnUgaXRlbSBkaWFsb2cgKGFkZC9lZGl0KVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBzaG93TWVudUl0ZW1EaWFsb2coXG4gICAgbm9kZURhdGE6IEFYUE1lbnVUcmVlTm9kZURhdGEgfCBudWxsLFxuICAgIHBhcmVudE5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBpdGVtID0gbm9kZURhdGE/Lm1lbnVJdGVtO1xuICAgIGNvbnN0IGlzRWRpdCA9ICEhaXRlbTtcbiAgICBjb25zdCB0aXRsZSA9IGlzRWRpdFxuICAgICAgPyAnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmNvbXBvbmVudHMuZWRpdC1kaWFsb2cudGl0bGUnXG4gICAgICA6ICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuY29tcG9uZW50cy5hZGQtZGlhbG9nLnRpdGxlJztcblxuICAgIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgICBuYW1lOiBpdGVtPy5uYW1lIHx8ICcnLFxuICAgICAgdGV4dDogaXRlbT8udGV4dCB8fCAnJyxcbiAgICAgIHR5cGU6IGl0ZW0/LnR5cGUgfHwgJ21lbnUnLFxuICAgICAgaWNvbjogaXRlbT8uaWNvbiB8fCAnJyxcbiAgICAgIHBhdGg6IGl0ZW0/LnBhdGggfHwgJycsXG4gICAgICBwcmlvcml0eTogaXRlbT8ucHJpb3JpdHkgfHwgMCxcbiAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICB9O1xuXG4gICAgY29uc3QgZGlhbG9nUmVmOiBhbnkgPSBhd2FpdCB0aGlzLmxheW91dEJ1aWxkZXJcbiAgICAgIC5jcmVhdGUoKVxuICAgICAgLmRpYWxvZygoZGlhbG9nOiBhbnkpID0+IHtcbiAgICAgICAgZGlhbG9nXG4gICAgICAgICAgLnNldFRpdGxlKHRpdGxlKVxuICAgICAgICAgIC5zZXRDb250ZXh0KGNvbnRleHQpXG4gICAgICAgICAgLmNvbnRlbnQoKGZsZXg6IGFueSkgPT4ge1xuICAgICAgICAgICAgZmxleFxuICAgICAgICAgICAgICAuc2V0RGlyZWN0aW9uKCdjb2x1bW4nKVxuICAgICAgICAgICAgICAuZm9ybUZpZWxkKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuZmllbGRzLm5hbWUnLCAoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ25hbWUnKTtcbiAgICAgICAgICAgICAgICBmaWVsZC50ZXh0Qm94KHtcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmZpZWxkcy5uYW1lJyxcbiAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25zOiBbeyBydWxlOiAncmVxdWlyZWQnIH1dLFxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGlzRWRpdCAmJiBub2RlRGF0YT8ubWV0YWRhdGE/LmlzQnVpbHRJbixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmZvcm1GaWVsZCgnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmZpZWxkcy50ZXh0JywgKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCd0ZXh0Jyk7XG4gICAgICAgICAgICAgICAgZmllbGQudGV4dEJveCh7XG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5maWVsZHMudGV4dCcsXG4gICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uczogW3sgcnVsZTogJ3JlcXVpcmVkJyB9XSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmZvcm1GaWVsZCgnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmZpZWxkcy5pY29uJywgKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCdpY29uJyk7XG4gICAgICAgICAgICAgICAgZmllbGQuY3VzdG9tV2lkZ2V0KCdpY29uLWNob29zZXInLCB7fSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5mb3JtRmllbGQoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5maWVsZHMucGF0aCcsIChmaWVsZDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgZmllbGQucGF0aCgncGF0aCcpO1xuICAgICAgICAgICAgICAgIGZpZWxkLnRleHRCb3goe1xuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuZmllbGRzLnBhdGgnLFxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGlzRWRpdCAmJiBub2RlRGF0YT8ubWV0YWRhdGE/LmlzQnVpbHRJbixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmZvcm1GaWVsZCgnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmZpZWxkcy5wcmlvcml0eScsIChmaWVsZDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgZmllbGQucGF0aCgncHJpb3JpdHknKTtcbiAgICAgICAgICAgICAgICBmaWVsZC5udW1iZXJCb3goe1xuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuZmllbGRzLnByaW9yaXR5JyxcbiAgICAgICAgICAgICAgICAgIHN0ZXA6IDEwLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuZm9ybUZpZWxkKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuZmllbGRzLmRlc2NyaXB0aW9uJywgKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCdkZXNjcmlwdGlvbicpO1xuICAgICAgICAgICAgICAgIGZpZWxkLmxhcmdlVGV4dEJveCh7XG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5maWVsZHMuZGVzY3JpcHRpb24nLFxuICAgICAgICAgICAgICAgICAgcm93czogMyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuc2V0QWN0aW9ucygoYWN0aW9uczogYW55KSA9PiB7XG4gICAgICAgICAgICBhY3Rpb25zLmNhbmNlbCgnQGdlbmVyYWw6YWN0aW9ucy5jYW5jZWwudGl0bGUnKS5zdWJtaXQoJ0BnZW5lcmFsOmFjdGlvbnMuc2F2ZS50aXRsZScpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgIC5zaG93KCk7XG5cbiAgICBjb25zdCBhY3Rpb24gPSBkaWFsb2dSZWYuYWN0aW9uKCk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2NhbmNlbCcpIHtcbiAgICAgIGRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1EYXRhID0gZGlhbG9nUmVmLmNvbnRleHQoKSBhcyBQYXJ0aWFsPEFYUE1lbnVJdGVtPjtcblxuICAgIHRyeSB7XG4gICAgICBpZiAoaXNFZGl0ICYmIGl0ZW0/Lm5hbWUpIHtcbiAgICAgICAgLy8gVXBkYXRlIGV4aXN0aW5nIGl0ZW1cbiAgICAgICAgaWYgKG5vZGVEYXRhPy5tZXRhZGF0YT8uaXNDdXN0b20pIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLm1lbnVNYW5hZ2VtZW50U2VydmljZS51cGRhdGVDdXN0b21NZW51SXRlbShcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNjb3BlKCksXG4gICAgICAgICAgICBpdGVtLm5hbWUsXG4gICAgICAgICAgICBmb3JtRGF0YSBhcyBBWFBNZW51SXRlbSxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF3YWl0IHRoaXMubWVudU1hbmFnZW1lbnRTZXJ2aWNlLnVwZGF0ZU1lbnVQcm9wZXJ0aWVzKHRoaXMuY3VycmVudFNjb3BlKCksIGl0ZW0ubmFtZSwgZm9ybURhdGEpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBZGQgbmV3IGN1c3RvbSBpdGVtXG4gICAgICAgIGNvbnN0IG5ld0l0ZW06IEFYUE1lbnVJdGVtID0ge1xuICAgICAgICAgIG5hbWU6IGZvcm1EYXRhLm5hbWUhLFxuICAgICAgICAgIHRleHQ6IGZvcm1EYXRhLnRleHQhLFxuICAgICAgICAgIGljb246IGZvcm1EYXRhLmljb24sXG4gICAgICAgICAgcGF0aDogZm9ybURhdGEucGF0aCxcbiAgICAgICAgICBwcmlvcml0eTogZm9ybURhdGEucHJpb3JpdHksXG4gICAgICAgICAgZGVzY3JpcHRpb246IGZvcm1EYXRhLmRlc2NyaXB0aW9uLFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIElmIHBhcmVudCBpcyBzcGVjaWZpZWQsIGFkZCBhcyBjaGlsZFxuICAgICAgICBpZiAocGFyZW50TmFtZSkge1xuICAgICAgICAgIC8vIEFkZCBjdXN0b20gaXRlbSBhcyBjaGlsZCBvZiBwYXJlbnRcbiAgICAgICAgICBhd2FpdCB0aGlzLm1lbnVNYW5hZ2VtZW50U2VydmljZS5hZGRDdXN0b21NZW51SXRlbSh0aGlzLmN1cnJlbnRTY29wZSgpLCBuZXdJdGVtLCBwYXJlbnROYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBBZGQgYXMgcm9vdCBsZXZlbCBpdGVtXG4gICAgICAgICAgYXdhaXQgdGhpcy5tZW51TWFuYWdlbWVudFNlcnZpY2UuYWRkQ3VzdG9tTWVudUl0ZW0odGhpcy5jdXJyZW50U2NvcGUoKSwgbmV3SXRlbSwgbnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50Lm1lc3NhZ2VzLnN1Y2Nlc3Muc2F2ZScsXG4gICAgICApO1xuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc3VjY2VzcyhtZXNzYWdlKTtcbiAgICAgIGF3YWl0IHRoaXMubG9hZE1lbnVJdGVtcygpO1xuICAgICAgZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5tZXNzYWdlcy5lcnJvci5zYXZlJyxcbiAgICAgICk7XG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5kYW5nZXIobWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgYSBtZW51IGFjdGlvbiB3aXRoIGNvbW1vbiBlcnJvciBoYW5kbGluZ1xuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBleGVjdXRlTWVudUFjdGlvbihcbiAgICBhY3Rpb246ICgpID0+IFByb21pc2U8dm9pZD4sXG4gICAgc3VjY2Vzc01lc3NhZ2VLZXk6IHN0cmluZyxcbiAgICBlcnJvck1lc3NhZ2VLZXk6IHN0cmluZyxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGFjdGlvbigpO1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKHN1Y2Nlc3NNZXNzYWdlS2V5KTtcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnN1Y2Nlc3MobWVzc2FnZSk7XG4gICAgICBhd2FpdCB0aGlzLmxvYWRNZW51SXRlbXMoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignTWVudSBhY3Rpb24gZmFpbGVkOicsIGVycm9yKTtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhlcnJvck1lc3NhZ2VLZXkpO1xuICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZGFuZ2VyKG1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxufVxuXG4vLyNlbmRyZWdpb25cbiIsIjxheHAtcGFnZS1sYXlvdXQ+XG4gIDxheHAtcGFnZS1jb250ZW50PlxuICAgIEBpZiAoaXNMb2FkaW5nKCkpIHtcbiAgICAgIDwhLS0gTG9hZGluZyBTdGF0ZSAtLT5cbiAgICAgIDxheHAtc3RhdGUtbWVzc2FnZVxuICAgICAgICBtb2RlPVwibG9hZGluZ1wiXG4gICAgICAgIGljb249XCJmYS1saWdodCBmYS1zcGlubmVyLXRoaXJkIGZhLXNwaW5cIlxuICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuY29tcG9uZW50cy5tZW51LWxpc3QuZW1wdHktc3RhdGVzLmxvYWRpbmcudGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMpIVxuICAgICAgICBcIlxuICAgICAgICBbZGVzY3JpcHRpb25dPVwiXG4gICAgICAgICAgKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuY29tcG9uZW50cy5tZW51LWxpc3QuZW1wdHktc3RhdGVzLmxvYWRpbmcuZGVzY3JpcHRpb24nXG4gICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgfCBhc3luYykhXG4gICAgICAgIFwiXG4gICAgICAvPlxuICAgIH0gQGVsc2UgaWYgKGVycm9yKCkpIHtcbiAgICAgIDwhLS0gRXJyb3IgU3RhdGUgLS0+XG4gICAgICA8YXhwLXN0YXRlLW1lc3NhZ2VcbiAgICAgICAgbW9kZT1cImVycm9yXCJcbiAgICAgICAgaWNvbj1cImZhLWxpZ2h0IGZhLWNpcmNsZS1leGNsYW1hdGlvblwiXG4gICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5jb21wb25lbnRzLm1lbnUtbGlzdC5lbXB0eS1zdGF0ZXMuZXJyb3IudGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMpIVxuICAgICAgICBcIlxuICAgICAgICBbZGVzY3JpcHRpb25dPVwiXG4gICAgICAgICAgKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuY29tcG9uZW50cy5tZW51LWxpc3QuZW1wdHktc3RhdGVzLmVycm9yLmRlc2NyaXB0aW9uJ1xuICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgIHwgYXN5bmMpIVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8YXgtYnV0dG9uXG4gICAgICAgICAgc2xvdD1cImFjdGlvbnNcIlxuICAgICAgICAgIFt0ZXh0XT1cIidAZ2VuZXJhbDphY3Rpb25zLnJldHJ5LnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICBbbG9va109XCInb3V0bGluZSdcIlxuICAgICAgICAgIFtjb2xvcl09XCIncHJpbWFyeSdcIlxuICAgICAgICAgIChvbkNsaWNrKT1cImxvYWRNZW51SXRlbXMoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhLWxpZ2h0IGZhLXJvdGF0ZS1sZWZ0XCI+PC9pPlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgIDwvYXhwLXN0YXRlLW1lc3NhZ2U+XG4gICAgfSBAZWxzZSBpZiAodHJlZU5vZGVzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICA8IS0tIEVtcHR5IFN0YXRlIC0tPlxuICAgICAgPGF4cC1zdGF0ZS1tZXNzYWdlXG4gICAgICAgIG1vZGU9XCJlbXB0eVwiXG4gICAgICAgIGljb249XCJmYS1saWdodCBmYS1iYXJzXCJcbiAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICgnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmNvbXBvbmVudHMubWVudS1saXN0LmVtcHR5LXN0YXRlcy5uby1kYXRhLnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSFcbiAgICAgICAgXCJcbiAgICAgICAgW2Rlc2NyaXB0aW9uXT1cIlxuICAgICAgICAgICgnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmNvbXBvbmVudHMubWVudS1saXN0LmVtcHR5LXN0YXRlcy5uby1kYXRhLmRlc2NyaXB0aW9uJ1xuICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgIHwgYXN5bmMpIVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8YXgtYnV0dG9uXG4gICAgICAgICAgc2xvdD1cImFjdGlvbnNcIlxuICAgICAgICAgIFt0ZXh0XT1cIidAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5hZGQtcm9vdC50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luY1wiXG4gICAgICAgICAgW2xvb2tdPVwiJ3NvbGlkJ1wiXG4gICAgICAgICAgW2NvbG9yXT1cIidwcmltYXJ5J1wiXG4gICAgICAgICAgKG9uQ2xpY2spPVwiYWRkUm9vdE1lbnVJdGVtKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYS1saWdodCBmYS1wbHVzXCI+PC9pPlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgIDwvYXhwLXN0YXRlLW1lc3NhZ2U+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8IS0tIE1lbnUgVHJlZSBDb250ZW50IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImF4bS1tZW51LWxpc3RfX2NvbnRhaW5lclwiPlxuICAgICAgICA8IS0tIE1lbnUgVHJlZSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4bS1tZW51LWxpc3RfX3RyZWVcIj5cbiAgICAgICAgICA8YXgtdHJlZS12aWV3XG4gICAgICAgICAgICBbKGRhdGFzb3VyY2UpXT1cInRyZWVOb2Rlc1wiXG4gICAgICAgICAgICBbbG9va109XCInZGVmYXVsdCdcIlxuICAgICAgICAgICAgW25vZGVUZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGVcIlxuICAgICAgICAgICAgW3NlbGVjdE1vZGVdPVwiJ25vbmUnXCJcbiAgICAgICAgICAgIFtzaG93SWNvbnNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW3Nob3dDaGlsZHJlbkJhZGdlXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtkcmFnQXJlYV09XCInaGFuZGxlcidcIlxuICAgICAgICAgICAgKG9uQmVmb3JlRHJvcCk9XCJoYW5kbGVCZWZvcmVEcm9wKCRldmVudClcIlxuICAgICAgICAgICAgKG9uSXRlbXNDaGFuZ2UpPVwiaGFuZGxlQWZ0ZXJEcm9wKClcIlxuICAgICAgICAgID48L2F4LXRyZWUtdmlldz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvYXhwLXBhZ2UtY29udGVudD5cbjwvYXhwLXBhZ2UtbGF5b3V0PlxuXG48IS0tIEN1c3RvbSBJdGVtIFRlbXBsYXRlIC0tPlxuPG5nLXRlbXBsYXRlICNpdGVtVGVtcGxhdGUgbGV0LW5vZGU9XCJub2RlXCIgbGV0LWxldmVsPVwibGV2ZWxcIj5cbiAgQGxldCBub2RlRGF0YSA9IG5vZGVbJ2RhdGEnXTtcbiAgQGxldCBpdGVtID0gbm9kZURhdGEubWVudUl0ZW07XG4gIEBsZXQgbWV0YWRhdGEgPSBub2RlRGF0YS5tZXRhZGF0YTtcbiAgPGRpdlxuICAgIGNsYXNzPVwiYXhtLW1lbnUtdHJlZS1pdGVtX193cmFwcGVyXCJcbiAgICBbY2xhc3MuYXhtLW1lbnUtdHJlZS1pdGVtX193cmFwcGVyLS1oaWRkZW5dPVwibWV0YWRhdGEuaXNIaWRkZW5cIlxuICAgIFtjbGFzcy5heG0tbWVudS10cmVlLWl0ZW1fX3dyYXBwZXItLWN1c3RvbV09XCJtZXRhZGF0YS5pc0N1c3RvbVwiXG4gICAgW2NsYXNzLmF4bS1tZW51LXRyZWUtaXRlbV9fd3JhcHBlci0tZ3JvdXBdPVwiaXRlbS50eXBlID09PSAnZ3JvdXAnXCJcbiAgPlxuICAgIDwhLS0gSWNvbiAoaGlkZGVuIGZvciBncm91cHMpIC0tPlxuICAgIEBpZiAoaXRlbS5pY29uICYmIGl0ZW0udHlwZSAhPT0gJ2dyb3VwJykge1xuICAgICAgPGkgY2xhc3M9XCJheG0tbWVudS10cmVlLWl0ZW1fX2ljb25cIiBbY2xhc3NdPVwiaXRlbS5pY29uXCI+PC9pPlxuICAgIH1cblxuICAgIDwhLS0gVGV4dCBvciBJbmZvIC0tPlxuICAgIEBpZiAoaXRlbS50eXBlID09PSAnZ3JvdXAnKSB7XG4gICAgICA8IS0tIEdyb3VwIEhlYWRpbmcgLS0+XG4gICAgICA8c3BhbiBjbGFzcz1cImF4bS1tZW51LXRyZWUtaXRlbV9fZ3JvdXBcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYS1saWdodCBmYS1sYXllci1ncm91cFwiPjwvaT5cbiAgICAgICAge3sgaXRlbS50ZXh0IHwgdHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICB9IEBlbHNlIGlmIChpdGVtLnR5cGUgPT09ICdicmVhaycpIHtcbiAgICAgIDwhLS0gRGl2aWRlciAtLT5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYXhtLW1lbnUtdHJlZS1pdGVtX19kaXZpZGVyXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZmEtbGlnaHQgZmEtbWludXNcIj48L2k+XG4gICAgICAgIHt7ICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuc3RhdGVzLmRpdmlkZXInIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICB9IEBlbHNlIGlmIChpdGVtLnRleHQpIHtcbiAgICAgIDwhLS0gUmVndWxhciBNZW51IEl0ZW0gLS0+XG4gICAgICA8c3BhbiBjbGFzcz1cImF4bS1tZW51LXRyZWUtaXRlbV9fdGV4dFwiPlxuICAgICAgICB7eyBpdGVtLnRleHQgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgPC9zcGFuPlxuICAgIH0gQGVsc2UgaWYgKGl0ZW0ucGF0aCkge1xuICAgICAgPCEtLSBQYXRoLW9ubHkgSXRlbSAtLT5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYXhtLW1lbnUtdHJlZS1pdGVtX19wYXRoXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZmEtbGlnaHQgZmEtbGlua1wiPjwvaT5cbiAgICAgICAge3sgaXRlbS5wYXRoIH19XG4gICAgICA8L3NwYW4+XG4gICAgfVxuXG4gICAgPCEtLSBNZW51IE5hbWUvS2V5IC0tPlxuICAgIEBpZiAoaXRlbS5uYW1lKSB7XG4gICAgICA8Y29kZSBjbGFzcz1cImF4bS1tZW51LXRyZWUtaXRlbV9fbmFtZVwiPnt7IGl0ZW0ubmFtZSB9fTwvY29kZT5cbiAgICB9XG5cbiAgICA8IS0tIFN0YXR1cyBCYWRnZXMgLS0+XG4gICAgQGlmIChtZXRhZGF0YS5pc0hpZGRlbikge1xuICAgICAgPGF4LWJhZGdlXG4gICAgICAgIFt0ZXh0XT1cIignQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LnN0YXRlcy5oaWRkZW4nIHwgdHJhbnNsYXRlIHwgYXN5bmMpIVwiXG4gICAgICAgIGNvbG9yPVwiZGFuZ2VyXCJcbiAgICAgID48L2F4LWJhZGdlPlxuICAgIH0gQGVsc2UgaWYgKG1ldGFkYXRhLmlzQ3VzdG9tKSB7XG4gICAgICA8YXgtYmFkZ2VcbiAgICAgICAgW3RleHRdPVwiKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuc3RhdGVzLmN1c3RvbScgfCB0cmFuc2xhdGUgfCBhc3luYykhXCJcbiAgICAgICAgY29sb3I9XCJzdWNjZXNzXCJcbiAgICAgID48L2F4LWJhZGdlPlxuICAgIH0gQGVsc2UgaWYgKG1ldGFkYXRhLmlzQnVpbHRJbikge1xuICAgICAgPGF4LWJhZGdlXG4gICAgICAgIFt0ZXh0XT1cIignQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LnN0YXRlcy5idWlsdC1pbicgfCB0cmFuc2xhdGUgfCBhc3luYykhXCJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgID48L2F4LWJhZGdlPlxuICAgIH1cblxuICAgIDwhLS0gQWN0aW9ucyBEcm9wZG93biAtLT5cbiAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXhtLW1lbnUtdHJlZS1pdGVtX19hY3Rpb25zXCIgW2xvb2tdPVwiJ2JsYW5rJ1wiIFtzaXplXT1cIidzbSdcIiBbaWNvbk9ubHldPVwidHJ1ZVwiPlxuICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgPGkgY2xhc3M9XCJmYS1saWdodCBmYS1lbGxpcHNpcy12ZXJ0aWNhbFwiPjwvaT5cbiAgICAgIDwvYXgtcHJlZml4PlxuXG4gICAgICA8YXgtZHJvcGRvd24tcGFuZWwgI3BhbmVsPlxuICAgICAgICA8YXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICA8IS0tIEVkaXQgKG9ubHkgZm9yIGl0ZW1zIHdpdGggbmFtZXMpIC0tPlxuICAgICAgICAgIEBpZiAoaXRlbS5uYW1lKSB7XG4gICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW1cbiAgICAgICAgICAgICAgW3RleHRdPVwiKCdAZ2VuZXJhbDphY3Rpb25zLmVkaXQudGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMpIVwiXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cIm9uQWN0aW9uKCdlZGl0Jywgbm9kZURhdGEpOyBwYW5lbC5jbG9zZSgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLWxpZ2h0IGZhLWVkaXRcIj48L2k+XG4gICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8IS0tIFNob3cvSGlkZSAob25seSBmb3IgaXRlbXMgd2l0aCBuYW1lcykgLS0+XG4gICAgICAgICAgQGlmIChpdGVtLm5hbWUgJiYgbWV0YWRhdGEuaXNCdWlsdEluKSB7XG4gICAgICAgICAgICBAaWYgKG1ldGFkYXRhLmlzSGlkZGVuKSB7XG4gICAgICAgICAgICAgIDxheC1idXR0b24taXRlbVxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cIignQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LmFjdGlvbnMuc2hvdy50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luYykhXCJcbiAgICAgICAgICAgICAgICAob25DbGljayk9XCJvbkFjdGlvbignc2hvdycsIG5vZGVEYXRhKTsgcGFuZWwuY2xvc2UoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1saWdodCBmYS1leWVcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtXG4gICAgICAgICAgICAgICAgW3RleHRdPVwiKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5oaWRlLnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSFcIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cIm9uQWN0aW9uKCdoaWRlJywgbm9kZURhdGEpOyBwYW5lbC5jbG9zZSgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLWxpZ2h0IGZhLWV5ZS1zbGFzaFwiPjwvaT5cbiAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKCFpdGVtLnBhdGggJiYgKGl0ZW0udHlwZSA9PT0gJ21lbnUnIHx8ICFpdGVtLnR5cGUpKSB7XG4gICAgICAgICAgICA8IS0tIEFkZCBDaGlsZCAtLT5cbiAgICAgICAgICAgIDxheC1idXR0b24taXRlbVxuICAgICAgICAgICAgICBbdGV4dF09XCIoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5hY3Rpb25zLmFkZC1jaGlsZC50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luYykhXCJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwib25BY3Rpb24oJ2FkZC1jaGlsZCcsIG5vZGVEYXRhKTsgcGFuZWwuY2xvc2UoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1saWdodCBmYS1wbHVzXCI+PC9pPlxuICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPCEtLSBEZWxldGUgKG9ubHkgZm9yIGN1c3RvbSBpdGVtcyB3aXRoIG5hbWVzKSAtLT5cbiAgICAgICAgICBAaWYgKGl0ZW0ubmFtZSAmJiBtZXRhZGF0YS5pc0N1c3RvbSkge1xuICAgICAgICAgICAgPGF4LWRpdmlkZXI+PC9heC1kaXZpZGVyPlxuICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtXG4gICAgICAgICAgICAgIFtjb2xvcl09XCInZGFuZ2VyJ1wiXG4gICAgICAgICAgICAgIFt0ZXh0XT1cIignQGdlbmVyYWw6YWN0aW9ucy5kZWxldGUudGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMpIVwiXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cIm9uQWN0aW9uKCdkZWxldGUnLCBub2RlRGF0YSk7IHBhbmVsLmNsb3NlKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtbGlnaHQgZmEtdHJhc2hcIj48L2k+XG4gICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8IS0tIEluZm8gbWVzc2FnZSBmb3IgaXRlbXMgd2l0aG91dCBuYW1lcyAtLT5cbiAgICAgICAgICBAaWYgKCFpdGVtLm5hbWUpIHtcbiAgICAgICAgICAgIDxheC1kaXZpZGVyPjwvYXgtZGl2aWRlcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1wLTIgYXgtdGV4dC14cyBheC10ZXh0LW5ldXRyYWwtNTAwIGF4LWl0YWxpY1wiPlxuICAgICAgICAgICAgICB7eyAnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50Lm1lc3NhZ2VzLmluZm8ubm8tbmFtZScgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICA8L2F4LWRyb3Bkb3duLXBhbmVsPlxuICAgIDwvYXgtYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0="],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AXTranslationService } from '@acorex/core/translation';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { Injectable } from '@angular/core';
|
|
4
|
-
import { b as AXMPermissionsKeys } from './acorex-modules-platform-management-acorex-modules-platform-management-
|
|
4
|
+
import { b as AXMPermissionsKeys } from './acorex-modules-platform-management-acorex-modules-platform-management-D3eLYk5B.mjs';
|
|
5
5
|
|
|
6
6
|
class AXMPermissionDefinitionProvider {
|
|
7
7
|
constructor(injector) {
|
|
@@ -36,4 +36,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
36
36
|
}], ctorParameters: () => [{ type: i0.Injector }] });
|
|
37
37
|
|
|
38
38
|
export { AXMPermissionDefinitionProvider };
|
|
39
|
-
//# sourceMappingURL=acorex-modules-platform-management-permission-definition.provider-
|
|
39
|
+
//# sourceMappingURL=acorex-modules-platform-management-permission-definition.provider-BRZXzDNj.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-modules-platform-management-permission-definition.provider-DHfWGH0p.mjs","sources":["../tmp-esm2022/platform-management/lib/permission-definition.provider.js"],"sourcesContent":["import { AXTranslationService } from '@acorex/core/translation';\nimport { Injectable, Injector } from '@angular/core';\nimport { AXMPermissionsKeys } from './permission.keys';\nimport * as i0 from \"@angular/core\";\nexport class AXMPermissionDefinitionProvider {\n constructor(injector) {\n this.injector = injector;\n this.translateService = this.injector.get(AXTranslationService);\n }\n async define(context) {\n const keys = AXMPermissionsKeys.PlatformManagement;\n context.addGroup(keys.Management, await this.translateService.translateAsync('@platform-management:permissions.manage.title'), await this.translateService.translateAsync('@platform-management:permissions.manage.description'))\n //\n .addPermission(keys.GlobalVariable.Management, await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.manage.title'), await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.manage.description'))\n .addChild(keys.GlobalVariable.View, await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.view.title'), await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.view.description'))\n .addChild(keys.GlobalVariable.Create, await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.create.title'), await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.create.description'))\n .addChild(keys.GlobalVariable.Edit, await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.edit.title'), await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.edit.description'))\n .addChild(keys.GlobalVariable.Delete, await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.delete.title'), await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.delete.description'))\n .endPermission()\n //\n .addPermission(keys.MenuManagement.Management, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.manage.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.manage.description'))\n .addChild(keys.MenuManagement.View, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.view.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.view.description'))\n .addChild(keys.MenuManagement.Create, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.create.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.create.description'))\n .addChild(keys.MenuManagement.Edit, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.edit.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.edit.description'))\n .addChild(keys.MenuManagement.Delete, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.delete.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.delete.description'))\n .endPermission()\n //\n .endGroup();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMPermissionDefinitionProvider, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMPermissionDefinitionProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMPermissionDefinitionProvider, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i0.Injector }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1kZWZpbml0aW9uLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3BsYXRmb3JtLW1hbmFnZW1lbnQvc3JjL2xpYi9wZXJtaXNzaW9uLWRlZmluaXRpb24ucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBR3ZELE1BQU0sT0FBTywrQkFBK0I7SUFHMUMsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUErQztRQUMxRCxNQUFNLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQztRQUVuRCxPQUFPLENBQUMsUUFBUSxDQUNkLElBQUksQ0FBQyxVQUFVLEVBQ2YsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLCtDQUErQyxDQUFDLEVBQzNGLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxxREFBcUQsQ0FBQyxDQUNsRztZQUNDLEVBQUU7YUFDRCxhQUFhLENBQ1osSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQzlCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyx3RkFBd0YsQ0FBQyxFQUNwSSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsOEZBQThGLENBQUMsQ0FDM0k7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQ3hCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxzRkFBc0YsQ0FBQyxFQUNsSSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsNEZBQTRGLENBQUMsQ0FDekk7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQzFCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyx3RkFBd0YsQ0FBQyxFQUNwSSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsOEZBQThGLENBQUMsQ0FDM0k7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQ3hCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxzRkFBc0YsQ0FBQyxFQUNsSSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsNEZBQTRGLENBQUMsQ0FDekk7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQzFCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyx3RkFBd0YsQ0FBQyxFQUNwSSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsOEZBQThGLENBQUMsQ0FDM0k7YUFDQSxhQUFhLEVBQUU7WUFDaEIsRUFBRTthQUNELGFBQWEsQ0FDWixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFDOUIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLHVGQUF1RixDQUFDLEVBQ25JLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyw2RkFBNkYsQ0FBQyxDQUMxSTthQUNBLFFBQVEsQ0FDUCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFDeEIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLHFGQUFxRixDQUFDLEVBQ2pJLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQywyRkFBMkYsQ0FBQyxDQUN4STthQUNBLFFBQVEsQ0FDUCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFDMUIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLHVGQUF1RixDQUFDLEVBQ25JLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyw2RkFBNkYsQ0FBQyxDQUMxSTthQUNBLFFBQVEsQ0FDUCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFDeEIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLHFGQUFxRixDQUFDLEVBQ2pJLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQywyRkFBMkYsQ0FBQyxDQUN4STthQUNBLFFBQVEsQ0FDUCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFDMUIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLHVGQUF1RixDQUFDLEVBQ25JLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyw2RkFBNkYsQ0FBQyxDQUMxSTthQUNBLGFBQWEsRUFBRTtZQUNoQixFQUFFO2FBQ0QsUUFBUSxFQUFFLENBQUM7SUFDaEIsQ0FBQzsrR0F2RVUsK0JBQStCO21IQUEvQiwrQkFBK0I7OzRGQUEvQiwrQkFBK0I7a0JBRDNDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyLCBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyQ29udGV4dCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhNUGVybWlzc2lvbnNLZXlzIH0gZnJvbSAnLi9wZXJtaXNzaW9uLmtleXMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlciBpbXBsZW1lbnRzIEFYUFBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IEFYVHJhbnNsYXRpb25TZXJ2aWNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuICB9XG5cbiAgYXN5bmMgZGVmaW5lKGNvbnRleHQ6IEFYUFBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXJDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qga2V5cyA9IEFYTVBlcm1pc3Npb25zS2V5cy5QbGF0Zm9ybU1hbmFnZW1lbnQ7XG5cbiAgICBjb250ZXh0LmFkZEdyb3VwKFxuICAgICAga2V5cy5NYW5hZ2VtZW50LFxuICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDpwZXJtaXNzaW9ucy5tYW5hZ2UudGl0bGUnKSxcbiAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6cGVybWlzc2lvbnMubWFuYWdlLmRlc2NyaXB0aW9uJylcbiAgICApXG4gICAgICAvL1xuICAgICAgLmFkZFBlcm1pc3Npb24oXG4gICAgICAgIGtleXMuR2xvYmFsVmFyaWFibGUuTWFuYWdlbWVudCxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDpnbG9iYWwtdmFyaWFibGVzLnBlcm1pc3Npb25zLmdsb2JhbC12YXJpYWJsZS5hY3Rpb25zLm1hbmFnZS50aXRsZScpLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Omdsb2JhbC12YXJpYWJsZXMucGVybWlzc2lvbnMuZ2xvYmFsLXZhcmlhYmxlLmFjdGlvbnMubWFuYWdlLmRlc2NyaXB0aW9uJylcbiAgICAgIClcbiAgICAgIC5hZGRDaGlsZChcbiAgICAgICAga2V5cy5HbG9iYWxWYXJpYWJsZS5WaWV3LFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Omdsb2JhbC12YXJpYWJsZXMucGVybWlzc2lvbnMuZ2xvYmFsLXZhcmlhYmxlLmFjdGlvbnMudmlldy50aXRsZScpLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Omdsb2JhbC12YXJpYWJsZXMucGVybWlzc2lvbnMuZ2xvYmFsLXZhcmlhYmxlLmFjdGlvbnMudmlldy5kZXNjcmlwdGlvbicpXG4gICAgICApXG4gICAgICAuYWRkQ2hpbGQoXG4gICAgICAgIGtleXMuR2xvYmFsVmFyaWFibGUuQ3JlYXRlLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Omdsb2JhbC12YXJpYWJsZXMucGVybWlzc2lvbnMuZ2xvYmFsLXZhcmlhYmxlLmFjdGlvbnMuY3JlYXRlLnRpdGxlJyksXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6Z2xvYmFsLXZhcmlhYmxlcy5wZXJtaXNzaW9ucy5nbG9iYWwtdmFyaWFibGUuYWN0aW9ucy5jcmVhdGUuZGVzY3JpcHRpb24nKVxuICAgICAgKVxuICAgICAgLmFkZENoaWxkKFxuICAgICAgICBrZXlzLkdsb2JhbFZhcmlhYmxlLkVkaXQsXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6Z2xvYmFsLXZhcmlhYmxlcy5wZXJtaXNzaW9ucy5nbG9iYWwtdmFyaWFibGUuYWN0aW9ucy5lZGl0LnRpdGxlJyksXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6Z2xvYmFsLXZhcmlhYmxlcy5wZXJtaXNzaW9ucy5nbG9iYWwtdmFyaWFibGUuYWN0aW9ucy5lZGl0LmRlc2NyaXB0aW9uJylcbiAgICAgIClcbiAgICAgIC5hZGRDaGlsZChcbiAgICAgICAga2V5cy5HbG9iYWxWYXJpYWJsZS5EZWxldGUsXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6Z2xvYmFsLXZhcmlhYmxlcy5wZXJtaXNzaW9ucy5nbG9iYWwtdmFyaWFibGUuYWN0aW9ucy5kZWxldGUudGl0bGUnKSxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDpnbG9iYWwtdmFyaWFibGVzLnBlcm1pc3Npb25zLmdsb2JhbC12YXJpYWJsZS5hY3Rpb25zLmRlbGV0ZS5kZXNjcmlwdGlvbicpXG4gICAgICApXG4gICAgICAuZW5kUGVybWlzc2lvbigpXG4gICAgICAvL1xuICAgICAgLmFkZFBlcm1pc3Npb24oXG4gICAgICAgIGtleXMuTWVudU1hbmFnZW1lbnQuTWFuYWdlbWVudCxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQucGVybWlzc2lvbnMubWVudS1tYW5hZ2VtZW50LmFjdGlvbnMubWFuYWdlLnRpdGxlJyksXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LnBlcm1pc3Npb25zLm1lbnUtbWFuYWdlbWVudC5hY3Rpb25zLm1hbmFnZS5kZXNjcmlwdGlvbicpXG4gICAgICApXG4gICAgICAuYWRkQ2hpbGQoXG4gICAgICAgIGtleXMuTWVudU1hbmFnZW1lbnQuVmlldyxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQucGVybWlzc2lvbnMubWVudS1tYW5hZ2VtZW50LmFjdGlvbnMudmlldy50aXRsZScpLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5wZXJtaXNzaW9ucy5tZW51LW1hbmFnZW1lbnQuYWN0aW9ucy52aWV3LmRlc2NyaXB0aW9uJylcbiAgICAgIClcbiAgICAgIC5hZGRDaGlsZChcbiAgICAgICAga2V5cy5NZW51TWFuYWdlbWVudC5DcmVhdGUsXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LnBlcm1pc3Npb25zLm1lbnUtbWFuYWdlbWVudC5hY3Rpb25zLmNyZWF0ZS50aXRsZScpLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5wZXJtaXNzaW9ucy5tZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5jcmVhdGUuZGVzY3JpcHRpb24nKVxuICAgICAgKVxuICAgICAgLmFkZENoaWxkKFxuICAgICAgICBrZXlzLk1lbnVNYW5hZ2VtZW50LkVkaXQsXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LnBlcm1pc3Npb25zLm1lbnUtbWFuYWdlbWVudC5hY3Rpb25zLmVkaXQudGl0bGUnKSxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQucGVybWlzc2lvbnMubWVudS1tYW5hZ2VtZW50LmFjdGlvbnMuZWRpdC5kZXNjcmlwdGlvbicpXG4gICAgICApXG4gICAgICAuYWRkQ2hpbGQoXG4gICAgICAgIGtleXMuTWVudU1hbmFnZW1lbnQuRGVsZXRlLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5wZXJtaXNzaW9ucy5tZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5kZWxldGUudGl0bGUnKSxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQucGVybWlzc2lvbnMubWVudS1tYW5hZ2VtZW50LmFjdGlvbnMuZGVsZXRlLmRlc2NyaXB0aW9uJylcbiAgICAgIClcbiAgICAgIC5lbmRQZXJtaXNzaW9uKClcbiAgICAgIC8vXG4gICAgICAuZW5kR3JvdXAoKTtcbiAgfVxufVxuXG4iXX0="],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-modules-platform-management-permission-definition.provider-BRZXzDNj.mjs","sources":["../tmp-esm2022/platform-management/lib/permission-definition.provider.js"],"sourcesContent":["import { AXTranslationService } from '@acorex/core/translation';\nimport { Injectable, Injector } from '@angular/core';\nimport { AXMPermissionsKeys } from './permission.keys';\nimport * as i0 from \"@angular/core\";\nexport class AXMPermissionDefinitionProvider {\n constructor(injector) {\n this.injector = injector;\n this.translateService = this.injector.get(AXTranslationService);\n }\n async define(context) {\n const keys = AXMPermissionsKeys.PlatformManagement;\n context.addGroup(keys.Management, await this.translateService.translateAsync('@platform-management:permissions.manage.title'), await this.translateService.translateAsync('@platform-management:permissions.manage.description'))\n //\n .addPermission(keys.GlobalVariable.Management, await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.manage.title'), await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.manage.description'))\n .addChild(keys.GlobalVariable.View, await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.view.title'), await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.view.description'))\n .addChild(keys.GlobalVariable.Create, await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.create.title'), await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.create.description'))\n .addChild(keys.GlobalVariable.Edit, await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.edit.title'), await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.edit.description'))\n .addChild(keys.GlobalVariable.Delete, await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.delete.title'), await this.translateService.translateAsync('@platform-management:global-variables.permissions.global-variable.actions.delete.description'))\n .endPermission()\n //\n .addPermission(keys.MenuManagement.Management, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.manage.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.manage.description'))\n .addChild(keys.MenuManagement.View, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.view.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.view.description'))\n .addChild(keys.MenuManagement.Create, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.create.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.create.description'))\n .addChild(keys.MenuManagement.Edit, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.edit.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.edit.description'))\n .addChild(keys.MenuManagement.Delete, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.delete.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.delete.description'))\n .endPermission()\n //\n .endGroup();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMPermissionDefinitionProvider, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMPermissionDefinitionProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMPermissionDefinitionProvider, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i0.Injector }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1kZWZpbml0aW9uLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3BsYXRmb3JtLW1hbmFnZW1lbnQvc3JjL2xpYi9wZXJtaXNzaW9uLWRlZmluaXRpb24ucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBR3ZELE1BQU0sT0FBTywrQkFBK0I7SUFHMUMsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUErQztRQUMxRCxNQUFNLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQztRQUVuRCxPQUFPLENBQUMsUUFBUSxDQUNkLElBQUksQ0FBQyxVQUFVLEVBQ2YsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLCtDQUErQyxDQUFDLEVBQzNGLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxxREFBcUQsQ0FBQyxDQUNsRztZQUNDLEVBQUU7YUFDRCxhQUFhLENBQ1osSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQzlCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyx3RkFBd0YsQ0FBQyxFQUNwSSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsOEZBQThGLENBQUMsQ0FDM0k7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQ3hCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxzRkFBc0YsQ0FBQyxFQUNsSSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsNEZBQTRGLENBQUMsQ0FDekk7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQzFCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyx3RkFBd0YsQ0FBQyxFQUNwSSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsOEZBQThGLENBQUMsQ0FDM0k7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQ3hCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxzRkFBc0YsQ0FBQyxFQUNsSSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsNEZBQTRGLENBQUMsQ0FDekk7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQzFCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyx3RkFBd0YsQ0FBQyxFQUNwSSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsOEZBQThGLENBQUMsQ0FDM0k7YUFDQSxhQUFhLEVBQUU7WUFDaEIsRUFBRTthQUNELGFBQWEsQ0FDWixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFDOUIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLHVGQUF1RixDQUFDLEVBQ25JLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyw2RkFBNkYsQ0FBQyxDQUMxSTthQUNBLFFBQVEsQ0FDUCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFDeEIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLHFGQUFxRixDQUFDLEVBQ2pJLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQywyRkFBMkYsQ0FBQyxDQUN4STthQUNBLFFBQVEsQ0FDUCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFDMUIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLHVGQUF1RixDQUFDLEVBQ25JLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyw2RkFBNkYsQ0FBQyxDQUMxSTthQUNBLFFBQVEsQ0FDUCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFDeEIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLHFGQUFxRixDQUFDLEVBQ2pJLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQywyRkFBMkYsQ0FBQyxDQUN4STthQUNBLFFBQVEsQ0FDUCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFDMUIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLHVGQUF1RixDQUFDLEVBQ25JLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyw2RkFBNkYsQ0FBQyxDQUMxSTthQUNBLGFBQWEsRUFBRTtZQUNoQixFQUFFO2FBQ0QsUUFBUSxFQUFFLENBQUM7SUFDaEIsQ0FBQzsrR0F2RVUsK0JBQStCO21IQUEvQiwrQkFBK0I7OzRGQUEvQiwrQkFBK0I7a0JBRDNDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyLCBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyQ29udGV4dCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhNUGVybWlzc2lvbnNLZXlzIH0gZnJvbSAnLi9wZXJtaXNzaW9uLmtleXMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlciBpbXBsZW1lbnRzIEFYUFBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IEFYVHJhbnNsYXRpb25TZXJ2aWNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuICB9XG5cbiAgYXN5bmMgZGVmaW5lKGNvbnRleHQ6IEFYUFBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXJDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qga2V5cyA9IEFYTVBlcm1pc3Npb25zS2V5cy5QbGF0Zm9ybU1hbmFnZW1lbnQ7XG5cbiAgICBjb250ZXh0LmFkZEdyb3VwKFxuICAgICAga2V5cy5NYW5hZ2VtZW50LFxuICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDpwZXJtaXNzaW9ucy5tYW5hZ2UudGl0bGUnKSxcbiAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6cGVybWlzc2lvbnMubWFuYWdlLmRlc2NyaXB0aW9uJylcbiAgICApXG4gICAgICAvL1xuICAgICAgLmFkZFBlcm1pc3Npb24oXG4gICAgICAgIGtleXMuR2xvYmFsVmFyaWFibGUuTWFuYWdlbWVudCxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDpnbG9iYWwtdmFyaWFibGVzLnBlcm1pc3Npb25zLmdsb2JhbC12YXJpYWJsZS5hY3Rpb25zLm1hbmFnZS50aXRsZScpLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Omdsb2JhbC12YXJpYWJsZXMucGVybWlzc2lvbnMuZ2xvYmFsLXZhcmlhYmxlLmFjdGlvbnMubWFuYWdlLmRlc2NyaXB0aW9uJylcbiAgICAgIClcbiAgICAgIC5hZGRDaGlsZChcbiAgICAgICAga2V5cy5HbG9iYWxWYXJpYWJsZS5WaWV3LFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Omdsb2JhbC12YXJpYWJsZXMucGVybWlzc2lvbnMuZ2xvYmFsLXZhcmlhYmxlLmFjdGlvbnMudmlldy50aXRsZScpLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Omdsb2JhbC12YXJpYWJsZXMucGVybWlzc2lvbnMuZ2xvYmFsLXZhcmlhYmxlLmFjdGlvbnMudmlldy5kZXNjcmlwdGlvbicpXG4gICAgICApXG4gICAgICAuYWRkQ2hpbGQoXG4gICAgICAgIGtleXMuR2xvYmFsVmFyaWFibGUuQ3JlYXRlLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Omdsb2JhbC12YXJpYWJsZXMucGVybWlzc2lvbnMuZ2xvYmFsLXZhcmlhYmxlLmFjdGlvbnMuY3JlYXRlLnRpdGxlJyksXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6Z2xvYmFsLXZhcmlhYmxlcy5wZXJtaXNzaW9ucy5nbG9iYWwtdmFyaWFibGUuYWN0aW9ucy5jcmVhdGUuZGVzY3JpcHRpb24nKVxuICAgICAgKVxuICAgICAgLmFkZENoaWxkKFxuICAgICAgICBrZXlzLkdsb2JhbFZhcmlhYmxlLkVkaXQsXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6Z2xvYmFsLXZhcmlhYmxlcy5wZXJtaXNzaW9ucy5nbG9iYWwtdmFyaWFibGUuYWN0aW9ucy5lZGl0LnRpdGxlJyksXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6Z2xvYmFsLXZhcmlhYmxlcy5wZXJtaXNzaW9ucy5nbG9iYWwtdmFyaWFibGUuYWN0aW9ucy5lZGl0LmRlc2NyaXB0aW9uJylcbiAgICAgIClcbiAgICAgIC5hZGRDaGlsZChcbiAgICAgICAga2V5cy5HbG9iYWxWYXJpYWJsZS5EZWxldGUsXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6Z2xvYmFsLXZhcmlhYmxlcy5wZXJtaXNzaW9ucy5nbG9iYWwtdmFyaWFibGUuYWN0aW9ucy5kZWxldGUudGl0bGUnKSxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDpnbG9iYWwtdmFyaWFibGVzLnBlcm1pc3Npb25zLmdsb2JhbC12YXJpYWJsZS5hY3Rpb25zLmRlbGV0ZS5kZXNjcmlwdGlvbicpXG4gICAgICApXG4gICAgICAuZW5kUGVybWlzc2lvbigpXG4gICAgICAvL1xuICAgICAgLmFkZFBlcm1pc3Npb24oXG4gICAgICAgIGtleXMuTWVudU1hbmFnZW1lbnQuTWFuYWdlbWVudCxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQucGVybWlzc2lvbnMubWVudS1tYW5hZ2VtZW50LmFjdGlvbnMubWFuYWdlLnRpdGxlJyksXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LnBlcm1pc3Npb25zLm1lbnUtbWFuYWdlbWVudC5hY3Rpb25zLm1hbmFnZS5kZXNjcmlwdGlvbicpXG4gICAgICApXG4gICAgICAuYWRkQ2hpbGQoXG4gICAgICAgIGtleXMuTWVudU1hbmFnZW1lbnQuVmlldyxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQucGVybWlzc2lvbnMubWVudS1tYW5hZ2VtZW50LmFjdGlvbnMudmlldy50aXRsZScpLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5wZXJtaXNzaW9ucy5tZW51LW1hbmFnZW1lbnQuYWN0aW9ucy52aWV3LmRlc2NyaXB0aW9uJylcbiAgICAgIClcbiAgICAgIC5hZGRDaGlsZChcbiAgICAgICAga2V5cy5NZW51TWFuYWdlbWVudC5DcmVhdGUsXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LnBlcm1pc3Npb25zLm1lbnUtbWFuYWdlbWVudC5hY3Rpb25zLmNyZWF0ZS50aXRsZScpLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5wZXJtaXNzaW9ucy5tZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5jcmVhdGUuZGVzY3JpcHRpb24nKVxuICAgICAgKVxuICAgICAgLmFkZENoaWxkKFxuICAgICAgICBrZXlzLk1lbnVNYW5hZ2VtZW50LkVkaXQsXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LnBlcm1pc3Npb25zLm1lbnUtbWFuYWdlbWVudC5hY3Rpb25zLmVkaXQudGl0bGUnKSxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQucGVybWlzc2lvbnMubWVudS1tYW5hZ2VtZW50LmFjdGlvbnMuZWRpdC5kZXNjcmlwdGlvbicpXG4gICAgICApXG4gICAgICAuYWRkQ2hpbGQoXG4gICAgICAgIGtleXMuTWVudU1hbmFnZW1lbnQuRGVsZXRlLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5wZXJtaXNzaW9ucy5tZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5kZWxldGUudGl0bGUnKSxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQucGVybWlzc2lvbnMubWVudS1tYW5hZ2VtZW50LmFjdGlvbnMuZGVsZXRlLmRlc2NyaXB0aW9uJylcbiAgICAgIClcbiAgICAgIC5lbmRQZXJtaXNzaW9uKClcbiAgICAgIC8vXG4gICAgICAuZW5kR3JvdXAoKTtcbiAgfVxufVxuXG4iXX0="],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { r as AXMAppVersionEntityModule, c as AXMAppVersionService, i as AXMAppVersionServiceImpl, k as AXMAppVersionSlotComponent, l as AXMChangeLogPopupAction, m as AXMChangeLogUpdateSettingAction, o as AXMCheckNewVersionAction, p as AXMCheckNewVersionWorkflow, q as AXMGlobalVariableEntityModule, e as AXMGlobalVariablesService, f as AXMGlobalVariablesServiceImpl, j as AXMNotifyAppComponent, d as AXMPlatformManagementModule, n as AXMWhatsNewWorkflow, R as RootConfig, h as appVersionEntityEntityFactory, g as globalVariableEntityFactory } from './acorex-modules-platform-management-acorex-modules-platform-management-
|
|
1
|
+
export { r as AXMAppVersionEntityModule, c as AXMAppVersionService, i as AXMAppVersionServiceImpl, k as AXMAppVersionSlotComponent, l as AXMChangeLogPopupAction, m as AXMChangeLogUpdateSettingAction, o as AXMCheckNewVersionAction, p as AXMCheckNewVersionWorkflow, q as AXMGlobalVariableEntityModule, e as AXMGlobalVariablesService, f as AXMGlobalVariablesServiceImpl, j as AXMNotifyAppComponent, d as AXMPlatformManagementModule, n as AXMWhatsNewWorkflow, R as RootConfig, h as appVersionEntityEntityFactory, g as globalVariableEntityFactory } from './acorex-modules-platform-management-acorex-modules-platform-management-D3eLYk5B.mjs';
|
|
2
2
|
//# sourceMappingURL=acorex-modules-platform-management.mjs.map
|